:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--c-sky-100:#eef9fd;--c-sky-200:#bfe9f5;--c-sky-300:#9edcf0;--c-sky-400:#6fc5e3;--c-snow:#fff;--c-snow-200:#f3f9fb;--c-snow-300:#dcedf3;--c-navy-900:#14304a;--c-navy-700:#1f5874;--c-navy-500:#2d6f8f;--c-ink:var(--c-navy-900);--c-ink-muted:#456a7e;--c-gold-300:#ffe3a1;--c-gold-500:#f2b84b;--c-gold-700:#8a5a05;--c-mint-300:#c9f2e3;--c-mint-500:#7fdcb9;--c-mint-700:#166650;--c-coral-300:#ffc9bd;--c-coral-500:#ff9d88;--c-coral-700:#b8431f;--c-danger:#b8431f;--surface:var(--c-snow);--surface-muted:var(--c-snow-200);--border:var(--c-snow-300);--page-gradient:linear-gradient(180deg, var(--c-sky-200) 0%, var(--c-sky-100) 45%, #e8f7ef 100%);--font-body:ui-rounded, "SF Pro Rounded", "Nunito", "Trebuchet MS", system-ui, -apple-system, "Segoe UI", sans-serif;--fs-xs:.75rem;--fs-sm:.875rem;--fs-md:1rem;--fs-lg:1.25rem;--fs-xl:1.5rem;--fs-2xl:2rem;--fw-bold:700;--fw-black:800;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--radius-sm:.5rem;--radius-md:.875rem;--radius-lg:1.25rem;--radius-pill:999px;--shadow-card:0 4px 0 var(--c-snow-300);--shadow-float:0 8px 24px #14304a2e;--dur-fast:.12s;--dur-base:.22s;--dur-slow:2s;--touch:44px;--content-max:1200px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100vh;background:var(--page-gradient) fixed;min-height:100dvh;color:var(--c-ink);font-family:var(--font-body);font-size:var(--fs-md);margin:0;line-height:1.4;overflow-x:hidden}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;min-height:var(--touch);min-width:var(--touch);background:0 0;border:0}button:disabled{cursor:not-allowed}:focus-visible{outline:3px solid var(--c-navy-700);outline-offset:3px;border-radius:var(--radius-sm)}.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}.app{max-width:var(--content-max);padding:var(--sp-4);margin:0 auto}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.shell{max-width:var(--content-max);padding:var(--sp-3);gap:var(--sp-3);min-height:100vh;min-height:100dvh;padding-bottom:calc(var(--sp-6) + 72px);flex-direction:column;margin:0 auto;display:flex}.layout{gap:var(--sp-3);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.layout__scene,.layout__panels{gap:var(--sp-3);flex-direction:column;min-width:0;display:flex}.panel{gap:var(--sp-3);grid-template-columns:minmax(0,1fr);display:grid}.panel[hidden]{display:none}@media (min-width:600px){.panel{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.shell{padding:var(--sp-4);padding-bottom:calc(var(--sp-6) + 72px)}.layout{gap:var(--sp-4);grid-template-columns:minmax(0,7fr) minmax(320px,5fr)}.layout__panels{top:var(--sp-3);max-height:calc(100dvh - var(--sp-6));position:sticky}.layout__panels .panel{overscroll-behavior:contain;padding-right:var(--sp-1);grid-template-columns:minmax(0,1fr);overflow:auto}}@media (min-width:1280px){.layout__panels .panel{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-height:620px) and (min-width:700px){.layout{grid-template-columns:minmax(0,1fr) minmax(300px,1fr)}.layout__panels{top:var(--sp-2);max-height:calc(100dvh - var(--sp-5));position:sticky}.layout__panels .panel{grid-template-columns:minmax(0,1fr);overflow:auto}}.topbar{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.brand{align-items:center;gap:var(--sp-2);min-width:0;display:flex}.brand__mark{filter:drop-shadow(0 3px 0 var(--c-snow-300));flex:none}.brand__title{font-size:clamp(1.05rem,2.6vw + .5rem,1.5rem);font-weight:var(--fw-black);letter-spacing:-.02em;color:var(--c-navy-900);line-height:1.1}.brand__sub{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--c-ink-muted);font-weight:var(--fw-bold);margin-top:2px}.topbar__actions{align-items:center;gap:var(--sp-2);flex:none;display:flex}.level-badge{background:var(--c-snow);border:2px solid var(--border);border-radius:var(--radius-pill);padding:0 var(--sp-3);min-height:var(--touch);font-weight:var(--fw-black);box-shadow:var(--shadow-card);white-space:nowrap;align-items:center;display:inline-flex}.icon-btn{width:var(--touch);height:var(--touch);border-radius:var(--radius-pill);background:var(--c-snow);border:2px solid var(--border);box-shadow:var(--shadow-card);color:var(--c-navy-700);justify-content:center;align-items:center;font-size:1.4rem;display:inline-flex}.icon-btn:hover{background:var(--c-sky-100)}@media (max-width:419px){.level-badge{display:none}.brand__title{font-size:1rem}.brand__sub{font-size:.65rem}}.stats{background:color-mix(in srgb, var(--c-snow) 88%, transparent);border:2px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-3);box-shadow:var(--shadow-card);gap:var(--sp-2);flex-direction:column;display:flex}.stats--highlight,.card--highlight{outline:3px dashed var(--c-coral-700);outline-offset:3px;animation:1.4s ease-in-out infinite pulse}@keyframes pulse{50%{outline-color:var(--c-gold-500)}}.stats__grid{gap:var(--sp-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (min-width:480px){.stats__grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.stat{background:var(--c-snow);border:2px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-3);min-height:var(--touch);text-align:left;flex-direction:column;gap:2px;min-width:0;display:flex}.stat--button{cursor:pointer}.stat--button:hover{background:var(--c-sky-100)}.stat__label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--c-ink-muted);font-weight:var(--fw-black);align-items:center;gap:4px;display:inline-flex}.stat__value{font-size:clamp(1.05rem,1.2vw + .8rem,1.4rem);font-weight:var(--fw-black);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.stat--coins .stat__value{color:var(--c-gold-700)}.stat__unit{font-size:var(--fs-sm);color:var(--c-ink-muted);font-weight:var(--fw-bold)}.breakdown{padding:var(--sp-2) var(--sp-3);background:var(--c-sky-100);border-radius:var(--radius-md);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;margin:0;list-style:none}.breakdown li{justify-content:space-between;gap:var(--sp-2);padding:2px 0;display:flex}.breakdown__total{font-weight:var(--fw-black);border-top:1px solid var(--border);margin-top:4px;padding-top:6px!important}.xp__row{justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-black);font-variant-numeric:tabular-nums;display:flex}.xp__text{color:var(--c-ink-muted)}.bar{background:var(--c-snow-300);border-radius:var(--radius-pill);height:12px;margin-top:6px;overflow:hidden}.bar__fill{background:linear-gradient(90deg, var(--c-mint-700), var(--c-mint-500));border-radius:var(--radius-pill);height:100%;transition:width var(--dur-base) ease-out}.bar__fill--gold{background:linear-gradient(90deg, var(--c-gold-700), var(--c-gold-500))}.tabs{gap:var(--sp-1);background:color-mix(in srgb, var(--c-snow) 80%, transparent);border:2px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-1);box-shadow:var(--shadow-card);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.tab{border-radius:var(--radius-md);font-weight:var(--fw-black);color:var(--c-navy-700);padding:0 var(--sp-1);justify-content:center;align-items:center;gap:6px;min-width:0;font-size:clamp(.78rem,1.8vw + .4rem,.95rem);display:inline-flex}.tab--active{background:var(--c-navy-700);color:var(--c-snow)}.tab__badge{background:var(--c-gold-500);color:var(--c-navy-900);border-radius:var(--radius-pill);font-size:var(--fs-xs);justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 6px;display:inline-flex}.card{background:var(--c-snow);border:2px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-3);box-shadow:var(--shadow-card);gap:var(--sp-2);flex-direction:column;min-width:0;display:flex}.card--locked{background:var(--c-snow-200)}.card--owned,.card--max{border-color:var(--c-mint-500)}.card__head{gap:var(--sp-3);align-items:center;display:flex}.card__icon{border-radius:var(--radius-md);background:var(--c-sky-100);flex:none;place-items:center;width:56px;height:56px;display:grid}.card__titles{min-width:0}.card__kicker{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink-muted);font-weight:var(--fw-black)}.card__title{font-size:var(--fs-lg);font-weight:var(--fw-black);line-height:1.15}.card__meta{font-size:var(--fs-sm);color:var(--c-ink-muted);font-weight:var(--fw-bold)}.card__desc{font-size:var(--fs-sm);color:var(--c-ink-muted)}.card__effect{font-size:var(--fs-sm);font-weight:var(--fw-bold);background:var(--c-mint-300);color:var(--c-mint-700);border-radius:var(--radius-sm);padding:var(--sp-1) var(--sp-2)}.card--locked .card__effect{background:var(--c-snow-300);color:var(--c-ink-muted)}.card__hint{font-size:var(--fs-sm);color:var(--c-ink-muted);font-weight:var(--fw-bold)}.card__secondary{border-top:1px dashed var(--border);padding-top:var(--sp-2);gap:var(--sp-1);flex-direction:column;display:flex}.btn{width:100%;min-height:var(--touch);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);font-weight:var(--fw-black);font-size:var(--fs-md);transition:transform var(--dur-fast), box-shadow var(--dur-fast), background var(--dur-fast);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:6px;line-height:1.2;display:inline-flex}.btn:active{transform:translateY(2px)}.btn--affordable{background:var(--c-navy-700);color:var(--c-snow);box-shadow:0 3px 0 var(--c-navy-900)}.btn--affordable:hover{background:var(--c-navy-500)}.btn--unaffordable{background:var(--c-snow-200);color:var(--c-ink-muted);border:2px dashed var(--c-snow-300)}.btn--locked{background:var(--c-snow-300);color:var(--c-ink-muted)}.btn--owned,.btn--max{background:var(--c-mint-300);color:var(--c-mint-700)}.btn--secondary{background:var(--c-sky-100);color:var(--c-navy-700);border:2px solid var(--c-sky-300);font-size:var(--fs-sm)}.btn--secondary.btn--affordable{background:var(--c-gold-500);color:var(--c-navy-900);border-color:var(--c-gold-700);box-shadow:0 3px 0 var(--c-gold-700)}.btn--ghost{color:var(--c-navy-700);border:2px solid var(--border);background:0 0}.btn--danger{background:var(--c-coral-700);color:var(--c-snow);width:auto;box-shadow:0 3px #8f3315}.btn:disabled{box-shadow:none;transform:none}.toasts{left:50%;bottom:calc(var(--sp-3) + env(safe-area-inset-bottom));gap:var(--sp-1);z-index:40;pointer-events:none;flex-direction:column;width:min(92vw,420px);display:flex;position:fixed;transform:translate(-50%)}.toast{background:var(--c-navy-900);color:var(--c-snow);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-3);font-weight:var(--fw-bold);font-size:var(--fs-sm);box-shadow:var(--shadow-float);animation:toast-in var(--dur-base) ease-out;text-align:center}.toast--success{background:var(--c-mint-700)}.toast--warn{background:var(--c-coral-700)}.toast--celebrate{background:var(--c-gold-700)}@keyframes toast-in{0%{opacity:0;translate:0 12px}}.dialog{border-radius:var(--radius-lg);background:var(--c-snow);width:min(92vw,440px);color:var(--c-ink);box-shadow:var(--shadow-float);border:0;padding:0}.dialog::backdrop{background:#14304a73}.dialog__body{padding:var(--sp-4);gap:var(--sp-3);flex-direction:column;display:flex}.dialog__title{font-size:var(--fs-xl);font-weight:var(--fw-black)}.dialog__note{font-size:var(--fs-sm);color:var(--c-ink-muted)}.dialog__note--warn{color:var(--c-coral-700);font-weight:var(--fw-bold)}.dialog__actions{gap:var(--sp-2);flex-wrap:wrap;justify-content:flex-end;display:flex}.dialog__actions .btn{width:auto}.settings__row{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.settings__label{font-weight:var(--fw-black)}.switch{min-width:88px;min-height:var(--touch);padding:0 var(--sp-3);border-radius:var(--radius-pill);background:var(--c-snow-300);color:var(--c-ink-muted);font-weight:var(--fw-black);flex:none;align-items:center;gap:6px;display:inline-flex}.switch--on{background:var(--c-mint-700);color:var(--c-snow)}.settings__transfer summary{cursor:pointer;font-weight:var(--fw-black);min-height:var(--touch);align-items:center;display:flex}.settings__code{width:100%;font:inherit;font-size:var(--fs-xs);border:2px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-2);margin:var(--sp-2) 0;resize:vertical;font-family:ui-monospace,Menlo,Consolas,monospace}.dialog__actions--start{justify-content:flex-start}.goal__progress{align-items:center;gap:var(--sp-2);display:flex}.goal__progress .bar{flex:1;margin-top:0}.goal__count{font-size:var(--fs-sm);font-weight:var(--fw-black);font-variant-numeric:tabular-nums;white-space:nowrap}.goal__reward{align-items:center;gap:4px;display:inline-flex}.goal--long{border-color:var(--c-gold-500)}.goal--done{border-color:var(--c-mint-500)}.goal--completed summary{cursor:pointer;font-weight:var(--fw-black);min-height:var(--touch);align-items:center;display:flex}.goal__list{margin:var(--sp-2) 0 0;font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--c-mint-700);flex-direction:column;gap:6px;padding:0;list-style:none;display:flex}.goal__list li{align-items:center;gap:6px;display:flex}.tutorial{left:50%;bottom:calc(var(--sp-3) + env(safe-area-inset-bottom));background:var(--c-snow);border:3px solid var(--c-gold-500);border-radius:var(--radius-lg);width:min(94vw,460px);padding:var(--sp-3);box-shadow:var(--shadow-float);z-index:30;gap:var(--sp-1);flex-direction:column;display:flex;position:fixed;transform:translate(-50%)}.tutorial__step{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink-muted);font-weight:var(--fw-black)}.tutorial__title{font-size:var(--fs-lg);font-weight:var(--fw-black)}.tutorial__body{font-size:var(--fs-sm)}.tutorial__actions{gap:var(--sp-2);margin-top:var(--sp-1);justify-content:flex-end;display:flex}.tutorial__actions .btn{width:auto}.tutorial~.toasts{bottom:calc(var(--sp-3) + 180px + env(safe-area-inset-bottom))}@media (min-width:1024px){.tutorial{left:var(--sp-4);width:min(46vw,440px);transform:none}.tutorial~.toasts{bottom:calc(var(--sp-3) + env(safe-area-inset-bottom))}}.footer{justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--c-ink-muted);font-weight:var(--fw-bold);padding:var(--sp-2) var(--sp-1);flex-wrap:wrap;display:flex}.scene{aspect-ratio:16/9;border:4px solid var(--c-snow);border-radius:var(--radius-lg);background:var(--c-sky-300);width:100%;min-height:200px;max-height:46vh;box-shadow:var(--shadow-card);position:relative;overflow:hidden}@media (max-width:599px){.scene{aspect-ratio:4/3;max-height:38vh}}@media (max-height:620px){.scene{min-height:160px;max-height:34vh}}.scene__svg{width:100%;height:100%;display:block}.scene__bubble{left:var(--sp-3);top:var(--sp-3);background:var(--c-snow);border:2px solid var(--border);border-radius:var(--radius-md);max-width:min(60%,260px);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);font-weight:var(--fw-bold);box-shadow:var(--shadow-card);position:absolute}.scene__bubble:after{content:"";border:6px solid #0000;border-top-color:var(--c-snow);border-bottom:0;position:absolute;bottom:-10px;left:18px}.sign-text{font-family:var(--font-body)}.penguin{animation:bob var(--dur-slow) ease-in-out infinite}@keyframes bob{0%,to{translate:0}50%{translate:0 -4px}}.smoke circle,.steam path{animation:3s ease-in-out infinite drift}.smoke circle:nth-child(2),.steam path:nth-child(2){animation-delay:1s}@keyframes drift{0%{opacity:.1;translate:0 6px}50%{opacity:.8}to{opacity:0;translate:4px -14px}}.cloud--1{animation:24s linear infinite alternate float}.cloud--2{animation:30s linear infinite alternate-reverse float}@keyframes float{0%{translate:-20px}to{translate:20px}}.aurora{animation:9s ease-in-out infinite alternate shimmer}@keyframes shimmer{0%{opacity:.45;translate:-10px}to{opacity:.9;translate:10px}}.flake{animation-name:fall;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes fall{0%{translate:0}to{translate:12px 470px}}.window--lit rect:first-child{filter:drop-shadow(0 0 4px #ffe3a1)}.burst circle{animation:1.1s ease-out forwards burst}@keyframes burst{0%{opacity:1;translate:0}to{opacity:0;translate:var(--dx) var(--dy)}}@media (prefers-reduced-motion:reduce){.burst{display:none}.penguin,.smoke circle,.steam path,.cloud--1,.cloud--2,.aurora,.flake{animation:none!important}.flake{display:none}}
