: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}
