:root{--bg: #f4f1e9;--bg-deep: #ebe6da;--surface: #fdfcf8;--surface-2: #f8f5ec;--ink: #17140f;--ink-2: #4b4438;--ink-3: #8b8275;--ink-4: #b3a998;--line: #e2d9c7;--line-2: #eee7d8;--line-strong: #cfc3ab;--accent: #a6402b;--accent-2: #c25a41;--accent-soft: #f6e5df;--teal: #1b5e5a;--teal-soft: #e2eeec;--gold: #a9791f;--gold-soft: #f6ecd6;--ok: #2f6b46;--bad: #a83232;--shadow: 0 1px 0 rgba(23, 20, 15, .04), 0 12px 28px -22px rgba(23, 20, 15, .35);--serif: "Source Han Serif SC", "Noto Serif SC", "Songti SC", SimSun, Georgia, serif;--sans: "Inter", "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", system-ui, sans-serif;--mono: "JetBrains Mono", "SF Mono", ui-monospace, Consolas, monospace;--rail: 240px;--r: 3px}html.dark{--bg: #100f0c;--bg-deep: #0a0908;--surface: #191713;--surface-2: #211e18;--ink: #f1ebdd;--ink-2: #c0b7a5;--ink-3: #877e6e;--ink-4: #645c50;--line: #2b2720;--line-2: #221f19;--line-strong: #3d372c;--accent: #d9654a;--accent-2: #e8836b;--accent-soft: #35201a;--teal: #58a9a1;--teal-soft: #162e2c;--gold: #d0a44e;--gold-soft: #2e2717;--ok: #6bb98a;--bad: #e07070;--shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 18px 40px -30px rgba(0, 0, 0, .9)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.72;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;opacity:.28;background-image:radial-gradient(circle at 1px 1px,rgba(120,108,90,.13) 1px,transparent 0);background-size:5px 5px}html.dark body:before{opacity:.25}::selection{background:var(--accent-soft);color:var(--ink)}a{color:inherit;text-decoration:none}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}h1,h2,h3,h4{font-family:var(--serif);font-weight:600;letter-spacing:-.01em;margin:0;line-height:1.3}h1{font-size:34px}h2{font-size:23px}h3{font-size:17px}p{margin:0 0 12px}small{font-size:12.5px}.eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:8px}.eyebrow:after{content:"";height:1px;flex:1;background:var(--line)}.lede{color:var(--ink-2);font-size:15px;max-width:62ch}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.sm-only{display:none}.dim{color:var(--ink-3)}.serif{font-family:var(--serif)}.center{text-align:center}.row{display:flex;align-items:center;gap:8px}.spread{display:flex;align-items:center;justify-content:space-between;gap:12px}.wrap{flex-wrap:wrap}.grow{flex:1}.mt-0{margin-top:0}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mt-4{margin-top:36px}.mb-0{margin-bottom:0}.mb-2{margin-bottom:16px}.app{display:grid;grid-template-columns:var(--rail) minmax(0,1fr);min-height:100%;position:relative;z-index:1}.rail{position:sticky;top:0;height:100vh;border-right:1px solid var(--line);padding:26px 18px 18px;display:flex;flex-direction:column;gap:22px;background:linear-gradient(180deg,var(--surface-2),var(--bg) 60%)}.brand{display:flex;gap:11px;align-items:flex-start;padding:0 6px}.brand .seal{width:30px;height:30px;border-radius:2px;background:var(--ink);color:var(--bg);font-family:var(--serif);font-size:15px;display:grid;place-items:center;flex:none;margin-top:2px}.brand b{font-family:var(--serif);font-size:15.5px;font-weight:600;letter-spacing:.01em;display:block}.brand span{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;color:var(--ink-3);text-transform:uppercase}.nav{display:flex;flex-direction:column;gap:1px}.nav-item{display:flex;align-items:center;gap:10px;padding:8px;border:0;background:none;border-radius:var(--r);cursor:pointer;text-align:left;color:var(--ink-2);position:relative;transition:background .15s,color .15s}.nav-item:hover{background:var(--surface);color:var(--ink)}.nav-item .idx{font-family:var(--mono);font-size:9.5px;color:var(--ink-4);width:14px;flex:none}.nav-item .lb{font-size:13.5px;letter-spacing:.01em}.nav-item .badge{margin-left:auto;font-family:var(--mono);font-size:10px;background:var(--accent);color:#fff;border-radius:20px;padding:0 6px;line-height:16px;min-width:16px;text-align:center}.nav-item.on{background:var(--surface);color:var(--ink)}.nav-item.on .idx{color:var(--accent)}.nav-item.on:before{content:"";position:absolute;left:-18px;top:50%;transform:translateY(-50%);width:2px;height:17px;background:var(--accent)}.nav-sep{margin:12px 8px 6px;font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--ink-4);text-transform:uppercase}.rail-foot{margin-top:auto;border-top:1px solid var(--line);padding-top:14px;display:grid;gap:8px}.rail-stat{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink-3)}.rail-stat b{font-family:var(--mono);color:var(--ink-2);font-weight:500}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;height:54px;display:flex;align-items:center;gap:12px;padding:0 30px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(10px) saturate(1.2);backdrop-filter:blur(10px) saturate(1.2)}.crumb{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--ink-3);letter-spacing:.04em}.crumb b{color:var(--ink-2);font-weight:500}.crumb .sp{color:var(--ink-4)}.icon-btn{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface);border-radius:var(--r);cursor:pointer;color:var(--ink-2);transition:border-color .15s,color .15s,background .15s}.icon-btn:hover{border-color:var(--line-strong);color:var(--ink)}.searchbtn{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink-3);border-radius:var(--r);padding:5px 9px;cursor:pointer;font-size:12px;transition:border-color .15s,color .15s}.searchbtn:hover{border-color:var(--line-strong);color:var(--ink-2)}.searchbtn kbd{font-family:var(--mono);font-size:10px;border:1px solid var(--line);border-radius:2px;padding:0 4px;color:var(--ink-4)}.page{padding:34px 30px 90px;max-width:1180px;width:100%}.page-head{margin-bottom:26px;display:grid;gap:10px}.page-head h1{margin-top:2px}.page-head .spread{flex-wrap:wrap}.page-head .spread>div:first-child{min-width:0}.page-head .meta{display:flex;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;color:var(--ink-3)}.page-head .meta b{color:var(--ink-2);font-weight:500}.grid{display:grid;gap:14px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-side{display:grid;gap:14px;grid-template-columns:minmax(0,1fr) 300px;align-items:start}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;position:relative;transition:border-color .18s,transform .18s}.card.tight{padding:14px 16px}.card.flat{background:transparent}.card.hover:hover{border-color:var(--line-strong);transform:translateY(-1px)}.card h3{margin-bottom:6px}.card .cap{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}.stat{padding:16px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.stat .n{font-family:var(--serif);font-size:27px;line-height:1.1;letter-spacing:-.02em}.stat .n small{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin-left:3px}.stat .k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);padding:7px 14px;border-radius:var(--r);font-size:13px;letter-spacing:.01em;transition:background .15s,border-color .15s,color .15s,opacity .15s;white-space:nowrap}.btn:hover{background:var(--surface-2);border-color:var(--ink-3)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn.primary:hover,.btn.accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn.accent:hover{background:var(--accent-2);border-color:var(--accent-2)}.btn.ghost{border-color:transparent;background:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--surface);color:var(--ink)}.btn.sm{padding:4px 10px;font-size:12px}.btn.lg{padding:10px 20px;font-size:14px}.btn.wide{width:100%}.chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:20px;padding:2px 9px;font-size:11.5px;color:var(--ink-2);background:var(--surface);font-family:var(--mono);letter-spacing:.01em;white-space:nowrap}.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chip.accent{color:var(--accent);border-color:var(--accent-soft);background:var(--accent-soft)}.chip.teal{color:var(--teal);border-color:var(--teal-soft);background:var(--teal-soft)}.chips{display:flex;flex-wrap:wrap;gap:6px}button.chip{cursor:pointer}button.chip:hover{border-color:var(--line-strong)}.tag{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.bar{height:3px;background:var(--line-2);border-radius:3px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent);border-radius:3px;transition:width .5s cubic-bezier(.2,.8,.2,1)}.bar.thin{height:2px}.ring{--p: 0;width:62px;height:62px;border-radius:50%;display:grid;place-items:center;flex:none;background:conic-gradient(var(--accent) calc(var(--p) * 1%),var(--line-2) 0);position:relative}.ring:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;background:var(--surface)}.ring b{position:relative;z-index:1;font-family:var(--mono);font-size:12px;font-weight:500}.term{border-bottom:1px dashed var(--line-strong);cursor:help;position:relative;color:inherit;background:none;padding:0;font:inherit}.term:hover,.term:focus-visible{border-bottom-color:var(--accent);color:var(--accent)}.term-pop{position:fixed;z-index:90;max-width:330px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r);padding:11px 13px;font-size:12.5px;line-height:1.66;color:var(--ink-2);box-shadow:var(--shadow);font-family:var(--sans)}.term-pop b{display:block;font-family:var(--serif);font-size:13px;color:var(--ink);margin-bottom:4px}.plink{color:var(--teal);border-bottom:1px solid color-mix(in srgb,var(--teal) 35%,transparent);cursor:pointer;background:none;border-top:0;border-left:0;border-right:0;padding:0;font:inherit}.plink:hover{color:var(--accent);border-bottom-color:var(--accent)}.prose{font-size:15.5px;line-height:1.86;color:var(--ink-2);max-width:68ch}.prose>*:first-child{margin-top:0}.prose h2{font-size:20px;color:var(--ink);margin:34px 0 12px;padding-top:16px;border-top:1px solid var(--line);scroll-margin-top:70px}.prose h2:before{content:"§";font-family:var(--mono);font-size:12px;color:var(--accent);margin-right:8px}.prose h3{font-size:16px;color:var(--ink);margin:22px 0 8px}.prose p{margin:0 0 14px}.prose strong{color:var(--ink);font-weight:600}.prose em{color:var(--ink)}.prose ul,.prose ol{margin:0 0 14px;padding-left:20px}.prose li{margin-bottom:6px}.prose li::marker{color:var(--ink-4)}.prose code{font-family:var(--mono);font-size:12.5px;background:var(--surface-2);border:1px solid var(--line);padding:1px 5px;border-radius:2px;color:var(--accent)}.prose pre{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;overflow-x:auto;margin:0 0 16px}.prose pre code{background:none;border:0;padding:0;color:var(--ink-2);font-size:12.5px;line-height:1.7}.prose blockquote{margin:20px 0;padding:12px 16px;border-left:2px solid var(--accent);background:var(--accent-soft);color:var(--ink-2);font-size:14px;border-radius:0 var(--r) var(--r) 0}.prose blockquote p:last-child{margin:0}.prose table{width:100%;border-collapse:collapse;margin:0 0 18px;font-size:13.5px}.prose th{text-align:left;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line-strong);padding:7px 10px;font-weight:500}.prose td{padding:8px 10px;border-bottom:1px solid var(--line-2);vertical-align:top}.prose tr:last-child td{border-bottom:0}.prose hr{border:0;border-top:1px solid var(--line);margin:26px 0}.toc{position:sticky;top:74px;display:grid;gap:12px}.toc a{display:block;font-size:12.5px;color:var(--ink-3);padding:3px 0 3px 10px;border-left:1px solid var(--line);line-height:1.5;transition:color .15s,border-color .15s}.toc a:hover{color:var(--ink);border-left-color:var(--ink-3)}.toc a.on{color:var(--accent);border-left-color:var(--accent)}.list{display:grid;gap:0}.list-row{display:flex;align-items:center;gap:14px;padding:13px 2px;border-bottom:1px solid var(--line-2);text-align:left;background:none;border-top:0;border-left:0;border-right:0;width:100%;cursor:pointer;transition:background .15s}.list-row:hover{background:var(--surface)}.list-row:last-child{border-bottom:0}.list-row .num{font-family:var(--mono);font-size:11px;color:var(--ink-4);width:22px;flex:none}.list-row .ttl{font-family:var(--serif);font-size:15px;color:var(--ink)}.list-row .sub{font-size:12.5px;color:var(--ink-3);line-height:1.5;margin-top:2px}.list-row .right{margin-left:auto;display:flex;align-items:center;gap:10px;flex:none}table.dt{width:100%;border-collapse:collapse;font-size:13px}table.dt th{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line-strong);font-weight:500;white-space:nowrap}table.dt td{padding:10px;border-bottom:1px solid var(--line-2);vertical-align:top;color:var(--ink-2)}table.dt tr:hover td{background:var(--surface)}.field{display:grid;gap:5px}.field>span{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.input,.select,.textarea{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:8px 11px;font-size:13.5px;color:var(--ink);transition:border-color .15s;outline:none}.input:focus,.select:focus,.textarea:focus{border-color:var(--ink-3)}.textarea{resize:vertical;min-height:84px;line-height:1.65}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 13px) 55%,calc(100% - 8px) 55%;background-size:5px 5px;background-repeat:no-repeat;padding-right:28px}.hint{font-size:11.5px;color:var(--ink-3);line-height:1.6}.range{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:18px;background:transparent;cursor:pointer}.range::-webkit-slider-runnable-track{height:2px;background:var(--line-strong);border-radius:2px}.range::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:var(--accent);margin-top:-5px;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--accent)}.range::-moz-range-track{height:2px;background:var(--line-strong)}.range::-moz-range-thumb{width:12px;height:12px;border:2px solid var(--surface);border-radius:50%;background:var(--accent)}.quiz-q{font-family:var(--serif);font-size:19px;line-height:1.55;color:var(--ink);margin-bottom:18px}.opt{display:flex;gap:11px;align-items:flex-start;width:100%;text-align:left;cursor:pointer;border:1px solid var(--line);background:var(--surface);border-radius:var(--r);padding:12px 14px;margin-bottom:8px;font-size:14px;color:var(--ink-2);transition:border-color .15s,background .15s,color .15s}.opt:hover{border-color:var(--line-strong);color:var(--ink)}.opt .k{font-family:var(--mono);font-size:10px;width:18px;height:18px;display:grid;place-items:center;border:1px solid var(--line-strong);border-radius:2px;color:var(--ink-3);flex:none;margin-top:3px}.opt.sel{border-color:var(--ink);color:var(--ink);background:var(--surface-2)}.opt.sel .k{background:var(--ink);color:var(--bg);border-color:var(--ink)}.opt.ok{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 8%,var(--surface));color:var(--ink)}.opt.ok .k{background:var(--ok);border-color:var(--ok);color:#fff}.opt.bad{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 7%,var(--surface));color:var(--ink)}.opt.bad .k{background:var(--bad);border-color:var(--bad);color:#fff}.opt:disabled{cursor:default}.explain{border-left:2px solid var(--teal);background:var(--teal-soft);padding:12px 15px;border-radius:0 var(--r) var(--r) 0;font-size:13.5px;color:var(--ink-2);line-height:1.7}.flash{max-width:680px;margin:0 auto;min-height:260px;display:grid;place-items:center;text-align:center;padding:40px 28px;border:1px solid var(--line);background:var(--surface);border-radius:var(--r);cursor:pointer;position:relative;overflow:hidden}.flash .front{font-family:var(--serif);font-size:21px;line-height:1.6;color:var(--ink);max-width:40ch}.flash .back{font-size:15px;line-height:1.8;color:var(--ink-2);max-width:50ch;margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.flash .hintline{position:absolute;bottom:12px;left:0;right:0;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--ink-4);text-transform:uppercase}.heat{display:grid;grid-auto-flow:column;gap:2px}.heat .col{display:grid;grid-template-rows:repeat(7,9px);gap:2px}.heat i{width:9px;height:9px;border-radius:1px;background:var(--line-2);display:block}.heat i[data-l="1"]{background:color-mix(in srgb,var(--accent) 28%,var(--line-2))}.heat i[data-l="2"]{background:color-mix(in srgb,var(--accent) 50%,var(--line-2))}.heat i[data-l="3"]{background:color-mix(in srgb,var(--accent) 72%,var(--line-2))}.heat i[data-l="4"]{background:var(--accent)}.player{border:1px solid var(--line);background:var(--surface);border-radius:var(--r);padding:20px 22px}.pbar{height:4px;background:var(--line-2);border-radius:3px;position:relative;cursor:pointer;margin:14px 0 8px}.pbar .fill{position:absolute;inset:0 auto 0 0;background:var(--accent);border-radius:3px}.pbar .knob{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;background:var(--accent);transform:translate(-50%,-50%)}.playbtn{width:46px;height:46px;border-radius:50%;border:1px solid var(--ink);background:var(--ink);color:var(--bg);display:grid;place-items:center;cursor:pointer;flex:none;transition:background .15s,transform .15s}.playbtn:hover{background:var(--accent);border-color:var(--accent);transform:scale(1.03)}.script{display:grid;gap:0}.sent{display:grid;grid-template-columns:26px 1fr;gap:10px;padding:7px 10px;border-radius:var(--r);cursor:pointer;transition:background .12s;font-size:14.5px;line-height:1.72;color:var(--ink-3)}.sent:hover{background:var(--surface-2);color:var(--ink-2)}.sent .who{font-family:var(--mono);font-size:10px;color:var(--ink-4);padding-top:4px}.sent.on{background:var(--accent-soft);color:var(--ink)}.sent.on .who{color:var(--accent)}.sent.done{color:var(--ink-3)}.chat{display:flex;flex-direction:column;gap:18px}.msg{display:grid;gap:6px}.msg .who{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}.msg .bubble{font-size:14.5px;line-height:1.82;color:var(--ink-2);white-space:pre-wrap}.msg.user .bubble{color:var(--ink);font-family:var(--serif);font-size:16px}.msg.user{border-left:2px solid var(--line-strong);padding-left:14px}.cites{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.cite{display:inline-flex;align-items:center;gap:5px;max-width:100%;font-size:11.5px;color:var(--ink-2);border:1px solid var(--line);background:var(--surface-2);border-radius:2px;padding:3px 8px;cursor:pointer;text-align:left}.cite:hover{border-color:var(--accent);color:var(--accent)}.cite b{font-family:var(--mono);font-size:9.5px;color:var(--accent)}.composer{position:sticky;bottom:0;background:linear-gradient(180deg,transparent,var(--bg) 22%);padding:14px 0 4px}.composer .box{display:flex;gap:10px;align-items:flex-end;border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--r);padding:8px}.composer textarea{flex:1;border:0;background:none;outline:none;resize:none;font-size:14px;line-height:1.7;padding:4px 6px;min-height:24px;max-height:160px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,#0b0a08 46%,transparent);z-index:100;display:grid;place-items:start center;padding-top:12vh;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.palette{width:min(620px,92vw);background:var(--surface);border:1px solid var(--line-strong);border-radius:4px;box-shadow:0 30px 70px -30px #00000080;overflow:hidden}.palette input{width:100%;border:0;border-bottom:1px solid var(--line);background:none;outline:none;padding:15px 18px;font-size:15px}.palette .res{max-height:56vh;overflow:auto;padding:6px}.palette .item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:2px;cursor:pointer;font-size:13.5px;color:var(--ink-2)}.palette .item.on,.palette .item:hover{background:var(--surface-2);color:var(--ink)}.palette .item .k{font-family:var(--mono);font-size:9.5px;color:var(--ink-4);text-transform:uppercase;letter-spacing:.08em}.palette .foot{border-top:1px solid var(--line);padding:7px 14px;font-family:var(--mono);font-size:10px;color:var(--ink-4);display:flex;gap:14px}.toast-wrap{position:fixed;bottom:22px;left:50%;transform:translate(-50%);z-index:120;display:grid;gap:8px}.toast{background:var(--ink);color:var(--bg);padding:9px 16px;border-radius:2px;font-size:13px;box-shadow:var(--shadow);animation:rise .24s ease-out;max-width:80vw}.toast.bad{background:var(--bad);color:#fff}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.empty{text-align:center;padding:46px 20px;color:var(--ink-3);font-size:13.5px}.empty b{display:block;font-family:var(--serif);font-size:16px;color:var(--ink-2);margin-bottom:6px}.sk{background:linear-gradient(90deg,var(--surface-2) 25%,var(--line-2) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.3s infinite linear;border-radius:2px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.fade-in{animation:fade .28s ease-out both}@keyframes fade{0%{opacity:0;transform:translateY(6px)}}.notice{border:1px solid var(--line);border-left:2px solid var(--gold);background:var(--gold-soft);padding:11px 14px;font-size:12.5px;color:var(--ink-2);border-radius:0 var(--r) var(--r) 0}.notice.bad{border-left-color:var(--bad);background:color-mix(in srgb,var(--bad) 8%,var(--surface))}.simframe{width:100%;height:calc(100vh - 128px);border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.simbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;z-index:1}.login{width:min(400px,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:38px 34px;box-shadow:var(--shadow)}.login h1{font-size:25px;margin-bottom:6px}.login .seal{width:34px;height:34px;border-radius:2px;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-family:var(--serif);margin-bottom:20px}.prose-inline{font-size:13px;line-height:1.75;color:var(--ink-2);max-width:none}.prose-inline p{margin:0 0 4px}.prose-inline p:last-child{margin-bottom:0}.prose-flow{font-size:14px}.prose-flow h2{display:none}.flash-hit{animation:hit 1.6s ease-out}@keyframes hit{0%,to{background:transparent}15%,70%{background:var(--accent-soft)}}mark{background:var(--gold-soft);color:inherit;border-radius:2px;padding:0 1px}@media (max-width: 1080px){.grid-side{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media (max-width: 860px){:root{--rail: 0px}.app{grid-template-columns:minmax(0,1fr)}.rail{position:fixed;left:0;right:0;bottom:0;top:auto;height:58px;z-index:50;border-right:0;border-top:1px solid var(--line);flex-direction:row;align-items:center;padding:0 6px env(safe-area-inset-bottom,0px);gap:0;overflow-x:auto;background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand,.rail-foot,.nav-sep{display:none}.nav{flex-direction:row;gap:0;width:100%;justify-content:flex-start}.nav-item{flex-direction:column;gap:3px;padding:6px 1px;flex:1 1 0;min-width:0;justify-content:center;border-radius:0}.nav-item .lb{font-size:9.5px}.lg-only{display:none}.sm-only{display:inline}.nav-item .idx{display:none}.nav-item .lb{font-size:10px;letter-spacing:0}.nav-item.on:before{left:50%;top:0;transform:translate(-50%);width:16px;height:2px}.nav-item .badge{position:absolute;top:2px;right:3px}.topbar{padding:0 14px;height:48px}.page{padding:20px 15px 96px}h1{font-size:25px}.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}.grid-2.keep{grid-template-columns:repeat(2,minmax(0,1fr))}.prose{font-size:15px}.prose h2{font-size:18px}.searchbtn span{display:none}.simframe{height:calc(100vh - 190px)}}@media print{.rail,.topbar,.composer{display:none}}
