.confetti{z-index:20;pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti__fall{animation-name:confetti-fall;animation-timing-function:cubic-bezier(.35,0,.75,.9);animation-fill-mode:both;position:absolute;top:-24px}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0)}88%{opacity:1}to{opacity:0;transform:translateY(calc(100dvh + 48px))}}.confetti__sway{animation:ease-in-out infinite alternate confetti-sway;display:block}@keyframes confetti-sway{0%{translate:calc(var(--sway) * -1) 0}to{translate:var(--sway) 0}}.confetti__piece{border-radius:1px;animation:linear infinite confetti-spin;display:block}.confetti__piece--round{border-radius:50%}@keyframes confetti-spin{0%{transform:rotate(0)rotateX(0)}to{transform:rotate(360deg)rotateX(360deg)}}@media (prefers-reduced-motion:reduce){.confetti{display:none}}.win-result{flex-direction:column;align-items:center;gap:.6rem;width:100%;margin-bottom:.75rem;display:flex}.overlay__card .win-result__time{color:var(--color-text);font-variant-numeric:tabular-nums;margin:0;font-size:1.35rem;font-weight:700}.win-result__label{color:var(--color-muted);font-size:.95rem;font-weight:600}.mention{border-radius:14px;width:100%;padding:.6rem .8rem;animation:.5s cubic-bezier(.2,.9,.3,1.4) .35s backwards mention-in}.overlay__card .mention__title{margin:0;font-size:1.15rem;font-weight:800}.overlay__card .mention__text{margin:.15rem 0 0;font-size:.85rem}@keyframes mention-in{0%{opacity:0;transform:scale(.6)}}.mention--perfect{border:2px solid var(--color-accent);background:linear-gradient(135deg,#f5a52447,#f5a5241a);animation:.5s cubic-bezier(.2,.9,.3,1.4) .35s backwards mention-in,2.2s ease-in-out .9s infinite mention-glow;position:relative;overflow:hidden;box-shadow:0 0 18px #f5a52459}.overlay__card .mention--perfect .mention__title{color:var(--color-accent);letter-spacing:.02em;font-size:1.35rem}.overlay__card .mention--perfect .mention__text{color:var(--color-text)}.mention--perfect:after{content:"";pointer-events:none;background:linear-gradient(110deg,#0000 30%,#ffffff73 45%,#0000 60%);animation:2.6s ease-in-out 1s infinite mention-shine;position:absolute;inset:0;transform:translate(-120%)}@keyframes mention-glow{50%{box-shadow:0 0 28px #f5a52499}}@keyframes mention-shine{0%,55%{transform:translate(-120%)}to{transform:translate(120%)}}.mention--clean{border:1px solid var(--color-surface-border);background:#ffffff0d}.overlay__card .mention--clean .mention__title{color:var(--color-text);letter-spacing:.02em;font-size:1.35rem}@media (prefers-reduced-motion:reduce){.mention,.mention--perfect,.mention--perfect:after{animation:none}}.board{aspect-ratio:1;grid-template-columns:repeat(var(--size), minmax(0, 1fr));grid-template-rows:repeat(var(--size), minmax(0, 1fr));touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;cursor:pointer;gap:3px;width:100%;display:grid}.cell{background:var(--region);border-radius:6px;min-width:0;min-height:0;transition:filter .12s;position:relative;overflow:hidden}.cell__dragon,.cell__mark{pointer-events:none;margin:auto;position:absolute;inset:0}@media (hover:hover){.cell:hover{filter:brightness(1.08)}}.cell__dragon{width:78%;height:78%;color:var(--color-dragon);animation:.18s ease-out pop}.cell__mark{width:67%;height:67%;color:color-mix(in srgb, var(--region) 47%, var(--color-bg));overflow:visible}.cell__mark .mark__line{stroke-dasharray:1 2;animation:.11s ease-out backwards mark-draw}.cell__mark .mark__line--2{animation-delay:90ms}@keyframes mark-draw{0%{stroke-dashoffset:1px;opacity:0}1%{opacity:1}to{stroke-dashoffset:0}}.cell__mark--ripple .mark__line,.cell__mark--error .mark__line{animation:none}.cell--conflict{background-image:repeating-linear-gradient(45deg,#d32f2f59 0 6px,#0000 6px 12px)}.cell--conflict .cell__dragon{color:var(--color-danger)}.cell--error{cursor:not-allowed;background-image:linear-gradient(#140a1459,#140a1459);animation:.32s ease-in-out shake}.cell__mark--error{color:var(--color-danger);filter:drop-shadow(0 0 3px #fff9);animation:.18s ease-out pop}.board--won .cell__dragon{animation:.7s ease-in-out 2 celebrate}.board--won,.board--lost{cursor:default}.cell--nudge:after{content:"";pointer-events:none;background:linear-gradient(115deg,#0000 0 32%,#ffffff80 35% 46%,#0000 48.5% 52%,#fff6 53.5% 59%,#0000 61.5%);animation:4s ease-in-out 1s infinite glint;position:absolute;inset:-10%;transform:translate(-110%)}@keyframes glint{0%,72%{transform:translate(-110%)}86%,to{transform:translate(110%)}}.cell--hint-reason{box-shadow:inset 0 0 0 3px #ffffffd9}.cell--hint-target{box-shadow:inset 0 0 0 3px var(--color-accent);animation:1.1s ease-in-out infinite hint-pulse}@keyframes hint-pulse{50%{filter:brightness(1.25);box-shadow:inset 0 0 0 4px var(--color-accent), 0 0 10px var(--color-accent)}}@keyframes shake{20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@keyframes pop{0%{transform:scale(.4)}to{transform:scale(1)}}@keyframes celebrate{50%{transform:scale(1.15)rotate(-6deg)}}@media (prefers-reduced-motion:reduce){.cell__dragon,.cell--error,.cell--nudge:after,.cell--hint-target,.cell__mark--error,.board--won .cell__dragon{animation:none}.cell--nudge:after{display:none}.cell--nudge{box-shadow:inset 0 0 0 2px #fff9}}.board--intro .cell{animation:.38s ease-out both cell-in;animation-delay:calc(var(--intro-delay) + var(--diag) * var(--intro-step))}@keyframes cell-in{0%{opacity:0;transform:scale(.3)}45%{opacity:1;transform:scale(1.22)}70%{transform:scale(.9)}87%{transform:scale(1.05)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.board--intro .cell{animation:none}}.cell__mark--ripple{animation:.26s ease-out backwards mark-ripple}@keyframes mark-ripple{0%{opacity:0;transform:scale(.2)}60%{transform:scale(1.25)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.cell__mark--ripple,.cell__mark .mark__line{animation:none}}.board{--off-ms:.26s}.cell{transition:filter .12s, background-color var(--off-ms) ease-out}.cell.cell--off{filter:none;cursor:default;transition:background-color var(--off-ms) ease-out var(--off-delay);background-color:#ffffff0a}.cell__mark{transition:opacity var(--off-ms) ease-out}.cell--off .cell__mark{opacity:0;transition:opacity var(--off-ms) ease-out var(--off-delay)}@media (prefers-reduced-motion:reduce){.cell--off .cell__mark,.cell.cell--off{transition:none}}.roster{--gap:3px;--cell:calc((100% - (var(--size) - 1) * var(--gap)) / var(--size));justify-content:center;gap:calc(var(--gap) * 2);width:100%;margin:0;padding:0;list-style:none;display:flex}.roster__slot{flex:0 0 calc(var(--cell) * .8);aspect-ratio:1;background:var(--region);opacity:.45;border-radius:6px;transition:opacity .2s;position:relative}.roster__dragon{width:78%;height:78%;color:var(--color-dragon);filter:brightness(0)opacity(.35);margin:auto;position:absolute;inset:0}.roster__slot--found{opacity:1}.roster__slot--found .roster__dragon{color:var(--color-dragon);filter:none;animation:.38s ease-out roster-found}@keyframes roster-found{0%{transform:scale(.3)}60%{transform:scale(1.2)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.roster__slot--found .roster__dragon{animation:none}}.game{min-height:100dvh;padding:max(.75rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));text-align:center;flex-direction:column;align-items:center;gap:.9rem;display:flex}.game__topbar{grid-template-columns:1fr auto 1fr;align-items:center;width:min(100%,480px);display:grid}.game__level p{margin:0}.game__level-number{letter-spacing:.02em;font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:.25rem;font-size:1.15rem;font-weight:700;display:flex}.level-arrow{width:32px;height:32px;color:var(--color-accent);font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:8px;padding:0;font-size:1.5rem;line-height:1}.level-arrow:disabled{opacity:.3;cursor:default}.game__dev{color:var(--color-accent);white-space:nowrap;font-family:ui-monospace,monospace;font-size:.7rem}.game__difficulty{color:var(--color-muted);white-space:nowrap;font-size:.8rem}.game__topbar>:last-child{justify-self:end}.game__footer{width:min(100%,480px,100dvh - 250px);margin-bottom:clamp(.25rem,3dvh,1.75rem)}.game__bottom{justify-content:space-between;align-items:center;gap:.75rem;min-height:44px;display:flex}.game__bottom--alone{justify-content:center}.game__board{width:100%;transform:translateY(calc(-1 * var(--lift,0px)));flex:1;place-items:center;transition:transform .32s cubic-bezier(.2,.8,.2,1);display:grid}.game__play{flex-direction:column;gap:.75rem;width:min(100%,480px,100dvh - 250px);display:flex}.hint{left:50%;bottom:max(.75rem, env(safe-area-inset-bottom));z-index:5;border:1px solid var(--color-surface-border);background:var(--color-surface);text-align:left;border-radius:18px;flex-direction:column;gap:.75rem;width:min(100% - 1.5rem,480px);padding:1rem 1.15rem 1.1rem;animation:.32s cubic-bezier(.2,.8,.2,1) hint-in;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #0006}.hint__text{margin:0;line-height:1.4}.hint__actions{gap:.6rem;display:flex}.hint__actions .btn--primary{flex:1;min-width:0}.hint__actions .btn:not(.btn--primary){flex:0 0 5rem}@keyframes hint-in{0%{transform:translate(-50%,calc(100% + 2rem))}}.lives{gap:.3rem;display:flex}.lives__heart{width:1.6rem;height:1.6rem;fill:var(--color-danger-bright);transition:fill .2s,transform .2s}.lives__heart--lost{fill:var(--color-surface-border);transform:scale(.85)}.back-btn{justify-self:start}.game__subtitle{color:var(--color-muted);white-space:nowrap;font-size:.8rem}.hint-btn{border:1px solid var(--color-surface-border);background:var(--color-surface);min-height:44px;color:var(--color-text);font:inherit;cursor:pointer;touch-action:manipulation;border-radius:22px;align-self:center;align-items:center;gap:.4rem;padding:0 1.4rem;font-weight:600;display:inline-flex}.hint-btn:active:not(:disabled){transform:scale(.96)}.hint-btn:disabled{opacity:.4;cursor:default}.hint-btn:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.hint-btn--dev{color:var(--color-accent);border-style:dashed}.assist{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid}.assist__details{display:grid}.assist__detail{visibility:hidden;opacity:0;will-change:opacity;grid-area:1/1;transition:opacity .2s,visibility .2s}.assist__detail[data-on=true]{visibility:visible;opacity:1}.assist__option{background:var(--color-bg);color:var(--color-muted);font:inherit;cursor:pointer;touch-action:manipulation;will-change:transform;border:2px solid #0000;border-radius:14px;flex-direction:column;align-items:center;gap:.5rem;padding:.6rem .5rem .55rem;font-size:.85rem;font-weight:700;transition:border-color .2s,box-shadow .2s,color .2s,transform .2s;display:flex;transform:translateZ(0)}.assist__option:active{transform:translateZ(0)scale(.96)}.assist__option:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.assist__option--on{border-color:var(--color-accent);color:var(--color-text);box-shadow:0 0 14px #f5a5244d}.assist__name{line-height:1.1}.assist__option:not(.assist__option--on) .mini{opacity:.55;filter:saturate(.7)}.mini{aspect-ratio:1;will-change:opacity, filter;grid-template-columns:repeat(4,1fr);gap:2px;width:100%;max-width:88px;transition:opacity .2s,filter .2s;display:grid}.mini__cell{background:var(--region);border-radius:3px;position:relative}.mini__dragon,.mini__mark{margin:auto;position:absolute;inset:0}.mini__dragon{width:82%;height:82%;color:var(--color-dragon)}.mini__mark{width:62%;height:62%;color:color-mix(in srgb, var(--region) 47%, var(--color-bg));overflow:visible}.mini--ghost .mini__cell--blocked{background:#ffffff0d}.mini--play .mini__dragon{animation:.26s ease-out backwards mini-dragon}.mini--play .mini__mark{animation:.26s ease-out backwards mini-mark;animation-delay:calc(.2s + var(--delay))}.mini--play.mini--ghost .mini__cell--blocked{animation:.3s ease-out backwards mini-ghost;animation-delay:calc(.2s + var(--delay))}@keyframes mini-dragon{0%{opacity:0;transform:scale(.3)}}@keyframes mini-mark{0%{opacity:0;transform:scale(.2)}60%{transform:scale(1.25)}to{transform:scale(1)}}@keyframes mini-ghost{0%{background:var(--region)}}.assist__preview{justify-content:center;width:100%;display:flex;position:relative}.assist__option--locked{cursor:default;justify-content:center}.assist__option--locked:active{transform:translateZ(0)}.assist__option.assist__option--locked .mini{opacity:.4;filter:grayscale()blur(3px)}.assist__lock{color:var(--color-text);text-shadow:0 1px 3px #0009;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;font-size:.8rem;font-weight:800;display:flex;position:absolute;inset:0}.assist__lock>span{font-size:1.5rem;line-height:1}.assist__option--locked .assist__name{opacity:.6}@media (prefers-reduced-motion:reduce){.mini--play .mini__dragon,.mini--play .mini__mark,.mini--play.mini--ghost .mini__cell--blocked{animation:none}}.unlock__card{animation:.52s cubic-bezier(.2,.9,.3,1.25) backwards unlock-card;overflow:hidden}@keyframes unlock-card{0%{opacity:0;transform:scale(.6)translateY(20px)}}.overlay__card .unlock__badge{color:var(--color-accent);letter-spacing:.08em;text-transform:uppercase;background:#f5a52426;border-radius:999px;margin:0;padding:.25rem .75rem;font-size:.8rem;font-weight:800;animation:1.6s ease-in-out infinite unlock-badge}@keyframes unlock-badge{50%{background:#f5a5244d}}.unlock__stage{place-items:center;width:170px;height:170px;margin:.25rem 0;display:grid;position:relative}.unlock__rays,.unlock__glow{pointer-events:none;border-radius:50%;position:absolute;inset:0}.unlock__rays{background:repeating-conic-gradient(#f5a52429 0 10deg, transparent 10deg 30deg);animation:14s linear infinite unlock-spin;inset:-30px;-webkit-mask-image:radial-gradient(circle,#000 25%,#0000 70%);mask-image:radial-gradient(circle,#000 25%,#0000 70%)}.unlock__glow{background:radial-gradient(circle,#f5a52459,#0000 70%);animation:2.6s ease-in-out infinite unlock-pulse;inset:15px}@keyframes unlock-spin{to{rotate:360deg}}@keyframes unlock-pulse{50%{opacity:.7;scale:1.12}}.mini.unlock__mini{filter:drop-shadow(0 4px 12px #00000073);gap:3px;max-width:112px;position:relative}.mini.unlock__mini--enter{animation:.6s cubic-bezier(.2,.9,.3,1.3) .15s backwards unlock-mini}@keyframes unlock-mini{0%{opacity:0;rotate:-12deg;scale:.3}}.unlock__mini .mini__cell{border-radius:4px}.mini.unlock__mini{background:var(--color-surface);box-shadow:0 0 0 4px var(--color-surface);border-radius:6px}.unlock__mini.mini--ghost .mini__cell--blocked{background:color-mix(in srgb, white 5%, var(--color-surface))}.overlay__card .unlock__name{font-size:2rem}@media (prefers-reduced-motion:reduce){.unlock__card,.unlock__badge,.unlock__rays,.unlock__glow,.mini.unlock__mini--enter{animation:none}}.home{min-height:100dvh;padding:max(1.5rem, env(safe-area-inset-top)) 1.5rem max(1.5rem, env(safe-area-inset-bottom));flex-direction:column;justify-content:center;align-items:center;gap:3rem;display:flex}.home__hero{flex-direction:column;align-items:center;gap:.5rem;display:flex}.home__logo{width:96px;height:96px;color:var(--color-accent);animation:3s ease-in-out infinite home-float}.home__title{letter-spacing:.02em;color:var(--color-accent);margin:0;font-size:clamp(3rem,15vw,4.5rem);font-weight:800;line-height:1}.home__menu{flex-direction:column;gap:.85rem;width:min(100%,320px);display:flex}.home__btn{border:1px solid var(--color-surface-border);background:var(--color-surface);min-height:64px;color:var(--color-text);font:inherit;cursor:pointer;touch-action:manipulation;border-radius:18px;grid-template-columns:3rem 1fr 3rem;align-items:center;padding:.6rem 1rem;display:grid}.home__btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}.home__btn:active{transform:scale(.97)}.home__btn:focus-visible{outline:3px solid var(--color-text);outline-offset:2px}.home__btn-label{font-size:1.2rem;font-weight:700}.home__btn-detail{opacity:.75;font-size:.85rem}@keyframes home-float{50%{transform:translateY(-6px)}}@media (prefers-reduced-motion:reduce){.home__logo{animation:none}}.page{min-height:100dvh;padding:max(.75rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));flex-direction:column;align-items:center;gap:1.25rem;display:flex}.page__topbar{grid-template-columns:44px 1fr 44px;align-items:center;width:min(100%,480px);display:grid}.page__title{text-align:center;grid-column:2;margin:0;font-size:1.3rem}.page__list{flex-direction:column;gap:.6rem;width:min(100%,480px);display:flex}.setting{border:1px solid var(--color-surface-border);background:var(--color-surface);min-height:64px;color:var(--color-text);font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;border-radius:14px;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.setting:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.setting__text{flex-direction:column;gap:.15rem;display:flex}.setting__label{font-weight:700}.setting__detail{color:var(--color-muted);font-size:.8rem;line-height:1.35}.setting--danger .setting__label{color:var(--color-danger-bright)}.ranking-day{justify-content:center;align-items:center;gap:.5rem;display:flex}.ranking-day__label{text-align:center;min-width:11rem;margin:0;font-weight:700}.ranking-msg{color:var(--color-muted);text-align:center;margin:1rem 0}.ranking{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.ranking__row{background:var(--color-surface);border-radius:12px;grid-template-columns:2.5rem 1fr auto;align-items:center;gap:.5rem;min-height:48px;padding:0 1rem;display:grid}.ranking__row--me{outline:2px solid var(--color-accent)}.ranking__rank{color:var(--color-muted);font-variant-numeric:tabular-nums;font-weight:700}.ranking__name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.ranking__time{font-variant-numeric:tabular-nums;font-weight:700}.text-input{border:1px solid var(--color-surface-border);background:var(--color-bg);min-width:0;min-height:48px;color:var(--color-text);font:inherit;border-radius:12px;padding:0 .9rem}.text-input:focus-visible{outline:3px solid var(--color-accent);outline-offset:1px}.setting--input{cursor:default;flex-direction:column;align-items:stretch}.result__form{width:100%;color:var(--color-muted);text-align:left;flex-direction:column;gap:.5rem;margin-bottom:.75rem;font-size:.9rem;display:flex}.result__row{gap:.5rem;display:flex}.result__row .text-input{flex:1}.result__submit{min-width:4rem}.result__status{margin:0 0 .75rem;font-size:1.05rem}.result__line{margin:0}.overlay__card .result__line--error{color:var(--color-danger-bright);font-size:.95rem}.result__retry{border:1px solid var(--color-surface-border);color:var(--color-text);font:inherit;cursor:pointer;background:0 0;border-radius:10px;margin-top:.4rem;padding:.3rem .8rem}.nickname{flex-direction:column;gap:.75rem;width:min(100%,360px);margin-top:2rem;display:flex}.nickname__label{text-align:center;font-size:1.3rem;font-weight:700}.nickname__help{color:var(--color-muted);text-align:center;margin:0 0 .5rem}.home__btn:disabled{opacity:.5;cursor:default}.home__btn:disabled:active{transform:none}.segmented{background:var(--color-bg);border-radius:12px;gap:.25rem;padding:.25rem;display:flex}.segmented__option{min-height:44px;color:var(--color-muted);font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:9px;flex:1;font-weight:600}.segmented__option--on{background:var(--color-accent);color:var(--color-bg)}.segmented__option:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.home__btn-icon{justify-self:center;font-size:2.1rem;line-height:1}.home__btn-text{flex-direction:column;align-items:center;gap:.1rem;display:flex}.setting:disabled{opacity:.6;cursor:default}.home__row{flex-direction:column;display:flex;position:relative}.home__mini{z-index:1;cursor:pointer;touch-action:manipulation;filter:drop-shadow(0 2px 3px #00000080);background:0 0;border:none;place-items:center;width:38px;height:38px;padding:0;font-size:1.5rem;display:grid;position:absolute;top:-12px;right:-12px}.home__mini:disabled{cursor:default}.home__mini--working span{animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}:root{--color-bg:#1e1b2e;--color-surface:#2a2640;--color-surface-border:#3d3758;--color-text:#f4f1ff;--color-muted:#a9a3c4;--color-accent:#f5a524;--color-edge:#14111f;--color-dragon:#2b2140;--color-danger:#c62828;--color-danger-bright:#ef5350;--region-0:#ec6969;--region-1:#89d668;--region-2:#639ce6;--region-3:#f9b3d3;--region-4:#efdb6f;--region-5:#7bd6e4;--region-6:#be62db;--region-7:#eda05d;--region-8:#f2f0f7;--region-9:#a3a1b0;color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}*,:before,:after{box-sizing:border-box}html,body{overscroll-behavior:none;height:100%;overflow:hidden}body{background-color:var(--color-bg);margin:0}#root{height:100%}.switch{background:var(--color-surface-border);border-radius:12px;flex:none;width:40px;height:24px;transition:background .15s;position:relative}.switch:after{content:"";background:var(--color-text);border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch--on{background:var(--color-accent)}.switch--on:after{background:var(--color-bg);transform:translate(16px)}.icon-btn{width:44px;height:44px;color:var(--color-text);cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:12px;place-items:center;padding:0;display:grid}.icon-btn svg{fill:none;stroke:currentColor;stroke-width:2.6px;stroke-linecap:round;width:28px;height:28px}.icon-btn:active{transform:scale(.92)}.icon-btn:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.btn{border:1px solid var(--color-surface-border);background:var(--color-surface);min-height:48px;color:var(--color-text);font:inherit;cursor:pointer;touch-action:manipulation;border-radius:12px;flex:1;padding:.6rem 1rem;font-weight:600}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.4;cursor:default}.btn:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg);flex:none;min-width:10rem}.overlay{background:#0a081499;place-items:center;padding:1rem;animation:.25s ease-out .4s both fade-in;display:grid;position:fixed;inset:0}.overlay__card{background:var(--color-surface);border:1px solid var(--color-surface-border);border-radius:20px;flex-direction:column;align-items:center;gap:.5rem;width:min(100%,320px);padding:1.5rem;display:flex}.overlay__card h2{color:var(--color-accent);margin:0;font-size:1.8rem}.overlay__card p{color:var(--color-muted);margin:0 0 .75rem}.overlay__icon{width:72px;height:72px;color:var(--color-accent)}@keyframes fade-in{0%{opacity:0;visibility:hidden}}.overlay__icon--lost{color:var(--color-muted);transform:rotate(-15deg)}.btn--danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.overlay--instant{animation-duration:.15s;animation-delay:0s}.overlay__actions{gap:.75rem;width:100%;display:flex}.overlay__buttons{flex-direction:column;gap:.6rem;width:100%;display:flex}.overlay__buttons .btn--primary{min-width:0}.stage{height:100dvh;position:relative;overflow-x:clip}.screen{overscroll-behavior:contain;height:100dvh;overflow:hidden auto}.stage--moving{height:100dvh;overflow:clip}.screen--enter-forward,.screen--enter-back,.screen--leave-forward,.screen--leave-back{animation-duration:.42s;animation-timing-function:cubic-bezier(.25,.8,.25,1);animation-delay:90ms}.screen--enter-forward,.screen--enter-back{animation-fill-mode:backwards}.screen--leave-forward,.screen--leave-back{pointer-events:none;animation-fill-mode:both;position:absolute;inset:0}.screen--enter-forward{animation-name:screen-from-right}.screen--enter-back{animation-name:screen-from-left}.screen--leave-forward{animation-name:screen-to-left}.screen--leave-back{animation-name:screen-to-right}@keyframes screen-from-right{0%{transform:translate(100%)}}@keyframes screen-from-left{0%{transform:translate(-100%)}}@keyframes screen-to-left{to{transform:translate(-100%)}}@keyframes screen-to-right{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.screen--enter-forward,.screen--enter-back{animation:none}.screen--leave-forward,.screen--leave-back{display:none}}
