:root{--classic-font:"Segoe UI", Tahoma, sans-serif;--classic-font-size:13px;--classic-control-height:32px;--classic-title-height:35px;--classic-radius:2px;--classic-space-1:4px;--classic-space-2:8px;--classic-space-3:12px;--classic-workspace:#f1f4f2;--classic-surface:#fff;--classic-surface-alt:#edf1ef;--classic-toolbar:#e3e8e5;--classic-border:#b7c1bb;--classic-border-strong:#74827a;--classic-text:#17211b;--classic-muted:#5c6961;--classic-danger:#922d37;--classic-warning:#815814;--classic-success:#176447}.other-sports{gap:var(--classic-space-1) var(--classic-space-3);border-bottom:1px solid var(--classic-border-strong);background:var(--classic-toolbar);min-height:30px;color:var(--classic-text);font-family:var(--classic-font);flex-wrap:wrap;align-items:center;padding:2px max(14px,50vw - 700px);font-size:11px;display:flex}.other-sports-label{color:var(--classic-muted);letter-spacing:.04em;text-transform:uppercase;font-weight:700}.other-sports ul{gap:var(--classic-space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.other-sports a,.other-sports li>span{border-radius:var(--classic-radius);min-height:24px;color:var(--classic-text);border:1px solid #0000;align-items:center;gap:6px;padding:2px 10px;text-decoration:none;display:inline-flex}.other-sports a:hover{border-color:var(--classic-border-strong);background:var(--classic-surface-alt)}.other-sports a:focus-visible{outline:2px solid var(--accent,var(--classic-border-strong));outline-offset:1px}.other-sports li.current>span{border-color:var(--classic-border-strong);border-bottom:3px solid var(--accent,var(--classic-text));background:var(--classic-surface);font-weight:700}.other-sports small{color:var(--classic-muted);text-transform:uppercase;font-size:9px;font-weight:400}@media (width<=640px){.other-sports{padding:4px 10px}.other-sports a,.other-sports li>span{min-height:32px}}:root{color:var(--classic-text);font-family:var(--classic-font);font-size:var(--classic-font-size);font-synthesis:none;--surface:var(--classic-surface);--workspace:var(--classic-workspace);--surface-alt:var(--classic-surface-alt);--toolbar:var(--classic-toolbar);--border:var(--classic-border);--border-strong:var(--classic-border-strong);--text:var(--classic-text);--muted:var(--classic-muted);--accent:var(--association-primary,#355f3b);--accent-soft:var(--association-secondary,#e1ebd8);--danger:var(--classic-danger);--warning:var(--classic-warning);--success:var(--classic-success);background:#dfe5dc}*{box-sizing:border-box}body{background:#dfe5dc;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}a{color:var(--accent)}:is(a,button,input,select):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tennis-app{min-height:100vh}.site-header{z-index:20;border-bottom:1px solid var(--border-strong);background:var(--surface);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;min-height:54px;padding:0 max(14px,50vw - 720px);display:grid;position:sticky;top:0;box-shadow:0 1px 3px #17211b1c}.brand{min-width:210px;color:var(--text);align-items:center;gap:9px;padding-right:20px;text-decoration:none;display:flex}.brand>span:last-child{line-height:1.1;display:grid}.brand small{color:var(--muted);margin-top:3px;font-size:9px}.brand-mark,.brand-logo{border:1px solid color-mix(in srgb, var(--accent) 80%, black);background:var(--accent);color:#fff;object-fit:contain;border-radius:2px;place-items:center;width:32px;height:32px;font-size:9px;font-weight:900;display:grid}.main-nav{align-self:stretch;min-width:0;display:flex;overflow-x:auto}.main-nav a{color:var(--muted);white-space:nowrap;place-items:center;padding:0 9px;font-size:11px;text-decoration:none;display:grid;position:relative}.main-nav a:hover{background:var(--surface-alt);color:var(--text)}.main-nav a.active{color:var(--text);font-weight:700}.main-nav a.active:after{background:var(--accent);content:"";height:3px;position:absolute;bottom:0;left:7px;right:7px}.admin-link,.button{border:1px solid var(--border-strong);background:var(--surface);min-height:30px;color:var(--text);cursor:pointer;border-radius:2px;padding:6px 10px;text-decoration:none}.admin-link:hover,.button:hover{background:var(--surface-alt)}.button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.button.danger,button.danger{color:var(--danger)}.system-banner{color:#584116;text-align:center;background:#fff3d5;border-bottom:1px solid #c59b50;padding:7px 14px}.system-banner.error{color:#6e2029;background:#f9e4e7;border-color:#c47c84}.site-main{border:1px solid var(--border-strong);background:var(--workspace);border-radius:3px;width:calc(100% - 28px);max-width:1440px;min-height:calc(100vh - 122px);margin:14px auto 22px;padding:15px;box-shadow:0 2px 6px #17211b20}.site-footer{max-width:1440px;color:var(--muted);justify-content:space-between;margin:0 auto;padding:0 14px 18px;font-size:10px;display:flex}.page-header{border-bottom:1px solid var(--border);min-height:62px;margin-bottom:12px;padding-bottom:10px}.page-header h1,.dashboard-title h1{letter-spacing:-.025em;margin:2px 0 3px;font-size:24px}.page-header p:last-child{color:var(--muted);margin:0}.eyebrow{color:var(--accent);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:9px;font-weight:800}.dashboard-title{border-bottom:1px solid var(--border);justify-content:space-between;align-items:end;gap:20px;margin-bottom:12px;padding:1px 1px 11px;display:flex}.dashboard-title>div:last-child{align-items:center;gap:8px;display:flex}.dashboard-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.window{border:1px solid var(--border);background:var(--surface);border-radius:2px;min-width:0;margin:0 0 12px;overflow:hidden}.title-bar{min-height:var(--classic-title-height);border-bottom:1px solid var(--border);background:var(--toolbar);padding:8px 10px;font-size:12px;font-weight:700}.window-body{min-width:0;padding:11px}.status-bar{border-top:1px solid var(--border);background:var(--toolbar);min-height:26px;color:var(--muted);padding:5px 10px;font-size:10px}.empty-state{border:1px dashed var(--border-strong);background:var(--surface);text-align:center;place-content:center;min-height:90px;padding:22px;display:grid}.window-body>.empty-state{border:0}.empty-state strong{font-size:14px}.empty-state p{color:var(--muted);margin:4px 0 0}.empty-state .button{margin-top:10px}.loading{color:var(--muted);text-align:center;padding:40px}.muted{color:var(--muted)}.status{border:1px solid var(--border);background:var(--surface-alt);color:var(--muted);text-transform:uppercase;border-radius:2px;padding:2px 5px;font-size:8px;font-weight:800;display:inline-block}.status.active,.status.finished,.status.completed,.status.champion{color:var(--success);background:#e1f1e9;border-color:#8bb5a3}.status.in_progress,.status.retired{color:var(--danger);background:#f8e7e9;border-color:#cc8187}.status.registration,.status.scheduled,.status.draft{color:var(--warning);background:#fff1d5;border-color:#d0ad71}.status.cancelled,.status.withdrawn,.status.inactive{color:var(--danger);background:#f7e4e7;border-color:#d3a0a6}.current-tournament{grid-template-columns:minmax(200px,1fr) auto auto;align-items:center;gap:18px;display:grid}.current-tournament h2{margin:3px 0;font-size:22px}.current-tournament dl{border:1px solid var(--border);margin:0;display:flex}.current-tournament dl div{border-right:1px solid var(--border);min-width:130px;padding:8px}.current-tournament dl div:last-child{border:0}.current-tournament dt{color:var(--muted);text-transform:uppercase;font-size:8px}.current-tournament dd{margin:3px 0 0;font-weight:700}.match-row{border-bottom:1px solid var(--border);min-height:43px;color:var(--text);grid-template-columns:145px minmax(100px,1fr) 35px minmax(100px,1fr) 80px;align-items:center;text-decoration:none;display:grid}.match-row:hover{background:var(--accent-soft)}.match-row>*{padding:6px 8px}.match-row time{color:var(--muted);font-size:10px}.match-row>strong{text-align:center}.ranking-list{counter-reset:rank;margin:0;padding:0;list-style:none}.ranking-list li{border-bottom:1px solid var(--border);counter-increment:rank;grid-template-columns:24px minmax(100px,1fr) auto 24px;align-items:center;min-height:36px;display:grid}.ranking-list li:before{color:var(--muted);content:counter(rank) "."}.ranking-list strong{text-align:right;font-size:16px}.ranking-list small{color:var(--muted);text-align:right}.record-grid{border:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(3,minmax(0,1fr));display:grid;overflow:hidden}.record-card{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:92px;color:var(--text);align-items:center;gap:12px;padding:12px;text-decoration:none;display:flex}.record-card:hover{background:var(--accent-soft)}.record-card h2{margin:3px 0;font-size:15px}.record-card p{color:var(--muted);margin:0;font-size:10px}.record-icon,.player-avatar{border:1px solid var(--border);background:var(--surface-alt);width:50px;height:50px;color:var(--accent);border-radius:2px;flex:none;place-items:center;font-size:9px;font-weight:900;display:inline-grid;overflow:hidden}.player-avatar img{object-fit:cover;width:100%;height:100%}.dense-list{display:grid}.dense-list article{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;min-height:42px;padding:7px 2px;display:flex}.dense-list article>div{gap:2px;display:grid}.dense-list small,.dense-list span{color:var(--muted);font-size:10px}.toolbar,.admin-toolbar{border:1px solid var(--border);background:var(--toolbar);align-items:center;gap:9px;min-height:40px;margin-bottom:12px;padding:5px 8px;display:flex}.toolbar select{border:1px solid var(--border-strong);background:#fff;min-width:220px;min-height:30px;padding:4px 7px}.toolbar label{text-transform:uppercase;font-size:9px;font-weight:700}.bracket{border:1px solid var(--border-strong);background:var(--surface-alt);grid-auto-columns:minmax(225px,1fr);grid-auto-flow:column;gap:18px;min-height:520px;padding:12px;display:grid;overflow-x:auto}.bracket-round{grid-template-rows:auto 1fr;min-width:0;display:grid}.bracket-round h2{border:1px solid var(--border);background:var(--toolbar);text-align:center;text-transform:uppercase;margin:0;padding:8px;font-size:11px}.bracket-matches{flex-direction:column;justify-content:space-around;gap:10px;padding-block:10px;display:flex}.bracket-match{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);text-decoration:none;display:grid;position:relative;box-shadow:1px 1px #fff}.bracket-match:after{border-top:1px solid var(--border-strong);content:"";width:18px;position:absolute;top:50%;right:-19px}.bracket-round:last-child .bracket-match:after{display:none}.bracket-match>span:not(.status){border-bottom:1px solid var(--border);grid-template-columns:1fr 24px;align-items:center;min-height:34px;padding:5px 7px;display:grid}.bracket-match>span.winner{background:var(--accent-soft);font-weight:700}.bracket-match i{text-align:center;font-style:normal}.bracket-match .status{position:absolute;top:-7px;right:5px}.metric-strip{border:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(5,1fr);margin-bottom:12px;display:grid}.metric-strip article{border-right:1px solid var(--border);padding:10px 12px}.metric-strip article:last-child{border:0}.metric-strip span{color:var(--muted);text-transform:uppercase;font-size:8px;font-weight:800;display:block}.metric-strip strong{margin-top:3px;font-size:21px;display:block}.h2h-link{border-bottom:1px solid var(--border);padding:8px;display:block}.match-detail{text-align:center;grid-template-columns:1fr 80px 1fr;align-items:center;min-height:130px;display:grid}.match-detail-player{justify-items:center;gap:8px;font-size:16px;font-weight:700;display:grid}.match-detail>strong{font-size:20px}.set-score{border:1px solid var(--border);max-width:620px;margin:0 auto 10px}.score-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(150px,1fr) repeat(5,42px);align-items:center;min-height:38px;display:grid}.score-row:last-child{border:0}.score-row>*{padding:7px}.score-row strong{border-left:1px solid var(--border);text-align:center}.score-row.winner{background:var(--accent-soft)}.h2h-score{text-align:center;grid-template-columns:1fr 100px 1fr;align-items:center;min-height:190px;display:grid}.h2h-score-player{justify-items:center;gap:7px;display:grid}.h2h-score strong{font-size:42px}.h2h-score>b{color:var(--muted);font-size:20px}.history-grid{grid-template-columns:1fr 1fr;gap:18px;display:grid}.history-grid h3{margin:0 0 8px;font-size:12px}.history-grid article{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:7px 0;display:flex}.table-scroll{max-width:100%;overflow:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:11px}th{border:1px solid var(--border);background:var(--toolbar);color:var(--muted);text-align:left;text-transform:uppercase;white-space:nowrap;padding:7px 8px;font-size:9px}td{border:1px solid var(--border);background:var(--surface);padding:7px 8px}tbody tr:hover td{background:var(--accent-soft)}.table-empty{color:var(--muted);text-align:center;padding:20px}.admin-toolbar{justify-content:space-between}.admin-grid{border:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(3,1fr);display:grid;overflow:hidden}.admin-module{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:68px;color:var(--text);align-content:center;padding:10px 12px;text-decoration:none;display:grid}.admin-module:hover{background:var(--accent-soft)}.admin-module span{color:var(--muted);margin-top:4px;font-size:10px}.form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.form-grid>p{grid-column:1/-1}.form-grid label{color:var(--muted);text-transform:uppercase;gap:4px;font-size:9px;font-weight:700;display:grid}.form-grid input,.form-grid select{width:100%;min-height:var(--classic-control-height);border:1px solid var(--border-strong);color:var(--text);background:#fff;border-radius:1px;padding:5px 7px}.dialog-actions{grid-column:1/-1;justify-content:flex-end;gap:7px;margin-top:4px;display:flex}.form-message{background:var(--accent-soft);color:var(--success);grid-column:1/-1;margin:0 0 10px;padding:7px}.form-message.error{color:var(--danger);background:#f7e4e7}.data-window{margin-top:12px}.row-actions{white-space:nowrap;gap:5px;display:flex}.row-actions button{border:1px solid var(--border);background:var(--surface);cursor:pointer;padding:3px 6px}.login-window{max-width:560px;margin:30px auto}.login-window .form-grid{grid-template-columns:1fr}.dialog-backdrop{z-index:50;background:#17211b80;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.confirm-dialog{width:min(480px,100%);box-shadow:0 8px 30px #0005}@media (width<=1000px){.site-header{grid-template-columns:auto 1fr}.main-nav{grid-area:2/1/auto/-1;min-height:38px}.main-nav a{min-height:38px}.record-grid{grid-template-columns:repeat(2,1fr)}.current-tournament{grid-template-columns:1fr auto}.current-tournament dl{grid-column:1/-1}}@media (width<=720px){.site-main{width:calc(100% - 16px);margin-top:8px;padding:9px}.brand{min-width:0}.brand small{display:none}.dashboard-columns,.history-grid,.record-grid,.admin-grid{grid-template-columns:1fr}.metric-strip{grid-template-columns:repeat(3,1fr)}.form-grid{grid-template-columns:1fr}.match-row{grid-template-columns:90px 1fr 28px 1fr}.match-row .status{display:none}.current-tournament{grid-template-columns:1fr}.current-tournament dl{grid-column:auto}}@media (width<=470px){.site-header{padding-inline:8px}.dashboard-title{flex-direction:column;align-items:flex-start}.metric-strip{grid-template-columns:repeat(2,1fr)}.site-footer{flex-direction:column;align-items:flex-start;gap:4px}.match-detail,.h2h-score{grid-template-columns:1fr 45px 1fr}}.score-list{gap:10px;display:grid}.score-card{border:1px solid var(--border);background:var(--panel);padding:10px 12px}.score-card>header{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.score-card>p{margin:8px 0}.score-live{font-variant-numeric:tabular-nums;margin-left:auto;font-size:18px;font-weight:800}.score-form{border-top:1px solid var(--border);margin-top:8px;padding-top:8px}.game-points{color:var(--muted);margin-left:8px;font-size:11px;font-style:normal}
