@font-face{font-family:Literata;font-style:normal;font-display:swap;font-weight:200 900;src:url(./literata-latin-wght-normal-DLxlUchJ.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata;font-style:normal;font-display:swap;font-weight:200 900;src:url(./literata-latin-ext-wght-normal-BnEbWgdZ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Literata;font-style:italic;font-display:swap;font-weight:200 900;src:url(./literata-latin-wght-italic-Bm_GJfSc.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata;font-style:italic;font-display:swap;font-weight:200 900;src:url(./literata-latin-ext-wght-italic-CC1SwlwQ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--font-ui:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-read:"Literata", Georgia, "Times New Roman", serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--bg:#f6f3ec;--bg-2:#efeadf;--surface:#fffdf8;--surface-2:#f8f4ea;--text:#1e2430;--text-2:#4c5565;--muted:#7a8291;--border:#e2dccd;--border-strong:#cfc6b2;--accent:#0f6e6a;--accent-2:#128079;--accent-soft:#d9ece9;--accent-text:#fff;--highlight:#ffe9a8;--pacer:#0f6e6a29;--pacer-line:#0f6e6a;--orp:#c2362f;--good:#2f7d32;--good-soft:#dcefdc;--warn:#9a6400;--warn-soft:#fbedc9;--bad:#b3261e;--bad-soft:#f8dcd9;--info-soft:#e1eaf7;--shadow-1:0 1px 2px #28200f0f, 0 1px 1px #28200f0a;--shadow-2:0 6px 20px #28200f1a, 0 2px 6px #28200f0f;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-xl:24px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--nav-w:232px;--tabbar-h:62px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=sepia]{--bg:#f1e7d0;--bg-2:#e9dcbf;--surface:#f8f0dc;--surface-2:#efe3c8;--text:#3a2e1d;--text-2:#5b4a33;--muted:#86735a;--border:#dccaa6;--border-strong:#c9b48b;--accent:#8a4b14;--accent-2:#a0581a;--accent-soft:#f0dcc0;--highlight:#f7d98a;--pacer:#8a4b1429;--pacer-line:#8a4b14}:root[data-theme=dark]{--bg:#12161c;--bg-2:#171c24;--surface:#1b212a;--surface-2:#222a35;--text:#e7e9ec;--text-2:#b8c0cb;--muted:#8a94a3;--border:#2c3542;--border-strong:#3a4554;--accent:#4fb8ae;--accent-2:#63c7bd;--accent-soft:#1d3a38;--accent-text:#0d1513;--highlight:#5a4a12;--pacer:#4fb8ae2e;--pacer-line:#4fb8ae;--orp:#ff6b5e;--good:#6cc070;--good-soft:#1e3320;--warn:#e0b04f;--warn-soft:#3a3016;--bad:#ff7a6e;--bad-soft:#3d1f1c;--info-soft:#1d2a3d;--shadow-1:0 1px 2px #0000004d;--shadow-2:0 8px 24px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{text-size-adjust:100%;height:100%}body{background:var(--bg);min-height:100%;color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;margin:0;font-size:16px;line-height:1.5}#root{min-height:100vh;min-height:100dvh}h1,h2,h3,h4{margin:0 0 var(--sp-3);letter-spacing:-.01em;line-height:1.25}h1{font-size:1.75rem;font-weight:700}h2{font-size:1.35rem;font-weight:650}h3{font-size:1.1rem;font-weight:650}p{margin:0 0 var(--sp-3)}a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}img{max-width:100%;height:auto}hr{border:0;border-top:1px solid var(--border);margin:var(--sp-5) 0}::selection{background:var(--highlight)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}.muted{color:var(--muted)}.small{font-size:.875rem}.tiny{font-size:.78rem}.center{text-align:center}.nowrap{white-space:nowrap}.num{font-variant-numeric:tabular-nums}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.shell{min-height:100vh;min-height:100dvh;display:flex}.rail{display:none}.main{min-width:0;padding:calc(var(--safe-top) + var(--sp-4)) calc(var(--safe-right) + var(--sp-4)) calc(var(--tabbar-h) + var(--safe-bottom) + var(--sp-5)) calc(var(--safe-left) + var(--sp-4));flex:1}.page{max-width:980px;margin:0 auto}.page.narrow{max-width:720px}.page.wide{max-width:1200px}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--sp-3);margin:var(--sp-2) 0 var(--sp-5);flex-wrap:wrap;display:flex}.page-head h1{margin:0}.page-head .sub{color:var(--muted);margin-top:4px}.tabbar{z-index:40;height:calc(var(--tabbar-h) + var(--safe-bottom));padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);background:color-mix(in srgb, var(--surface) 92%, transparent);background:var(--surface);border-top:1px solid var(--border);-webkit-backdrop-filter:saturate(1.4)blur(14px);backdrop-filter:saturate(1.4)blur(14px);justify-content:space-around;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a,.tabbar button{color:var(--muted);cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:6px 0 4px;font-size:.7rem;font-weight:550;text-decoration:none;display:flex}.tabbar a.active,.tabbar button.active{color:var(--accent)}.tabbar svg{width:24px;height:24px}.more-sheet{right:calc(var(--safe-right) + 10px);bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 8px);z-index:45;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-2);min-width:220px;padding:6px;position:fixed}.more-sheet a{border-radius:var(--r-md);color:var(--text);align-items:center;gap:12px;padding:12px 14px;font-weight:500;text-decoration:none;display:flex}.more-sheet a:hover,.more-sheet a.active{background:var(--accent-soft);color:var(--accent)}.more-sheet svg{width:20px;height:20px}@media (min-width:900px){.rail{height:100vh;height:100dvh;width:var(--nav-w);padding:calc(var(--safe-top) + var(--sp-5)) var(--sp-3) var(--sp-4) calc(var(--safe-left) + var(--sp-3));border-right:1px solid var(--border);background:var(--bg-2);flex-direction:column;flex:none;display:flex;position:sticky;top:0;overflow-y:auto}.rail .brand{padding:0 10px var(--sp-5);letter-spacing:-.01em;align-items:center;gap:10px;font-weight:700;display:flex}.rail .brand img{border-radius:9px;width:34px;height:34px}.rail .brand small{color:var(--muted);font-size:.75rem;font-weight:500;display:block}.rail nav{flex-direction:column;gap:2px;display:flex}.rail nav .sep{background:var(--border);height:1px;margin:var(--sp-3) 10px}.rail a{border-radius:var(--r-md);color:var(--text-2);align-items:center;gap:12px;padding:10px 12px;font-size:.95rem;font-weight:550;text-decoration:none;display:flex}.rail a:hover{background:var(--surface-2);color:var(--text)}.rail a.active{background:var(--accent-soft);color:var(--accent)}.rail svg{flex:none;width:20px;height:20px}.rail .badge{margin-left:auto}.tabbar,.more-sheet{display:none}.main{padding:calc(var(--safe-top) + var(--sp-6)) calc(var(--safe-right) + var(--sp-6)) var(--sp-7) var(--sp-6)}}.shell.focus .rail,.shell.focus .tabbar{display:none}.shell.focus .main{padding:calc(var(--safe-top) + var(--sp-3)) calc(var(--safe-right) + var(--sp-3)) calc(var(--safe-bottom) + var(--sp-3)) calc(var(--safe-left) + var(--sp-3))}.grid{gap:var(--sp-4);display:grid}.grid.cols-2{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.grid.cols-4{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.row{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.stack{gap:var(--sp-3);flex-direction:column;display:flex}.stack.lg{gap:var(--sp-5)}.spacer{flex:1}.section{margin:var(--sp-6) 0 var(--sp-3)}.section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:var(--sp-6) 0 var(--sp-3);font-size:.78rem;font-weight:700}.btn{border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);min-height:44px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,transform 50ms;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:18px;height:18px}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn.primary:hover{background:var(--accent-2)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2)}.btn.danger{color:var(--bad);border-color:var(--bad-soft)}.btn.sm{border-radius:var(--r-sm);min-height:34px;padding:6px 12px;font-size:.85rem}.btn.lg{border-radius:var(--r-lg);min-height:54px;padding:14px 26px;font-size:1.05rem}.btn.block{width:100%}.icon-btn{width:44px;height:44px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn svg{width:22px;height:22px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--shadow-1)}.card.flat{box-shadow:none}.card.tight{padding:var(--sp-4)}.card h2,.card h3{margin-bottom:var(--sp-2)}.card .kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;font-size:.75rem;font-weight:700}a.card{color:inherit;text-decoration:none;transition:border-color .15s,transform .1s,box-shadow .15s;display:block}a.card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-2)}a.card:active{transform:scale(.995)}.card.accent{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);color:var(--accent-text);border-color:#0000}.card.accent .kicker,.card.accent .muted{color:inherit;opacity:.85}.stat{flex-direction:column;gap:2px;display:flex}.stat .v{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.9rem;font-weight:750;line-height:1.1}.stat .l{color:var(--muted);font-size:.8rem;font-weight:550}.stat .d{font-size:.8rem;font-weight:650}.stat .d.up{color:var(--good)}.stat .d.down{color:var(--bad)}.badge{background:var(--surface-2);color:var(--text-2);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-size:.75rem;font-weight:650;display:inline-flex}.badge.accent{background:var(--accent-soft);color:var(--accent);border-color:#0000}.badge.good{background:var(--good-soft);color:var(--good);border-color:#0000}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:#0000}.badge.bad{background:var(--bad-soft);color:var(--bad);border-color:#0000}.badge.info{background:var(--info-soft);color:var(--text-2);border-color:#0000}.field{margin-bottom:var(--sp-4);flex-direction:column;gap:6px;display:flex}.field>label,.field>.label{font-size:.9rem;font-weight:600}.field .hint{color:var(--muted);font-size:.8rem}.input,select.input,textarea.input{border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);width:100%;min-height:44px;padding:10px 12px;font-size:1rem}textarea.input{resize:vertical;min-height:110px;line-height:1.5}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}input[type=range]{width:100%;accent-color:var(--accent);height:32px}.seg{border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border);flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:9px;min-height:34px;padding:7px 12px;font-size:.85rem;font-weight:600}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.switch{justify-content:space-between;align-items:center;gap:var(--sp-3);cursor:pointer;padding:10px 0;display:flex}.switch input{-webkit-appearance:none;appearance:none;background:var(--border-strong);cursor:pointer;border-radius:999px;flex:none;width:48px;height:28px;transition:background .2s;position:relative}.switch input:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:left .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.switch input:checked{background:var(--accent)}.switch input:checked:after{left:23px}.list{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.list>a,.list>.item,.list>button{align-items:center;gap:var(--sp-3);padding:14px var(--sp-4);border:0;border-bottom:1px solid var(--border);color:inherit;text-align:left;background:0 0;width:100%;min-height:54px;text-decoration:none;display:flex}.list>:last-child{border-bottom:0}.list>a:hover,.list>button:hover{background:var(--surface-2)}.list .title{font-weight:600}.list .meta{color:var(--muted);font-size:.8rem}.list .grow{flex:1;min-width:0}.bar{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;height:8px;overflow:hidden}.bar>span{background:var(--accent);border-radius:999px;height:100%;transition:width .3s;display:block}.overlay{z-index:80;background:#0a0c106b;justify-content:center;align-items:flex-end;animation:.15s ease-out fade;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.sheet{background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;width:100%;max-width:640px;max-height:88vh;padding:var(--sp-5) var(--sp-5) calc(var(--sp-5) + var(--safe-bottom));box-shadow:var(--shadow-2);animation:.2s ease-out rise;overflow-y:auto}@media (min-width:700px){.overlay{align-items:center}.sheet{border-radius:var(--r-xl)}}.sheet-head{margin-bottom:var(--sp-4);justify-content:space-between;align-items:center;display:flex}.sheet-head h2{margin:0}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}.toast{left:50%;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 16px);z-index:90;background:var(--text);color:var(--bg);border-radius:var(--r-md);box-shadow:var(--shadow-2);align-items:center;gap:12px;max-width:calc(100vw - 32px);padding:12px 18px;font-weight:550;display:flex;position:fixed;transform:translate(-50%)}.toast button{color:var(--accent-soft);cursor:pointer;background:0 0;border:0;font-weight:700}.callout{border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);background:var(--info-soft);border-left:4px solid var(--accent);font-size:.93rem}.callout.warn{background:var(--warn-soft);border-left-color:var(--warn)}.callout.good{background:var(--good-soft);border-left-color:var(--good)}.callout.bad{background:var(--bad-soft);border-left-color:var(--bad)}.callout p:last-child{margin-bottom:0}.table-wrap{-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--r-md);overflow-x:auto}table.t{border-collapse:collapse;width:100%;font-size:.92rem}table.t th,table.t td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:9px 12px}table.t th{background:var(--surface-2);font-weight:650;position:sticky;top:0}table.t tr:last-child td{border-bottom:0}.empty{text-align:center;padding:var(--sp-7) var(--sp-4);color:var(--muted)}.empty svg{opacity:.5;width:48px;height:48px;margin-bottom:var(--sp-3)}.evidence{cursor:pointer;background:var(--surface-2);border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.75rem;font-weight:650;display:inline-flex}.evidence .dots{gap:2px;display:inline-flex}.evidence .dots i{opacity:.25;background:currentColor;border-radius:50%;width:6px;height:6px}.evidence .dots i.on{opacity:1}.evidence.strong{color:var(--good);background:var(--good-soft)}.evidence.moderate{color:var(--accent);background:var(--accent-soft)}.evidence.weak{color:var(--warn);background:var(--warn-soft)}.evidence.none{color:var(--bad);background:var(--bad-soft)}.task-list{flex-direction:column;gap:6px;margin-top:14px;display:flex}.task{border-radius:var(--r-md);align-items:center;gap:12px;padding:6px 4px;display:flex}.task-check{border:2px solid var(--border-strong);background:var(--surface);width:30px;height:30px;color:var(--accent-text);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.task.done .task-check{background:var(--good);border-color:var(--good)}.task-check svg{width:18px;height:18px}.task-body{color:inherit;border-radius:var(--r-md);background:var(--surface-2);flex:1;justify-content:space-between;align-items:center;gap:10px;min-height:44px;padding:8px 10px;text-decoration:none;display:flex}.task-body:hover{background:var(--accent-soft)}.task.done .task-body>span:first-child{color:var(--muted);text-decoration:line-through}details.item{display:block}details.item summary::-webkit-details-marker{display:none}details.item.current{background:var(--accent-soft)}.unit-num.done{background:var(--good);color:#fff;border-color:#0000}.md{font-family:var(--font-read);max-width:760px;margin-top:24px;font-size:1.02rem;line-height:1.65}.md h1,.md h2,.md h3,.md h4{font-family:var(--font-ui);margin-top:1.6em}.md table{border-collapse:collapse;width:100%;font-family:var(--font-ui);font-size:.85rem;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--border);vertical-align:top;padding:6px 8px}.md th{background:var(--surface-2)}.md blockquote{border-left:3px solid var(--border-strong);color:var(--text-2);margin:1em 0;padding:.2em 1em}.md code{font-family:var(--font-mono);background:var(--surface-2);border-radius:4px;padding:1px 4px;font-size:.9em}.md a{word-break:break-word}.heat{grid-template-columns:repeat(21,1fr);gap:4px;margin-top:8px;display:grid}.heat-cell{aspect-ratio:1;background:var(--surface-2);border:1px solid var(--border);border-radius:4px}.heat-cell.l1{background:color-mix(in srgb, var(--accent) 25%, var(--surface));background:var(--accent-soft)}.heat-cell.l2{background:var(--accent);opacity:.55}.heat-cell.l3{background:var(--accent);opacity:.8}.heat-cell.l4{background:var(--accent)}.map-card{flex-direction:column;gap:8px;display:flex}.map-thumb{aspect-ratio:4/3;border-radius:var(--r-md);background:var(--surface-2);overflow:hidden}.map-thumb img{object-fit:cover;width:100%;height:100%}.tree{border-left:1px dashed var(--border-strong);margin:4px 0;padding-left:14px;list-style:none}.tree.d0{border-left:0;padding-left:0}.tree li{margin:3px 0}.tree summary{cursor:pointer;font-weight:600}.tree.d0>li>details>summary{color:var(--accent);font-size:1.05rem}.sketch-tools{margin-bottom:8px}.swatch{border:2px solid var(--surface);width:30px;height:30px;box-shadow:0 0 0 1px var(--border-strong);cursor:pointer;border-radius:50%}.swatch.on{box-shadow:0 0 0 3px var(--accent)}.sketch-canvas{border:1px solid var(--border-strong);border-radius:var(--r-md);touch-action:none;cursor:crosshair;background:#fff;display:block}.reader{--read-size:20px;--read-lh:1.6;--read-measure:62ch;--read-font:var(--font-read)}.reader-bar{z-index:20;margin:calc(-1 * var(--sp-4)) calc(-1 * var(--sp-4)) 0;padding:calc(var(--safe-top) + 6px) var(--sp-3) 6px;background:var(--bg);border-bottom:1px solid var(--border);align-items:center;gap:8px;display:flex;position:sticky;top:0}@media (min-width:900px){.reader-bar{margin:calc(-1 * var(--sp-6)) calc(-1 * var(--sp-6)) 0;padding:10px var(--sp-5)}}.reader-title{flex:1;min-width:0}.reader-title .t{white-space:nowrap;text-overflow:ellipsis;font-weight:650;overflow:hidden}.mode-chips{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:6px;margin-bottom:8px;padding:10px 0;display:flex;overflow-x:auto}.mode-chips::-webkit-scrollbar{display:none}.mode-chips button{border:1px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer;border-radius:999px;flex:none;align-items:center;gap:6px;min-height:36px;padding:7px 14px;font-size:.85rem;font-weight:600;display:inline-flex}.mode-chips button svg{width:16px;height:16px}.mode-chips button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.reader-body{max-width:calc(var(--read-measure) + 48px);margin:0 auto}.read-col,.speed-text,.preview,.recall{font-family:var(--read-font);font-size:var(--read-size);line-height:var(--read-lh);max-width:var(--read-measure);margin:0 auto}.recall,.preview{font-family:var(--font-ui);max-width:880px;font-size:1rem;line-height:1.55}.bp{-webkit-hyphens:manual;hyphens:manual;border-radius:6px;margin:0 0 .9em;transition:background .2s;position:relative}.read-col .bp{cursor:pointer}.bh{font-family:var(--font-ui);letter-spacing:-.01em}.bh2{margin:1.4em 0 .6em;font-size:1.45em}.bh3{text-transform:none;letter-spacing:.06em;color:var(--accent);margin:1.8em 0 .6em;font-size:.82em;font-weight:750}.bh4{margin:1.3em 0 .4em;font-size:.95em;font-weight:700}.bq{border-left:3px solid var(--border-strong);color:var(--text-2);margin:1em 0 1em .4em;padding:.2em 0 .2em 1em;font-style:italic}.bq .stanza{height:.7em}.bbox{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);margin:1.2em 0;padding:.9em 1.1em}.bbox .bp:last-child{margin-bottom:0}.blistwrap{border-radius:6px;margin:0 0 .9em}.blist{margin:0;padding:0;list-style:none}.blist>li{grid-template-columns:auto 1fr;column-gap:.55em;margin-bottom:.4em;display:grid}.blist>li>.marker{color:var(--muted);font-variant-numeric:tabular-nums;min-width:1.2em}.blist>li>ul.opts{grid-column:2}.blist:not(.ordered)>li>.marker{color:var(--accent)}ul.opts{margin:.2em 0 .3em;padding:0;list-style:none}ul.opts li{margin:.15em 0}ul.opts .marker{color:var(--muted);margin-right:.3em}.btable{font-family:var(--font-ui);margin:1em 0;font-size:.85em}.bcode{margin:1em 0}.bcode pre{font-family:var(--font-mono);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);max-height:340px;margin:0 0 8px;padding:12px 14px;font-size:.8em;line-height:1.5;overflow-x:auto}.bnote{color:var(--muted);font-size:.8em}.bhr{text-align:center;border:0;margin:1.5em 0}.bhr:after{content:"⁂";color:var(--muted)}.fn-ref{color:var(--accent);font-size:.7em}.pmark{font-family:var(--font-ui);justify-content:flex-end;margin:-.2em 0 .2em;display:flex}.pmark button{color:var(--muted);cursor:pointer;opacity:.75;background:0 0;border:0;border-radius:6px;padding:2px 6px;font-size:.72rem;font-weight:600}.pmark button:hover{background:var(--surface-2);opacity:1}.hl-yellow{background:#ffd65c59}.hl-green{background:#6ec87847}.hl-blue{background:#64a0f040}.hl-pink{background:#f078aa40}.hl{box-shadow:0 0 0 4px #0000}.hl-swatch{border:2px solid var(--border-strong);cursor:pointer;border-radius:50%;width:40px;height:40px}.hl-swatch.hl-yellow{background:#ffd65c}.hl-swatch.hl-green{background:#6ec878}.hl-swatch.hl-blue{background:#64a0f0}.hl-swatch.hl-pink{background:#f078aa}.note-dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:9px;height:9px;margin-left:6px;display:inline-block}.fig{text-align:center;margin:1.4em 0}.fig-img{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.fig img{border-radius:var(--r-sm);mix-blend-mode:multiply;width:auto;max-width:100%;max-height:420px}:root[data-theme=dark] .fig img,:root[data-theme=dark] .page-scan img,:root[data-theme=dark] .page-scan-item img{mix-blend-mode:normal;filter:invert(.9)hue-rotate(180deg)}.fig figcaption{font-family:var(--font-ui);color:var(--text-2);text-align:center;margin-top:6px;font-size:.8rem;font-style:italic}.fig-ph{background:var(--surface-2);border-radius:var(--r-md);color:var(--muted);padding:30px;font-size:.85rem}.zoom-box{touch-action:pinch-zoom pan-x pan-y;text-align:center;max-height:72vh;overflow:auto}.zoom-box img{width:100%;max-width:none}.timed-bar{max-width:var(--read-measure);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:0 auto 12px;display:flex}.speed-text{-webkit-user-select:none;user-select:none;position:relative}.speed-text .w{z-index:1;border-radius:4px;position:relative}.speed-text .guide{z-index:0;pointer-events:none;will-change:transform, width;position:absolute;top:0;left:0}.speed-text .guide.band{background:var(--pacer);border-radius:8px;transition:transform .12s ease-out,width .12s}.speed-text .guide.underline{background:var(--pacer-line);border-radius:2px}.speed-text .guide.dot{background:var(--pacer-line);border-radius:50%}.speed-text.mode-chunk .w.on{background:var(--pacer);box-shadow:0 0 0 3px var(--pacer)}.speed-text.mode-chunk .w{transition:background 80ms}.guided-controls{bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 8px);z-index:15;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-2);flex-wrap:wrap;align-items:center;gap:10px;margin-top:20px;padding:8px 12px;display:flex;position:sticky}@media (min-width:900px){.guided-controls{bottom:16px}}.gc-slider{flex:1;min-width:160px}.gc-slider .field{margin:0}.preview-outline{border-left:2px solid var(--border);margin-top:12px;padding-left:14px}.po-h{margin:12px 0 4px;font-weight:700}.po-h2{font-size:1.1rem}.po-h3{color:var(--accent);letter-spacing:.05em;font-size:.85rem}.po-p{color:var(--text-2);font-family:var(--font-read);margin:4px 0;font-size:.95rem}.po-fig{color:var(--muted);margin:6px 0;font-size:.85rem;font-style:italic}.reader-end{justify-content:center;margin:32px 0 8px;display:flex}.reader-nav{max-width:var(--read-measure);justify-content:space-between;margin:12px auto 0;display:flex}.pages-mode{max-width:760px;margin:0 auto}.page-scan-item{margin:12px 0 24px}.page-scan-item img{border:1px solid var(--border);border-radius:var(--r-sm);background:#fff;width:100%}.rsvp{flex-direction:column;gap:16px;min-height:calc(100dvh - 40px);display:flex}.rsvp-stage{cursor:pointer;flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:260px;display:flex;position:relative}.rsvp-guide{background:var(--border-strong);width:2px;height:18px}.rsvp-word{font-family:var(--read-font);white-space:pre;grid-template-columns:1fr auto 1fr;width:100%;max-width:900px;padding:18px 0;font-size:clamp(30px,7vw,56px);display:grid}.rsvp-word .pre{text-align:right}.rsvp-word .orp{color:var(--orp);font-weight:700}.rsvp-word .post{text-align:left}.rsvp-word .phrase{text-align:center;white-space:normal;grid-column:1/-1}.rsvp-context{text-align:center;max-width:700px;color:var(--text-2);font-family:var(--read-font);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);margin:0 auto;padding:10px 14px;font-size:1rem;position:absolute;bottom:0;left:0;right:0}.rsvp-progress{width:100%;max-width:720px;margin:0 auto}.rsvp-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;display:flex}.unit-num{background:var(--surface-2);border:1px solid var(--border);width:34px;height:34px;color:var(--text-2);border-radius:10px;flex:none;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:inline-flex}.unit-num.test{background:var(--warn-soft);color:var(--warn);border-color:#0000}.unit-num svg{width:18px;height:18px}.test-finish{bottom:calc(var(--safe-bottom) + 12px);justify-content:center;margin-top:24px;display:flex;position:sticky}.q-card{padding:var(--sp-5)}.q-text{margin-bottom:var(--sp-4);font-size:1.15rem;font-weight:550;line-height:1.45}.opt{text-align:left;border-radius:var(--r-md);border:1.5px solid var(--border-strong);background:var(--surface);cursor:pointer;justify-content:flex-start;align-items:flex-start;gap:12px;width:100%;min-height:52px;padding:14px 16px;font-size:1rem;display:flex}.opt:hover{background:var(--surface-2)}.opt.on{border-color:var(--accent);background:var(--accent-soft)}.opt .k{background:var(--surface-2);border-radius:50%;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-size:.85rem;font-weight:700;display:inline-flex}.opt.on .k{background:var(--accent);color:var(--accent-text)}.grow{flex:1;min-width:0}.flashcard{cursor:pointer;flex-direction:column;gap:12px;min-height:300px;display:flex}.fc-front{font-family:var(--font-read);margin-top:12px;font-size:1.35rem;font-weight:550;line-height:1.45}.fc-back{font-family:var(--font-read);font-size:1.15rem;line-height:1.5}.fc-extra{color:var(--text-2);font-size:.9rem}.fc-hint{margin-top:auto}.flashcard hr{margin:4px 0}.grade-row{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:16px;display:grid}.btn.grade{flex-direction:column;gap:0;min-height:62px}.btn.grade small{opacity:.8;font-size:.75rem;font-weight:500}.btn.grade.bad{border-color:var(--bad);color:var(--bad)}.btn.grade.warn{border-color:var(--warn);color:var(--warn)}.btn.grade.good{border-color:var(--good);color:var(--good)}.btn.grade.accent{border-color:var(--accent);color:var(--accent)}.skim .sk-fade{opacity:.28}.skim .sk-key{opacity:.85;font-weight:600}.skim .sk-first{font-weight:600}.skim.blur{filter:blur(4px);pointer-events:none;-webkit-user-select:none;user-select:none}@page{size:A4 portrait;margin:10mm}@media print{html,body{color:#000;background:#fff!important}#root,.shell{min-height:0!important}.rail,.tabbar,.more-sheet,.overlay,.toast,.no-print{display:none!important}.shell{display:block!important}.main{padding:0!important}a{color:inherit;text-decoration:none}.card{break-inside:avoid;box-shadow:none!important}html.ps-mode{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html.ps-mode,html.ps-mode body,html.ps-mode #root,html.ps-mode .shell,html.ps-mode .main{background:#fff!important;width:auto!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible!important}html.ps-mode .ps-toolbar,html.ps-mode .ps-hint,html.ps-mode .ps-msg{display:none!important}html.ps-mode .ps-root{max-width:none!important;margin:0!important}html.ps-mode .ps-viewport{background:0 0!important;border:0!important;border-radius:0!important;padding:0!important;overflow:visible!important}html.ps-mode .ps-stack{zoom:var(--ps-print-zoom,1)!important}html.ps-mode .ps-paper{break-after:page;page-break-after:always;break-inside:avoid;page-break-inside:avoid;width:auto!important;height:auto!important;box-shadow:none!important;border:0!important;margin:0!important;padding:0!important;overflow:visible!important}html.ps-mode .ps-paper:last-child{break-after:auto;page-break-after:auto}html.ps-mode .ps-page{margin:0 auto}}
