:root{--base: #f5eada;--accent: #1f2933;--accent-soft: #263443;--text: #1f2933;--radius: 18px;--font-sans: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh;display:flex;justify-content:center;background:var(--base);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;overflow:hidden}.game-over-active .hud,.game-over-active .stage{visibility:hidden;pointer-events:none}.game-over-active .overlay{visibility:visible;opacity:1;pointer-events:auto}.app{width:100%;max-width:420px;padding:.6rem .85rem 1rem;display:flex;flex-direction:column;gap:.6rem}.app__nav{display:flex;align-items:center;justify-content:space-between;padding:.35rem .25rem .15rem;position:sticky;top:0;z-index:4}.app__nav-actions{display:inline-flex;align-items:center;gap:.4rem}.app__nav-spacer{flex:1 1 auto}.app__logo{display:block;height:32px;width:auto;margin:0}.app__nav-button{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:999px;border:1.5px solid rgba(26,26,26,.2);background:#f5eadaa6;color:var(--accent);font-size:1rem;cursor:pointer;transition:transform .2s ease,background .2s ease}.app__nav-button:focus-visible{outline:3px solid rgba(245,234,218,.6);outline-offset:2px}.app__nav-button:hover{background:#f5eadacc;transform:translateY(-1px)}.app__nav-button img{width:18px;height:18px}.app[data-game-state=playing] .app__share-button,.app[data-game-state=paused] .app__share-button,.app[data-game-state=playing] .app__info-button,.app[data-game-state=paused] .app__info-button,.app[data-game-state=idle] .app__pause-button,.app[data-game-state=idle] .app__quit-button{display:none}.app__nav-button--hidden{display:none!important}.app__footer{flex:0 0 auto;margin-top:auto;padding-top:.3rem;text-align:center}.app__version{display:inline-block;font-size:.45rem;letter-spacing:.12em;text-transform:uppercase;opacity:.4}.privacy-dialog{width:min(90vw,340px);border:1px solid rgba(245,234,218,.35);border-radius:calc(var(--radius) + 6px);padding:0;background:radial-gradient(circle at top,#121826fa,#0a0d14fa);color:var(--base);box-shadow:0 26px 48px #00000073,0 0 0 6px #f5eada0d}.privacy-dialog::backdrop{background:#0000008c}.privacy-dialog__panel{display:flex;flex-direction:column;gap:.85rem;padding:1.15rem 1.4rem 1.35rem}.privacy-dialog__header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.privacy-dialog__title{margin:0;font-size:1.1rem;letter-spacing:.08em;text-transform:uppercase;color:#f5eadaeb}.privacy-dialog__close{border:2px solid rgba(245,234,218,.35);background:#f5eada14;border-radius:999px;color:var(--base);font-size:1.2rem;line-height:1;cursor:pointer;width:34px;height:34px;display:flex;align-items:center;justify-content:center;transition:background .2s ease,border-color .2s ease,transform .2s ease}.privacy-dialog__close:hover{background:#f5eada29;border-color:#f5eada80;transform:translateY(-1px)}.privacy-dialog__content{font-size:.85rem;line-height:1.5;color:#f5eadae6}.privacy-dialog__content p{margin:0 0 .6rem}.privacy-dialog__footer{text-align:center;opacity:.7}.privacy-dialog__footer a{color:inherit;text-decoration:underline;text-decoration-color:#f5eada99}.roulette-dialog{width:min(92vw,340px);border:1px solid rgba(245,234,218,.3);border-radius:calc(var(--radius) + 6px);padding:0;background:radial-gradient(circle at top,#101624fa,#090d16fa);color:var(--base);box-shadow:0 28px 48px #00000080,0 0 0 6px #f5eada0f}.roulette-dialog::backdrop{background:#04060cb3}.roulette-dialog__panel{display:flex;flex-direction:column;gap:1rem;padding:1.4rem 1.4rem 1.6rem}.roulette-dialog__header{text-align:center;display:flex;flex-direction:column;gap:.35rem}.roulette-dialog__title{margin:0;font-size:1.1rem;letter-spacing:.18em;text-transform:uppercase;color:#f5eadaf2}.roulette-dialog__subtitle{margin:0;font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:#f5eadaa6}.roulette-dialog__wheel{position:relative;border-radius:calc(var(--radius) + 4px);border:1.5px solid rgba(245,234,218,.22);background:#2029388c;padding:.85rem .7rem 1.2rem;overflow:hidden}.roulette-dialog__options{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.roulette-dialog__option{padding:.55rem .4rem;border-radius:calc(var(--radius) - 8px);border:1.5px solid rgba(245,234,218,.18);background:#0c101885;text-align:center;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:#f5eadab8;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}.roulette-dialog__option--active{background:#f5eadae6;color:var(--accent);border-color:#f5eadad9;transform:scale(1.05);box-shadow:0 8px 18px #0000004d}.roulette-dialog__indicator{position:absolute;top:6px;left:50%;width:16px;height:16px;transform:translate(-50%) rotate(45deg);border:2px solid rgba(245,234,218,.8);border-bottom:none;border-left:none;background:#f5eada33;box-shadow:0 0 12px #f5eada4d}.roulette-dialog__status{margin:0;font-size:.68rem;letter-spacing:.12em;text-align:center;color:#f5eadabf;min-height:1.4em}.roulette-dialog__actions{display:flex;flex-direction:column;gap:.45rem}.roulette-dialog__button{border-radius:calc(var(--radius) + 2px);border:2px solid rgba(245,234,218,.8);padding:.75rem 1rem;text-transform:uppercase;letter-spacing:.2em;font-size:.74rem;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,color .2s ease}.roulette-dialog__button--primary{background:#f5eadaf2;color:var(--accent);box-shadow:0 14px 28px #00000059}.roulette-dialog__button--secondary{background:transparent;color:#f5eadacc;border-color:#f5eada59}.roulette-dialog__button--confirm{background:#51d1922e;border-color:#51d19299;color:#c8f7dff2}.roulette-dialog__button:hover:not([disabled]){transform:translateY(-1px);box-shadow:0 16px 32px #00000059}.roulette-dialog__button:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.hud{display:none;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:1fr;gap:.3rem;text-transform:uppercase;font-size:.48rem;letter-spacing:.035em}.hud__item{background:var(--accent);color:var(--base);padding:.22rem .36rem;border-radius:calc(var(--radius) - 6px);border:1.5px solid var(--accent);display:grid;gap:.2rem;justify-items:center;align-items:center;text-align:center}.hud__label{opacity:.7}.hud__value{font-size:.62rem;letter-spacing:.02em}.hud__item--compact{padding:.2rem .32rem}.hud__item--compact .hud__value{font-size:.56rem}.stage{position:relative;flex:1 1 auto;min-height:clamp(340px,62vh,600px);height:auto;background:var(--accent);border-radius:calc(var(--radius) + 6px);border:2px solid var(--accent);overflow:hidden;box-shadow:0 20px 40px #1f29334d}.stage:after,.stage:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .12s ease,transform .4s ease;z-index:2}.stage:after{background:#84101059}.stage--hit:after{opacity:1}.stage:before{background:radial-gradient(circle at center,#f44c4c85,#8c1212ad 35%,#1f2933eb 90%);transform:scale(.92);filter:blur(2px)}.stage--game-over:before{opacity:1;transform:scale(1);animation:stageGameOverTint .7s ease-out forwards}@keyframes stageGameOverTint{0%{opacity:0;transform:scale(.92)}25%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.05)}}.stage__status{position:absolute;top:.5rem;left:.5rem;right:.5rem;display:flex;align-items:center;justify-content:center;gap:.45rem;z-index:3;flex-wrap:wrap}.stage__effects{position:absolute;inset:0;pointer-events:none;z-index:4}.stage__explosion{position:absolute;width:16px;height:16px;border:2px solid rgba(245,234,218,.9);border-radius:50%;transform:translate(-50%,-50%) scale(0);opacity:1;box-shadow:0 0 16px #f44c4c8c;animation:stageExplosion .7s ease-out forwards;animation-delay:var(--explosion-delay, 0ms)}.stage__explosion:after{content:"";position:absolute;inset:-6px;border:1px solid rgba(244,76,76,.35);border-radius:50%;opacity:.8}@keyframes stageExplosion{0%{transform:translate(-50%,-50%) scale(0);opacity:1;box-shadow:0 0 16px #f44c4c8c}40%{opacity:.85;box-shadow:0 0 24px #f44c4c99}to{transform:translate(-50%,-50%) scale(3.4);opacity:0;box-shadow:0 0 #f44c4c00}}.stage__status>*{height:35px}.stage__score{margin-left:auto}.start-screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:1.2rem;background:linear-gradient(180deg,#0a0c12f0,#141820f5 45%,#1a1f2cfa);z-index:5;transition:opacity .3s ease}.start-screen--hidden{opacity:0;pointer-events:none}.start-screen--intro .start-screen__panel{animation:start-screen-panel-in .7s cubic-bezier(.19,1,.22,1) forwards}.start-screen--intro .start-screen__logo-wrapper{animation:start-screen-logo-pop .8s cubic-bezier(.22,1,.36,1) forwards}.start-screen__panel{width:min(90%,320px);border:2px solid rgba(245,234,218,.85);border-radius:calc(var(--radius) + 10px);padding:1.8rem 1.4rem;background:radial-gradient(circle at top,#2d3748cc,#1a1f2cf2);text-align:center;box-shadow:0 24px 45px #00000073,0 0 0 6px #f5eada0f;display:flex;flex-direction:column;gap:.9rem;position:relative}.start-screen__panel:before,.start-screen__panel:after{content:"";position:absolute;inset:12px;border:1px dashed rgba(245,234,218,.25);border-radius:calc(var(--radius) + 6px);pointer-events:none}.start-screen__panel:after{inset:24px;border-style:dotted;opacity:.18}.start-screen__tagline{margin:0;font-size:.72rem;letter-spacing:.36em;text-transform:uppercase;color:#f5eadaad}.start-screen__logo-wrapper{position:relative;display:inline-flex;align-items:center;justify-content:center;pointer-events:none}.start-screen__logo{display:block;width:min(154px,55%);height:auto;margin:0 auto;filter:drop-shadow(0 12px 24px rgba(0,0,0,.45)) invert(1);mix-blend-mode:screen;opacity:.78;position:relative;z-index:2}.start-screen__star{position:absolute;display:block;width:10px;height:10px;border-radius:999px;background:#f5eadad9;box-shadow:0 0 12px #f5eadab3;opacity:0;animation:start-screen-star-blink 3.4s ease-in-out infinite}.start-screen__star:before,.start-screen__star:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#f5eadad9;border-radius:999px}.start-screen__star:before{width:2px;height:12px}.start-screen__star:after{width:12px;height:2px}.start-screen__star--one{top:18%;left:14%;animation-delay:.25s}.start-screen__star--two{top:32%;right:10%;animation-delay:1.15s}.start-screen__star--three{bottom:18%;left:26%;animation-delay:2s}.start-screen__subtitle{margin:0;font-size:.82rem;letter-spacing:.36em;text-transform:uppercase;color:#f5eada99}.start-screen__divider{width:100%;height:2px;border-radius:999px;background:linear-gradient(90deg,transparent,rgba(245,234,218,.6),transparent)}.start-screen__features{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:#f5eadab3}.start-screen__button{align-self:center;padding:.95rem 1.9rem;background:#f5eadaf5;color:var(--accent);border:2px solid rgba(245,234,218,.9);border-radius:calc(var(--radius) + 10px);text-transform:uppercase;letter-spacing:.22em;font-size:.92rem;font-weight:700;cursor:pointer;box-shadow:0 16px 32px #00000059;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.start-screen__button:hover{transform:translateY(-2px);box-shadow:0 20px 36px #0006;background:#f5eada}.start-screen__button:focus-visible{outline:3px solid rgba(245,234,218,.7);outline-offset:4px}.start-screen__hint{margin:0;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:#f5eada99}.start-screen__panel:before,.start-screen__panel:after,.start-screen__divider{animation:startScreenPulse 3.2s ease-in-out infinite}@keyframes startScreenPulse{0%,to{opacity:.35}50%{opacity:.75}}canvas{width:100%;height:100%;display:block;touch-action:none}.healthbar{display:flex;align-items:center;gap:.35rem;padding:.25rem .35rem;border-radius:999px;background:#1f2933c7;border:1.5px solid rgba(245,234,218,.85);min-width:120px;height:35px;width:140px}.healthbar__label{font-size:.55rem;letter-spacing:.12em;text-transform:uppercase;color:var(--base);opacity:.7}.healthbar__track{position:relative;flex:1;height:.45rem;background:#f5eada33;border-radius:999px;overflow:hidden}.healthbar__fill{width:100%;height:100%;background:linear-gradient(90deg,#32d583,#f97066);border-radius:inherit;transition:width .2s ease}.healthbar__value{font-size:.55rem;letter-spacing:.1em;color:var(--base);opacity:.8;min-width:2.6rem;text-align:right}.stage__score,.stage__wave{display:flex;flex-direction:column;align-items:center;padding:.25rem .35rem;background:#1f2933c7;border:1.5px solid rgba(245,234,218,.85);border-radius:var(--radius);min-width:70px;justify-content:center}.stage__score-label,.stage__wave-label{font-size:.55rem;letter-spacing:.12em;text-transform:uppercase;color:var(--base);opacity:.7}.stage__score-value,.stage__wave-value{font-size:.72rem;font-weight:600;color:var(--base)}.spice-message{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%) scale(.9);padding:.6rem 1.2rem;border-radius:var(--radius);border:2px solid var(--base);color:var(--base);background:#f44c4c38;letter-spacing:.3em;text-transform:uppercase;font-weight:700;transition:opacity .25s ease,transform .25s ease;opacity:0;pointer-events:none;z-index:1}.spice-message--visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.spice-message--hidden{opacity:0;transform:translate(-50%,-50%) scale(.9)}.banner{position:absolute;inset:15% 50% auto;width:65%;max-width:280px;padding:.85rem 1.15rem;border:2px solid var(--base);color:var(--base);text-align:center;text-transform:uppercase;letter-spacing:.4em;font-weight:700;border-radius:var(--radius);transform:translate(-50%,-50%) scale(.86);opacity:0;transition:opacity .3s ease,transform .3s ease;pointer-events:none;background:#1f293359;backdrop-filter:blur(6px)}.banner--visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.banner--hidden{opacity:0;transform:translate(-50%,-50%) scale(.86)}.overlay{position:absolute;inset:0;display:grid;place-items:center;background:#1f2933eb;transition:opacity .3s ease;z-index:6}.overlay--hidden{opacity:0;pointer-events:none}.overlay__panel{width:min(85%,340px);background:var(--accent);border:2px solid var(--base);border-radius:calc(var(--radius) + 4px);padding:1.5rem;color:var(--base);display:flex;flex-direction:column;gap:1rem;text-align:center}.overlay__title{margin:0;font-size:1.75rem;letter-spacing:.18em;text-transform:uppercase}.overlay__score{margin:0;font-size:1rem;letter-spacing:.08em;opacity:.8}.overlay__form{display:flex;flex-direction:column;gap:.75rem;text-align:left}.overlay__label{text-transform:uppercase;font-size:.7rem;letter-spacing:.2em;opacity:.7}.overlay__input{background:var(--accent-soft);border:2px solid transparent;border-radius:var(--radius);padding:.75rem 1rem;color:var(--base);font-size:1rem;letter-spacing:.05em}.overlay__input:focus{outline:none;border-color:var(--base)}.overlay__button{padding:.75rem 1rem;border-radius:var(--radius);border:2px solid var(--base);background:var(--base);color:var(--accent);font-size:.95rem;letter-spacing:.1em;text-transform:uppercase;font-weight:600}.overlay__button--secondary{background:transparent;color:var(--base)}.overlay__button:focus-visible{outline:3px solid rgba(245,234,218,.55);outline-offset:2px}.overlay__highscores{display:flex;flex-direction:column;gap:.5rem;font-size:.8rem;letter-spacing:.08em;max-height:160px;overflow-y:auto}.overlay__tabs{display:flex;justify-content:center;gap:.6rem;margin:.85rem 0 .5rem}.overlay__tab{border:2px solid var(--base);background:transparent;color:var(--base);padding:.35rem .95rem;border-radius:999px;text-transform:uppercase;letter-spacing:.12em;font-size:.65rem;cursor:pointer;transition:background .2s ease,color .2s ease}.overlay__tab--active{background:var(--base);color:var(--accent)}.overlay__tab:focus-visible{outline:3px solid rgba(245,234,218,.55);outline-offset:2px}.overlay__row{display:grid;grid-template-columns:.6fr 1.7fr 1fr 1fr;gap:.5rem;background:var(--accent-soft);padding:.5rem .75rem;border-radius:var(--radius)}.overlay__row span:nth-child(1){text-align:center}.overlay__row span:nth-child(3),.overlay__row span:nth-child(4),.overlay__row span:nth-child(5){text-align:right}.overlay__empty{margin:0;text-align:center;opacity:.7}.overlay__notice{margin:0;text-align:center;font-size:.7rem;opacity:.7}.toast{position:absolute;left:50%;bottom:1.2rem;transform:translate(-50%,20px);background:#1f2933eb;color:var(--base);padding:.6rem 1.1rem;border-radius:999px;border:2px solid var(--base);letter-spacing:.12em;text-transform:uppercase;font-size:.65rem;transition:opacity .3s ease,transform .3s ease}.toast--hidden{opacity:0;pointer-events:none}.toast:not(.toast--hidden){opacity:1;transform:translate(-50%)}.update-loading{position:fixed;inset:0;z-index:999;background:radial-gradient(circle at top,#0b0f17,#05070c);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s ease}.update-loading--visible{opacity:1;pointer-events:auto}.update-loading__panel{display:flex;flex-direction:column;align-items:center;gap:.9rem;padding:1.6rem 2.1rem;border-radius:28px;border:1.5px solid rgba(245,234,218,.25);background:#0f1623d9;box-shadow:0 30px 48px #000000bf;transform:translateY(10px);opacity:.75;transition:opacity .3s ease,transform .3s ease}.update-loading--visible .update-loading__panel{transform:translateY(0);opacity:1}.update-loading__spinner{width:48px;height:48px;border-radius:999px;border:3px solid rgba(245,234,218,.25);border-top-color:#f5eada;animation:update-spin 1s linear infinite}.update-loading__text{margin:0;font-size:.85rem;letter-spacing:.2em;text-transform:uppercase;color:#f5eadaeb;text-align:center}@keyframes update-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes start-screen-panel-in{0%{opacity:0;transform:translateY(32px) scale(.94)}60%{opacity:1;transform:translateY(-6px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes start-screen-logo-pop{0%{opacity:0;transform:translateY(18px) scale(.9)}50%{opacity:1;transform:translateY(-6px) scale(1.04)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes start-screen-star-blink{0%{opacity:0;transform:scale(.4)}20%{opacity:1;transform:scale(1)}45%{opacity:.4;transform:scale(.6)}70%{opacity:1;transform:scale(1.15)}to{opacity:0;transform:scale(.5)}}@media(min-width:480px){.hud__value{font-size:1.2rem}.overlay__title{font-size:2rem}}
