/* SRADRAVEN GAME FREE · Expansion Pack
   Original CSS/UI. No third-party game artwork. */
.gf-exp-stage{overflow:auto}.gf-exp-mount{width:100%;min-height:460px;display:grid;place-items:center}.gf-brand-chip{display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:8px 10px;border:1px solid #2d4751;border-radius:9px;background:#091318;color:#8fdce4;font-size:.72rem;font-weight:900;letter-spacing:.08em}.gf-brand-chip img{width:28px;height:28px;object-fit:contain}.exp-dpad{display:grid;grid-template-columns:repeat(3,52px);gap:6px;justify-content:center}.exp-dpad button:nth-child(1){grid-column:2}.exp-dpad button:nth-child(2){grid-column:1}.exp-dpad button:nth-child(3){grid-column:2}.exp-dpad button:nth-child(4){grid-column:3;grid-row:2}.exp-canvas{width:min(100%,760px);height:auto;border:1px solid #294651;border-radius:12px;touch-action:none;background:#071014}
/* Snake */
.snake-grid{width:min(92vw,560px);aspect-ratio:1;display:grid;grid-template-columns:repeat(20,1fr);background:#061015;border:1px solid #31505b;border-radius:10px;overflow:hidden}.snake-cell{border:1px solid #0d1a20}.snake-cell.body{background:#2399a7}.snake-cell.head{background:#6fe1eb}.snake-cell.food{background:#ff9558;border-radius:50%}
/* Merge */
.merge-board{width:min(92vw,560px);aspect-ratio:1;display:grid;grid-template-columns:repeat(4,1fr);gap:9px;padding:9px;background:#091216;border:1px solid #304852;border-radius:14px}.merge-cell{display:grid;place-items:center;border-radius:10px;background:#15242a;color:#fff;font-size:clamp(1.3rem,6vw,2.8rem);font-weight:950}.merge-cell.v2{background:#17343a}.merge-cell.v4{background:#1c4850}.merge-cell.v8{background:#72522d}.merge-cell.v16{background:#8b492b}.merge-cell.v32{background:#9c3e35}.merge-cell.v64{background:#a72e35}.merge-cell.v128{background:#796128}.merge-cell.v256{background:#8d6d1f}.merge-cell.v512{background:#9a7115}.merge-cell.v1024,.merge-cell.v2048{background:#c17920;box-shadow:0 0 24px #ffb43b55}
/* Sea battle */
.sea-wrap{display:grid;grid-template-columns:1fr 1fr;gap:28px;width:min(100%,880px)}.sea-wrap h3{text-align:center}.sea-board{display:grid;grid-template-columns:repeat(8,1fr);gap:3px;aspect-ratio:1}.sea-cell{border:1px solid #2d5967;background:#0b2a36;border-radius:3px;cursor:pointer}.sea-cell.ship{background:#465d66}.sea-cell.miss{background:#163c48}.sea-cell.hit{background:#a94242;box-shadow:inset 0 0 0 2px #ffb0b0}.sea-cell:disabled{cursor:default}
/* Gomoku */
.gomoku-board{width:min(94vw,650px);aspect-ratio:1;display:grid;grid-template-columns:repeat(15,1fr);background:#9b7446;border:6px solid #39281a}.gomoku-cell{position:relative;border:1px solid #6c4f31;background:transparent;padding:0}.gomoku-cell:before{content:"";position:absolute;inset:13%;border-radius:50%;transform:scale(0);transition:.1s}.gomoku-cell.p1:before{transform:scale(1);background:#0f171a;box-shadow:0 2px 5px #000}.gomoku-cell.p2:before{transform:scale(1);background:#f3efe7;box-shadow:0 2px 5px #0008}
/* Mancala */
.mancala-board{display:grid;grid-template-columns:86px 1fr 86px;gap:10px;align-items:stretch;width:min(100%,850px);padding:16px;background:#6b442b;border:8px solid #302016;border-radius:40px}.mancala-pits{display:grid;gap:12px}.mancala-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.mancala-pit,.mancala-store{display:grid;place-items:center;border:0;background:radial-gradient(circle at 35% 30%,#9d7652,#4a2f1e);color:#fff;border-radius:50%;font-size:1.35rem;font-weight:950;box-shadow:inset 0 8px 16px #1f100999}.mancala-pit{aspect-ratio:1;cursor:pointer}.mancala-store{border-radius:38px;min-height:190px}
/* Code breaker */
.code-wrap{width:min(100%,650px)}.code-history{display:grid;gap:8px;margin-bottom:18px}.code-row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid #2b444e;background:#0a1419;border-radius:10px}.code-pegs,.code-guess{display:flex;gap:10px;justify-content:center}.code-dot{width:54px;height:54px;border-radius:50%;border:3px solid #d9f3f655;box-shadow:0 5px 14px #0008;cursor:pointer}.code-dot.small{width:30px;height:30px;display:inline-block}.code-clue{color:#b9cbd1}
/* Flash sequence */
.seq-board{width:min(92vw,560px);aspect-ratio:1;display:grid;grid-template-columns:1fr 1fr;gap:12px}.seq-pad{border:1px solid #334e58;border-radius:22px;opacity:.55;transition:.12s;cursor:pointer}.seq-pad.p0{background:#1c8e99}.seq-pad.p1{background:#b76031}.seq-pad.p2{background:#4a8b5d}.seq-pad.p3{background:#7d5ca3}.seq-pad.on{opacity:1;filter:brightness(1.8);transform:scale(.97);box-shadow:0 0 35px #fff5}
/* Word search */
.wordsearch-wrap{display:grid;grid-template-columns:minmax(0,620px) 170px;gap:18px;align-items:start}.word-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:2px;background:#1d3038;border:2px solid #2c4b55}.word-cell{aspect-ratio:1;border:0;background:#0c171c;color:#eaf5f7;font-weight:900;font-size:clamp(.75rem,2.8vw,1.35rem);cursor:pointer}.word-cell.selected{background:#6e5127}.word-cell.found{background:#216144}.word-list{display:flex;flex-direction:column;gap:7px}.word-item{padding:7px 9px;border:1px solid #2c424a;border-radius:8px}.word-item.done{text-decoration:line-through;color:#79e4a7}
/* Crossword */
.cross-wrap{display:grid;grid-template-columns:minmax(0,620px) minmax(220px,1fr);gap:20px;align-items:start}.cross-grid{display:grid;gap:2px;background:#1d3038;border:2px solid #2d4650;padding:2px}.cross-cell,.cross-block{aspect-ratio:1;min-width:0}.cross-cell{width:100%;border:0;background:#eff5f4;color:#142027;text-align:center;font-size:clamp(.72rem,2.6vw,1.25rem);font-weight:950;text-transform:uppercase}.cross-cell.bad{background:#ffb0b0}.cross-cell.good{background:#b9f1ca}.cross-block{background:#071014}.cross-clues{margin:0;padding-left:22px;color:#b8cbd1}.cross-clues li{margin-bottom:10px}
/* Nonogram */
.nono-wrap{display:grid;grid-template-columns:84px minmax(0,520px);grid-template-rows:84px minmax(0,520px);width:min(100%,620px)}.nono-corner{grid-column:1;grid-row:1}.nono-col{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(10,1fr)}.nono-row{grid-column:1;grid-row:2;display:grid;grid-template-rows:repeat(10,1fr)}.nono-board{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(10,1fr);border:2px solid #76909a}.nono-clue{display:grid;place-items:center;text-align:center;white-space:pre-line;font-size:.75rem;color:#bfd2d7}.nono-cell{aspect-ratio:1;border:1px solid #354d56;background:#0b171c;color:#f0f7f8;font-weight:950}.nono-cell.fill{background:#53d9e5}.nono-cell.cross{background:#16252b;color:#ff8f8f}
/* Mahjong */
.mahjong-board{position:relative;width:min(96vw,720px);height:min(72vw,520px);min-height:430px;background:radial-gradient(circle at center,#18342e,#0b1d19);border:1px solid #30564d;border-radius:14px;overflow:hidden}.mah-tile{position:absolute;width:11%;height:12%;min-width:46px;min-height:58px;border:1px solid #7a8d89;border-radius:8px;background:#e8e2d2;color:#17252b;font-size:1.45rem;font-weight:950;box-shadow:4px 5px 0 #42514e,0 8px 18px #0007}.mah-tile:disabled{filter:brightness(.65);cursor:not-allowed}.mah-tile.free{cursor:pointer}.mah-tile.selected{outline:4px solid #ff9558}
/* Dice */
.dice-row{display:flex;gap:14px;flex-wrap:wrap;justify-content:center}.die{width:92px;height:92px;border:2px solid #405862;border-radius:14px;background:#f5f2e8;color:#111;font-size:3.8rem;line-height:1;cursor:pointer}.die.held{outline:5px solid #53d9e5;transform:translateY(-7px)}
/* Cards shared */
.gf-card{position:relative;width:68px;height:96px;border:1px solid #17252b;border-radius:8px;background:#f5f2e8;color:#142027;box-shadow:0 3px 8px #0007;padding:5px;font-weight:900;cursor:pointer}.gf-card.red{color:#b42f3b}.gf-card.back{background:linear-gradient(145deg,#092a33,#13252c);display:grid;place-items:center}.gf-card.back img{width:44px;height:44px;object-fit:contain}.gf-card.selected{outline:4px solid #53d9e5}.gf-card-corner{position:absolute;left:5px;top:4px;text-align:left;line-height:.9}.gf-card-big{display:grid;place-items:center;height:100%;font-size:2.15rem}.gf-card:disabled{opacity:.55}
/* FreeCell */
.fc-wrap,.spider-wrap{width:100%;min-width:760px;min-height:620px;background:linear-gradient(#0d4d3d,#083327);padding:12px;border-radius:12px;overflow:auto}.fc-top{display:flex;justify-content:space-between;margin-bottom:20px}.fc-slots{display:flex;gap:8px}.fc-slot{width:68px;height:96px;border:1px dashed #a0c5b6;border-radius:8px;display:grid;place-items:center;color:#bcd8cd;font-size:1.7rem}.fc-slot.selected{outline:3px solid #53d9e5}.fc-cols{display:grid;grid-template-columns:repeat(8,68px);gap:12px}.fc-col{min-height:460px;position:relative}.fc-card{position:absolute;left:0}
/* Spider */
.spider-cols{display:grid;grid-template-columns:repeat(10,68px);gap:6px}.spider-col{min-height:520px;position:relative}.sp-card{position:absolute;left:0}.sp-card.back img{width:42px}
/* Pyramid */
.pyramid-wrap{display:grid;grid-template-columns:1fr 150px;gap:15px;width:100%;min-width:720px}.pyramid-board{position:relative;height:470px;background:linear-gradient(#0d4d3d,#083327);border-radius:12px}.pyr-card{position:absolute}.pyr-stock{display:flex;gap:8px;align-items:flex-start;padding-top:10px}
/* Trick taking */
.trick-table{width:100%;min-height:530px;background:radial-gradient(circle,#144c3c,#082d24);border-radius:14px;padding:18px;display:flex;flex-direction:column;justify-content:space-between}.trick-now{position:relative;height:300px}.trick-card{position:absolute}.trick-card.p0{left:50%;bottom:10px;transform:translateX(-50%)}.trick-card.p1{left:18%;top:45%;transform:translateY(-50%)}.trick-card.p2{left:50%;top:10px;transform:translateX(-50%)}.trick-card.p3{right:18%;top:45%;transform:translateY(-50%)}.player-hand{display:flex;justify-content:center;gap:3px;overflow-x:auto;padding:10px}.player-hand .gf-card{flex:0 0 58px;width:58px;height:84px}
/* War */
.war-table{display:grid;grid-template-columns:1fr 160px 1fr;align-items:center;gap:24px;width:min(100%,700px);text-align:center}.war-side>div{min-height:110px;display:grid;place-items:center}.war-pot{font-weight:900;color:#ffb27f}
/* Lights */
.lights-board{width:min(92vw,540px);aspect-ratio:1;display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.light-cell{border:1px solid #314c56;border-radius:12px;background:#0b171c;box-shadow:inset 0 0 18px #0008}.light-cell.on{background:#ffd75c;box-shadow:0 0 22px #ffd75c99,inset 0 0 12px #fff8}
/* Box pusher */
.box-board{display:grid;width:min(92vw,620px);background:#091216;border:4px solid #263f48}.box-cell{aspect-ratio:1;display:grid;place-items:center;border:1px solid #15272e;font-size:1.4rem}.box-cell.wall{background:#30404a}.box-cell.target{background:radial-gradient(circle,#ff9558 0 20%,#102027 22%)}.box-cell.crate{background:#8b5d33;color:#fff}.box-cell.crate.target{background:#b56d32}.box-cell.player{background:#1d6c76;color:#fff;border-radius:50%}
/* Hub filter */
.gf-hub-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}.gf-hub-filter{border:1px solid #34525d;background:#0c1b21;color:#d9edf0;border-radius:999px;padding:8px 12px;font-weight:850;cursor:pointer}.gf-hub-filter.active{background:#1f6570;border-color:#53d9e5}.gf12-card[hidden]{display:none!important}
@media(max-width:900px){.sea-wrap,.wordsearch-wrap,.cross-wrap{grid-template-columns:1fr}.word-list{display:flex;flex-direction:row;flex-wrap:wrap}.cross-clues{padding:12px 20px}.mancala-board{grid-template-columns:58px 1fr 58px}.mancala-store{min-height:150px}.fc-wrap,.spider-wrap,.pyramid-wrap{transform-origin:top left}.war-table{grid-template-columns:1fr 100px 1fr}.mahjong-board{min-height:380px}}
@media(max-width:650px){.gf-exp-mount{min-height:380px}.exp-dpad{grid-template-columns:repeat(3,48px)}.sea-wrap{gap:16px}.mancala-board{padding:8px;border-width:5px}.mancala-row{gap:5px}.mancala-pits{gap:6px}.mancala-store{font-size:1rem}.code-dot{width:46px;height:46px}.word-cell{font-size:.72rem}.nono-wrap{grid-template-columns:64px minmax(0,1fr);grid-template-rows:70px auto}.mah-tile{font-size:1rem}.die{width:64px;height:64px;font-size:2.6rem}.fc-wrap,.spider-wrap,.pyramid-wrap{zoom:.72}.player-hand{justify-content:flex-start}.war-table{gap:8px}.gf-card{width:56px;height:80px}.gf-card-big{font-size:1.7rem}}

/* QA V1: clearer Sea Battle onboarding / coordinate grid */
.sea-note,.sea-legend{width:min(100%,880px);padding:10px 12px;border:1px solid #2d4751;border-radius:9px;background:#091318;color:#c6d9de;font-size:.9rem;line-height:1.45}
.sea-note{margin:0 auto 16px}.sea-legend{margin:16px auto 0;text-align:center;color:#8fdce4;font-weight:800}
.sea-board.labeled{grid-template-columns:26px repeat(8,1fr);grid-template-rows:26px repeat(8,1fr);aspect-ratio:auto;gap:3px}
.sea-axis{display:grid;place-items:center;color:#8fdce4;font-size:.72rem;font-weight:900;line-height:1}.sea-axis.corner{opacity:.3}.sea-slot{display:contents}
.sea-board.labeled .sea-cell{aspect-ratio:1;min-width:0;color:#f7c9aa;font-size:.72rem;font-weight:900}
.sea-cell.ship{background:#6f4b36;border-color:#d18455;box-shadow:inset 0 0 0 1px #ffb27b55}.sea-cell.ship-2,.sea-cell.ship-4{background:#76533d}.sea-cell.ship-3,.sea-cell.ship-5{background:#684634}
.sea-cell.hit{background:#a94242;color:#fff}.sea-cell.miss{background:#163c48;color:#9dc5ce}
.die:disabled{cursor:default;opacity:.72}.die:disabled.held{outline:0;transform:none}
@media(max-width:650px){.sea-board.labeled{grid-template-columns:22px repeat(8,1fr);grid-template-rows:22px repeat(8,1fr)}.sea-axis{font-size:.64rem}.sea-note,.sea-legend{font-size:.82rem}}

/* GAME FREE V3 · expansion viewport + touch layout */
.gf-exp-stage{height:100%;min-height:0;overflow:hidden}.gf-exp-mount{height:100%;min-height:0;overflow:hidden}
.snake-grid,.merge-board,.seq-board,.gomoku-board,.lights-board{width:min(100%,var(--gf-stage-square,560px));max-height:100%}
.sea-wrap{width:min(100%,calc(var(--gf-stage-h,560px) * 1.62),880px);max-height:100%;gap:12px}
.gomoku-board{border-width:4px}.mancala-board{width:min(100%,850px);max-height:100%;padding:10px;border-width:6px}.mancala-store{min-height:120px}
.wordsearch-wrap,.cross-wrap{width:min(100%,900px);max-height:100%;gap:10px}.word-grid,.cross-grid{max-height:100%}.word-list{max-height:var(--gf-stage-h,560px);overflow:auto}
.nono-wrap{width:min(100%,var(--gf-stage-square,620px));height:min(100%,var(--gf-stage-square,620px));grid-template-columns:72px minmax(0,1fr);grid-template-rows:72px minmax(0,1fr)}
.box-board{width:min(100%,calc(var(--gf-stage-h,560px) * 1.35),620px);max-height:100%}
.exp-dpad button{touch-action:manipulation;min-width:44px;min-height:44px}
@media(max-width:759px){
  .sea-wrap{grid-template-columns:1fr 1fr;gap:5px}.sea-wrap h3{font-size:.7rem;margin:0 0 3px}.sea-note,.sea-legend{display:none}.sea-board.labeled{grid-template-columns:16px repeat(8,1fr);grid-template-rows:16px repeat(8,1fr);gap:1px}.sea-axis{font-size:.48rem}
  .mancala-board{grid-template-columns:34px 1fr 34px;gap:4px;padding:5px;border-width:3px;border-radius:20px}.mancala-pits,.mancala-row{gap:3px}.mancala-store{min-height:74px;font-size:.72rem}.mancala-pit{font-size:.8rem}
  .code-history{max-height:42%;overflow:auto;margin-bottom:6px}.code-row{padding:4px 6px}.code-dot{width:34px;height:34px}.code-dot.small{width:20px;height:20px}.code-pegs,.code-guess{gap:5px}
  .wordsearch-wrap,.cross-wrap{grid-template-columns:minmax(0,1fr) 84px;gap:5px}.word-list{display:flex;flex-direction:column;flex-wrap:nowrap;overflow:auto}.word-item{padding:3px;font-size:.58rem}.cross-clues{font-size:.56rem;padding-left:13px;max-height:100%;overflow:auto}.cross-clues li{margin-bottom:4px}
  .nono-wrap{grid-template-columns:44px minmax(0,1fr);grid-template-rows:46px minmax(0,1fr)}.nono-clue{font-size:.48rem}
  .mahjong-board{min-height:360px}.mah-tile{min-width:40px;min-height:50px}
  .dice-row{gap:6px}.die{width:52px;height:52px;font-size:2.1rem}
  .player-hand{padding:4px;gap:1px}.trick-table{padding:7px;min-height:440px}.trick-now{height:230px}
  .war-table{grid-template-columns:1fr 70px 1fr;gap:4px}.war-side>div{min-height:82px}
}
/* V3 QA · narrow/tablet board containment */
.mancala-board,.mancala-pits,.mancala-row,.mancala-pit,.mancala-store{min-width:0}
@media(min-width:760px) and (max-width:900px){.sea-wrap{grid-template-columns:1fr 1fr;gap:8px}.sea-note,.sea-legend{display:none}.sea-wrap h3{font-size:.78rem;margin:0 0 5px}}

/* V3 QA · canvas respects both width and viewport height */
.exp-canvas{width:min(100%,calc(var(--gf-stage-h,560px) * 1.565),760px);height:auto}
