:root{--background:#f4f6f2;--surface:#fff;--text:#172b25;--muted:#57685f;--border:#dce3dc;--success:#196348;--warning:#8b521b;--danger:#a53230;--accent:#225d44;--soft:#edf3eb;--radius:14px;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--text);background:var(--background);font-size:16px;line-height:1.5}
*{box-sizing:border-box}body{margin:0}a{color:inherit}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}h1,h2,h3,p{margin:0}h1{font-size:clamp(1.85rem,3vw,2.65rem);letter-spacing:-.04em;line-height:1.16;font-weight:750}h2{font-size:1.16rem;letter-spacing:-.025em}h3{font-size:1.05rem;line-height:1.4}small{font-size:.77rem}:focus-visible{outline:3px solid #c38313;outline-offset:4px;border-radius:3px}[hidden]{display:none!important}.skip-link{position:absolute;left:20px;top:-80px;z-index:100;background:white;padding:12px}.skip-link:focus{top:10px}.topbar{background:#173d2f;color:white}.topbar-inner{max-width:1440px;margin:auto;min-height:82px;padding:16px 40px;display:flex;align-items:center;gap:30px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;letter-spacing:.08em}.brand-mark{display:grid;place-items:center;width:39px;height:39px;border:1px solid #a1bdae;border-radius:8px;font-size:.9rem;letter-spacing:-.07em;color:#e2ed9d}.workspace-label{font-size:.66rem;letter-spacing:.15em;color:#c0d0c4;border-left:1px solid #597462;padding-left:28px}.nav-link{margin-left:auto;font-size:.86rem;text-decoration:none}.nav-link span{margin-left:12px}.workspace{max-width:1440px;padding:0 40px;margin:auto}.page-heading{display:flex;justify-content:space-between;gap:24px;padding:42px 0 30px;align-items:center}.eyebrow{font-size:.68rem;letter-spacing:.15em;font-weight:750;color:var(--success);margin-bottom:10px}.lead{font-size:1.12rem;color:var(--muted);margin-top:12px}.subtle{color:var(--muted);font-size:.83rem}.page-heading .subtle{margin-top:12px}.separator{margin:0 8px;color:#798980}.heading-symbol{font-size:5rem;color:#4a735b}.heading-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;min-width:230px}.heading-actions small{width:100%;text-align:right;color:var(--muted)}.live-dot{display:inline-block;width:6px;height:6px;background:var(--success);border-radius:50%;margin-left:7px}.button{border:1px solid transparent;border-radius:7px;min-height:44px;padding:10px 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-size:.85rem;font-weight:650;line-height:1.35;background:transparent;white-space:normal}.primary{background:var(--accent);color:#fff}.primary:hover{background:#173f2e}.secondary{border-color:var(--border);background:white;color:var(--text)}.secondary:hover,.quiet:hover{background:var(--soft)}.quiet{color:var(--muted);padding-left:10px;padding-right:10px}.danger{background:var(--danger);color:white}.badge{display:inline-flex;align-items:center;white-space:nowrap;border:1px solid var(--border);background:var(--soft);padding:4px 9px;border-radius:5px;font-size:.68rem;font-weight:750;letter-spacing:.03em}.badge.playing{background:#fff2dd;border-color:#ebd2a5;color:#825017}.badge.assigned{background:#e9f0fc;color:#254d7d;border-color:#ccd9ef}.badge.ready,.badge.available{background:#eaf4ed;color:#235d3f;border-color:#cdded1}.badge.waiting{background:#f5f2eb;color:#75572d;border-color:#e3dacb}.badge.inactive{background:#ededed;color:#626262}.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:19px 0;margin-bottom:27px}.stats-strip>div{display:flex;align-items:center;gap:13px;padding-left:24px;border-left:1px solid var(--border)}.stats-strip>div:first-child{border:0;padding-left:0}.stats-strip strong{font-size:1.7rem;letter-spacing:-.05em;font-variant-numeric:tabular-nums;line-height:1}.stats-strip strong small{font-size:1rem;color:var(--muted);font-weight:500}.stats-strip span{font-size:.78rem;color:var(--muted)}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 14px}.court-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.court-card{background:var(--surface);border:1px solid var(--border);border-top:3px solid #b2c8b5;border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;min-width:0;min-height:290px;box-shadow:0 3px 8px #10261903}.court-card.playing{border-top-color:#b87c2b}.court-card.assigned{border-top-color:#6286b7}.court-card.inactive{border-top-color:#9fa49f;background:#f0f1ef}.court-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.court-top h3{font-weight:750}.court-match{flex:1}.event-label{font-size:.7rem;color:var(--muted);line-height:1.45}.opponents{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin:12px 0 12px;overflow-wrap:anywhere}.opponents strong{font-size:1.25rem;letter-spacing:-.025em;line-height:1.35}.opponents>span{font-size:.73rem;color:#728075}.recommend-label{font-size:.73rem;color:var(--success);font-weight:700;margin:0 0 10px}.recommend-label span{float:right;font-weight:400;color:var(--muted)}.court-actions{display:flex;align-items:center;gap:6px;margin-top:18px}.court-actions>form:first-child,.court-actions>a:first-child{flex:1}.court-actions .primary{width:100%}.court-actions form{margin:0}.court-empty{display:flex;flex:1;align-items:center;justify-content:center;text-align:center;flex-direction:column;gap:10px;padding:8px 20px;color:var(--muted)}.court-empty p{font-size:.79rem}.court-outline{position:relative;width:56px;height:36px;border:1px solid #9eb4a4;background:linear-gradient(90deg,transparent 49%,#9eb4a4 49%,#9eb4a4 51%,transparent 51%)}.court-outline:after{content:"";position:absolute;inset:6px 0;border-block:1px solid #9eb4a4}.operations-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;align-items:start;gap:24px;margin-top:30px}.panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-width:0;overflow:hidden}.panel-heading{display:flex;justify-content:space-between;align-items:center;padding:22px 22px 18px;gap:10px;border-bottom:1px solid var(--border)}.panel-heading p{margin-top:3px;font-size:.75rem}.count-pill{font-size:.72rem;border:1px solid var(--border);border-radius:30px;padding:3px 8px;color:var(--muted);white-space:nowrap}.match-row{display:grid;grid-template-columns:48px minmax(0,1fr);gap:15px;padding:20px;border-bottom:1px solid var(--border)}.match-row:last-child{border-bottom:0}.priority{text-align:center}.order-number{font-size:1rem;font-weight:750;font-variant-numeric:tabular-nums}.order-controls{display:flex;flex-direction:column;align-items:center;margin-top:8px;gap:2px}.order-controls button{width:44px;min-height:44px;border:1px solid var(--border);background:var(--surface);border-radius:5px;font-size:1rem}.order-controls button:hover:not(:disabled){background:var(--soft)}.row-top{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-bottom:7px}.match-detail h3{font-size:1rem;overflow-wrap:anywhere}.recommended-note{font-size:.76rem;color:var(--success);margin-top:7px}.waiting-reasons{padding:0;list-style:none;margin:7px 0 0;color:#71552f;font-size:.78rem}.waiting-reasons li+li{margin-top:4px}.secondary-actions{display:flex;gap:8px;margin-top:6px}.secondary-actions .button{font-size:.73rem;padding:6px 8px;min-height:44px}.checkin-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:14px 19px;border-bottom:1px solid var(--border)}.checkin-row:last-child{border-bottom:0}.checkin-row strong{font-size:.83rem;overflow-wrap:anywhere}.checkin-state{display:block;font-size:.72rem;margin-top:2px}.present{color:var(--success)}.absent{color:var(--warning)}.checkin-row .button{font-size:.73rem;white-space:nowrap}.history{border-top:1px solid var(--border);padding:16px 20px}.history summary{cursor:pointer;font-size:.8rem;font-weight:650;min-height:44px;padding-top:8px}.history-row{padding:12px 0;border-top:1px solid var(--border);font-size:.8rem}.history-row .badge{margin-left:6px}.history-row p{color:var(--muted);font-size:.72rem;margin-top:5px}.notice{padding:15px 18px;border:1px solid #b8d1bf;border-radius:8px;background:#e7f2e9;color:#245838;margin-top:22px;font-size:.9rem}.notice.error{background:#fff1ee;color:#832c29;border-color:#e8c0b7}.footer{text-align:center;padding:40px 20px 24px;font-size:.72rem;color:var(--muted)}.footer span{padding:0 6px}.tournament-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.tournament-card{background:white;border:1px solid var(--border);border-radius:var(--radius);padding:28px}.card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.card-top .eyebrow{margin:0}.tournament-card h2{font-size:1.55rem;line-height:1.25;margin-bottom:12px}.tournament-card .button{margin-top:30px;width:100%;justify-content:space-between}.empty-panel{padding:28px;color:var(--muted);font-size:.9rem}.empty-panel h2{margin-bottom:10px}dialog{border:1px solid var(--border);border-radius:16px;padding:28px;max-width:500px;width:calc(100% - 32px);max-height:90vh;color:var(--text)}dialog::backdrop{background:#10271dcc;backdrop-filter:blur(2px)}.dialog-heading h2{font-size:1.6rem;margin-bottom:10px}.dialog-heading>p:last-child{color:var(--muted);font-size:.9rem}.dialog-heading{margin-bottom:22px}.dialog-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px;flex-wrap:wrap}fieldset{padding:0;border:0;margin:0 0 18px}legend{font-size:.85rem;font-weight:650;margin-bottom:10px}.winner-option{display:flex;align-items:center;gap:12px;min-height:54px;padding:12px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px;cursor:pointer}.winner-option:has(input:checked){background:var(--soft);border-color:var(--success)}input[type=radio],input[type=checkbox]{width:19px;height:19px;accent-color:var(--accent);flex-shrink:0}.confirm-option{display:flex;align-items:center;gap:10px;font-size:.86rem;min-height:48px}.confirmation-page{max-width:540px;margin:40px auto;background:white;border:1px solid var(--border);border-radius:var(--radius);padding:26px}.htmx-request{cursor:progress}
@media(max-width:1050px){.workspace{padding:0 24px}.topbar-inner{padding:16px 24px}.operations-grid{grid-template-columns:minmax(0,1fr) 290px;gap:18px}.court-card{padding:16px}.page-heading{align-items:flex-start}.heading-actions{min-width:170px}.opponents strong{font-size:1.1rem}.court-actions{flex-wrap:wrap}.court-actions>a,.court-actions>form{flex-basis:100%}}
@media(max-width:800px){.court-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.operations-grid{grid-template-columns:1fr}.workspace-label{display:none}.stats-strip>div{padding-left:14px;gap:8px}.stats-strip span{font-size:.7rem}.page-heading{flex-direction:column}.heading-actions{width:100%;justify-content:flex-start}.heading-actions small{width:auto;text-align:left;margin-left:auto}.court-actions{flex-wrap:nowrap}.court-actions>a,.court-actions>form{flex-basis:auto}}
@media(max-width:520px){.workspace{padding:0 16px}.topbar-inner{padding:14px 16px;min-height:68px;gap:12px}.brand{font-size:.86rem;gap:8px}.brand-mark{width:33px;height:33px}.nav-link{font-size:.75rem}.page-heading{padding:26px 0 22px;gap:18px}.page-heading .subtle{font-size:.75rem;line-height:1.8}.separator{margin:0 4px}.court-grid{grid-template-columns:1fr;gap:14px}.court-card{padding:19px;min-height:280px}.stats-strip{grid-template-columns:repeat(2,1fr);row-gap:22px}.stats-strip>div:nth-child(3){padding-left:0;border-left:0}.stats-strip span{font-size:.74rem}.section-heading{align-items:flex-start}.section-heading .subtle{max-width:160px;text-align:right;font-size:.7rem}.heading-actions small{width:100%;margin:0}.match-row{padding:16px 12px;gap:10px;grid-template-columns:44px minmax(0,1fr)}.row-top{align-items:flex-start}.match-detail h3{font-size:.93rem}.panel-heading{padding:18px 16px}.opponents strong{font-size:1.25rem}.dialog-actions .button{flex:1}.tournament-grid{grid-template-columns:1fr}.heading-symbol{display:none}}
.score-entry{display:grid;gap:8px;margin:16px 0;min-width:0}.score-head,.score-row{display:grid;grid-template-columns:minmax(90px,1.3fr) repeat(2,minmax(0,1fr));gap:8px;align-items:center;min-width:0}.score-head strong{font-size:.78rem;overflow-wrap:anywhere;line-height:1.25}.score-row label{font-size:.83rem;font-weight:650}.score-row input[type=number]{width:100%;min-width:0;height:48px;border:1px solid var(--border);border-radius:7px;padding:8px;text-align:center;font-size:1.1rem}.dialog-heading p{overflow-wrap:anywhere}dialog{overflow-y:auto}dialog form>label{display:block;margin:10px 0}dialog select{width:100%;min-height:44px;padding:8px;border:1px solid var(--border);border-radius:7px;background:white}
.deciding-set{min-width:0}.deciding-set summary{cursor:pointer;min-height:44px;padding:10px 0;font-size:.85rem;font-weight:650}.deciding-set .score-row{margin-top:6px}

/* Authentication and account management */
.auth-panel{max-width:520px;margin:2rem auto;padding:2rem}.auth-panel h1{font-size:2rem}.account-form{display:grid;gap:12px}.account-form input:not([type=checkbox]):not([type=hidden]),.account-form select{min-height:44px;width:100%;padding:10px;border:1px solid var(--border);border-radius:6px;background:white;color:var(--text);font:inherit}.account-form label{font-weight:600}.account-form input[type=checkbox]{width:20px;height:20px;vertical-align:middle;margin-right:8px}.user-nav{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.user-list{padding:1rem}.user-account{display:flex;justify-content:space-between;gap:1rem;padding:1rem;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.user-account h2{font-size:1.1rem}.topbar-inner{flex-wrap:wrap;gap:16px}.user-nav .nav-link{margin:0}@media(max-width:600px){.user-account{display:block}.user-account form{margin-top:1rem}.auth-panel{padding:1.2rem}.user-nav{width:100%;justify-content:space-between}.workspace-label{display:none}}
/* Tournament setup */
.setup-nav{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 28px}.setup-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:24px;margin-bottom:24px}.setup-panel{padding:24px;margin-bottom:24px;min-width:0}.setup-panel h2,.setup-panel h3{margin-bottom:16px}.setup-form{display:grid;gap:12px;margin:16px 0}.setup-form label{display:grid;gap:6px;font-weight:600}.setup-form input:not([type=checkbox]):not([type=hidden]),.setup-form select{width:100%;min-width:0;min-height:44px;padding:10px;font:inherit;background:white;color:var(--text);border:1px solid var(--border);border-radius:6px}.setup-form input[type=checkbox]{width:20px;height:20px}.setup-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px}.setup-row,.setup-list article{padding:18px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.setup-row h3,.setup-row h4{margin-bottom:8px}.setup-inline{display:flex;gap:12px;flex-wrap:wrap}.draw-preview{border-top:2px solid var(--border);margin-top:24px;padding-top:24px}.draw-preview li{padding:8px}.setup-panel p{line-height:1.6}.setup-panel select{max-width:100%}@media(max-width:800px){.setup-columns{grid-template-columns:1fr}.setup-panel{padding:18px}.setup-cards{grid-template-columns:1fr}}

.control-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:12px}
.control-summary>div{background:var(--surface);padding:12px;display:flex;flex-direction:column;gap:3px}
.control-summary strong{font-size:1.4rem;font-variant-numeric:tabular-nums}.control-summary span{font-size:.75rem;color:var(--muted)}
.control-jumps{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}.control-jumps a{min-height:44px;padding:12px 8px;font-size:.82rem}
.progress-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;overflow-wrap:anywhere}
.player-help,.player-group{padding:12px 18px}.player-help{font-size:.8rem;color:var(--muted)}.player-group{background:var(--soft)}
.checkin-row>div{min-width:0;overflow-wrap:anywhere}.checkin-row form{flex-shrink:0}.checkin-row .badge{margin:5px 0}.checkin-row .subtle{margin-top:5px}
.badge.resting{background:#fff2dd;color:#825017}.badge.not_arrived{background:#f5f2eb;color:#75572d}.recent-results{margin-top:24px}.history-row{overflow-wrap:anywhere}
.match-detail .badge{white-space:normal;text-align:center}.control-jumps a:focus-visible{outline:3px solid #c38313}
@media(max-width:900px){.control-summary{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:540px){.control-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.control-summary>div{padding:9px}.progress-row{align-items:flex-start;flex-direction:column}.control-jumps{gap:2px}}
.player-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.player-management{overflow-wrap:anywhere}.player-management .setup-form{max-width:680px}.player-management .section-heading{flex-wrap:wrap}.player-management .setup-list article{min-width:0}.player-management>p{margin:12px 0}
.tournament-actions{display:grid;gap:10px;margin-top:24px}
.tournament-card .tournament-actions .button{margin-top:0}

/* Live tournament control */
.next-match{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.5fr);gap:28px;padding:26px;margin-bottom:28px;border-top:4px solid var(--accent)}
.next-match h2{font-size:1.15rem;margin-bottom:16px}.next-match h3{font-size:1.65rem;line-height:1.3;margin:10px 0;overflow-wrap:anywhere}.next-match-copy{min-width:0}.next-match-action{align-self:center}.next-match-action .setup-form{margin-bottom:0}
.progress-summary{margin-top:26px;padding:20px 0;border-bottom:1px solid var(--border)}.progress-summary p{margin-top:10px;overflow-wrap:anywhere}
.badge.rest{background:#fff2dd;color:#825017}.badge.dependency{background:#f5f2eb;color:#75572d}
@media(max-width:650px){.next-match{grid-template-columns:1fr;padding:19px;gap:18px}.next-match h3{font-size:1.3rem}}

.live-status{font-size:.85rem;color:var(--muted);margin:12px 0;overflow-wrap:anywhere}.live-status [role="status"]{display:block}
.team-sides{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:1rem}.team-sides fieldset{min-width:0;border:1px solid #c9d5d9;border-radius:.5rem}.team-sides select{max-width:100%;width:100%}.team-fixture{margin-block:1.25rem}.team-fixture details{margin-block:.75rem}.team-table-wrap{overflow-x:auto}.team-table{width:100%;border-collapse:collapse}.team-table th,.team-table td{padding:.4rem;text-align:left;border-bottom:1px solid #ddd}
