*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--table: #1a5e2a;--table-dark: #144a20;--card-bg: #fffef8;--card-border: #ccc;--red: #cc1111;--black: #111;--ui-bg: #1e2a38;--ui-card: #28374a;--sheet: #1e2a38;--accent: #f0a500;--accent2: #e05050;--text: #f0f0f0;--muted: #7a9ab0;--success: #3dbb6a;--radius: 6px;--card-w: 42px;--card-h: 62px;--safe-bottom: env(safe-area-inset-bottom, 0px);font-size:15px}html,body{height:100%;height:100dvh;overflow:hidden}body{font-family:system-ui,-apple-system,sans-serif;background:var(--table);color:var(--text);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}#root{height:100%;height:100dvh}button{cursor:pointer;font-family:inherit;font-size:inherit;border:none}input{font-family:inherit;font-size:max(1em,16px)}a{color:var(--accent)}.muted{color:var(--muted);font-size:.9em}.app{position:relative;display:flex;flex-direction:column;height:100%;height:100dvh;max-width:600px;margin:0 auto}.app-header{display:flex;flex-direction:column;gap:4px;padding:4px 10px;background:var(--ui-bg);border-bottom:1px solid #333;flex-shrink:0}.app-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:nowrap;min-width:0}.app-header-row-left{display:flex;align-items:center;gap:6px;min-width:0}.app-header-row-right{display:flex;align-items:center;gap:8px;min-width:0}.app-logo{font-weight:700;font-size:1.1em;color:var(--accent)}.room-code{font-size:.75em;background:#333;padding:2px 6px;border-radius:4px;letter-spacing:2px}.header-scores{display:flex;align-items:center;gap:4px;font-size:.85em;white-space:nowrap;flex-shrink:1;min-width:0}.score-item{white-space:nowrap}.score-item strong{font-size:1.05em}.score-sep{color:var(--muted)}.score-target{color:var(--muted);font-size:.8em}.team0 strong{color:#7ec8e3}.team1 strong{color:#f4a261}.header-user{font-size:.85em;color:var(--muted)}.btn-lang{background:#2c3e50;color:var(--text);padding:4px 10px;border-radius:var(--radius);font-weight:700;font-size:.8em}.btn-lang:hover{background:#3a4f65}.btn-signout{background:none;color:var(--muted);font-size:1.2em;padding:2px 4px}.btn-signout:hover{color:#e05050}.btn-settings{background:none;color:var(--muted);padding:2px 4px;display:inline-flex;align-items:center;cursor:pointer}.btn-settings:hover{color:var(--accent)}.toast-error,.toast-info{position:fixed;top:48px;left:50%;transform:translate(-50%);z-index:1000;padding:8px 18px;border-radius:var(--radius);font-size:.9em;text-align:center;max-width:90vw}.toast-error{background:#8b1a1a;color:#fff}.toast-info{background:#1a4a6e;color:#fff}.btn-primary{background:var(--accent);color:#1a1a1a;padding:10px 20px;border-radius:var(--radius);font-weight:700;transition:opacity .15s}.btn-primary:hover:not(:disabled){opacity:.85}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-secondary{background:#2c3e50;color:var(--text);padding:10px 20px;border-radius:var(--radius);font-weight:700}.btn-secondary:hover{background:#3a4f65}.btn-link{background:none;color:var(--accent);text-decoration:underline;padding:4px}.btn-small{background:#2c3e50;color:var(--text);font-size:.75em;padding:6px 10px;border-radius:4px;min-height:34px}.btn-small:hover{background:#3a4f65}.btn-large{width:100%;font-size:1.05em}.btn-coinche{background:#8b1a1a;color:#fff;padding:7px 12px;border-radius:var(--radius);font-weight:700;font-size:.9em}.btn-coinche:hover{background:#a52020}.btn-surcoinche{background:#5a0a8a;color:#fff;padding:7px 12px;border-radius:var(--radius);font-weight:700;font-size:.9em}.btn-surcoinche:hover{background:#6d0faa}.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--table-dark);padding:16px;padding-bottom:max(16px,env(safe-area-inset-bottom))}.auth-card{background:var(--ui-card);border-radius:10px;padding:28px 24px;width:100%;max-width:380px;display:flex;flex-direction:column;gap:16px}.auth-title{font-size:1.8em;text-align:center;color:var(--accent)}.auth-form{display:flex;flex-direction:column;gap:14px}.auth-form label{display:flex;flex-direction:column;gap:4px;font-size:.9em;color:var(--muted)}.auth-form input{padding:10px 12px;background:#1e2a38;border:1px solid #3a4f65;border-radius:var(--radius);color:var(--text);font-size:1em}.auth-form input:focus{outline:2px solid var(--accent);border-color:transparent}.error-msg{color:#e05050;font-size:.85em}.success-msg{color:var(--success);font-size:.85em}.lang-toggle-fixed{position:fixed;top:12px;right:12px;z-index:500}.env-badge{position:fixed;bottom:8px;right:8px;z-index:500;font-size:.7em;letter-spacing:.1em;padding:3px 8px;background:var(--ui-card);color:var(--muted);border-radius:var(--radius);opacity:.85;pointer-events:none;-webkit-user-select:none;user-select:none}.splash{height:100%;display:flex;align-items:center;justify-content:center}.splash-logo{font-size:2em;color:var(--accent)}.lobby{flex:1;display:flex;align-items:center;justify-content:center;padding:16px;padding-bottom:max(16px,env(safe-area-inset-bottom));overflow-y:auto}.lobby-card{background:var(--ui-card);border-radius:10px;padding:24px 20px;width:100%;max-width:480px;display:flex;flex-direction:column;gap:14px}.lobby-title{font-size:2em;text-align:center;color:var(--accent)}.lobby-welcome{text-align:center;color:var(--muted)}.room-code-display{font-size:2.2em;font-weight:700;letter-spacing:8px;text-align:center;color:var(--accent);background:#1e2a38;padding:12px;border-radius:var(--radius)}.player-count{text-align:center;color:var(--muted);font-size:.9em}.code-input{font-size:1.4em;letter-spacing:4px;text-align:center;padding:10px;background:#1e2a38;border:1px solid #3a4f65;border-radius:var(--radius);color:var(--text);width:100%;margin-top:4px}.code-input:focus{outline:2px solid var(--accent);border-color:transparent}.code-input.input-invalid{border-color:#e04a4a}.code-input.input-invalid:focus{outline-color:#e04a4a}.teams-container{display:grid;grid-template-columns:1fr 1fr;gap:12px}.team-card{background:#1e2a38;border-radius:var(--radius);padding:10px 5px;display:flex;flex-direction:column;gap:8px;border-top:3px solid transparent;min-width:0}.team-card-0{border-top-color:#7ec8e3}.team-card-1{border-top-color:#f4a261}.team-card-title{font-size:.82em;font-weight:700;text-align:center;text-transform:uppercase;letter-spacing:.05em}.team-card-0 .team-card-title{color:#7ec8e3}.team-card-1 .team-card-title{color:#f4a261}.team-slots{display:grid;grid-template-columns:1fr 1fr;gap:5px}.team-slot{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;border-radius:10px;min-height:188px;background:#0000002e;min-width:0}.team-slot.disconnected{opacity:.5}.team-figure{width:100%;max-width:58px;height:120px;display:grid;place-items:center}.team0-figure,.team1-figure{background:none}.team-slot-name{font-size:.82em;font-weight:600;text-align:center;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-slot-star{color:var(--accent)}.team-slot-bot{font-size:.62em;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:#21d4b4;background:#21d4b424;border-radius:6px;padding:1px 6px}.team-move{margin-top:2px;font-size:.72em!important;padding:3px 8px!important}.team-slot.empty{border:1px dashed rgba(255,255,255,.14);background:#0000001a;justify-content:center}.team-slot-silhouette{width:56px;height:70px;opacity:.3}.team-slot-silhouette svg{fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round}.team-slot-name.empty-name{color:var(--muted);font-weight:500;font-size:.76em}.disconnected{opacity:.5}.dc-indicator{color:#f0a500}.target-score-row label{display:flex;align-items:center;gap:8px;font-size:.9em}.target-input{width:90px;padding:6px 8px;background:#1e2a38;border:1px solid #3a4f65;border-radius:var(--radius);color:var(--text);text-align:center}.target-input:focus{outline:2px solid var(--accent);border-color:transparent}.target-display{font-size:.9em;color:var(--muted);text-align:center}.waiting-msg{text-align:center;color:var(--muted);font-size:.9em}.lobby-training-hint{text-align:center;color:var(--accent);font-size:.82em;margin-top:-6px}.lobby-home{align-items:flex-start}.home-wrap{width:100%;max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:18px}.home-profile{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;background:var(--ui-card);border:1px solid rgba(255,255,255,.06);border-radius:12px;text-align:left;font:inherit;color:inherit;cursor:pointer}.home-profile:hover{border-color:#ffffff29}.home-profile-chevron{margin-left:auto;color:var(--muted);font-size:1.3em}.home-avatar{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:1.25em;color:#1a1a1a;background:linear-gradient(135deg,var(--accent),#f7c544);flex-shrink:0}.home-profile-text{display:flex;flex-direction:column;gap:2px;min-width:0}.home-profile-name{font-weight:700;font-size:1.05em;color:var(--text)}.home-profile-sub{font-size:.82em;color:var(--muted)}.home-profile-cta{font-size:.85em;font-weight:600;color:var(--accent)}.home-avatar-wrap{position:relative;flex-shrink:0;display:inline-flex}.home-avatar-edit{position:absolute;right:-3px;bottom:-3px;width:20px;height:20px;border-radius:50%;background:var(--accent);border:2px solid var(--ui-card);display:grid;place-items:center;font-size:.62em;line-height:1}.home-actions{display:flex;flex-direction:column;gap:10px}.home-create{width:100%;font-size:1.05em;padding:14px;border-radius:10px}.home-actions-row{display:flex;gap:10px}.home-action-sm{flex:1;padding:11px;border-radius:10px;font-size:.95em}.active-games{display:flex;flex-direction:column;gap:10px}.active-games-head{display:flex;align-items:center;justify-content:space-between}.active-games-title{font-size:.78em;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}.active-games-refresh{background:none;color:var(--muted);font-size:1.1em;line-height:1;padding:2px 6px;border-radius:6px}.active-games-refresh:hover{color:var(--accent)}.active-games-empty{color:var(--muted);font-size:.88em;text-align:center;padding:16px;background:#00000026;border:1px dashed rgba(255,255,255,.08);border-radius:10px}.active-games-list{list-style:none;display:flex;flex-direction:column;gap:8px}.game-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--ui-card);border:1px solid rgba(255,255,255,.06);border-left:3px solid var(--accent);border-radius:10px}.game-card-info{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.game-card-top{display:flex;align-items:baseline;gap:10px}.game-card-code{font-weight:700;letter-spacing:2px;color:var(--accent);font-size:1.05em}.game-card-meta{font-size:.82em;color:var(--muted)}.game-card-players{font-size:.8em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-card-join{flex-shrink:0;padding:9px 16px;border-radius:8px;font-size:.9em}.game-card-join.is-rejoin{background:var(--accent);color:#1a1a1a;font-weight:700}.game-card-join.is-rejoin:hover{opacity:.88}.avatar{flex-shrink:0}.avatar-peep{padding:0}.avatar-peep>svg{width:100%;height:100%;display:block}.avatar-peep-head{overflow:hidden}.avatar-peep-full{overflow:visible}.avatar-bot{box-shadow:0 0 0 3px #21d4b4,0 0 0 5px #21d4b459;border-color:#21d4b4}.avatar-peep-full.avatar-bot{box-shadow:none;outline:3px dashed #21d4b4;outline-offset:2px}.profile-screen{align-items:flex-start}.profile-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.profile-title{font-weight:700;font-size:1.05em;color:var(--text)}.profile-back{white-space:nowrap}.profile-back-spacer{width:1px}.profile-preview{display:flex;flex-direction:column;align-items:center;gap:8px}.profile-avatar{width:156px;height:264px;border-radius:18px;display:grid;place-items:center;font-weight:700;font-size:2.6em;color:#1a1a1a;background:linear-gradient(160deg,#2a3a4d,#1c2735);border:1px solid rgba(255,255,255,.08);box-shadow:0 6px 20px #0006;padding:10px 8px 0}.profile-avatar:not(.avatar-peep){height:168px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#f7c544);padding:0}.profile-pseudo{font-weight:700;font-size:1.15em;color:var(--text)}.profile-builder{display:flex;flex-direction:column;gap:10px;background:var(--ui-card);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:10px}.builder-tabs{display:flex;flex-wrap:wrap;gap:6px}.builder-tab{flex:1 1 auto;padding:6px 8px;border-radius:8px;background:#00000040;color:var(--muted);border:1px solid transparent;font-size:.82em;font-weight:600;white-space:nowrap;cursor:pointer}.builder-tab:hover{background:#0006;color:var(--text)}.builder-tab.active{background:#f0a50029;border-color:var(--accent);color:var(--accent)}.builder-strip{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scroll-snap-type:x proximity}.builder-thumb{flex:0 0 auto;padding:3px;border-radius:12px;background:#00000038;border:2px solid transparent;cursor:pointer;scroll-snap-align:start;display:grid;place-items:center}.builder-thumb:hover{background:#0006}.builder-thumb.selected{border-color:var(--accent);box-shadow:0 0 0 2px #f0a5004d}.builder-thumb-fig{display:grid;place-items:center}.builder-thumb-head{width:56px;height:56px;border-radius:50%;overflow:hidden;background:#ffffff0a}.builder-thumb-full{width:60px;height:88px}.builder-colors{display:flex;flex-direction:column;gap:10px;padding:2px}.builder-color-row{display:flex;flex-direction:column;gap:6px}.builder-color-label{font-size:.72em;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.builder-swatches{display:flex;flex-wrap:wrap;gap:8px}.swatch{width:28px;height:28px;border-radius:50%;border:2px solid rgba(255,255,255,.18);padding:0;cursor:pointer}.swatch.selected{border-color:var(--accent);box-shadow:0 0 0 2px #f0a50059}.profile-actions{display:flex;gap:10px}.profile-error{text-align:center}.friends-online{display:flex;flex-direction:column;gap:10px}.friends-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.friends-title{font-size:.78em;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}.friends-count{font-size:.78em;color:var(--success);font-weight:600}.friends-empty{color:var(--muted);font-size:.88em;text-align:center;padding:16px;background:#00000026;border:1px dashed rgba(255,255,255,.08);border-radius:10px}.friends-row{list-style:none;display:flex;gap:12px;overflow-x:auto;padding:4px 2px 8px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.friend{flex:0 0 auto;width:64px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.friend-offline{opacity:.45}.friend-avatar-wrap{position:relative}.friend-avatar{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:1.1em;color:var(--text);background:#3a4a5e}.friend-dot{position:absolute;right:-1px;bottom:-1px;width:13px;height:13px;border-radius:50%;border:2px solid var(--ui-bg)}.friend-dot-online{background:var(--success)}.friend-dot-in-game{background:var(--accent)}.friend-dot-offline{background:#6b7785}.friend-name{font-size:.76em;color:var(--text);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.friend-status{font-size:.66em;color:var(--muted)}.friends-offline{display:flex;flex-direction:column;gap:10px}.friends-offline-head{display:flex;align-items:center;gap:8px;background:none;padding:0;text-align:left}.friends-chevron{color:var(--muted);font-size:.8em;line-height:1;transition:transform .15s ease}.friends-chevron.open{transform:rotate(90deg)}.friends-offline-head:hover .friends-title,.friends-offline-head:hover .friends-chevron{color:var(--text)}.game-board{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--table);gap:4px;padding:4px}.score-target-small{color:var(--muted);font-size:.85em}.board-top{position:absolute;top:2px;left:50%;transform:translate(-50%);z-index:4;display:flex;flex-direction:row;align-items:center;gap:6px;max-width:96%}.top-seat-stack{display:flex;flex-direction:column;align-items:center;gap:2px}.peek-hand{display:flex;flex-wrap:wrap;justify-content:center;gap:2px;margin-top:3px;padding:2px 4px;max-width:220px;background:#00000059;border:1px dashed rgba(240,165,0,.5);border-radius:var(--radius)}.peek-card{font-size:.7em;font-weight:700;line-height:1.1;padding:1px 3px;border-radius:3px;background:#f0ead6;color:#1a1a1a}.peek-card.red{color:var(--red)}.board-middle{position:relative;display:flex;flex:1;gap:4px;min-height:0;overflow:hidden}.board-left,.board-right{display:flex;flex-direction:column;align-items:center;justify-content:center;width:86px;flex-shrink:0}.board-center{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;gap:6px;position:relative;padding-top:40px}.board-middle{border-radius:14px;background:radial-gradient(ellipse at center,#1e6b30,#164f22 70%,#0f3a18)}.board-hand{flex-shrink:0;background:#00000047;border-top:2px solid rgba(255,255,255,.07);border-radius:var(--radius);padding:6px 4px}.player-seat{display:flex;flex-direction:column;align-items:center;gap:2px;border:2px solid transparent;border-radius:10px;background:#0000002e;padding:2px 4px}.player-seat.player-left,.player-seat.player-right{flex-direction:column}.player-seat.player-top{flex-direction:row;align-items:center;gap:5px;padding:1px 8px;background:#00000052}.player-name{font-size:.7em;color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}.turn-dot{color:var(--success)}.player-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75em;font-weight:700;flex-shrink:0;border:2px solid rgba(255,255,255,.15)}.team0-avatar{background:#7ec8e340;color:#7ec8e3}.team1-avatar{background:#f4a26140;color:#f4a261}.active-player .player-avatar{border-color:var(--accent);box-shadow:0 0 8px #f0a50080}.self-player-bar{display:flex;align-items:center;gap:6px;padding:4px 6px 2px}.self-name{font-size:.8em;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.last-trick-widget{display:flex;align-items:center;gap:4px;background:#0000004d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);padding:4px 8px;cursor:pointer;font-size:.78em}.last-trick-widget:hover{background:#00000080}.ltw-label{color:var(--muted);white-space:nowrap}.ltw-card{font-weight:700;color:var(--text);letter-spacing:-.5px}.ltw-card.red{color:var(--red)}.hand-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 4px;border-radius:8px;background:#00000052;border:1px solid rgba(255,255,255,.08);line-height:1}.hand-chip-stack{display:inline-flex;align-items:center}.mini-back{display:inline-block;width:11px;height:16px;background:#1a4080;border:1px solid #2255aa;border-radius:2px;margin-left:-5px}.mini-back:first-child{margin-left:0}.hand-chip-count{font-size:.7em;font-weight:700;color:var(--text);letter-spacing:.02em}.card{width:var(--card-w);height:var(--card-h);border-radius:5px;border:1px solid var(--card-border);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.85em;line-height:1.1;gap:1px;flex-shrink:0}.card-face{background:var(--card-bg);color:var(--black);transition:transform .1s,box-shadow .1s}.card-face.red{color:var(--red)}.card-face.valid{cursor:pointer;box-shadow:0 0 0 2px var(--accent)}.card-face.card-disabled{cursor:default}.card-value{font-weight:700;font-size:1em}.card-suit{font-size:.95em}.card-center{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1;gap:1px}.card-index{position:absolute;top:5%;left:7%;display:flex;flex-direction:column;align-items:center;line-height:.95;font-weight:700;pointer-events:none}.ci-rank{font-size:.72em}.ci-suit{font-size:.68em}.card-back{background:#1a4080;color:#ffffff26;font-size:1.4em;border:1px solid #2255aa;cursor:default}.card-back.card-small{width:16px;height:24px;font-size:.5em;border-radius:3px}.my-hand{position:relative;display:block;overflow:visible;padding:4px;height:calc(var(--card-h) * var(--hand-card-scale) + 40px)}.hand-ruler{position:absolute;top:0;left:0;width:calc(var(--card-w) * var(--hand-card-scale));height:calc(var(--card-h) * var(--hand-card-scale));visibility:hidden;pointer-events:none}:root{--hand-card-scale: 1.6}[data-hand-size=L]{--hand-card-scale: 1.6}[data-hand-size=XL]{--hand-card-scale: 1.9}.my-hand .card-face{position:absolute;left:50%;top:6px;width:calc(var(--card-w) * var(--hand-card-scale));height:calc(var(--card-h) * var(--hand-card-scale));font-size:calc(.85em * var(--hand-card-scale));transform-origin:center bottom;transition:transform .13s ease-out,width .15s ease-out,height .15s ease-out,font-size .15s ease-out,box-shadow .13s ease-out}.hand-size-toggle{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);border-radius:6px;color:var(--text, #fff);font-size:.85em;font-weight:500;cursor:pointer;transition:background .15s ease;min-height:32px}.hand-size-toggle:hover,.hand-size-toggle:focus-visible{background:#ffffff1a}.hand-size-toggle-icon{font-size:1em;line-height:1}.hand-size-toggle-label{white-space:nowrap}@media (max-width: 480px){.hand-size-toggle{padding:8px 12px}.score-target{display:none}}.training-topbar{display:flex;align-items:center;justify-content:flex-start;padding:6px 10px;background:var(--ui-bg);border-bottom:1px solid #333;flex-shrink:0;min-height:44px}@media (max-width: 768px) and (orientation: landscape){.training-topbar{min-height:32px;padding:3px 8px}}.belote-checkbox{display:flex;align-items:center;gap:6px;font-size:.85em;color:var(--accent);padding:4px 8px;cursor:pointer;justify-content:center}.belote-checkbox input{width:16px;height:16px;cursor:pointer;accent-color:var(--accent)}.trick-display{display:grid;grid-template-areas:". top ." "left . right" ". bottom .";grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto auto;gap:4px;width:180px;place-items:center}.trick-top{grid-area:top}.trick-left{grid-area:left}.trick-right{grid-area:right}.trick-bottom{grid-area:bottom}.trick-card{width:var(--card-w);height:var(--card-h);border-radius:5px;background:var(--card-bg);border:1px solid var(--card-border);color:var(--black);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.85em;line-height:1.1;gap:1px;position:relative}.trick-card.red{color:var(--red)}.trick-player-name{position:absolute;bottom:-16px;font-size:.65em;color:var(--muted);white-space:nowrap}.trick-empty{width:var(--card-w);height:var(--card-h);border:1px dashed rgba(255,255,255,.1);border-radius:5px}.contract-badge{background:#00000059;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);padding:4px 10px;font-size:.85em;font-weight:700;color:var(--accent)}.seat-contract-badge{background:#0000008c;border:1.5px solid var(--accent);border-radius:var(--radius);padding:4px 10px;pointer-events:none}.scb-value{font-size:1.05em;font-weight:800;color:var(--accent);letter-spacing:.02em}.scb-value.red{color:var(--red)}.seat-coinche-badge{border-radius:var(--radius);padding:2px 8px;pointer-events:none;font-size:.72em;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.scbt-coinche{background:#f0a03026;border:1.5px solid #f0a030;color:#f0a030}.scbt-surcoinche{background:#cc66ff26;border:1.5px solid #cc66ff;color:#c6f}.bid-center{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;min-height:0;overflow:hidden}.bid-focal{display:flex;align-items:baseline;gap:3px;background:#00000080;border:1px solid rgba(212,175,55,.3);border-radius:10px;padding:8px 16px;min-width:80px;justify-content:center}.bid-focal-value{font-size:1.9em;font-weight:800;color:var(--accent);line-height:1}.bid-focal-suit{font-size:1.6em;color:var(--accent);line-height:1}.bid-focal-suit.red{color:var(--red)}.bid-focal-mod{font-size:.8em;font-weight:700;margin-left:3px;line-height:1;align-self:center}.bid-focal-mod.coin{color:#e05050}.bid-focal-mod.sur{color:#c6f}.bid-focal-empty{font-size:.85em;color:var(--muted);font-style:italic}.bid-whose-turn{font-size:.88em;font-weight:600;color:var(--text);letter-spacing:.01em}.bid-whose-turn.mine{color:var(--success)}.bid-history{width:100%;display:flex;flex-direction:column;overflow-y:auto;max-height:112px;border-radius:6px;background:#00000038;padding:2px 0}.bh-row{display:flex;justify-content:space-between;align-items:center;padding:2px 8px;font-size:.74em;line-height:1.5}.bh-name{color:var(--muted);font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.bh-action{font-weight:700;flex-shrink:0;margin-left:6px}.bh-pass .bh-action{color:#ffffff4d}.bh-bid .bh-action{color:var(--accent)}.bh-coinche .bh-action{color:#e05050}.bh-surcoinche .bh-action{color:#c6f}.bidding-panel{width:100%;display:flex;flex-direction:column;gap:6px;padding:6px 0 4px}.bid-values{display:flex;flex-direction:column;gap:5px}.bid-values-row{display:flex;gap:5px}.bid-val-btn{flex:1;min-width:0;min-height:30px;padding:4px 6px;border-radius:var(--radius);border:1px solid rgba(255,255,255,.18);background:transparent;color:var(--text);font-size:.9em;text-align:center}.bid-val-btn:not(.selected):hover{background:#ffffff14}.bid-val-btn.selected{background:var(--accent);border-color:var(--accent);color:#1a1a1a;font-weight:700}.bid-val-suit{margin-left:3px}.bid-val-suit.red{color:#ff7a7a}.bid-val-suit.black{color:#cfd6dd}.bid-val-btn.selected .bid-val-suit.red{color:#c0392b}.bid-val-btn.selected .bid-val-suit.black{color:#1a1a1a}.suit-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px}.suit-row .suit-row-undo{grid-column:1;justify-self:start;white-space:nowrap}.suit-row .suit-chips{grid-column:2}.suit-chips{display:flex;gap:5px;justify-content:center}.bid-action-row{display:flex;align-items:center;gap:6px}.bid-action-row>button{flex:1;min-width:0}.suit-btn{width:33px;height:33px;flex:none;border-radius:var(--radius);border:1px solid rgba(255,255,255,.18);background:transparent;font-size:1.05em}.suit-btn.red{color:var(--red)}.suit-btn.black{color:#e0e0e0}.suit-btn.selected{outline:2px solid var(--accent);outline-offset:-1px}.suit-btn:hover:not(.selected){background:#ffffff14}.btn-annoncer{background:var(--accent);color:#1a1a1a;font-weight:700;padding:7px 8px;border-radius:var(--radius);min-height:33px;transition:opacity .15s}.btn-annoncer:hover:not(:disabled){opacity:.85}.btn-annoncer:disabled{opacity:.45;cursor:not-allowed}.btn-passer{background:#2c3e50;color:var(--text);border:1px solid rgba(255,255,255,.18);font-weight:700;padding:7px 8px;border-radius:var(--radius);min-height:33px}.btn-passer:hover{background:#3a4f65}.btn-coinche-outline,.btn-surcoinche-outline{background:transparent;color:#e86b6b;border:1px solid var(--red);font-weight:700;padding:7px 8px;border-radius:var(--radius);min-height:33px}.btn-coinche-outline:hover,.btn-surcoinche-outline:hover{background:#cc111124}.hand-toolbar-icons{gap:0;flex-wrap:nowrap}.hand-toolbar-icons>button{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:1px;min-height:auto;padding:3px 2px;background:transparent;border:none;border-left:1px solid rgba(255,255,255,.12);border-radius:0}.hand-toolbar-icons>button:first-child{border-left:none}.hand-toolbar-icons .ti-icon{font-size:1.05em;line-height:1.1}.hand-toolbar-icons .ti-cap{font-size:.6em;line-height:1;white-space:nowrap}.board-hand>.hand-toolbar{margin-top:2px;border-top:1px solid rgba(255,255,255,.08);padding-bottom:calc(var(--safe-bottom) + 4px)}.bid-sheet{width:100%;display:flex;flex-direction:column;padding-bottom:calc(var(--safe-bottom) + 4px)}.bid-sheet-handle,.bid-bar,.bid-scrim{display:none}@media (max-height: 820px){.bid-sheet{position:absolute;left:0;right:0;bottom:0;z-index:80;background:var(--sheet);border-top-left-radius:16px;border-top-right-radius:16px;box-shadow:0 -6px 22px #00000080;padding:0 8px calc(var(--safe-bottom) + 4px);transition:transform .32s ease;will-change:transform}.bid-sheet.open{transform:translateY(0)}.bid-sheet.collapsed{transform:translateY(110%);pointer-events:none}.bid-sheet-handle{display:block;width:44px;height:5px;margin:8px auto 4px;padding:0;border:none;border-radius:3px;background:#ffffff52;cursor:pointer;flex-shrink:0}.bid-sheet-handle:hover{background:#ffffff80}.bid-bar{position:absolute;left:0;right:0;bottom:0;z-index:70;display:flex;align-items:center;gap:8px;width:100%;min-height:46px;padding:8px 14px calc(var(--safe-bottom) + 4px);background:var(--sheet);border-top:1px solid rgba(255,255,255,.12);border-radius:var(--radius) var(--radius) 0 0;color:var(--text);text-align:left;box-shadow:0 -3px 12px #00000059}.bid-bar.bid-bar-hidden{display:none}.bid-bar-label{font-size:.7em;color:var(--muted);white-space:nowrap}.bid-bar-value{flex:1;display:flex;align-items:baseline;gap:3px;font-size:1.05em;font-weight:800;color:var(--accent)}.bid-bar-suit{color:var(--accent)}.bid-bar-suit.red{color:var(--red)}.bid-bar-bidder{font-size:.78em;font-weight:600;color:var(--muted)}.bid-bar-empty{font-style:italic;font-weight:500;color:var(--muted)}.bid-bar-cta{font-size:.85em;font-weight:700;color:var(--success);white-space:nowrap}.bid-scrim{display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:72;background:#00000038;pointer-events:none}.board-hand.has-bid-sheet .my-hand{z-index:90;transition:transform .32s ease}}@media (min-height: 821px){.board-hand.has-bid-sheet{display:flex;flex-direction:column}.board-hand.has-bid-sheet .self-player-bar{order:1}.board-hand.has-bid-sheet .my-hand{order:2}.board-hand.has-bid-sheet .bid-sheet{order:3}}.bidding-turn-info,.play-turn-info{font-size:.85em;text-align:center;color:var(--muted)}.your-turn{color:var(--success)}.belote-announced{font-size:.85em;color:var(--accent);text-align:center;padding:2px 0}.badge{font-size:.75em;font-weight:700;padding:1px 5px;border-radius:3px}.badge-coin{background:#8b1a1a;color:#fff}.badge-sur{background:#5a0a8a;color:#fff}.round-summary{flex:1;display:flex;flex-direction:column;align-items:center;padding:12px 16px calc(var(--safe-bottom) + 6px);gap:12px;overflow-y:auto}.auction-recap{width:100%;max-width:440px;display:flex;flex-direction:column;align-items:center;gap:4px;flex-shrink:0}.ar-top-row,.ar-bot-row{display:flex;justify-content:center;width:100%}.ar-mid-row{display:flex;align-items:stretch;width:100%;gap:4px}.ar-table-felt{flex:1;border-radius:40%;background:radial-gradient(ellipse at center,#1e6b30,#164f22 70%,#0f3a18);border:1px solid rgba(255,255,255,.06);min-height:72px;margin:4px 0;display:flex;align-items:center;justify-content:center}.ar-table-felt-cards{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:4px}.ar-table-felt-cards-row{display:flex;gap:4px}.ar-table-felt-card{width:22px;height:30px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.65em;font-weight:700;line-height:1;letter-spacing:-.02em}.ar-table-felt-card.red{color:var(--red)}.ar-table-felt-card.black{color:var(--black)}.ar-seat{background:#00000061;border:1px solid rgba(255,255,255,.07);border-radius:8px;padding:6px 10px;min-width:88px;max-width:130px;display:flex;flex-direction:column;align-items:center;gap:3px}.ar-name{font-size:.68em;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.ar-stack{display:flex;flex-direction:column;align-items:center;gap:2px}.ar-action{display:block;text-align:center}.ar-win{font-size:.95em;font-weight:800;color:var(--accent)}.ar-win.red{color:var(--red)}.ar-latest{font-size:.82em;font-weight:700;color:var(--accent)}.ar-latest.red{color:var(--red)}.ar-old{font-size:.72em;color:var(--muted)}.ar-pass{font-size:.72em;color:var(--muted);font-style:italic}.ar-coinche{font-size:.82em;font-weight:700;color:#f0a030}.ar-surcoinche{font-size:.82em;font-weight:700;color:#c6f}.hand-strip{display:flex;flex-wrap:nowrap;gap:2px;margin-top:4px;max-width:100%;overflow-x:auto}.hand-strip-card{flex:0 0 auto;min-width:22px;height:30px;padding:2px 3px;border:1px solid var(--card-border);border-radius:3px;background:var(--card-bg);font-size:.68em;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;justify-content:center;white-space:nowrap}.hand-strip-card.red{color:var(--red)}.hand-strip-card.black{color:var(--black)}.summary-card{background:var(--ui-card);border-radius:10px;padding:22px 18px;width:100%;max-width:440px;display:flex;flex-direction:column;gap:12px;align-items:center}.summary-card h2{font-size:1.3em}.result-line{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:8px;font-size:.95em;font-weight:600}.result-line.made .result-mark,.result-line.made .result-text{color:var(--success)}.result-line.failed .result-mark,.result-line.failed .result-text{color:#e05050}.result-mark{font-size:1.15em}.result-contract{color:var(--muted);font-weight:500}.manche-score{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:2px}.manche-label{font-size:.72em;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.manche-values{display:flex;align-items:baseline;gap:14px;font-size:2.1em;font-weight:700;font-variant-numeric:tabular-nums}.ms-sep{color:var(--muted);font-weight:400}.ms-nous{color:#7ec8e3}.ms-eux{color:#f4a261}.total-line{display:flex;align-items:baseline;gap:10px;font-size:.85em;color:var(--muted)}.total-line-label{text-transform:uppercase;letter-spacing:.06em}.total-line-values{font-variant-numeric:tabular-nums}.total-line-values .ms-nous,.total-line-values .ms-eux{font-weight:600;opacity:.8}.tl-sep{color:var(--muted);margin:0 4px}.detail-toggle{background:none;border:none;color:var(--accent);font-size:.82em;cursor:pointer;padding:2px 4px}.detail-toggle:hover{text-decoration:underline}.score-table{width:100%;border-collapse:collapse;font-size:.9em}.score-table th,.score-table td{padding:6px 10px;text-align:center;border-bottom:1px solid #2c3e50}.score-table th{color:var(--muted);font-weight:400}.score-label{text-align:left;color:var(--muted);font-size:.85em}.round-final td{font-weight:700}.total-row td{font-size:1.1em;font-weight:700;background:#0003}.winner-score{color:var(--success)}.leader-score{color:var(--accent)}.row-informational td{opacity:.45;font-style:italic}.team-names-row{display:flex;justify-content:space-between;width:100%;font-size:.8em;color:var(--muted);padding:0 10px}.game-over-section{text-align:center}.game-over-section h3{font-size:1.3em;color:var(--accent)}.game-over-section p{color:var(--success);font-size:1.05em;margin-top:4px}.ta-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 2px 4px}.ta-mode-label{font-size:.72em;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}.ta-btn{font-size:.78em;font-weight:700;padding:4px 12px;border-radius:6px;cursor:pointer;border:none}.ta-btn-pri{background:var(--accent);color:#000}.ta-btn-sec{background:#ffffff1a;color:var(--text);border:1px solid rgba(255,255,255,.2)}.ta-btn:disabled{opacity:.35;cursor:default}.ta-nav{display:flex;gap:8px;width:100%;padding:4px 2px 0;justify-content:flex-end}.ta-nav.ta-nav-replay{justify-content:stretch}.ta-nav.ta-nav-replay .ta-btn{flex:1}.ta-btn-replay{padding:4px 24px}.ta-card{background:var(--card-bg);color:var(--black);border:2px solid var(--card-border);border-radius:6px;min-width:34px;padding:3px 5px;display:flex;flex-direction:column;align-items:center;gap:1px}.ta-card.red{color:var(--red)}.ta-card.ta-win{border-color:#f0a500;box-shadow:0 0 8px #f0a50073}.ta-cf{font-size:.92em;font-weight:800;letter-spacing:.02em}.ta-lead{font-size:.55em;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.06em;line-height:1}.ta-card-empty{min-width:34px;min-height:42px}.ta-trick-info{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;margin:4px 2px}.ta-winner-badge{font-size:.68em;font-weight:700;padding:2px 7px;border-radius:8px;white-space:nowrap}.twb-team0{background:#7ec8e32e;color:#7ec8e3;border:1px solid #7ec8e3}.twb-team1{background:#f4a2612e;color:#f4a261;border:1px solid #f4a261}.ta-pts{font-size:.68em;font-weight:600;color:var(--text)}.ta-ddd{font-size:.6em;color:var(--muted)}.ta-cumul{font-size:.7em;display:flex;align-items:center;gap:3px}.rcu-t0{color:#7ec8e3}.rcu-t1{color:#f4a261}.rcu-sep{color:var(--muted)}.atv-wrap{width:100%;max-width:440px;display:flex;flex-direction:column;gap:8px}.atv-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:4px}.atv-title{font-size:.72em;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.atv-trick{background:var(--ui-card);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:6px}.atv-trick-hdr{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.atv-trick-num{font-size:.72em;font-weight:700;color:var(--muted);min-width:36px}.atv-pts{font-size:.68em;color:var(--text)}.atv-cumul{margin-left:auto;font-size:.7em;display:flex;align-items:center;gap:3px}.atv-cards{display:flex;gap:6px;justify-content:space-around}.atv-card-slot{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1}.atv-pname{font-size:.6em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70px}.ar-first-badge{font-size:.62em;font-weight:700;color:var(--accent);letter-spacing:.04em;text-transform:uppercase;margin-bottom:1px}.pause-banner{position:fixed;top:50px;left:50%;transform:translate(-50%);z-index:200;background:#000000d9;color:#f0a500;padding:10px 20px;border-radius:var(--radius);font-size:.9em;text-align:center;max-width:90vw;border:1px solid #f0a500}.score-bars{display:flex;flex-direction:column;gap:2px;flex-shrink:0}.total-score-bar{display:flex;align-items:center;justify-content:center;gap:8px;background:#00000047;border-radius:var(--radius);padding:4px 10px;font-size:.85em}.tsb-item{white-space:nowrap}.tsb-target{color:var(--muted);font-size:.8em}.team0-col strong{color:#7ec8e3}.team1-col strong{color:#f4a261}.team0-col{color:#7ec8e3}.team1-col{color:#f4a261}.live-score-bar{display:flex;align-items:center;justify-content:center;gap:6px;background:#0000002e;border-radius:var(--radius);padding:3px 10px;font-size:.82em}.lsb-label,.lsb-sep{color:var(--muted)}.player-seat{transition:opacity .25s}.active-player{background:#f0a5001f;border:2px solid var(--accent);border-radius:8px;padding:4px 6px;box-shadow:0 0 14px #f0a50073}.active-player .player-name{color:var(--accent);font-weight:700}.seat-dimmed{opacity:.45}.hand-my-turn{border-top:2px solid var(--success);box-shadow:0 -4px 16px #3dbb6a40}.your-turn-banner{text-align:center;font-weight:700;font-size:.88em;color:var(--success);letter-spacing:.5px;padding:2px 0 4px;animation:turn-pulse 1.1s ease-in-out infinite}@keyframes turn-pulse{0%,to{opacity:1}50%{opacity:.55}}.trick-fly-top{animation:fly-top .42s ease-in forwards}.trick-fly-bottom{animation:fly-bottom .42s ease-in forwards}.trick-fly-left{animation:fly-left .42s ease-in forwards}.trick-fly-right{animation:fly-right .42s ease-in forwards}@keyframes fly-top{to{transform:translateY(-90px);opacity:0}}@keyframes fly-bottom{to{transform:translateY(90px);opacity:0}}@keyframes fly-left{to{transform:translate(-90px);opacity:0}}@keyframes fly-right{to{transform:translate(90px);opacity:0}}.trick-winner-card{border:2px solid var(--success)!important;box-shadow:0 0 8px #3dbb6a99}.trick-result-label{font-size:.85em;font-weight:700;color:var(--success);text-align:center;padding:2px 0;animation:fade-in .2s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.last-trick-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:300;display:flex;align-items:center;justify-content:center}.last-trick-panel{background:var(--ui-card);border-radius:12px;padding:18px 16px 14px;display:flex;flex-direction:column;align-items:center;gap:14px;min-width:230px;box-shadow:0 8px 32px #00000080}.last-trick-header{display:flex;align-items:center;justify-content:space-between;width:100%}.last-trick-title{font-weight:700;font-size:1em}.btn-close{background:none;color:var(--muted);font-size:1.1em;padding:6px 12px;border-radius:4px;min-height:36px}.btn-close:hover{color:var(--text);background:#ffffff1a}.last-trick-winner-label{font-size:.85em;color:var(--success);text-align:center}.btn-last-trick{background:#0000004d;color:var(--muted);font-size:.75em;padding:6px 12px;border-radius:var(--radius);border:1px solid rgba(255,255,255,.1);min-height:34px}.btn-last-trick:hover{color:var(--text);background:#00000080}.play-center{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%}.hand-toolbar{display:flex;align-items:center;justify-content:center;gap:8px;padding:0 4px 2px;flex-wrap:wrap}.btn-sort{background:#0000004d;color:var(--muted);font-size:.75em;padding:6px 12px;border-radius:var(--radius);border:1px solid rgba(255,255,255,.12);min-height:34px}.btn-sort:hover{color:var(--text)}.btn-sort.sort-on{color:var(--accent);border-color:var(--accent);background:#f0a5001a}.btn-sort.sort-red{color:var(--red);border-color:var(--red);background:#d232321a}.my-hand-manual{touch-action:none;-webkit-user-select:none;user-select:none}.card-dragging{transition:none;box-shadow:0 12px 26px #00000080,0 0 0 2px var(--accent)}.bid-action-chip{font-size:.62em;font-weight:700;padding:1px 5px;border-radius:3px;white-space:nowrap;text-align:center;line-height:1.5}.chip-pass{background:#7a9ab033;color:var(--muted)}.chip-bid{background:#f0a5002e;color:var(--accent)}.chip-coinche{background:#8b1a1a73;color:#f88}.chip-surc{background:#5a0a8a73;color:#c8f}.bid-stack{display:flex;flex-direction:column;align-items:center;gap:1px;max-width:100%}.bsi{display:block;border-radius:3px;white-space:nowrap;line-height:1.3;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis}.bsi.bsi-current{font-size:1em;font-weight:800;padding:3px 7px;background:#0000006b;border-radius:5px;letter-spacing:.01em}.bsi.bsi-older{font-size:.55em;color:#ffffff47;padding:0 3px;font-weight:500}.bsi.bsi-current.bsi-bid{color:var(--accent)}.bsi.bsi-current.bsi-bid.bsi-red{color:var(--red)}.bsi.bsi-current.bsi-pass{color:#ffffff61;font-weight:500;font-size:.7em}.bsi.bsi-current.bsi-coinche{color:#f88}.bsi.bsi-current.bsi-surcoinche{color:#c8f}.admin-panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:400;display:flex;align-items:center;justify-content:center}.admin-panel{background:var(--ui-card);border-radius:12px;padding:18px 16px 14px;display:flex;flex-direction:column;gap:12px;min-width:260px;max-width:92vw;box-shadow:0 8px 32px #00000080}.admin-panel-header{display:flex;align-items:center;justify-content:space-between}.admin-panel-title{font-weight:700;font-size:1em}.admin-panel-list{display:flex;flex-direction:column;gap:8px}.admin-player-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 8px;background:#0000002e;border-radius:var(--radius)}.admin-player-info{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.admin-player-name{font-size:.9em;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-player-name.disconnected{opacity:.55}.admin-player-meta{font-size:.72em;color:var(--muted)}.admin-badge{display:inline-block;font-size:.68em;font-weight:700;background:#f0a50033;color:var(--accent);border-radius:3px;padding:0 4px;margin-left:5px;vertical-align:middle}.btn-remove-admin{flex-shrink:0;background:#8b1a1a59;color:#f88;font-size:.75em;padding:4px 10px;border-radius:4px;border:1px solid rgba(224,80,80,.3);white-space:nowrap;min-height:28px}.btn-remove-admin:hover{background:#8b1a1a99;color:#faa}.btn-manage{background:#0000004d;color:var(--muted);font-size:.75em;padding:6px 12px;border-radius:var(--radius);border:1px solid rgba(255,255,255,.12);min-height:34px}.btn-manage:hover{color:var(--text);background:#00000080}.btn-manage-lobby{font-size:.9em;padding:10px 20px;min-height:auto}.settings-modal{background:var(--ui-card);border-radius:12px;padding:16px 16px 18px;display:flex;flex-direction:column;gap:10px;width:340px;max-width:92vw;box-shadow:0 8px 32px #00000080}.settings-header{display:flex;align-items:center;justify-content:space-between}.settings-title{font-weight:700;font-size:1.05em;color:var(--text)}.settings-section{font-size:.72em;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-top:2px}.settings-divider{height:1px;background:#ffffff14;margin:4px 0}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:6px 10px;background:#0000002e;border-radius:var(--radius)}.settings-row-label{font-size:.95em;color:var(--text)}.pref-row .pref-text{display:flex;flex-direction:column;gap:2px;min-width:0}.pref-subtitle{font-size:.78em;color:var(--muted)}.seg-toggle{display:inline-flex;background:#0000004d;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius);overflow:hidden}.seg-opt{background:none;border:none;color:var(--muted);font-size:.82em;font-weight:600;padding:6px 14px;cursor:pointer}.seg-opt.active{background:var(--accent);color:#1e2a38}.seg-opt:not(.active):hover{background:#ffffff12;color:var(--text)}.pref-switch{position:relative;flex-shrink:0;width:46px;height:26px;border-radius:13px;border:none;background:#ffffff2e;cursor:pointer;transition:background .15s ease;padding:0}.pref-switch.on{background:#1f9e8a}.pref-switch-knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0006;transition:transform .15s ease}.pref-switch.on .pref-switch-knob{transform:translate(20px)}.settings-action{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:46px;padding:6px 12px;font-size:.95em;color:var(--text);background:#0000002e;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);cursor:pointer}.settings-action:hover{background:#00000052}.settings-chevron{color:var(--muted);font-size:1.2em;line-height:1}.settings-action.danger{justify-content:center;color:#ff8080;background:#8b1a1a38;border-color:#c116}.settings-action.danger:hover{background:#8b1a1a6b;color:#faa}.btn-undo{background:#503c1459;color:#d4a84b;font-size:.75em;padding:6px 12px;border-radius:var(--radius);border:1px solid rgba(212,168,75,.25);min-height:34px}.btn-undo:hover:not(:disabled){background:#503c1499;color:#f0c96a}.btn-undo:disabled{opacity:.35;cursor:default}.btn-remove-player{background:none;color:#e05050;font-size:.68em;padding:1px 5px;border-radius:3px;border:1px solid rgba(224,80,80,.3);line-height:1.4}.btn-remove-player:hover{background:#8b1a1a66;color:#ff8080}.pending-joins-panel{position:fixed;top:52px;left:50%;transform:translate(-50%);z-index:250;display:flex;flex-direction:column;align-items:center;gap:6px;background:#0f1e30f2;border:1px solid var(--accent);border-radius:var(--radius);padding:8px 14px;max-width:90vw;box-shadow:0 4px 16px #00000080}.pjp-label{font-size:.82em;color:var(--accent);font-weight:700;white-space:nowrap}.pjp-request{display:flex;align-items:center;gap:10px}.pjp-name{font-size:.88em}.btn-accept{background:var(--success);color:#111;font-weight:700;font-size:.75em;padding:4px 10px;border-radius:4px;min-height:28px}.btn-accept:hover{opacity:.85}.btn-leave{background:#0000004d;color:#e05050;font-size:.75em;padding:6px 12px;border-radius:var(--radius);border:1px solid rgba(224,80,80,.3);min-height:34px}.btn-leave:hover{background:#8b1a1a66;color:#ff8080}@media (min-width: 480px){:root{--card-w: 48px;--card-h: 70px}.card{font-size:.95em}}@media (max-height: 500px){:root{--card-w: 36px;--card-h: 44px}.app-header{padding:2px 8px;gap:2px}.header-user,.score-target{display:none}.game-board{display:grid;grid-template-areas:"scores scores scores" "left   center right " "hand   hand   hand  ";grid-template-rows:auto 1fr auto;grid-template-columns:40px 1fr 40px;gap:2px;padding:2px}.score-bars{grid-area:scores}.board-top{display:none}.board-middle{display:contents}.board-left{grid-area:left;display:flex;flex-direction:column;align-items:center;justify-content:center;width:auto}.board-center{grid-area:center;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;gap:4px;padding-top:0}.board-right{grid-area:right;display:flex;flex-direction:column;align-items:center;justify-content:center;width:auto}.board-middle{border-radius:0;background:none}.board-hand{grid-area:hand}.total-score-bar{padding:2px 8px;font-size:.78em}.live-score-bar{display:none}.player-name{max-width:38px;font-size:.65em}.card-back.card-small{width:12px;height:18px}.hand-chip{padding:0 3px;gap:2px}.mini-back{width:9px;height:13px;margin-left:-4px}.hand-chip-count{font-size:.62em}.trick-display{gap:2px}.bid-focal{padding:4px 8px}.bid-focal-value{font-size:1.3em}.bid-focal-suit{font-size:1.1em}.bid-whose-turn{font-size:.75em}.bsi.bsi-current{font-size:.88em;padding:2px 5px}.bsi.bsi-older{font-size:.5em}.bidding-panel{padding:2px 0;gap:3px}.bid-values,.bid-values-row{gap:3px}.bid-val-btn{min-height:22px;padding:2px 1px;font-size:.75em}.suit-chips{gap:3px}.suit-btn{width:26px;height:26px;font-size:.95em}.bid-action-row{gap:4px}.btn-annoncer,.btn-passer,.btn-coinche-outline,.btn-surcoinche-outline{padding:3px 6px;font-size:.8em;min-height:26px}.board-hand{padding:2px 4px max(2px,env(safe-area-inset-bottom))}.your-turn-banner,.player-avatar,.self-player-bar{display:none}.my-hand{padding:2px 0 0;height:calc(var(--card-h) * var(--hand-card-scale) + 30px)}.hand-toolbar{padding:1px 2px;gap:4px}.btn-sort{padding:2px 8px;min-height:24px}.last-trick-widget{padding:3px 8px;font-size:.7em}}.belote-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200}.belote-prompt{background:var(--ui-card);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:20px 24px;display:flex;flex-direction:column;align-items:center;gap:14px;min-width:220px;max-width:320px;width:90vw}.belote-prompt-q{font-size:1em;font-weight:700;color:var(--text);text-align:center;margin:0}.belote-prompt-card{font-size:1.6em;font-weight:800;letter-spacing:.04em}.belote-prompt-card .red{color:var(--red)}.belote-prompt-btns{display:flex;gap:10px;width:100%}.belote-btn{flex:1;padding:10px 0;border-radius:var(--radius);font-size:1em;font-weight:700;cursor:pointer;border:none}.belote-yes{background:var(--accent);color:#1a1a1a}.belote-yes:hover{opacity:.85}.belote-no{background:#2c3e50;color:var(--text)}.belote-no:hover{background:#3a4f65}.belote-announce{font-size:1.1em;font-weight:800;padding:5px 18px;border-radius:20px;letter-spacing:.04em;animation:belote-pop .25s ease-out}.ba-belote{background:#f0a5002e;color:var(--accent);border:1px solid var(--accent)}.ba-rebelote{background:#f0a50047;color:#ffe066;border:1px solid #ffe066}@keyframes belote-pop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.scc-status{text-align:center;font-size:1em;font-weight:600;color:#ffffffe6;background:#00000059;border-radius:10px;padding:10px 16px;max-width:200px}.scc-announce{font-size:1.25em;font-weight:800;border-radius:12px;padding:10px 22px;text-align:center;max-width:240px;animation:belote-pop .22s ease-out}.scc-yes{background:#1e6432d9;color:#6ee89a;border:1px solid #3dbb6a}.scc-no{background:#641a1ad9;color:#ff9090;border:1px solid #c04040}.deal-controls{display:flex;justify-content:center;gap:12px;padding:6px 0 4px;width:100%}.shuffle-cut-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:0 20px;flex:1}.scp-phase-label{font-size:1.3em;font-weight:600;text-align:center}.scp-actions{display:flex;gap:12px}.scp-btn{min-width:130px;padding:15px 28px;font-size:1.05em;font-weight:700;border-radius:8px;cursor:pointer;border:none}.scp-btn-pri{background:var(--accent);color:#000}.scp-btn-sec{background:#ffffff1a;color:var(--text);border:1px solid rgba(255,255,255,.2)}.scp-cut-zone{display:flex;flex-direction:column;align-items:center;gap:8px}.scp-cut-label{font-size:.95em;color:var(--muted)}.scp-cut-selected{font-size:1.8em;font-weight:700;color:var(--accent)}.scp-wait-indicator .scp-spinner-icon{font-size:2em;color:var(--muted)}.cut-drum-wrap{position:relative;width:100px;height:192px;background:#0006;border-radius:12px;overflow:hidden}.cut-drum{height:100%;overflow-y:scroll;scroll-snap-type:y mandatory;scrollbar-width:none}.cut-drum::-webkit-scrollbar{display:none}.cut-drum-pad{height:64px}.cut-drum-item{height:64px;display:flex;align-items:center;justify-content:center;font-size:1.5em;font-weight:600;scroll-snap-align:center;color:var(--muted)}.cut-drum-center-bar{position:absolute;top:64px;left:0;right:0;height:64px;border-top:2px solid var(--accent);border-bottom:2px solid var(--accent);background:#f0a50014;pointer-events:none;z-index:2}.cut-drum-overlay{position:absolute;left:0;right:0;height:64px;pointer-events:none;z-index:1}.cut-drum-overlay.top{top:0;background:linear-gradient(to bottom,rgba(20,20,30,.9),transparent)}.cut-drum-overlay.bot{bottom:0;background:linear-gradient(to top,rgba(20,20,30,.9),transparent)}.training-completion{min-height:100vh;padding:20px 14px;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto}.training-completion-card{width:100%;max-width:520px;padding:22px 22px 20px;background:var(--ui-card);border-radius:10px;box-shadow:0 8px 24px #00000059}.tc-title-row h1{font-size:1.2em;font-weight:700;margin-bottom:18px}.tc-section{margin-bottom:16px}.tc-section-label{font-size:.7em;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:6px}.tc-action{font-size:1.3em;font-weight:600;color:var(--text)}.tc-action.tc-red{color:var(--accent2)}.tc-tag-row{display:flex;flex-wrap:wrap;gap:6px}.tc-tag{display:inline-flex;padding:5px 11px;border-radius:999px;background:var(--accent);color:#1a1a1a;font-size:.85em;font-weight:600}.tc-note{padding:10px 12px;background:var(--ui-bg);border-radius:var(--radius);color:var(--text);font-size:.95em;line-height:1.4;white-space:pre-wrap}.tc-empty{color:var(--muted);font-style:italic;font-size:.9em}.tc-actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}.tc-actions .btn-primary,.tc-actions .btn-secondary{flex:1 1 auto;min-width:140px}.card-selector{margin-top:16px;padding:12px;border-top:2px solid var(--accent);display:flex;flex-direction:column;gap:10px}.cs-heading{font-weight:600;color:var(--accent);font-size:1em}.cs-hint{font-size:.85em;color:var(--muted);line-height:1.4}.cs-cards{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0}.cs-card{flex:0 0 auto;min-width:44px;min-height:56px;padding:8px 6px;border:1.5px solid rgba(255,255,255,.18);border-radius:6px;background:var(--card-bg);color:var(--black);font:inherit;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:transform .08s ease,border-color .12s ease,box-shadow .12s ease}.cs-card.cs-card-red{color:var(--red)}.cs-card:hover{border-color:#fff6}.cs-card-on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent);transform:scale(1.05)}.cs-card-value{font-size:.95em}.cs-card-suit{font-size:1.1em;line-height:1}.cs-count{font-size:.85em;color:var(--muted)}.cs-actions{display:flex;gap:8px;flex-wrap:wrap}.cs-actions .btn-primary,.cs-actions .btn-secondary{flex:1 1 140px}.completion-summary-recap{width:100%;margin:0 0 16px;overflow-x:auto}.completion-summary-recap .auction-recap{max-width:none;margin:0 auto}.claude-conversation{margin-top:16px;padding:12px;border-top:2px solid var(--accent);display:flex;flex-direction:column;gap:8px}.claude-conversation-header{display:flex;justify-content:space-between;align-items:center;font-weight:600;color:var(--accent);margin-bottom:8px}.claude-end-btn{font-size:.85em;font-weight:500}.claude-messages{display:flex;flex-direction:column;gap:8px;max-height:50vh;overflow-y:auto;padding-right:4px}.claude-message{padding:8px 12px;border-radius:10px;max-width:85%;display:flex;flex-direction:column;gap:2px;white-space:pre-wrap;word-break:break-word}.claude-message.from-claude{background:#6496ff2e;align-self:flex-start}.claude-message.from-user{background:#64dc822e;align-self:flex-end}.claude-message-author{font-size:.72em;font-weight:700;letter-spacing:.06em;opacity:.75}.claude-message-body{font-size:.95em;line-height:1.4}.claude-input{display:flex;gap:8px;margin-top:8px;align-items:stretch}.claude-input textarea{flex:1;min-height:56px;padding:8px 10px;font:inherit;border-radius:var(--radius);border:1px solid rgba(255,255,255,.12);background:var(--ui-bg);color:var(--text);resize:vertical}.claude-input textarea:focus{outline:2px solid var(--accent);border-color:transparent}.claude-input textarea:disabled{opacity:.6;cursor:not-allowed}.claude-send-btn{flex:0 0 auto;min-width:96px}.claude-loading{font-style:italic;opacity:.7;padding:6px 10px;font-size:.9em}.claude-error{color:var(--accent2);padding:8px 10px;background:#e050501f;border-radius:var(--radius);display:flex;flex-direction:column;gap:6px;font-size:.9em}.training-picker{flex:1;padding:16px;padding-bottom:max(16px,env(safe-area-inset-bottom));overflow-y:auto}.training-picker-inner{max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:14px}.training-picker-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px}.training-picker-title{font-size:1.5em;text-align:center;color:var(--accent);margin:0}.training-picker-subtitle{text-align:center;color:var(--muted);font-size:.9em;margin:0 0 6px}.training-section-heading{font-size:.78em;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:10px;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.08)}.training-resumable{background:#f0a50017;border:1px solid rgba(240,165,0,.38);border-radius:10px;padding:14px}.training-resumable-heading{font-size:.78em;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:700;margin-bottom:12px}.training-resumable-item{display:flex;gap:12px;align-items:flex-start;padding:12px;background:#00000047;border:1px solid rgba(240,165,0,.22);border-radius:var(--radius);margin-bottom:8px}.training-resumable-item:last-child{margin-bottom:0}.training-resumable-main{flex:1;min-width:0}.training-resumable-title{font-weight:600;color:var(--text);margin-bottom:4px}.training-resumable-sub{font-size:.9em;color:var(--muted);line-height:1.4;margin-bottom:4px}.training-resumable-action{color:var(--text);font-weight:600}.training-resumable-action-red{color:var(--accent2)}.training-resumable-meta{font-size:.78em;color:var(--muted)}.training-resumable-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0}.training-scenario-list{display:flex;flex-direction:column;gap:10px}.training-scenario-card{display:flex;gap:12px;align-items:center;padding:14px;background:var(--ui-card);border-radius:var(--radius);border:1px solid rgba(255,255,255,.06)}.training-scenario-main{flex:1;min-width:0}.training-scenario-title{font-weight:600;font-size:1.02em;color:var(--text);margin-bottom:6px;line-height:1.3}.training-scenario-description{font-size:.9em;color:var(--muted);line-height:1.45}.training-scenario-actions{flex-shrink:0}.training-scenarios-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.training-scenarios-count{font-size:.82em;color:var(--muted);letter-spacing:.04em}.training-completed-toggle-row{margin-top:14px;display:flex;justify-content:center}.training-completed-toggle{background:transparent;color:var(--muted);border:1px solid rgba(255,255,255,.14);border-radius:var(--radius);padding:7px 14px;font-size:.85em;transition:background .12s,color .12s,border-color .12s}.training-completed-toggle:hover{background:#ffffff0d;color:var(--text);border-color:#ffffff3d}.training-completed-section{margin-top:18px;padding-top:14px;border-top:1px dashed rgba(255,255,255,.08)}.training-completed-heading{font-size:.75em;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:10px}.training-scenario-exhausted{opacity:.62}.training-scenario-exhausted:hover{opacity:.85}.training-scenario-exhausted .training-scenario-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.training-scenario-badge{display:inline-block;font-size:.72em;letter-spacing:.1em;text-transform:uppercase;font-weight:700;padding:2px 7px;background:#ffffff14;color:var(--muted);border:1px solid rgba(255,255,255,.14);border-radius:999px;line-height:1.1}.training-scenario-alts{margin-top:6px;font-size:.82em;color:var(--muted);font-style:italic}@media (max-width: 480px){.training-resumable-item,.training-scenario-card{flex-direction:column;align-items:stretch}.training-resumable-actions{flex-direction:row}.training-resumable-actions .btn-primary,.training-resumable-actions .btn-secondary,.training-scenario-actions .btn-primary{flex:1;width:100%}}.btn-tag-play-error{background:transparent;color:var(--muted);border:1px solid rgba(255,255,255,.18);padding:7px 12px;border-radius:var(--radius);font-size:.88em;font-weight:600;transition:background .12s,color .12s,border-color .12s}.btn-tag-play-error:hover{background:#f0a50014;color:var(--accent);border-color:#f0a50066}.game-error-overlay-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000009e;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.game-error-overlay-card{background:var(--ui-card);border:1px solid rgba(240,165,0,.4);border-radius:var(--radius);padding:22px 22px 20px;max-width:560px;width:100%;max-height:calc(100vh - 32px);overflow-y:auto;box-shadow:0 14px 40px #0000006b}.game-error-overlay-heading{font-size:1.05em;font-weight:700;color:var(--accent);margin:0 0 14px}.game-error-overlay-trick-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.gerr-trick-pill{padding:6px 10px;border-radius:999px;background:#ffffff0f;color:var(--text);border:1px solid rgba(255,255,255,.12);font-size:.85em;font-weight:600;transition:background .12s,border-color .12s,color .12s}.gerr-trick-pill:hover{background:#ffffff1a}.gerr-trick-pill.on{background:#f0a5002e;border-color:#f0a5008c;color:var(--accent)}.gerr-trick-pill-inprogress{font-style:italic}.game-error-overlay-cards{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px;justify-content:flex-start}.gerr-card{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:82px;padding:10px 8px;background:#fff;color:#111;border:2px solid rgba(0,0,0,.12);border-radius:var(--radius);transition:border-color .12s,transform 80ms,box-shadow .12s}.gerr-card:hover{border-color:#f0a5008c}.gerr-card:active{transform:scale(.98)}.gerr-card-selected{border-color:var(--accent);box-shadow:0 0 0 2px #f0a50040}.gerr-card-red .gerr-card-face{color:#c0392b}.gerr-card-face{font-size:1.4em;font-weight:700;line-height:1;margin-bottom:6px}.gerr-card-seat{font-size:.75em;color:#555;font-weight:600;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gerr-card-empty{color:var(--muted);font-style:italic;padding:12px 0}.gerr-card-wrap{position:relative;display:inline-flex}.gerr-card-tagged{box-shadow:inset 0 0 0 2px #f0a50047}.gerr-card-badge{position:absolute;top:-6px;right:-6px;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#1a1a1a;border:2px solid var(--ui-card);border-radius:999px;font-size:.72em;line-height:1;font-weight:700;padding:0;cursor:help;box-shadow:0 2px 4px #00000059;transition:transform 80ms}.gerr-card-badge:hover{transform:scale(1.12)}.gerr-card-badge:active{transform:scale(.95)}.gerr-card-tooltip{position:absolute;top:calc(100% + 6px);left:0;right:auto;min-width:180px;max-width:280px;z-index:5;padding:8px 10px;background:#1a1a1a;color:#f1e8d8;border:1px solid rgba(240,165,0,.45);border-radius:6px;box-shadow:0 8px 20px #00000080;font-size:.8em;line-height:1.4;white-space:normal;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .12s,visibility .12s}.gerr-card-wrap:hover .gerr-card-tooltip,.gerr-card-wrap-pinned .gerr-card-tooltip{opacity:1;visibility:visible}.gerr-card-tooltip-item+.gerr-card-tooltip-item{margin-top:6px;padding-top:6px;border-top:1px solid rgba(240,165,0,.25)}.game-error-overlay-selected-label{margin:6px 0 12px;padding:8px 10px;background:#f0a50014;border-left:3px solid var(--accent);color:var(--text);font-size:.88em;line-height:1.4;border-radius:4px}.game-error-overlay-note{width:100%;box-sizing:border-box;padding:10px 12px;background:#ffffff0a;color:var(--text);border:1px solid rgba(255,255,255,.16);border-radius:var(--radius);font-size:.95em;font-family:inherit;line-height:1.45;resize:vertical;margin-bottom:14px}.game-error-overlay-note:focus{outline:none;border-color:#f0a50099}.game-error-overlay-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.gerr-save,.gerr-cancel{padding:10px 16px;border-radius:var(--radius);font-weight:700;font-size:.95em;transition:background .12s,transform 80ms,opacity .12s}.gerr-save{background:var(--accent);color:#1a1a1a}.gerr-save:hover:not(:disabled){background:#ffb821}.gerr-save:active:not(:disabled){transform:scale(.98)}.gerr-save:disabled{opacity:.45;cursor:not-allowed}.gerr-cancel{background:transparent;color:var(--text);border:1px solid rgba(255,255,255,.22)}.gerr-cancel:hover{background:#ffffff0f}.gerr-cancel:active{transform:scale(.98)}@media (max-width: 480px){.game-error-overlay-card{padding:16px 14px 14px}.gerr-card{min-width:72px;padding:8px 6px}.gerr-card-face{font-size:1.2em}}.btn-chat{position:relative;background:none;color:var(--muted);padding:2px 4px;display:inline-flex;align-items:center;cursor:pointer}.btn-chat:hover{color:var(--accent)}.chat-badge{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--accent2);color:#fff;font-size:.6em;font-weight:700;line-height:16px;text-align:center}.chat-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:450;display:flex;flex-direction:column;justify-content:flex-end;background:#00000059}.chat-sheet{width:100%;max-width:600px;margin:0 auto;background:var(--ui-card);border-top-left-radius:14px;border-top-right-radius:14px;box-shadow:0 -8px 32px #00000080;display:flex;flex-direction:column;max-height:70dvh;padding-bottom:var(--safe-bottom);animation:chat-slide-up .18s ease-out}@keyframes chat-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.chat-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 8px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.chat-sheet-title{font-weight:700;font-size:1.05em;color:var(--text)}.chat-message-list{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-height:120px}.chat-empty{color:var(--muted);font-size:.88em;text-align:center;margin:auto 0}.chat-msg{display:flex;flex-direction:column;gap:2px;max-width:80%;align-self:flex-start;padding:6px 10px;background:#00000038;border-radius:10px}.chat-msg-mine{align-self:flex-end;background:#f0a5002e}.chat-msg-author{font-size:.72em;font-weight:700;color:var(--muted)}.chat-msg-text{font-size:.92em;color:var(--text);word-break:break-word;white-space:pre-wrap}.chat-input-row{display:flex;gap:8px;padding:10px 14px;border-top:1px solid rgba(255,255,255,.08);flex-shrink:0}.chat-input{flex:1;min-width:0;padding:10px 12px;border-radius:var(--radius);background:#0000004d;color:var(--text);border:1px solid rgba(255,255,255,.12)}.chat-input::placeholder{color:var(--muted)}.chat-send-btn{background:var(--accent);color:#1a1a1a;font-weight:700;padding:0 16px;border-radius:var(--radius);white-space:nowrap}.chat-send-btn:hover{opacity:.88}.chat-bubble-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:95}.chat-bubble{position:absolute;pointer-events:auto;max-width:200px;display:flex;flex-direction:column;gap:1px;padding:6px 10px;background:#2a3a4d;border:1px solid rgba(255,255,255,.14);border-radius:12px;box-shadow:0 4px 14px #00000073;text-align:left;animation:chat-bubble-pop .16s ease-out}@keyframes chat-bubble-pop{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.chat-bubble-author{font-size:.68em;font-weight:700;color:var(--muted)}.chat-bubble-text{font-size:.84em;color:var(--text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.chat-bubble:after{content:"";position:absolute;width:10px;height:10px;background:#2a3a4d;border:1px solid rgba(255,255,255,.14);transform:rotate(45deg)}.chat-bubble-top{top:86px;left:50%;transform:translate(-50%);animation:chat-bubble-pop-top .16s ease-out}@keyframes chat-bubble-pop-top{0%{transform:translate(-50%) scale(.8);opacity:0}to{transform:translate(-50%) scale(1);opacity:1}}.chat-bubble-top:after{top:-6px;left:50%;margin-left:-5px;border-right:none;border-bottom:none}.chat-bubble-left{top:38%;left:8px}.chat-bubble-left:after{left:-6px;top:50%;margin-top:-5px;border-top:none;border-right:none}.chat-bubble-right{top:38%;right:8px}.chat-bubble-right:after{right:-6px;top:50%;margin-top:-5px;border-bottom:none;border-left:none}.throw-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:96;overflow:hidden}.throw-fly{position:absolute;transform:translate(0);opacity:1;will-change:transform,opacity;animation:throw-x var(--flight) cubic-bezier(.2,.6,.3,1) forwards,throw-fly-fade var(--flight) ease-in forwards}@keyframes throw-x{to{transform:translate(var(--dx),var(--dy))}}@keyframes throw-fly-fade{0%,80%{opacity:1}to{opacity:0}}.throw-fly-lift{animation:throw-lift var(--flight) cubic-bezier(.3,.1,.4,1) forwards}@keyframes throw-lift{0%{transform:translateY(0)}50%{transform:translateY(calc(-1 * var(--arc)))}to{transform:translateY(0)}}.throw-fly-squash{animation:throw-squash var(--flight) ease-in-out forwards}@keyframes throw-squash{0%{transform:scale(.7,1.25)}30%{transform:scale(1.15,.85)}60%{transform:scale(.95,1.05)}to{transform:scale(1)}}.throw-fly-spin{display:block;font-size:30px;line-height:1;transform:translate(-50%,-50%);animation:throw-spin var(--flight) linear forwards}@keyframes throw-spin{to{transform:translate(-50%,-50%) rotate(var(--spin))}}.throw-impact{position:absolute;transform:translate(-50%,-50%)}.throw-splat{position:absolute;left:50%;top:50%;width:66px;height:66px;transform:translate(-50%,-50%) scale(0);border-radius:50%;filter:blur(1px);opacity:0;animation:throw-splat-pop var(--impact) ease-out forwards;animation-delay:var(--flight)}@keyframes throw-splat-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.3)}28%{transform:translate(-50%,-50%) scale(.92)}45%{opacity:.95;transform:translate(-50%,-50%) scale(1.05)}70%{opacity:.85;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}.throw-splat-tomato{background:radial-gradient(circle,#e23b2e 0%,#c41e12 55%,transparent 72%)}.throw-splat-egg{background:radial-gradient(circle,#ffe07a 0%,#f5c542 55%,transparent 72%)}.throw-splat-cream{width:84px;height:84px;background:radial-gradient(circle,#fffdf5 0%,#f0e6cf 62%,transparent 76%)}.throw-splat-poop{background:radial-gradient(circle,#8a5a2b 0%,#5e3d1c 55%,transparent 72%)}.throw-splat-lemon{background:radial-gradient(circle,#fff27a 0%,#ffe024 52%,transparent 72%)}.throw-splat-watermelon{width:92px;height:92px;background:radial-gradient(circle,#ff7088 0%,#ef3e54 58%,transparent 76%)}.throw-splat-orange{background:radial-gradient(circle,#ffc266 0%,#ff9f1c 55%,transparent 72%)}.throw-splat-fish{background:radial-gradient(circle,#c6ebff 0%,#8fd3ff 55%,transparent 74%)}.throw-splat-banana{background:radial-gradient(circle,rgba(247,226,90,.45) 0%,transparent 70%)}.throw-splat-stars{background:transparent}.throw-splat-slap{width:74px;height:74px;background:radial-gradient(circle,rgba(255,90,90,.85) 0%,rgba(255,60,60,.5) 45%,transparent 70%)}.throw-splat-charge{width:120px;height:26px;border-radius:50%;filter:blur(2px);background:linear-gradient(90deg,transparent 0%,rgba(207,216,220,.85) 45%,#eceff1 55%,transparent 100%)}.throw-particle{position:absolute;left:50%;top:50%;width:9px;height:9px;border-radius:50%;background:var(--pcol);transform:translate(-50%,-50%);opacity:0;animation:throw-particle var(--impact) ease-out forwards;animation-delay:var(--flight)}@keyframes throw-particle{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}10%{opacity:1}55%{opacity:1;transform:translate(calc(-50% + var(--pdx)),calc(-50% + var(--pdy))) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--pdx) * 1.25),calc(-50% + var(--pdy) * 1.25 + 14px)) scale(.5)}}.throw-burst{position:absolute;left:50%;top:50%;transform:translate(-50%,-150%) scale(0);font-size:22px;line-height:1;opacity:0;animation:throw-burst var(--impact) ease-out forwards;animation-delay:var(--flight)}@keyframes throw-burst{0%{opacity:0;transform:translate(-50%,-120%) scale(.2)}20%{opacity:1;transform:translate(-50%,-160%) scale(1.1)}60%{opacity:1;transform:translate(-50%,-175%) scale(1)}to{opacity:0;transform:translate(-50%,-200%) scale(.9)}}.throw-impact-emoji{position:relative;display:block;font-size:26px;line-height:1;transform:translateY(2px) scale(0);opacity:1;animation:throw-impact-emoji var(--impact) ease-out forwards;animation-delay:var(--flight)}@keyframes throw-impact-emoji{0%{transform:translateY(2px) scale(0)}15%{transform:translateY(2px) scale(1.2) rotate(-8deg)}35%{transform:translateY(2px) scale(1) rotate(4deg)}80%{opacity:1;transform:translateY(2px) scale(1)}to{opacity:0;transform:translateY(10px) scale(.95)}}.throw-drip{position:absolute;left:50%;top:50%;width:14px;height:30px;border-radius:0 0 8px 8px;background:linear-gradient(var(--pcol),transparent);transform:translate(-50%,-10%) scaleY(0);transform-origin:top center;opacity:0;animation:throw-drip var(--impact) ease-in forwards;animation-delay:var(--flight)}@keyframes throw-drip{0%{opacity:0;transform:translate(-50%,-10%) scaleY(0)}18%{opacity:.9;transform:translate(-50%,6%) scaleY(1)}70%{opacity:.8;transform:translate(-50%,28%) scaleY(1.25)}to{opacity:0;transform:translate(-50%,48%) scaleY(1.4)}}.throw-stunned{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);font-size:26px;line-height:1;opacity:0;animation:throw-stunned var(--impact) ease-out forwards;animation-delay:var(--flight)}@keyframes throw-stunned{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}15%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}55%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:0;transform:translate(-50%,-50%) scale(1)}to{opacity:0}}.throw-callout{position:absolute;left:50%;top:50%;transform:translate(-50%,-240%) scale(0);font-weight:900;font-size:1.05rem;color:#fff;white-space:nowrap;letter-spacing:.3px;text-shadow:-2px -2px 0 #111,2px -2px 0 #111,-2px 2px 0 #111,2px 2px 0 #111,0 4px 8px rgba(0,0,0,.55);opacity:0;animation:throw-callout var(--impact) cubic-bezier(.2,1.6,.4,1) forwards;animation-delay:var(--flight)}@keyframes throw-callout{0%{opacity:0;transform:translate(-50%,-200%) scale(.2) rotate(-6deg)}18%{opacity:1;transform:translate(-50%,-262%) scale(1.18) rotate(3deg)}38%{transform:translate(-50%,-250%) scale(1) rotate(-2deg)}80%{opacity:1;transform:translate(-50%,-258%) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-300%) scale(1)}}.avatar.react-shake{animation:av-shake .6s cubic-bezier(.34,1.6,.5,1)}.avatar.react-slip{animation:av-slip .7s cubic-bezier(.34,1.56,.5,1)}.avatar.react-wobble{animation:av-wobble .7s cubic-bezier(.34,1.56,.5,1)}.avatar.react-recoil{animation:av-recoil .65s cubic-bezier(.34,1.7,.5,1)}.avatar.react-sour{animation:av-sour .7s cubic-bezier(.34,1.56,.5,1)}.avatar.react-knock{animation:av-knock .65s cubic-bezier(.34,1.7,.5,1)}.avatar.react-slap{animation:av-slap .65s cubic-bezier(.34,1.6,.5,1)}@keyframes av-shake{0%,to{transform:translate(0)}15%{transform:translate(-6px) rotate(-4deg)}35%{transform:translate(6px) rotate(4deg)}55%{transform:translate(-4px) rotate(-2deg)}75%{transform:translate(2px)}}@keyframes av-slip{0%{transform:rotate(0)}35%{transform:rotate(-24deg) translateY(4px)}70%{transform:rotate(10deg)}to{transform:rotate(0)}}@keyframes av-wobble{0%,to{transform:rotate(0)}25%{transform:rotate(-12deg) scale(1.08)}50%{transform:rotate(9deg) scale(.95)}75%{transform:rotate(-5deg) scale(1.02)}}@keyframes av-recoil{0%{transform:scale(1)}22%{transform:scale(.78) translateY(3px)}55%{transform:scale(1.12)}78%{transform:scale(.96)}to{transform:scale(1)}}@keyframes av-sour{0%,to{transform:scale(1)}25%{transform:scale(.78,1.12) rotate(-3deg)}45%{transform:scale(1.08,.9)}70%{transform:scale(.94,1.04)}}@keyframes av-knock{0%{transform:translate(0) rotate(0)}25%{transform:translate(10px) rotate(12deg)}55%{transform:translate(-6px) rotate(-7deg)}80%{transform:translate(3px) rotate(3deg)}to{transform:translate(0) rotate(0)}}@keyframes av-slap{0%{transform:translate(0) rotate(0)}20%{transform:translate(-12px) rotate(-14deg)}50%{transform:translate(8px) rotate(8deg)}80%{transform:translate(-3px) rotate(-3deg)}to{transform:translate(0)}}.btn-throw{background:#00000047;color:var(--text);border:1px solid rgba(255,255,255,.12);border-radius:10px;width:34px;height:34px;display:grid;place-items:center;cursor:pointer;font-size:20px;line-height:1;flex-shrink:0}.btn-throw:hover{background:#00000080}.btn-throw.active{border-color:var(--accent);box-shadow:0 0 0 2px #f0a50059}.self-player-bar .btn-throw{margin-left:auto}.throw-summary-bar{position:absolute;right:12px;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);z-index:60}.throw-tray{position:fixed;right:8px;bottom:96px;z-index:120;max-width:min(420px,calc(100vw - 16px));display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;padding:10px;background:var(--ui-card);border:1px solid rgba(255,255,255,.16);border-radius:14px;box-shadow:0 8px 28px #0000008c;animation:throw-tray-in .16s ease-out}@keyframes throw-tray-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.throw-tray-item{font-size:26px;width:46px;height:46px;border-radius:11px;background:#00000040;display:grid;place-items:center;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.throw-tray-item:hover{background:#00000073}.throw-tray-item.dragging{opacity:.35}.throw-ghost{position:fixed;z-index:130;font-size:34px;line-height:1;pointer-events:none;transform:translate(-50%,-50%) scale(1.1) rotate(-12deg);filter:drop-shadow(0 4px 6px rgba(0,0,0,.5))}.throw-drop-hover{outline:3px dashed var(--accent);outline-offset:3px;border-radius:12px}.throw-mock{padding:16px;display:flex;flex-direction:column;gap:12px}.throw-mock-label{font-size:.78em;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}.throw-mock-tray{display:flex;flex-wrap:wrap;gap:6px}.throw-mock-impacts{display:flex;flex-wrap:wrap;gap:14px}.throw-mock-cell{display:flex;flex-direction:column;align-items:center;gap:4px;width:92px}.throw-mock-name{font-size:.72em;color:var(--muted)}.throw-impact-frozen{position:relative;width:88px;height:88px;display:grid;place-items:center}.throw-impact-frozen .throw-splat,.throw-impact-frozen .throw-particle,.throw-impact-frozen .throw-burst,.throw-impact-frozen .throw-impact-emoji,.throw-impact-frozen .throw-drip,.throw-impact-frozen .throw-stunned,.throw-impact-frozen .throw-callout{animation:none!important;opacity:1!important}.throw-impact-frozen .throw-splat{transform:translate(-50%,-50%) scale(1)}.throw-impact-frozen .throw-particle{transform:translate(calc(-50% + var(--pdx)),calc(-50% + var(--pdy)))}.throw-impact-frozen .throw-burst{transform:translate(-50%,-160%) scale(1)}.throw-impact-frozen .throw-impact-emoji{transform:translateY(2px) scale(1)}.throw-impact-frozen .throw-drip{transform:translate(-50%,20%) scaleY(1.2)}.throw-impact-frozen .throw-stunned{transform:translate(-50%,-50%) scale(1)}.throw-impact-frozen .throw-callout{transform:translate(-50%,-250%) scale(1);font-size:.7rem}
