:root{color-scheme:dark;--ink:#f1efe6;--muted:#a7b4a9;--faint:#72847a;--green:#0b3029;--green-deep:#071f1b;--panel:#102e29;--line:rgba(213,230,213,.12);--gold:#e6c37b;--red:#df7a70;--sans:'DM Sans','Noto Serif SC',sans-serif;--serif:'Noto Serif SC',serif;--mono:'DM Mono',monospace}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 50% -24%,#1e443a 0,transparent 51%),var(--green-deep);color:var(--ink);font-family:var(--sans);font-size:15px}button,input,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}.topbar{height:74px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 clamp(20px,5vw,76px)}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--ink);font-family:var(--serif);font-weight:700;letter-spacing:.08em}.brand-mark{width:36px;height:36px;display:grid;place-items:center;border:1px solid rgba(230,195,123,.55);border-radius:50%;color:var(--gold);font-size:19px}.brand-sub{display:block;font:9px var(--mono);letter-spacing:.18em;color:var(--faint);margin-top:2px}.topbar-right{display:flex;align-items:center;gap:20px}.connection{font:11px var(--mono);color:var(--muted);display:flex;align-items:center;gap:8px}.connection i{width:7px;height:7px;border-radius:50%;background:#ca9a52;box-shadow:0 0 9px #ca9a52}.connection.online i{background:#7bd0a1;box-shadow:0 0 9px #7bd0a1}.user-label{font-size:13px;color:var(--gold)}main{width:min(1160px,calc(100% - 40px));margin:0 auto;min-height:calc(100vh - 126px);padding:62px 0 72px}.welcome{display:grid;grid-template-columns:1.2fr .8fr;align-items:center;gap:9vw;min-height:540px}.welcome-copy h1,.page-heading h1{font:600 clamp(42px,6vw,76px)/1.12 var(--serif);letter-spacing:-.06em;margin:18px 0}.welcome-copy h1 em{font-style:normal;color:var(--gold)}.muted{color:var(--muted);line-height:1.75;max-width:540px}.eyebrow{font:10px var(--mono);letter-spacing:.18em;color:var(--gold);text-transform:uppercase}.panel{background:linear-gradient(145deg,rgba(23,57,49,.94),rgba(13,40,35,.95));border:1px solid var(--line);border-radius:17px;box-shadow:0 18px 60px #020f0d55}.guest-form{padding:34px;max-width:420px}.guest-form h2,.mode-card h2{font:500 25px var(--serif);margin:10px 0 25px}.guest-form label,.mode-card label{display:block;color:#d1ddd2;font-size:12px;margin:20px 0 9px}.guest-form label span{color:var(--faint);margin-left:6px;font-size:11px}.input,input,select{width:100%;height:46px;border:1px solid var(--line);background:#081f1b;color:var(--ink);border-radius:8px;padding:0 13px;outline:0}input:focus,select:focus{border-color:#a78b56;box-shadow:0 0 0 3px #d9b86d1a}input::placeholder{color:#61736a}.button{height:44px;border:1px solid var(--line);border-radius:8px;padding:0 16px;color:var(--ink);background:#193a32;font-weight:600;transition:transform .15s,background .15s,border-color .15s}.button:hover{transform:translateY(-1px);border-color:#ddc27d88}.button:disabled{opacity:.45;cursor:not-allowed;transform:none}.button.primary{background:var(--gold);color:#1d261c;border-color:var(--gold)}.button.primary:hover{background:#efd69d}.button.secondary{background:#193a32}.button.quiet{background:transparent;color:var(--muted)}.wide{width:100%;display:flex;align-items:center;justify-content:space-between;margin-top:24px}.wide span{font-size:19px}.fine-print,.hint{color:var(--faint);font-size:11px;line-height:1.65}.fine-print{margin:14px 0 0}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:36px}.page-heading h1{font-size:45px;margin:8px 0}.page-heading .muted{margin:0}.lobby-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.mode-card{padding:27px}.mode-icon{height:48px;width:48px;border-radius:12px;border:1px solid #dbc37c55;display:grid;place-items:center;color:var(--gold);font-size:23px;margin-bottom:27px}.mode-card h2{margin:8px 0 6px}.mode-card>.muted{font-size:13px;min-height:45px}.mode-card .hint{margin:7px 0 2px}.divider{display:flex;align-items:center;gap:13px;color:var(--faint);font-size:10px;margin:26px 0 12px}.divider:before,.divider:after{content:'';height:1px;background:var(--line);flex:1}.join-row{display:flex;gap:8px}.join-row input{min-width:0;text-transform:uppercase;letter-spacing:.16em;font:13px var(--mono)}.match-card{position:relative;overflow:hidden}.match-card:after{content:'♠';position:absolute;right:4px;bottom:-100px;color:#e6c37b0b;font-size:300px;pointer-events:none}.match-card>*{position:relative;z-index:1}.match-status{min-height:20px;color:var(--gold);font:11px var(--mono);margin:14px 0 0}.room-heading{margin-bottom:24px}.room-heading h1{font-size:38px}.waiting-room{padding:30px;display:grid;grid-template-columns:.8fr 1.2fr;gap:25px;align-items:center}.waiting-copy h2{font:500 24px var(--serif);margin:8px 0}.member-list{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.member{min-height:74px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#071e1a77}.member-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.member-meta{display:block;color:var(--faint);font:9px var(--mono);margin-top:10px}.member-meta.ready{color:#91d1a9}.waiting-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:9px}.table-shell{border:1px solid var(--line);border-radius:19px;background:#0c2822;padding:20px;box-shadow:0 20px 75px #0006}.table-topline{display:flex;justify-content:space-between;margin-bottom:15px}.round-pill,.timer-pill{font:10px var(--mono);letter-spacing:.05em;border:1px solid var(--line);padding:8px 11px;border-radius:30px;color:var(--muted)}.timer-pill.urgent{color:#ff9d83;border-color:#ff9d8366}.felt{height:min(57vw,570px);min-height:400px;border-radius:48% / 43%;position:relative;overflow:hidden;background:radial-gradient(ellipse,#1b6250 0,#14503f 50%,#0c3b31 100%);border:10px solid #3d2d22;box-shadow:inset 0 0 0 2px #b58c4c66,inset 0 0 50px #031b17,0 8px 20px #0006}.felt:before{content:'';position:absolute;inset:9px;border:1px solid #bca06466;border-radius:inherit;pointer-events:none}.felt-grain{position:absolute;inset:0;background:repeating-linear-gradient(118deg,#ffffff04 0 1px,transparent 1px 4px);opacity:.6}.felt-center{position:absolute;z-index:1;left:50%;top:49%;transform:translate(-50%,-50%);text-align:center;min-width:170px}.table-emblem{font-size:24px;color:#e6c37b77}.felt-center .eyebrow{margin:2px 0 5px;color:#cbd5c7}.felt-center strong{font:500 32px var(--mono);color:#fff2d2;display:block}.felt-center small{font-size:10px;color:#b7cebd}.turn-label{font-size:12px;color:#f3d38b;min-height:19px;margin:8px 0}.player-seats{position:absolute;inset:0;z-index:2}.seat{position:absolute;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:130px;transform:translate(-50%,-50%)}.seat[data-seat="0"]{left:50%;top:87%}.seat[data-seat="1"]{left:19%;top:66%}.seat[data-seat="2"]{left:19%;top:28%}.seat[data-seat="3"]{left:50%;top:12%}.seat[data-seat="4"]{left:81%;top:28%}.seat[data-seat="5"]{left:81%;top:66%}.seat-card{padding:8px 10px;border-radius:9px;background:#0b2822e8;border:1px solid #f2ead233;min-width:116px;text-align:center;box-shadow:0 4px 12px #0004}.seat.current .seat-card{border-color:#e6c37b;box-shadow:0 0 18px #e6c37b38}.seat.self .seat-card{background:#143c31}.seat-name{font-size:11px;font-weight:700;display:block;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-info{font:9px var(--mono);color:#b8cabe;display:block;margin-top:4px}.seat-state{color:var(--gold)}.cards{display:flex;justify-content:center;gap:4px;height:88px;align-items:center}.card{width:57px;height:80px;border-radius:6px;background:#f6f3eb;color:#202620;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 4px 12px #0005;position:relative;font-family:var(--serif)}.card.red{color:#c24e46}.card-rank{font-size:23px;font-weight:700;line-height:1}.card-suit{font-size:19px;line-height:1;margin-top:3px}.card.back{background:repeating-linear-gradient(45deg,#c8aa68 0 3px,#173f34 3px 6px);border:3px solid #e8e0ce;color:#f4e6bf}.card.back span{font-size:23px}.cards-note{font-size:9px;color:#d4dfd4}.action-bar{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;padding:18px 4px 3px}.action-bar .button{min-width:105px}.action-bar .danger{border-color:#a44f4d55;color:#f2a19a;background:#3b2523}.action-bar select{width:auto;min-width:95px;height:44px}.hand-result{border:1px solid #e6c37b55;border-radius:10px;padding:13px 17px;margin:12px 0 0;background:#e6c37b0c;color:#ebd9a9;font-size:12px;text-align:center}.toast{position:fixed;left:50%;bottom:27px;transform:translate(-50%,20px);opacity:0;pointer-events:none;padding:12px 16px;max-width:min(460px,90vw);border:1px solid #e6c37b66;border-radius:10px;background:#102f29;color:var(--ink);box-shadow:0 10px 40px #0008;font-size:12px;transition:all .2s;z-index:10}.toast.show{opacity:1;transform:translate(-50%,0)}footer{height:52px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,76px);color:var(--faint);font:9px var(--mono);letter-spacing:.04em}
@media(max-width:760px){main{padding:32px 0 48px}.welcome{grid-template-columns:1fr;gap:30px;min-height:0}.welcome-copy h1{font-size:54px}.guest-form{max-width:none}.lobby-grid{grid-template-columns:1fr}.page-heading h1{font-size:36px}.waiting-room{grid-template-columns:1fr}.waiting-actions{grid-column:auto}.member-list{grid-template-columns:repeat(2,1fr)}.felt{min-height:420px;height:117vw;max-height:560px;border-width:7px}.seat{min-width:90px}.seat[data-seat="1"],.seat[data-seat="2"]{left:16%}.seat[data-seat="4"],.seat[data-seat="5"]{left:84%}.seat-card{min-width:94px;padding:7px 6px}.seat-name{max-width:100px}.cards{height:65px;gap:2px}.card{width:43px;height:62px}.card-rank{font-size:18px}.card-suit{font-size:15px}.action-bar .button{flex:1;min-width:78px;padding:0 8px;font-size:12px}.table-shell{padding:12px}.felt-center{min-width:130px}.felt-center strong{font-size:26px}}
@media(max-width:440px){.topbar{height:62px}.connection{font-size:9px}.page-heading{align-items:flex-start}.page-heading .button{padding:0 9px;font-size:11px}.room-heading h1{font-size:31px}.felt{min-height:395px}.seat[data-seat="1"],.seat[data-seat="2"]{left:14%}.seat[data-seat="4"],.seat[data-seat="5"]{left:86%}.seat-card{min-width:86px}.seat-name{max-width:88px;font-size:10px}.seat-info{font-size:8px}.card{width:37px;height:54px}.card-rank{font-size:16px}.card-suit{font-size:13px}.action-bar{gap:5px}.action-bar .button{min-width:70px;font-size:11px}.waiting-actions{justify-content:stretch}.waiting-actions .button{flex:1}footer{font-size:8px}}
/* A dedicated storefront that reuses the card room’s felt and brass palette. */
.lobby-actions{display:flex;align-items:center;gap:16px}
.shop-entry{min-width:112px;border-color:#d9b86d88;background:linear-gradient(140deg,#ecd18b,#b9853f);color:#18291f;font-weight:800;box-shadow:0 5px 22px #e6c37b22}
.shop-entry:hover{background:#f3dda0;transform:translateY(-1px)}
.shop-page{padding-bottom:32px}
.shop-heading{margin-bottom:36px}
.shop-heading h1{max-width:780px;font-size:clamp(38px,5vw,62px);line-height:1.13}
.shop-heading .button{flex-shrink:0}
.shop-notice{display:flex;align-items:center;gap:20px;margin-bottom:42px;padding:24px 28px;border-color:#e6c37b55;background:linear-gradient(115deg,#183d32,#102c26 72%);color:#f4e5bd}
.shop-sparkle{display:grid;width:54px;height:54px;flex:none;place-items:center;border:1px solid #e6c37b77;border-radius:50%;color:#f1d28a;font-size:28px;box-shadow:inset 0 0 20px #e6c37b18}
.shop-notice strong{font:600 20px var(--serif)}
.shop-notice p{margin:7px 0 0;color:#c1d0c5;line-height:1.7}
.shop-toolbar{display:flex;align-items:end;justify-content:space-between;margin-bottom:17px}
.shop-toolbar .eyebrow{margin:0 0 7px}
.shop-toolbar h2{margin:0;font:500 28px var(--serif);color:#f0e6ca}
.shop-count{padding:7px 12px;border:1px solid #e6c37b44;border-radius:30px;color:#ddc78f;font-size:12px}
.shop-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.shop-card{overflow:hidden;border-color:#d7c18426;background:linear-gradient(155deg,#153b32,#0e2d27);transition:transform .2s,border-color .2s}
.shop-card:hover{transform:translateY(-3px);border-color:#e6c37b77}
.shop-art{height:210px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;border-bottom:1px solid #d9bd7540}
.shop-art-cards{background:radial-gradient(ellipse at 50% 70%,#1d6450,#102f28 73%)}
.shop-art-cards:before,.shop-art-cards:after{content:'';position:absolute;width:93px;height:132px;border:2px solid #b49556;border-radius:9px;background:repeating-linear-gradient(45deg,#18364a 0 5px,#1e4050 5px 7px);box-shadow:0 10px 25px #04130f88}
.shop-art-cards:before{transform:translate(-34px,4px) rotate(-13deg)}
.shop-art-cards:after{transform:translate(34px,4px) rotate(13deg)}
.shop-art-cards span{z-index:1;width:90px;height:128px;display:grid;place-items:center;border:2px solid #e9dfc6;border-radius:8px;background:radial-gradient(ellipse,#285544,#12362d);color:#e8ca81;font-size:40px;box-shadow:0 8px 24px #030f0c88}
.shop-art-cards span:not(:first-child){display:none}
.shop-art-table{background:radial-gradient(ellipse at center,#25735b,#124437 46%,#092d26 74%)}
.shop-art-table:before{content:'';position:absolute;width:74%;height:68%;border:7px solid #38291f;border-radius:50%;box-shadow:inset 0 0 0 2px #bea15d99,inset 0 0 35px #061813,0 12px 30px #020d0b}
.shop-art-table span{position:relative;z-index:1;color:#e4c477;font-size:40px;text-shadow:0 2px 9px #071b14}
.shop-art-emblem{background:radial-gradient(circle,#665333,#2c392c 43%,#102b25 77%)}
.shop-art-emblem:before,.shop-art-emblem:after{content:'✦';position:absolute;color:#dbbd72aa;font-size:46px}
.shop-art-emblem:before{transform:translate(-72px,21px) scale(.62)}
.shop-art-emblem:after{transform:translate(72px,-20px) scale(.62)}
.shop-art-emblem span{display:grid;width:100px;height:100px;place-items:center;border:1px solid #e5cc8c;border-radius:50%;background:radial-gradient(circle,#a7854a,#55432a 68%,#30291d);box-shadow:0 0 0 8px #dfc17a12,0 12px 35px #0006;color:#ffedbe;font-size:44px}
.shop-card-copy{padding:20px 21px 22px}
.shop-category{font:10px var(--mono);letter-spacing:.16em;color:#d1b675}
.shop-card h3{margin:8px 0;font:600 22px var(--serif);color:#f3ecd9}
.shop-card p{min-height:48px;margin:0 0 18px;color:#b7c9bd;font-size:13px;line-height:1.75}
.shop-coming{display:inline-flex;align-items:center;min-height:30px;padding:0 11px;border:1px solid #e6c37b35;border-radius:30px;color:#dfc782;font-size:11px}
@media(max-width:850px){.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.shop-card:last-child{grid-column:1/-1}.shop-card:last-child .shop-art{height:170px}}
@media(max-width:650px){.lobby-actions{align-items:flex-end;flex-direction:column;gap:10px}.lobby-actions .identity-actions{justify-content:flex-end}.shop-entry{min-width:96px}.shop-heading{align-items:flex-start;gap:16px;margin-bottom:26px}.shop-heading h1{font-size:36px}.shop-heading .button{min-height:40px;height:auto;padding:9px 12px;white-space:nowrap}.shop-notice{align-items:flex-start;padding:18px;gap:14px;margin-bottom:32px}.shop-sparkle{width:42px;height:42px;font-size:23px}.shop-notice strong{font-size:18px}.shop-grid{grid-template-columns:1fr;gap:14px}.shop-card:last-child{grid-column:auto}.shop-card:last-child .shop-art,.shop-art{height:190px}.shop-card-copy{padding:17px 18px 19px}.shop-card p{min-height:0}.shop-toolbar h2{font-size:25px}}
.shop-redemption{display:grid;grid-template-columns:minmax(0,.9fr) minmax(280px,1fr);column-gap:42px;row-gap:10px;align-items:center;margin:-20px 0 44px;padding:26px 30px;border-color:#dabe753d;background:linear-gradient(118deg,#172f29,#102923 70%,#193b30)}
.redeem-heading{display:flex;align-items:center;gap:18px}.redeem-ticket{width:58px;height:58px;flex:none;display:grid;place-items:center;border:1px solid #e6c37b88;border-radius:16px;background:#ddbb7216;color:#f1d48f;font:600 23px var(--serif)}
.redeem-heading .shop-category{margin:0 0 5px}.redeem-heading h2{margin:0;color:#f1e8d4;font:600 25px var(--serif)}.redeem-heading p:last-child{margin:6px 0 0;color:#b9c9bf;font-size:12px}
#redeem-form label{display:block;margin-bottom:8px;color:#e0d2ad;font-size:12px}#redeem-form input{background:#081f1b}
.redeem-row{display:flex;gap:9px}.redeem-row input{min-width:0}.redeem-row .button{flex:none;min-width:105px}
.redeem-status{grid-column:2;min-height:20px;margin:0;color:#d7c58f;font-size:12px;line-height:1.6}.shop-login-prompt{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:-20px 0 44px;padding:23px 26px;border-color:#e6c37b44;background:linear-gradient(115deg,#183d32,#102c26)}.shop-login-prompt strong{color:#f3e6c3;font:600 19px var(--serif)}.shop-login-prompt p{margin:6px 0 0;color:#bccbc1;font-size:13px}.shop-login-prompt .button{flex:none}
@media(max-width:760px){.shop-redemption{grid-template-columns:1fr;gap:17px;padding:21px}.redeem-status{grid-column:1}.shop-login-prompt{padding:19px;align-items:flex-start;flex-direction:column}.shop-login-prompt .button{width:100%}}
@media(max-width:420px){.redeem-row{align-items:stretch;flex-direction:column}.redeem-row .button{width:100%}.redeem-heading{gap:13px}.redeem-heading h2{font-size:22px}.redeem-heading p:last-child{font-size:11px}}
/* Match tiers reuse the felt and brass palette of the existing lobby. */
.match-tiers { display:grid; gap:10px; margin:20px 0 14px; }
.match-tier { display:grid; grid-template-columns:1fr auto; gap:5px 12px; width:100%; text-align:left; padding:16px; color:inherit; border:1px solid rgba(255,255,255,.2); background:rgba(0,0,0,.12); border-radius:10px; cursor:pointer; }
.match-tier strong { font-size:20px; }
.match-tier span { align-self:center; font-size:16px; }
.match-tier small { grid-column:1 / -1; font-size:14px; opacity:.8; }
.match-tier[aria-pressed="true"] { border-color:#d9b76b; background:rgba(217,183,107,.12); box-shadow:inset 4px 0 #d9b76b; }
.match-tier:focus-visible { outline:3px solid #d9b76b; outline-offset:3px; }
.match-tier:disabled { cursor:wait; opacity:.65; }
.match-carry { font-size:16px; line-height:1.6; min-height:52px; color:#eedba5; }
@media(max-width:380px) { .match-tier {grid-template-columns:1fr;} .match-tier small {grid-column:1;} }
