:root{color-scheme:dark;--navy:#101824;--navy2:#17283d;--gold:#d9b878;--ivory:#f8f5ed;--muted:#bbc3cf;--line:rgba(217,184,120,.3)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:280px;background:var(--navy);color:var(--ivory);font-family:Manrope,Arial,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--gold);outline-offset:3px}[hidden]{display:none!important}
.gamez-header{min-height:82px;padding:12px max(5vw,20px);display:flex;align-items:center;justify-content:space-between;gap:22px;border-bottom:1px solid var(--line);background:#101824}.gamez-brand{display:flex;align-items:center;gap:10px;flex:none}.gamez-brand img{width:54px;height:54px;object-fit:contain;background:#fff}.gamez-brand span{display:grid;line-height:1}.gamez-brand strong{font:700 1.15rem 'Playfair Display',serif}.gamez-brand small{margin-top:6px;font:700 .55rem 'DM Mono',monospace;letter-spacing:.18em;color:var(--gold)}.gamez-nav{display:flex;align-items:center;gap:clamp(14px,2.2vw,32px)}.gamez-nav a{font-size:.75rem;font-weight:800;text-transform:uppercase;white-space:nowrap}.gamez-nav a:hover,.gamez-nav a[aria-current]{color:var(--gold)}.gamez-nav a[aria-current]{border-bottom:2px solid var(--gold);padding-bottom:5px}.gamez-menu-button{display:none;border:1px solid var(--line);border-radius:6px;padding:10px 13px;background:transparent;color:var(--ivory);font-weight:700}.gamez-menu-button span{margin-left:8px;color:var(--gold)}
.gamez-main{max-width:1480px;margin:auto;padding:0 max(5vw,20px) 80px}.gamez-hero{position:relative;display:flex;justify-content:space-between;align-items:end;gap:24px;min-height:230px;padding:48px 0 37px;border-bottom:1px solid var(--line);overflow:hidden}.gamez-hero:after{content:'';position:absolute;width:320px;height:320px;right:13%;top:-230px;border:1px solid var(--line);border-radius:50%;pointer-events:none}.gamez-kicker,.gamez-counter,.gamez-stage{font:500 .66rem/1.6 'DM Mono',monospace;letter-spacing:.12em;color:var(--gold)}.gamez-kicker{margin:0 0 12px}.gamez-kicker span{padding:0 7px}h1,h2,h3,p{overflow-wrap:break-word}.gamez-hero h1{margin:0;color:var(--ivory);font:700 clamp(3.3rem,8vw,6.7rem)/.95 'Playfair Display',serif;letter-spacing:-.04em}.gamez-hero h1 span{color:var(--gold)}.gamez-lead{max-width:560px;margin:18px 0 0;color:var(--muted);font-size:.95rem;line-height:1.65}.gamez-stage{margin:0;white-space:nowrap;text-align:right}.gamez-stage span{color:var(--muted)}.gamez-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,330px);gap:32px;padding-top:36px}.games-panel,.chat-panel{min-width:0}.gamez-section-head,.chat-head{display:flex;align-items:end;justify-content:space-between;gap:12px}.gamez-section-head h2,.chat-head h2{margin:0;font:700 clamp(1.8rem,3vw,2.5rem)/1.1 'Playfair Display',serif}.gamez-counter{white-space:nowrap}.gamez-category{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:34px 0 14px}.gamez-category h3{margin:0;font:700 1.05rem Manrope,sans-serif}.gamez-category span{color:var(--muted);font-size:.72rem}.gamez-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gamez-card{min-width:0;min-height:110px;display:flex;align-items:center;gap:13px;padding:18px 16px;text-align:left;border:1px solid var(--line);border-radius:10px;background:linear-gradient(145deg,#1b3047,#132339);color:var(--ivory);cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s}.gamez-card:hover{transform:translateY(-5px);border-color:var(--gold);box-shadow:0 15px 28px #0005}.gamez-card-icon{flex:none;width:46px;height:46px;display:grid;place-items:center;border:1px solid var(--line);border-radius:9px;color:var(--gold);font:700 1.8rem 'Playfair Display',serif}.gamez-card-copy{display:grid;min-width:0;gap:5px}.gamez-card-copy strong{font-size:.91rem;line-height:1.3}.gamez-card-copy small{font-size:.68rem;line-height:1.35;color:var(--muted)}.gamez-card-arrow{align-self:start;margin-left:auto;color:var(--gold)}
.chat-panel{align-self:start;position:sticky;top:20px;display:flex;flex-direction:column;min-height:470px;border:1px solid var(--line);border-radius:12px;background:#17283b;overflow:hidden}.chat-head{align-items:center;padding:22px 20px;border-bottom:1px solid var(--line)}.chat-head h2{font-size:1.5rem}.chat-state{border:1px solid var(--line);border-radius:999px;padding:6px 8px;color:var(--gold);font-size:.59rem;font-weight:800;white-space:nowrap}.chat-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 24px;text-align:center}.chat-symbol{display:grid;place-items:center;width:66px;height:66px;margin-bottom:18px;border:1px solid var(--line);border-radius:50%;color:var(--gold);font-size:2rem}.chat-placeholder h3{margin:0 0 8px;font:700 1.4rem 'Playfair Display',serif}.chat-placeholder p,.chat-footnote{color:var(--muted);font-size:.78rem;line-height:1.6}.chat-placeholder p{margin:0}.chat-footnote{padding:18px 20px;margin:0;border-top:1px solid var(--line)}
.gamez-detail{margin-top:30px;padding:25px;border:1px solid var(--gold);border-radius:10px;background:#17283b}.gamez-detail h3{margin:0;font:700 2rem 'Playfair Display',serif}.gamez-detail p{color:var(--muted)}.gamez-back{padding:0 0 25px;border:0;background:none;color:var(--gold);font-size:.78rem;font-weight:800;cursor:pointer}.gamez-detail-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.gamez-detail-actions button{min-height:44px;padding:10px 14px;border:1px solid var(--line);border-radius:6px;background:#243248;color:var(--muted);cursor:not-allowed}.gamez-detail-note{font-size:.78rem;line-height:1.6}.gamez-tabs{display:none}.gamez-footer{padding:30px 20px;border-top:1px solid var(--line);text-align:center;background:#0c1420}.gamez-footer p{margin:6px 0;color:var(--muted);font-size:.7rem}.gamez-footer a{color:var(--gold);text-decoration:underline;text-underline-offset:3px}
@media(max-width:900px){.gamez-header{position:relative;min-height:72px}.gamez-brand img{width:44px;height:44px}.gamez-nav{display:none;position:absolute;z-index:10;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;padding:8px 20px 18px;background:#101824;border-bottom:1px solid var(--gold);box-shadow:0 18px 28px #0007}.gamez-nav.open{display:flex}.gamez-nav a{padding:13px 4px;border-bottom:1px solid var(--line)}.gamez-nav a[aria-current]{border-bottom:1px solid var(--gold)}.gamez-menu-button{display:block}.gamez-layout{grid-template-columns:minmax(0,1fr)}.chat-panel{position:static;min-height:370px}.gamez-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:24px 0 0;padding:5px;border:1px solid var(--line);border-radius:10px;background:#17283b}.gamez-tabs button{min-height:44px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-weight:800;cursor:pointer}.gamez-tabs button[aria-selected=true]{background:var(--gold);color:#101824}.gamez-layout{padding-top:22px}.chat-panel:not(.is-active),.games-panel:not(.is-active){display:none}}
@media(max-width:560px){.gamez-main{padding:0 20px 54px}.gamez-hero{min-height:0;padding:38px 0 26px}.gamez-hero h1{font-size:3.5rem}.gamez-stage{display:none}.gamez-lead{font-size:.86rem}.gamez-section-head h2{font-size:1.85rem}.gamez-cards{grid-template-columns:1fr}.gamez-card{min-height:82px}.gamez-category{margin-top:28px}.gamez-category span{font-size:.63rem}.gamez-counter{font-size:.6rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.gamez-card{transition:none}}

/* Gamez chat is self-contained; no public-site stylesheet is changed. */
.gamez-presence{display:flex;align-items:center;gap:8px;margin:16px 0 0;color:var(--gold);font:600 .76rem Manrope,sans-serif}.gamez-presence-dot{width:8px;height:8px;border-radius:50%;background:var(--gold)}
.chat-panel{height:min(70vh,590px);min-height:390px}.chat-head{align-items:flex-start}.chat-state{max-width:125px;white-space:normal;text-align:right;line-height:1.35}.chat-state[data-state="online"]{color:#aee6bd;border-color:#72b888}.chat-identity{margin:0;padding:9px 18px;border-bottom:1px solid var(--line);font-size:.7rem;color:var(--muted)}.chat-identity strong{color:var(--ivory)}
.chat-stream{position:relative;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:12px 15px}.chat-messages{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}.chat-message{padding:10px 11px;border:1px solid var(--line);border-radius:8px;background:#21354c;overflow-wrap:anywhere}.chat-message.is-own{border-color:#d9b87888;background:#263c53}.chat-message-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.chat-message-head strong{color:var(--gold);font-size:.72rem}.chat-message-head time{color:var(--muted);font-size:.61rem;white-space:nowrap}.chat-message p{margin:6px 0 0;color:var(--ivory);font-size:.78rem;line-height:1.5;white-space:pre-wrap}.chat-new{position:sticky;bottom:6px;display:block;margin:8px auto 0;padding:8px 12px;border:1px solid var(--gold);border-radius:999px;background:#101824;color:var(--gold);font-size:.69rem;font-weight:800;cursor:pointer}
.chat-form{padding:12px 14px;border-top:1px solid var(--line);background:#17283b}.chat-label{display:block;margin-bottom:7px;color:var(--muted);font-size:.68rem}.chat-compose{display:flex;align-items:stretch;gap:7px}.chat-compose textarea{width:100%;min-width:0;max-height:110px;resize:vertical;padding:10px 11px;border:1px solid var(--line);border-radius:7px;background:#0e1b2b;color:var(--ivory);font:400 .78rem/1.4 Manrope,sans-serif}.chat-compose textarea::placeholder{color:#a6b1be}.chat-compose textarea:disabled{opacity:.55}.chat-compose button{min-width:60px;min-height:44px;padding:8px 10px;border:0;border-radius:7px;background:var(--gold);color:#101824;font-size:.75rem;font-weight:800;cursor:pointer}.chat-compose button:disabled{opacity:.5;cursor:not-allowed}.chat-hint,.chat-feedback{margin:6px 0 0;color:var(--muted);font-size:.6rem;line-height:1.4}.chat-feedback:not(:empty){color:#ffd08a}
@media(max-width:900px){.chat-panel{height:min(65dvh,570px);min-height:340px}.chat-stream{padding:12px}.chat-form{padding:11px 12px}}
@media(max-width:560px){.chat-panel{height:min(68dvh,520px)}.chat-state{max-width:112px;font-size:.57rem}.chat-head{padding:16px 13px}.chat-head h2{font-size:1.35rem}}
.chat-retry{margin-top:8px;padding:8px 12px;min-height:40px;border:1px solid var(--gold);border-radius:7px;background:transparent;color:var(--gold);font-size:.7rem;font-weight:800;cursor:pointer}

/* Milestone 3 test harness; keeps the existing cards and chat untouched. */
.multiplayer-test{margin-top:26px;padding:22px 24px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(125deg,#1b2d42,#142437)}
.multiplayer-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.multiplayer-heading h2{margin:0;font:700 clamp(1.35rem,3vw,1.9rem) 'Playfair Display',serif}.multiplayer-connection{color:var(--gold);font-size:.69rem;font-weight:800;text-align:right}
.multiplayer-message{margin:14px 0 0;font-size:.95rem;font-weight:800;color:var(--ivory)}.multiplayer-detail{margin:8px 0 0;color:var(--muted);font-size:.73rem;line-height:1.6}.multiplayer-versus{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:14px;color:var(--ivory);font-weight:800}.multiplayer-versus b{color:var(--gold);font:700 .7rem 'DM Mono',monospace}
.multiplayer-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:17px}.multiplayer-actions button{min-height:42px;padding:9px 15px;border:1px solid var(--gold);border-radius:7px;background:transparent;color:var(--gold);font-size:.75rem;font-weight:800;cursor:pointer;transition:transform .2s,box-shadow .2s}.multiplayer-actions button.multiplayer-primary{background:var(--gold);color:#101824}.multiplayer-actions button:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 10px 22px #0005}.multiplayer-actions button:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:560px){.multiplayer-test{padding:18px 16px}.multiplayer-heading{align-items:flex-start;flex-direction:column;gap:6px}.multiplayer-connection{text-align:left}.multiplayer-actions button{flex:1 1 auto}}
@media(prefers-reduced-motion:reduce){.multiplayer-actions button{transition:none}}

/* Self-contained, touch-friendly card games. Horizontal scrolling stays inside the board. */
.gamez-play-area{margin-top:16px;min-width:0;overflow-x:auto}.game-notice{min-height:42px;margin:0 0 10px!important;color:var(--ivory)!important;font-size:.8rem;line-height:1.5}.game-score{color:var(--gold)!important;font-weight:800}.game-primary,.game-secondary{min-height:44px;margin:8px 8px 12px 0;padding:9px 14px;border:1px solid var(--gold);font-weight:800;cursor:pointer}.game-primary{background:var(--gold);color:var(--navy)}.game-secondary{background:transparent;color:var(--gold)}
.playing-card,.card-slot{width:clamp(39px,6vw,64px);height:clamp(56px,8.5vw,88px);display:grid;place-items:center;flex:none;padding:2px;border:1px solid #e6ddcd;border-radius:6px;background:#fcf8ef;color:#17283d;font:800 clamp(.72rem,2vw,1.2rem) Manrope,sans-serif;cursor:pointer;box-shadow:0 2px 5px #0004}.playing-card.red,.card-slot.red{color:#bd2e3a}.playing-card.face-down{background:repeating-linear-gradient(45deg,#1c3a5d,#1c3a5d 6px,#2e5076 6px,#2e5076 12px);color:var(--gold)}.playing-card.selected{outline:3px solid var(--gold);transform:translateY(-5px)}.playing-card:disabled{cursor:default;opacity:1}.card-slot{border-style:dashed;background:#ffffff13;color:var(--muted);font-size:.7rem}.card-slot.foundation{font-size:1.1rem}.high-card-table{display:flex;gap:25px;margin:20px 0}.high-card-hand{display:grid;gap:8px}.high-card-hand strong{font-size:.75rem}.solitaire-top{display:flex;gap:7px;overflow-x:auto;padding:7px 0 15px}.solitaire-columns{display:grid;grid-template-columns:repeat(7,minmax(44px,1fr));gap:6px;min-width:380px;overflow-x:auto;padding:8px 3px 20px}.gamez-play-area:has(.solitaire-columns){overflow-x:auto}.spider-columns{grid-template-columns:repeat(10,minmax(42px,1fr));min-width:480px}.solitaire-column{min-width:0;display:flex;flex-direction:column;align-items:center}.solitaire-column .playing-card{margin-top:-27px}.solitaire-column .playing-card:first-of-type{margin-top:3px}.column-target{width:100%;min-height:35px;margin-bottom:26px;border:1px dashed var(--line);border-radius:5px;background:transparent;color:var(--muted);font-size:.63rem;cursor:pointer}.solitaire-column .playing-card.selected{z-index:1}
@media(max-width:560px){.gamez-detail{padding:16px}.solitaire-columns{min-width:380px}.spider-columns{min-width:480px}}
.solitaire-column .column-target+.playing-card{margin-top:3px}
.chess-board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));width:min(100%,480px);aspect-ratio:1;margin:12px 0;border:2px solid var(--gold)}.chess-square{position:relative;display:grid;place-items:center;min-width:0;min-height:0;padding:0;border:0;font-size:clamp(1.45rem,5vw,2.65rem);line-height:1;color:#0c1727;cursor:pointer}.chess-square.light{background:#e8d6b2}.chess-square.dark{background:#a87d54}.chess-square.selected{outline:3px solid var(--gold);outline-offset:-3px}.chess-square.legal:after{content:'•';position:absolute;color:#193822aa;font-size:.8rem}.chess-controls{display:flex;flex-wrap:wrap;gap:6px}.chess-controls button:disabled{opacity:.5;cursor:default}
.gamez-detail-actions button:not(:disabled){color:var(--gold);border-color:var(--gold);cursor:pointer}.gamez-detail-actions button:not(:disabled):hover{background:#304763}
.multiplayer-game{margin-top:20px;padding:16px;border:1px solid var(--gold);border-radius:10px;background:#101d2b;overflow:hidden}
.multiplayer-game h3{margin:0 0 10px;color:var(--ivory)}.online-status{color:var(--gold);font-size:.83rem;font-weight:700;line-height:1.5}
.online-game-area{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.online-game-area>p,.online-game-area>h3{flex-basis:100%;margin:5px 0}.online-game-area button{min-height:42px;padding:7px 11px;border:1px solid var(--gold);border-radius:5px;background:#20364c;color:var(--ivory);cursor:pointer}.online-game-area button:disabled{opacity:.48;cursor:not-allowed}
.online-hand{display:flex;flex-wrap:wrap;align-items:center;gap:7px;width:100%}.online-tile{display:inline-flex;align-items:center;gap:4px;padding:4px;border:1px solid #64788e;border-radius:6px}.online-chess-board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));width:min(100%,500px);aspect-ratio:1;overflow:hidden;border:4px solid #a97834}.online-chess-board button{display:grid;place-items:center;min-width:0;min-height:0;padding:0;border:0;border-radius:0;font-size:clamp(1.2rem,4vw,2.7rem);line-height:1}.online-chess-board button.light{background:#ecdbad}.online-chess-board button.dark{background:#7c8e66}.online-chess-board button.white-piece{color:#fff;text-shadow:0 2px 3px #111,0 0 2px #111}.online-chess-board button.black-piece{color:#101824;text-shadow:0 1px 2px #fff}.online-chess-board button.selected{outline:4px solid #f5cc46;outline-offset:-4px}.online-billiard-canvas{display:block;width:100%;height:auto;max-width:800px;touch-action:manipulation;border-radius:8px}.online-game-area input[type=range]{width:min(200px,100%)}
.quiz-prompt{margin:15px 0;font-size:1.05rem;line-height:1.5}.quiz-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:12px}.quiz-option{min-height:52px;padding:9px 12px;border:1px solid var(--line);border-radius:7px;background:#263f58;color:var(--ivory);text-align:left;font-weight:700;cursor:pointer}.quiz-option:hover{border-color:var(--gold)}
.ludo-track{display:grid;grid-template-columns:repeat(13,34px);gap:3px;width:max-content;margin:15px 0}.ludo-cell{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;min-height:34px;border:1px solid var(--line);border-radius:4px;background:#223b4b}.ludo-cell.safe{border-color:var(--gold)}.ludo-cell small{font-size:.55rem;color:var(--muted)}.ludo-piece{display:grid;place-items:center;width:15px;height:15px;border-radius:50%;font-size:.57rem;font-weight:800}.ludo-piece.player-0,.ludo-rack.player-0{color:#ffd787}.ludo-piece.player-0{background:#a86f0d}.ludo-piece.player-1,.ludo-rack.player-1{color:#b5dcff}.ludo-piece.player-1{background:#25659e}.ludo-racks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ludo-rack{display:grid;gap:7px;padding:10px;border:1px solid var(--line);border-radius:7px}.ludo-token-button{min-height:42px;border:1px solid var(--line);border-radius:5px;background:#1e354a;color:var(--ivory);font-size:.72rem;cursor:pointer}.ludo-token-button:disabled{opacity:.55;cursor:default}
.domino-chain,.domino-hand,.remi-hand{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0}.domino-chain{min-height:50px;padding:8px;border:1px dashed var(--line);border-radius:7px}.domino-tile,.remi-card{min-width:48px;min-height:50px;padding:7px 9px;border:1px solid var(--gold);border-radius:5px;background:#eee3d0;color:#17283d;font-weight:800;cursor:pointer}.domino-tile.selected{outline:3px solid var(--gold)}.domino-tile:disabled,.remi-card:disabled{opacity:.65;cursor:default}.remi-card.red{color:#b32931}.game-choices{display:flex;flex-wrap:wrap;gap:7px}.gamez-play-area h4{font-size:.9rem;margin:14px 0 7px}
.billiard-canvas{display:block;width:100%;max-width:800px;height:auto;aspect-ratio:2/1;border:2px solid var(--gold);border-radius:9px;touch-action:manipulation}.billiard-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0}.billiard-controls label{display:flex;align-items:center;gap:8px;color:var(--gold);font-size:.8rem;font-weight:800}.billiard-controls input{accent-color:var(--gold);min-height:36px}.billiard-controls button:disabled{opacity:.5;cursor:default}
@media(max-width:560px){.quiz-options,.ludo-racks{grid-template-columns:1fr}.ludo-track{grid-template-columns:repeat(13,30px)}.ludo-cell{min-height:30px}.billiard-controls{align-items:flex-start;flex-direction:column}.billiard-controls label{width:100%}.billiard-controls input{flex:1}}
