body{margin:0}
:root{color-scheme:light dark;--bg:#f9fafb;--surface:#ffffff;--surface-2:#f3f4f6;--surface-3:#e9ebee;--line:#e0e2e5;--line-strong:#ced0d4;--ink:#181a1c;--ink-2:#54575b;--ink-3:#707378;--on-ink:#ffffff;--accent:#226bc0;--accent-ink:#0e5caf;--accent-soft:#e7f1ff;--on-accent:#ffffff;--ok:#1d7d3e;--warn:#a46400;--bad:#c52c2a;--shadow-pop:0 0 0 1px rgb(16 18 20 / .08),0 4px 12px rgb(16 18 20 / .06),0 12px 32px rgb(16 18 20 / .08);--shadow-modal:0 0 0 1px rgb(16 18 20 / .08),0 24px 64px rgb(16 18 20 / .18);--scrim:rgb(16 18 20 / .32);}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--bg:#0f1112;--surface:#161719;--surface-2:#1d1e20;--surface-3:#252729;--line:#292a2d;--line-strong:#393b3e;--ink:#e9ebee;--ink-2:#abaeb3;--ink-3:#83868b;--on-ink:#161719;--accent:#64a1ee;--accent-ink:#8cbaf7;--accent-soft:#1a2c44;--on-accent:#0f1112;--ok:#5ac576;--warn:#edb345;--bad:#f66d67;--shadow-pop:0 0 0 1px rgb(255 255 255 / .08),0 4px 12px rgb(0 0 0 / .35),0 12px 32px rgb(0 0 0 / .45);--shadow-modal:0 0 0 1px rgb(255 255 255 / .10),0 24px 64px rgb(0 0 0 / .6);--scrim:rgb(0 0 0 / .56);color-scheme:dark}}
:root[data-theme="light"]{color-scheme:light}
:root[data-theme="dark"]{--bg:#0f1112;--surface:#161719;--surface-2:#1d1e20;--surface-3:#252729;--line:#292a2d;--line-strong:#393b3e;--ink:#e9ebee;--ink-2:#abaeb3;--ink-3:#83868b;--on-ink:#161719;--accent:#64a1ee;--accent-ink:#8cbaf7;--accent-soft:#1a2c44;--on-accent:#0f1112;--ok:#5ac576;--warn:#edb345;--bad:#f66d67;--shadow-pop:0 0 0 1px rgb(255 255 255 / .08),0 4px 12px rgb(0 0 0 / .35),0 12px 32px rgb(0 0 0 / .45);--shadow-modal:0 0 0 1px rgb(255 255 255 / .10),0 24px 64px rgb(0 0 0 / .6);--scrim:rgb(0 0 0 / .56);color-scheme:dark}

:root{
  --font-sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;
  --font-mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --text-xs:12px;--lh-xs:16px;--text-sm:13px;--lh-sm:20px;--text-md:14px;--lh-md:22px;--text-lg:16px;--lh-lg:24px;--text-xl:20px;--lh-xl:28px;--text-2xl:24px;--lh-2xl:32px;
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;
  --r-xs:4px;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-full:999px;
  --h-sm:28px;--h-md:32px;--h-lg:40px;
  --dur-1:100ms;--dur-2:160ms;--dur-3:240ms;--ease-out:cubic-bezier(.2,0,0,1);--ease-in:cubic-bezier(.4,0,1,1);
  --z-sticky:10;--z-toc:20;--z-pop:60;
  --ok-soft:color-mix(in oklab,var(--ok) 12%,var(--surface));
  --warn-soft:color-mix(in oklab,var(--warn) 14%,var(--surface));
  --bad-soft:color-mix(in oklab,var(--bad) 12%,var(--surface));
  --focus:var(--accent);--hdr-h:64px;
}
@media (prefers-reduced-motion:reduce){:root{--dur-1:0ms;--dur-2:0ms;--dur-3:0ms}}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--lh-md);text-autospace:normal;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top,0px);background:var(--bg);z-index:calc(var(--z-sticky) + 1)}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--accent-ink);text-underline-offset:2px}
h1,h2,h3,h4,p,ul,ol,figure{margin:0}
ul,ol{padding:0;list-style:none}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.i{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}
.i.lg{width:18px;height:18px}
code,kbd,.mono{font-family:var(--font-mono);font-size:.92em}
kbd{display:inline-block;padding:0 6px;border:1px solid var(--line-strong);border-radius:var(--r-xs);background:var(--surface);font-size:var(--text-xs);line-height:18px;color:var(--ink-2)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- layout ---------- */
.page{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 var(--sp-12)}
.page-in{max-width:1200px;margin-inline:auto}
.hdr{position:sticky;top:env(safe-area-inset-top,0px);z-index:var(--z-sticky);background:var(--bg);border-bottom:1px solid var(--line);padding-block:10px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.brand{display:flex;align-items:baseline;gap:12px;min-width:0;flex:1 1 auto}
.brand h1{font-size:var(--text-lg);line-height:var(--lh-lg);font-weight:600;white-space:nowrap}
.brand .sub{font-size:var(--text-sm);color:var(--ink-2);display:none;min-width:0}
.hdr-tools{display:flex;align-items:center;gap:8px;order:2}
.search{position:relative;flex:1 1 100%;order:3;min-width:0}
.search .i{position:absolute;left:10px;top:50%;margin-top:-8px;color:var(--ink-3);pointer-events:none}
.search input{width:100%;height:var(--h-lg);padding:0 36px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);}
.search input::placeholder{color:var(--ink-3)}
.search .clr{position:absolute;right:4px;top:50%;margin-top:-14px;width:28px;height:28px;border:0;background:none;color:var(--ink-3);display:grid;place-items:center;border-radius:var(--r-xs)}
.tocbtn{display:inline-flex;align-items:center;gap:6px;height:var(--h-md);padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);font-weight:500;font-size:var(--text-sm)}
.shell{display:block;padding-top:var(--sp-6)}
main{min-width:0}
.toc{display:none}
body.toc-open .toc{display:block;position:fixed;left:0;right:0;top:calc(env(safe-area-inset-top,0px) + var(--hdr-h));max-height:min(60vh,420px);overflow:auto;background:var(--surface);border-bottom:1px solid var(--line);padding:8px 16px 12px;z-index:var(--z-toc)}
.toc ol{display:flex;flex-direction:column;gap:2px}
.toc a{display:block;padding:5px 10px;border-radius:var(--r-sm);color:var(--ink-2);text-decoration:none;font-size:var(--text-sm);line-height:var(--lh-sm)}
.toc a:hover{background:var(--surface-2);color:var(--ink)}
.toc a[aria-current="true"]{background:var(--accent-soft);color:var(--accent-ink);font-weight:500}
@media (min-width:720px){
  .hdr{flex-wrap:nowrap}
  .brand .sub{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .search{flex:0 1 280px;order:2}
  .hdr-tools{order:3}
}
@media (min-width:980px){
  .tocbtn{display:none}
  .shell{display:grid;grid-template-columns:196px minmax(0,1fr);gap:var(--sp-10)}
  .toc{display:block;position:sticky;top:calc(env(safe-area-inset-top,0px) + var(--hdr-h) + 16px);align-self:start;max-height:calc(100vh - var(--hdr-h) - 32px);overflow:auto}
  body.toc-open .toc{position:sticky;max-height:calc(100vh - var(--hdr-h) - 32px);border:0;background:none;padding:0;left:auto;right:auto}
}
.seg{display:inline-flex;padding:2px;gap:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);max-width:100%}
.seg button{height:26px;min-width:34px;padding:0 10px;border:0;border-radius:var(--r-xs);background:none;color:var(--ink-2);font-size:var(--text-sm);font-weight:500;white-space:nowrap;transition:background var(--dur-1) var(--ease-out),color var(--dur-1)}
.seg button:hover{color:var(--ink)}
.seg button[aria-checked="true"]{background:var(--surface);color:var(--ink);box-shadow:0 0 0 1px var(--line-strong)}
.seg.lg button{height:30px}

section.chap{margin-top:var(--sp-12);scroll-margin-top:calc(var(--hdr-h) + 16px)}
section.chap:first-child{margin-top:0}
.chap>h2{font-size:var(--text-xl);line-height:var(--lh-xl);font-weight:600;text-wrap:balance}
.chap>h2 .en{color:var(--ink-3);font-weight:500;margin-left:8px;font-size:var(--text-lg)}
.chap>.lead{margin-top:var(--sp-2);color:var(--ink-2);font-size:var(--text-lg);line-height:var(--lh-lg);max-width:44em;text-wrap:pretty}
.entry,.block,.conf{scroll-margin-top:calc(var(--hdr-h) + 16px)}
.entry{margin-top:var(--sp-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-5)}
.entry.tgt,.block.tgt,.dl.tgt,.conf.tgt{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.e-head{display:flex;align-items:flex-start;gap:8px}
.e-head h3{flex:1;min-width:0;font-size:var(--text-lg);line-height:var(--lh-lg);font-weight:600;text-wrap:balance}
.e-head h3 .en{color:var(--ink-2);font-weight:500;margin-left:8px}
.ibtn{width:var(--h-sm);height:var(--h-sm);display:inline-grid;place-items:center;border:0;border-radius:var(--r-sm);background:none;color:var(--ink-3);flex:none}
.ibtn:hover{background:var(--surface-2);color:var(--ink)}
.zhf{margin-top:2px;color:var(--ink-2);font-size:var(--text-sm)}
.zhf .k,.pk{color:var(--ink-3);margin-right:6px}
.pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--sp-3)}
.pill{display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:var(--r-full);background:var(--surface-2);color:var(--ink-2);font-size:var(--text-xs);border:1px solid var(--line)}
.plat{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 16px;margin-top:var(--sp-3);font-size:var(--text-sm);line-height:var(--lh-sm);color:var(--ink-2)}
.plat>div{min-width:0;overflow-wrap:anywhere}
.one{margin-top:var(--sp-3);font-size:var(--text-lg);line-height:var(--lh-lg);text-wrap:pretty}
.demo{margin-top:var(--sp-4);background:var(--surface-2);border-radius:var(--r-sm);padding:var(--sp-4);border:1px solid var(--line);min-width:0}
.demo-cap{display:block;margin-bottom:var(--sp-3);font-size:var(--text-xs);color:var(--ink-3)}
.cols{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4) var(--sp-8);margin-top:var(--sp-4)}
@media (min-width:860px){.cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.cols h4,.sec-h{font-size:var(--text-sm);line-height:var(--lh-sm);font-weight:600;color:var(--ink-2);margin-bottom:6px}
.cols ul{display:flex;flex-direction:column;gap:6px}
.cols li{padding-left:18px;position:relative;text-wrap:pretty}
.cols .beh li::before{content:"";position:absolute;left:5px;top:10px;width:4px;height:4px;border-radius:50%;background:var(--ink-3)}
.cols .do li::before,.cols .dont li::before{position:absolute;left:0;font-weight:600}
.cols .do li::before{content:"\2713";color:var(--ok)}
.cols .dont li::before{content:"\2715";color:var(--bad)}
.cols .judge{display:flex;flex-direction:column;gap:12px}
.rel{margin-top:var(--sp-4);font-size:var(--text-sm);color:var(--ink-3);display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline}
.rel a{white-space:nowrap}
.note{margin-top:var(--sp-2);font-size:var(--text-xs);line-height:var(--lh-xs);color:var(--ink-3)}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.row>*{min-width:0}
.grow{flex:1 1 0;min-width:0}
.stack{display:flex;flex-direction:column;gap:8px}
.mut{color:var(--ink-3)}
.ok{color:var(--ok)}.bad{color:var(--bad)}.warn{color:var(--warn)}

/* ---------- controls ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h-md);padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font-weight:500;font-size:var(--text-md);white-space:nowrap;transition:background var(--dur-1) var(--ease-out),border-color var(--dur-1)}
.btn:hover,.btn.is-hover{background:var(--surface-2)}
.btn:active,.btn.is-active{background:var(--surface-3)}
.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}
.btn.primary:hover,.btn.primary.is-hover{background:color-mix(in oklab,var(--ink) 86%,var(--bg))}
.btn.primary:active,.btn.primary.is-active{background:color-mix(in oklab,var(--ink) 72%,var(--bg))}
.btn.danger{background:var(--bad);border-color:var(--bad);color:var(--on-accent)}
.btn.danger:hover{background:color-mix(in oklab,var(--bad) 88%,var(--ink))}
.btn.ghost{border-color:transparent;background:none}
.btn.ghost:hover{background:var(--surface-3)}
.btn.link{border-color:transparent;background:none;color:var(--accent-ink);padding:0 4px}
.btn.sm{height:var(--h-sm);padding:0 10px;font-size:var(--text-sm)}
.btn.icon{width:var(--h-md);padding:0}
.btn.sm.icon{width:var(--h-sm)}
.btn:disabled,.btn.is-disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
.btn.is-focus{outline:2px solid var(--focus);outline-offset:2px}
.btn.is-selected{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}
.btn.is-loading{pointer-events:none}
.fab{width:48px;height:48px;border-radius:var(--r-full);border:1px solid var(--ink);background:var(--ink);color:var(--on-ink);display:inline-grid;place-items:center}
.spin{width:14px;height:14px;border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;flex:none;display:inline-block}
.btn.primary .spin{border-color:color-mix(in oklab,var(--on-ink) 35%,transparent);border-top-color:var(--on-ink)}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation-duration:3s}}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field>label,.lbl{font-size:var(--text-sm);font-weight:500;color:var(--ink-2)}
.inp,.sel,.ta{width:100%;height:var(--h-md);padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink)}
.ta{height:auto;padding:8px 10px;resize:vertical;min-height:72px;line-height:var(--lh-md)}
.inp::placeholder,.ta::placeholder{color:var(--ink-3)}
.inp:focus-visible,.sel:focus-visible,.ta:focus-visible{outline:2px solid var(--focus);outline-offset:-1px;border-color:var(--accent)}
.inp.err{border-color:var(--bad)}
.help{font-size:var(--text-xs);line-height:var(--lh-xs);color:var(--ink-3)}
.help.err{color:var(--bad)}
.help.okk{color:var(--ok)}
.chk{display:flex;align-items:center;gap:8px;min-height:28px}
.chk input{width:16px;height:16px;margin:0;accent-color:var(--accent)}
.sw{position:relative;display:inline-block;width:36px;height:20px;flex:none}
.sw input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}
.sw i{position:absolute;inset:0;border-radius:var(--r-full);background:var(--line-strong);transition:background var(--dur-2) var(--ease-out)}
.sw i::after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);transition:transform var(--dur-2) var(--ease-out)}
.sw input:checked+i{background:var(--accent)}
.sw input:checked+i::after{transform:translateX(16px)}
.sw input:focus-visible+i{outline:2px solid var(--focus);outline-offset:2px}
.chip{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-full);background:var(--surface);font-size:var(--text-sm);font-weight:500;color:var(--ink-2)}
.chip[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}
.chip .x{border:0;background:none;padding:0;width:18px;height:18px;display:grid;place-items:center;color:var(--ink-3);border-radius:50%}
.chip .x:hover{background:var(--surface-3)}
.tag{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:var(--r-full);font-size:var(--text-xs);font-weight:500;background:var(--surface-2);color:var(--ink-2)}
.tag.ok{background:var(--ok-soft);color:var(--ok)}.tag.warn{background:var(--warn-soft);color:var(--warn)}.tag.bad{background:var(--bad-soft);color:var(--bad)}.tag.info{background:var(--accent-soft);color:var(--accent-ink)}
.bar-track{height:6px;border-radius:var(--r-full);background:var(--surface-3);overflow:hidden}
.bar-fill{height:100%;background:var(--accent);width:0;transition:width var(--dur-3) var(--ease-out)}
.bar-ind{position:relative}
.bar-ind .bar-fill{position:absolute;width:35%;animation:ind 1.3s var(--ease-out) infinite}
@keyframes ind{from{left:-35%}to{left:100%}}
@media (prefers-reduced-motion:reduce){.bar-ind .bar-fill{animation:none;left:0;width:100%;opacity:.5}}
.skl{display:block;border-radius:var(--r-xs);background:var(--surface-3);animation:sklf 1.6s ease-in-out infinite alternate}
@keyframes sklf{from{opacity:.55}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.skl{animation:none}}

/* ---------- stage & overlays ---------- */
.stage{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px;min-height:var(--sh,200px)}
.ln{height:8px;border-radius:4px;background:var(--surface-3);margin:10px 0}
.fx{opacity:0;transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-3) var(--ease-out)}
.fx.in{opacity:1}
.scrim{position:absolute;inset:0;background:var(--scrim);z-index:5}
.dlg{position:absolute;left:50%;top:50%;width:min(320px,calc(100% - 24px));transform:translate(-50%,calc(-50% + 8px));background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-modal);padding:20px;z-index:6}
.dlg.in{transform:translate(-50%,-50%)}
.dlg h5{margin:0 0 6px;font-size:var(--text-lg);line-height:var(--lh-lg);font-weight:600}
.dlg p{color:var(--ink-2);font-size:var(--text-md)}
.dlg .acts{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;flex-wrap:wrap}
.pop{position:absolute;z-index:8;min-width:180px;background:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-pop);padding:6px}
.pop.fx{transform:translateY(-4px)}.pop.fx.in{transform:none}
.pop.card-pop{padding:12px;width:220px}
.menu{display:flex;flex-direction:column}
.menu [role=menuitem]{display:flex;align-items:center;gap:8px;height:30px;padding:0 10px;border:0;border-radius:var(--r-xs);background:none;text-align:left;font-size:var(--text-md);width:100%}
.menu [role=menuitem] kbd{margin-left:auto}
.menu [role=menuitem]:hover,.menu [role=menuitem]:focus-visible{background:var(--surface-2);outline:none}
.menu [role=menuitem].dng{color:var(--bad)}
.menu hr{border:0;border-top:1px solid var(--line);margin:4px 0}
.tt-wrap{position:relative;display:inline-flex}
.tt{position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%,4px);background:var(--ink);color:var(--on-ink);font-size:var(--text-xs);line-height:var(--lh-xs);padding:4px 8px;border-radius:var(--r-xs);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out);z-index:9}
.tt-wrap:hover .tt,.tt-wrap:focus-within .tt{opacity:1;transform:translate(-50%,0);transition-delay:.45s}
.tt-wrap.below .tt{bottom:auto;top:calc(100% + 6px)}
.drawer{position:absolute;top:0;right:0;bottom:0;width:min(260px,80%);background:var(--surface);box-shadow:var(--shadow-modal);padding:16px;z-index:6;transform:translateX(24px)}
.drawer.in{transform:none}
.drawer.left{right:auto;left:0;transform:translateX(-24px)}
.drawer.left.in{transform:none}
.toasts{position:absolute;left:12px;right:12px;bottom:12px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;z-index:9;pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;background:var(--ink);color:var(--on-ink);border-radius:var(--r-md);padding:8px 8px 8px 14px;box-shadow:var(--shadow-pop);font-size:var(--text-md);max-width:100%}
.toast .btn{color:inherit;height:var(--h-sm);font-size:var(--text-sm);border-color:transparent;background:none;text-decoration:underline}
.toast .btn:hover{background:color-mix(in oklab,var(--on-ink) 14%,transparent)}
.toast .cd{font-size:var(--text-xs);opacity:.7;font-variant-numeric:tabular-nums}
.toast.fx{transform:translateY(8px)}.toast.fx.in{transform:none}
.alert{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--line);font-size:var(--text-md)}
.alert.info{background:var(--accent-soft);color:var(--ink)}.alert.info>.i{color:var(--accent-ink)}
.alert.ok{background:var(--ok-soft)}.alert.ok>.i{color:var(--ok)}
.alert.warn{background:var(--warn-soft)}.alert.warn>.i{color:var(--warn)}
.alert.bad{background:var(--bad-soft)}.alert.bad>.i{color:var(--bad)}
.alert>.i{margin-top:3px}
.alert .grow{min-width:0}

/* ---------- phone / window ---------- */
.phone{width:232px;max-width:100%;height:440px;border:1px solid var(--line-strong);border-radius:32px;padding:7px;background:var(--surface-3);flex:none}
.phone.sm{width:210px;height:380px}
.ps{height:100%;border-radius:25px;background:var(--surface);overflow:hidden;position:relative;display:flex;flex-direction:column;font-size:var(--text-sm)}
.ps .sb{height:22px;display:flex;justify-content:space-between;align-items:center;padding:0 16px;font-size:var(--text-xs);color:var(--ink-2);flex:none}
.ps .nb{height:36px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;font-weight:600;flex:none}
.ps .body{flex:1;min-height:0;overflow:hidden;position:relative}
.tabbar{display:flex;border-top:1px solid var(--line);background:var(--surface);flex:none;padding:6px 4px 14px}
.tabbar button{flex:1;min-width:0;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:var(--text-xs);color:var(--ink-3);padding:2px 0;position:relative}
.tabbar button[aria-selected="true"]{color:var(--accent-ink)}
.tabbar .bdg{position:absolute;top:-3px;left:calc(50% + 4px)}
.bdg{display:inline-grid;place-items:center;min-width:16px;height:16px;padding:0 4px;border-radius:var(--r-full);background:var(--bad);color:var(--on-accent);font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums;line-height:1}
.bdg.dot{min-width:8px;width:8px;height:8px;padding:0}
.ico-b{position:relative;display:inline-flex}
.ico-b .bdg{position:absolute;top:-6px;right:-8px}
.homebar{position:absolute;bottom:4px;left:50%;width:72px;height:4px;margin-left:-36px;border-radius:2px;background:var(--ink);opacity:.6}
.sheet{position:absolute;left:0;right:0;bottom:0;background:var(--surface);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--shadow-modal);padding:8px 16px 20px;z-index:6;height:48%;transform:translateY(40px);transition:height var(--dur-3) var(--ease-out),opacity var(--dur-2),transform var(--dur-3) var(--ease-out)}
.sheet.in{transform:none}.sheet.full{height:86%}
.sheet .grab{display:block;width:36px;height:5px;border-radius:3px;background:var(--line-strong);margin:0 auto 10px;border:0;padding:0}

/* ---------- misc demo pieces ---------- */
.bar{display:flex;align-items:center;gap:10px;height:44px;padding:0 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm)}
.bar b{font-weight:600}
.bar .ctr{flex:1;text-align:center}
.nav-i{display:flex;align-items:center;gap:10px;height:32px;padding:0 10px;border:0;border-radius:var(--r-sm);background:none;color:var(--ink-2);width:100%;text-align:left;font-weight:500;white-space:nowrap;overflow:hidden}
.nav-i:hover{background:var(--surface-2)}
.nav-i[aria-current="page"]{background:var(--accent-soft);color:var(--ink)}
.nav-i[aria-current="page"] .i{color:var(--accent)}
.mini-side{width:170px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);transition:width var(--dur-3) var(--ease-out);flex:none;overflow:hidden}
.mini-side.rail{width:52px}
.tablist{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}
.tablist button{height:34px;padding:0 12px;border:0;background:none;color:var(--ink-2);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tablist button:hover{color:var(--ink)}
.tablist button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent)}
.panel{padding:12px 2px 0;color:var(--ink-2)}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--ink-3)}
.crumbs a{color:var(--ink-2);text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.crumbs [aria-current]{color:var(--ink);font-weight:500}
.cmdk{position:absolute;left:50%;top:14px;width:min(380px,calc(100% - 24px));transform:translateX(-50%);background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-modal);z-index:6;overflow:hidden}
.cmdk input{width:100%;height:44px;border:0;border-bottom:1px solid var(--line);padding:0 14px;background:none;outline:none}
.cmdk li{display:flex;align-items:center;gap:10px;height:34px;padding:0 14px;cursor:pointer}
.cmdk li[aria-selected="true"]{background:var(--accent-soft)}
.cmdk li small{margin-left:auto;color:var(--ink-3)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:14px;text-align:left;display:block;width:100%;transition:border-color var(--dur-1)}
.card:hover{border-color:var(--line-strong)}
.card[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent)}
.card b{display:block;font-weight:600}
.card span{color:var(--ink-2);font-size:var(--text-sm)}
.list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}
.li{display:flex;align-items:center;gap:12px;padding:10px 12px;border:0;border-bottom:1px solid var(--line);background:none;width:100%;text-align:left;min-width:0}
.li:last-child{border-bottom:0}
.li:hover{background:var(--surface-2)}
.li[aria-current="true"]{background:var(--accent-soft)}
.av{width:32px;height:32px;border-radius:50%;background:var(--surface-3);display:grid;place-items:center;font-weight:600;color:var(--ink-2);flex:none}
.li .t{min-width:0;flex:1}.li .t b{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.li .t span{display:block;font-size:var(--text-sm);color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.li .m{font-size:var(--text-xs);color:var(--ink-3);flex:none}
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
table.t{width:100%;border-collapse:collapse;font-size:var(--text-sm);line-height:var(--lh-sm)}
table.t th{background:var(--surface-2);text-align:left;font-weight:500;color:var(--ink-2);border-bottom:1px solid var(--line-strong);padding:8px 12px;white-space:nowrap}
table.t td{padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:top}
table.t tr:last-child td{border-bottom:0}
table.t .num{text-align:right;font-variant-numeric:tabular-nums}
table.t th.num{text-align:right}
table.t th button{border:0;background:none;font-weight:500;color:inherit;display:inline-flex;gap:4px;align-items:center;padding:0}
table.t tbody tr:hover td{background:var(--surface-2)}
table.t tr.sel td{background:var(--accent-soft)}
.qr a{white-space:nowrap}
.acc{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);overflow:hidden}
.acc-i+.acc-i{border-top:1px solid var(--line)}
.acc-i>button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:11px 12px;border:0;background:none;font-weight:500;text-align:left}
.acc-i>button .i{transition:transform var(--dur-2) var(--ease-out)}
.acc-i>button[aria-expanded="true"] .i{transform:rotate(90deg)}
.acc-b{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-2) var(--ease-out)}
.acc-b>div{overflow:hidden;min-height:0}
.acc-b p{padding:0 12px 12px;color:var(--ink-2)}
.acc-i.open .acc-b{grid-template-rows:1fr}
.empty{text-align:center;padding:24px 12px;color:var(--ink-2)}
.empty .i{width:28px;height:28px;color:var(--ink-3);margin-bottom:8px}
.empty b{display:block;color:var(--ink);font-weight:600;margin-bottom:2px}
.empty .btn{margin-top:12px}
.combo{position:relative}
.combo ul{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-pop);padding:4px;max-height:176px;overflow:auto;z-index:8}
.combo li{padding:6px 10px;border-radius:var(--r-xs);cursor:pointer}
.combo li[aria-selected="true"]{background:var(--accent-soft)}
.combo li mark{background:none;color:var(--accent-ink);font-weight:600}
.cmp{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
@media (min-width:760px){.cmp{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cmp>.pane{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px}
.pane-h{display:flex;gap:6px;align-items:center;font-weight:600;font-size:var(--text-sm);margin-bottom:10px}
.pane-h.bad{color:var(--bad)}.pane-h.good{color:var(--ok)}
.why{margin-top:var(--sp-4);padding-left:12px;border-left:2px solid var(--line-strong);color:var(--ink-2)}
.why b{color:var(--ink);font-weight:600}
.case-s{margin-top:var(--sp-2);color:var(--ink-2);font-size:var(--text-lg);line-height:var(--lh-lg)}
.conf{margin-top:var(--sp-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-5)}
.conf h3{font-size:var(--text-lg);line-height:var(--lh-lg);font-weight:600}
.conf p,.conf ul{margin-top:var(--sp-2);color:var(--ink-2);text-wrap:pretty}
.conf ul{display:flex;flex-direction:column;gap:6px}
.conf li{padding-left:16px;position:relative}
.conf li::before{content:"";position:absolute;left:4px;top:10px;width:4px;height:4px;border-radius:50%;background:var(--ink-3)}
.conf .tbl-wrap{margin-top:var(--sp-3)}
.conf strong{color:var(--ink);font-weight:600}
.fold{height:170px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);position:relative}
.fold-line{position:sticky;top:130px;height:0;border-top:1px dashed var(--bad);z-index:2;overflow:visible}
.fold-line span{position:absolute;right:6px;top:2px;font-size:var(--text-xs);color:var(--bad);background:var(--surface)}
.hit-area{position:relative;height:150px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);display:grid;place-items:center;cursor:crosshair}
.hit-btn{display:grid;place-items:center;border:1px dashed var(--accent);background:var(--accent-soft);border-radius:var(--r-sm);padding:0;color:var(--ink)}

/* ---------- anatomy ---------- */
.anat{margin-top:var(--sp-4)}
.anat-fig{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);padding:40px 44px 40px}
.anat-in{min-width:880px;display:flex;gap:40px;align-items:flex-start;justify-content:center}
.win{flex:1;min-width:0;max-width:600px;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--bg);font-size:var(--text-sm);position:relative;height:420px;display:flex;flex-direction:column}
.win-bar{height:26px;display:flex;align-items:center;gap:6px;padding:0 10px;border-bottom:1px solid var(--line);background:var(--surface-2);border-radius:var(--r-md) var(--r-md) 0 0;flex:none}
.dots i{display:inline-block;width:8px;height:8px;border-radius:50%;border:1px solid var(--line-strong);margin-right:4px}
.win-title{margin-left:auto;margin-right:auto;color:var(--ink-3);font-size:var(--text-xs);padding-right:40px}
.win-body{flex:1;min-height:0;display:flex}
.w-side{width:128px;border-right:1px solid var(--line);padding:10px 8px;background:var(--surface);border-radius:0 0 0 var(--r-md);flex:none;display:flex;flex-direction:column;gap:2px}
.w-side .logo{font-weight:600;padding:2px 8px 10px}
.w-side .ni{display:flex;align-items:center;gap:8px;height:28px;padding:0 8px;border-radius:var(--r-sm);color:var(--ink-2);font-weight:500}
.w-side .ni.on{background:var(--accent-soft);color:var(--ink)}.w-side .ni.on .i{color:var(--accent)}
.w-main{flex:1;min-width:0;display:flex;flex-direction:column;position:relative}
.w-top{height:42px;display:flex;align-items:center;gap:10px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--surface);flex:none;position:relative}
.fk-in{height:26px;width:120px;border:1px solid var(--line-strong);border-radius:var(--r-sm);display:flex;align-items:center;gap:6px;padding:0 8px;color:var(--ink-3);font-size:var(--text-xs);background:var(--surface)}
.w-tabs{display:flex;gap:2px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--surface);flex:none;position:relative}
.w-tabs span{padding:8px 10px;color:var(--ink-2);border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500}
.w-tabs span.on{color:var(--ink);border-color:var(--accent)}
.w-head{display:flex;align-items:center;gap:8px;padding:12px;flex:none}
.w-head h6{margin:0;font-size:var(--text-lg);font-weight:600}
.w-cont{flex:1;min-height:0;display:flex;gap:12px;padding:0 12px 12px}
.w-tbl{flex:1;min-width:0;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);position:relative;font-size:var(--text-xs)}
.w-tbl div.r{display:grid;grid-template-columns:1.5fr 1fr 1fr .8fr;gap:6px;padding:7px 10px;border-bottom:1px solid var(--line);align-items:center}
.w-tbl div.r:last-child{border-bottom:0}
.w-tbl div.h{background:var(--surface-2);color:var(--ink-2);font-weight:500;border-radius:var(--r-sm) var(--r-sm) 0 0}
.w-tbl .nm{text-align:right;font-variant-numeric:tabular-nums}
.w-card{width:130px;flex:none;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:12px;align-self:flex-start;position:relative}
.w-card b{display:block;font-size:var(--text-2xl);line-height:var(--lh-2xl);font-weight:600}
.w-card .bar-track{margin-top:10px}
.w-toast{position:absolute;right:12px;bottom:12px;display:flex;align-items:center;gap:10px;background:var(--ink);color:var(--on-ink);padding:7px 8px 7px 12px;border-radius:var(--r-md);box-shadow:var(--shadow-pop);font-size:var(--text-xs)}
.w-toast u{padding:0 6px}
.part{position:relative;cursor:pointer;transition:outline-color var(--dur-1)}
.part.hl{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}
.mk{position:absolute;z-index:3;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--ink);color:var(--on-ink);font-size:var(--text-xs);font-weight:600;font-style:normal;line-height:1;pointer-events:none;font-variant-numeric:tabular-nums}
.part.hl>.mk{background:var(--accent);color:var(--on-accent)}
.mk.in{top:4px;left:4px}
.mk.up{top:-27px;left:50%;margin-left:-10px}
.mk.up::after{content:"";position:absolute;left:50%;top:100%;width:1px;height:8px;background:var(--ink-3)}
.mk.dn{bottom:-27px;left:50%;margin-left:-10px}
.mk.dn::after{content:"";position:absolute;left:50%;bottom:100%;width:1px;height:8px;background:var(--ink-3)}
.mk.lf{left:-30px;top:50%;margin-top:-10px}
.mk.lf::after{content:"";position:absolute;left:100%;top:50%;width:8px;height:1px;background:var(--ink-3)}
.mk.rt{right:-30px;top:50%;margin-top:-10px}
.mk.rt2{right:-42px;top:50%;margin-top:-10px}
.mk.rt2::after{content:"";position:absolute;right:100%;top:50%;width:20px;height:1px;background:var(--ink-3)}
.mk.rt::after{content:"";position:absolute;right:100%;top:50%;width:8px;height:1px;background:var(--ink-3)}
.anat-phone{flex:none}
.mk.rp{right:-52px;top:50%;margin-top:-10px}
.mk.rp::after{content:"";position:absolute;right:100%;top:50%;width:32px;height:1px;background:var(--ink-3)}
.mk.rp2{right:-40px;top:50%;margin-top:-10px}
.mk.rp2::after{content:"";position:absolute;right:100%;top:50%;width:20px;height:1px;background:var(--ink-3)}
.anat .ps,.anat .ps .body,.anat .list{overflow:visible}
.anat .tabbar{border-radius:0 0 25px 25px}
.legend{display:flex;flex-wrap:wrap;gap:6px 8px;margin-top:var(--sp-4)}
.legend a{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px 0 4px;border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface);color:var(--ink);text-decoration:none;font-size:var(--text-sm)}
.legend a i{font-style:normal;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--ink);color:var(--on-ink);font-size:var(--text-xs);font-weight:600}
.legend a.hl,.legend a:hover{border-color:var(--accent);background:var(--accent-soft)}
.legend a.hl i,.legend a:hover i{background:var(--accent);color:var(--on-accent)}
.legend a small{color:var(--ink-3)}

/* ---------- search states ---------- */
.empty-search{margin-top:var(--sp-8)}
body.searching .nosearch{display:none}
.count{font-size:var(--text-sm);color:var(--ink-2);margin-bottom:var(--sp-3)}

/* ---------- design languages (simulations: own palettes on purpose) ---------- */
.tl{margin-top:var(--sp-5);display:grid;grid-template-columns:minmax(0,1fr);gap:0;border-left:1px solid var(--line-strong);margin-left:6px}
.tl li{position:relative;padding:0 0 var(--sp-4) var(--sp-5)}
.tl li::before{content:"";position:absolute;left:-4px;top:7px;width:7px;height:7px;border-radius:50%;background:var(--surface);border:1px solid var(--ink-3)}
.tl li.neg::before{border-color:var(--bad);background:var(--bad-soft)}
.tl .yr{font-size:var(--text-xs);color:var(--ink-3);font-variant-numeric:tabular-nums}
.tl b{font-weight:600}
.tl p{color:var(--ink-2);text-wrap:pretty}
.tl .neg-t{color:var(--bad);font-size:var(--text-xs);font-weight:600;margin-left:6px}
.dl{margin-top:var(--sp-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-5);scroll-margin-top:calc(var(--hdr-h) + 16px)}
.dl h3{font-size:var(--text-lg);line-height:var(--lh-lg);font-weight:600}
.dl h3 .en{color:var(--ink-2);font-weight:500;margin-left:8px}
.dl .sum{margin-top:var(--sp-3);font-size:var(--text-lg);line-height:var(--lh-lg);text-wrap:pretty}
.dl .origin{margin-top:var(--sp-3);color:var(--ink-2);text-wrap:pretty}
.dl .cols h4{margin-bottom:6px}
.sim{--wp-a:#ff7a59;--wp-b:#ffd24d;--wp-c:#2fbf9b;--wp-d:#5b7cff;--wp-e:#c25bff;border-radius:var(--r-sm);overflow:hidden;position:relative}
.sim-note{display:inline-block;margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--ink-3)}
.lg-phone{position:relative;width:260px;max-width:100%;height:400px;border-radius:30px;border:1px solid var(--line-strong);overflow:hidden;background:var(--wp-d)}
.lg-scroll{position:absolute;inset:0;overflow-y:auto;scrollbar-width:none;background:linear-gradient(180deg,var(--wp-a) 0%,var(--wp-b) 22%,var(--wp-c) 48%,var(--wp-d) 74%,var(--wp-e) 100%);padding:44px 14px 110px;color:#fff}
.lg-scroll::-webkit-scrollbar{display:none}
.lg-card{height:92px;border-radius:20px;margin-bottom:12px;padding:12px;font-weight:600;color:#fff;text-shadow:0 1px 2px rgb(0 0 0/.35);display:flex;align-items:flex-end}
.lg-card:nth-child(4n+1){background:linear-gradient(135deg,#ff4d6d,#ff9a3d)}
.lg-card:nth-child(4n+2){background:linear-gradient(135deg,#1d4ed8,#22d3ee)}
.lg-card:nth-child(4n+3){background:linear-gradient(135deg,#16a34a,#a3e635)}
.lg-card:nth-child(4n){background:linear-gradient(135deg,#7c3aed,#f472b6)}
.lg-title{position:absolute;top:0;left:0;right:0;padding:14px 18px 0;font-weight:600;color:#fff;text-shadow:0 1px 2px rgb(0 0 0/.35);z-index:2;pointer-events:none}
.glass{background:color-mix(in oklab,var(--surface) 90%,transparent);border:1px solid color-mix(in oklab,var(--ink) 18%,transparent);color:var(--ink)}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
 .glass{background:color-mix(in oklab,var(--surface) 55%,transparent);-webkit-backdrop-filter:blur(18px) saturate(180%);backdrop-filter:blur(18px) saturate(180%);box-shadow:inset 0 1px 0 color-mix(in oklab,#fff 70%,transparent),inset 0 -1px 0 color-mix(in oklab,#fff 20%,transparent),0 8px 24px rgb(0 0 0/.18)}
}
.lg-phone.solid .glass{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}
.lg-tabs{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);height:56px;border-radius:var(--r-full);display:flex;gap:2px;padding:6px;z-index:3;transition:width var(--dur-3) var(--ease-out);width:230px;overflow:hidden}
.lg-tabs.min{width:64px}
.lg-tabs button{flex:1;min-width:0;border:0;border-radius:var(--r-full);background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-size:var(--text-xs);color:var(--ink-2);white-space:nowrap}
.lg-tabs button[aria-selected="true"]{background:color-mix(in oklab,var(--ink) 12%,transparent);color:var(--ink)}
.lg-tabs.min button:not([aria-selected="true"]){display:none}
.lg-tabs.min button span{display:none}
.m3{--h:285;--p:oklch(.48 .16 var(--h));--on-p:oklch(.99 .01 var(--h));--pc:oklch(.91 .06 var(--h));--on-pc:oklch(.28 .09 var(--h));--sc:oklch(.92 .03 var(--h));--sf:oklch(.985 .008 var(--h));--sfc:oklch(.95 .015 var(--h));--tx:oklch(.22 .02 var(--h));--tx2:oklch(.45 .03 var(--h));width:260px;max-width:100%;height:400px;border-radius:28px;background:var(--sf);color:var(--tx);border:1px solid var(--line-strong);position:relative;display:flex;flex-direction:column;overflow:hidden;font-size:var(--text-sm);transition:background var(--dur-3) var(--ease-out)}
.m3 .top{padding:14px 16px 8px;font-size:var(--text-xl);line-height:var(--lh-xl);font-weight:500}
.m3 .chips{display:flex;gap:6px;padding:0 16px;flex-wrap:wrap}
.m3 .mchip{height:32px;padding:0 12px;border-radius:8px;border:1px solid color-mix(in oklab,var(--tx) 25%,transparent);background:none;color:var(--tx);font-weight:500;position:relative;overflow:hidden}
.m3 .mchip[aria-pressed="true"]{background:var(--sc);border-color:transparent}
.m3 .mcard{margin:14px 16px 0;padding:16px;border-radius:16px;background:var(--pc);color:var(--on-pc)}
.m3 .mcard b{display:block;font-size:var(--text-lg);font-weight:500}
.m3 .mcard2{margin:10px 16px 0;padding:12px 16px;border-radius:16px;background:var(--sfc)}
.m3 .mfab{position:absolute;right:16px;bottom:78px;width:56px;height:56px;border-radius:16px;border:0;background:var(--pc);color:var(--on-pc);display:grid;place-items:center;position:absolute;overflow:hidden}
.m3 .mnav{margin-top:auto;display:flex;background:var(--sfc);height:68px;padding:10px 4px 0}
.m3 .mnav button{flex:1;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--tx2);font-size:var(--text-xs);position:relative}
.m3 .mnav .pill-i{width:56px;height:28px;border-radius:14px;display:grid;place-items:center;position:relative;overflow:hidden}
.m3 .mnav button[aria-selected="true"]{color:var(--tx);font-weight:600}
.m3 .mnav button[aria-selected="true"] .pill-i{background:var(--pc)}
.m3 .mbtn{height:40px;padding:0 20px;border-radius:20px;border:0;background:var(--p);color:var(--on-p);font-weight:500;position:relative;overflow:hidden;margin:12px 16px 0;align-self:flex-start}
.rip{position:absolute;border-radius:50%;background:currentColor;opacity:.22;transform:scale(0);animation:rip .55s var(--ease-out) forwards;pointer-events:none}
@keyframes rip{to{transform:scale(1);opacity:0}}
@media (prefers-reduced-motion:reduce){.rip{animation:none;opacity:.14;transform:scale(1)}}
.seeds{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.seed{width:32px;height:32px;border-radius:50%;border:2px solid transparent;padding:0;outline-offset:2px}
.seed[aria-checked="true"]{border-color:var(--ink)}
.fl{--wp:#3b82f6;--wp2:#22d3ee;border-radius:var(--r-md);padding:20px;min-height:340px;position:relative;overflow:hidden;background:linear-gradient(135deg,var(--wp),var(--wp2))}
.fl-win{position:relative;max-width:420px;border-radius:8px;overflow:hidden;font-family:"Segoe UI Variable","Segoe UI",var(--font-sans);font-size:var(--text-sm);color:var(--ink);border:1px solid color-mix(in oklab,var(--ink) 16%,transparent);background:color-mix(in oklab,var(--wp) 14%,var(--surface));min-height:290px}
.fl-bar{height:34px;display:flex;align-items:center;padding:0 12px;gap:8px;color:var(--ink-2);font-size:var(--text-xs)}
.fl-body{padding:12px 16px 16px}
.fl-btn{height:32px;padding:0 14px;border-radius:4px;border:1px solid color-mix(in oklab,var(--ink) 18%,transparent);background:color-mix(in oklab,var(--surface) 70%,transparent);font-weight:500}
.fl-btn.acc{background:var(--wp);border-color:var(--wp);color:#fff;text-shadow:0 1px 1px rgb(0 0 0/.25)}
.fl-blocks{display:flex;gap:8px;margin-top:14px}
.fl-blocks i{flex:1;height:70px;border-radius:4px;background:var(--surface);border:1px solid var(--line)}
.fl-blocks i:nth-child(2){background:linear-gradient(135deg,var(--wp),var(--wp2))}
.acrylic{position:absolute;left:16px;top:96px;width:200px;border-radius:8px;padding:4px;z-index:5;background:color-mix(in oklab,var(--surface) 92%,transparent);border:1px solid color-mix(in oklab,var(--ink) 16%,transparent);box-shadow:0 8px 24px rgb(0 0 0/.25)}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
 .acrylic{background:color-mix(in oklab,var(--surface) 55%,transparent);-webkit-backdrop-filter:blur(28px) saturate(150%);backdrop-filter:blur(28px) saturate(150%)}
}
.acrylic button{display:flex;align-items:center;gap:8px;width:100%;height:32px;padding:0 10px;border:0;border-radius:4px;background:none;text-align:left}
.acrylic button:hover,.acrylic button:focus-visible{background:color-mix(in oklab,var(--ink) 10%,transparent);outline:none}
.fl.nomica .fl-win{background:var(--surface)}

@media (max-width:719px){.tocbtn span{display:none}.tocbtn{padding:0 8px}.anat-fig{padding:32px 36px}}
.anat-hint{display:none;margin:var(--sp-2) 0 0;font-size:var(--text-xs);color:var(--ink-3)}
@media (max-width:999px){.anat-hint{display:block}}
@media print{.hdr,.toc{display:none}}
.w-toast.part{position:absolute}
.stack>.seg{align-self:flex-start}
#anatomy{margin-top:0}
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}
/* 触屏：可点区域撑到 44px，输入框 16px 防止 iPhone 聚焦时放大 */
@media (pointer:coarse){
  input,textarea,select{font-size:16px}
  .search .clr{width:44px;height:44px;margin-top:-22px;right:0}
  .seg button{min-height:36px;position:relative}
  .seg button::after{content:"";position:absolute;inset:-4px 0}
  .ibtn{position:relative}
  .ibtn::after{content:"";position:absolute;inset:-8px}
  .rel{gap:0 16px}
  .rel a{display:inline-flex;align-items:center;min-height:44px}
}

/* ---------- 多页：预渲染正文、标题链接、目录分级、章节目录、翻页 ---------- */
.js .ssr{display:none}
.brand h1 a{color:inherit;text-decoration:none}
.toc a[aria-current="page"]{color:var(--ink);font-weight:600}
.toc-sub{margin:2px 0 6px 10px;padding-left:4px;border-left:1px solid var(--line)}
.toc-sub a{padding-block:3px}
.dir{display:grid;gap:12px;margin-top:var(--sp-5)}
@media (min-width:860px){.dir{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.dir-c{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-5)}
.dir-c h3{font-size:var(--text-lg);line-height:var(--lh-lg);font-weight:600}
.dir-c h3 a{color:var(--ink);text-decoration:none}
.dir-c h3 a:hover{color:var(--accent-ink)}
.dir-c>p{margin-top:var(--sp-2);color:var(--ink-2);text-wrap:pretty}
.dir-e{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:var(--text-sm)}
.dir-e a{white-space:nowrap}
.pn{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin-top:var(--sp-12)}
.pn a{display:flex;flex-direction:column;gap:2px;min-width:0;padding:12px 16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);text-decoration:none}
.pn a:hover{border-color:var(--accent)}
.pn span{font-size:var(--text-sm);color:var(--ink-3)}
.pn b{font-weight:600}
.pn .nx{grid-column:2;text-align:right}

/* ---------- feedback (static, outside #app) ---------- */
.fb-page{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-bottom:var(--sp-12)}
.fb-in{max-width:1200px;margin-inline:auto}
.fb{border-top:1px solid var(--line);padding-top:12px;color:var(--ink-3);font-size:var(--text-sm);line-height:var(--lh-md)}
.fb summary{cursor:pointer;color:var(--ink-2);padding:4px 0}
.fb summary:hover{color:var(--accent-ink)}
.fb p{margin:8px 0;max-width:60em;color:var(--ink-2)}
.fb code{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-xs);padding:0 4px}
.fb pre{margin:8px 0;padding:10px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);overflow:auto;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink)}
html[lang^="zh"] .fb [lang="en"],html[lang^="en"] .fb [lang="zh-CN"]{display:none}
