*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{-webkit-font-smoothing:antialiased;background:#101014;margin:0;font-family:Inter,system-ui,sans-serif}.t{--font-display:var(--f-display,inherit);--font-body:var(--f-body,inherit);--font-mono:var(--f-mono,inherit);background:var(--bg);color:var(--text);font-family:var(--font-body);flex-direction:column;min-height:100%;display:flex}.t *,.t :before,.t :after{box-sizing:border-box}.t h1,.t h2,.t h3,.t h4,.t p{margin:0}.t button{cursor:pointer;font-family:inherit}.t input,.t textarea,.t select{font-family:inherit}.t .btn{color:var(--text);background:0 0;border:1px solid #0000;align-items:center;gap:.5em;padding:.62em 1.15em;font-size:.9rem;font-weight:500;line-height:1.15;text-decoration:none;transition:all .18s;display:inline-flex}.t .btn:disabled{opacity:.45;cursor:not-allowed}.t .btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.t .btn-primary{background:var(--accent);color:var(--accent-contrast)}.t .btn-primary:hover:not(:disabled){background:var(--accent-strong)}.t .btn-outline{border-color:var(--border-strong);color:var(--text)}.t .btn-outline:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.t .btn-ghost{opacity:.75}.t .btn-ghost:hover:not(:disabled){opacity:1;background:var(--surface-2)}.t .btn-danger{border-color:var(--border-strong);color:var(--danger)}.t .btn-danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.t .btn-sm{padding:.4em .8em;font-size:.8rem}.t .btn-lg{padding:.85em 1.6em;font-size:1rem}.t .btn-block{justify-content:center;width:100%}.t .card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.t .surface-2{background:var(--surface-2)}.t .hairline{background:var(--border);border:0;height:1px}.t .chip{letter-spacing:.04em;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);white-space:nowrap;align-items:center;gap:.4em;padding:.28em .7em;font-size:.72rem;font-weight:600;display:inline-flex}.t .chip-accent{background:var(--accent-soft);color:var(--accent);border-color:#0000}.t .chip-new{background:var(--new-soft);color:var(--new);border-color:#0000}.t .chip-tested{background:var(--tested-soft);color:var(--tested);border-color:#0000}.t .input{background:var(--surface);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius);width:100%;padding:.55em .85em;font-size:.9rem;transition:border-color .15s,box-shadow .15s}.t .input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.t .input::placeholder{color:var(--text-faint)}.t select.input{appearance:auto}.t select.input option{background:var(--surface);color:var(--text)}.t textarea.input{resize:vertical;min-height:84px;line-height:1.55}.t .textarea-lg{min-height:110px}.t .label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin-bottom:.45em;font-size:.72rem;font-weight:600;display:block}.t .eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-size:.72rem;font-weight:700}.t .vp-shell{flex-direction:column;height:100%;display:flex;overflow:hidden}.t .vp-body{flex:1;position:relative;overflow:auto}.t .vp-shell[data-layout=sidebar]{flex-direction:row}.t .vp-shell[data-layout=sidebar] .vp-side{background:var(--surface-alt,var(--sidebar-bg,var(--surface)));border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:236px;padding:1.1rem .9rem;display:flex;overflow:auto}.t .vp-shell[data-layout=sidebar] .vp-main{flex-direction:column;flex:1;display:flex;overflow:hidden}.t .vp-shell[data-layout=topnav] .vp-topbar{background:var(--surface-alt,var(--sidebar-bg,var(--surface)));border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 1.4rem;display:flex}.t .vp-nav-items{flex-wrap:wrap;gap:.2rem;display:flex}.t .vp-shell[data-layout=minimal] .vp-topbar{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2rem;padding:1.4rem 1.4rem 1.1rem;display:flex}.t .vp-shell[data-layout=tabs] .vp-topbar{flex-wrap:wrap;align-items:flex-end;gap:.4rem;padding:1.2rem 1.4rem 0;display:flex}.t .vp-main-pad{width:100%;max-width:1160px;margin-inline:auto;padding:1.6rem 2rem 3rem}.t .nav-item{border-radius:var(--radius);color:var(--text-dim);text-align:left;background:0 0;border:none;align-items:center;gap:.65rem;width:100%;padding:.55em .85em;font-size:.9rem;font-weight:500;transition:all .15s;display:flex}.t .nav-item:hover{color:var(--text);background:var(--surface-2)}.t .nav-item.on{background:var(--nav-active-bg,var(--accent-soft));color:var(--nav-active-fg,var(--accent))}.t .nav-item svg{flex-shrink:0;width:17px;height:17px}.t .nav-label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);padding:.9rem .85em .35rem;font-size:.65rem;font-weight:700}.t .page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.5rem;display:flex}.t .page-title{font-family:var(--font-display);font-size:1.75rem;font-weight:600;line-height:1.15}.t .page-sub{color:var(--text-dim);margin-top:.3rem;font-size:.9rem}.t .stat{padding:1.1rem 1.2rem}.t .stat-num{font-family:var(--font-display);margin-top:.35rem;font-size:2rem;font-weight:600;line-height:1}.t .stat-num.acc{color:var(--accent)}.t .progress{background:var(--surface-2);border-radius:999px;height:6px;overflow:hidden}.t .progress>i{background:var(--accent);border-radius:inherit;height:100%;display:block}.t .vp-reader{gap:0;height:100%;display:flex}.t .vp-page-area{flex:1;justify-content:center;padding:2.2rem 1.6rem;display:flex;overflow:auto}.t .vp-paper{background:var(--paper);width:min(680px,100%);color:var(--paper-text);font-family:var(--font-serif,var(--font-display));border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-pop);padding:3rem 3.4rem;font-size:1.02rem;line-height:1.85}.t .vp-paper h3{margin-bottom:1.2rem;font-size:1.35rem;line-height:1.35}.t .vp-paper p{margin-bottom:1.15rem}.t .vp-page-meta{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-bottom:2rem;font-size:.7rem}.t .vp-w{cursor:pointer;border-radius:3px;padding:.05em .02em;transition:background .12s,color .12s}.t .vp-w:hover{background:var(--accent-soft);color:var(--accent)}.t .vp-w.on{background:var(--accent);color:var(--accent-contrast)}.t .vp-w.saved{box-shadow:inset 0 -.32em 0 0 var(--accent-soft)}.t .vp-w.saved.on{box-shadow:none}.t .vp-def{border-left:1px solid var(--border);background:var(--surface);flex-shrink:0;width:340px;padding:1.4rem 1.4rem 2rem;overflow:auto}.t .def-word{font-family:var(--font-display);font-size:2rem;font-weight:600;line-height:1.1}.t .def-pos{font-family:var(--font-mono);color:var(--accent);letter-spacing:.04em;margin:.3rem 0 1rem;font-size:.8rem}.t .def-block-label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);margin:1.1rem 0 .4rem;font-size:.68rem;font-weight:700}.t .def-body{color:var(--text);font-size:.95rem;line-height:1.65}.t .def-example{color:var(--text-dim);border-left:3px solid var(--accent-soft);padding-left:.8rem;font-style:italic}.t .def-context{background:var(--surface-2);border-radius:var(--radius-sm);color:var(--text-dim);padding:.7rem .9rem;font-size:.82rem;line-height:1.5}.t .vp-toolbar{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:.6rem;padding:.6rem 1rem;display:flex}.t .tool-btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text-dim);border-radius:var(--radius-sm);padding:.35em .7em;font-size:.82rem;transition:all .15s}.t .tool-btn:hover{color:var(--accent);border-color:var(--accent)}.t .toolbar-title{font-family:var(--font-display);text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:120px;font-size:.95rem;font-weight:600;overflow:hidden}.t .word-card{cursor:pointer;text-align:left;width:100%;color:var(--text);padding:1.1rem 1.2rem;transition:all .16s}.t .word-card:hover{border-color:var(--accent);transform:translateY(-2px)}.t .word-card .word-h{font-family:var(--font-display);font-size:1.25rem;font-weight:600}.t .word-card .word-def{color:var(--text-dim);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.45rem;font-size:.85rem;display:-webkit-box;overflow:hidden}.t .word-card .word-meta{color:var(--text-faint);font-size:.72rem;font-family:var(--font-mono);flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.8rem;display:flex}.t .quiz-num{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);font-size:.78rem}.t .quiz-word{font-family:var(--font-display);margin:.6rem 0 1.4rem;font-size:clamp(2.4rem,6vw,3.6rem);font-weight:600;line-height:1.05}.t .pick-word{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:var(--radius);padding:.55em .9em;font-size:.87rem;transition:all .14s}.t .pick-word:hover{border-color:var(--accent)}.t .pick-word.on{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.t .pick-word.dim{opacity:.55}.t .summary-row{grid-template-columns:160px 1fr 1fr;align-items:start;gap:1.2rem;padding:1rem 1.2rem;display:grid}@media (width<=720px){.t .summary-row{grid-template-columns:1fr}}.t .summary-word{font-family:var(--font-display);font-size:1.1rem;font-weight:600}.t .doc-cover{aspect-ratio:3/4.2;border-radius:var(--radius);background:var(--cover,linear-gradient(135deg, var(--accent-soft), var(--surface-2)));color:var(--cover-text,var(--text));flex-direction:column;justify-content:space-between;padding:1.1rem;transition:transform .18s;display:flex;position:relative;overflow:hidden}.t .doc-card:hover .doc-cover{transform:translateY(-3px)}.t .cover-title{font-family:var(--font-cover,var(--font-display));font-size:1.3rem;font-weight:700;line-height:1.2}.t .cover-author{opacity:.8;letter-spacing:.05em;font-size:.75rem}.t .toast{background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius);box-shadow:var(--shadow-pop);z-index:60;padding:.7em 1.3em;font-size:.88rem;font-weight:600;animation:.25s toast-in;position:fixed;bottom:1.4rem;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(8px)}}.t .modal-bg{background:var(--overlay,#00000073);z-index:50;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.t .modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);width:min(560px,100%);max-height:86vh;overflow:auto}.t .swatch{border-radius:var(--radius-sm);border:1px solid var(--border);font-size:.7rem;font-family:var(--font-mono);color:var(--text-dim);align-items:flex-end;min-height:64px;padding:.8rem;display:flex}.mini{pointer-events:none;-webkit-user-select:none;user-select:none}.sh-wrap{color:#e9e7ee;background:#101014;min-height:100%}.sh-btn{font:inherit;color:#cfcdda;cursor:pointer;background:0 0;border:1px solid #32323d;border-radius:9px;align-items:center;gap:.45em;padding:.5em .95em;font-size:.8rem;font-weight:600;transition:all .15s;display:inline-flex}.sh-btn:hover{color:#fff;border-color:#6b6b7c}.sh-btn:focus-visible{outline-offset:2px;outline:2px solid #7c5cff}.sh-btn-primary{color:#fff;background:#7c5cff;border-color:#7c5cff}.sh-btn-primary:hover{color:#fff;background:#8d70ff;border-color:#8d70ff}.sh-btn-gold{color:#221b06;background:#e7c554;border-color:#e7c554}.sh-btn-gold:hover{color:#221b06;background:#f0d06a;border-color:#f0d06a}.sh-btn.on{color:#e7c554;border-color:#e7c554}.sh-eyebrow{letter-spacing:.22em;text-transform:uppercase;color:#7c5cff;font-size:.7rem;font-weight:700}.sh-sticky{z-index:40;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#101014d9;border-bottom:1px solid #26262e;position:sticky;top:0}:root{--ink-accent:#ff4d00;--ink-accent-strong:#e03f00;--ink-accent-soft:#ff4d0014;--ink-bg:#fff;--ink-surface:#fafaf9;--ink-surface-2:#f1f0ee;--ink-text:#1c1917;--ink-dim:#57534e;--ink-faint:#a8a29e;--ink-border:#e7e5e4;--ink-border-strong:#d6d3d1;--ink-danger:#b91c1c;--ink-danger-soft:#b91c1c12;--ink-font-display:"Fraunces", Georgia, serif;--ink-font-body:"Inter", system-ui, sans-serif;--ink-font-mono:"JetBrains Mono", ui-monospace, monospace;--ink-radius-sm:3px;--ink-radius:5px;--ink-radius-lg:8px;--ink-shadow-pop:0 8px 30px -10px #0000002e;--ink-new-soft:#ff4d0012;--ink-tested-soft:#f1f0ee}.app{background:var(--ink-bg);color:var(--ink-text);font-family:var(--ink-font-body);min-height:100vh;font-size:15px;line-height:1.6}.app *,.app :before,.app :after{box-sizing:border-box}.app h1,.app h2,.app h3,.app h4,.app p{margin:0}.app button{cursor:pointer;font-family:inherit}.app input,.app textarea,.app select{font-family:inherit}.app a{color:var(--ink-accent-strong)}.app .card{background:var(--ink-surface);border:1px solid var(--ink-border);border-radius:var(--ink-radius-lg)}.app .btn{color:var(--ink-text);background:0 0;border:1px solid #0000;border-radius:2px;align-items:center;gap:.5em;padding:.55em 1.05em;font-size:.88rem;font-weight:500;transition:opacity .15s,border-color .15s,background .15s;display:inline-flex}.app .btn:disabled{opacity:.4;cursor:not-allowed}.app .btn:focus-visible{outline:2px solid var(--ink-accent);outline-offset:2px}.app .btn-primary{background:var(--ink-accent);color:#fff}.app .btn-primary:hover:not(:disabled){background:var(--ink-accent-strong)}.app .btn-outline{border-color:var(--ink-border-strong)}.app .btn-outline:hover:not(:disabled){border-color:var(--ink-accent);color:var(--ink-accent-strong)}.app .btn-ghost{opacity:.7}.app .btn-ghost:hover:not(:disabled){opacity:1;background:var(--ink-surface-2)}.app .btn-danger{border-color:var(--ink-border-strong);color:var(--ink-danger)}.app .btn-danger:hover:not(:disabled){background:var(--ink-danger-soft);border-color:var(--ink-danger)}.app .btn-sm{padding:.35em .7em;font-size:.78rem}.app .btn-block{justify-content:center;width:100%}.app .chip{letter-spacing:.03em;background:var(--ink-surface-2);color:var(--ink-dim);border:1px solid var(--ink-border);white-space:nowrap;border-radius:999px;align-items:center;gap:.4em;padding:.26em .65em;font-size:.7rem;font-weight:600;display:inline-flex}.app .chip-accent{background:var(--ink-new-soft);color:var(--ink-accent-strong);border-color:#0000}.app .chip-skeleton{color:var(--ink-faint);border-style:dashed}.app .input{border:1px solid var(--ink-border);color:var(--ink-text);border-radius:var(--ink-radius);background:#fff;width:100%;padding:.55em .85em;font-size:.9rem;transition:border-color .15s,box-shadow .15s}.app .input:focus{border-color:var(--ink-accent);box-shadow:0 0 0 3px var(--ink-new-soft);outline:none}.app .input::placeholder{color:var(--ink-faint)}.app textarea.input{resize:vertical;min-height:90px;line-height:1.6}.app .eyebrow{font-family:var(--ink-font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);font-size:.68rem;font-weight:500}.app .eyebrow-acc{color:var(--ink-accent)}.app .label{font-family:var(--ink-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:.4em;font-size:.66rem;display:block}.app .progress{background:var(--ink-surface-2);height:3px;overflow:hidden}.app .progress>i{background:var(--ink-accent);height:100%;display:block}.app .hairline{background:var(--ink-border);border:0;height:1px}.app .topbar{border-bottom:1px solid var(--ink-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:30;background:#fffffff0;flex-wrap:wrap;align-items:center;gap:1.1rem;padding:.85rem 2rem;display:flex;position:sticky;top:0}.app .brand{font-family:var(--ink-font-display);font-size:1.05rem;font-weight:700;line-height:1}.app .brand small{font-family:var(--ink-font-mono);letter-spacing:.34em;text-transform:uppercase;color:var(--ink-faint);margin-top:.28rem;font-size:.58rem;display:block}.app .nav{flex-wrap:wrap;gap:.1rem;display:flex}.app .nav button{color:var(--ink-dim);background:0 0;border:none;border-radius:3px;padding:.42em .8em;font-size:.85rem}.app .nav button:hover{color:var(--ink-text)}.app .nav button.on{color:var(--ink-text);box-shadow:inset 0 -2px 0 0 var(--ink-text);border-radius:0}.app .page{max-width:1120px;margin:0 auto;padding:2.2rem 2rem 4rem}.app .page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.6rem;display:flex}.app .page-title{font-family:var(--ink-font-display);font-size:2rem;font-style:italic;font-weight:400;line-height:1.15}.app .page-sub{color:var(--ink-dim);max-width:60ch;margin-top:.45rem;font-size:.9rem}.app .stat-num{font-family:var(--ink-font-display);margin-top:.4rem;font-size:2rem;font-weight:400;line-height:1}.app .stat-num.acc{color:var(--ink-accent)}.app .toast{background:var(--ink-text);color:#fff;z-index:90;border-radius:3px;max-width:min(600px,92vw);padding:.65em 1.2em;font-size:.85rem;position:fixed;bottom:1.4rem;left:50%;transform:translate(-50%)}.app .toast.error{background:var(--ink-danger)}.app .modal-bg{z-index:60;background:#14121059;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.app .modal{border:1px solid var(--ink-border);border-radius:var(--ink-radius-lg);box-shadow:var(--ink-shadow-pop);background:#fff;width:min(580px,100%);max-height:88vh;overflow:auto}.app .reader-toolbar{border-bottom:1px solid var(--ink-border);background:#fff;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.55rem 1rem;display:flex}.app .tool-btn{border:1px solid var(--ink-border);color:var(--ink-dim);font-size:.78rem;font-family:var(--ink-font-mono);background:#fff;border-radius:3px;padding:.32em .65em}.app .tool-btn:hover,.app .tool-btn.on{color:var(--ink-accent-strong);border-color:var(--ink-accent)}.app .toolbar-title{font-family:var(--ink-font-display);text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:140px;font-size:.92rem;font-weight:600;overflow:hidden}.app .reader-wrap{min-height:calc(100vh - 120px);display:flex}.app .canvas-col{flex:1;justify-content:center;min-width:0;padding:1.6rem 1rem 3rem;display:flex;overflow:auto}.app .pdf-shell{box-shadow:var(--ink-shadow-pop);position:relative}.app .pdf-shell canvas{display:block}.app .pdf-words{position:absolute;inset:0;overflow:hidden}.app .pdf-words span{color:#0000;cursor:pointer;white-space:pre;position:absolute}.app .pdf-words span:hover{background:var(--ink-new-soft);box-shadow:inset 0 -1px 0 0 var(--ink-accent)}.app .pdf-words span.w-active{background:var(--ink-accent)}.app .pdf-words span.w-saved{box-shadow:inset 0 -2px 0 0 var(--ink-accent)}.app .pdf-words span.w-saved.w-active{background:var(--ink-accent);box-shadow:none}.app .pdf-words mark.search-hit{color:#0000;background:#ffc34273}.app .def-panel{border-left:1px solid var(--ink-border);background:#fff;flex-shrink:0;width:360px;padding:1.35rem 1.45rem 2.4rem;overflow:auto}.app .def-word{font-family:var(--ink-font-display);font-size:2rem;font-weight:400;line-height:1.1}.app .def-pos{font-family:var(--ink-font-mono);letter-spacing:.06em;color:var(--ink-accent-strong);margin:.35rem 0 1rem;font-size:.74rem}.app .def-h{font-family:var(--ink-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin:1.1rem 0 .45rem;font-size:.66rem}.app .def-body{font-size:.94rem;line-height:1.65}.app .def-example{font-family:var(--ink-font-display);color:var(--ink-dim);border-left:1px solid var(--ink-accent);padding-left:.85rem;font-style:italic}.app .def-context{background:var(--ink-surface);border:1px solid var(--ink-border);color:var(--ink-dim);border-radius:4px;padding:.65rem .8rem;font-size:.8rem;line-height:1.5}.app .word-card{text-align:left;background:var(--ink-surface);border:1px solid var(--ink-border);border-radius:var(--ink-radius-lg);color:var(--ink-text);width:100%;padding:1.05rem 1.15rem;transition:border-color .15s}.app .word-card:hover{border-color:var(--ink-accent)}.app .word-h{font-family:var(--ink-font-display);font-size:1.2rem;font-weight:500}.app .word-def{color:var(--ink-dim);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.4rem;font-size:.84rem;display:-webkit-box;overflow:hidden}.app .word-meta{font-family:var(--ink-font-mono);color:var(--ink-faint);flex-wrap:wrap;gap:.45rem;margin-top:.7rem;font-size:.66rem;display:flex}.app .quiz-num{font-family:var(--ink-font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-size:.72rem}.app .quiz-word{font-family:var(--ink-font-display);margin:.5rem 0 1.3rem;font-size:clamp(2.2rem,5vw,3.4rem);font-style:italic;font-weight:400;line-height:1.05}.app .pick-word{border:1px solid var(--ink-border-strong);color:var(--ink-text);background:#fff;border-radius:3px;padding:.5em .85em;font-size:.85rem;transition:all .12s}.app .pick-word:hover{border-color:var(--ink-accent);color:var(--ink-accent-strong)}.app .pick-word.on{background:var(--ink-accent);border-color:var(--ink-accent);color:#fff}.app .summary-word{font-family:var(--ink-font-display);font-size:1.15rem;font-weight:500}.app .summary-pair{border-top:1px solid var(--ink-border);padding:1rem 1.15rem}.app .summary-pair:first-child{border-top:none}.app .alert{border:1px dashed var(--ink-border-strong);border-radius:var(--ink-radius);color:var(--ink-dim);background:var(--ink-surface);padding:.9rem 1.1rem;font-size:.85rem;line-height:1.6}.app .status-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.app .status-dot.ok{background:#22c55e}.app .status-dot.off{background:var(--ink-faint)}.app .status-dot.warn{background:var(--ink-accent)}.app .skeleton{background:linear-gradient(90deg, var(--ink-surface) 25%, var(--ink-surface-2) 50%, var(--ink-surface) 75%);background-size:200% 100%;border-radius:4px;animation:1.4s infinite sk}@keyframes sk{0%{background-position:200% 0}}@media (width<=900px){.app .reader-wrap{flex-direction:column}.app .def-panel{border-left:none;border-top:1px solid var(--ink-border);width:100%}.app .page{padding:1.6rem 1.1rem 3rem}.app .topbar{padding:.7rem 1rem}}.app .spin{border:2px solid var(--ink-border);border-top-color:var(--ink-accent);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app .report-grid{grid-template-columns:repeat(4,1fr);gap:.8rem;display:grid}.app .stat{border-top:2px solid var(--ink-border);text-align:center;padding:.9rem 0 .7rem}.app .stat-accent{border-top-color:var(--ink-accent)}.app .stat-n{font-family:var(--ink-font-display);font-size:1.8rem;font-weight:600;line-height:1}.app .stat-outof{font-family:var(--ink-font-mono);color:var(--ink-faint);margin-left:2px;font-size:.7rem}.app .stat-l{font-family:var(--ink-font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-top:.4rem;font-size:.62rem}.app .report-counts{border-top:1px solid var(--ink-border);flex-wrap:wrap;gap:.4rem;margin-top:1.1rem;padding-top:.9rem;display:flex}.app .chip-muted{opacity:.45}.app .chip-danger{background:var(--ink-danger-soft);border-color:var(--ink-danger);color:var(--ink-danger)}.app .chip-warn{background:var(--ink-accent-soft);border-color:var(--ink-accent);color:var(--ink-accent-strong)}.app .teacher-list{color:var(--ink-dim);margin:.35rem 0 0;padding-left:1.05rem;font-size:.82rem;line-height:1.65}.app .teacher-list li{margin-bottom:.3rem}.app .eval-card{border-top:1px solid var(--ink-border);padding-top:.8rem}.app .eval-head{border-bottom:1px solid var(--ink-border);justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:.8rem;display:flex}.app .eval-note{color:var(--ink-dim);margin-top:.35rem;font-size:.8rem;line-height:1.65}.app .eval-scores{flex-wrap:wrap;flex-shrink:0;gap:.4rem;display:flex}.app .scorechip{font-family:var(--ink-font-mono);border:1px solid var(--ink-border);color:var(--ink-dim);white-space:nowrap;border-radius:99px;padding:.3em .7em;font-size:.66rem}.app .scorechip.total{background:var(--ink-text);color:#fff;border-color:var(--ink-text)}.app .eval-feed{grid-template-columns:1fr 1fr;gap:1.2rem;padding-top:.8rem;display:grid}.app .eval-fb{color:var(--ink-text);margin:.3rem 0 0;font-size:.82rem;line-height:1.65}.app .eval-fb b{font-weight:550}.app .sugg{background:var(--ink-accent-soft);border-left:2px solid var(--ink-accent);margin-top:.6rem;padding:.55rem .8rem}.app .sugg .label{color:var(--ink-accent-strong);margin-bottom:.15rem}.app .sugg p{margin:0;font-size:.82rem;line-height:1.6}@media (width<=860px){.app .report-grid{grid-template-columns:repeat(2,1fr)}.app .eval-feed{grid-template-columns:1fr}.app .eval-head{flex-direction:column}}
