@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,600&display=swap');
:root { --ink:#142c2a; --muted:#61706b; --forest:#0e302c; --forest-2:#235448; --sand:#f7f5ee; --line:#dbe3dd; --gold:#c59345; --cream:#fffdf7; --white:#fff; --danger:#9f3e2a; --success:#276d48; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--sand); font:15px/1.5 'DM Sans',system-ui,-apple-system,sans-serif; }
button,input,select,textarea { font:inherit; }
button { cursor:pointer; }
button:disabled { cursor:not-allowed; opacity:.5; }
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible { outline:3px solid #cf9b47; outline-offset:3px; }
a { color:inherit; }
.site-header { background:var(--forest); color:white; border-bottom:1px solid #406052; }
.header-inner { max-width:1190px; margin:auto; padding:20px 26px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.brand { display:flex; gap:13px; align-items:center; text-decoration:none; }
.brand-mark { width:45px; height:45px; border:1px solid #7f9885; color:#e1bb79; display:grid; place-items:center; font-size:36px; line-height:1; border-radius:12px; }
.brand-copy { display:flex; flex-direction:column; gap:1px; }
.brand-copy strong { font-family:'Fraunces',Georgia,serif; font-size:20px; font-weight:600; }
.brand-copy small { font-size:11px; color:#bdd1c7; letter-spacing:.035em; }
.header-link { font-size:13px; color:#f1e4d0; text-decoration:none; border:1px solid #4f776b; border-radius:999px; padding:9px 16px; transition:background .2s; }
.header-link:hover { background:#2c564b; }
.container { max-width:1190px; margin:0 auto; padding:0 26px; }
.intro { display:grid; grid-template-columns:1.3fr .7fr; min-height:283px; align-items:center; gap:28px; padding:30px 0 22px; }
.eyebrow { display:flex; align-items:center; gap:9px; font-size:11px; font-weight:700; color:#607a66; letter-spacing:.18em; }
.eyebrow-dot { width:8px; height:8px; background:#b68b48; border-radius:100%; }
h1,h2,h3 { margin:0; }
h1 { margin:16px 0 14px; font:600 clamp(31px,4vw,47px)/1.13 'Fraunces',Georgia,serif; letter-spacing:-.035em; }
h1 em { font-weight:500; color:#46715e; }
.intro-copy p { max-width:640px; color:var(--muted); font-size:15px; margin:0; }
.intro-art { min-height:218px; position:relative; border-radius:20px; overflow:hidden; background-color:#dfd9c8; background-image:linear-gradient(135deg,transparent 50%,#d4ceb9 50%),linear-gradient(45deg,#e6dfcd 50%,#d6ceb9 50%); background-size:88px 88px; box-shadow:inset 0 0 0 1px #cecbbb; display:grid; place-items:center; }
.board-symbol { font-family:Georgia,serif; font-size:127px; line-height:1; color:#173e35; filter:drop-shadow(0 5px 1px #b2af9f); }
.board-symbol span { font-size:58px; color:#b18a53; position:absolute; transform:translate(-10px,94px); }
.intro-art-caption { position:absolute; right:18px; top:16px; font-size:10px; font-weight:700; letter-spacing:.16em; background:#fff9e8; padding:6px 9px; border-radius:5px; }
.mode-picker { display:grid; grid-template-columns:repeat(auto-fit,minmax(205px,1fr)); gap:12px; margin:0 0 14px; }
.mode-tab { border:1px solid var(--line); text-align:left; display:flex; align-items:center; gap:15px; padding:17px 20px; border-radius:14px; color:var(--ink); background:var(--white); transition:.18s ease; }
.mode-tab:hover { border-color:#83a493; transform:translateY(-1px); }
.mode-tab.is-active { background:var(--forest); color:white; border-color:var(--forest); box-shadow:0 6px 18px #13352c20; }
.tab-icon { border:1px solid currentColor; border-radius:12px; width:47px; height:47px; display:grid; place-items:center; font:37px/1 Georgia,serif; color:var(--gold); flex:none; }
.mode-tab strong,.mode-tab small { display:block; }
.mode-tab strong { font-size:15px; }
.mode-tab small { font-size:12px; margin-top:2px; opacity:.72; }
.app-shell { background:white; border:1px solid var(--line); border-radius:18px; box-shadow:0 8px 25px #2338300b; min-height:325px; overflow:hidden; }
.app-toolbar { display:flex; align-items:center; justify-content:space-between; gap:15px; padding:18px 22px; border-bottom:1px solid var(--line); background:#fbfcf9; }
.toolbar-left { display:flex; gap:12px; align-items:center; min-width:0; flex:1; }
.toolbar-label { font-size:12px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; white-space:nowrap; }
select, input, textarea { color:var(--ink); border:1px solid #cbd8cf; border-radius:9px; padding:10px 12px; background:white; min-width:0; }
select { max-width:100%; }
.tournament-select { width:310px; }
.toolbar-actions,.action-row { display:flex; gap:9px; flex-wrap:wrap; align-items:center; }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:10px 15px; border:1px solid #cbd9d0; border-radius:9px; color:var(--ink); background:white; font-weight:700; font-size:13px; white-space:nowrap; text-decoration:none; transition:.15s; }
[hidden] { display:none !important; }
.btn:hover:not(:disabled) { background:#f0f6f1; border-color:#8dad9b; }
.btn-primary { background:var(--forest); border-color:var(--forest); color:#fff; }
.btn-primary:hover:not(:disabled) { background:var(--forest-2); color:#fff; }
.btn-soft { background:#edf5ef; border-color:#d0e2d5; color:#245a3d; }
.btn-warn { color:var(--danger); border-color:#e7c7bf; }
.btn-text { border:0; background:transparent; padding:9px 5px; font-size:13px; color:#456c5d; }
.btn-sm { padding:7px 10px; font-size:12px; }
.app-body { padding:24px; }
.empty-state { text-align:center; padding:50px 20px 55px; }
.empty-icon { font:68px Georgia,serif; color:#9ab2a2; margin-bottom:8px; }
.empty-state h2 { font:600 26px 'Fraunces',Georgia,serif; }
.empty-state p { color:var(--muted); max-width:420px; margin:10px auto 22px; }
.form-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:20px; }
.form-heading h2,.section-heading h2 { font:600 26px 'Fraunces',Georgia,serif; }
.form-heading p,.section-heading p { margin:4px 0 0; color:var(--muted); font-size:13px; }
.badge { background:#f4edda; color:#775222; border-radius:999px; padding:6px 11px; font-size:11px; letter-spacing:.06em; font-weight:700; }
.form-grid { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(230px,1fr); gap:18px 25px; }
.player-editor { margin-top:23px; }
.player-editor .section-heading { margin-bottom:12px; }
.player-editor h3 { font:600 21px 'Fraunces',Georgia,serif; }
.player-table-head,.player-row { display:grid; grid-template-columns:minmax(150px,2fr) minmax(75px,.65fr) minmax(75px,.65fr) minmax(95px,1fr) minmax(66px,.5fr) minmax(140px,1fr); align-items:start; gap:8px; }
.player-table-head { padding:10px 12px; color:#637269; background:#f4f8f3; border:1px solid var(--line); border-radius:10px 10px 0 0; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
#player-rows { border:1px solid var(--line); border-top:0; border-radius:0 0 10px 10px; padding:7px 12px; }
.player-row { padding:7px 0; border-bottom:1px solid #edf2ed; }
.player-row:last-child { border-bottom:0; }
.player-row input { width:100%; padding:9px 10px; font-size:13px; }
.player-actions { display:flex; gap:6px; justify-content:flex-start; }
.player-actions .btn { padding:9px 9px; }
.player-actions .icon-btn { font-size:20px; line-height:16px; padding:8px 10px; }
.player-extra { grid-column:1/-1; border:1px dashed #cad9cd; padding:9px 11px; border-radius:8px; background:#fcfdfb; }
.player-extra summary { font-weight:700; color:#41664e; font-size:12px; cursor:pointer; }
.player-extra-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px 13px; margin-top:12px; }
.player-extra-grid label { font-weight:650; color:#4e6355; font-size:11px; display:flex; flex-direction:column; gap:5px; }
.player-extra-grid input,.player-extra-grid select { width:100%; font-size:12px; padding:8px 9px; }
.player-extra p { margin:10px 0 0; line-height:1.5; }
.bye-edit-list { grid-column:1/-1; display:flex; flex-direction:column; gap:6px; }
.bye-edit-list:empty { display:none; }
.bye-editor { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:8px 10px; border-radius:8px; background:#f8f2e6; border:1px solid #e8ddc6; }
.bye-editor label { display:flex; gap:7px; align-items:center; font-size:12px; font-weight:700; }
.bye-editor input { width:62px; }
.bye-editor select { padding:7px 8px; }
.bulk-entry { margin-top:13px; padding:12px 14px; background:#fafbf9; border:1px dashed #b5c8bb; border-radius:9px; }
.bulk-entry summary { font-weight:700; font-size:13px; cursor:pointer; color:#315c49; }
.bulk-entry p { color:var(--muted); font-size:12px; margin:8px 0; }
.bulk-entry textarea { display:block; width:100%; margin:8px 0 10px; font-size:12px; min-height:85px; }
.form-field { display:flex; flex-direction:column; gap:7px; }
.form-field label { font-size:13px; font-weight:700; }
.form-field small { color:var(--muted); font-size:12px; }
.form-field textarea { min-height:218px; resize:vertical; line-height:1.6; }
.form-field input { width:100%; }
.form-field .masnou-auto-option { display:flex; align-items:center; gap:9px; font-size:12px; font-weight:600; color:#315c49; cursor:pointer; }
.form-field .masnou-auto-option input { width:17px; height:17px; flex:0 0 17px; accent-color:#315c49; }
#masnou-boards-hint { display:block; padding:9px 11px; background:#eaf4ed; border-radius:8px; color:#285a42; line-height:1.45; }
.settings-panel { background:#f8faf7; border:1px solid var(--line); padding:17px; border-radius:12px; align-self:stretch; }
.settings-panel .form-field + .form-field { margin-top:18px; }
.tie-break-settings { padding-top:14px; border-top:1px solid var(--line); }
.tie-break-editor { padding:10px; background:#f4f7f2; border:1px solid #dbe6db; border-radius:10px; }
.tie-break-editor .muted-sm { margin:0 0 10px; line-height:1.45; }
.tie-break-editor .muted-sm:last-child { margin:9px 0 0; }
.tie-break-rows { display:flex; flex-direction:column; gap:7px; margin-bottom:10px; }
.tie-break-row { display:grid; grid-template-columns:18px minmax(0,1fr) 32px 32px 32px; gap:4px; align-items:center; }
.tie-break-row select { width:100%; padding:8px 6px; font-size:12px; }
.tie-ordinal { font-size:12px; font-weight:750; color:#53745e; }
.tie-break-row .btn { padding:6px 3px; height:35px; }
.tie-break-row .btn:disabled { opacity:.32; cursor:default; }
.edit-tiebreaks-details { background:#f8faf7; padding:12px 14px; border:1px solid var(--line); border-radius:10px; margin:14px 0; }
.edit-tiebreaks-details summary { font-weight:700; cursor:pointer; color:#315c49; }
.edit-tiebreaks-details .tie-break-editor { margin-top:10px; }
.category-filter { font-size:12px; padding:7px 9px; max-width:175px; }
.text-button { border:0; background:none; padding:0; font:inherit; color:#2e6d4f; font-weight:700; text-decoration:underline; cursor:pointer; }
.form-actions { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:13px; margin-top:20px; padding-top:18px; border-top:1px solid var(--line); }
.muted { color:var(--muted); }
.muted-sm { color:var(--muted); font-size:12px; }
.section-heading { display:flex; justify-content:space-between; align-items:center; gap:15px; flex-wrap:wrap; margin-bottom:18px; }
.kpi-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:23px; }
.kpi { border:1px solid var(--line); padding:14px 17px; border-radius:12px; background:#fcfdfb; }
.kpi span { display:block; color:var(--muted); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; }
.kpi strong { font:600 27px 'Fraunces',Georgia,serif; display:block; margin:2px 0 0; }
.progress-track { width:100%; height:5px; border-radius:10px; overflow:hidden; background:#deebe3; margin:-11px 0 22px; }
.progress-fill { background:#5f8b70; height:100%; transition:width .2s; }
.grid-main { display:grid; grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr); gap:24px; }
.panel { border:1px solid var(--line); border-radius:12px; overflow:hidden; background:white; min-width:0; }
.panel-title { padding:15px 17px; display:flex; align-items:center; justify-content:space-between; gap:12px; background:#f7faf6; border-bottom:1px solid var(--line); }
.panel-title h3 { font-size:15px; }
.panel-title small { color:var(--muted); font-size:11px; }
.table-wrap { overflow-x:auto; }
table { border-collapse:collapse; width:100%; font-size:13px; }
th { font-size:10px; text-transform:uppercase; letter-spacing:.06em; background:#fbfcfa; color:#61716a; text-align:center; white-space:nowrap; }
td,th { border-bottom:1px solid #edf1ed; padding:10px 8px; }
tr:last-child td { border-bottom:0; }
td { text-align:center; white-space:nowrap; }
td.name-cell,th.name-cell { text-align:left; }
.place { display:inline-grid; place-items:center; width:24px; height:24px; border-radius:6px; background:#e8f2e9; color:#276044; font-weight:700; }
.score { font-weight:800; color:#1c5942; }
.table-sub { font-size:11px; color:var(--muted); }
.round-controls { display:flex; align-items:center; gap:8px; }
.round-select { min-width:110px; padding:7px 8px; font-size:12px; }
.match-list { padding:6px 13px 13px; }
.match-row { display:grid; grid-template-columns:minmax(0,1fr) 109px minmax(0,1fr); align-items:center; gap:9px; padding:10px 0; border-bottom:1px solid #edf1ed; }
.match-row:last-child { border:0; }
.forfeit-match { background:#fff9ef; border-radius:7px; }
.forfeit-legend { margin:10px 0 0; padding:10px 12px; border-radius:8px; background:#f1f5ed; color:#54645b; font-size:11px; line-height:1.55; }
.player-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; font-weight:600; }
.right-name { text-align:right; }
.piece { display:inline-grid; border-radius:4px; font:15px Georgia,serif; width:21px; height:21px; place-items:center; margin-right:5px; background:#f0f3ef; }
.piece.black { background:#d8e0d9; }
.result-select { padding:7px 4px; text-align:center; width:109px; font-size:12px; font-weight:700; }
.bye { margin:8px 0 0; border-radius:8px; padding:9px 12px; background:#faf5e9; font-size:12px; color:#785f3a; }
.bye-manager { margin-top:22px; }
.ranking-panel { margin-top:22px; }
.bye-manager-body { padding:16px 18px; }
.bye-manager-body > p:last-child { margin:12px 0 0; }
.bye-manager-form { display:flex; align-items:end; gap:11px; flex-wrap:wrap; margin-bottom:14px; }
.bye-manager-form label { display:flex; flex-direction:column; gap:5px; font-size:12px; font-weight:700; }
.bye-manager-form select { padding:9px 10px; min-width:115px; }
.bye-manager-form label:first-child select { min-width:185px; }
.bye-chips { display:flex; flex-wrap:wrap; gap:8px; }
.bye-chip { display:inline-flex; gap:6px; align-items:center; padding:6px 9px; border:1px solid #ebdbb9; border-radius:8px; background:#fcf7ea; color:#755d38; font-size:12px; }
.bye-chip button { border:0; background:transparent; color:#a04a31; font-size:18px; line-height:14px; font-weight:700; padding:2px 4px; }
.locked-bye { font-size:10px; color:#849184; }
.round-footer { border-top:1px solid var(--line); display:flex; padding:12px 15px; gap:10px; align-items:center; flex-wrap:wrap; justify-content:space-between; }
.round-footer small { color:var(--muted); }
.panel-footnote { padding:12px 15px; border-top:1px solid var(--line); color:#77847c; font-size:11px; line-height:1.4; }
.alert { display:flex; gap:10px; padding:12px 15px; border-radius:10px; background:#fff7e6; border:1px solid #eed6a9; color:#77532a; font-size:12px; margin:0 0 20px; }
.status-message { padding:12px 18px; border-radius:10px; border:1px solid #b6d7c2; background:#ebf6ee; color:#22593d; margin-bottom:13px; }
.status-message.error { background:#fdf0ed; border-color:#efc7bc; color:#8d3d31; }
.zero-rule-notice { display:flex; flex-direction:column; gap:8px; padding:13px; margin-bottom:16px; border:1px solid #e3c7a0; border-radius:9px; background:#fff8ed; font-size:12px; color:#684b2d; }
.zero-rule-notice strong { font-size:14px; }
.zero-meter { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px; }
.zero-meter > strong { font-size:11px; font-weight:750; color:#694a36; white-space:nowrap; }
.zero-bar { display:inline-flex; gap:5px; align-items:center; }
.zero-circle { flex:none; display:block; width:20px; height:20px; border-radius:50%; border:2px solid #ad5b48; background:#fffdf9; }
.zero-circle.is-full { background:#ae5543; }
.zero-circle.is-half { background:linear-gradient(to right,#ae5543 0%,#ae5543 50%,#fffdf9 50%,#fffdf9 100%); }
.zero-state { border-radius:999px; padding:4px 7px; font-size:10px; font-weight:700; white-space:nowrap; }
.zero-state.in { background:#e2f2e4; color:#235c3e; }
.zero-state.out { background:#f9e6df; color:#873b30; }
.zero-eliminated { opacity:.8; background:#fff9f7; }
.zero-standings .table-sub { display:block; white-space:nowrap; }
.zero-standings th:nth-child(2),.zero-standings td:nth-child(2) { min-width:155px; }
.masnou-tables-panel { margin-bottom:18px; }
.masnou-alert-panel { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:6px 18px; background:#eef5ed; border:1px solid #d5e3d3; border-radius:12px; padding:13px 17px; margin:0 0 18px; }
.masnou-alert-panel strong { color:#275a40; font-size:14px; }
.masnou-alert-panel p { margin:4px 0 0; font-size:12px; color:#476351; line-height:1.45; }
.masnou-alert-controls { display:flex; align-items:flex-end; flex-wrap:wrap; gap:8px; }
.masnou-alert-controls label { display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#3a5946; }
.masnou-alert-controls select { min-width:214px; max-width:100%; padding:8px 10px; font-size:12px; }
.masnou-alert-controls button { min-height:36px; }
.masnou-alert-panel .masnou-alert-status { grid-column:1/-1; margin:0; color:#54725e; font-size:11px; }
.masnou-board-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; padding:14px 17px; }
.masnou-board { border:1px solid #d5e0d8; background:linear-gradient(180deg,#fbfdfb,#f4f8f4); border-radius:13px; padding:15px; min-width:0; }
.masnou-board-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; font-weight:750; font-size:14px; margin-bottom:13px; }
.masnou-board-heading .badge { font-size:10px; padding:4px 8px; }
.masnou-board-actions { display:flex; align-items:center; gap:5px; flex-wrap:wrap; justify-content:flex-end; }
.masnou-board-actions .btn { padding:5px 7px; font-size:10px; }
.masnou-match { display:grid; grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr); align-items:center; gap:8px; padding:13px 10px; background:#fff; border:1px solid #e3e9e2; border-radius:10px; }
.masnou-match > div { display:flex; align-items:center; flex-direction:column; text-align:center; gap:3px; min-width:0; }
.masnou-match strong { font-size:13px; overflow-wrap:anywhere; }
.masnou-match small { color:#718179; font-size:11px; }
.masnou-match .piece { font-size:22px; }
.masnou-vs { font-family:Georgia,serif; font-style:italic; font-size:15px; color:#b18a53; text-align:center; }
.masnou-resident { font-size:11px; color:#4b6c59; margin:10px 0 2px; }
.masnou-result-field { display:flex; flex-direction:column; gap:6px; margin-top:13px; font-size:12px; font-weight:700; color:#3e594a; }
.masnou-result-field select { width:100%; padding:9px 12px; }
.masnou-lower { margin-bottom:18px; }
.masnou-queue { padding:11px 17px 18px; display:flex; flex-direction:column; gap:7px; }
.masnou-queue-item { display:flex; align-items:center; gap:12px; border:1px solid #e3eae2; border-radius:9px; padding:8px 10px; font-size:13px; }
.masnou-queue-item:first-child { border-color:#dbc798; background:#fffcf2; }
.masnou-queue-item .badge { margin-left:auto; padding:3px 8px; }
.masnou-queue-number { width:26px; height:26px; border-radius:7px; background:#e4eee6; display:grid; place-items:center; font-weight:750; color:#315c43; flex:none; }
.masnou-history { margin-top:18px; }
@media(max-width:1080px) { .mode-picker { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.zero-finale { display:flex; flex-wrap:wrap; align-items:center; gap:9px 17px; background:#edf7ec; color:#295b3b; border:1px solid #b9dabc; border-radius:12px; padding:14px 18px; margin:0 0 19px; }
.zero-finale strong { font-family:'Fraunces',Georgia,serif; font-size:21px; }
.zero-finale span { font-size:12px; }
.confirm-dialog { width:min(480px,calc(100% - 28px)); max-height:calc(100vh - 30px); overflow-y:auto; border:1px solid #d4ddd5; border-radius:18px; box-shadow:0 25px 70px #092e2880; padding:28px; color:var(--ink); background:var(--cream); }
.confirm-dialog::backdrop { background:rgba(10,35,31,.64); backdrop-filter:blur(3px); }
.dialog-symbol { display:grid; place-items:center; width:47px; height:47px; margin-bottom:13px; background:#f2e8db; border-radius:12px; color:#99632e; font-size:29px; }
.confirm-dialog h2 { font:600 26px 'Fraunces',Georgia,serif; margin:0 0 11px; }
.confirm-dialog p { color:#52655a; line-height:1.6; margin:0 0 15px; }
.dialog-notice { padding:13px 14px; background:#eef5ee; border:1px solid #c9dfca; border-radius:10px; color:#315d42; font-size:13px; line-height:1.5; }
.dialog-notice strong { display:block; }
.dialog-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:10px; margin-top:22px; }
.rollback-selection { margin:8px 0 14px; }
.rollback-selection[hidden],.rollback-impact[hidden] { display:none; }
.rollback-selection label { display:block; font-size:12px; font-weight:700; color:#405a4c; margin-bottom:6px; }
.rollback-selection select { width:100%; padding:10px 12px; font-size:14px; }
.rollback-impact { margin:0 0 17px; padding:12px 14px 12px 32px; background:#fff8e9; border:1px solid #ead5a5; border-radius:9px; font-size:13px; line-height:1.7; color:#654f27; }
.players-dialog { width:min(1100px,calc(100% - 24px)); }
.export-dialog { width:min(700px,calc(100% - 24px)); }
.export-tournament-name { font-weight:700; margin:0 0 14px !important; color:var(--ink) !important; }
.export-source-label { display:block; margin:16px 0 6px; font-size:12px; font-weight:700; color:#405a4c; }
#export-json-text { display:block; width:100%; min-height:125px; max-height:210px; resize:vertical; font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace; white-space:pre; }
.export-feedback { min-height:18px; margin:9px 0 0 !important; font-size:12px; color:#38664e !important; }
.players-dialog > p { font-size:13px; }
.edit-tournament-name { display:block; margin:15px 0; font-size:12px; font-weight:700; color:#405a4c; }
.edit-tournament-name input { display:block; width:100%; margin-top:6px; font-size:14px; }
.player-add-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding:13px 8px 6px; }
.player-add-row small { color:#667569; font-size:12px; }
.edit-player-head,.edit-player-row { display:grid; grid-template-columns:minmax(180px,2fr) minmax(80px,.75fr) minmax(80px,.75fr) minmax(110px,1fr) minmax(70px,.6fr) minmax(95px,.8fr); gap:9px; }
.edit-player-head { margin-top:18px; padding:10px 9px; background:#e9f1e8; border-radius:9px 9px 0 0; color:#596b5e; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; }
.edit-player-list { max-height:min(55vh,480px); overflow:auto; border:1px solid var(--line); border-radius:0 0 9px 9px; padding:4px 9px; }
.edit-player-row { padding:8px 0; border-bottom:1px solid #e5ede7; align-items:center; }
.edit-player-row:last-child { border-bottom:0; }
.edit-player-row label { display:block; min-width:0; }
.edit-player-row label span { display:none; }
.edit-player-row input { width:100%; min-width:0; font-size:13px; padding:9px 10px; }
.edit-player-row .player-actions { align-self:center; }
.edit-player-row .late-entry-info { display:block; margin-top:4px; color:#466b52; font-size:11px; }
.edit-player-row.new-entry-row { background:#f0f7ef; border:1px solid #c7dcc9; border-radius:9px; padding:10px; margin:9px 0; }
.edit-player-row .late-entry-select { grid-column:1/-1; display:flex; gap:10px; align-items:center; flex-wrap:wrap; padding:8px 10px; background:#e4f0e4; border-radius:7px; font-size:12px; font-weight:600; }
.edit-player-row .late-entry-select span { display:inline; }
.edit-player-row .late-entry-select select { min-width:135px; }
.edit-player-row .late-entry-select small { font-weight:400; color:#4e6956; }
.add-late-player { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:10px; }
.add-late-player[hidden] { display:none; }
.add-late-player small { color:#667569; }
.fide-dialog { width:min(870px,calc(100% - 24px)); }
.fide-search label { display:block; font-weight:700; font-size:12px; margin:10px 0 6px; }
.fide-search > div { display:flex; gap:8px; }
.fide-search input { flex:1; min-width:0; }
.fide-results { max-height:220px; overflow-y:auto; display:grid; gap:6px; }
.fide-result { display:flex; align-items:center; justify-content:space-between; gap:9px; border:1px solid #dfebe0; border-radius:8px; padding:9px 11px; background:#fafcf9; }
.fide-result strong,.fide-result small { display:block; }
.fide-result strong { font-size:13px; }
.fide-result small { color:var(--muted); font-size:11px; margin-top:2px; }
.fide-proposal { margin-top:13px; }
.fide-proposal-head { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; align-items:center; }
.fide-proposal-head h3 { font-size:15px; }
.fide-proposal-head a { font-size:12px; }
.fide-compare-head,.fide-compare-row { display:grid; grid-template-columns:25px minmax(100px,1.2fr) minmax(90px,1fr) minmax(90px,1fr); align-items:center; gap:7px; padding:8px 7px; }
.fide-compare-head { background:#edf5ef; border-radius:8px; font-weight:700; font-size:11px; color:#4b6453; }
.fide-compare-row { border-bottom:1px solid #ebf0eb; font-size:12px; }
.fide-compare-row input { margin:0; }
.fide-compare-row samp { font:inherit; color:#697a6e; overflow-wrap:anywhere; }
.fide-compare-row strong { overflow-wrap:anywhere; }
.report-dialog { width:min(1120px,calc(100% - 22px)); }
.report-controls { display:flex; flex-wrap:wrap; gap:14px; margin:10px 0 15px; }
.report-controls label { flex:1; min-width:200px; display:flex; flex-direction:column; gap:5px; font-size:12px; font-weight:700; }
.report-controls label[hidden] { display:none; }
.edit-tournament-options { display:flex; flex-wrap:wrap; gap:12px; padding:12px 14px; margin:12px 0; border:1px solid #dbe5dc; border-radius:10px; background:#f4f8f4; }
.edit-tournament-options label { flex:1; min-width:200px; display:flex; flex-direction:column; gap:5px; font-size:12px; font-weight:700; }
.edit-tournament-options label[hidden] { display:none; }
.edit-tournament-options select { width:100%; }
.report-controls select { width:100%; }
.report-content { border:1px solid #dbe5dc; padding:18px; border-radius:10px; background:white; max-height:55vh; overflow:auto; font-size:13px; }
.report-category-title { font-size:17px; font-family:'Fraunces',Georgia,serif; color:#305e48; margin:22px 0 9px; padding-top:12px; border-top:1px solid #dbe5dc; break-after:avoid; }
.report-content h2 { font:600 22px 'Fraunces',Georgia,serif; margin:9px 0 10px; }
.report-content p { margin:7px 0 13px; }
.report-meta { display:flex; flex-wrap:wrap; justify-content:space-between; gap:7px 15px; padding-bottom:9px; border-bottom:2px solid #315d46; color:#536d5c; font-size:11px; }
.report-meta strong { color:var(--forest); }
.report-highlight { padding:12px; background:#edf5ee; border-radius:9px; margin:10px 0 14px; }
.report-table-wrap { width:100%; overflow-x:auto; }
.report-table { font-size:12px; }
.report-table th { position:sticky; top:0; background:#eaf3ec; }
.report-table td,.report-table th { padding:8px 9px; }
.report-table tr:nth-child(even) td { background:#f9fbf9; }
.report-table tr.report-unplayed td { background:#fff7e9; }
.report-table.cross-table { font-size:10px; }
.report-note { color:#718075; font-size:11px; line-height:1.5; }
.edit-player-error { margin-top:12px !important; padding:10px 12px; border:1px solid #e9bdb0; border-radius:8px; background:#fff1ed; color:#8a3428 !important; }
.pairings-dialog { width:min(850px,calc(100% - 24px)); }
.pairings-dialog > p { font-size:13px; }
.pairings-dialog .dialog-notice { margin:0 0 16px; }
.pairings-grid-head,.pairings-edit-row { display:grid; grid-template-columns:45px minmax(160px,1fr) minmax(160px,1fr) 110px; gap:9px; align-items:center; }
.pairings-grid-head { padding:10px; background:#e9f1e8; border-radius:9px 9px 0 0; color:#596b5e; font-size:11px; font-weight:700; text-transform:uppercase; }
.pairings-edit-list { max-height:48vh; overflow:auto; padding:5px 10px; border:1px solid var(--line); border-radius:0 0 9px 9px; }
.pairings-edit-row { padding:9px 0; border-bottom:1px solid #e5ede7; }
.pairings-edit-row:last-child { border:0; }
.pairings-edit-row select { width:100%; min-width:0; padding:9px 7px; font-size:12px; }
.pairings-edit-row .board-number { font-weight:700; color:#62796b; }
.pairings-bye-field { margin-top:14px; }
.pairings-bye-field label { display:flex; align-items:center; flex-wrap:wrap; gap:10px; font-size:13px; font-weight:650; }
.pairings-bye-field select { min-width:240px; max-width:100%; }
.pairings-requested-byes { margin:10px 0 !important; color:#5b695d !important; }
.pairings-reason-label { display:block; margin-top:15px; margin-bottom:6px; font-size:12px; font-weight:700; color:#405a4c; }
#pairings-reason { display:block; width:100%; max-height:110px; min-height:64px; resize:vertical; font-size:12px; }
.pairings-exception { display:flex; align-items:flex-start; gap:10px; margin-top:16px; background:#fff5e8; border:1px solid #eddbbf; border-radius:9px; padding:12px; font-size:12px; line-height:1.5; color:#71552d; cursor:pointer; }
.pairings-exception input { margin:3px 0 0; flex:none; }
.manual-round-note { color:#77532a; font-size:11px; font-weight:650; }
.ko-bracket-panel { margin-bottom:22px; }
.ko-bracket-scroll { overflow:auto; padding:18px 16px 22px; background:linear-gradient(135deg,#fbfdfb 0%,#f0f6f0 100%); }
.ko-bracket { display:flex; gap:36px; align-items:stretch; width:max-content; min-height:max(420px,calc(var(--ko-first-matches) * 176px)); }
.ko-stage { width:225px; flex:none; display:flex; flex-direction:column; position:relative; }
.ko-stage:not(:last-child)::after { content:'→'; position:absolute; right:-29px; top:49%; font-size:25px; color:#8fae9a; }
.ko-stage-heading { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:58px; margin-bottom:14px; border:1px solid #d7e4d8; border-radius:9px; background:#e7f0e8; color:#315d46; }
.ko-stage-heading strong { font-size:13px; }
.ko-stage-heading small { font-size:11px; color:#67806e; }
.ko-stage-matches { flex:1; display:flex; flex-direction:column; justify-content:space-around; gap:8px; }
.ko-match { border:1px solid #d6e0d6; border-left:4px solid #678f78; box-shadow:0 3px 10px #1d382314; border-radius:10px; padding:9px 10px; background:white; min-height:116px; }
.ko-match-index { font-size:10px; color:#7a877e; text-transform:uppercase; letter-spacing:.055em; display:block; margin-bottom:5px; }
.ko-player { display:flex; align-items:center; gap:6px; padding:4px 3px; min-height:29px; border-radius:5px; font-size:12px; font-weight:600; }
.ko-player > span:nth-child(2) { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
.ko-piece { color:#798c80; font-size:18px; line-height:1; }
.ko-player.ko-advances { background:#e4f2e5; color:#205c3b; font-weight:800; }
.ko-player.ko-bye { font-style:italic; color:#839088; font-weight:400; }
.ko-tick { color:#26734c; font-weight:800; }
.ko-result-field { margin-top:6px; display:grid; gap:3px; }
.ko-result-field > span { font-size:10px; font-weight:700; color:#66776a; }
.ko-result-field select { width:100%; padding:6px 7px; font-size:12px; font-weight:700; }
.ko-tiebreak-field { padding:7px; background:#fff5e1; border-radius:6px; }
.ko-result-label { text-align:center; font-size:10px; padding-top:5px; color:#64786b; }
.ko-empty { background:#f8faf8; border-style:dashed; opacity:.65; }
.ko-empty .ko-player { color:#87948b; font-weight:400; }
.ko-standing-panel { margin-bottom:10px; }
.ko-standing-panel .zero-state { white-space:nowrap; }
.knockout-extra-settings { padding:16px; margin-top:8px; border:1px solid #cfdfd0; border-radius:11px; background:#f3f8f3; display:grid; gap:13px; }
.knockout-extra-settings[hidden] { display:none; }
.knockout-extra-settings > strong { color:#2d5940; font-size:13px; }
.knockout-check { display:flex; align-items:flex-start; gap:9px; color:#42584b; font-size:12px; font-weight:600; line-height:1.5; cursor:pointer; }
.knockout-check input { flex:none; margin-top:2px; }
.knockout-extra-settings > small { font-size:11px; color:#637568; line-height:1.5; }
.ko-consolation-panel { margin-bottom:22px; }
.ko-side-config { display:flex; flex-wrap:wrap; align-items:end; gap:16px 22px; padding:16px 18px 5px; }
.ko-side-config > label:first-child { display:grid; gap:6px; color:#586b5e; font-size:12px; font-weight:700; flex:1 1 255px; }
.ko-side-config select { max-width:100%; padding:9px 10px; font-size:12px; }
.ko-side-config .knockout-check { flex:1 1 240px; padding:10px; background:#f5f8f5; border-radius:9px; }
.ko-side-description { margin:4px 18px 14px; color:#687a6c; font-size:12px; line-height:1.6; }
.ko-side-message { padding:12px 15px; margin:0 18px 14px; color:#566958; background:#f5f8f4; border-radius:8px; font-size:12px; }
.ko-side-actions { display:flex; align-items:center; flex-wrap:wrap; gap:9px; border-top:1px solid #dce5dd; padding:15px 18px; }
.ko-side-actions strong { color:#326044; font-size:12px; margin-right:5px; }
.ko-side-rounds { display:grid; gap:12px; padding:0 18px 18px; }
.ko-side-stage { border:1px solid #d7e3d8; border-radius:10px; background:#fff; overflow:hidden; }
.ko-side-stage summary { cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 16px; background:#eef5ef; font-size:12px; color:#2e6245; }
.ko-side-stage summary span { color:#738477; font-weight:600; }
.ko-side-matches { display:grid; grid-template-columns:repeat(auto-fit,minmax(205px,1fr)); gap:10px; padding:12px; max-height:420px; overflow:auto; }
.ko-side-match { border:1px solid #dce7dd; border-left:3px solid #6d9e7b; border-radius:8px; padding:12px; background:#fbfdfb; min-width:0; }
.ko-side-match.is-decided { border-left-color:#3f8a5a; }
.ko-side-match-number { display:block; text-transform:uppercase; letter-spacing:.05em; color:#6b806e; font-size:10px; font-weight:700; margin-bottom:8px; }
.ko-side-players { display:flex; flex-direction:column; gap:3px; font-size:12px; }
.ko-side-players > span { display:block; font-weight:650; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ko-side-players strong { font-size:10px; color:#57715b; }
.ko-side-control { display:grid; gap:5px; font-size:11px; font-weight:650; color:#4e6957; margin-top:10px; }
.ko-side-control select { width:100%; padding:6px 7px; font-size:12px; }
.ko-side-undo { margin:0 12px 12px; }
.ko-side-bronze { padding:14px 18px; border-top:1px solid #e0e9e2; display:grid; gap:10px; }
.ko-side-bronze h4 { margin:0; font-size:13px; color:#315c44; }
.ko-side-bronze .ko-side-match { max-width:340px; }
.ko-side-bronze .btn { justify-self:start; }
.ko-side-award { padding:12px 18px; background:#e8f3e7; color:#2d6341; font-size:13px; }
.ko-side-positions { display:flex; gap:9px; flex-wrap:wrap; padding:12px 18px; align-items:center; }
.ko-side-positions small { width:100%; font-weight:700; color:#496b54; }
.ko-side-positions span { padding:7px 10px; border-radius:7px; background:#f3f7f2; color:#45644d; font-size:12px; }
.app-shell:has(.double-workspace) { overflow:visible; }
.double-workspace { display:grid; grid-template-columns:minmax(290px,345px) minmax(0,1fr); gap:14px; align-items:start; margin-bottom:23px; }
.double-workbench { position:sticky; top:12px; box-shadow:0 8px 22px #1e422315; z-index:3; }
.double-workbench .panel-title { background:#e8f2e9; }
.double-workbench-body { padding:10px; max-height:min(64vh,665px); overflow:auto; overscroll-behavior:contain; }
.double-editor-stage { border:1px solid #d9e5da; border-radius:9px; margin:0 0 9px; background:white; }
.double-editor-stage > summary { list-style:none; cursor:pointer; padding:12px 11px; display:flex; justify-content:space-between; align-items:center; gap:10px; font-size:12px; color:#244d35; }
.double-editor-stage > summary::-webkit-details-marker { display:none; }
.double-editor-stage > summary::before { content:'▸'; font-size:15px; color:#56826b; }
.double-editor-stage[open] > summary::before { content:'▾'; }
.double-editor-stage > summary strong { flex:1; }
.double-editor-counter { font-size:10px; white-space:nowrap; font-weight:700; padding:4px 7px; border-radius:20px; }
.double-editor-counter.waiting { background:#fff0d9; color:#875923; }
.double-editor-counter.ready { background:#e0efe1; color:#2b6a43; }
.double-editor-content { padding:3px 9px 11px; border-top:1px solid #e6ede6; }
.double-editor-content > .muted-sm { padding:5px 3px; margin:0; font-size:11px; }
.double-edit-match { padding:9px 7px; border-bottom:1px solid #e3ece2; }
.double-edit-match.is-decided { background:#f8fbf8; }
.double-edit-num { display:block; font-size:10px; text-transform:uppercase; letter-spacing:.04em; color:#718479; margin-bottom:4px; }
.double-edit-opponents { display:flex; align-items:center; justify-content:space-between; gap:5px; font-size:12px; font-weight:700; margin-bottom:7px; }
.double-edit-opponents > span:not(.double-versus) { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.double-edit-opponents > span:last-child { text-align:right; }
.double-edit-opponents .ko-piece { font-size:15px; }
.double-versus { color:#95a69a; }
.double-edit-match > select { width:100%; padding:6px 7px; font-size:12px; }
.double-edit-match .ko-result-field select { width:100%; }
.double-undo-btn { margin-top:12px; max-width:100%; white-space:normal; }
.double-create-panel { padding:12px; border-top:1px solid #dae8d8; background:#f0f7ef; display:grid; gap:8px; }
.double-create-panel > strong { color:#2d6545; font-size:13px; }
.double-create-panel > p { font-size:11px; line-height:1.5; color:#597268; margin:0; }
.double-create-panel .btn { white-space:normal; line-height:1.35; text-align:center; }
.double-workbench-hint { font-size:11px; line-height:1.5; margin:0; padding:13px; color:#63796c; background:#f9fbf8; }
.double-done { padding:15px; font-weight:800; color:#28603f; background:#e5f4e7; }
.double-reference { min-width:0; }
.double-reference-title { display:flex; align-items:center; justify-content:space-between; margin:1px 0 10px; }
.double-reference-title h3 { font-size:15px; }
.double-reference-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; gap:10px; }
.double-ref-panel { margin-bottom:10px; }
.double-ref-panel .panel-title { padding:11px; }
.double-ref-panel .panel-title h3 { font-size:13px; }
.double-reference-body { padding:10px; background:#fbfcfa; }
.double-compact-stage { border:1px solid #dde7dc; background:white; border-radius:9px; margin-bottom:9px; overflow:hidden; }
.double-compact-heading { padding:9px 8px; background:#edf4ed; display:flex; justify-content:space-between; gap:7px; align-items:center; }
.double-compact-heading strong { font-size:11px; color:#2b6244; }
.double-compact-heading span { color:#65816c; font-size:9px; text-align:right; white-space:nowrap; }
.double-compact-list { padding:5px 7px; }
.double-compact-match { display:grid; grid-template-columns:18px minmax(0,1fr) 55px minmax(0,1fr); align-items:center; gap:3px; border-bottom:1px solid #eef3ee; padding:6px 0; font-size:10px; }
.double-compact-match:last-child { border-bottom:0; }
.double-compact-n { color:#8b9b91; }
.double-compact-name { min-width:0; white-space:nowrap; text-overflow:ellipsis; overflow:hidden; }
.double-compact-name.is-winner { font-weight:800; color:#286541; }
.double-compact-result { color:#697f6f; text-align:center; font-size:9px; white-space:nowrap; }
.double-history,.double-extra-matches { border-radius:8px; background:#f4f8f3; margin-bottom:8px; padding:8px; }
.double-history > summary,.double-extra-matches > summary { font-size:11px; font-weight:700; color:#3b7352; cursor:pointer; }
.double-history .double-compact-stage { margin-top:10px; }
.double-finals-panel .double-reference-body { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.double-losses { color:#a46c3a; font-size:20px; font-weight:800; letter-spacing:2px; white-space:nowrap; }
/* Grupos + eliminatorias: mesa activa a la izquierda y clasificación a la derecha. */
.groups-setup-hint { display:block; padding:10px 12px; margin-top:13px; border-radius:9px; color:#285c41; background:#e7f3e9; font-weight:700; line-height:1.5; }
.groups-setup-hint.is-error { color:#9f3e2a; background:#faebe4; }
.groups-progress { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border:1px solid #dce8dd; border-radius:12px; background:#f6faf6; margin-bottom:19px; }
.groups-progress > div { display:flex; flex-direction:column; gap:2px; padding:15px 17px; min-width:0; }
.groups-progress > div + div { border-left:1px solid #dce8dd; }
.groups-progress span { font-size:11px; color:#61786a; font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
.groups-progress strong { font-size:19px; font-weight:800; overflow-wrap:anywhere; }
.groups-stage-title { display:flex; justify-content:space-between; align-items:center; gap:15px; margin:20px 0 12px; }
.groups-stage-title h3 { font:600 22px 'Fraunces',Georgia,serif; }
.groups-stage-title p { margin:3px 0 0; font-size:12px; color:var(--muted); }
.groups-stage-title .btn { white-space:normal; text-align:center; }
.groups-tabs { display:flex; gap:7px; flex-wrap:wrap; margin:8px 0 14px; }
.groups-tab { display:flex; gap:7px; align-items:center; border:1px solid #d2e1d4; background:#f8fbf8; padding:8px 12px; border-radius:9px; color:#3f6d4c; }
.groups-tab.is-active { background:var(--forest); border-color:var(--forest); color:white; }
.groups-tab > strong { font-size:15px; }
.groups-tab > span { font-size:11px; }
.groups-check { color:#78b891; font-weight:800; }
.groups-workbench { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:14px; align-items:start; }
.groups-workbench > .panel { min-width:0; overflow:hidden; }
.groups-fixtures .panel-title,.groups-standing .panel-title { background:#f0f6f0; gap:8px; }
.groups-fixtures .panel-title h3,.groups-standing .panel-title h3 { font-size:16px; }
.groups-fixtures .match-list { padding:7px 11px; }
.groups-match { padding:10px 0; border-bottom:1px solid #e6eee5; }
.groups-match:last-child { border-bottom:0; }
.groups-match .match-row { padding:5px 0 0; }
.groups-match-index { display:block; font-size:10px; letter-spacing:.06em; font-weight:700; color:#7a9180; }
.groups-match .player-name { overflow:hidden; min-width:0; text-overflow:ellipsis; white-space:nowrap; }
.groups-match .piece.black { margin-left:5px; margin-right:0; }
.groups-tiebreak { padding:7px 0 0; display:flex; justify-content:center; }
.groups-tiebreak label { font-size:11px; color:#56715f; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.groups-tiebreak select { font-size:11px; padding:6px; }
.groups-standing th,.groups-standing td { font-size:11px; padding:8px 7px; }
.groups-standing .table-wrap { overflow-x:auto; }
.groups-qualified { display:inline-block; color:#22673c; font-size:10px; font-weight:800; background:#e1f1e2; padding:3px 5px; border-radius:6px; white-space:nowrap; }
.groups-pending { display:inline-block; color:#6c5926; font-size:10px; background:#fcf2dc; padding:3px 5px; border-radius:6px; white-space:nowrap; }
.groups-qualifiers,.groups-archived { border:1px solid #dce6dc; border-radius:10px; margin-top:14px; padding:12px 14px; background:#fbfdfb; }
.groups-qualifiers > summary,.groups-archived > summary { font-weight:700; font-size:13px; color:#315d43; cursor:pointer; }
.groups-qualifier-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(185px,1fr)); gap:8px; margin-top:12px; }
.groups-qualifier-grid > div { padding:8px 10px; background:white; border:1px solid #e2eae1; border-radius:8px; }
.groups-qualifier-grid strong,.groups-qualifier-grid small { display:block; }
.groups-qualifier-grid strong { font-size:12px; }
.groups-qualifier-grid small { font-size:10px; color:#61796b; margin-top:3px; }
.groups-bracket-list { padding:10px; max-height:520px; overflow:auto; }
.groups-bracket-round { border:1px solid #dae5db; border-radius:8px; margin-bottom:10px; padding:9px; font-size:11px; background:#fbfdfa; }
.groups-bracket-round > strong { display:block; font-size:12px; color:#315a43; margin-bottom:6px; }
.groups-bracket-round > div { padding:5px 0; border-bottom:1px solid #e6ede7; }
.groups-bracket-round > div:last-child { border-bottom:0; }
.groups-bracket-round span { color:#809183; padding:0 3px; }
.groups-bracket-round b { display:inline-block; font-size:10px; color:#286b3b; }
.groups-actions { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin-top:12px; }
.groups-actions small { flex:1; color:#677d6d; font-size:11px; }
.groups-consolation-panel { margin-top:20px; padding:3px 14px 16px; border:1px solid #d9e6e1; border-radius:12px; background:#f8fbfa; }
.groups-consolation-panel .groups-stage-title { margin-top:13px; }
.groups-consolation-panel .groups-stage-title .badge { font:700 10px system-ui,sans-serif; vertical-align:middle; margin-left:6px; }
.groups-bye-match { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:11px 5px 3px; font-size:12px; color:#345e43; }
.groups-bye-match span { color:#277247; background:#e1f1e7; border-radius:7px; padding:5px 8px; font-weight:700; }
@media(max-width:850px) { .groups-workbench { grid-template-columns:1fr; } .groups-bracket-list { max-height:330px; } }
@media(max-width:580px) { .groups-progress { grid-template-columns:1fr 1fr; } .groups-progress > div:nth-child(3) { border-left:0; border-top:1px solid #dce8dd; } .groups-progress > div:nth-child(4) { border-top:1px solid #dce8dd; } .groups-stage-title { align-items:flex-start; flex-direction:column; } .groups-stage-title .btn { width:100%; } .groups-tabs { flex-wrap:nowrap; overflow-x:auto; padding-bottom:5px; } .groups-tab { flex:none; } }
@media(max-width:1020px) { .double-workspace { grid-template-columns:300px minmax(0,1fr); } .double-reference-grid { grid-template-columns:1fr; } }
@media(max-width:740px) { .double-workspace { grid-template-columns:minmax(0,1fr); } .double-workbench { position:static; } .double-workbench-body { max-height:440px; } .double-reference-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:510px) { .double-reference-grid,.double-finals-panel .double-reference-body { grid-template-columns:1fr; } }
@media print { .double-workspace { grid-template-columns:1fr 1.7fr; } .double-workbench { position:static; box-shadow:none; } .double-workbench-body { overflow:visible; max-height:none; } .double-editor-stage { break-inside:avoid; } }
.info-row { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin:26px 0 44px; }
.info-item { display:flex; gap:13px; align-items:flex-start; }
.info-icon { width:34px; height:34px; flex:none; display:grid; place-items:center; background:#e6eee6; border-radius:9px; color:#3b7257; font-size:20px; }
.info-item strong { font-size:13px; }
.info-item p { font-size:12px; margin:3px 0 0; color:var(--muted); }
.site-footer { max-width:1190px; margin:auto; padding:19px 26px 25px; border-top:1px solid #dbe1d9; display:flex; justify-content:space-between; gap:10px; color:#728079; font-size:12px; }
@media(max-width:900px) { .intro { grid-template-columns:1fr 230px; } .grid-main { grid-template-columns:1fr; } .form-grid { grid-template-columns:1fr; } .form-field textarea { min-height:165px; } .mode-picker { gap:7px; } .mode-tab { padding:12px; gap:9px; } .tab-icon { width:34px; height:38px; font-size:29px; } }
@media(max-width:720px) { .masnou-alert-panel { grid-template-columns:1fr; } .masnou-alert-controls { align-items:stretch; } .masnou-alert-controls label { flex:1 1 200px; } }
@media(max-width:900px) { .player-table-head { display:none; } .player-row { grid-template-columns:minmax(140px,2fr) 83px 83px; gap:8px; } .player-row [data-field="category"] { grid-column:1; } .player-row [data-field="age"] { grid-column:2; } .player-row .player-actions { grid-column:3; grid-row:2; } .player-extra { grid-column:1/-1; } #player-rows { padding:6px; } .player-actions { gap:3px; flex-wrap:wrap; } .player-actions .btn { padding:8px 6px; } .edit-player-head { display:none; } .edit-player-row { grid-template-columns:minmax(120px,2fr) 90px 90px; } .edit-player-row label span { display:block; font-size:11px; color:var(--muted); margin-bottom:4px; } .edit-player-row .player-extra { grid-column:1/-1; } }
@media(max-width:650px) { .container { padding:0 15px; } .header-inner { padding:15px; } .header-link { display:none; } .intro { grid-template-columns:1fr; padding:30px 0 20px; } .intro-art { display:none; } h1 { font-size:34px; } .mode-picker { grid-template-columns:1fr; gap:8px; } .mode-tab { padding:12px 15px; } .app-toolbar { padding:14px; align-items:stretch; flex-direction:column; } .toolbar-left { align-items:stretch; flex-direction:column; gap:5px; } .tournament-select { width:100%; } .toolbar-actions .btn { flex:1; } .app-body { padding:17px 13px; } .form-heading h2,.section-heading h2 { font-size:23px; } .kpi-grid { grid-template-columns:1fr 1fr; } .info-row { grid-template-columns:1fr; gap:15px; } .site-footer { padding:18px 15px; flex-direction:column; } .match-row { gap:3px; grid-template-columns:minmax(0,1fr) 88px minmax(0,1fr); } .result-select { width:88px; } .player-name { font-size:11px; } .piece { display:none; } .masnou-board-grid { grid-template-columns:1fr; padding:11px 10px; } .masnou-match .piece { display:block; } }
@media(max-width:650px) { .player-row { grid-template-columns:1fr 90px; gap:7px; padding:10px 4px; } .player-row [data-field="name"] { grid-column:1; } .player-row [data-field="rating"] { grid-column:2; } .player-row [data-field="nationalRating"] { grid-column:2; grid-row:2; } .player-row [data-field="category"] { grid-column:1; grid-row:2; } .player-row [data-field="age"] { grid-column:2; grid-row:3; } .player-row .player-actions { grid-column:1; grid-row:3; } .player-extra,.bye-edit-list { grid-column:1/-1; } .player-extra-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .bye-manager-form label:first-child { width:100%; } .bye-manager-form label:first-child select { width:100%; } .bye-manager-form .btn { width:100%; } }
@media(max-width:650px) { .players-dialog { padding:17px; } .edit-player-row { grid-template-columns:minmax(0,1fr) 90px; padding:13px 0; gap:8px; } .edit-player-row label:nth-child(3) { grid-column:2; } .edit-player-row label:nth-child(4) { grid-column:1; } .edit-player-row label:nth-child(5) { grid-column:2; } .edit-player-row .player-actions { grid-column:1/-1; } .edit-player-list { max-height:55vh; } .ranking-panel .panel-title { align-items:flex-start; flex-direction:column; } .fide-compare-head,.fide-compare-row { grid-template-columns:20px minmax(75px,1fr) minmax(65px,1fr) minmax(65px,1fr); gap:3px; font-size:10px; } .fide-result { flex-direction:column; align-items:flex-start; } .report-content { padding:10px; } }
@media(max-width:650px) { .pairings-dialog { padding:16px; } .pairings-grid-head { display:none; } .pairings-edit-row { grid-template-columns:32px minmax(0,1fr) 75px; gap:6px; } .pairings-edit-row .pairing-black { grid-column:2; } .pairings-edit-row .pairing-swap { grid-column:3; grid-row:1/3; white-space:normal; } .pairings-edit-row select { font-size:11px; } .pairings-bye-field label { align-items:stretch; flex-direction:column; } .pairings-bye-field select { min-width:0; width:100%; } }
@media print { body { background:white; } .site-header,.intro,.mode-picker,.app-toolbar,.form-actions,.btn,.info-row,.site-footer,.status-message,.round-controls,.masnou-alert-panel { display:none !important; } .container { max-width:100%; padding:0; } .app-shell,.panel { border:0; box-shadow:none; } .grid-main { display:block; } .panel { margin-bottom:20px; break-inside:avoid; } select { appearance:none; border:0; } }
@media print { .ko-bracket-scroll { overflow:visible; } .ko-bracket { min-height:500px; transform-origin:top left; } .ko-stage { width:190px; } .ko-match { break-inside:avoid; } }
@media print { body:has(#report-dialog[open]) > :not(#report-dialog) { display:none!important; } body:has(#report-dialog[open]) #report-dialog { display:block!important; position:static; width:100%; max-width:100%; max-height:none; overflow:visible; box-shadow:none; border:0; border-radius:0; padding:0; margin:0; color:black; } body:has(#report-dialog[open]) #report-dialog > h2,body:has(#report-dialog[open]) #report-dialog > .export-tournament-name,body:has(#report-dialog[open]) .report-controls,body:has(#report-dialog[open]) .report-actions { display:none!important; } body:has(#report-dialog[open]) #report-dialog .report-content { border:0; max-height:none; overflow:visible; padding:0; } body:has(#report-dialog[open]) #report-dialog .report-table-wrap { overflow:visible; } body:has(#report-dialog[open]) #report-dialog .report-table { font-size:10px; } body:has(#report-dialog[open]) #report-dialog .report-table tr { break-inside:avoid; } }

/* Arena: reloj general, mesas y ranking para torneo presencial. */
.arena-clock-panel { display:flex; justify-content:space-between; align-items:center; gap:20px; flex-wrap:wrap; margin:17px 0; padding:22px 26px; border:1px solid #c4e3cb; background:linear-gradient(120deg,#effaf0,#fafdf7); border-radius:13px; }
.arena-clock-panel > div:first-child { min-width:0; }
.arena-clock-label { display:block; font-size:12px; letter-spacing:.1em; text-transform:uppercase; font-weight:800; color:#477956; }
.arena-clock-value { font-size:clamp(38px,7vw,70px); line-height:1.1; font-variant-numeric:tabular-nums; font-weight:850; letter-spacing:-.05em; color:#1b5333; margin:7px 0 8px; }
.arena-clock-panel small { display:block; font-size:11px; color:#587363; }
.arena-clock-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.arena-clock-ended { background:#f5f6f5; border-color:#e3e8e4; }
.arena-clock-ended .arena-clock-value { color:#6e7972; }
.arena-grid { align-items:start; }
.arena-streak { color:#af4d0c; font-weight:850; background:#fff0de; border-radius:7px; padding:3px 5px; white-space:nowrap; }
.arena-boards { display:grid; grid-template-columns:repeat(auto-fit,minmax(245px,1fr)); gap:10px; padding:12px; }
.arena-board { border:1px solid #d9e7da; background:#fcfdfb; border-radius:11px; padding:13px; min-width:0; }
.arena-board-title { display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:13px; color:#326345; }
.arena-alert-panel { grid-template-columns:minmax(0,1fr); background:#f0f6fc; border-color:#d0e0ee; }
.arena-alert-panel strong { color:#23506b; }
.arena-alert-panel p,.arena-alert-panel .masnou-alert-status { color:#476777; }
.arena-alert-panel .masnou-alert-controls select { min-width:165px; }
.arena-board-actions { display:flex; gap:7px; align-items:center; flex-wrap:wrap; }
.arena-board-actions select { flex:1 1 145px; min-width:0; }
.arena-board-actions button { white-space:nowrap; }
.arena-board .muted-sm { margin:16px 0 3px; }
.arena-versus { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:7px; align-items:center; padding:17px 2px; }
.arena-versus span:nth-child(2) { font-size:11px; color:#97a399; }
.arena-versus span:nth-child(3) { text-align:right; }
.arena-versus strong { display:block; overflow-wrap:anywhere; font-size:13px; }
.arena-versus small { display:block; font-size:10px; color:#7a8b80; margin-bottom:4px; }
.arena-result-select { width:100%; min-width:0; font-size:13px; }
.arena-berserk-controls { display:flex; flex-wrap:wrap; gap:10px; border-top:1px solid #e6eee5; padding:8px 0 10px; }
.arena-berserk-controls label,.arena-verified { display:flex; gap:4px; align-items:center; color:#6f5e40; font-size:11px; }
.arena-verified { padding:4px 0 9px; font-weight:700; }
.arena-history { margin-top:15px; }
.arena-grid .btn-minimal { font-size:10px; padding:5px 7px; border:1px solid #e0e8e1; background:#f6faf6; color:#567461; }
.arena-grid .table-wrap { overflow-x:auto; }
.arena-grid table { font-size:11px; }
.arena-grid th,.arena-grid td { padding:9px 6px; }
.arena-grid th:first-child,.arena-grid td:first-child { padding-left:12px; }
@media(max-width:720px) { .arena-clock-panel { padding:15px; } .arena-clock-actions { width:100%; } .arena-clock-actions .btn { flex:1; } .arena-boards { grid-template-columns:1fr; padding:9px; } }
@media print { .arena-clock-actions,.arena-grid td .btn { display:none!important; } .arena-clock-panel { padding:10px; } }

/* Scheveningen: equipos, jornadas Berger y rondas internas. */
.schev-team-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.schev-team-name { display:flex; flex-direction:column; gap:4px; font-size:12px; font-weight:750; color:#375d49; }
.schev-team-name input { width:100%; }
.schev-player-team { grid-column:1/-1; display:flex; align-items:center; gap:12px; font-size:12px; font-weight:700; color:#315f44; background:#f1f8f0; padding:8px 12px; border:1px solid #daeadb; border-radius:9px; }
.schev-player-team select { min-width:190px; padding:6px 10px; flex:1 1 auto; }
.schev-schedule { margin-top:18px; }
.schev-filters { display:flex; flex-wrap:wrap; align-items:center; gap:12px 18px; padding:14px 18px; background:#f7faf6; border-bottom:1px solid #e2eae2; }
.schev-filters label { display:flex; gap:7px; align-items:center; font-size:12px; font-weight:700; color:#43644e; }
.schev-filters select { padding:8px; font-size:12px; }
.schev-filters .muted-sm { flex:1 1 190px; text-align:right; }
.schev-encounters { padding:15px; display:grid; gap:12px; }
.schev-encounter { border:1px solid #dce8dc; background:#fffefa; border-radius:11px; padding:12px; min-width:0; }
.schev-encounter-head { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:3px 4px 11px; border-bottom:1px solid #e7eee5; }
.schev-encounter-head strong { font-size:14px; }
.schev-encounter-head small { display:block; color:#647468; margin-top:4px; font-size:11px; }
.schev-versus { color:#9aab9d; font-size:12px; font-weight:500; }
.schev-match-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(335px,1fr)); gap:8px; padding-top:11px; }
.schev-match { display:grid; grid-template-columns:62px minmax(0,1fr) 102px minmax(0,1fr); gap:8px; align-items:center; padding:11px; border:1px solid #e4eae3; border-radius:10px; background:white; }
.schev-board-number { font-weight:800; font-size:11px; color:#65826a; }
.schev-player { min-width:0; }
.schev-player small { display:block; font-size:10px; color:#819285; }
.schev-player strong { display:block; font-size:12px; overflow-wrap:anywhere; }
.schev-black { text-align:right; }
.schev-match select { width:100%; padding:8px 4px; font-size:12px; }
.schev-navigation { display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; border-top:1px solid #e4ebe4; padding:12px 16px; background:#fcfdfb; }
.schev-navigation strong { font-size:12px; color:#496452; }
.schev-standings { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; gap:16px; margin-top:17px; }
.schev-standings .panel { min-width:0; }
.schev-standings .table-wrap { overflow-x:auto; }
.schev-standings table { font-size:11px; }
.schev-standings th,.schev-standings td { padding:9px 7px; }
.schev-standings .panel-title { align-items:start; gap:10px; }
@media(max-width:920px) { .schev-standings { grid-template-columns:1fr; } }
@media(max-width:650px) { .schev-team-fields { grid-template-columns:1fr; } .schev-player-team { flex-wrap:wrap; } .schev-player-team select { min-width:0; width:100%; } .schev-filters { padding:10px; } .schev-filters label { flex:1 1 130px; display:block; } .schev-filters select { width:100%; margin-top:4px; } .schev-filters .muted-sm { text-align:left; } .schev-match-list { grid-template-columns:1fr; } .schev-match { grid-template-columns:1fr 82px 1fr; gap:5px; padding:8px; } .schev-board-number { grid-column:1/-1; } .schev-encounters { padding:8px; } .schev-encounter { padding:9px; } .schev-navigation strong { order:-1; width:100%; text-align:center; } }
@media print { .schev-filters,.schev-navigation { display:none!important; } .schev-standings { grid-template-columns:1fr; } .schev-encounter { break-inside:avoid; } }

/* Separate player identity from team in Scheveningen standings. */
.schev-standings .table-sub { display: block; margin-top: 3px; font-size: .8rem; color: #66756d; }
/* Escalera: estilos acotados para conservar el resto de los sistemas. */
.ladder-card { border:1px solid var(--line); border-radius:12px; padding:20px; margin:18px 0; background:var(--white); }
.ladder-card summary,.ladder-game summary { cursor:pointer; font-weight:650; }
.ladder-fields { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px; margin:16px 0; }
.ladder-fields label,.ladder-card>label { display:flex; flex-direction:column; gap:6px; font-size:14px; margin-bottom:12px; }
.ladder-fields input,.ladder-fields select,.ladder-card>label input,.ladder-card>label select { max-width:100%; padding:9px; border:1px solid var(--line); border-radius:7px; background:white; color:var(--ink); }
.ladder-card label:has(input[type=checkbox]) { flex-direction:row; align-items:center; }
.ladder-presence { display:flex; flex-wrap:wrap; gap:16px; padding:12px 0; }
.ladder-game { padding:15px; margin:12px 0; border:1px solid var(--line); border-radius:8px; }
.ladder-notice { border-left:4px solid #b17b22; background:#fff5df; padding:16px; margin:16px 0; }
.ladder-view .action-row { flex-wrap:wrap; }
.ladder-view .table-wrap { overflow-x:auto; }
.ladder-view .kpi strong { font-size:20px; }
