*{margin:0;padding:0;box-sizing:border-box}:root{--ease-out: cubic-bezier(.2, 0, 0, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-inout: cubic-bezier(.4, 0, .2, 1);--ease-out-quad: cubic-bezier(.25, .46, .45, .94);--ease-in-quad: cubic-bezier(.55, .085, .68, .53);--ease-out-back: cubic-bezier(.34, 1.56, .64, 1);--ease-elastic: cubic-bezier(.5, 1.8, .4, 1);--dur-micro: .12s;--dur-fast: .2s;--dur-base: .3s;--dur-slow: .4s;--dur-tap: .12s;--dur-move: .18s;--dur-screen: .2s;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--sp-8: 32px;--r-sm: 8px;--r-btn: 10px;--r-card: 14px;--r-modal: 16px;--r-pill: 999px;--bg: #111115;--surface: #1a1a20;--surface-hover: #222230;--border: #2a2a35;--accent: #d4a843;--accent-dim: rgba(212,168,67,.2);--p1: #4de8c8;--p2: #f0436a;--p1-glow: rgba(77,232,200,.45);--p2-glow: rgba(240,67,106,.45);--dead: #0e0e12;--muted: #555566;--dim: #3a3a48;--text: #ddd;--text-soft: #999aaa;--tut: #a78bfa;--tut-glow: rgba(167,139,250,.3);--tut-bg: rgba(167,139,250,.06);--board-bg: #131318;--overlay-bg: rgba(17,17,21,.88);--piece-text: #111115;--active-bg: rgba(255,255,255,.05);--accent-active-bg: rgba(212,168,67,.1);--p2-active-bg: rgba(240,67,106,.08);--tut-border: rgba(167,139,250,.25);--tut-btn-bg: rgba(167,139,250,.12);--tut-btn-hover: rgba(167,139,250,.08);--tut-btn-hover-active: rgba(167,139,250,.2);--tut-panel-bg: linear-gradient(145deg,rgba(167,139,250,.05),rgba(167,139,250,.01));--tut-badge-bg: rgba(167,139,250,.08);--rule-tip-bg: rgba(212,168,67,.04);--rule-tip-border: rgba(212,168,67,.1);--trail-opacity: .35;--board-shadow: 0 4px 40px rgba(0,0,0,.4)}[data-theme=light]{--bg: #e8e4dc;--surface: #dfdbd3;--surface-hover: #d6d1c8;--border: #cbc5b8;--accent: #8a6e30;--accent-dim: rgba(138,110,48,.15);--p1: #3a9484;--p2: #b04a62;--p1-glow: rgba(58,148,132,.28);--p2-glow: rgba(176,74,98,.28);--dead: #d2ccc0;--muted: #908779;--dim: #a8a092;--text: #3d3830;--text-soft: #6e6658;--tut: #7668a6;--tut-glow: rgba(118,104,166,.2);--tut-bg: rgba(118,104,166,.05);--board-bg: #d5d0c6;--overlay-bg: rgba(232,228,220,.93);--piece-text: #f0ece6;--active-bg: rgba(0,0,0,.035);--accent-active-bg: rgba(138,110,48,.1);--p2-active-bg: rgba(176,74,98,.07);--tut-border: rgba(118,104,166,.25);--tut-btn-bg: rgba(118,104,166,.08);--tut-btn-hover: rgba(118,104,166,.06);--tut-btn-hover-active: rgba(118,104,166,.14);--tut-panel-bg: linear-gradient(145deg,rgba(118,104,166,.05),rgba(118,104,166,.015));--tut-badge-bg: rgba(118,104,166,.07);--rule-tip-bg: rgba(138,110,48,.05);--rule-tip-border: rgba(138,110,48,.12);--trail-opacity: .35;--board-shadow: 0 2px 20px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04)}body{background:var(--bg);color:var(--text);font-family:DM Sans,sans-serif;display:flex;flex-direction:column;align-items:center;min-height:100dvh;height:100dvh;user-select:none;-webkit-user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;overflow:hidden}#root{width:100%}.app-container{display:flex;flex-direction:column;align-items:center;width:100%;max-width:520px;margin:0 auto;height:100dvh;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:calc(20px + env(safe-area-inset-top,0px)) 12px calc(40px + env(safe-area-inset-bottom,0px));position:relative;scrollbar-gutter:stable both-edges;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.app-container.auth-shell{padding:0 12px;overflow-y:hidden}.header{text-align:center;margin-bottom:16px}.logo{font-family:DM Mono,monospace;font-size:22px;font-weight:500;letter-spacing:10px;color:var(--accent)}.settings{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap;justify-content:center}.seg-group{display:flex;background:var(--surface);border-radius:8px;overflow:hidden;border:1px solid var(--border)}.seg-btn{background:transparent;border:none;color:var(--muted);padding:8px 16px;font:13px DM Sans,sans-serif;font-weight:500;cursor:pointer;transition:all .2s;position:relative}.seg-btn:not(:last-child):after{content:"";position:absolute;right:0;top:25%;bottom:25%;width:1px;background:var(--border)}.seg-btn.active{color:var(--accent);background:var(--accent-active-bg)}.seg-group.sub{margin-top:8px}.seg-btn.active-ai{color:var(--accent);background:var(--accent-active-bg)}.seg-btn.active-tut{color:var(--tut);background:var(--tut-bg)}.seg-btn:hover:not(.active):not(.active-ai):not(.active-tut){color:var(--text-soft)}.turn-bar{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:440px;gap:14px;margin-bottom:14px;font-family:DM Mono,monospace;font-size:12px}.turn-player{display:flex;align-items:center;gap:6px;transition:opacity .3s}.turn-player.dim{opacity:.25}.turn-dot{width:10px;height:10px;border-radius:50%;transition:box-shadow .3s}.turn-status{padding:4px 14px;border:1px solid var(--border);border-radius:6px;font-size:11px;color:var(--muted);letter-spacing:1.5px}.thinking{animation:pulse .8s ease-in-out infinite}.blocked-hint{font-family:DM Mono,monospace;font-size:10px;letter-spacing:2px;color:var(--p2);margin-bottom:8px;opacity:.7}.board{display:inline-grid;gap:1px;padding:2px;background:var(--board-bg);border:1px solid var(--border);border-radius:4px;box-shadow:var(--board-shadow)}.cell{position:relative;display:flex;align-items:center;justify-content:center;border-radius:2px;overflow:hidden;transition:background .12s,box-shadow .2s;cursor:default;background:var(--surface)}.cell.valid{cursor:pointer;border:1px dashed rgba(201,168,76,.5)}.cell.valid:hover{background:var(--surface-hover)!important}.cell.tut-hl{box-shadow:inset 0 0 14px var(--tut-glow)}.cell.dead{background:var(--dead);animation:deadBurn .3s var(--ease-out-quad)}.board.shake{animation:boardShake .15s var(--ease-out-quad)}.trail-x,.trail-y{position:absolute;pointer-events:none}.trail-x{left:0;right:0;top:50%;height:2px;transform:translateY(-1px);background:linear-gradient(90deg,transparent,var(--accent-dim),var(--accent),var(--accent-dim),transparent);opacity:var(--trail-opacity);animation:trailInX var(--dur-tap) var(--ease-out-quad)}.trail-y{top:0;bottom:0;left:50%;width:2px;transform:translate(-1px);background:linear-gradient(180deg,transparent,var(--accent-dim),var(--accent),var(--accent-dim),transparent);opacity:var(--trail-opacity);animation:trailInY var(--dur-tap) var(--ease-out-quad)}.piece[data-player="0"]{--piece-bg:var(--p1);--piece-glow:var(--p1-glow)}.piece[data-player="1"]{--piece-bg:var(--p2);--piece-glow:var(--p2-glow)}.piece{border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:DM Mono,monospace;font-weight:500;color:var(--piece-text);z-index:2;position:relative;transition:box-shadow .3s;background:var(--piece-bg);box-shadow:0 0 3px var(--piece-glow)}.piece .dir-arrow{position:absolute;width:0;height:0;border-style:solid;opacity:.55}.piece .dir-arrow.dir-up{top:2px;left:50%;transform:translate(-50%);border-width:0 4px 5px 4px;border-color:transparent transparent var(--piece-text) transparent}.piece .dir-arrow.dir-down{bottom:2px;left:50%;transform:translate(-50%);border-width:5px 4px 0 4px;border-color:var(--piece-text) transparent transparent transparent}.piece .dir-arrow.dir-left{left:2px;top:50%;transform:translateY(-50%);border-width:4px 5px 4px 0;border-color:transparent var(--piece-text) transparent transparent}.piece .dir-arrow.dir-right{right:2px;top:50%;transform:translateY(-50%);border-width:4px 0 4px 5px;border-color:transparent transparent transparent var(--piece-text)}.piece.pop{animation:popIn var(--dur-move) var(--ease-out-back);box-shadow:0 0 14px var(--piece-glow)}.cell.valid:hover .dot{display:none}.dot{width:5px;height:5px;border-radius:50%;background:var(--accent);opacity:.3;z-index:2}.dot.pulse{animation:pulseDot 1.2s ease-in-out infinite;opacity:.8}.ghost{position:absolute;border-radius:50%;border:1px dashed currentColor;opacity:.35;pointer-events:none;z-index:1;animation:fadeIn var(--dur-tap) var(--ease-out-quad)}.ghost[data-player="0"]{color:var(--p1)}.ghost[data-player="1"]{color:var(--p2)}.blocked-dir{position:absolute;inset:8%;pointer-events:none;opacity:.5;z-index:1}.blocked-dir.dir-up{border-top:2px solid var(--p2)}.blocked-dir.dir-down{border-bottom:2px solid var(--p2)}.blocked-dir.dir-left{border-left:2px solid var(--p2)}.blocked-dir.dir-right{border-right:2px solid var(--p2)}.controls{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap;justify-content:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;background:transparent;border:1px solid var(--border);color:var(--muted);padding:7px 20px;font:12px DM Sans,sans-serif;font-weight:500;cursor:pointer;border-radius:8px;letter-spacing:.5px;transition:transform var(--dur-fast) var(--ease-out-back),border-color var(--dur-micro) var(--ease-out),color var(--dur-micro) var(--ease-out),background var(--dur-micro) var(--ease-out),opacity var(--dur-micro) var(--ease-out),box-shadow var(--dur-micro) var(--ease-out)}.btn:hover{border-color:var(--muted);color:var(--text-soft)}.btn:active:not(:disabled){transform:translateY(2px) scale(.96);transition-duration:90ms;transition-timing-function:var(--ease-out)}.btn:disabled{opacity:.4;filter:grayscale(.5);cursor:default}.seg-btn:active,.shop-tab:active,.bottom-nav-btn:active,.footer-link:active,.emote-btn:active,.tut-btn:active{transform:translateY(1px) scale(.97)}.btn.primary{color:var(--accent)}.btn.primary:hover{border-color:var(--accent)}.rules{max-width:460px;width:100%;margin-top:16px;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--surface);max-height:0;opacity:0;transition:max-height .4s ease,opacity .3s ease}.rules.open{max-height:900px;opacity:1}.rules-inner{padding:20px 24px}.rules h3{font-family:DM Mono,monospace;font-size:12px;font-weight:500;color:var(--accent);letter-spacing:2px;margin-bottom:14px}.rule-step{display:flex;gap:12px;margin-bottom:12px;font-size:13px;line-height:1.6;color:var(--text-soft)}.rule-num{font-family:DM Mono,monospace;font-size:11px;font-weight:500;color:var(--accent);min-width:20px;padding-top:2px}.rule-step strong{color:var(--text);font-weight:500}.rule-divider{height:1px;background:var(--border);margin:14px 0}.rule-tip{font-size:12px;color:var(--dim);line-height:1.6;padding:10px 14px;background:var(--rule-tip-bg);border:1px solid var(--rule-tip-border);border-radius:6px}.rule-tip strong{color:var(--accent);font-weight:500}.tut-panel{max-width:460px;width:100%;margin-top:16px;border:1px solid var(--tut-border);border-radius:10px;background:var(--tut-panel-bg);display:none}.tut-panel.show{display:block;animation:fadeIn .3s ease-out}.tut-inner{padding:20px 24px}.tut-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.tut-badge{font-family:DM Mono,monospace;font-size:10px;font-weight:500;color:var(--tut);letter-spacing:2px;padding:3px 10px;border:1px solid var(--tut-border);border-radius:20px;background:var(--tut-badge-bg)}.tut-counter{font-family:DM Mono,monospace;font-size:11px;color:var(--muted)}.tut-title{font-size:15px;font-weight:600;color:var(--text);margin-bottom:8px;line-height:1.4}.tut-body{font-size:13px;line-height:1.7;color:var(--text-soft);margin-bottom:16px}.tut-body strong{color:var(--text);font-weight:500}.hl1{color:var(--p1);font-weight:600}.hl2{color:var(--p2);font-weight:600}.hla{color:var(--accent);font-weight:500}.tut-nav{display:flex;gap:8px;align-items:center}.tut-btn{background:transparent;border:1px solid var(--tut-border);color:var(--tut);padding:8px 20px;font:13px DM Sans,sans-serif;font-weight:500;cursor:pointer;border-radius:6px;transition:all .2s}.tut-btn:hover{background:var(--tut-btn-hover);border-color:var(--tut)}.tut-btn:disabled{opacity:.25;cursor:default}.tut-btn:disabled:hover{background:transparent;border-color:var(--tut-border)}.tut-btn.tp{background:var(--tut-btn-bg);border-color:var(--tut)}.tut-btn.tp:hover{background:var(--tut-btn-hover-active)}.tut-bar{flex:1;height:3px;background:var(--border);border-radius:2px;margin:0 4px;overflow:hidden}.tut-bar-fill{height:100%;background:var(--tut);border-radius:2px;transition:width .4s var(--ease-out)}.overlay{position:fixed;inset:0;background:#111116ed;display:none;flex-direction:column;align-items:center;justify-content:center;z-index:100;animation:fadeIn .4s ease-out}.overlay.show{display:flex}.ov-sub{font-family:DM Mono,monospace;font-size:11px;letter-spacing:4px;color:var(--muted);margin-bottom:10px}.ov-title{font-size:36px;font-weight:300;letter-spacing:6px}.ov-wins{font-family:DM Mono,monospace;font-size:13px;letter-spacing:4px;color:var(--accent);margin-top:6px}.ov-detail{font-size:11px;color:var(--muted);margin-top:8px;letter-spacing:1px}.ov-hint{margin-top:24px;font-size:11px;letter-spacing:3px;color:var(--dim)}.overlay-actions{display:flex;gap:8px;margin-top:16px}.loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.loading-pulse{animation:pulse .8s ease-in-out infinite}.login-screen{min-height:100%;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:20px}.login-subtitle{font-family:DM Mono,monospace;font-size:11px;color:var(--muted);letter-spacing:3px;margin-bottom:32px}.login-buttons{display:flex;flex-direction:column;gap:12px;width:100%;max-width:280px}.login-btn{padding:12px 24px;font:14px DM Sans,sans-serif;font-weight:500;border-radius:8px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:10px}.login-btn-google{background:var(--surface);border:1px solid var(--border);color:var(--text)}.login-btn-google:hover{border-color:var(--accent);color:var(--accent)}.login-btn-guest{background:transparent;border:1px solid var(--border);color:var(--muted)}.login-btn-guest:hover{border-color:var(--muted);color:var(--text-soft)}.login-other-services{display:grid;grid-template-columns:1fr 1fr;gap:8px}.login-btn-other{background:transparent;border:1px dashed var(--border);color:var(--dim)}.login-btn-other:disabled{opacity:.6;cursor:not-allowed}.login-error{font-family:DM Mono,monospace;font-size:12px;color:var(--p2);text-align:center;max-width:280px;line-height:1.5}.profile-page{max-width:460px;width:100%;padding:0 12px}.profile-header{display:flex;align-items:center;gap:16px;margin-bottom:24px}.profile-title{font-family:DM Mono,monospace;font-size:12px;font-weight:500;color:var(--accent);letter-spacing:2px}.profile-name-row{margin-bottom:24px}.profile-edit-row{display:flex;align-items:center;gap:4px}.profile-username{font-family:DM Mono,monospace;font-size:18px;color:var(--accent)}.profile-tag{font-family:DM Mono,monospace;font-size:14px;color:var(--muted)}.profile-username-input{font-family:DM Mono,monospace;font-size:18px;color:var(--accent);background:var(--surface);border:1px solid var(--accent);border-radius:4px;padding:2px 6px;outline:none;max-width:180px}.profile-edit-btn{background:transparent;border:none;color:var(--muted);font:11px DM Sans,sans-serif;cursor:pointer;margin-left:8px;text-decoration:underline;transition:color .2s}.profile-edit-btn:hover{color:var(--text-soft)}.profile-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px}.profile-stat{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px}.profile-stat-wide{grid-column:1 / -1}.profile-stat-label{font-family:DM Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:2px;margin-bottom:4px}.profile-stat-value{font-size:20px;font-weight:500;color:var(--text)}.profile-stat-date{font-size:14px}.login-btn-link-google{width:100%;margin-bottom:10px;display:flex;align-items:center;justify-content:center;color:var(--accent);border-color:var(--accent-dim)}.login-btn-link-google:hover{border-color:var(--accent)}.btn-signout{width:100%;color:var(--p2);display:flex;align-items:center;justify-content:center}.btn-signout:hover{border-color:var(--p2)}.lobby{max-width:460px;width:100%;text-align:center;padding:20px 12px}.lobby-title{font-family:DM Mono,monospace;font-size:12px;font-weight:500;color:var(--accent);letter-spacing:2px;margin-bottom:24px}.lobby-status{font-family:DM Mono,monospace;font-size:11px;color:var(--muted);letter-spacing:1.5px;margin-bottom:16px}.lobby-size-select{display:inline-flex;background:var(--surface);border-radius:8px;overflow:hidden;border:1px solid var(--border);margin-bottom:20px}.lobby-searching{display:flex;flex-direction:column;align-items:center;gap:12px}.lobby-timer{font-family:DM Mono,monospace;font-size:24px;color:var(--text);letter-spacing:2px}.lobby-error{font-family:DM Mono,monospace;font-size:11px;color:var(--p2);letter-spacing:1px;margin-bottom:12px}.online-game{display:flex;flex-direction:column;align-items:center;width:100%}.online-hud{display:flex;align-items:center;gap:14px;margin-bottom:14px;font-family:DM Mono,monospace;font-size:12px}.leaderboard-page{padding:0 12px}.lb-tabs{display:inline-flex;background:var(--surface);border-radius:8px;overflow:hidden;border:1px solid var(--border);margin-bottom:16px}.lb-table{width:100%;border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:hidden}.lb-header-row{display:flex;padding:10px 14px;border-bottom:1px solid var(--border);font-family:DM Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:1.5px}.lb-row{display:flex;padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text-soft);transition:background .15s}.lb-row:last-child{border-bottom:none}.lb-row:hover{background:var(--active-bg)}.lb-row-me{background:var(--accent-active-bg);color:var(--accent)}.lb-col-rank{width:36px;flex-shrink:0;font-family:DM Mono,monospace;font-size:12px}.lb-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-col-elo{width:56px;text-align:right;font-family:DM Mono,monospace;font-weight:500}.lb-col-games{width:48px;text-align:right;font-family:DM Mono,monospace}.lb-col-wr{width:44px;text-align:right;font-family:DM Mono,monospace}.lb-tag{color:var(--muted);font-size:11px;margin-left:2px}.lb-empty{padding:24px;text-align:center;color:var(--muted);font-size:13px}.lb-my-rank{margin-top:12px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:8px;font-family:DM Mono,monospace;font-size:12px;color:var(--accent);text-align:center}.friends-page{max-width:460px;width:100%;padding:0 12px}.friends-add{display:flex;gap:8px;margin-bottom:20px}.friends-input{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px 12px;font:13px DM Mono,monospace;color:var(--text);outline:none;transition:border-color .2s}.friends-input:focus{border-color:var(--accent)}.friends-input::placeholder{color:var(--muted)}.friends-section{margin-bottom:20px}.friends-section-title{font-family:DM Mono,monospace;font-size:10px;font-weight:500;color:var(--muted);letter-spacing:2px;margin-bottom:10px}.friend-card{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:8px}.friend-info{display:flex;flex-direction:column;gap:3px;min-width:0}.friend-name-row{display:flex;align-items:center;gap:6px}.friend-name{font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.friend-elo{font-family:DM Mono,monospace;font-size:11px;color:var(--muted)}.friend-h2h{font-family:DM Mono,monospace;font-size:11px;color:var(--dim)}.friend-status-dot{width:8px;height:8px;border-radius:50%;background:var(--dim);flex-shrink:0}.friend-status-dot.online{background:var(--p1);box-shadow:0 0 6px var(--p1-glow)}.friend-actions{display:flex;gap:6px;flex-shrink:0;align-items:center}.challenge-size-select{font-family:DM Mono,monospace;font-size:11px;background:var(--bg);color:var(--fg);border:1px solid var(--muted);border-radius:4px;padding:4px 6px;cursor:pointer}.friend-pending{font-family:DM Mono,monospace;font-size:11px;color:var(--muted)}.friends-empty{text-align:center;color:var(--muted);font-size:13px;padding:20px}.btn-sm{padding:5px 12px!important;font-size:11px!important}.challenge-notification{position:fixed;top:60px;left:50%;transform:translate(-50%);z-index:200;background:var(--surface);border:1px solid var(--accent);border-radius:10px;padding:14px 20px;box-shadow:0 4px 24px #0000004d;display:flex;align-items:center;gap:14px;animation:fadeIn .3s ease-out;max-width:420px;width:calc(100% - 24px)}.challenge-text{flex:1;font-size:13px;color:var(--text)}.challenge-text strong{color:var(--accent)}.challenge-detail{display:block;font-family:DM Mono,monospace;font-size:11px;color:var(--muted);margin-top:2px}.challenge-actions{display:flex;gap:6px;flex-shrink:0}.postgame-stats{margin-top:14px;max-width:340px;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px 18px}.stats-grid{display:flex;flex-direction:column;gap:6px}.stat-row{display:flex;justify-content:space-between;align-items:center;font-size:12px}.stat-label{color:var(--muted);font-family:DM Mono,monospace;font-size:11px}.stat-value{color:var(--text);font-family:DM Mono,monospace;font-weight:500}.stat-vs{display:flex;align-items:center;gap:4px}.stat-sep{color:var(--dim);font-size:10px}.profile-toggle{width:36px;height:36px;border-radius:50%;background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;-webkit-tap-highlight-color:transparent}.profile-toggle:hover{border-color:var(--accent);color:var(--accent);background:var(--surface-hover)}.profile-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.sound-toggle{width:36px;height:36px;border-radius:50%;background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;font-size:16px;line-height:1;-webkit-tap-highlight-color:transparent}.sound-toggle:hover{border-color:var(--accent);color:var(--accent);background:var(--surface-hover)}.sound-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.theme-toggle{width:36px;height:36px;border-radius:50%;background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;font-size:16px;line-height:1;-webkit-tap-highlight-color:transparent}.theme-toggle:hover{border-color:var(--accent);color:var(--accent);background:var(--surface-hover)}.theme-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.theme-toggle .icon-sun{display:none}.theme-toggle .icon-moon,[data-theme=light] .theme-toggle .icon-sun{display:block}[data-theme=light] .theme-toggle .icon-moon{display:none}.studio-credit{margin-top:32px;padding-top:16px;border-top:1px solid var(--border);font-family:DM Mono,monospace;font-size:10px;letter-spacing:3px;color:var(--dim);text-align:center;text-transform:uppercase;transition:color .3s}.studio-credit{display:flex;flex-direction:column;align-items:center;gap:0}.footer-links{margin-top:6px}.footer-copyright{display:block;margin-top:4px;opacity:.7;letter-spacing:2px;white-space:nowrap}.studio-credit span{color:var(--accent);opacity:.5}.disconnect-banner{display:flex;align-items:center;gap:8px;justify-content:center;padding:8px 16px;margin-bottom:10px;background:#f0436a1f;border:1px solid rgba(240,67,106,.3);border-radius:8px;font-family:DM Mono,monospace;font-size:12px;color:var(--p2);animation:fadeIn .3s ease-out}.disconnect-icon{font-size:14px}.disconnect-countdown{font-weight:500}.move-timer{display:flex;align-items:center;gap:8px;margin:6px auto 10px;max-width:320px;font-family:DM Mono,monospace;font-size:12px;opacity:.55;transition:opacity .2s ease}.move-timer.active{opacity:1}.move-timer-track{flex:1;height:6px;border-radius:999px;background:var(--panel, rgba(255,255,255,.08));overflow:hidden}.move-timer-fill{height:100%;border-radius:999px;background:var(--p1);transition:width .25s linear,background .3s ease}.move-timer.urgent .move-timer-fill{background:var(--p2)}.move-timer.urgent .move-timer-label{color:var(--p2);font-weight:600;animation:urgentPulse 1s var(--ease-inout) infinite}@keyframes urgentPulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.move-timer-label{min-width:34px;text-align:right}.checkout-toast{position:fixed;left:50%;top:16px;transform:translate(-50%);z-index:1000;max-width:90vw;padding:12px 20px;border-radius:10px;font-family:DM Mono,monospace;font-size:13px;box-shadow:0 8px 24px #00000040;animation:fadeIn .3s ease-out}.checkout-toast.success{background:#34c75926;border:1px solid rgba(52,199,89,.4);color:#34c759}.checkout-toast.canceled{background:#f0436a1f;border:1px solid rgba(240,67,106,.3);color:var(--p2)}.shop-page{display:flex;flex-direction:column;gap:14px;padding:12px}.coin-balance{margin-left:auto;font-family:DM Mono,monospace;font-size:14px;padding:4px 10px;border-radius:999px;background:var(--panel, rgba(255,255,255,.08))}.shop-tabs{display:flex;gap:6px;flex-wrap:wrap;padding-bottom:2px}.shop-tab{flex:0 0 auto;white-space:nowrap;min-width:auto;min-height:40px;padding:8px 10px;border-radius:8px;border:1px solid var(--border, rgba(255,255,255,.12));background:transparent;color:inherit;font-size:12px;cursor:pointer}.shop-tab.active{background:var(--p1);color:#fff;border-color:var(--p1)}.shop-error{color:var(--p2);font-size:12px;text-align:center}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}.shop-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border-radius:12px;border:1px solid var(--border, rgba(255,255,255,.12))}.shop-item.equipped{border-color:var(--p1);box-shadow:0 0 0 1px var(--p1)}.shop-item-preview{position:relative;overflow:hidden;width:100%;aspect-ratio:1;border-radius:8px;background:var(--preview-bg, var(--board-bg));border:1px solid var(--border)}.shop-item-preview:after{content:"";position:absolute;left:12%;right:12%;top:50%;height:2px;transform:translateY(-1px);background:linear-gradient(90deg,transparent,var(--preview-accent, var(--accent)),transparent)}.shop-item-preview[data-item^=piece_]:after{display:none}.shop-item-preview[data-item^=piece_]:before{content:"";position:absolute;inset:28%;border-radius:50%;background:var(--p1);box-shadow:0 0 6px var(--p1-glow)}.shop-item-title{font-size:13px;font-weight:600}.shop-item-badge{font-size:12px;color:var(--muted, #888)}.shop-item .btn{min-height:40px;width:100%}.shop-plus-cta{text-align:center;display:flex;flex-direction:column;gap:12px;padding:20px}.shop-note{font-size:11px;color:var(--muted);text-align:center;line-height:1.5}.shop-item-badge.muted{color:var(--muted);font-size:11px}.shop-item-preview[data-item=hint]{--preview-accent: var(--accent)}.shop-item-preview[data-item=undo]{--preview-accent: var(--p1)}.shop-item-preview[data-item=quest_reroll]{--preview-accent: var(--tut)}.shop-item-preview[data-item=streak_freeze]{--preview-accent: #7aa2f7}.quests-page,.season-page{display:flex;flex-direction:column;gap:14px;padding:12px}.streak-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px;border-radius:14px;background:linear-gradient(135deg,#ff95001f,#f0436a1f);border:1px solid rgba(255,149,0,.3)}.streak-flame{font-size:28px;font-weight:700}.streak-label,.streak-done{font-size:12px;color:var(--muted, #888)}.quest-list{display:flex;flex-direction:column;gap:10px}.quest-item{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--border, rgba(255,255,255,.12))}.quest-item.claimable{border-color:var(--accent);background:var(--accent-active-bg)}.quest-main{flex:1;display:flex;flex-direction:column;gap:6px}.quest-name{font-size:13px;font-weight:600}.quest-progress-track{height:6px;border-radius:999px;background:var(--panel, rgba(255,255,255,.08));overflow:hidden}.quest-progress-fill{height:100%;background:var(--p1);border-radius:999px;transition:width .6s var(--ease-out)}.quest-progress-fill:after{content:"";display:block;height:2px;margin:1px 4px 0;border-radius:999px;background:#ffffff4d}.quest-progress-text{font-size:11px;color:var(--muted, #888);font-family:DM Mono,monospace}.quest-reward .btn{min-height:40px}.quest-badge{font-size:12px;font-family:DM Mono,monospace}.quest-badge.muted{color:var(--muted, #888)}.season-banner{text-align:center;font-size:12px;color:var(--muted, #888);font-family:DM Mono,monospace}.season-me-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px;border-radius:14px;border:1px solid var(--p1)}.season-league{font-size:20px;font-weight:700}.season-rank{font-size:14px}.season-record{font-size:12px;color:var(--muted, #888)}.season-unranked{font-size:13px;color:var(--muted, #888);text-align:center}.season-leaderboard{display:flex;flex-direction:column;gap:4px}.season-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:13px}.season-row.me{background:#6366f126}.season-row-rank{width:32px;color:var(--muted, #888);font-family:DM Mono,monospace}.season-row-name{flex:1}.season-row-record{font-family:DM Mono,monospace;font-size:12px}.reward-btn{width:100%}.reward-done{text-align:center;font-family:DM Mono,monospace}.register-prompt-overlay{position:fixed;inset:0;z-index:900;display:flex;align-items:center;justify-content:center;background:#0009;backdrop-filter:blur(4px);padding:20px}.register-prompt{width:100%;max-width:360px;display:flex;flex-direction:column;gap:14px;padding:24px;border-radius:16px;background:var(--surface, #1a1a20);border:1px solid var(--border, #2a2a35)}.register-prompt-title{font-size:20px;font-weight:700;text-align:center}.register-prompt-subtitle{font-size:13px;color:var(--muted, #888);text-align:center}.register-prompt-skip{background:transparent;border:none;color:var(--muted, #888);font-size:13px;cursor:pointer;min-height:40px}.board[data-board-theme=theme_midnight]{--board-bg: #0b1020;--surface: #141b30;--surface-hover: #1d2742;--border: #1d2742;--accent: #7aa2f7;--accent-dim: rgba(122,162,247,.25);--dead: #060912}.shop-item-preview[data-item=theme_midnight]{--preview-bg: #141b30;--preview-accent: #7aa2f7}.board[data-board-theme=theme_sunset]{--board-bg: #2a1620;--surface: #3a2029;--surface-hover: #4a2a34;--border: #4a2a34;--accent: #ff9e64;--accent-dim: rgba(255,158,100,.25);--dead: #1d0e15}.shop-item-preview[data-item=theme_sunset]{--preview-bg: #3a2029;--preview-accent: #ff9e64}.board[data-board-theme=theme_neon]{--board-bg: #07070d;--surface: #101018;--surface-hover: #18182a;--border: #22224a;--accent: #39ff14;--accent-dim: rgba(57,255,20,.25);--dead: #04040a;--trail-opacity: .6;box-shadow:0 0 18px #39ff142e}.shop-item-preview[data-item=theme_neon]{--preview-bg: #101018;--preview-accent: #39ff14}.board[data-board-theme=theme_aurora]{--board-bg: linear-gradient(135deg,#0d2b2b,#132b4a 50%,#2a1440);--surface: rgba(255,255,255,.05);--surface-hover: rgba(255,255,255,.12);--border: rgba(126,249,224,.2);--accent: #7ef9e0;--accent-dim: rgba(126,249,224,.25);--dead: rgba(0,0,0,.35)}.shop-item-preview[data-item=theme_aurora]{--preview-bg: linear-gradient(135deg,#0d2b2b,#132b4a 50%,#2a1440);--preview-accent: #7ef9e0}.board[data-trail-style=trail_neon]{--trail-opacity: .85}.board[data-trail-style=trail_neon] .trail-x,.board[data-trail-style=trail_neon] .trail-y{background:var(--accent);box-shadow:0 0 6px var(--accent),0 0 12px var(--accent-dim)}.shop-item-preview[data-item=trail_neon]:after{background:var(--accent);box-shadow:0 0 6px var(--accent),0 0 12px var(--accent-dim)}.board[data-trail-style=trail_ink]{--trail-opacity: .7}.board[data-trail-style=trail_ink] .trail-x{height:3px;background:var(--text);border-radius:2px}.board[data-trail-style=trail_ink] .trail-y{width:3px;background:var(--text);border-radius:2px}.shop-item-preview[data-item=trail_ink]:after{height:3px;background:var(--text);border-radius:2px;opacity:.7}.board[data-trail-style=trail_aurora]{--trail-opacity: .8}.board[data-trail-style=trail_aurora] .trail-x{height:3px;background:linear-gradient(90deg,transparent,#7ef9e0,#7aa2f7 55%,#c07ef9,transparent)}.board[data-trail-style=trail_aurora] .trail-y{width:3px;background:linear-gradient(180deg,transparent,#7ef9e0,#7aa2f7 55%,#c07ef9,transparent)}.shop-item-preview[data-item=trail_aurora]:after{height:3px;background:linear-gradient(90deg,transparent,#7ef9e0,#7aa2f7 55%,#c07ef9,transparent)}.board[data-dead-style=dead_ash] .cell.dead{background:var(--dead);background-image:repeating-linear-gradient(45deg,rgba(128,128,128,.22) 0 2px,transparent 2px 5px)}.shop-item-preview[data-item=dead_ash]{background-image:repeating-linear-gradient(45deg,rgba(128,128,128,.22) 0 2px,transparent 2px 5px)}.board[data-dead-style=dead_void] .cell.dead{background:radial-gradient(circle at 50% 50%,#000 0%,var(--dead) 75%);box-shadow:inset 0 0 8px #000000e6}.shop-item-preview[data-item=dead_void]{--preview-bg: radial-gradient(circle at 50% 50%, #000 0%, #15151c 75%)}.board[data-board-theme=theme_ocean]{--board-bg: #06283d;--surface: #0b3a54;--surface-hover: #11486a;--border: #11486a;--accent: #5cd3ff;--accent-dim: rgba(92,211,255,.25);--dead: #031722}.shop-item-preview[data-item=theme_ocean]{--preview-bg: #0b3a54;--preview-accent: #5cd3ff}.board[data-piece-style=piece_gem] .piece{border-radius:26%;background:linear-gradient(145deg,#ffffff73,#fff0 55%),var(--piece-bg);box-shadow:0 0 6px var(--piece-glow),inset 0 1px 2px #ffffff59}.board[data-piece-style=piece_gem] .piece.pop{box-shadow:0 0 16px var(--piece-glow),inset 0 1px 2px #ffffff59}.shop-item-preview[data-item=piece_gem]:before{border-radius:26%;background:linear-gradient(145deg,#ffffff73,#fff0 55%),var(--p1)}.board[data-piece-style=piece_glow] .piece{box-shadow:0 0 10px var(--piece-glow),0 0 22px var(--piece-glow)}.board[data-piece-style=piece_glow] .piece.pop{box-shadow:0 0 18px var(--piece-glow),0 0 36px var(--piece-glow)}.shop-item-preview[data-item=piece_glow]:before{box-shadow:0 0 10px var(--p1-glow),0 0 22px var(--p1-glow)}.board[data-piece-style=piece_pearl] .piece{background:radial-gradient(circle at 35% 30%,#ffffffbf,#ffffff14 45%),var(--piece-bg);box-shadow:0 0 8px var(--piece-glow),inset 0 0 6px #ffffff40}.board[data-piece-style=piece_pearl] .piece.pop{box-shadow:0 0 16px var(--piece-glow),inset 0 0 6px #ffffff4d}.shop-item-preview[data-item=piece_pearl]:before{background:radial-gradient(circle at 35% 30%,#ffffffbf,#ffffff14 45%),var(--p1)}.footer-link{background:none;border:none;color:var(--muted, #888);font-size:11px;text-decoration:underline;cursor:pointer;margin-left:8px}.legal-page{display:flex;flex-direction:column;gap:14px;padding:12px}.legal-body{display:flex;flex-direction:column;gap:12px;font-size:13px;line-height:1.6}.legal-meta{color:var(--muted, #888);font-size:11px}.duplicate-tab-msg{font-family:DM Mono,monospace;font-size:13px;letter-spacing:1px;color:var(--muted);margin:24px 0 16px;text-align:center}.game-history{margin-top:20px;max-width:460px;width:100%}.game-history-title{font-family:DM Mono,monospace;font-size:10px;font-weight:500;color:var(--muted);letter-spacing:2px;margin-bottom:10px}.game-history-list{display:flex;flex-direction:column;gap:6px}.game-history-item{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .2s;min-height:48px}.game-history-item:hover{background:var(--surface-hover);border-color:var(--accent)}.game-history-result{font-family:DM Mono,monospace;font-size:14px;font-weight:700;width:24px;text-align:center;flex-shrink:0}.game-history-details{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.game-history-opponent{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-history-meta{font-family:DM Mono,monospace;font-size:10px;color:var(--muted)}.game-history-elo{font-family:DM Mono,monospace;font-size:13px;font-weight:500;flex-shrink:0}.replay-page{padding:0 12px}.replay-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.replay-title{font-family:DM Mono,monospace;font-size:14px;font-weight:500;letter-spacing:3px;color:var(--accent)}.replay-players{display:flex;align-items:center;justify-content:center;gap:10px;font-family:DM Mono,monospace;font-size:13px;margin-bottom:14px}.replay-vs{color:var(--muted);font-size:11px}.replay-controls{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:14px}.replay-btn{width:40px!important;height:40px!important;padding:0!important;display:flex!important;align-items:center;justify-content:center;font-size:16px!important;min-height:auto!important}.replay-btn:disabled{opacity:.3;cursor:default}.replay-counter{font-family:DM Mono,monospace;font-size:13px;color:var(--muted);min-width:60px;text-align:center}.error-toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:300;background:var(--surface);border:1px solid var(--p2);border-radius:8px;padding:10px 18px;box-shadow:0 4px 24px #0000004d;font-size:13px;color:var(--p2);animation:fadeIn .3s ease-out;max-width:400px;width:calc(100% - 24px);text-align:center}.profile-avatar-section{display:flex;flex-direction:column;align-items:center;margin-bottom:16px}.profile-avatar-current{cursor:pointer;position:relative;transition:transform .2s}.profile-avatar-current:hover{transform:scale(1.05)}.avatar-picker{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;max-width:280px}.avatar-option{cursor:pointer;padding:6px;border-radius:8px;border:2px solid transparent;transition:all .2s}.avatar-option:hover{background:var(--surface-hover)}.avatar-option.active{border-color:var(--accent);background:var(--accent-active-bg)}.avatar-option.locked{opacity:.45;cursor:not-allowed;position:relative}.avatar-lock{position:absolute;right:2px;top:0;color:var(--accent);font-size:10px}.profile-error{margin:-14px 0 14px;font-size:12px;color:var(--p2)}.premium-section{margin-bottom:16px;width:100%}.premium-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.premium-info{display:flex;flex-direction:column;gap:2px}.premium-label{font-family:DM Mono,monospace;font-size:13px;font-weight:500;color:var(--accent);letter-spacing:1px}.premium-desc{font-size:11px;color:var(--muted)}.premium-active{color:var(--p2)!important;border-color:var(--p2)!important}.premium-badge-sm{position:absolute;top:-2px;right:-2px;color:var(--accent);font-size:14px;text-shadow:0 0 6px var(--accent-dim)}.ad-container{width:100%;max-width:480px;height:50vh;max-height:400px;background:var(--surface);border:1px solid var(--border);border-radius:12px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.ad-slot{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:DM Mono,monospace;font-size:12px;color:var(--muted);letter-spacing:2px;padding:12px}.ad-slot-placeholder{width:100%;height:100%;border:1px dashed var(--accent);border-radius:10px;background:repeating-linear-gradient(-45deg,rgba(255,193,7,.08),rgba(255,193,7,.08) 8px,transparent 8px,transparent 16px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.ad-slot-title{font-family:DM Mono,monospace;font-size:12px;color:var(--accent);letter-spacing:2px}.ad-slot-hint{font-size:11px;color:var(--muted);letter-spacing:.5px}.ad-header{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:480px;margin-bottom:8px;padding:0 4px}.ad-label{font-family:DM Mono,monospace;font-size:10px;color:var(--dim);letter-spacing:2px}.ad-close-btn{background:var(--surface);border:1px solid var(--border);color:var(--muted);width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s}.ad-close-btn:hover{border-color:var(--accent);color:var(--accent)}.ad-close-btn:disabled{opacity:.3;cursor:default}.ad-countdown{font-family:DM Mono,monospace;font-size:11px;color:var(--muted);min-width:20px;text-align:center}.league-badge{display:inline-flex;align-items:center;gap:4px;font-family:DM Mono,monospace;font-size:11px;font-weight:500;padding:3px 10px;border-radius:20px;letter-spacing:1px}.league-bronze{color:#cd7f32;background:#cd7f321a;border:1px solid rgba(205,127,50,.25)}.league-silver{color:silver;background:#c0c0c01a;border:1px solid rgba(192,192,192,.25)}.league-gold{color:gold;background:#ffd7001a;border:1px solid rgba(255,215,0,.25)}.leagues-page{max-width:460px;width:100%;padding:0 12px}.league-current{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:20px}.league-icon{font-size:48px}.league-name{font-family:DM Mono,monospace;font-size:16px;font-weight:500;letter-spacing:2px}.league-score-label{font-size:11px;color:var(--muted)}.league-score-value{font-family:DM Mono,monospace;font-size:20px;color:var(--accent)}.league-info-panel{padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:16px}.league-info-title{font-family:DM Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:2px;margin-bottom:8px}.league-info-text{font-size:12px;color:var(--text-soft);line-height:1.6}.league-info-text strong{color:var(--text);font-weight:500}.league-premium-gate{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 20px;text-align:center}.league-premium-gate-text{font-size:13px;color:var(--muted);line-height:1.6}.monthly-tab{display:flex;gap:4px;margin-bottom:16px}@keyframes popIn{0%{transform:scale(.3);opacity:0}55%{transform:scale(1.15)}80%{transform:scale(.97)}to{transform:scale(1);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes boardShake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}50%{transform:translate(4px)}75%{transform:translate(-2px)}}@keyframes trailInX{0%{transform:translateY(-1px) scaleX(0);opacity:0}to{transform:translateY(-1px) scaleX(1);opacity:var(--trail-opacity)}}@keyframes trailInY{0%{transform:translate(-1px) scaleY(0);opacity:0}to{transform:translate(-1px) scaleY(1);opacity:var(--trail-opacity)}}@keyframes deadBurn{0%{box-shadow:inset 0 0 12px #f0436a80}to{box-shadow:inset 0 0 #f0436a00}}.coin-balance,.reward-done,.profile-stat-value,.lobby-rating-value,.lobby-timer,.move-timer-label,.quest-progress-text,.tut-counter,.postgame-elo-delta,.postgame-elo-new,.lb-table,.streak-flame,.disconnect-countdown,.turn-bar,.season-rank,.season-record{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion: reduce){.board.shake{animation:none}.piece.pop{animation-name:fadeIn}.dot.pulse,.cell.hint,.trail-x,.trail-y,.cell.dead,.ghost,.lobby-play-btn,.move-timer.urgent .move-timer-label{animation:none}}[data-reduced-effects] .board.shake{animation:none}[data-reduced-effects] .piece.pop{animation-name:fadeIn}[data-reduced-effects] .dot.pulse,[data-reduced-effects] .cell.hint,[data-reduced-effects] .trail-x,[data-reduced-effects] .trail-y,[data-reduced-effects] .cell.dead,[data-reduced-effects] .ghost,[data-reduced-effects] .lobby-play-btn,[data-reduced-effects] .move-timer.urgent .move-timer-label{animation:none}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes pulseDot{0%,to{transform:scale(1)}50%{transform:scale(1.35)}}html,body{overscroll-behavior:none;-webkit-overflow-scrolling:touch}.board{max-width:100%}@media (max-width: 480px){.app-container{padding:12px 6px 24px}.header{margin-bottom:10px}.logo{font-size:18px;letter-spacing:8px}.settings{gap:4px;margin-bottom:12px}.seg-btn{padding:7px 10px;font-size:11px;min-height:44px}.turn-bar{gap:8px;margin-bottom:10px;font-size:11px}.turn-status{padding:4px 10px;font-size:10px;letter-spacing:1px}.blocked-hint{font-size:9px}.board{gap:1px;padding:2px;border-radius:4px}.cell{border-radius:2px;min-width:40px;min-height:40px}.controls{gap:6px;margin-top:12px}.btn{padding:10px 16px;font-size:12px;min-height:48px}.rules{max-width:100%;margin-top:12px}.rules-inner{padding:14px 16px}.rules h3{font-size:11px;margin-bottom:10px}.rule-step{font-size:12px;line-height:1.5;gap:8px;margin-bottom:10px}.tut-panel{max-width:100%;margin-top:12px}.tut-inner{padding:14px 16px}.tut-title{font-size:14px}.tut-body{font-size:12px;line-height:1.6}.tut-btn{padding:10px 14px;font-size:12px;min-height:48px}.ov-title{font-size:26px;letter-spacing:4px}.ov-sub{font-size:10px;letter-spacing:3px}.ov-wins{font-size:12px}.ov-detail{font-size:10px}.ov-hint{font-size:10px;margin-top:18px}.studio-credit{margin-top:20px;font-size:9px}.profile-toggle{width:36px;height:36px}.profile-toggle svg{width:16px;height:16px}.sound-toggle{width:36px;height:36px}.sound-toggle svg{width:16px;height:16px}.theme-toggle{width:36px;height:36px}.theme-toggle svg{width:16px;height:16px}.profile-stats{gap:8px}.profile-stat{padding:10px}.profile-stat-value{font-size:16px}.game-history-item{min-height:48px;padding:10px}.replay-btn{width:48px!important;height:48px!important}.friend-card{padding:10px;min-height:48px}.lb-row{padding:10px 14px;min-height:48px}}@media (max-width: 360px){.seg-btn{padding:6px 7px;font-size:10px}.btn{padding:7px 12px;font-size:10px}.piece .dir-arrow.dir-up{border-width:0 3px 4px 3px}.piece .dir-arrow.dir-down{border-width:4px 3px 0 3px}.piece .dir-arrow.dir-left{border-width:3px 4px 3px 0}.piece .dir-arrow.dir-right{border-width:3px 0 3px 4px}}.pressure-badge{margin-bottom:4px;font-family:DM Mono,monospace;font-size:12px;letter-spacing:1px;border:1px solid var(--border);border-radius:999px;padding:3px 10px;animation:pulse .4s ease}.pressure-badge.good{color:var(--p1);border-color:#4de8c859}.pressure-badge.bad{color:var(--p2);border-color:#f0436a59}.pressure-badge.neutral{color:var(--muted)}.pressure-wrap{display:flex;flex-direction:column;align-items:center;margin-bottom:10px}.pressure-row{display:flex;align-items:center;gap:10px}.pressure-row .blocked-hint{margin-bottom:4px}.pressure-hint{font-size:11px;color:var(--muted);text-align:center;line-height:1.3;max-width:320px}.bottom-nav{position:sticky;bottom:0;width:100%;max-width:460px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px));margin-top:auto;background:var(--overlay-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:10px}.bottom-nav-btn{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:48px;background:transparent;border:1px solid transparent;color:var(--muted);padding:6px 2px;border-radius:8px;font:9px DM Mono,monospace;letter-spacing:.5px;cursor:pointer}.bottom-nav-icon{font-size:16px;line-height:1}.bottom-nav-label{font-size:9px}.bottom-nav-btn.active{color:var(--accent);border-color:#c9a84c59;background:#c9a84c14}.shell-header{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:16px;padding:0 4px}.shell-controls{display:flex;align-items:center;gap:8px}.shell-content{width:100%;flex:1}@media (min-width: 768px){html,body{background:var(--board-bg)}.app-container{margin:24px auto;height:calc(100dvh - 48px);background:var(--bg);border:1px solid var(--border);border-radius:16px;box-shadow:var(--board-shadow);padding-top:20px;padding-bottom:28px}}.postgame-panel{max-width:460px;width:100%;padding:0 12px;display:flex;flex-direction:column;align-items:center;gap:12px}.postgame-result{font-family:DM Mono,monospace;font-size:28px;font-weight:300;letter-spacing:6px}.postgame-result.victory{color:var(--p1)}.postgame-result.defeat{color:var(--p2)}.postgame-elo-row{display:flex;align-items:center;gap:12px}.postgame-elo-delta{font-family:DM Mono,monospace;font-size:22px;font-weight:500}.postgame-elo-new{font-family:DM Mono,monospace;font-size:14px;color:var(--muted);letter-spacing:1px}.postgame-meta{font-family:DM Mono,monospace;font-size:11px;color:var(--muted);text-align:center}.postgame-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;margin-top:4px}.metric-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px}.metric-label{font-family:DM Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:1.5px;margin-bottom:6px}.metric-value{font-family:DM Mono,monospace;font-size:16px;color:var(--text);font-weight:500}.metric-value.muted{color:var(--muted);font-size:13px}.metric-insight{font-family:DM Mono,monospace;font-size:11px;color:var(--accent);margin-top:4px}.postgame-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:8px}.postgame-premium-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}.premium-page{max-width:460px;width:100%;padding:0 12px}.premium-hero{text-align:center;margin-bottom:24px}.premium-hero-title{font-family:DM Mono,monospace;font-size:20px;font-weight:500;color:var(--accent);letter-spacing:3px;margin-bottom:8px}.premium-hero-subtitle{font-size:14px;color:var(--text-soft);margin-bottom:8px}.premium-fair-play{font-size:12px;color:var(--muted)}.premium-features{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.premium-feature-item{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:8px;font-size:13px;color:var(--text-soft)}.premium-feature-check{color:var(--accent);font-size:14px}.premium-actions{display:flex;flex-direction:column;gap:10px;align-items:center}.premium-active-badge{font-family:DM Mono,monospace;font-size:12px;color:var(--accent);letter-spacing:1px;margin-bottom:8px}.premium-upsell-compact{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .2s;margin-top:8px}.premium-upsell-compact:hover{border-color:var(--accent)}.premium-upsell-star{color:var(--accent)}.premium-upsell-text{font-size:12px;color:var(--text-soft)}.locked-analysis-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:10px;text-align:center;margin-top:8px}.locked-icon{font-size:24px;color:var(--accent)}.locked-text{font-size:13px;color:var(--muted);line-height:1.5}.stats-page{max-width:460px;width:100%;padding:0 12px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px;text-align:center}.stat-card-label{font-family:DM Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:2px;margin-bottom:6px}.stat-card-value{font-size:20px;font-weight:500;color:var(--text)}.history-page{max-width:460px;width:100%;padding:0 12px}.history-premium-gate{margin-top:16px}.history-pagination{display:flex;justify-content:center;margin-top:16px}.ad-overlay{position:fixed;inset:0;z-index:250;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--overlay-bg);animation:fadeIn .3s ease-out;padding:20px}.ad-overlay-content{max-width:400px;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;text-align:center}.ad-overlay-title{font-family:DM Mono,monospace;font-size:14px;font-weight:500;color:var(--accent);letter-spacing:2px;margin-bottom:12px}.ad-overlay-body{font-size:13px;color:var(--text-soft);margin-bottom:16px}.ad-overlay-actions{display:flex;gap:10px;justify-content:center}.lobby-rating-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:16px;text-align:left}.lobby-rating-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;font-size:13px}.lobby-rating-label{font-family:DM Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:1.5px}.lobby-rating-value{font-family:DM Mono,monospace;font-size:16px;color:var(--text);font-weight:500}.lobby-secondary{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:16px}.lobby-search-meta{font-family:DM Mono,monospace;font-size:11px;color:var(--muted)}.profile-nav-cards{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px;width:100%}.nav-card{padding:12px;font-size:12px;text-align:center}.rematch-notification{position:fixed;bottom:80px;left:50%;transform:translate(-50%);z-index:200;background:var(--surface);border:1px solid var(--accent);border-radius:10px;padding:14px 20px;box-shadow:0 4px 24px #0000004d;display:flex;align-items:center;gap:14px;animation:fadeIn .3s ease-out;max-width:420px;width:calc(100% - 24px)}.replay-analysis{margin-top:16px;width:100%}.replay-analysis-title{font-family:DM Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:2px;margin-bottom:8px}.replay-analysis-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 20px;text-align:center;color:var(--muted);font-size:13px}.cell.hint{box-shadow:inset 0 0 0 2px var(--accent),inset 0 0 14px var(--accent-dim)}.cell.hint:after{content:"";position:absolute;inset:0;animation:pulse 1s ease-in-out infinite;pointer-events:none}.streak-freezes{font-size:12px;color:var(--muted);font-family:DM Mono,monospace}.quest-reroll{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:6px;min-height:32px;padding:4px 8px;margin-right:6px;font-size:12px;cursor:pointer}.quest-reroll:disabled{opacity:.35;cursor:default}.emote-layer{position:relative;height:0;display:flex;justify-content:center;gap:8px}.emote-bubble{position:relative;top:-6px;font-size:26px;animation:emoteFloat 3s ease-out forwards;pointer-events:none}.emote-bubble.mine{opacity:.75}@keyframes emoteFloat{0%{transform:translateY(8px) scale(.6);opacity:0}15%{transform:translateY(0) scale(1.1);opacity:1}30%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-26px) scale(1);opacity:0}}.emote-bar{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}.emote-btn{background:transparent;border:1px solid var(--border);border-radius:8px;min-width:40px;min-height:40px;font-size:18px;cursor:pointer;line-height:1}.emote-btn:hover{border-color:var(--muted)}.settings-page{display:flex;flex-direction:column;gap:14px;padding:12px}.settings-list{display:flex;flex-direction:column;gap:4px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:8px 12px;border-radius:10px;border:1px solid var(--border);font-size:13px}.settings-choice{display:flex;gap:6px}.profile-links{display:flex;justify-content:center;margin:8px 0}.avatar[data-frame]:after{content:"";position:absolute;inset:-3px;border-radius:50%;border:2px solid var(--frame-color, transparent);pointer-events:none;box-shadow:0 0 8px var(--frame-glow, transparent)}.avatar[data-frame=frame_bronze]{--frame-color: #b87333;--frame-glow: rgba(184,115,51,.5)}.avatar[data-frame=frame_silver]{--frame-color: #c0c8d0;--frame-glow: rgba(192,200,208,.5)}.avatar[data-frame=frame_gold]{--frame-color: #d4a843;--frame-glow: rgba(212,168,67,.6)}.shop-item-preview[data-item=frame_bronze]{--preview-accent: #b87333}.shop-item-preview[data-item=frame_silver]{--preview-accent: #c0c8d0}.shop-item-preview[data-item=frame_gold]{--preview-accent: #d4a843}.shop-item-preview[data-item^=sound_]{--preview-accent: var(--tut)}.lb-frame{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle;background:var(--frame-color, transparent);box-shadow:0 0 6px var(--frame-glow, transparent)}.lb-frame[data-frame=frame_bronze]{--frame-color: #b87333;--frame-glow: rgba(184,115,51,.6)}.lb-frame[data-frame=frame_silver]{--frame-color: #c0c8d0;--frame-glow: rgba(192,200,208,.6)}.lb-frame[data-frame=frame_gold]{--frame-color: #d4a843;--frame-glow: rgba(212,168,67,.7)}.page-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;width:100%;margin-bottom:4px}.page-header-back{justify-self:start;min-height:40px}.page-header-title{font-family:DM Mono,monospace;font-size:14px;letter-spacing:2px;text-align:center;color:var(--text);white-space:nowrap}.page-header-right{justify-self:end;display:flex;align-items:center}.lobby-play-btn{width:100%;max-width:320px;min-height:56px;padding:14px 24px;font-size:15px;letter-spacing:1.5px;border-radius:var(--r-btn);animation:idlePulse 2.6s var(--ease-inout) infinite}.lobby-play-btn:active:not(:disabled),.lobby-play-btn:disabled{animation:none}@keyframes idlePulse{0%,88%,to{transform:scale(1)}94%{transform:scale(1.03)}}.search-ring{width:44px;height:44px;margin:6px auto;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spinRing 1s linear infinite}@keyframes spinRing{to{transform:rotate(360deg)}}.reward-btn{border-color:var(--accent);color:var(--accent);background:var(--accent-active-bg);min-height:46px}.consent-banner{position:fixed;left:12px;right:12px;bottom:calc(64px + env(safe-area-inset-bottom,0px));z-index:90;background:var(--surface, #1a1d24);border:1px solid var(--border, #2a2e38);border-radius:12px;padding:14px;box-shadow:0 8px 30px #00000073;max-width:480px;margin:0 auto}.consent-text{margin:0 0 10px;font-size:13px;line-height:1.45;color:var(--text, #e8eaf0)}.consent-actions{display:flex;gap:8px;flex-wrap:wrap}.consent-actions .btn{flex:1 1 auto}.settings-section{margin-top:24px;padding:0 16px}.settings-section-title{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #888);margin:0 0 10px}.btn-danger{color:#ff5c5c;border-color:#ff5c5c73}.btn-danger:disabled{opacity:.45;cursor:not-allowed}.delete-confirm{display:flex;flex-direction:column;gap:10px}.delete-warning{margin:0;font-size:13px;line-height:1.45;color:var(--muted, #999)}.delete-confirm-input{background:var(--surface, #1a1d24);border:1px solid rgba(255,92,92,.45);border-radius:8px;color:var(--text, #e8eaf0);padding:10px 12px;font-size:15px;min-height:44px}.delete-error{margin:0;font-size:13px;color:#ff5c5c}.captcha-slot{display:flex;justify-content:center;margin-top:10px;min-height:0}.captcha-slot:empty{display:none}@keyframes screenEnter{0%{opacity:0;transform:translateY(8px)}}.shell-content>*{animation:screenEnter var(--dur-base) var(--ease-out)}@keyframes overlayIn{0%{opacity:0}}@keyframes modalIn{0%{opacity:0;transform:scale(.92)}}.register-prompt-overlay{animation:overlayIn var(--dur-fast) var(--ease-out)}.register-prompt,.postgame-stats{animation:modalIn var(--dur-base) var(--ease-out-back)}@keyframes bannerUp{0%{opacity:0;transform:translateY(16px)}}.consent-banner{animation:bannerUp var(--dur-base) var(--ease-out)}@keyframes riseIn{0%{opacity:0;transform:translateY(10px)}}@keyframes celebratePop{0%{opacity:0;transform:scale(.6)}}.postgame-panel>*{animation:riseIn var(--dur-base) var(--ease-out) both}.postgame-panel>:nth-child(1){animation:celebratePop .5s var(--ease-elastic) both}.postgame-panel>:nth-child(2){animation-delay:.12s}.postgame-panel>:nth-child(3){animation-delay:.16s}.postgame-panel>:nth-child(4){animation-delay:.2s}.postgame-panel>:nth-child(5){animation-delay:.24s}.postgame-panel>.postgame-actions{animation-delay:.32s}@keyframes listIn{0%{opacity:0;transform:translateY(6px)}}.shop-item,.quest-item,.lb-row,.season-row,.game-history-item{animation:listIn var(--dur-fast) var(--ease-out) backwards}:is(.shop-item,.quest-item,.lb-row,.season-row,.game-history-item):nth-child(2){animation-delay:25ms}:is(.shop-item,.quest-item,.lb-row,.season-row,.game-history-item):nth-child(3){animation-delay:50ms}:is(.shop-item,.quest-item,.lb-row,.season-row,.game-history-item):nth-child(4){animation-delay:75ms}:is(.shop-item,.quest-item,.lb-row,.season-row,.game-history-item):nth-child(5){animation-delay:.1s}:is(.shop-item,.quest-item,.lb-row,.season-row,.game-history-item):nth-child(6){animation-delay:125ms}:is(.shop-item,.quest-item,.lb-row,.season-row,.game-history-item):nth-child(7){animation-delay:.15s}:is(.shop-item,.quest-item,.lb-row,.season-row,.game-history-item):nth-child(8){animation-delay:175ms}@media (prefers-reduced-motion: reduce){.shell-content>*,.register-prompt-overlay,.register-prompt,.postgame-stats,.consent-banner,.postgame-panel>*,.shop-item,.quest-item,.lb-row,.season-row,.game-history-item{animation:none}}[data-reduced-effects] :is(.shell-content>*,.register-prompt-overlay,.register-prompt,.postgame-stats,.consent-banner,.postgame-panel>*,.shop-item,.quest-item,.lb-row,.season-row,.game-history-item){animation:none}.coin-balance{position:relative;display:inline-flex;align-items:center;gap:6px}.coin-balance.gain{animation:coinBump .32s var(--ease-out-back)}@keyframes coinBump{0%{transform:scale(1)}45%{transform:scale(1.18)}to{transform:scale(1)}}.coin-float{position:absolute;right:6px;top:-4px;pointer-events:none;font-family:DM Mono,monospace;font-size:12px;font-weight:600;color:var(--accent);animation:coinFloat .9s var(--ease-out) forwards}@keyframes coinFloat{0%{opacity:0;transform:translateY(4px)}25%{opacity:1}to{opacity:0;transform:translateY(-16px)}}.coin-plus{width:22px;height:22px;border-radius:999px;border:none;background:var(--accent-dim);color:var(--accent);font-size:15px;font-weight:700;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.btn.insufficient{opacity:.55;filter:grayscale(.4)}.shop-shortfall{display:flex;flex-direction:column;align-items:center;gap:2px;font-family:DM Mono,monospace;font-size:11px;color:var(--text-soft);animation:fadeIn var(--dur-fast) var(--ease-out)}.shop-shortfall-link{background:none;border:none;cursor:pointer;padding:4px;font-family:DM Mono,monospace;font-size:11px;color:var(--accent)}.shop-error{display:flex;flex-direction:column;align-items:center;gap:8px}.shop-item-skeleton{min-height:140px;border:1px solid var(--border);border-radius:12px;background:var(--surface);animation:skeletonPulse 1.4s var(--ease-inout) infinite}@keyframes skeletonPulse{0%,to{opacity:.5}50%{opacity:1}}.premium-restore{display:block;margin:12px auto 0;background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer;min-height:40px;text-decoration:underline;text-underline-offset:3px}.settings-version{margin-top:28px;text-align:center;font-family:DM Mono,monospace;font-size:10px;color:var(--dim);letter-spacing:1.5px}@media (prefers-reduced-motion: reduce){.coin-balance.gain,.shop-item-skeleton{animation:none}.coin-float{animation:coinFloatStill .9s linear forwards}}[data-reduced-effects] .coin-balance.gain,[data-reduced-effects] .shop-item-skeleton{animation:none}[data-reduced-effects] .coin-float{animation:coinFloatStill .9s linear forwards}@keyframes coinFloatStill{0%{opacity:1}to{opacity:0}}.profile-page,.lobby,.friends-page,.premium-page,.stats-page,.history-page,.leagues-page,.leaderboard-page,.replay-page,.shop-page,.quests-page,.season-page,.settings-page,.legal-page{max-width:460px;width:100%;margin-inline:auto}
