:root{--bg: #f7f7f5;--surface: #ffffff;--surface-2: #f1f1ee;--border: #dcdcd6;--border-strong: #b9b9b1;--text: #1c1c1a;--text-muted: #6b6b64;--accent: #1b5e9c;--accent-soft: #e6eff8;--ok: #1f7a45;--ok-soft: #e3f3e9;--warn: #8a6100;--warn-soft: #fbf0d8;--bad: #a32b21;--bad-soft: #fbe6e3;--progress: #2a5fa8;--progress-soft: #e7edf8;--radius: 8px;--sidebar-w: 310px;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--graph-grid: #d7d7cf;--graph-axis: #6f6f68;--graph-curve-1: #1b5e9c;--graph-curve-2: #a3521b;--graph-curve-3: #1f7a45;--graph-curve-4: #7a1f6b;--graph-curve-5: #8a6100;--graph-given: #8a8a84;--graph-region: rgba(43, 108, 176, .2);--graph-pending: #c0392b}@media(prefers-color-scheme:dark){:root{--bg: #16171a;--surface: #1e2024;--surface-2: #24262b;--border: #34373d;--border-strong: #4a4e56;--text: #e8e8e6;--text-muted: #9b9ea6;--accent: #6fb0ec;--accent-soft: #1b2a3a;--ok: #63c98d;--ok-soft: #16301f;--warn: #e0b357;--warn-soft: #322709;--bad: #f08d81;--bad-soft: #351a17;--progress: #7fa8e6;--progress-soft: #1a2436;--graph-grid: #43474f;--graph-axis: #a9adb5;--graph-curve-1: #6fb0ec;--graph-curve-2: #e9a15f;--graph-curve-3: #63c98d;--graph-curve-4: #d98ccb;--graph-curve-5: #e0c266;--graph-given: #7f838b;--graph-region: rgba(111, 176, 236, .26);--graph-pending: #ff7a6b}}*{box-sizing:border-box}.ML__latex{font-size:1.12em;line-height:inherit}.blank-written{letter-spacing:.05em;color:var(--text-muted)}.blank-filled{padding:0 .15em;border-bottom:1px solid var(--border-strong)}.given-answer{margin-top:.5rem}.given-answer .part-meta{margin-right:.35rem}body{margin:0;background:var(--bg);color:var(--text);font:17px/1.6 var(--font)}.boot{padding:3rem;color:var(--text-muted)}button{font:inherit;cursor:pointer;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);padding:.45rem .9rem}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){filter:brightness(1.08)}button.link{background:none;border:none;padding:0;color:var(--accent);text-decoration:underline}input[type=text]{font:inherit;padding:.45rem .6rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);width:100%}input[type=text]:focus-visible,button:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.home{max-width:780px;margin:0 auto;padding:2.5rem 1.25rem 4rem}.home h1{font-size:1.8rem;margin:0 0 .25rem}.home .sub{color:var(--text-muted);margin:0 0 2rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.15rem;margin-bottom:.85rem;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.card h2{font-size:1.05rem;margin:0 0 .2rem}.card .meta{color:var(--text-muted);font-size:.9rem}.card .grow{flex:1 1 260px;min-width:0}.card .actions{display:flex;gap:.5rem}.card.locked{background:var(--surface-2);border-style:dashed}.card.locked h2{color:var(--text-muted)}.card.locked .meta.closed{color:var(--warn)}.closed-export{display:flex;flex-direction:column;gap:.35rem;align-items:flex-end}.closed-export .row{display:flex;gap:.5rem}.closed-export .hint{color:var(--text-muted);font-size:.8rem}.top-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 1rem}.identity-bar{display:flex;justify-content:flex-end;align-items:baseline;gap:.6rem;color:var(--text-muted);font-size:.85rem}.shell{display:flex;min-height:100vh;align-items:stretch}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar .top{padding:.85rem 1rem 0}.sidebar h2{font-size:1rem;margin:.9rem 0 .15rem}.sidebar .due{color:var(--text-muted);font-size:.85rem}.sidebar .score{font-size:.85rem;color:var(--text-muted);margin-top:.35rem}.sidebar nav{flex:1;overflow-y:auto;padding:.85rem .5rem}.sidebar .keypanel{border-top:1px solid var(--border);padding:.8rem 1rem 1rem}.problem-link{display:flex;gap:.6rem;align-items:flex-start;width:100%;text-align:left;background:none;border:1px solid transparent;padding:.5rem .55rem;border-radius:var(--radius);color:inherit}.problem-link:hover{background:var(--surface-2)}.problem-link[aria-current=true]{background:var(--accent-soft);border-color:var(--accent)}.problem-link .label{flex:1;min-width:0}.problem-link .title{display:block;font-size:.95rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.problem-link .pts{display:block;font-size:.82rem;color:var(--text-muted)}.badge{flex:0 0 auto;width:1.5rem;display:grid;place-items:center;font-size:1.15rem;line-height:1;margin-top:.05rem}.badge[data-state=none]{color:var(--text-muted)}.badge[data-state=progress]{color:var(--progress)}.badge[data-state=correct]{color:var(--ok)}.badge[data-state=partial]{color:var(--warn)}.badge[data-state=wrong]{color:var(--bad)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.main-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.85rem 1.5rem;border-bottom:1px solid var(--border)}.who{text-align:right;font-size:.85rem;line-height:1.35}.who .name{font-weight:600}.who .email{color:var(--text-muted);font-size:.8rem}.who button{font-size:.75rem;padding:0}.content{padding:1.5rem;max-width:820px}.problem-nav{display:flex;justify-content:space-between;gap:.75rem;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--border)}.banner{border-radius:var(--radius);padding:.6rem .85rem;margin-bottom:1rem;font-size:.9rem;border:1px solid}.banner.late{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.banner.info{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.banner.preview{background:var(--warn-soft);border-color:var(--warn);color:var(--text)}.meta.preview-note{color:var(--warn)}.problem-head h1{font-size:1.4rem;margin:0 0 .3rem}.problem-head .pts{color:var(--text-muted);font-size:.9rem}.problem-prompt{margin:.75rem 0 1.25rem}.part{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;margin-bottom:.9rem}.part.resolved{background:var(--surface-2)}.part-head{display:flex;gap:.6rem;align-items:baseline;justify-content:space-between;margin-bottom:.6rem}.part-label{font-weight:600}.part-meta{color:var(--text-muted);font-size:.88rem}.part-prompt{margin-bottom:.75rem}.answer-row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.answer-row .cue{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap}math-field{display:inline-block;min-width:15rem;padding:.35rem .5rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:1em}math-field:focus-within{outline:2px solid var(--accent);outline-offset:1px}math-field.inline{min-width:9rem;font-size:1em;vertical-align:middle}math-field.inline::part(menu-toggle){display:none}.choice math-field.inert,.choice select.blank-select.inert{pointer-events:none}.choice-blanks .choice-sentence{display:inline}.choice-blanks label{display:inline;cursor:pointer}math-field[readonly]{background:var(--surface-2);opacity:.85}.choices{display:flex;flex-direction:column;gap:.4rem}.choice{display:flex;gap:.55rem;align-items:flex-start;padding:.4rem .5rem;border-radius:var(--radius);border:1px solid transparent}.choice:hover{background:var(--surface-2)}.choice input{margin-top:.25rem}.choice .feedback{display:block;font-size:.85rem;color:var(--warn)}.blank-select,.blank-field{display:inline-block;vertical-align:baseline}select.blank-select{font:inherit;padding:.15rem .3rem;border-radius:5px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}[data-blank-correct=true]{border-color:var(--ok);background:var(--ok-soft)}[data-blank-correct=false]{border-color:var(--bad)}.blank-combo{display:inline-block;position:relative;vertical-align:baseline}.blank-combo-button{font:inherit;padding:.1rem .4rem;border-radius:5px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;min-width:3.5rem}.blank-combo-button:after{content:"▾";color:var(--text-muted);font-size:.8em;margin-left:auto}.blank-combo-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.blank-combo-button[disabled]{background:var(--surface-2);opacity:.85;cursor:default}.blank-combo-empty{color:var(--text-muted)}.blank-combo-list{position:absolute;z-index:30;left:0;top:calc(100% + 3px);margin:0;padding:.2rem;list-style:none;min-width:100%;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 6px 18px #0000002e;max-height:15rem;overflow-y:auto}.blank-combo-list li{padding:.35rem .6rem;border-radius:4px;cursor:pointer;white-space:nowrap;display:flex;align-items:center;min-height:1.9rem}.blank-combo-list li.active{background:var(--surface-2)}.blank-combo-list li[aria-selected=true]{background:var(--accent-soft)}.blank-combo[data-blank-correct=true] .blank-combo-button{border-color:var(--ok);background:var(--ok-soft)}.blank-combo[data-blank-correct=false] .blank-combo-button{border-color:var(--bad)}.choice .blank-combo.inert{pointer-events:none}.feedback-box{margin-top:.75rem;padding:.6rem .8rem;border-radius:var(--radius);font-size:.9rem;border:1px solid}.feedback-box[data-kind=correct]{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}.feedback-box[data-kind=wrong_form]{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.feedback-box[data-kind=incorrect]{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.feedback-box[data-kind=malformed]{background:var(--surface-2);border-color:var(--border-strong);color:var(--text-muted)}.feedback-box[data-kind=warning]{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.solution{margin-top:.75rem;padding:.7rem .85rem;background:var(--accent-soft);border-radius:var(--radius);font-size:.93rem}.solution h4{margin:0 0 .3rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em}.hint-offer{margin-top:.6rem}.hint-toggle{font-size:.88rem}.hint-box{margin-top:.5rem;padding:.6rem .85rem;border-left:3px solid var(--warn);background:var(--warn-soft);border-radius:var(--radius);font-size:.93rem;color:var(--text)}.locked-note{color:var(--text-muted);font-size:.85rem;font-style:italic}.summary-line{display:flex;gap:.6rem;align-items:baseline}.summary-line .given{font-family:ui-monospace,monospace;font-size:.85rem}.keypanel h3{font-size:.8rem;margin:0 0 .4rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.keypanel .row{display:flex;gap:.4rem}.keypanel .row+.row{margin-top:.5rem}.keypanel .row button{flex:1;font-size:.8rem;padding:.35rem}.keypanel .hint{font-size:.75rem;color:var(--text-muted);margin-top:.4rem}.modal-backdrop{position:fixed;inset:0;background:#00000080;display:grid;place-items:center;padding:1.25rem;z-index:50}.modal{background:var(--surface);border-radius:12px;padding:1.5rem;max-width:32rem;width:100%;border:1px solid var(--border);max-height:90vh;overflow-y:auto}.modal.modal-graph{max-width:none;width:auto}.modal h2{margin:0 0 .75rem;font-size:1.15rem}.modal p{margin:0 0 .75rem}.modal .field{margin-bottom:.85rem}.modal label{display:block;font-size:.85rem;margin-bottom:.25rem;font-weight:600}.modal .with-suffix{display:flex;align-items:center;gap:.4rem}.modal .with-suffix .suffix{color:var(--text-muted);white-space:nowrap}.modal .note{font-size:.82rem;color:var(--text-muted)}.modal .error{font-size:.85rem;color:var(--bad);margin-top:.35rem}.modal .modal-actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1.1rem}.modal textarea{font:13px/1.4 ui-monospace,monospace;width:100%;min-height:7rem;padding:.5rem;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);resize:vertical;word-break:break-all}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}textarea.paste-key{min-height:3.5rem}.results td button.link{font-size:1.1rem;line-height:1;padding:0 .25rem;color:var(--text-muted);text-decoration:none}.results td button.link:hover{color:var(--bad)}.summary table{width:100%;border-collapse:collapse;margin:1rem 0}.summary th,.summary td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--border);font-size:.9rem}.summary th{color:var(--text-muted);font-weight:600;font-size:.8rem}.summary td.num,.summary th.num{text-align:right;font-variant-numeric:tabular-nums}.summary .total td{font-weight:700;border-top:2px solid var(--border-strong);border-bottom:none}.summary .keybox{margin-top:1.5rem}.scroll-x{overflow-x:auto}@media(max-width:900px){.shell{flex-direction:column}.sidebar{width:100%;flex:none;height:auto;position:static;border-right:none;border-bottom:1px solid var(--border)}.sidebar nav{max-height:15rem}.content{padding:1rem}.main-head{padding:.7rem 1rem}}.graph-editor{margin-bottom:.75rem}.graph-toolbar{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.6rem}.tool-group{display:flex;flex-wrap:wrap;gap:.35rem}.graph-toolbar button{font-size:.88rem;padding:.3rem .6rem}.graph-toolbar button.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.tool-group.modifier{padding-top:.5rem;border-top:1px dashed var(--border)}.tool-group.modifier button.toggle{border-style:dashed}.tool-group.bounds{padding-top:.5rem;border-top:1px dashed var(--border)}.tool-group.bounds button[disabled]{opacity:.5}.tool-group.history{gap:.5rem}.tool-group.history button.wide{flex:1 1 0;min-width:6rem}.tool-group.history button.danger{border-color:var(--bad);color:var(--bad);background:var(--bad-soft);font-weight:600}.graph-canvas.preview{max-width:100%;margin-top:.4rem}.given-answer.with-graph{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem}.given-answer .graph-words{color:var(--text-muted);font-size:.88rem}.graph-canvas{display:block;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);max-width:100%;touch-action:manipulation;cursor:crosshair}.graph-canvas:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.graph-status{font-size:.88rem;color:var(--text-muted);margin:.45rem 0 .6rem;min-height:1.3em}.graph-objects{display:flex;flex-direction:column;gap:.3rem}.graph-object{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.9rem;padding:.3rem .5rem;background:var(--surface-2);border-radius:var(--radius)}.graph-object .desc{flex:1;min-width:12rem}.graph-object button{font-size:.8rem;padding:.2rem .5rem}.graph-object.clause{margin-left:1.5rem;font-size:.85rem;background:transparent;border-left:2px solid var(--border-strong);border-radius:0;padding-top:.15rem;padding-bottom:.15rem;color:var(--text-muted)}.graph-entry{margin:.6rem 0 .8rem;padding:.7rem .8rem;background:var(--surface-2);border-radius:var(--radius)}.coord-heading{font-size:.88rem;color:var(--text-muted);margin-bottom:.45rem}.coord-fields{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.55rem}.coord-point{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.coord-label{font-size:.88rem;min-width:12rem;font-weight:600}.coord-pair{display:inline-flex;align-items:center;gap:.25rem}.coord-pair input[type=text]{width:5rem;padding:.25rem .4rem;text-align:center}.coord-keys{display:none;gap:.4rem;margin-bottom:.55rem}.coord-keys button{min-width:2.75rem;font-size:1.1rem;padding:.3rem .6rem}@media(pointer:coarse){.coord-keys{display:flex}}.grader{max-width:1100px}.grader .panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.15rem;margin-bottom:1rem}.grader .panel h2{font-size:1.05rem;margin:0 0 .75rem}.grader label{display:block;font-weight:600;font-size:.9rem;margin:.6rem 0 .25rem}.grader select,.grader input[type=file]{font:inherit;max-width:32rem}.grader select{padding:.4rem .5rem;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}.grader textarea{font:13px/1.4 ui-monospace,monospace;width:100%;min-height:6rem;padding:.5rem;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);resize:vertical;word-break:break-all}.grader .row{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.75rem}.grader .stack{display:block;padding:.5rem 0 0}.grader details summary{cursor:pointer;font-size:.9rem;margin-top:.9rem}.summary-chips{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.9rem}.chip{font-size:.85rem;padding:.2rem .6rem;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2)}.chip[data-kind=ok]{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}.chip[data-kind=error]{border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}.chip[data-kind=warning]{border-color:var(--warn);color:var(--warn);background:var(--warn-soft)}.chip[data-kind=zero]{border-color:var(--text-muted);color:var(--text-muted)}table.results{width:100%;border-collapse:collapse;font-size:.9rem;table-layout:fixed}table.results col.student{width:22%}table.results col.email{width:9.5rem}table.results col.score{width:5rem}table.results col.notes{width:auto}table.results col.zero{width:3.5rem}table.results col.remove{width:2.5rem}table.results td.mono,table.results td:first-child{overflow-wrap:anywhere}table.results th,table.results td{text-align:left;padding:.5rem .55rem;border-bottom:1px solid var(--border);vertical-align:top}table.results th{font-size:.8rem;color:var(--text-muted)}table.results td.num,table.results th.num{text-align:right;font-variant-numeric:tabular-nums}table.results td.mono{font-family:ui-monospace,monospace;font-size:.85rem}table.results td.struck{text-decoration:line-through;color:var(--text-muted)}table.results tr[data-level=error]{background:var(--bad-soft)}table.results tr[data-level=warning]{background:var(--warn-soft)}.flag{font-size:.85rem;margin-bottom:.2rem}.flag[data-level=error]{color:var(--bad)}.flag[data-level=warning]{color:var(--warn)}.flag[data-level=info]{color:var(--text-muted)}.graph-object.given{opacity:.75;border-left:3px solid var(--border-strong)}.stale-note{flex:1 1 100%;font-size:.88rem;color:var(--warn);background:var(--warn-soft);border:1px solid var(--warn);border-radius:var(--radius);padding:.5rem .7rem}.stale-note button.link{color:inherit}.submitting-as{margin-top:1rem;padding:.6rem .75rem;border-radius:6px;background:var(--surface-2)}.submitting-as button.link{font:inherit}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:.5rem .9rem;background:var(--accent);color:#fff;border-radius:0 0 var(--radius) 0;text-decoration:none;font-weight:600}.skip-link:focus{left:0}#problem-content:focus-visible,.part:focus-visible,.problem-head h1:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:var(--radius)}.progress-line{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-muted);margin-top:.35rem}.progress-bar{flex:0 0 5.5rem;height:.45rem;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);overflow:hidden}.progress-fill{display:block;height:100%;background:var(--accent)}.main-head .head-problem h1{font-size:1.3rem;margin:0}.main-head .head-problem .pts{color:var(--text-muted);font-size:.9rem}.history{margin-top:.6rem}.history-list{list-style:none;margin:.4rem 0 0;padding:0;display:flex;flex-direction:column;gap:.25rem}.history-list li{display:flex;gap:.5rem;align-items:baseline;font-size:.9rem;padding:.3rem .5rem;border-radius:var(--radius);background:var(--surface-2)}.history-list .attempt-no{color:var(--text-muted);min-width:1.4rem}.history-list .attempt-body{flex:1;min-width:0;overflow-wrap:anywhere}.history-list li[data-correct=true]{background:var(--ok-soft)}.history-list li[data-correct=true] .attempt-mark{color:var(--ok)}.history-list li[data-correct=false] .attempt-mark{color:var(--bad)}.history-generation{margin-top:.6rem;font-size:.88rem;color:var(--text-muted);display:flex;gap:.4rem;align-items:baseline;flex-wrap:wrap}.given-answer.carried .part-meta{font-style:italic}.reseed-offer{margin:1rem 0;padding:.9rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.reseed-offer .reseed-head{margin:0 0 .2rem;font-weight:600}.reseed-offer .reseed-detail{margin:0 0 .6rem;color:var(--text-muted);font-size:.9rem}.graph-figure{margin:.75rem 0 1rem}.graph-canvas.figure{max-width:100%;cursor:default}.graph-canvas.figure.zoomable{cursor:zoom-in}.graph-figure .figure-caption{display:flex;align-items:baseline;gap:.75rem;font-size:.88rem;color:var(--text-muted);margin-top:.35rem;max-width:360px}.graph-figure .figure-text{flex:1;min-width:0}.graph-figure .figure-zoom{flex:none;font:inherit;white-space:nowrap}.graph-figure.large{margin:0}.graph-figure.large .figure-caption{max-width:none}.math-semantic{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.math{position:relative}.table-scroll{overflow-x:auto;margin:.75rem 0}table.prompt-table{border-collapse:collapse;font-size:.95em}table.prompt-table th,table.prompt-table td{border:1px solid var(--border);padding:.35rem .7rem;text-align:left}table.prompt-table th{background:var(--surface-2);font-weight:600}.choice.choice-graph{align-items:flex-start}.choice-graph .choice-body{display:flex;flex-direction:column;gap:.2rem}.choice-graph .choice-name{font-weight:600;font-size:.9rem}.choice-graph .graph-figure{margin:0}.choices:has(.choice-graph){flex-direction:row;flex-wrap:wrap;gap:.75rem}.keydetail .panel h2{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}.keydetail .panel h2 .chip{font-weight:400}.kv{display:grid;grid-template-columns:max-content 1fr;gap:.3rem 1.25rem;margin:0;font-size:.92rem}.kv dt{color:var(--text-muted);font-weight:600}.kv dd{margin:0;overflow-wrap:anywhere}.kv .mono,table.detail .mono{font-family:ui-monospace,monospace;font-size:.85rem}.kv .muted,table.detail .muted{color:var(--text-muted)}table.detail{width:100%;border-collapse:collapse;font-size:.88rem}table.detail th,table.detail td{text-align:left;vertical-align:top;padding:.4rem .5rem;border-bottom:1px solid var(--border)}table.detail th{font-size:.78rem;color:var(--text-muted);white-space:nowrap}table.detail thead th{position:sticky;top:0;z-index:1;background:var(--surface);border-bottom:0;box-shadow:inset 0 -1px 0 var(--border)}.keydetail .scroll-x{overflow:visible}@media(max-width:900px){.keydetail .scroll-x{overflow-x:auto}}table.detail td.num,table.detail th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.detail tr[data-tone=bad]{background:var(--bad-soft)}table.detail tr[data-tone=warn]{background:var(--warn-soft)}table.detail tr[data-bar=ok] td:first-child{box-shadow:inset 3px 0 0 var(--ok)}table.detail tr[data-bar=warn] td:first-child{box-shadow:inset 3px 0 0 var(--warn)}table.detail tr[data-bar=bad] td:first-child{box-shadow:inset 3px 0 0 var(--bad)}table.detail thead th:first-child{box-shadow:inset 3px 0 0 var(--border-strong),inset 0 -1px 0 var(--border)}table.detail tr.total td{border-top:2px solid var(--border-strong);border-bottom:0}table.detail ol.attempts{margin:0;padding-left:1.2rem}table.detail ol.attempts li+li{margin-top:.2rem}table.detail .attempt-raw{font-family:ui-monospace,monospace;font-size:.78rem;color:var(--text-muted);overflow-wrap:anywhere}.keydetail pre.raw{font:12px/1.4 ui-monospace,monospace;background:var(--surface-2);padding:.75rem;border-radius:var(--radius);overflow-x:auto;margin:.5rem 0 0}.keydetail .flag{margin:.25rem 0}.keydetail .problem-block+.problem-block{margin-top:1rem}.keydetail .problem-block h3{font-size:.95rem;margin:0 0 .4rem}.mode-switch{display:flex;gap:.25rem}.mode-switch button{border-radius:999px;padding:.35rem .95rem;font-size:.9rem;background:transparent;border-color:transparent;color:var(--text-muted)}.mode-switch button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--text);font-weight:600}.mode-switch button:hover:not(.on){color:var(--text)}.practice-browse{padding-top:.5rem}.crumbs{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem;margin-bottom:1rem;font-size:.9rem;color:var(--text-muted)}.crumbs .sep{color:var(--border-strong)}.crumbs button.link{font-size:.9rem}.crumbs [aria-current=page]{color:var(--text);font-weight:600}.practice-all{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1.5rem}.practice-all .hint{color:var(--text-muted);font-size:.85rem}.card.practice-skill{padding:.7rem 1.15rem}.card.practice-skill h2{font-size:.98rem;margin:0;font-weight:500}.card.practice-node.blocked{background:var(--surface-2);border-style:dashed}.card.practice-node.blocked h2{color:var(--text-muted)}.card.practice-node.blocked .meta.closed{color:var(--warn)}.card.practice-node.blocked .actions .hint{color:var(--text-muted);font-size:.85rem}.practice-run{max-width:880px;margin:0 auto}.practice-head{display:flex;align-items:flex-start;gap:1rem;flex-wrap:wrap;padding:1.25rem 1.5rem .85rem;border-bottom:1px solid var(--border)}.practice-head .back{flex:0 0 auto;align-self:center}.practice-head .practice-title{flex:1 1 240px;min-width:0}.practice-head h1{font-size:1.25rem;margin:0}.practice-head .meta{color:var(--text-muted);font-size:.85rem;margin-top:.15rem}.practice-tally{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2;color:var(--text-muted);font-size:.8rem}.practice-tally strong{font-size:1.15rem;color:var(--text);font-weight:600}.practice-tally.empty{min-height:1px}.practice-next{display:flex;justify-content:flex-end;margin-top:1.75rem;padding-top:1rem;border-top:1px solid var(--border)}.reveal-offer{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.85rem}.reveal-offer .hint{color:var(--text-muted);font-size:.8rem}.reveal-solution{font-size:.88rem}
