:root{--bg-dark: #0f1923;--bg-card: #1a2736;--bg-card-hover: #223344;--accent: #e8b931;--accent-glow: rgba(232, 185, 49, .25);--text: #e4e8ec;--text-muted: #8899aa;--danger: #e74c5e;--success: #2ecc71;--border: rgba(255, 255, 255, .08);--player-1: #5dade2;--player-2: #f39c12;--player-3: #e74c3c;--player-4: #2ecc71;--player-5: #9b59b6;--radius: 12px;--shadow: 0 4px 24px rgba(0, 0, 0, .3);font-family:Inter,sans-serif;line-height:1.5;color:var(--text);background-color:var(--bg-dark);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{min-width:320px;min-height:100vh;overflow-x:hidden;background-image:radial-gradient(ellipse at 20% 50%,rgba(232,185,49,.04) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(93,173,226,.04) 0%,transparent 50%)}h1,h2,h3,h4,h5,h6{margin:0;line-height:1.3}.player1{color:var(--player-1)}.player2{color:var(--player-2)}.player3{color:var(--player-3)}.player4{color:var(--player-4)}.player5{color:var(--player-5)}.dashboard{max-width:1600px;margin:0 auto;padding:20px 20px 40px;display:flex;flex-direction:column;overflow-x:hidden}.dashboard-body{display:grid;grid-template-columns:220px 1fr var(--hand-col-width, 420px);grid-template-rows:auto 1fr;gap:20px;align-items:start}.dashboard-sidebar{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px;grid-row:1 / -1;grid-column:1}.dashboard-main{min-width:0;display:flex;flex-direction:column;gap:20px;grid-row:1 / -1;grid-column:2}.dashboard-user{display:flex;align-items:center;justify-content:flex-end;gap:12px;font-size:.95rem;grid-column:3;grid-row:1}.dashboard-right{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px;grid-column:3;grid-row:2}.dashboard-hand{display:flex;flex-direction:column;gap:16px}.dashboard-hand .card-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:6px;justify-items:center}.dashboard-hand .img-carte{width:100%;max-width:100px}.dashboard-sidebar .panel{padding:16px}.author-note{font-size:.65rem;color:var(--text-muted);opacity:.5;text-align:center;margin-top:auto}.dashboard-title{font-family:Playfair Display,serif;font-size:1.5rem;background:linear-gradient(135deg,var(--accent),#f5d76e);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:2px;margin:0;text-align:center}.dashboard-user .username{font-weight:600;color:var(--player-1)}.panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;box-shadow:var(--shadow);transition:border-color .2s;position:relative}.panel:hover{border-color:#ffffff1f}.drag-handle{position:absolute;top:6px;right:6px;background:none;border:none;color:var(--text-muted);cursor:grab;font-size:1rem;line-height:1;padding:2px 4px;border-radius:4px;opacity:0;transition:opacity .15s;z-index:2}.drag-handle:active{cursor:grabbing}*:hover>.drag-handle{opacity:.6}.drag-handle:hover{opacity:1!important;background:#ffffff0f}.panel-info,.panel-danger,.panel-success{background:var(--bg-card)}.panel-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);margin-bottom:12px}.btn{padding:8px 20px;border:none;border-radius:8px;font-family:Inter,sans-serif;font-weight:600;font-size:.85rem;cursor:pointer;transition:all .2s ease}.btn-action{background:linear-gradient(135deg,var(--accent),#d4a017);color:#1a1a1a;border:none;border-radius:8px;padding:8px 20px;cursor:pointer;font-family:Inter,sans-serif;font-weight:600;font-size:.85rem;box-shadow:0 2px 12px var(--accent-glow);transition:all .2s ease}.btn-action:hover{transform:translateY(-1px);box-shadow:0 4px 20px var(--accent-glow)}.btn-action:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-logout{background:transparent;border:1px solid var(--text-muted);color:var(--text-muted);border-radius:8px;padding:8px 20px;cursor:pointer;font-family:Inter,sans-serif;font-weight:600;font-size:.85rem;transition:all .2s ease}.btn-logout:hover{border-color:var(--danger);color:var(--danger)}.btn-scores{background:#ffffff0f;border:1px solid var(--border);color:var(--text);padding:8px 16px;border-radius:8px;font-family:Inter,sans-serif;font-weight:600;font-size:.8rem;cursor:pointer;transition:all .2s ease;width:100%}.btn-scores:hover{background:#ffffff1a}.players-header-right{display:flex;align-items:center;gap:8px;margin-bottom:10px}.players-header-right .btn-scores{width:auto;flex:1;padding:6px 14px;font-size:.85rem;background:linear-gradient(135deg,var(--accent),#d4a017);color:#1a1a1a;border:none;font-weight:700;box-shadow:0 2px 12px var(--accent-glow)}.players-bar{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.start-game-bar{padding:8px 0;text-align:center}.player-count{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-weight:700;font-size:.9rem}.player-chip{display:inline-flex;align-items:center;justify-content:center;width:100%;box-sizing:border-box;padding:5px 12px;border-radius:20px;font-weight:600;font-size:.8rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.08)}.players-bar>.arrow{display:none}.player-row{display:flex;align-items:center;gap:6px;width:100%}.player-row .player-chip{flex:1}.player-row .arrow{display:none}.players-table{width:100%;border-collapse:collapse}.players-table th{font-size:.65rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:4px 8px 6px;text-align:left;border-bottom:1px solid var(--border)}.players-table th:last-child{text-align:right}.players-table td{padding:6px 8px;font-weight:600;font-size:.85rem;border-bottom:1px solid rgba(255,255,255,.04)}.players-table td.player-score{text-align:right;font-weight:700;min-width:28px}.players-table tr:last-child td{border-bottom:none}.player-score{font-weight:700;font-size:.8rem;flex-shrink:0;min-width:28px;text-align:right}.game-info-grid{display:flex;flex-direction:column;gap:10px}.game-info-grid.compact{gap:4px}.info-item{text-align:center;padding:10px;background:#ffffff08;border-radius:10px;border:1px solid var(--border)}.info-item .label{font-size:.65rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:4px}.info-item .value{font-weight:700;font-size:.9rem}.info-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.info-row .label{font-size:.65rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted)}.info-row .value{font-weight:700;font-size:.85rem}.bid-win{color:var(--accent)}.hand-section{text-align:center}.hand-info{display:flex;align-items:baseline;justify-content:center;gap:8px;margin-bottom:12px}.hand-count{font-size:2rem;font-weight:700;color:var(--accent);line-height:1}.hand-label{color:var(--text-muted);font-size:.85rem}.card-row{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.card-images{display:flex;flex-wrap:nowrap;gap:4px;justify-content:safe center;padding:4px 0;overflow-x:auto}.img-carte{width:90px;max-width:100%;border-radius:8px;box-shadow:0 4px 16px #0006;transition:transform .2s,box-shadow .2s;cursor:pointer}.img-carte:hover{transform:translateY(-8px) scale(1.05);box-shadow:0 8px 30px #e8b9314d}.card-hidden{opacity:.4;filter:grayscale(.3)}.card-hidden:hover{transform:none;box-shadow:0 4px 16px #0006;cursor:default}.trick-header{display:flex;justify-content:center;align-items:baseline;gap:8px;margin-bottom:16px}.trick-header .game-num,.trick-header .trick-num{font-size:1.5rem;font-weight:700;color:var(--accent)}.trick-header span{color:var(--text-muted);font-size:.9rem}.trick-table{display:grid;gap:12px;justify-items:center}.trick-slot{display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px 8px;min-width:0}.trick-slot:hover{opacity:.85}.trick-slot .player-name{font-weight:600;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.trick-slot .img-carte{width:80px;min-width:80px}.bids-grid{display:grid;gap:12px}.bid-slot{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 8px;background:#ffffff05;border-radius:10px;border:1px solid var(--border)}.bid-slot .player-name{font-weight:600;font-size:.85rem}.bid-slot .bid-value{font-weight:700;font-size:1rem;color:var(--accent)}.bid-slot .bid-waiting{color:var(--text-muted);font-size:.9rem}.action-panel{background:linear-gradient(135deg,#e74c5e1f,#e74c5e0a);border:1px solid rgba(231,76,94,.25);text-align:center}.action-panel h3{font-size:1rem;margin-bottom:14px;color:var(--text);font-weight:600}.action-row{display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap}.chien-exchange{display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap}.chien-card-list{display:grid;grid-template-columns:1fr 1fr;gap:4px;flex:1;min-width:220px}.chien-card-option{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:6px;cursor:pointer;color:var(--text);background:#ffffff08;border:1px solid var(--border);transition:all .15s;-webkit-user-select:none;user-select:none;font-size:.9rem}.chien-card-option:hover{background:#ffffff14}.chien-card-option.selected{background:#e8b93126;border-color:var(--accent);color:var(--accent)}.chien-card-check{width:18px;height:18px;border-radius:4px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0}.chien-card-option.selected .chien-card-check{background:var(--accent);border-color:var(--accent);color:var(--bg-dark);font-weight:700}.chien-actions{display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:8px}.select-card{padding:10px 16px;border-radius:8px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);font-family:Inter,sans-serif;font-size:.9rem;cursor:pointer;min-width:200px}.select-card:focus{outline:2px solid var(--accent);outline-offset:2px}select{padding:10px 16px;border-radius:8px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);font-family:Inter,sans-serif;font-size:.9rem;cursor:pointer;min-width:200px}select:focus{outline:2px solid var(--accent);outline-offset:2px}select[multiple]{min-width:300px;padding:4px}select option{background:var(--bg-card);color:var(--text)}.waiting-text{color:var(--text-muted);font-style:italic;margin-top:12px;font-size:.85rem}.text-win{color:var(--success)}.text-lose{color:var(--danger)}.text-bid-win{color:var(--accent)}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;max-width:720px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 8px 32px #00000080;color:var(--text)}.modal-content h5{text-align:center;font-size:1.15rem;margin-bottom:16px}.scores-modal{max-width:960px}.table-scores{width:100%;border-collapse:separate;border-spacing:0;text-align:center;border-radius:8px;overflow:hidden;border:1px solid var(--border)}.table-scores th{padding:10px 12px;font-weight:700;font-size:.9rem;text-transform:capitalize;border-bottom:2px solid var(--border);white-space:nowrap}.table-scores th.col-info{background:#ffffff0f;color:var(--text-muted);font-size:.8rem}.table-scores td{padding:8px 10px;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;transition:background .15s}.table-scores td.col-info{color:var(--text-muted);font-size:.85rem}.table-scores td.col-bid{text-transform:capitalize;color:var(--accent);font-weight:500}.table-scores .row-total td{border-top:2px solid var(--border);border-bottom:none;font-weight:700;font-size:1rem;padding:10px 12px}.table-scores tbody tr:hover td{filter:brightness(1.2)}.table-results{border-collapse:collapse;margin:16px auto}.table-results td{padding:6px 12px;text-align:left;vertical-align:top;color:var(--text)}.table-results td:nth-child(2){text-align:center;color:var(--text-muted)}.game-over-actions{display:flex;gap:12px;margin-top:16px;flex-wrap:wrap;justify-content:center}.toast-container{position:fixed;top:16px;right:16px;z-index:2000;display:flex;flex-direction:column;gap:8px;max-width:420px}.toast{background:var(--bg-card);color:var(--text);padding:12px 16px;border-radius:var(--radius);border:1px solid var(--border);cursor:pointer;box-shadow:0 4px 16px #0006;font-size:.9rem;line-height:1.4;animation:toast-slide-in .25s ease-out}.toast:hover{background:var(--bg-card-hover)}@keyframes toast-slide-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.auth-loading{display:flex;align-items:center;justify-content:center;min-height:60vh;font-size:1.1rem;color:var(--text-muted)}.auth-error{max-width:500px;margin:80px auto;text-align:center}.auth-error p{color:var(--danger);margin-bottom:16px}.connection-error{max-width:500px;margin:40px auto;padding:24px;text-align:center;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text)}.connection-error p{color:var(--danger);margin-bottom:16px}.scores-btn-wrapper{margin-left:auto}@media(max-width:1200px){.dashboard-body{grid-template-columns:1fr var(--hand-col-width, 420px);grid-template-rows:auto 1fr}.dashboard-sidebar{display:none}.dashboard-main{grid-column:1;grid-row:1 / -1}.dashboard-user{grid-column:2;grid-row:1}.dashboard-right{grid-column:2;grid-row:2}}@media(max-width:1000px){.dashboard-body{grid-template-columns:1fr;grid-template-rows:auto auto auto}.dashboard-user{grid-column:1;grid-row:1;justify-content:flex-end}.dashboard-main{grid-column:1;grid-row:2}.dashboard-right{grid-column:1;grid-row:3;position:static}}@media(max-width:700px){.dashboard-title{font-size:1.2rem}.dashboard{padding:0 12px 32px}.scores-btn-wrapper{margin-left:0;margin-top:8px}.modal-content{padding:16px;width:95%}.game-over-actions{flex-direction:column}}.chat-panel{display:flex;flex-direction:column;padding:12px 14px;flex-shrink:1;min-height:0;overflow:hidden}.chat-messages{max-height:150px;min-height:60px;flex:1 1 auto;overflow-y:auto;display:flex;flex-direction:column;gap:6px;margin-bottom:10px;padding-right:4px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent}.chat-messages::-webkit-scrollbar{width:5px}.chat-messages::-webkit-scrollbar-track{background:transparent}.chat-messages::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}.chat-empty{color:var(--text-muted);font-style:italic;font-size:.8rem;text-align:center;padding:16px 0}.chat-msg{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px;font-size:.8rem;line-height:1.4}.chat-author{font-weight:700;font-size:.75rem;flex-shrink:0}.chat-text{color:var(--text);word-break:break-word}.chat-time{color:var(--text-muted);font-size:.65rem;margin-left:auto;flex-shrink:0}.chat-input-row{display:flex;gap:6px}.chat-input{flex:1;padding:6px 10px;border-radius:8px;border:1px solid var(--border);background:#ffffff0a;color:var(--text);font-family:Inter,sans-serif;font-size:.8rem;outline:none;transition:border-color .2s}.chat-input:focus{border-color:var(--accent)}.chat-input::placeholder{color:var(--text-muted)}.chat-send{padding:6px 10px;font-size:.85rem;min-width:36px}@media(min-height:900px){.chat-messages{max-height:350px}}@media(min-height:1200px){.chat-messages{max-height:500px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
