:root{color-scheme:dark;--bg:#0c2023;--felt:#123f3b;--panel:#102d2c;--cream:#f4f0e5;--muted:#afc7bf;--gold:#e8c27a;--line:#ffffff20;--red:#ac3546;--card-w:76px;--card-h:110px;font-family:Segoe UI,system-ui,sans-serif;color:var(--cream);background:var(--bg)}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.38}button:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button{border:1px solid var(--line);border-radius:7px;padding:10px 16px;color:var(--cream);background:#ffffff07;transition:background .18s,box-shadow .18s}button:hover:not(:disabled){background:#ffffff16}.primary{background:var(--gold);color:#222d27;border-color:var(--gold);font-weight:700}.primary:hover:not(:disabled){background:#f3d49a}.quiet{font-size:14px}.masthead{max-width:1500px;margin:auto;padding:24px 32px;display:flex;justify-content:space-between;align-items:center;gap:20px}.brand{font:600 26px Georgia,serif;display:flex;align-items:center;gap:13px}.brand small{display:block;font:11px Segoe UI,sans-serif;letter-spacing:3px;margin-top:6px;color:var(--muted)}.mark{font-size:34px;color:var(--gold)}.header-actions{display:flex;gap:8px}main{max-width:1500px;margin:auto;padding:0 26px 20px}.felt{background:radial-gradient(ellipse at 40% 25%,#1d5146,transparent 70%),var(--felt);border:1px solid #ffffff25;border-radius:18px;display:grid;grid-template-columns:minmax(0,1fr) 265px;box-shadow:0 16px 70px #0003;overflow:hidden}.table-main{padding:28px;min-width:0}.eyebrow{font-size:12px;letter-spacing:2px;color:var(--gold);font-weight:600}h1{font:400 31px Georgia,serif;margin:8px 0 0}h2{font-size:18px;margin:0}h3{font-size:15px}.round-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.round-chip{font-size:13px;border:1px solid var(--line);padding:8px 12px;border-radius:20px;color:var(--muted);white-space:nowrap}.opponents{display:flex;justify-content:space-around;margin:25px auto 14px;gap:15px}.seat{border:1px solid var(--line);border-radius:9px;padding:10px 14px;display:flex;align-items:center;gap:12px;min-width:195px;background:#092c293d}.seat.active{border-color:var(--gold);box-shadow:0 0 0 1px #e8c27a33}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#ffffff12;color:var(--gold);font-family:Georgia,serif}.seat small{display:block;color:var(--muted);font-size:12px;margin-top:4px}.seat .backs{margin-left:auto;letter-spacing:-8px;color:#83aa97;font-size:27px}.center-stage{min-height:206px;display:flex;align-items:center;justify-content:center;gap:34px;padding:18px 0}.piles{display:flex;gap:26px}.pile{display:flex;align-items:center;flex-direction:column;gap:8px}.pile-label{font-size:12px;letter-spacing:1px;color:var(--muted)}.pile .card{box-shadow:3px 3px 0 #ded8c3,5px 5px 0 #ffffff44,0 9px 20px #0003}.turn-note{width:220px}.turn-note h2{font:25px Georgia,serif;color:var(--gold)}.turn-note p{color:var(--muted);font-size:14px;line-height:1.65;margin:9px 0 13px}.card{position:relative;width:var(--card-w);height:var(--card-h);flex:0 0 var(--card-w);padding:7px;border:1px solid #dcdacb;border-radius:7px;background:var(--cream);color:#233737;box-shadow:0 3px 7px #001a1940;user-select:none;touch-action:none;font-family:Georgia,serif;display:block;text-align:left}.card:hover:not(:disabled){background:#fffaf1}.card.red{color:var(--red)}.card .corner{display:flex;flex-direction:column;align-items:center;font:600 19px/1.05 Georgia,serif;position:absolute;left:6px;top:7px;min-width:22px}.card .corner small{font-size:17px}.card .pip{position:absolute;inset:0;display:grid;place-items:center;font-size:36px;pointer-events:none}.card .bottom{left:auto;top:auto;right:6px;bottom:7px;transform:rotate(180deg)}.card.wild{color:#795015;background:#fff3d0}.wild-label{font:700 9px Segoe UI,sans-serif;position:absolute;bottom:7px;left:0;right:0;text-align:center;letter-spacing:1px}.card.back{background:repeating-linear-gradient(45deg,transparent 0 6px,#e8c27a27 6px 7px),repeating-linear-gradient(-45deg,transparent 0 6px,#e8c27a27 6px 7px),#183936;border:5px solid var(--cream);display:grid;place-items:center;color:var(--gold);font-size:35px}.card.back::after{content:'♠';border:1px solid #e8c27a77;border-radius:50%;padding:5px}.card.selected{outline:3px solid var(--gold);transform:translateY(-12px);box-shadow:0 9px 20px #0004}.meld-area{border-top:1px solid var(--line);padding:17px 0}.meld-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.meld-heading small{font-size:13px;color:var(--muted)}.groups{display:flex;flex-wrap:wrap;gap:12px}.meld-slot{min-height:120px;min-width:160px;flex:1;border:1px dashed #ffffff35;border-radius:9px;padding:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:#082e292c}.meld-slot .label{font-size:12px;color:var(--muted)}.meld-slot .cards{display:flex;justify-content:center;max-width:100%;padding-right:30px}.meld-slot .card{--card-w:57px;--card-h:82px;margin-right:-30px}.meld-slot .card .pip{font-size:24px}.meld-slot .card .corner{font-size:16px;left:3px;top:4px}.meld-slot .card .corner small{font-size:13px}.meld-slot .card .bottom{display:none}.meld-slot .card:last-child{margin-right:0}.meld-slot .cards{padding-right:0}.meld-slot.valid{border-style:solid;border-color:#88ba96}.meld-slot.drop-active{outline:2px solid var(--gold);background:#e8c27a22}.empty-slot{font:26px Georgia,serif;color:#a4c5b77a}.table-melds{display:flex;flex-direction:column;gap:10px;margin-top:12px}.table-melds .owner{font-size:13px;color:var(--gold)}.hand-panel{border-top:1px solid var(--line);padding-top:19px}.hand-toolbar{display:flex;justify-content:space-between;align-items:center}.hand-toolbar small{display:block;margin-top:5px;font-size:13px;color:var(--muted)}.hand-display{overflow-x:auto;padding:24px 6px 15px;scrollbar-color:#7c9e8f transparent}.hand{display:flex;justify-content:center;gap:8px;min-width:max-content;min-height:var(--card-h);padding:0 8px;align-items:center}.hand .card{transition:transform .18s,box-shadow .18s}.hand .card:hover:not(.selected){transform:translateY(-6px)}.hand-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}.selection-note{font-size:13px;color:var(--muted);margin-right:auto}.hint{color:var(--muted);font-size:13px;line-height:1.6;margin-bottom:0}.ledger{background:#0927259c;border-left:1px solid var(--line);padding:28px 23px}.ledger>p{font-size:13px;color:var(--muted);line-height:1.6;margin:9px 0 22px}.score-table{width:100%;border-collapse:collapse;font-size:14px}.score-table th{text-align:left;font-size:12px;color:var(--muted);font-weight:400;padding-bottom:12px}.score-table td{padding:13px 0;border-top:1px solid var(--line)}.score-table th:last-child,.score-table td:last-child{text-align:right}.score-table small{display:block;font-size:12px;color:var(--muted);margin-top:4px}.score-table .current td:first-child{color:var(--gold)}.contract-info{margin-top:24px;border:1px solid #e8c27a44;background:#e8c27a08;border-radius:9px;padding:15px}.contract-info p{line-height:1.65;font-size:14px;margin:9px 0 0}.rounds{padding-left:23px;font-size:13px;line-height:2;color:var(--muted)}.rounds .current{color:var(--gold);font-weight:700}.ledger details{margin-top:23px;font-size:14px}.activity{margin-top:25px;padding-top:12px;border-top:1px solid var(--line)}.activity p{font-size:13px;line-height:1.5;color:var(--muted)}.footer{max-width:1500px;margin:auto;display:flex;justify-content:space-between;padding:0 32px 20px;color:#8aa69e;font-size:12px;letter-spacing:1px}.hand-drop-gap{flex:0 0 42px;height:110px;border:2px dashed var(--gold);border-radius:7px;background:#e8c27a15;pointer-events:none}.dragging-card{opacity:.3}.dragging-hand>.card{pointer-events:none}.pointer-ghost{position:fixed;z-index:10000;pointer-events:none;opacity:.95;transform:rotate(5deg);box-shadow:0 12px 25px #0005}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#f4f0e5;color:#203b32;border-radius:9px;padding:13px 22px;box-shadow:0 8px 35px #0005;z-index:10001;max-width:90%;font-size:14px;display:none}#toast.show{display:block}dialog{border:1px solid #66827a;border-radius:16px;background:#163c36;color:var(--cream);padding:30px;max-width:min(620px,92vw);max-height:85vh;box-shadow:0 20px 80px #0008}dialog::backdrop{background:#061c1ccb;backdrop-filter:blur(4px)}dialog h2{font:28px Georgia,serif;margin-bottom:20px}dialog p,dialog li{font-size:15px;line-height:1.65;color:#d2e0d6}dialog .close-row{display:flex;justify-content:flex-end;margin-top:20px}dialog table{width:100%;border-collapse:collapse}dialog td,dialog th{padding:12px;text-align:left;border-bottom:1px solid var(--line)}.welcome{padding:30px;text-align:center}.welcome h2{font:32px Georgia,serif}.welcome p{line-height:1.7;color:var(--muted);max-width:400px}.welcome .primary{margin-top:10px}.pill{font-size:12px;color:var(--gold)}
@media(min-width:1450px){:root{--card-w:82px;--card-h:118px}}
@media(max-width:1100px){.felt{grid-template-columns:minmax(0,1fr) 220px}.table-main{padding:21px}.ledger{padding:24px 17px}:root{--card-w:68px;--card-h:100px}.hand{gap:6px}.brand{font-size:24px}}
@media(max-width:800px){.felt{grid-template-columns:1fr}.ledger{border-left:0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:15px}.ledger>h2,.ledger>p{display:none}.contract-info,.ledger details,.activity{margin-top:0}.activity{grid-column:1/-1}.masthead{padding:19px}.masthead .brand{font-size:22px}.header-actions{gap:5px}.header-actions button{padding:9px;font-size:13px}main{padding:0 12px 18px}.table-main{padding:20px}.hand-display{margin-left:-10px;margin-right:-10px}.hand{justify-content:center}.footer{padding:0 18px 20px;font-size:10px}}
@media(max-width:480px){.brand small{font-size:9px;letter-spacing:2px}.mark{display:none}.header-actions{flex-wrap:wrap;justify-content:flex-end}.header-actions button{padding:7px}.round-chip{display:none}h1{font-size:27px}.opponents{gap:8px}.seat{min-width:0;flex:1;padding:9px;gap:7px}.seat .backs{display:none}.avatar{width:29px;height:29px}.seat strong{font-size:14px}.seat small{font-size:11px}.center-stage{gap:19px}.turn-note{width:145px}.turn-note h2{font-size:22px}.turn-note p{font-size:13px}.piles{gap:17px}:root{--card-w:62px;--card-h:92px}.card .corner{font-size:17px;left:4px}.card .corner small{font-size:14px}.card .bottom{right:4px}.card .pip{font-size:29px}.table-main{padding:16px}.meld-slot{min-width:120px}.hand-actions button{padding:9px 11px}.hand-actions .selection-note{flex-basis:100%}.ledger{padding:19px}.footer span:last-child{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
.pile-button{padding:0;border:0;background:none;border-radius:8px}.pile-button:hover:not(:disabled){background:none}.pile-button:disabled{opacity:.75}.empty-pile{display:grid;place-items:center;background:#ffffff0a;border:1px dashed #8fac9e;color:var(--muted)}.setup{display:flex;gap:12px;text-align:left;justify-content:center;margin:20px 0}.setup label{font-size:13px;color:var(--muted);flex:1}.setup input,.setup select{display:block;width:100%;margin-top:7px}input,select{background:#0c2926;border:1px solid #739186;border-radius:6px;color:var(--cream);padding:11px 12px;font:16px Segoe UI,sans-serif;min-width:0}input:focus,select:focus{outline:2px solid var(--gold);outline-offset:2px}.welcome-actions{display:flex;gap:10px;justify-content:center;align-items:baseline}.join-row{display:flex;gap:8px;margin-top:20px}.join-row input{flex:1;max-width:270px}.welcome .small-note{font-size:13px}.lobby-list{list-style:none;text-align:left;padding:0;margin:25px 0}.lobby-list li{padding:12px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:20px}.lobby-list span{font-size:13px;color:var(--muted)}.welcome{max-width:100%;width:510px}.opponents{flex-wrap:wrap}.seat{flex:0 1 auto}.buy-notice{border-left:2px solid var(--gold);padding-left:10px}.pointer-ghost.selected{transform:rotate(5deg)}@media(max-width:480px){.welcome{padding:25px 0}.welcome h2{font-size:29px}.welcome-actions{flex-wrap:wrap}.welcome-actions button{flex:1;white-space:nowrap}.join-row input{width:170px}.meld-heading{gap:12px;align-items:start}.meld-heading small{max-width:130px;font-size:12px}.seat{flex:1 1 40%}.setup{gap:10px}.setup label:first-child{flex:1.3}.hand .card{flex-shrink:0}}

.hand-scroll-controls{display:none}@media(max-width:1100px){.hand-scroll-controls{display:flex;justify-content:space-between;align-items:center;gap:8px}.hand-scroll-controls span{font-size:12px;color:var(--muted)}.hand-scroll-controls button{padding:7px 10px}}@media(max-width:480px){.card .corner{font-size:16px;line-height:1;top:5px}.card .corner small{font-size:12px}.card .corner.bottom{top:auto;bottom:5px}.card .pip{font-size:26px;transform:translateX(3px)}}

.brand .release{display:block;font:12px Segoe UI,sans-serif;letter-spacing:.3px;margin-top:6px;color:var(--gold)}

/* Compact desktop table: keep the hand and controls in view on laptop screens. */
@media (min-width:801px) and (min-height:700px){
  :root{--card-w:66px;--card-h:94px}
  .masthead{padding:8px 26px;min-height:62px}
  .brand{font-size:23px;gap:10px;line-height:1}
  .brand small{display:flex;align-items:center;gap:12px;margin-top:4px;font-size:9px;letter-spacing:2px}
  .brand .release{display:inline;font-size:11px;margin-top:0;letter-spacing:.2px}
  .mark{font-size:29px}
  .header-actions button{padding:8px 13px}
  main{padding:0 18px 8px}
  .felt{border-radius:14px}
  .table-main{padding:12px 22px 10px}
  .ledger{padding:16px 18px}
  .round-heading h1{font-size:26px;margin-top:3px}
  .round-chip{padding:5px 10px}
  .opponents{margin:8px auto 3px}
  .seat{padding:6px 11px;min-width:180px}
  .avatar{width:30px;height:30px}
  .center-stage{min-height:124px;padding:2px 0;gap:24px}
  .piles{gap:18px}
  .turn-note p{margin:4px 0 7px;line-height:1.4}
  .meld-area{padding:7px 0}
  .meld-heading{margin-bottom:5px}
  .meld-slot{min-height:72px;padding:5px;gap:3px}
  .empty-slot{font-size:20px}
  .hand-panel{padding-top:7px}
  .hand-toolbar small{margin-top:2px}
  .hand-display{padding:9px 6px 6px}
  .hand{min-height:var(--card-h);gap:6px}
  .hand-actions{margin-top:5px}
  .hint{line-height:1.35;margin-top:5px}
  .ledger>p{margin:5px 0 10px;line-height:1.35}
  .score-table td{padding:7px 0}
  .contract-info{margin-top:10px;padding:9px}
  .contract-info p{line-height:1.4;margin-top:4px}
  .ledger details{margin-top:10px}
  .activity{margin-top:10px;padding-top:5px}
  .activity p{line-height:1.3}
  .footer{padding:0 24px 6px}
}

.hand-drop-gap{animation:gap-arrive 150ms ease-out both}
@keyframes gap-arrive{from{opacity:.25}to{opacity:1}}

/* Interface standard from Card Game Interface Requirements v1.4 */
.felt{position:relative}.table-main{display:flex;flex-direction:column;min-height:0}.round-heading{min-height:58px}.round-heading>div{max-width:calc(50% - 110px)}
.table-playfield{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 190px minmax(0,1fr);gap:10px;align-items:stretch;min-height:260px;flex:1}
.player-rail{display:grid;grid-auto-rows:minmax(0,1fr);align-items:center;gap:6px;min-width:0}.player-zone{display:grid;grid-template-columns:minmax(0,1fr) 86px;align-items:center;gap:6px;min-width:0}.player-rail.right .player-zone{grid-template-columns:86px minmax(0,1fr)}.player-rail.right .player-zone .seat{grid-column:1;grid-row:1}.player-rail.right .player-zone .player-melds{grid-column:2;grid-row:1}
.player-zone .seat{min-width:0;padding:5px;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;border-radius:10px}.player-zone .seat strong{font-size:12px}.player-zone .seat small{font-size:10px;line-height:1.2}.player-zone .avatar{width:30px;height:30px;margin:0 0 3px;display:grid;place-items:center;overflow:hidden;font-size:19px}.player-melds{min-height:58px;padding:5px;border:1px solid #ffffff1f;border-radius:8px;background:#062b2726;overflow:auto}.player-melds>.owner{font-size:11px;color:var(--gold);margin-bottom:4px}.player-melds>.groups{gap:4px}.player-melds .meld-slot{min-width:100px;min-height:56px;padding:4px}.player-melds .meld-slot .label{font-size:10px}.player-melds .meld-slot .card{--card-w:34px;--card-h:47px;margin-right:-20px;padding:2px}.player-melds .meld-slot .card .pip{font-size:16px}.player-melds .meld-slot .card .corner{font-size:11px;left:2px;top:2px}.player-melds .meld-slot .card .corner small{font-size:9px}.player-melds .empty-slot{font-size:18px}.empty-melds{display:block;text-align:center;color:var(--muted);font-size:10px;padding:16px 2px}
.player-zone.self-player{margin-top:auto}.self-seat{background:#ffffff09;border:1px solid var(--line)}.seat.active,.score-table tr.current{background:linear-gradient(135deg,#866d34,#4f5330);border-color:#f0d17e;color:#fff3c7;box-shadow:0 0 0 2px #f3d88018}.seat.active small{color:#fff3c7}.seat.active .avatar{background:#5b683c;border-color:#fff2ba}
.table-playfield>.center-stage{min-height:0;display:flex;flex-direction:column;gap:8px;padding:0}.pile-title{text-align:center;min-height:44px}.pile-title span{display:block;font:600 20px Georgia,serif}.pile-title small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.table-playfield .piles{gap:18px}.table-playfield .turn-note{width:100%;text-align:center}.table-playfield .turn-note h2{font-size:17px;margin:0}.table-playfield .turn-note p{font-size:12px;line-height:1.35;margin:4px 0}.table-playfield .turn-note button{font-size:12px;padding:7px 9px}
.contract-tray{padding:9px 0;margin-top:6px}.contract-tray .meld-heading{margin-bottom:7px}.contract-tray .meld-slot{min-height:78px}.contract-tray .groups{flex-wrap:nowrap;overflow-x:auto}
.hand-panel{padding-top:10px}.hand-toolbar{position:relative;min-height:48px}.hand-toolbar>div:first-child{flex:1;min-width:0}.hand-controls{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;width:380px;max-width:calc(100% - 300px)}.hand-controls button{font-size:12px;padding:8px 9px;white-space:nowrap}.hand-actions{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}.hand-actions .selection-note{grid-column:1}.hand-actions>[data-action=left],.hand-actions>[data-action=right],.hand-actions>[data-action=clear]{grid-row:2}.hand-reactions{grid-column:2;grid-row:1/3;display:flex;justify-content:center;gap:4px}.hand-reaction{display:grid;place-items:center;width:32px;height:32px;padding:0;font-size:20px}.reaction-bubble{position:absolute;right:-5px;top:-8px;z-index:4;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#fff4d9;border:1px solid #dfbf6d;box-shadow:0 2px 8px #092c2350;font:20px/1 "Segoe UI Emoji",sans-serif}.self-table-reaction{position:absolute;left:50%;bottom:5px;transform:translateX(-50%);z-index:5}.self-table-reaction .reaction-bubble{position:static;width:52px;height:52px;border-radius:14px;font-size:35px}
.result-card{width:min(620px,100%);text-align:center;padding:16px}.result-card h2{font:28px Georgia,serif;margin:8px 0}.result-card p{color:var(--muted)}.result-table{width:100%;border-collapse:collapse;margin:14px 0 18px}.result-table th,.result-table td{padding:9px;border-bottom:1px solid var(--line);text-align:left}.result-table th:not(:first-child),.result-table td:not(:first-child){text-align:center}.result-table .winner{color:var(--gold)}
.setup-avatar-picker{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:12px}.avatar-preview{display:flex;align-items:center;gap:8px}.avatar-preview [role=img],.header-actions [role=img],.lobby-avatar [role=img]{font-family:"Segoe UI Emoji",sans-serif}.avatar-preview [role=img]{font-size:25px}.lobby-avatar{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#345a4a;margin-right:8px}.avatar-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}.avatar-tabs [aria-selected=true]{background:var(--gold);color:#21382d}.avatar-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(75px,1fr));gap:8px;max-height:50dvh;overflow:auto}.avatar-options button{display:grid;justify-items:center;gap:4px;padding:9px}.avatar-options button span{font-size:29px}.avatar-options .chosen{outline:2px solid var(--gold)}

/* Authenticated online table chat */
.table-chat{position:fixed;right:14px;bottom:10px;z-index:40;font:14px Segoe UI,sans-serif;color:#243b30}.table-chat-panel{width:min(340px,calc(100vw - 28px));height:min(440px,calc(100dvh - 80px));display:flex;flex-direction:column;border:1px solid #8d9f88;border-radius:14px;background:#fffdf5;box-shadow:0 8px 30px #0004;overflow:hidden}.table-chat-panel header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:#244b3a;color:#fff7df}.table-chat-panel header small{display:block;margin-top:4px;font-size:11px;color:#c8dacb}.table-chat-panel header button{border:0;background:transparent;color:inherit;font-size:24px;padding:0 6px}.chat-messages{flex:1;overflow:auto;padding:12px;background:#f4f1e7}.chat-empty{text-align:center;color:#6c7a70;margin-top:35px}.chat-message{margin:0 0 10px;padding:8px 10px;border-radius:9px;background:#fff;box-shadow:0 1px 3px #0001}.chat-message.chat-own{background:#e8f1df}.chat-message div{display:flex;justify-content:space-between;gap:10px}.chat-message time{font-size:10px;color:#718071}.chat-message p{white-space:pre-wrap;overflow-wrap:anywhere;margin:5px 0 0}.table-chat-panel form{padding:10px 12px;border-top:1px solid #d4ddc9}.table-chat-panel label{display:block;font-size:12px;margin-bottom:5px}.table-chat-panel textarea{width:100%;resize:none;font:14px Segoe UI,sans-serif;border:1px solid #aab99f;border-radius:7px;background:#fff;padding:8px;color:#243b30}.table-chat-panel form>div{display:flex;align-items:center;justify-content:space-between;margin-top:6px}.table-chat-panel form small{font-size:10px;color:#62735b}.table-chat-panel .primary{font-size:13px;padding:7px 15px}.table-chat-panel form>.chat-emoji-picker{display:grid;grid-template-columns:repeat(8,1fr);gap:3px;margin:6px 0;max-height:120px;overflow:auto}.chat-emoji-picker button,.chat-emoji-toggle{padding:5px;background:#fff;color:#243b30;border-color:#cad4c6}.chat-error{color:#9a2828;margin:5px 0 0;font-size:12px}.chat-toggle{float:right;margin-top:8px;background:#f6e2a7;color:#263a30;border:1px solid #8c7440;box-shadow:0 3px 12px #0003}.chat-toggle b{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:10px;background:#a52d35;color:#fff;font-size:11px}.table-chat [hidden]{display:none!important}

@media(min-width:801px) and (max-height:1060px){.felt:has(.table-playfield){min-height:calc(100dvh - 95px)}.table-main:has(.table-playfield){padding:12px}.table-main:has(.table-playfield) .round-heading{padding-bottom:4px}.table-main:has(.table-playfield) .hand{min-height:100px;padding-top:10px}.table-main:has(.table-playfield) .hand .card{--card-w:66px;--card-h:94px}.ledger{overflow:auto;min-height:0}.hint{margin-top:3px}}
@media(min-width:801px) and (max-width:1100px){.table-playfield{grid-template-columns:minmax(0,1fr) 125px minmax(0,1fr);gap:4px}.player-zone{grid-template-columns:minmax(0,1fr) 46px;gap:2px}.player-rail.right .player-zone{grid-template-columns:46px minmax(0,1fr)}.player-zone .avatar,.player-zone .backs{display:none}.player-zone .seat strong{font-size:10px}.player-zone .seat small{font-size:9px}.hand-toolbar{padding-bottom:42px}.hand-controls{top:auto;bottom:0;transform:translateX(-50%);max-width:100%}}
@media(max-width:800px){.table-playfield{grid-template-columns:1fr 1fr;gap:7px}.table-playfield>.center-stage{grid-column:1/-1;grid-row:1;min-height:185px}.player-rail{grid-row:2;display:flex;flex-direction:column;justify-content:flex-start}.player-zone,.player-rail.right .player-zone{display:grid;grid-template-columns:minmax(0,1fr) 105px}.player-rail.right .player-zone .seat{grid-column:2}.player-rail.right .player-zone .player-melds{grid-column:1}.player-zone .seat{display:flex}.player-zone.self-player .seat{align-items:center}.player-zone .backs{display:none}.player-melds{min-height:44px}.round-heading>div{max-width:none}.pile-title{position:static}.hand-toolbar{padding-bottom:42px}.hand-controls{top:auto;bottom:0;transform:translateX(-50%);max-width:100%}.ledger{max-height:none}.felt{grid-template-columns:1fr}.hand-reactions{flex-wrap:wrap}.table-chat{right:8px;bottom:8px}}
@media(max-width:520px){.hand-controls{width:100%;gap:4px}.hand-controls button{white-space:normal;font-size:11px;padding:7px 5px}.hand-actions{grid-template-columns:1fr}.hand-reactions{grid-column:1;grid-row:3}.table-playfield{grid-template-columns:1fr}.player-rail{grid-column:1}.player-rail.right{grid-row:3}.player-zone.self-player .seat{display:flex}.setup-avatar-picker{flex-wrap:wrap}.table-chat-panel{width:calc(100vw - 16px)}}

/* Interface standard v1.4: every desktop state stays inside the browser viewport. */
@media(min-width:801px){
  html,body,#app{height:100%;overflow:hidden}
  #app{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
  .masthead{width:100%;max-width:1500px;padding:7px 18px;min-height:54px}
  .brand{font-size:22px}.mark{font-size:28px}.header-actions button{padding:7px 11px}
  #app>main{width:100%;height:100%;max-height:100%;min-height:0;overflow:hidden;padding:0 12px 5px}
  .felt{height:100%;min-height:0;border-radius:12px}
  .table-main,.ledger{min-height:0;overflow:hidden}
  .footer{width:100%;padding:1px 18px 4px;min-height:17px;line-height:12px}
  .felt:has(.table-playfield){min-height:0}
  .table-main:has(.table-playfield){padding:8px 14px 6px}
  .round-heading{min-height:42px}
  .round-heading h1{font-size:23px;margin-top:2px}
  .round-chip{padding:4px 9px;font-size:11px}
  .table-playfield{min-height:0}
  .pile-title{min-height:32px}.pile-title span{font-size:17px}.pile-title small{margin-top:1px}
  .table-playfield .turn-note p{margin:2px 0;line-height:1.25}
  .contract-tray{padding:5px 0;margin-top:3px}.contract-tray .meld-heading{margin-bottom:4px}.contract-tray .meld-slot{min-height:62px}
  .hand-panel{padding-top:5px}.hand-toolbar{min-height:39px}.hand-toolbar small{margin-top:1px}
  .hand-display{padding:5px 4px 3px;overflow:hidden}.hand{padding:0 4px;gap:5px}
  .hand-scroll-controls{display:none!important}
  .hand-actions{margin-top:3px;gap:5px}.hint{margin:2px 0 0;line-height:1.25}
  .ledger{padding:10px 13px}.ledger>p{margin:3px 0 7px;line-height:1.25}
  .score-table th{padding-bottom:5px}.score-table td{padding:5px 0}.score-table small{margin-top:1px}
  .contract-info{margin-top:7px;padding:7px}.contract-info p{margin-top:2px;line-height:1.3}
  .ledger details{margin-top:7px}.activity{margin-top:7px;padding-top:3px}.activity h3{margin:5px 0}.activity p{margin:5px 0;line-height:1.25}
  dialog{padding:0;max-height:calc(100dvh - 30px);overflow:hidden}
  dialog .dialog-scroll{padding:22px 26px 8px;overflow:auto;min-height:0}
  dialog .close-row{flex:0 0 auto;margin:0;padding:10px 20px;background:#163c36;border-top:1px solid var(--line)}
  .table-chat-panel{height:min(440px,calc(100dvh - 28px))}
  .table-main:has(.result-card) .hand-panel,.table-main:has(.result-card) .player-rail{display:none}
  .table-main:has(.result-card) .table-playfield{grid-template-columns:1fr}
}

@media(min-width:801px) and (max-width:1200px){
  .felt{grid-template-columns:minmax(0,1fr) 205px}
  .table-main{padding-left:12px;padding-right:12px}.ledger{padding-left:10px;padding-right:10px}
  .hand{gap:0}.hand .card{margin-right:-10px}.hand .card:last-child{margin-right:0}
  .hand-controls{width:340px;max-width:calc(100% - 255px)}
}

@media(min-width:801px) and (max-width:950px){
  :root{--card-w:53px;--card-h:76px}
  .table-main:has(.table-playfield) .hand{min-height:76px;padding-top:0}
  .table-main:has(.table-playfield) .hand .card{--card-w:53px;--card-h:76px;margin-right:-13px}
  .table-main:has(.table-playfield) .hand .card:last-child{margin-right:0}
  .table-playfield{grid-template-columns:minmax(0,1fr) 116px minmax(0,1fr)}
  .hand-controls{width:300px;max-width:100%}
}

@media(min-width:801px) and (max-height:820px){
  :root{--card-w:59px;--card-h:82px}
  .masthead{min-height:48px;padding-top:4px;padding-bottom:4px}.brand{font-size:20px}.brand small{margin-top:2px}.brand .release{margin-top:0}
  main{padding-bottom:3px}.footer{font-size:10px;min-height:14px;padding-bottom:2px}
  .table-main:has(.table-playfield){padding-top:5px;padding-bottom:3px}
  .round-heading{min-height:34px}.round-heading h1{font-size:20px}.round-heading .eyebrow{font-size:10px}
  .table-playfield{grid-template-columns:minmax(0,1fr) 140px minmax(0,1fr);gap:4px}
  .player-rail{gap:3px}.player-zone,.player-rail.right .player-zone{grid-template-columns:minmax(0,1fr) 64px;gap:2px}.player-rail.right .player-zone{grid-template-columns:64px minmax(0,1fr)}
  .player-zone .seat{padding:3px}.player-zone .avatar{width:23px;height:23px;font-size:15px}.player-zone .seat strong{font-size:10px}.player-zone .seat small{font-size:8px}
  .player-melds{min-height:42px;padding:2px}.empty-melds{padding:9px 1px}.player-melds>.owner{font-size:9px}
  .pile-title{min-height:24px}.pile-title span{font-size:15px}.pile-title small{display:none}
  .table-playfield>.center-stage{gap:3px}.table-playfield .piles{gap:10px}.table-playfield .turn-note h2{font-size:14px}.table-playfield .turn-note p{font-size:10px}.table-playfield .turn-note button{padding:5px 7px}
  .contract-tray{padding:3px 0;margin-top:1px}.contract-tray .meld-heading{margin-bottom:2px}.contract-tray .meld-heading h2{font-size:14px}.contract-tray .meld-heading small{font-size:10px}.contract-tray .meld-slot{min-height:47px;padding:2px}.contract-tray .meld-slot .card{--card-w:38px;--card-h:52px;margin-right:-22px}
  .hand-panel{padding-top:3px}.hand-toolbar{min-height:33px}.hand-toolbar h2{font-size:14px}.hand-toolbar small{font-size:10px}.hand-toolbar>button{padding:5px 8px;font-size:11px}
  .hand-display{padding:3px 3px 1px}.hand{min-height:82px!important;padding-top:0!important}
  .table-main:has(.table-playfield) .hand .card{--card-w:59px;--card-h:82px}
  .hand .card{margin-right:-8px}.card .corner{font-size:16px}.card .corner small{font-size:13px}.card .pip{font-size:27px}
  .hand-actions{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:3px}.hand-actions button{padding:5px 7px;font-size:10px}.hand-reaction{width:27px;height:27px;font-size:17px}.selection-note{font-size:10px}.hint{display:none}
  .ledger{padding-top:7px;padding-bottom:5px}.ledger h2{font-size:15px}.ledger>p{display:none}.score-table{font-size:11px}.score-table th{font-size:10px}.score-table td{padding:3px 0}.score-table small{font-size:9px}
  .contract-info{margin-top:4px;padding:5px}.contract-info p{font-size:11px;line-height:1.2}.ledger details{display:none}.activity{margin-top:4px}.activity p{font-size:10px;margin:3px 0}.activity p:nth-of-type(n+3){display:none}
  .welcome{padding:12px}.welcome h2{font-size:25px;margin:10px 0}.welcome p{line-height:1.35;margin:7px auto}.setup{margin:9px 0}.setup input,.setup select{padding:8px}.setup-avatar-picker{gap:7px}.join-row{margin-top:9px}.lobby-list{display:grid;grid-template-columns:1fr 1fr;column-gap:12px;margin:10px 0}.lobby-list li{padding:6px 0}
  .result-card{padding:5px}.result-card h2{font-size:23px;margin:3px 0}.result-card p{margin:4px}.result-table{margin:5px 0 7px}.result-table th,.result-table td{padding:4px 7px}
}

/* Shared Covenant Bridge logo dimensions, matching Hang 10. */
.brand{gap:14px}.brand .company-logo{display:block;width:237.5px;height:auto;flex-shrink:0;background:#f6f4ec;border-radius:6px}.brand>div{font-size:20px}
body:has(.hand-panel) .brand .company-logo{width:186.25px;height:65px;object-fit:fill}
.masthead{min-height:88px}.brand .release{white-space:nowrap}
@media(max-width:800px){.masthead{flex-wrap:wrap}.brand{max-width:100%;gap:10px}.brand>div{font-size:16px}.brand .company-logo{max-width:calc(100vw - 165px)}}
@media(min-width:801px){body:has(.hand-panel) .masthead{min-height:70px}.masthead{padding-block:5px}}

/* Release 1.0.7: use the shared Hang 10 screen format. */
:root{--paper:#f6f4ec;--ink:#21382d;--page-muted:#69776e;--page-line:#ddded3}
body{background:var(--paper);color:var(--ink)}
.masthead{max-width:1420px;min-height:64px;padding:6px 26px;color:var(--ink)}
.company-brand{flex:0 0 190px;min-width:145px;line-height:0}
.company-brand img{display:block;width:190px;height:auto;object-fit:contain;object-position:left center}
.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap}
.header-actions .quiet{color:var(--ink);border-color:var(--page-line);background:transparent;padding:9px 12px}
.header-actions .quiet:hover:not(:disabled){background:#e8e9de}
.release-number{order:-1;white-space:nowrap;padding:5px 8px;border-radius:20px;background:#e6e9dd;color:#45624f;font-size:12px;font-weight:700}
main{max-width:1420px;padding-inline:22px}
.felt{position:relative;padding:18px;gap:18px;border:1px solid #102c22;border-radius:22px;grid-template-columns:minmax(0,1fr) 270px;grid-template-rows:auto minmax(0,1fr);background:radial-gradient(ellipse at 47% 20%,#456b57 0%,#315946 43%,#1b3d30 100%);box-shadow:inset 0 2px 2px #b6c8a65c,inset 0 0 0 7px #365746,inset 0 0 0 8px #789175,inset 0 0 0 10px #173d2e,inset 0 15px 22px #061f1b55,0 7px 0 #152e23,0 9px 0 #0b231a,0 17px 24px #102a2938;color:#faf7df}
.felt-brand{grid-column:1/-1;grid-row:1;text-align:center;line-height:1;pointer-events:none;text-shadow:0 2px 2px #071d1970}
.felt-brand>span{display:block;font:30px/1.05 Georgia,serif;color:#fff4d5}
.felt-brand>small{display:block;margin-top:4px;font:10px/1.4 Segoe UI,sans-serif;letter-spacing:1.5px;color:#c5d6c6}
.table-main{grid-column:1;grid-row:2}.ledger{grid-column:2;grid-row:2}
.round-heading{padding:4px 5px 10px;border-bottom:1px solid #809e8650}
.round-chip{border-color:#d6bc6750;background:#0b2e2440;color:#fae1a5}
.felt .quiet{border-color:#819b7960;color:#ecf1df}.felt .quiet:hover:not(:disabled){background:#38634e}
.primary{background:linear-gradient(135deg,#ffe39a,#e5ba54);color:#23372b;border-color:transparent;box-shadow:0 2px 0 #806223,0 4px 12px #102b2430}
.primary:hover:not(:disabled){background:linear-gradient(135deg,#fff0b1,#f4ca68);box-shadow:0 2px 0 #806223,0 5px 18px #ffd56835}
.ledger{align-self:stretch;border:1px solid #6b87644f;border-radius:12px;background:linear-gradient(135deg,#203e32e6,#173528f0);box-shadow:inset 0 2px 8px #071d1945,0 1px 0 #9bb38a3d}
.footer{color:var(--page-muted)}

/* Hang 10 opening format: introduction above a profile and game-options split. */
.felt:has(.setup-welcome) .round-heading{display:none}
.felt:has(.setup-welcome) .table-main{padding:6px 18px 10px}
.felt:has(.setup-welcome) .center-stage{min-height:0;padding:0}
.setup-welcome{width:100%;max-width:820px;padding:0;text-align:left}
.setup-intro{text-align:center}.setup-intro .eyebrow{color:#e7ca82}.setup-intro h2{margin:7px 0 9px;font:34px Georgia,serif;color:#ffebbb;text-shadow:0 2px 12px #15342970}.setup-intro p{max-width:610px;margin:0 auto 14px;font-size:14px;line-height:1.45;color:#c4d4c8}
.setup-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px}
.setup-profile,.setup-controls{min-width:0}.setup-profile h3{margin:13px 0 7px;font:16px Georgia,serif;color:#fff3bf}
.setup-label{display:block;margin-bottom:6px;font-size:13px;color:#c9d9c9}
.setup-welcome input,.setup-welcome select{width:100%;border:1px solid #809e8660;border-radius:6px;background:#204839;color:#fff7df;padding:9px 10px}
.setup-avatar-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:7px}
.setup-avatar-tabs .quiet{padding:6px 4px;font-size:11px}.setup-avatar-tabs [aria-selected=true]{background:#e8bf58;color:#21382d;border-color:#e8bf58}
.setup-avatar-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
.setup-avatar{display:grid;justify-items:center;gap:2px;min-width:0;padding:5px 2px;border:1px solid #809e8660;border-radius:6px;background:#1d4939;color:#f7f0d6}
.setup-avatar[hidden]{display:none}
.setup-avatar span{font:23px/1 "Segoe UI Emoji",sans-serif}.setup-avatar small{font-size:10px;overflow-wrap:anywhere}.setup-avatar.chosen{outline:2px solid #e8bf58;outline-offset:1px;background:#3f624b}
.opening-options{margin:0 0 12px;padding:11px;border:1px solid #809e8660;border-radius:8px}.opening-options legend{padding:0 6px;color:#fff3bf;font:15px Georgia,serif}.opening-options p{margin:8px 0 0;font-size:11px;line-height:1.4;color:#c4d4c8}
.setup-options{display:block;margin:0}.setup-options label{display:block;color:#c9d9c9;font-size:12px}.setup-options select{margin-top:5px}
.setup-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.setup-actions button{padding:10px 8px}
.setup-divider{display:flex;align-items:center;gap:9px;margin:12px 0;color:#aebfaf;font-size:11px}.setup-divider::before,.setup-divider::after{content:"";height:1px;flex:1;background:#809e8645}
.join-room>div{display:flex;gap:7px}.join-room input{min-width:0}.join-room button{white-space:nowrap;padding-inline:10px}
.setup-return{margin:8px 0 0!important;max-width:none!important;font-size:10px!important;line-height:1.35!important;color:#afc2b2!important}
.felt:has(.setup-welcome) .ledger{padding:14px}.felt:has(.setup-welcome) .ledger h2{font-size:22px}.felt:has(.setup-welcome) .ledger>p{margin-bottom:7px}.felt:has(.setup-welcome) .rounds{columns:2;column-gap:14px;margin:6px 0;padding-left:20px;line-height:1.35}.felt:has(.setup-welcome) .rounds li{break-inside:avoid;padding:2px 0}.felt:has(.setup-welcome) .activity{margin-top:9px;padding-top:7px}

/* Room, table, and result formats mirror Hang 10's hierarchy. */
.lobby{max-width:500px}.lobby h2{margin:8px 0 10px;font-size:31px}.room-code{color:#ffe3a1;letter-spacing:2px}.lobby-list{margin:14px 0}.lobby-list li{padding:8px 0}.lobby-back{display:block;margin:10px auto 0}
.felt:has(.table-playfield){grid-template-rows:minmax(0,1fr);padding:12px;gap:14px}
.felt:has(.table-playfield)>.felt-brand{position:absolute;left:50%;top:15px;transform:translateX(-50%);width:300px;z-index:2}
.felt:has(.table-playfield)>.felt-brand>span{font-size:27px;white-space:nowrap}
.felt:has(.table-playfield) .round-heading{min-height:60px}
.felt:has(.table-playfield)>.table-main{grid-row:1}.felt:has(.table-playfield)>.ledger{grid-row:1}
.table-playfield{padding-bottom:4px}.player-melds{box-shadow:inset 0 1px 4px #071d1928,0 2px 1px #7d977b1c}
.self-seat{background:#ffffff0a;border-color:#809e8650}
.result-card{position:relative;border:1px solid #d9c57650;border-radius:18px;background:radial-gradient(ellipse at 50% 0,#ae924730,#103c2d 75%);box-shadow:0 10px 30px #08271e38}
.result-card h2{color:#ffe4a0;text-shadow:0 2px 8px #07291f60}

@media(min-width:801px) and (max-width:1100px){.felt{grid-template-columns:minmax(0,1fr) 220px;gap:10px}.company-brand{flex-basis:160px}.company-brand img{width:160px}.header-actions{gap:5px}.header-actions .quiet{padding:8px;font-size:12px}.release-number{font-size:10px}}
@media(min-width:801px) and (max-height:700px){.masthead{min-height:55px}.company-brand img{width:155px}.felt:has(.setup-welcome) .table-main{padding-block:2px}.setup-intro h2{font-size:27px;margin:3px 0 5px}.setup-intro p{margin-bottom:7px}.setup-profile h3{margin:7px 0 5px}.setup-avatar-tabs{margin-bottom:4px}.setup-avatar{padding-block:3px}.setup-avatar span{font-size:20px}.opening-options{margin-bottom:7px;padding:7px}.setup-divider{margin:7px 0}.setup-return{margin-top:4px!important}.felt:has(.setup-welcome) .activity{display:none}.felt:has(.setup-welcome) .rounds li{padding:0}}
@media(max-width:800px){.masthead{min-height:0;padding:10px 14px;flex-wrap:wrap}.company-brand{flex-basis:160px}.company-brand img{width:160px}.header-actions{margin-left:auto;flex-wrap:wrap;gap:5px}.header-actions .quiet{padding:7px 8px;font-size:12px}.release-number{font-size:10px;padding:4px 6px}main{padding-inline:12px}.felt{grid-template-columns:1fr;grid-template-rows:auto auto auto;gap:12px;padding:16px 13px}.felt-brand{grid-column:1;grid-row:1}.felt-brand>span{font-size:26px}.table-main{grid-column:1;grid-row:2}.ledger{grid-column:1;grid-row:3}.felt:has(.table-playfield)>.felt-brand{position:static;transform:none;width:auto}.felt:has(.table-playfield)>.table-main{grid-row:2}.felt:has(.table-playfield)>.ledger{grid-row:3}.setup-columns{grid-template-columns:1fr;gap:14px}.setup-welcome{max-width:520px}.felt:has(.setup-welcome) .table-main{padding:2px}.felt:has(.setup-welcome) .rounds{columns:2}.lobby{padding-block:5px}}
@media(max-width:420px){.company-brand{flex-basis:145px}.company-brand img{width:145px}.header-actions{width:100%;justify-content:flex-end}.setup-avatar-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.setup-actions{grid-template-columns:1fr}.join-room>div{align-items:stretch}.join-room button{padding-inline:8px}.felt:has(.setup-welcome) .rounds{font-size:11px;column-gap:8px}.footer{font-size:9px}}

/* Match the Hang 10 opening screen, including its profile and sidebar proportions. */
body{font-family:Arial,Helvetica,sans-serif}
h1,h2,h3{font-family:Georgia,serif;font-weight:400}
.felt:has(.setup-welcome){background:radial-gradient(ellipse at 42% 30%,#426451,#274b3b 85%);box-shadow:inset 0 0 0 1px #17392c,0 7px 22px #183d3015;gap:20px}
.felt:has(.setup-welcome) .table-main{padding:4px 6px 10px}
.felt:has(.setup-welcome) .center-stage{display:block}
.setup-welcome{max-width:none!important;width:100%!important}
.setup-intro{text-align:left}
.setup-intro .eyebrow{color:#c4d4c8;font-size:12px;letter-spacing:1.3px}
.setup-intro h2{font-size:36px;margin:10px 0;color:#fff0c8;text-shadow:none}
.setup-intro p{max-width:none;margin:0 0 22px;font-size:14px;line-height:1.5}
.setup-columns{gap:26px}
.setup-avatar-picker{display:block}
.setup-profile h3,.setup-label{font:bold 14px Arial,sans-serif;color:#fff3db}
.setup-profile h3{margin:16px 0 9px}
.setup-welcome input,.setup-welcome select{background:#f6f8ef;color:#21382d;border-color:#b8c6b0;min-height:41px;font-size:16px}
.setup-avatar-tabs{gap:6px;margin-bottom:8px}
.setup-avatar-tabs .quiet{padding:9px 5px;font-size:13px}
.setup-avatar-grid{gap:7px}
.setup-avatar{background:#e3eadd;color:#21382d;border:2px solid transparent;border-radius:9px;padding:8px 3px;gap:4px;min-height:65px}
.setup-avatar span{font-size:29px;line-height:1.1}
.setup-avatar small{font-size:11px}
.setup-avatar.chosen{background:#fff1c6;border-color:#e8bf58;outline:none;box-shadow:0 0 0 1px #e8bf58}
.opening-options{padding:15px;margin-bottom:16px}
.opening-options legend{font:bold 14px Arial,sans-serif}
.opening-options p{font-size:12px;line-height:1.5;margin-top:12px}
.setup-options label{font-size:13px}
.setup-actions{grid-template-columns:1fr;gap:8px}
.setup-actions button{font-size:14px;padding:12px}
.setup-divider{font-size:12px;margin:17px 0}
.setup-return{font-size:11px!important;line-height:1.5!important;margin-top:12px!important}
.felt:has(.setup-welcome) .ledger{padding:18px 16px}
.felt:has(.setup-welcome) .ledger h2{font:28px Georgia,serif}
.felt:has(.setup-welcome) .ledger>p{font-size:12px;margin-bottom:14px}
.felt:has(.setup-welcome) .rounds{columns:auto;list-style:none;padding:0;margin:0;counter-reset:contract}
.felt:has(.setup-welcome) .rounds li{counter-increment:contract;display:flex;align-items:center;gap:9px;padding:5px 0;font-size:12px;line-height:1.35}
.felt:has(.setup-welcome) .rounds li::before{content:counter(contract);display:grid;place-items:center;flex:0 0 25px;height:25px;border:1px solid #819b7950;border-radius:50%;color:#bdd0bb}
.felt:has(.setup-welcome) .rounds .current{background:#e4c5711c;color:#ffe3a1;border-radius:6px;padding-inline:4px}
.felt:has(.setup-welcome) .rounds .current::before{background:#e8bf58;border-color:#e8bf58;color:#21382d}
.felt:has(.setup-welcome) .activity{margin-top:14px;padding-top:12px}
.felt:has(.setup-welcome) .activity h3{font-size:22px}
@media(min-width:801px) and (max-height:750px){.setup-intro h2{font-size:30px;margin:5px 0}.setup-intro p{margin-bottom:12px}.setup-profile h3{margin:10px 0 6px}.setup-avatar{padding:5px 2px;min-height:54px}.setup-avatar span{font-size:24px}.setup-avatar-tabs .quiet{padding:6px 3px;font-size:12px}.opening-options{padding:10px;margin-bottom:10px}.setup-actions button{padding:10px}.setup-divider{margin:10px 0}.felt:has(.setup-welcome) .rounds li{padding:3px 0;font-size:11px}.felt:has(.setup-welcome) .rounds li::before{flex-basis:21px;height:21px}.felt:has(.setup-welcome) .ledger h2{font-size:24px}.felt:has(.setup-welcome) .activity{margin-top:9px;padding-top:7px}}
@media(max-width:800px){.setup-intro h2{font-size:30px}.setup-intro p{margin-bottom:15px}.setup-avatar{min-height:61px}.felt:has(.setup-welcome) .ledger{display:block}.felt:has(.setup-welcome) .rounds{display:grid;grid-template-columns:1fr 1fr;gap:3px 10px}}

.setup-welcome .setup-avatar.chosen{background:#fff1c6;color:#21382d;border-color:#e8bf58}
.seat.active{background:linear-gradient(135deg,#f5e3b3,#e0bf76);color:#253b2e;border-color:#f8e9c2;box-shadow:0 3px 12px #102b242b}
.seat.active small{color:#4e5b44}
.score-table tr.current{background:#e4c57120;color:#ffe3a1}
@media(min-width:801px){.felt:has(.table-playfield)>.felt-brand{left:calc((100% - 284px)/2)}.felt:has(.table-playfield) .round-heading>div{max-width:calc(50% - 135px)}}
@media(min-width:801px) and (max-width:1100px){.felt:has(.table-playfield)>.felt-brand{left:calc((100% - 234px)/2)}.felt:has(.table-playfield)>.felt-brand>span{font-size:24px}}

/* A new incoming message draws attention without opening chat or stealing focus. */
.chat-toggle.chat-notify{animation:chat-notification-shake .55s ease-in-out 2;border-color:#e8bf58;box-shadow:0 0 0 3px #e8bf5870,0 2px 10px #0003}
@keyframes chat-notification-shake{0%,100%{transform:translateX(0) rotate(0)}15%,45%,75%{transform:translateX(-5px) rotate(-3deg)}30%,60%,90%{transform:translateX(5px) rotate(3deg)}}
@media(prefers-reduced-motion:reduce){.chat-toggle.chat-notify{animation:none;transform:none}}
