:root{color-scheme:dark;--bg:#0c151d;--panel:#14212c;--line:#2c3b47;--text:#eef4f7;--muted:#a6b8c6;--lime:#b9ec65;--blue:#64c6f2;--orange:#ffae76}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,sans-serif}header{padding:18px 28px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:12px}.brand strong{font-size:22px;letter-spacing:-.6px}.mark{color:var(--bg);background:var(--lime);font-weight:900;padding:5px 8px;border-radius:6px}.muted,.helper{color:var(--muted);font-size:14px}.badge,.eyebrow{font-size:12px;letter-spacing:1.5px;font-weight:700}.badge{border:1px solid var(--line);padding:6px 10px;border-radius:30px}.eyebrow{color:var(--lime)}main{max-width:1700px;margin:auto;padding:24px}.intro{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}h1{font-size:36px;letter-spacing:-1.5px;margin:3px 0}p{margin:8px 0 16px}h2{font-size:18px;margin:0 0 12px}h3{font-size:15px}.actions{display:flex;gap:8px;flex-wrap:wrap}button,input,select,textarea{font:inherit}button{background:#203341;color:var(--text);border:1px solid #395060;border-radius:7px;padding:9px 12px;cursor:pointer}button:hover{background:#2c4454}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.primary{background:var(--lime);color:#172310;border-color:var(--lime);font-weight:700}.primary:hover{background:#cff796}.wide{width:100%;margin-top:8px}.workspace{display:grid;grid-template-columns:260px minmax(360px,1fr) 310px;gap:16px;align-items:start}.panel,.fieldPanel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px}.fieldPanel{padding:16px}.fieldHeading{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:12px}.fieldHeading h2{margin:0}label{display:block;font-size:14px;margin:15px 0 6px}select,input[type=number],textarea{width:100%;border:1px solid #3a505f;border-radius:6px;background:#0e1b25;color:var(--text);padding:9px}textarea{resize:vertical;font-size:14px}input[type=range]{width:100%;accent-color:var(--lime);cursor:pointer}output{color:var(--lime);font-size:14px;float:right}.check{display:flex;align-items:center;gap:8px;margin:8px 0;font-size:14px}.check input{accent-color:var(--lime)}.divider{border-top:1px solid var(--line);margin:22px 0}.fieldWrap{background:#16382d;border:1px solid #426555;border-radius:8px;overflow:hidden}svg{width:100%;display:block;max-height:650px}.transport{display:flex;align-items:center;gap:8px;margin:14px 0 6px;flex-wrap:wrap}.transport output{margin-left:auto;font-variant-numeric:tabular-nums}.speedLabel{margin:0;display:flex;gap:8px;align-items:center}.speedLabel select{width:auto;padding:6px}.note{display:flex;gap:10px;font-size:13px;color:var(--muted);border-top:1px solid var(--line);padding-top:14px;margin-top:10px}.note strong{color:var(--orange);min-width:85px}.tabs{display:flex;gap:5px;margin-bottom:18px}.tabs button{flex:1;font-size:14px}.tabs .active{color:var(--lime);border-color:var(--lime)}.pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.roster{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.roster button{padding:7px 3px;font-size:13px}.roster .chosen{border-color:var(--lime);color:var(--lime)}#assignment,#moment,#question,#feedback{font-size:14px}#answers button{display:block;width:100%;text-align:left;margin:8px 0;font-size:14px}#feedback{border-left:3px solid var(--lime);padding-left:10px}#feedback:empty{display:none}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}#status{color:var(--lime);font-size:14px;min-height:22px;margin:12px 0 0}[hidden]{display:none!important}@media(max-width:1200px){.workspace{grid-template-columns:220px 1fr}.detail{grid-column:1/-1}.roster{grid-template-columns:repeat(11,1fr)}}@media(max-width:760px){header{padding:12px 16px}.brand>.muted,.badge{display:none}main{padding:16px}.intro{align-items:flex-start;flex-direction:column}.workspace{display:flex;flex-direction:column}.panel,.fieldPanel{width:100%}.fieldPanel{order:-1}.fieldHeading{flex-wrap:wrap}.roster{grid-template-columns:repeat(6,1fr)}h1{font-size:30px}.note{flex-direction:column}.transport{gap:6px}.transport button{font-size:14px;padding:8px}.speedLabel{font-size:13px}}
/* 3D workspace */
.workspace{grid-template-columns:220px minmax(420px,1fr) 280px}.viewControls{display:flex;align-items:end;gap:8px;flex-wrap:wrap;padding:0 0 12px}.viewControls label{margin:0;flex:1;min-width:110px}.viewControls select{font-size:14px}.viewControls button{font-size:14px;margin-bottom:1px}#perspectiveBar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 12px;font-size:13px;color:var(--muted)}#perspectiveBar label{margin:0;display:flex;align-items:center;gap:6px;font-size:13px}#lookYaw{width:100px}#eyeHeight{width:68px;font-size:13px;padding:4px}#viewStatus{flex:1;min-width:160px}.threeWrap{height:560px;position:relative;overflow:hidden;border:1px solid #426555;border-radius:8px;background:#12232c}.threeWrap canvas{display:block;width:100%;height:100%;touch-action:none}.threeWrap canvas:focus-visible{outline:3px solid var(--blue);outline-offset:-4px}#threeLoading{position:absolute;inset:0;display:grid;place-content:center;background:#12232c;color:var(--muted);padding:30px;text-align:center;pointer-events:none}@media(max-width:1200px){.workspace{grid-template-columns:220px minmax(360px,1fr)}.threeWrap{height:520px}}@media(max-width:760px){.threeWrap{height:410px}.workspace{display:flex}.viewControls label{min-width:100px}.viewControls{gap:6px}.viewControls button{width:100%}#perspectiveBar{gap:8px}}
/* Focused team matchup */
.workspace{grid-template-columns:minmax(420px,1fr) 340px;align-items:start}.intro h1{font-size:28px}.intro p{font-size:14px;margin:3px 0}.intro{margin-bottom:16px}.intro .tabs{margin:0}.detail{grid-column:auto}.threeWrap{height:570px;margin-top:8px}.viewControls label{flex:1}.viewOptions{margin-bottom:8px}.viewOptions .viewControls{margin-top:12px}summary{cursor:pointer;font-size:14px;color:var(--muted);padding:10px 0}details{border-top:1px solid var(--line);margin-top:12px}details[open] summary{color:var(--lime)}input:not([type=checkbox]):not([type=range]):not([type=file]){width:100%;background:#0e1b25;color:var(--text);border:1px solid #3a505f;border-radius:6px;padding:8px}.ratingGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ratingGrid label{margin:4px 0}.ratingGrid input{margin-top:4px}.paneTabs{position:sticky;top:0;background:var(--panel);z-index:1;padding-bottom:8px}.paneTabs button{padding:8px;font-size:14px}.roster{grid-template-columns:repeat(3,1fr)}.fileButton{margin:0;display:inline-flex;align-items:center;background:#203341;border:1px solid #395060;border-radius:7px;padding:9px 12px;cursor:pointer;font-size:16px}.compact{margin:8px 0 0}.pair label{margin-top:8px}#playerTitle{margin-top:6px}#timingInsights,#moment{font-size:14px}#personnelForm h3{margin-bottom:4px}.intro>.tabs button{min-width:80px}@media(max-width:1100px){.workspace{grid-template-columns:minmax(360px,1fr) 300px}.threeWrap{height:510px}}@media(max-width:760px){.workspace{display:flex;flex-direction:column}.intro{gap:8px}.intro h1{font-size:25px}.threeWrap{height:400px}.detail{width:100%}.fieldPanel{order:0}.viewControls{align-items:end}.viewControls label{min-width:120px}.viewControls button{width:auto}.actions{gap:5px}.actions button,.fileButton{padding:6px 9px;font-size:13px}.brand strong{font-size:18px}header{gap:10px;flex-wrap:wrap}.roster{grid-template-columns:repeat(4,1fr)}}

.throwControls{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:end;margin:.5rem 0}.throwControls label{display:grid;gap:.2rem;font-size:.85rem}.throwControls output{font-variant-numeric:tabular-nums}.throwControls p{flex-basis:100%;margin:0}
.trace{flex-basis:100%}.trace ol{margin:.3rem 0;padding-left:1.2rem;font-size:.8rem;max-height:11rem;overflow:auto}.trace li.future{opacity:.4}.trace li.authored{color:#fff4b0}
.viewTag{position:absolute;padding:2px 8px;border-radius:6px;background:#10202be6;color:#eaf4df;font-size:.75rem;pointer-events:none}

/* Stage */
.threeWrap{height:clamp(520px,76vh,860px)!important;border:1px solid #2c4a5c;border-radius:12px;background:#05080d;box-shadow:0 18px 50px #0008}
#viewTags{position:absolute;inset:0;pointer-events:none}
.viewTag{position:absolute;pointer-events:auto;padding:3px 10px;border:1px solid #ffffff2e;border-radius:999px;background:#0a141dcc;color:#eaf4df;font:600 .74rem system-ui,sans-serif;letter-spacing:.02em;cursor:pointer;backdrop-filter:blur(4px)}
.viewTag:hover:not(:disabled){background:#1b3a4fe6;border-color:#8fe3ff}
.viewTag.main{background:#b9ec65;color:#0b1b10;border-color:#b9ec65;cursor:default}
#hud{position:absolute;left:14px;top:12px;pointer-events:none;padding:8px 14px;border-radius:10px;background:linear-gradient(90deg,#08121cdd,#08121c88);border-left:3px solid #b9ec65;max-width:46%;box-shadow:0 6px 18px #0006}
#hudTitle{max-width:40ch;font:700 .95rem system-ui,sans-serif;color:#fff;letter-spacing:.01em}
#hudSub{font:500 .78rem system-ui,sans-serif;color:#9fc6dd;margin-top:2px}
#hud{display:flex;gap:14px;align-items:center}#hudClock{white-space:nowrap;padding:4px 10px;border-radius:8px;background:#000a;color:#b9ec65;font:700 1rem ui-monospace,Consolas,monospace}
.assignCard{position:absolute;left:14px;bottom:14px;width:min(360px,calc(100% - 28px));padding:10px 14px 12px;border-radius:12px;background:#08121cee;border:1px solid #ffffff22;box-shadow:0 10px 30px #000a;color:#e6eef4;pointer-events:none;font:400 .8rem/1.4 system-ui,sans-serif}
.assignCard.offense{border-top:3px solid #ffd23f}.assignCard.defense{border-top:3px solid #ff8a5c}
.acHead{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}
.acKind{padding:1px 8px;border-radius:999px;background:#ffffff1c;font-weight:700;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;color:#fff3a0}
.assignCard.defense .acKind{color:#ffc59e}
.acRole{color:#8fb0c4;font-size:.74rem;margin-left:auto}
.acAssign{margin:6px 0 4px}.acNow{margin:0 0 4px;color:#b9ec65}.acTip{margin:4px 0 0;color:#8fb0c4;font-size:.74rem;border-top:1px solid #ffffff14;padding-top:5px}
@media (max-width:640px){#hud{max-width:70%}.assignCard{font-size:.74rem}}

/* Position defaults table */
.defaultsBar{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
.defaultsScroll{overflow:auto;max-height:68vh;border:1px solid #2c4a5c;border-radius:10px}
.defaultsTable{border-collapse:separate;border-spacing:0;font-size:.78rem;min-width:100%}
.defaultsTable th,.defaultsTable td{padding:3px 4px;text-align:center;border-bottom:1px solid #ffffff12;white-space:nowrap}
.defaultsTable thead th{position:sticky;top:0;z-index:2;background:#0d1a26;color:#b9ec65;font-weight:700}
.defaultsTable th.rowHead,.defaultsTable td.rowHead{position:sticky;left:0;z-index:1;text-align:left;background:#0d1a26;padding-left:8px;min-width:150px;font-weight:500}
.defaultsTable thead th.rowHead{z-index:3}
.defaultsTable tr.groupRow td{background:#142a3a;color:#8fe3ff;font-weight:700;text-align:left;padding:5px 8px;letter-spacing:.04em;text-transform:uppercase;font-size:.7rem}
.defaultsTable tr.derived td{color:#9fc6dd;background:#0b1620}
.defaultsTable input{width:3.1rem;padding:2px 3px;text-align:center;border-radius:6px;border:1px solid #3b5a6d;background:#0b1620;color:#eaf4df;font:inherit}
.defaultsTable input.edited{border-color:#ffd23f;background:#2a2410}
.defaultsTable input:focus-visible{outline:2px solid #8fe3ff}
.defaultsTable td.na{color:#46606f}
.defaultsTable .tag{display:inline-block;margin-left:5px;padding:0 5px;border-radius:999px;font-size:.62rem;background:#ffffff14;color:#9fc6dd}
.defaultsTable .tag.live{background:#b9ec6522;color:#b9ec65}

.workspace.defaultsOpen{display:block}
.workspace.defaultsOpen .fieldPanel{display:none}
.workspace.defaultsOpen .panel.detail{width:100%;max-width:none}
.workspace.defaultsOpen .defaultsScroll{max-height:none}
.defaultsTable input{width:3.4rem;min-width:3.4rem;max-width:none;box-sizing:border-box}
.defaultsTable td{min-width:3.9rem}

.defaultsBar .inlineLabel{display:flex;align-items:center;gap:6px;font-size:.8rem}
.defaultsTable .sideHead{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}
.defaultsTable .sideHead.off,.defaultsTable .roleHead.off{color:#ffd23f}.defaultsTable .sideHead.def,.defaultsTable .roleHead.def{color:#ff9a62}
.defaultsTable thead tr:nth-child(2) th{top:26px}
.defaultsTable .roleHead{min-width:3.9rem;font-size:.74rem}

.defaultsTable input:not(.edited){border-style:dashed;color:#7fa0b4}
.defaultsTable input::placeholder{color:#4f6b7c}
.defaultsTable .prog{display:block;font-size:.62rem;font-weight:500;color:#7fa0b4;margin-top:1px}
.defaultsTable .prog.done{color:#b9ec65}

/* Rosters */
.rosterTable{width:100%;border-collapse:collapse;font-size:.8rem;margin:6px 0}
.rosterTable th,.rosterTable td{padding:4px 6px;text-align:left;border-bottom:1px solid #ffffff14;vertical-align:middle}
.rosterTable th{color:#b9ec65;font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}
.rosterTable button{padding:2px 8px;font-size:.74rem}
.rosterTable .tag{display:inline-block;margin-left:4px;padding:0 6px;border-radius:999px;font-size:.62rem;background:#b9ec6522;color:#b9ec65}

/* Team setup */
.setupBar{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:end;margin:6px 0}
.setupLayout{display:grid;grid-template-columns:minmax(190px,240px) 1fr;gap:16px;align-items:start}
@media (max-width:900px){.setupLayout{grid-template-columns:1fr}.setupSteps{max-height:220px}}
.setupSteps{list-style:none;margin:0;padding:0;max-height:76vh;overflow:auto;border:1px solid #2c4a5c;border-radius:10px}
.setupSteps li.head{position:sticky;top:0;background:#142a3a;color:#8fe3ff;font-weight:700;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;padding:5px 10px;cursor:default}
.setupSteps li.step{display:flex;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid #ffffff10;cursor:pointer;font-size:.82rem}
.setupSteps li.step:hover{background:#142a3a}.setupSteps li.step.current{background:#1d3a50;box-shadow:inset 3px 0 #b9ec65}
.setupSteps .dot{width:9px;height:9px;border-radius:50%;border:2px solid #4f6b7c;flex:none}.setupSteps li.saved .dot{background:#b9ec65;border-color:#b9ec65}
.setupSteps .who{margin-left:auto;color:#8fb0c4;font-size:.74rem;white-space:nowrap}
.playerCard{border-radius:14px;overflow:hidden;border:1px solid #2c4a5c;background:#0b1620;margin-bottom:12px;box-shadow:0 8px 24px #0006}
.pcTop{display:flex;align-items:center;gap:14px;padding:12px 16px}
.pcNum{font:900 2.8rem/1 "Arial Black",system-ui,sans-serif;min-width:3.2rem;text-align:center;text-shadow:0 2px 0 #0006}
.pcName{font:700 1.15rem system-ui,sans-serif}.pcPos{font-size:.8rem;opacity:.9;margin-top:2px}
.pcBars{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:3px 18px;padding:10px 16px 12px}
.pcRow{display:grid;grid-template-columns:116px 1fr 26px;align-items:center;gap:6px;font-size:.72rem;color:#9fc6dd}
.pcBar{height:7px;border-radius:4px;background:#ffffff14;overflow:hidden}.pcBar i{display:block;height:100%;background:#4f7a92}.pcBar i.set{background:#b9ec65}
.pcRow b{font-weight:600;text-align:right;color:#cfe3ee}
.traitGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px 14px}
.traitGrid .traitGroup{grid-column:1/-1;margin:8px 0 0;color:#8fe3ff;font-weight:700;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}
.traitGrid label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.8rem}
.traitGrid input{width:4.2rem;text-align:center}
.setupButtons{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}

/* Player types */
.pcBar i.preset{background:#5fc1d6}
.typesTable .defCol{background:#0b1620;color:#9fc6dd;min-width:5rem}
.typesTable th.typeHead{min-width:8.5rem;vertical-align:top;padding:6px}
.typesTable .typeName{width:100%;box-sizing:border-box;text-align:center;font-weight:700;color:#b9ec65;background:#0b1620;border:1px solid #3b5a6d;border-radius:6px;padding:3px 4px}
.typesTable .typeBtns{display:flex;gap:4px;justify-content:center;margin-top:4px}.typesTable .typeBtns button{padding:1px 7px;font-size:.68rem}
