@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--primary:#059669;--primary-strong:#047857;--primary-soft:#d1fae5;--primary-tint:#ecfdf5;--primary-rgb:5 150 105;--progress-fill:#22b183;--entry:#059669;--badge-bg:#e8efeb;--surface:#fff;--bg:#fafbfc;--tile:#f4f5f7;--track:#e5e9f2;--text:#141414;--text-soft:#3a3a42;--muted:#a4acb4;--muted-strong:#6e7580;--grid:#e4e7e9;--grid-strong:#919499;--danger:#ef4444;--danger-soft:#fee2e2;--brand-line:#cfe9dd;--brand-muted:#a9c9bb;--amber:#d98a55;--amber-soft:#fdedd7;--shadow-sm:0 1px 2px #11182708, 0 4px 12px #1118270a;--shadow-md:0 2px 4px #1118270d, 0 8px 24px #11182714;--shadow-lg:0 8px 16px #11182714, 0 24px 48px #1118271f;--shadow-primary:0 6px 16px rgb(var(--primary-rgb) / .3);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);-webkit-font-smoothing:antialiased;font-family:Inter Variable,Apple SD Gothic Neo,Noto Sans KR,system-ui,-apple-system,sans-serif}@supports (color:color-mix(in srgb, red, blue)){:root{--brand-line:color-mix(in srgb, var(--primary) 22%, #fff);--brand-muted:color-mix(in srgb, var(--primary) 45%, #fff)}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body,#root{height:100%}body{overscroll-behavior:none;touch-action:manipulation;background:#e4efe9;position:fixed;inset:0;overflow:hidden}button,input{font:inherit;color:inherit;background:0 0;border:none}button{cursor:pointer;-webkit-user-select:none;user-select:none}:focus{outline:none}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.g2048{gap:14px}.g2048-metrics{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.g2048-metrics>div{background:var(--tile);border-radius:14px;flex-direction:column;align-items:center;gap:3px;padding:9px 4px;display:flex}.g2048-metrics span{letter-spacing:.04em;color:var(--muted-strong);font-size:10px;font-weight:700}.g2048-metrics strong{font-variant-numeric:tabular-nums;font-size:18px}.home-title{text-align:left;flex:1}.g2048-home .brand-mark{width:min(52vw,190px);height:auto;color:var(--primary)}.best-chip{flex-direction:column;align-items:flex-end;gap:2px;padding-top:4px;display:flex}.best-chip strong{font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.score-row{gap:10px;display:flex}.score-box{background:var(--tile);border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:10px 8px;display:flex;position:relative}.score-label{letter-spacing:.12em;color:var(--muted);font-size:10px;font-weight:700}.score-value{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.score-gain{color:var(--primary);pointer-events:none;font-size:14px;font-weight:700;animation:.7s ease-out forwards score-gain;position:absolute;top:6px;right:12px}@keyframes score-gain{0%{opacity:0;transform:translateY(6px)}25%{opacity:1}to{opacity:0;transform:translateY(-16px)}}.tile-actions{gap:10px;display:flex}.tile-action{min-height:44px;color:var(--text-soft);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:14px;flex:1;justify-content:center;align-items:center;gap:6px;font-size:15px;font-weight:600;display:flex}.tile-action:disabled{color:var(--muted);opacity:.5;box-shadow:none}.tile-action:active:not(:disabled){background:var(--primary-tint)}.board-area{flex-direction:column;gap:12px;margin:auto 0;display:flex}.board-frame{position:relative;container-type:inline-size}.tile-board{--size:min(100cqw, 60vh);--gap:calc(var(--size) * .026);--cell:calc((var(--size) - var(--gap) * (var(--cells) + 1)) / var(--cells));width:var(--size);height:var(--size);padding:var(--gap);background:color-mix(in srgb, var(--tile) 92%, #000);touch-action:none;border-radius:18px;margin:0 auto;position:relative}.tile-cells{grid-template-columns:repeat(var(--cells), 1fr);grid-template-rows:repeat(var(--cells), 1fr);gap:var(--gap);height:100%;display:grid}.tile-cell{background:var(--surface);opacity:.7;border-radius:10px}.tile{top:var(--gap);left:var(--gap);width:var(--cell);height:var(--cell);font-size:calc(var(--cell) * .46);font-variant-numeric:tabular-nums;letter-spacing:-.02em;translate:calc((var(--cell) + var(--gap)) * var(--col)) calc((var(--cell) + var(--gap)) * var(--row));will-change:translate;border-radius:10px;justify-content:center;align-items:center;font-weight:700;transition:translate .18s cubic-bezier(.22,.8,.3,1);display:flex;position:absolute}.tile.three{font-size:calc(var(--cell) * .37)}.tile.four{font-size:calc(var(--cell) * .29)}.tile.fresh{animation:.16s ease-out .12s both tile-appear}@keyframes tile-appear{0%{opacity:0;scale:.72}to{opacity:1;scale:1}}.tile.merged{animation:.18s ease-out .16s both tile-pop}@keyframes tile-pop{0%{scale:1}55%{scale:1.1}to{scale:1}}.tile.dying{animation:60ms linear .16s both tile-vanish}@keyframes tile-vanish{to{opacity:0}}.tile.burst{z-index:2;animation:.5s cubic-bezier(.2,.8,.3,1) .16s both g2048-burst}.tile.burst:after{content:"";pointer-events:none;border-radius:inherit;background:radial-gradient(circle,#ffffffd9 0%,#fff0 62%);animation:.5s ease-out .16s both g2048-burst-glow;position:absolute;inset:-6%}@keyframes g2048-burst{0%{scale:1}32%{scale:1.22}to{scale:1}}@keyframes g2048-burst-glow{0%{opacity:0;scale:.7}28%{opacity:1;scale:1.15}to{opacity:0;scale:1.5}}.tile.upgraded{z-index:2;animation:.62s cubic-bezier(.3,.7,.2,1) both g2048-upgrade;animation-delay:calc(var(--step,0) * 90ms)}.tile.upgraded:before{content:"";pointer-events:none;border-radius:inherit;animation:.62s ease-out both g2048-upgrade-flash;animation-delay:calc(var(--step,0) * 90ms);background:radial-gradient(circle,#fffffff2 0%,#fff0 65%);position:absolute;inset:-8%}@keyframes g2048-upgrade{0%{filter:brightness();rotate:y 0deg;scale:1}40%{filter:brightness(1.7);rotate:y 90deg;scale:1.1}62%{filter:brightness(1.2);rotate:y 0deg;scale:1.22}to{filter:brightness();rotate:y 0deg;scale:1}}@keyframes g2048-upgrade-flash{0%{opacity:0;scale:.7}40%{opacity:0;scale:.85}55%{opacity:1;scale:1.2}to{opacity:0;scale:1.6}}.tile.rippled{animation:.42s cubic-bezier(.3,.7,.2,1) both g2048-ripple;animation-delay:calc(var(--step,0) * 90ms)}@keyframes g2048-ripple{0%{filter:brightness();scale:1}50%{filter:brightness(1.25);scale:1.06}to{filter:brightness();scale:1}}.tile-board.g2048-climbing:before{z-index:2;content:"";pointer-events:none;border-radius:inherit;background:radial-gradient(circle,#0000 58%,#0f172acc 68%,#0000 78%);animation:.7s ease-out both g2048-climb-ring;position:absolute;inset:0}@keyframes g2048-climb-ring{0%{opacity:0;scale:.25}40%{opacity:.5}to{opacity:0;scale:1}}.g2048-upgraded{z-index:3;pointer-events:none;justify-content:center;align-items:center;animation:1.8s cubic-bezier(.2,.7,.2,1) both g2048-upgraded-in;display:flex;position:absolute;top:50%;left:50%;translate:-50% -50%}.g2048-upgraded-word{letter-spacing:.05em;text-transform:uppercase;box-shadow:0 10px 26px #00000059, 0 0 30px color-mix(in srgb, var(--primary) 55%, transparent);color:#fff;text-shadow:0 2px 6px #00000073;background:#0f172ab8;border-radius:999px;justify-content:center;align-items:center;padding:.2em .5em;font-size:clamp(24px,12cqw,52px);font-weight:800;display:inline-flex;position:relative}.g2048-upgraded-word:before{z-index:-1;content:"";background:radial-gradient(circle, color-mix(in srgb, var(--primary) 55%, white) 0%, transparent 70%);filter:blur(6px);animation:1.8s ease-out both g2048-upgraded-glow;position:absolute;inset:-22% -14%}@keyframes g2048-upgraded-in{0%{opacity:0;translate:-50% -50%;scale:.6}14%{opacity:1;translate:-50% -50%;scale:1.06}22%{translate:-50% -50%;scale:1}78%{opacity:1;translate:-50% -50%;scale:1}to{opacity:0;translate:-50% -60%;scale:1.04}}@keyframes g2048-upgraded-glow{0%{opacity:0;scale:.7}22%{opacity:.9;scale:1.15}78%{opacity:.55;scale:1}to{opacity:0;scale:1.3}}@media (prefers-reduced-motion:reduce){.tile,.tile.fresh,.tile.merged,.tile.dying,.tile.upgraded,.tile.upgraded:before,.tile.rippled,.g2048-upgraded,.g2048-upgraded-word,.g2048-upgraded-word:before,.score-gain{transition:none;animation:none}.tile.burst,.tile.burst:after,.tile-board.g2048-climbing:before{animation:none}.tile.burst:after,.tile.upgraded:before,.tile-board.g2048-climbing:before,.g2048-upgraded-word:before,.tile.dying{opacity:0}}.tile{color:var(--text);background:var(--surface);box-shadow:var(--shadow-sm)}.tile.v2{background:var(--surface)}.tile.v4{background:var(--primary-tint)}.tile.v8{background:var(--primary-soft)}.tile.v16{color:#fff;background:color-mix(in srgb, var(--primary) 55%, #fff)}.tile.v32{color:#fff;background:color-mix(in srgb, var(--primary) 72%, #fff)}.tile.v64{color:#fff;background:color-mix(in srgb, var(--primary) 88%, #fff)}.tile.v128{color:#fff;background:var(--primary)}.tile.v256{color:#fff;background:var(--primary-strong)}.tile.v512{color:#fff;background:color-mix(in srgb, var(--primary-strong) 82%, #000)}.tile.v1024{color:#fff;background:#2f3a42}.tile.v2048,.tile.v4096{color:#fff;box-shadow:var(--shadow-sm), 0 0 0 2px color-mix(in srgb, var(--primary) 60%, transparent);background:#1d242a}@supports not (color:color-mix(in srgb, red 50%, blue)){.tile-board{background:var(--tile)}.tile.v16,.tile.v32,.tile.v64{color:#fff;background:var(--primary)}.tile.v512{background:var(--primary-strong)}.tile.v2048,.tile.v4096{box-shadow:var(--shadow-sm)}}.hint-line{text-align:center;opacity:.9}.suika{gap:12px}.bowl-area{flex-direction:column;gap:10px;margin:auto 0;display:flex}.bowl{touch-action:none;background:0 0;width:min(100%,76.6284dvh - 252.874px);margin:0 auto;display:block}.suika .score-label.accent{color:var(--primary)}.bowl-area{position:relative}.suika-roulette{z-index:2;background:var(--surface);box-shadow:var(--shadow-lg,0 12px 32px #0f172a2e);border-radius:18px;flex-direction:column;align-items:center;gap:4px;padding:14px 22px;display:flex;position:absolute;top:18%;left:50%;translate:-50%}.suika-roulette strong{font-size:15px}.suika-roulette span{color:var(--muted);font-size:12px}.suika-roulette.settled{animation:.32s ease-out suika-roulette-settle}@keyframes suika-roulette-settle{0%{scale:1}45%{scale:1.12}to{scale:1}}@media (prefers-reduced-motion:reduce){.suika-roulette.settled{animation:none}}.rescue-row{gap:10px;display:flex}.rescue{background:var(--surface);min-height:66px;box-shadow:var(--shadow-sm);border-radius:14px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:8px 6px;display:flex}.rescue svg{color:var(--primary)}.item-flight{z-index:20;width:38px;height:38px;color:var(--primary);pointer-events:none;background:var(--surface);box-shadow:var(--shadow-sm);animation:item-fly var(--fly-ms) cubic-bezier(.35, 0, .3, 1) forwards;border-radius:50%;place-items:center;margin:-19px 0 0 -19px;display:grid;position:fixed;top:0;left:0}@keyframes item-fly{0%{translate:var(--from-x) var(--from-y);opacity:0;scale:.5}18%{opacity:1;scale:1.1}to{translate:var(--to-x) var(--to-y);opacity:.9;scale:.7}}@media (prefers-reduced-motion:reduce){.item-flight{animation-duration:1ms}}.rescue-mark{display:inline-flex;position:relative}.rescue .rescue-count{color:#fff;text-align:center;background:var(--primary);border:2px solid var(--surface);font-variant-numeric:tabular-nums;border-radius:10px;min-width:19px;padding:0 5px;font-size:12px;font-weight:800;line-height:19px;position:absolute;top:-6px;right:-12px}.rescue.got{animation:.45s ease-out rescue-got}@keyframes rescue-got{0%{scale:1}35%{scale:1.12}to{scale:1}}@media (prefers-reduced-motion:reduce){.rescue.got{animation:none}}.rescue:disabled{box-shadow:none;outline:1.5px dashed var(--track);outline-offset:-1.5px;background:0 0}.rescue:disabled svg{color:var(--muted);opacity:.7}.rescue strong{color:var(--text-soft);font-size:14px;font-weight:600}.rescue span{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.rescue:disabled{background:var(--tile);box-shadow:none}.rescue:disabled strong{color:var(--muted)}.rescue:active:not(:disabled){background:var(--primary-tint)}.fruit-icon{flex:none;display:block}.stat-fruit{justify-content:center;align-items:center;gap:5px;display:flex}.flat-meta.with-fruit{align-items:center;gap:5px;display:flex}.fruit-ladder{justify-content:center;align-items:center;gap:5px;margin-bottom:4px;display:flex}.suika-home .brand-mark{width:min(48vw,170px);height:auto;color:var(--primary)}.memory{gap:14px}.preview-hint{text-align:center;transition:opacity .2s}.preview-hint.done{opacity:.65}.memory-grid{grid-template-columns:repeat(var(--cols), 1fr);gap:10px;margin:auto 0;display:grid}.memory-card{aspect-ratio:3/4;perspective:600px;background:0 0}.memory-card-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .32s cubic-bezier(.3,.8,.35,1);display:block;position:relative}.memory-card.open .memory-card-inner{transform:rotateY(180deg)}.memory-card-back,.memory-card-face{backface-visibility:hidden;border-radius:14px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.memory-card-back{background:var(--primary);box-shadow:var(--shadow-sm)}.memory-card-back:after{content:"";background:linear-gradient(#ffffff73 2px,#0000 2px) 0/100% 50%,linear-gradient(90deg,#ffffff73 2px,#0000 2px) 50% 0/50% 100%;border:2px solid #ffffff73;border-radius:6px;position:absolute;inset:22%}.memory-card-face{background:var(--surface);box-shadow:var(--shadow-sm);transform:rotateY(180deg)}.memory-card.matched .memory-card-face{background:var(--primary-tint);box-shadow:none}.memory-card.matched{animation:.3s ease-out both card-settle}@keyframes card-settle{0%{scale:1}45%{scale:1.07}to{scale:1}}.memory-card.celebrate .memory-card-inner{animation:card-cheer .62s ease-out var(--pop-delay,0s) both}.memory-card.celebrate .memory-card-face{animation:card-cheer-face .62s ease-out var(--pop-delay,0s) both}@keyframes card-cheer{0%{transform:rotateY(180deg)scale(1)}35%{transform:rotateY(180deg)scale(1.16)translateY(-6%)}70%{transform:rotateY(180deg)scale(.97)}to{transform:rotateY(180deg)scale(1)}}@keyframes card-cheer-face{0%{background:var(--primary-tint)}40%,to{background:var(--primary-soft)}}@media (prefers-reduced-motion:reduce){.memory-card-inner,.memory-card.matched,.memory-card.celebrate .memory-card-inner,.memory-card.celebrate .memory-card-face{transition:none;animation:none}}.memory-home .brand-mark{width:min(48vw,170px);height:auto;color:var(--primary)}.nono{gap:12px}.nono-board{--gap:1px;grid-template-rows:auto 1fr;grid-template-columns:auto 1fr;width:100%;margin:0 auto;display:grid}.nono-corner{grid-area:1/1}.nono-col-hints{grid-area:1/2;grid-template-columns:repeat(var(--cells), 1fr);gap:var(--gap);display:grid}.nono-row-hints{grid-area:2/1;grid-template-rows:repeat(var(--cells), 1fr);gap:var(--gap);display:grid}.nono-grid{grid-area:2/2;grid-template-columns:repeat(var(--cells), 1fr);grid-template-rows:repeat(var(--cells), 1fr);gap:var(--gap);aspect-ratio:1;background:var(--track);border-radius:8px;display:grid;overflow:hidden}.nono-hint{font-size:var(--hint-size);color:var(--muted-strong);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:flex-end;gap:.35em;padding:2px;font-weight:600;display:flex}.nono-hint.col{min-height:calc(var(--col-hints) * 1.35em + 6px);flex-direction:column;justify-content:flex-end;align-items:center;gap:.15em}.nono-hint.row{min-width:calc(var(--row-hints) * 1.15em + 8px);gap:.4em}.nono-hint.done{color:var(--muted);opacity:.45}.nono-cell{background:var(--surface);transition:background .1s}.nono-cell.filled{background:var(--primary)}.nono-cell.marked{background:linear-gradient(45deg, transparent 44%, var(--muted) 44%, var(--muted) 56%, transparent 56%), linear-gradient(-45deg, transparent 44%, var(--muted) 44%, var(--muted) 56%, transparent 56%), var(--surface);opacity:.75;background-position:50%;background-repeat:no-repeat;background-size:52% 52%,52% 52%,100% 100%}.nono-cell.wrong{background:var(--danger);opacity:1}.nono-cell.top{box-shadow:inset 0 2px 0 -1px var(--grid-strong)}.nono-cell.left{box-shadow:inset 2px 0 0 -1px var(--grid-strong)}.nono-cell.top.left{box-shadow:inset 0 2px 0 -1px var(--grid-strong), inset 2px 0 0 -1px var(--grid-strong)}.nono-board.solved .nono-hint{opacity:0;gap:0;padding:0;font-size:0;transition:opacity .35s}.nono-board.solved .nono-hint.row{min-width:0}.nono-board.solved .nono-hint.col{min-height:0}.nono-hint.row,.nono-hint.col{transition:min-width .6s .2s,min-height .6s .2s,font-size .6s .2s,padding .6s .2s,opacity .35s}.nono-board.solved .nono-grid{--gap:0px;background:0 0;transition:gap .6s}.nono-board.solved .nono-cell{transition:background .6s,opacity .6s}.nono-board.solved .nono-cell:not(.filled){background:var(--track);opacity:.35}.nono-board.solved .nono-cell.filled{box-shadow:none}.nono-finish{align-items:center;min-height:56px;display:grid}.nono-finish .button{min-height:46px}.nono-footnote{color:var(--muted);text-align:center;margin:0;font-size:13px}.nono-board.size-5{--hint-size:15px}.nono-board.size-10{--hint-size:11px}.nono-board.size-15{--hint-size:9px}.nono .board-area{align-items:center;margin:auto 0;display:flex}.mode-tabs{background:var(--tile);border-radius:16px;grid-template-columns:repeat(2,1fr);gap:8px;padding:5px;display:grid}.mode-tab{min-height:46px;color:var(--muted-strong);border-radius:12px;justify-content:center;align-items:center;gap:7px;font-size:15px;font-weight:600;display:flex}.mode-tab.active{color:var(--text);background:var(--surface);box-shadow:var(--shadow-sm)}.mode-swatch{background:var(--primary);border-radius:4px;width:15px;height:15px;display:block}.nono-home .brand-mark{width:min(48vw,180px);height:auto;color:var(--primary)}.bubble{gap:12px}.bubble .board-area{align-items:center;margin:auto 0}.bubble-canvas{touch-action:none;width:100%;max-width:420px;margin:0 auto;display:block}.bubble-home .brand-mark{width:min(48vw,170px);height:auto;color:var(--primary)}.match3{gap:12px}.match3 .board-frame{isolation:isolate}.match3-home .brand-mark{width:min(48vw,170px);height:auto;color:var(--primary)}.life-row{align-items:center;gap:10px;display:flex;position:relative}.life-gauge{background:var(--track);border-radius:999px;flex:1;height:12px;overflow:hidden}.life-gauge>i{width:calc(var(--fill) * 100%);background:var(--progress-fill);border-radius:inherit;height:100%;transition:width .12s linear,background-color .3s;display:block}.life-gauge.warn>i{background:var(--amber)}.life-gauge.danger>i{background:var(--danger)}.life-gauge.danger{animation:.7s ease-in-out infinite life-pulse}@keyframes life-pulse{50%{opacity:.55}}.life-speed{min-width:46px;color:var(--muted);flex-direction:column;gap:1px;line-height:1.15;display:flex}.life-speed span{letter-spacing:.02em;font-size:9px;font-weight:700}.life-speed strong{font-variant-numeric:tabular-nums;font-size:14px;font-weight:700}.life-speed.warn{color:var(--amber)}.life-speed.danger{color:var(--danger)}.life-left{font-variant-numeric:tabular-nums;min-width:52px;color:var(--muted-strong);text-align:right;font-size:14px;font-weight:700}.life-left.warn{color:var(--amber)}.life-left.danger{color:var(--danger)}.life-gauge.fever>i{background:linear-gradient(90deg,#f59e0b,#fde68a 45%,#f59e0b) 0 0/220% 100%;animation:1.1s linear infinite fever-shine}@keyframes fever-shine{to{background-position:-220% 0}}.life-speed.fever,.life-left.fever{color:#e08b0b}.fevering .gem-board{background:color-mix(in srgb, #fde68a 18%, var(--tile));animation:1.2s ease-in-out infinite fever-board;box-shadow:0 0 0 2px #f59e0b80,0 0 24px #f59e0b73}@keyframes fever-board{50%{box-shadow:0 0 0 3px #f59e0bb3,0 0 40px #f59e0b99}}.fevering .gem-face{filter:saturate(1.2)brightness(1.06)}.fever-veil{z-index:7;pointer-events:none;border-radius:18px;position:absolute;inset:0;overflow:hidden}.fever-glow{mix-blend-mode:screen;background:conic-gradient(#fde68a00,#fde68a38,#f59e0b0f,#fde68a00);animation:2.4s linear infinite fever-sweep;position:absolute;inset:-30%}@keyframes fever-sweep{to{rotate:360deg}}.fever-spark{background:radial-gradient(circle,#fff 0%,#fde68a 45%,#f59e0b00 70%);border-radius:50%;width:10px;height:10px;animation:1.4s ease-in-out infinite fever-spark;position:absolute}@keyframes fever-spark{0%,to{opacity:0;scale:.3}40%{opacity:1;scale:1.4}}.fever-spark.s0{animation-delay:0s;top:8%;left:12%}.fever-spark.s1{animation-delay:.18s;top:22%;left:76%;scale:1.3}.fever-spark.s2{animation-delay:.36s;top:41%;left:30%}.fever-spark.s3{animation-delay:.54s;top:58%;left:88%;scale:.8}.fever-spark.s4{animation-delay:.72s;top:72%;left:18%;scale:1.5}.fever-spark.s5{animation-delay:.9s;top:12%;left:52%}.fever-spark.s6{animation-delay:1.08s;top:86%;left:62%;scale:1.2}.fever-spark.s7{animation-delay:1.26s;top:34%;left:6%;scale:.9}.fever-spark.s8{animation-delay:.27s;top:66%;left:44%;scale:1.1}.fever-spark.s9{animation-delay:.63s;top:92%;left:26%}.fever-title{flex-direction:column;align-items:center;gap:4px;animation:1.15s cubic-bezier(.2,.9,.3,1) forwards fever-title;display:flex;position:absolute;top:34%;left:0;right:0}.fever-title strong{letter-spacing:.04em;color:#ffd54a;text-shadow:0 0 4px #78350fe6,0 4px 18px #b45309cc;font-size:clamp(36px,14cqw,66px);font-weight:800}.fever-title span{color:#fff7ed;background:#78350fbf;border-radius:999px;padding:4px 12px;font-size:13px;font-weight:700}@keyframes fever-title{0%{opacity:0;rotate:-8deg;scale:.4}18%{opacity:1;rotate:3deg;scale:1.25}32%{rotate:0deg;scale:1}62%{opacity:1}to{opacity:0;translate:0 -18px}}.life-gain{font-variant-numeric:tabular-nums;color:var(--progress-fill);text-shadow:0 1px 3px #fffc;pointer-events:none;font-size:14px;font-weight:800;animation:.9s cubic-bezier(.2,.9,.3,1) forwards life-gain;position:absolute;top:-22px;right:0}@keyframes life-gain{0%{opacity:0;scale:.6}20%{opacity:1;scale:1.15}40%{scale:1}to{opacity:0;translate:0 -14px}}.gem-board{--size:min(100cqw, 54vh);--gap:calc(var(--size) * .016);--cell:calc((var(--size) - var(--gap) * (var(--cells) + 1)) / var(--cells));width:var(--size);height:var(--size);padding:var(--gap);background:color-mix(in srgb, var(--tile) 92%, #000);touch-action:none;border-radius:18px;margin:0 auto;position:relative}.gem-layer{z-index:1;border-radius:18px;position:absolute;inset:0;overflow:hidden}.gem-cells{grid-template-columns:repeat(var(--cells), 1fr);grid-template-rows:repeat(var(--cells), 1fr);gap:var(--gap);height:100%;display:grid}.gem-cell{background:var(--surface);opacity:.55;border-radius:24%}.gem,.gem-burst,.gem-score{--x:calc((var(--cell) + var(--gap)) * var(--col));--y:calc((var(--cell) + var(--gap)) * var(--row))}.gem{top:var(--gap);left:var(--gap);width:var(--cell);height:var(--cell);translate:var(--x) var(--y);will-change:translate;touch-action:none;transition:translate .18s cubic-bezier(.22,.8,.3,1);position:absolute}.gem-face{background:radial-gradient(circle at 32% 28%, var(--gem-light), var(--gem) 52%, var(--gem-deep) 100%);box-shadow:inset 0 calc(var(--cell) * -.07) 0 #00000029, 0 1px 2px #1118271f;animation:gem-sway calc(2.8s + var(--sway) * 90ms) ease-in-out infinite;animation-delay:calc(var(--sway) * -.21s);border-radius:28%;position:absolute;inset:0}@keyframes gem-sway{0%,to{translate:-1.2%;rotate:-1.2deg}50%{translate:1.2%;rotate:1.2deg}}.gem-face:after{content:"";background:#ffffffbf;border-radius:50%;width:26%;height:18%;position:absolute;top:16%;left:18%;rotate:-25deg}.gem.c0,.gem-burst.c0{--gem:#ef4444;--gem-light:#fca5a5;--gem-deep:#b91c1c}.gem.c1,.gem-burst.c1{--gem:#3b82f6;--gem-light:#93c5fd;--gem-deep:#1d4ed8}.gem.c2,.gem-burst.c2{--gem:#f59e0b;--gem-light:#fcd34d;--gem-deep:#b45309}.gem.c3,.gem-burst.c3{--gem:#10b981;--gem-light:#6ee7b7;--gem-deep:#047857}.gem.c4,.gem-burst.c4{--gem:#a855f7;--gem-light:#d8b4fe;--gem-deep:#7e22ce}.gem.c5,.gem-burst.c5{--gem:#ec4899;--gem-light:#f9a8d4;--gem-deep:#be185d}.gem.dropping{animation:gem-drop calc(.17s + var(--drop) * 45ms) cubic-bezier(.42, 0, .72, .55)}@keyframes gem-drop{0%{translate:var(--x) calc(var(--y) - (var(--cell) + var(--gap)) * var(--drop))}70%{translate:var(--x) var(--y);animation-timing-function:ease-out;scale:1}82%{scale:1.12 .86}92%{scale:.97 1.05}to{translate:var(--x) var(--y);scale:1}}.gem.popping{z-index:2;animation:.24s cubic-bezier(.3,.8,.4,1) forwards gem-pop}@keyframes gem-pop{20%{filter:brightness(1.8)saturate(1.15);scale:1.32}to{opacity:0;filter:brightness(1.5);rotate:28deg;scale:.1}}.gem-burst{top:var(--gap);left:var(--gap);z-index:3;width:var(--cell);height:var(--cell);pointer-events:none;translate:var(--x) var(--y);rotate:calc((var(--row) * 37 + var(--col) * 61) * 1deg);position:absolute}.gem-burst:before{content:"";box-shadow:0 0 0 calc(var(--cell) * .08) var(--gem-light), 0 0 calc(var(--cell) * .5) calc(var(--cell) * .12) var(--gem);background:#fff;border-radius:50%;animation:.32s ease-out forwards burst-flash;position:absolute;inset:34%}@keyframes burst-flash{0%{opacity:1;scale:.25}25%{opacity:.8}to{opacity:0;scale:2.2}}.gem-burst:after{content:"";background:var(--gem);box-shadow:calc(var(--cell) * .36) 0 0 calc(var(--cell) * .02) var(--gem), calc(var(--cell) * -.32) 0 0 calc(var(--cell) * -.01) var(--gem-deep), 0 calc(var(--cell) * .34) 0 calc(var(--cell) * .01) var(--gem), 0 calc(var(--cell) * -.36) 0 calc(var(--cell) * -.01) var(--gem-light), calc(var(--cell) * .22) calc(var(--cell) * .26) 0 calc(var(--cell) * -.015) var(--gem-light), calc(var(--cell) * -.26) calc(var(--cell) * .22) 0 calc(var(--cell) * .015) var(--gem-light), calc(var(--cell) * .26) calc(var(--cell) * -.22) 0 calc(var(--cell) * -.02) var(--gem-deep), calc(var(--cell) * -.22) calc(var(--cell) * -.26) 0 calc(var(--cell) * .01) var(--gem);border-radius:50%;animation:.5s cubic-bezier(.15,.75,.3,1) forwards burst-shards;position:absolute;inset:45%}@keyframes burst-shards{0%{opacity:1;rotate:-18deg;scale:.15}55%{opacity:.9}to{opacity:0;rotate:24deg;scale:2.7}}.gem-score{top:var(--gap);left:var(--gap);z-index:5;width:var(--cell);height:var(--cell);font-size:calc(var(--cell) * .7);font-variant-numeric:tabular-nums;color:#fff;white-space:nowrap;text-shadow:0 0 3px #111827d9,0 2px 8px #11182799,0 0 18px #fff6;pointer-events:none;translate:var(--x) var(--y);justify-content:center;align-items:baseline;gap:.12em;font-weight:800;animation:.72s cubic-bezier(.2,.9,.3,1) forwards gem-score;display:flex;position:absolute}.gem-score em{opacity:.95;font-size:.74em;font-style:normal}.gem-score.chained{color:#ffd54a}@keyframes gem-score{0%{opacity:0;scale:.4}20%{opacity:1;scale:1.3}40%{scale:1}to{translate:var(--x) calc(var(--y) - var(--cell) * 1.2);opacity:0}}.gem-board.rocked{animation-duration:.26s;animation-timing-function:ease-out}.gem-board.rocked.even{animation-name:board-rock-a}.gem-board.rocked.odd{animation-name:board-rock-b}.gem-board.rocked.hard{--rock:7px;animation-duration:.34s}@keyframes board-rock-a{25%{translate:0 var(--rock,3px)}60%{translate:0 calc(var(--rock,3px) * -.55)}}@keyframes board-rock-b{25%{translate:0 var(--rock,3px)}60%{translate:0 calc(var(--rock,3px) * -.55)}}.chain-badge{z-index:6;width:fit-content;box-shadow:var(--shadow-lg);pointer-events:none;background:#111827d1;border-radius:999px;justify-content:center;align-items:center;gap:10px;margin-inline:auto;padding:10px 24px;animation:.64s cubic-bezier(.2,.9,.3,1) forwards chain-badge;display:flex;position:absolute;top:10%;left:0;right:0}.chain-badge strong{font-variant-numeric:tabular-nums;color:#ffd54a;text-shadow:0 2px 10px #00000080;font-size:clamp(40px,16cqw,72px);font-weight:800;line-height:1}.chain-badge span{color:#ffffffd9;font-size:clamp(14px,4.6cqw,22px);font-weight:700}.chain-badge.hot strong{color:#ff9a3c}.chain-badge.hot{background:#180c06d9}@keyframes chain-badge{0%{opacity:0;rotate:-7deg;scale:.5}22%{opacity:1;rotate:3deg;scale:1.18}45%{rotate:0deg;scale:1}to{opacity:0;translate:0 -16px;scale:1.06}}.gem.hurrah{animation:.7s cubic-bezier(.2,.9,.3,1) backwards gem-hurrah;animation-delay:calc(var(--wave) * 55ms)}@keyframes gem-hurrah{30%{filter:brightness(1.4)saturate(1.2);rotate:-8deg;scale:1.28}60%{rotate:5deg;scale:.94}to{rotate:0deg;scale:1}}.survived .gem-board{background:color-mix(in srgb, var(--primary-soft) 55%, var(--tile));box-shadow:0 0 0 2px var(--primary-soft);transition:background .4s,box-shadow .4s}.gem.shaken{animation:.36s gem-shake}@keyframes gem-shake{25%{rotate:-8deg}75%{rotate:8deg}}@media (prefers-reduced-motion:reduce){.life-gauge.danger,.life-gauge.fever>i,.fevering .gem-board,.fever-glow,.fever-spark{animation:none}.fever-title{animation-duration:1.15s;animation-timing-function:linear}.gem-face{animation:none}.gem,.gem.dropping,.gem.popping,.gem.shaken,.gem-board.rocked,.gem.hurrah,.gem-burst:before,.gem-burst:after,.chain-badge{transition-duration:10ms;animation-duration:10ms}.gem-score{animation-duration:.5s}}.lights-home .brand-mark{width:min(48vw,180px);height:auto;color:var(--primary)}.lights-brand{flex-direction:column;gap:28px}.lights-brand p{color:var(--muted-strong);letter-spacing:-.02em;font-size:14px}.lights-mark-flow{stroke-dasharray:12 55;animation:3.8s linear infinite lights-mark-flow}.lights-mark-core{transform-origin:24px 24px;animation:3s ease-in-out infinite lights-core}.lights-home-note{text-align:center;color:var(--muted);margin:8px 0 0;font-size:12px}.lights-play{gap:18px}.lights-play-title{flex:1;align-items:baseline;gap:10px;display:flex}.lights-play-title h1{font-size:18px}.lights-play-title>span{color:var(--muted);white-space:nowrap;font-size:11px}.lights-help{width:36px;height:36px;color:var(--muted-strong);background:var(--surface);border-radius:50%;font-size:17px;font-weight:600}.lights-readout{justify-content:space-between;align-items:center;padding:0 4px;display:flex}.lights-count{align-items:baseline;gap:8px;display:flex}.lights-count>strong{font-variant-numeric:tabular-nums;letter-spacing:-.06em;font-size:30px;font-weight:600}.lights-count small{color:var(--muted);font-size:18px;font-weight:400}.lights-count>span:last-child{color:var(--muted-strong);font-size:11px}.lights-status-dot{background:#d9a448;border-radius:50%;align-self:center;width:7px;height:7px;box-shadow:0 0 10px #d9a44855}.lights-timing{font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-end;gap:3px;display:flex}.lights-timing strong{font-size:18px;font-weight:500}.lights-timing span{color:var(--muted);font-size:11px}.lights-stage{width:100%;margin:auto 0}.lights-board-caption{color:var(--muted-strong);letter-spacing:.03em;justify-content:space-between;align-items:center;margin:0 4px 12px;font-size:11px;display:flex}.lights-board-caption>span:last-child{color:#b88834}.lights-board{--lights-gold:#ffda83;grid-template-columns:repeat(var(--lights-size), 1fr);aspect-ratio:1;isolation:isolate;touch-action:manipulation;-webkit-user-select:none;user-select:none;background:radial-gradient(at 50% 45%,#213b40 0%,#15292f 58%,#102127 100%);border-radius:22px;width:100%;padding:8px;display:grid;position:relative;box-shadow:0 14px 34px #091e2520,inset 0 0 0 1px #ffffff0c}.lights-cell{aspect-ratio:1;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:6px;width:100%;min-width:0;padding:0;position:relative}.lights-tile-face{pointer-events:none;background:linear-gradient(145deg,#ffffff0a,#ffffff02 45%,#07191f22);border-radius:8px;transition:background .26s,box-shadow .26s,transform .18s;position:absolute;inset:2px;box-shadow:inset 0 1px #b6d5d51f,inset 0 0 0 1px #9bbfc010,0 2px 3px #06131935}.lights-lit .lights-tile-face{background:radial-gradient(at 50% 55%,#efc56b0d,#0000 75%),linear-gradient(145deg,#ffffff0e,#ffffff02 50%,#07191f22);box-shadow:inset 0 1px #f8dc9828,inset 0 0 0 1px #d5bc7c16,0 2px 3px #06131935}.lights-locked:not(.lights-fixed) .lights-tile-face{box-shadow:inset 0 0 0 1px #e0bd7180,inset 0 1px #fff0c52b,0 2px 3px #06131935}.lights-fixed .lights-tile-face{background-color:#06171b18}.lights-tile-feedback{opacity:0;pointer-events:none;z-index:4;border-radius:8px;position:absolute;inset:2px;box-shadow:inset 0 0 0 1px #ffe6a1,inset 0 0 15px #f9c66435,0 0 8px #ffd47c25}.lights-cell:active:not(.lights-fixed):not(.lights-locked) .lights-tile-face{transform:scale(.94)}@media (hover:hover){.lights-cell:hover:not(.lights-fixed) .lights-tile-face{background-color:#cde5e60c;box-shadow:inset 0 0 0 1px #b9d5d536,0 3px 5px #06131945}}.lights-cell:focus-visible{outline-offset:-4px;z-index:2;outline:2px solid #e9c77c}.lights-cell:active:not(.lights-fixed):not(.lights-locked){background:#ffffff0b}.lights-wire,.lights-node{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.lights-wire{transform:rotate(var(--lights-turn));z-index:1;transition:transform .24s cubic-bezier(.22,.8,.3,1.08)}.lights-wire path{fill:none;stroke-linecap:round;stroke-linejoin:round}.lights-wire .lights-wire-bed{stroke:#0b1d23;stroke-width:7px;stroke-linecap:butt}.lights-wire-line{stroke:#658087;stroke-width:3.5px;transition:stroke .24s ease var(--lights-delay), filter .24s ease var(--lights-delay)}.lights-lit .lights-wire-line{stroke:var(--lights-gold);filter:drop-shadow(0 0 3px #ffc55c6b)}.lights-flow{z-index:2;pointer-events:none;width:calc(100% - 16px);height:calc(100% - 16px);position:absolute;inset:8px;overflow:visible}.lights-flow-traces{animation:.16s ease-out .18s both lights-flow-enter}.lights-flow path{fill:none;stroke-linecap:round;animation:lights-flow-travel 2.4s linear var(--lights-flow-clock) infinite}.lights-flow-tail{stroke:#ffe1a1;stroke-width:5px;stroke-dasharray:24 168;opacity:.5;filter:drop-shadow(0 0 4px #ffc862)}.lights-flow-head{stroke:#fffbed;stroke-width:2.8px;stroke-dasharray:7 185;filter:drop-shadow(0 0 2px #fff)}.lights-node{z-index:3}.lights-source-ring{fill:none;stroke:#f7d485;stroke-width:1px;opacity:0;transform-origin:32px 32px;animation:2.8s ease-out infinite lights-source-ripple}.lights-source-ring-second{animation-delay:-1400ms}.lights-halo{opacity:0;width:64%;height:64%;transition:opacity .4s ease var(--lights-delay);pointer-events:none;background:radial-gradient(circle,#ffc35d22,#ffc35d00 72%);border-radius:50%;position:absolute;top:18%;left:18%}.lights-lit .lights-halo{opacity:1}.lights-bulb-rim{fill:#172b31;stroke:#6e898f;stroke-width:1.5px;transition:stroke .22s ease var(--lights-delay)}.lights-bulb{fill:#718c93;transition:fill .22s ease var(--lights-delay), filter .22s ease var(--lights-delay)}.lights-lit .lights-bulb-rim{stroke:#d8ae5d}.lights-lit .lights-bulb{fill:#fff0b7;filter:drop-shadow(0 0 5px #ffcd6f)}.lights-junction{fill:#658087;transition:fill .24s ease var(--lights-delay)}.lights-lit .lights-junction{fill:var(--lights-gold)}.lights-power-disc{fill:#ffda83;filter:drop-shadow(0 0 5px #ffd46f60)}.lights-power-symbol{fill:none;stroke:#263b3c;stroke-width:2.5px;stroke-linecap:round}.lights-source .lights-halo{opacity:1;animation:3.4s ease-in-out infinite lights-source-breathe}.lights-pin{z-index:4;color:#b9c9c9;width:10px;height:12px;font-size:17px;line-height:10px;position:absolute;bottom:3%;right:5%}.lights-pin svg{fill:#15292f;stroke:#b9c9c9;stroke-width:1.2px;width:10px;height:10px}.lights-locking .lights-cell:not(.lights-fixed){cursor:crosshair}.lights-locking .lights-locked:not(.lights-fixed){background:#ffffff0c}.lights-guidance{min-height:36px;color:var(--muted-strong);text-align:center;margin:16px 4px 0;font-size:12px;line-height:1.6}.lights-finish-actions{flex-shrink:0;align-items:center;min-height:60px;display:flex}.lights-finish-actions .button{min-height:48px;padding:10px 18px}.lights-finish-actions .button:disabled{opacity:.45}.lights-tools{flex-shrink:0;gap:8px;display:flex}.lights-tools>button{min-height:60px;color:var(--text-soft);background:0 0;border-radius:12px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:7px;font-size:12px;display:flex}.lights-tools>button>svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:19px;height:19px}.lights-tools>button[aria-pressed=true]{color:var(--primary);background:var(--badge-bg)}.lights-tools>button:disabled,.lights-help:disabled{opacity:.35}.lights-footnote{text-align:center;color:var(--muted);margin:0;font-size:10px;line-height:1.6}.lights-rules{text-align:left;flex-direction:column;gap:18px;padding-left:22px;display:flex}.lights-rules li{padding-left:4px}.lights-rules strong{margin-bottom:5px;font-size:14px;display:block}.lights-rules span{color:var(--muted-strong);font-size:12px;line-height:1.7;display:block}.lights-result-glow{color:#b88834;text-shadow:0 0 25px #ffce7860;font-size:48px;animation:3s ease-in-out infinite lights-core}.lights-empty{text-align:center;color:var(--text-soft);margin:auto 0;font-size:15px;line-height:2}.lights-empty span{color:var(--muted);font-size:12px}.lights-solved{animation:1.6s ease-out both lights-board-finish}.lights-solved .lights-node{animation:lights-node-finish .7s ease-out var(--lights-wave) both}.lights-solved .lights-halo{animation:lights-halo-finish 1s ease-out var(--lights-wave) both}@keyframes lights-mark-flow{to{stroke-dashoffset:-67px}}@keyframes lights-core{50%{opacity:.8;transform:scale(.94)}}@keyframes lights-flow-travel{0%{stroke-dashoffset:var(--lights-phase)}to{stroke-dashoffset:calc(var(--lights-phase) - 192px)}}@keyframes lights-flow-enter{0%{opacity:0}to{opacity:1}}@keyframes lights-source-ripple{0%{opacity:0;transform:scale(.6)}18%{opacity:.55}to{opacity:0;transform:scale(1.6)}}@keyframes lights-source-breathe{50%{opacity:.65;transform:scale(1.3)}}@keyframes lights-board-finish{35%{box-shadow:0 0 0 4px #e6b75745,0 12px 48px #dbad5350}}@keyframes lights-node-finish{45%{filter:brightness(1.4);transform:scale(1.22)}}@keyframes lights-halo-finish{40%{opacity:1;background-color:#f4c96b19;transform:scale(1.65)}}@media (height<=740px){.lights-play{gap:10px}.lights-guidance{min-height:32px;margin-top:10px}.lights-tools>button,.lights-finish-actions{min-height:48px}}@media (prefers-reduced-motion:reduce){.lights-mark-flow,.lights-mark-core,.lights-flow path,.lights-flow-traces,.lights-source-ring,.lights-source .lights-halo,.lights-result-glow,.lights-solved,.lights-solved .lights-node,.lights-solved .lights-halo{animation:none}.lights-flow{display:none}.lights-tile-face,.lights-wire,.lights-wire-line,.lights-bulb,.lights-bulb-rim,.lights-junction,.lights-halo{transition:none}}.maze{gap:12px}.maze.maze-play{gap:10px}.maze-play{background:var(--maze-ground,var(--bg))}body:has(.maze-play){background:var(--maze-ground,#e4efe9)}.maze-board-area{flex:1 1 0;min-height:240px;margin:0 -20px;display:flex}@media (width>=700px){.maze-board-area{margin:0 -28px}.maze-canvas{-webkit-mask-image:linear-gradient(90deg,#0000,#000 48px calc(100% - 48px),#0000),linear-gradient(#000 calc(100% - 28px),#0000);mask-image:linear-gradient(90deg,#0000,#000 48px calc(100% - 48px),#0000),linear-gradient(#000 calc(100% - 28px),#0000);-webkit-mask-composite:source-in;mask-composite:intersect}}.maze-frame{box-sizing:border-box;background:var(--surface);flex:auto;min-width:0;overflow:hidden}.maze-frame:has(.maze-canvas){background:var(--maze-ground,var(--surface))}.maze-viewport{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:relative;overflow:hidden}.maze-canvas{width:100%;height:100%;display:block;-webkit-mask-image:linear-gradient(#000 calc(100% - 28px),#0000);mask-image:linear-gradient(#000 calc(100% - 28px),#0000)}.maze-board{grid-template-columns:repeat(var(--maze-cols), 1fr);width:var(--maze-board-w);height:var(--maze-board-h);transform:translate(var(--cam-x,0px), var(--cam-y,0px));touch-action:none;-webkit-user-select:none;user-select:none;transition:transform .165s linear;display:grid;position:absolute;top:0;left:0;container-type:inline-size}.maze-cell{background-repeat:no-repeat;position:relative}.maze-wall-top-face{height:max(3px, calc(var(--wall-side-h,0px) * .32));z-index:1;background:#84878c;position:absolute;top:0;left:0;right:0}.maze-wall-top-side{top:max(3px, calc(var(--wall-side-h,0px) * .32));height:var(--wall-side-h,0px);z-index:1;background:#3c3e43;position:absolute;left:0;right:0}.maze-wall-left-face{width:max(3px, calc(var(--wall-side-h,0px) * .32));z-index:1;background:#84878c;position:absolute;top:0;bottom:0;left:0}.maze-wall-left-side{top:0;bottom:0;left:max(3px, calc(var(--wall-side-h,0px) * .32));width:var(--wall-side-h,0px);z-index:1;background:#3c3e43;position:absolute}.maze-cell.trail:after{content:"";background:color-mix(in srgb, var(--primary) 26%, transparent);border-radius:50%;position:absolute;inset:22%}.maze-cell.goal{background-color:color-mix(in srgb, var(--primary) 10%, transparent)}.maze-exit{z-index:3;color:var(--primary);font-size:calc(72cqw / var(--maze-cols));place-items:center;line-height:1;display:grid;position:absolute;inset:0}.maze-tap{z-index:7;pointer-events:none;border-radius:50%;width:44px;height:44px;margin:-22px 0 0 -22px;position:absolute}.maze-tap.no{background:#4755698c;width:26px;height:26px;margin:-13px 0 0 -13px;animation:.42s ease-in-out both maze-tap-no}@keyframes maze-tap-no{0%,to{opacity:0;transform:translate(0)}15%{opacity:1}30%{transform:translate(-6px)}55%{transform:translate(6px)}80%{opacity:.8;transform:translate(-3px)}}@media (prefers-reduced-motion:reduce){.maze-tap.no{animation-duration:1ms}}.maze-bottom{flex:none}.maze-bottom>p{margin:0}.maze-result{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.maze-result-title{font-size:18px}.maze-result-actions{gap:8px;width:100%;margin-top:4px;display:flex}.maze-result-actions .button{flex:1 1 0}.maze-exit-cue{z-index:5;color:#5b3d00;width:34px;height:34px;box-shadow:var(--shadow-sm);pointer-events:none;background:#e2b53c;border:2px solid #fff;border-radius:50%;place-items:center;margin:-17px 0 0 -17px;font-size:15px;line-height:1;display:grid;position:absolute}.maze-exit-cue-arrow{transform:rotate(var(--cue-angle,0deg));display:block}.maze-play.cleared .maze-board{animation:1.1s ease-out 2 both maze-board-cheer}.maze-play.cleared .maze-cell.trail:after{animation:maze-trail-cheer .56s ease-out var(--pop-delay,0s) both}.maze-play.cleared .maze-exit{animation:maze-finish .76s cubic-bezier(.2, .8, .3, 1) var(--pop-delay,0s) both}.maze-play.cleared .maze-cell.trail:before{content:"";background:color-mix(in srgb, var(--primary) 60%, #fff);opacity:0;animation:maze-return .62s ease-out var(--back-delay,0s) both;border-radius:50%;position:absolute;inset:12%}.maze-burst{z-index:4;pointer-events:none;position:absolute;inset:0}.maze-spark{background:var(--primary);width:34%;height:34%;box-shadow:0 0 8px color-mix(in srgb, var(--primary) 60%, transparent);opacity:0;animation:maze-spark 1.1s cubic-bezier(.15, .75, .3, 1) var(--pop-delay,0s) both;border-radius:50%;margin:-17% 0 0 -17%;position:absolute;top:50%;left:50%}.maze-spark.s0{--angle:0deg;--reach:210%}.maze-spark.s1{--angle:36deg;--reach:260%}.maze-spark.s2{--angle:72deg;--reach:190%}.maze-spark.s3{--angle:108deg;--reach:250%}.maze-spark.s4{--angle:144deg;--reach:300%}.maze-spark.s5{--angle:180deg;--reach:220%}.maze-spark.s6{--angle:216deg;--reach:270%}.maze-spark.s7{--angle:252deg;--reach:200%}.maze-spark.s8{--angle:288deg;--reach:280%}.maze-spark.s9{--angle:324deg;--reach:230%}.maze-play.cleared .maze-cell.goal{animation:maze-goal-cheer .7s ease-out var(--pop-delay,0s) both}.maze-play.cleared .maze-runner-dot{animation:maze-runner-cheer .62s ease-out var(--pop-delay,0s) both}.maze-target{z-index:1;width:calc(100% / var(--maze-cols));height:calc(100% / var(--maze-rows));transform:translate(calc(var(--col) * 100%), calc(var(--row) * 100%));pointer-events:none;position:absolute;top:0;left:0}.maze-target:before{content:"";border:3px solid var(--primary);border-radius:50%;animation:.9s ease-in-out infinite maze-target-pulse;position:absolute;inset:18%}.maze-target:after{content:"";background:var(--primary);border-radius:50%;position:absolute;inset:42%}@keyframes maze-target-pulse{0%,to{transform:scale(.9)}50%{transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){.maze-target:before{animation:none}}.maze-runner{z-index:2;width:calc(100% / var(--maze-cols));height:calc(100% / var(--maze-rows));transform:translate(calc(var(--col) * 100%), calc(var(--row) * 100%));pointer-events:none;transition:transform .165s linear;position:absolute;top:0;left:0}.maze-runner-dot{background:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 18%, transparent);border-radius:50%;animation:1.6s ease-in-out infinite maze-breathe;position:absolute;inset:20%}.maze-home .brand-mark{width:min(48vw,180px);height:auto;color:var(--primary)}@keyframes maze-breathe{50%{box-shadow:0 0 0 6px color-mix(in srgb, var(--primary) 8%, transparent);transform:scale(.84)}}@keyframes maze-return{0%{opacity:0;transform:scale(.6)}35%{opacity:.85;transform:scale(1.15)}to{opacity:0;transform:scale(1.5)}}@keyframes maze-spark{0%{opacity:0;transform:rotate(var(--angle)) translateX(0) scale(.5)}12%{opacity:1;transform:rotate(var(--angle)) translateX(35%) scale(1.15)}62%{opacity:1}to{opacity:0;transform:rotate(var(--angle)) translateX(var(--reach)) scale(.35)}}@keyframes maze-board-cheer{40%{border-color:var(--primary);box-shadow:0 0 0 6px color-mix(in srgb, var(--primary) 16%, transparent)}to{border-color:var(--primary);box-shadow:var(--shadow-sm)}}@keyframes maze-trail-cheer{0%{background:color-mix(in srgb, var(--primary) 26%, transparent);inset:22%}45%{background:var(--primary);box-shadow:0 0 12px color-mix(in srgb, var(--primary) 55%, transparent);inset:6%}to{background:color-mix(in srgb, var(--primary) 62%, transparent);box-shadow:none;inset:14%}}@keyframes maze-goal-cheer{0%{background-color:color-mix(in srgb, var(--primary) 10%, transparent)}45%,to{background-color:color-mix(in srgb, var(--primary) 26%, transparent)}}@keyframes maze-finish{0%{transform:scale(1)}40%{filter:drop-shadow(0 0 14px var(--primary));transform:scale(2)rotate(18deg)}to{filter:drop-shadow(0 0 8px var(--primary));transform:scale(1.25)}}@keyframes maze-runner-cheer{0%{opacity:1;box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 30%, transparent);transform:scale(1)}40%{opacity:1;transform:scale(1.5)}to{opacity:0;box-shadow:0 0 0 18px color-mix(in srgb, var(--primary) 0%, transparent);transform:scale(2.2)}}@media (prefers-reduced-motion:reduce){.maze-board,.maze-runner{transition:none}.maze-runner-dot{animation:none}.maze-play.cleared .maze-board,.maze-play.cleared .maze-cell.trail:after,.maze-play.cleared .maze-cell.trail:before,.maze-play.cleared .maze-spark,.maze-play.cleared .maze-cell.goal,.maze-play.cleared .maze-exit,.maze-play.cleared .maze-runner-dot{animation-duration:1ms;animation-delay:0s}}.doodle{gap:12px}.doodle-score-row{gap:10px;display:flex}.doodle-score-box{background:var(--tile);border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:10px 8px;display:flex}.doodle-score-label{letter-spacing:.12em;color:var(--muted);font-size:10px;font-weight:700}.doodle-score-value{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.doodle-best-chip{flex-direction:column;align-items:flex-end;gap:2px;padding-top:4px;display:flex}.doodle-best-chip strong{font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.doodle-stage-area{flex-direction:column;gap:10px;margin:auto 0;display:flex}.doodle-stage{aspect-ratio:400/620;width:min(100%,64.5161dvh - 161.29px);box-shadow:var(--shadow-sm);touch-action:none;border-radius:18px;margin:0 auto;display:block;overflow:hidden}.doodle-tilt-gate{background:var(--tile);width:min(100%,64.5161dvh - 161.29px);margin:0 auto}.doodle-home .brand-mark{width:min(46vw,165px);height:auto;color:var(--primary)}@media (height<=680px){.doodle-stage{width:min(100%,64.5161dvh - 140.645px)}}.othello-home .brand-mark{width:min(48vw,170px);height:auto;color:var(--primary)}.othello-play{gap:12px}.othello-score{background:var(--tile);font-variant-numeric:tabular-nums;border-radius:14px;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;min-height:54px;padding:8px 12px;display:grid}.othello-score-side,.othello-turn{align-items:center;gap:7px;display:flex}.othello-score-side:last-child{justify-content:flex-end}.othello-score-side strong{font-size:20px}.othello-turn{color:var(--muted-strong);flex-direction:column;gap:1px;font-size:12px}.othello-turn span{color:var(--muted)}.othello-message{text-align:center;min-height:20px;color:var(--primary);font-size:13px;font-weight:600}.othello-board{aspect-ratio:1;background:color-mix(in srgb, var(--primary) 76%, #10271f);width:100%;max-width:388px;box-shadow:var(--shadow-md);border-radius:12px;grid-template-rows:repeat(8,minmax(0,1fr));grid-template-columns:repeat(8,minmax(0,1fr));gap:1px;margin:auto;padding:4px;display:grid;overflow:hidden}.othello-cell{background:color-mix(in srgb, var(--primary) 78%, white);place-items:center;min-width:0;padding:0;display:grid;position:relative}.othello-cell:disabled{opacity:1}.othello-cell.legal{cursor:pointer}.othello-cell.legal:active{background:color-mix(in srgb, var(--primary) 66%, white)}.othello-disc{aspect-ratio:1;border-radius:50%;flex:none;width:26px;display:inline-block;box-shadow:0 2px 4px #0000003d,inset 0 1px 1px #ffffff3d}.othello-cell .othello-disc{width:72%}.othello-disc.black{background:radial-gradient(circle at 36% 30%,#4c5358,#111416 66%)}.othello-disc.white{background:radial-gradient(circle at 36% 30%,#fff,#e9ecef 72%)}.othello-cell.last:after{content:"";background:var(--danger);border-radius:50%;width:7px;height:7px;position:absolute}.othello-cell.last .othello-disc+.othello-legal-dot,.othello-cell.last .othello-legal-dot{display:none}.othello-legal-dot{background:#ffffffa8;border-radius:50%;width:8px;height:8px;box-shadow:0 1px 3px #0000002e}.othello-result-button{flex:none}.othello-disc.flipped{animation:.42s cubic-bezier(.25,.75,.25,1) both othello-flip}.othello-board.finished .othello-disc{animation:.6s ease-out both othello-finish}.othello-board.finished .othello-cell:nth-child(4n+2) .othello-disc{animation-delay:70ms}.othello-board.finished .othello-cell:nth-child(4n+3) .othello-disc{animation-delay:.14s}.othello-board.finished .othello-cell:nth-child(4n) .othello-disc{animation-delay:.21s}@keyframes othello-flip{0%{transform:rotateY(90deg)scale(.82)}65%{transform:rotateY(0)scale(1.08)}to{transform:rotateY(0)scale(1)}}@keyframes othello-finish{0%,to{transform:translateY(0)}45%{transform:translateY(-18%)scale(1.08)}}@media (height<=700px){.othello-play{gap:8px}.othello-board{max-width:min(78vh,360px)}.othello-play>.muted{display:none}}@media (prefers-reduced-motion:reduce){.othello-disc.flipped,.othello-board.finished .othello-disc{animation:none}}.tower-home .brand-mark{width:min(52vw,190px);height:auto}.tower-best{gap:1px;display:inline-flex}.tower-stars{gap:2px;display:inline-flex}.screen.tower-play{gap:10px;padding-left:0;padding-right:0}.tower-play .tower-pad{padding-left:20px;padding-right:20px}.tower-hud{font-variant-numeric:tabular-nums;align-items:center;gap:14px;min-height:34px;display:flex}.tower-stat{align-items:center;gap:5px;font-size:20px;display:inline-flex}.tower-stat.shake{animation:.4s ease-out tower-shake}.tower-waves{gap:6px;margin-left:auto;display:inline-flex}.tower-waves i{border:2px solid var(--brand-muted);background:0 0;border-radius:50%;width:12px;height:12px}.tower-waves i.done{background:var(--primary);border-color:var(--primary)}.tower-waves i.now{border-color:var(--primary);background:var(--primary-soft)}.tower-stage{background:#dff3ff;flex:1;min-height:0;position:relative}.tower-canvas-wrap{position:absolute;inset:0}.tower-canvas{touch-action:manipulation;width:100%;height:100%;display:block}.tower-loading{padding-top:40px}.tower-fallback{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;height:100%;padding:24px;display:flex}.tower-controls{flex:none;justify-content:space-between;align-items:center;gap:12px;height:84px;display:flex}.tower-hint{color:var(--muted-strong);flex:1;font-size:14px;font-weight:600}.tower-sheet{flex:1;gap:8px;display:flex}.tower-pick{background:var(--surface);width:76px;height:80px;box-shadow:var(--shadow-md);border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:1px;display:flex}.tower-pick span{align-items:center;gap:3px;font-size:14px;display:inline-flex}.tower-pick{position:relative}.tower-ring-menu{z-index:3;gap:8px;display:flex;position:absolute}.tower-ring-btn{background:var(--surface);width:58px;height:58px;box-shadow:var(--shadow-md);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:0;font-size:13px;font-weight:700;display:flex}.tower-ring-btn span{align-items:center;gap:2px;display:inline-flex}.tower-ring-btn:disabled{opacity:.4}.tower-ring-btn.armed{background:var(--danger);color:#fff}.tower-ring-btn:active:not(:disabled){transform:scale(.94)}.tower-confirm{z-index:3;gap:18px;display:flex;position:absolute;transform:translate(-50%,-100%)}.tower-confirm-btn{width:44px;height:44px;box-shadow:var(--shadow-md);border-radius:50%;place-items:center;padding:0;display:grid}.tower-confirm-btn.ok{background:var(--primary)}.tower-confirm-btn.cancel{background:var(--danger)}.tower-confirm-btn:disabled{opacity:.4}.tower-confirm-btn:active:not(:disabled){transform:scale(.94)}.tower-pick.pending:not(:disabled){outline:3px solid var(--primary);outline-offset:-3px}.tower-pick:disabled{opacity:.4}.tower-pick:active:not(:disabled){transform:scale(.94)}.tower-go{color:#fff;background:var(--primary);width:76px;height:76px;box-shadow:var(--shadow-primary);border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.tower-go:disabled{opacity:.35;box-shadow:none}.tower-go:active:not(:disabled){transform:scale(.94)}.tower-go-arc{pointer-events:none;width:calc(100% + 16px);height:calc(100% + 16px);position:absolute;inset:-8px;transform:rotate(-90deg)}.tower-go-arc circle{fill:none;stroke:var(--primary);stroke-width:5px;stroke-linecap:round}.tower-go-bonus{color:var(--text);background:#fff;border-radius:999px;align-items:center;gap:2px;padding:2px 6px;font-size:12px;font-weight:700;display:flex;position:absolute;top:-6px;right:-6px;box-shadow:0 1px 4px #0000002e}.tower-modal-art,.tower-modal-stars{justify-content:center;gap:6px;padding:6px 0;display:flex}.tower-result{display:contents}.tower-result .overlay{animation:.3s ease-out both tower-fade}.tower-result .modal{animation:.3s cubic-bezier(.2,.9,.3,1.1) both tower-rise}@keyframes tower-fade{0%{opacity:0}to{opacity:1}}@keyframes tower-rise{0%{opacity:0;transform:translateY(24px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes tower-shake{0%,to{color:inherit;transform:translate(0)scale(1)}15%{color:var(--danger);transform:translate(0)scale(1.35)}35%{color:var(--danger);transform:translate(-5px)scale(1.15)}55%{transform:translate(5px)scale(1.05)}75%{transform:translate(-3px)}}@media (prefers-reduced-motion:reduce){.tower-stat.shake{animation:none}.tower-result .modal{animation:.2s ease-out both tower-fade}}.app{background:var(--bg);flex-direction:column;width:100%;max-width:420px;height:100%;margin:0 auto;display:flex;position:relative;overflow:hidden}.screen{padding:calc(env(safe-area-inset-top) + 20px) 20px calc(env(safe-area-inset-bottom) + 16px);overscroll-behavior:contain;flex-direction:column;flex:1;gap:16px;display:flex;overflow-y:auto}.row{justify-content:space-between;align-items:center;gap:8px;display:flex}.muted{color:var(--muted)}.small{font-size:12px}.center{text-align:center}.accent{color:var(--primary)}.danger{color:var(--danger)}.card{text-align:left;background:var(--surface);box-shadow:var(--shadow-sm);border-radius:16px;flex-direction:column;gap:12px;padding:16px;display:flex}.section-title{font-size:14px;font-weight:600}.icon-button{width:44px;height:44px;color:var(--text-soft);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:14px;justify-content:center;align-items:center;display:flex}.icon-button.ghost{box-shadow:none;background:0 0;border:none}.button{border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:52px;padding:12px 18px;font-size:16px;font-weight:600;display:flex}.button.block{width:100%}.button.row-button{flex-direction:row;gap:8px}.button.primary{color:#fff;background:var(--primary);box-shadow:var(--shadow-primary)}.button.primary:active{background:var(--primary-strong)}.button.danger-fill{color:#fff;background:var(--danger)}.button.danger-fill:active{filter:brightness(.94)}.button.outline{background:var(--surface);box-shadow:var(--shadow-sm)}.button.text{min-height:46px;color:var(--muted-strong);font-weight:500}.button-sub{opacity:.9;font-size:12px;font-weight:400}.button-row{gap:10px;display:flex}.progress{background:var(--track);border-radius:999px;width:100%;height:8px;overflow:hidden}.progress>span{background:var(--progress-fill);border-radius:999px;height:100%;transition:width .3s;display:block}.badge{letter-spacing:.06em;color:var(--primary);background:var(--badge-bg);border-radius:999px;padding:6px 11px;font-size:10px;font-weight:700}.badge.done{color:var(--muted-strong);background:var(--tile)}.stat-row{gap:10px;display:flex}.stat-tile{background:var(--surface);box-shadow:var(--shadow-sm);border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:8px;padding:16px 8px;display:flex}.stat-label{letter-spacing:.1em;color:var(--muted);font-size:10px;font-weight:600}.stat-value{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.brand-lockup{color:var(--primary);align-items:center;gap:8px;display:inline-flex}.brand-lockup strong{color:var(--text);font-size:20px;font-weight:700}.brand-symbol{width:26px;height:26px}.hub{gap:14px}.hub .greeting{margin-top:-6px}.hub-quote{letter-spacing:-.01em;color:var(--text-soft);margin:14px 0 20px;font-size:19px;font-weight:600;line-height:1.65}.game-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.game-card{text-align:left;color:var(--primary);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:18px;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:6px;padding:16px 15px 15px;display:flex}.game-card strong{color:var(--text);font-size:17px;font-weight:700}.game-mark{width:42px;height:42px;margin-bottom:4px;display:flex}.game-note{color:var(--muted);font-size:11px;line-height:1.35}.game-card.tool{color:var(--muted)}.game-card.tool .game-mark{align-items:center}.game-card.soon{color:var(--muted);background:var(--tile);box-shadow:none}.game-card.soon strong{color:var(--muted-strong)}.placeholder{text-align:center;flex-direction:column;align-items:center;gap:8px;margin:auto 0;display:flex}.placeholder strong{color:var(--muted-strong);font-size:20px;font-weight:700}.placeholder p{line-height:1.6}.header-spacer{width:36px}.home{gap:14px}.home-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.back-button{width:36px;height:36px;color:var(--muted-strong);box-shadow:none;background:0 0;justify-content:center;align-items:center;margin-left:-8px;display:flex}.level-chip{flex-direction:column;align-items:flex-end;gap:6px;width:96px;padding-top:4px;display:flex}.level-chip-label{color:var(--muted-strong);font-size:13px;font-weight:700}.level-chip .progress{height:5px}.greeting{color:var(--muted-strong);margin-bottom:4px;font-size:13px}.headline{letter-spacing:-.01em;font-size:22px;font-weight:700;line-height:1.3}.player-block{flex-direction:column;gap:12px;padding:2px;display:flex}.player-level{font-size:19px;font-weight:700}.brand{justify-content:center;align-items:center;margin:auto 0;display:flex}.brand-mark{width:min(62vw,220px);height:auto}.home-actions{flex-direction:column;gap:8px;display:flex}.home .button.primary{min-height:64px;font-size:17px;font-weight:600}.text-actions{gap:8px;display:flex}.text-actions .button.text{min-height:56px;color:var(--text-soft);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:14px;flex:1;gap:3px;padding:8px 12px;font-size:15px}.text-actions .button.text .button-sub{color:var(--muted);opacity:1;font-size:12px}.sub-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.sub-header h1{text-align:center;flex:1;font-size:18px;font-weight:700}.sub-header h1:only-child{text-align:left}.scores-tabs{background:var(--tile);border-radius:13px;flex:none;gap:2px;margin:0 auto;padding:3px;display:inline-flex}.scores .header-spacer{width:28px}.scores-tab{color:var(--muted-strong);background:0 0;border:0;border-radius:10px;padding:6px 14px;font-size:14px;font-weight:600}.scores-tab.active{color:var(--text);background:var(--surface);box-shadow:var(--shadow-sm)}.hub .sub-header h1{text-align:left}.difficulty-list,.record-list{flex-direction:column;gap:12px;display:flex}.difficulty-card{gap:8px;padding:18px}.difficulty-label{font-size:18px;font-weight:700}.difficulty-stats{color:var(--muted-strong);justify-content:flex-start;gap:14px}.size-tabs{background:var(--tile);border-radius:16px;grid-template-columns:repeat(3,1fr);gap:8px;padding:5px;display:grid}.size-tab{color:var(--muted-strong);border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;display:flex}.size-tab strong{font-size:15px;font-weight:700}.size-tab span{letter-spacing:.04em;color:var(--muted);font-size:10px}.size-tab.active{color:var(--primary);background:var(--surface);box-shadow:var(--shadow-sm)}.size-tab.active span{color:var(--primary);opacity:.75}.game{gap:12px;padding-left:16px;padding-right:16px}.game-header{justify-content:space-between;align-items:center;display:flex}.game-title{flex-direction:column;align-items:center;gap:4px;display:flex}.mode-label{letter-spacing:.14em;color:var(--muted);font-size:11px;font-weight:600}.timer{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.board{grid-template-columns:repeat(var(--box-cols,3), minmax(0, 1fr));grid-template-rows:repeat(var(--box-rows,3), minmax(0, 1fr));width:100%;max-width:min(100%, calc(100dvh - var(--board-reserve,320px)));aspect-ratio:1;background:var(--grid-strong);border:1px solid var(--grid-strong);border-radius:10px;gap:1px;margin-inline:auto;transition:filter .2s;display:grid;position:relative;overflow:hidden;container-type:inline-size}.box{grid-template-columns:repeat(var(--box-w,3), minmax(0, 1fr));grid-template-rows:repeat(var(--box-h,3), minmax(0, 1fr));background:var(--grid);gap:1px;display:grid}.board.blurred{filter:blur(6px)}.cell{min-width:0;font-size:calc(47cqw / var(--cells,9));color:var(--entry);background:var(--surface);justify-content:center;align-items:center;font-weight:500;display:flex;position:relative}.cell.given{color:var(--text);font-weight:700}.cell.hinted{color:#a78bfa}.cell.peer{background:var(--primary-tint)}.cell.same-value{background:var(--primary-soft)}.cell.wrong{color:var(--danger);background:var(--danger-soft)}.cell.selected{z-index:1;background:var(--primary-soft);box-shadow:inset 0 0 0 2px var(--entry)}.cell.selected.wrong{color:var(--danger);background:var(--danger-soft);box-shadow:inset 0 0 0 2px var(--danger)}.cell.selected.wrong .notes{color:var(--danger)}.digit{z-index:1;display:inline-block;position:relative}@keyframes cell-pop{0%{transform:scale(1)}40%{transform:scale(1.38)}70%{transform:scale(.96)}to{transform:scale(1)}}@keyframes cell-pop-color{0%,to{color:inherit}40%,70%{color:var(--entry)}}@keyframes cell-flash{0%,to{opacity:0}40%,70%{opacity:.9}}.cell.pop:before{content:"";background:var(--primary-soft);animation:cell-flash .5s ease-out var(--pop-delay,0s) both;position:absolute;inset:0}.cell.pop .digit{animation:cell-pop .5s ease-out var(--pop-delay,0s) both, cell-pop-color .5s ease-out var(--pop-delay,0s) both}@keyframes cell-celebrate{0%{transform:scale(1)}30%{transform:scale(1.5)}55%{transform:scale(.92)}75%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes board-celebrate{0%{box-shadow:0 0 0 0 rgb(var(--primary-rgb) / .35)}70%{box-shadow:0 0 0 18px rgb(var(--primary-rgb) / 0)}to{box-shadow:0 0 0 0 rgb(var(--primary-rgb) / 0)}}.board.celebrating{animation:1.1s ease-out both board-celebrate}@keyframes cell-celebrate-style{0%{color:inherit;font-weight:inherit}35%,to{color:var(--primary);font-weight:700}}@keyframes cell-celebrate-flash{0%{opacity:0}35%{opacity:.95}to{opacity:.55}}.board.celebrating .cell.pop .digit{animation:cell-celebrate .7s ease-out var(--pop-delay,0s) both, cell-celebrate-style .7s ease-out var(--pop-delay,0s) both}.board.celebrating .cell.pop:before{background:var(--primary-soft);animation:cell-celebrate-flash .7s ease-out var(--pop-delay,0s) both}@media (prefers-reduced-motion:reduce){.board.celebrating,.board.celebrating .cell.pop .digit,.cell.pop:before,.cell.pop .digit{animation:none}.cell.pop:before{content:none}}.notes{grid-template-columns:repeat(var(--note-cols,3), 1fr);width:100%;height:100%;font-size:calc(26cqw / var(--cells,9));color:var(--muted);font-weight:600;line-height:1;display:grid}.notes>span{justify-content:center;align-items:center;display:flex}.cell.wrong .notes{color:var(--danger)}.spacer.top{flex:1;min-height:8px}.spacer.bottom{flex:2;min-height:12px}.controls{gap:6px;display:flex}.control{flex-direction:column;flex:1;align-items:center;gap:8px;display:flex}.control-tile{width:50px;height:50px;color:var(--text-soft);background:var(--tile);border-radius:16px;justify-content:center;align-items:center;display:flex;position:relative}.control-label{letter-spacing:.1em;color:var(--muted);font-size:11px;font-weight:500}.control-badge{letter-spacing:.1em;color:var(--muted);font-size:10px;font-weight:600;position:absolute;top:-12px;right:-4px}.control.active .control-tile{color:#fff;background:var(--primary)}.control.active .control-label,.control.active .control-badge{color:var(--primary)}.control:disabled{opacity:.4}.keypad{grid-template-columns:repeat(var(--keys,9), 1fr);gap:6px;display:grid}.key{height:52px;font-size:clamp(20px, calc(160px / var(--keys,9)), 26px);color:var(--text);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:12px;justify-content:center;align-items:center;font-weight:600;display:flex}.key.active{color:var(--primary);border:2px solid var(--primary);box-shadow:none}.key:disabled{color:var(--muted);opacity:.4;box-shadow:none}.key:active{background:var(--primary-tint)}.status-bar{letter-spacing:.08em;color:var(--muted);background:var(--tile);border-radius:14px;justify-content:center;gap:32px;padding:14px 16px;font-size:11px;font-weight:500;display:flex}.overlay{z-index:10;background:#11182740;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.modal{text-align:center;background:var(--surface);width:100%;max-width:320px;box-shadow:var(--shadow-lg);border-radius:24px;flex-direction:column;gap:10px;padding:26px 22px 18px;display:flex}.modal p.small{margin-bottom:8px;line-height:1.5}.modal h2{margin-bottom:10px;font-size:22px;font-weight:700}.modal .button{border-radius:12px;min-height:50px}.modal-stats{border-top:1px solid var(--track);gap:10px;margin-top:6px;padding:18px 0 4px;display:flex}.modal-stats>div{flex-direction:column;flex:1;gap:8px;display:flex}.modal-stats strong{font-variant-numeric:tabular-nums;font-size:16px;font-weight:700}.sound-toggle{letter-spacing:.1em;color:var(--muted);flex-direction:row;gap:8px;font-size:12px;font-weight:500}.result{text-align:center;justify-content:center;align-items:center;gap:16px}.result-icon{width:76px;height:76px;color:var(--primary);background:var(--primary-soft);border-radius:50%;justify-content:center;align-items:center;display:flex}.result-icon.danger{color:var(--danger);background:var(--danger-soft)}.result-title{letter-spacing:-.02em;margin-top:4px;font-size:30px;font-weight:700}.result>p{color:var(--muted-strong);margin-top:-12px;font-size:15px}.result .stat-row,.result .card,.result .button,.result .button-row,.result .level-block{width:100%}.compare{text-align:center;gap:6px;padding:18px 16px}.compare p{font-size:15px}.compare .small{letter-spacing:.08em;color:var(--muted)}.level-block{flex-direction:column;gap:10px;padding:2px;display:flex}.level-block .row{letter-spacing:.06em;font-size:12px}.stat-strip{padding:2px;display:flex}.stat-strip>div{flex-direction:column;flex:1;align-items:center;gap:2px;display:flex}.stat-strip>div+div{border-left:1px solid var(--track)}.stat-strip strong{font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.stat-strip span{color:var(--muted);font-size:11px}.row-tail{flex:none;align-items:center;gap:12px;display:flex}.link-row{text-align:left;width:100%}.link-row:active{opacity:.6}.section-head{align-items:baseline;margin-top:4px}.size-panel{background:var(--tile);border-radius:18px;flex-direction:column;gap:5px;padding:5px;display:flex}.size-panel .size-tabs{background:0 0;border-radius:0;padding:0}.stat-table{background:var(--surface);box-shadow:var(--shadow-sm);border-radius:14px;flex-direction:column;padding:10px 14px 6px;display:flex}.stat-table-row{text-align:right;font-variant-numeric:tabular-nums;grid-template-columns:1fr 3rem 3.6rem 3.6rem;align-items:center;gap:8px;padding:8px 0;font-size:14px;display:grid}.stat-table-row>:first-child{text-align:left}.stat-table-row.head{color:var(--muted);border-bottom:1px solid var(--track);padding:0 0 8px;font-size:11px}.flat-list{flex-direction:column;padding:0 2px;list-style:none;display:flex}.flat-row{justify-content:space-between;align-items:center;gap:12px;padding:11px 0;display:flex}.flat-row+.flat-row{border-top:1px solid var(--track)}.flat-main,.flat-side{flex-direction:column;gap:2px;min-width:0;display:flex}.flat-side{text-align:right;align-items:flex-end}.flat-title{font-size:15px;font-weight:600}.flat-meta{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.flat-side .accent{font-size:13px;font-weight:700}.name-input{border-bottom:1px dashed var(--track);width:62%;padding:4px 0;font-size:16px;font-weight:700}.setting-row{flex-direction:row;justify-content:space-between;align-items:center;font-weight:600}.version-line{border-top:1px solid var(--border-soft,#f3f4f6);letter-spacing:.02em;padding-top:10px}.update-button{border-radius:12px;flex:none;min-height:44px;padding:10px 14px;font-size:14px}.update-button:disabled{opacity:.5}.setting-label{font-weight:600}.setting-input{text-align:right;background:var(--tile);border-radius:10px;width:55%;padding:8px 12px;font-size:15px;font-weight:600}.setting-input:focus{box-shadow:inset 0 0 0 2px var(--primary)}.switch{background:var(--track);border-radius:999px;align-items:center;width:46px;height:28px;padding:3px;transition:background .2s;display:flex}.switch>span{width:22px;height:22px;box-shadow:var(--shadow);background:#fff;border-radius:50%;transition:transform .2s}.switch.on{background:var(--primary)}.switch.on>span{transform:translate(18px)}.theme-grid{grid-template-columns:repeat(6,1fr);gap:10px;display:grid}.swatch{aspect-ratio:1;color:#fff;box-shadow:var(--shadow-sm);border-radius:50%;justify-content:center;align-items:center;transition:transform .15s;display:flex}.swatch.selected{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--primary);transform:scale(1.06)}.tabbar{padding:10px 28px calc(env(safe-area-inset-bottom) + 12px);background:var(--surface);justify-content:space-around;display:flex}.tab{width:52px;height:40px;color:var(--muted);border-radius:14px;justify-content:center;align-items:center;display:flex;position:relative}.tab.active{color:var(--primary);background:var(--primary-tint)}.tab-dot{background:var(--danger);border-radius:50%;width:6px;height:6px;position:absolute;top:6px;right:12px}.rotate-notice{display:none}@media (orientation:landscape) and (height<=520px){.app{display:none}.rotate-notice{text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;display:flex;position:fixed;inset:0}.rotate-notice .rotate-icon{width:64px;height:64px;color:var(--primary);background:var(--primary-soft);border-radius:50%;justify-content:center;align-items:center;display:flex}.rotate-notice h2{font-size:19px;font-weight:700}.rotate-notice p{color:var(--muted-strong);font-size:14px}}@media (height<=680px){.screen{padding-top:calc(env(safe-area-inset-top) + 12px);padding-bottom:calc(env(safe-area-inset-bottom) + 10px);gap:10px}.game{gap:8px}.icon-button{width:40px;height:40px}.timer{font-size:22px}.control-tile{border-radius:13px;width:44px;height:44px}.control{gap:5px}.key{height:44px}.status-bar{padding:10px 12px}.spacer.top,.spacer.bottom{min-height:0}.board{--board-reserve:275px}.card{padding:14px}.brand{gap:2px;padding:4px 0}.home .button.primary{min-height:54px}.headline{font-size:20px}.player-block{gap:9px}.tabbar{padding:6px 24px calc(env(safe-area-inset-bottom) + 8px)}}@media (width>=700px){.app{max-width:560px}.screen{padding:calc(env(safe-area-inset-top) + 28px) 28px calc(env(safe-area-inset-bottom) + 24px);gap:20px}.game{padding-left:24px;padding-right:24px}.card{border-radius:20px;padding:20px}.icon-button{border-radius:16px;width:52px;height:52px}.button{border-radius:16px;min-height:60px;font-size:18px}.headline{font-size:26px}.level-chip{flex-direction:column;align-items:flex-end;gap:6px;width:96px;padding-top:4px;display:flex}.level-chip-label{color:var(--muted-strong);font-size:13px;font-weight:700}.level-chip .progress{height:5px}.greeting{font-size:15px}.player-level{font-size:22px}.home .button.primary{min-height:74px;font-size:20px}.sub-header h1{font-size:21px}.brand-mark{width:min(52vw,280px)}.difficulty-label{font-size:21px}.timer{font-size:32px}.mode-label{font-size:12px}.board{--board-reserve:440px;border-radius:12px}.control-tile{border-radius:18px;width:58px;height:58px}.control-label{font-size:12px}.key{border-radius:14px;height:62px;font-size:24px}.status-bar{padding:16px;font-size:12px}.stat-value{font-size:26px}.result-icon{width:92px;height:92px}.result-title{font-size:36px}.modal{max-width:380px}.tab{width:64px;height:46px}}@media (width>=820px) and (orientation:portrait){.app{max-width:620px}}@media (width>=900px) and (height>=600px) and (orientation:landscape){.app{max-width:1120px}.screen:not(.game),.tabbar{width:100%;max-width:560px;margin:0 auto}.game{grid-template:"board header""board controls""board keypad""board status"/minmax(0,1fr) clamp(280px,34%,400px);align-content:center;gap:18px 36px;padding:32px;display:grid}.game .spacer{display:none}.game-header{grid-area:header;align-self:start}.board{grid-area:board;place-self:center;width:min(100%,78vh,660px);max-width:none;height:auto}.controls{grid-area:controls;align-self:end;margin-top:0}.keypad{grid-area:keypad;grid-template-columns:repeat(var(--keys-half,5), 1fr);align-self:start}.status-bar{grid-area:status;align-self:end}}.sync-dot{vertical-align:1px;background:var(--muted);border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block}.sync-dot.ok{background:var(--primary)}.sync-dot.offline{background:var(--muted-strong)}.sync-dot.error{background:#dc2626}.sync-dot.syncing{background:var(--primary);animation:1.1s ease-in-out infinite sync-pulse}@keyframes sync-pulse{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}.pair-row{align-items:center;padding-top:2px}.pair-code{letter-spacing:.18em;color:var(--primary);margin-right:-.18em;font-size:24px;font-weight:700}.pair-code.waiting{letter-spacing:normal;color:var(--muted-strong);margin-right:0;font-size:13px;font-weight:500;animation:1.4s ease-in-out infinite sync-breathe}@keyframes sync-breathe{0%,to{opacity:.45}50%{opacity:1}}.pair-input{letter-spacing:.18em;text-align:center;text-transform:uppercase;margin-bottom:10px;font-size:28px;font-weight:700}.pair-notice{text-align:center;color:#dc2626;margin-bottom:10px}.rank-screen{overflow:hidden}.rank-nav{flex-direction:column;gap:8px;display:flex}.rank-scroll{overscroll-behavior:contain;flex-direction:column;flex:1;gap:16px;min-height:0;margin:0 -20px;padding:2px 20px 8px;display:flex;overflow-y:auto}.rank-games{scrollbar-width:none;gap:8px;margin-bottom:12px;padding-bottom:2px;display:flex;overflow-x:auto}.rank-games::-webkit-scrollbar{display:none}.rank-game{color:var(--muted-strong);background:var(--tile);border-radius:999px;flex:none;padding:8px 14px;font-size:14px;font-weight:600}.rank-game.active{color:#fff;background:var(--primary);box-shadow:var(--shadow-primary)}.rank-modes{scrollbar-width:none;gap:6px;margin-bottom:12px;display:flex;overflow-x:auto}.rank-modes::-webkit-scrollbar{display:none}.rank-modes .size-tab{white-space:nowrap;flex:none;padding:8px 12px;font-size:13px;font-weight:600}.rank-section{gap:14px}.rank-mode-head{border-bottom:1px solid var(--track);padding-bottom:4px}.rank-mode-name{color:var(--text-soft);font-size:14px;font-weight:700}.rank-mode-empty{padding:10px 0 2px}.rank-row{grid-template-columns:34px 1fr auto;align-items:center;gap:10px;padding:9px 0;display:grid}.rank-row+.rank-row{border-top:1px solid var(--track)}.rank-no{font-variant-numeric:tabular-nums;color:var(--muted-strong);font-size:14px;font-weight:700}.rank-summary{flex-direction:column;gap:8px;display:flex}.rank-summary-row{justify-content:space-between;align-items:center;padding:9px 0;font-size:14px;font-weight:600;display:flex}.rank-summary-row+.rank-summary-row{border-top:1px solid var(--track)}.rank-summary-value{align-items:center;gap:8px;display:flex}.rank-summary .rank-chip{margin-left:0}.rank-chip{font-variant-numeric:tabular-nums;color:var(--muted-strong);background:var(--tile);vertical-align:1px;border-radius:7px;margin-left:7px;padding:2px 7px;font-size:11px;font-weight:700}.rank-chip.medal-1{color:#b45309;background:#fef3c7}.rank-chip.medal-2{color:#4b5563;background:#e5e7eb}.rank-chip.medal-3{color:#92400e;background:#fde5c8}.rank-no.medal-1{color:#d97706}.rank-no.medal-2{color:#6b7280}.rank-no.medal-3{color:#b45309}.rank-name{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.rank-value{font-variant-numeric:tabular-nums;text-align:right;font-size:15px;font-weight:700}.rank-row.mine{background:var(--primary-tint);border-radius:10px;margin:0 -10px;padding-left:10px;padding-right:10px}.rank-row.mine .rank-name,.rank-row.mine .rank-value{color:var(--primary-strong);font-weight:700}.rank-row-apart{border-top:1px dashed var(--track);margin-top:6px}.rank-empty{text-align:center;align-items:center;padding:28px 16px}.rank-loading{animation:1.4s ease-in-out infinite sync-breathe}
