:root{--bg: #0a172f;--felt-deep: #06122a;--felt: #0d2a55;--felt-edge: #071830;--gold: #d4b45a;--gold-deep: #a8862d;--ink: #f4efe4;--muted: #b8c7d9;--danger: #c45b4a;--panel: rgba(6, 18, 40, .78);--card: #f7f2e8;--safe: clamp(12px, 3vw, 28px);font-family:Roboto,system-ui,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg)}button,input{font:inherit}.table-shell{display:grid;grid-template-rows:auto 1fr auto;height:100%;padding:var(--safe);background:var(--bg)}.table-shell.pixi-shell{position:relative;display:block;width:100%;height:100%;padding:0;overflow:hidden;background:var(--bg)}.hud-shell{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;padding:var(--safe)}.pixi-host{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;overflow:hidden}.pixi-host canvas{display:block;width:100%;height:100%}.controls{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 14px;pointer-events:auto}.hud-top-right{position:absolute;top:max(12px,var(--safe));right:max(12px,var(--safe));z-index:40;pointer-events:auto}.hud-bottom{position:absolute;bottom:0;left:0;right:0;display:flex;flex-direction:column;gap:8px;pointer-events:none}.controls{position:relative;bottom:auto;left:auto;right:auto;margin:0 var(--safe);flex-wrap:wrap;background:transparent;border:none;border-radius:0;-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:auto}.finance-bar{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:end;gap:12px;width:100%;padding:8px max(16px,var(--safe)) calc(10px + env(safe-area-inset-bottom,0px));background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none}.finance-bar__item{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 8px;min-width:0;color:#ffffffeb;font-size:.82rem;line-height:1.2}.finance-bar__item span{color:#ffffffb8;font-weight:500}.finance-bar__item strong{font-weight:700;color:#fff}.finance-bar__item--left{justify-content:flex-start}.finance-bar__item--center{justify-content:center}.finance-bar__item--right{justify-content:flex-end;position:relative}.finance-bar__clock{position:absolute;right:0;bottom:calc(100% + 2px);font-size:.68rem;color:#ffffff8c;font-variant-numeric:tabular-nums}.menu-wrap{position:relative;z-index:40}.burger-btn{position:relative;z-index:42;display:grid;place-content:center;gap:5px;width:44px;height:44px;padding:0;border-radius:10px;background:#00000047;border:1px solid rgba(212,180,90,.35)}.burger-btn span{display:block;width:18px;height:2px;border-radius:1px;background:var(--ink);transition:transform .16s ease,opacity .16s ease}.burger-btn.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.burger-btn.open span:nth-child(2){opacity:0}.burger-btn.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.menu-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:transparent}.menu-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:42;display:grid;gap:4px;min-width:220px;padding:8px;border-radius:12px;background:#0c1c38;border:1px solid rgba(212,180,90,.35);box-shadow:0 16px 40px #00000073}.menu-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--ink);font-weight:600;text-align:left}.menu-item:hover:not(:disabled){transform:none;background:#ffffff14}.menu-row{cursor:default}.menu-row>span{color:var(--muted);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}.lang-switch{display:flex;gap:4px}.lang-switch button{min-width:40px;padding:6px 10px;border-radius:8px;font-size:.8rem}.lang-switch button.active{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#1a1405;border-color:transparent}.toggle-pill{min-width:44px;padding:4px 10px;border-radius:999px;font-size:.75rem;text-align:center;background:#ffffff1a;color:var(--muted)}.toggle-pill.on{background:#d4b45a47;color:var(--gold)}.felt{position:relative;display:grid;align-content:space-between;gap:18px;padding:18px 8px;min-height:0}.seat h2{margin:0 0 10px;font-family:Cormorant Garamond,Georgia,serif;font-size:1.2rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.player-hands{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;justify-content:center}.player-hand{padding:6px;border-radius:12px;border:1px solid transparent;transition:border-color .16s ease,background .16s ease}.player-hand.active{border-color:#d4b45a8c;background:#0000002e}.hand-label{display:inline-block;margin-bottom:6px;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.hand-meta{display:flex;align-items:center;gap:8px;margin-bottom:10px;min-height:28px}.hand-value{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:28px;padding:0 10px;border-radius:999px;background:#00000059;font-weight:700}.hand-value.soft{font-size:.92rem;letter-spacing:.02em;color:var(--gold)}.badge{display:inline-flex;align-items:center;height:24px;padding:0 8px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.04em}.badge.bj{background:var(--gold);color:#1d1505}.badge.bust{background:var(--danger)}.badge.done{background:#ffffff2e}.badge.outcome.win{background:#58a66d;color:#071b0d}.badge.outcome.lose{background:var(--danger)}.badge.outcome.push{background:var(--gold);color:#1d1505}.cards{display:flex;flex-wrap:wrap;gap:10px;min-height:118px}.card{position:relative;width:78px;height:112px;border-radius:10px;background:var(--card);color:#1b1b1b;box-shadow:0 8px 18px #00000047;animation:deal-in .22s ease-out}.card-back{background:linear-gradient(135deg,rgba(212,180,90,.35),transparent 40%),repeating-linear-gradient(45deg,#163d7a,#163d7a 8px,#1f4f98 8px,#1f4f98 16px);border:2px solid #d4b45a}.card-corner{position:absolute;display:grid;font-size:.85rem;font-weight:700;line-height:1}.card-corner i{font-style:normal}.card-corner.top{top:8px;left:8px}.card-corner.bottom{right:8px;bottom:8px;transform:rotate(180deg)}.card-suit{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:2rem}.suit-red{color:#b42318}.suit-black{color:#161616}.player-hands:has(.player-hand:nth-child(4)) .card{width:56px;height:80px}.player-hands:has(.player-hand:nth-child(4)) .card-suit{font-size:1.4rem}.player-hands:has(.player-hand:nth-child(4)) .cards{min-height:86px;gap:6px}.status-banner{justify-self:center;min-height:40px;padding:8px 18px;border-radius:999px;background:#00000059;opacity:0;transform:translateY(4px);transition:opacity .18s ease,transform .18s ease;font-weight:600}.status-banner.visible{opacity:1;transform:translateY(0)}.betting-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px;width:100%}.table-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;column-gap:16px;row-gap:8px;width:100%}.table-controls__chips{display:flex;flex-direction:column;justify-content:flex-end;gap:8px;min-width:0}.bet-spot-meta{min-height:1.05em;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);line-height:1.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table-controls__actions{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-end;gap:8px;min-height:calc(var(--art-size, 84px) * 274 / 231)}.bet-panel{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px}.bet-panel>span{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);width:100%}button{border:1px solid rgba(255,255,255,.18);border-radius:999px;background:#ffffff14;color:var(--ink);padding:10px 18px;font-weight:700;cursor:pointer;transition:transform .12s ease,background .12s ease,opacity .12s ease}button:hover:not(:disabled){transform:translateY(-1px);background-color:#ffffff24}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#1a1405;border-color:transparent}button.ghost{background:transparent}.chip-tray{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.chip-tray--locked .chip-btn:disabled{opacity:.55;cursor:default}.chip-tray--locked .chip-btn.selected:disabled{opacity:.9}.betting-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.chip-btn{width:48px;height:48px;padding:0;border:none;border-radius:50%;background-color:transparent;background-position:center;background-size:contain;background-repeat:no-repeat;font-size:.78rem;line-height:1}.chip-btn:hover:not(:disabled){background-color:transparent;transform:none}.chip-btn.selected{outline:2px solid var(--gold);outline-offset:1px;transform:translateY(-3px)}.chip-btn.selected:hover:not(:disabled){transform:translateY(-3px)}.chip-1{background-image:url(/assets/chips/chip_1.png);color:#8a1060}.chip-5{background-image:url(/assets/chips/chip_6.png);color:#a3160f}.chip-10{background-image:url(/assets/chips/chip_4.png);color:#0b3183}.chip-25{background-image:url(/assets/chips/chip_5.png);color:#0f5218}.chip-50{background-image:url(/assets/chips/chip_9.png);color:#3a0f6e}.chip-100{background-image:url(/assets/chips/chip_2.png);color:#74450a;font-size:.7rem}.art-btn{position:relative;width:var(--art-size, 84px);aspect-ratio:231 / 274;padding:0;border:none;border-radius:0;background-color:transparent;background-position:center;background-size:contain;background-repeat:no-repeat;background-image:var(--art-norm);color:#eef5ff;transition:opacity .12s ease}.art-btn:hover:not(:disabled){background-color:transparent;background-image:var(--art-hover);transform:none}.art-btn:active:not(:disabled){background-image:var(--art-press);transform:none}.art-btn:after{content:"";position:absolute;width:0;height:0;overflow:hidden;background-image:var(--art-hover),var(--art-press)}.art-btn--round{width:calc(var(--art-size, 84px) * .86);aspect-ratio:1;margin-top:2px}.art-btn__label{position:absolute;top:84.5%;left:50%;width:84%;transform:translate(-50%,-50%);font-size:.6rem;font-weight:700;line-height:1.1;text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.5);pointer-events:none}.art-btn:active:not(:disabled) .art-btn__label{transform:translate(-50%,calc(-50% + 1px))}.action-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px}.action-row.game-actions{width:100%;justify-content:center}.action-row.game-actions .ghost{min-width:96px}.modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--safe);pointer-events:auto;background:#0000008c;z-index:20}.modal{width:min(480px,100%);padding:18px;border-radius:14px;background:#0c1c38;border:1px solid rgba(212,180,90,.35);box-shadow:0 20px 50px #0006}.modal header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.modal h2{margin:0;font-family:Cormorant Garamond,Georgia,serif}.modal ul{margin:0;padding-left:18px;color:var(--muted);line-height:1.55}.modal.confirm{width:min(380px,100%)}.cheat-modal{width:min(560px,100%)}.cheat-hint{margin:0 0 12px;color:var(--muted);font-size:.9rem;line-height:1.45}.cheat-presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.cheat-presets button{padding:8px 12px;font-size:.8rem}.cheat-json-label{display:block;margin-bottom:6px;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.cheat-json{width:100%;min-height:220px;margin-bottom:14px;padding:10px 12px;border-radius:10px;border:1px solid rgba(212,180,90,.28);background:#00000059;color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem;line-height:1.4;resize:vertical}.modal.confirm p{margin:0 0 10px;color:var(--muted);line-height:1.5}.confirm-total strong{color:var(--gold);font-size:1.1rem}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}@keyframes deal-in{0%{opacity:0;transform:translateY(-10px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:720px){.card{width:64px;height:92px}.table-controls{grid-template-columns:1fr;justify-items:stretch}.table-controls__actions{justify-content:center;width:100%}.table-controls__actions .art-btn{--art-size: 68px}.action-row{width:100%}.action-row button{flex:1 1 auto}.action-row .art-btn{--art-size: 68px;flex:0 0 auto}.finance-bar{gap:6px;padding-inline:12px}.finance-bar__item{flex-direction:column;align-items:inherit;gap:2px;font-size:.72rem}.finance-bar__item--center{align-items:center}.finance-bar__item--right{align-items:flex-end}.finance-bar__clock{position:static;order:-1}}@media(prefers-reduced-motion:reduce){.card,.status-banner,button{animation:none!important;transition:none!important}}
