:root{--bg: #f3f5f2;--surface: #ffffff;--surface-sunken: #f3f5f2;--surface-tint: #eaf5ef;--text: #16241f;--text-muted: #4d5c55;--text-meta: #5f6e67;--text-faint: #6b7a73;--border: #cfd8d2;--border-soft: #e6ebe8;--accent: #0b3d2e;--accent-deep: #16241f;--accent-soft: #2b6350;--accent-on: #a7c4b7;--accent-lime: #d6f24f;--on-lime: #0b3d2e;--ok: #0b7a55;--warn: #b0703a;--danger: #b42318;--ok-text: #0b7a55;--warn-text: #b45309;--ok-bg: #f0fdf4;--ok-line: #bbf7d0;--warn-bg: #fbf3e8;--warn-line: #ecd6b8;--bad-bg: #fef2f2;--bad-line: #fecaca;--bad-ink: #7f1d1d;--tree-light: #dc2626;--font-display: "Pretendard Variable", Pretendard, -apple-system, system-ui, sans-serif;--font-body: "Pretendard Variable", Pretendard, -apple-system, system-ui, sans-serif;--mono: "JetBrains Mono", "D2Coding", ui-monospace, SFMono-Regular, Menlo, monospace;--rail-w: 208px;--r-card: 14px;--r-shell: 16px;--r-input: 12px;--r-chip: 999px;--r-badge: 6px;--radius: 10px;--gutter: 22px;font-family:var(--font-body);color:var(--text);background:var(--bg);line-height:1.6;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg)}h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.3;margin:0 0 .5em;color:var(--text)}h1{font-size:30px;letter-spacing:-.02em}h2{font-size:22px;letter-spacing:-.015em}h3{font-size:17px;letter-spacing:-.01em;margin-top:1.2em}p{margin:0 0 .75em}a{color:var(--accent)}em{font-style:normal}.mono{font-family:var(--mono);font-size:.92em}.muted{color:var(--text-muted)}.small{font-size:13px}.meta{font-family:var(--mono);font-size:11.5px;color:var(--text-meta)}.label{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--text-meta);text-transform:uppercase}.eyebrow{font-family:var(--mono);color:var(--text-meta);margin:0 0 .3em;font-size:11.5px;letter-spacing:.02em}.loading{color:var(--text-muted)}.boot{min-height:100vh;display:grid;place-items:center}.shell{display:flex;flex-direction:column;height:100%}.appnav{flex-shrink:0;display:flex;align-items:center;gap:22px;min-height:60px;padding:0 22px;background:var(--accent)}.appnav .brand{font-family:var(--font-display);font-weight:700;font-size:17px;letter-spacing:-.01em;color:#fff;white-space:nowrap;text-decoration:none}.nav-context{display:none}.appnav .tabs{display:flex;gap:3px;align-items:center;flex-wrap:wrap}.appnav .tabs button{font:inherit;cursor:pointer;background:transparent;color:var(--accent-on);border:1px solid transparent;padding:6px 13px;font-size:13.5px;border-radius:var(--r-chip);white-space:nowrap}.appnav .tabs button:hover{background:#0f4a38;color:#e6f2ec}.appnav .tabs button.on{background:var(--accent-lime);color:var(--on-lime);border-color:var(--accent-lime);font-weight:700}.appnav .tabs button.on:hover{background:var(--accent-lime);color:var(--on-lime)}.nav-group{display:contents}.nav-group-label,.appnav .tabs .nav-more{display:none}.appnav .who{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:13px;color:var(--accent-on)}.appnav .who-name b{font-weight:inherit}.appnav .who-name em:not(:empty):before{content:" · "}.appnav .who button{font:inherit;cursor:pointer;padding:6px 14px;font-size:13px;background:none;border:1px solid var(--accent-soft);border-radius:var(--r-chip);color:#e6f2ec}.appnav .who button:hover{background:#0f4a38}.appnav button:focus-visible{outline:2px solid var(--accent-lime);outline-offset:2px}.view{flex:1;min-height:0;overflow-y:auto;background:var(--bg);padding:28px var(--gutter) 64px}.nav-backdrop{display:none}@media (max-width: 760px){:root{--gutter: 16px}.appnav{gap:12px;padding:0 14px;min-height:54px}.appnav .brand{font-size:15.5px}.appnav .who{font-size:12px}.appnav .who-name{display:none}.nav-context{display:block;min-width:0;flex:1}.nav-context .nav-back,.nav-context .nav-sub{display:none}.nav-context .nav-title{display:block;color:#e6f2ec;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.appnav .tabs{position:fixed;left:0;right:0;bottom:0;z-index:40;flex-wrap:nowrap;background:var(--surface);border-top:1px solid var(--border);gap:0;padding:4px 2px;padding-bottom:calc(4px + env(safe-area-inset-bottom,0px))}.appnav .tabs>button{flex:1;min-width:0;border-radius:8px;font-size:12.5px;padding:8px 2px;min-height:46px;color:var(--text-muted)}.appnav .tabs>button:hover{background:var(--surface-tint);color:var(--accent)}.appnav .tabs>button.on,.appnav .tabs>button.on:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.appnav .tabs .nav-more{display:block}.nav-group{display:none}.nav-group.is-open{display:flex;flex-direction:column;gap:2px;position:fixed;left:8px;right:8px;z-index:46;bottom:calc(62px + env(safe-area-inset-bottom,0px));max-height:60vh;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:8px}.nav-group.is-open .nav-group-label{display:block;padding:4px 10px 6px}.nav-group.is-open button{text-align:left;color:var(--text);border-radius:10px;padding:10px 12px;font-size:14px}.nav-group.is-open button.on{background:var(--accent);color:#fff}.nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;background:#00000052}.view{padding-bottom:calc(80px + env(safe-area-inset-bottom,0px))}}@media (max-width: 360px){.appnav .tabs>button{font-size:11px;padding-left:0;padding-right:0}}@media (min-width: 761px) and (min-height: 480px){.shell{flex-direction:row}.appnav{flex-direction:column;align-items:stretch;gap:0;width:var(--rail-w);height:100%;padding:18px 12px 14px}.appnav .brand{padding:0 8px 14px}.nav-context{display:flex;flex-direction:column;gap:2px;padding:12px 8px 14px;margin-bottom:8px;border-top:1px solid var(--accent-soft);border-bottom:1px solid var(--accent-soft)}.nav-back{font-family:var(--mono);font-size:11px;color:var(--accent-on);text-decoration:none;margin-bottom:4px}.nav-back:hover{color:#e6f2ec}.nav-title{color:#fff;font-weight:700;font-size:15px;line-height:1.35}.nav-sub{font-family:var(--mono);font-size:11px;color:var(--accent-on)}.appnav .tabs{flex-direction:column;align-items:stretch;gap:2px;flex:1;min-height:0;overflow-y:auto;flex-wrap:nowrap}.appnav .tabs button{width:100%;text-align:left;border-radius:var(--r-input);padding:9px 12px;font-size:14px}.nav-group{display:flex;flex-direction:column;gap:2px;margin-top:14px}.nav-group-label{display:block;padding:0 12px 4px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--accent-on)}.nav-group button{font-size:13.5px;padding:7px 12px}.appnav .who{margin-left:0;margin-top:auto;flex-shrink:0;flex-direction:column;align-items:stretch;gap:8px;padding-top:14px;border-top:1px solid var(--accent-soft)}.appnav .who-name{display:flex;flex-direction:column;gap:1px;padding:0 4px;min-width:0}.appnav .who-name b{font-weight:600;color:#e6f2ec;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.appnav .who-name em{font-family:var(--mono);font-size:11px;color:var(--accent-on)}.appnav .who-name em:before,.appnav .who-name em:not(:empty):before{content:none}.appnav .who button{width:100%}.view{min-width:0;height:100%}}.page{max-width:1100px;margin:0 auto}.page.narrow{max-width:760px}.page.page-full{max-width:none;height:100%;display:flex;flex-direction:column}.page.page-full>.tab-body{flex:1;min-height:0}.stack{display:flex;flex-direction:column;gap:16px}.stack.tight{gap:8px}.row{display:flex;align-items:center;gap:10px;margin-top:12px}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between;margin-top:0}.grow{flex:1}.section-gap{margin-top:28px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:18px 20px}.card.tight{padding:12px 14px}.page-head{margin-bottom:18px}.page-head h1{margin-bottom:4px}.page-head p{color:var(--text-muted);margin:0}button{font:inherit}.btn-primary,.btn-secondary,.btn-ghost,.btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;text-decoration:none;line-height:1.25;border:1px solid transparent;transition:opacity .15s ease}.btn-primary{background:var(--accent-lime);color:var(--on-lime);border-color:var(--accent-lime);border-radius:var(--r-input);padding:11px 22px;font-size:14px;font-weight:700}.btn-primary:hover:not(:disabled){opacity:.92}.btn-secondary{background:var(--surface-tint);color:var(--accent);border-radius:10px;padding:9px 15px;font-size:13px;font-weight:600}.btn-secondary:hover:not(:disabled){background:#dcefe5}.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text-meta);border-radius:10px;padding:9px 15px;font-size:13px}.btn-ghost:hover:not(:disabled){color:var(--text);border-color:var(--text-muted)}.btn-ghost.is-on,.btn-secondary.is-on{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-danger{background:var(--danger);color:#fff;border-radius:10px;padding:9px 15px;font-size:13px;font-weight:600}.btn-sm{padding:6px 11px;font-size:12.5px;font-weight:600;border-radius:9px}.btn-primary.btn-sm{padding:7px 14px;font-size:13px}.btn-block{width:100%}button:disabled{opacity:.45;cursor:not-allowed}.link{background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;cursor:pointer}.confirm{display:inline-flex;gap:6px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field>span{font-weight:600;font-size:13px;color:var(--text-muted)}.field.inline{flex-direction:row;align-items:center;margin-bottom:0}.field.narrow{max-width:220px}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:9px 12px;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid var(--surface-tint);border-color:var(--accent)}input[type=checkbox],input[type=radio]{width:auto;padding:0;border:0;background:none;accent-color:var(--accent)}textarea{resize:vertical}input.num{width:5.5rem;font-family:var(--mono)}input.search{width:14rem;max-width:100%}fieldset{border:1px solid var(--border-soft);border-radius:var(--r-card);padding:12px 16px 14px;margin:0 0 16px}legend{font-weight:600;padding:0 6px}.check{display:inline-flex;align-items:flex-start;gap:8px;cursor:pointer}.check input{margin-top:.3em}.choice{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.readonly{margin:0;padding:8px 0}.components .component-row{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:420px;padding:4px 0}.notice{border-radius:var(--radius);padding:11px 14px;margin:12px 0;border:1px solid var(--border-soft);background:var(--surface-tint);font-size:14px}.notice-info{background:var(--surface-tint);border-color:#cfe5d9}.notice-warn{background:var(--warn-bg);border-color:var(--warn-line);color:#5c3b17}.notice-err{background:var(--bad-bg);border-color:var(--bad-line);color:var(--bad-ink)}.notice-ok{background:var(--ok-bg);border-color:var(--ok-line);color:#0b4d36}.notice ul.plain{margin:0;padding-left:1.1em}.badge{display:inline-block;font-family:var(--mono);font-size:11px;font-weight:600;padding:2px 7px;border-radius:var(--r-badge);border:1px solid transparent;color:var(--text-meta);background:var(--surface-sunken);white-space:nowrap;vertical-align:middle}.badge-muted{background:var(--surface-sunken);color:var(--text-meta)}.badge-info{background:var(--surface-tint);color:var(--accent)}.badge-ok{color:var(--ok-text);background:var(--ok-bg);border-color:var(--ok-line)}.badge-warn{color:var(--warn-text);background:var(--warn-bg);border-color:var(--warn-line)}.badge-err{color:var(--danger);background:var(--bad-bg);border-color:var(--bad-line)}.badge-accent{color:var(--on-lime);background:var(--accent-lime)}.badges{display:inline-flex;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font:inherit;background:var(--surface-sunken);color:var(--text);border:1px solid transparent;border-radius:var(--r-chip);padding:7px 14px;font-size:12.5px}.chip:hover:not(:disabled){border-color:var(--border)}.chip.on{background:var(--accent);color:#fff}.chip-n{font-family:var(--mono);font-size:11px;color:var(--text-meta)}.chip.on .chip-n{color:var(--accent-lime)}.chip:disabled{opacity:.45}.tabs:not(.appnav .tabs){display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin:16px 0 20px}.tab{background:none;border:0;border-bottom:3px solid transparent;padding:9px 14px;cursor:pointer;color:var(--text-muted);font-weight:600}.tab:hover{color:var(--text)}.tab.is-on{color:var(--accent);border-bottom-color:var(--accent)}.card .tabs{margin:0 0 12px}.table-wrap{overflow-x:auto;margin-top:12px}.table{width:100%;border-collapse:collapse;font-size:.92rem}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border-soft);vertical-align:top}.table th{color:var(--text-faint);font-weight:600;font-size:.8rem;white-space:nowrap}.table tr.is-selected td{background:var(--surface-tint)}.table td.detail{max-width:320px;word-break:break-all}.table select{padding:4px 6px}.course-grid{list-style:none;padding:0;margin:16px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.course-card{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:var(--text);height:100%}.course-card:hover{border-color:var(--accent-soft)}.course-title{font-size:1.15rem}.course-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.course-head h1{margin:0}.placeholder h2{margin-bottom:.4em}.rank-list{margin:8px 0 0;padding-left:1.4em}.binding-row{padding:10px 0;border-top:1px solid var(--border-soft)}.binding-row:first-of-type{border-top:0}.eligibility{display:inline-block;margin:0 4px 4px 0}.filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:8px 0 4px}.filters input[type=search]{flex:1 1 240px;min-width:0}.table tr.is-muted td{color:var(--text-faint)}.table td.nowrap,.table th.nowrap{white-space:nowrap}.order-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.score-cell{display:flex;align-items:center;gap:8px;min-width:130px}.bar{flex:1;height:6px;border-radius:3px;background:var(--border-soft);overflow:hidden}.bar>span{display:block;height:100%;background:var(--accent)}.bar.bar-value>span{background:var(--accent-lime)}.bar.bar-cost>span{background:#d9a35b}.selected-model{border:1px solid var(--border-soft);border-radius:8px;padding:10px 12px}.selected-model.is-warn{border-color:#ecd6b8;background:#fbf3e8}.selected-model .row{margin-top:0}.doc{max-height:60vh;overflow-y:auto}.card.doc{padding:24px 28px}.md{line-height:1.7}.md-preview{padding:8px 12px;margin:.4em 0;border-left:3px solid var(--accent-lime);background:var(--surface-sunken);border-radius:0 8px 8px 0}.md-preview>.md>:first-child{margin-top:0}.md-preview>.md>:last-child{margin-bottom:0}.md h1{font-size:1.35rem}.md h2{font-size:1.1rem;margin-top:1.4em}.md h3{font-size:1rem}.md ul{padding-left:1.3em}.md li{margin:.35em 0}.md blockquote{margin:0 0 1em;padding:8px 14px;border-left:3px solid var(--accent-lime);background:var(--surface-sunken);border-radius:0 8px 8px 0}.md hr{border:0;border-top:1px solid var(--border-soft);margin:1.4em 0}.md pre{margin:.6em 0;padding:10px 12px;overflow-x:auto;white-space:pre;border-radius:6px;background:var(--surface-sunken);border:1px solid var(--border-soft);font-size:.88rem;line-height:1.55}.md pre code{font-family:var(--mono);background:none;border:0;padding:0}.md :not(pre)>code{font-family:var(--mono);font-size:.92em;background:var(--surface-sunken);border:1px solid var(--border-soft);border-radius:4px;padding:0 4px}.consent .card{margin-bottom:14px}.consent-checks{display:flex;flex-direction:column;gap:10px}.doc-editor{width:100%;font-size:.85rem;line-height:1.5}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--gutter)}.auth-split{display:grid;grid-template-columns:1.1fr 1fr;width:min(960px,100%);border-radius:16px;overflow:hidden;box-shadow:0 10px 40px #0b3d2e1f}.auth-brand{background:var(--accent);color:#fff;padding:40px;display:flex;flex-direction:column;gap:14px;justify-content:center}.auth-logo{font-weight:700;color:var(--accent-lime);margin:0}.auth-brand h1{font-size:1.9rem;margin:0}.auth-sub{color:var(--accent-on);margin:0}.auth-feats{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.auth-feats span{border:1px solid var(--accent-soft);color:var(--accent-on);border-radius:999px;padding:4px 12px;font-size:.85rem}.auth-card{background:var(--surface);padding:36px 36px 28px}.auth-card h2{font-size:1.4rem}.tabs-auth{margin:12px 0 18px}.auth-help{list-style:none;padding:0;margin:18px 0 0;display:flex;flex-direction:column;gap:8px;color:var(--text-muted);font-size:.9rem}.auth-help li{display:flex;gap:10px}.auth-help .mono{color:var(--accent);font-weight:700}.dev-code{background:var(--surface-sunken);border:1px dashed var(--border);border-radius:8px;padding:8px 12px;margin-top:14px}@media (max-width: 720px){:root{--gutter: 16px}.grid-2,.auth-split{grid-template-columns:1fr}.auth-brand{padding:24px}.auth-brand h1{font-size:1.4rem}.auth-card{padding:24px 20px}.card{padding:16px}.card.doc{padding:18px}}.dropzone{display:flex;flex-direction:column;align-items:center;gap:4px;padding:20px 16px;text-align:center;border:2px dashed var(--border);border-radius:var(--radius);background:var(--surface-sunken);cursor:pointer}.dropzone.is-over{border-color:var(--accent);background:var(--surface-tint)}.dropzone input[type=file]{margin-top:8px;max-width:100%}.progress{height:6px;min-width:110px;border-radius:3px;background:var(--border-soft);overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent);transition:width .2s}.err-text{color:var(--danger)}.warn-text{color:var(--warn)}.chapter-top .grow{flex:1 1 200px;min-width:0}.stack-tight{display:flex;flex-direction:column;gap:6px}.stack-tight .notice{margin:0}.table tr.is-warn td{background:#fbf3e8}.understood li{margin:4px 0}.chapter-block{border-top:1px solid var(--border-soft);padding-top:12px;margin-top:12px}.chapter-top{margin-top:0}.chapter-units input,.chapter-units select{width:100%;min-width:0}.chapter-units th.num,.chapter-units td.num{width:6.5em}.issues{margin:8px 0}.issues summary{cursor:pointer;color:var(--warn)}.doc-preview{max-height:75vh;overflow:auto;margin-top:10px;padding:12px 18px;border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--surface);line-height:1.7}.doc-preview .sec{margin:1.2em 0 .4em;display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}.doc-preview .sec-1{font-size:1.3rem}.doc-preview .sec-2{font-size:1.12rem}.doc-preview .sec-3,.doc-preview .sec-4{font-size:1rem}.doc-preview .anchor{font-size:.72rem;font-weight:400}.doc-preview .para{margin:.45em 0}.doc-preview .para.quote{border-left:3px solid var(--border);padding-left:.7em;color:var(--text-muted)}.doc-preview .para.callout{border-left:3px solid var(--accent-soft);padding-left:.7em;background:var(--surface-tint)}.doc-preview .para.heading{font-weight:600}.doc-preview .list-marker{color:var(--text-faint)}.code-block{position:relative;margin:.6em 0}.code-block .code-label{position:absolute;top:4px;right:8px;font-size:.7rem;color:var(--text-faint)}.code-block pre{margin:0;padding:10px 12px;overflow-x:auto;white-space:pre;border-radius:6px;background:var(--surface-sunken);font-family:var(--mono);font-size:.84rem;line-height:1.5}.code-block.is-output pre{background:transparent;border:1px dashed var(--border);color:var(--text-muted)}.tabset-view{margin:.6em 0;padding:6px 10px;border:1px solid var(--border-soft);border-radius:8px}.tabset-view .tabs{margin:0 0 6px}.table-block{overflow-x:auto}.figure-view{margin:.8em 0}.figure-view img{display:block;max-width:100%;height:auto;border:1px solid var(--border-soft);border-radius:6px}.figure-placeholder{display:flex;align-items:center;justify-content:center;min-height:120px;border:1px dashed var(--border);border-radius:6px}.tex-display{overflow-x:auto;overflow-y:hidden;margin:.5em 0}.tex-error{color:var(--danger)}.badge-info{color:var(--accent-soft);border-color:#bcd9cb;background:var(--surface-tint)}.page-marker{margin:1.1em 0 .3em;padding-top:2px;border-top:1px dashed var(--border-soft);text-align:right;font-family:var(--mono);font-size:.72rem;color:var(--text-faint)}.hidden-answer{margin:.3em 0;padding:4px 8px;border-left:3px solid #bcd9cb;background:var(--surface-sunken)}.hidden-answers{margin:8px 0}.hidden-answers summary{cursor:pointer;color:var(--accent-soft)}.code-meta{margin-top:4px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.page-input{width:6em}.page-range{white-space:nowrap}.chapter-block.is-warn{background:#fbf3e8;border-radius:6px;padding:12px 10px 4px}@media (max-width: 720px){.doc-preview{padding:10px;max-height:none}.chapter-units th.num,.chapter-units td.num{width:5em}}.row.between{flex-wrap:wrap}.row.tight{margin-top:0}.row .grow{flex:1 1 220px;min-width:0}.search-results{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:14px}.search-snippet{margin:6px 0;white-space:pre-wrap;font-size:.9rem;color:var(--text-muted);max-height:18em;overflow-y:auto}.text-err{color:var(--danger)}.probe-tools{margin:12px 0 0;flex-wrap:wrap}.pick-all{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--text-muted)}.view:has(>.page-full){padding:0;overflow:hidden}.chat-app{display:flex;flex-direction:row;height:100%;min-height:0;position:relative}.chat-app .chat-main{flex:1;display:flex;flex-direction:column;min-width:0;height:100%}.chat-scroll{flex:1;overflow-y:auto;padding:20px 0 8px}.chat-inner{max-width:760px;margin:0 auto;padding:0 18px;display:flex;flex-direction:column;gap:22px}.chat-app .empty{padding:48px 0 24px;text-align:center}.chat-app .empty h2{font-size:26px;margin:0 0 8px}.chat-app .empty p{color:var(--text-muted);margin:0 auto 24px;max-width:34em}.q-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;text-align:left}.q-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;font:inherit;font-size:14px;color:var(--text);background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-card);cursor:pointer;text-align:left}.q-card:hover{border-color:var(--accent-soft)}.q-card-src{font-family:var(--mono);font-size:11px;color:var(--text-meta)}.msg-row{display:flex;flex-direction:column;gap:6px}.msg-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.msg-role{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700}.msg-avatar{width:20px;height:20px;display:inline-grid;place-items:center;font-size:10px;font-weight:700;border-radius:50%;background:var(--surface-tint);color:var(--accent)}.msg-role.bot .msg-avatar{border-radius:5px;background:var(--accent);color:var(--accent-lime);font-family:var(--mono)}.bubble{border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;background:#fff;min-width:0}.bubble pre{overflow-x:auto}.bubble .md>:last-child{margin-bottom:0}.msg-row.user .bubble{background:var(--surface-tint);border-color:var(--surface-tint)}.bubble-text{margin:0;white-space:pre-wrap}.answer-steps{display:inline-flex;align-items:center;gap:8px}.steps{display:inline-flex;gap:3px}.steps>i{width:18px;height:4px;border-radius:2px;background:var(--border-soft);overflow:hidden;display:block}.steps>i>i{display:block;height:100%;width:0;background:var(--accent-soft);transition:width .3s}.steps[data-step="1"]>i:nth-child(1)>i,.steps[data-step="2"]>i:nth-child(-n+2)>i,.steps[data-step="3"]>i>i{width:100%}.step-label{font-family:var(--mono);font-size:11px;color:var(--text-meta)}.step-slow{font-size:12px;color:var(--warn-text)}.cites{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.cites .label{margin:0 2px 0 0}.src{font-family:var(--mono);font-size:11px;color:var(--accent);background:var(--surface-tint);border:1px solid transparent;border-radius:var(--r-chip);padding:5px 11px;cursor:pointer}.src:hover,.src.on{border-color:var(--accent-soft)}.src-body{font-size:13.5px;color:var(--text-muted);background:var(--surface-sunken);border-radius:var(--r-input);padding:12px 14px;max-height:22em;overflow-y:auto}.fb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:var(--text-meta)}.fb-btns{display:inline-flex;gap:6px}.fb-btn{font:inherit;font-size:12.5px;cursor:pointer;padding:4px 12px;color:var(--text-muted);background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-chip)}.fb-btn:hover{border-color:var(--border)}.fb-btn.on{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-text)}.fb-btn.no{background:var(--bad-bg);border-color:var(--bad-line);color:var(--bad-ink)}.fb-more{flex-basis:100%;display:flex;flex-direction:column;align-items:flex-start;gap:8px}.fb-reasons{display:flex;flex-wrap:wrap;gap:6px}.fb-share{font-size:13px}.composer{border-top:1px solid var(--border-soft);background:var(--surface);padding:12px 18px}.composer-inner{max-width:760px;margin:0 auto;display:flex;gap:10px;align-items:flex-end}.composer textarea{flex:1;font:inherit;font-size:14.5px;resize:none;max-height:160px;padding:12px 14px;border:0;border-radius:var(--r-input);background:var(--surface-sunken);color:var(--text)}.composer textarea:focus{outline:2px solid var(--accent-soft);outline-offset:0}.composer .send{font:inherit;cursor:pointer;background:var(--accent-lime);color:var(--on-lime);border:0;border-radius:var(--r-input);padding:12px 22px;font-size:14px;font-weight:700}.composer .send:disabled{background:var(--surface-sunken);color:var(--text-faint);cursor:default}.composer .send.stop{background:var(--accent);color:#fff}.composer-hint{max-width:760px;margin:6px auto 0;font-family:var(--mono);font-size:11px;color:var(--text-meta)}.chat-app .sidebar{width:296px;flex-shrink:0;height:100%;display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--border-soft);padding:16px}.new-chat{width:100%;font:inherit;font-size:14px;font-weight:700;padding:12px;margin-bottom:12px;cursor:pointer;border-radius:var(--r-input);background:var(--accent);color:var(--accent-lime);border:1px solid var(--accent)}.new-chat:disabled{opacity:.6;cursor:default}.session-search{width:100%;font:inherit;font-size:13.5px;padding:9px 12px;margin-bottom:10px;border:0;border-radius:var(--r-input);background:var(--surface-sunken)}.session-list{flex:1;min-height:0;overflow-y:auto;margin:0 -6px;padding:0 6px}.session-group{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.08em;color:var(--text-meta);padding:12px 8px 4px}.session-item{display:block;width:100%;text-align:left;font:inherit;cursor:pointer;padding:9px 10px;background:none;border:0;border-radius:10px;color:var(--text)}.session-item:hover{background:var(--surface-sunken)}.session-item.on{background:var(--surface-tint)}.session-body{display:flex;flex-direction:column;gap:2px;min-width:0}.session-title{font-size:13.5px;line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.session-time{font-family:var(--mono);font-size:11px;color:var(--text-meta)}.session-empty{font-size:13px;color:var(--text-meta);padding:8px}.sidebar-toggle,.sidebar-backdrop{display:none}@media (max-width: 1024px){.chat-app .sidebar{position:absolute;top:0;right:0;bottom:0;z-index:30;transform:translate(100%);visibility:hidden;transition:transform .2s,visibility .2s;box-shadow:-8px 0 24px #00000014}.chat-app.nav-open .sidebar{transform:none;visibility:visible}.sidebar-toggle{display:block;position:absolute;top:10px;right:12px;z-index:5;font:inherit;font-size:12.5px;cursor:pointer;padding:5px 12px;background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-chip);color:var(--text-muted)}.sidebar-backdrop{display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:25;background:#0000003d}.chat-scroll{padding-top:48px}}@media (max-width: 560px){.q-cards{grid-template-columns:1fr}.composer .send{padding:12px 16px}}.chat-log{display:flex;flex-direction:column;gap:18px;max-height:62vh;overflow-y:auto;padding-right:6px}.tutor-chain .composer{border:0;padding:0;background:none}.tutor-chain .composer-inner,.tutor-chain .composer-hint{max-width:none}.tutor-cards{display:flex;flex-direction:column;gap:8px}.chat-answer-figures{margin-top:10px;border-top:1px solid var(--border-soft);padding-top:8px}.chat-answer-figures p{margin:0 0 4px}.chat-figure{margin:8px 0 0}.chat-figure img{max-width:100%;height:auto;border:1px solid var(--border-soft);border-radius:6px;background:#fff}.figure-card textarea{width:100%;font:inherit;padding:8px 10px;border:1px solid var(--border);border-radius:8px}.figure-holder{margin:10px 0;text-align:center;background:#fff;border:1px solid var(--border-soft);border-radius:8px;padding:8px}.figure-holder img{max-width:100%;max-height:320px;height:auto}.alt-repr{margin:6px 0 0;padding:8px 10px;overflow-x:auto;white-space:pre;font-size:.82rem;background:var(--surface-sunken);border:1px solid var(--border-soft);border-radius:6px}.question-figures{display:flex;flex-wrap:wrap;gap:8px;margin:.5em 0}.question-figure{max-width:100%;max-height:420px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.card.is-rejected{opacity:.55;border-style:dashed}.card.is-rejected:hover,.card.is-rejected:focus-within{opacity:1}.question-figure-box{margin:0;display:flex;flex-direction:column;gap:4px;align-items:flex-start}.question-figure-box figcaption{font-size:.85rem}.learn-inner{max-width:880px;margin:0 auto}.learn-head h1{margin:0 0 6px}.learn-head p{color:var(--text-muted);font-size:14px;margin:0 0 8px}.ch-section{margin-top:28px}.ch-section-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}.ch-section-title{font-size:17px;margin:0}.ch-section-chips{margin-left:auto;display:flex;gap:8px}.ch-chip{font-family:var(--mono);font-size:11.5px;color:var(--accent);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:5px 10px}.ch-chip.on{background:var(--accent);color:var(--accent-lime);border-color:var(--accent)}.ch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.ch-card{font:inherit;cursor:pointer;text-align:left;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--r-card);padding:18px;display:flex;flex-direction:column;gap:12px}.ch-card:hover{border-color:var(--accent)}.ch-card-top{display:flex;align-items:center;gap:10px}.ch-num{font-family:var(--mono);font-size:11px;font-weight:700;background:var(--surface-tint);color:var(--accent);border-radius:var(--r-badge);padding:3px 8px;white-space:nowrap}.ch-num.done{background:var(--accent);color:#fff}.ch-pages{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--text-meta);white-space:nowrap}.ch-title{font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:-.01em;line-height:1.3;color:var(--accent)}.ch-summary{margin:0;font-size:13.5px;color:var(--text-muted);line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.ch-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.ch-tag{font-family:var(--mono);font-size:11px;background:var(--surface-tint);color:var(--accent);border-radius:var(--r-badge);padding:4px 8px}.ch-card.is-waiting .ch-title{color:var(--text-muted)}.ch-stats{display:flex;gap:8px;border-top:1px solid var(--border-soft);padding-top:12px}.stat{flex:1;min-width:0;border-radius:10px;padding:9px 11px;display:flex;flex-direction:column;gap:3px}.stat-k{font-family:var(--mono);font-size:10px;letter-spacing:.06em}.stat-v{font-family:var(--font-display);font-weight:700;font-size:18px;line-height:1;font-variant-numeric:tabular-nums}.stat.full{background:var(--accent)}.stat.full .stat-k{color:var(--accent-on)}.stat.full .stat-v{color:#fff}.stat.part{background:var(--surface-tint)}.stat.part .stat-k{color:var(--text-meta)}.stat.part .stat-v{color:var(--accent)}.stat.none{background:var(--surface-sunken)}.stat.none .stat-k,.stat.none .stat-v{color:var(--text-meta)}.tree-icon{display:inline-flex;align-items:center;gap:5px;flex:none;line-height:0}.tree-icon svg{width:24px;height:24px;display:block}.grow-score{font-family:var(--mono);font-size:11px;font-weight:700;line-height:1;color:var(--text-meta);font-variant-numeric:tabular-nums}.tree-icon.done .grow-score{color:var(--ok)}.tree-icon.unscored{opacity:.55}.grow-outline *{fill:none;stroke:var(--border);stroke-width:1.1;stroke-linejoin:round}.grow-fill .p-leaf{fill:var(--ok)}.grow-fill .p-trunk{fill:var(--warn-text)}.tree-icon svg clipPath rect{transition:y .5s ease,height .5s ease}.grow-glow{fill:var(--tree-light);opacity:.2;transform-origin:12px 11px;animation:grow-pulse 2.6s ease-in-out infinite}@keyframes grow-pulse{0%,to{opacity:.1;transform:scale(.8)}50%{opacity:.26;transform:scale(1)}}@media (prefers-reduced-motion: reduce){.grow-glow{animation:none;opacity:.2;transform:scale(.95)}.tree-icon svg clipPath rect{transition:none}}.back-btn{margin-bottom:16px}.detail-head{margin-bottom:18px}.detail-head h1{font-size:24px;margin:6px 0 4px;line-height:1.35}.overview-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:20px 22px}.overview-card h2{font-size:16px;margin:0 0 12px}.overview-card h3{font-size:14px;margin:20px 0 10px}.overview-summary{font-size:15px;line-height:1.7}.concept-list{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:8px}.concept-list li{padding:8px 12px;background:var(--surface-sunken);border-radius:var(--radius);font-size:14px}.step-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.step-btn{font:inherit;cursor:pointer;border-radius:10px;padding:9px 15px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.step-btn.next{background:var(--accent-lime);color:var(--on-lime);border:1px solid var(--accent);font-weight:700}.step-btn.todo{background:var(--surface);color:var(--accent);border:1px solid var(--accent)}.step-btn.todo:hover{background:var(--surface-tint)}.step-btn.done{background:var(--surface-tint);color:var(--accent);border:1px solid #7e9a8c;font-weight:500}.step-btn.done:before{content:"✓";font-weight:700}.step-btn[aria-current=step]{box-shadow:inset 0 -3px 0 var(--accent)}.ns-step{flex:none;width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10.5px;font-weight:700;background:var(--surface-sunken);color:var(--text-meta)}.step-btn.next .ns-step{background:var(--surface);color:var(--accent)}.step-btn.done .ns-step{display:none}@media (max-width: 420px){.ch-stats{gap:6px}.stat{padding:8px}.stat-v{font-size:16px}}.appnav .tabs{scrollbar-width:thin;scrollbar-color:var(--accent-soft) transparent}.followups{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.followups .label{margin:0}.followup{font:inherit;font-size:13.5px;text-align:left;cursor:pointer;color:var(--accent);max-width:100%;background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-input);padding:8px 14px}.followup:hover{border-color:var(--accent-soft);background:var(--surface-tint)}.figure-desc-preview{background:var(--surface-sunken);border-radius:var(--r-input);padding:10px 14px;font-size:14px}.figure-desc-preview .label{display:block;margin:0 0 4px}.figure-desc-preview .md>:last-child{margin-bottom:0}.anim-card h2{margin:0}.anim-player{display:flex;flex-direction:column;gap:10px;outline:none}.anim-player:focus-visible{box-shadow:0 0 0 2px var(--accent-soft);border-radius:var(--r-card)}.anim-canvas{overflow-x:auto;padding:14px 12px 10px;background:var(--surface-sunken);border-radius:var(--r-card)}.anim-stage{position:relative;margin:0 auto;min-width:100%}.anim-slot,.anim-tile,.anim-ptr,.anim-bucket{position:absolute;left:0;top:0}.anim-slot{width:52px;height:52px;border:1px dashed var(--border);border-radius:10px}.anim-index{position:absolute;left:0;right:0;top:56px;text-align:center;font-size:11px;color:var(--text-meta)}.anim-tile{height:44px;margin-top:4px;display:flex;align-items:center;justify-content:center;gap:0;background:var(--surface);border:1.5px solid var(--border);border-radius:10px;font-family:var(--mono);font-size:15px;transition:transform .45s cubic-bezier(.3,.7,.3,1),background-color .25s,border-color .25s,opacity .25s}.anim-slot+.anim-tile,.anim-tile{box-sizing:border-box}.anim-v{padding:0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.anim-node{justify-content:flex-start}.anim-node .anim-v{flex:1;text-align:center}.anim-next{width:20px;align-self:stretch;border-left:1.5px solid var(--border);position:relative}.anim-next:after{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--text-muted)}.anim-next.is-null:after{width:1.5px;height:70%;margin:0;top:15%;left:50%;border-radius:0;transform:rotate(35deg)}.anim-tile.is-gone{opacity:.38;border-style:dashed}.anim-tile.is-dummy{color:var(--text-meta);font-size:11px;background:var(--surface-sunken);border-style:dashed}.anim-tile.is-cur{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.anim-tile.is-cmp{border-color:var(--warn);background:var(--warn-bg)}.anim-tile.is-new{border-color:var(--ok);background:var(--ok-bg)}.anim-tile.is-del{border-color:var(--danger);background:var(--bad-bg);color:var(--bad-ink)}.anim-tile.is-found{border-color:var(--accent);background:var(--accent-lime);color:var(--on-lime)}.anim-tile.is-moved{border-color:var(--accent-soft);background:var(--surface-tint)}.anim-ptr{font-size:11px;color:var(--accent);white-space:nowrap;transition:transform .45s cubic-bezier(.3,.7,.3,1)}.anim-links{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}.anim-link{fill:none;stroke:var(--text-muted);stroke-width:1.5}.anim-arrowhead{fill:var(--text-muted)}.anim-bucket{height:44px;margin-top:0;display:flex;align-items:center;justify-content:center;font-size:12px;border:1.5px solid var(--border);border-radius:10px;background:var(--surface);transition:background-color .25s}.anim-bucket.is-cur{border-color:var(--accent);background:var(--surface-tint)}.anim-say{margin:0;min-height:2.8em;font-size:14.5px}.anim-op{display:inline-block;margin-right:8px;padding:1px 8px;border-radius:var(--r-badge);background:var(--surface-tint);color:var(--accent);font-size:12px}.anim-controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.anim-scrub{flex:1;min-width:120px;accent-color:var(--accent)}.anim-count{color:var(--text-meta)}.anim-speeds{display:inline-flex;gap:4px}.anim-builder input:not([type]),.anim-builder select{font:inherit;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.anim-rows{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:6px}.anim-arg{width:7em}.anim-units{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.anim-unit{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-card);padding:14px 16px;display:flex;flex-direction:column;gap:10px}.anim-item{padding:8px 10px;background:var(--surface-sunken);border-radius:var(--r-input)}.anim-conv{display:inline-flex;flex-direction:column;gap:2px}.anim-conv select,.anim-conv input{font:inherit;font-size:13px;padding:4px 8px;border:1px solid var(--border);border-radius:8px}.anim-conv input{width:5em}.chip.is-suggested{border-style:dashed}@media (prefers-reduced-motion: reduce){.anim-tile,.anim-ptr,.anim-bucket{transition:none}}.anim-figures{display:flex;flex-wrap:wrap;gap:12px}.anim-figure{margin:0;flex:1 1 220px;max-width:360px;background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-input);padding:8px}.anim-figure img{display:block;max-width:100%;max-height:220px;margin:0 auto}.anim-figure figcaption{margin-top:4px;color:var(--text-meta);text-align:center}.anim-figure.wide{flex-basis:100%;max-width:none}.anim-figure.wide img{max-height:80vh;height:auto}.anim-scenarios{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.anim-scenario{border:1px solid var(--border-soft);border-radius:var(--r-input);padding:10px 12px;display:flex;flex-direction:column;gap:6px;background:var(--surface)}.anim-scenario p{margin:0}.anim-check{margin:0;padding-left:1.2em;color:var(--ok-text)}.anim-check.is-bad{color:var(--warn-text)}.anim-tile.anim-circle{border-radius:50%;height:42px;font-size:14px}.anim-tile.is-done{border-color:var(--ok);color:var(--ok-text);background:var(--ok-bg)}.anim-empty{padding:20px;text-align:center}.anim-circle{position:absolute}.anim-badge{position:absolute;top:-9px;right:-12px;font-family:var(--mono);font-size:10px;line-height:1;padding:2px 4px;border-radius:var(--r-badge);background:var(--surface-tint);color:var(--accent)}.anim-badge.is-bad{background:var(--bad-bg);color:var(--bad-ink)}.anim-graph{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}.anim-side{display:flex;flex-direction:column;gap:10px;min-width:160px}.anim-aux{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.anim-aux .mono{font-size:12px;padding:3px 8px;border-radius:var(--r-badge);background:var(--surface);border:1px solid var(--border-soft)}.anim-link.is-tree{stroke:var(--accent);stroke-width:3}.anim-link.is-new{stroke:var(--ok);stroke-width:3}.anim-link.is-cmp{stroke:var(--warn);stroke-dasharray:4 3}.anim-weight{font-family:var(--mono);font-size:12px;fill:var(--text-muted);text-anchor:middle;paint-order:stroke;stroke:var(--surface-sunken);stroke-width:4px}.anim-info{position:absolute;top:44px;left:50%;transform:translate(-50%);font-size:11px;color:var(--accent);white-space:nowrap}.anim-link.is-tree{stroke:var(--text);stroke-width:2.6;stroke-dasharray:none}.anim-link.is-sp{stroke:#d62828;stroke-width:3}.anim-link.is-forward{stroke:var(--text);stroke-dasharray:6 4}.anim-link.is-backward{stroke:#d62828;stroke-dasharray:6 4}.anim-link.is-cross{stroke:#2e8b57;stroke-dasharray:6 4}.anim-arrowhead.is-tree,.anim-arrowhead.is-forward{fill:var(--text)}.anim-arrowhead.is-sp,.anim-arrowhead.is-backward{fill:#d62828}.anim-arrowhead.is-cross{fill:#2e8b57}.anim-info.is-final{color:#d62828;font-weight:700}.anim-info.is-temp{color:#1d4ed8}.anim-search{margin-top:6px}.anim-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.anim-legend .swatch{display:inline-block;width:26px;height:0;border-top:2.5px solid var(--text);vertical-align:middle;margin-right:6px}.anim-legend .swatch.is-forward{border-top-style:dashed}.anim-legend .swatch.is-backward{border-top:2.5px dashed #d62828}.anim-legend .swatch.is-cross{border-top:2.5px dashed #2e8b57}.chat-figure-caption{margin-top:6px;font-size:13.5px;color:var(--text-muted)}.chat-figure-caption>b{color:var(--accent);margin-right:6px}.chat-figure-caption .md{margin-top:4px}.chat-figure-caption .md>:last-child{margin-bottom:0}.ch-section-hint{font-family:var(--font-body);font-size:12.5px;font-weight:400;color:var(--text-meta);margin-left:8px}.head-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}.builder{display:flex;flex-direction:column;gap:18px;margin-top:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:22px}.builder-grid{display:grid;grid-template-columns:92px 1fr;gap:14px 18px;align-items:start}.builder-label{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--text-meta);padding-top:8px}.builder-field{display:flex;flex-direction:column;gap:8px;min-width:0}.builder-hint{font-size:12px;color:var(--text-faint);margin:0}.chip-grid{display:flex;flex-wrap:wrap;gap:7px}.chip-grid .chip{border:0;background:var(--surface-sunken);padding:7px 14px;font-size:12.5px;display:inline-flex;align-items:center;gap:6px}.chip-grid .chip.on{background:var(--accent);color:#fff}.builder-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-top:1px solid var(--border-soft);padding-top:16px}.builder-match{font-family:var(--mono);font-size:11.5px;color:var(--text-meta)}.builder-match b{color:var(--text)}.builder-foot .btn-primary{margin-left:auto;background:var(--accent-lime);color:var(--on-lime);border-color:var(--accent-lime);font-weight:700}.builder-count{width:100px;padding:8px 12px;font:inherit;border:1px solid var(--border);border-radius:var(--r-input)}@media (max-width: 560px){.builder-grid{grid-template-columns:1fr;gap:6px}.builder-label{padding-top:4px}}.ex-card{gap:10px;cursor:default}.ch-card-btn{width:100%;text-align:left;background:transparent;color:var(--text);border:none;padding:0;display:flex;flex-direction:column;gap:8px;font:inherit;cursor:pointer}.ch-card-btn:disabled{cursor:not-allowed}.ex-title-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.ex-title-row .ch-title{font-size:17px}.ex-state{font-family:var(--mono);font-size:10.5px;font-weight:700;border-radius:var(--r-chip);padding:3px 9px}.ex-state.open{background:var(--accent-lime);color:var(--on-lime)}.ex-state.soon{background:var(--surface-tint);color:var(--accent)}.ex-state.done{background:var(--ok-bg);color:var(--ok-text)}.ex-state.closed{background:var(--surface-sunken);color:var(--text-faint)}.ex-meta{display:flex;flex-wrap:wrap;gap:14px;font-family:var(--mono);font-size:11.5px;color:var(--text-meta)}.ex-go{font-size:13px;font-weight:600;color:var(--accent)}.ex-admin{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--border-soft);padding-top:10px}.ch-card.ex-locked{opacity:.72}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:14px}.kpi{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-card);padding:16px 18px;display:flex;flex-direction:column;gap:4px}.kpi-label{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.08em;color:var(--text-meta)}.kpi-value{font-family:var(--font-display);font-size:28px;font-weight:700;color:var(--accent);line-height:1.2}.kpi-of{font-size:16px;font-weight:500;color:var(--text-meta)}.kpi-sub{font-size:12px;color:var(--text-muted)}.next-card{margin-top:16px;background:var(--accent);color:#e6f2ec;border-radius:var(--r-card);padding:18px 20px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.next-card .label{color:var(--accent-on)}.next-card p{margin:0;font-size:15px}.next-card b{color:#fff}.next-card .btn-primary{background:var(--accent-lime);color:var(--on-lime);border-color:var(--accent-lime);font-weight:700}.dash-sec{margin-top:26px}.dash-sec h2{font-size:16px;margin:0 0 12px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.dash-hint{font-size:12px;font-weight:400;color:var(--text-muted)}.dash-cal{display:flex;gap:3px;overflow-x:auto;padding:14px;background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-card)}.dash-cal-week{display:grid;gap:3px}.dash-cal-day{width:13px;height:13px;border-radius:3px;display:block;background:var(--border-soft)}.dash-cal-day.lv1{background:#cfe3c6}.dash-cal-day.lv2{background:#97c784}.dash-cal-day.lv3{background:var(--ok)}.dash-weak{display:flex;flex-direction:column;gap:8px}.dash-weak-row{display:flex;align-items:center;gap:12px}.dash-weak-name{flex:none;width:200px;font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-bar{flex:1;height:10px;background:var(--surface-sunken);border-radius:6px;overflow:hidden;display:block}.dash-bar-fill{height:100%;background:var(--accent);border-radius:6px;display:block}.dash-weak-pct{flex:none;width:52px;text-align:right;font-size:13px}.dash-chapter{margin-top:14px}.dash-chapter-title{font-size:14px;margin:0 0 6px;color:var(--text-muted)}.dash-units{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.dash-unit{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-input)}.dash-unit .tree-icon{width:28px;height:28px;flex:none}.dash-unit-name{flex:1;min-width:160px;font-size:14px}.dash-unit-score{font-size:12.5px;color:var(--text-meta);width:44px;text-align:right}@media (max-width: 560px){.dash-weak-name{width:120px}}.page-head{margin:4px 0 18px}.page-head h1{margin:0 0 6px}.page-head p{margin:0;color:var(--text-muted);font-size:14px;max-width:62em;line-height:1.6}.card>h2,.card>.row>h2,.card>.row.between>h2{font-size:17px;margin:0 0 8px}.card h3{font-size:15px}.card>.row.between>b:first-child{font-size:15px}.table th{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--text-meta);text-transform:none;background:var(--surface-sunken);border-bottom:1px solid var(--border)}.table th:first-child{border-top-left-radius:8px}.table th:last-child{border-top-right-radius:8px}.table tbody tr:hover td{background:var(--surface-tint)}.btn-ghost.is-on{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-ghost.is-on:hover:not(:disabled){background:var(--accent-soft)}.tab-body>.stack>.tabs:first-child,.tab-body>.stack>.order-chips:first-child{margin-top:0}.ox-row{display:flex;gap:12px;max-width:420px}.ox-btn{flex:1;background:var(--surface);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:var(--r-input);font-size:20px;font-weight:700;padding:14px}.ox-btn:hover:not(:disabled){border-color:var(--text-muted)}.ox-btn.sel{border-color:var(--accent);background:var(--surface-tint);color:var(--accent)}.mc-list{display:flex;flex-direction:column;gap:10px}.mc-opt{display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--r-input);padding:12px 15px;font-size:14px;line-height:1.5}.mc-opt:hover:not(:disabled){border-color:var(--text-muted)}.mc-opt.sel{border-color:var(--accent);background:var(--surface-tint)}.mc-label{flex:none;width:24px;height:24px;display:grid;place-items:center;border-radius:6px;background:var(--surface-sunken);font-weight:700;font-size:12px;color:var(--accent)}.mc-opt.sel .mc-label{background:var(--accent);color:#fff}.mc-text{flex:1;min-width:0}.waitbar{margin:6px 0 12px;max-width:420px}.waitbar-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.waitbar-label{font-size:13px;color:var(--text)}.waitbar-time{font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums}.waitbar-track{height:5px;margin-top:6px;border-radius:999px;background:var(--surface-sunken);border:1px solid var(--border);overflow:hidden}.waitbar-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .2s linear}.waitbar-fill.late{background:var(--warn-text)}.waitbar-sub{margin-top:5px;font-size:11.5px;color:var(--text-muted)}@media (prefers-reduced-motion: reduce){.waitbar-fill{transition:none}}@media (max-width: 560px){.waitbar{max-width:100%}}.pageref{position:relative;cursor:help;font-family:var(--mono);font-size:10.5px;font-weight:700;background:var(--accent-lime);color:var(--on-lime);border-radius:5px;padding:2px 6px;margin-left:3px;white-space:nowrap}.pageref:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.src-pop{display:block;position:absolute;bottom:calc(100% + 8px);left:0;z-index:40;width:max-content;max-width:min(440px,82vw);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 28px #0f172a29;padding:11px 13px;text-align:left;white-space:normal;font-family:var(--font-body);font-weight:400}.src-pop:after{content:"";position:absolute;top:100%;left:0;right:0;height:10px}.src-pop-head{display:block;font-size:11px;font-weight:700;color:var(--accent);margin-bottom:6px}.src-pop-body{display:block;max-height:280px;overflow-y:auto}.src-pop-body .md{font-size:12.5px;line-height:1.6;color:var(--text)}.src-pop-body .md>*:first-child{margin-top:0}.src-pop-body .md>*:last-child{margin-bottom:0}.src-pop-body .md pre{font-size:11.5px;padding:10px 12px}.tq-cards{display:flex;flex-direction:column;gap:10px;margin:6px 0 4px}.tq-label{font-size:12px;color:var(--text-muted);font-weight:600;margin-bottom:2px}.tq-card{display:flex;align-items:flex-start;gap:10px;text-align:left;cursor:pointer;width:100%;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--r-input);padding:12px 15px;font-size:14px;line-height:1.5}.tq-card:hover:not(:disabled){border-color:var(--accent);background:var(--surface-tint)}.tq-text{flex:1;min-width:0}.tq-depth{flex:none;font-size:11px;color:var(--text-faint);margin-top:2px}.tq-type{flex:none;font-size:11px;font-weight:600;border-radius:999px;padding:2px 9px;border:1px solid transparent;white-space:nowrap;margin-top:1px}.tq-type.t-concept{color:#1e40af;background:#dbeafe;border-color:#bfdbfe}.tq-type.t-trace{color:#92400e;background:#fef3c7;border-color:#fde68a}.tq-type.t-complex{color:#6b21a8;background:#f3e8ff;border-color:#e9d5ff}.tq-type.t-impl{color:#166534;background:#dcfce7;border-color:#bbf7d0}.tq-type.t-apply{color:#9f1239;background:#ffe4e6;border-color:#fecdd3}.answer-anim{margin-top:12px;border:1px solid var(--border);border-radius:var(--r-input);background:var(--surface);overflow:hidden}.answer-anim-head{display:flex;align-items:center;gap:10px;width:100%;text-align:left;cursor:pointer;background:var(--surface-tint);border:0;padding:10px 14px;font-size:13.5px;color:var(--text)}.answer-anim-head:hover{background:#dcefe5}.answer-anim-tag{flex:none;font-size:11px;font-weight:700;color:var(--on-lime);background:var(--accent-lime);border-radius:var(--r-chip);padding:2px 9px}.answer-anim-title{flex:1;min-width:0;font-weight:600}.answer-anim-go{flex:none;font-size:12.5px;font-weight:600;color:var(--accent)}.answer-anim-body{padding:12px 14px 14px}@media (max-width: 560px){.answer-anim-head{flex-wrap:wrap}.answer-anim-go{width:100%}}.predict{display:flex;flex-direction:column;gap:10px;border-top:1px dashed var(--border);padding-top:12px}.predict-head{margin:0;font-size:14px}.predict-label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);margin-bottom:4px}.predict-ask{margin:4px 0 0;font-weight:700}.predict-choices{display:flex;flex-direction:column;gap:10px}.predict-choice{display:flex;flex-direction:column;align-items:stretch;gap:6px;text-align:left;cursor:pointer;background:var(--surface);color:var(--text);border:1.5px solid var(--border);border-radius:var(--r-input);padding:8px}.predict-choice:hover:not(:disabled){border-color:var(--accent)}.predict-choice .anim-canvas{display:block;padding:8px}.predict-num{font-weight:700;font-size:13px;color:var(--accent)}.predict-choice.right{border-color:var(--ok);background:var(--ok-bg)}.predict-choice.right .predict-num{color:var(--ok-text)}.predict-choice.wrong{border-color:var(--danger);background:var(--bad-bg)}.predict-choice.wrong .predict-num{color:var(--danger)}.predict-choice.dim{opacity:.5}.predict-choice:disabled{cursor:default}.predict-after p{margin:0 0 6px}.predict-steps{margin:0 0 10px;padding-left:1.4em;font-size:13.5px;line-height:1.6}.predict-score{margin:0;font-size:15px}.ok-text{color:var(--ok-text)}.run-check{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:6px;font-size:13px}.run-check.ok{color:var(--ok-text)}.run-check.bad{color:var(--danger);font-weight:600}.run-check code{font-weight:700}
