:root{--bg:#f3f5ec;--surface:#fff;--surface-2:#eef1e4;--border:#d9dfc8;--text:#24291f;--muted:#5f6857;--accent:#b4500d;--accent-ink:#fff;--accent-soft:#fbe7d6;--good:#1d7548;--good-soft:#dff2e6;--bad:#b02236;--bad-soft:#fae2e5;--warn:#7f5600;--warn-soft:#fbefcc;--learn:#2b5c88;--learn-soft:#e3eef8;--grassland:#9fd07c;--grassland-edge:#86bd63;--soil:#a87650;--soil-furrow:#966443;--farm-frame:#6f8f4e;--drone:#2d3440;--drone-light:#f2f4f7;--miss:#d42b45;--plan-badge:#fff9;--code-bg:#fbfcf7;--line-active:#fff1bf;--line-error:#fde0e4;--tok-keyword:#a2357c;--tok-string:#2f7a2f;--tok-number:#b4500d;--tok-comment:#7b8572;--tok-function:#2b5c88;--tok-constant:#8a4d00;--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:#151813;--surface:#1e231b;--surface-2:#272d23;--border:#384031;--text:#e9eee2;--muted:#a3ad98;--accent:#ff9a4d;--accent-ink:#231103;--accent-soft:#3b2616;--good:#63d49c;--good-soft:#16332a;--bad:#ff7d8d;--bad-soft:#3b1b22;--warn:#f3c45e;--warn-soft:#362c13;--learn:#90c3f1;--learn-soft:#1b2a3a;--grassland:#4f7d3c;--grassland-edge:#456f34;--soil:#6e4a30;--soil-furrow:#5f3f28;--farm-frame:#2f4424;--drone:#e7ebf1;--drone-light:#2d3440;--miss:#ff6b81;--plan-badge:#00000073;--code-bg:#171b15;--line-active:#3a3418;--line-error:#42202a;--tok-keyword:#f08ad0;--tok-string:#8fd98f;--tok-number:#ffb27a;--tok-comment:#8a9480;--tok-function:#90c3f1;--tok-constant:#f3c45e;--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,p,pre,ul,dl,dd{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,select,.button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.eyebrow{font-family:var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.78rem}.note{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}.progress-line{color:var(--good);margin-top:12px;font-weight:650}.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}.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}.level{max-width:1240px;margin:0 auto;padding:16px 16px 72px}.level-nav{flex-wrap:wrap;align-items:baseline;gap:4px 16px;font-size:.9rem;display:flex}.level-nav a{text-decoration:none}.chapter-name{color:var(--muted)}.level-head{flex-wrap:wrap;align-items:center;gap:4px 12px;margin:8px 0 16px;display:flex}.level-head .num{font:700 1rem var(--mono);color:var(--accent)}.level-head h1{font-size:clamp(1.4rem,4vw,1.9rem)}.level-head .status{color:var(--good);background:var(--good-soft);border-radius:999px;padding:2px 9px;font-size:.8rem;font-weight:650}.level-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"brief""work""extras";gap:16px;display:grid}@media (width>=960px){.level-grid{grid-template:"brief work""extras work"1fr/minmax(0,5fr) minmax(0,7fr);align-items:start}}.brief{grid-area:brief;gap:12px;display:grid}.extras{grid-area:extras;gap:12px;display:grid}.workbench{grid-area:work;gap:12px;min-width:0;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;gap:8px;padding:14px 16px;display:grid}.card h2{font-size:1.05rem}.from{color:var(--muted);align-items:center;gap:8px;font-size:.85rem;font-weight:650;display:flex}.face{font-size:1.6rem;line-height:1}.request-text{font-size:1.05rem}.learn{border-color:color-mix(in srgb, var(--learn) 40%, var(--border));background:color-mix(in srgb, var(--learn-soft) 55%, var(--surface))}.learn-tag{font:700 .72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--surface);background:var(--learn);border-radius:999px;justify-self:start;padding:2px 8px}.example-label{color:var(--muted);font-size:.8rem;font-weight:650}.checklist{gap:4px;padding:0;list-style:none;display:grid}.checklist li{grid-template-columns:1.3em minmax(0,1fr);gap:4px;display:grid}.checklist .tick{color:var(--muted);font-weight:700}.checklist li.ok .tick{color:var(--good)}.checklist li.not .tick{color:var(--bad)}.wanted-output{gap:4px;display:grid}.hidden-note{border-top:1px dashed var(--border);padding-top:8px}details.card{display:block}details.card>*+*{margin-top:8px}summary{cursor:pointer;font-weight:650}.reference dl{grid-template-columns:minmax(0,1fr);gap:2px 12px;display:grid}.reference dt{margin-top:6px}.reference dd{color:var(--muted);font-size:.9rem}.farm{--step:.2s;--w:4;--h:1;background:var(--surface);border:1px solid var(--border);border-radius:10px;justify-items:center;gap:8px;padding:12px;display:grid}.farm-caption{color:var(--warn);font-weight:650}.farm-frame{width:min(100%, calc(var(--w) * 76px + 28px))}.farm-grid{grid-template-rows:auto auto;grid-template-columns:18px minmax(0,1fr);gap:4px;display:grid}.patches{grid-template-columns:repeat(var(--w), minmax(0, 1fr));border:4px solid var(--farm-frame);background:var(--farm-frame);border-radius:8px;gap:2px;display:grid;position:relative;overflow:hidden}.axis{font:.7rem var(--mono);color:var(--muted);text-align:center;display:grid}.x-axis{grid-column:2;grid-template-columns:repeat(var(--w), minmax(0, 1fr));padding:0 4px}.y-axis{grid-template-rows:repeat(var(--h), minmax(0, 1fr));align-items:center;padding:4px 0}.patch{aspect-ratio:1;background:var(--grassland);box-shadow:inset 0 -3px 0 var(--grassland-edge);place-items:center;display:grid;position:relative;container-type:inline-size}.patch.soil{background:repeating-linear-gradient(0deg, var(--soil) 0 7px, var(--soil-furrow) 7px 9px);box-shadow:none}.plant{transform:scale(calc(.35 + .5 * var(--g)));opacity:calc(.55 + .3 * var(--g));filter:saturate(.6);transition:transform var(--step) ease-out;font-size:58cqi;line-height:1}.patch.ripe .plant{opacity:1;filter:none;transform:scale(1)}.grow-bar{background:#0000002e;border-radius:99px;width:76%;height:5%;position:absolute;bottom:8%;left:12%;overflow:hidden}.grow-bar:after{content:"";height:100%;width:calc(var(--g) * 100%);background:#fff7c2;display:block}.mark{font-size:22cqi;line-height:1;position:absolute}.plan-mark{background:var(--plan-badge);opacity:.9;border-radius:50%;padding:3cqi;font-size:26cqi;top:4%;right:4%}.home-mark{top:5%;left:6%}.order-mark{top:4%;left:5%}.patch.miss{outline:3px solid var(--miss);outline-offset:-3px}.patch.pop .plant{animation:.35s ease-out pop}@keyframes pop{0%{transform:scale(.1)}}.patch.shake{animation:.4s shake}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.float{font:700 18cqi var(--sans);white-space:nowrap;pointer-events:none;z-index:2;animation:.7s ease-out forwards float;position:absolute;top:10%}.float.good{color:#fff;text-shadow:0 1px 2px #0009}@keyframes float{to{opacity:0;transform:translateY(-60%)}}.drone{z-index:1;width:calc(100% / var(--w));height:calc(100% / var(--h));transform:translate(calc(var(--x,0) * 100%), calc(var(--y,0) * 100%));transition:transform var(--step) ease-in-out;pointer-events:none;place-items:center;display:grid;position:absolute;top:0;left:0}.drone.jump{transition:none}.drone-icon{filter:drop-shadow(0 3px 2px #00000059);width:72%;height:72%}.drone-arm{stroke:var(--drone);stroke-width:3.5px;stroke-linecap:round}.drone-rotor{fill:color-mix(in srgb, var(--drone-light) 70%, transparent);stroke:var(--drone);stroke-width:2px}.drone-body{fill:var(--drone)}.drone-eye{fill:var(--accent)}.barn{font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:center;gap:6px 14px;font-size:.9rem;display:flex}.barn-item.clock{color:var(--muted)}@media (prefers-reduced-motion:reduce){.drone,.plant{transition:none}.float,.patch.pop .plant,.patch.shake{animation:none}}.code{gap:8px;display:grid}.snippets{flex-wrap:wrap;gap:6px;display:flex}.chip{font:.82rem var(--mono);border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:3px 9px}.chip:hover{border-color:var(--accent)}.chip.more{font-family:var(--sans);color:var(--muted);border-style:dashed}.controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.run{background:var(--accent);color:var(--accent-ink);border:none;border-radius:8px;padding:.55rem 1.3rem;font-weight:700}.run:hover:not(:disabled){filter:brightness(1.08)}.run:disabled{opacity:.7;cursor:progress}.secondary,.speed{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.5rem .8rem}.secondary:hover,.speed:hover{border-color:var(--accent)}.speed{margin-left:auto}.python-status{color:var(--muted);font-size:.875rem}.output{background:var(--surface);border:1px solid var(--border);border-radius:10px;gap:6px;padding:10px 14px;display:grid}.panel-title{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:650}.output-text{font:.9rem/1.45 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;max-height:16em;overflow-y:auto}.output-text.empty:before{content:"Nothing printed yet.";color:var(--muted);font-family:var(--sans);font-size:.875rem}.output-note{gap:4px;display:grid}.output-note .error{font:.9rem/1.45 var(--mono);color:var(--bad);overflow-wrap:anywhere}.output-note .info{color:var(--good);font-size:.9rem}.verdict{border:1px solid var(--border);border-radius:10px;gap:8px;padding:14px 16px;display:grid}.verdict h2{font-size:1.15rem}.verdict.good{background:var(--good-soft);border-color:color-mix(in srgb, var(--good) 40%, transparent)}.verdict.good h2{color:var(--good)}.verdict.bad{background:var(--bad-soft);border-color:color-mix(in srgb, var(--bad) 40%, transparent)}.verdict.bad h2{color:var(--bad)}.verdict.tip{background:var(--warn-soft);border-color:color-mix(in srgb, var(--warn) 40%, transparent)}.verdict.tip h2{color:var(--warn)}.verdict ul{gap:3px;padding-left:1.2em;display:grid}.python-says{font:.9rem/1.45 var(--mono);overflow-wrap:anywhere}.verdict-actions{flex-wrap:wrap;gap:8px;display:flex}.next.button{background:var(--accent);color:var(--accent-ink);border-radius:8px;justify-self:start;padding:.55rem 1.1rem;font-weight:700;text-decoration:none}
