:root{color-scheme:dark;--bg:#101f29;--panel:#192c38;--line:#334853;--text:#eef3f3;--muted:#b0c1c7;--gold:#edc781;--green:#164b42;--ink:#192d39;--red:#ad2944;font-family:Inter,Segoe UI,Arial,sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}button,a,input,select{touch-action:manipulation}button{border:1px solid transparent;border-radius:8px;padding:12px 18px;background:var(--gold);color:#142631;font-weight:650;transition:background .15s,transform .15s}button:hover:not(:disabled){background:#f7daa6}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #a1e7dd;outline-offset:4px}.quiet{background:transparent;color:var(--text);border-color:var(--line)}.quiet:hover:not(:disabled){background:#304854}.small{padding:8px 12px;font-size:.875rem}.muted{color:var(--muted)}.topbar{height:88px;display:flex;align-items:center;gap:22px;padding:0 4vw;border-bottom:1px solid var(--line)}.brand{color:var(--text);font-size:2.5rem;letter-spacing:-3px;text-decoration:none;font-family:Georgia,serif;font-weight:bold}.brand>span:first-child{color:var(--gold)}.brand-suit{font-size:1.5rem;margin-left:12px;vertical-align:middle;color:var(--gold)}.brand-caption{font-size:.75rem;letter-spacing:2.8px;color:var(--muted)}.header-actions{margin-left:auto;display:flex;gap:10px;align-items:center}#connection{font-size:.875rem;color:var(--muted)}main{max-width:1510px;margin:auto;padding:34px 4vw 40px}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,serif;font-weight:normal;font-size:clamp(2.5rem,4.8vw,4.5rem);letter-spacing:-2px;margin-bottom:12px}h2{font-size:1.5rem}h3{font-size:1rem}p{line-height:1.6}.eyebrow{font-size:.75rem;letter-spacing:2px;color:var(--gold);font-weight:600;text-transform:uppercase;margin-bottom:18px}.setup{display:grid;grid-template-columns:minmax(340px,1.2fr) minmax(300px,.8fr);gap:6vw;padding:25px 0;align-items:start}.setup-intro{margin-bottom:30px}.setup-intro p{color:var(--muted);max-width:490px}.form-panel{max-width:600px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px}.field{display:block;margin-bottom:22px}.field>span{display:block;margin-bottom:9px;color:var(--muted);font-size:.875rem}input,select{width:100%;background:#101f29;color:var(--text);border:1px solid #49606c;border-radius:7px;padding:12px}input[type=checkbox]{width:19px;height:19px;accent-color:var(--gold)}.inline-field{display:flex;align-items:center;gap:10px;font-size:.875rem;line-height:1.5;margin:5px 0 25px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.button-row{display:flex;gap:12px;flex-wrap:wrap}.button-row>button{flex:1}.join-section{border-top:1px solid var(--line);padding-top:22px;margin-top:24px}.join-section .field{margin-bottom:12px}.join-row{display:flex;gap:10px}.join-row input{min-width:0;text-transform:uppercase;letter-spacing:3px}.setup-aside{padding-top:55px}.feature-table{background:radial-gradient(ellipse at center,#205e50,#143e36);border:1px solid #4e7465;border-radius:170px;padding:52px 25px 35px;box-shadow:0 0 0 9px #122d2b,0 0 0 10px #2f4944;text-align:center;margin:12px 10px 42px}.mini-cards{display:flex;justify-content:center;padding:15px 0 32px;gap:10px}.mini-cards .card:first-child{transform:rotate(-12deg) translateY(8px)}.mini-cards .card:last-child{transform:rotate(12deg) translateY(8px)}.feature-table .eyebrow{margin-bottom:6px}.feature-table p{margin-bottom:0;color:#c1d9ce;font-size:.875rem}.rule-spots{display:flex;justify-content:space-around;gap:16px;margin:25px 0 30px}.rule-spots>div{text-align:center}.rule-spots strong{display:block;font-family:Georgia,serif;font-weight:normal;font-size:2.6rem;color:var(--gold)}.rule-spots span{font-size:.875rem;color:var(--muted)}.rank-note{border-top:1px solid var(--line);padding:22px 6px}.rank-note p{color:var(--muted);font-size:.875rem}.table-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:15px}.table-heading h1{font-size:2rem;letter-spacing:-.5px;margin:0}.table-heading .eyebrow{margin:0 0 7px}.room-code{font-size:.875rem;color:var(--muted)}.room-code b{color:var(--gold);letter-spacing:2px;margin-left:8px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px}.play-area{min-width:0}.felt{position:relative;min-height:350px;border:1px solid #427566;border-radius:26px;background:radial-gradient(ellipse at 50% 45%,#215e50 0,#123f37 80%);box-shadow:inset 0 0 0 7px #ffffff04;overflow:hidden}.opponents{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:23px 28px 0}.player{display:flex;gap:12px;align-items:center;min-width:0}.avatar{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;border-radius:50%;background:#16382f;border:1px solid #5c8072;color:#e7cf9e;font-family:Georgia,serif;font-size:1.5rem}.player-name{font-weight:600;overflow-wrap:anywhere}.player-meta{font-size:.875rem;color:#bfd2c9;margin-top:5px}.turn .avatar{outline:2px solid var(--gold);outline-offset:4px}.spot{font-size:.875rem;color:#e4ce9d;font-weight:600}.opponents>.player:last-child{justify-self:end}.table-center{min-height:240px;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:20px;text-align:center;gap:12px}.table-watermark{font:normal 3rem Georgia,serif;color:#c6ddca25;letter-spacing:7px}.table-message{color:#d9e9df;max-width:450px;font-size:1rem;margin:0}.trump-chip{display:inline-flex;gap:8px;align-items:center;background:#132f2a;border:1px solid #548070;padding:7px 12px;border-radius:30px;font-size:.875rem;color:#eadbbf}.trick-cards{display:flex;gap:24px;align-items:flex-start;justify-content:center}.trick-slot{min-width:76px;text-align:center}.trick-slot .card{margin:0 auto 9px}.trick-slot>span{display:block;font-size:.875rem;max-width:100px;overflow-wrap:anywhere;color:#d6e5db}.card{display:flex;position:relative;flex-direction:column;justify-content:space-between;align-items:flex-start;flex-shrink:0;width:72px;height:103px;padding:7px 9px;background:#f5f3ed;border:1px solid #d8dcd6;border-radius:7px;color:#172d39;box-shadow:0 3px 4px #0003;font-family:Georgia,serif;font-size:1.25rem;font-weight:600;line-height:1}.card .pip{font-size:2.1rem;align-self:center}.card .corner{font-size:.85rem;align-self:flex-end;transform:rotate(180deg)}.card.red{color:var(--red)}.card.joker{background:#fbefd1;color:#653b15}.card.joker .rank{font:700 .65rem Segoe UI,sans-serif;letter-spacing:.3px}.card.joker .pip{font-size:2rem}.card.joker .corner{font:600 .65rem Segoe UI,sans-serif;transform:none;align-self:center}.card-back{background:repeating-linear-gradient(45deg,#213d50,#213d50 4px,#284659 4px,#284659 6px);border:3px solid #b2c8bd;color:#dfc487;align-items:center;justify-content:center;font-size:2rem}.action-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-top:16px;padding:18px 22px;min-height:100px;display:flex;align-items:center;justify-content:space-between;gap:20px}.action-panel p{font-size:.875rem;color:var(--muted);margin:6px 0 0}.action-panel h3{margin:0}.action-panel .suit-buttons{display:flex;gap:8px}.suit-buttons button{background:#f5f3ed;color:var(--ink);font-size:1.6rem;width:52px;padding:8px}.suit-buttons button.red{color:var(--red)}.action-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.action-controls select{min-width:160px;width:auto}.hand-header{display:flex;justify-content:space-between;align-items:center;margin:24px 0 18px;gap:12px}.hand-header h2{font-size:1rem;margin:0}.hand-header span{font-size:.875rem;color:var(--muted)}.hand-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.suit-heading{font-size:.875rem;color:var(--muted);margin-bottom:10px;display:flex;align-items:center;gap:6px}.suit-heading .suit-symbol{font-size:1.3rem}.hand-row{display:flex;min-height:108px;padding:8px 4px 4px}.hand-row .card{width:59px;height:89px;padding:6px;margin-left:-33px;border-color:#a6b7b9;transition:transform .14s,box-shadow .14s}.hand-row .card:first-child{margin-left:0}.hand-row .card .pip{font-size:1.65rem;align-self:flex-start}.hand-row .card .corner{display:none}.hand-row .card:disabled{opacity:.58}.hand-row .card:hover:not(:disabled){background:#fffdf5;transform:translateY(-9px);z-index:10}.hand-row .card.selected{transform:translateY(-12px);outline:3px solid var(--gold);z-index:11;box-shadow:0 8px 20px #0005}.hand-row .card.joker .rank{writing-mode:vertical-rl;font-size:.65rem}.hand-row .card.joker .pip{position:absolute;right:5px;bottom:8px}.empty-suit{font-size:.875rem;color:#7f969f}.sidebar{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:23px;height:fit-content}.sidebar h2{font-size:1.1rem;margin-bottom:5px}.sidebar .muted{font-size:.875rem}.score-row{padding:18px 0;border-bottom:1px solid var(--line)}.score-top{display:flex;justify-content:space-between;gap:10px}.score-top b{font-size:1.4rem;color:var(--gold)}.score-detail{font-size:.875rem;color:var(--muted);margin-top:6px}.book-progress{display:flex;gap:4px;flex-wrap:wrap;margin-top:11px}.book-progress i{width:13px;height:5px;border-radius:3px;background:#405964}.book-progress i.filled{background:#edc781}.sidebar details{margin-top:22px;font-size:.875rem}.sidebar summary{cursor:pointer;color:var(--muted);margin-bottom:12px}.event-list{padding-left:18px;color:var(--muted);line-height:1.6}.event-list li{margin-bottom:9px}.last-book{display:flex;flex-wrap:wrap;gap:10px;color:var(--muted);line-height:1.6}.round-results{width:min(100%,570px);background:#122f2a;border:1px solid #648272;border-radius:12px;padding:20px;text-align:left}.round-results h2{font:normal 1.9rem Georgia,serif;color:var(--gold)}table{border-collapse:collapse;width:100%;font-size:.875rem}th{text-align:left;color:var(--muted);font-weight:normal}th,td{padding:9px 6px;border-bottom:1px solid #405c51}th:first-child,td:first-child{padding-left:0}.waiting{max-width:680px;margin:40px auto;text-align:center}.waiting .form-panel{max-width:none;margin-top:28px}.waiting-code{font-family:Georgia,serif;font-size:clamp(2rem,8vw,4rem);letter-spacing:12px;color:var(--gold);margin:25px 0}.waiting-players{display:flex;flex-direction:column;gap:20px;margin:30px 0;text-align:left}.waiting-players .player{padding:15px;background:#11232f;border-radius:10px}.waiting .button-row{margin-top:25px}dialog{background:#192c38;color:var(--text);border:1px solid #516877;border-radius:16px;padding:28px;max-width:680px;width:calc(100% - 28px);max-height:88vh}dialog::backdrop{background:#071016c9;backdrop-filter:blur(4px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px}.dialog-header h2{margin:0}dialog p{font-size:.95rem}#notice{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);background:#fbdfac;color:#242b2d;padding:15px 22px;border-radius:9px;box-shadow:0 6px 30px #0007;z-index:50;font-size:.95rem}button[hidden],[hidden]{display:none!important}.footer-note{margin-top:25px;font-size:.875rem;color:var(--muted);line-height:1.6}.status-kicker{color:var(--gold);font-size:.75rem;letter-spacing:1.5px;text-transform:uppercase;margin-bottom:7px}
@media(min-width:1400px){.hand-row .card{margin-left:-25px}.hand-row .card:first-child{margin-left:0}}
@media(max-width:1100px){.game-layout{grid-template-columns:minmax(0,1fr) 220px;gap:16px}.sidebar{padding:18px}.hand-groups{grid-template-columns:repeat(2,minmax(0,1fr))}.hand-row .card{margin-left:-23px}.hand-row .card:first-child{margin-left:0}.setup{gap:40px}.brand-caption{display:none}}
@media(max-width:760px){.topbar{height:72px;padding:0 18px;gap:10px}.brand{font-size:2rem}.brand-suit{font-size:1.2rem;margin-left:7px}.header-actions{gap:6px}.header-actions button{font-size:.8rem;padding:9px}#connection{display:none}main{padding:24px 18px 30px}.setup{grid-template-columns:1fr;padding:0;gap:28px}.setup-aside{padding-top:5px}.setup-intro{margin-bottom:23px}h1{font-size:2.8rem}.form-panel{max-width:none;padding:22px}.feature-table{max-width:480px;margin:12px auto 35px}.game-layout{grid-template-columns:1fr}.sidebar{display:block}.sidebar-scores{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.score-top{display:block;font-size:.875rem}.score-top b{display:block;margin-top:8px}.score-detail{font-size:.8rem}.score-row{padding:14px 0}.felt{min-height:335px;border-radius:20px}.opponents{gap:15px;padding:22px 18px 0}.avatar{width:36px;height:36px;font-size:1.2rem}.player{gap:9px}.player-name{font-size:.9rem}.player-meta{font-size:.8rem}.table-center{padding:22px 12px;min-height:235px}.trick-cards{gap:16px}.card{width:65px;height:94px}.table-heading{align-items:flex-start}.table-heading h1{font-size:1.65rem}.table-heading .room-code{font-size:.75rem}.table-heading .quiet{padding:9px}.action-panel{padding:17px;flex-wrap:wrap;gap:15px}.action-controls{width:100%}.action-controls>button{flex:1}.hand-groups{gap:14px}.hand-row{overflow-x:auto;overflow-y:hidden;padding-top:16px;min-height:120px;scrollbar-width:thin}.hand-row .card{margin-left:-29px;width:56px;height:87px}.hand-row .card:first-child{margin-left:0}.hand-header{align-items:flex-start}.hand-header span{font-size:.8rem;text-align:right}.dialog-header h2{font-size:1.2rem}.rule-spots{gap:8px}.rule-spots span{font-size:.8rem}.round-results{padding:16px}.round-results table{font-size:.8rem}.form-row{gap:14px}.join-row button{padding:10px 15px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* The 864 card room: felt, stitched leather and a single fanned hand. */
body{background:radial-gradient(ellipse at 40% 0,#243b40 0,#101c25 55%,#0b131d 100%);background-attachment:fixed}
.topbar{background:#101a23bb;border-color:#d9b57820}.game-layout{gap:28px}.felt{min-height:395px;border:12px solid #342921;border-radius:160px;overflow:visible;background:radial-gradient(ellipse at 50% 35%,#2c7462 0,#174f43 65%,#10372f 100%);box-shadow:0 0 0 2px #ae8650,0 0 0 8px #171c20,inset 0 0 0 2px #b3b08445,inset 0 0 55px #001c1ab0,0 25px 50px #0006;margin:12px 8px 20px}
.felt:before{content:'';position:absolute;inset:13px;border:1px dashed #dccba23b;border-radius:inherit;pointer-events:none}.felt:after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:.15;background:repeating-linear-gradient(0deg,transparent 0 2px,#b2e1c911 2px 3px),repeating-linear-gradient(90deg,transparent 0 2px,#001c1c66 2px 3px)}
.opponents{position:relative;z-index:2;padding:18px 40px 0;gap:20px}.opponent-seat:last-child{justify-self:end}.player{position:relative;gap:10px}.avatar{width:54px;height:54px;border:3px solid #c4a16f;box-shadow:0 3px 10px #0007;background:#223a40;overflow:hidden}.avatar svg{width:100%;height:100%}.turn .avatar{outline:3px solid #fae0a1;box-shadow:0 0 23px #f2c16d55}.spot-badge{background:#edc781;color:#362b1e;width:23px;height:23px;border-radius:50%;position:absolute;left:38px;top:36px;font-size:.75rem;font-weight:800;display:grid;place-items:center;border:2px solid #24594d}.cpu-label{display:inline-block;color:#bad0c6;border:1px solid #aac9b544;padding:2px 4px;border-radius:4px;font-size:.55rem;vertical-align:middle}.opponent-hand{display:flex;padding:9px 0 0 58px;height:50px;pointer-events:none}.opponent-hand i{display:block;width:25px;height:35px;margin-left:-13px;border:2px solid #d6d1b9;border-radius:4px;background:repeating-linear-gradient(45deg,#27354a 0 3px,#4b6474 3px 4px);box-shadow:1px 2px 4px #0005;transform:rotate(-8deg)}.opponent-hand i:nth-child(n+4){transform:rotate(8deg)}
.table-center{position:relative;z-index:1;min-height:245px;padding:0 20px 20px;gap:10px}.table-watermark{font-size:4.5rem;letter-spacing:12px;color:#dddfbb30;text-shadow:0 2px 0 #062a2833}.trick-cards{position:relative;width:290px;height:180px;display:block}.trick-slot{position:absolute;top:0}.trick-slot.seat-1{left:42px;transform:rotate(-12deg)}.trick-slot.seat-2{right:42px;transform:rotate(12deg)}.trick-slot.seat-0{left:106px;top:50px;z-index:3;transform:rotate(-3deg)}.trick-slot>span{font-size:.65rem;background:#092c26dd;border-radius:20px;padding:3px 7px}.trick-slot .card{width:76px;height:106px;box-shadow:2px 6px 12px #0006}.trump-chip{font-size:.75rem;border-color:#bc9c6266;background:#0b3028b0;color:#f4dba5}.table-message{font-size:.875rem}
.action-panel{background:linear-gradient(120deg,#263b43,#182d36);border-color:#dab26a40;min-height:90px;box-shadow:0 5px 18px #0002}.hand-header{margin:22px 8px 0}.hand-header>span{font-size:.65rem;letter-spacing:1.3px;line-height:1.8;text-align:right;color:#b5c9ca}.hand-header .player-meta{font-size:.8rem}.hand-header .avatar{width:45px;height:45px}.hand-header .spot-badge{left:31px;top:28px}
.hand-scroll{overflow-x:auto;overflow-y:hidden;padding:0 8px;scrollbar-width:thin}.hand-fan{position:relative;height:195px;min-width:310px;margin:0 auto;padding-top:30px}.hand-fan .card{position:absolute;top:30px;width:78px;height:115px;padding:7px;transform:translateY(var(--lift)) rotate(var(--tilt));transform-origin:50% 90%;box-shadow:-3px 2px 7px #0005;transition:transform .16s,filter .16s,box-shadow .16s;background:linear-gradient(125deg,#fffdf6,#e6e4db);border-color:#c6c8bd}.card .rank small{display:block;font-size:1rem;margin-top:3px}.card.joker .rank small{font-size:.95rem}.hand-fan .card .rank{font-size:1.1rem;line-height:1}.hand-fan .card .pip{position:absolute;right:12px;bottom:26px;font-size:2rem}.hand-fan .card .corner{font-size:.9rem}.hand-fan .card.joker .rank{font-size:.5rem;writing-mode:vertical-rl;letter-spacing:1px}.hand-fan .card.joker{background:linear-gradient(135deg,#fff3d0,#dabb7d)}.hand-fan .card:disabled{opacity:1;filter:brightness(.68) saturate(.6);cursor:default}.hand-fan .card:not(:disabled){box-shadow:-3px 2px 7px #0005,0 -2px 0 #f1ce88}.hand-fan .card:hover:not(:disabled),.hand-fan .card:focus-visible,.hand-fan .card.selected{transform:translateY(calc(var(--lift) - 19px)) rotate(var(--tilt));background:#fffdf6;box-shadow:-3px 8px 16px #0007,0 -3px 0 #f4d599}.hand-fan .card:focus-visible{outline:2px solid #fff0bb;outline-offset:1px}
.sidebar{background:linear-gradient(155deg,#223641,#142631);box-shadow:0 14px 40px #0002;border-color:#d6b87922}.score-top b{font-family:Georgia,serif;font-size:1.65rem}.sidebar h2{font-family:Georgia,serif;font-size:1.4rem;font-weight:normal}.round-results{position:relative;z-index:4}.music-dock{max-width:1510px;margin:0 auto;padding:0 4vw 25px}.music-dock details{border:1px solid #d6b87933;background:#13252eee;border-radius:12px;padding:15px}.music-dock summary{cursor:pointer;color:var(--gold);font-size:.9rem}.music-dock p{color:var(--muted);font-size:.8rem;margin:12px 0}.music-dock iframe{width:100%;height:352px;border:0;border-radius:12px}.music-dock a{color:var(--gold)}
@media(max-width:1100px){.opponents{padding:18px 20px 0}.felt{border-radius:110px}.player-name{font-size:.85rem}.player-meta{font-size:.75rem}}
@media(max-width:760px){main{padding:22px 12px}.felt{min-height:370px;border-width:8px;border-radius:85px;margin:12px 5px 18px}.opponents{padding:18px 13px 0;gap:12px}.opponents .player{gap:7px}.opponents .avatar{width:40px;height:40px}.opponents .spot-badge{left:28px;top:27px;width:19px;height:19px}.player-name{font-size:.75rem}.player-meta{font-size:.65rem}.opponent-hand{padding-left:42px;height:44px}.opponent-hand i{width:22px;height:31px}.table-center{min-height:235px;padding:0 10px 18px}.hand-fan .card{width:64px;height:101px;padding:5px}.hand-fan .card .rank{font-size:.95rem}.hand-fan .card .pip{font-size:1.7rem;right:8px}.hand-fan .card .corner{font-size:.7rem}.hand-fan{height:185px}.hand-header{margin-top:18px}.action-panel{min-height:85px;padding:15px}.table-heading h1{font-size:1.35rem}.table-heading .eyebrow{font-size:.65rem}.table-heading{gap:6px}.music-dock{padding:0 12px 20px}}
.music-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:14px 0}.music-controls select{max-width:230px}.music-controls label,.music-controls a{font-size:.8rem}

/* Neighborhood kitchen, after sundown. */
body{background:linear-gradient(#1d191bd9,#201811aa 55%,#191513ed),url('/kitchen.svg') center top/cover fixed;color:#fff5df}
.topbar{background:#211c17d9;border-bottom-color:#edc78135;backdrop-filter:blur(8px)}
.table-heading{background:#251c15cc;border:1px solid #d6b87933;border-radius:12px;padding:16px 20px}.table-heading .eyebrow{color:#f4cb8b}
.play-area{position:relative;background:linear-gradient(#271b0f08,#271b0f66),url('/kitchen.svg') center top/100% auto no-repeat;border-radius:26px;padding:110px 18px 0;border:1px solid #bf95653b;box-shadow:0 18px 40px #0005;overflow:hidden}
.play-area:before{content:'THE KITCHEN TABLE';position:absolute;top:17px;left:50%;transform:translateX(-50%);font-size:.64rem;letter-spacing:3px;background:#241b13db;border:1px solid #d4b78966;color:#f1d7a5;padding:8px 15px;border-radius:5px;white-space:nowrap}
.felt{border:11px solid #56371f;border-radius:75px;min-height:380px;background:radial-gradient(ellipse at 50% 30%,#e0ad6235,transparent 70%),repeating-linear-gradient(1deg,#87592f 0px,#926338 3px,#855730 5px,#8d5e35 8px,#7e502e 10px);box-shadow:0 0 0 2px #b0854e,0 0 0 7px #3b281a,inset 0 0 0 2px #d6ae644d,inset 0 0 70px #29180e70,0 22px 30px #160f0dc9;margin:0 8px 22px}
.felt:before{inset:13px;border:1px solid #d0a1694d}.felt:after{opacity:.12;background:repeating-linear-gradient(0deg,transparent 0 42px,#28180e 43px,transparent 45px)}
.opponents{padding-top:20px}.opponents .player{background:#291d16d1;padding:8px 12px;border:1px solid #e0be7540;border-radius:30px}.opponents .spot-badge{left:49px;top:43px;border-color:#684627}.player-meta{color:#e8d6b6}.table-watermark{color:#f7e4b32e;text-shadow:0 2px 1px #42281177}.trump-chip{background:#382617e8;border-color:#ddb77777}.table-message{color:#fff3d5;text-shadow:0 1px 3px #29190c}
.action-panel{background:linear-gradient(120deg,#3e3024f5,#2a231cf5);border-color:#d8ad6959}.hand-header{background:#241d17d9;padding:10px 12px;border-radius:12px;margin-top:14px}.hand-header>span{color:#e5d5b5}.hand-fan{height:190px}.sidebar,.form-panel{background:linear-gradient(140deg,#382d24f5,#241f1af5);border-color:#c49b6344}.sidebar .muted,.score-detail,.footer-note{color:#d0c0a9}.sidebar{backdrop-filter:blur(8px)}.score-row{border-color:#ae8c5b44}.music-dock details{background:#2c231bed;border-color:#c5a06e55}.music-dock summary{color:#f3d095}.feature-table{background:radial-gradient(ellipse at center,#956739,#593d27);border-color:#b58b54;box-shadow:0 0 0 9px #322417,0 0 0 10px #a07848}.setup-intro p,.rank-note p{color:#e0d0b8}.setup-intro,.setup-aside{filter:drop-shadow(0 3px 8px #16120d)}
@media(max-width:1100px){.play-area{padding:95px 12px 0}.opponents{padding:17px 10px 0}.opponents .player{padding:7px;gap:7px}.opponents .spot-badge{left:43px;top:42px}}
@media(max-width:760px){.play-area{padding:92px 7px 0;border-radius:18px;background-size:auto 450px}.play-area:before{top:12px;font-size:.55rem}.felt{border-radius:50px;border-width:7px;min-height:365px;margin:0 4px 18px}.opponents{padding:16px 7px 0;gap:8px}.opponents .player{padding:5px;gap:5px;border-radius:20px}.opponents .avatar{width:33px;height:33px}.opponents .spot-badge{left:26px;top:28px}.opponents .player-name{font-size:.68rem}.opponents .player-meta{font-size:.58rem}.opponent-hand{padding-left:35px}.hand-header{padding:9px}.table-heading{padding:12px}.hand-scroll{padding:0}.hand-fan{min-width:290px}.hand-header>span{font-size:.55rem}.table-center{padding-left:4px;padding-right:4px}.trick-cards{width:265px}.trick-slot.seat-0{left:94px}.trick-slot.seat-1{left:33px}.trick-slot.seat-2{right:33px}}

/* Sculpted mobile-game treatment: bold silhouettes, bevels and warm light. */
:root{--gold:#ffd86d;--muted:#d4e2e7;--line:#42616d;font-family:Trebuchet MS,Segoe UI,Arial,sans-serif}
body{background:linear-gradient(#152e3dd9,#12212aeb),url('/kitchen-3d.jpg') center/cover fixed}
h1,h2,h3,.brand,.player-name{font-family:Trebuchet MS,Segoe UI,sans-serif;font-weight:900;letter-spacing:-.4px}.brand{color:#ffdf72;text-shadow:0 3px 0 #835322,0 5px 0 #242520}.topbar{background:linear-gradient(#31576a,#1a3445);border-bottom:4px solid #0d1e29;box-shadow:0 2px 0 #58808b}
button{border:2px solid #805220;border-radius:12px;background:linear-gradient(#ffe898,#f9c54b 65%,#e6a72e);box-shadow:inset 0 2px 0 #fff2b9,0 4px 0 #795023,0 6px 8px #0004;color:#493313;font-weight:900}.quiet{background:linear-gradient(#456b7c,#2b4c60);border-color:#172e3c;color:#f1f6ed;box-shadow:inset 0 2px 0 #80a1aa66,0 3px 0 #122838}.quiet:hover:not(:disabled){background:#47798d}button:active:not(:disabled){translate:0 2px}.table-heading{background:linear-gradient(#497184,#294a5e);border:3px solid #172e3a;box-shadow:inset 0 2px 0 #8cabb666,0 5px 0 #0c202c;border-radius:17px}.table-heading h1{color:#fff3d0;text-shadow:0 2px 0 #132e42}.table-heading .eyebrow{color:#ffdf7d}
.play-area{padding:155px 17px 0;background:linear-gradient(transparent 50%,#263c3dbb 82%),url('/kitchen-3d.jpg') center top/100% auto no-repeat,#31565a;border:4px solid #183342;border-radius:32px;box-shadow:inset 0 3px 0 #a6bd9a66,0 8px 0 #0b202d,0 20px 40px #0005}.play-area:before{top:15px;font-size:.68rem;letter-spacing:2px;color:#ffeb9d;background:linear-gradient(#526d79,#283f4a);border:3px solid #243741;border-radius:11px;box-shadow:inset 0 2px 0 #94b0b766,0 4px 0 #122a35}
.felt{background:radial-gradient(ellipse at 50% 25%,#e4b57244,transparent 75%),repeating-linear-gradient(2deg,#a9753e 0,#aa773f 9px,#966137 11px,#b17d44 13px,#a3713e 65px);border:12px solid #89522b;border-radius:65px;box-shadow:inset 0 3px 0 #f6d09188,inset 0 -6px 12px #5b321b70,0 0 0 3px #d1a05e,0 9px 0 5px #4c311e,0 21px 19px #11222ba6}.felt:before{border:2px solid #f6d09444;border-radius:49px}.felt:after{display:none}.table-watermark{font-family:Trebuchet MS,sans-serif;font-weight:900;color:#fadd9e50;text-shadow:0 3px 0 #73432266}.table-message{font-weight:700}.opponents .player{width:fit-content;max-width:100%;background:linear-gradient(#3e616d,#234555);border:2px solid #142f3e;box-shadow:inset 0 2px 0 #8aafb066,0 4px 0 #122b37}.avatar{width:58px;height:58px;border:4px solid #ffda73;box-shadow:inset 0 3px 0 #fff,0 4px 0 #83572e,0 8px 10px #0006;background:#567a8a}.avatar svg{filter:drop-shadow(1px 3px 1px #33291e66) saturate(1.25)}.spot-badge{background:linear-gradient(#fff0a4,#f1ad34);border-color:#885d2d;color:#543415;box-shadow:0 2px 0 #1c303b}.turn .avatar{outline-color:#fff4a9;box-shadow:0 0 24px #ffd46099,0 4px 0 #83572e}.trump-chip{background:linear-gradient(#436771,#254957);border:2px solid #1a3544;color:#ffe89a;box-shadow:0 3px 0 #152b33;font-weight:800}.trick-slot>span{background:#234653;color:#fff0ca;border:1px solid #8bada677}
.sidebar,.form-panel{background:linear-gradient(130deg,#426b7c,#254a60);border:3px solid #142e40;border-radius:19px;box-shadow:inset 0 2px 0 #91b5bd77,0 6px 0 #0e2634,0 12px 22px #0004}.sidebar h2{font-family:Trebuchet MS,sans-serif;font-size:1.35rem;font-weight:900;color:#fff0bd;text-shadow:0 2px 0 #142e3c}.score-top b{font-family:Trebuchet MS,sans-serif;font-weight:900;color:#ffdb6e;text-shadow:0 2px 0 #775023}.sidebar .muted,.score-detail,.footer-note{color:#d3e0de}.score-row{border-color:#83a5ad44}.book-progress i{height:7px;background:#172f43;box-shadow:inset 0 1px 2px #0007}.book-progress i.filled{background:linear-gradient(#ffe79c,#e4ae38)}.action-panel{background:linear-gradient(#4e7280,#345567);border:3px solid #1b3545;box-shadow:inset 0 2px 0 #a1bac077,0 4px 0 #162c39;border-radius:15px}.action-panel h3{color:#fff2c0}.action-panel p{color:#d9e4e2}.hand-header{background:#17384bdf;border:2px solid #6a8c9277}.hand-header>span{color:#d8e6e0}.player-meta{color:#d5e4e4}.music-dock details{background:linear-gradient(#355b6e,#203e53);border:3px solid #162e3d;box-shadow:inset 0 2px 0 #73959f66,0 4px 0 #102633;border-radius:16px}.music-dock summary{font-weight:900;color:#ffe69a}.card{border-radius:9px}.hand-fan .card:not(:disabled){box-shadow:-3px 3px 7px #0006,0 -2px 0 #ffe99d}.hand-fan .card:active:not(:disabled){translate:none}.setup-intro h1{color:#ffe08b;text-shadow:0 4px 0 #503c28}.setup-intro p,.rank-note p{color:#dfedeb}.feature-table{background:linear-gradient(#a77945,#785032);border:5px solid #c49a5b;box-shadow:0 7px 0 5px #4f341e,0 20px 25px #0004}.rule-spots strong{color:#ffdf72;text-shadow:0 3px 0 #75512b;font-family:Trebuchet MS,sans-serif;font-weight:900}
@media(max-width:1100px){.play-area{padding:125px 10px 0}}
@media(max-width:760px){.play-area{padding:130px 6px 0;background-size:auto 465px;border-width:3px}.felt{border-width:8px;border-radius:45px}.felt:before{border-radius:32px}.opponents .player{padding:5px}.table-heading{padding:11px}.table-heading h1{font-size:1.15rem}.opponents .avatar{border-width:3px}.action-panel{padding:13px}.hand-header{padding:8px}.brand{font-size:2rem}.header-actions button{padding:8px}.play-area:before{font-size:.55rem}}

/* Cards sit on the table painted into the room, without a second table overlay. */
.play-area{padding:0 0 8px;background:#203e49;border:3px solid #183342;overflow:hidden}.play-area:before{display:none}
.felt{aspect-ratio:3/2;min-height:520px;margin:0;border:0;border-radius:0;background:url('/kitchen-3d.jpg') center center/cover no-repeat;box-shadow:none;overflow:hidden}
.felt:before,.felt:after{display:none}
.felt .table-center{top:49%;bottom:17%;gap:4px}.felt .trick-cards{height:140px;min-height:120px}
.opponents{position:absolute;top:36%;left:9%;right:9%;padding:0;gap:20px}.opponent-hand{padding-top:9px}.opponents .player{padding:6px 10px}.opponents .avatar{width:45px;height:45px}.opponents .spot-badge{left:38px;top:33px}
.table-center{position:absolute;top:53%;bottom:9%;left:12%;right:12%;min-height:0;padding:0;gap:7px;justify-content:center}.table-watermark{font-size:3rem}.trick-cards{height:160px;min-height:140px}.trick-slot .card{width:68px;height:96px}.trick-slot.seat-0{top:37px}.table-message{font-size:.8rem}.table-center .trump-chip{padding:4px 9px;font-size:.7rem}
.action-panel{margin:14px 14px 0}.hand-header{margin:14px 14px 0}.hand-scroll{padding:0 14px}.round-results{max-height:100%;overflow:auto;padding:10px 15px}.round-results .eyebrow{margin-bottom:6px}.round-results h2{font-size:1.35rem;margin-bottom:8px}.round-results th,.round-results td{padding-top:5px;padding-bottom:5px}
@media(max-width:1100px){.felt{min-height:490px}.opponents{left:6%;right:6%}.opponents .player{padding:5px 7px}}
@media(max-width:760px){.play-area{padding:0 0 5px}.felt{aspect-ratio:auto;height:465px;min-height:465px;background-size:auto 100%}.opponents{top:35%;left:5%;right:5%;gap:8px}.opponents .avatar{width:33px;height:33px}.opponents .spot-badge{left:27px;top:27px}.opponents .player{padding:5px}.opponent-hand{height:39px;padding-top:7px}.table-center{top:53%;bottom:7%;left:6%;right:6%;gap:5px}.trick-cards{height:135px;min-height:125px}.trick-slot .card{width:59px;height:84px;padding:5px}.trick-slot .card .pip{font-size:1.7rem}.trick-slot.seat-0{top:32px;left:101px}.table-message{font-size:.7rem}.table-center .trump-chip{font-size:.65rem}.action-panel,.hand-header{margin-left:8px;margin-right:8px}.hand-scroll{padding:0 7px}.round-results{padding:8px}.round-results h2{font-size:1.05rem}.round-results table{font-size:.68rem}.round-results .eyebrow{font-size:.6rem}}
.account-nav{display:flex;gap:10px;justify-content:flex-end;padding:10px 5%}.account-dialog{width:min(580px,94vw);max-height:88vh;overflow:auto}.account-dialog form{display:grid;gap:16px}.account-stats,.pack-grid{display:flex;flex-wrap:wrap;gap:16px}.account-stats>div,.pack-grid>div{background:#132d3b;border:1px solid #47636b;border-radius:14px;padding:18px}.account-stats strong,.account-stats span{display:block}.account-stats strong{font-size:26px;color:#ffce75}.recovery-code{overflow-wrap:anywhere;font-family:monospace;background:#14232c;padding:20px;user-select:all}.account-error{color:#ffb2a4}.coin-options{border:1px solid #57747b;border-radius:12px;margin:18px 0;padding:14px}.economy-bar{padding:16px;border-radius:14px;background:#142c39;margin:0 0 18px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.economy-bar:empty{display:none}.economy-bar p{margin:0}.legal-footer{padding:28px;text-align:center;color:#a7bfc6;font-size:13px}.legal-footer a,.policy-page a,.account-dialog a{color:#ffce75}.policy-page{max-width:800px;margin:40px auto;padding:24px;line-height:1.7}.account-dialog textarea{min-height:100px;font:inherit;padding:12px}.account-dialog .inline-field{flex-wrap:wrap}.account-dialog table{width:100%;text-align:left}@media(max-width:600px){.account-nav{justify-content:center}.policy-page{margin:0}.account-stats{gap:8px}.account-stats>div{padding:12px}}
