/* Legacy rules keep the Mini view exactly as it was; the later polish layer restyles Compact and Full. */
@layer legacy, polish;
@font-face{font-family:SidekickSystem;src:local("Trebuchet MS")}@font-face{font-family:SidekickPixel;src:url(/sidekick-pixel.woff) format("woff");font-display:swap}@font-face{font-family:SidekickCozy;src:url(/fredoka-600.woff2) format("woff2");font-weight:600;font-display:swap}
@layer legacy {
*{box-sizing:border-box}html{background:#f5f1e8;color:#303039;font-family:SidekickSystem,"Trebuchet MS",system-ui,sans-serif}body{margin:0}.fixture{min-height:100vh;padding:24px 28px 60px;background:radial-gradient(circle at 20% 7%,#fff9ed 0 18%,transparent 45%),#eceee6}.fixture-header{max-width:1460px;margin:auto auto 23px;display:flex;align-items:center;gap:14px}.fixture-mark,.lab-icon{display:grid;place-items:center;border:2px solid #313139;background:#e4dafa;box-shadow:4px 4px #303039;font-size:28px;width:50px;height:50px;border-radius:12px}.fixture-header h1{margin:0;font-size:30px;letter-spacing:-1.5px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:900;text-transform:uppercase;margin:0 0 5px;color:#767386}.fixture-chip{margin-left:auto;border:2px solid #313139;background:#cce6d2;border-radius:99px;padding:7px 12px;font-size:12px;font-weight:800}.fixture-layout{display:grid;grid-template-columns:minmax(400px,1fr) 310px;gap:22px;max-width:1460px;margin:auto}.video-stage{position:relative;min-height:420px;aspect-ratio:16/9;overflow:hidden;border:3px solid #303039;border-radius:18px;background:#30343c;box-shadow:8px 8px #303039}.video-glow{position:absolute;inset:0;background:radial-gradient(circle at 48% 40%,#667a78 0%,#424e55 44%,#282c36 100%)}.video-poster{position:absolute;inset:12%;border:2px solid #dfe9d8;border-radius:60px 60px 22px 22px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:#fff6e9}.poster-star{font-size:42px;color:#f8c788}.poster-cat{font-size:clamp(50px,7vw,110px);font-weight:1000;letter-spacing:-8px;line-height:.84;text-shadow:7px 7px #34333d}.poster-sub{margin-top:18px;font-size:16px;letter-spacing:5px;text-transform:uppercase}.video-bottom{position:absolute;left:20px;right:20px;bottom:18px;display:flex;gap:14px;align-items:center;color:#fff;font-weight:800;font-size:13px}.live-pill{background:#ed8c8e;border:2px solid #303039;padding:5px 10px;border-radius:7px;color:#303039}.video-caption{display:flex;align-items:start;justify-content:space-between;gap:20px;margin:27px 0}.video-caption h2{font-size:23px;margin:0}.video-caption p:last-child{max-width:620px;color:#666473;line-height:1.5}.fake-viewers{white-space:nowrap;font-size:12px;border:2px solid #33343c;border-radius:7px;padding:7px;background:#fffaf0}.lab-column{display:grid;align-content:start;gap:18px}.lab-card{padding:18px;background:#fffaf1;border:2px solid #303039;border-radius:14px;box-shadow:5px 5px #303039}.lab-card h2,.lab-card h3{margin:0 0 9px;font-size:18px}.lab-card p{color:#666473;line-height:1.42;font-size:13px}.lab-heading{display:flex;align-items:center;gap:13px;margin-bottom:8px}.lab-icon{width:36px;height:36px;font-size:19px;box-shadow:3px 3px #303039}.lab-form{display:grid;grid-template-columns:170px minmax(200px,1fr) auto;gap:11px;align-items:end}.lab-label,.lab-form label,.config-grid label{display:grid;gap:5px;font-weight:800;font-size:12px}.lab-card input,.lab-card select,.lab-card button{font:inherit}.lab-card input,.lab-card select{width:100%;padding:9px;background:#fff;border:2px solid #303039;border-radius:7px;color:#303039}.lab-card button{padding:9px 12px;border:2px solid #303039;border-radius:7px;box-shadow:3px 3px #303039;background:#ddd3f2;color:#303039;cursor:pointer;font-size:12px;font-weight:900}.lab-card button:active{transform:translate(2px,2px);box-shadow:1px 1px #303039}.lab-result{min-height:18px;margin-bottom:0}.button-row{display:flex;flex-wrap:wrap;gap:7px}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.config-grid button{grid-column:1/-1}.lab-danger{background:#faede9}@media(max-width:900px){.fixture-layout{grid-template-columns:1fr}.lab-column{grid-template-columns:repeat(2,minmax(0,1fr))}.video-stage{min-height:260px}}@media(max-width:600px){.fixture{padding:15px}.fixture-layout,.lab-column{display:block}.lab-card{margin:16px 0}.lab-form{grid-template-columns:1fr}.fixture-chip{display:none}.video-stage{min-height:200px}.video-caption{display:block}}

.sidekick{position:fixed;z-index:2147483000;display:flex;flex-direction:column;overflow:hidden;min-width:320px;min-height:45px;border:3px solid #303039;border-radius:16px;background:#fff9ef;color:#303039;box-shadow:0 2px 7px #30303935;font-family:SidekickSystem,"Trebuchet MS",system-ui,sans-serif;font-size:13px;line-height:1.25}.sidekick *{box-sizing:border-box}.sidekick button,.sidekick input,.sidekick select{font:inherit}.sidekick button{cursor:pointer;color:inherit}.sidekick button:focus-visible,.sidekick input:focus-visible,.sidekick select:focus-visible,.sidekick summary:focus-visible,.sidekick [tabindex]:focus-visible{outline:3px solid #795fc3;outline-offset:2px}.sidekick button:disabled{opacity:.5;cursor:not-allowed}.sidekick [hidden]{display:none!important}.sidekick .muted{color:#696673;line-height:1.4}.sidekick .eyebrow{color:#797384}.sk-head{height:42px;flex:none;display:flex;align-items:center;gap:8px;padding:0 9px;background:#dbd0f2;color:#303039;border-bottom:3px solid #303039;cursor:grab;user-select:none;touch-action:none}.sk-head:active{cursor:grabbing}.sk-grip{font-size:22px;line-height:1}.sk-brand{font-size:14px;font-weight:1000;letter-spacing:1px}.sk-brand small{font-size:8px;margin-left:3px;letter-spacing:1px}.sk-head-buttons{display:flex;gap:5px;margin-left:auto}.sk-head button{width:26px;height:26px;border:2px solid #303039;background:#fff8ed;border-radius:6px;box-shadow:2px 2px #303039;font-weight:900}.sidekick #sk-body{min-height:0;overflow:auto;scrollbar-color:#aebca9 transparent}.sidekick.collapsed #sk-body,.sidekick.collapsed .resize-handle{display:none}.sk-topline{display:flex;justify-content:space-between;padding:9px 14px 7px;color:#656474;font-size:10px;font-weight:900;letter-spacing:.4px}.sk-nav{display:flex;margin:0 12px;border-bottom:2px solid #303039;gap:3px}.sk-nav button{flex:1;background:transparent;border:0;border-radius:7px 7px 0 0;padding:9px 4px;font-weight:900}.sk-nav button[aria-selected=true]{background:#c8e1c8;border:2px solid #303039;border-bottom:0;margin-bottom:-2px;box-shadow:2px -2px #303039}.sk-error{background:#ffe3dc;border-bottom:2px solid #8e4b4b;padding:9px 13px;color:#783b3b;font-weight:800}.sk-page{padding:14px 14px 24px}.sk-page h2{font-size:23px;line-height:1.05;letter-spacing:-1px;margin:3px 0 7px}.sk-page h3{font-size:14px;margin:0 0 9px}.sk-page p{margin:7px 0}.sidekick .primary,.sidekick .action-buttons button,.sidekick .profile-form button{border:2px solid #303039;border-radius:8px;padding:8px 10px;background:#f6dfb1;box-shadow:3px 3px #303039;font-weight:1000}.sidekick .primary{background:#add6b4}.sidekick .wide{width:100%;margin:12px 0 16px;padding:11px}.sidekick .primary:active,.sidekick .action-buttons button:active,.sidekick .profile-form button:active{transform:translate(2px,2px);box-shadow:1px 1px #303039}.hero{height:142px;border:2px solid #303039;border-radius:12px;background:radial-gradient(circle,#f7e5d4 0 32%,#e3ddf2 33% 65%,#d0e7d5 66%);display:flex;align-items:center;justify-content:space-around;box-shadow:4px 4px #303039;margin-bottom:16px}.hero-cat{width:118px;height:118px;cursor:pointer}.hero-cat svg{width:100%;height:100%}.hero-spark{font-size:31px;color:#615d77}.hero-cat.bop{animation:bop .35s ease-in-out}@keyframes bop{50%{transform:translateY(-9px) rotate(-5deg)}}.wallet-strip{display:flex;align-items:center;gap:10px;border:2px solid #303039;background:#fff;border-radius:9px;padding:7px;margin-top:13px}.wallet-strip svg{width:43px;height:43px;flex:none}.wallet-strip strong,.wallet-strip small{display:block}.wallet-strip small{color:#646474;margin-top:3px}.game-tile{display:flex;align-items:center;gap:10px;padding:9px;background:#fff;border:2px solid #303039;border-radius:9px;margin:9px 0;box-shadow:3px 3px #303039}.game-tile.unavailable{opacity:.63}.tile-icon{display:grid;place-items:center;flex:none;width:37px;height:37px;background:#f4dfb5;border:2px solid #303039;border-radius:7px;font-size:24px}.game-tile strong,.game-tile small{display:block}.game-tile small{margin-top:2px;color:#666473}.open-tag,.soon-tag{margin-left:auto;font-size:9px;font-weight:1000;background:#c5e1ca;padding:4px 5px;border:1px solid #303039;border-radius:4px}.soon-tag{background:#e9e4e1}.table-heading{display:flex;align-items:start;justify-content:space-between;gap:7px}.tiny-star{color:#7d997d}.quiet{border:2px solid #303039;border-radius:7px;background:#e2d8f4;padding:6px 7px;font-size:10px!important;font-weight:900;white-space:nowrap}.table-meta{display:flex;justify-content:space-between;margin:7px 0;font-size:10px;font-weight:900;color:#656474;text-transform:uppercase}.felt{background:#9ebbaa;border:3px solid #303039;border-radius:90px 90px 25px 25px;padding:14px 8px 10px;box-shadow:4px 4px #303039;min-height:208px}.dealer-zone{text-align:center;min-height:60px}.zone-label{display:block;color:#454e4d;font-size:9px;font-weight:1000;letter-spacing:1.3px;margin-bottom:4px}.cards{display:flex;justify-content:center;gap:3px;min-height:37px}.card{display:inline-grid;place-items:center;min-width:27px;height:38px;padding:0 3px;border:2px solid #303039;border-radius:4px;background:#fffaf3;box-shadow:2px 2px #303039;font-size:14px;font-weight:1000;color:#303039}.card.red{color:#c6636e}.card.back{background:repeating-linear-gradient(45deg,#d6c9ed,#d6c9ed 4px,#eee8f7 4px,#eee8f7 8px);color:#303039}.hand-total{display:inline-block;margin-top:6px;font-size:10px;font-weight:900}.empty-cards{color:#596b62;font-size:11px;font-style:italic}.felt-divider{text-align:center;color:#41594a;font-weight:900;letter-spacing:3px;border-top:2px solid #799b85;margin:10px 0 8px;padding-top:4px}.seat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.seat{display:flex;gap:5px;align-items:center;min-width:0;min-height:52px;border:2px solid #303039;border-radius:8px;background:#f8f3e7;padding:4px}.seat.you{background:#fcdfa8}.seat.empty{justify-content:center;border-style:dashed;background:#b6ceb9}.seat-avatar{width:30px;height:30px;flex:none;position:relative}.seat-avatar svg{width:100%;height:100%}.reaction-bubble{position:absolute;z-index:2;bottom:27px;left:-18px;width:max-content;max-width:100px;padding:3px 5px;border:2px solid #303039;border-radius:7px;background:#fff;box-shadow:2px 2px #303039;font-size:9px;font-weight:900}.seat-copy{min-width:0}.seat-copy strong,.seat-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-copy strong{font-size:10px}.seat-copy small{font-size:9px;color:#666473}.seat-copy em{font-style:normal;color:#496e54}.rank-tag{font-size:8px;color:#6d5a8f}.seat-cards{display:flex;gap:2px;margin-top:3px}.seat-cards .card{min-width:17px;height:22px;font-size:9px;border-width:1px;box-shadow:1px 1px #303039}.empty-seat{font-size:9px;font-weight:900;color:#536656}.own-seat{display:flex;gap:9px;align-items:center;margin:14px 0 9px;padding:8px;min-height:69px;border:2px solid #303039;border-radius:9px;background:#fbe2b8;box-shadow:3px 3px #303039}.own-avatar{width:45px;height:45px;flex:none;cursor:context-menu}.own-avatar svg{width:100%;height:100%}.own-cards{display:flex;gap:4px;margin:4px 0}.own-seat strong,.own-seat small{display:block}.own-seat small{font-size:10px}.own-seat #open-reactions{margin-left:auto;align-self:start;border:2px solid #303039;border-radius:7px;background:#fff;padding:3px 7px;font-size:17px}.own-placeholder{font-size:11px;color:#655d56}.action-panel{padding:7px 0}.bet-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.bet-row label{display:flex;align-items:center;gap:6px;font-weight:900}.bet-row input{width:73px;border:2px solid #303039;border-radius:5px;padding:6px;background:#fff;font-weight:900}.bet-row span{font-size:10px;color:#6b6772}.action-buttons{display:flex;gap:6px;flex-wrap:wrap}.sidekick .action-buttons button{font-size:11px;padding:7px 9px}.action-panel .muted{font-size:10px;margin-top:9px}.leaderboards{margin-top:9px}.leaderboards details{border-top:2px solid #303039;padding-top:7px}.leaderboards summary{font-weight:900;cursor:pointer;list-style:none}.leaderboards summary span{float:right}.leaderboard-cols{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.leaderboard-cols strong{font-size:10px}.leaderboard-cols ol{padding:0;list-style:none;margin:6px 0}.leaderboard-cols li{display:flex;justify-content:space-between;gap:4px;border-bottom:1px solid #ddd7ce;padding:4px 0;font-size:9px}.no-board{color:#888}.profile-summary{display:flex;gap:10px;align-items:center;padding:9px;border:2px solid #303039;background:#f5e1b8;border-radius:9px;margin:12px 0}.profile-summary svg{width:65px;height:65px;flex:none}.profile-summary strong,.profile-summary span{display:block}.profile-summary span{font-size:11px;margin-top:3px}.profile-form,.appearance{display:grid;gap:11px;border-top:2px solid #303039;padding-top:13px;margin-top:15px}.profile-form>label:first-child{display:grid;gap:5px;font-weight:900}.profile-form select{border:2px solid #303039;border-radius:6px;background:#fff;padding:8px}.sidekick .check{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700}.sidekick input[type=checkbox]{width:16px;height:16px;accent-color:#75ab81}.appearance label:last-of-type{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.appearance input[type=range]{width:110px;accent-color:#8aaa8d}.reaction-menu{position:absolute;right:12px;bottom:38px;z-index:5;min-width:170px;padding:8px;border:2px solid #303039;border-radius:9px;background:#fffaf1;box-shadow:4px 4px #303039;display:grid;gap:5px}.reaction-head{display:flex;align-items:center;justify-content:space-between;font-size:11px}.reaction-head button{background:transparent;border:0;font-size:20px}.reaction-menu [role=menuitem]{border:2px solid #303039;border-radius:6px;background:#e6ddf4;padding:6px;text-align:left;font-weight:900;font-size:11px}.reaction-menu [role=menuitem]:hover{background:#d3e8d6}.resize-handle{position:absolute;right:2px;bottom:2px;width:18px;height:18px;cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,transparent 0 38%,#303039 40% 47%,transparent 49% 61%,#303039 63% 70%,transparent 72%)}.sidekick.expanded .seat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.sidekick.expanded .felt{padding:24px}.sidekick.expanded .seat{min-height:70px}.sidekick.expanded .seat-avatar{width:40px;height:40px}.sidekick.expanded .seat-copy strong{font-size:12px}.sidekick.expanded .seat-copy small{font-size:10px}.sidekick.hide-reactions .reaction-bubble{display:none}.sidekick.reduced-motion *{animation-duration:.01ms!important;transition-duration:.01ms!important}@media(prefers-reduced-motion:reduce){.sidekick *{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:650px){.sidekick.expanded .felt{padding:12px}.sidekick.expanded .seat-grid{gap:5px}}

.sidekick .hero-cat{display:block;padding:0;border:0;background:transparent;box-shadow:none}.sidekick #page-table{display:flex;flex-direction:column}.sidekick #page-table[hidden]{display:none}.table-heading{order:0}.table-meta{order:1}.own-seat{order:2}.action-panel{order:3}.table-board{order:4}.leaderboards{order:5}.sidekick.expanded .table-board{order:2}.sidekick.expanded .own-seat{order:3}.sidekick.expanded .action-panel{order:4}
.advanced-config{grid-column:1/-1;border-top:1px solid #bbb4ad;padding-top:8px}.advanced-config summary{font-size:12px;font-weight:900;cursor:pointer;margin-bottom:9px}.advanced-config .config-grid{gap:8px}.advanced-config input{min-width:0}
.sidekick{min-width:min(320px,calc(100vw - 12px))}
.felt{position:relative}.sidekick .table-cat{position:absolute;right:6px;top:6px;width:42px;height:58px;padding:0;border:0;background:transparent;z-index:1}.table-cat svg{width:100%;height:100%}.dealer-zone{position:relative;z-index:2;pointer-events:none}.table-cat.bop{animation:bop .35s ease-in-out}
.own-deadline{order:3;display:flex;align-items:center;gap:9px;margin-top:4px;padding:7px 10px;border:2px solid #303039;border-radius:8px;background:#e3d8f4;box-shadow:3px 3px #303039}.own-deadline strong{font-size:11px;letter-spacing:1px}.own-deadline span{margin-left:auto;font-size:22px;font-weight:1000;font-variant-numeric:tabular-nums}.own-deadline small{font-size:9px;color:#5c526c}.action-panel{order:4}.table-board{order:5}.leaderboards{order:6}.sidekick.expanded .own-deadline{order:4}.sidekick.expanded .action-panel{order:5}.sidekick.expanded .leaderboards{order:6}
.sidekick.expanded .seat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.sidekick.expanded .seat{min-height:91px}.sidekick.expanded .seat-copy{flex:1}.sidekick.expanded .seat-cards .card{min-width:29px;height:39px;padding:0 3px;font-size:15px;border-width:2px;box-shadow:2px 2px #303039}.sidekick.expanded .dealer-zone .card{min-width:34px;height:48px;font-size:18px}.sidekick.expanded .own-cards .card{min-width:38px;height:54px;font-size:20px}.sidekick.expanded .table-cat{width:58px;height:78px;right:11px;top:9px}
@keyframes cardEnter{from{opacity:0;transform:translateY(-9px) rotate(-5deg)}to{opacity:1;transform:none}}@keyframes cardFlip{from{transform:scaleX(.1);filter:brightness(1.3)}to{transform:scaleX(1);filter:brightness(1)}}@keyframes resultPop{50%{transform:scale(1.025)}}.card-enter{animation:cardEnter .32s ease-out both}.card-flip{animation:cardFlip .38s ease-out both}.own-seat.result-pop{animation:resultPop .42s ease-out}

/* Keep the window, including its border and offset shadow, inside the usable viewport. */
.sidekick{box-sizing:border-box}.sidekick .card.red{color:#982b40}.seat-cards,.own-cards{flex-wrap:wrap;max-width:100%}.seat-copy small{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25}.empty-seat{color:#303039}
.sk-topline,.table-meta{font-size:11px;color:#41414b}.sk-brand small{font-size:10px}.zone-label{font-size:11px;color:#3b4841}.seat-copy strong{font-size:11px}.seat-copy small,.bet-row span,.action-panel .muted,.own-deadline small{font-size:11px;color:#41414b}.empty-seat{font-size:11px}.sidekick .action-buttons button{min-height:44px}.sidekick #act-hit{background:#a8d9b3}.sidekick #act-stand{background:#f4d69d}.sidekick #act-double{background:#d9c9f4}.sidekick #act-leave{order:99;margin-left:auto;background:transparent;border-color:#656574;box-shadow:none}.sidekick #act-leave:active{box-shadow:none}.sidekick #act-cancelBet{background:#fff8eb}.action-buttons{align-items:center}
.own-seat.has-result{flex-wrap:wrap}.own-hand-copy{min-width:0;flex:1}.result-banner{flex-basis:100%;width:100%;padding:8px 9px;border:2px solid #303039;border-radius:7px;background:#f4d4ce;line-height:1.35}.result-banner strong{font-size:12px}.result-banner small{font-size:11px;color:#3d3b43;margin-top:3px}.result-banner.win{background:#c9e8cd}.result-banner.push{background:#e5dbf5}.locked-bet{padding:7px 9px;margin-bottom:8px;border:2px solid #303039;border-radius:7px;background:#e6dff1;font-weight:900;color:#3b3943}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.reaction-menu{width:220px;min-width:0;max-height:calc(100% - 56px);overflow:auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.reaction-head{grid-column:1/-1}.reaction-menu [role=menuitem]{min-height:36px;text-align:center}

/* Expanded mode keeps the shared table and personal controls in view together. */
.sidekick.expanded:not(.narrow) #page-table{display:grid;grid-template-columns:minmax(0,1fr) 216px;grid-template-areas:"heading heading" "meta meta" "board own" "board deadline" "board actions" "leader leader";column-gap:10px;align-content:start;align-items:start}
.sidekick.expanded:not(.narrow) .table-heading{grid-area:heading}.sidekick.expanded:not(.narrow) .table-meta{grid-area:meta}.sidekick.expanded:not(.narrow) .table-board{grid-area:board;min-width:0}.sidekick.expanded:not(.narrow) .own-seat{grid-area:own;min-width:0;margin:3px 0 6px;padding:6px}.sidekick.expanded:not(.narrow) .own-deadline{grid-area:deadline;min-width:0;margin:2px 0 4px;padding:5px 6px;flex-wrap:wrap}.sidekick.expanded:not(.narrow) .action-panel{grid-area:actions;min-width:0;padding:4px 0}.sidekick.expanded:not(.narrow) .leaderboards{grid-area:leader;margin-top:8px}
.sidekick.expanded:not(.narrow) .felt{padding:10px 8px 8px;min-height:0;border-radius:65px 65px 20px 20px}.sidekick.expanded:not(.narrow) .dealer-zone{min-height:48px}.sidekick.expanded:not(.narrow) .dealer-zone .card{min-width:29px;height:40px;font-size:16px}.sidekick.expanded:not(.narrow) .felt-divider{margin:6px 0 6px;padding-top:3px}.sidekick.expanded:not(.narrow) .seat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.sidekick.expanded:not(.narrow) .seat{display:block;position:relative;min-height:72px;padding:5px;align-items:initial}.sidekick.expanded:not(.narrow) .seat-avatar{position:absolute;top:5px;left:5px;width:29px;height:29px}.sidekick.expanded:not(.narrow) .seat-copy{width:100%}.sidekick.expanded:not(.narrow) .seat-copy strong,.sidekick.expanded:not(.narrow) .seat-copy small{padding-left:34px}.sidekick.expanded:not(.narrow) .seat-cards{display:flex;flex-wrap:wrap;gap:2px;margin-top:5px}.sidekick.expanded:not(.narrow) .seat-cards .card{min-width:27px;height:35px;font-size:14px}.sidekick.expanded:not(.narrow) .table-cat{width:45px;height:60px;right:3px;top:3px}.sidekick.expanded:not(.narrow) .own-cards .card{min-width:32px;height:44px;font-size:18px}.sidekick.expanded:not(.narrow) .own-avatar{width:37px;height:37px}.sidekick.expanded:not(.narrow) .action-panel .muted{margin:6px 0}.sidekick.expanded:not(.narrow) .bet-row{margin-bottom:5px}.sidekick.expanded:not(.narrow) .action-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.sidekick.expanded:not(.narrow) #act-leave{margin-left:0}

/* A resized expanded panel falls back to hand-first scrolling. */
.sidekick.expanded.narrow #page-table{display:flex;flex-direction:column}.sidekick.expanded.narrow .table-heading{order:0}.sidekick.expanded.narrow .table-meta{order:1}.sidekick.expanded.narrow .own-seat{order:2}.sidekick.expanded.narrow .own-deadline{order:3}.sidekick.expanded.narrow .action-panel{order:4}.sidekick.expanded.narrow .table-board{order:5}.sidekick.expanded.narrow .leaderboards{order:6}.sidekick.expanded.narrow .seat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sidekick.expanded.narrow .seat{min-height:58px}.sidekick.expanded.narrow .seat-avatar{width:30px;height:30px}.sidekick.expanded.narrow .seat-cards .card{min-width:20px;height:27px;font-size:11px}.sidekick.expanded.narrow .felt{padding:12px 7px 8px}.sidekick.expanded.narrow .table-cat{width:42px;height:58px;right:4px;top:4px}
.sidekick.expanded:not(.narrow) .seat.empty{display:grid;place-items:center}.sidekick.expanded:not(.narrow) .seat.empty .empty-seat{white-space:normal;text-align:center}
.sidekick .action-buttons button{min-width:44px}

/* The mirrored deadline stays in view while the table itself scrolls. */
.sidekick .sk-topline{position:sticky;top:0;z-index:12;min-height:32px;background:#fff9ef;border-bottom:2px solid #303039;box-shadow:0 2px 0 #fff9ef}.sidekick #sk-phase{font-variant-numeric:tabular-nums;font-weight:1000;white-space:nowrap}.sidekick .reaction-menu{z-index:6}.sidekick .reaction-menu .emoji-reaction{font-size:20px;line-height:1;min-height:44px}

/* Dealer cards have a dedicated lane clear of the perched cat. */
.sidekick .dealer-zone{padding-right:58px}.sidekick .dealer-zone .cards{display:flex;flex-wrap:wrap;justify-content:center;align-content:center;gap:4px;max-width:100%;margin:0 auto}

/* Group the hand, timer and actions so the expanded grid cannot stretch them apart. */
.sidekick .personal-stack{display:flex;flex-direction:column;order:2;min-width:0}.sidekick.expanded:not(.narrow) #page-table{grid-template-areas:"heading heading" "meta meta" "board personal" "leader leader"}.sidekick.expanded:not(.narrow) .personal-stack{grid-area:personal;align-self:start}.sidekick.expanded:not(.narrow) .table-board{grid-area:board}.sidekick.expanded:not(.narrow) .leaderboards{grid-area:leader}.sidekick.expanded.narrow .personal-stack{order:2}

/* Compact play gives each action and shared seat a usable lane. */
.sidekick.narrow .action-buttons,.sidekick:not(.expanded) .action-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.sidekick.narrow .action-buttons button,.sidekick:not(.expanded) .action-buttons button{width:100%}.sidekick.narrow #act-join,.sidekick.narrow #act-bet,.sidekick.narrow #act-double,.sidekick.narrow #act-cancelBet,.sidekick.narrow #act-leave,.sidekick:not(.expanded) #act-join,.sidekick:not(.expanded) #act-bet,.sidekick:not(.expanded) #act-double,.sidekick:not(.expanded) #act-cancelBet,.sidekick:not(.expanded) #act-leave{grid-column:1/-1;margin-left:0}.sidekick.narrow .seat-grid,.sidekick:not(.expanded) .seat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.sidekick.narrow .seat-cards .card,.sidekick:not(.expanded) .seat-cards .card{min-width:23px;height:30px;font-size:12px;border-width:2px;box-shadow:1px 1px #303039}.sidekick.narrow .seat,.sidekick:not(.expanded) .seat{min-height:62px}
.sidekick.expanded.narrow .seat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.sidekick.expanded.narrow .seat-cards .card{min-width:23px;height:30px;font-size:12px;border-width:2px}.sidekick.expanded.narrow .seat{min-height:62px}

/* Smaller compact default: trim spacing while keeping readable cards and 44px controls. */
.sidekick:not(.expanded) .sk-page{padding:9px 11px 15px}.sidekick:not(.expanded) #page-lobby h2{font-size:21px}.sidekick:not(.expanded) .hero{height:116px;margin-bottom:11px}.sidekick:not(.expanded) .hero-cat{width:98px;height:98px}.sidekick:not(.expanded) #page-lobby .wide{margin:8px 0 11px;padding:10px}.sidekick:not(.expanded) .game-tile{margin:7px 0;padding:7px}
.sidekick:not(.expanded) .table-heading .eyebrow{display:none}.sidekick:not(.expanded) .table-heading h2{font-size:19px;line-height:1.1;margin:0}.sidekick:not(.expanded) .table-meta{margin:3px 0 5px}.sidekick:not(.expanded) .table-meta #table-timer{display:none}.sidekick:not(.expanded) .own-seat{margin:7px 0 4px;padding:6px}.sidekick:not(.expanded) .own-deadline{margin-top:2px;padding:5px 8px}.sidekick:not(.expanded) .own-deadline span{font-size:20px}.sidekick:not(.expanded) .action-panel{padding:3px 0}.sidekick:not(.expanded) .action-panel .muted{margin:5px 0}.sidekick:not(.expanded) .locked-bet{padding:5px 7px;margin-bottom:5px}
.sidekick:not(.expanded) .action-buttons{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.sidekick:not(.expanded) #act-hit,.sidekick:not(.expanded) #act-stand,.sidekick:not(.expanded) #act-double{grid-column:auto}.sidekick:not(.expanded) #act-bet,.sidekick:not(.expanded) #act-cancelBet{grid-column:1/3}.sidekick:not(.expanded) #act-leave{grid-column:3/4}.sidekick:not(.expanded) #act-join{grid-column:1/-1}

/* A true 320 x 270 essentials table: the same cards and actions, condensed into rows. */
.table-view-buttons{display:flex;align-items:center;gap:5px}.own-label-short,.own-placeholder-short{display:none}
/* Use the smallest frame's spare height for its hands, with the balance at the bottom. */
.sidekick.essential #sk-body{display:flex;flex-direction:column;flex:1}
.sidekick.essential .sk-topline,.sidekick.essential .sk-error{flex:none}
.sidekick.essential #page-table{flex:1;min-height:min-content}
.sidekick.essential .table-board{flex:1;display:flex;flex-direction:column}
.sidekick.essential .table-board .felt{flex:1;display:flex;align-items:center}
.sidekick.essential .felt .dealer-zone{width:100%}
.sidekick.essential .personal-stack,.sidekick.essential .personal-stack .own-seat{flex:1}
.sidekick.essential .personal-stack .action-panel{flex:none}
.sidekick.essential #table-help{padding-right:20px}
.sidekick.essential .sk-head{height:34px;min-height:34px;flex:none;gap:5px;padding:0 6px}.sidekick.essential .sk-brand{font-size:12px;letter-spacing:0}.sidekick.essential .sk-brand small{display:none}.sidekick.essential .sk-head-buttons{gap:4px}.sidekick.essential #sk-full{width:auto;min-width:64px;padding:0 4px;font-size:10px}
.sidekick.essential .sk-nav,.sidekick.essential .table-heading,.sidekick.essential .table-meta,.sidekick.essential .seat-grid,.sidekick.essential .felt-divider,.sidekick.essential .table-cat,.sidekick.essential .leaderboards,.sidekick.essential .own-avatar,.sidekick.essential #open-reactions,.sidekick.essential .own-deadline,.sidekick.essential .locked-bet,.sidekick.essential .reaction-menu{display:none!important}
.sidekick.essential .sk-topline{min-height:24px;height:24px;padding:3px 6px;font-size:10px;line-height:16px;gap:4px}.sidekick.essential .sk-topline span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidekick.essential #sk-phase{flex:none}
.sidekick.essential #page-table,.sidekick.expanded.essential:not(.narrow) #page-table{display:flex!important;flex-direction:column;align-items:stretch;gap:3px;padding:3px 5px 4px!important;min-width:0}.sidekick.essential .table-board{order:0!important;min-width:0}.sidekick.essential .personal-stack,.sidekick.expanded.essential:not(.narrow) .personal-stack{order:1!important;align-self:stretch;min-width:0;display:flex;flex-direction:column;gap:3px}
.sidekick.essential .table-board .felt,.sidekick.expanded.essential:not(.narrow) .table-board .felt{min-height:0;padding:3px 4px;border-width:2px;border-radius:7px;box-shadow:none;background:#a9c7af}.sidekick.essential .felt .dealer-zone{display:flex;align-items:center;gap:4px;min-height:33px;padding:0;text-align:left;pointer-events:auto}.sidekick.essential .dealer-zone .zone-label{flex:none;width:43px;margin:0;font-size:10px;line-height:1}.sidekick.essential .dealer-zone .cards,.sidekick.expanded.essential:not(.narrow) .dealer-zone .cards{display:flex;flex:1;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:2px;min-width:0;min-height:31px;max-width:none;margin:0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:thin;pointer-events:auto}.sidekick.essential .dealer-zone .card,.sidekick.expanded.essential:not(.narrow) .dealer-zone .card{flex:none;min-width:25px;height:30px;padding:0 2px;border-width:2px;box-shadow:1px 1px #303039;font-size:13px}.sidekick.essential .dealer-zone .empty-cards{font-size:10px;white-space:nowrap}.sidekick.essential .dealer-zone .hand-total{flex:none;margin:0;font-size:10px;white-space:nowrap}
.sidekick.essential .personal-stack .own-seat,.sidekick.expanded.essential:not(.narrow) .personal-stack .own-seat{display:flex;align-items:center;min-height:37px;margin:0;padding:3px 4px;gap:0;border-width:2px;border-radius:7px;box-shadow:none}.sidekick.essential .own-hand-copy{display:flex;align-items:center;gap:4px;flex:1;min-width:0}.sidekick.essential .own-label-full,.sidekick.essential .own-placeholder-full{display:none}.sidekick.essential .own-label-short,.sidekick.essential .own-placeholder-short{display:inline}.sidekick.essential .own-hand-copy .zone-label{flex:none;width:25px;margin:0;font-size:10px;line-height:1}.sidekick.essential .own-cards{display:flex;flex:1;flex-wrap:nowrap;gap:2px;min-width:0;max-width:none;margin:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.sidekick.essential .own-cards .card,.sidekick.expanded.essential:not(.narrow) .own-cards .card{flex:none;min-width:25px;height:30px;padding:0 2px;border-width:2px;box-shadow:1px 1px #303039;font-size:13px}.sidekick.essential .own-cards .empty-cards{font-size:10px;white-space:nowrap}.sidekick.essential .own-hand-copy strong{flex:none;font-size:10px;white-space:nowrap}.sidekick.essential .own-placeholder{font-size:11px;font-weight:900}
.sidekick.essential .own-seat.has-result{flex-wrap:wrap}.sidekick.essential .own-seat.has-result .own-hand-copy{flex:0 0 100%;width:100%}.sidekick.essential .result-banner{flex-basis:100%;padding:2px 4px;margin-top:2px;border-width:1px;line-height:1.1}.sidekick.essential .result-banner strong,.sidekick.essential .result-banner small{font-size:10px;line-height:1.1;margin:0}
.sidekick.essential .personal-stack .action-panel,.sidekick.expanded.essential:not(.narrow) .personal-stack .action-panel{padding:0;min-width:0}.sidekick.essential .bet-row{margin:0 0 3px;gap:3px;min-height:30px}.sidekick.essential .bet-row label{gap:4px;font-size:10px}.sidekick.essential .bet-row input{width:63px;height:29px;padding:2px 4px;font-size:12px}.sidekick.essential .bet-row span{font-size:10px}.sidekick.essential .personal-stack .action-buttons,.sidekick.expanded.essential:not(.narrow) .personal-stack .action-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.sidekick.essential .action-buttons button{width:100%;min-width:44px;min-height:44px;padding:5px 3px;font-size:11px}.sidekick.essential #act-hit,.sidekick.essential #act-stand,.sidekick.essential #act-double{grid-column:auto!important}.sidekick.essential #act-bet,.sidekick.essential #act-cancelBet{grid-column:1/3!important}.sidekick.essential #act-leave{grid-column:3/4!important;margin:0}.sidekick.essential #act-join{grid-column:1/-1!important}.sidekick.essential #table-help{margin:2px 0 0;font-size:10px;line-height:1.15;color:#303039}.sidekick.essential .sk-error{padding:2px 6px;font-size:10px;max-height:36px;overflow:auto}

/* The two tables share the cafe look while keeping the current mode explicit. */
.sidekick.narrow .table-heading{flex-wrap:wrap}
.sidekick.narrow .table-heading>div:first-child{flex:1 0 100%}
.sidekick.narrow .table-heading-controls{width:100%;justify-content:space-between;flex-wrap:wrap}
.sidekick.essential .personal-stack,.sidekick.expanded.essential:not(.narrow) .personal-stack{flex:0 0 auto}
.sidekick.essential .bet-row .bet-picker{font-size:0}
.lobby-tables{display:grid;gap:8px;margin:8px 0 15px}.sidekick .lobby-table{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;min-height:48px;padding:8px 10px;border:2px solid #303039;border-radius:9px;background:#fffaf0;box-shadow:3px 3px #303039;text-align:left}.sidekick .lobby-table.selected{background:#d7ead9}.lobby-table strong{font-size:13px}.lobby-table small{font-size:10px;color:#635f6b}.table-heading-controls{display:flex;align-items:center;gap:5px}.table-picker{display:flex;align-items:center;gap:4px;font-size:10px;font-weight:900}.table-picker select,.bet-picker select{border:2px solid #303039;border-radius:6px;background:#fffaf0;color:#303039;padding:5px 3px;font-size:11px;max-width:102px}.sidekick .sk-topline button{border:1px solid #303039;border-radius:5px;background:#f9dfad;font-size:10px;font-weight:900;padding:1px 4px;white-space:nowrap}.sidekick .bet-row{justify-content:flex-start;flex-wrap:wrap}.sidekick .bet-picker{display:flex;align-items:center;gap:4px;font-size:10px;font-weight:900}.sidekick .bet-picker select{max-width:112px}.sidekick #bet-hint{margin-left:auto}.sidekick:not(.expanded) .bet-picker{font-size:0}.sidekick:not(.expanded) .bet-picker select{font-size:11px}.sidekick:not(.expanded) #bet-hint{display:none}.sidekick:not(.expanded) .bet-row{flex-wrap:nowrap}.sidekick.essential #sk-body{overflow:hidden}.sidekick.essential #page-table{min-height:0}.sidekick.essential .table-board,.sidekick.essential .personal-stack{min-height:0}.sidekick.essential .bet-picker{font-size:0}.sidekick.essential .bet-picker select{width:100px;height:29px;padding:2px;font-size:10px}.sidekick.essential #return-active{max-width:100px;overflow:hidden;text-overflow:ellipsis}.sidekick.essential .sk-topline{overflow:hidden}.sidekick.essential .sk-topline #sk-phase{font-size:9px;max-width:185px}.sidekick.essential .personal-stack .own-seat{flex:0 0 auto}.sidekick.essential .table-board .felt{min-height:37px}.sidekick.essential #table-help{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.sidekick .sound-settings{margin-top:10px;padding-top:10px;border-top:1px solid #c8bdce}.sidekick .sound-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:12px}.sidekick .sound-preview label{flex-basis:100%;font-size:11px;font-weight:900}.sidekick .sound-preview select{flex:1;min-width:0;border:2px solid #303039;border-radius:7px;background:#fffaf0;color:#303039;padding:8px;min-height:44px}.sidekick #sound-preview-play{min-width:54px;min-height:44px}.sidekick #sound-preview-status{font-size:11px}

/* Disposable test controls stay in the operator lab, outside the game window. */
.playtest-banner{max-width:1460px;margin:0 auto 20px;padding:12px 16px;border:2px solid #694349;border-radius:10px;background:#ffe5d7;color:#53353b;font-size:14px;line-height:1.35;box-shadow:4px 4px #303039}.playtest-banner strong{font-weight:1000}.playtest-banner[hidden],.lab-playtest[hidden]{display:none!important}
.lab-playtest{background:#fff1df}.lab-playtest p{margin:7px 0 12px}.playtest-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.playtest-grid label{display:grid;align-content:start;gap:5px;min-width:0;font-size:12px;font-weight:800}.playtest-grid label:first-child,.playtest-actions{grid-column:1/-1}.playtest-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.playtest-actions button{padding:9px 5px;min-height:44px}.playtest-actions button:disabled{opacity:.55;cursor:wait}.playtest-actions [data-playtest-action=start]{background:#b7dfbf}.playtest-actions [data-playtest-action=stop]{background:#f5c7bb}.lab-playtest input:focus-visible,.lab-playtest select:focus-visible,.lab-playtest button:focus-visible{outline:3px solid #795fc3;outline-offset:2px}.playtest-status{border-top:1px solid #bbaaa2;padding-top:9px;font-size:12px}.playtest-status>strong,.playtest-status>small{display:block}.playtest-status>small{margin-top:3px;color:#665a58}.playtest-status ul{list-style:none;margin:8px 0 0;padding:0}.playtest-status li{display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-top:1px solid #e7d6c7}.playtest-status li strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playtest-status li span{text-align:right}.playtest-status p{font-size:12px;margin:7px 0 0}

/* Turn ownership is visible without waiting for a card animation. */
.sidekick .seat.active-turn{border-color:#5b7442;background:#e1f0c8;box-shadow:0 0 0 2px #f4d388}.sidekick .seat.active-turn .seat-copy small{font-weight:900;color:#314633}.sidekick .seat.test-player em{display:inline-block;padding:1px 3px;border:1px solid #705c47;border-radius:3px;background:#f5e2c8;color:#554637;font-size:8px;letter-spacing:.3px}.sidekick .own-seat.your-turn{border-color:#39734a;background:#d8f0d6;box-shadow:3px 3px #303039,0 0 0 3px #f8d17c}.sidekick .own-seat.waiting-turn{border-color:#80729d;background:#ece5f8}.sidekick.essential .own-seat.your-turn{box-shadow:inset 0 0 0 2px #39734a}.sidekick.essential .own-seat.waiting-turn{box-shadow:inset 0 0 0 2px #80729d}

/* Wager shortcuts stay visible beside the amount and remain separate from Place bet. */
.sidekick:not(.expanded):not(.essential) .bet-row input{width:60px}
.sidekick .bet-row{gap:6px}.sidekick .bet-presets{display:flex;align-items:center;gap:3px;flex:none}.sidekick .bet-chip{--chip-rim:#c4a579;--chip-center:#fff7e7;display:grid;place-items:center;flex:none;width:32px;height:32px;padding:2px;border:2px solid #303039;border-radius:50%;background:repeating-conic-gradient(from -8deg,var(--chip-rim) 0 14deg,#fff8ed 14deg 28deg);box-shadow:0 1px 2px #30303935;font-size:11px;font-weight:1000;font-variant-numeric:tabular-nums;line-height:1}.sidekick .bet-chip[data-chip-tone=cream]{--chip-rim:#c4a579;--chip-center:#fff7e7}.sidekick .bet-chip[data-chip-tone=coral]{--chip-rim:#c76766;--chip-center:#f5b8a9}.sidekick .bet-chip[data-chip-tone=mint]{--chip-rim:#679a7e;--chip-center:#bce0c6}.sidekick .bet-chip[data-chip-tone=lavender]{--chip-rim:#8271b4;--chip-center:#d8c9ef}.sidekick .bet-chip span{display:grid;place-items:center;width:100%;height:100%;border:1px solid #303039;border-radius:50%;background:var(--chip-center);color:#303039}.sidekick .bet-chip.long-value span{font-size:9px;letter-spacing:-.5px}.sidekick .bet-chip:hover:not(.unavailable){transform:translateY(-1px)}.sidekick .bet-chip:active:not(.unavailable){transform:translate(1px,1px);box-shadow:0 0 1px #30303935}.sidekick .bet-chip.unavailable,.sidekick .bet-rebet.unavailable{opacity:.5}.sidekick .bet-clear,.sidekick .bet-rebet{flex:none;min-height:32px;padding:4px 6px;border:2px solid #303039;border-radius:7px;box-shadow:0 1px 2px #30303935;font-size:10px;font-weight:900;white-space:nowrap}.sidekick .bet-clear{background:#f6dfb1}.sidekick .bet-rebet{background:#e2d8f4}.sidekick .bet-clear:active,.sidekick .bet-rebet:active:not(.unavailable){transform:translate(1px,1px);box-shadow:0 0 1px #30303935}
.sidekick:not(.expanded) .bet-row{gap:4px}.sidekick.essential .bet-row{flex-wrap:nowrap;gap:3px;min-height:30px}.sidekick.essential .bet-presets{gap:3px}.sidekick.essential .bet-chip{width:28px;height:28px;padding:2px;font-size:10px}.sidekick.essential .bet-clear,.sidekick.essential .bet-rebet{min-height:28px;padding:3px 4px;font-size:9px}.sidekick.essential #bet-hint{display:none}
/* Value colors are stable across adaptive tiers and personal chip preferences. */
.sidekick .bet-chip[data-chip-tone=blue]{--chip-rim:#4c83bd;--chip-center:#bbdaf5}.sidekick .bet-chip[data-chip-tone=silver]{--chip-rim:#798798;--chip-center:#e2e8ec}.sidekick .bet-chip[data-chip-tone=gold]{--chip-rim:#b88a2b;--chip-center:#f6d775}
.sidekick .bet-max{flex:none;min-height:32px;padding:4px 5px;border:2px solid #303039;border-radius:7px;background:#d3e8db;box-shadow:0 1px 2px #30303935;font-size:10px;font-weight:900}.sidekick .bet-max.unavailable{opacity:.5}.sidekick .bet-max:active:not(.unavailable){transform:translate(1px,1px)}
.sidekick .chip-settings{margin:18px 0;padding-top:14px;border-top:2px dashed #bfb7c9}.sidekick .chip-settings input{max-width:100%;width:100%;border:2px solid #303039;border-radius:6px;padding:7px;background:#fffdf8}
.sidekick:not(.expanded):not(.essential) .bet-row{gap:3px}.sidekick:not(.expanded):not(.essential) .bet-row input{width:48px}.sidekick:not(.expanded):not(.essential) .bet-clear,.sidekick:not(.expanded):not(.essential) .bet-rebet,.sidekick:not(.expanded):not(.essential) .bet-max{padding-left:4px;padding-right:4px}
.sidekick.essential .bet-row input{width:52px;appearance:textfield}.sidekick.essential .bet-row input::-webkit-inner-spin-button,.sidekick.essential .bet-row input::-webkit-outer-spin-button{appearance:none;margin:0}.sidekick.essential .bet-row{gap:2px}.sidekick.essential .bet-presets{gap:2px}.sidekick.essential .bet-max{min-height:28px;padding:3px 3px;font-size:9px}.sidekick.essential .bet-clear,.sidekick.essential .bet-rebet{padding-left:3px;padding-right:3px}

/* Kick-inspired header keeps the warm cafe palette below. */
.sidekick .sk-brand-kick{color:inherit}.sidekick .sk-head button{color:#303039}.sidekick .sk-head button:focus-visible{outline-color:#795fc3}

/* Personal themes only change paint: shared gameplay and window geometry stay intact. */
.sidekick .appearance>select{display:block;width:100%;margin:6px 0 12px;padding:8px;border:2px solid #303039;border-radius:6px;background:#fff9ef;color:#303039}
.sidekick[data-theme=dark]{color-scheme:dark;background:#22252b;color:#f5f1e8;border-color:#14171c;box-shadow:0 2px 7px #0005}
.sidekick[data-theme=dark] .sk-head{background:#303039;color:#fff9ef;border-color:#14171c}
.sidekick[data-theme=dark] .sk-brand-kick{color:#53fc18}
.sidekick[data-theme=dark] :is(.sk-head button,.quiet,.profile-form button,.action-buttons button,.bet-clear,.bet-rebet,.bet-max,.reaction-menu [role=menuitem],.own-seat button){background:#494455;color:#fff9ef;border-color:#191b22}
.sidekick[data-theme=dark] .sk-head button{background:#e2d8f4;color:#303039}
.sidekick[data-theme=dark] :is(.primary,.action-buttons .primary,.profile-form .primary){background:#afd3b4;color:#202e25;border-color:#18251d}
.sidekick[data-theme=dark] :is(input,select){background:#191c22;color:#f5f1e8;border-color:#777282;accent-color:#9cdaa7}
.sidekick[data-theme=dark] :is(button,input,select,summary,[tabindex]):focus-visible{outline-color:#b5a2ec}
.sidekick[data-theme=dark] :is(.sk-topline,.wallet-strip,.game-tile,.seat,.reaction-menu,.reaction-bubble){background:#30343c;color:#f5f1e8;border-color:#171a20}
.sidekick[data-theme=dark] .sk-topline{box-shadow:0 2px 0 #22252b}
.sidekick[data-theme=dark] :is(.muted,.eyebrow,.table-meta,.seat-copy small,.game-tile small,.wallet-strip small,.own-placeholder,.own-deadline small,.result-banner small,.empty-seat,.bet-row>span,.zone-label,.felt-divider,.tiny-star){color:#c9c5d1}
.sidekick[data-theme=dark].essential .felt{background:#304d40;border-color:#17261e}
.sidekick[data-theme=dark] :is(.own-seat,.profile-summary,.seat.you){background:#534735;color:#fff4dd;border-color:#28231b}
.sidekick[data-theme=dark] .seat.empty{background:#2c4137;border-color:#779984}
.sidekick[data-theme=dark] :is(.own-deadline,.locked-bet,.own-seat.waiting-turn){background:#443d55;color:#f0e8ff;border-color:#ab99cc}
.sidekick[data-theme=dark] :is(.own-seat.your-turn,.seat.active-turn){background:#355b40;color:#f0ffe9;border-color:#a3d8a2}
.sidekick[data-theme=dark] .seat.active-turn .seat-copy small{color:#e2f4dd}
.sidekick[data-theme=dark] .sk-nav{border-color:#777282}
.sidekick[data-theme=dark] .sk-nav button[aria-selected=true]{background:#3e5847;color:#eff8ea;border-color:#799b85}
.sidekick[data-theme=dark] :is(.open-tag,.soon-tag,.tile-icon){background:#444051;color:#f0e8ff;border-color:#93869f}
.sidekick[data-theme=dark] .hero{background:radial-gradient(circle,#514634 0 32%,#484052 33% 65%,#344b3d 66%);border-color:#15191c}
.sidekick[data-theme=dark] .hero-spark{color:#c7b7e6}
.sidekick[data-theme=dark] .result-banner{background:#573c43;color:#fff0ef;border-color:#b8838f}
.sidekick[data-theme=dark] .result-banner.win{background:#355540;border-color:#88b88c}
.sidekick[data-theme=dark] .result-banner.push{background:#484056;border-color:#a393c4}
.sidekick[data-theme=dark] .sk-error{background:#583a40;color:#ffe9df;border-color:#cc959a}
.sidekick[data-theme=dark] a{color:#b6d8ff}
.sidekick[data-theme=dark] #sk-body{scrollbar-color:#7b8b80 transparent}
/* Cards and denomination colors remain familiar and legible in both themes. */
.sidekick[data-theme=dark] .card{color:#303039;background:#fffaf3}
.sidekick[data-theme=dark] .card.red{color:#982b40}
.sidekick[data-theme=dark] .card.back{background:#80729d}

.sidekick[data-theme=dark] .empty-cards,.sidekick[data-theme=dark] #table-help{color:#d8d2df}
.sidekick[data-theme=dark] #open-reactions{background:#494455;color:#fff9ef}
}

/* Reaction speech bubble life (Compact/Full): pop out of the avatar, drift up a little, fade. The delay is set per bubble so a redrawn seat resumes it. */
@keyframes skBubble{0%{opacity:0;transform:translateY(8px) scale(.3)}7%{opacity:1;transform:translateY(-2px) scale(1.12)}12%{transform:none}84%{opacity:1;transform:translateY(-4px)}100%{opacity:0;transform:translateY(-12px) scale(.96)}}

/* Full view room motion (slow, decorative) and the reactions bubble pop. Kept outside the polish layer so the view-naming test ignores keyframe steps. */
@keyframes roomCloud{from{transform:translateX(-70px)}to{transform:translateX(190px)}}
@keyframes roomSway{from{transform:rotate(-1.6deg)}to{transform:rotate(1.6deg)}}
@keyframes roomGlow{from{opacity:.8}to{opacity:1}}
@keyframes roomSteam{0%{opacity:0;transform:translateY(0) scaleX(1)}25%{opacity:.9}100%{opacity:0;transform:translateY(-16px) scaleX(1.6)}}
@keyframes roomMote{0%{opacity:0;transform:translate(0,0)}20%{opacity:.8}100%{opacity:0;transform:translate(18px,-60px)}}
@keyframes roomTwinkle{from{opacity:.7}to{opacity:1}}
@keyframes skMenuPop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}

/* Mockup polish (sidekick.png). Rules name their view: :not(.essential) for Compact/Full, .essential for Mini. */
@layer polish {
.sidekick{--ink:#303039;--line:#303039;--panel:#fffaf1;--soft-ink:#5f5b69;--felt:#a9c6a7;--felt-dot:#98b896;--wood:#c99b6d;--wood-top:#e2bb8f;--wood-line:#8f6a4a;--seat:#fffaf1;--you:#f8d3b5;--turn:#e1f0c8;--pill:#e3daf5;--pill-idle:#ebe7e1;--pill-good:#c7e6c8;--pill-bad:#f5d0cb;--total:#b7d8b2;--tab:#e2d8f4;--pedestal:#b88a60;--pedestal-top:#d9b087;--pixel:SidekickPixel,"Lucida Console",monospace;--cozy:SidekickCozy,SidekickSystem,"Trebuchet MS",system-ui,sans-serif;--online:#3f9b5a;--gain:#2c7a45}
.sidekick[data-theme=dark]{--ink:#f5f1e8;--line:#14171c;--panel:#2c3037;--soft-ink:#c9c5d1;--felt:#304d40;--felt-dot:#2a4538;--wood:#5d4837;--wood-top:#735a45;--wood-line:#2b2119;--seat:#30343c;--you:#5a4636;--turn:#355b40;--pill:#484056;--pill-idle:#3b3f47;--pill-good:#355540;--pill-bad:#573c43;--total:#3e5847;--tab:#484056;--pedestal:#5d4837;--pedestal-top:#7a604a;--online:#7bd08e;--gain:#8fd6a0}
.sidekick.essential :is(.room-deco,.felt-timer),.sidekick :is(.bar-stat,.bar-note){display:none}

/* Pixel headings; the 1px shadow thickens strokes without closing counters. */
/* Fredoka (user-approved 2026-09-27) replaces the pixel font for headings, numbers, names, tabs, pills and buttons; sentences stay in the system font. */
.sidekick:not(.essential) :is(.sk-brand,.sk-page h2,.sk-page h3,.lobby-table strong,.own-hand-copy>strong,.own-deadline span,.seat-total,.action-buttons button,.sk-nav button,.seat-copy strong,.seat-status,.seat-count,.wallet-strip strong,.game-tile strong,.profile-summary strong,.sk-page button.primary,.sk-page form button,.bet-row label,.locked-bet,.bar-stat small,.table-heading-controls button,.empty-seat,.soon-tag,.result-banner strong){font-family:var(--cozy);font-weight:600;letter-spacing:.2px;text-shadow:none}
.sidekick:not(.essential) .sk-brand{font-size:20px;line-height:1}.sidekick:not(.essential) .sk-brand small{font-family:SidekickSystem,"Trebuchet MS",system-ui,sans-serif;font-size:10px;font-weight:700;letter-spacing:1px;text-shadow:none}
.sidekick:not(.essential) .sk-page h2{font-size:20px;line-height:1.2;margin:4px 0 8px}
.sidekick:not(.essential) .sk-nav{gap:6px;margin:6px 12px 2px;border-bottom:0}
.sidekick:not(.essential) .sk-nav button{border:2px solid var(--line);border-radius:9px;background:var(--panel);padding:5px 4px;box-shadow:none}
.sidekick:not(.essential) .sk-nav button[aria-selected=true]{margin-bottom:0;background:var(--tab);box-shadow:inset 0 2px 0 #30303922;transform:translateY(2px)}

/* Table heading with a seat count pill. */
.sidekick:not(.essential) .table-heading{align-items:center}
.sidekick:not(.essential) .table-heading>div:first-child{display:flex;flex-wrap:wrap;align-items:center;gap:3px 10px;min-width:0}
.sidekick:not(.essential) .table-heading .eyebrow{flex-basis:100%;margin:0}
.sidekick:not(.essential) .table-heading h2{margin:0}
.sidekick:not(.essential) .seat-count{padding:2px 8px;border:2px solid var(--line);border-radius:99px;background:var(--pill-good);font-size:11px;font-weight:900;white-space:nowrap}

/* The board is a small cafe room: dotted felt floor, wooden counters in the back corners. */
.sidekick:not(.essential) .table-board{container:board/inline-size}
.sidekick:not(.essential) :is(.felt,.hero){position:relative;overflow:hidden;border:3px solid var(--line);border-radius:14px;background:radial-gradient(circle at 1px 1px,var(--felt-dot) 1px,transparent 1.6px) 0 0/8px 8px,var(--felt);box-shadow:4px 4px 0 var(--line)}
.sidekick:not(.essential) .felt{min-height:0;padding:12px 10px}
.sidekick:not(.essential) :is(.felt,.hero)::before,.sidekick:not(.essential) :is(.felt,.hero)::after{content:"";position:absolute;top:0;width:24%;aspect-ratio:1.1;pointer-events:none}
.sidekick:not(.essential) :is(.felt,.hero)::before{left:0;background:linear-gradient(to bottom right,var(--wood-top) 0 calc(50% - 16px),var(--wood) calc(50% - 16px) calc(50% - 3px),var(--wood-line) calc(50% - 3px) 50%,transparent 50%)}
.sidekick:not(.essential) :is(.felt,.hero)::after{right:0;background:linear-gradient(to bottom left,var(--wood-top) 0 calc(50% - 16px),var(--wood) calc(50% - 16px) calc(50% - 3px),var(--wood-line) calc(50% - 3px) 50%,transparent 50%)}
.sidekick:not(.essential) :is(.hero-cat,.hero-spark){position:relative;z-index:1}
.sidekick:not(.essential) .room-deco{position:absolute;top:3px;z-index:1;display:flex;align-items:flex-end;gap:2px;pointer-events:none}
.sidekick:not(.essential) .room-left{left:5px}.sidekick:not(.essential) .room-right{right:5px}
.sidekick:not(.essential) .room-plant{width:28px;height:32px}.sidekick:not(.essential) .room-deck{width:32px;height:22px;margin-bottom:3px}
.sidekick:not(.essential) .felt-timer,.sidekick:not(.essential) .felt-divider{display:none}

/* Dealer: the cafe cat deals from the top of the room. */
.sidekick:not(.essential) .dealer-zone{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;min-height:0;margin:0 auto 10px;padding:0;text-align:center;pointer-events:none}
.sidekick:not(.essential) .dealer-zone .zone-label{margin:0 0 2px;font:600 20px/1 var(--cozy);letter-spacing:1px;color:var(--ink)}
.sidekick:not(.essential) .table-cat{position:static;display:block;width:44px;height:59px;margin:0 auto;pointer-events:auto;filter:drop-shadow(0 3px 0 #30303933)}
.sidekick:not(.essential) .dealer-zone .cards{--w:36px;--h:50px;--suit:30px;position:relative;display:flex;flex-wrap:nowrap;justify-content:center;gap:5px;min-height:0;max-width:100%;margin:-12px 0 0;padding:0}
.sidekick:not(.essential) .dealer-zone .empty-cards{margin-top:14px;padding:3px 8px;border-radius:7px;background:#fffaf166;color:var(--ink)}
.sidekick:not(.essential) .dealer-zone .hand-total{margin-top:6px;padding:2px 8px;border:2px solid var(--line);border-radius:8px;background:var(--total);font-size:11px;font-weight:900}
.sidekick:not(.essential) .dealer-zone .hand-total:empty{display:none}

/* Cards: corner rank and a centre pip drawn from data attributes; the text stays for Mini and copy. */
.sidekick:not(.essential) .card{position:relative;display:inline-block;flex:none;width:var(--w,30px);min-width:0;height:var(--h,42px);padding:0;border:2px solid #303039;border-radius:5px;background:#fffdf8;box-shadow:0 2px 0 #30303933;color:#303039;font-size:0;line-height:0;vertical-align:top}
.sidekick:not(.essential) .card.red{color:#b3364c}
.sidekick:not(.essential) .card[data-rank]::before{content:attr(data-rank);position:absolute;left:3px;top:2px;font:600 20px/1 var(--cozy)}
.sidekick:not(.essential) .card[data-rank]::after{content:attr(data-suit);position:absolute;right:2px;bottom:0;font:var(--suit,20px)/1 var(--cozy)}
.sidekick:not(.essential) .card.back{background:repeating-linear-gradient(45deg,#c7b9ee 0 3px,#ad9ce2 3px 6px);box-shadow:inset 0 0 0 2px #fffdf8,0 2px 0 #30303933}

/* Seats: portrait on a wooden pedestal, hand and total, then a status pill. */
.sidekick:not(.essential) .seat-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.sidekick:not(.essential) .seat{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;align-items:center;gap:2px 8px;min-width:0;min-height:0;padding:7px 8px 6px;border:2px solid var(--line);border-radius:12px;background:var(--seat);box-shadow:0 3px 0 #3030392b}
.sidekick:not(.essential) .seat.you{background:var(--you)}
.sidekick:not(.essential) .seat.active-turn{background:var(--turn)}
.sidekick:not(.essential) :is(.seat.active-turn,.seat.your-turn){border-color:var(--line);box-shadow:0 0 0 3px #f4d388,0 3px 0 #3030392b}
.sidekick:not(.essential) .seat.empty{display:grid;grid-template:none;place-items:center;min-height:62px;border-style:dashed;background:#fffaf155;box-shadow:none}
.sidekick[data-theme=dark]:not(.essential) .seat.empty{background:#ffffff0d}
.sidekick:not(.essential) .empty-seat{font-size:11px;color:var(--ink)}
.sidekick:not(.essential) :is(.seat-avatar,.own-avatar){position:relative;inset:auto;flex:none;width:44px;height:44px;margin-bottom:6px}
.sidekick:not(.essential) .seat-avatar{grid-area:1/1}
.sidekick:not(.essential) :is(.seat-avatar,.own-avatar)::before{content:"";position:absolute;left:50%;bottom:-6px;width:118%;height:34%;transform:translateX(-50%);border:2px solid var(--line);border-radius:50%;background:linear-gradient(var(--pedestal-top) 0 50%,var(--pedestal) 50%)}
.sidekick:not(.essential) :is(.seat-avatar,.own-avatar) svg{position:relative;z-index:1;display:block;width:100%;height:100%}
/* Reactions (2026-09-27): your own avatar is the reactions button, marked by a small speech-bubble hint; a reaction pops out of the player's avatar as a speech bubble. Mini has no reactions. */
.sidekick:not(.essential) .react-avatar{display:block;padding:0;border:0;border-radius:50%;background:none;color:inherit;box-shadow:none;cursor:pointer}
.sidekick:not(.essential) .react-avatar svg{transition:transform .15s ease-out}
.sidekick:not(.essential) .react-avatar:is(:hover,:focus-visible) svg{transform:translateY(-3px) rotate(-4deg)}
.sidekick:not(.essential) .react-avatar:active svg{transform:translateY(1px) scale(.96)}
.sidekick:not(.essential) .react-hint{position:absolute;top:-9px;right:-7px;z-index:2;display:grid;place-items:center;width:23px;height:17px;border:2px solid var(--line);border-radius:9px;background:var(--panel);box-shadow:0 2px 0 #30303933;pointer-events:none;transition:transform .15s ease-out}
.sidekick:not(.essential) .react-hint::before{content:"";width:3px;height:3px;border-radius:50%;background:var(--ink);box-shadow:-5px 0 var(--ink),5px 0 var(--ink)}
.sidekick:not(.essential) .react-hint::after{content:"";position:absolute;left:2px;bottom:-4px;z-index:-1;width:7px;height:7px;border:solid var(--line);border-width:0 2px 2px 0;background:var(--panel);transform:rotate(45deg)}
.sidekick:not(.essential) .react-avatar:is(:hover,:focus-visible) .react-hint{transform:translateY(-2px) scale(1.08)}
.sidekick:not(.essential) .react-avatar:has(.reaction-bubble) .react-hint{visibility:hidden}
.sidekick:not(.essential) .reaction-bubble{position:absolute;top:auto;bottom:72%;left:56%;z-index:5;display:block;width:max-content;max-width:132px;padding:5px 10px;border:2px solid var(--line);border-radius:14px;background:var(--panel);color:var(--ink);box-shadow:0 3px 0 #30303933;font:600 14px/1.15 var(--cozy);letter-spacing:.2px;white-space:nowrap;transform-origin:8px 100%;pointer-events:none;animation:skBubble var(--bubble-life,2500ms) linear both}
.sidekick:not(.essential) .reaction-bubble.emoji{padding:4px 8px;font:22px/1 "Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif}
.sidekick:not(.essential) .reaction-bubble::after{content:"";position:absolute;left:8px;bottom:-7px;z-index:-1;width:11px;height:11px;border:solid var(--line);border-width:0 2px 2px 0;background:inherit;transform:rotate(45deg)}
.sidekick.reduced-motion:not(.essential) .reaction-bubble{animation:none}
@media (prefers-reduced-motion:reduce){.sidekick:not(.essential) .reaction-bubble{animation:none}}
.sidekick:not(.essential) .seat-copy{grid-area:1/2/3/3;display:flex;flex-direction:column;gap:4px;width:auto;min-width:0}
.sidekick:not(.essential) .seat-copy strong{padding:0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidekick:not(.essential) .seat-hand{display:flex;align-items:center;gap:6px;min-width:0;min-height:42px}
.sidekick:not(.essential) .seat-cards{display:flex;flex-wrap:nowrap;gap:3px;min-width:0;max-width:none;margin:0}
.sidekick:not(.essential) .seat-cards:has(.card:nth-child(3)) .card+.card{margin-left:calc(var(--w,30px) * -.4)}
.sidekick:not(.essential) .seat-cards:has(.card:nth-child(5)) .card+.card{margin-left:calc(var(--w,30px) * -.6)}
.sidekick:not(.essential) .seat-total{display:grid;place-items:center;flex:none;min-width:30px;height:30px;margin-left:auto;padding:0 3px;border:2px solid var(--line);border-radius:8px;background:var(--total);font-size:20px;line-height:1}
.sidekick:not(.essential) .seat-copy .seat-status{display:block;padding:3px 6px;border-radius:7px;background:var(--pill);color:var(--ink);font-size:11px;font-weight:800;line-height:1.2;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidekick:not(.essential) .seat-status::first-letter{text-transform:uppercase}
.sidekick:not(.essential) .seat-status:is([data-status=standing],[data-status=waiting],[data-status=refunded]){background:var(--pill-idle)}
.sidekick:not(.essential) .seat-status:is([data-status=win],[data-status=blackjack]){background:var(--pill-good)}
.sidekick:not(.essential) .seat-status:is([data-status=lose],[data-status=bust]){background:var(--pill-bad)}
.sidekick:not(.essential) .seat-bet{grid-area:2/1;justify-self:center;font-size:10px;font-weight:900;white-space:nowrap;color:var(--soft-ink)}
@container board (max-width:559px){
  .sidekick:not(.essential) .seat{grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-rows:auto auto auto;grid-template-areas:"name name name name" "avatar cards cards cards" "bet status status total";gap:4px 6px;padding:6px 7px}
  .sidekick:not(.essential) :is(.seat-copy,.seat-hand){display:contents}
  .sidekick:not(.essential) .seat-copy strong{grid-area:name;font-size:11px}
  .sidekick:not(.essential) .seat-avatar{grid-area:avatar;width:38px;height:38px}
  .sidekick:not(.essential) .seat-cards{grid-area:cards;min-height:42px;align-items:center}
  .sidekick:not(.essential) .seat-copy .seat-status{grid-area:status;align-self:center;padding:2px 4px;font-size:10px}
  .sidekick:not(.essential) .seat-bet{grid-area:bet}
  .sidekick:not(.essential) .seat-total{grid-area:total;min-width:26px;height:24px;margin:0;padding:0 2px}
  .sidekick:not(.essential) .seat-cards:has(.card:nth-child(4)) .card+.card{margin-left:calc(var(--w,30px) * -.5)}
  .sidekick:not(.essential) .seat-cards:has(.card:nth-child(5)) .card+.card{margin-left:calc(var(--w,30px) * -.65)}
}
}

@container board (min-width:560px){
  .sidekick:not(.essential) .felt{padding:10px 14px 14px}
  .sidekick:not(.essential) .room-plant{width:42px;height:48px}.sidekick:not(.essential) .room-deck{width:48px;height:33px}
  .sidekick:not(.essential) .felt-timer{position:absolute;top:40px;left:calc(50% + 64px);z-index:1;display:grid;justify-items:center;gap:4px;min-width:112px;max-width:170px;padding:6px 12px;border:2px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:0 3px 0 #30303933}
  .sidekick:not(.essential) .felt-timer small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:900}
  .sidekick:not(.essential) .felt-timer strong{font:600 20px/1 var(--cozy)}
  .sidekick:not(.essential) .felt-timer.urgent{background:#f8d9c4;color:#303039}
  .sidekick:not(.essential) .table-cat{width:54px;height:72px}
  .sidekick:not(.essential) .dealer-zone .cards{--w:44px;--h:62px;--suit:30px}
  .sidekick:not(.essential) .seat{padding:6px 10px 6px}
  .sidekick:not(.essential) .seat-avatar{width:56px;height:56px}
  .sidekick:not(.essential) .seat-cards{--w:36px;--h:50px;--suit:30px}
  .sidekick:not(.essential) .seat-hand{min-height:50px}
  .sidekick:not(.essential) .seat-total{min-width:36px;height:36px}
  .sidekick:not(.essential) .seat-copy strong{font-size:13px}
}
@container board (min-width:720px){
  .sidekick:not(.essential) .seat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
}

/* Your hand and actions. */
.sidekick:not(.essential) .own-seat{gap:10px;padding:8px 10px;border-radius:12px;background:var(--you);box-shadow:3px 3px 0 var(--line)}
.sidekick:not(.essential) .own-seat.your-turn{background:var(--turn);box-shadow:3px 3px 0 var(--line),0 0 0 3px #f8d17c}
.sidekick:not(.essential) .own-seat.waiting-turn{background:var(--pill)}
.sidekick:not(.essential) .own-avatar{width:52px;height:52px}
.sidekick:not(.essential) .own-cards{--w:40px;--h:56px;--suit:30px;flex-wrap:nowrap;gap:4px}
.sidekick:not(.essential) .own-cards:has(.card:nth-child(4)) .card+.card{margin-left:-14px}
.sidekick:not(.essential) .own-hand-copy>strong{font-size:20px;line-height:1.1}
.sidekick:not(.essential) .own-deadline span{font-size:20px}
.sidekick:not(.essential) .action-buttons button:not(#act-leave){font-size:20px;line-height:1;color:#303039}
.sidekick:not(.essential) :is(#act-hit,#act-join,#act-bet){background:#a9d6ae}
.sidekick:not(.essential) #act-stand{background:#d6c8f3}
.sidekick:not(.essential) #act-double{background:#f6c8a3}
.sidekick:not(.essential) #act-cancelBet{background:#fff8eb}

/* Full view: the room spans the window and the controls sit in one bar below it. */
.sidekick.expanded:not(.narrow):not(.essential) #page-table{grid-template-columns:minmax(0,1fr);grid-template-areas:"heading" "meta" "board" "personal" "leader"}
.sidekick.expanded:not(.narrow):not(.essential) :is(.table-meta,.table-heading .eyebrow,.own-deadline){display:none}
.sidekick.expanded:not(.narrow):not(.essential) .personal-stack{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.sidekick.expanded:not(.narrow):not(.essential) .own-seat{min-height:0;margin:0;padding:3px 8px;box-shadow:none}
.sidekick.expanded:not(.narrow):not(.essential) :is(.own-avatar,.own-cards,.own-hand-copy>strong){display:none}
.sidekick.expanded:not(.narrow):not(.essential) .own-hand-copy .zone-label{margin:0}
.sidekick.expanded:not(.narrow):not(.essential) .own-deadline{margin:0}
.sidekick.expanded:not(.narrow):not(.essential) .action-panel{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:8px 14px;border:3px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:4px 4px 0 var(--line)}
.sidekick.expanded:not(.narrow):not(.essential) .bar-stat{display:flex;flex-direction:column;gap:5px;padding-right:14px;border-right:2px solid #30303933}
.sidekick:not(.essential) .bar-stat small{font-size:12px;font-weight:800;color:var(--soft-ink)}
.sidekick:not(.essential) .bar-stat strong{font:600 20px/1 var(--cozy);white-space:nowrap}
.sidekick.expanded:not(.narrow):not(.essential) .locked-bet{margin:0;padding:8px 12px;border-radius:10px}
.sidekick.expanded:not(.narrow):not(.essential) .bet-row{flex:1 1 auto;margin:0}
.sidekick.expanded:not(.narrow):not(.essential) .action-buttons{display:flex;flex:1 1 300px;gap:10px}
.sidekick.expanded:not(.narrow):not(.essential) .action-buttons button{flex:1 1 0;min-height:48px;padding:6px 12px}
.sidekick.expanded:not(.narrow):not(.essential) #act-leave{flex:0 0 auto}
.sidekick.expanded:not(.narrow):not(.essential) .bar-note{display:block;max-width:86px;margin:0;font-size:11px;font-weight:700;line-height:1.3;color:var(--soft-ink)}
.sidekick.expanded:not(.narrow):not(.essential) #table-help{flex-basis:100%;margin:0}

/* Mini refresh (user-approved 2026-09-26): same layout and sizes, with the pixel type, button colours and dotted felt. */
.sidekick.essential .sk-brand{font-family:var(--cozy);font-weight:600;font-size:19px;letter-spacing:.3px;text-shadow:none}
.sidekick.essential .action-buttons button:not(#act-leave){font-family:var(--cozy);font-weight:600;font-size:20px;line-height:1;letter-spacing:.3px;color:#303039}.sidekick.essential #act-leave{font-family:var(--cozy);font-weight:600;font-size:15px}
.sidekick.essential :is(#act-hit,#act-join,#act-bet){background:#a9d6ae}.sidekick.essential #act-stand{background:#d6c8f3}.sidekick.essential #act-double{background:#f6c8a3}
.sidekick.essential .table-board .felt{background:radial-gradient(circle at 1px 1px,var(--felt-dot) 1px,transparent 1.6px) 0 0/8px 8px,var(--felt)}
/* Mini refresh 3 (user-approved 2026-09-27): faces instead of DEALER / YOU, other players row, time-left bar, flat buttons in light. */
.sidekick:not(.essential) :is(.zone-face,.mini-players,.time-bar){display:none}
.sidekick.essential :is(.dealer-zone,.own-hand-copy) .zone-label{display:grid;place-items:center;width:30px;font-size:0;letter-spacing:0}
.sidekick.essential .zone-face{display:grid;place-items:center;width:26px;height:26px;border:2px solid var(--line);border-radius:50%;background:#fffaf1;overflow:hidden;box-shadow:0 2px 0 #30303933}
.sidekick.essential .dealer-zone .zone-face{background:#e2d8f4}
.sidekick.essential :is(.zone-face,.mini-face) svg{display:block;width:100%;height:100%}
.sidekick.essential :is(.zone-word,.own-label-short){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.sidekick.essential .mini-players{position:absolute;top:5px;right:6px;z-index:3;display:flex;gap:4px;pointer-events:none}
.sidekick.essential .mini-player{position:relative;width:22px;height:22px}
.sidekick.essential .mini-face{display:grid;place-items:center;width:22px;height:22px;border:2px solid var(--line);border-radius:50%;background:#fffaf1;overflow:hidden}
.sidekick.essential .mini-player i{position:absolute;right:-2px;bottom:-2px;width:9px;height:9px;border:2px solid var(--line);border-radius:50%;background:#d6c8f3}
.sidekick.essential .mini-player.win i{background:#6fbf85}.sidekick.essential .mini-player.lose i{background:#e98a8a}.sidekick.essential .mini-player.idle i{background:#e7e1d6}.sidekick.essential .mini-player.push i{background:#f7d77c}
.sidekick.essential .time-bar:not([hidden]){position:absolute;bottom:-1px;left:0;width:calc(var(--left, 1) * 100%);height:4px;border-radius:0 4px 4px 0;background:#6fbf85;transition:width .25s linear,background-color .3s}
.sidekick.essential .time-bar[data-tone=bets]{background:#ad9ce2}.sidekick.essential .time-bar[data-tone=next]{background:#c9c2d3}.sidekick.essential .time-bar[data-tone=low]{background:#e9895f}
.sidekick.essential :is(.sk-head button,.action-buttons button),.sidekick.essential .action-buttons button:active{box-shadow:none}
.sidekick.essential :is(.dealer-zone .hand-total,.own-hand-copy strong):not(:empty){padding:2px 5px;border:2px solid var(--line);border-radius:6px;background:var(--total);color:var(--ink);font-family:inherit;font-size:11px;font-weight:900;line-height:1}

/* Mini refresh 2 (user-approved 2026-09-26): Fredoka buttons (above), bigger smooth cards, result badge beside Leave, matching totals, green online dot. */
.sidekick.essential :is(.dealer-zone,.own-cards) .card{position:relative;width:30px;min-width:0;height:40px;padding:0;border-radius:5px;background:#fffdf8;box-shadow:0 2px 0 #30303933;color:#303039;font-size:0;line-height:0}
.sidekick.essential :is(.dealer-zone,.own-cards) .card.red{color:#b3364c}
.sidekick.essential :is(.dealer-zone,.own-cards) .card[data-rank]::before{content:attr(data-rank);position:absolute;left:3px;top:2px;font-size:15px;font-weight:1000;line-height:1}
.sidekick.essential :is(.dealer-zone,.own-cards) .card[data-rank]::after{content:attr(data-suit);position:absolute;right:3px;bottom:2px;font-size:19px;font-weight:400;line-height:1}
.sidekick.essential :is(.dealer-zone,.own-cards) .card.back{background:repeating-linear-gradient(45deg,#c7b9ee 0 3px,#ad9ce2 3px 6px);box-shadow:inset 0 0 0 2px #fffdf8,0 2px 0 #30303933}
.sidekick.essential :is(.dealer-zone .cards,.own-cards):has(.card){gap:4px;min-height:42px;align-items:center}
.sidekick.essential .own-seat.has-round-result{flex-wrap:nowrap}.sidekick.essential .own-seat.has-round-result .own-hand-copy{flex:1;width:auto}.sidekick.essential .own-seat.has-round-result .result-banner{display:none}
.sidekick.essential .round-result:not([hidden]){grid-column:1/3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:44px;padding:0 4px;border:2px solid var(--line);border-radius:9px;background:#f4d4ce;color:#303039;overflow:hidden}
.sidekick.essential .round-result :is(strong,small){max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidekick.essential .round-result strong{font-family:var(--cozy);font-weight:600;font-size:19px;line-height:1.05;letter-spacing:.3px}.sidekick.essential .round-result.long strong{font-size:15px}
.sidekick.essential .round-result small{font-size:10px;font-weight:700;line-height:1.1;color:#4a4652}
.sidekick.essential .round-result.win{background:#a9d6ae}.sidekick.essential .round-result.push{background:#d6c8f3}.sidekick.essential .round-result.blackjack{background:#f7d77c}
.sidekick:not(.essential) .round-result{display:none}

/* Full bar (user-approved 2026-09-27): no YOUR HAND strip; the result badge lives in the bottom bar. Reactions open from your avatar (below). */
.sidekick.expanded:not(.narrow):not(.essential) .own-seat{display:none}
.sidekick.expanded:not(.narrow):not(.essential) #table-help:empty{display:none}
.sidekick.expanded:not(.narrow):not(.essential) .round-result:not([hidden]){display:flex;flex:1 1 0;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:48px;padding:4px 12px;border:3px solid var(--line);border-radius:12px;background:#f4d4ce;color:#303039}
.sidekick.expanded:not(.narrow):not(.essential) .round-result :is(strong,small){max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidekick.expanded:not(.narrow):not(.essential) .round-result strong{font:600 22px/1 var(--cozy);letter-spacing:.3px}
.sidekick.expanded:not(.narrow):not(.essential) .round-result small{font-size:12px;font-weight:700;color:#4a4652}
.sidekick.expanded:not(.narrow):not(.essential) .round-result.win{background:#a9d6ae}.sidekick.expanded:not(.narrow):not(.essential) .round-result.push{background:#d6c8f3}.sidekick.expanded:not(.narrow):not(.essential) .round-result.blackjack{background:#f7d77c}
/* Deal motion (Full 2026-09-27, Compact in the Compact pass): the dealer's deck is a real stack of card backs the size of the dealer's cards,
   beside the cat. Cards leave it face down (.deal-ghost, placed in the window so flights can reach your hand strip) and turn face up where they
   land. The dealer's card row keeps its height so seats stay still, and the total sits beside the cards so the cat never covers them.
   The corner decks use the same stack, smaller. Mini keeps its own look. */
.sidekick.essential :is(.dealer-shoe,.deck-stack){display:none}
.sidekick:not(.essential) .dealer-shoe{position:absolute;top:30px;right:calc(50% + 34px);z-index:1;display:block;pointer-events:none}
.sidekick:not(.essential) .deck-stack{position:relative;display:block;flex:none;width:36px;height:50px;margin:0 3px 10px 0}
.sidekick:not(.essential) .deck-stack :is(i,b){position:absolute;inset:0;border:2px solid #303039;border-radius:5px;background:#fffdf8}
.sidekick:not(.essential) .deck-stack i{border-width:1.5px}
.sidekick:not(.essential) .deck-stack i:nth-child(1){transform:translate(2px,9px);box-shadow:0 3px 0 #30303933}
.sidekick:not(.essential) .deck-stack i:nth-child(2){transform:translate(1px,6px)}
.sidekick:not(.essential) .deck-stack i:nth-child(3){transform:translate(1px,3px)}
.sidekick:not(.essential) :is(.deck-stack b,.deal-ghost),.sidekick.essential .deal-ghost{background:repeating-linear-gradient(45deg,#c7b9ee 0 3px,#ad9ce2 3px 6px);box-shadow:inset 0 0 0 2px #fffdf8}
.sidekick:not(.essential) .room-deco .room-deck{display:none}
.sidekick:not(.essential) .room-deco .deck-stack{width:18px;height:25px;margin:0 2px 7px}
.sidekick:not(.essential) .room-deco .deck-stack :is(i,b){border-width:1.5px;border-radius:3px}
.sidekick:not(.essential) .room-deco .deck-stack i{border-width:1px}
.sidekick:not(.essential) .room-deco .deck-stack i:nth-child(1){transform:translate(1px,6px)}
.sidekick:not(.essential) .room-deco .deck-stack i:nth-child(2){transform:translate(1px,4px)}
.sidekick:not(.essential) .room-deco .deck-stack i:nth-child(3){transform:translate(0,2px)}
.sidekick:not(.essential) .deal-ghost,.sidekick.essential .deal-ghost{position:absolute;left:0;top:0;z-index:6;display:block;border:2px solid #303039;border-radius:5px;transform-origin:0 0;pointer-events:none;filter:drop-shadow(0 4px 3px #30303940)}
.sidekick:not(.essential) .dealer-zone{display:grid;grid-template-columns:1fr auto 1fr;justify-items:center;align-items:center}
.sidekick:not(.essential) .dealer-zone :is(.zone-label,.table-cat){grid-column:1/-1}
.sidekick:not(.essential) .dealer-zone .cards{grid-column:2;min-height:var(--h);align-items:center;margin-top:4px}
.sidekick:not(.essential) .dealer-zone .hand-total{grid-column:3;justify-self:start;margin:4px 0 0 8px}
.sidekick.expanded:not(.narrow):not(.essential) .dealer-zone{margin-bottom:6px}
@container board (min-width:560px){
  .sidekick:not(.essential) .dealer-shoe{top:34px;right:calc(50% + 64px)}
  .sidekick:not(.essential) .deck-stack{width:44px;height:62px}
  .sidekick:not(.essential) .room-deco .deck-stack{width:24px;height:34px;margin:0 2px 8px}
}

.sidekick.essential #sk-connection.online::first-letter{color:var(--online)}

/* Lobby side panel (user-approved 2026-09-27): Leaderboard | My bets toggle; beside the tables in Full, under them in Compact. */
.sidekick:not(.essential) .lobby-side{display:grid;gap:10px;margin-top:14px;padding:12px;border:2px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:3px 3px 0 var(--line)}
.sidekick:not(.essential) .board-toggle{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.sidekick:not(.essential) .board-toggle button{padding:6px 4px;border:2px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);box-shadow:none;font:600 14px/1.2 var(--cozy);letter-spacing:.2px}
.sidekick:not(.essential) .board-toggle button[aria-selected=true]{background:var(--tab);box-shadow:inset 0 2px 0 #30303922;transform:translateY(2px)}
.sidekick:not(.essential) .lobby-side .leaderboard-cols{grid-template-columns:1fr;gap:12px;margin:0}
.sidekick:not(.essential) .lobby-side .leaderboard-cols strong{font:600 14px/1.2 var(--cozy)}
.sidekick:not(.essential) .lobby-side .leaderboard-cols li{padding:5px 0;font-size:12px}
.sidekick:not(.essential) .bets-summary{margin:0;font:600 14px/1.3 var(--cozy)}
.sidekick:not(.essential) :is(.bets-head,.bet-row){display:grid;grid-template-columns:minmax(0,1fr) auto 3.4em;align-items:center;gap:10px}
.sidekick:not(.essential) .bets-head{padding:6px 8px;border-radius:8px;background:var(--tab);font-size:11px;font-weight:900;letter-spacing:.4px;text-transform:uppercase;color:var(--soft-ink)}
.sidekick:not(.essential) .bets-head span:not(:first-child),.sidekick:not(.essential) :is(.bet-stake,.bet-payout){text-align:right}
.sidekick:not(.essential) .bets-list{display:grid;max-height:360px;margin:0;padding:0;overflow:auto;list-style:none}
.sidekick:not(.essential) .bet-row{padding:8px;border-bottom:1px solid #30303922;transition:background-color .6s ease}
.sidekick:not(.essential) .bet-row.bet-new{background:var(--pill-good)}
.sidekick:not(.essential) .bet-game{display:flex;align-items:center;gap:8px;min-width:0}
.sidekick:not(.essential) .game-icon{display:grid;flex:none;place-items:center;width:22px;height:28px;border:2px solid var(--line);border-radius:5px;background:#fffdf8;color:#303039;font:600 10px/1 var(--cozy);box-shadow:0 2px 0 #30303933}
.sidekick:not(.essential) .bet-name{display:grid;min-width:0}
.sidekick:not(.essential) .bet-name strong{font:600 14px/1.2 var(--cozy);letter-spacing:.2px;color:var(--ink)}
.sidekick:not(.essential) .bet-name small{overflow:hidden;font-size:11px;color:var(--soft-ink);text-overflow:ellipsis;white-space:nowrap}
.sidekick:not(.essential) .bet-stake{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.sidekick:not(.essential) .bet-payout{font:600 15px/1 var(--cozy);font-variant-numeric:tabular-nums;white-space:nowrap}
.sidekick:not(.essential) .bet-payout.gain{color:var(--gain)}.sidekick:not(.essential) .bet-payout.loss{color:var(--soft-ink)}
.sidekick:not(.essential) .bets-note{margin:0;font-size:11px}
/* Full lobby: hero across the top, tables on the left, the panel on the right. */
.sidekick.expanded:not(.narrow):not(.essential) #page-lobby:not([hidden]){display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,300px);grid-template-areas:"hero hero" "main side";column-gap:18px;align-items:start}
.sidekick.expanded:not(.narrow):not(.essential) #page-lobby .hero{grid-area:hero}
.sidekick.expanded:not(.narrow):not(.essential) .lobby-main{grid-area:main;min-width:0}
.sidekick.expanded:not(.narrow):not(.essential) .lobby-side{grid-area:side;margin-top:12px}

/* Lobby: the hero shares the room look and tables get a small pixel table. */
.sidekick:not(.essential) .wallet-strip{border-radius:12px;box-shadow:3px 3px 0 var(--line)}
.sidekick:not(.essential) .wallet-strip svg{width:52px;height:52px}
.sidekick:not(.essential) .lobby-table{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;column-gap:10px;row-gap:4px;align-items:center;border-radius:12px}
.sidekick:not(.essential) .lobby-table .table-art{grid-row:1/3;width:66px;height:33px}
.sidekick:not(.essential) .lobby-table strong{font-size:20px;line-height:1}
.sidekick:not(.essential) .lobby-table{background:var(--seat);color:var(--ink)}.sidekick:not(.essential) .lobby-table.selected{background:var(--pill-good)}
.sidekick[data-theme=dark]:not(.essential) .lobby-table small{color:var(--soft-ink)}
/* Full view makeover (2026-09-27, user chose "all of it" from the cafe-room mock). Full = .expanded:not(.narrow); the header part follows .full-header (set in applyLayout). */
.sidekick{--wall:#f4e4c8;--wall-stripe:#efd9b6;--wainscot:#d9b48a;--wainscot-line:#b98d62;--sky1:#bfe3f2;--sky2:#fbe3c8;--cloud:#fffdf8;--lamp:#f2c46b;--glow:#ffe7a866;--chalk:#2f4a3d;--rail:#a8744a;--rail-top:#c99466;--rail-dark:#6f4a2d;--felt-print:#ffffff9c;--steam:#9a8e84aa}
.sidekick[data-theme=dark]{--wall:#3a3140;--wall-stripe:#352c3b;--wainscot:#4a3a2f;--wainscot-line:#2c2119;--sky1:#1c2346;--sky2:#3b3565;--cloud:#6b6a8f;--lamp:#f5c86e;--glow:#ffd98a40;--chalk:#23372d;--rail:#5d4331;--rail-top:#7a5a41;--rail-dark:#2b1f16;--felt-print:#ffffff55;--steam:#ffffffaa}
/* 1. One slim header row: page tabs, connection dot, table title, view controls. */
.sidekick.full-header:not(.essential) .sk-head{container:head/inline-size;gap:8px;height:46px;padding:0 8px 0 10px}
.sidekick.full-header:not(.essential) :is(.sk-brand small,.sk-topline){display:none}
.sidekick.full-header:not(.essential) .sk-head .sk-brand{flex:none;font-size:18px}
.sidekick.full-header:not(.essential) .sk-head .sk-nav{display:flex;flex:none;gap:2px;margin:0;padding:2px;border:2px solid var(--line);border-radius:10px;background:var(--panel);cursor:auto}
.sidekick.full-header:not(.essential) .sk-head .sk-nav button{width:auto;height:auto;min-width:0;margin:0;padding:3px 9px;border:0;border-radius:7px;background:none;color:var(--ink);box-shadow:none;transform:none;font:600 13px/1.2 var(--cozy)}
.sidekick.full-header:not(.essential) .sk-head .sk-nav button[aria-selected=true]{background:var(--tab);box-shadow:inset 0 0 0 2px var(--line)}
.sidekick.full-header:not(.essential) .sk-head #sk-connection{flex:none;width:12px;height:12px;overflow:hidden;border:2px solid var(--line);border-radius:50%;background:#e9895f;color:transparent;font-size:0}
.sidekick.full-header:not(.essential) .sk-head #sk-connection.online{background:#6fbf85}
.sidekick.full-header:not(.essential) .sk-head #sk-connection:not(.online){width:auto;height:auto;padding:2px 8px;border-radius:99px;color:#303039;font:600 11px/1.3 var(--cozy)}
.sidekick.full-header:not(.essential) .sk-head #return-active:not([hidden]){flex:none;width:auto;height:28px;padding:2px 9px;border:2px solid var(--line);border-radius:8px;background:#f7d77c;color:#303039;box-shadow:none;font:600 12px/1.2 var(--cozy)}
.sidekick.full-header:not(.essential) .sk-head .table-heading{display:flex;flex:1;align-items:center;justify-content:space-between;gap:8px;min-width:0;margin:0}
.sidekick.full-header:not([data-page=table]):not(.essential) .sk-head .table-heading,.sidekick.full-header[data-page=table]:not(.essential) .sk-head #sk-phase{display:none}
.sidekick.full-header:not(.essential) .sk-head #sk-phase{margin-left:auto;color:var(--ink);font:600 12px/1 var(--cozy)}
.sidekick.full-header:not(.essential) .sk-head .table-heading>div:first-child{flex-wrap:nowrap;gap:7px;min-width:0;overflow:hidden}
.sidekick.full-header:not(.essential) .sk-head #table-name{margin:0;overflow:hidden;color:var(--ink);font:600 16px/1.15 var(--cozy);text-overflow:ellipsis;white-space:nowrap}
.sidekick.full-header:not(.essential) .sk-head .seat-count{flex:none;padding:1px 7px;font:600 11px/1.3 var(--cozy)}
.sidekick.full-header:not(.essential) .sk-head .seat-word{display:none}
.sidekick.full-header:not(.essential) .sk-head .table-heading-controls{flex:none;gap:5px}
.sidekick.full-header:not(.essential) .sk-head .table-picker{gap:0;font-size:0}
.sidekick.full-header:not(.essential) .sk-head .table-picker select{height:28px;padding:2px 3px;border:2px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);box-shadow:none;font:600 12px/1.2 var(--cozy)}
.sidekick.full-header:not(.essential) .sk-head .table-view-buttons button{width:auto;height:28px;padding:2px 9px;border:2px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);box-shadow:none;font:600 12px/1.2 var(--cozy)}
.sidekick.full-header:not(.essential) .sk-head .sk-head-buttons{flex:none;margin-left:0}
@container head (max-width:830px){.sidekick.full-header:not(.essential) .sk-head .seat-count{display:none}}
@container head (max-width:740px){.sidekick.full-header:not(.essential) .sk-head .sk-brand{display:none}}
@container head (max-width:640px){.sidekick.full-header:not(.essential) .sk-head .sk-nav button{padding:3px 6px;font-size:12px}}
/* 2. The board is a cafe room: wall, window, lamp, shelf; the felt is a curved table with a wooden rail. Hidden outside Full. */
.sidekick:not(.essential) .room-scene,.sidekick.essential .room-scene{display:none}
.sidekick.full-header:not(.essential) #sk-body{flex:1 1 auto}
.sidekick.expanded:not(.narrow):not(.essential) #page-table{min-height:100%;grid-template-rows:auto auto minmax(0,1fr) auto auto}
.sidekick.expanded:not(.narrow):not(.essential) .table-board{display:flex;align-self:stretch}
.sidekick.expanded:not(.narrow):not(.essential) .table-board .felt{isolation:isolate;display:flex;flex:1;flex-direction:column;min-height:510px;padding:0 14px 16px;border-radius:16px;background:linear-gradient(transparent 0 104px,var(--wainscot-line) 104px 107px,var(--wainscot) 107px 100%),repeating-linear-gradient(90deg,var(--wall) 0 26px,var(--wall-stripe) 26px 30px)}
.sidekick.expanded:not(.narrow):not(.essential) .table-board .felt::before,.sidekick.expanded:not(.narrow):not(.essential) .table-board .felt::after,.sidekick.expanded:not(.narrow):not(.essential) .felt-divider,.sidekick.expanded:not(.narrow):not(.essential) .room-deco .deck-stack{display:none}
.sidekick.expanded:not(.narrow):not(.essential) .room-scene{display:block;position:absolute;inset:0;overflow:hidden;border-radius:13px;pointer-events:none}
.sidekick.expanded:not(.narrow):not(.essential) .room-window{position:absolute;top:16px;left:calc(50% - 318px);width:150px;height:92px;overflow:hidden;border:5px solid var(--rail);border-radius:60px 60px 6px 6px;background:linear-gradient(var(--sky1),var(--sky2));box-shadow:inset 0 0 0 2px var(--rail-dark),0 3px 0 #30303933}
.sidekick.expanded:not(.narrow):not(.essential) .room-window::before{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,transparent calc(50% - 2px),var(--rail) calc(50% - 2px) calc(50% + 2px),transparent calc(50% + 2px)),linear-gradient(transparent 52%,var(--rail) 52% calc(52% + 4px),transparent calc(52% + 4px))}
.sidekick.expanded:not(.narrow):not(.essential) .room-cloud{position:absolute;top:26px;width:44px;height:14px;border-radius:10px;background:var(--cloud);animation:roomCloud 38s linear -8s infinite}
.sidekick.expanded:not(.narrow):not(.essential) .room-cloud::before{content:"";position:absolute;left:9px;top:-8px;width:20px;height:18px;border-radius:50%;background:inherit}
.sidekick.expanded:not(.narrow):not(.essential) .room-cloud.c2{top:52px;width:34px;opacity:.85;animation-duration:52s;animation-delay:-20s}
.sidekick.expanded:not(.narrow):not(.essential) .room-sun{position:absolute;top:14px;right:22px;width:18px;height:18px;border-radius:50%;background:#ffd872;box-shadow:0 0 0 5px #ffd87244}
.sidekick.expanded:not(.narrow):not(.essential) .room-stars{position:absolute;inset:0;display:none;background:radial-gradient(circle,#fff 1px,transparent 1.5px) 8px 10px/37px 29px,radial-gradient(circle,#fffbe6 1px,transparent 1.5px) 20px 22px/53px 41px}
.sidekick.expanded[data-theme=dark]:not(.narrow):not(.essential) .room-sun{background:#f3efd6;box-shadow:inset -5px -2px 0 #c9c3a3,0 0 12px #f3efd680}
.sidekick.expanded[data-theme=dark]:not(.narrow):not(.essential) .room-stars{display:block;animation:roomTwinkle 4s ease-in-out infinite alternate}
.sidekick.expanded:not(.narrow):not(.essential) .room-sill{position:absolute;top:104px;left:calc(50% - 326px);width:166px;height:8px;border:2px solid var(--rail-dark);border-radius:3px;background:var(--rail-top)}
.sidekick.expanded:not(.narrow):not(.essential) .room-picture{position:absolute;top:34px;left:calc(50% - 132px);width:34px;height:28px;border:3px solid var(--rail);border-radius:3px;background:linear-gradient(#f7d77c,#f6c8a3)}
.sidekick.expanded:not(.narrow):not(.essential) .room-shelf{position:absolute;top:58px;left:calc(50% + 214px);width:150px;height:8px;border:2px solid var(--rail-dark);border-radius:3px;background:var(--rail-top)}
.sidekick.expanded:not(.narrow):not(.essential) .room-mug{position:absolute;bottom:100%;left:16px;width:18px;height:17px;border:2px solid var(--line);border-radius:3px 3px 6px 6px;background:#f6c8a3}
.sidekick.expanded:not(.narrow):not(.essential) .room-mug::after{content:"";position:absolute;right:-8px;top:3px;width:6px;height:7px;border:2px solid var(--line);border-left:0;border-radius:0 6px 6px 0}
.sidekick.expanded:not(.narrow):not(.essential) .room-mug.b{left:48px;background:#d6c8f3}
.sidekick.expanded:not(.narrow):not(.essential) .room-jar{position:absolute;bottom:100%;left:84px;width:22px;height:26px;border:2px solid var(--line);border-radius:6px 6px 4px 4px;background:linear-gradient(transparent 0 40%,#e9b56b 40%),#fffdf866}
.sidekick.expanded:not(.narrow):not(.essential) .room-sprout{position:absolute;bottom:100%;left:118px;width:24px;height:30px;border-radius:0 0 4px 4px;background:radial-gradient(circle at 30% 30%,#6fae74 0 6px,transparent 6.5px),radial-gradient(circle at 70% 25%,#5d9c66 0 7px,transparent 7.5px),radial-gradient(circle at 50% 55%,#79b97d 0 7px,transparent 7.5px),linear-gradient(transparent 0 62%,#c9855e 62%)}
.sidekick.expanded:not(.narrow):not(.essential) .room-steam{position:absolute;bottom:calc(100% + 19px);left:19px;width:12px;height:22px}
.sidekick.expanded:not(.narrow):not(.essential) .room-steam i{position:absolute;bottom:0;left:3px;width:5px;height:12px;border-left:2px solid var(--steam);border-radius:50%;opacity:0;animation:roomSteam 3s ease-out infinite}
.sidekick.expanded:not(.narrow):not(.essential) .room-steam i:nth-child(2){left:7px;animation-delay:1s}
.sidekick.expanded:not(.narrow):not(.essential) .room-steam i:nth-child(3){left:1px;animation-delay:2s}
.sidekick.expanded:not(.narrow):not(.essential) .room-lamp{position:absolute;top:0;left:calc(50% - 40px);width:80px;height:70px;transform-origin:50% 0;animation:roomSway 7s ease-in-out infinite alternate}
.sidekick.expanded:not(.narrow):not(.essential) .room-lamp::before{content:"";position:absolute;left:39px;top:0;width:2px;height:22px;background:var(--line)}
.sidekick.expanded:not(.narrow):not(.essential) .room-lamp::after{content:"";position:absolute;left:14px;top:20px;width:52px;height:24px;border:2px solid var(--line);border-radius:26px 26px 4px 4px;background:var(--lamp);box-shadow:inset 0 -5px 0 #0000001f}
.sidekick.expanded:not(.narrow):not(.essential) .room-glow{position:absolute;top:36px;left:calc(50% - 230px);width:460px;height:330px;background:radial-gradient(ellipse at 50% 0,var(--glow),transparent 68%);animation:roomGlow 5s ease-in-out infinite alternate}
.sidekick.expanded:not(.narrow):not(.essential) .room-mote{position:absolute;top:calc(170px + var(--my));left:calc(50% + var(--mx));width:3px;height:3px;border-radius:50%;background:#fff6d6;opacity:0;animation:roomMote 9s linear var(--md) infinite}
.sidekick.expanded:not(.narrow):not(.essential) .table-top{position:absolute;top:104px;left:-60px;right:-60px;bottom:-30px;z-index:2;border-top:13px solid var(--rail);border-radius:50% 50% 0 0/120px 120px 0 0;background:radial-gradient(ellipse at 50% 18%,#ffffff2e,transparent 55%),radial-gradient(circle at 1px 1px,var(--felt-dot) 1px,transparent 1.6px) 0 0/8px 8px,var(--felt);box-shadow:inset 0 3px 0 var(--rail-top),inset 0 7px 0 #00000014,0 -3px 0 var(--rail-dark)}
.sidekick:not(.essential) .felt-print,.sidekick.essential .felt-print{display:none}
.sidekick.expanded:not(.narrow):not(.essential) .felt-print{position:relative;z-index:2;display:block;flex:none;width:min(560px,100%);height:60px;margin:auto;pointer-events:none}
.sidekick.expanded:not(.narrow):not(.essential) .felt-print text{fill:var(--felt-print);font:600 12px var(--cozy);letter-spacing:3px}
/* The dealer stands behind the rail with a name plate; the deck and dealer cards sit on the felt; the timer is a chalkboard on the wall. */
.sidekick.expanded:not(.narrow):not(.essential) .felt .dealer-zone{position:relative;z-index:auto;min-height:0;margin:0 0 4px;padding-top:44px}
.sidekick.expanded:not(.narrow):not(.essential) .felt .dealer-zone>.zone-label{position:absolute;top:99px;left:50%;z-index:4;transform:translateX(-50%);padding:1px 8px;border:2px solid var(--rail-dark);border-radius:5px;background:#e9c46a;color:#4a3317;font:600 10px/1.3 var(--cozy);letter-spacing:1.5px}
.sidekick.expanded:not(.narrow):not(.essential) .felt .table-cat{position:relative;z-index:1;margin:0 auto}
.sidekick.expanded:not(.narrow):not(.essential) .felt :is(#dealer-cards,#dealer-total){position:relative;z-index:3}
.sidekick.expanded:not(.narrow):not(.essential) .felt #dealer-cards{margin-top:22px}
.sidekick.expanded:not(.narrow):not(.essential) .felt .felt-timer{top:18px;left:calc(50% + 86px);z-index:1;min-width:104px;border:4px solid var(--rail);border-radius:6px;background:var(--chalk);box-shadow:0 3px 0 #30303933}
.sidekick.expanded:not(.narrow):not(.essential) .felt .felt-timer :is(small,strong){color:#f5f1e8}
.sidekick.expanded:not(.narrow):not(.essential) .felt .dealer-shoe{top:136px;left:calc(50% - 150px);z-index:3}
.sidekick.expanded:not(.narrow):not(.essential) .felt .room-deco{top:52px;z-index:1;transform:scale(1.25)}
.sidekick.expanded:not(.narrow):not(.essential) .felt .room-left{left:6px;transform-origin:0 0}
.sidekick.expanded:not(.narrow):not(.essential) .felt .room-right{right:6px;transform-origin:100% 0}
.sidekick.expanded:not(.narrow):not(.essential) .felt .seat-grid{position:relative;z-index:3;margin-top:4px}
/* 3. Seats on the felt: a chip stack for each bet, an empty chair for open seats. */
.sidekick:not(.essential) :is(.empty-chair,.seat-open){display:none}
.sidekick.expanded:not(.narrow):not(.essential) .seat:not(.empty){box-shadow:0 4px 0 #3030392e}
.sidekick.expanded:not(.narrow):not(.essential) .seat-bet{display:flex;align-items:center;gap:4px;font:600 12px/1 var(--cozy)}
.sidekick.expanded:not(.narrow):not(.essential) .seat-bet:not(.none)::before{content:"";flex:none;width:18px;height:18px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cg stroke='%23303039' stroke-width='1.5'%3E%3Cellipse cx='9' cy='14' rx='7' ry='3' fill='%23e98a8a'/%3E%3Cellipse cx='9' cy='10.5' rx='7' ry='3' fill='%23a9d6ae'/%3E%3Cellipse cx='9' cy='7' rx='7' ry='3' fill='%23d6c8f3'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}
.sidekick.expanded:not(.narrow):not(.essential) .seat.empty{border-style:dashed;background:#fffaf12e}
.sidekick.expanded:not(.narrow):not(.essential) .seat.empty .empty-seat{display:grid;justify-items:center;gap:5px;color:#fffaf1;font:600 13px/1 var(--cozy);text-shadow:0 1px 0 #30303966}
.sidekick.expanded:not(.narrow):not(.essential) .seat.empty :is(.empty-chair,.seat-open){display:block}
.sidekick.expanded:not(.narrow):not(.essential) .seat.empty .seat-number{display:none}
.sidekick.expanded:not(.narrow):not(.essential) .empty-chair{width:34px;height:38px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 34 38'%3E%3Cg stroke='%23303039' stroke-width='2' stroke-linejoin='round'%3E%3Crect x='7' y='2' width='20' height='16' rx='5' fill='%23c99466'/%3E%3Crect x='4' y='18' width='26' height='7' rx='3' fill='%23a8744a'/%3E%3Cpath d='M7 25v11M27 25v11' fill='none'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}
/* 4. The bottom bar is one row in every phase: the limits hint stays for screen readers, "Blackjack pays 3:2" is printed on the felt. */
.sidekick.expanded:not(.narrow):not(.essential) .action-panel .bet-row{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;margin:0;padding:0;border:0}
.sidekick.expanded:not(.narrow):not(.essential) .action-panel .bet-row :is(.bet-clear,.bet-rebet){min-width:0;height:32px;padding:4px 9px}
.sidekick.expanded:not(.narrow):not(.essential) .action-panel #bet-hint{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.sidekick.expanded:not(.narrow):not(.essential) .action-panel .bar-note{display:none}
/* Narrower Full tables keep the window, lamp, chalkboard and a short shelf; plants and the picture step out so nothing overlaps. */
@container board (max-width:800px){.sidekick.expanded:not(.narrow):not(.essential) :is(.room-deco,.room-picture,.room-jar,.room-sprout){display:none}.sidekick.expanded:not(.narrow):not(.essential) .room-window{left:max(14px,calc(50% - 318px))}.sidekick.expanded:not(.narrow):not(.essential) .room-sill{left:max(6px,calc(50% - 326px))}.sidekick.expanded:not(.narrow):not(.essential) .room-shelf{left:auto;right:14px;width:80px}}
/* Flat buttons in Compact and Full, like Mini: no drop shadows on header, action, primary or form buttons (pressed state included). */
.sidekick:not(.essential) :is(.sk-head button,.primary,.action-buttons button,.profile-form button),.sidekick:not(.essential) :is(.primary,.action-buttons button,.profile-form button):active{box-shadow:none}
/* Lobby polish (2026-09-27): a plain player card (avatar, name, points) and a ranked leaderboard with faces and a Current / Lifetime switch. The "Your channel" label, LIVE pill and speech bubble were removed at the user's request (players are viewers of the stream). */
.sidekick:not(.essential) .player-card{gap:12px;margin:13px 0 16px;padding:10px 12px;border:2px solid var(--line);border-radius:14px;background:var(--panel);color:var(--ink)}
.sidekick:not(.essential) .player-face{display:grid;place-items:center;flex:none;width:54px;height:54px;overflow:hidden;border:2px solid var(--line);border-radius:50%;background:var(--you)}
.sidekick:not(.essential) .player-card .player-face svg{width:46px;height:46px;margin-top:6px}
.sidekick:not(.essential) .player-copy{display:grid;gap:4px;min-width:0}
.sidekick:not(.essential) .player-card .player-copy strong{overflow:hidden;font:600 18px/1.1 var(--cozy);text-overflow:ellipsis;white-space:nowrap}
.sidekick:not(.essential) .player-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}
.sidekick:not(.essential) .player-meta small{margin:0;color:var(--soft-ink);font-size:11px}
.sidekick:not(.essential) .player-points{font:600 15px/1 var(--cozy);font-variant-numeric:tabular-nums}
.sidekick:not(.essential) .metric-toggle{display:flex;gap:3px;margin-top:10px;padding:3px;border:2px solid var(--line);border-radius:10px;background:var(--panel)}
.sidekick:not(.essential) .metric-toggle button{flex:1;min-width:0;padding:4px 6px;border:0;border-radius:7px;background:none;color:var(--ink);box-shadow:none;font:600 13px/1.2 var(--cozy)}
.sidekick:not(.essential) .metric-toggle button[aria-pressed=true]{background:var(--tab);box-shadow:inset 0 0 0 2px var(--line)}
.sidekick:not(.essential) .rank-list{display:grid;gap:4px;margin:8px 0 0;padding:0;list-style:none}
.sidekick:not(.essential) .rank-row{display:grid;grid-template-columns:24px 28px minmax(0,1fr) auto;align-items:center;gap:8px;padding:4px 8px 4px 5px;border:2px solid transparent;border-radius:10px}
.sidekick:not(.essential) .rank-row:nth-child(even){background:#3030390a}
.sidekick:not(.essential) .rank-row.you{border-color:var(--line);background:var(--you)}
.sidekick:not(.essential) .rank-no{display:grid;place-items:center;width:24px;height:24px;border:2px solid transparent;border-radius:50%;background:var(--pill-idle);color:var(--ink);font:600 12px/1 var(--cozy)}
.sidekick:not(.essential) .top-1 .rank-no{border-color:var(--line);background:#f7d77c;color:#303039}
.sidekick:not(.essential) .top-2 .rank-no{border-color:var(--line);background:#dfe3ea;color:#303039}
.sidekick:not(.essential) .top-3 .rank-no{border-color:var(--line);background:#eab88f;color:#303039}
.sidekick:not(.essential) .rank-face{display:block;width:28px;height:28px;overflow:hidden;border:2px solid var(--line);border-radius:50%;background:#fffaf1}
.sidekick:not(.essential) .rank-face svg{display:block;width:100%;height:100%}
.sidekick:not(.essential) .rank-name{overflow:hidden;font:600 13px/1.2 var(--cozy);text-overflow:ellipsis;white-space:nowrap}
.sidekick:not(.essential) .rank-name em{margin-left:4px;padding:0 4px;border:1.5px solid var(--line);border-radius:4px;font:600 9px/1.4 var(--cozy);font-style:normal;letter-spacing:.5px}
.sidekick:not(.essential) .rank-pts{font:600 14px/1 var(--cozy);font-variant-numeric:tabular-nums}
.sidekick:not(.essential) .rank-list .no-board{padding:10px 4px;color:var(--soft-ink);font-size:12px;line-height:1.4}
.sidekick[data-theme=dark]:not(.essential) .rank-row:nth-child(even){background:#ffffff0a}
/* Short Full windows: the bottom bar stays pinned so Hit / Stand / Place bet never scroll out of reach; the table scrolls behind it. */
.sidekick.expanded:not(.narrow):not(.essential) .personal-stack{position:sticky;bottom:0;z-index:5}
/* Room motion is slow and decorative: off with Reduce motion. */
.sidekick.reduced-motion:not(.essential) :is(.room-scene,.room-scene *){animation:none}
@media (prefers-reduced-motion:reduce){.sidekick:not(.essential) :is(.room-scene,.room-scene *){animation:none}}
/* Reactions (Compact/Full): a speech bubble of choices above your avatar, tail pointing at it; tap elsewhere, Esc or the avatar to close. */
.sidekick:not(.essential) .reaction-menu:not([hidden]){display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:5px;width:max-content;max-width:min(560px,calc(100% - 16px));max-height:none;overflow:visible;padding:7px 9px;border:2px solid var(--line);border-radius:18px;background:var(--panel);color:var(--ink);box-shadow:0 4px 0 #30303933;transform-origin:var(--tail-x,50%) 100%;animation:skMenuPop .14s ease-out}
.sidekick:not(.essential) .reaction-menu[data-side=below]{transform-origin:var(--tail-x,50%) 0}
.sidekick:not(.essential) .reaction-menu::after{content:"";position:absolute;left:calc(var(--tail-x,50%) - 7px);bottom:-8px;z-index:-1;width:12px;height:12px;border:solid var(--line);border-width:0 2px 2px 0;background:inherit;transform:rotate(45deg)}
.sidekick:not(.essential) .reaction-menu[data-side=below]::after{top:-8px;bottom:auto;border-width:2px 0 0 2px}
.sidekick:not(.essential) .reaction-menu .reaction-head{display:contents}
.sidekick:not(.essential) .reaction-menu .reaction-head strong{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.sidekick:not(.essential) .reaction-menu #close-reactions{order:9;display:grid;place-items:center;width:26px;height:26px;min-height:0;padding:0;border:2px solid var(--line);border-radius:50%;background:var(--panel);color:var(--ink);box-shadow:none;font:700 15px/1 var(--cozy)}
.sidekick:not(.essential) .reaction-menu [role=menuitem]{min-width:0;min-height:36px;padding:4px 11px;border:2px solid var(--line);border-radius:999px;background:var(--pill);color:var(--ink);box-shadow:none;font:600 13px/1 var(--cozy);transition:transform .12s ease-out}
.sidekick:not(.essential) .reaction-menu .emoji-reaction{width:38px;min-width:38px;height:38px;padding:0;border-radius:50%;font:21px/1 "Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif}
.sidekick:not(.essential) .reaction-menu [role=menuitem]:is(:hover,:focus-visible){transform:translateY(-2px) scale(1.06)}
.sidekick.reduced-motion:not(.essential) .reaction-menu:not([hidden]){animation:none}
@media (prefers-reduced-motion:reduce){.sidekick:not(.essential) .reaction-menu:not([hidden]){animation:none}}
}
