:root{--bg:#0b1512;--panel:#13201b;--panel-2:#1a2b25;--line:#2b4038;--text:#eef3ef;--muted:#9fb3aa;--gold:#f4e3b0;--gold-strong:#e2c275;--felt-1:#1f7350;--felt-2:#0f3f2c;--accent:#e2c275;--accent-text:#2a2205;--danger:#e2675c;--good:#58c98b;--radius:10px;--chip:44px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0;overflow-x:hidden}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;font:15px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}img{-webkit-user-select:none;user-select:none;max-width:100%;display:block}#app{height:100dvh;min-height:600px;padding:0 max(12px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));flex-direction:column;display:flex}.topbar{align-items:center;gap:12px;padding:10px 0 8px;display:flex}.brand{letter-spacing:.02em;white-space:nowrap;margin:0;font:700 20px/1 Georgia,Times New Roman,serif}.brand span{color:var(--gold-strong)}.rules-summary{min-width:0;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;overflow:hidden}.top-actions{gap:8px;display:flex}.btn{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);min-height:44px;color:var(--text);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:600;transition:background .15s,transform .1s,opacity .15s;display:inline-flex}.btn:hover:not(:disabled){background:#233a32}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.38;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn.primary:hover:not(:disabled){background:#efd592}.btn.ghost{background:0 0}.btn.small{min-height:34px;padding:0 12px;font-size:13px}.btn[aria-pressed=true]{border-color:var(--gold-strong);color:var(--gold)}.btn kbd{opacity:.85;background:#00000038;border-radius:4px;padding:1px 5px;font:600 11px/1.5 ui-monospace,Consolas,monospace}:focus-visible{outline:2px solid var(--gold-strong);outline-offset:2px}.hud{flex-wrap:wrap;gap:8px;padding-bottom:10px;display:flex}.pill{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);min-width:104px;color:var(--text);font:inherit;text-align:left;flex-direction:column;align-items:flex-start;padding:6px 12px;display:flex}button.pill{cursor:pointer}button.pill:hover{border-color:#3f5d52}.pill-label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.pill-value{font-variant-numeric:tabular-nums;font:700 20px/1.2 ui-monospace,Consolas,SF Mono,monospace}.pill-label .short{display:none}.pill.concealed .pill-value{color:var(--muted);font:600 14px/1.72 system-ui,sans-serif}.pill.bankroll{align-items:flex-end;margin-left:auto}.pill.bankroll .pill-value{color:var(--gold)}.layout{flex:1;gap:12px;min-height:0;display:flex}.table{--card-w:clamp(54px, min(11cqw, 12.5dvh), 96px);background:radial-gradient(120% 90% at 50% 0%, var(--felt-1), var(--felt-2) 75%);border:1px solid #0a2a1d;border-radius:18px;flex-direction:column;flex:1;min-width:0;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 0 0 6px #00000029;container-type:inline-size}.felt-art{aspect-ratio:1000/300;pointer-events:none;width:min(94%,760px);position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.felt-art img{width:100%;height:100%;position:absolute;inset:0}.tray,.shoe{pointer-events:none;position:absolute;top:12px}.tray{aspect-ratio:70/84;width:clamp(40px,8cqw,60px);left:12px}.tray-stack{--dealt:0;width:60%;height:calc(var(--dealt) * 73.8%);background-position:bottom;background-repeat:no-repeat;background-size:100%;transition:height .3s;position:absolute;bottom:11.9%;left:20%}.tray img{width:100%;height:100%;position:absolute;inset:0}.shoe{width:clamp(50px,10cqw,78px);right:12px}.dealer-area,.player-area{justify-content:center;display:flex;position:relative}.dealer-area{min-height:calc(var(--card-w) * 1.4 + 70px);flex-direction:column;flex:1 1 0;align-items:center;gap:6px;padding:14px 12px 4px}.area-label{color:var(--gold);letter-spacing:.14em;text-transform:uppercase;opacity:.75;font-size:11px}.player-area{min-height:calc(var(--card-w) * 1.4 + 120px);flex-flow:row-reverse wrap;flex:1.25 1 0;align-content:safe center;align-items:flex-start;gap:10px clamp(4px,2.4cqw,28px);padding:4px 8px 12px}.player-area[data-count="3"]{--card-w:clamp(48px, min(9cqw, 11dvh), 84px)}.player-area[data-count="4"]{--card-w:clamp(42px, min(7.6cqw, 10dvh), 76px)}.player-area[data-count="5"],.player-area[data-count="6"]{--card-w:clamp(38px, min(6.2cqw, 9dvh), 66px)}.player-area[data-count="7"],.player-area[data-count="8"]{--card-w:clamp(34px, min(5.2cqw, 8dvh), 58px)}.seat{border:2px solid #0000;border-radius:16px;flex-direction:column;align-items:center;gap:2px;padding:4px 4px 6px;transition:border-color .2s,background .2s;display:flex}.seat.selectable{cursor:pointer;border-color:#f4e3b029}.seat.selectable:hover{background:#0000001a}.seat:focus-visible{outline:2px solid var(--gold-strong);outline-offset:2px}.seat.empty:not(.selected){opacity:.55}.seat.empty:not(.selected):hover{opacity:.85}.seat.selected,.seat.active{border-color:var(--gold-strong);background:#00000029}.seat.sitting-out{opacity:.6}.seat-head{min-height:24px;color:var(--gold);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:6px;font-size:11px;display:flex}.seat-leave{border:1px solid var(--line);width:22px;height:22px;color:var(--text);cursor:pointer;background:#0006;border-radius:50%;padding:0;font:700 14px/1 system-ui,sans-serif}.seat-leave:hover{border-color:var(--danger);color:var(--danger)}.seat-hands{justify-content:center;gap:2px;display:flex}.seat-next{color:var(--gold);opacity:.85;font-size:12px}.message{max-width:calc(100% - 24px);min-height:30px;color:var(--gold);text-align:center;text-shadow:0 1px 2px #00000080;border-radius:999px;align-self:center;padding:2px 16px;font:600 17px/1.5 Georgia,Times New Roman,serif;position:relative}.message:not(:empty){background:#061610b8}.hand{min-height:calc(var(--card-w) * 1.4);justify-content:center;display:flex}.card{width:var(--card-w);aspect-ratio:100/140;border-radius:calc(var(--card-w) * .08);flex:none;box-shadow:0 2px 6px #00000059}.card+.card{margin-left:calc(var(--card-w) * -.58)}.card img{width:100%;height:100%}.card.deal-in{animation:.3s cubic-bezier(.2,.8,.3,1) backwards deal-in}.card.flip{animation:.32s ease-out flip}@keyframes deal-in{0%{opacity:0;transform:translate(var(--dx,0), var(--dy,-40px)) rotate(-18deg) scale(.55)}}@keyframes flip{0%{transform:scaleX(.05)}}.total{font-variant-numeric:tabular-nums;background:#00000073;border-radius:999px;padding:1px 10px;font:700 14px/1.6 ui-monospace,Consolas,monospace}.total.bust{color:var(--danger)}.hand-box{border:2px solid #0000;border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:8px 6px 4px;transition:border-color .2s,background .2s;display:flex;position:relative}.hand-box.active{border-color:var(--gold-strong);background:#00000029}.hand-box.placeholder .hand{width:var(--card-w);border-radius:calc(var(--card-w) * .08);border:2px dashed #f4e3b047}.badge{z-index:2;color:var(--text);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;background:#0a100ee0;border:1px solid;border-radius:999px;padding:2px 12px;font-size:13px;font-weight:700;position:absolute;top:-6px}.badge[data-result=win],.badge[data-result=blackjack]{color:var(--good)}.badge[data-result=lose],.badge[data-result=bust]{color:var(--danger)}.badge[data-result=push],.badge[data-result=surrender]{color:var(--gold)}.bet{min-height:calc(var(--chip) * .8);align-items:flex-end;gap:6px;display:flex}.bet.empty{visibility:hidden}.bet-amount{font-variant-numeric:tabular-nums;padding-bottom:6px;font-weight:700}.chip-stack{--chip:34px;flex-direction:column-reverse;align-items:center;display:flex}.chip-stack img{width:var(--chip)}.chip-stack img+img{margin-bottom:calc(var(--chip) * -.9)}.controls{background:#0000004d;border-top:1px solid #00000040;padding:10px 12px 12px;position:relative}.control-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px 16px;min-height:52px;display:flex}.button-group{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.control-row.play .btn{min-width:96px}.chip-rack{justify-content:center;gap:5px;display:flex}.chip-btn{width:var(--chip);cursor:pointer;background:0 0;border:0;border-radius:50%;padding:0;transition:transform .12s,opacity .15s}.chip-btn:hover:not(:disabled){transform:translateY(-3px)}.chip-btn:active:not(:disabled){transform:scale(.94)}.chip-btn:disabled{opacity:.3;cursor:not-allowed}.bet-readout{min-width:72px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;flex-direction:column;align-items:center;font-size:11px;display:flex}.bet-readout-amount{color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:0;text-transform:none;font:700 20px/1.1 ui-monospace,Consolas,monospace}.insurance-cost{color:var(--gold)}.chart-panel{border:1px solid var(--line);background:var(--panel);border-radius:14px;flex:none;width:350px;padding:12px 14px;overflow-y:auto}.chart-header{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px;display:flex}.chart-header h2{margin:0;font:700 16px/1.3 Georgia,Times New Roman,serif}.chart-rules{color:var(--muted);font-size:12px}.chart-body svg{width:100%;height:auto;display:block}.chart-title{fill:var(--gold);letter-spacing:.08em;text-transform:uppercase;font:700 11px system-ui,sans-serif}.chart-head,.chart-row{fill:var(--muted);font:600 11px ui-monospace,Consolas,monospace}.chart-cell{font:700 10.5px system-ui,sans-serif}.chart-cell-small{font-size:8.5px}.chart-ring{fill:none;stroke:#fff;stroke-width:2.5px;filter:drop-shadow(0 0 2px #000000e6)}.chart-legend{color:var(--muted);gap:5px;margin:8px 0 0;padding:0;font-size:12px;list-style:none;display:grid}.chart-legend li{align-items:center;gap:8px;display:flex}.swatch{text-align:center;border-radius:3px;flex:none;width:26px;font:700 11px/1.7 system-ui,sans-serif}dialog.settings{border:1px solid var(--line);background:var(--panel);width:min(520px,100vw - 24px);max-height:calc(100dvh - 24px);color:var(--text);border-radius:16px;padding:0}dialog.settings::backdrop{background:#0009}.settings-form{gap:14px;padding:18px 20px 20px;display:grid}.settings-form h2{margin:0;font:700 20px/1.2 Georgia,Times New Roman,serif}.settings-form fieldset{border:1px solid var(--line);border-radius:12px;gap:12px;margin:0;padding:12px 14px 14px;display:grid}.settings-form legend{color:var(--gold);letter-spacing:.08em;text-transform:uppercase;padding:0 6px;font-size:12px}.field{grid-template-columns:150px 1fr;align-items:start;gap:4px 12px;display:grid}.field-label{color:var(--muted);padding-top:8px;font-size:14px}.field-control{gap:4px;min-width:0;display:grid}.hint,.note{color:var(--muted);margin:0;font-size:12.5px}.note{border:1px solid var(--gold-strong);color:var(--gold);border-radius:8px;padding:8px 12px}.segmented{border:1px solid var(--line);border-radius:9px;flex-wrap:wrap;width:fit-content;display:inline-flex;overflow:hidden}.segmented input{opacity:0;pointer-events:none;position:absolute}.segmented label{cursor:pointer;padding:8px 14px;font-size:14px;font-weight:600}.segmented label+input+label{border-left:1px solid var(--line)}.segmented input:checked+label{background:var(--accent);color:var(--accent-text)}.segmented input:focus-visible+label{outline:2px solid var(--gold-strong);outline-offset:-2px}.segmented input:disabled+label{opacity:.45;cursor:not-allowed}.checks{flex-wrap:wrap;gap:8px 18px;padding-top:6px;display:flex}.check{cursor:pointer;align-items:center;gap:8px;display:inline-flex}.check input,.range input{accent-color:var(--accent)}.check input{width:18px;height:18px}.range{align-items:center;gap:10px;padding-top:6px;display:flex}.range input{flex:1;min-width:0}.number{border:1px solid var(--line);background:var(--panel-2);min-width:0;min-height:38px;color:var(--text);border-radius:8px;flex:1;padding:0 10px;font:700 16px ui-monospace,Consolas,monospace}.number:disabled{opacity:.45}.range output{text-align:right;min-width:42px;font:700 14px ui-monospace,Consolas,monospace}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}@media (width<=900px){.chart-panel{z-index:20;width:auto;max-height:62dvh;padding-bottom:max(14px, env(safe-area-inset-bottom));border-radius:16px 16px 0 0;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 30px #00000080}.chart-body svg{max-width:420px;margin:0 auto}.topbar{text-align:center;flex-wrap:wrap;justify-content:center;row-gap:6px}.rules-summary{text-align:center;flex:100%;order:3}.hud{justify-content:center}.pill,.pill.bankroll{text-align:center;align-items:center;margin-left:0}.player-area{overflow-y:auto}}@media (width<=900px) and (orientation:portrait){.player-area{overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:#f4e3b066 transparent;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;justify-content:flex-start;overflow:auto hidden}.player-area[data-count]{--card-w:clamp(44px, 13cqw, 64px)}.player-area.dragging{scroll-snap-type:none;cursor:grabbing}.player-area.dragging .seat{cursor:grabbing}.seat{scroll-snap-align:center;flex-shrink:0}.player-area>.seat:first-child{margin-right:auto}.player-area>.seat:last-child{margin-left:auto}.seat-nav{justify-content:center;gap:16px;padding:2px 0 6px;display:flex;position:relative}.seat-nav-btn{min-width:56px;min-height:36px;color:var(--gold);background:#00000040;border-radius:999px;padding:0 12px;font-size:24px;line-height:1}.player-area::-webkit-scrollbar{height:6px}.player-area::-webkit-scrollbar-thumb{background:#f4e3b066;border-radius:3px}}@media (width<=560px){:root{--chip:38px}.seat{border-width:1.5px;padding:2px 1px 4px}.hand-box{padding:8px 2px 2px}.seat-name{letter-spacing:.04em;font-size:10px}.bet{flex-direction:column;align-items:center;gap:0}.bet-amount{padding-bottom:0;font-size:13px}.chip-stack{--chip:28px}.seat-next{font-size:11px}.bet-readout{flex-direction:row;flex-basis:100%;order:-1;justify-content:center;align-items:baseline;gap:8px}.pill{flex:1;min-width:0;padding:5px 9px}.pill-label{white-space:nowrap;font-size:10px}.pill-label .full{display:none}.pill-label .short{display:inline}.pill-value{font-size:17px}.control-row.play .btn{flex:28%;min-width:0}.control-row.play .button-group{width:100%}.field{grid-template-columns:1fr}.field-label{padding-top:0}}@media (hover:none){.btn kbd{display:none}}@media (prefers-reduced-motion:reduce){.card.deal-in,.card.flip{animation:none}.btn,.chip-btn,.tray-stack{transition:none}}
