:root,:root[data-theme=dark]{color-scheme:dark;--bg:#16181d;--panel:#1c1f26;--panel-2:#22262f;--line:#2f3440;--line-strong:#3d4657;--text:#dfe3ea;--text-soft:#a8b6c9;--muted:#8a93a3;--muted-2:#8a93a1;--accent:#4db07a;--accent-hover:#58c088;--accent-dim:#2f6d4d;--accent-dim-hover:#37805b;--on-accent:#08131a;--on-accent-dim:#eaf6ef;--danger:#e06b62;--danger-text:#f4b9b3;--danger-border:#e06b6266;--warn:#d4a34a;--warn-soft:#d4a34a26;--warn-border:#d4a34a66;--attn:#cf9f6a;--attn-soft:#cf9f6a24;--syn-key:#7fb3e8;--syn-string:#cf9f6a;--syn-number:#b48ce0;--syn-bool:#4db07a;--syn-date:#6fb6a8;--shadow:#0000004d;--glass-line:#ffffff21}:root[data-theme=light]{color-scheme:light;--bg:#f6f8fa;--panel:#fff;--panel-2:#eef1f5;--line:#d8dee6;--line-strong:#b6c0cd;--text:#1b1f27;--text-soft:#47515f;--muted:#5f6977;--muted-2:#61697a;--accent:#10794c;--accent-hover:#0c6640;--accent-dim:#10794c;--accent-dim-hover:#0c6640;--on-accent:#fff;--on-accent-dim:#fff;--danger:#b4322a;--danger-text:#8c2019;--danger-border:#b4322a59;--warn:#8a6100;--warn-soft:#8a61001f;--warn-border:#8a610052;--attn:#9a5518;--attn-soft:#9a55181a;--syn-key:#1a5fd0;--syn-string:#9a4600;--syn-number:#7134d0;--syn-bool:#10794c;--syn-date:#0f6e66;--shadow:#10182829;--glass-line:#0000001a}:root{--mono:ui-monospace, "Cascadia Mono", Consolas, "Courier New", monospace;--sans:system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--bg);color:var(--text);font:14px/1.5 var(--sans);margin:0}body.app{flex-direction:column;height:100vh;display:flex;position:relative}@supports (height:100dvh){body.app{height:100dvh}}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:14px;padding:10px 16px;display:flex}.brand{letter-spacing:.3px;color:var(--text);font-weight:600;text-decoration:none}.brand span{color:var(--accent)}.field{align-items:center;gap:7px;display:flex}.field>span{color:var(--muted);font-size:12px}select,input[type=text]{background:var(--panel-2);color:var(--text);border:1px solid var(--line);font:inherit;border-radius:6px;min-width:150px;padding:5px 8px}button{border:1px solid var(--line);font:inherit;cursor:pointer;background:var(--panel-2);color:var(--text);border-radius:6px;padding:6px 12px}button:hover:not(:disabled){border-color:var(--line-strong)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent-dim);border-color:var(--accent-dim);color:var(--on-accent-dim)}button.primary:hover:not(:disabled){background:var(--accent-dim-hover);border-color:var(--accent-dim-hover)}button.ghost{color:var(--muted);background:0 0}button.ghost:hover{color:var(--text)}kbd{font:11px var(--mono);background:var(--shadow);border:1px solid var(--glass-line);border-radius:3px;padding:0 3px}.spacer{flex:1}.status{color:var(--muted);align-items:center;gap:7px;font-size:12px;display:flex}.status i{background:var(--warn);border-radius:50%;width:8px;height:8px}.status.ok i{background:var(--accent)}.status.bad i{background:var(--danger)}.layout{background:var(--line);flex:1;grid-template-columns:250px minmax(420px,1fr) 400px;gap:1px;min-height:0;display:grid}.pane{background:var(--bg);min-width:0;padding:14px;overflow:auto}.pane h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px;font-size:11px;font-weight:600}.sidebar h2:not(:first-child){margin-top:20px}.muted{color:var(--muted)}.collections{margin:0;padding:0;list-style:none}.collections li{cursor:pointer;font-family:var(--mono);border-radius:5px;justify-content:space-between;gap:8px;padding:6px 8px;font-size:13px;display:flex}.collections li:hover{background:var(--panel-2)}.collections li.active{background:var(--panel-2);color:var(--accent)}.collections li.muted{cursor:default;font-family:inherit}.collections li.muted:hover{background:0 0}.collections .n{color:var(--muted);font-size:12px}.sample{font-family:var(--mono);white-space:pre;background:var(--panel);border:1px solid var(--line);border-radius:6px;max-height:45vh;margin:0;padding:10px;font-size:11.5px;line-height:1.45;overflow-x:auto}.editor-pane{flex-direction:column;gap:10px;display:flex;overflow:hidden;container-type:inline-size}@container (width<=520px){.toolbar{flex-wrap:wrap;gap:7px}.toolbar .spacer{flex-basis:100%;height:0}}.toolbar{flex:none;align-items:center;gap:10px;display:flex}.check{color:var(--muted);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:flex}.editor-label{color:var(--muted);font-size:12px;font-family:var(--mono)}.query-box{background:var(--panel);min-height:150px;color:var(--text);border:1px solid var(--line);border-radius:8px;flex:0 0 34%;overflow:hidden}textarea.query-box{resize:vertical;font-family:var(--mono);tab-size:2;padding:12px;font-size:13px;line-height:1.55}textarea.query-box:focus,.query-box.cm-focused{border-color:var(--accent-dim);outline:none}.query-box .cm-scroller{font-family:var(--mono);font-size:13px;line-height:1.55;overflow:auto}.query-box .cm-content{padding:12px}.cm-host .cm-line{padding:0}.cm-host .cm-content{caret-color:var(--accent)}.cm-host .cm-matchingBracket{background:var(--panel-2);outline:1px solid var(--line-strong);color:inherit}.cm-host .cm-nonmatchingBracket{color:var(--danger)}.cm-host .cm-placeholder{color:var(--muted)}.cm-tooltip.cm-tooltip-autocomplete{background:var(--panel-2);border:1px solid var(--line-strong);box-shadow:0 6px 18px var(--shadow);border-radius:6px;overflow:visible}.cm-tooltip-autocomplete>ul{font-family:var(--mono);border-radius:5px;max-height:15em;font-size:12px}.cm-tooltip-autocomplete>ul>li{color:var(--text);align-items:baseline;gap:10px;padding:4px 9px;display:flex}.cm-tooltip.cm-tooltip-autocomplete>ul>li[aria-selected]{background:var(--accent-dim);color:var(--on-accent-dim)}.cm-tooltip-autocomplete .cm-completionDetail{color:var(--muted);margin-left:auto;font-family:inherit;font-size:10px;font-style:normal}.cm-tooltip.cm-tooltip-autocomplete>ul>li[aria-selected] .cm-completionDetail{color:var(--on-accent-dim)}.cm-tooltip-autocomplete .cm-completionMatchedText{color:var(--accent);font-weight:700;text-decoration:none}.cm-tooltip.cm-tooltip-autocomplete>ul>li[aria-selected] .cm-completionMatchedText{color:var(--on-accent-dim)}.cm-tooltip.cm-completionInfo{font-family:var(--sans);color:var(--text-soft);background:var(--panel-2);border:1px solid var(--line-strong);box-shadow:0 6px 18px var(--shadow);border-radius:6px;padding:8px 10px;font-size:12px;line-height:1.5}.cm-tooltip.cm-completionInfo code{font-family:var(--mono);color:var(--text);background:var(--panel);border-radius:3px;padding:1px 4px;font-size:11px}.results{flex-direction:column;flex:1;gap:6px;min-height:0;display:flex}.result-meta{font-size:12px;font-family:var(--mono);flex:none}.result-meta .err{color:var(--danger)}.result-meta .ok{color:var(--accent)}.result-hint{border:1px solid var(--line);background:var(--panel);max-width:46rem;color:var(--text-soft);border-radius:7px;flex:none;padding:12px 14px;font-size:12.5px;line-height:1.55}.result-hint p{margin:0 0 7px}.result-hint p:last-child{margin-bottom:0}.result-hint~.result-body{display:none}.result-hint strong{color:var(--text)}.result-hint a{color:var(--accent)}.result-body{background:var(--panel);border:1px solid var(--line);min-height:0;font-family:var(--mono);white-space:pre;border-radius:8px;flex:1;margin:0;padding:12px;font-size:12.5px;line-height:1.5;overflow:auto}.json-view .k{color:var(--syn-key)}.json-view .s{color:var(--syn-string)}.json-view .num{color:var(--syn-number)}.json-view .b{color:var(--syn-bool)}.json-view .d{color:var(--syn-date)}.ex-head{justify-content:space-between;align-items:baseline;display:flex}.progress{color:var(--muted);font-size:12px;font-family:var(--mono)}.ex-filters{flex-wrap:wrap;gap:5px;margin:11px 0 13px;display:flex}.fchip{font-family:var(--mono);border:1px solid var(--line);background:var(--panel);color:var(--text-soft);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:11.5px;display:inline-flex}.fchip:hover{border-color:var(--line-strong);color:var(--text)}.fchip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.fcount{color:var(--muted-2);font-size:10px}.fchip[aria-pressed=true] .fcount{color:var(--on-accent);opacity:.8}.app-fine{color:var(--muted-2);text-align:center;margin:20px 2px 0;font-size:11px;line-height:1.5}.track-head{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);margin:18px 0 8px;padding-bottom:5px;font-size:11px}.track-head:first-child{margin-top:2px}.ex-module{margin-bottom:10px}.ex-module>h4{color:var(--text);align-items:baseline;gap:8px;margin:10px 0 5px;font-size:12px;font-weight:600;display:flex}.ex-module>h4 .count{font-family:var(--mono);color:var(--muted);margin-left:auto;font-size:10px}.ex-module>h4 .count.all{color:var(--accent)}.ex{border:1px solid var(--line);background:var(--panel);border-radius:7px;margin-bottom:6px;overflow:hidden}.ex.open{border-color:var(--line-strong)}.ex.pass{border-left:3px solid var(--accent)}.ex.fail{border-left:3px solid var(--danger)}.ex-title{cursor:pointer;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.ex-title:hover{background:var(--panel-2)}.ex-title .ex-name{min-width:0}.ex-title .diff{background:var(--muted);border-radius:50%;flex:none;width:7px;height:7px}.ex-title .diff.easy{background:var(--accent)}.ex-title .diff.medium{background:var(--warn)}.ex-title .diff.hard{background:var(--danger)}.ex-title .mark{margin-left:auto;font-size:12px}.ex-title .mark.pass{color:var(--accent)}.ex-title .mark.fail{color:var(--danger)}.ex-title .tag{background:var(--warn-soft);color:var(--warn);border-radius:3px;flex:none;padding:1px 5px;font-size:10px}.ex-body{border-top:1px solid var(--line);padding:0 10px 10px}.chips{flex-wrap:wrap;gap:4px;margin:9px 0 0;display:flex}.chip{font-size:10px;font-family:var(--mono);background:var(--panel-2);color:var(--muted);border-radius:9px;padding:2px 7px}.chip.easy{color:var(--accent)}.chip.medium{color:var(--warn)}.chip.hard{color:var(--danger)}.chip.order{color:var(--text-soft);font-family:inherit}.ex-prompt{white-space:pre-wrap;margin:10px 0;font-size:13px}.ex-prompt code{font-family:var(--mono);background:var(--panel-2);border-radius:3px;padding:1px 4px;font-size:12px}.lesson-link{color:var(--muted);border-bottom:1px dotted var(--line);margin:0 0 10px;font-size:12px;text-decoration:none;display:inline-block}.lesson-link:hover{color:var(--accent);border-bottom-color:var(--accent-dim)}.ex-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ex-note{color:var(--muted);font-size:11px;font-family:var(--mono);margin-top:8px}.ex-hint,.ex-solution{background:var(--panel-2);border-left:2px solid var(--warn);border-radius:6px;margin-top:9px;padding:8px 10px;font-size:12.5px}.ex-solution{border-left-color:var(--muted);font-family:var(--mono);white-space:pre-wrap;word-break:break-word;font-size:11.5px}.ex-gate{color:var(--text-soft);background:var(--panel-2);border-left:2px solid var(--muted);border-radius:6px;margin-top:9px;padding:8px 10px;font-size:12.5px;line-height:1.5}.ex-feedback{margin-top:9px;font-size:12.5px}.ex-feedback.pass{color:var(--accent)}.ex-feedback ul{margin:6px 0 0;padding-left:18px}.ex-feedback li{font-family:var(--mono);color:var(--text);margin-bottom:3px;font-size:11.5px}.ex-feedback .head{color:var(--danger)}.ex-feedback .more{color:var(--muted);margin-top:5px;font-size:11.5px;display:block}.ex-mistakes{background:var(--attn-soft);border-left:2px solid var(--attn);border-radius:6px;margin-top:9px;padding:8px 10px;font-size:12.5px}.ex-mistakes .head{letter-spacing:.06em;text-transform:uppercase;color:var(--attn);font-size:10.5px;display:block}.ex-mistakes ul{margin:5px 0 0;padding-left:16px}.ex-mistakes li{color:var(--text-soft);margin-bottom:4px;line-height:1.5}.ex-mistakes li:last-child{margin-bottom:0}.ex-mistakes code{font-family:var(--mono);color:var(--text);background:var(--panel-2);border-radius:3px;padding:1px 4px;font-size:11.5px}.toast{background:var(--panel-2);border:1px solid var(--line);opacity:0;pointer-events:none;z-index:50;border-radius:7px;padding:9px 16px;font-size:13px;transition:opacity .16s,transform .16s;position:fixed;bottom:18px;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.toast.bad{border-color:var(--danger);color:var(--danger-text)}@media (width<=1150px){.layout{grid-template-columns:200px 1fr 330px}}.tabbar{display:none}@media (width<=880px){.layout{grid-template-columns:1fr}.pane{display:none}.pane.on{display:block}.ex-filters{padding-inline:14px;flex-wrap:nowrap;margin-inline:-14px;padding-bottom:2px;scroll-padding-inline:14px;overflow-x:auto}.fchip{flex:none;padding:11px 14px;font-size:12px}.editor-pane.on{display:flex}.pane{padding-bottom:86px}.tabbar{z-index:40;background:var(--panel);border:1px solid var(--line);width:min(420px,100% - 24px);box-shadow:0 8px 26px var(--shadow), 0 2px 6px var(--shadow);border-radius:999px;gap:4px;padding:5px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.tabbar button{min-width:0;color:var(--text-soft);white-space:nowrap;background:0 0;border:0;border-radius:999px;flex:1 1 0;justify-content:center;align-items:center;gap:6px;padding:13px 4px;font-size:12px;font-weight:500;display:flex}.tabbar button svg{flex:none;width:15px;height:15px}.tabbar button[aria-pressed=true]{background:var(--accent);color:var(--on-accent);font-weight:600}.tab-count{color:var(--muted-2);font-size:10.5px;font-family:var(--mono)}.tabbar button[aria-pressed=true] .tab-count{color:var(--on-accent)}@media (width<=342px){.tab-count{display:none}}@keyframes tabbar-in{0%{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%)}}.tabbar{animation:.42s cubic-bezier(.2,.8,.25,1) .3s both tabbar-in}@media (prefers-reduced-motion:reduce){.tabbar{animation:none}}.topbar{gap:10px;padding:9px 12px}.status{font-size:11px}}@media (width<=560px){.editor-pane{--editor-h:40%}textarea.query-box,.query-box .cm-scroller{font-size:12.5px}.toolbar button{padding:8px 13px}}.soon{opacity:.55;white-space:nowrap;margin-right:14px;font-size:11px}.soon code{font-size:11px}@media (width<=1100px){.soon{display:none}}.pane-head{justify-content:space-between;align-items:baseline;display:flex}.linkish{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline}.linkish:hover{color:var(--text)}.schema{font-family:var(--mono);font-size:11.5px;line-height:1.7}.schema p{margin:0}.schema .row{cursor:pointer;white-space:nowrap;border-radius:4px;grid-template-columns:1fr auto;gap:8px;padding:0 4px;display:grid}.schema .row:hover{background:var(--panel)}.schema .row .nm{color:var(--text);text-overflow:ellipsis;overflow:hidden}.schema .row .ty{color:var(--muted);font-size:10.5px}.schema .row .opt{color:var(--attn);font-size:10px}.schema .row.d1{padding-left:16px}.schema .row.d2{padding-left:30px}.schema .row.arr .nm:after{content:"[]";color:var(--muted)}.dirty{color:var(--attn);align-items:center;gap:7px;font-size:11.5px;display:inline-flex}.dirty button{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;padding:2px 8px;font-size:11px}.dirty button:hover{background:var(--attn-soft)}.editor-pane{--editor-h:34%}.query-box{flex:0 0 var(--editor-h);resize:none}.splitter{cursor:row-resize;flex:0 0 9px;margin:-4px 0;position:relative}.splitter:after{content:"";background:var(--line);border-radius:2px;width:46px;height:3px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.splitter:hover:after,.splitter:focus-visible:after{background:var(--accent-dim)}.splitter:focus-visible{outline:none}body.dragging{cursor:row-resize;user-select:none}.results-head{flex:none;align-items:center;gap:10px;display:flex}.results-head .result-meta{flex:1}button.tiny{padding:2px 8px;font-size:10.5px}.theme-toggle{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:5px;display:inline-flex}.theme-toggle:hover{color:var(--text);border-color:var(--line);background:var(--panel-2)}.theme-toggle .i-sun{display:none}.theme-toggle .i-moon,:root[data-theme=light] .theme-toggle .i-sun{display:block}:root[data-theme=light] .theme-toggle .i-moon{display:none}
