:root{color-scheme:dark;--page:#101814;--panel:#17221b;--line:#a99a6344;--gold:#dec27e;--cream:#f1e5ca;--copy:#c4cbbd;--muted:#95a18e;--felt:#174331;--felt-edge:#123526;--rail:#493729;--card-back:#214a37;--card-pattern:#d6bc7b;font-family:Arial,Helvetica,sans-serif;background:var(--page);color:var(--cream);font-size:16px}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 50% -20%,#24402f 0,transparent 55%),var(--page)}button,input,select{font:inherit}button{border:1px solid #bdac6c88;border-radius:5px;padding:11px 15px;color:var(--cream);background:#19261d;cursor:pointer;transition:background .15s,border-color .15s,transform .15s}button:hover:enabled{background:#2b3b2b;border-color:var(--gold)}button:active:enabled{transform:translateY(1px)}button:disabled{opacity:.48;cursor:not-allowed}button.primary{background:var(--gold);color:#1b271d;border-color:var(--gold);font-weight:700}button.primary:hover:enabled{background:#edd69f;color:#152119}button.quiet-button{background:transparent;border-color:#a99a6355;color:#d9c998}input,select{padding:12px 14px;border:1px solid #c3ad6d77;border-radius:5px;color:var(--cream);background:#101a14}a{color:var(--gold)}[hidden]{display:none!important}.site-header{height:86px;padding:0 max(28px,calc((100vw - 1240px)/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff16;background:#101814d9}.brand{display:flex;align-items:center;gap:13px;color:#e8d6aa;text-decoration:none;font-size:18px;letter-spacing:.14em}.brand b{color:var(--gold);font-weight:500}.brand small{display:block;margin-top:5px;color:#89957e;font-size:9px;letter-spacing:.26em}.brand-mark{position:relative;font:48px Georgia;color:var(--gold);line-height:1}.brand-mark span{position:absolute;right:-5px;bottom:-2px;font-size:18px}.site-header nav{display:flex;gap:10px}.site-header button{font-size:14px}.welcome-hero{max-width:1240px;margin:auto;padding:84px 32px 54px}.eyebrow{font-size:12px;letter-spacing:.22em;color:var(--gold);font-weight:700}.welcome-hero h1{margin:22px 0 15px;font:clamp(42px,6.4vw,76px)/1.08 Georgia,serif;letter-spacing:-.035em;color:#f4e8cf}.welcome-hero h1 em{font-weight:400;color:#dfc37e}.welcome-hero>p{max-width:570px;color:#bdc8b7;font-size:18px;line-height:1.7}.no-wager-note{display:flex;align-items:center;gap:10px;margin-top:25px;color:#e1d5b2;font-size:14px}.no-wager-note span{font-size:24px;color:var(--gold)}.tribute{margin-top:28px;color:#9ca88e;font:italic 16px Georgia}.panel{background:linear-gradient(135deg,#1b2a20,#141e18);border:1px solid var(--line);border-radius:11px}.name-panel,.lobby-panel,.waiting-panel{max-width:900px;margin:10px auto 60px;padding:34px}.name-panel h2,.lobby-panel h2,.waiting-panel h2{margin:12px 0 24px;font:34px Georgia,serif}.name-panel form{display:grid;grid-template-columns:1fr auto;gap:10px;max-width:540px}.name-panel form label{grid-column:1/-1;color:#d6d7c5;font-size:14px}.name-panel form input{min-width:0}.name-panel>p{margin-top:18px;color:var(--muted);font-size:14px}.game-choices{display:grid;grid-template-columns:1fr 1fr;gap:18px}.choice-card{padding:24px;border:1px solid #b2a15a3d;border-radius:8px;background:#101b15}.choice-icon{height:45px;color:var(--gold);font:30px Georgia;letter-spacing:.2em}.choice-card h3{margin:11px 0;font:27px Georgia,serif}.choice-card p{min-height:50px;color:var(--copy);font-size:15px;line-height:1.6}.choice-card button{margin-top:8px}.join-form{display:flex;align-items:end;gap:9px;flex-wrap:wrap;margin-top:24px;padding-top:21px;border-top:1px solid #ffffff19}.join-form label{display:grid;gap:8px;color:#d4d9c9;font-size:14px}.join-form input{width:190px;text-transform:uppercase;letter-spacing:.15em}.saved-game{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:20px;padding:15px;border:1px solid var(--line);border-radius:7px;color:#ddd0a8}.waiting-panel>p{color:var(--copy);line-height:1.6}.invite-box{display:flex;gap:10px;align-items:center;margin:22px 0 20px;padding:12px;border:1px solid var(--line);border-radius:7px;background:#0e1912}.invite-box code{flex:1;min-width:0;overflow-wrap:anywhere;color:#f0dda7;font-size:15px}.game-shell{max-width:1240px;margin:0 auto;padding:35px 25px}.game-topline{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px}.game-topline h2{margin:7px 0 0;font:36px Georgia,serif}.game-tools{display:flex;gap:9px}.table-wrap{padding:12px;border:2px solid #d6bc7a66;border-radius:38px;background:var(--rail);box-shadow:0 18px 45px #0007}.table-surface{padding:28px;border-radius:29px;background:radial-gradient(ellipse at 50% 28%,var(--felt),var(--felt-edge));box-shadow:inset 0 0 0 2px #e1c67844,inset 0 0 55px #00160e99;min-height:450px}.opponent-zone{display:flex;justify-content:center;align-items:center;gap:14px;min-height:72px;padding-bottom:14px}.opponent-cards{display:flex;gap:7px}.opponent-name{font:20px Georgia,serif;color:#f2e2bf}.opponent-count{margin-top:4px;text-align:center;color:#c0c8b3;font-size:13px}.small-card{position:relative;display:inline-block;flex:0 0 57px;width:57px;height:82px;padding:7px;border:1px solid #eee5d0;border-radius:6px;background:#f7f0df;color:#1c2d23;box-shadow:0 4px 9px #00150d88;font:21px Georgia,serif;text-align:left;line-height:1;vertical-align:middle}.small-card span{display:block;margin-top:7px;text-align:center;font-size:28px}.small-card.red{color:#a53740}.small-card.back{border:4px solid #eee5d0;background:repeating-linear-gradient(45deg,var(--card-back) 0 3px,#10251b 3px 6px);color:var(--card-pattern);text-align:center;padding-top:23px;font-size:25px}.table-message{position:sticky;top:8px;z-index:5;display:grid;place-items:center;min-height:50px;margin:8px 0 19px;padding:11px 18px;border:1px solid #ddc77c88;border-radius:7px;background:#0e281e;color:#fff0cd;text-align:center;font-size:17px;font-weight:600;line-height:1.5;box-shadow:0 8px 19px #0008}.table-message.loud{font-size:21px;border:2px solid var(--gold);background:#263626;color:#fff0c4}.scorebar{display:flex;justify-content:space-around;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 0 18px;border-bottom:1px solid #ffffff22;text-align:center}.score-item small{display:block;color:#c3ceb5;font-size:13px}.score-item strong{display:block;margin-top:4px;color:#f5e6c1;font:27px Georgia,serif}.board-grid{display:grid;grid-template-columns:135px 1fr;gap:17px;margin:17px 0}.stock-box{padding:13px;border:1px solid #d6c17c55;border-radius:7px;text-align:center}.stock-box strong{display:block;color:#f1d798;font-size:24px}.stock-box small{display:block;margin:5px 0 10px;color:#c1cdb4;font-size:13px}.stock-box button{display:block;width:100%;margin-top:8px;font-size:14px}.discard-box h3,.meld-area h3{margin:0 0 11px;font:18px Georgia,serif;color:#e9ddb9}.discard-list{display:flex;gap:6px;flex-wrap:wrap;max-height:190px;overflow:auto;padding:5px}.discard-list .small-card{width:45px;flex-basis:45px;height:65px;font-size:17px}.discard-list .small-card span{font-size:24px}.discard-hint{color:#c0cab3;font-size:13px;line-height:1.5}.meld-area{margin-top:18px;padding:17px 0;border-top:1px solid #ffffff22}.meld-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.meld-group{padding:13px;border:1px solid #c8b77c55;border-radius:7px;background:#0e291e;transition:border-color .15s,background .15s,box-shadow .15s,transform .15s}.meld-group.drag-over{border-color:#ffe08b;background:#1c4934;box-shadow:0 0 0 3px #f0d17e66,0 0 24px #f0d17e55;transform:scale(1.01)}.meld-group.drag-over:after{content:'Release to lay off cards';display:block;margin-top:10px;padding:8px;border:1px dashed #f0d17e;color:#ffe7a7;text-align:center;font-size:13px}.meld-cards{display:flex;gap:5px;flex-wrap:wrap}.meld-group .small-card{width:40px;flex-basis:40px;height:59px;padding:4px;font-size:16px}.meld-group .small-card span{font-size:21px;margin-top:4px}.meld-points{margin:9px 0;color:#cbd3bf;font-size:13px}.meld-group button{font-size:13px;padding:9px 10px}.hand-heading{display:flex;justify-content:space-between;align-items:end;gap:16px;margin:23px 0 3px}.hand-heading h3{margin:0;font:22px Georgia,serif}.hand-heading p{margin:6px 0 0;color:#bfc9b3;font-size:14px}.hand-tools{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.hand-tools button{padding:8px 10px;font-size:12px}.hand-tools button.active{border-color:#efd184;background:#263725;color:#ffe6a9}.hand-cards{display:flex;justify-content:center;flex-wrap:wrap;gap:9px;padding:16px 0;min-height:107px}.hand-slot{display:flex;flex-direction:column;align-items:center;gap:5px;padding:4px 2px;border:1px solid transparent;border-radius:8px;cursor:grab;touch-action:pan-y}.hand-slot.selected{background:#d5bd6930;border-color:#efd184}.hand-slot.dragging{opacity:.42}.hand-slot.focused{outline:2px solid var(--gold)}.hand-slot .small-card[aria-pressed=true]{transform:translateY(-7px);outline:3px solid #efd184;outline-offset:2px;background:#fff8df}.hand-moves{display:none;gap:5px}.hand-cards.arranging .hand-moves{display:flex}.hand-moves button{min-width:34px;min-height:32px;padding:3px 8px;font-size:16px}.hand-card-pulse{animation:card-pulse 1s ease-in-out 3;outline:3px solid #f5d77f;outline-offset:3px;z-index:2}.last-drawn-marker{padding:3px 6px;border-radius:10px;background:#d9bd73;color:#17291e;font:700 9px Arial,sans-serif;letter-spacing:.08em}.actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;min-height:48px;padding-top:10px}.actions button{padding:11px 16px;font-size:15px}.table-bottom{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:18px;padding-top:13px;border-top:1px solid #ffffff1e;color:#c0cbb4;font-size:13px}.hand-result{margin:19px 0;padding:26px;border:2px solid #d6c17a;border-radius:12px;background:linear-gradient(145deg,#243929,#10291f);box-shadow:0 13px 28px #0007;text-align:center}.hand-result .eyebrow{font-size:12px}.hand-result h2{margin:8px 0;font:34px Georgia,serif;color:#fff0c9}.hand-result>p{color:#ced7c7;line-height:1.6}.result-columns{display:grid;grid-template-columns:1fr 1fr;gap:13px;text-align:left}.result-column{padding:15px;border:1px solid #d5c17755;border-radius:8px;background:#0b2018}.result-column h3{margin:0 0 10px;font:21px Georgia,serif}.result-line{display:flex;justify-content:space-between;gap:9px;padding:9px 0;border-top:1px solid #ffffff1d;font-size:14px}.result-line strong{white-space:nowrap}.result-line.deduction strong{color:#ffc0af}.result-net{display:flex;justify-content:space-between;gap:8px;padding:11px 0 4px;border-top:1px solid #d5c17777;font-weight:700}.result-net strong{color:#ffe2a0;font-size:18px}.result-total{margin:6px 0 0;color:#c2cfbc;font-size:13px}.next-hand{display:block;margin:15px auto 5px;padding:13px 24px;font-size:16px}.game-log{margin:20px 0 32px;padding:22px}.game-log ol{margin:10px 0 0;padding-left:24px;color:#c0cbb6;font-size:14px;line-height:1.8}.site-footer{max-width:1240px;margin:42px auto 0;padding:25px 25px 40px;display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;border-top:1px solid #ffffff18;color:#82907d;font-size:10px;letter-spacing:.14em}dialog{position:relative;width:min(560px,calc(100vw - 26px));max-height:86vh;overflow:auto;padding:30px;border:1px solid #d5bd7566;border-radius:12px;background:#17231b;color:var(--cream);box-shadow:0 20px 60px #000c}dialog::backdrop{background:#000a;backdrop-filter:blur(4px)}dialog h2{margin:10px 0 14px;font:32px Georgia,serif}dialog p,dialog li{color:#c4cebd;font-size:15px;line-height:1.7}dialog label{display:block;margin:17px 0 7px;color:#d5d6c4;font-size:14px}dialog select{width:100%;margin-bottom:3px}dialog>.primary{margin-top:20px}.dialog-close{position:absolute;top:9px;right:9px;border:0;background:transparent;font:27px Georgia;color:#e6d7b5;padding:5px 10px}#toast{position:fixed;bottom:20px;left:50%;z-index:20;transform:translate(-50%,12px);opacity:0;pointer-events:none;padding:12px 17px;border:1px solid #e2c97a;border-radius:6px;background:#16251b;color:#ffedc5;transition:opacity .18s,transform .18s}#toast.show{opacity:1;transform:translate(-50%,0)}.felt-midnight .table-surface{--felt:#274560;--felt-edge:#142b40}.felt-claret .table-surface{--felt:#642d3a;--felt-edge:#411d29}.felt-plum .table-surface{--felt:#493551;--felt-edge:#2c2036}.rail-mahogany .table-wrap{--rail:#603a2d}.rail-blackwood .table-wrap{--rail:#171818}.back-blue .small-card.back{--card-back:#1c3a5d;--card-pattern:#96b4dd}.back-claret .small-card.back{--card-back:#622a36;--card-pattern:#e8c19b}.back-gold .small-card.back{--card-back:#795c26;--card-pattern:#f0d88e}
@keyframes card-pulse{0%,100%{transform:translateY(0) scale(1);box-shadow:0 4px 9px #00150d88,0 0 0 2px #f5d77f88}50%{transform:translateY(-4px) scale(1.05);box-shadow:0 7px 13px #00150d88,0 0 0 8px #f5d77f55,0 0 24px #ffe9a0}}
@media(max-width:820px){.welcome-hero{padding:58px 22px 38px}.name-panel,.lobby-panel,.waiting-panel{margin:10px 17px 42px;padding:26px}.choice-card{padding:19px}.game-shell{padding:25px 14px}.table-wrap{padding:8px;border-radius:27px}.table-surface{padding:20px 13px;border-radius:20px}.meld-list{grid-template-columns:1fr}.hand-heading{align-items:start;flex-direction:column}.hand-tools{justify-content:flex-start}.game-topline h2{font-size:31px}}
@media(max-width:560px){.site-header{height:72px;padding:0 15px}.brand{font-size:14px;letter-spacing:.1em;gap:9px}.brand-mark{font-size:40px}.brand small{font-size:8px}.site-header nav{gap:5px}.site-header button{padding:8px;font-size:12px}.welcome-hero{padding:43px 19px 29px}.welcome-hero h1{font-size:46px}.welcome-hero>p{font-size:16px}.name-panel,.lobby-panel,.waiting-panel{padding:21px;margin:8px 12px 34px}.name-panel h2,.lobby-panel h2,.waiting-panel h2{font-size:28px}.name-panel form{grid-template-columns:1fr}.name-panel form label{grid-column:auto}.game-choices{grid-template-columns:1fr}.choice-card p{min-height:0}.choice-card h3{font-size:25px}.invite-box{align-items:stretch;flex-direction:column}.game-topline{align-items:flex-start;flex-direction:column}.game-tools{width:100%}.scorebar{gap:7px}.score-item small{font-size:11px}.score-item strong{font-size:22px}.board-grid{grid-template-columns:91px minmax(0,1fr);gap:9px}.stock-box{padding:9px 5px}.stock-box button{padding:9px 4px;font-size:12px}.discard-list{gap:4px}.discard-list .small-card{width:37px;flex-basis:37px;height:55px;font-size:15px}.discard-list .small-card span{font-size:20px}.hand-tools{gap:5px}.hand-tools button{padding:8px;font-size:11px}.small-card{flex-basis:52px;width:52px;height:76px;font-size:19px}.small-card span{font-size:26px}.hand-cards{gap:5px}.actions button{font-size:14px;padding:10px}.result-columns{grid-template-columns:1fr}.hand-result{padding:19px 13px}.hand-result h2{font-size:29px}.table-bottom{font-size:12px}.site-footer{padding:20px 17px 30px;line-height:1.7}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Warm ivory card room. The playing felt keeps its own contrast palette. */
:root{color-scheme:light;--page:#f7f3e8;--panel:#e8ede1;--line:#b6ab8670;--gold:#856426;--cream:#244b3c;--copy:#4c5549;--muted:#626b59}
body{background:radial-gradient(ellipse at 50% 0%,#fffcf5 0,transparent 65%),var(--page)}
button{color:#244b3c;background:#fffcf5;border-color:#a99a6377}
button:hover:enabled{background:#e1e8d8;border-color:#856426}
button.primary{background:#244b3c;color:#fffdf5;border-color:#244b3c}
button.primary:hover:enabled{background:#32634f;color:#fffdf5;border-color:#32634f}
button.quiet-button{color:#486047;border-color:#a99a6370}
input,select{color:#244b3c;background:#fffcf5;border-color:#b6ab86}
input::placeholder{color:#6c705f;opacity:1}
:focus-visible{outline:3px solid #856426;outline-offset:3px}
.site-header{background:#fffcf5eF;border-bottom-color:#b6ab8655}
.brand{color:#244b3c}.brand small{color:#626b59}
.welcome-hero h1{color:#244b3c}.welcome-hero h1 em{color:#927037}
.welcome-hero>p,.no-wager-note{color:#4c5549}.tribute{color:#626b59}
.panel{background:linear-gradient(135deg,#edf0e5,#e5eadc);box-shadow:0 9px 25px #4a3e2110}
.choice-card{background:#fffcf5;border-color:#b6ab8680}
.name-panel form label,.join-form label{color:#4c5549}
.join-form{border-top-color:#b6ab8666}
.saved-game{color:#4c5549;background:#f7f5eb}
.invite-box{background:#fffcf5}.invite-box code{color:#244b3c}
.game-log ol{color:#4c5549}
.site-footer{border-top-color:#b6ab8660;color:#626b59}
dialog{background:#fffcf5;color:#244b3c;border-color:#b6ab86;box-shadow:0 20px 60px #243b3433}
dialog::backdrop{background:#243b3466}
dialog p,dialog li,dialog label{color:#4c5549}.dialog-close{color:#244b3c}
#toast{background:#244b3c;color:#fffdf5;border-color:#dec27e}
.table-surface{--gold:#dec27e;--cream:#f1e5ca;color:#f1e5ca;color-scheme:dark}
.table-surface button{color:#f1e5ca;background:#19261d;border-color:#bdac6c88}
.table-surface button:hover:enabled{background:#2b3b2b;border-color:#dec27e}
.table-surface button.primary{background:#dec27e;color:#1b271d;border-color:#dec27e}
.table-surface button.primary:hover:enabled{background:#edd69f;color:#152119}
.table-surface button.quiet-button{background:transparent;color:#d9c998;border-color:#a99a6355}
.table-surface button.small-card{background:#f7f0df;color:#1c2d23;border-color:#eee5d0}
.table-surface button.small-card.red{color:#a53740}
.table-surface button.small-card:hover:enabled{background:#fff8df}
.table-surface .hand-tools button.active{background:#263725;color:#ffe6a9;border-color:#efd184}
.table-surface .hand-slot .small-card[aria-pressed=true]{background:#fff8df}

/* Centre the introduction above the welcome panel. */
.welcome-hero{max-width:900px;text-align:center}
.welcome-hero>p{margin-left:auto;margin-right:auto}
.no-wager-note{justify-content:center}

/* Keep invite entry aligned with the other lobby controls. */
.join-form{display:grid;grid-template-columns:minmax(0,260px) max-content;align-items:stretch;gap:10px}
.join-form label{grid-column:1/-1;font-size:14px;line-height:1.5}
.join-form input{width:100%;min-width:0;min-height:46px;letter-spacing:.08em}
.join-form input::placeholder{text-transform:none;letter-spacing:normal;font-size:14px}
.join-form button{min-height:46px}
@media(max-width:560px){.join-form{grid-template-columns:minmax(0,1fr) max-content}.join-form input{padding-left:10px;padding-right:10px}}

/* Card fan identity, shared with the browser icon. */
.brand-mark{display:block;width:58px;height:58px;flex:0 0 58px}
@media(max-width:560px){.brand-mark{width:44px;height:44px;flex-basis:44px}}
