.browser-game-layout{display:grid;grid-template-columns:minmax(0,1fr) 286px;gap:30px;max-width:1080px;margin:auto;align-items:start}
.browser-game-stage{position:relative;min-width:0;display:flex;flex-direction:column;align-items:center;gap:18px}
.browser-game-surface{width:100%;max-width:560px;outline:none;user-select:none;touch-action:manipulation}
.browser-game-surface:focus-visible{outline:3px solid var(--site-accent);outline-offset:5px;border-radius:14px}
.browser-game-grid{display:grid;gap:8px;background:var(--site-border);padding:10px;border-radius:16px;width:100%;aspect-ratio:1;position:relative}
.browser-game-grid button{min-width:0;border-radius:9px;background:var(--site-surface);color:var(--site-text);font-weight:700;display:flex;align-items:center;justify-content:center;position:relative;font-size:clamp(16px,3vw,28px);transition:background .15s,transform .15s;touch-action:manipulation;aspect-ratio:1}
.browser-game-grid button:focus-visible{outline:3px solid var(--site-accent);outline-offset:-3px;z-index:2}
.browser-game-grid button.is-selected{box-shadow:inset 0 0 0 3px #2563eb;background:color-mix(in srgb,var(--site-accent) 15%,var(--site-surface))}
.browser-game-grid button.is-hint{box-shadow:inset 0 0 0 3px #f59e0b}
.browser-game-grid button.is-empty{background:color-mix(in srgb,var(--site-surface) 50%,var(--site-border));color:transparent}
.browser-game-grid button.is-matched{opacity:.24}
.game-detail{font-size:14px;color:var(--site-muted);line-height:1.6;min-height:1.6em}
.game-compact-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.browser-game-sidebar .game-status{min-height:1.65em}
.game-clear{font-size:13px;color:var(--site-muted);text-align:left;text-decoration:underline;text-underline-offset:3px;width:fit-content}
.browser-game-pad{display:grid;grid-template-columns:repeat(4,52px) 72px;gap:10px;justify-content:center;width:100%}
.browser-game-pad button{height:50px;border:1px solid var(--site-border);border-radius:12px;font-size:25px;background:var(--site-surface);color:var(--site-text);touch-action:none;user-select:none}
.browser-game-pad button.is-held,.browser-game-pad button:active{color:white;background:var(--site-accent)}
.browser-game-pad[data-kind="breakout"]{grid-template-columns:repeat(2,52px) 72px}
.browser-game-overlay{position:absolute;inset:0 0 auto;min-height:240px;height:min(100%,560px);display:flex;flex-direction:column;gap:20px;align-items:center;justify-content:center;background:color-mix(in srgb,var(--site-surface) 88%,transparent);border:1px solid var(--site-border);border-radius:16px;backdrop-filter:blur(4px);z-index:5;padding:20px;text-align:center}
.browser-game-overlay strong{font-size:25px;line-height:1.5}
.browser-game-overlay button{min-height:46px;min-width:140px}
.game-number-pad{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:5px;width:100%;max-width:560px}
.game-number-pad button{border:1px solid var(--site-border);background:var(--site-surface);color:var(--site-text);border-radius:8px;min-height:42px;font-weight:600;font-size:18px}
.game-number-pad button.is-active{background:var(--site-accent);color:white}
.browser-game-surface canvas{width:100%;display:block;max-height:640px;object-fit:contain;border-radius:14px;touch-action:none;background:#101c2e;border:1px solid var(--site-border)}
.browser-game-surface[data-kind="2048"]{max-width:470px;touch-action:none}
.game-merge button{font-size:clamp(22px,4vw,38px)}
.game-merge .is-merged{animation:game-pop .2s ease-out}
@keyframes game-pop{50%{transform:scale(1.09)}}
.game-sudoku{gap:0;padding:0;border:2px solid var(--site-text);border-radius:9px;overflow:hidden}
.game-sudoku button{border-radius:0;border-right:1px solid var(--site-border);border-bottom:1px solid var(--site-border);font-size:clamp(18px,3vw,28px);font-weight:500;color:var(--site-accent)}
.game-sudoku button.is-given{font-weight:700;color:var(--site-text);background:color-mix(in srgb,var(--site-border) 30%,var(--site-surface))}
.game-sudoku button.is-peer{background:color-mix(in srgb,var(--site-accent) 7%,var(--site-surface))}
.game-sudoku button.is-conflict{color:#dc2626;background:#ef444418}
.game-sudoku button:nth-child(3n){border-right:2px solid var(--site-text)}
.game-sudoku button:nth-child(9n){border-right:0}
.game-sudoku button:nth-child(n+19):nth-child(-n+27),.game-sudoku button:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--site-text)}
.game-sudoku-notes{display:grid;grid-template-columns:repeat(3,1fr);width:100%;height:100%;font-size:clamp(7px,1.1vw,11px);color:var(--site-muted);font-weight:400}
.game-sudoku-notes span{display:flex;align-items:center;justify-content:center}
.game-mines-scroll{overflow:auto;width:fit-content;max-width:100%;margin:auto;border-radius:12px;padding:2px;max-height:600px;touch-action:pan-x pan-y}
.game-mines{aspect-ratio:auto;gap:3px;padding:5px;width:max-content;border-radius:9px}
.game-mines button{width:32px;height:32px;font-size:17px;border-radius:4px;box-shadow:inset 0 -2px 0 #64748b33}
.game-mines button.is-open{background:color-mix(in srgb,var(--site-border) 60%,var(--site-surface));box-shadow:none;font-weight:700}
.game-mines [data-number="1"]{color:#2563eb}.game-mines [data-number="2"]{color:#15803d}.game-mines [data-number="3"]{color:#dc2626}.game-mines [data-number="4"]{color:#7c3aed}
.game-custom-mines{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;grid-column:1/-1}
.game-custom-mines input{width:100%;min-width:0;min-height:46px}
.game-sokoban{gap:0;padding:0;border-radius:12px;overflow:hidden;aspect-ratio:auto;background:#dce7dd}
.game-sokoban button{border-radius:0;font-size:clamp(17px,3vw,28px);background:#e9f0e7;color:#253b2c}
.game-sokoban button.is-wall{background:#526273;box-shadow:inset 0 0 0 2px #445365}
.game-sokoban button.is-goal{background:#afd5b1}.game-sokoban button.is-box{background:#e2b778;box-shadow:inset 0 0 0 3px #c28d42}.game-sokoban button.is-box.is-goal{background:#73b785;box-shadow:inset 0 0 0 3px #438752}
.game-symbol{font-size:clamp(18px,4vw,32px)}
.game-tic{max-width:420px;margin:auto}.game-tic button{font-size:clamp(40px,6vw,64px);font-weight:500;color:var(--site-accent)}
.game-link-path{position:absolute;inset:0;pointer-events:none;overflow:visible;z-index:3}
.game-link-path polyline{fill:none;stroke:#f59e0b;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.game-solitaire{width:100%;min-width:0;--card-gap:10px;--card-width:calc((100% - 6 * var(--card-gap))/7)}
.game-solitaire-top,.game-solitaire-columns{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--card-gap)}
.game-solitaire-top{margin-bottom:22px}.game-solitaire-columns{min-height:350px}
.game-card-slot{aspect-ratio:.68;min-width:0;border:1px dashed #64748b88;border-radius:7px;position:relative;color:var(--site-muted);background:transparent;font-size:20px}
.game-solitaire-stack{position:relative;min-width:0;padding-bottom:130%;min-height:300px}
.game-card{position:absolute;left:0;width:100%;aspect-ratio:.68;border-radius:6px;background:#fff;color:#17223b;box-shadow:0 1px 4px #0004;border:1px solid #d6dfe8;padding:5px 6px;font-size:clamp(11px,1.4vw,20px);font-weight:700;text-align:left;touch-action:none;cursor:pointer}
.game-card span{display:block;font-size:1.4em;text-align:center;margin-top:8px}.game-card.is-red{color:#cf2538}.game-card.is-down{background:repeating-linear-gradient(45deg,#2456a0,#2456a0 3px,#2e66b4 3px,#2e66b4 6px);border:2px solid #f1f5f9}
.game-card.is-selected,.game-card.is-hint{outline:3px solid #f59e0b;outline-offset:-3px;z-index:2}.game-card.is-dragging{opacity:.5}
.browser-game-layout[data-kind="solitaire"]{grid-template-columns:minmax(0,1fr) 240px;max-width:1240px}.browser-game-layout[data-kind="solitaire"] .browser-game-surface{max-width:880px}
.game-eggs button{background:linear-gradient(145deg,#fff1c2,#f4c858);color:#654315;font-size:clamp(26px,6vw,46px)}
@media(max-width:900px){.browser-game-layout,.browser-game-layout[data-kind="solitaire"]{grid-template-columns:minmax(0,1fr) 240px;gap:20px}.game-solitaire{--card-gap:6px}}
@media(max-width:700px){.browser-game-layout,.browser-game-layout[data-kind="solitaire"]{grid-template-columns:1fr;gap:22px}.browser-game-sidebar{display:grid;grid-template-columns:1fr 1fr;gap:12px}.browser-game-sidebar .game-stats{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.browser-game-sidebar .game-stat{padding:8px}.browser-game-sidebar .game-stat strong{font-size:21px}.browser-game-sidebar .game-stat span{font-size:12px}.browser-game-sidebar .game-status,.browser-game-sidebar .game-detail,.browser-game-sidebar .game-settings,.browser-game-sidebar .game-help,.browser-game-sidebar #game-extra-controls{grid-column:1/-1}.browser-game-sidebar .game-settings{grid-template-columns:repeat(2,minmax(0,1fr))}.browser-game-sidebar .game-action-row{grid-column:1/-1}.game-number-pad{gap:3px}.game-number-pad button{min-height:38px;font-size:16px}.browser-game-pad{grid-template-columns:repeat(4,44px) 58px;gap:8px}.browser-game-pad button{height:46px}.game-solitaire{--card-gap:4px}.game-solitaire-top{margin-bottom:15px}.game-card{padding:3px;font-size:12px;border-radius:4px}.game-card span{margin-top:3px}.game-card-slot{border-radius:4px;font-size:17px}.game-solitaire-columns{min-height:350px}.game-sudoku-notes{font-size:8px}.browser-game-grid{gap:5px;padding:7px;border-radius:12px}.game-sudoku,.game-sokoban{gap:0;padding:0}.game-mines{gap:3px;padding:5px}}
@media(prefers-reduced-motion:reduce){.browser-game-grid button{transition:none}.game-merge .is-merged{animation:none}}
@media(max-width:700px){.browser-game-pad[data-kind="breakout"]{grid-template-columns:repeat(2,44px) 58px}.game-solitaire-columns{min-height:250px}}
