/* Layout: one-screen tool. Header tray (play, modes, cams, view) / board stage with HUD, view controls and camera tiles / step dock. */
:root{
  --bg:#EEF1F5; --panel:#FFFFFF; --panel-2:#F6F8FB; --fg:#17202E; --muted:#5B6678; --line:#D5DBE4;
  --accent:#2450C8; --accent-soft:#E3EAFB; --home:#D62839; --away:#2A2F37; --away-ring:#2A2F37;
  --stage:#D7DCE4; --tray:#E6EAF0; --scrim:rgba(17,22,30,.38);
  --risk:#D92D3A; --risk-soft:#FDE7E8; --safe:#1D8A4E; --safe-soft:#E2F4EA; --warn:#B86E00; --warn-soft:#FCF0DC;
  --shadow:0 6px 24px rgba(23,32,46,.12);
  --f-display:"Barlow Condensed","Arial Narrow",system-ui,sans-serif;
  --f-body:"Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",sans-serif;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#111419; --panel:#1A1E25; --panel-2:#20252D; --fg:#E6EAF0; --muted:#8D97A8; --line:#2B313B;
  --accent:#7296FF; --accent-soft:#1F2B4B; --home:#EE4553; --away:#2A2F37; --away-ring:#9AA3B1;
  --stage:#0C0E12; --tray:#151920; --scrim:rgba(0,0,0,.55);
  --risk:#FF5A64; --risk-soft:#3A1A1E; --safe:#46C07E; --safe-soft:#15301F; --warn:#F0A940; --warn-soft:#33270F;
  --shadow:0 6px 24px rgba(0,0,0,.45); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#111419; --panel:#1A1E25; --panel-2:#20252D; --fg:#E6EAF0; --muted:#8D97A8; --line:#2B313B;
  --accent:#7296FF; --accent-soft:#1F2B4B; --home:#EE4553; --away:#2A2F37; --away-ring:#9AA3B1;
  --stage:#0C0E12; --tray:#151920; --scrim:rgba(0,0,0,.55);
  --risk:#FF5A64; --risk-soft:#3A1A1E; --safe:#46C07E; --safe-soft:#15301F; --warn:#F0A940; --warn-soft:#33270F;
  --shadow:0 6px 24px rgba(0,0,0,.45); color-scheme:dark}

[hidden]{display:none!important}
html{height:100%;box-sizing:border-box}
*,*::before,*::after{box-sizing:inherit}
body{height:100%;margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:14px;overflow:hidden}
.app{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{opacity:.4;cursor:default}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* header */
.top{position:relative;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;background:var(--panel);border-bottom:1px solid var(--line);
  padding-block:9px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.mark{width:28px;height:28px;border-radius:50%;background:var(--home);flex:none;position:relative;box-shadow:0 2px 0 rgba(0,0,0,.22),inset 0 -3px 0 rgba(0,0,0,.18)}
.mark::after{content:"";position:absolute;width:15px;height:15px;border-radius:50%;right:-7px;bottom:-4px;background:var(--away);border:2px solid var(--panel)}
.app-name{font-family:var(--f-display);font-weight:700;font-size:21px;letter-spacing:.03em;line-height:1}
.playpick{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel-2);border-radius:10px;padding:5px 10px 5px 6px;min-width:0;max-width:min(330px,58vw)}
.playpick:hover{border-color:var(--muted)}
.cat{font-family:var(--f-display);font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:3px 7px;border-radius:6px;flex:none;background:var(--accent-soft);color:var(--accent)}
.cat[data-sport="football"]{background:var(--safe-soft);color:var(--safe)}
.playpick .pn{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.playpick .fm{font-size:12px;color:var(--muted);white-space:nowrap}
.caret{width:12px;height:12px;flex:none;color:var(--muted)}
.spacer{flex:1}
.seg{display:inline-flex;background:var(--tray);border-radius:10px;padding:3px;gap:2px;border:1px solid var(--line)}
.seg button{border:0;background:transparent;padding:6px 11px;border-radius:7px;display:inline-flex;align-items:center;gap:6px;
  font-family:var(--f-display);font-weight:600;font-size:15px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--panel);color:var(--fg);box-shadow:0 1px 2px rgba(0,0,0,.14)}
.seg svg{width:16px;height:16px}
.drawtools{display:flex;align-items:center;gap:6px}
.marker{width:22px;height:30px;border-radius:5px 5px 3px 3px;border:2px solid transparent;padding:0;position:relative;transition:transform .12s}
.marker::after{content:"";position:absolute;left:3px;right:3px;top:3px;height:7px;border-radius:2px;background:rgba(255,255,255,.35)}
.marker[aria-pressed="true"]{border-color:var(--fg);transform:translateY(-3px)}
.tbtn{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:6px 10px;font-size:13px;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.tbtn:hover:not(:disabled){background:var(--tray)}
.tbtn.pri{background:var(--accent);border-color:var(--accent);color:#fff}
.tbtn.pri:hover{background:var(--accent);filter:brightness(1.08)}
.tbtn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.tbtn svg{width:16px;height:16px}
.danger{color:var(--risk)}
.switch{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);cursor:pointer;user-select:none}
.switch input{appearance:none;width:34px;height:20px;border-radius:10px;background:var(--line);position:relative;margin:0;cursor:pointer;transition:background .15s;flex:none}
.switch input::after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;top:2px;left:2px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:left .15s}
.switch input:checked{background:var(--accent)}
.switch input:checked::after{left:16px}

/* library */
.lib{position:absolute;top:calc(100% + 6px);left:max(16px,env(safe-area-inset-left,0px));width:min(560px,calc(100vw - 32px));max-height:min(74vh,640px);overflow:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:14px;display:flex;flex-direction:column;gap:14px}
.lib h3{margin:0 0 6px;font-family:var(--f-display);font-weight:600;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.libgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.item{border:1.5px solid var(--line);background:var(--panel-2);border-radius:12px;padding:8px;text-align:left;display:flex;flex-direction:column;gap:6px}
.item:hover{border-color:var(--muted)}
.item[aria-current="true"]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.item svg{width:100%;height:auto;display:block;border-radius:6px}
.item .in{font-weight:700;font-size:13px}
.item .id{font-size:11.5px;color:var(--muted);line-height:1.35}
.credit{flex-basis:100%;font-size:11.5px;color:var(--muted)}.credit a{color:var(--accent)}
.libfoot{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-top:1px solid var(--line);padding-top:12px;font-size:12px;color:var(--muted)}

/* stage */
.stage{position:relative;background:var(--stage);overflow:hidden}
#board{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
.stage[data-mode="draw"] #board{cursor:crosshair}
.stage[data-mode="move"] #board,.stage[data-mode="edit"] #board{cursor:grab}
.stage.grabbing #board{cursor:grabbing}
.hud{position:absolute;top:10px;left:max(12px,env(safe-area-inset-left,0px));right:max(12px,env(safe-area-inset-right,0px));
  display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start;pointer-events:none;z-index:4}
.hud > *{pointer-events:auto}
.chip{background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:5px 12px 5px 8px;font-size:12px;display:flex;align-items:center;gap:8px;max-width:100%;box-shadow:0 2px 10px rgba(0,0,0,.08)}
.ring{width:14px;height:14px;border-radius:50%;border:2px dashed var(--home);flex:none}
.pill{border-radius:999px;padding:6px 14px 6px 10px;font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px;box-shadow:0 2px 10px rgba(0,0,0,.08);background:var(--panel);border:1px solid var(--line);margin-inline:auto}
.pill svg{width:16px;height:16px;flex:none}
.pill[data-kind="risk"]{background:var(--risk-soft);border-color:var(--risk);color:var(--risk)}
.pill[data-kind="warn"]{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}
.pill[data-kind="steal"]{background:var(--safe-soft);border-color:var(--safe);color:var(--safe)}
.pill[data-kind="ok"]{color:var(--muted);font-weight:400}
.pill .fakebtn,.pill .crossbtn{padding:2px 9px;font-size:12px;font-weight:700;margin-left:4px;color:var(--fg)}
.pill .crossbtn[aria-pressed="true"],.pill .fakebtn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.pill[data-kind="risk"].pulse{animation:pulse 1.1s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--risk) 22%,transparent)}}
.ovchip{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:5px 5px 5px 12px;font-size:12px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;box-shadow:0 2px 10px rgba(0,0,0,.08);margin-left:auto}
.ovchip .tbtn{padding:5px 9px;font-size:12px}
.pin{width:10px;height:10px;border-radius:50%;background:#FF8A1F;flex:none}
.legend{position:absolute;left:max(12px,env(safe-area-inset-left,0px));bottom:10px;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--muted);pointer-events:none;z-index:2}
.legend span{display:inline-flex;align-items:center;gap:6px}
.dot{width:11px;height:11px;border-radius:50%;display:inline-block}
.vctl{position:absolute;left:max(12px,env(safe-area-inset-left,0px));top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;z-index:4;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:4px;box-shadow:0 2px 10px rgba(0,0,0,.08)}
.vbtn{width:34px;height:34px;border:0;border-radius:8px;background:transparent;display:grid;place-items:center;color:var(--fg)}
.vbtn:hover{background:var(--tray)}
.vbtn svg{width:17px;height:17px}
.toast{position:absolute;left:50%;bottom:34px;transform:translate(-50%,8px);background:var(--fg);color:var(--panel);padding:9px 14px;border-radius:10px;z-index:9;
  font-size:13px;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;max-width:calc(100% - 32px);text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* camera tiles */
.pip{position:absolute;border-radius:12px;border:2px solid var(--panel);box-shadow:var(--shadow);pointer-events:none;overflow:hidden;z-index:5}
.pip.big{z-index:3;border-radius:0;border:0;box-shadow:none}
.pip-head{position:absolute;left:0;right:0;top:0;display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:6px;pointer-events:auto;background:linear-gradient(rgba(10,14,20,.6),transparent)}
.pip-head select{font-size:12px;font-weight:700;border-radius:8px;border:0;padding:4px 6px;background:rgba(255,255,255,.93);color:#17202E;max-width:52%;min-width:0}
.pip-head .sp{flex:1}
.pbtn{border:0;border-radius:8px;background:rgba(255,255,255,.93);color:#17202E;font-size:12px;padding:4px 8px;line-height:1.3}
.pip-foot{position:absolute;left:6px;right:6px;bottom:6px;display:flex;align-items:center;gap:8px;background:rgba(10,14,20,.74);color:#fff;border-radius:9px;padding:6px 9px;font-size:12px}
.pip-foot b{font-family:var(--f-display);font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}
.meter{flex:1;height:7px;border-radius:4px;background:rgba(255,255,255,.18);overflow:hidden;min-width:30px}
.meter i{display:block;height:100%;width:0;border-radius:4px;background:#3FD07F;transition:width .15s}
.pip-foot .ang{color:rgba(255,255,255,.75);white-space:nowrap}
.addcam{position:absolute;z-index:6;border:1px dashed var(--muted);background:var(--panel);color:var(--fg);border-radius:999px;padding:6px 12px;font-size:12px;box-shadow:0 2px 10px rgba(0,0,0,.08)}

/* share panel, recording */
.sharep{left:auto;right:max(16px,env(safe-area-inset-right,0px));width:min(400px,calc(100vw - 32px))}
.pnote{margin:0 0 8px;font-size:12.5px;color:var(--muted);line-height:1.4;max-width:60ch}
.prow{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.rec{border-color:var(--risk);color:var(--risk);font-weight:700}
.recdot{width:10px;height:10px;border-radius:50%;background:var(--risk);animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:.25}}
body.player #modeSeg [data-mode="edit"],body.player #modeSeg [data-mode="draw"],body.player #newBtn,body.player #wbBtn,body.player #resetPlay{display:none}

.freezechip{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft),0 2px 10px rgba(0,0,0,.08);font-weight:700;font-size:13px;margin-inline:auto}
.freezechip .fz{color:var(--accent)}
.notechip{border-radius:12px;max-width:min(560px,100%);align-items:flex-start;line-height:1.4}
.notechip b{font-family:var(--f-display);font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-size:11.5px;color:var(--accent);margin-right:6px}
.notechip a{color:var(--accent);white-space:nowrap}
.notechip span{flex:1;min-width:0}
/* training sessions */
.app.s-sessions .board-only{display:none!important}
.app.s-sessions .dock{display:none}
.sess{position:absolute;inset:0;z-index:8;background:var(--bg);overflow:auto;display:grid;grid-template-columns:250px minmax(0,1fr);align-items:start}
.slist{position:sticky;top:0;align-self:stretch;min-height:100%;border-right:1px solid var(--line);background:var(--panel);padding:14px 10px;display:flex;flex-direction:column;gap:4px}
.slist h3,.sedit h3{margin:0 0 6px 6px;font-family:var(--f-display);font-weight:600;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.sitem{border:1.5px solid transparent;background:transparent;border-radius:10px;padding:8px 10px;text-align:left;display:flex;flex-direction:column;gap:2px}
.sitem:hover{background:var(--panel-2)}
.sitem[aria-current="true"]{background:var(--accent-soft);border-color:var(--accent)}
.sitem b{font-size:13.5px} .sitem span{font-size:12px;color:var(--muted)}
.slist .tbtn{margin-top:8px;align-self:flex-start}
.sedit{padding-block:18px 48px;padding-left:max(18px,env(safe-area-inset-left,0px));padding-right:max(18px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:16px;min-width:0;max-width:1000px}
.sname{font-family:var(--f-display);font-size:30px;font-weight:700;letter-spacing:.01em;border:0;border-bottom:1.5px dashed transparent;background:transparent;padding:0;color:var(--fg);width:100%}
.sname:hover:not(:disabled),.sname:focus{border-bottom-color:var(--line);outline:none}
.shead{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px}
.shead .wide{grid-column:1/-1}
.fld{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);min-width:0}
.fld input,.fld textarea,.bcard textarea,.bcard input,.bcard select{font:inherit;font-size:14px;color:var(--fg);border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:7px 10px;min-width:0}
.fld output{font-family:var(--f-display);font-weight:700;font-size:22px;color:var(--fg);font-variant-numeric:tabular-nums;line-height:1.4}
.tline{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--tray);gap:2px}
.tline i{display:block;height:100%}
.tsum{display:flex;justify-content:space-between;margin-top:4px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.blocks{display:flex;flex-direction:column;gap:10px}
.bcard{display:grid;grid-template-columns:92px minmax(0,1fr) 200px;gap:14px;background:var(--panel);border:1px solid var(--line);border-left:6px solid var(--bc);border-radius:12px;padding:12px 14px}
.btime{font-family:var(--f-display);font-weight:700;font-size:19px;font-variant-numeric:tabular-nums;line-height:1.15}
.btime small{display:block;font-family:var(--f-body);font-weight:400;font-size:12px;color:var(--muted);margin-top:2px}
.btag{display:inline-block;margin-top:8px;font-family:var(--f-display);font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--bc)}
.bmain{display:flex;flex-direction:column;gap:8px;min-width:0}
.brow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.bcard .btitle{font-weight:700;flex:1;min-width:150px}
.bmin{display:inline-flex;align-items:center;gap:4px}
.bmin button{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--panel);font-size:16px;line-height:1}
.bmin output{min-width:52px;text-align:center;font-variant-numeric:tabular-nums;font-weight:700}
.bcard textarea{width:100%;min-height:66px;resize:vertical;line-height:1.45}
.bplay{display:flex;flex-direction:column;gap:6px;min-width:0}
.bmini{min-height:40px}
.bmini svg{width:100%;height:auto;display:block;border-radius:6px}
.bmini .none{display:grid;place-items:center;height:72px;border:1.5px dashed var(--line);border-radius:8px;font-size:12px;color:var(--muted)}
.bplay select{width:100%}
.bplay .prow .tbtn{flex:1;justify-content:center}
.ibtn.sm{width:30px;height:30px}
.sfoot{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-top:1px solid var(--line);padding-top:14px}
.sess:not(.ro) .ro-only{display:none!important}
.sess.ro .edit-only{display:none!important}
@media (max-width:760px){
  .sess{grid-template-columns:minmax(0,1fr)}
  .slist{position:static;min-height:0;border-right:0;border-bottom:1px solid var(--line)}
  .shead{grid-template-columns:1fr 1fr}
  .bcard{grid-template-columns:minmax(0,1fr)}
}

/* new situation sheet */
.scrim{position:fixed;inset:0;background:var(--scrim);z-index:50;display:grid;place-items:center;padding:16px}
.sheet{width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--panel);border-radius:16px;box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:14px}
.sheet h2{margin:0;font-family:var(--f-display);font-weight:700;font-size:26px;letter-spacing:.02em}
.sheet .row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.lab{font-size:12px;color:var(--muted);min-width:64px}
.sheet select,.sheet input[type=text],.sheet input[type=number]{border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:7px 10px}
.sheet select{flex:1;min-width:0}
.dims{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px}
.dims input{width:76px}
.dims .note{font-size:12px;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips button{border:1px solid var(--line);background:var(--panel-2);border-radius:999px;padding:5px 11px;font-size:12.5px}
.chips button:hover{border-color:var(--muted)}
.teams{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.team{border:1.5px solid var(--line);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px}
.team h4{margin:0;display:flex;align-items:center;gap:7px;font-size:13px}
.stepper{display:flex;align-items:center;gap:6px}
.stepper button{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:var(--panel);font-size:18px;line-height:1}
.stepper output{min-width:28px;text-align:center;font-family:var(--f-display);font-weight:700;font-size:22px;font-variant-numeric:tabular-nums}
.stepper .u{font-size:12px;color:var(--muted)}
.sheet .actions{display:flex;justify-content:flex-end;gap:8px}
.field{border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:7px 10px;width:min(220px,100%)}

/* dock */
.dock{background:var(--panel);border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;
  padding-block:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.transport{display:flex;align-items:center;gap:6px}
.ibtn{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--panel);display:grid;place-items:center}
.ibtn:hover:not(:disabled){background:var(--tray)}
.ibtn svg{width:16px;height:16px}
.ibtn[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.play{height:44px;padding:0 18px 0 14px;border-radius:22px;border:0;background:var(--accent);color:#fff;display:inline-flex;align-items:center;gap:8px;
  font-family:var(--f-display);font-weight:700;font-size:17px;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 2px 0 rgba(0,0,0,.18)}
.play svg{width:18px;height:18px}
.speed{font-family:var(--f-display);font-weight:600;font-size:15px;min-width:46px;height:30px;border-radius:15px;border:1px solid var(--line);background:var(--tray);font-variant-numeric:tabular-nums}
.strip-wrap{flex:1;min-width:0;overflow-x:auto}
.strip{display:flex;align-items:center;gap:6px;width:max-content;padding:3px}
.col{display:flex;flex-direction:column;gap:5px}
.chev{color:var(--muted);font-size:18px;padding:0 1px}
.step{position:relative;display:flex;align-items:center;gap:9px;border:1.5px solid var(--line);background:var(--panel);border-radius:12px;padding:5px 12px 5px 5px;text-align:left;min-width:150px}
.step:hover{border-color:var(--muted)}
.step .lt{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--tray);font-family:var(--f-display);font-weight:700;font-size:16px;flex:none}
.step .nm{font-size:13px;line-height:1.2;max-width:160px}
.step .sub{display:block;font-size:11px;color:var(--muted)}
.step.on-path .lt{background:var(--accent-soft);color:var(--accent)}
.step.current{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.step.current .lt{background:var(--accent);color:#fff}
.step.alt{border-style:dashed}
.step.off{opacity:.6}
.flag{position:absolute;top:-4px;right:-4px;width:12px;height:12px;border-radius:50%;border:2px solid var(--panel)}
.flag[data-k="risk"]{background:var(--risk)} .flag[data-k="warn"]{background:var(--warn)} .flag[data-k="steal"]{background:var(--safe)}
.edit-row{flex-basis:100%;display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-top:1px dashed var(--line);padding-top:10px}
.edit-row label{font-size:12px;color:var(--muted)}
.edit-row .grp{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.edit-row .sep{width:1px;height:24px;background:var(--line)}
.edit-row .seg button{font-size:14px;padding:5px 9px}
#gearPal .tbtn[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.edit-hint{font-size:12px;color:var(--muted)}

@media (max-width:1300px){ .playpick .fm{display:none} .playpick{max-width:min(240px,50vw)} }
@media (max-width:1200px){ .app-name{display:none} .seg button{padding:6px 9px} #newBtn{padding:6px 8px} }
@media (max-width:720px){
  .switch .lbl,.playpick .fm,.cams-lbl{display:none}
  .step{min-width:120px}
  .step .nm{max-width:110px}
  .legend{display:none}
  .seg button{padding:6px 8px}
  .teams{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
.posed{position:fixed;top:12px;right:12px;bottom:12px;width:min(330px,calc(100vw - 24px));z-index:60;background:var(--panel);border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow);display:flex;flex-direction:column;font-size:12.5px}
.posed header{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);font-weight:700;font-size:14px}
.posed header .x{margin-left:auto}
.posed .pbody{overflow:auto;padding:10px 12px;display:flex;flex-direction:column;gap:10px}
.posed .prow{display:flex;flex-wrap:wrap;gap:6px}
.posed h4{margin:6px 0 0;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.posed label.sl{display:grid;grid-template-columns:110px minmax(0,1fr) 46px;align-items:center;gap:6px}
.posed label.sl input{width:100%}
.posed label.sl output{font-variant-numeric:tabular-nums;text-align:right;color:var(--muted)}
.posed textarea{width:100%;min-height:80px;font:11px ui-monospace,monospace;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);color:var(--fg);box-sizing:border-box}
body.posing #sharedChip{visibility:hidden}
/* pose studio: only the figures, the view presets and the studio panel */
body.posing #screenSeg,body.posing #libBtn,body.posing #newBtn,body.posing #modeSeg,body.posing #camBtn,body.posing #shareBtn,body.posing .top .switch,body.posing .dock,body.posing #pill,body.posing #ghostChip,body.posing #ovChip,body.posing #camLayer{display:none!important}
@media (min-width:760px){body.posing .stage{margin-right:354px}}
.photoOv{position:absolute;left:50%;top:50%;pointer-events:none;z-index:5;transform-origin:center;max-width:none}

/* Whiteboard, undo and redo */
#histGrp{display:flex;gap:4px}
#histGrp[hidden]{display:none}
.tbtn.icon{padding-left:9px;padding-right:9px}
.tbtn.icon svg{margin:0}
.edit-row [data-place][aria-pressed="true"],#wbBtn[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
@media (max-width:1100px){ .switch .lbl{display:none} }
@media (max-width:1240px){ .nl{display:none} #newBtn,#wbBtn{padding:6px 8px} }

/* Run mode: full screen, only the board and the controls for running it */
.focusbar{display:none}
body.focus .focusbar{display:flex;position:absolute;z-index:6;top:max(10px,env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);align-items:center;gap:6px;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:5px;box-shadow:0 4px 16px rgba(0,0,0,.12);max-width:calc(100% - 24px)}
body.focus .focusbar .tbtn{min-width:44px;min-height:40px;justify-content:center;font-size:18px}
body.focus .focusbar [hidden]{display:none}
.fctitle{font-weight:700;font-size:15px;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.fcclock{font-variant-numeric:tabular-nums;font-size:15px!important}
.fcclock.over{background:#FCE8D2;border-color:#D9922E;color:#8A4E0B}
.fcclock.paused{opacity:.55}
body.focus .top,body.focus .edit-row,body.focus .legend,body.focus .vctl,body.focus #sessBar,body.focus #sharedChip,
body.focus #speedBtn,body.focus #freezeOpt{display:none!important}
body.focus .hud{top:calc(max(10px,env(safe-area-inset-top,0px)) + 62px)}
body.focus .dock .play{min-width:120px}
body.focus .dock .ibtn{min-width:52px;min-height:52px}
body.focus .app{grid-template-rows:minmax(0,1fr) auto}

/* Looped plays */
.loopmark{align-self:center;font-size:20px;color:var(--accent);padding:0 4px}
#loopGrp .lab{font-size:12px;color:var(--muted)}
#loopGrp [hidden]{display:none}

/* Set-up menu beside the selection, box select */
.pmenu{position:absolute;left:0;top:0;z-index:7;display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;box-shadow:0 6px 22px rgba(0,0,0,.16);max-width:min(460px,calc(100% - 16px));transition:opacity .12s}
.pmenu[hidden],.pmenu [hidden]{display:none!important}
.pmenu.dragging{opacity:0;pointer-events:none}
.pm-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pm-f{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}
.pm-f .field{width:auto}
#plNum{width:52px}
#plName{width:110px}
.pm-lab,.pm-info{font-size:12px;color:var(--muted);font-weight:600}
.pmenu .seg button{padding:5px 9px;font-size:12px}
.selbox{position:absolute;z-index:6;border:1.5px dashed rgba(36,80,200,.9);background:rgba(36,80,200,.08);border-radius:4px;pointer-events:none}
.selbox[hidden]{display:none}

/* Library: search, sport filter, favourites */
.libhead{position:sticky;top:-14px;z-index:1;display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--panel);padding:6px 0 10px;margin-top:-6px}
#libSearch{flex:1;min-width:160px;width:auto}
.itemw{position:relative;display:flex}
.itemw .item{flex:1}
.star{position:absolute;top:4px;right:4px;width:34px;height:34px;border:0;border-radius:8px;background:rgba(255,255,255,.85);font-size:18px;line-height:1;color:#B7791F}
.star[aria-pressed="false"]{color:var(--muted)}
#libList{display:flex;flex-direction:column;gap:14px}

/* First-run tips on the whiteboard */
.tips{position:absolute;z-index:5;right:max(12px,env(safe-area-inset-right,0px));bottom:44px;width:min(300px,calc(100% - 24px));background:var(--panel);border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--shadow);padding:12px 14px;font-size:13.5px;line-height:1.4}
.tips[hidden]{display:none}
.tips h4{margin:0 0 6px;font-size:14px}
.tips ol{margin:0 0 10px;padding-left:20px;display:flex;flex-direction:column;gap:4px}

/* Touch screens: bigger targets (about 40 px and up) */
@media (pointer:coarse){
  .tbtn{min-height:40px;padding-left:12px;padding-right:12px}
  .seg button{min-height:36px}
  .step{min-height:44px}
  .ibtn{min-width:44px;min-height:44px}
  .field{min-height:38px}
  .switch{min-height:40px}
}
.tbtn.lang{font-weight:700;letter-spacing:.04em;min-width:42px;justify-content:center}
body.focus .tbtn.lang{display:none}

/* Saving: saved tick, save-as dialog */
.saved{font-size:12.5px;font-weight:700;color:#1D8A4E;opacity:0;transition:opacity .25s;white-space:nowrap}
.saved.on{opacity:1}
.sheet .row.rtop{align-items:flex-start}
.sheet textarea{font:inherit;border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--panel-2);color:var(--fg)}
.themeSel{min-width:160px}
