:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#e8eeeb;background:#101a1b;color-scheme:dark;--mint:#a5dfcd;--amber:#edbd88;--dim:#95aaa3;--line:#30483e;--panel:#162720}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 10% 0%,#19322e 0,transparent 48%),#101a1b}main{max-width:560px;margin:auto;padding:16px 14px 28px}button,input,select{font:inherit}button,.choose-button,.button-label{border:1px solid #466455;border-radius:7px;padding:9px 11px;color:#d8e9df;background:#20392d;cursor:pointer;font-size:12px;font-weight:600;text-decoration:none;line-height:1.15;display:inline-flex;justify-content:center;align-items:center;min-height:36px}button:hover,.choose-button:hover,.button-label:hover{background:#2b4938}button:focus-visible,label:has(input:focus-visible),input:focus-visible,select:focus-visible,summary:focus-visible,svg:focus-visible{outline:2px solid var(--mint);outline-offset:3px}button:disabled{opacity:.4;cursor:default}.primary{background:var(--mint);border-color:var(--mint);color:#143328}.primary:hover{background:#c0ebdc}[hidden]{display:none!important}.masthead{display:flex;justify-content:space-between;align-items:center;height:23px}.wordmark{font-size:13px;letter-spacing:.18em;font-weight:800;color:#e8eeeb;text-decoration:none}.pilot-tag{font-size:8px;color:var(--dim);letter-spacing:.16em}.privacy-note{font-size:9px;color:#b5c9bf;border:1px solid #384d43;background:#1b2e26;border-radius:5px;padding:7px 9px;margin:10px 0}.privacy-note span{padding:0 4px}.source-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px;min-height:36px}.source-bar span{font-size:10px;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.choose-button{font-size:11px;flex-shrink:0}input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}.playback{border:1px solid #344b41;border-radius:10px;background:#162320;overflow:hidden;box-shadow:0 18px 70px #0002}.video-wrap{background:#0c1715}video,#video-placeholder{display:block;width:100%;height:min(43svh,390px);object-fit:contain;background:#0c1715}#video-placeholder{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:25px}.placeholder-mark{font-size:40px;font-weight:300;color:var(--mint);margin:0 0 15px}h1{font-size:23px;letter-spacing:-.03em;line-height:1.15;margin:0 0 10px;font-weight:550}#video-placeholder p{font-size:12px;line-height:1.65;color:var(--dim);margin:0}.score-strip{display:flex;justify-content:center;align-items:center;gap:13px;padding:8px 11px;min-height:49px;background:#203b2b;border-top:1px solid #3e5d44}.team{display:flex;align-items:center;gap:7px;min-width:0}.team>span{font-size:10px;max-width:85px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team output{font-size:24px;line-height:1;font-weight:650;font-variant-numeric:tabular-nums;min-width:16px;text-align:center}.team i{display:block;width:6px;height:6px;border-radius:50%;flex-shrink:0}.team-a i{background:var(--mint)}.team-b i{background:var(--amber)}.score-caption{font-size:6px;line-height:1.5;color:#aac1ad;text-align:center;letter-spacing:.13em}.court-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 12px 0;font-size:10px;color:#d5e6dc}.muted{color:#87a392}.court-head button{font-size:9px;padding:6px 8px;min-height:28px}.court-floor{fill:#193b2b;stroke:#9fc8ac;stroke-width:1.4}.net{stroke:#d3dfcc;stroke-width:1.4;stroke-dasharray:4 4}#court{display:block;width:100%;height:171px;outline-offset:-3px}.court-orientation{text-anchor:middle;font-size:7px;letter-spacing:.15em;fill:#8da995}.player-dot circle{stroke:#13261d;stroke-width:2;fill:var(--mint)}.team-b-dot circle{fill:var(--amber)}.player-dot text{fill:#10251c;dominant-baseline:middle;text-anchor:middle;font-size:8px;font-weight:800;pointer-events:none}.court-empty{text-anchor:middle;font-size:9px;fill:#a6c4ae}.court-empty.small{font-size:7px;fill:#739b7d}.timeline-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-top:1px solid #2b4237;font-size:9px;color:#94ad9d}.timeline-bar output{color:#d6e7db;font-variant-numeric:tabular-nums}.timeline-bar #reel-state{font-size:8px;color:var(--amber)}.status{font-size:10px;line-height:1.45;color:#9eb9aa;margin:9px 2px 13px;min-height:15px}.error{font-size:12px;line-height:1.5;background:#422e24;color:#ffd1ab;border:1px solid #715039;border-radius:6px;padding:10px 12px;margin:10px 0}.tool-panel{border:1px solid var(--line);border-radius:8px;background:#14241f;margin:10px 0;overflow:hidden}.tool-panel summary{cursor:pointer;padding:13px 12px;font-size:12px;font-weight:550;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px}.tool-panel summary::after{content:'+';color:#92b2a0;font-size:17px;font-weight:400}.tool-panel[open] summary::after{content:'-'}.tool-panel summary>span{margin-left:auto;font-size:9px;color:#93ac9d;font-weight:400}.panel-content{padding:0 12px 13px}.panel-help{font-size:11px;line-height:1.6;color:#93b09f;margin:0 0 13px}.panel-help.compact{font-size:10px;margin:9px 0 0}.team-inputs{display:flex;gap:10px;margin-bottom:13px}.team-inputs label{flex:1;min-width:0;font-size:9px;color:#a5bdb0}.team-inputs input{width:100%;margin-top:5px;display:block}input[type=text],input:not([type]),input[type=number],select{border:1px solid #3d584b;background:#102019;border-radius:5px;padding:8px;color:#ddebe2;min-width:0;font-size:12px}.rally-start{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:5px 0 11px}.rally-start>span{font-size:9px;color:#aac5b3;flex:1;min-width:80px}.rally-start button{font-size:10px}.winner-actions{display:flex;gap:7px}.winner-actions button{flex:1;font-size:10px;padding:9px 5px}#winner-a{border-color:#799e86;color:var(--mint)}#winner-b{border-color:#9a7c59;color:var(--amber)}.reel-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;border-top:1px solid var(--line);margin-top:15px;padding-top:13px}.reel-controls label{font-size:10px;color:#a4bcae;display:flex;align-items:center;gap:5px}.reel-controls input{width:46px;padding:6px 4px;font-size:11px}.reel-controls button{font-size:10px;min-height:33px;padding:8px}.reel-controls #play-highlights{margin-left:auto}.action-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-items:center}.action-row button,.action-row label{font-size:10px}.editor-time{font-size:11px;color:#b3cbbc;margin-bottom:10px}.editor-time output{font-variant-numeric:tabular-nums;color:#ebf4ec}.player-picker{display:flex;gap:7px;margin-bottom:12px}.player-picker button{flex:1;color:var(--mint);font-size:12px}.player-picker button[data-player^=B]{color:var(--amber)}.player-picker button[aria-pressed=true]{background:#355a42;border-color:var(--mint)}.editing #court{touch-action:none;height:245px;cursor:crosshair}.editing .player-dot{cursor:grab}.editing .player-dot.selected circle{stroke:#f6f6df;stroke-width:2.5}#begin-edit{font-size:11px;width:100%}.review-list{margin-top:13px}.review-row{padding:12px 0;border-top:1px solid var(--line);font-size:10px;color:#a2bcab}.review-row:last-child{padding-bottom:0}.review-row-head{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-bottom:8px}.review-row-head strong{font-weight:550;color:#d4e7da}.review-row .row-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.review-row button{font-size:9px;padding:7px 9px;min-height:30px}.review-row select{font-size:10px;padding:6px;max-width:140px}.review-row label{display:flex;align-items:center;gap:5px;font-size:9px;min-height:30px}.review-row input[type=checkbox]{accent-color:var(--mint);width:15px;height:15px}.pending-tag{font-size:8px;color:var(--amber)}.delete-button{margin-left:auto;color:#c0ac9d;border-color:#594d3f;background:#2d2d23}footer{margin:23px 1px 0;padding-top:13px;border-top:1px solid var(--line);font-size:9px;font-weight:750;letter-spacing:.12em;color:#92aa9a;display:flex;justify-content:space-between;gap:12px}footer span{font-size:8px;font-weight:400;letter-spacing:0;color:#6f8c7d}dialog{background:#172b22;color:#e3eee5;border:1px solid #55715e;border-radius:12px;padding:22px;width:calc(100% - 36px);max-width:390px;box-shadow:0 25px 90px #0008}dialog::backdrop{background:#05120dc9}dialog h2{font-size:19px;letter-spacing:-.03em;margin:0 0 12px;font-weight:550}dialog p{font-size:12px;line-height:1.6;color:#a9c1b1;margin:0 0 20px}@media(min-width:600px){main{padding-top:27px}.masthead{height:30px}.wordmark{font-size:16px}.privacy-note{font-size:10px;margin:15px 0}video,#video-placeholder{height:390px}#court{height:194px}.tool-panel{margin:14px 0}.court-head{padding-top:10px}}@media(max-width:370px){main{padding:12px 10px 24px}.team>span{max-width:69px;font-size:9px}.score-strip{gap:10px}.court-head{font-size:9px}.muted{font-size:8px}.reel-controls{gap:7px}.source-bar span{font-size:9px}.privacy-note{font-size:8px}}

.initial-score{display:flex;align-items:center;gap:12px;margin-bottom:15px;font-size:10px;color:#a4bcae}.initial-score>span{margin-right:auto}.initial-score label{display:flex;align-items:center;gap:5px}.initial-score input{width:52px;padding:6px 5px;font-size:11px}

/* iPhone focus stays at the current scale; primary touch controls stay generous. */
input:not([type=file]),select,.team-inputs input,.initial-score input,.reel-controls input,.review-row select{font-size:16px}button,.choose-button,.button-label{min-height:44px}.court-head button{min-height:34px;padding:8px 10px;font-size:10px}.review-row button,.reel-controls button{min-height:40px}.team-inputs input{padding:9px 8px}.initial-score input{width:56px}.reel-controls input{width:52px}.review-row select{max-width:155px}.editing #court{height:280px}

/* Keep a paused picture, the editable court and draft actions together on phones. */
.position-editor{padding:10px 12px 12px;border-top:1px solid var(--line);background:#1a3025}.position-editor .editor-time{margin-bottom:8px;font-size:10px}.position-editor .player-picker{margin-bottom:8px}.position-editor .action-row{flex-wrap:nowrap;gap:7px}.position-editor .action-row button{flex:1;padding:9px 7px;min-height:40px}.editing video{height:min(20svh,150px)}.editing #court{height:220px}.step-controls{display:flex;gap:4px;margin-right:auto}.step-controls button{font-size:8px;min-height:30px;padding:5px 7px;background:#192f24;border-color:#3a5546}.timeline-bar{flex-wrap:wrap;column-gap:8px;row-gap:6px}.timeline-bar #position-state{font-size:8px}.timeline-bar #reel-state{width:100%;text-align:center}.source-bar:focus-within .choose-button,.action-row:focus-within .button-label{outline:2px solid var(--mint);outline-offset:3px}@media(min-width:600px){.editing video{height:180px}.editing #court{height:240px}.step-controls button{font-size:9px}}

.backup-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:#182b23;margin:0 0 10px}.backup-row button{font-size:10px;min-height:40px;flex-shrink:0}.backup-row p{flex:1;min-width:100px;margin:0;font-size:10px;line-height:1.45;color:#afc8b7}.backup-row #confirm-backup{border-color:#739e83;color:var(--mint)}.game-day-list{padding-left:19px;margin:0;color:#abc1b3;font-size:11px;line-height:1.6}.game-day-list li+li{margin-top:7px}

/* Operator-only tracking setup sits exactly over the rendered contain image. */
.video-wrap{position:relative}#tracking-overlay{position:absolute;z-index:2;touch-action:none;cursor:crosshair;overflow:visible;outline:2px solid var(--amber);outline-offset:-2px}.tracking-corner{fill:#f4d6a8;stroke:#142a20;stroke-width:5}.tracking-seed{fill:none;stroke:#f4d6a8;stroke-width:6}.tracking-marker-label{font-size:29px;fill:#fff;stroke:#10251c;stroke-width:5;paint-order:stroke;font-weight:800}.tracking-outline{fill:none;stroke:#f4d6a8;stroke-width:4;stroke-dasharray:10 8}.tracking-cursor{stroke:#fff;stroke-width:3;fill:none}.tracking-steps{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:11px 0}.tracking-steps button{font-size:10px}.tracking-steps button[aria-pressed=true],#tracking-seeds button[aria-pressed=true]{border-color:var(--amber);background:#4b402b;color:#ffe5b8}.tracking-steps button[data-placed=true],#tracking-seeds button[data-placed=true]{box-shadow:inset 0 -3px #bdb38b}#tracking-seeds button{font-size:12px}.tracking-run-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:9px;margin-top:12px}.tracking-run-row label{font-size:10px;color:#b0c4b7;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.tracking-run-row select{max-width:100%;min-width:0;font-size:16px}.tracking-run-row button{font-size:10px}#tracking-processing{padding-top:12px}#tracking-progress{width:100%;accent-color:var(--amber);height:12px}#tracking-processing button{margin-top:12px;font-size:11px}.player-dot.estimated circle{fill:#183729;stroke:var(--amber);stroke-width:2;stroke-dasharray:3 2}.player-dot.estimated text{fill:var(--amber)}.tracking-setup .video-wrap{overflow:visible}.tracking-setup video{height:min(56svh,440px)}.tracking-setup #court{height:140px}.tracking-processing #video{pointer-events:none}#tracking-result .tracking-run-row{align-items:flex-start}.tracking-setup #tracking-overlay[hidden]{display:none}

.tracking-run-row label{min-width:0;max-width:100%;flex:1 1 200px}#tracking-display{width:100%;max-width:100%}

.tracking-video-hint{margin:0;padding:9px 12px;background:#3d3828;border-top:1px solid #89714d;color:#f7deb6;font-size:12px;line-height:1.5}

/* Keep the rally action beside playback, outside the settings accordion. */
.rally-dock{padding:11px 12px 12px;background:#1c3328;border-top:1px solid #45634d;border-bottom:1px solid #45634d}.rally-dock-head{display:flex;justify-content:space-between;align-items:center;gap:9px;font-size:12px;line-height:1.4;margin-bottom:9px;color:#bcd3c3}.rally-dock-head>span{font-weight:650;flex-shrink:0}.rally-dock-head output{font-size:11px;color:#9fbea9;text-align:right}.rally-dock button{min-height:56px;font-size:17px;line-height:1.3;padding:12px 10px;min-width:0;white-space:normal;overflow-wrap:anywhere;text-align:center}.rally-dock #mark-start{width:100%}.rally-winner-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.rally-dock #winner-a{color:#143328;background:var(--mint);border-color:var(--mint)}.rally-dock #winner-b{color:#3e2b17;background:var(--amber);border-color:var(--amber)}.rally-dock #winner-a:hover{background:#c0ebdc}.rally-dock #winner-b:hover{background:#f4d2aa}.rally-help{font-size:12px;line-height:1.45;color:#aec7b5;margin:8px 0 0}.rally-secondary{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:10px}.rally-secondary button{font-size:15px;min-height:48px;padding:10px 8px;color:#c6d7cb}.rally-secondary #cancel-rally{color:#cdb8a2;background:#2b3024;border-color:#69604b}@media(min-width:600px){.rally-dock{padding:13px 14px}.rally-dock-head{font-size:13px}.rally-dock-head output{font-size:12px}.rally-help{font-size:13px}}

/* The everyday view is video, one capture control and a coaching canvas. */
.rally-dock{border-bottom:0}.rally-dock-head>span{font-size:12px}.coach-space{margin-top:10px;border:1px solid #344b41;border-radius:10px;background:#162720;padding:12px}.coach-head{display:flex;align-items:center;justify-content:space-between;gap:9px}.coach-head h2{font-size:14px;font-weight:650;margin:0;color:#d9eade}.coach-head span{font-size:10px;color:#8fad99}.coach-court{fill:#193b2b;stroke:#87b69c;stroke-width:1.5;stroke-dasharray:4 3}.coach-net{stroke:#a7c6b1;stroke-width:1;stroke-dasharray:4 4}#coach-board{display:block;width:100%;height:112px}.coach-placeholder{margin:0 0 11px;font-size:12px;line-height:1.45;color:#9fb8a9}.coach-moment-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center}.coach-moment-controls label{grid-column:1/-1;font-size:10px;color:#a9c2b0}.coach-moment-controls select{width:100%;min-width:0;font-size:16px}.coach-moment-controls button{min-height:44px;font-size:12px;white-space:normal}.coach-space #coach-moment-state{margin-top:8px}.optional-content{padding:0 10px 10px}.optional-content>.tool-panel{margin-bottom:0}.optional-court{box-shadow:none}.optional-content .score-strip{border:1px solid #3e5d44;border-radius:6px;margin-bottom:12px}.optional-content .rally-winner-actions{margin-bottom:10px}.optional-content .rally-winner-actions button{min-height:48px;font-size:15px;line-height:1.3;white-space:normal;overflow-wrap:anywhere}.optional-content .rally-secondary{margin-bottom:14px}.backup-row .button-label{font-size:11px;min-height:40px}.editing .coach-space,.tracking-setup .coach-space{display:none}@media(max-width:370px){.coach-space{padding:10px}.coach-moment-controls button{font-size:11px;padding:9px 8px}.coach-head span{font-size:9px}.rally-dock-head{font-size:11px}}
