*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;background:#3e1f0a;color:#222;min-height:100vh}main{max-width:860px;margin:8px auto;padding:0 16px}.tray-handle{position:fixed;top:8px;z-index:201;width:28px;height:52px;border:1.5px solid #bf7a40;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;color:#c9914a;background:#3e1f0a;padding:0;line-height:1;transition:transform .22s ease}.tray-handle-left{left:0;border-left:none;border-radius:0 8px 8px 0}.tray-handle-right{right:0;border-right:none;border-radius:8px 0 0 8px}.tray-handle:before,.tray-handle:after{content:"";position:absolute;width:5px;height:100vh;background:#3e1f0a}.tray-handle:before{bottom:100%}.tray-handle:after{top:100%}.tray-handle-left:before,.tray-handle-left:after{left:0;border-right:1.5px solid #bf7a40}.tray-handle-right:before,.tray-handle-right:after{right:0;border-left:1.5px solid #bf7a40}.tray-handle-left.open{transform:translate(220px);border-left:none}.tray-handle-right.open{transform:translate(-220px);border-right:none}.tray-handle.open:before,.tray-handle.open:after{background:transparent;border:none}.tray-handle-left.open:before{left:0;right:auto;border-left:1.5px solid #bf7a40}.tray-handle-right.open:before{right:0;left:auto;border-right:1.5px solid #bf7a40}.tray-handle-left.open:after{left:0;right:auto;border-left:1.5px solid #bf7a40}.tray-handle-right.open:after{right:0;left:auto;border-right:1.5px solid #bf7a40}.tray-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:199}.tray-panel{position:fixed;top:0;bottom:0;width:220px;background:#3e1f0a;color:#d4a870;z-index:200;transition:transform .22s ease;padding:20px 16px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.tray-panel-left{left:0;transform:translate(-100%)}.tray-panel-right{right:0;transform:translate(100%)}.tray-panel.tray-open{transform:translate(0)}.tray-link{display:block;color:#c9914a;text-decoration:none;padding:9px 8px;font-size:15px;border-radius:5px}.tray-link:hover{color:#f0c878;background:#bf7a402e}.tray-btn{background:none;border:none;cursor:pointer;text-align:left;width:100%;font-family:inherit}.tray-divider{height:1px;background:#bf7a404d;margin:10px 0}.tray-user-info{display:flex;flex-direction:column;gap:6px;padding:4px 8px 8px}.tray-display-name{font-weight:600;font-size:16px;color:#f0c878}.tray-game-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#bf7a408c;padding:4px 8px 0}.tray-panel .badge.admin{background:#c88c3238;color:#f0c060}.tray-panel .badge.player{background:#50a0c838;color:#80c8f0}.tray-panel .undo-pending{background:#bf7a401a;border-color:#bf7a4059;margin-top:6px}.tray-panel .undo-pending .info{color:#d4a870}.tray-panel .undo-pending .muted{color:#d4a87099}.tray-panel .link-btn{color:#c9914a}.card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:28px 32px;margin-bottom:20px}.card h1{font-size:22px;margin-bottom:20px}.card.game-card{padding:7px;background:linear-gradient(170deg,#3c2212,#251508 55%,#1b0f05);border:1px solid #5c3418;border-radius:14px;box-shadow:0 8px 28px #af692db3,inset 0 1px #ffc86424,inset 0 -1px #0000004d;position:relative}.game-error-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:14px;background:#00000085;display:flex;align-items:center;justify-content:center;z-index:20;cursor:pointer}.game-error-pill{background:#2d1608f7;border:1px solid rgba(220,80,60,.65);border-radius:12px;padding:18px 26px;color:#ff9f8a;font-size:15px;font-weight:600;text-align:center;max-width:270px;pointer-events:none}.game-winner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:14px;background:#0000009e;display:flex;align-items:center;justify-content:center;z-index:20;cursor:pointer}.game-winner-pill{background:#141e0af7;border:1px solid rgba(180,150,40,.7);border-radius:14px;padding:22px 32px;text-align:center;max-width:300px;pointer-events:none}.game-winner-congrats{font-size:20px;font-weight:700;color:#f5d060;margin-bottom:8px}.game-winner-names{font-size:15px;font-weight:600;color:#e8f8d0;margin-bottom:12px}.game-winner-hint{font-size:12px;color:#c8e6b480}.game-newgame-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:14px;background:#0000009e;display:flex;align-items:center;justify-content:center;z-index:20}.game-newgame-pill{background:#141e0af7;border:1px solid rgba(180,150,40,.7);border-radius:14px;padding:22px 32px;text-align:center;min-width:200px}.game-newgame-question{font-size:17px;font-weight:600;color:#e8f8d0;margin-bottom:16px}.game-newgame-buttons{display:flex;gap:12px;justify-content:center}.game-newgame-btn{padding:8px 28px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;border:none}.game-newgame-btn.yes{background:#4a8a2a;color:#e8f8d0}.game-newgame-btn.yes:hover:not(:disabled){background:#5aa030}.game-newgame-btn.no{background:#50321ee6;color:#c8a870;border:1px solid rgba(180,130,60,.5)}.game-newgame-btn.no:hover:not(:disabled){background:#644123e6}.game-newgame-btn:disabled{opacity:.5;cursor:default}.card.game-card .muted{color:#eafff373}.card.game-card .link-btn{color:#7ecfff}.card.game-card .table-actions{margin-top:6px}.card h2{font-size:17px;margin-bottom:14px;color:#444}form{display:flex;flex-direction:column;gap:14px}label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:#555;font-weight:500}input[type=text],input[type=email],input[type=password]{padding:9px 11px;border:1px solid #ccc;border-radius:5px;font-size:15px;color:#222;outline:none}input:focus{border-color:#4a6cf7;box-shadow:0 0 0 3px #4a6cf726}button[type=submit],button.primary{padding:10px 18px;background:#4a6cf7;color:#fff;border:none;border-radius:5px;font-size:15px;cursor:pointer;align-self:flex-start}button[type=submit]:hover{background:#3a5ce5}button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.inline-form{flex-direction:row;align-items:center;gap:8px;margin-bottom:16px}.inline-form input{flex:1}.inline-form button{align-self:auto;white-space:nowrap}.toggle-switch-label{display:flex;align-items:center;gap:12px;cursor:pointer;font-size:14px;-webkit-user-select:none;user-select:none}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:#ccc;border-radius:24px;transition:background .2s}.toggle-slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s}.toggle-switch input:checked+.toggle-slider{background:#4a90d9}.toggle-switch input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-switch input:focus-visible+.toggle-slider{outline:2px solid #4a90d9;outline-offset:2px}.bot-proposal-panel{display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px 16px;margin-top:8px;background:#000000a6;border:2px solid #e8a020;border-radius:8px;color:#fff}.bot-proposal-label{font-size:1rem;font-weight:700;text-align:center;letter-spacing:.02em}.bot-debugger-layout{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto}.bot-debugger-layout>.play-table{grid-column:1;grid-row:1}.bot-debugger-control{grid-column:1;grid-row:2;display:flex;flex-direction:column;background:#1e1e14;border:1px solid #e8a020;border-top:none;border-radius:0 0 8px 8px;overflow:hidden}.bot-debugger-ctrl-bar{display:flex;flex-direction:row;align-items:center;gap:8px;padding:6px 10px;background:#00000059;border-bottom:1px solid rgba(232,160,32,.3);min-height:44px;flex-shrink:0}.bot-debugger-proceed{white-space:nowrap;flex-shrink:0}.bot-debugger-card-preview{display:flex;align-items:center;justify-content:center;min-width:32px;flex-shrink:0}.bot-debugger-proposal-text{font-size:.72rem;color:#e8d5a0;white-space:nowrap}.bot-debugger-model-select{font-size:.72rem;padding:2px 4px;border-radius:4px;border:1px solid #888;background:#3a3a2a;color:#e8d5a0;cursor:pointer;flex-shrink:0}.bot-debugger-console{overflow-y:auto;font-size:.72rem;font-family:monospace;color:#d4c89e;padding:4px 8px;line-height:1.5;background:#111108}.bot-debugger-resize-h{height:6px;cursor:ns-resize;background:#e8a02033;flex-shrink:0}.bot-debugger-resize-h:hover{background:#e8a02080}.bot-debugger-display{grid-column:2;grid-row:1;display:flex;flex-direction:row;background:#1e1e14;border:1px solid #e8a020;border-left:none;border-radius:0 8px 8px 0;overflow:hidden;flex-shrink:0}.bot-debugger-display-inner{flex:1;overflow-y:auto;font-size:.72rem;font-family:monospace;color:#d4c89e;padding:4px 8px;line-height:1.5;background:#111108}.bot-debugger-resize-v{width:6px;cursor:ew-resize;background:#e8a02033;flex-shrink:0}.bot-debugger-resize-v:hover{background:#e8a02080}.danger-btn{padding:4px 10px;background:#fff;color:#c0392b;border:1px solid #c0392b;border-radius:4px;font-size:13px;cursor:pointer}.danger-btn:hover{background:#fdf0ef}.active-btn{padding:3px 10px;background:#d4edda;color:#1a5e2a;border:1px solid #a3d4b0;border-radius:10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;cursor:pointer}.active-btn:hover{background:#c3e6cb}.inactive-btn{padding:3px 10px;background:#f5f5f5;color:#888;border:1px solid #ccc;border-radius:10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;cursor:pointer}.inactive-btn:hover{background:#e9e9e9}.link-btn{background:none;border:none;color:#4a6cf7;cursor:pointer;font-size:inherit;padding:0;text-decoration:underline}.link-btn:hover{color:#3a5ce5}.badge{display:inline-block;padding:2px 7px;border-radius:10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.badge.admin{background:#fde8c8;color:#8a4900}.badge.player{background:#d6e8ff;color:#1a4a8a}table{width:100%;border-collapse:collapse;margin-top:8px}th{text-align:left;font-size:12px;color:#888;text-transform:uppercase;letter-spacing:.4px;padding:6px 10px;border-bottom:1px solid #eee}td{padding:9px 10px;border-bottom:1px solid #f0f0f0;vertical-align:middle}tr:last-child td{border-bottom:none}tr.admin-row{background:#fffbf5}.tabs{display:flex;gap:0;margin-bottom:0}.tabs button{padding:9px 18px;border:1px solid #e0e0e0;border-bottom:none;background:#f5f5f5;cursor:pointer;font-size:14px;border-radius:6px 6px 0 0;color:#666}.tabs button.active{background:#fff;color:#222;font-weight:600}.tabs+.card{border-radius:0 8px 8px;margin-top:0}.page-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px}.page-header h1{font-size:22px}.error{color:#c0392b;font-size:14px}.info{color:#1a5e1a;font-size:14px}.muted{color:#888;font-size:14px}.banner{padding:10px 14px;border-radius:5px;margin-bottom:12px}.error.banner{background:#fdf0ef;border:1px solid #f5c6c0}.info.banner{background:#f0faf0;border:1px solid #b6ddb6}.links{margin-top:14px;font-size:14px;color:#555}.links a{color:#4a6cf7}select{padding:9px 11px;border:1px solid #ccc;border-radius:5px;font-size:15px;color:#222;background:#fff;outline:none}select:focus{border-color:#4a6cf7;box-shadow:0 0 0 3px #4a6cf726}.game-list{display:flex;flex-direction:column;gap:14px}.game-row{border:1px solid #e6e6e6;border-radius:8px;padding:14px 16px;background:#fafafa}.game-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.game-type{font-weight:600;font-size:15px}.game-row-actions{margin-top:12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.viewers{margin-top:10px}.teams{display:flex;gap:16px;flex-wrap:wrap}.team{flex:1 1 200px;display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid #eee;border-radius:6px;background:#fff}.team-label{font-size:11px;color:#888;text-transform:uppercase;letter-spacing:.4px;font-weight:600}.seat{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 9px;border-radius:5px;background:#f5f5f7;font-size:14px}.seat.open{background:#f0f4ff}.seat.bot{background:#f3f0fa}.seat.mine{outline:2px solid #4a6cf7}.seat-idx{font-size:11px;color:#999;text-transform:uppercase;letter-spacing:.3px;min-width:48px}.seat-occ{font-weight:500}.seat-controls{margin-left:auto;display:flex;gap:12px}.table-status{display:flex;align-items:center;gap:10px;margin-bottom:16px}.table-teams{margin-bottom:4px}.table-actions{margin-top:16px;display:flex;align-items:center;gap:12px}.badge.status-preStart{background:#d8f0d8;color:#1a5e1a}.badge.status-paused{background:#fdeecf;color:#8a5a00}.badge.status-in_progress,.badge.status-undo_pending{background:#d6e8ff;color:#1a4a8a}.badge.status-completed{background:#eee;color:#666}.play-info{display:flex;flex-wrap:wrap;gap:18px;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid #eee}.info-group{display:flex;flex-direction:column;gap:2px}.info-label{font-size:11px;color:#999;text-transform:uppercase;letter-spacing:.4px;font-weight:600}.info-group span:last-child{font-size:15px;font-weight:500}.strain-spades,.strain-clubs{color:#1b1b1b}.strain-hearts,.strain-diamonds{color:#c0182b}.turn-line{margin-bottom:10px}.play-felt{position:relative;display:grid;grid-template-columns:1fr 1.4fr 1fr;grid-template-rows:auto minmax(150px,auto) auto;column-gap:10px;row-gap:4px;background:radial-gradient(circle at center,#2a8a5c,#166041);border-radius:12px;padding:6px 9px 10px;color:#eafff3}.felt-top{grid-column:2;grid-row:1;justify-self:center;align-self:start}.felt-left{grid-column:1;grid-row:2;align-self:end}.felt-center{grid-column:2;grid-row:2;position:relative;align-self:stretch;min-width:0}.felt-right{grid-column:3;grid-row:2;align-self:end}.felt-bottom{grid-column:1 / -1;grid-row:3;justify-self:center;width:100%}.felt-seat{display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:3px;padding:4px 10px;border-radius:6px;background:#0000002e;min-width:210px;min-height:100px}.felt-seat.self{background:#00000042}.felt-seat.active{box-shadow:0 0 0 3px #ffd24a}.hand-zone.active{box-shadow:0 0 0 3px #ffd24a;border-radius:8px}.felt-name{font-weight:600;font-size:12px}.felt-player-row{display:flex;align-items:center;width:100%}.felt-player-spacer{flex:1;display:flex;justify-content:center;align-items:center}.felt-player-bids{display:flex;justify-content:center;align-items:center;min-width:80px;padding:0 10px}.felt-sort-slot{flex:1;display:flex;justify-content:flex-end;align-items:center;padding-right:6px}.team-0 .felt-name{color:#ffe7a8}.team-1 .felt-name{color:#b8e3ff}.seat-backs{display:flex;justify-content:center;min-width:190px;min-height:48px}.seat-backs .mini-back{margin-left:-22px}.seat-backs .mini-back:first-child{margin-left:0}.seat-open-actions{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:48px}.seat-open-actions .link-btn{color:#7ecfff;font-size:13px}.seat-open-actions .link-btn:hover{color:#adf}.bot-controls{display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px}.bot-controls select{font-size:.8rem;padding:2px 4px;border-radius:4px;border:1px solid var(--border, #888);background:var(--surface, #3a3a2a);color:var(--text, #e8d5a0);cursor:pointer}.bot-controls .danger{color:var(--danger, #e06060);font-size:.8rem}.seat-bids{min-height:20px}.score-board{grid-column:3;grid-row:1 / 3;align-self:start;background:#0000008c;border-radius:6px;overflow:hidden;min-width:100px;height:146px;display:flex;flex-direction:column}.score-title{flex-shrink:0;text-align:center;font-size:11px;font-weight:700;letter-spacing:.4px;color:#eafff373;padding:2px 5px;border-bottom:1px solid rgba(255,255,255,.12)}.score-table{flex:1;display:flex;flex-direction:column;overflow:hidden;width:100%;margin:0;border-collapse:collapse;table-layout:fixed;font-size:11px;color:#eafff3}.score-table th,.score-table td{padding:2px 5px;text-align:right;white-space:nowrap}.score-table th:first-child,.score-table td:first-child{text-align:left}.score-table thead th{font-size:10px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:#eafff38c;border-bottom:1px solid rgba(255,255,255,.18);padding-top:2px}.score-table thead,.score-table tfoot{display:block;flex-shrink:0}.score-table tfoot td{border-top:1px solid rgba(255,255,255,.25);font-weight:700;padding-bottom:5px}.score-table tbody{display:block;flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}.score-table thead tr,.score-table tbody tr,.score-table tfoot tr{display:table;width:100%;table-layout:fixed}.score-pos{color:#7effa0}.score-neg{color:#ff8a8a}.felt-status{grid-column:1;grid-row:1 / 3;align-self:start;display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:5px 7px;background:#00000080;border-radius:6px;min-height:146px}.felt-status-sublabel{display:block;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#eafff38c;margin-bottom:3px}.felt-status-bid-row{display:flex;flex-direction:row;align-items:center;gap:8px}.felt-status-bid{display:flex;flex-direction:column;align-items:flex-start}.felt-status-none{font-size:14px;font-weight:600;color:#eafff373}.felt-status-tricks{display:flex;gap:8px;align-items:flex-end}.felt-resume-btn{font-size:11px;font-weight:700;padding:4px 8px;border-radius:5px;border:none;background:#27873f;color:#fff;cursor:pointer;white-space:nowrap}.felt-resume-btn:hover{background:#2ea34c}.trick-stack{display:flex;flex-direction:column;align-items:center;gap:3px}.trick-stack-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#eafff38c}.trick-stack-empty{border:2px dashed rgba(234,255,243,.35);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#eafff366}.trick-stack-pile{position:relative}.trick-stack-card{position:absolute}.trick-stack-count{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:13px;font-weight:800;color:#eafff3;text-shadow:0 1px 3px rgba(0,0,0,.9);pointer-events:none;white-space:nowrap}.felt-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#d6f5e6}.trick{position:relative;width:100%;height:100%;min-height:140px}.trick-card{position:absolute}.trick-top{top:0;left:50%;transform:translate(-50%)}.trick-bottom{bottom:0;left:50%;transform:translate(-50%)}.trick-left{left:0;top:50%;transform:translateY(-50%)}.trick-right{right:0;top:50%;transform:translateY(-50%)}.trick.collecting{animation-duration:.95s;animation-timing-function:ease-in;animation-fill-mode:forwards}.trick.collect-top{animation-name:collect-top}.trick.collect-bottom{animation-name:collect-bottom}.trick.collect-left{animation-name:collect-left}.trick.collect-right{animation-name:collect-right}@keyframes collect-top{0%,45%{transform:none;opacity:1}to{transform:translateY(-70%) scale(.35);opacity:0}}@keyframes collect-bottom{0%,45%{transform:none;opacity:1}to{transform:translateY(70%) scale(.35);opacity:0}}@keyframes collect-left{0%,45%{transform:none;opacity:1}to{transform:translate(-70%) scale(.35);opacity:0}}@keyframes collect-right{0%,45%{transform:none;opacity:1}to{transform:translate(70%) scale(.35);opacity:0}}@media (prefers-reduced-motion: reduce){.trick.collecting{animation:none}}.bid-chips{display:flex;justify-content:center;flex-wrap:wrap;gap:3px;margin-top:3px}.felt-player-spacer>.bid-chips{margin-top:0}.bid-chip{font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px;white-space:nowrap;letter-spacing:.3px}.bid-chip.bid-made{background:#ffffffeb;color:#1b1b1b}.bid-chip.bid-made.strain-hearts,.bid-chip.bid-made.strain-diamonds{color:#c0182b}.bid-chip.bid-made.strain-high{color:#2563eb}.bid-chip.bid-made.strain-low{color:#7c3aed}.bid-chip.bid-pass{background:#d21e1ee0;color:#fff}.hand-zone{margin-top:4px;display:flex;justify-content:center;overflow-x:auto;min-height:90px}.player-hand{display:flex;flex-direction:column;align-items:center;gap:0;width:100%}.hand-cards{display:flex;justify-content:center;flex-wrap:nowrap;gap:0;width:100%}.hand-card{background:none;border:none;padding:0;margin-left:1px;cursor:pointer;line-height:0;border-radius:8px;transition:transform .08s ease;flex:0 1 54px;min-width:0}.hand-card svg{width:100%;height:auto;display:block}.hand-card:first-child{margin-left:0}.hand-card.group-start{margin-left:11px}.hand-card:enabled:hover{transform:translateY(-8px)}.hand-card:disabled{cursor:default}.hand-sort{display:flex;flex-direction:row;align-items:center;gap:5px;font-size:11px;color:#eafff3b3}.hand-sort select{padding:2px 4px;font-size:11px;background:#ffffffe6;color:#1b1b1b;border:none;border-radius:4px}.bid-panel{margin-top:16px;padding:16px 18px;border:1px solid #e0e0e0;border-radius:8px;background:#fafbff}.bid-prompt{font-weight:600;margin-bottom:12px}.bid-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.bid-row:last-child{margin-bottom:0}.bid-row-label{font-size:11px;color:#999;text-transform:uppercase;letter-spacing:.4px;font-weight:600;min-width:56px}.bid-row .primary{align-self:auto;padding:7px 14px}.strain-choices{display:flex;gap:6px;flex-wrap:wrap}.strain-btn{min-width:38px;padding:6px 10px;border:1px solid #ccc;border-radius:5px;background:#fff;font-size:15px;cursor:pointer}.strain-btn:hover{border-color:#4a6cf7}.strain-btn.selected{border-color:#4a6cf7;background:#4a6cf7;color:#fff;box-shadow:0 0 0 3px #4a6cf726}.strain-btn.selected.strain-hearts,.strain-btn.selected.strain-diamonds,.strain-btn.selected.strain-spades,.strain-btn.selected.strain-clubs{color:#fff}.bid-hint{margin-bottom:12px}.felt-bid-overlay{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:254px;z-index:5}.bid-panel.compact{margin:0;padding:5px 6px;border:1px solid rgba(191,122,64,.4);border-radius:10px;background:#2d1608f7;display:flex;flex-direction:column;gap:6px;box-shadow:0 4px 16px #0000008c}.bid-panel.compact .bid-prompt{margin:0;font-size:11px;color:#bf7a40bf;text-align:center;text-transform:uppercase;letter-spacing:.5px;font-weight:600}.bid-panel.compact .strain-choices{display:grid;grid-template-columns:repeat(4,1fr) repeat(2,1.45fr);gap:4px}.bid-panel.compact .strain-btn{min-width:0;padding:4px 2px;font-size:15px;background:#e8c898;border:1px solid rgba(139,90,30,.5);color:#1b1010}.bid-panel.compact .strain-btn.strain-hearts,.bid-panel.compact .strain-btn.strain-diamonds{color:#c0182b}.bid-panel.compact .strain-btn.strain-high{color:#2563eb;font-weight:700}.bid-panel.compact .strain-btn.strain-low{color:#7c3aed;font-weight:700}.bid-panel.compact .strain-btn:hover{border-color:#8b5a1e;background:#ddb87a}.bid-panel.compact .strain-btn.selected{color:#fff}.bid-panel.compact .strain-btn.selected.strain-spades,.bid-panel.compact .strain-btn.selected.strain-clubs{background:#1b1010;border-color:#111}.bid-panel.compact .strain-btn.selected.strain-hearts,.bid-panel.compact .strain-btn.selected.strain-diamonds{background:#c0182b;border-color:#900020}.bid-panel.compact .strain-btn.selected.strain-high{background:#2563eb;border-color:#1d55d0}.bid-panel.compact .strain-btn.selected.strain-low{background:#7c3aed;border-color:#6530cc}.bid-panel.compact select{width:100%;font-size:13px;padding:5px 4px;background:#00000059;color:#d4a870;border:1px solid rgba(191,122,64,.4);border-radius:4px}.bid-panel.compact .bid-actions{display:flex;gap:4px}.bid-panel.compact .primary{flex:1;width:auto;padding:5px 4px;font-size:13px;background:#27873f;color:#fff;border:none}.bid-panel.compact .primary:hover{background:#2ea34c}.bid-panel.compact .primary:disabled{opacity:.5}.bid-panel.compact .danger-btn{flex:1;width:auto;padding:5px 4px;font-size:13px;background:#c0392b;color:#fff;border:none}.bid-panel.compact .danger-btn:hover{background:#a93226}.card-select .select-prompt{font-weight:600;color:#eafff3;margin-bottom:4px}.hand-card.selected{transform:translateY(-12px);outline:3px solid #ffd24a;border-radius:8px}.hand-card.selected:enabled:hover{transform:translateY(-12px)}.undo-pending{margin-top:16px;padding:14px 16px;border:1px solid #b6ddb6;border-radius:8px;background:#f0faf0}.undo-pending .info{margin-bottom:8px}.undo-buttons{display:flex;gap:12px;align-items:center}.theme-chooser{margin-top:6px}.theme-grid{display:flex;flex-wrap:wrap;gap:14px}.theme-option{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border:1px solid #e0e0e0;border-radius:8px;background:#fff;cursor:pointer}.theme-option:hover{border-color:#4a6cf7}.theme-option.selected{border-color:#4a6cf7;box-shadow:0 0 0 3px #4a6cf726}.theme-option:disabled{opacity:.6;cursor:not-allowed}.theme-name{font-size:13px;font-weight:600;color:#444}.conn-banner{background:#fdf0ef;color:#8a4900;border-bottom:1px solid #f5c6c0;text-align:center;font-size:14px;padding:6px 14px}.felt-status-header{display:flex;align-items:center;gap:6px}.watcher-eye-inline{position:relative}.watcher-eye-inline .watcher-popup{position:absolute;left:0;top:100%;white-space:nowrap;background:var(--card-bg, #fff);border:1px solid var(--border, #ccc);border-radius:4px;padding:4px 8px;z-index:10}.watcher-eye-btn{background:none;border:none;cursor:pointer;font-size:.85rem;padding:0 4px;opacity:.75;color:inherit}.watcher-eye-btn:hover{opacity:1}.watcher-popup{font-size:.8rem;color:var(--muted, #888);padding:2px 0 4px}
