:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--turf-950:#1b2a1e;--turf-700:#3c5c3f;--ember-500:#e8703a;--parchment-100:#f1e9d8;--ink-900:#241c15;--terminal-300:#7cf2a0;--terminal-950:#0c1410;--ember-700:#a8451a;--font-display:"Piedra", "Georgia", serif;--font-ui:"Sora", system-ui, "Segoe UI", sans-serif;--font-code:"JetBrains Mono", ui-monospace, Consolas, monospace}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);background:var(--turf-950);overflow:hidden}:focus-visible{outline:3px solid var(--ember-500);outline-offset:2px}.game-canvas-container{background:var(--turf-950);grid-row:2;justify-content:center;align-items:center;width:100%;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.game-canvas{image-rendering:pixelated;image-rendering:-moz-crisp-edges;display:block}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes game-over-fade-in{0%{opacity:0}to{opacity:1}}.game-over-overlay{background:linear-gradient(to bottom, #2a1f3a 0%, #4a2f3f 35%, #6b3f3a 55%, var(--turf-950) 78%), #0000004d;justify-content:center;align-items:center;animation:.4s ease-out game-over-fade-in;display:flex;position:absolute;inset:0}.game-over-panel{background:var(--parchment-100);border:2px solid var(--ink-900);text-align:center;color:var(--ink-900);font-family:var(--font-ui);border-radius:6px;min-width:280px;padding:32px 48px}.game-over-panel h1{font-family:var(--font-display);color:var(--ink-900);margin-bottom:8px;font-size:28px}.game-over-subtitle{color:#241c15a6;margin:0 0 16px}.game-over-mode{margin:-8px 0 16px;font-weight:600}.game-over-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.change-mode-button{font-family:var(--font-ui);cursor:pointer;color:var(--ink-900);border:2px solid var(--ink-900);background:0 0;border-radius:4px;margin-top:16px;padding:12px 22px;font-weight:600}.change-mode-button:hover{background:#241c1514}.new-high-score-banner{font-family:var(--font-ui);color:var(--ink-900);background:var(--ember-500);border-radius:4px;margin-bottom:16px;padding:8px;font-size:13px;font-weight:700;animation:.6s ease-out game-over-fade-in}.game-over-stats{text-align:left;flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.game-over-stat,.game-over-best{justify-content:space-between;gap:16px;display:flex}.game-over-best{border-top:1px solid #241c1533;margin-bottom:8px;padding-top:12px}.stat-label{font-family:var(--font-ui);text-transform:uppercase;color:#241c15a6;align-self:center;font-size:11px;font-weight:600}.stat-value{font-family:var(--font-code);font-size:16px}.score-breakdown{font-family:var(--font-ui);color:#241c15a6;justify-content:space-between;gap:12px;margin-top:-4px;font-size:11px;display:flex}.restart-button{font-family:var(--font-ui);cursor:pointer;background:var(--ember-500);color:var(--ink-900);border:none;border-radius:3px;margin-top:16px;padding:12px 28px;font-size:13px;font-weight:600;box-shadow:0 3px #a8501f}.restart-button:hover{filter:brightness(1.08)}.restart-button:active{transform:translateY(2px);box-shadow:0 1px #a8501f}.game-over-victory{background:linear-gradient(to bottom, #2f3f63 0%, #7a5a6b 30%, #d18a4e 52%, var(--turf-950) 80%), #0000004d}.game-hud{z-index:1;background:var(--parchment-100);border-bottom:2px solid var(--ink-900);color:var(--ink-900);font-family:var(--font-ui);flex-wrap:wrap;grid-row:1;align-items:center;gap:4px 18px;padding:8px 16px;font-size:13px;display:flex;position:relative}.hud-row{align-items:center;gap:6px;display:flex}.hud-label{color:#241c15a6;font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:600}.hud-value{font-family:var(--font-code);white-space:nowrap;font-weight:500}.hud-controls{order:99;gap:8px;margin-left:auto}.hud-button{font-family:var(--font-ui);background:var(--ink-900);color:var(--parchment-100);cursor:pointer;border:none;border-radius:3px;padding:5px 10px;font-size:11px;font-weight:600}.hud-button:hover{filter:brightness(1.3)}.hud-skip-button{background:var(--ember-500);color:var(--ink-900)}.hud-skip-button:hover{filter:brightness(1.08)}.hp-bar-track{background:#241c1533;border-radius:4px;width:90px;height:8px;overflow:hidden}.hp-bar-fill{background:var(--turf-700);height:100%;transition:width .15s ease-out}.game-hud.hud-critical .hp-bar-fill{background:var(--ember-500)}.hud-gold-row{position:relative}.hud-gold-note{font-family:var(--font-code);color:var(--ember-700);white-space:nowrap;font-size:12px;font-weight:600;position:absolute;top:calc(100% + 10px);left:0}.hud-gold-note:not(:empty){background:var(--parchment-100);border:2px solid var(--ink-900);z-index:2;border-radius:3px;padding:3px 8px;animation:.2s ease-out hud-gold-note-in}@keyframes hud-gold-note-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.hud-gold-note:not(:empty){animation:none}}.shop-tray{flex-wrap:wrap;grid-row:3;justify-content:center;justify-self:center;gap:8px;max-width:calc(100% - 32px);padding:6px 10px 8px;display:flex}.shop-card{background:var(--parchment-100);border:2px solid var(--ink-900);width:112px;color:var(--ink-900);cursor:grab;border-radius:9px 6px 10px 5px;flex-direction:column;align-items:center;gap:2px;padding:6px 6px 5px;display:flex;transform:rotate(-.6deg)}.shop-card:nth-child(2n){border-radius:6px 10px 5px 9px;transform:rotate(.5deg)}.shop-card:nth-child(3n){border-radius:8px 5px 9px 6px;transform:rotate(-.3deg)}.shop-card:active{cursor:grabbing}.shop-card-locked{cursor:not-allowed;opacity:.6;border-style:dashed}.shop-card-unaffordable{opacity:.8}.shop-swatch{border:1px solid var(--ink-900);object-fit:contain;border-radius:3px;width:18px;height:18px}.shop-type{font-family:var(--font-ui);text-transform:uppercase;text-align:center;font-size:11px;font-weight:700}.shop-cost{font-family:var(--font-code);color:var(--turf-700);text-align:center;font-size:11px;font-weight:500}.shop-status{font-family:var(--font-ui);white-space:nowrap;min-height:1.25em;color:var(--ember-700);text-align:center;font-size:10px;font-weight:600;line-height:1.25}@keyframes shop-card-pulse{0%{box-shadow:0 0 #e8703a99}to{box-shadow:0 0 0 10px #e8703a00}}.shop-card-pulse{animation:.5s ease-out shop-card-pulse}@media (prefers-reduced-motion:reduce){.shop-card-pulse{border-color:var(--ember-500);animation:none}}.problem-bank{flex-direction:column;align-items:flex-end;gap:8px;max-width:min(340px,100% - 32px);display:flex;position:absolute;bottom:16px;right:16px}.problem-bank-toggle{font-family:var(--font-ui);cursor:pointer;background:var(--parchment-100);color:var(--ink-900);border:2px solid var(--ink-900);border-radius:5px;padding:8px 14px;font-size:12px;font-weight:700}.problem-bank-toggle:hover{filter:brightness(.95)}.problem-bank-list{background:var(--parchment-100);border:2px solid var(--ink-900);box-sizing:border-box;border-radius:6px;flex-direction:column;gap:8px;width:100%;padding:12px;display:flex}.problem-bank-card{border-left:3px solid var(--turf-700);color:var(--ink-900);background:#241c150f;border-radius:3px;align-items:center;gap:10px;padding:8px 10px;display:flex}.problem-bank-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.problem-bank-title{font-family:var(--font-ui);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;overflow:hidden}.problem-bank-description{font-family:var(--font-ui);color:#241c15bf;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.problem-bank-meta{font-family:var(--font-code);color:var(--turf-700);text-transform:uppercase;font-size:10px}.problem-bank-lockout{font-family:var(--font-code);color:var(--ember-700);font-size:10px;font-weight:700}.problem-bank-open-button{font-family:var(--font-ui);cursor:pointer;background:var(--ink-900);color:var(--parchment-100);border:none;border-radius:4px;flex-shrink:0;padding:6px 10px;font-size:11px;font-weight:700}.problem-bank-open-button:hover:not(:disabled){filter:brightness(1.3)}.problem-bank-open-button:disabled{cursor:not-allowed;opacity:.5}.problem-bank-hint{font-family:var(--font-ui);color:#241c15a6;text-align:center;margin:0;font-size:11px}.title-screen{position:absolute;inset:0;overflow:hidden}.title-screen-backdrop{position:absolute;inset:0}.title-screen-sky{background:linear-gradient(to bottom, #2a1f3a 0%, #4a2f3f 35%, #6b3f3a 55%, var(--turf-950) 78%);position:absolute;inset:0}.title-screen-turf{background:repeating-linear-gradient(to bottom, var(--turf-700) 0, var(--turf-700) 12%, var(--turf-950) 12%, var(--turf-950) 24%);height:30%;position:absolute;inset:auto 0 0}.title-screen-castle{background:var(--ink-900);clip-path:polygon(0% 100%,0% 30%,12% 30%,12% 15%,24% 15%,24% 30%,38% 30%,38% 10%,50% 10%,50% 30%,64% 30%,64% 15%,76% 15%,76% 30%,100% 30%,100% 100%);opacity:.85;width:220px;height:160px;position:absolute;bottom:26%;left:6%}.title-screen-content{box-sizing:border-box;flex-direction:column;justify-content:flex-start;align-items:flex-start;height:100%;padding:8vh 6vw 0;display:flex;position:relative}.wordmark{flex-wrap:wrap;align-items:baseline;gap:.15em;margin:0 0 32px;line-height:1;display:flex}.wordmark-code{font-family:var(--font-code);color:var(--terminal-300);text-shadow:0 0 12px #7cf2a08c,0 0 28px #7cf2a04d;font-size:clamp(2rem,6vw,3.5rem);font-weight:700}.wordmark-glyph{font-family:var(--font-code);color:var(--ember-500);font-size:clamp(1.6rem,5vw,2.8rem);font-weight:700}.wordmark-defense{font-family:var(--font-display);color:var(--parchment-100);-webkit-text-stroke:1.5px var(--ink-900);text-shadow:2px 2px 0 var(--ink-900), -1px -1px 0 var(--ink-900);font-size:clamp(2rem,6vw,3.5rem)}.title-tagline{font-family:var(--font-ui);color:var(--parchment-100);text-shadow:0 2px #241c1599;margin:-16px 0 24px;font-size:1.05rem;font-weight:600}.title-cta{font-family:var(--font-ui);cursor:pointer;background:var(--ember-500);color:var(--ink-900);border:none;border-radius:3px;padding:14px 36px;font-size:1.1rem;font-weight:600;box-shadow:0 3px #a8501f}.title-cta:hover{filter:brightness(1.08)}.title-cta:active{transform:translateY(2px);box-shadow:0 1px #a8501f}.title-help-button{border:2px solid var(--parchment-100);width:32px;height:32px;color:var(--parchment-100);font-family:var(--font-ui);cursor:pointer;background:0 0;border-radius:50%;font-size:14px;font-weight:700;line-height:1;position:absolute;top:20px;right:20px}.title-help-button:hover{background:#f1e9d826}.title-attribution{font-family:var(--font-ui);color:#f1e9d88c;font-size:12px;text-decoration:none;position:absolute;bottom:14px;right:20px}.title-attribution:hover{color:#f1e9d8d9}@keyframes round-transition-beat{0%{opacity:0;transform:translate(-50%,-12px)scale(.96)}15%{opacity:1;transform:translate(-50%)scale(1)}85%{opacity:1;transform:translate(-50%)scale(1)}to{opacity:0;transform:translate(-50%,-12px)scale(.96)}}.round-transition-banner{background:var(--parchment-100);border:2px solid var(--ink-900);pointer-events:none;border-radius:4px;padding:10px 28px;animation:3s ease-in-out round-transition-beat;position:absolute;top:64px;left:50%}.round-transition-text{font-family:var(--font-display);color:var(--ink-900);font-size:18px}@media (prefers-reduced-motion:reduce){.round-transition-banner{opacity:1;animation:none;transform:translate(-50%)}}@keyframes how-to-play-fade-in{0%{opacity:0}to{opacity:1}}.how-to-play-overlay{background:linear-gradient(to bottom, #2a1f3a 0%, #4a2f3f 35%, #6b3f3a 55%, var(--turf-950) 78%), #0000004d;justify-content:center;align-items:center;animation:.4s ease-out how-to-play-fade-in;display:flex;position:absolute;inset:0}.how-to-play-panel{background:var(--parchment-100);border:2px solid var(--ink-900);color:var(--ink-900);font-family:var(--font-ui);text-align:center;border-radius:6px;width:min(420px,88vw);max-height:84vh;padding:32px 40px;position:relative;overflow-y:auto}.how-to-play-panel h1{font-family:var(--font-display);color:var(--ink-900);margin:0 0 12px;font-size:26px}.how-to-play-close{width:28px;height:28px;color:var(--ink-900);cursor:pointer;background:0 0;border:none;border-radius:3px;font-size:20px;line-height:1;position:absolute;top:10px;right:10px}.how-to-play-close:hover{background:#241c151a}.how-to-play-sections{text-align:left;flex-direction:column;gap:8px;margin-bottom:24px;display:flex}.how-to-play-sections h2{font-family:var(--font-ui);text-transform:uppercase;color:#241c15a6;margin:0 0 4px;font-size:12px;font-weight:700}.how-to-play-sections p{margin:0;font-size:14px;line-height:1.45}.how-to-play-cta{font-family:var(--font-ui);cursor:pointer;background:var(--ember-500);color:var(--ink-900);border:none;border-radius:3px;padding:12px 28px;font-size:13px;font-weight:600;box-shadow:0 3px #a8501f}.how-to-play-cta:hover{filter:brightness(1.08)}.how-to-play-cta:active{transform:translateY(2px);box-shadow:0 1px #a8501f}.mode-select{position:absolute;inset:0;overflow:hidden}.mode-select-content{box-sizing:border-box;flex-direction:column;align-items:flex-start;height:100%;padding:8vh 6vw 24px;display:flex;position:relative;overflow-y:auto}.mode-select-heading{font-family:var(--font-display);color:var(--parchment-100);-webkit-text-stroke:1px var(--ink-900);text-shadow:2px 2px 0 var(--ink-900);margin:0 0 8px;font-size:clamp(1.8rem,5vw,2.8rem);font-weight:400}.mode-select-sub{font-family:var(--font-ui);color:var(--parchment-100);max-width:560px;margin:0 0 24px}.mode-cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;width:min(1040px,100%);display:grid}.mode-card{text-align:left;cursor:pointer;font-family:var(--font-ui);background:var(--parchment-100);color:var(--ink-900);border:2px solid var(--ink-900);box-shadow:3px 3px 0 var(--ink-900);border-radius:6px;flex-direction:column;align-items:flex-start;gap:6px;padding:16px;display:flex}.mode-card:hover:not(:disabled){box-shadow:4px 4px 0 var(--ember-500);transform:translate(-1px,-1px)}.mode-card--empty{cursor:not-allowed;opacity:.75;box-shadow:none;border-style:dashed}.mode-card-label{font-family:var(--font-display);font-size:1.4rem}.mode-card-blurb{font-size:.9rem;line-height:1.4}.mode-card-count{font-family:var(--font-code);color:#241c15bf;font-size:.72rem}.mode-card-best{font-size:.8rem;font-weight:700}.mode-card--empty .mode-card-count{color:var(--ember-700);font-weight:700}.mode-back{font-family:var(--font-ui);cursor:pointer;color:var(--parchment-100);border:2px solid var(--parchment-100);background:0 0;border-radius:4px;margin-top:20px;padding:10px 20px;font-weight:600}@media (prefers-reduced-motion:reduce){.mode-card:hover:not(:disabled){transform:none}}.mode-select-status{font-family:var(--font-ui);color:var(--parchment-100);margin:-12px 0 16px;font-weight:600}.mode-select-status--error{color:var(--parchment-100)}.mode-retry{font-family:var(--font-ui);cursor:pointer;background:var(--ember-500);color:var(--ink-900);border:none;border-radius:3px;margin-left:6px;padding:4px 12px;font-weight:700}@keyframes pause-menu-fade-in{0%{opacity:0}to{opacity:1}}.pause-menu-overlay{background:#0c0a088c;justify-content:center;align-items:center;animation:.15s ease-out pause-menu-fade-in;display:flex;position:absolute;inset:0}.pause-menu{background:var(--parchment-100);border:2px solid var(--ink-900);box-shadow:4px 4px 0 var(--ink-900);box-sizing:border-box;text-align:center;width:min(360px,100% - 32px);color:var(--ink-900);font-family:var(--font-ui);border-radius:6px;padding:28px 36px}.pause-menu h2{font-family:var(--font-display);margin:0 0 6px;font-size:26px;font-weight:400}.pause-menu-sub{color:#241c15bf;margin:0 0 18px;font-size:14px}.pause-menu-actions{flex-direction:column;gap:10px;display:flex}.pause-menu-actions button{font-family:var(--font-ui);cursor:pointer;color:var(--ink-900);border:2px solid var(--ink-900);background:0 0;border-radius:4px;padding:10px 16px;font-size:15px;font-weight:600}.pause-menu-actions button:hover{background:#241c1514}.pause-menu-actions .pause-menu-primary{background:var(--ember-500)}.pause-menu-actions .pause-menu-primary:hover{filter:brightness(1.08);background:var(--ember-500)}.pause-menu-actions .pause-menu-danger{color:var(--ember-700);border-color:var(--ember-700)}@media (prefers-reduced-motion:reduce){.pause-menu-overlay{animation:none}}.incoming-panel{box-sizing:border-box;background:var(--parchment-100);width:188px;max-height:calc(100% - 72px);color:var(--ink-900);border:2px solid var(--ink-900);font-family:var(--font-ui);border-radius:6px;position:absolute;top:56px;left:8px;overflow-y:auto;box-shadow:0 3px #241c1573}.incoming-header{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;border-bottom:1px solid #241c1533;grid-template-columns:1fr auto;gap:2px 6px;padding:8px 10px;display:grid}.incoming-title{font-family:var(--font-display);font-size:16px}.incoming-toggle{align-self:center;font-size:11px;font-weight:600;text-decoration:underline}.incoming-summary{grid-column:1/-1;font-size:11px;font-weight:600;line-height:1.35}.incoming-list{flex-direction:column;gap:6px;margin:0;padding:6px;list-style:none;display:flex}.incoming-card,.incoming-row{border-left:3px solid var(--turf-700);background:#241c150f;border-radius:3px;align-items:center;gap:8px;padding:6px;display:flex}.incoming-card-boss{border:2px solid var(--ink-900);border-left:5px solid var(--ember-500)}.incoming-icon{image-rendering:pixelated;background:var(--turf-700);border-radius:3px;flex:none}.incoming-card-body{flex:1;min-width:0}.incoming-card-top{justify-content:space-between;gap:4px;display:flex}.incoming-name,.incoming-row-name{font-size:12px;font-weight:700}.incoming-row-name{flex:1}.incoming-count{font-family:var(--font-code);white-space:nowrap;font-size:13px;font-weight:700}.incoming-tier{color:#241c15bf;font-size:11px}.incoming-boss-label{letter-spacing:.04em;color:var(--parchment-100);background:var(--ink-900);border-radius:2px;margin-right:4px;padding:0 4px;font-size:10px;font-weight:700;display:inline-block}.incoming-stats{flex-wrap:wrap;gap:0 6px;margin:2px 0 0;font-size:11px;display:flex}.incoming-stats div{gap:3px;display:flex}.incoming-stats dt{color:#241c15bf}.incoming-stats dd{font-family:var(--font-code);margin:0;font-weight:600}.incoming-panel-compact .incoming-title{font-size:14px}.incoming-panel-compact .incoming-row{padding:3px 6px}.app-root{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);width:100vw;height:100vh;display:grid;position:relative}.challenge-panel-loading{box-sizing:border-box;background:var(--terminal-950);width:min(440px,100% - 32px);color:var(--terminal-300);font-family:var(--font-code);border:1px solid #7cf2a04d;border-radius:6px;padding:16px;position:absolute;top:16px;right:16px}
