:root{--paper:#fbf9f4;--paper-2:#f3efe5;--paper-3:#e9e3d5;--line:#d9d1bf;--ink:#23211d;--ink-2:#5e584d;--ink-3:#8d8576;--accent:#1f5fbf;--accent-soft:#dfe9f8;--ok:#1f8a4c;--ok-soft:#dcf1e4;--err:#c2372b;--err-soft:#fbe3df;--exec:#fff1a6;--exec-edge:#e9b800;--syn-kw:#1f5fbf;--syn-num:#b4580f;--syn-str:#2f7d46;--syn-comment:#9a9182;--syn-op:#8a3fb8;--syn-builtin:#b02a5b;--syn-def:#0e7a86;--grid-open:#fff;--grid-wall:#2b2925;--grid-hatch:#4a463f;--grid-goal:#a7a39b;--grid-line:#cfc7b5;--robot:#1f5fbf;--ui:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--r:10px;--shadow:0 1px 0 #23211d0a, 0 1px 3px #23211d0f}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--paper-2);color:var(--ink);font:14px/1.45 var(--ui);flex-direction:column;display:flex;overflow:hidden}button,select,input{font:inherit;color:inherit}[hidden]{display:none!important}code,.mono{font-family:var(--mono)}.btn{border:1px solid var(--line);background:var(--paper);height:32px;color:var(--ink);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:0 12px;font-weight:550;transition:background .12s,border-color .12s,transform 60ms;display:inline-flex}.btn:hover:not(:disabled){background:#fff;border-color:#c6bca6}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:default}.btn .ico{font-size:11px}.btn.primary{background:var(--ok);border-color:var(--ok);color:#fff;justify-content:center;min-width:108px}.btn.primary:hover:not(:disabled){background:#187a42;border-color:#187a42}.btn.danger:not(:disabled){color:var(--err)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--paper-3);border-color:#0000}.btn.tiny{height:24px;padding:0 8px;font-size:12px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.top{z-index:50;background:var(--paper);border-bottom:1px solid var(--line);align-items:center;gap:14px;height:56px;padding:0 14px;display:flex;position:relative}.brand{flex:none;align-items:center;gap:8px;display:flex}.brand .logo{width:22px;height:22px;fill:var(--accent)}.brand b{letter-spacing:-.01em;white-space:nowrap;font-size:15px}.file{border-left:1px solid var(--line);flex:0 auto;align-items:center;gap:8px;min-width:120px;padding-left:14px;display:flex}.file-btn{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;max-width:260px;height:32px;padding:0 8px;font-weight:600;display:inline-flex}.file-btn:hover,.file-btn[aria-expanded=true]{background:var(--paper-3)}.file-btn span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-btn svg{fill:none;width:15px;height:15px;stroke:var(--ink-2);stroke-width:1.4px;stroke-linejoin:round;flex:none}.file-btn .chev{stroke-width:1.8px;width:12px;height:12px}.save-state{color:var(--ink-3);white-space:nowrap;align-items:center;gap:4px;font-size:12px;display:inline-flex}.save-state[data-state=saved]:before{content:"✓";color:var(--ok);font-weight:700}.save-state[data-state=error]{color:var(--err);font-weight:600}.controls{flex:1 0 auto;justify-content:center;align-items:center;gap:4px;display:flex}.divider{background:var(--line);width:1px;height:22px;margin:0 4px}.btn svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:15px;height:15px}.btn svg .fill{fill:currentColor;stroke:none}.btn.icon{padding:0 10px}.speed{color:var(--ink-2);align-items:center;gap:6px;margin-left:10px;font-size:12px;display:inline-flex}.speed svg{fill:none;width:16px;height:16px;stroke:var(--ink-3);stroke-width:1.6px;stroke-linecap:round}.speed input{width:96px;accent-color:var(--accent)}.speed-lbl{width:62px;font-weight:600}.right{flex:none;align-items:center;gap:4px;display:flex}select{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:8px;max-width:170px;height:32px;padding:0 8px}.files-pop{z-index:60;background:var(--paper);border:1px solid var(--line);border-radius:12px;flex-direction:column;width:380px;max-height:min(520px,70vh);display:flex;position:absolute;top:52px;left:150px;box-shadow:0 14px 40px #23211d2e}.files-head{align-items:baseline;gap:8px;padding:12px 14px 6px;display:flex}.muted{color:var(--ink-3);font-size:12px}.files-actions{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;padding:4px 12px 10px;display:flex}.file-list{margin:0;padding:6px;list-style:none;overflow:auto}.file-list li{border-radius:8px;align-items:center;display:flex}.file-list li:hover{background:var(--paper-2)}.file-list li.on{background:var(--accent-soft)}.file-list .open{cursor:pointer;text-align:left;background:0 0;border:0;flex:1;justify-content:space-between;gap:10px;min-width:0;padding:8px 10px;display:flex}.file-list .nm{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.file-list .when{color:var(--ink-3);white-space:nowrap;font-size:12px}.file-list .del{color:var(--ink-3);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:6px;width:30px;height:30px}.file-list li:hover .del,.file-list .del:focus-visible{opacity:1}.file-list .del:hover{color:var(--err);background:var(--err-soft)}.toast{z-index:100;background:var(--ink);color:#fff;opacity:0;pointer-events:none;border-radius:10px;padding:10px 16px;font-size:13.5px;font-weight:500;transition:opacity .18s,transform .18s;position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);box-shadow:0 10px 30px #00000040}.toast.show{opacity:1;transform:translate(-50%)}@media (width<=1500px){.controls .btn.icon .lbl,.right .btn .lbl,.speed-lbl{display:none}}@media (width<=1180px){.save-state,.brand b{display:none}}.layout{flex:1;grid-template-columns:minmax(0,1fr) minmax(320px,400px);gap:12px;min-height:0;padding:12px;display:grid}.code-pane,.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}.code-pane{flex-direction:column;min-height:0;display:flex;overflow:hidden}.pane-head{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 10px;display:flex}.seg{background:var(--paper-3);border-radius:8px;padding:2px;display:inline-flex}.seg button{color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px 12px;font-size:13px;font-weight:550}.seg button.on{color:var(--ink);background:#fff;box-shadow:0 1px 2px #0000001a}.symbols{gap:4px;display:flex}.symbols.hide{visibility:hidden}.symbols button{border:1px solid var(--line);width:30px;height:28px;font:600 15px var(--mono);cursor:pointer;color:var(--syn-op);background:#fff;border-radius:6px}.symbols button:hover{border-color:var(--accent)}.pill{background:var(--paper-3);color:var(--ink-2);border-radius:999px;margin-left:auto;padding:3px 10px;font-size:12px;font-weight:600}.pill[data-state=running]{background:var(--ok-soft);color:var(--ok)}.pill[data-state=paused],.pill[data-state=input]{background:var(--exec);color:#7a5d00}.pill[data-state=error]{background:var(--err-soft);color:var(--err)}.pill[data-state=done]{background:var(--accent-soft);color:var(--accent)}.editors{flex:1;min-height:0;display:grid}.editors[data-view=text]{grid-template-columns:1fr}.editors[data-view=text] .ed-blocks{display:none}.editors[data-view=blocks]{grid-template-columns:1fr}.editors[data-view=blocks] .ed-text{display:none}.editors[data-view=split]{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}.editors[data-view=split] .ed-text{border-right:1px solid var(--line)}.ed-text,.ed-blocks{min-width:0;min-height:0;position:relative}.ed-text{overflow:hidden}.ed-blocks{flex-direction:column;display:flex}#blocks{flex:1;min-height:0}.blocks-banner{z-index:30;background:var(--exec);border:1px solid var(--exec-edge);color:#6b5100;max-width:80%;box-shadow:var(--shadow);border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:550;position:absolute;top:10px;left:50%;transform:translate(-50%)}.problem{background:var(--err-soft);color:var(--err);border-top:1px solid #f0c4bd;padding:8px 12px;font-size:13px;font-weight:550}.cm-editor{background:var(--paper);height:100%;font-size:14.5px}.cm-editor.cm-focused{outline:none}.cm-scroller{line-height:1.6;font-family:var(--mono)!important}.cm-content{caret-color:var(--accent);padding:10px 0}.cm-gutters{background:var(--paper-2);border-right:1px solid var(--line);color:var(--ink-3)}.cm-lineNumbers .cm-gutterElement{cursor:pointer;min-width:32px;padding:0 8px 0 4px}.cm-lineNumbers .cm-gutterElement:hover{color:var(--err)}.cm-bp-gutter{cursor:pointer;width:18px}.cm-bp-gutter .cm-gutterElement{justify-content:center;align-items:center;display:flex}.bp-dot{background:var(--err);border-radius:50%;width:10px;height:10px;margin-top:6px;box-shadow:0 0 0 2px #fff}.cm-activeLine{background:#1f5fbf0b}.cm-activeLineGutter{background:#1f5fbf14}.cm-exec{box-shadow:inset 3px 0 0 var(--exec-edge);background:var(--exec)!important}.cm-exec-error{box-shadow:inset 3px 0 0 var(--err);background:var(--err-soft)!important}.cm-tooltip{font-family:var(--ui);border-radius:8px;border-color:var(--line)!important}.cm-tooltip-autocomplete ul li[aria-selected]{background:var(--accent)!important}.cm-diagnostic-error{border-left-color:var(--err)}.blocklyToolboxDiv{border-right:1px solid var(--line);padding-top:6px!important}.blocklyTreeRow{border-radius:0 6px 6px 0;height:28px!important;margin-bottom:2px!important;line-height:28px!important}.blocklyTreeLabel{font-weight:550;font-family:var(--ui)!important;font-size:13px!important}.blocklyMainBackground{stroke:none!important}.side{flex-direction:column;gap:12px;min-height:0;display:flex}.card{flex-direction:column;min-height:0;display:flex;overflow:hidden}.card h2{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);border-bottom:1px solid var(--line);align-items:center;gap:8px;margin:0;padding:8px 12px;font-size:12px;display:flex}.card h2 .spacer{flex:1}.card h2 .opt{text-transform:none;letter-spacing:0;align-items:center;gap:4px;font-size:12px;font-weight:500;display:flex}.robot-card{flex:none}.state-card{flex:1 1 0;min-height:150px}.console-card{flex:1 1 0;min-height:140px}.tabs{border-bottom:1px solid var(--line);gap:2px;padding:6px 8px 0;display:flex}.tabs button{color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:6px 10px;font-size:12.5px;font-weight:600}.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.tab-body{flex:1;min-height:0;padding:8px 12px 12px;overflow:auto}.empty{color:var(--ink-3);margin:6px 0;font-size:13px}.scope+.scope{margin-top:10px}.scope-name{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin:4px 0;font-size:11px;font-weight:700}.var{font-family:var(--mono);border-radius:6px;align-items:flex-start;gap:10px;padding:5px 6px;font-size:13px;display:flex}.var .vname{min-width:64px;color:var(--ink);font-weight:700}.vval{word-break:break-all}.num{color:var(--syn-num)}.str{color:var(--syn-str)}.bool{color:var(--syn-op)}.vlist{flex-wrap:wrap;gap:3px;display:flex}.cell{border:1px solid var(--line);background:#fff;border-radius:5px;flex-direction:column;align-items:center;min-width:30px;padding:2px 6px 3px;display:inline-flex;position:relative}.cell i{color:var(--ink-3);font-size:9.5px;font-style:normal;line-height:1.1}.cell.list{color:var(--ink-2)}.cell.nil{color:var(--ink-3);font-style:italic}.var.changed,.cell.changed{animation:.9s ease-out flash}@keyframes flash{0%{background:var(--exec)}to{background:0 0}}.cell.changed{animation-name:flashcell}@keyframes flashcell{0%{background:var(--exec);border-color:var(--exec-edge)}to{background:#fff}}.frame{font-family:var(--mono);border-radius:6px;justify-content:space-between;padding:6px 8px;font-size:13px;display:flex}.frame+.frame{border-top:1px dashed var(--line);border-radius:0}.frame.top{background:var(--exec)}.frame .ln{color:var(--ink-3)}.fn+.fn{margin-top:12px}.fn-head{color:var(--ink-2);margin-bottom:4px;font-size:12px;font-weight:700}.op{border-radius:4px;grid-template-columns:34px 98px 1fr 28px;gap:6px;padding:1px 4px;font-size:12px;display:grid}.op .pc,.op .ln{color:var(--ink-3);text-align:right}.op .nm{color:var(--syn-kw);font-weight:600}.op-STMT{border-top:1px dotted var(--line);margin-top:3px}.op-STMT .nm,.op-STMT .arg{color:var(--ink-3)}.op.cur{background:var(--exec)}.console{font-family:var(--mono);background:#fff;flex:1;padding:8px 12px;font-size:13.5px;overflow:auto}.console .ln{white-space:pre-wrap;word-break:break-word;min-height:1.4em}.console .echo{color:var(--accent)}.console .msg{font-family:var(--ui);border-radius:6px;margin:6px 0;padding:4px 8px;font-size:12.5px;font-weight:550}.console .msg.error{color:var(--err);background:var(--err-soft)}.console .msg.info{color:var(--ink-3);background:var(--paper-2)}.console .msg.ok{color:var(--ok);background:var(--ok-soft)}.console-in{align-items:center;gap:8px;margin-top:6px;display:flex}.console-in .prompt{color:var(--syn-builtin);font-size:12px;font-weight:700}.console-in input{border:1px solid var(--accent);height:30px;font-family:var(--mono);background:var(--accent-soft);border-radius:6px;flex:1;padding:0 8px}.robot{flex-direction:column;display:flex}.robot-bar{flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px 0;display:flex}.robot-bar select{max-width:120px;height:26px;font-size:12px}.robot-bar .seg button{padding:2px 8px;font-size:12px}.robot-bar .seg button.on{color:var(--ink);background:#fff;box-shadow:0 1px 2px #0000001a}.robot .sizer{font-size:12px;font-family:var(--mono);align-items:center;gap:2px;display:inline-flex}.robot .sizer button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:5px;width:20px;height:22px;padding:0}.robot .sizer .x{color:var(--ink-3);margin:0 2px}.robot canvas{cursor:crosshair;touch-action:none;width:100%;height:230px;display:block}.robot.locked canvas{cursor:default}.robot.locked .robot-bar{opacity:.5;pointer-events:none}.robot-status{color:var(--ink-3);min-height:8px;padding:0 12px 8px;font-size:11.5px}.ref{border:1px solid var(--line);background:var(--paper);width:min(820px,92vw);max-height:86vh;color:var(--ink);border-radius:14px;padding:18px 24px 24px;box-shadow:0 20px 60px #00000040}.ref::backdrop{background:#23211d59}.ref h2{margin:0 0 8px;font-size:18px}.ref h3{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:18px 0 6px;font-size:12px}.ref table{border-collapse:collapse;width:100%;font-size:13.5px}.ref td{border-top:1px solid var(--paper-3);vertical-align:top;padding:6px 8px}.ref td:first-child{width:44%;font-family:var(--mono);font-size:13px}.ref td code{background:0 0}.ref .close{float:right;position:sticky;top:0}.ref ul{padding-left:18px;font-size:13.5px}@media (width<=900px){body{overflow:auto}.top{flex-wrap:wrap;row-gap:8px;height:auto;padding:8px 10px}.controls{flex-basis:100%;order:3;justify-content:flex-start}.layout{grid-template-columns:1fr}.code-pane{min-height:80vh}.editors[data-view=split]{grid-template-rows:minmax(220px,1fr) minmax(320px,1.2fr);grid-template-columns:1fr}.editors[data-view=split] .ed-text{border-right:0;border-bottom:1px solid var(--line)}.state-card,.console-card{min-height:260px}.files-pop{width:auto;top:50px;left:10px;right:10px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.share-dlg{border:1px solid var(--line);background:var(--paper);width:min(560px,92vw);color:var(--ink);border-radius:14px;padding:20px 22px;box-shadow:0 20px 60px #00000040}.share-dlg::backdrop,.ref::backdrop{background:#23211d59}.share-dlg h2{margin:0 0 6px;font-size:17px}.share-dlg p{margin:0 0 14px;line-height:1.5}.share-row{gap:8px;margin-bottom:12px;display:flex}.share-row input{border:1px solid var(--line);min-width:0;height:32px;font:12.5px var(--mono);background:#fff;border-radius:8px;flex:1;padding:0 10px}.share-dlg form{justify-content:flex-end;display:flex}.file .rename{border:1px solid var(--accent);background:#fff;border-radius:5px;width:200px;height:24px;padding:0 6px;font-weight:600}.console .hint{font-family:var(--ui);color:var(--ink-3);font-size:13px;line-height:1.6}#blocks .blocklyHighlighted>.blocklyPath{filter:drop-shadow(0 0 5px #f2b705e6);stroke:#f2b705!important;stroke-width:4px!important}#blocks.run-error .blocklyHighlighted>.blocklyPath{filter:drop-shadow(0 0 5px #c2372bcc);stroke:var(--err)!important}.switch{color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:6px;font-size:12.5px;font-weight:550;display:inline-flex}.switch input{opacity:0;width:0;height:0;position:absolute}.switch .track{background:var(--paper-3);border:1px solid var(--line);border-radius:99px;flex:none;width:28px;height:16px;transition:background .15s;position:relative}.switch .track:after{content:"";background:#fff;border-radius:50%;width:12px;height:12px;transition:transform .15s;position:absolute;top:1px;left:1px;box-shadow:0 1px 2px #00000040}.switch input:checked+.track{background:var(--accent);border-color:var(--accent)}.switch input:checked+.track:after{transform:translate(12px)}.switch input:focus-visible+.track{outline:2px solid var(--accent);outline-offset:2px}.pane-head .switch{margin-left:4px}.practice-badge{color:#6d33b0;white-space:nowrap;background:#efe4fb;border-radius:99px;padding:3px 9px;font-size:11.5px;font-weight:700}.cm-inline{pointer-events:none;align-items:center;gap:6px;margin-left:18px;font-size:12px;display:inline-flex}.cm-inline-v{color:#6d5b16;background:#fff6cf;border:1px solid #f0e2a0;border-radius:4px;padding:0 6px}.cm-inline-c{border-radius:4px;padding:0 6px;font-weight:600}.cm-inline-c.true{color:var(--ok);background:var(--ok-soft)}.cm-inline-c.false{color:var(--err);background:var(--err-soft)}.cm-inline-n{color:var(--ink-3);font-weight:600}.trace-body{flex-direction:column;padding:0;display:flex}.trace-bar{border-bottom:1px solid var(--paper-3);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px 6px;display:flex}.trace-bar .grow{flex:1}.trace-inputs{color:var(--syn-builtin);align-items:center;gap:4px;font-size:12px;font-weight:600;display:inline-flex}.trace-inputs input{border:1px solid var(--line);width:90px;height:24px;font:12px var(--mono);background:#fff;border-radius:5px;padding:0 6px}.trace-note{color:var(--ink-2);padding:6px 12px;font-size:12.5px;line-height:1.45}.trace-note:empty{display:none}.trace-note .ok,.score.ok{color:var(--ok)}.trace-note .bad{color:var(--err);font-weight:600}.trace-table{flex:1;min-height:0;padding:0 8px 10px;overflow:auto}.trace-table table,.runs,.freq{border-collapse:collapse;width:100%;font-size:12.5px}.trace-table th,.runs th,.freq th{z-index:1;background:var(--paper);text-align:left;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);white-space:nowrap;padding:6px;font-size:11px;font-weight:700;position:sticky;top:0}.trace-table th.vcol{text-transform:none;font:700 12.5px var(--mono);color:var(--ink);letter-spacing:0}.trace-table th small{font:500 10px var(--ui);color:var(--ink-3);display:block}.trace-table td,.runs td,.freq td{border-bottom:1px solid var(--paper-3);vertical-align:middle;padding:4px 6px}.trace-table td.n,.runs td.n,.freq td.n{color:var(--ink-3);text-align:right;font-size:11.5px}.trace-table td.code{font:12px var(--mono);color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;max-width:220px;overflow:hidden}.trace-table td.val{font:600 12.5px var(--mono);color:var(--syn-num);white-space:nowrap}.trace-table td.cond.true{color:var(--ok)}.trace-table td.cond.false{color:var(--err)}.trace-table td.out{font:12.5px var(--mono);white-space:nowrap}.trace-table tr.cur td{background:var(--exec)}.trace-table tr.err td{background:var(--err-soft)}.trace-table td.blank{white-space:nowrap;font:12px var(--mono);color:var(--accent)}.trace-table td.blank input,.runs input{width:72px;height:24px;font:600 12.5px var(--mono);color:var(--ink);background:#fff;border:1px dashed #b9ae96;border-radius:5px;padding:0 6px}.trace-table td.blank input:focus,.runs input:focus{border-style:solid;border-color:var(--accent);background:var(--accent-soft);outline:none}.trace-table td.blank input.right{border:1px solid var(--ok);background:var(--ok-soft)}.trace-table td.blank input.wrong{border:1px solid var(--err);background:var(--err-soft)}.runs-help{margin:2px 0 8px;font-size:12.5px}.runs input{width:100%;min-width:70px}.runs td.res{font:12.5px var(--mono)}.run-out{white-space:pre-wrap;word-break:break-word}.run-out.bad{color:var(--err);font-family:var(--ui);font-weight:550}.badge{font:600 11px var(--ui);border-radius:99px;margin-top:3px;padding:1px 7px;display:inline-block}.badge.pass{color:var(--ok);background:var(--ok-soft)}.badge.fail{color:var(--err);background:var(--err-soft)}.icon-x{color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:5px;width:24px;height:24px}.icon-x:hover{color:var(--err);background:var(--err-soft)}.runs-bar{align-items:center;gap:6px;margin:8px 0;font-size:12.5px;display:flex}.runs-bar input[type=number]{border:1px solid var(--line);width:70px;height:24px;font:12.5px var(--mono);border-radius:5px;padding:0 6px}.score{color:var(--err);font-size:12.5px;font-weight:700}.repeat{border-top:1px solid var(--line);margin-top:14px;padding-top:10px}.repeat-head{font-size:13px}.freq td.mono{font-family:var(--mono);word-break:break-all}.freq td.bar{width:40%}.freq td.bar span{background:var(--accent);opacity:.75;border-radius:3px;min-width:2px;height:10px;display:block}.freq small{color:var(--ink-3)}.btn.tiny.primary{min-width:0}.tabs{overflow-x:auto}body.wide-side .layout{grid-template-columns:minmax(0,1fr) minmax(400px,48%)}.trace-table td.code{max-width:170px}.tracing-btn{color:#6d33b0;background:#f6f0fd;border-color:#d9c7f3}.tracing-btn:hover:not(:disabled){background:#efe4fb;border-color:#c4a8ec}body.tracing-on .top,body.tracing-on .layout,body.tracing-on .files-pop{display:none!important}.tracing{z-index:80;background:var(--paper-2);flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.tr-top{background:var(--paper);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:14px;height:56px;padding:0 16px;display:flex}.tr-title{flex-direction:column;line-height:1.2;display:flex}.tr-title b{font-size:15px}.tr-title .muted{font-size:11.5px}.grow{flex:1}.tr-progress{flex:1;justify-content:center;align-items:center;gap:10px;display:flex}.dots{gap:5px;display:flex}.dot{background:var(--paper-3);border:1px solid var(--line);border-radius:50%;width:10px;height:10px}.dot.cur{background:var(--exec);border-color:var(--exec-edge);box-shadow:0 0 0 3px #f2b70540}.dot.ok{background:var(--ok);border-color:var(--ok)}.dot.bad{background:var(--err);border-color:var(--err)}.clock{font:600 14px var(--mono);color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line);text-align:center;border-radius:8px;min-width:64px;padding:3px 10px}.clock.over{color:#a06a00;background:var(--exec);border-color:var(--exec-edge)}.chip{background:var(--paper-3);color:var(--ink-2);white-space:nowrap;border-radius:99px;padding:2px 9px;font-size:11.5px;font-weight:700}.tr-body{flex:1;padding:18px;overflow:auto}.tr-card{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;padding:16px 18px}.tr-card h3{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);align-items:baseline;gap:8px;margin:0 0 10px;font-size:13px;display:flex}.tr-card h3 .muted{text-transform:none;letter-spacing:0;font-weight:500}.lv-basic{--lv:#2f8f5b}.lv-easy{--lv:#3c9aa3}.lv-medium{--lv:#3f7cc4}.lv-hard{--lv:#8a5cc2}.lv-extra{--lv:#c94f6d}.lv-advanced{--lv:#d97a29}.lv-challenging{--lv:#23211d}.chip[class*=lv-]{background:color-mix(in srgb, var(--lv) 14%, white);color:var(--lv)}.tr-intro{text-align:center;max-width:860px;margin:8px auto 20px}.tr-intro h1{letter-spacing:-.02em;margin:0 0 8px;font-size:28px}.tr-intro p{color:var(--ink-2);max-width:680px;margin:0 auto;font-size:15px;line-height:1.55}.resume{background:var(--exec);border:1px solid var(--exec-edge);border-radius:10px;align-items:center;gap:10px;margin:16px auto 0;padding:8px 12px;font-size:14px;display:inline-flex}.lv-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;max-width:1100px;margin:0 auto;display:grid}.lv-card{text-align:left;border:1px solid var(--line);background:var(--paper);cursor:pointer;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;align-items:flex-start;gap:6px;padding:16px 16px 14px;transition:transform .12s,box-shadow .12s,border-color .12s;display:flex;position:relative;overflow:hidden}.lv-card:before{content:"";background:var(--lv);height:5px;position:absolute;inset:0 0 auto}.lv-card:hover{border-color:color-mix(in srgb, var(--lv) 40%, var(--line));transform:translateY(-2px);box-shadow:0 8px 22px #23211d1f}.lv-num{font:700 12px var(--mono);color:var(--lv)}.lv-name{letter-spacing:-.01em;font-size:19px;font-weight:750}.lv-topics{color:var(--ink-2);min-height:36px;font-size:13px;line-height:1.4}.lv-meta{color:var(--ink-3);font-size:11.5px}.lv-stats{border-top:1px dashed var(--line);width:100%;color:var(--ink-2);justify-content:space-between;margin-top:6px;padding-top:8px;font-size:12px;display:flex}.stars{color:#e0a800;letter-spacing:1px}.tr-q{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:16px;max-width:1240px;margin:0 auto;display:grid}.tr-feedback{flex-direction:column;grid-column:1/-1;gap:16px;display:flex}.q-head{align-items:center;gap:10px;margin-bottom:8px;display:flex}.stem{margin:6px 0 12px;font-size:16px;font-weight:600;line-height:1.45}.exam-code{font:14.5px/1.65 var(--mono);border:1px solid var(--line);-webkit-user-select:none;user-select:none;background:#fff;border-radius:10px;margin-bottom:14px;padding:12px 0;overflow-x:auto}.exam-code.small{margin:0 0 8px;padding:8px 0;font-size:12.5px}.exam-code .cl{white-space:pre;display:flex}.exam-code .ln{text-align:right;width:38px;color:var(--ink-3);flex:none;padding-right:14px;font-size:12px}.t-kw{color:var(--syn-kw);font-weight:700}.t-num{color:var(--syn-num)}.t-str{color:var(--syn-str)}.t-op{color:var(--syn-op);font-weight:700}.t-atom{color:var(--syn-num);font-weight:600}.t-builtin{color:var(--syn-builtin);font-weight:600}.choices{gap:8px;display:grid}.choice{border:1.5px solid var(--line);cursor:pointer;text-align:left;background:#fff;border-radius:10px;align-items:center;gap:12px;padding:10px 12px;transition:border-color .1s,background .1s;display:flex}.choice:hover{border-color:#b9ae96}.choice code{font-size:14.5px}.choice .letter{border:1.5px solid var(--line);width:26px;height:26px;color:var(--ink-2);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:700;display:grid}.choice.sel{border-color:var(--accent);background:var(--accent-soft)}.choice.sel .letter{background:var(--accent);border-color:var(--accent);color:#fff}.choice.right{border-color:var(--ok);background:var(--ok-soft)}.choice.right .letter{background:var(--ok);border-color:var(--ok);color:#fff}.choice.wrong{border-color:var(--err);background:var(--err-soft)}.choice.wrong .letter{background:var(--err);border-color:var(--err);color:#fff}.choice.dim{opacity:.55;cursor:default}.typed{color:var(--ink-2);flex-direction:column;gap:6px;font-size:13px;display:flex}.typed input{border:1.5px solid var(--line);height:40px;font:600 15px var(--mono);background:#fff;border-radius:10px;padding:0 12px}.typed input:focus{border-color:var(--accent);outline:none}.typed.ok input{border-color:var(--ok);background:var(--ok-soft)}.typed.bad input{border-color:var(--err);background:var(--err-soft)}.key{margin-top:8px;font-size:14px}.q-actions{align-items:center;gap:10px;margin-top:14px;display:flex}.link{color:var(--ink-3);cursor:pointer;background:0 0;border:0;padding:4px;font-size:12.5px;text-decoration:underline}.link:hover{color:var(--err)}.hint-box{color:#5f4f12;background:#fff8dc;border:1px solid #f0e2a0;border-radius:8px;flex-basis:100%;padding:8px 12px;font-size:13px;line-height:1.5}.q-actions:has(.hint-box){flex-wrap:wrap}.left-note{background:var(--paper-2);color:var(--ink-2);border:1px dashed var(--line);border-radius:8px;margin-top:12px;padding:8px 12px;font-size:13px}.feedback{border-radius:12px;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 18px;font-size:15px;line-height:1.5;display:flex}.feedback.ok{background:var(--ok-soft);border:1px solid #b7e2c7}.feedback.bad{background:var(--err-soft);border:1px solid #f0c4bd}.scratch-wrap{margin-bottom:8px;overflow-x:auto}.scratch{border-collapse:collapse;width:100%}.scratch th{font:700 12.5px var(--mono);text-align:left;border-bottom:2px solid var(--ink);white-space:nowrap;padding:6px 4px}.scratch th:first-child,.scratch th:last-child{font:700 11px var(--ui);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3)}.scratch td{border-bottom:1px solid var(--paper-3);padding:2px}.scratch td+td{border-left:1px solid var(--paper-3)}.scratch input{width:100%;min-width:46px;height:30px;font:600 13.5px var(--mono);background:0 0;border:0;border-radius:4px;padding:0 6px}.scratch td:first-child input{width:46px;color:var(--ink-3)}.scratch input:focus{background:var(--accent-soft);outline:none}.tip{margin:8px 0 0;font-size:12px}.sol{border-collapse:collapse;min-width:50%;font-size:12.5px}.sol-card{overflow-x:auto}.sol td,.sol th{padding-right:18px!important}.sol th{text-align:left;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);white-space:nowrap;padding:6px;font-size:11px}.sol th.vcol{text-transform:none;font:700 12.5px var(--mono);color:var(--ink)}.sol th small{font:500 10px var(--ui);color:var(--ink-3);display:block}.sol td{border-bottom:1px solid var(--paper-3);padding:4px 6px}.sol td.n{color:var(--ink-3);text-align:right}.sol td.code{font:12px var(--mono);color:var(--ink-2);white-space:nowrap}.sol td.val,.sol td.out{font:600 12.5px var(--mono);color:var(--syn-num);white-space:nowrap}.sol td.out{color:var(--ink)}.sol td.cond.true{color:var(--ok)}.sol td.cond.false{color:var(--err)}.results{align-items:center;gap:28px;max-width:900px;margin:0 auto 16px;display:flex}.results+.tr-card{max-width:900px;margin:0 auto}.score-big{letter-spacing:-.04em;font-size:64px;font-weight:800;line-height:1}.score-big span{color:var(--ink-3);font-size:26px;font-weight:600}.score-big.ok{color:var(--ok)}.score-big.bad{color:var(--err)}.results h2{margin:0 0 4px}.results p{margin:4px 0}.row{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.rev{border-top:1px solid var(--paper-3)}.rev summary{cursor:pointer;align-items:center;gap:10px;padding:10px 4px;font-weight:600;display:flex}.rev .mark{color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;display:grid}.rev.ok .mark{background:var(--ok)}.rev.bad .mark{background:var(--err)}.rev-body{padding:0 4px 12px 36px}.peek-dlg{border:1px solid var(--line);background:var(--paper);width:min(480px,92vw);color:var(--ink);border-radius:14px;padding:20px 22px;box-shadow:0 20px 60px #00000040}.peek-dlg::backdrop{background:#23211d66}.peek-dlg h2{margin:0 0 8px;font-size:18px}.peek-dlg p{line-height:1.5}@media (width<=900px){.tr-q{grid-template-columns:1fr}.tr-title .muted,.tr-progress .dots{display:none}.results{flex-direction:column;align-items:flex-start}}
