@font-face{font-family:Rubik;src:url(./assets/fonts/rubik-latin-wght.woff2) format("woff2");font-weight:300 900;font-style:normal;font-display:swap}:root{--bg: #262421;--nav: #1e1c1a;--surface: #312e2a;--raised: #3d3934;--input: #1e1c1a;--line: rgba(255, 255, 255, .07);--line-strong: rgba(255, 255, 255, .16);--text: #f2eee8;--muted: #a29c93;--play: #4f8f25;--play-edge: #376a17;--play-bright: #8cc152;--coin: #f2b233;--danger: #f1948f;--danger-fill: #b8423d;--focus: #8ec5ff;--board-light: #ead3a8;--board-dark: #9a5d3e;--wood-edge: #5e3522;--wood-glow: #d9a77e;--gold-surface: #362e22;--gold-line: rgba(242, 178, 51, .14);--gold-muted: #b9a582;--highlight: rgba(246, 216, 96, .5);--radius-row: 10px;--radius-sheet: 16px;--font: "Rubik", "Noto Sans Ethiopic", "Nyala", system-ui, -apple-system, "Segoe UI", sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--nav-height: 60px;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;color:var(--text);background:var(--bg);font:400 15px/1.45 var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3,p,dl,dd,figure{margin:0}h1,h2,h3{font-weight:600;line-height:1.2}a{color:var(--play-bright)}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0}button:disabled{cursor:default}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}svg{flex-shrink:0}.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}.hidden{display:none!important}.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.muted{color:var(--muted)}.primary,.secondary,.danger{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border-radius:var(--radius-row);font-weight:600;font-size:16px;line-height:1.1;text-align:center;transition:transform 80ms ease,box-shadow 80ms ease,background-color .12s ease}.primary{min-height:52px;padding-bottom:4px;color:#fff;background:var(--play);box-shadow:inset 0 -4px 0 var(--play-edge);font-size:18px;font-weight:700;text-shadow:0 1px 0 rgba(0,0,0,.25)}.primary:not(:disabled):active{transform:translateY(2px);box-shadow:inset 0 -2px 0 var(--play-edge)}.secondary{color:var(--text);background:var(--raised);box-shadow:inset 0 -3px #00000047}.danger{color:var(--danger);background:var(--raised);box-shadow:inset 0 -3px #00000047}.secondary:not(:disabled):active,.danger:not(:disabled):active{transform:translateY(1px);box-shadow:inset 0 -1px #00000047}.primary:disabled,.secondary:disabled,.danger:disabled{opacity:.45}@media(hover:hover){.primary:not(:disabled):hover{background:#5a9d2c}.secondary:not(:disabled):hover,.danger:not(:disabled):hover{background:#47423c}}.wide{width:100%}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.icon-button{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:8px;color:var(--text)}.icon-button svg{width:24px;height:24px}.modal-close svg{transform:rotate(45deg)}.ghost-button{min-height:36px;padding:0 12px;border:1px solid var(--line-strong);border-radius:8px;color:var(--text);font-size:14px;font-weight:500;white-space:nowrap}@media(hover:hover){.icon-button:hover,.ghost-button:hover{background:var(--surface)}}label{display:grid;gap:6px;font-size:14px;font-weight:500}input,select{width:100%;min-height:48px;padding:0 12px;border:1px solid var(--line-strong);border-radius:8px;background:var(--input);font-size:16px}input:focus,select:focus{border-color:var(--play-bright);outline:none}input:focus-visible,select:focus-visible{outline:2px solid var(--play-bright);outline-offset:0}input[readonly]{color:var(--muted)}input[type=checkbox]{width:22px;height:22px;min-height:0;margin:0;accent-color:var(--play)}.phone-input-group{display:flex}.phone-input-group span{display:grid;place-items:center;padding:0 12px;border:1px solid var(--line-strong);border-right:0;border-radius:8px 0 0 8px;color:var(--muted);background:var(--surface);font-size:16px}.phone-input-group input{border-radius:0 8px 8px 0}.field-hint,.sheet-note{color:var(--muted);font-size:13px}.sheet-note:empty{display:none}.segmented{display:grid;grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;padding:4px;border-radius:12px;background:var(--input)}.segmented button{min-height:40px;border-radius:9px;color:var(--muted);font-size:15px;font-weight:600}.segmented button.active{color:var(--text);background:var(--raised)}.auth-landing{min-height:100dvh;display:grid;justify-items:center;padding:calc(28px + var(--safe-top)) 16px calc(28px + var(--safe-bottom))}.auth-shell{width:min(100%,400px);display:grid;align-content:start;gap:20px}.auth-brand{display:flex;align-items:center;justify-content:center;gap:10px;font-size:26px}.auth-brand strong{font-weight:700}.brand-cap{width:34px;height:34px;fill:var(--play)}.auth-preview{display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden;border-radius:12px}.auth-pitch{font-size:17px;text-align:center}.auth-panel{display:grid;gap:16px;padding:16px;border-radius:14px;background:var(--surface)}.auth-form{display:grid;gap:14px}.form-title{font-size:20px}.auth-terms-row{grid-template-columns:22px 1fr;align-items:start;gap:10px;font-weight:400;line-height:1.4}.app-shell{min-height:100dvh}.appbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;min-height:calc(56px + var(--safe-top));padding:var(--safe-top) 16px 0;background:var(--bg);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:8px;font-size:20px}.brand strong{font-weight:700}.brand .brand-cap{width:30px;height:30px}.appbar-title{min-width:0;overflow:hidden;font-size:20px;white-space:nowrap;text-overflow:ellipsis}body[data-screen=home] .appbar-title,body:not([data-screen=home]) .brand strong{display:none}.coin-pill{display:flex;align-items:center;gap:4px;margin-left:auto;padding:4px;border-radius:999px;background:var(--surface)}.coin-balance{display:flex;align-items:center;gap:8px;min-height:32px;padding:0 6px 0 4px;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.coin{display:inline-block;width:20px;height:20px;border-radius:50%;background:radial-gradient(circle,transparent 0 42%,rgba(120,72,0,.55) 43% 50%,transparent 51%),var(--coin);box-shadow:inset 0 -2px #b8740c}.coin-add{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;color:#fff;background:var(--play)}.coin-add svg{width:18px;height:18px}.main-panel{width:100%;max-width:640px;margin:0 auto;padding:16px 16px calc(var(--nav-height) + var(--safe-bottom) + 24px)}.view{display:none}.view.active{display:block}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-template-columns:repeat(5,1fr);height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--nav);border-top:1px solid var(--line)}.nav-item{display:grid;place-items:center;align-content:center;gap:3px;color:var(--muted)}.nav-item svg{width:24px;height:24px}.nav-item b{font-size:11px;font-weight:500}.nav-item.active{color:var(--text)}.nav-item.active svg{color:var(--play-bright)}body[data-screen=xo] .appbar,body[data-screen=dama] .appbar,body[data-screen=chess] .appbar,body[data-screen=ludo] .appbar,body[data-screen=xo] .bottom-nav,body[data-screen=dama] .bottom-nav,body[data-screen=chess] .bottom-nav,body[data-screen=ludo] .bottom-nav{display:none}body[data-screen=xo] .main-panel,body[data-screen=dama] .main-panel,body[data-screen=chess] .main-panel,body[data-screen=ludo] .main-panel{max-width:none;padding:0}.section-title{margin:4px 0 10px;font-size:17px}.game-list{display:grid;gap:10px}.game-hero{display:grid;width:100%;overflow:hidden;border-radius:14px;background:var(--surface);box-shadow:inset 0 -4px #00000038;text-align:left}.hero-board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));background:var(--board-dark);box-shadow:0 5px 0 var(--wood-edge);transform:perspective(560px) rotateX(30deg) scale(1.16);transform-origin:50% 100%;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 38%);mask-image:linear-gradient(to bottom,transparent,#000 38%)}.hero-board .piece{width:86%}.hero-copy{display:grid;gap:4px;padding:18px 16px 0}.hero-copy strong{font-size:24px;font-weight:700;letter-spacing:-.01em;line-height:1.15}.hero-copy strong span{margin-left:4px;color:var(--wood-glow);font-size:17px;font-weight:500;letter-spacing:0}.hero-copy small{color:var(--muted);font-size:14px}.hero-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 18px}.hero-play{display:inline-grid;place-items:center;min-width:132px;min-height:52px;padding:0 28px 4px;border-radius:var(--radius-row);color:#fff;background:var(--play);box-shadow:inset 0 -4px 0 var(--play-edge);font-size:19px;font-weight:700;text-shadow:0 1px 0 rgba(0,0,0,.25);transition:transform 80ms ease,box-shadow 80ms ease}.game-hero:active .hero-play{transform:translateY(2px);box-shadow:inset 0 -2px 0 var(--play-edge)}@media(hover:hover){.game-hero:hover .hero-play{background:#5a9d2c}}.game-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.game-tile{position:relative;display:grid;grid-template-rows:88px auto;width:100%;overflow:hidden;border-radius:12px;background:var(--surface);text-align:left}@media(hover:hover){.game-tile:hover{background:var(--raised)}}.game-tile:active .tile-art{filter:brightness(.92)}.tile-art{position:relative;display:grid;place-items:center;overflow:hidden}.tankegna-art{background:repeating-conic-gradient(var(--board-dark) 0 25%,var(--board-light) 0 50%) 50% 50% / 44px 44px}.tankegna-art .piece{width:60px}.chess-art{background:url(./assets/icons/chess-knight.webp) 50% 55% / 64px no-repeat,repeating-conic-gradient(#739552 0 25%,#ebecd0 0 50%) 50% 50% / 44px 44px}.ludo-art{grid-template-columns:1fr 1fr;place-items:stretch}.ludo-art i{--c: #43a047;background:radial-gradient(circle,var(--c) 0 16%,#fff 17% 44%,transparent 45%),var(--c)}.ludo-art i:nth-child(2){--c: #fdd835}.ludo-art i:nth-child(3){--c: #1e88e5}.ludo-art i:nth-child(4){--c: #e53935}.xo-art{grid-template-columns:repeat(3,24px);grid-template-rows:repeat(3,24px);place-content:center;gap:3px;background:var(--nav)}.xo-art b{display:grid;place-items:center;width:24px;height:24px;border-radius:4px;background:var(--raised);font-size:15px;font-weight:800;line-height:1}.xo-art b:nth-child(3),.xo-art b:nth-child(6),.xo-art b:nth-child(7){color:var(--play-bright)}.tile-name{display:grid;gap:1px;min-width:0;padding:10px 12px 12px}.tile-name strong{overflow:hidden;font-size:16px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}.tile-name small{overflow:hidden;color:var(--muted);font-size:12px;white-space:nowrap;text-overflow:ellipsis}.game-online{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap}.game-online:before{content:"";width:8px;height:8px;border-radius:50%;background:#6b655c}.game-online:empty{display:none}.game-online b{color:var(--text);font-weight:600}.game-online small{font-size:inherit}.game-online.has-players:before{background:var(--play-bright);box-shadow:0 0 0 3px #8cc15238}.game-tile .game-online{margin-top:6px;font-size:13px}.chevron{width:18px;height:18px;color:var(--muted)}.game-icon{display:grid;place-items:center;width:48px;height:48px;overflow:hidden;border-radius:8px}.cap-icon{background:var(--board-dark)}.chess-icon{background:#739552 url(./assets/icons/chess-knight.webp) center / 82% no-repeat}.ludo-icon{grid-template-columns:1fr 1fr;gap:0}.ludo-icon i{width:100%;height:100%}.ludo-icon i:nth-child(1){background:#43a047}.ludo-icon i:nth-child(2){background:#fdd835}.ludo-icon i:nth-child(3){background:#1e88e5}.ludo-icon i:nth-child(4){background:#e53935}.xo-icon{grid-template-columns:1fr 1fr;background:var(--raised);font-size:19px;font-weight:800;line-height:1}.xo-icon b:first-child{color:var(--text)}.xo-icon b:last-child{color:var(--play-bright)}.friend-row{display:grid;grid-template-columns:44px minmax(0,1fr) 18px;align-items:center;gap:12px;width:100%;margin-top:10px;padding:12px 14px 12px 12px;border-radius:12px;background:var(--surface);text-align:left}@media(hover:hover){.friend-row:hover{background:var(--raised)}}.friend-row:active{background:var(--raised)}.friend-row-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--play-bright);background:var(--raised)}.friend-row-icon svg{width:22px;height:22px}.friend-row-copy{display:grid;gap:1px;min-width:0}.friend-row-copy strong{font-size:16px;font-weight:600}.friend-row-copy small{overflow:hidden;color:var(--muted);font-size:13px;white-space:nowrap;text-overflow:ellipsis}.home-tournament{display:grid;margin-top:24px;overflow:hidden;border-radius:14px;background:var(--gold-surface);box-shadow:inset 0 3px 0 var(--coin)}.tournament-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;column-gap:12px;width:100%;padding:18px 14px 14px;text-align:left}.tournament-icon{width:44px;height:44px;padding:10px;border-radius:50%;color:#3b2a07;background:var(--coin)}.tournament-copy{display:grid;gap:2px;min-width:0}.tournament-copy strong{overflow:hidden;font-size:16px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}.tournament-copy small{color:var(--gold-muted);font-size:13px}.tournament-reward{display:grid;justify-items:end;color:var(--gold-muted);font-size:12px}.tournament-reward b{color:var(--coin);font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}.tournament-clock{grid-column:2 / -1;margin-top:6px;font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.01em;line-height:1.1}.tournament-clock:empty{display:none}.home-leaderboard-list{display:grid;padding:0 14px 6px}.home-leaderboard-list p{padding:12px 0 10px 56px;border-top:1px solid var(--gold-line);color:var(--gold-muted);font-size:14px}.home-leaderboard-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:46px;border-top:1px solid var(--gold-line);font-size:15px}.home-leaderboard-row b{overflow:hidden;font-weight:500;white-space:nowrap;text-overflow:ellipsis}.home-leaderboard-row>span:last-child{color:var(--coin);font-weight:600;font-variant-numeric:tabular-nums}.home-leaderboard-rank,.leaderboard-rank{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;color:var(--muted);background:var(--raised);font-size:13px;font-weight:700}.home-leaderboard-rank{justify-self:center}.home-leaderboard-row:nth-child(1) .home-leaderboard-rank,.leaderboard-list>.leaderboard-row:nth-child(1) .leaderboard-rank{color:#3b2a07;background:var(--coin)}.home-leaderboard-row:nth-child(2) .home-leaderboard-rank,.leaderboard-list>.leaderboard-row:nth-child(2) .leaderboard-rank{color:#2a2a2a;background:#cfcac2}.home-leaderboard-row:nth-child(3) .home-leaderboard-rank,.leaderboard-list>.leaderboard-row:nth-child(3) .leaderboard-rank{color:#2e1a0c;background:#c98a55}.home-leaderboard-row.is-me b{color:var(--play-bright)}.leaderboard-row.is-me{box-shadow:inset 3px 0 0 var(--play-bright)}.game-view{--game-chrome: 212px;--board: min(100vw, calc(100dvh - var(--game-chrome) - var(--safe-top) - var(--safe-bottom)), 640px)}#ludo{--game-chrome: 256px}.game-view.active{display:flex;flex-direction:column;min-height:100dvh;padding-top:var(--safe-top)}.game-head{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:8px;height:52px;padding:0 8px}.game-head-title{display:grid;min-width:0}.game-head-title strong{font-size:17px;font-weight:600}.game-head-title span,.game-head-title strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.game-head-title span{color:var(--muted);font-size:13px}.game-stage{display:flex;flex:1;flex-direction:column;width:var(--board);margin:0 auto}.game-stage>.player-strip.opponent,.game-stage>.game-actions{margin-top:auto}.player-strip{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;height:44px;padding:0 8px}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:6px;color:var(--muted);background:var(--raised)}.avatar svg{width:20px;height:20px}.player-strip.me .avatar{color:#fff;background:var(--play)}.strip-who{display:flex;align-items:center;gap:8px;min-width:0}.strip-who strong{flex-shrink:1;min-width:0;overflow:hidden;font-size:15px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}.captured-stack{display:flex;flex-shrink:0;padding-left:5px}.captured-piece{width:16px;height:16px;margin-left:-6px;border-radius:50%}.chess-captured{flex-shrink:1;min-width:0;overflow:hidden;color:var(--text);font-family:"Segoe UI Symbol","Noto Sans Symbols 2","DejaVu Sans",var(--font);font-size:20px;line-height:1;letter-spacing:-4px;white-space:nowrap}.clock{display:grid;place-items:center;min-width:82px;height:36px;padding:0 10px;border-radius:6px;color:var(--muted);background:var(--nav)}.clock span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.clock strong{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1}.clock.active-turn{color:var(--bg);background:var(--text)}.board-wrap{position:relative;width:var(--board);aspect-ratio:1}.game-status{display:grid;align-content:center;gap:2px;min-height:48px;padding:6px 8px}.game-status strong{font-size:15px;font-weight:600}.game-view:has(.my-turn-board-wrap) .game-status strong{color:var(--play-bright)}.match-start-notice{display:-webkit-box;overflow:hidden;color:var(--muted);font-size:13px;-webkit-line-clamp:2;-webkit-box-orient:vertical}.match-start-notice:empty{display:none}.game-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 8px calc(8px + var(--safe-bottom))}.game-actions .danger,.game-actions .secondary{flex-shrink:0;min-height:44px}.game-actions .game-status{flex:1;min-width:0;min-height:0;padding:0}.game-actions .match-start-notice{font-size:12.5px;line-height:1.3}.game-actions{position:relative}.game-rules{margin-right:auto}.game-rules summary{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--muted);background:var(--raised);font-weight:600;list-style:none;cursor:pointer}.game-rules summary::-webkit-details-marker{display:none}.game-rules[open] summary{color:var(--text)}.game-rules p{position:absolute;left:8px;right:8px;bottom:calc(100% + 4px);z-index:10;padding:14px 16px;border-radius:12px;background:var(--raised);box-shadow:0 12px 32px #00000073;font-size:14px}.board{position:relative;display:grid;width:100%;aspect-ratio:1}.board-reconciling{opacity:.72;transition:opacity .24s ease}.dama-board{grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));background:var(--board-dark)}.square{position:relative;display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;padding:0}.square.light{background-color:var(--board-light)}.square.dark{background-color:var(--board-dark)}.square.selected,.square.chain-source,.square.opponent-last-from,.square.opponent-last-to{background-image:linear-gradient(var(--highlight),var(--highlight))}.square.capture-required{box-shadow:inset 0 0 0 3px var(--play-bright)}.square.chain-source{box-shadow:inset 0 0 0 3px var(--coin)}.square.jump-target:after,.square.jump-end:after{content:"";position:absolute;width:30%;aspect-ratio:1;border-radius:50%;background:#00000042;pointer-events:none}.square.jump-end:after{width:36%;border:3px dashed rgba(0,0,0,.32);background:transparent}.piece{position:relative;z-index:1;display:block;width:84%;aspect-ratio:1;border-radius:50%;filter:drop-shadow(0 2px 1.5px rgba(0,0,0,.45));transition:transform .12s ease,filter .12s ease}.piece:before{content:"";position:absolute;inset:14%;border-radius:50%;border:1px solid rgba(0,0,0,.12);box-shadow:inset 0 3px 4px #ffffff80,inset 0 -4px 6px #0000001f}.piece.red{background:radial-gradient(circle at 50% 50%,#f8f6f0 0 40%,transparent 41%),radial-gradient(circle at 50% 57%,rgba(128,42,34,.32) 0 44%,transparent 45%),repeating-conic-gradient(from 3deg,#d0cac1 0deg 5deg,#fff 5deg 10deg,#ede9e1 10deg 15deg)}.piece.red:before{background:radial-gradient(circle at 36% 28%,rgba(255,255,255,.95),transparent 25%),linear-gradient(145deg,#fff,#f1ece5);border-color:#aaa0965c}.piece.black{background:radial-gradient(circle at 50% 50%,#171918 0 40%,transparent 41%),radial-gradient(circle at 50% 57%,rgba(135,35,32,.24) 0 44%,transparent 45%),repeating-conic-gradient(from 3deg,#050707 0deg 5deg,#2a2f2c 5deg 10deg,#101312 10deg 15deg)}.piece.black:before{background:radial-gradient(circle at 36% 28%,rgba(255,255,255,.12),transparent 25%),linear-gradient(145deg,#20231f,#080a09);border-color:#ffffff24}body[data-red-cork-brand=coca-cola] .piece.red,body[data-black-cork-brand=coca-cola] .piece.black{background:url(./assets/caps/coca-cola.webp) center / 116% no-repeat}body[data-red-cork-brand=pepsi] .piece.red,body[data-black-cork-brand=pepsi] .piece.black{background:url(./assets/caps/pepsi.webp) center / 116% no-repeat}body[data-red-cork-brand=coca-cola] .piece.red:before,body[data-black-cork-brand=coca-cola] .piece.black:before,body[data-red-cork-brand=pepsi] .piece.red:before,body[data-black-cork-brand=pepsi] .piece.black:before{display:none}.piece.king:after{content:"";position:absolute;inset:20%;background:url(./assets/crown.svg) center / contain no-repeat;filter:drop-shadow(0 1px 1px rgba(0,0,0,.55))}.square.selected .piece,.square.chain-source .piece{z-index:2;transform:scale(1.08);filter:drop-shadow(0 6px 5px rgba(0,0,0,.5))}.captured-piece.red{background:radial-gradient(circle,#fff 0 46%,#d0cac1 47%)}.captured-piece.black{background:radial-gradient(circle,#171918 0 46%,#3a3f3c 47%)}body[data-red-cork-brand=coca-cola] .captured-piece.red,body[data-black-cork-brand=coca-cola] .captured-piece.black{background:url(./assets/caps/coca-cola.webp) center / 116% no-repeat}body[data-red-cork-brand=pepsi] .captured-piece.red,body[data-black-cork-brand=pepsi] .captured-piece.black{background:url(./assets/caps/pepsi.webp) center / 116% no-repeat}.chess-board{grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));background:#ebecd0}.chess-square{position:relative;display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;padding:0}.chess-square.light{background-color:#ebecd0}.chess-square.dark{background-color:#739552}.chess-square.selected,.chess-square.opponent-last-from,.chess-square.opponent-last-to{background-image:linear-gradient(#ffff336b,#ffff336b)}.chess-square.premove-from,.chess-square.premove-to{background-image:linear-gradient(#5692eb80,#5692eb80)}.chess-square.in-check{background-image:radial-gradient(circle,#ff3b3b 0,#e70000bf 35%,#a9000000 75%)}.chess-square.target:after,.chess-square.premove-target:after{content:"";position:absolute;z-index:2;width:32%;aspect-ratio:1;border-radius:50%;background:#00000029;pointer-events:none}.chess-square.premove-target:after{background:#5692eb99}.chess-square.target:has(.chess-piece):after{width:94%;border:6px solid rgba(0,0,0,.16);background:transparent}.chess-piece{position:absolute;inset:0;z-index:1;font-size:0;background:center / contain no-repeat}.chess-piece.black.type-rook{background-image:url(./assets/chess/black-rook.webp)}.chess-piece.black.type-knight{background-image:url(./assets/chess/black-knight.webp)}.chess-piece.black.type-bishop{background-image:url(./assets/chess/black-bishop.webp)}.chess-piece.black.type-queen{background-image:url(./assets/chess/black-queen.webp)}.chess-piece.black.type-king{background-image:url(./assets/chess/black-king.webp)}.chess-piece.black.type-pawn{background-image:url(./assets/chess/black-pawn.webp)}.chess-piece.white.type-rook{background-image:url(./assets/chess/white-rook.webp)}.chess-piece.white.type-knight{background-image:url(./assets/chess/white-knight.webp)}.chess-piece.white.type-bishop{background-image:url(./assets/chess/white-bishop.webp)}.chess-piece.white.type-queen{background-image:url(./assets/chess/white-queen.webp)}.chess-piece.white.type-king{background-image:url(./assets/chess/white-king.webp)}.chess-piece.white.type-pawn{background-image:url(./assets/chess/white-pawn.webp)}.chess-promotion-chooser{position:absolute;top:50%;left:50%;z-index:30;width:min(92%,360px);padding:14px;border-radius:12px;background:var(--surface);box-shadow:0 18px 50px #0009;transform:translate(-50%,-50%);text-align:center}.chess-promotion-chooser strong{display:block;margin-bottom:10px;font-size:16px;font-weight:600}.chess-promotion-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.chess-promotion-option{position:relative;aspect-ratio:1;border-radius:8px;background:#ebecd0}.chess-promotion-option:hover,.chess-promotion-option:focus-visible{background:#f7f7a8}.xo-board{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:6px;padding:6px;background:var(--nav)}.xo-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;border-radius:6px;color:var(--text);background:var(--surface);font-size:clamp(56px,20vw,150px);font-weight:700;line-height:1}.xo-cell.mark-o{color:var(--play-bright)}.xo-cell.win{background:#45502f}.xo-cell.final-move{box-shadow:inset 0 0 0 4px var(--coin)}@media(hover:hover){.xo-cell:not(.mark-x):not(.mark-o):hover{background:var(--raised)}}.xo-winning-line{position:absolute;z-index:4;left:11%;width:78%;height:10px;border-radius:999px;background:var(--coin);pointer-events:none}.xo-winning-line.row-1{top:16.666%;transform:translateY(-50%)}.xo-winning-line.row-2{top:50%;transform:translateY(-50%)}.xo-winning-line.row-3{top:83.333%;transform:translateY(-50%)}.xo-winning-line.col-1,.xo-winning-line.col-2,.xo-winning-line.col-3{top:11%;width:10px;height:78%;transform:translate(-50%)}.xo-winning-line.col-1{left:16.666%}.xo-winning-line.col-2{left:50%}.xo-winning-line.col-3{left:83.333%}.xo-winning-line.diagonal-down,.xo-winning-line.diagonal-up{top:50%;left:-4%;width:108%}.xo-winning-line.diagonal-down{transform:translateY(-50%) rotate(45deg)}.xo-winning-line.diagonal-up{transform:translateY(-50%) rotate(-45deg)}.ludo-frame{width:100%;height:100%;padding:2%;background:#fbf5e4}.ludo-board{position:relative;display:grid;grid-template-columns:repeat(15,minmax(0,1fr));grid-template-rows:repeat(15,minmax(0,1fr));width:100%;aspect-ratio:1;overflow:hidden;border:2px solid #222;background:#fff}.ludo-cell{position:relative;z-index:2;min-width:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1px;color:#7c7c7c;font-size:clamp(8px,2vw,16px);line-height:1}.ludo-cell.track,.ludo-cell.lane{background:#fff;box-shadow:inset 0 0 0 .5px #2b2b2b}.ludo-cell.arrow{color:#444;font-weight:700}.ludo-cell.lane-green,.ludo-cell.start-green{background:#43a047}.ludo-cell.lane-yellow,.ludo-cell.start-yellow{background:#fdd835}.ludo-cell.lane-red,.ludo-cell.start-red{background:#e53935}.ludo-cell.lane-blue,.ludo-cell.start-blue{background:#1e88e5}.ludo-cell.lane:before,.ludo-cell.start:before{content:"";position:absolute;inset:16%;border-radius:50%;background:#fff;box-shadow:0 0 0 1px #2b2b2b}.ludo-cell.start:after{content:"START";position:absolute;color:#333;font-size:clamp(3px,.9vw,7px);font-weight:700;letter-spacing:-.02em}.ludo-cell.lane .ludo-token,.ludo-cell.start .ludo-token{z-index:3}.ludo-cell.ludo-center{background:transparent}.ludo-yard{position:absolute;z-index:1;width:40%;height:40%;pointer-events:none;box-shadow:inset 0 0 0 .5px #2b2b2b}.ludo-yard.green{top:0;left:0;background:#43a047}.ludo-yard.yellow{top:0;right:0;background:#fdd835}.ludo-yard.blue{bottom:0;left:0;background:#1e88e5}.ludo-yard.red{bottom:0;right:0;background:#e53935}.ludo-yard:after{content:"";position:absolute;inset:9%;border-radius:50%;background:#fff;box-shadow:0 0 0 1.5px #2b2b2b}.ludo-yard span{position:absolute;z-index:1;width:21%;height:21%;border-radius:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2px 3px #00000040}.ludo-yard.green span{background:#43a047}.ludo-yard.yellow span{background:#fdd835}.ludo-yard.blue span{background:#1e88e5}.ludo-yard.red span{background:#e53935}.ludo-board:after{content:"";position:absolute;top:40%;left:40%;width:20%;height:20%;background:conic-gradient(from -45deg,#fdd835 0 90deg,#e53935 90deg 180deg,#1e88e5 180deg 270deg,#43a047 270deg);box-shadow:inset 0 0 0 .5px #2b2b2b}.ludo-token{--c: #d32f2f;--hi: #ff9e96;--lo: #7a0b0b;--rim: #5c0606;position:relative;z-index:3;width:80%;aspect-ratio:.8;padding:0;min-width:0;min-height:0;border:0;background:transparent;container-type:inline-size;transition:transform .16s ease;filter:drop-shadow(0 0 .7px rgba(255,255,255,.95)) drop-shadow(0 0 .7px rgba(255,255,255,.95))}.ludo-token.green{--c: #2e8b37;--hi: #9fe8a3;--lo: #0f4614;--rim: #0a3210}.ludo-token>span{position:absolute;left:50%;transform:translate(-50%);pointer-events:none}.ludo-token:after{content:"";position:absolute;left:50%;bottom:0;width:96%;height:20%;border-radius:50%;background:radial-gradient(ellipse,#00000080,#0000 70%);transform:translate(-50%)}.pawn-base{z-index:1;bottom:3%;width:88%;height:22%;border-radius:50%;background:radial-gradient(ellipse at 50% 28%,var(--hi) 0 12%,var(--c) 48%,var(--lo) 100%);box-shadow:inset 0 -2px 0 var(--rim),inset 0 1px 1px #ffffff8c}.pawn-body{z-index:2;bottom:12%;width:62%;height:54%;display:grid;place-items:end center;padding-bottom:9%;border-radius:50% 50% 22% 22%/78% 78% 22% 22%;background:linear-gradient(90deg,var(--lo) 0%,var(--c) 26%,var(--hi) 42%,var(--c) 58%,var(--lo) 100%);box-shadow:inset 0 -3px 3px #00000040;color:#ffffffeb;font:700 26cqw/1 var(--font);text-shadow:0 -1px 0 rgba(0,0,0,.45)}.pawn-body:before{content:"";position:absolute;left:50%;top:-4%;width:72%;height:16%;border-radius:50%;background:linear-gradient(180deg,var(--hi),var(--c) 45%,var(--lo));box-shadow:0 1px 1px #00000059;transform:translate(-50%)}.pawn-head{z-index:3;top:0;width:50%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 34% 30%,#fff 0 7%,var(--hi) 18%,var(--c) 52%,var(--lo) 100%);box-shadow:inset -2px -3px 4px #00000047,0 1px 1px #0000004d}.ludo-token:disabled{opacity:1}.ludo-token:not(:disabled){z-index:4;filter:drop-shadow(0 0 1px #fff) drop-shadow(0 0 2px #fff) drop-shadow(0 0 5px #ffcf46);animation:ludo-token-hop .9s ease-in-out infinite}.ludo-token:not(:disabled):active{transform:translateY(1px) scale(.94);animation:none}.ludo-token.in-yard{position:absolute;z-index:5;width:6.4%;transform:translate(-50%,-78%)}.ludo-token.in-yard:not(:disabled){animation-name:ludo-yard-hop}.ludo-token.in-yard:not(:disabled):active{transform:translate(-50%,-76%) scale(.94)}.ludo-cell:has(.ludo-token:nth-of-type(2)) .ludo-token{width:46%}@keyframes ludo-token-hop{0%,to{transform:translateY(0)}50%{transform:translateY(-16%)}}@keyframes ludo-yard-hop{0%,to{transform:translate(-50%,-78%)}50%{transform:translate(-50%,-94%)}}.game-view:has(#ludoBoard[data-side=red]) .player-strip.me .avatar{background:#c62828}.game-view:has(#ludoBoard[data-side=red]) .player-strip.opponent .avatar{color:#fff;background:#2e7d32}.game-view:has(#ludoBoard[data-side=green]) .player-strip.me .avatar{background:#2e7d32}.game-view:has(#ludoBoard[data-side=green]) .player-strip.opponent .avatar{color:#fff;background:#c62828}.ludo-controls{display:flex;align-items:center;gap:12px}.ludo-controls .primary{min-height:48px}.ludo-dice{display:grid;grid-template:repeat(3,1fr) / repeat(3,1fr);place-items:center;width:44px;height:44px;padding:7px;border-radius:9px;background:#fbfaf7;box-shadow:inset 0 -3px #0000001f}.ludo-dice i{width:7px;height:7px;border-radius:50%}.ludo-dice i.on{background:#1b1b1b}.ludo-dice.rolled{animation:ludo-dice-roll .52s cubic-bezier(.2,.8,.3,1.2)}@keyframes ludo-dice-roll{0%{transform:rotate(0) translateY(0)}40%{transform:rotate(200deg) translateY(-12px)}to{transform:rotate(360deg) translateY(0)}}.wallet-modal{position:fixed;inset:0;z-index:50;display:grid;align-items:end;visibility:hidden;opacity:0;background:#0009;transition:opacity .16s ease,visibility 0s linear .16s}.wallet-modal.show{visibility:visible;opacity:1;transition:opacity .16s ease}.wallet-modal-card{display:grid;gap:14px;width:100%;max-height:92dvh;overflow-y:auto;padding:8px 16px calc(20px + var(--safe-bottom));border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;background:var(--surface);transform:translateY(32px);transition:transform .2s cubic-bezier(.2,.8,.2,1)}.wallet-modal.show .wallet-modal-card{transform:none}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px}.sheet-head h3{font-size:20px}.match-stake-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.match-stake-choice{display:grid;gap:4px;min-height:72px;padding:12px 14px;border-radius:var(--radius-row);background:var(--raised);box-shadow:inset 0 -3px #00000047;text-align:left}.match-stake-choice strong{color:var(--coin);font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.match-stake-choice span{color:var(--muted);font-size:13px}.match-stake-choice:active{transform:translateY(1px)}@media(hover:hover){.match-stake-choice:hover{background:#47423c}}.account-notice-overlay,.game-switch-overlay{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:#000000a8}.account-notice-card,.game-switch-card{display:grid;gap:12px;width:min(100%,400px);padding:20px;border-radius:var(--radius-sheet);background:var(--surface)}.account-notice-icon,.game-switch-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--bg);background:var(--coin);font-size:22px;font-weight:700}.account-notice-overlay.blocked .account-notice-icon{color:#fff;background:var(--danger-fill)}.account-notice-card h2,.game-switch-card h2{font-size:20px}.account-notice-card p,.game-switch-card p{color:var(--muted);white-space:pre-wrap}.account-notice-until{color:var(--danger)}.game-switch-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.toast{position:fixed;left:50%;bottom:calc(var(--nav-height) + var(--safe-bottom) + 12px);z-index:70;display:flex;align-items:center;gap:12px;width:min(calc(100vw - 32px),440px);padding:12px 14px;border-radius:12px;color:var(--text);background:#46413b;box-shadow:0 12px 32px #00000073,inset 4px 0 0 var(--muted);opacity:0;pointer-events:none;transform:translate(-50%,12px);transition:opacity .16s ease,transform .16s ease}.toast.show{opacity:1;transform:translate(-50%)}body[data-screen=xo] .toast,body[data-screen=dama] .toast,body[data-screen=chess] .toast,body[data-screen=ludo] .toast{top:calc(var(--safe-top) + 6px);bottom:auto;transform:translate(-50%,-12px)}body[data-screen=xo] .toast.show,body[data-screen=dama] .toast.show,body[data-screen=chess] .toast.show,body[data-screen=ludo] .toast.show{transform:translate(-50%)}.toast[data-type=success]{box-shadow:0 12px 32px #00000073,inset 4px 0 0 var(--play-bright)}.toast[data-type=warning]{box-shadow:0 12px 32px #00000073,inset 4px 0 0 var(--coin)}.toast[data-type=error]{box-shadow:0 12px 32px #00000073,inset 4px 0 0 var(--danger)}.toast-icon{display:grid;place-items:center;flex:0 0 28px;height:28px;border-radius:50%;color:var(--bg);background:var(--text);font-size:15px;font-weight:700}.toast[data-type=success] .toast-icon{background:var(--play-bright)}.toast[data-type=warning] .toast-icon{background:var(--coin)}.toast[data-type=error] .toast-icon{background:var(--danger)}.toast-copy{display:grid;gap:2px;min-width:0}.toast-copy strong{font-size:14px;font-weight:600}.toast-copy small{color:#d8d2c8;font-size:13px;line-height:1.35}.status-pill,.network-mode-indicator,.network-syncing .game-view.active:after{position:fixed;bottom:calc(var(--nav-height) + var(--safe-bottom) + 76px);z-index:65;padding:4px 10px;border-radius:999px;color:var(--text);background:var(--raised);font-size:12px;font-weight:500}#moveQueueStatus{right:12px}#moveQueueStatus.failed{background:var(--danger-fill)}.connection-state{left:12px}.connection-state:first-letter,.network-mode-indicator:first-letter{text-transform:uppercase}.connection-state[data-state=connected]{display:none}.network-mode-indicator{left:50%;color:var(--muted);transform:translate(-50%)}html[data-network-mode=full] .network-mode-indicator,html:not([data-network-mode]) .network-mode-indicator{display:none}.network-syncing .game-view.active:after{content:"Syncing\2026";right:12px}body[data-screen=xo] :is(.status-pill,.network-mode-indicator),body[data-screen=dama] :is(.status-pill,.network-mode-indicator),body[data-screen=chess] :is(.status-pill,.network-mode-indicator),body[data-screen=ludo] :is(.status-pill,.network-mode-indicator),.network-syncing .game-view.active:after{top:calc(var(--safe-top) + 56px);bottom:auto}.win-celebration{position:fixed;inset:0;z-index:55;display:grid;place-items:center;padding:24px;visibility:hidden;opacity:0;pointer-events:none;background:#0000008c;transition:opacity .18s ease,visibility 0s linear .18s}.win-celebration.show{visibility:visible;opacity:1;transition:opacity .18s ease}.boom-gif{position:relative;display:grid;justify-items:center;gap:6px;width:min(100%,300px);padding:28px 20px 24px;border-radius:20px;background:var(--surface);box-shadow:0 24px 60px #00000080;text-align:center}.win-celebration.show .boom-gif{animation:result-in .42s cubic-bezier(.2,1.3,.3,1) both}.burst-ring,.confetti{display:none}.burst-core{display:grid;place-items:center;width:104px;height:104px;margin-bottom:8px;border-radius:50%;color:var(--text);background:var(--raised);font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}.win-celebration[data-result=win] .burst-core{color:transparent;font-size:0;background:url(./assets/crown.svg) center 46% / 58% no-repeat,radial-gradient(circle,#4a3b17 0 58%,var(--coin) 59% 64%,#4a3b17 65%)}.win-celebration.show[data-result=win] .burst-core{animation:crown-drop .52s cubic-bezier(.2,1.4,.3,1) .12s both}.win-celebration[data-result=lost] .burst-core{background:url(./assets/crown.svg) center 46% / 58% no-repeat,var(--raised);filter:grayscale(1);opacity:.5}.win-celebration[data-result=timeout] .burst-core{color:var(--danger)}.boom-gif strong{font-size:28px;font-weight:700}.win-celebration[data-result=win] .boom-gif strong{color:var(--coin)}.boom-gif small{color:var(--muted);font-size:14px}@keyframes result-in{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:none}}@keyframes crown-drop{0%{transform:translateY(-14px) scale(.8);opacity:0}to{transform:none;opacity:1}}.page-hero{position:relative;display:grid;gap:6px;margin-bottom:24px;padding:22px 16px 18px;overflow:hidden;border-radius:14px;background:var(--gold-surface);box-shadow:inset 0 3px 0 var(--coin)}.page-hero:after{content:"";position:absolute;top:18px;right:-10px;width:104px;height:104px;background:var(--coin);opacity:.12;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 4h10v5a5 5 0 0 1-10 0zM7 6H4v1a3 3 0 0 0 3 3M17 6h3v1a3 3 0 0 1-3 3M12 14v4M8 21h8M9 18h6' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 4h10v5a5 5 0 0 1-10 0zM7 6H4v1a3 3 0 0 0 3 3M17 6h3v1a3 3 0 0 1-3 3M12 14v4M8 21h8M9 18h6' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;pointer-events:none}.page-hero>*{position:relative;z-index:1}.page-hero h2{font-size:21px}.page-hero>h2,.page-hero>p:not(.tournament-reward-line){max-width:calc(100% - 88px)}.page-hero p,.page-hero small{color:var(--gold-muted)}.tournament-countdown{margin:6px 0 2px;font-size:34px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.1}.tournament-reward-line{font-size:15px}.tournament-reward-line strong{color:var(--coin);font-size:18px;font-weight:700}.leaderboard-list{display:grid;gap:2px;overflow:hidden;border-radius:12px}.leaderboard-row{display:grid;grid-template-columns:22px 26px minmax(0,1fr) repeat(3,auto);align-items:center;gap:10px;min-height:56px;padding:8px 12px;background:var(--surface)}.rank-movement{font-size:11px;text-align:center}.rank-up{color:var(--play-bright)}.rank-down{color:var(--danger)}.rank-same{color:var(--muted)}.leaderboard-player{display:grid;min-width:0}.leaderboard-player strong{overflow:hidden;font-size:15px;font-weight:500;white-space:nowrap;text-overflow:ellipsis}.leaderboard-player em{margin-left:4px;color:var(--play-bright);font-size:12px;font-style:normal}.leaderboard-player small{color:var(--muted);font-size:12px}.leaderboard-stat{display:grid;justify-items:end;font-variant-numeric:tabular-nums}.leaderboard-stat b{font-size:14px;font-weight:600}.leaderboard-stat span{color:var(--muted);font-size:11px}.leaderboard-separator,.leaderboard-empty{padding:14px;color:var(--muted);background:var(--surface);text-align:center}@media(max-width:420px){.leaderboard-row{grid-template-columns:18px 26px minmax(0,1fr) repeat(2,auto);gap:8px}.leaderboard-row .leaderboard-stat:last-child{display:none}}#friend .segmented{margin-bottom:16px}.friend-match-panel{display:none}.friend-match-panel.active{display:grid;gap:14px}.panel-lead{color:var(--muted)}.panel-lead strong{color:var(--text);font-weight:500;white-space:nowrap}.friend-game-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.friend-game-picker button{display:grid;justify-items:start;gap:10px;padding:12px;border-radius:var(--radius-row);background:var(--surface);text-align:left}.friend-game-picker .game-icon{width:40px;height:40px}.friend-game-picker b{font-size:15px;font-weight:600}@media(hover:hover){.friend-game-picker button:hover{background:var(--raised)}}.friend-join-form{display:grid;gap:14px}.friend-join-preview{display:grid;gap:2px;overflow:hidden;border-radius:12px}.friend-room-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--surface)}.friend-room-card div{display:grid}.friend-room-card span{color:var(--muted);font-size:13px}.friend-room-card .primary{min-height:44px;font-size:16px}.history-list{display:grid;gap:8px}.history-card{display:grid;gap:12px;padding:14px 14px 14px 16px;border-radius:12px;background:var(--surface)}.history-card.result-won{box-shadow:inset 3px 0 0 var(--play-bright)}.history-card.result-lost{box-shadow:inset 3px 0 0 var(--danger)}.history-card.result-playing,.history-card.result-waiting{box-shadow:inset 3px 0 0 var(--coin)}.history-card-head{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px}.history-game-badge{display:grid;place-items:center;width:40px;height:40px;border-radius:8px;color:var(--muted);background:var(--raised);font-size:13px;font-weight:700}.history-game-badge:is(.dama-egregna,.dama-tankegna,.dama,.chess,.ludo) span{display:none}.history-game-badge.dama-egregna,.history-game-badge.dama{background:url(./assets/caps/coca-cola.webp) center / 86% no-repeat,var(--board-dark)}.history-game-badge.dama-tankegna{background:url(./assets/crown.svg) 50% 46% / 46% no-repeat,url(./assets/caps/pepsi.webp) center / 86% no-repeat,var(--board-dark)}.history-game-badge.chess{background:#739552 url(./assets/icons/chess-knight.webp) center / 80% no-repeat}.history-game-badge.ludo{background:conic-gradient(#fdd835 0 25%,#e53935 0 50%,#1e88e5 0 75%,#43a047 0)}.history-game-badge.xo{color:var(--play-bright);background:var(--nav)}.history-title{display:grid;min-width:0}.history-title span{font-size:15px;font-weight:600}.history-title small{overflow:hidden;color:var(--muted);font-size:12px;white-space:nowrap;text-overflow:ellipsis}.history-result{padding:4px 10px;border-radius:999px;color:var(--muted);background:var(--raised);font-size:13px;font-weight:700;text-transform:capitalize}.result-won .history-result{color:var(--play-bright);background:#8cc15226}.result-lost .history-result{color:var(--danger);background:#f1948f21}.result-playing .history-result,.result-waiting .history-result{color:var(--coin);background:#f2b23324}.history-meta{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--muted);font-size:13px}.history-detail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;font-size:13px}.history-detail dt{color:var(--muted);font-size:12px}.history-detail dd{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}.history-card-foot .history-meta{display:none}.history-card-foot:not(:has(button)){display:none}.history-continue{min-height:42px;margin-left:auto;font-size:16px}.history-load-more{width:100%;margin-top:8px}.history-empty{display:grid;gap:4px;padding:32px 16px;border-radius:12px;background:var(--surface);text-align:center}.history-empty span{color:var(--muted)}.balance-card{position:relative;display:grid;gap:8px;padding:20px 16px 16px;border-radius:14px;background:var(--gold-surface);box-shadow:inset 0 3px 0 var(--coin)}.balance-card>span:not(.balance-stack){color:var(--gold-muted);font-size:14px}.balance-stack{position:absolute;top:22px;right:18px;display:grid;justify-items:center}.balance-stack .coin{width:52px;height:17px;margin-top:-8px;border-radius:50%;background:radial-gradient(ellipse at 50% 40%,#ffd36b 0 30%,var(--coin) 31% 62%,#e09a1d 63%);box-shadow:0 4px #a8670b,0 6px 6px #00000059}.balance-stack .coin:first-child{margin-top:0;transform:translate(5px)}.balance-stack .coin:nth-child(2){transform:translate(-3px)}.balance-amount{max-width:calc(100% - 64px);color:var(--coin);font-size:36px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.1}.balance-breakdown{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 8px}.balance-breakdown dt{color:var(--gold-muted);font-size:12px}.balance-breakdown dd{font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}#wallet .segmented{margin:20px 0 10px}.wallet-tab-panel{display:none}.wallet-tab-panel.active{display:block}.ledger-list{display:grid;gap:2px;overflow:hidden;border-radius:12px}.ledger-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:60px;padding:10px 12px;background:var(--surface)}.ledger-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;color:var(--muted);background:var(--raised);font-weight:700}.ledger-credit .ledger-icon{color:var(--play-bright)}.ledger-copy{display:grid;min-width:0}.ledger-copy strong{overflow:hidden;font-size:14px;font-weight:500;white-space:nowrap;text-overflow:ellipsis}.ledger-copy span{color:var(--muted);font-size:12px}.ledger-amount{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.ledger-credit .ledger-amount{color:var(--play-bright)}.ledger-empty{grid-template-columns:1fr;color:var(--muted)}.ledger-empty b{display:none}.profile-head{display:flex;align-items:center;gap:16px;margin:4px 0 18px}.profile-avatar{display:grid;place-items:center;flex:0 0 72px;height:72px;color:#fff;background:radial-gradient(circle,#5c9f2c 0 54%,#2f5e12 55% 59%,var(--play) 60%);-webkit-mask:url(./assets/cap-icon.svg) center / contain no-repeat;mask:url(./assets/cap-icon.svg) center / contain no-repeat;font-size:28px;font-weight:800;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.profile-head h2{font-size:22px}.profile-head p{color:var(--muted);font-variant-numeric:tabular-nums}.profile-record{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:10px}.profile-record div{display:grid;gap:2px;padding:14px;border-radius:12px;background:var(--surface)}.profile-record dt{color:var(--muted);font-size:13px}.profile-record dd{overflow:hidden;font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15;white-space:nowrap;text-overflow:ellipsis}.profile-record .winnings{background:var(--gold-surface)}.profile-record .winnings dd{color:var(--coin)}.stat-list{display:grid;gap:2px;overflow:hidden;border-radius:12px}.stat-list div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:0 14px;background:var(--surface)}.stat-list dt{color:var(--muted)}.stat-list dd{font-weight:500;font-variant-numeric:tabular-nums}.card-block{display:grid;gap:12px;margin-top:12px;padding:16px;border-radius:14px;background:var(--surface)}.card-block h3{font-size:17px}.card-block>p{color:var(--muted);font-size:14px}.referral-qr{display:grid;justify-items:center;gap:8px;padding-top:4px}.referral-qr img{width:168px;height:168px;padding:8px;border-radius:10px;background:#fff}.referral-qr img:not([src]){visibility:hidden}.referral-qr figcaption{color:var(--muted);font-size:13px}.support-links{display:grid;gap:8px}.support-links:not(:has(a:not(.hidden))){display:none}.support-action{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:0 14px;border-radius:var(--radius-row);color:var(--text);background:var(--raised);text-decoration:none}.support-action b{font-weight:600}.support-action span{color:var(--muted);font-size:13px}#customerLogout{margin-top:20px}html.bundle-loading body:before{content:"";position:fixed;inset:0;z-index:9998;background:linear-gradient(110deg,#262421 8%,#2f2c29 18%,#262421 33%);background-size:200% 100%;animation:bundle-skeleton 1.2s linear infinite}@keyframes bundle-skeleton{to{background-position:-200% 0}}.bundle-load-failure{position:fixed;inset:25% 16px auto;z-index:9999;display:grid;gap:12px;justify-items:center;padding:24px;border-radius:var(--radius-sheet);background:var(--surface);text-align:center}.bundle-load-failure button{min-height:48px;padding:0 20px;border-radius:var(--radius-row);color:#fff;background:var(--play);font-weight:700}html[data-network-mode=lean] *{scroll-behavior:auto!important}html[data-network-mode=minimal] button,html[data-network-mode=minimal] [role=button]{min-height:46px;min-width:46px}html[data-network-mode=minimal] .xo-cell,html[data-network-mode=minimal] .square,html[data-network-mode=minimal] .chess-square,html[data-network-mode=minimal] .ludo-token,html[data-network-mode=minimal] .chess-promotion-option{min-width:0;min-height:0}html[data-network-mode=lean] .ludo-token:not(:disabled),html[data-network-mode=minimal] .ludo-token:not(:disabled),html[data-network-mode=lean] .ludo-dice.rolled,html[data-network-mode=minimal] .ludo-dice.rolled{animation:none}@media(min-width:600px){.board,.ludo-frame{overflow:hidden;border-radius:6px}.game-stage{flex:0 0 auto;padding:0 0 8px}.game-head{width:var(--board);margin:0 auto;padding:0}.player-strip,.game-status,.game-actions{padding-left:0;padding-right:0}.wallet-modal{align-items:center;justify-items:center;padding:24px}.wallet-modal-card{width:min(100%,440px);padding-bottom:20px;border-radius:var(--radius-sheet)}}@media(min-width:900px){:root{--nav-height: 0px;--rail: 220px}.app-shell{padding-left:var(--rail)}.bottom-nav,body[data-screen] .bottom-nav{top:0;right:auto;width:var(--rail);height:100dvh;display:flex;flex-direction:column;gap:4px;padding:72px 12px 16px;border-top:0;border-right:1px solid var(--line)}.nav-item{display:flex;justify-content:flex-start;gap:12px;min-height:44px;padding:0 12px;border-radius:8px}.nav-item b{font-size:15px}.nav-item.active{background:var(--surface)}@media(hover:hover){.nav-item:hover{color:var(--text)}}.appbar{padding:0 24px}.main-panel{max-width:720px;padding:24px 24px 48px}body[data-screen=xo] .main-panel,body[data-screen=dama] .main-panel,body[data-screen=chess] .main-panel,body[data-screen=ludo] .main-panel{padding:0 24px}.game-view{--board: max(320px, min( calc(100dvh - 188px) , calc(100vw - var(--rail) - 400px), 760px))}.game-view.active{display:grid;grid-template-columns:var(--board) minmax(260px,320px);grid-template-rows:56px 48px var(--board) 48px auto;column-gap:24px;justify-content:center;align-content:start;padding-bottom:24px}.game-head{grid-column:1 / -1;grid-row:1;padding:0}.game-stage{display:contents}.game-stage>.player-strip.opponent{grid-column:1;grid-row:2}.game-stage>.board-wrap{grid-column:1;grid-row:3}.game-stage>.player-strip.me{grid-column:1;grid-row:4}.game-stage>.game-status{grid-column:2;grid-row:3;align-self:start;min-height:0;padding:16px;border-radius:12px;background:var(--surface)}.game-stage>.game-actions{grid-column:2;grid-row:4;padding:0}.game-stage>.player-strip.opponent,.game-stage>.game-actions{margin-top:0}.game-stage>.game-actions:has(.game-status){grid-row:3;flex-direction:column;align-items:stretch;align-self:start;gap:12px}.game-actions .game-status{padding:16px;border-radius:12px;background:var(--surface)}.status-pill,.network-mode-indicator{bottom:16px}.connection-state{left:calc(var(--rail) + 16px)}.toast{left:calc(50% + var(--rail) / 2);bottom:24px}body[data-screen=xo] .toast,body[data-screen=dama] .toast,body[data-screen=chess] .toast,body[data-screen=ludo] .toast{top:auto;bottom:24px;transform:translate(-50%,12px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}.ludo-token:not(:disabled),.ludo-dice.rolled{animation:none}}
