:root{color-scheme:dark;--bg:#171512;--panel:#211e19;--line:#40382c;--gold:#d9b77a;--text:#f5ead6;--muted:#b0a48d;--ruby:#a64252}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 35% 35%,#353026 0,#171512 65%);color:var(--text);font:15px/1.45 system-ui,sans-serif}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #564a37;border-radius:7px;background:#2d281f;color:var(--text);padding:10px 15px;min-height:44px;transition:background .15s}button:hover{background:#4a3a27}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid #b5dbed;outline-offset:3px}.primary{background:linear-gradient(135deg,#ddbf88,#bb9457);color:#241a0e;border-color:#e7c992;font-weight:750}.primary:hover{background:#edd09b}.wide{width:100%;margin-top:16px}header{max-width:1500px;margin:auto;padding:22px 36px;display:flex;align-items:center;border-bottom:1px solid var(--line);gap:35px}.brand{font-size:12px;color:#e3d2b4;text-decoration:none;letter-spacing:3px;font-weight:750}.brand span{color:var(--gold)}.title{flex:1}.title small,.eyebrow{font-size:10px;letter-spacing:3px;color:var(--gold)}h1{font-family:Georgia,serif;font-weight:400;font-size:30px;line-height:1.2;margin:4px 0}nav{display:flex;gap:8px}nav button{background:transparent}main{max-width:1380px;margin:24px auto;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:38px;padding:0 30px}.arena{min-width:0}.scorebar{display:flex;justify-content:space-between;align-items:center;max-width:760px;margin:auto;padding:0 28px}.team{display:grid;grid-template-columns:auto auto;column-gap:18px;align-items:center;min-width:125px}.team span{font-size:10px;letter-spacing:2px}.team strong{font:36px Georgia,serif;grid-row:span 2}.team small{font-size:11px;color:var(--muted)}.ruby span{color:#ee8796}.round{text-align:center}.round span{font-size:9px;letter-spacing:3px;color:var(--gold)}.round strong{display:block;font:21px Georgia,serif}.round small{font-size:9px;letter-spacing:1px;color:var(--muted)}.boardwrap{position:relative;margin:auto;max-width:min(100%,calc(100dvh - 245px));aspect-ratio:1}.boardwrap canvas{width:100%;height:100%;display:block;touch-action:none}#banner{position:absolute;left:20%;right:20%;top:43%;text-align:center;padding:14px;border:1px solid #d3ae74;background:#1d1812ed;box-shadow:0 15px 40px #0008;border-radius:9px;font:23px Georgia,serif;pointer-events:none;opacity:0;transition:opacity .2s}#banner.show{opacity:1}.boardfoot{display:flex;justify-content:space-between;align-items:center;max-width:740px;margin:auto;color:#948570;font-size:9px;letter-spacing:1.5px}.boardfoot button{border:0;background:none;font-size:11px;color:var(--gold)}aside{background:linear-gradient(140deg,#29241d,#1c1915);border:1px solid var(--line);border-radius:12px;padding:22px;height:fit-content;box-shadow:0 18px 35px #0002}.turnhead small{font-size:10px;color:var(--gold);letter-spacing:2px}.turnhead h2{font:27px Georgia,serif;margin:4px 0}.turnhead p{font-size:13px;margin:5px 0 18px;color:#d4c5a9}.seats{display:grid;gap:6px;margin-bottom:22px}.seat{font-size:11px;display:flex;justify-content:space-between;color:var(--muted);padding:5px 8px;border-left:2px solid #4c4232}.seat.current{border-color:var(--gold);color:var(--text);background:#d1ad7020}.controls{border-top:1px solid var(--line);padding-top:14px}h3{font-size:13px;margin:0 0 15px;font-weight:500}.controltitle{display:flex;justify-content:space-between}.controltitle span{font-size:8px;letter-spacing:1px;color:#ac9b7b}label{display:block;font-size:12px;color:#cbbda5;margin:12px 0 4px}output{float:right;color:var(--gold)}input[type=range]{accent-color:var(--gold);min-width:0;width:100%;height:30px}.sliderrow{display:flex;gap:8px;align-items:center}.sliderrow button{min-width:40px;min-height:36px;padding:3px 10px;font-size:20px}.shotbuttons{display:flex;gap:8px;margin-top:16px}.shotbuttons .primary{flex:1}.primary span{float:right}.hint{color:var(--muted);font-size:11px;line-height:1.5}.check{display:flex;align-items:center;gap:10px;min-height:28px}.check input{width:18px;height:18px;accent-color:var(--gold)}#message{font-size:12px;background:#151310;border-radius:6px;padding:12px;margin-top:17px;min-height:48px;color:#d9c9ac}#message.foul{color:#ffb3ac;border-left:3px solid #ae4b4b}.history{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.history h3{display:flex;justify-content:space-between;align-items:center}.history h3 button{padding:0 8px;min-height:28px;font-size:10px}#history{font-size:11px;color:var(--muted);max-height:130px;overflow:auto}table{width:100%;border-collapse:collapse}td,th{text-align:center;padding:6px;border-bottom:1px solid var(--line)}footer{max-width:1380px;margin:15px auto 20px;padding:0 30px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:2px;color:#8b7e68}dialog{background:linear-gradient(135deg,#2d261d,#1a1713);color:var(--text);border:1px solid #78603f;border-radius:16px;width:min(580px,94vw);max-height:90dvh;padding:32px;box-shadow:0 25px 100px #000a}dialog::backdrop{background:#080604b8;backdrop-filter:blur(5px)}dialog h2{font:34px/1.2 Georgia,serif;margin:12px 0 18px}dialog p{font-size:13px;color:var(--muted)}dialog .close{position:absolute;right:12px;top:10px;font-size:24px;background:transparent;border:0}select,input[type=text],input[type=number],input:not([type]){background:#15120f;border:1px solid #564a37;border-radius:6px;padding:10px;color:var(--text);width:100%;min-height:44px}select{width:100%}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:15px}.setupseat{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px;align-items:center}.setupseat input{width:100%;min-width:0}.setupseat span{font-size:12px}a{color:var(--gold)}[hidden]{display:none!important}.roomseat{border:1px solid var(--line);padding:10px;margin:8px 0;border-radius:8px;display:flex;justify-content:space-between;align-items:center;font-size:13px}#invite{word-break:break-all}#setupError{color:#ffada3}#challengeGoal{font-size:12px;color:var(--gold)}body.reduced *{transition:none!important}
@media(min-width:900px) and (max-height:850px){main{margin:14px auto;gap:24px}aside{padding:14px 18px}.seats{margin-bottom:10px}.turnhead p{margin-bottom:10px}.history{margin-top:10px;padding-top:10px}.history h3{margin-bottom:3px}.hint{margin:7px 0}.controls{padding-top:8px}label{margin-top:7px}header{padding:13px 30px}.boardwrap{max-width:min(100%,calc(100dvh - 205px))}}
@media(max-width:899px){header{padding:12px 16px;gap:10px}.brand{display:none}h1{font-size:23px}.title small{font-size:8px}nav{gap:4px}nav button{padding:7px 9px;font-size:12px}main{padding:0 12px;gap:14px;margin:12px auto;grid-template-columns:1fr}.boardwrap{max-width:min(100%,64dvh)}.scorebar{padding:0 6px}.team{min-width:90px;column-gap:7px}.team strong{font-size:28px}.team span{font-size:8px}.round strong{font-size:17px}.round small{font-size:8px}.boardfoot{display:none}aside{padding:14px;display:grid;grid-template-columns:1fr 1.5fr;gap:10px}.turnhead{grid-column:1}.turnhead h2{font-size:20px}.turnhead p{font-size:11px}.seats{grid-column:1;margin:0;align-self:start}.controls{grid-column:2;grid-row:1/4;padding:0;border:0}.controltitle h3{margin-bottom:5px}.controltitle span{display:none}.sliderrow button{min-height:32px}label{margin:3px 0 0;font-size:11px}input[type=range]{height:25px}.hint{display:none}.shotbuttons{margin-top:8px}.shotbuttons button{font-size:12px;padding:8px}.shotbuttons #cancel{display:none}#message{margin:0;grid-column:1}.history{grid-column:1/-1;margin-top:4px;padding-top:10px}.check{font-size:10px;gap:5px}.history h3{margin-bottom:3px}footer{display:none}#advance,#lobby{grid-column:1/-1}.boardwrap{max-height:48dvh}dialog{padding:25px}.turnhead small{font-size:9px}.seat{padding:4px;font-size:9px}}
@media(max-width:899px) and (orientation:landscape){header{padding:5px 12px}header .title small{display:none}h1{font-size:18px}main{grid-template-columns:minmax(0,1fr) minmax(280px,.85fr);gap:10px;margin:6px}.boardwrap{max-width:calc(100dvh - 110px);max-height:none}.scorebar{height:40px}.round small{display:none}aside{padding:8px}.history{display:none}.turnhead h2{font-size:17px}.team small{font-size:9px}.check{min-height:20px}.sliderrow button{min-height:28px}.seats{gap:1px}.controls label{margin:0}}

@keyframes victoryGlow{0%,100%{text-shadow:0 0 0 #d9b77a00}50%{text-shadow:0 0 25px #d9b77a99}}.victory h2{color:#edcf91;animation:victoryGlow 2s ease-in-out 3}body.reduced .victory h2{animation:none}.sliderrow button{min-width:44px;min-height:44px}.sliderrow input{min-height:36px}

@media(max-width:899px){.boardwrap{width:min(100%,48dvh);max-width:none;max-height:none}}
@media(max-width:899px) and (orientation:landscape){.boardwrap{width:min(100%,calc(100dvh - 110px));max-width:none}}

/* Games navigation uses normal header/menu flow, never the playfield overlay. */
a.return-games{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:6px 10px;box-sizing:border-box;color:inherit;font:600 13px/1.25 system-ui,sans-serif;letter-spacing:normal;text-decoration:underline;text-underline-offset:3px;white-space:nowrap;border-radius:5px}
a.return-games:hover{background:#ffffff14}a.return-games:focus-visible{outline:2px solid currentColor;outline-offset:2px}
header{flex-wrap:wrap}header nav{flex-wrap:wrap;align-items:center}@media(max-width:700px){header nav{width:100%}header .title{flex:1 0 auto}}
