:root{--bg:#0f172a;--panel:#16233d;--panel-2:#1e2c49;--text:#e2e8f0;--muted:#8fa3bf;--accent:#38bdf8;--line:#2b3a58;--radius:14px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:radial-gradient(1200px 800px at 50% -10%, #1b2a4a 0%, var(--bg) 55%);background-color:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;min-height:100svh;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#root{min-height:100svh;padding:16px;padding-bottom:max(24px, env(safe-area-inset-bottom));flex-direction:column;align-items:center;display:flex}.app{width:100%;max-width:560px}:root{--p1c:#38bdf8;--p2c:#f59e0b;--p3c:#34d399;--p4c:#f472b6}.game-connect4{--p1c:#ef4444;--p2c:#facc15}.game-tictactoe{--p1c:#38bdf8;--p2c:#fbbf24}.game-dots{--p1c:#34d399;--p2c:#c084fc;--p3c:#38bdf8;--p4c:#fbbf24}.game-gomoku,.game-othello{--p1c:#64748b;--p2c:#e2e8f0}.game-mancala{--p1c:#f59e0b;--p2c:#38bdf8}.game-checkers{--p1c:#ef4444;--p2c:#e2e8f0}.game-battleships{--p1c:#38bdf8;--p2c:#fb7185}.game-ultimate{--p1c:#38bdf8;--p2c:#fbbf24}.game-memory{--p1c:#34d399;--p2c:#f472b6;--p3c:#38bdf8;--p4c:#fbbf24}.game-hangman{--p1c:#38bdf8;--p2c:#a78bfa}.game-yahtzee{--p1c:#f43f5e;--p2c:#22d3ee;--p3c:#a3e635;--p4c:#fbbf24}.game-pegs{--p1c:#fbbf24;--p2c:#fbbf24}.game-sudoku{--p1c:#38bdf8;--p2c:#38bdf8}.game-minesweeper{--p1c:#f59e0b;--p2c:#f59e0b}.game-2048{--p1c:#edc22e;--p2c:#edc22e}.game-pig{--p1c:#38bdf8;--p2c:#f59e0b;--p3c:#34d399;--p4c:#f472b6}.game-morris{--p1c:#38bdf8;--p2c:#fbbf24}.game-dominoes{--p1c:#38bdf8;--p2c:#f59e0b}.game-wordle{--p1c:#6aaa64;--p2c:#6aaa64}.btn{border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;border-radius:10px;padding:10px 16px;font-family:inherit;font-size:14px;font-weight:600}.btn:active{transform:scale(.97)}.btn.primary{background:var(--accent);color:#06263a;border-color:#0000}.btn.ghost{color:var(--muted);white-space:nowrap;background:0 0;border-color:#0000;padding:10px 8px}.btn.ghost:disabled{opacity:.35;cursor:default}.btn.big{width:100%;margin-top:10px;padding:15px;font-size:16px}.field{margin:16px 0}.field label{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:7px;font-size:13px;font-weight:600;display:block}input[type=text]{background:var(--panel);border:1px solid var(--line);width:100%;color:var(--text);border-radius:10px;padding:13px;font-family:inherit;font-size:16px}input[type=text]:focus{outline:2px solid var(--accent);outline-offset:-1px}.segmented{background:var(--panel);border:1px solid var(--line);border-radius:10px;gap:4px;padding:4px;display:flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;padding:11px 4px;font-family:inherit;font-size:14px;font-weight:600}.segmented button.on{background:var(--accent);color:#06263a}.setup-note{color:var(--muted);margin:12px 2px;font-size:13px}.menu-header{text-align:center;margin:24px 0 8px}.menu-header h1{letter-spacing:-.5px;background:linear-gradient(90deg,#38bdf8,#a78bfa,#f472b6);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 8px;font-size:34px}.menu-header p{color:var(--muted);margin:0;font-size:15px}.menu-section{margin-top:18px}.menu-section-title{text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:0 0 8px 4px;font-size:12px;font-weight:700}.menu-list{flex-direction:column;gap:10px;display:flex}.menu-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:left;width:100%;color:var(--text);align-items:center;gap:14px;padding:12px;font-family:inherit;transition:transform .12s,border-color .12s;display:flex}.menu-card:hover{border-color:var(--accent);transform:translateY(-2px)}.menu-card:active{transform:scale(.98)}.menu-thumb{border-radius:10px;flex:none;width:68px;height:56px}.menu-card-text{flex-direction:column;gap:3px;min-width:0;display:flex}.menu-card-title{font-size:17px;font-weight:700}.menu-card-tag{color:var(--muted);font-size:13px}.menu-card-chevron{color:var(--muted);margin-left:auto;font-size:26px}.menu-foot{text-align:center;color:var(--muted);margin-top:22px;font-size:12px}.play-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.play-header h1{text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;margin:0;font-size:18px;overflow:hidden}.header-spacer{width:64px}.header-actions{gap:2px;display:flex}.btn.ghost.icon{padding:8px 10px;font-size:17px;line-height:1}.rules-toggle{text-align:left;background:var(--panel);border:1px solid var(--line);width:100%;color:var(--muted);cursor:pointer;border-radius:10px;margin-top:4px;padding:12px 14px;font-family:inherit;font-size:14px;font-weight:600}.rules-toggle:hover{color:var(--text);border-color:var(--accent)}.rules-list{color:var(--text);flex-direction:column;gap:8px;margin:10px 0 6px;padding-left:20px;font-size:14px;line-height:1.55;display:flex}.rules-list li::marker{color:var(--accent)}.overlay{z-index:50;background:#040a16b8;justify-content:center;align-items:center;padding:20px;animation:.15s fade;display:flex;position:fixed;inset:0}.overlay-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:100%;max-width:480px;max-height:80vh;padding:20px;animation:.2s rise;overflow-y:auto}.overlay-card h2{margin:0 0 4px;font-size:19px}@keyframes fade{0%{opacity:0}to{opacity:1}}.scorebar{align-items:stretch;gap:8px;margin:8px 0;display:flex}.chip{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex:1;align-items:center;gap:8px;min-width:0;padding:9px 11px;display:flex}.chip.p1{--pc:var(--p1c,var(--accent))}.chip.p2{--pc:var(--p2c,#f472b6)}.chip.active{border-color:var(--pc);box-shadow:0 0 0 1px var(--pc), 0 0 14px -4px var(--pc)}.chip .pdot{background:var(--pc);border-radius:50%;flex:none;width:12px;height:12px}.chip.active .pdot{animation:1.2s ease-in-out infinite pulse}.chip .name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.chip .wins{margin-left:auto;font-size:20px;font-weight:800}.draws{text-align:center;color:var(--muted);align-self:center;min-width:44px;font-size:11px}.draws b{color:var(--text);font-size:16px;display:block}.turn-caption{text-align:center;color:var(--muted);min-height:20px;margin:6px 0 14px;font-size:14px}.marks-caption{text-align:center;color:var(--muted);margin:0 0 12px;font-size:13px}.result-banner{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;align-items:center;gap:10px;margin:6px 0 14px;padding:14px;animation:.25s rise;display:flex}.result-text{text-align:center;font-size:17px;font-weight:700}.result-detail{color:var(--muted);margin-top:-4px;font-size:14px}.result-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.game-area{-webkit-user-select:none;user-select:none}.handoff-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);text-align:center;flex-direction:column;align-items:center;gap:10px;padding:28px 20px;animation:.25s rise;display:flex}.handoff-card h2{margin:0;font-size:20px}.handoff-card p{color:var(--muted);margin:0}.handoff-emoji{font-size:42px}.c4-board{touch-action:manipulation;background:linear-gradient(#2563eb,#1e40af);border-radius:16px;grid-template-columns:repeat(7,1fr);width:100%;padding:8px;display:grid;box-shadow:0 10px 30px -12px #000000b3}.c4-col{cursor:pointer;background:0 0;border:0;border-radius:10px;grid-template-rows:repeat(6,1fr);gap:0;padding:2px;display:grid}.c4-col:disabled,.c4-board.cpu-turn .c4-col{cursor:default}@media (hover:hover){.c4-board:not(.cpu-turn) .c4-col:not(:disabled):hover{background:#ffffff1a}}.c4-cell{aspect-ratio:1;background:#0c1a33;border-radius:50%;margin:8%;display:block;box-shadow:inset 0 3px 7px #0009}.c4-cell.p1{background:radial-gradient(circle at 35% 30%, #f87171, var(--p1c) 55%, #b91c1c);box-shadow:inset 0 -3px 6px #00000059}.c4-cell.p2{background:radial-gradient(circle at 35% 30%, #fde047, var(--p2c) 55%, #ca8a04);box-shadow:inset 0 -3px 6px #00000059}.c4-cell.dropped{animation:.45s cubic-bezier(.5,0,.65,1.25) c4drop}.c4-cell.win{box-shadow:0 0 0 4px #ffffffd9,0 0 16px 4px #ffffff73}@keyframes c4drop{0%{transform:translateY(calc(-110% * var(--drop,1)))}to{transform:none}}.ttt-board{touch-action:manipulation;grid-template-columns:repeat(3,1fr);gap:10px;width:100%;max-width:380px;margin:0 auto;display:grid}.ttt-cell{aspect-ratio:1;background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:16px;justify-content:center;align-items:center;padding:0;display:flex}.ttt-cell:disabled,.ttt-board.cpu-turn .ttt-cell{cursor:default}@media (hover:hover){.ttt-board:not(.cpu-turn) .ttt-cell:not(:disabled):hover{background:var(--panel-2);border-color:var(--accent)}}.ttt-cell.win{background:#24406b;border-color:#4d76b8}.ttt-cell .mark{width:64%;height:64%;animation:.18s ease-out pop}.dots-svg{touch-action:manipulation;width:100%;max-width:540px;margin:0 auto;display:block}.dots-hint{stroke:var(--line);stroke-width:4px;stroke-linecap:round;stroke-dasharray:.1 14}.dots-hit{stroke:#0000;stroke-width:34px;stroke-linecap:round;cursor:pointer}.dots-svg.cpu-turn .dots-hit{cursor:default}@media (hover:hover){.dots-svg:not(.cpu-turn) .dots-hit:hover{stroke:var(--turnc,var(--accent));stroke-width:8px;opacity:.55}}.dots-taken{stroke:#cbd5e1;stroke-width:7px;stroke-linecap:round}.dots-taken.last-p1{stroke:var(--p1c)}.dots-taken.last-p2{stroke:var(--p2c)}.dots-dot{fill:#7d90b0}.dots-box.p1{--bc:var(--p1c)}.dots-box.p2{--bc:var(--p2c)}.dots-boxfill{fill:var(--bc);opacity:.3;transform-box:fill-box;transform-origin:50%;animation:.2s ease-out pop}.dots-boxletter{fill:var(--bc);text-anchor:middle;dominant-baseline:central;font-family:inherit;font-size:28px;font-weight:700}.dots-count.p1{color:var(--p1c);font-weight:700}.dots-count.p2{color:var(--p2c);font-weight:700}.gomoku-board{touch-action:manipulation;background:linear-gradient(#b45309,#92400e);border-radius:12px;width:100%;padding:6px;display:grid;box-shadow:0 10px 30px -12px #000000b3}.gomoku-cell{aspect-ratio:1;cursor:pointer;background:linear-gradient(#78350f,#78350f) 50%/100% 2px no-repeat,linear-gradient(#78350f,#78350f) 50%/2px 100% no-repeat;border:0;padding:6%}.gomoku-cell:disabled,.gomoku-board.cpu-turn .gomoku-cell{cursor:default}.gomoku-cell .stone{border-radius:50%;width:100%;height:100%;animation:.15s ease-out pop;display:block}.gomoku-cell .stone.black{background:radial-gradient(circle at 35% 30%,#475569,#0b1220 70%)}.gomoku-cell .stone.white{background:radial-gradient(circle at 35% 30%,#fff,#cbd5e1 70%)}.gomoku-cell .stone.last{box-shadow:0 0 0 2px var(--accent)}.gomoku-cell .stone.win{box-shadow:0 0 0 3px #fde047,0 0 12px 2px #fde04788}.othello-board{touch-action:manipulation;background:#14532d;border:4px solid #14532d;border-radius:12px;grid-template-columns:repeat(8,1fr);gap:2px;width:100%;display:grid;box-shadow:0 10px 30px -12px #000000b3}.oth-cell{aspect-ratio:1;cursor:default;background:#15803d;border:0;border-radius:3px;padding:9%;position:relative}.oth-cell.hint{cursor:pointer}@media (hover:hover){.oth-cell.hint:hover{background:#16a34a}}.oth-cell .disc{border-radius:50%;width:100%;height:100%;transition:background .25s;display:block}.oth-cell .disc.black{background:radial-gradient(circle at 35% 30%,#475569,#0b1220 70%)}.oth-cell .disc.white{background:radial-gradient(circle at 35% 30%,#fff,#cbd5e1 70%)}.oth-cell .disc.last{box-shadow:0 0 0 2px #fde047}.oth-cell .legal-dot{background:#ffffff59;border-radius:50%;width:22%;height:22%;margin:auto;position:absolute;inset:0}.oth-count.p1{color:#cbd5e1;font-weight:700}.oth-count.p2{color:#f8fafc;font-weight:700}.oth-notice{color:var(--accent)}.man-board{touch-action:manipulation;background:linear-gradient(#7c4a1e,#5c3410);border-radius:18px;gap:8px;width:100%;padding:12px;display:flex;box-shadow:0 10px 30px -12px #000000b3}.man-store{background:#47280c;border-radius:999px;flex:0 0 15%;justify-content:center;align-items:center;font-size:22px;font-weight:800;display:flex;box-shadow:inset 0 4px 10px #00000080}.man-store.p1{color:var(--p1c)}.man-store.p2{color:var(--p2c)}.man-pits{flex-direction:column;flex:1;gap:8px;display:flex}.man-row{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.man-pit{aspect-ratio:1;color:var(--text);cursor:default;background:#47280c;border:0;border-radius:50%;font-family:inherit;font-size:18px;font-weight:700;box-shadow:inset 0 4px 10px #00000080}.man-pit.p1{color:var(--p1c)}.man-pit.p2{color:var(--p2c)}.man-pit.clickable{cursor:pointer;box-shadow:inset 0 4px 10px #00000080, 0 0 0 2px var(--p1c)}.man-board.cpu-turn .man-pit{cursor:default}@media (hover:hover){.man-pit.clickable:hover{background:#5a3410}}.man-pit.last{outline-offset:2px;outline:2px solid #fde047}.chk-board{touch-action:manipulation;border:6px solid #3f2410;border-radius:10px;grid-template-columns:repeat(8,1fr);width:100%;display:grid;overflow:hidden;box-shadow:0 10px 30px -12px #000000b3}.chk-cell{aspect-ratio:1;cursor:default;background:#c8a06a;border:0;padding:8%;position:relative}.chk-cell.dark{cursor:pointer;background:#5c3a1e}.chk-cell.dark.target{background:#3e5c2a}.chk-cell.lastsq{box-shadow:inset 0 0 0 3px #fde04766}.chk-board.cpu-turn .chk-cell{cursor:default}.chk-piece{border-radius:50%;justify-content:center;align-items:center;width:100%;height:100%;font-size:clamp(12px,4vw,22px);line-height:1;display:flex}.chk-piece.p1{color:#7f1d1d;background:radial-gradient(circle at 35% 30%,#f87171,#dc2626 60%,#7f1d1d)}.chk-piece.p2{color:#475569;background:radial-gradient(circle at 35% 30%,#fff,#e2e8f0 60%,#94a3b8)}.chk-piece.sel{box-shadow:0 0 0 3px var(--accent), 0 0 12px 2px var(--accent)}.chk-piece.can{box-shadow:0 0 0 2px #fff6}.chk-dot{background:#a3e635b3;border-radius:50%;width:30%;height:30%;margin:auto;position:absolute;inset:0}.bs-grid{touch-action:manipulation;background:#082f49;border:3px solid #082f49;border-radius:10px;grid-template-columns:repeat(10,1fr);gap:2px;width:100%;display:grid}.bs-cell{aspect-ratio:1;cursor:default;background:#0c4a6e;border:0;border-radius:3px;padding:0;display:block}.bs-target .bs-cell.fog{cursor:pointer}@media (hover:hover){.bs-target .bs-cell.fog:not(:disabled):hover{background:#0e7490}}.bs-cell.sea{background:#0c4a6e}.bs-cell.ship{background:#64748b}.bs-cell.miss{background:#0c4a6e radial-gradient(circle,#7dd3fc 18%,#0000 20%)}.bs-cell.hit{background:#b45309 radial-gradient(circle,#fbbf24 30%,#0000 34%)}.bs-cell.sunk{background:#991b1b}.bs-controls{justify-content:center;gap:10px;margin-top:12px;display:flex}.bs-own{flex-direction:column;align-items:center;gap:4px;margin-top:12px;display:flex}.bs-own-label{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-size:12px}.bs-mini{max-width:200px}.ult-board{touch-action:manipulation;grid-template-columns:repeat(3,1fr);gap:6px;width:100%;display:grid}.ult-mini{background:var(--panel);border:2px solid var(--line);border-radius:10px;grid-template-columns:repeat(3,1fr);gap:2px;min-height:0;padding:4px;transition:border-color .15s,box-shadow .15s;display:grid;position:relative}.ult-mini.active{border-color:var(--accent);box-shadow:0 0 10px -2px var(--accent)}.ult-mini.won-p1,.ult-mini.won-p2{aspect-ratio:1;justify-content:center;align-items:center;display:flex}.ult-mini.won-p1{background:#143a5e}.ult-mini.won-p2{background:#4a3a12}.ult-mini.dead{opacity:.55}.ult-mini.line{box-shadow:0 0 0 3px #fde047,0 0 14px 2px #fde04766}.ult-bigmark{font-size:clamp(30px,12vw,64px);font-weight:800}.ult-mini.won-p1 .ult-bigmark{color:var(--p1c)}.ult-mini.won-p2 .ult-bigmark{color:var(--p2c)}.ult-cell{aspect-ratio:1;background:var(--panel-2);color:var(--text);cursor:pointer;border:0;border-radius:5px;padding:0;font-family:inherit;font-size:clamp(11px,3.6vw,20px);font-weight:800;line-height:1}.ult-cell:disabled,.ult-board.cpu-turn .ult-cell{cursor:default}.ult-cell.x{color:var(--p1c)}.ult-cell.o{color:var(--p2c)}.ult-cell.last{box-shadow:inset 0 0 0 2px #fde047}@media (hover:hover){.ult-board:not(.cpu-turn) .ult-mini.active .ult-cell:not(:disabled):hover{background:#2a3f66}}.mem-board{touch-action:manipulation;perspective:800px;gap:8px;width:100%;display:grid}.mem-card{aspect-ratio:1;cursor:pointer;background:0 0;border:0;padding:0;position:relative}.mem-card:disabled,.mem-board.cpu-turn .mem-card{cursor:default}.mem-inner{transform-style:preserve-3d;transition:transform .35s;position:absolute;inset:0}.mem-card.up .mem-inner{transform:rotateY(180deg)}.mem-back,.mem-face{backface-visibility:hidden;border-radius:12px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.mem-back{background:var(--panel);border:1px solid var(--line);color:var(--muted);font-size:20px;font-weight:800}.mem-face{background:var(--panel-2);border:1px solid var(--line);font-size:clamp(20px,8vw,40px);transform:rotateY(180deg)}.mem-board.size6 .mem-face{font-size:clamp(16px,5vw,30px)}.mem-card.matched .mem-face{border-color:var(--mc);box-shadow:0 0 8px -2px var(--mc);opacity:.85}.mem-card.matched.p1{--mc:var(--p1c)}.mem-card.matched.p2{--mc:var(--p2c)}@media (hover:hover){.mem-board:not(.cpu-turn) .mem-card:not(:disabled):hover .mem-back{border-color:var(--accent)}}.hang-svg{width:min(52vw,200px);margin:0 auto 8px;display:block}.hang-frame{stroke:#8fa3bf;stroke-width:6px;stroke-linecap:round;fill:none}.hang-part{stroke:var(--p2c);stroke-width:5px;stroke-linecap:round;fill:none;animation:.2s ease-out pop}.hang-word{flex-wrap:wrap;justify-content:center;gap:6px;margin:10px 0 16px;display:flex}.hang-slot{border-bottom:3px solid var(--muted);justify-content:center;align-items:center;width:26px;height:34px;font-size:22px;font-weight:800;display:flex}.hang-slot.shown{border-color:var(--p1c);color:var(--p1c)}.hang-keys{flex-direction:column;gap:6px;display:flex}.hang-key-row{justify-content:center;gap:6px;display:flex}.hang-key{border:1px solid var(--line);background:var(--panel);min-width:34px;color:var(--text);cursor:pointer;border-radius:8px;flex:0 44px;padding:10px 0;font-family:inherit;font-size:15px;font-weight:700}.hang-key:disabled{cursor:default}.hang-key.good{color:#86efac;background:#14532d;border-color:#22c55e}.hang-key.bad{color:#7f8698;opacity:.7;background:#450a0a;border-color:#7f1d1d}.hang-word-input{background:var(--panel-2);border:1px solid var(--line);width:100%;color:var(--text);text-align:center;letter-spacing:2px;border-radius:10px;margin-bottom:8px;padding:13px;font-family:inherit;font-size:18px}.hang-error{color:#f87171;margin:4px 0;font-size:13px}.yz-dice-row{justify-content:center;gap:8px;margin-bottom:10px;display:flex}.yz-die{border:2px solid var(--line);background:var(--panel);color:#f8fafc;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;width:clamp(48px,14vw,64px);height:clamp(48px,14vw,64px);padding:0;font-family:inherit;font-size:clamp(40px,12vw,56px);line-height:1;display:flex}.yz-die.blank{color:var(--muted);font-size:24px}.yz-die.held{border-color:var(--accent);box-shadow:0 0 10px -2px var(--accent);background:#143a5e;transform:translateY(4px)}.yz-die:disabled{cursor:default}.yz-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-bottom:12px;display:flex}.yz-hint{color:var(--muted);font-size:13px}.yz-sheet{border-collapse:collapse;width:100%;font-size:14px}.yz-sheet th{text-align:center;color:var(--muted);border-bottom:2px solid var(--line);text-overflow:ellipsis;white-space:nowrap;max-width:90px;padding:6px 4px;font-size:13px;overflow:hidden}.yz-sheet th.on{color:var(--text);background:#38bdf814}.yz-sheet td{border-bottom:1px solid var(--line);text-align:center;padding:4px 6px}.yz-cat{color:var(--muted);font-weight:600;text-align:left!important}.yz-cell.empty{color:#4b5c7a}.yz-pick{border:1px dashed var(--accent);width:100%;color:var(--accent);cursor:pointer;background:#38bdf81a;border-radius:6px;padding:5px 0;font-family:inherit;font-size:14px;font-weight:700}.yz-total td{background:#ffffff08;font-weight:700}.yz-total.grand td{border-bottom:0;font-size:16px}.pegs-svg{touch-action:manipulation;width:100%;max-width:440px;margin:0 auto;display:block}.pegs-wood{fill:#5c3a1e;stroke:#3f2410;stroke-width:5px;stroke-linejoin:round}.pegs-hole-g{cursor:pointer}.pegs-hole{fill:#2a1708}.pegs-peg{fill:#fbbf24;stroke:#b45309;stroke-width:2px;transition:transform .1s}.pegs-peg.movable{stroke:#fde047;stroke-width:3px}.pegs-peg.sel{stroke:var(--accent);stroke-width:4px;filter:drop-shadow(0 0 6px var(--accent))}.pegs-target,.hang-part{transform-box:fill-box;transform-origin:50%}.pegs-target{fill:#a3e6358c;animation:1.2s ease-in-out infinite pulse}.pegs-controls{justify-content:center;margin-top:12px;display:flex}.su-board{touch-action:manipulation;background:#0b1220;border-radius:14px;grid-template-columns:repeat(3,1fr);gap:6px;width:100%;padding:7px;display:grid;box-shadow:0 10px 30px -12px #000000b3}.su-box{grid-template-columns:repeat(3,1fr);gap:3px;min-width:0;min-height:0;display:grid}.su-cell{aspect-ratio:1;aspect-ratio:1;cursor:pointer;border:0;border-radius:7px;min-width:0;padding:0;font-family:inherit;font-size:clamp(15px,4.6vw,24px);font-weight:700;line-height:1;position:relative}.su-cell.user{color:var(--accent);background:linear-gradient(#26375a,#1d2b47);box-shadow:0 2px #0b1220,inset 0 1px #ffffff14}.su-cell.given{color:#cbd5e1;background:linear-gradient(#1a2740,#16223a);box-shadow:inset 0 2px 5px #00000073}.su-cell.peer{filter:brightness(1.18)}.su-cell.same{box-shadow:0 2px #0b1220,inset 0 0 0 2px #38bdf88c}.su-cell.sel{box-shadow:0 0 0 2px var(--accent), 0 0 12px -2px var(--accent);z-index:1;transform:translateY(-1px)}.su-cell.bad{color:#f87171;box-shadow:inset 0 0 0 2px #f8717199}.su-notes{color:var(--muted);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);font-size:clamp(7px,2vw,10px);font-weight:600;display:grid;position:absolute;inset:2px}.su-notes span{justify-content:center;align-items:center;display:flex}.su-pad{grid-template-columns:repeat(9,1fr);gap:5px;margin-top:12px;display:grid}.su-num{color:var(--text);cursor:pointer;background:linear-gradient(#2c3e63,#22314f);border:0;border-radius:9px;flex-direction:column;align-items:center;gap:1px;padding:8px 0 5px;font-family:inherit;font-size:clamp(16px,4.6vw,22px);font-weight:800;line-height:1;display:flex;box-shadow:0 2px #0b1220,inset 0 1px #ffffff14}.su-num:active{transform:translateY(1px);box-shadow:0 1px #0b1220}.su-num.done{opacity:.35}.su-num .cnt{color:var(--muted);font-size:10px;font-weight:600}.su-tools{gap:8px;margin-top:8px;display:flex}.su-tool{border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;border-radius:9px;flex:1;padding:11px 0;font-family:inherit;font-size:14px;font-weight:600}.su-tool.on{border-color:var(--accent);box-shadow:0 0 10px -3px var(--accent);background:#143a5e}.menu-topbar{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.chip.p3{--pc:var(--p3c,#34d399)}.chip.p4{--pc:var(--p4c,#f472b6)}.scorebar.multi{flex-wrap:wrap}.scorebar.multi .chip{flex:40%;padding:7px 10px}.scorebar.multi .chip .wins{font-size:17px}.scorebar.multi .draws{flex:none}.stats-table{border-collapse:collapse;width:100%;margin-top:10px;font-size:14px}.stats-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;border-bottom:2px solid var(--line);text-align:center;padding:6px 4px;font-size:12px}.stats-table td{text-align:center;border-bottom:1px solid var(--line);padding:9px 4px}.stats-table th.who,.stats-table td.who{text-align:left;font-weight:700}.stats-table th.rank,.stats-table td.rank{width:34px}.stats-table td.w{color:#86efac;font-weight:700}.stats-records{margin-top:22px}.stats-record-list{flex-direction:column;gap:6px;display:flex}.stats-record{background:var(--panel);border:1px solid var(--line);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;display:flex}.stats-record-game{font-weight:600}.stats-record-val{color:var(--accent);margin-left:auto;font-weight:800}.stats-record-holder{color:var(--muted);text-align:right;min-width:64px;font-size:13px}.stats-empty{text-align:center;color:var(--muted);margin-top:50px}.stats-empty-emoji{font-size:48px}.stats-empty-sub{max-width:320px;margin:8px auto 0;font-size:13px}.stats-foot{color:var(--muted);justify-content:center;align-items:center;gap:10px;margin-top:26px;font-size:14px;display:flex}.yz-sheet.cols3 th,.yz-sheet.cols3 td,.yz-sheet.cols4 th,.yz-sheet.cols4 td{padding-left:2px;padding-right:2px}.yz-sheet.cols3{font-size:13px}.yz-sheet.cols4{font-size:12px}.yz-sheet.cols4 .yz-cat{font-size:11px}.ms-bar{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.ms-stat{font-variant-numeric:tabular-nums;min-width:60px;font-weight:700}.ms-flagtoggle{border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;border-radius:9px;padding:9px 14px;font-family:inherit;font-size:14px;font-weight:600}.ms-flagtoggle.on{color:#fecaca;background:#45150f;border-color:#f87171}.ms-board{grid-template-columns:repeat(var(--cols), 1fr);touch-action:manipulation;background:#0b1220;border-radius:12px;gap:3px;width:100%;padding:6px;display:grid;box-shadow:0 10px 30px -12px #000000b3}.ms-cell{aspect-ratio:1;cursor:pointer;border:0;border-radius:5px;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:clamp(13px,4vw,20px);font-weight:800;line-height:1;display:flex}.ms-cell.hidden{background:linear-gradient(#3d4d70,#33415c);box-shadow:inset 0 1px #ffffff1f,0 2px #0b1220}@media (hover:hover){.ms-cell.hidden:not(:disabled):hover{background:linear-gradient(#47597f,#3a4a68)}}.ms-cell.revealed{cursor:default;background:#16223a;box-shadow:inset 0 2px 5px #0006}.ms-cell.mine{background:#7f1d1d}.ms-cell.boom{background:#dc2626}.ms-cell[data-n="1"]{color:#60a5fa}.ms-cell[data-n="2"]{color:#4ade80}.ms-cell[data-n="3"]{color:#f87171}.ms-cell[data-n="4"]{color:#818cf8}.ms-cell[data-n="5"]{color:#fbbf24}.ms-cell[data-n="6"]{color:#22d3ee}.ms-cell[data-n="7"]{color:#e2e8f0}.ms-cell[data-n="8"]{color:#94a3b8}.ms-hint{margin-top:12px}.g2048-bar{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.g2048-score{background:var(--panel);border:1px solid var(--line);font-variant-numeric:tabular-nums;border-radius:10px;flex-direction:column;padding:6px 16px;font-size:20px;font-weight:800;display:flex}.g2048-score b{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-size:11px}.g2048-hint{color:var(--muted);font-size:13px}.g2048-board{touch-action:none;background:#bbada0;border-radius:12px;grid-template-columns:repeat(4,1fr);gap:10px;width:100%;max-width:420px;margin:0 auto;padding:10px;display:grid;box-shadow:0 10px 30px -12px #000000b3}.g2048-cell{aspect-ratio:1;background:#eee4da33;border-radius:8px;position:relative}.g2048-tile{color:#776e65;border-radius:8px;justify-content:center;align-items:center;font-size:clamp(20px,7vw,34px);font-weight:800;animation:.14s ease-out pop;display:flex;position:absolute;inset:0}.g2048-tile.v2{background:#eee4da}.g2048-tile.v4{background:#ede0c8}.g2048-tile.v8{color:#fff;background:#f2b179}.g2048-tile.v16{color:#fff;background:#f59563}.g2048-tile.v32{color:#fff;background:#f67c5f}.g2048-tile.v64{color:#fff;background:#f65e3b}.g2048-tile.v128{color:#fff;background:#edcf72;font-size:clamp(17px,6vw,28px)}.g2048-tile.v256{color:#fff;background:#edcc61;font-size:clamp(17px,6vw,28px)}.g2048-tile.v512{color:#fff;background:#edc850;font-size:clamp(17px,6vw,28px)}.g2048-tile.v1024{color:#fff;background:#edc53f;font-size:clamp(14px,5vw,24px)}.g2048-tile.v2048{color:#fff;background:#edc22e;font-size:clamp(14px,5vw,24px);box-shadow:0 0 18px -2px #edc22e}.g2048-tile.vbig{color:#fff;background:#3c3a32;font-size:clamp(14px,5vw,24px)}.g2048-dpad{flex-direction:column;align-items:center;gap:8px;margin-top:16px;display:flex}.g2048-dpad-mid{gap:8px;display:flex}.g2048-arrow{border:1px solid var(--line);background:var(--panel);width:58px;height:46px;color:var(--text);cursor:pointer;border-radius:10px;font-size:18px}.g2048-arrow:active{background:var(--panel-2)}.pig-scores{grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:16px;display:grid}.pig-scores.n3{grid-template-columns:repeat(3,1fr)}.pig-scores.n4{grid-template-columns:repeat(2,1fr)}.pig-player{background:var(--panel);border:2px solid var(--line);border-radius:12px;flex-direction:column;align-items:center;padding:10px 6px;display:flex}.pig-player.p1{--pc:var(--p1c)}.pig-player.p2{--pc:var(--p2c)}.pig-player.p3{--pc:var(--p3c)}.pig-player.p4{--pc:var(--p4c)}.pig-player.active{border-color:var(--pc);box-shadow:0 0 14px -3px var(--pc)}.pig-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;font-weight:600;overflow:hidden}.pig-score{color:var(--pc);font-size:30px;font-weight:800;line-height:1.1}.pig-target{color:var(--muted);font-size:11px}.pig-stage{flex-direction:column;align-items:center;gap:6px;margin:8px 0 18px;display:flex}.pig-die{font-size:clamp(72px,26vw,120px);line-height:1}.pig-die.bust{animation:.4s shake}.pig-turntotal{color:var(--muted);font-size:15px}.pig-turntotal b{color:var(--text);font-size:20px}.pig-bust-msg{color:#f87171;font-weight:700}.pig-actions{justify-content:center;gap:10px;display:flex}.pig-actions .btn{min-width:130px}.morris-svg{touch-action:manipulation;background:linear-gradient(#7c5a2e,#5c3a1e);border-radius:14px;width:100%;max-width:360px;margin:0 auto;display:block;box-shadow:0 10px 30px -12px #000000b3}.morris-lines rect{fill:none;stroke:#e7c893;stroke-width:2.5px}.morris-lines line{stroke:#e7c893;stroke-width:2.5px}.morris-point{cursor:pointer}.morris-svg.cpu-turn .morris-point{cursor:default}.morris-hit{fill:#0000}.morris-spot{fill:#e7c8938c}.morris-spot.target{fill:#a3e635d9;animation:1.2s ease-in-out infinite pulse}.morris-piece{stroke:#00000059;stroke-width:1.5px;transition:r .1s}.morris-piece.p1{fill:var(--p1c)}.morris-piece.p2{fill:var(--p2c)}.morris-piece.sel{stroke:#fff;stroke-width:3px;filter:drop-shadow(0 0 5px #ffffffb3)}.morris-piece.removable{stroke:#ef4444;stroke-width:3px;animation:1s ease-in-out infinite pulse}.morris-piece.last{stroke:#fde047;stroke-width:2.5px}.morris-hand{margin-top:12px;margin-bottom:0}.dm-board{background:#0d3b1e;border:2px solid #0a2f18;border-radius:12px;align-items:center;gap:4px;min-height:74px;padding:10px;display:flex;overflow-x:auto}.dm-empty{color:#cbe6cf;opacity:.7;margin:auto;font-size:14px}.dm-tile{background:#f8fafc;border-radius:6px;flex:none;align-items:center;gap:2px;padding:4px;display:inline-flex;box-shadow:0 2px 4px #0006}.dm-half{grid-template-rows:repeat(3,6px);grid-template-columns:repeat(3,6px);gap:1px;padding:2px;display:inline-grid}.dm-pip{background:0 0;border-radius:50%;width:6px;height:6px}.dm-pip.on{background:#0f172a}.dm-divide{background:#94a3b8;border-radius:1px;align-self:stretch;width:2px}.dm-meta{color:var(--muted);justify-content:space-between;margin:10px 2px 4px;font-size:13px;display:flex}.dm-hand-label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:8px 2px 6px;font-size:12px}.dm-hand{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.dm-handtile{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:8px;padding:2px}.dm-handtile:disabled{opacity:.5;cursor:default}.dm-handtile.playable{border-color:var(--accent)}.dm-handtile.sel{border-color:#fde047;box-shadow:0 0 10px -2px #fde047}.dm-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-top:14px;display:flex}.dm-choose{color:var(--muted);font-size:14px}.bs-palette{flex-wrap:wrap;justify-content:center;gap:6px;margin-bottom:10px;display:flex}.bs-ship-btn{border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;border-radius:9px;flex-direction:column;align-items:center;gap:2px;padding:7px 10px;font-family:inherit;font-size:12px;font-weight:600;display:flex}.bs-ship-btn .bs-ship-len{color:#94a3b8;letter-spacing:1px}.bs-ship-btn.active{border-color:var(--accent);box-shadow:0 0 10px -3px var(--accent)}.bs-ship-btn.placed{opacity:.4;cursor:default;text-decoration:line-through}.bs-grid.bs-place .bs-cell{cursor:pointer}.bs-grid.bs-place .bs-cell.ship{background:#64748b}.wd-grid{grid-template-rows:repeat(6,1fr);gap:6px;width:100%;max-width:320px;margin:0 auto 4px;display:grid}.wd-row{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.wd-row.shake{animation:.4s shake}.wd-tile{aspect-ratio:1;border:2px solid var(--line);color:var(--text);text-transform:uppercase;border-radius:6px;justify-content:center;align-items:center;font-size:clamp(20px,7vw,30px);font-weight:800;display:flex}.wd-tile.filled{border-color:#64748b;animation:.12s ease-out pop}.wd-tile.correct{color:#fff;background:#6aaa64;border-color:#6aaa64}.wd-tile.present{color:#fff;background:#c9b458;border-color:#c9b458}.wd-tile.absent{color:#fff;background:#3a3a3c;border-color:#3a3a3c}.wd-keys{flex-direction:column;gap:6px;margin-top:16px;display:flex}.wd-key-row{justify-content:center;gap:5px;display:flex}.wd-key{color:#fff;cursor:pointer;background:#64748b;border:0;border-radius:7px;flex:auto;min-width:24px;max-width:44px;padding:14px 0;font-family:inherit;font-size:14px;font-weight:700}.wd-key.wide{flex:1.5 auto;max-width:64px;font-size:12px}.wd-key.correct{background:#6aaa64}.wd-key.present{background:#c9b458}.wd-key.absent{color:#7b7f82;background:#2b2f31}.chk-cell.lastsq .chk-piece{animation:.3s chkhop}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@keyframes chkhop{0%{transform:scale(.7)}55%{transform:scale(1.15)translateY(-2px)}to{transform:scale(1)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}@keyframes pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width>=700px){#root{justify-content:flex-start;padding-top:32px}.menu-header h1{font-size:42px}.app.menu{max-width:640px}}
