:root{--sea-deep:#0a2233;--sea:#0f3550;--card:#15435f;--card-hover:#1b5274;--line:#2b6a8c;--text:#f3efe6;--muted:#a9c3d3;--rust:#f74c00;--rust-soft:#ff8a4c;--sand:#e9d3a6;--good:#4cc38a;--bad:#ff9a9a;--gold:#f2b632;--mono:ui-monospace, "Cascadia Code", "Fira Code", Consolas, monospace;--radius:12px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:radial-gradient(circle at 50% 0%, var(--sea) 0%, var(--sea-deep) 70%) fixed;min-height:100vh;color:var(--text);margin:0;font:17px/1.6 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--rust-soft)}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}main{max-width:860px;margin:0 auto;padding:24px 16px 64px}main.map{max-width:1200px}h1{margin:.4em 0;font-size:2rem}.muted{color:var(--muted)}.center{text-align:center}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.row{flex-wrap:wrap;gap:12px;margin:16px 0;display:flex}.btn{border:2px solid var(--line);background:var(--card);color:var(--text);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:10px 18px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--card-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{color:#fff;background:#c43d00;border-color:#c43d00}.btn.primary:hover:not(:disabled){background:#d94400}.btn.danger{border-color:var(--bad);color:var(--bad)}.btn.small{padding:4px 12px;font-size:.9rem}.btn.big{padding:14px 28px;font-size:1.2rem}.hud{border-bottom:1px solid var(--line);background:#00000040;flex-wrap:wrap;align-items:center;gap:16px;padding:10px 16px;display:flex}.brand{color:var(--text);align-items:center;gap:8px;font-size:1.1rem;font-weight:800;text-decoration:none;display:flex}.stats{gap:16px;margin-left:auto;font-weight:600;display:flex}.notice{width:100%;color:var(--gold);margin:0;font-size:.9rem}.title-screen{text-align:center;padding-top:48px;position:relative}.title-corner{position:absolute;top:12px;right:16px}.title-screen h1{color:var(--rust-soft);margin:.2em 0 0;font-size:3.2rem}.tagline{color:var(--muted);font-size:1.2rem}.mode-pick{gap:14px;max-width:520px;margin:32px auto 0;display:grid}.mode-pick h2{font-size:1.2rem}.card-btn{text-align:left;border-radius:var(--radius);border:2px solid var(--line);background:var(--card);color:var(--text);font:inherit;cursor:pointer;gap:4px;padding:18px 22px;display:grid}.card-btn:hover{border-color:var(--rust);background:var(--card-hover)}.card-btn span{color:var(--muted)}.title-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:32px;display:flex}.settings fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:12px 18px}.radio,.check{cursor:pointer;align-items:center;gap:10px;padding:6px 0;display:flex}.map-svg{width:100%;height:auto;display:block}.route{fill:none;stroke:var(--sand);stroke-width:4px;stroke-dasharray:2 14;stroke-linecap:round;opacity:.6}.island-node .land{fill:#2f7d4f;stroke:var(--sand);stroke-width:6px}.island-node text{text-anchor:middle;fill:#fff;pointer-events:none;font-weight:700}.island-node .num{font-size:22px}.island-node .name{font-size:14px}.island-node .topic{fill:var(--sand);font-size:12px;font-weight:500}.island-node.open,.island-node.done,.island-node.locked{cursor:pointer}.island-node.open:hover .land{fill:#3a9a62}.island-node.done .land{fill:#2a6b8a}.island-node.locked .land{fill:#4b5560;stroke:#7c8791}.island-node.locked:hover .land{fill:#5b6670}.island-node.soon .land{fill:#1d3d52;stroke:#4a6b80;stroke-dasharray:10 8}.island-node.soon text{fill:#8fa9b8}.island-node:focus{outline:none}.island-node:focus-visible .land{stroke:var(--gold);stroke-width:8px}.ferris{pointer-events:none;transition:transform 1.2s ease-in-out}.back{margin-bottom:8px;display:inline-block}.stage-list{gap:10px;padding:0;list-style:none;display:grid}.stage-card{border-radius:var(--radius);background:var(--card);border:2px solid var(--line);color:var(--text);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;font-weight:600;text-decoration:none;display:flex}a.stage-card:hover{border-color:var(--rust);background:var(--card-hover)}.stage-card.locked{opacity:.6}.stage-card.boss{border-color:var(--rust);margin-top:18px}.stage-card.jump{border-style:dashed;border-color:var(--gold)}.skip-note{margin-top:8px}.jump-notice{color:var(--gold);font-weight:600}.stars{color:var(--gold);letter-spacing:2px}.stars.big{margin:8px 0;font-size:2.4rem}.step{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:.85rem}.tutorial-page,.puzzle,.stage-done{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-top:12px;padding:20px 24px}.tag{border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:700;display:inline-block}.tag.beginner{background:#2f7d4f}.tag.experienced{background:#6b4fbf}.prose code,.prompt code{font-family:var(--mono);font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0;background:#0000004d;border-radius:6px;padding:1px 6px;font-size:.92em}pre.code{font-family:var(--mono);border:1px solid var(--line);font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0;background:#08192a;border-radius:10px;margin:12px 0;padding:14px 16px;font-size:.95rem;line-height:1.5;overflow-x:auto}pre.code code{font-family:inherit}.gap{font-family:var(--mono);font-size:inherit;color:#1a1a1a;border:2px solid var(--gold);font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0;background:#fff8e0;border-radius:6px;width:7ch;padding:0 4px}.choices{gap:10px;display:grid}.choice{text-align:left;border:2px solid var(--line);background:var(--sea-deep);color:var(--text);font:inherit;cursor:pointer;border-radius:10px;padding:12px 16px}.choice:hover:not(:disabled){border-color:var(--rust)}.choice pre.code{background:0 0;border:none;margin:0;padding:0}.lines{font-family:var(--mono);border:1px solid var(--line);font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0;background:#08192a;border-radius:10px;margin:12px 0;padding:8px 0;overflow-x:auto}.line{text-align:left;width:100%;color:var(--text);font:inherit;cursor:pointer;white-space:pre;background:0 0;border:none;gap:14px;padding:2px 16px;display:flex}.line:hover:not(:disabled){background:#f74c0040}.ln{color:var(--muted);text-align:right;-webkit-user-select:none;user-select:none;min-width:2ch}.feedback .good{color:var(--good);font-weight:700}.feedback .bad{color:var(--bad);font-weight:700}.editor{border:1px solid var(--line);border-radius:10px;margin:12px 0;overflow:hidden}.editor .cm-editor{max-height:480px}.editor-tip{margin:-6px 0 12px;font-size:.85rem}.console pre{font-family:var(--mono);white-space:pre-wrap;font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0;background:#050f19;border-radius:10px;margin:8px 0;padding:12px 14px;font-size:.88rem}.console pre.err{color:#ffd2c2}.console-msg.info{color:var(--muted)}.console-msg.success{color:var(--good);font-weight:700}.console-msg.error{color:var(--bad);font-weight:700}.hp-wrap{margin:16px 0}.hp-label{font-weight:700}.hp{background:#3a1010;border:2px solid #000;border-radius:999px;height:18px;overflow:hidden}.hp-fill{background:linear-gradient(90deg, #e33, var(--rust));height:100%;transition:width .6s}.hints li{color:var(--sand);margin:6px 0}.celebrate{text-align:center;padding-top:40px}.celebrate .row{justify-content:center}@media (prefers-reduced-motion:reduce){.ferris,.hp-fill{transition:none}}@media (width<=600px){body{font-size:16px}.stats{margin-left:0}.tutorial-page,.puzzle,.stage-done{padding:16px}}.music-toggle{position:relative}.music-toggle[aria-pressed=false]{color:var(--muted);border-style:dashed}.music-toggle[aria-pressed=false]:after{content:"";border-top:2px solid;position:absolute;top:50%;left:20%;right:20%;transform:rotate(-35deg)}.volume{align-items:center;gap:12px;padding:6px 0;display:flex}.volume input{max-width:240px;accent-color:var(--rust);flex:1}.lives-wrap{margin:4px 0 16px}.lives-label{font-weight:700}.hearts{letter-spacing:4px;margin:4px 0 0;font-size:1.4rem}.round{border-top:2px solid var(--line);margin-top:8px;padding-top:4px}.defeat{border:2px solid var(--bad);border-radius:12px;margin:16px 0;padding:4px 16px}
