:root{--bg: #0f1419;--surface: #1a2332;--border: #2d3a4f;--text: #e8edf5;--muted: #94a3b8;--accent: #3b82f6;--accent-hover: #2563eb;--success: #22c55e;--error: #ef4444;font-family:Segoe UI,system-ui,sans-serif;line-height:1.5;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.site-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 2rem;border-bottom:1px solid var(--border);background:var(--surface)}.site-header nav{display:flex;gap:1.25rem}.logo{font-weight:700;font-size:1.1rem;color:var(--text);text-decoration:none}main{max-width:960px;margin:0 auto;padding:2rem 1.5rem}.page h1{margin-top:0}.page.narrow{max-width:420px}.lead{color:var(--muted);font-size:1.1rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin-top:1.5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.25rem}.btn{display:inline-block;margin-top:.75rem;padding:.5rem 1rem;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.95rem}.btn:hover{background:var(--accent-hover);text-decoration:none}.btn.secondary{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-sm{padding:.25rem .6rem;font-size:.85rem;margin-top:0}.btn:disabled{opacity:.5;cursor:not-allowed}.admin-page .admin-entries-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:.75rem}.admin-entries-actions{display:flex;gap:.5rem;flex-wrap:wrap}.admin-entry--disabled{opacity:.55}.admin-entry--disabled td{color:var(--muted, #888)}.admin-checkbox{flex-direction:row!important;align-items:center;gap:.5rem!important}.admin-results,.tournament-progress{margin-top:1.5rem}.progress-bar{height:10px;background:var(--bg);border-radius:999px;overflow:hidden;border:1px solid var(--border)}.progress-bar-fill{height:100%;background:var(--accent);transition:width .35s ease}.progress-label{margin:.5rem 0 0;font-weight:600}.progress-current{margin-top:.35rem}.admin-results h2{margin-top:0}.admin-results-subtitle{margin:1.25rem 0 .75rem;font-size:1rem;font-weight:600;color:var(--muted)}.admin-results-subtitle:first-of-type{margin-top:.5rem}.admin-match-details{margin-top:1.25rem}.admin-match-details summary{cursor:pointer;font-weight:600;margin-bottom:.5rem}.admin-past-tournaments-details summary{cursor:pointer;font-weight:600;font-size:1.25rem;margin-bottom:.75rem}.tournament-matrix-wrap{overflow-x:auto;margin-top:.5rem}.tournament-matrix{border-collapse:collapse;font-size:.85rem;min-width:min(100%,480px)}.tournament-matrix th,.tournament-matrix td{border:1px solid var(--border);padding:.45rem .55rem;text-align:center;vertical-align:middle}.tournament-matrix-corner{color:var(--muted);font-weight:500}.tournament-matrix-row-header{text-align:left;font-weight:600;white-space:nowrap;max-width:10rem;overflow:hidden;text-overflow:ellipsis}.tournament-matrix-col-header{font-weight:500;color:var(--muted);max-width:4.5rem}.tournament-matrix-col-header span{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);max-height:6rem;overflow:hidden;text-overflow:ellipsis}.tournament-matrix-cell{font-variant-numeric:tabular-nums}.tournament-matrix-diagonal{background:color-mix(in srgb,var(--border) 35%,transparent);color:var(--muted)}.tournament-matrix-win{background:color-mix(in srgb,#2ecc71 12%,transparent)}.tournament-matrix-loss{background:color-mix(in srgb,#e74c3c 8%,transparent)}.tournament-matrix-legend{margin-top:.65rem;margin-bottom:0}.dashboard-steps{margin:1rem 0 1.5rem;padding-left:1.25rem}.form label{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.form input[type=text],.form input:not([type]){padding:.5rem;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text)}.error{color:var(--error)}.status{margin-top:1rem;padding:.75rem;background:var(--surface);border-radius:6px}.mono{font-family:ui-monospace,monospace;font-size:.85rem;color:var(--muted)}.hint{color:var(--muted);font-size:.9rem}.leaderboard{width:100%;border-collapse:collapse;margin-top:1rem}.leaderboard th,.leaderboard td{padding:.6rem;text-align:left;border-bottom:1px solid var(--border)}.leaderboard th{color:var(--muted);font-weight:500}.replay-viewer{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.25rem}.replay-meta{display:flex;gap:1.5rem;color:var(--muted);font-size:.9rem;margin-bottom:1rem;flex-wrap:wrap}.hands-area{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.player-hand{flex:1;min-width:200px;padding:.75rem;background:var(--bg);border-radius:8px}.player-hand.active{outline:2px solid var(--accent)}.player-hand-header{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.5rem;font-size:.9rem;flex-wrap:wrap}.player-hand-scores{color:var(--muted);font-size:.85rem;white-space:nowrap}.hand-cards{margin:0}.hand-fallback{color:var(--muted);font-size:.85rem;margin:0;font-style:italic}.table-area{margin-bottom:1rem}.card-row{display:flex;gap:.35rem;flex-wrap:wrap;margin:.75rem 0;align-items:flex-end}.card-row--table{justify-content:center;min-height:86px}.card-chip{background:#fff;color:#111;padding:.35rem .6rem;border-radius:4px;font-weight:600;font-size:.85rem}.playing-card{position:relative;flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #cbd5e1;box-shadow:0 2px 6px #00000047;-webkit-user-select:none;user-select:none}.playing-card--md{width:56px;height:78px}.playing-card--sm{width:44px;height:62px}.playing-card--red{color:#dc2626}.playing-card--black{color:#111827}.playing-card--invalid{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .5rem;font-size:.75rem;color:#111}.playing-card__corner{position:absolute;display:flex;flex-direction:column;align-items:center;line-height:1;font-weight:700}.playing-card__corner--tl{top:4px;left:5px}.playing-card__corner--br{bottom:4px;right:5px;transform:rotate(180deg)}.playing-card--md .playing-card__rank{font-size:.72rem}.playing-card--md .playing-card__suit{font-size:.62rem;margin-top:1px}.playing-card--sm .playing-card__rank{font-size:.58rem}.playing-card--sm .playing-card__suit{font-size:.5rem;margin-top:1px}.playing-card__center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:1.45rem;line-height:1}.playing-card--sm .playing-card__center{font-size:1.1rem}.empty-table{color:var(--muted);font-style:italic}.table-info{display:flex;gap:1rem;flex-wrap:wrap;font-size:.9rem;color:var(--muted)}.badge{background:var(--accent);color:#fff;padding:.15rem .5rem;border-radius:4px;font-size:.8rem}.action-panel{padding:.75rem;background:var(--bg);border-radius:8px;margin-bottom:1rem}.controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.controls input[type=range]{flex:1;min-width:120px}.controls button{padding:.4rem .7rem;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;cursor:pointer}.result-bar{margin-top:1rem;font-size:.85rem;color:var(--muted)}.match-history{margin-top:1.5rem}.match-history-table-wrap{overflow-x:auto}.match-history-table{width:100%;border-collapse:collapse;margin-top:.75rem;font-size:.9rem}.match-history-table th,.match-history-table td{padding:.55rem .65rem;text-align:left;border-bottom:1px solid var(--border)}.match-history-table th{color:var(--muted);font-weight:500}.btn-sm{padding:.3rem .65rem;font-size:.85rem;margin-top:0}.match-outcome{font-weight:600}.match-outcome--victoire{color:var(--success)}.match-outcome--défaite{color:var(--error)}.match-outcome--terminé,.match-outcome--running,.match-outcome--queued,.match-outcome--failed{color:var(--muted)}.submission-list{margin-top:1.5rem}.submission-table-wrap{overflow-x:auto}.submission-table{width:100%;border-collapse:collapse;margin-top:.75rem;font-size:.9rem}.submission-table th,.submission-table td{padding:.55rem .65rem;text-align:left;border-bottom:1px solid var(--border)}.submission-table tr.selected{background:#3b82f614}.submission-status--active{color:var(--success);font-weight:600}.submission-status--rejected{color:var(--error)}.submission-reject{display:block;font-size:.8rem;margin-top:.15rem}.submission-pick{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer}.card.form label{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.75rem;font-size:.9rem}.card.form select{padding:.45rem;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text)}
