:root{--bg:#f7f3ec;--surface:#fff;--surface-2:#f2ece2;--border:#e1d7c7;--text:#2a2622;--muted:#6c6359;--accent:#b93d0b;--accent-ink:#fff;--accent-soft:#fbe6da;--good:#1d7548;--good-soft:#dff2e6;--bad:#b02236;--bad-soft:#fae2e5;--warn:#8a5a00;--warn-soft:#fbefcc;--info:#2b5c88;--info-soft:#e3eef8;--ticket:#fffdf8;--case:#2f3a56;--case-ink:#fff;--case-soft:#f1e6cc;--case-paper:#fbf5e6;--mono:ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#17151a;--surface:#211e25;--surface-2:#2b2731;--border:#3b3542;--text:#ece7f0;--muted:#a69eae;--accent:#ff8f55;--accent-ink:#1d0e05;--accent-soft:#3c2519;--good:#63d49c;--good-soft:#16332a;--bad:#ff7d8d;--bad-soft:#3b1b22;--warn:#f3c45e;--warn-soft:#362c13;--info:#90c3f1;--info-soft:#1b2a3a;--ticket:#242128;--case:#a9b8e6;--case-ink:#141826;--case-soft:#2c2a22;--case-paper:#23211c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);color:var(--text);font-family:var(--sans);margin:0;line-height:1.45}h1,h2,h3,h4,p,pre{margin:0}code{font-family:var(--mono);background:var(--surface-2);border-radius:4px;padding:.05em .35em;font-size:.9em}a{color:var(--accent)}button,.button{font:inherit;cursor:pointer}.primary,.button.primary{background:var(--accent);color:var(--accent-ink);border:none;border-radius:8px;padding:.55rem 1.1rem;font-weight:700;text-decoration:none;display:inline-block}.primary:hover{filter:brightness(1.08)}.ghost{color:var(--text);border:1px solid var(--border);background:0 0;border-radius:8px;padding:.5rem .9rem}.ghost:hover{background:var(--surface-2)}.small{padding:.25rem .65rem;font-size:.85rem}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.eyebrow{font-family:var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.78rem}.calm{color:var(--muted);font-size:.875rem}.hub{max-width:860px;margin:0 auto;padding:32px 16px 72px}.hub h1{margin:6px 0 10px;font-size:clamp(2rem,6vw,2.8rem)}.lead{max-width:44em;font-size:1.1rem}.chapter{margin-top:36px}.chapter-title{align-items:center;gap:10px;font-size:1.35rem;display:flex}.chapter-title .num{background:var(--accent);width:1.7em;height:1.7em;color:var(--accent-ink);border-radius:50%;place-items:center;font-size:.85em;display:grid}.chapter-summary{color:var(--muted);margin:6px 0 12px}.levels{gap:8px;margin:0;padding:0;list-style:none;display:grid}.level-card{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 16px;text-decoration:none;display:grid}a.level-card:hover{border-color:var(--accent)}.level-card .num{font:700 .9rem var(--mono);color:var(--accent);min-width:2.2em}.level-card h3{font-size:1rem}.level-card .goal{color:var(--muted);font-size:.875rem}.level-card .status{color:var(--accent);white-space:nowrap;font-size:.85rem;font-weight:650}.level-card.complete .status{color:var(--good)}.level-card.challenge{border-style:dashed}.level-card.planned{opacity:.75;grid-template-columns:minmax(0,1fr) auto}.level-card.planned .status{color:var(--muted)}.about{background:var(--surface);border:1px solid var(--border);border-radius:10px;gap:8px;margin-top:40px;padding:18px 20px;display:grid}.about h2{font-size:1.1rem}.about .note{color:var(--muted);font-size:.875rem}.level{max-width:1200px;margin:0 auto;padding:20px 16px 72px}.loading{color:var(--muted);padding:48px 0}.level-head{margin-bottom:18px}.level-head .back{font-size:.9rem;text-decoration:none}.level-head .eyebrow{margin-top:10px}.level-head h1{margin-top:2px;font-size:clamp(1.5rem,4vw,2rem)}.level-head .status{vertical-align:middle;color:var(--good);background:var(--good-soft);border-radius:999px;padding:2px 9px;font-size:.8rem;font-weight:650;display:inline-block}.layout{flex-direction:column;gap:18px;display:flex}.work{display:contents}.story,.notes{order:0}.learn{order:1}.ticket{order:2}.database{order:3}.editor{order:4}.feedback{order:5}@media (width>=960px){.layout{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:start;gap:22px;display:grid}.work{flex-direction:column;gap:18px;display:flex}.database{max-height:calc(100vh - 32px);position:sticky;top:16px;overflow:auto}}.learn{background:var(--info-soft);border-left:4px solid var(--info);border-radius:8px;gap:8px;padding:14px 16px;display:grid}.learn .tag{font:700 .7rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--info)}.learn h2{font-size:1.15rem}.learn h2 code{background:0 0;padding:0;font-size:1em}.example{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px 12px;overflow-x:auto}.example code{background:0 0;padding:0;font-size:.9rem}.ticket{background:var(--ticket);border:1px solid var(--border);border-top:5px solid var(--accent);border-radius:10px;padding:16px;box-shadow:0 2px 10px #3c28140f}.who{align-items:center;gap:12px;display:flex}.avatar{background:var(--surface-2);border-radius:50%;place-items:center;width:44px;height:44px;font-size:1.6rem;display:grid}.who .name{font-weight:700}.who .role{color:var(--muted);font-size:.875rem}.request{margin:12px 0 14px;font-size:1.08rem}.wanted{border-top:2px dashed var(--border);gap:8px;padding-top:12px;display:grid}.wanted h3,.editor h2,.database h2{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:.75rem}.wanted .columns{flex-wrap:wrap;gap:6px;display:flex}.diff{gap:6px;display:grid}.diff h4{font:600 .8rem var(--mono);color:var(--muted)}.editor{gap:10px;display:grid}textarea.sql{resize:vertical;width:100%;min-height:4.6em;font:15px/1.5 var(--mono);color:var(--text);background:var(--surface);border:2px solid var(--border);border-radius:8px;padding:10px 12px}textarea.sql:focus{border-color:var(--accent);outline:none}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font:600 .8rem var(--mono);border:1px solid var(--border);background:var(--surface-2);min-width:2.2rem;color:var(--text);border-radius:999px;padding:.3rem .6rem}.chip:hover{border-color:var(--accent)}.chip.more{color:var(--muted);background:0 0;border-style:dashed}.chip.name{background:var(--surface);border-style:dashed}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.keys{color:var(--muted);font-size:.8rem}@media (pointer:coarse){.keys{display:none}}.hint{background:var(--warn-soft);border-radius:8px;justify-items:start;gap:8px;padding:10px 14px;display:grid}.feedback{gap:10px;display:grid}.feedback:empty{display:none}.feedback.pop{animation:.25s ease-out pop}@keyframes pop{0%{opacity:.3;transform:translateY(4px)}}.verdict{border-left:4px solid var(--info);background:var(--info-soft);border-radius:8px;padding:10px 14px;font-weight:550}.verdict.good{border-color:var(--good);background:var(--good-soft)}.verdict.bad{border-color:var(--bad);background:var(--bad-soft)}.verdict.tip{border-color:var(--warn);background:var(--warn-soft)}.note{padding:0 4px}.sqlite-says,.rolled-back,.count{color:var(--muted);font-size:.85rem}.echo{font:14px/1.5 var(--mono);background:var(--surface);border:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;padding:8px 12px}.echo mark{background:var(--bad-soft);color:var(--bad);border-bottom:2px solid var(--bad)}.solved{background:var(--surface);border:1px solid var(--good);border-radius:10px;gap:8px;padding:14px 16px;display:grid}.solved h3{font-size:1rem}.solved ul{gap:4px;margin:0;padding-left:1.2em;display:grid}.database{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-content:start;gap:8px;padding:14px;display:grid}.tabs{flex-wrap:wrap;gap:6px;display:flex}.tab{font:600 .85rem var(--mono);border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:6px;padding:.3rem .8rem}.tab.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.table-name{color:var(--muted);font-size:.85rem}.grid-wrap{border:1px solid var(--border);background:var(--surface);border-radius:8px;overflow-x:auto}table.data{border-collapse:collapse;width:100%;font:13.5px/1.4 var(--mono)}table.data th,table.data td{text-align:left;white-space:nowrap;border-bottom:1px solid var(--border);padding:6px 10px}table.data th{background:var(--surface-2);vertical-align:bottom;font-weight:650}table.data tbody tr:last-child td{border-bottom:none}table.data .mark{text-align:center;width:2em;padding-left:6px;padding-right:6px;font-weight:700}button.column{color:var(--text);font:inherit;text-align:left;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:1px;padding:0;font-weight:650;display:inline-flex}button.column:hover{color:var(--accent);text-decoration:underline}button.column .type{letter-spacing:.04em;color:var(--muted);font-size:.68rem;font-weight:500}.null{color:var(--muted);font-style:italic}tr.right .mark{color:var(--good)}tr.extra{background:var(--bad-soft)}tr.extra .mark,tr.removed .mark{color:var(--bad)}tr.missing{opacity:.55;font-style:italic}tr.added{background:var(--good-soft)}tr.added .mark{color:var(--good)}tr.removed{background:var(--bad-soft)}tr.removed td:not(.mark){color:var(--muted);text-decoration:line-through}tr.changed{background:var(--warn-soft)}tr.changed .mark{color:var(--warn)}td.changed-cell{font-weight:700}td.changed-cell del{color:var(--muted);font-weight:400}@media (prefers-reduced-motion:reduce){.feedback.pop{animation:none}}.case-lead{border-left:4px solid var(--case);margin-top:10px;padding-left:12px}.chapter.episode{background:var(--case-paper);border:1px solid var(--border);border-top:5px solid var(--case);border-radius:10px;padding:16px}.case-tag,.story .tag{font:700 .72rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--case)}.episode .chapter-title{margin-top:4px}.episode .level-card .num{color:var(--case)}.solved-tag{color:var(--good);font-weight:650}.story{background:var(--case-paper);border-left:4px solid var(--case);border-radius:8px;gap:8px;padding:14px 16px;display:grid}.story h2{font-size:1.15rem}.notes{background:var(--case-paper);border:1px solid var(--border);border-radius:8px;padding:10px 14px}.notes summary{cursor:pointer;color:var(--case);font-weight:650}.notes ol{gap:4px;margin:8px 0 0;padding-left:1.3em;display:grid}.ticket.case{border-top-color:var(--case);background:var(--case-paper)}.deduce .question{font-weight:650}.options{flex-wrap:wrap;gap:8px;display:flex}.option{font:600 .9rem var(--sans);border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:.45rem .85rem}.option:hover{border-color:var(--case)}.option[aria-pressed=true]{background:var(--case);border-color:var(--case);color:var(--case-ink)}.clue{background:var(--case-paper);border-left:4px solid var(--case);border-radius:6px;gap:4px;padding:8px 12px;display:grid}.ending{gap:6px;font-style:italic;display:grid}.sub{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:.75rem}table.data td.more{color:var(--muted);font-style:italic}.probes,.problems{gap:4px;margin:0;padding:0;list-style:none;display:grid}.problems li{text-indent:-1.2em;padding-left:1.2em}.problems li:before{content:"• ";color:var(--bad)}.probes li{align-items:baseline;gap:8px;display:flex}.probes .mark{flex:none;width:1em;font-weight:700}.probes li.right .mark{color:var(--good)}.probes li.wrong{color:var(--bad)}.plan{gap:6px;margin:0;padding:0;list-style:none;display:grid}.plan li{padding-left:calc(var(--depth,0) * 1.2em);gap:2px;display:grid}.plan code{overflow-wrap:anywhere;justify-self:start}.plan-words{color:var(--muted);font-size:.85rem}.cost{font-size:.9rem}.cost del{color:var(--muted)}.script-log{gap:6px;margin:0;padding-left:1.6em;display:grid}.script-log li{gap:2px;display:grid}.script-log code{overflow-wrap:anywhere;justify-self:start}.step-status{color:var(--good);font-size:.85rem}.script-log li.failed .step-status{color:var(--bad);font-weight:650}.step-failure{background:var(--bad-soft);border-radius:8px;gap:6px;padding:10px 14px;display:grid}
