:root{--bg: #0e1116;--panel: #171c26;--panel-2: #212940;--text: #e8ecf4;--muted: #93a0b4;--accent: #edc22e;--accent-ink: #2c230a;color-scheme:dark}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent;overflow:hidden}.game{height:100%;max-width:560px;margin-inline:auto;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:12px;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.hud{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.scores{display:flex;gap:8px}.stat{position:relative;display:flex;align-items:baseline;gap:8px;min-height:44px;padding:10px 14px;border-radius:10px;background:var(--panel)}.stat-label{color:var(--muted);font-size:13px;letter-spacing:.04em;text-transform:uppercase}.stat-value{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.stat-gain{position:absolute;inset-inline-end:12px;inset-block-start:calc(100% - 8px);font-size:17px;font-weight:700;color:var(--accent);opacity:0;pointer-events:none}.stat-gain.is-live{animation:gain-float .76s ease-out}@keyframes gain-float{0%{opacity:0;transform:translateY(-8px)}25%{opacity:.95}to{opacity:0;transform:translateY(20px)}}.btn{min-height:44px;min-width:44px;padding:0 16px;border:0;border-radius:10px;background:var(--panel-2);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:var(--accent-ink);padding:0 28px;font-size:16px}.board-wrap{flex:1;min-height:0;min-width:0;display:flex;align-items:center;justify-content:center;touch-action:none}.board{--gap: calc(var(--board) * .026);--cell: calc((var(--board) - 5 * var(--gap)) / 4);--step: calc(var(--cell) + var(--gap));position:relative;width:var(--board, 300px);height:var(--board, 300px);border-radius:calc(var(--board) * .022);background:var(--panel)}.cells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:var(--gap);padding:var(--gap)}.cell{border-radius:calc(var(--cell) * .12);background:#ffffff0b}.tiles{position:absolute;inset:0}.tile{position:absolute;inset-block-start:var(--gap);inset-inline-start:var(--gap);z-index:1;width:var(--cell);height:var(--cell);display:flex;align-items:center;justify-content:center;border-radius:calc(var(--cell) * .12);background:var(--tile-bg);color:var(--tile-fg);box-shadow:0 0 calc(var(--cell) * .3) var(--tile-glow, transparent);font-weight:800;font-variant-numeric:tabular-nums;line-height:1;transform:translate(calc(var(--x) * var(--step)),calc(var(--y) * var(--step)));transition:transform .11s ease-in-out;will-change:transform}.tile.is-gone{z-index:0}.tile.is-merged{z-index:2;animation:tile-pop .2s ease-out 105ms backwards}.tile.is-new{animation:tile-appear .18s ease-out 105ms backwards}@keyframes tile-pop{0%{transform:translate(calc(var(--x) * var(--step)),calc(var(--y) * var(--step))) scale(0)}55%{transform:translate(calc(var(--x) * var(--step)),calc(var(--y) * var(--step))) scale(1.16)}to{transform:translate(calc(var(--x) * var(--step)),calc(var(--y) * var(--step))) scale(1)}}@keyframes tile-appear{0%{transform:translate(calc(var(--x) * var(--step)),calc(var(--y) * var(--step))) scale(.1);opacity:0}to{transform:translate(calc(var(--x) * var(--step)),calc(var(--y) * var(--step))) scale(1);opacity:1}}.tile-value{font-size:calc(var(--cell) * .46)}.tile[data-len="3"] .tile-value{font-size:calc(var(--cell) * .38)}.tile[data-len="4"] .tile-value{font-size:calc(var(--cell) * .3)}.tile[data-len="5"] .tile-value{font-size:calc(var(--cell) * .24)}.tile[data-len="6"] .tile-value{font-size:calc(var(--cell) * .2)}.tile[data-tier="1"]{--tile-bg: #2b3450;--tile-fg: #c9d4ea}.tile[data-tier="2"]{--tile-bg: #3c4771;--tile-fg: #dde5f8}.tile[data-tier="3"]{--tile-bg: #f2b179;--tile-fg: #2a1c0c}.tile[data-tier="4"]{--tile-bg: #f59563;--tile-fg: #2a1808}.tile[data-tier="5"]{--tile-bg: #f67c5f;--tile-fg: #2b1409}.tile[data-tier="6"]{--tile-bg: #f65e3b;--tile-fg: #fff3ee}.tile[data-tier="7"]{--tile-bg: #edcf72;--tile-fg: #2c230a;--tile-glow: rgba(237, 207, 114, .35)}.tile[data-tier="8"]{--tile-bg: #edcc61;--tile-fg: #2c230a;--tile-glow: rgba(237, 204, 97, .45)}.tile[data-tier="9"]{--tile-bg: #edc850;--tile-fg: #2c230a;--tile-glow: rgba(237, 200, 80, .55)}.tile[data-tier="10"]{--tile-bg: #edc53f;--tile-fg: #2c230a;--tile-glow: rgba(237, 197, 63, .65)}.tile[data-tier="11"]{--tile-bg: #edc22e;--tile-fg: #2c230a;--tile-glow: rgba(237, 194, 46, .8)}.tile[data-tier="12"]{--tile-bg: #a78bfa;--tile-fg: #1c1040;--tile-glow: rgba(167, 139, 250, .75)}.overlay{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px;text-align:center;border-radius:calc(var(--board) * .022);background:#0e1116c7;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:overlay-in .22s ease-out}.overlay[hidden]{display:none}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.overlay-title{margin:0;font-size:clamp(24px,5vw,40px);font-weight:800}.overlay-score{margin:0;font-size:17px;font-weight:600;color:var(--muted)}.overlay-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.overlay-actions .btn[hidden]{display:none}.hint{margin:0;text-align:center;color:var(--muted);font-size:13px;line-height:1.45}@media(max-height:430px){.game{padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));gap:8px}.stat{min-height:38px;padding:8px 10px;gap:6px}.stat-label{font-size:11px}.stat-value{font-size:16px}.hint{font-size:12px}}@media(max-height:430px)and (min-aspect-ratio:13 / 10){.game{flex-direction:row;align-items:stretch;max-width:none}.hud{flex-direction:column;flex-wrap:nowrap;justify-content:center;align-items:stretch;flex:0 0 auto}.scores{flex-direction:column}.stat{justify-content:space-between}.hint{display:none}}@media(prefers-reduced-motion:reduce){.tile,.tile.is-merged,.tile.is-new,.stat-gain.is-live,.overlay{transition-duration:1ms;animation-duration:1ms;animation-delay:0ms}}
