:root{--bg:#161A21;--panel:#1E232C;--panel-2:#252B35;--paper:#EEF0F1;--ink:#2A2E35;--ink-soft:#6B7480;--accent:#F0A23A;--accent-dim:#b97c2c;--teal:#6FB3AB;--muted:#8A93A0;--line:#313846;--band:rgba(240,162,58,.16);--word:rgba(240,162,58,.45);--fg:#D7DCE4;--fg-soft:#c2c9d2;--field:#11151b;--field-fg:#D7DCE4;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;--sans:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--serif:"Iowan Old Style",Georgia,"Times New Roman",serif;--lens-alpha:.93;--lens-text:#EEF0F1;--lens-edge:none;--lens-font:34px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--sans);display:flex;flex-direction:column;overflow:hidden}.bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line);z-index:30}.brand{display:flex;align-items:baseline;gap:9px;margin-right:4px}.brand b{font-size:15px;letter-spacing:.02em}.brand span{font-family:var(--mono);font-size:11px;color:var(--muted)}.sep{width:1px;height:24px;background:var(--line)}button{font-family:var(--sans);font-size:13px;color:var(--fg);background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:7px 11px;cursor:pointer;transition:border-color .15s,background .15s}button:hover{border-color:#46506180}button:focus-visible,#rail:focus-visible{outline:2px solid var(--teal);outline-offset:2px}.play{background:var(--accent);color:#22160a;border-color:var(--accent);font-weight:600;min-width:78px}.play:hover{background:#f4ad52}.seg{display:flex;padding:3px;gap:3px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px}.seg button{border:none;background:transparent;padding:6px 12px;border-radius:6px}.seg button.on{background:var(--accent);color:#22160a;font-weight:600}.wpm{display:flex;align-items:center;gap:10px}.wpm-read{font-family:var(--mono);font-size:22px;color:var(--accent);min-width:52px;text-align:right;font-variant-numeric:tabular-nums}.wpm-read small{font-size:11px;color:var(--muted);margin-left:3px}input[type=range]{accent-color:var(--accent);width:150px}.hint{font-family:var(--mono);font-size:11px;color:var(--muted)}.anchor{position:relative}.pop{position:absolute;top:42px;right:0;width:250px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;z-index:40;box-shadow:0 16px 50px #0000008c;display:none}.pop.open{display:block}.pop h4{margin:0 0 4px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.row{margin:12px 0 0}.row:first-child{margin-top:6px}.row label{display:flex;justify-content:space-between;font-size:12px;color:var(--fg-soft);margin-bottom:6px}.swatches{display:flex;gap:7px}.sw{width:24px;height:24px;border-radius:6px;border:2px solid transparent;cursor:pointer}.sw.on{border-color:var(--teal)}select{width:100%;background:var(--field);color:var(--field-fg);border:1px solid var(--line);border-radius:7px;padding:7px;font-family:var(--sans);font-size:13px}.subbar{display:none;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 16px;background:#1a1f27;border-bottom:1px solid var(--line);z-index:29}.subbar.show{display:flex}.subbar .lbl{font-size:12px;color:var(--muted)}.status{font-size:12px;color:var(--teal);font-family:var(--mono)}.status.err{color:#e08a6a}.spin{width:13px;height:13px;border:2px solid #3a4250;border-top-color:var(--accent);border-radius:50%;display:inline-block;vertical-align:-2px;animation:sp .7s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}.aiset{margin-left:auto}.aibox{display:none;width:100%;gap:8px;margin-top:8px}.aibox.show{display:flex;flex-wrap:wrap}.aibox input{background:var(--field);color:var(--field-fg);border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:12px;font-family:var(--mono)}.aibox input.key{flex:1;min-width:180px}.stage{flex:1;display:flex;min-height:0;position:relative}.rail{width:34px;flex:none;background:var(--panel);border-right:1px solid var(--line);position:relative;cursor:pointer}.rail-track{position:absolute;left:50%;top:14px;bottom:14px;width:3px;transform:translate(-50%);background:var(--line);border-radius:2px}.rail-fill{position:absolute;left:50%;top:14px;width:3px;transform:translate(-50%);background:linear-gradient(var(--accent),var(--accent-dim));border-radius:2px;height:0}.rail-thumb{position:absolute;left:50%;width:16px;height:16px;transform:translate(-50%,-50%);background:var(--accent);border:2px solid var(--bg);border-radius:50%;top:14px;box-shadow:0 1px 4px #00000080}.tick{position:absolute;left:50%;width:11px;height:2px;transform:translate(-50%);background:var(--teal);opacity:.8;border-radius:1px}.tick:after{content:attr(data-h);position:absolute;left:15px;top:-6px;white-space:nowrap;font-size:10px;color:var(--muted);font-family:var(--sans);opacity:0;transition:opacity .15s;pointer-events:none}.rail:hover .tick:after{opacity:1}.doc-wrap{flex:1;min-width:0;position:relative;overflow:hidden;background:#0f1217}.doc{position:absolute;inset:0;overflow-y:auto;padding:8vh 7vw;scroll-behavior:auto}.doc.pdf{padding:14px 0 0}.sheet{max-width:62ch;margin:0 auto;background:var(--paper);color:var(--ink);border-radius:6px;padding:54px 56px 60vh;font-family:var(--serif);font-size:18px;line-height:1.85;box-shadow:0 18px 60px #00000073}.ln{margin:0 0 1.05em}.heading{font-family:var(--sans);font-weight:700;font-size:20px;line-height:1.4;margin:1.7em 0 .7em;color:var(--ink);letter-spacing:-.01em}.ln:first-child.heading{margin-top:0}.w{border-radius:3px;padding:0 .02em;transition:background .08s}.cur-sent{background:var(--band)}.cur{background:var(--word);box-shadow:0 0 0 1px var(--accent) inset;border-radius:4px}.doc.skim .skip{opacity:.24;filter:grayscale(.35)}.pdfstage{display:flex;flex-direction:column;align-items:center;gap:16px;padding-bottom:60vh}.pdfpage{position:relative;background:#fff;box-shadow:0 10px 40px #00000073;border-radius:2px}.pdfpage canvas{display:block;border-radius:2px}.pdflayer{position:absolute;inset:0}.pdflayer .w{position:absolute;border-radius:2px;pointer-events:none;background:transparent;box-shadow:none}.pdflayer .w.cur-sent{background:var(--band)}.pdflayer .w.cur{background:var(--word);box-shadow:0 0 0 1px var(--accent) inset}.lens{position:absolute;z-index:20;top:46%;left:50%;transform:translate(-50%,-50%);width:300px;height:124px;background:rgba(22,26,33,var(--lens-alpha));border:1px solid #3a4250;border-radius:14px;overflow:visible;backdrop-filter:blur(calc(var(--lens-alpha) * 8px));-webkit-backdrop-filter:blur(calc(var(--lens-alpha) * 8px));box-shadow:0 10px 40px rgba(0,0,0,calc(var(--lens-alpha) * .55));display:flex;align-items:center;justify-content:center;touch-action:none;user-select:none}.lens-head{position:absolute;top:7px;left:12px;font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.lens-grip{position:absolute;top:6px;right:10px;color:#4b5564;font-size:13px;cursor:grab;letter-spacing:1px}.cross{position:absolute;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent}.cross.top{top:18px;border-top:6px solid var(--accent)}.cross.bot{bottom:18px;border-bottom:6px solid var(--accent)}.lword{display:grid;grid-template-columns:1fr auto 1fr;align-items:baseline;font-family:var(--sans);font-weight:600;font-size:var(--lens-font);color:var(--lens-text);width:100%;padding:0 18px;text-shadow:var(--lens-edge);white-space:nowrap}.lp{text-align:right;white-space:pre}.lpv{text-align:center;color:var(--accent);padding:0 1px}.lps{text-align:left;white-space:pre}.resize{position:absolute;right:3px;bottom:3px;width:16px;height:16px;cursor:nwse-resize;border-right:2px solid #4b5564;border-bottom:2px solid #4b5564;border-radius:0 0 5px}.drawer{position:absolute;right:14px;bottom:14px;z-index:25;width:min(380px,82vw);background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;box-shadow:0 14px 50px #00000080;display:none}.drawer.open{display:block}.drawer textarea{width:100%;height:120px;resize:vertical;background:var(--field);color:var(--field-fg);border:1px solid var(--line);border-radius:8px;padding:10px;font-family:var(--serif);font-size:14px}.drawer-row{display:flex;justify-content:space-between;gap:8px;margin-top:10px;align-items:center}.drawer h3{margin:0 0 8px;font-size:13px;color:var(--muted);font-weight:600}.pdf-opts{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.file-lbl{font-size:12px;color:var(--teal);cursor:pointer;border:1px dashed var(--line);padding:7px 10px;border-radius:8px}.chk{font-size:12px;color:var(--fg-soft);display:flex;align-items:center;gap:6px;cursor:pointer}.chk input{accent-color:var(--accent)}.pdf-status{font-size:11px;color:var(--muted);font-family:var(--mono);margin-top:8px;min-height:14px}.doctitle{font-size:12px;color:var(--fg-soft);max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#tocBtn:disabled{opacity:.38;cursor:default}.tocpanel{position:absolute;left:0;top:0;bottom:0;width:min(290px,74vw);background:var(--panel);border-right:1px solid var(--line);z-index:24;transform:translate(-100%);transition:transform .18s;display:flex;flex-direction:column;box-shadow:8px 0 40px #0006}.tocpanel.open{transform:none}.toc-head{padding:12px 14px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line)}.toc-list{overflow-y:auto;padding:6px}.toc-item{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;background:transparent;border:none;border-radius:6px;padding:7px 9px;color:var(--fg-soft);font-size:13px;cursor:pointer}.toc-item:hover{background:var(--panel-2)}.toc-item .pg{color:var(--muted);font-family:var(--mono);font-size:11px;flex:none}.toc-item.lvl1{padding-left:24px;font-size:12px;color:#aeb6c0}.toc-item.lvl2{padding-left:38px;font-size:12px;color:#9aa2ad}.toc-item.lvl3{padding-left:52px;font-size:12px;color:#9aa2ad}.tick{cursor:pointer}#themePop{width:292px}.presets{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.preset{display:flex;align-items:center;gap:7px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);cursor:pointer;font-size:12px;color:var(--fg)}.preset:hover{border-color:var(--accent)}.preset .dots{display:flex;gap:3px;flex:none}.preset .dots i{width:11px;height:11px;border-radius:50%;display:block;border:1px solid rgba(127,127,127,.3)}.cgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.cgrid label{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--fg-soft);gap:8px}.cgrid input[type=color]{width:34px;height:24px;padding:0;border:1px solid var(--line);border-radius:6px;background:none;cursor:pointer}.aibox.show{display:grid}.aibox{padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:0 14px 50px #0006}.ai-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ai-grid label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--muted);letter-spacing:.02em}.ai-grid .ai-wide{grid-column:1 / -1}.ai-grid input,.ai-grid textarea{background:var(--field);color:var(--field-fg);border:1px solid var(--line);border-radius:7px;padding:7px 9px;font-size:12px;font-family:var(--mono)}.ai-grid textarea{height:88px;resize:vertical;font-family:var(--sans);font-size:12.5px;line-height:1.5}.ai-actions{display:flex;justify-content:flex-end;margin-top:10px}.runai{background:var(--accent);color:#22160a;border-color:var(--accent);font-weight:600}.runai:hover{background:#f4ad52}.runai:disabled{opacity:.5;cursor:default}.status.warn{color:var(--accent)}.ai-inline{display:flex;gap:6px}.ai-inline input{flex:1;min-width:0}.ai-inline button{flex:none}.ai-models{display:flex;flex-wrap:wrap;gap:6px;max-height:104px;overflow-y:auto}.ai-models:empty{display:none}.model-chip{font-family:var(--mono);font-size:11px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:var(--field);color:var(--field-fg);cursor:pointer}.model-chip:hover{border-color:var(--accent)}.ai-models .note{font-size:11px;color:var(--muted);font-family:var(--sans)}@media (max-width:640px){.sheet{padding:30px 26px 60vh;font-size:17px}.doc{padding:5vh 4vw}.doc.pdf{padding:10px 0 0}.wpm input[type=range]{width:100px}.hint{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important}.spin{animation:none}}
