/* Diamond Protocol: tokens from the design system, then components (bundle.css), then app layout. */
:root {
  --black:#000000; --ground:#0B0C0C; --surface:#161817; --surface-raised:#1F2221; --line:#2C302E; --line-subtle:#232625; --control-border:#3A3F3C;
  --steel:#E4E7E5; --silver:#C9CEC9; --steel-muted:#9AA19D; --green:#2F6B34; --green-bright:#7DBA70; --green-mid:#5A9A4F; --green-deep:#1E3A20;
  --green-soft:#9BD48E; --amber:#F0B458; --amber-deep:#3A2A10; --on-green:#FFFFFF;
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-6:24px; --space-10:40px;
  --radius-sm:6px; --radius-md:10px; --radius-pill:999px;
  --font-display:"Chakra Petch","Arial Narrow",sans-serif; --font-sans:"IBM Plex Sans",system-ui,sans-serif; --font-mono:"IBM Plex Mono",ui-monospace,monospace;
  color-scheme: dark;
}
.dp-root,.dp-btn,.dp-field,.dp-panel,.dp-metric,.dp-ex,.dp-toast,.dp-nav,.dp-header{box-sizing:border-box;font-family:var(--font-sans);color:var(--steel)}
.dp-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-sm);font:600 15px/1 var(--font-sans);cursor:pointer;border:1px solid transparent;text-decoration:none}
.dp-btn:focus-visible,.dp-toggle:focus-visible,.dp-nav-item:focus-visible,.dp-input:focus-visible,.dp-ex-play:focus-visible,.dp-ex-log:focus-visible{outline:2px solid var(--green-bright);outline-offset:2px}
.dp-btn[disabled]{opacity:.45;cursor:not-allowed}
.dp-btn--primary{background:var(--green);color:var(--on-green)}
.dp-btn--primary:hover:not([disabled]){background:#387D3E}
.dp-btn--secondary{background:var(--surface);color:var(--steel);border-color:var(--control-border)}
.dp-btn--secondary:hover:not([disabled]){background:var(--surface-raised)}
.dp-btn--outline{background:transparent;color:var(--green-bright);border-color:var(--green-mid)}
.dp-btn--outline:hover:not([disabled]){background:var(--green-deep)}
.dp-btn--ghost{background:transparent;color:var(--steel-muted)}
.dp-btn--ghost:hover:not([disabled]){color:var(--steel);background:var(--surface-raised)}
.dp-btn--block{width:100%}
.dp-badge{display:inline-block;padding:4px 10px;border-radius:var(--radius-pill);font:600 13px/1.3 var(--font-sans)}
.dp-badge--good{background:var(--green-deep);color:var(--green-soft)}
.dp-badge--warn{background:var(--amber-deep);color:var(--amber)}
.dp-tag{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--radius-pill);font:700 13px/1.3 var(--font-sans);color:var(--tag);background:color-mix(in srgb, var(--tag) 16%, transparent);border:1px solid color-mix(in srgb, var(--tag) 60%, transparent);white-space:nowrap}
.dp-tag > span{font-size:14px;line-height:1}
.dp-badge--neutral{background:var(--surface-raised);color:var(--steel);border:1px solid var(--control-border)}
.dp-badge--muted{background:var(--surface-raised);color:var(--steel-muted)}
.dp-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-3)}
.dp-panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.dp-panel-title{margin:0;font:600 18px/26px var(--font-sans);color:var(--steel)}
.dp-panel-sub{margin:0;font:400 14px/20px var(--font-sans);color:var(--steel-muted)}
.dp-metric{display:flex;flex-direction:column;gap:6px;padding:var(--space-6)}
.dp-metric-label{font:400 14px/20px var(--font-sans);color:var(--steel-muted)}
.dp-metric-value{font:600 52px/1 var(--font-display);color:var(--steel)}
.dp-metric-value--warn{color:var(--amber)}
.dp-metric-value--good{color:var(--green-bright)}
.dp-metric-note{font:400 13px/18px var(--font-sans);color:var(--steel-muted)}
.dp-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}
/* The page's buttons: right-aligned and wrapping as a row on wide screens, dropping under the title when they don't fit;
   two even columns on a phone (below). */
.dp-header-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-3);margin-left:auto}
.dp-header-actions>.row,.dp-header-actions>.row.wrap{display:contents}
.dp-header-title{margin:0;font:700 40px/1 var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--steel)}
.dp-header-sub{margin:6px 0 0;font:400 15px/22px var(--font-sans);color:var(--steel-muted)}
.dp-field{display:flex;flex-direction:column;gap:6px}
.dp-label{font:500 14px/20px var(--font-sans);color:var(--steel)}
.dp-input{min-height:44px;padding:10px 12px;border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--steel);font:400 15px/22px var(--font-sans);box-sizing:border-box;width:100%}
.dp-input--mono{font-family:var(--font-mono);font-size:14px}
.dp-input[aria-invalid="true"]{border-color:var(--amber)}
.dp-hint{font:400 13px/18px var(--font-sans);color:var(--steel-muted)}
.dp-error{font:500 13px/18px var(--font-sans);color:var(--amber)}
.dp-toggle{min-width:72px;min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-pill);font:600 14px/1 var(--font-sans);cursor:pointer;background:var(--surface);color:var(--steel-muted);border:1px solid var(--control-border)}
.dp-toggle[aria-pressed="true"]{background:var(--green);color:var(--on-green);border-color:var(--green-mid)}
.dp-ex{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md)}
.dp-ex--current{border:2px solid var(--green-mid)}
.dp-ex-play{width:52px;height:44px;flex-shrink:0;border:0;border-radius:var(--radius-sm);background:var(--black);display:flex;align-items:center;justify-content:center;cursor:pointer;background-size:cover;background-position:center;overflow:hidden}
.dp-ex-play--poster svg{filter:drop-shadow(0 0 2px #000)}
.dp-ex-body{flex-grow:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.dp-ex-name{font:600 16px/22px var(--font-sans);color:var(--steel)}
.dp-ex-sets{font:400 14px/20px var(--font-sans);color:var(--steel-muted)}
.dp-ex-log{min-width:64px;min-height:44px;border-radius:var(--radius-sm);font:600 14px/1 var(--font-sans);cursor:pointer;background:var(--surface);color:var(--steel);border:1px solid var(--control-border)}
.dp-ex-log[aria-pressed="true"]{background:var(--green);color:var(--on-green);border-color:var(--green-mid)}
.dp-video{background:var(--black);border:1px solid var(--line-subtle);border-radius:var(--radius-md);display:flex;flex-direction:column;justify-content:flex-end;gap:6px;padding:var(--space-4);box-sizing:border-box;color:var(--steel)}
.dp-video-kicker{font:400 13px/18px var(--font-sans);color:var(--steel-muted)}
.dp-video-title{font:600 28px/1.1 var(--font-display);color:var(--steel)}
.dp-video-track{height:4px;background:var(--line);border-radius:2px;overflow:hidden}
.dp-video-fill{height:4px;background:var(--green-mid)}
.dp-nav{width:248px;background:var(--black);border-right:1px solid var(--line-subtle);display:flex;flex-direction:column;gap:var(--space-6);padding:28px var(--space-4)}
.dp-nav-brand{display:flex;flex-direction:column;align-items:center;gap:10px;padding:4px 8px 20px;border-bottom:1px solid var(--line-subtle)}
.dp-nav-mark{width:120px;height:auto}
.dp-nav-word{font:700 22px/1 var(--font-display);letter-spacing:.08em;color:var(--silver);text-align:center}
.dp-nav-word span{display:block;color:var(--green-mid);letter-spacing:.22em;font-size:16px;margin-top:2px}
.dp-nav-tag{font:500 11px/16px var(--font-sans);letter-spacing:.18em;text-transform:uppercase;color:var(--steel-muted);text-align:center}
.dp-nav-list{display:flex;flex-direction:column;gap:4px}
.dp-nav-item{text-align:left;border:0;border-radius:var(--radius-sm);padding:12px 14px;min-height:44px;font:500 15px/1.2 var(--font-sans);background:transparent;color:var(--silver);cursor:pointer}
.dp-nav-item:hover{background:var(--surface-raised)}
.dp-nav-item[aria-current="page"]{background:var(--green);color:var(--on-green)}
.dp-toast{display:inline-block;background:var(--green);color:var(--on-green);padding:14px 20px;border-radius:8px;font:500 15px/22px var(--font-sans)}
.dp-toast--warn{background:var(--amber-deep);color:var(--amber);border:1px solid var(--amber)}
/* ---- App layout ---- */
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--ground);color:var(--steel);font:400 15px/22px var(--font-sans)}
a{color:var(--green-bright)} a:hover{color:var(--green-soft)}
h1,h2,h3,p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
.shell{display:flex;min-height:100vh}
.shell .dp-nav{position:sticky;top:0;height:100vh;height:100dvh;flex-shrink:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(28px + env(safe-area-inset-bottom,0px))}
.main{flex:1;min-width:0;padding:32px 40px 64px;display:flex;flex-direction:column;gap:var(--space-6)}
.grid{display:grid;gap:var(--space-6)} .grid-2{grid-template-columns:repeat(2,minmax(0,1fr))} .grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.split{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:var(--space-6);align-items:start}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md)}
.metrics .dp-metric+.dp-metric{border-left:1px solid var(--line-subtle)}
.row{display:flex;align-items:center;gap:var(--space-3)} .row.wrap{flex-wrap:wrap} .grow{flex:1;min-width:0}
.stack{display:flex;flex-direction:column;gap:var(--space-3)} .stack-tight{display:flex;flex-direction:column;gap:2px}
.muted{color:var(--steel-muted)} .small{font-size:13px;line-height:18px} .strong{font-weight:600} .mono{font-family:var(--font-mono);font-size:14px}
.warn-text{color:var(--amber)}
.good-text{color:var(--green-bright)}
.table{width:100%;border-collapse:collapse}
.table th{font:400 13px/18px var(--font-sans);color:var(--steel-muted);text-align:left;padding:10px 12px;border-bottom:1px solid var(--line-subtle)}
.table td{padding:12px;border-bottom:1px solid var(--line-subtle);vertical-align:middle}
.table tr.link{cursor:pointer} .table tr.link:hover td{background:var(--surface-raised)}
.table-wrap{overflow-x:auto;margin:0 calc(-1 * var(--space-6))} .table-wrap .table th:first-child,.table-wrap .table td:first-child{padding-left:var(--space-6)}
.list-item{display:flex;align-items:center;gap:var(--space-3);padding:10px 0;border-top:1px solid var(--line-subtle)}
.select{min-height:44px;padding:10px 12px;border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--steel);width:100%}
textarea.dp-input{min-height:88px;resize:vertical}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}
.dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;margin:0}
.dl dt{font-size:13px;color:var(--steel-muted)} .dl dd{margin:4px 0 0}
.workouts{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-4)}
.workout{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);background:var(--ground)}
.week-title{font:600 22px/1 var(--font-display);letter-spacing:.04em;text-transform:uppercase;color:var(--silver)}
.empty{padding:var(--space-6);text-align:center;color:var(--steel-muted);border:1px dashed var(--control-border);border-radius:var(--radius-md)}
.secret{background:var(--black);border:1px solid var(--green-mid);border-radius:var(--radius-sm);padding:12px;word-break:break-all}
.toast-host{position:fixed;right:24px;bottom:24px;display:flex;flex-direction:column;gap:8px;z-index:50;max-width:420px}
.test-banner{background:var(--amber-deep);color:var(--amber);border:1px solid #6B4E1E;border-radius:var(--radius-sm);padding:8px 12px;font-size:13px}
dialog{background:var(--surface);color:var(--steel);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-6);width:min(760px,92vw)}
dialog::backdrop{background:rgba(0,0,0,.75)}
.video-frame{aspect-ratio:16/9;width:100%;background:var(--black);border-radius:var(--radius-sm);overflow:hidden}
.video-frame iframe,.video-frame video{width:100%;height:100%;border:0;display:block}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:min(400px,100%);display:flex;flex-direction:column;gap:var(--space-4)}
.login-card img{width:180px;align-self:center}
.menu-btn{display:none}
@media (max-width: 1100px){ .split,.grid-2,.grid-3{grid-template-columns:1fr} .metrics{grid-template-columns:repeat(2,minmax(0,1fr))} .metrics .dp-metric:nth-child(3){border-left:0} }
@media (max-width: 760px){
  .shell{display:block} .shell .dp-nav{position:fixed;left:0;top:0;bottom:0;height:auto;z-index:40;transform:translateX(-100%);transition:transform .2s}
  .shell.nav-open .dp-nav{transform:none} .main{padding:20px 16px 64px} .menu-btn{display:inline-flex}
  .dp-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px} .dp-header-title{font-size:30px} .form-grid{grid-template-columns:1fr}
  .dp-header-actions{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;margin-left:0}
  .dp-header-actions .dp-btn{width:100%;min-width:0;padding-left:8px;padding-right:8px;white-space:normal;text-align:center}
  .dp-header-actions>.dp-btn:last-child:nth-child(odd),.dp-header-actions>.row>.dp-btn:last-child:nth-child(odd){grid-column:1 / -1}
  .metrics{grid-template-columns:1fr} .metrics .dp-metric+.dp-metric{border-left:0;border-top:1px solid var(--line-subtle)}
  /* Filter chips and tab strips: even columns instead of a ragged wrap (the owner's note). */
  .tm-views{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .tm-views .tm-view{width:100%;min-width:0;padding:0 6px;justify-content:center;white-space:normal;text-align:center}
  .ts-tabs.ts-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
  .ts-tabs .ts-tab{width:100%;min-width:0;justify-content:center;white-space:normal;text-align:center;padding:0 8px}
  .ts-tabs .ts-tab:last-child:nth-child(odd){grid-column:1 / -1}
}
@media (prefers-reduced-motion: reduce){ *{transition:none!important} }
input[type=checkbox]{accent-color:var(--green-mid);width:18px;height:18px}

/* Today: compact business pulse */
.pulse{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden}
.pulse-tile{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-right:1px solid var(--line-subtle);border-bottom:1px solid var(--line-subtle);margin:0 -1px -1px 0;color:inherit;text-decoration:none;min-height:44px}
a.pulse-tile:hover,a.pulse-tile:focus-visible{background:var(--surface-raised)}
.pulse-label{font:500 12px/16px var(--font-sans);color:var(--steel-muted)}
.pulse-value{font:600 24px/1.15 var(--font-display);color:var(--steel)}
.pulse-value--warn{color:var(--amber)}
.pulse-value--good{color:var(--green-bright)}
.pulse-detail{font:400 12px/16px var(--font-sans);color:var(--steel-muted)}
@media (max-width: 560px){ .dp-panel-head{flex-wrap:wrap} .dp-panel-head>div:first-child{flex:1 1 240px} .pulse{grid-template-columns:repeat(2,minmax(0,1fr))} .pulse-tile{padding:10px 12px} .pulse-value{font-size:20px} }

/* Wider form rows that fold to two columns on a phone, one on a small phone */
.form-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))} .form-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width: 760px){ .form-grid.cols-3,.form-grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width: 420px){ .form-grid.cols-3,.form-grid.cols-4{grid-template-columns:1fr} }

/* Teams */
.tm-views{gap:6px}
.tm-view{min-height:44px;padding:0 12px;border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--steel-muted);font:600 14px/1 var(--font-sans);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.tm-view:hover{color:var(--steel);background:var(--surface-raised)}
.tm-view[aria-pressed="true"]{background:var(--surface-raised);border-color:var(--green-mid);color:var(--steel)}
.tm-jump{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;position:sticky;top:0;z-index:5;background:var(--ground);border-bottom:1px solid var(--line)}
.tm-jump button{flex:0 0 auto;min-height:44px;padding:0 14px;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--steel-muted);font:600 14px/1 var(--font-sans);cursor:pointer;white-space:nowrap}
.tm-jump button:hover,.tm-jump button:focus-visible{color:var(--steel);border-bottom-color:var(--green-mid)}
.tm-jump button[aria-selected="true"]{color:var(--steel);border-bottom-color:var(--green-bright,#7DBA70)}
#tm-inv,#tm-roster,#tm-sessions,#tm-contract,#tm-eng{scroll-margin-top:56px}
.tm-summary{padding:12px 16px;border:1px solid var(--line);border-left:3px solid var(--green-mid);border-radius:var(--radius-md);background:var(--surface-raised);font-size:14px}
.tm-bars{display:flex;gap:4px;align-items:flex-end;height:28px}
.tm-bars span{flex:0 0 10px;background:var(--green-mid);border-radius:2px 2px 0 0;min-height:2px}
.tm-bars span.low{background:var(--amber)}

/* Test library */
.lib-toolbar{display:grid;grid-template-columns:2fr 1.3fr 1fr 1fr;gap:12px;align-items:end;margin-bottom:var(--space-4)}
.lib-toolbar .dp-field{margin:0}
.lib-grid-metric{grid-template-columns:2fr 1fr 1.4fr}.lib-grid-2{grid-template-columns:1fr 1fr}.lib-grid-name{grid-template-columns:2fr 1.4fr 1fr}.lib-grid-add{grid-template-columns:1fr 1.4fr auto;align-items:end}
.lib-metric{border:1px solid var(--line-subtle);border-radius:var(--radius-sm);padding:12px;display:flex;flex-direction:column;gap:8px}
.lib-board{list-style:none;margin:0;padding:0}
.lib-rank{font:700 20px/1 var(--font-display);color:var(--green-bright);min-width:32px;text-align:center}
@media (max-width: 760px){
  .lib-toolbar{grid-template-columns:1fr 1fr}.lib-toolbar>:first-child{grid-column:1/-1}
  .lib-grid-metric,.lib-grid-2,.lib-grid-name,.lib-grid-add{grid-template-columns:1fr}
}

/* Clients */
#cl-family,#cl-membership,#cl-sessions,#cl-payments,#cl-notes,#cl-upcoming,#cl-attendance,#cl-testing,#cl-training,#cl-profile{scroll-margin-top:56px}
/* Touch screens: the Athlete ID chip and checkbox rows are 44px tall like every other control */
@media (pointer: coarse){ button.dp-badge{min-height:44px;padding:0 12px} .dp-panel label.row{min-height:44px} }
td .dp-badge{white-space:nowrap}
@media (max-width: 560px){ .cl-program{display:none} }

/* Testing: testing day, uploads, waiting results */
.ts-tabs{display:flex;gap:8px;overflow-x:auto;align-items:center;padding-bottom:2px}
.ts-tab{flex:0 0 auto;min-height:44px;padding:0 14px;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--steel-muted);font:600 14px/1 var(--font-sans);cursor:pointer;white-space:nowrap}
.ts-tab[aria-selected="true"]{border-color:var(--green-mid);background:var(--surface-raised);color:var(--steel)}
.ts-tab-count{font:500 12px/1 var(--font-mono);color:var(--steel-muted)}
.ts-tab-count.ts-done{color:var(--green-bright)}
.ts-row{flex-wrap:wrap}
.ts-up{outline:2px solid var(--green-mid);outline-offset:-2px;border-radius:6px}
.ts-cell{width:88px;min-height:44px}
.ts-cell.ts-bad{border-color:var(--amber)}
.ts-x{min-width:44px;padding:0 8px}
.ts-remove{color:var(--steel-muted)}
.ts-clock{font:700 44px/1 var(--font-mono);color:var(--steel);min-width:180px}
.ts-pending{gap:8px;padding:8px 12px;border:1px solid var(--amber);border-radius:var(--radius-sm);color:var(--amber)}
.ts-pick{gap:8px;min-height:44px}
.ts-picklist{display:flex;flex-wrap:wrap;gap:0 18px;max-height:320px;overflow-y:auto}
.ts-summary{cursor:pointer;min-height:44px;display:flex;align-items:center}
.ts-order{margin:0;padding:0;display:flex;flex-direction:column;gap:2px;list-style:none}
.ts-drop{display:flex;flex-direction:column;gap:8px;padding:16px;border:1px dashed var(--control-border);border-radius:var(--radius-md)}
.ts-drop.over{border-color:var(--green-mid);background:var(--surface-raised)}
.ts-problems-cards{display:none}
.ts-qrow{gap:10px;min-height:44px;cursor:pointer;flex-wrap:wrap}
.ts-combo{position:relative}
.ts-combo-list{position:absolute;left:0;right:0;top:100%;z-index:20;margin:2px 0 0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);max-height:320px;overflow-y:auto}
.ts-combo-opt{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-height:44px;padding:0 10px;border-radius:4px;cursor:pointer}
.ts-combo-opt[aria-selected="true"],.ts-combo-opt:hover{background:var(--surface-raised)}
@media (max-width: 760px){
  .ts-sticky{position:sticky;top:0;z-index:6}
  .ts-clock{font-size:36px;min-width:120px}
}
@media (max-width: 600px){ .ts-problems-table{display:none} .ts-problems-cards{display:flex} }

/* Point of sale */
.pos-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.pos-tile{position:relative;text-align:left;cursor:pointer;padding:14px;gap:4px;min-height:44px;color:inherit;font:inherit}
.pos-tile:hover:not(:disabled){background:var(--surface-raised)}
.pos-tile:disabled{opacity:.45;cursor:not-allowed}
.pos-price{font:600 22px/1 var(--font-display);color:var(--green-bright)}
.pos-count{position:absolute;top:8px;right:8px;min-width:24px;height:24px;border-radius:12px;background:var(--green-mid);color:#fff;font:600 13px/24px var(--font-sans);text-align:center;padding:0 6px}
.pos-hits{display:flex;flex-direction:column;gap:4px}
.pos-hit{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;min-height:44px;padding:8px 12px;border:1px solid var(--line-subtle);border-radius:var(--radius-sm);background:var(--surface);color:var(--steel);cursor:pointer;font:inherit}
.pos-hit[aria-selected="true"],.pos-hit:hover{border-color:var(--green-mid);background:var(--surface-raised)}
.pos-client{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line);border-left:3px solid var(--green-mid);border-radius:var(--radius-sm);background:var(--surface-raised)}
.pos-client>.grow{flex:1 1 160px;min-width:0}
.pos-line{min-height:44px;gap:6px}
.pos-qty{min-width:44px;min-height:44px;padding:0;justify-content:center}
.pos-sale-row{flex-wrap:wrap}
.pos-sale-open{background:none;border:0;color:inherit;text-align:left;cursor:pointer;padding:4px 0;font:inherit;min-height:44px;flex:1 1 220px}
.pos-bar{display:none}
@media (max-width: 1100px){
  .pos-bar:not([hidden]){display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;gap:12px;align-items:center;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:var(--black);border-top:1px solid var(--line)}
  .main:has(.pos-bar:not([hidden])){padding-bottom:96px}
}

/* Billing: the four numbers are buttons that jump to their list; narrow screens drop the less important columns. */
.bl-metric{border:0;border-radius:0;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer;min-width:0}
.bl-metric:hover,.bl-metric:focus-visible{background:var(--surface-raised)}
.bl-metrics .dp-metric-value{font-size:36px}
.bl-tools{gap:8px} .bl-tools .dp-input{flex:1 1 220px;width:auto} .bl-tools .select{flex:0 1 180px}
@media (max-width: 760px){ .bl-metrics{grid-template-columns:repeat(2,minmax(0,1fr))} .bl-metrics .dp-metric{padding:var(--space-4);border:0!important} .bl-metrics .dp-metric:nth-child(even){border-left:1px solid var(--line-subtle)!important} .bl-metrics .dp-metric:nth-child(n+3){border-top:1px solid var(--line-subtle)!important} .bl-metrics .dp-metric-value{font-size:26px} }
@media (min-width: 601px){ .bl-narrow{display:none} }
@media (max-width: 600px){ .bl-cards thead{display:none} .bl-cards tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:12px var(--space-6);border-top:1px solid var(--line-subtle)} .bl-cards td{border:0!important;padding:0!important} .bl-cards td.bl-acts{flex-basis:100%} .bl-cards td.bl-acts .row{justify-content:flex-start!important;flex-wrap:wrap!important} }
@media (max-width: 600px){ .bl-wide{display:none} .bl-tools .dp-input,.bl-tools .select{flex:1 1 100%} }
#dialog .dl dd{overflow-wrap:anywhere}

/* Schedule and Today: how many are checked in, as a thin bar (batch B2/B3). */
.ck{display:inline-flex;align-items:center;gap:8px}
.ck-bar{display:inline-block;width:88px;height:6px;border-radius:3px;background:var(--control-border);overflow:hidden}
.ck-fill{display:block;height:100%;background:var(--green-bright)}
/* Staff & security, API & integrations (batch B14): buttons in panel headers and the menu footer stay on one line */
.dp-panel-head .dp-btn,.dp-nav .dp-btn{white-space:nowrap}

/* CRM (version 45): pipeline board, lead cards, timeline, report bars */
.tm-view[aria-current="page"]{background:var(--surface-raised);border-color:var(--green-mid);color:var(--steel)}
.crm-board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(200px,1fr);gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-2)}
.crm-col{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);min-width:0}
.crm-col-title{margin:0 0 4px;font:600 15px/22px var(--font-sans);color:var(--steel)}
.crm-card{background:var(--surface-raised);border:1px solid var(--line-subtle);border-radius:var(--radius-sm);padding:10px;display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}
.crm-tl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.crm-tl-item{padding:10px 0;border-top:1px solid var(--line-subtle)}
.crm-tl-item:first-child{border-top:0}
.crm-report-row{display:flex;flex-direction:column;gap:4px;padding:6px 0}
.crm-bar{height:8px;background:var(--surface-raised);border-radius:var(--radius-pill);overflow:hidden}
.crm-bar span{display:block;height:100%;background:var(--green-mid)}
@media (max-width: 760px){ .crm-board{grid-auto-flow:row;grid-auto-columns:auto;overflow-x:visible} }
/* Set details (set-fields.js): the fields, group headings and A1/A2 tags. */
.sf-row{gap:8px;align-items:flex-end}
.sf-field{display:flex;flex-direction:column;gap:2px;min-width:0}
.sf-field .dp-input,.sf-field .select{width:100%;min-width:0}
.sf-group{font:600 12px/1 var(--font-sans);letter-spacing:.06em;text-transform:uppercase;color:var(--green-bright);margin-top:6px}
.sf-in-group{border-left:3px solid var(--green);padding-left:10px}
/* The Live panel's athlete rows open like a list, without the browser's triangle. */
.dp-live-sum{list-style:none}
.dp-live-sum::-webkit-details-marker{display:none}
.sf-tag{font:700 13px/1 var(--font-display);color:var(--green-bright);min-width:2em;flex-shrink:0}
/* Form checks (services/formchecks.js): the send progress and the coach's answer, on every page that shows them. */
.fc-progress{height:6px;background:var(--line);border-radius:3px;overflow:hidden}
.fc-progress>div{height:6px;background:var(--green-mid);transition:width .2s}
.fc-note{padding:10px 14px;border:1px solid var(--line);background:var(--surface);color:var(--steel);border-radius:var(--radius-md);font-size:14px;line-height:20px}
/* Training days (version 62): the weekdays an athlete trains, on the client page and the program page. */
.td-days{display:flex;gap:4px;flex-wrap:wrap}
.td-day{min-width:46px;min-height:40px;padding:0 6px;border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--steel-muted);font:600 13px/1 var(--font-sans);cursor:pointer}
.td-day[aria-pressed="true"]{background:var(--green-deep);color:var(--green-soft);border-color:var(--green-mid)}
.td-day:focus-visible{outline:2px solid var(--green-bright);outline-offset:2px}
/* The start-up questions (startup-ui.js): a row of toggles for a goal, experience, where, gear */
.su-choices{display:flex;gap:6px;flex-wrap:wrap}
.su-choice{min-height:44px;padding:0 14px;border:1px solid var(--control-border);border-radius:999px;background:var(--surface);color:var(--steel);font:500 14px/1 var(--font-sans);cursor:pointer}
.su-choice[aria-checked="true"]{background:var(--green-deep);color:var(--green-soft);border-color:var(--green-mid)}
.su-choice:focus-visible{outline:2px solid var(--green-bright);outline-offset:2px}
.su-rule{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.tc-row{display:flex;align-items:center;gap:10px;min-height:40px;padding:4px 0;border-top:1px solid var(--line-subtle);flex-wrap:wrap}
.tc-row--today{background:var(--surface)}
.tc-date{min-width:110px;font-variant-numeric:tabular-nums}
.tc-week>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px;font-weight:600;list-style:none}
.tc-week>summary::-webkit-details-marker{display:none}
.tc-week>summary::before{content:'▸';color:var(--steel-muted)}
.tc-week[open]>summary::before{content:'▾'}
/* Sprint analysis (sprint-ui.js): the clip with its overlay, the position picker, grades, kinogram and compare. */
.sp-main{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:var(--space-6);align-items:start}
@media (max-width:900px){.sp-main{grid-template-columns:1fr}}
.sp-stage{position:relative;background:#000;border-radius:var(--radius-md);overflow:hidden;line-height:0}
.sp-video{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain}
.sp-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.sp-overlay--tap{pointer-events:auto;cursor:crosshair;outline:2px solid var(--green-bright);outline-offset:-2px}
.sp-scrub{width:100%;accent-color:var(--green-bright)}
.sp-frame{font-variant-numeric:tabular-nums}
.sp-side{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4)}
.sp-steprow{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}
.sp-steplabel{min-width:48px}
.sp-pos{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border-radius:var(--radius-pill);border:1px solid var(--control-border);background:var(--surface);color:var(--steel);font:500 14px/1 var(--font-sans);cursor:pointer}
.sp-pos[aria-pressed="true"]{background:var(--steel);color:var(--black);border-color:var(--steel)}
.sp-pos:focus-visible{outline:2px solid var(--green-bright);outline-offset:2px}
.sp-dot{width:8px;height:8px;border-radius:50%;background:var(--green-bright)}
.sp-grade{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 6px;border-radius:6px;font:700 14px/1 var(--font-display);background:var(--surface-raised);color:var(--steel)}
.sp-grade--big{min-width:38px;height:38px;font-size:20px}
.sp-grade--A{background:var(--green-deep);color:var(--green-soft)}
.sp-grade--B{background:var(--amber-deep);color:var(--amber)}
.sp-grade--C{background:#3A1A16;color:#F2A08F}
.sp-grade--none{color:var(--steel-muted)}
.sp-pos[aria-pressed="true"] .sp-grade{outline:1px solid var(--black)}
.sp-measure{border-top:1px solid var(--line-subtle);padding-top:var(--space-2);display:flex;flex-direction:column;gap:4px}
.sp-num{font:600 18px/1 var(--font-display);font-variant-numeric:tabular-nums}
.sp-h{margin:0;font:600 18px/1.3 var(--font-sans)}
.sp-title{margin:0;font:700 28px/1.1 var(--font-display);text-transform:uppercase;letter-spacing:.04em}
.sp-kicker{font:600 12px/1.4 var(--font-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--steel-muted)}
.sp-tap{border:1px solid var(--green-mid);border-radius:var(--radius-md);padding:var(--space-3);background:var(--green-deep)}
.sp-kgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:var(--space-3)}
.sp-ktile{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:8px;color:var(--steel);cursor:pointer}
.sp-ktile:focus-visible{outline:2px solid var(--green-bright)}
.sp-kimg{position:relative;line-height:0}
.sp-kimg .sp-grade{position:absolute;top:6px;right:6px}
.sp-kframe{width:100%;height:auto;border-radius:6px;background:#000}
.sp-compare{display:grid;gap:var(--space-4)}
.sp-compare--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.sp-compare--3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:700px){.sp-compare--2,.sp-compare--3{grid-template-columns:1fr}}
.sp-col{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-3)}
.sp-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4)}
.linkish{background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer}
.linkish:focus-visible{outline:2px solid var(--green-bright);outline-offset:2px}
.sp-banner{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px;line-height:1.2;pointer-events:none;max-width:92%}
.sp-b-row{flex-wrap:nowrap}
.sp-banner[hidden]{display:none}
.sp-b-title{color:#fff;font:600 clamp(16px,2.8vw,30px)/1.1 var(--font-sans);padding:6px 14px}
.sp-b-score{color:#fff;font:500 clamp(11px,1.4vw,16px)/1.2 var(--font-sans);padding:3px 10px;margin-top:-3px}
.sp-b-row{display:flex;flex-wrap:wrap;align-items:center;gap:0}
.sp-b-name{background:#1F3A8A;color:#fff;font:500 clamp(10px,1.3vw,15px)/1.2 var(--font-sans);padding:3px 8px}
.sp-b-verdict{color:#fff;font:500 clamp(10px,1.2vw,14px)/1.2 var(--font-sans);padding:3px 8px}
.sp-val{display:inline-block;padding:2px 8px;border:2px solid transparent;border-radius:6px;font-variant-numeric:tabular-nums}
.sp-pos--small{min-height:34px;font-size:13px;padding:0 10px}
.sp-b-row{opacity:.85;transform-origin:left top}
.sp-b-row--now{opacity:1}
.sp-b-row--now .sp-b-name{font-size:clamp(12px,1.9vw,22px);padding:5px 12px}
.sp-b-row--now .sp-b-verdict{font-size:clamp(11px,1.5vw,17px);padding:4px 10px}
.sp-b-top{display:flex;align-items:flex-start;gap:0;flex-wrap:nowrap}
.sp-b-col{display:flex;flex-direction:column;align-items:flex-start;gap:3px}
.sp-b-title--past{font-size:clamp(12px,2.1vw,24px)}
.sp-b-center{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);color:#fff;font:500 clamp(16px,3.6vw,40px)/1.1 var(--font-sans);padding:10px 18px;pointer-events:none;white-space:nowrap;line-height:1.2}
.sp-b-center[hidden]{display:none}
/* The banner scales with the video, not the window (container units). */
.sp-stage{container-type:inline-size}
.sp-b-title{font-size:4.4cqw;white-space:nowrap;padding:.6cqw 1.6cqw}
.sp-b-title--past{font-size:3cqw}
.sp-b-score{font-size:2.1cqw;white-space:nowrap;padding:.4cqw 1.2cqw}
.sp-b-name{font-size:2cqw;padding:.4cqw 1cqw}
.sp-b-verdict{font-size:1.8cqw;padding:.4cqw 1cqw}
.sp-b-row--now .sp-b-name{font-size:2.8cqw;padding:.6cqw 1.4cqw}
.sp-b-row--now .sp-b-verdict{font-size:2.3cqw;padding:.6cqw 1.2cqw}
.sp-b-center{font-size:5.5cqw;padding:1cqw 2cqw}
.sp-pos--suggested{border-style:dashed;border-color:var(--amber)}
.sp-suggest-note{border-left:3px solid var(--amber);padding-left:8px}

/* Testing → Max report: athletes down, lifts across; grey = estimated from logged sets; click a cell to type a max. */
.mr-table th.num,.mr-table td.num{text-align:right}
.mr-table tfoot td{border-top:2px solid var(--line);border-bottom:0;color:var(--steel)}
.mr-sort{appearance:none;background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;white-space:nowrap}
.mr-sort:hover,.mr-sort.is-on{color:var(--steel)} .mr-sort.is-on{font-weight:600}
.mr-val{font-family:var(--font-mono)} .mr-est{font-family:var(--font-mono);color:var(--steel-muted);font-style:italic}
.mr-cell{padding:0 !important}
.mr-edit{appearance:none;background:none;border:0;width:100%;min-height:44px;padding:12px;text-align:right;font:inherit;color:inherit;cursor:text;border-radius:0}
.mr-edit:hover,.mr-edit:focus-visible{background:var(--surface-raised);outline:none;box-shadow:inset 0 0 0 1px var(--green-mid)}
.mr-input{width:92px;text-align:right;margin:4px 6px}
.mr-filters .select{width:auto;min-width:160px;max-width:260px}

/* The help sentences are hidden for everyone but the owner, and for the owner when the setting says so (ui.js). */
html[data-help="off"] .dp-help{display:none}
/* Example figures for the sprint positions (sprint-figure.js). */
.sp-figure-pic{flex:0 0 auto;width:120px;height:142px}
.sp-figure-pic svg{width:100%;height:100%;display:block}
/* The Schedule page's month calendar (click a day to show that week; planned classes past the horizon in a lighter tone). */
.sc-cal-wrap>summary{list-style:none} .sc-cal-wrap>summary::-webkit-details-marker{display:none}
.sc-cal{margin-top:12px;display:flex;flex-direction:column;gap:6px}
.sc-cal-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;font:500 11px/1 var(--font-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--steel-muted);padding:0 4px}
.sc-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.sc-cal-pad{min-height:56px}
.sc-cal-day{appearance:none;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:56px;padding:6px 8px;border:1px solid var(--line-subtle);border-radius:var(--radius-sm);background:var(--surface);color:var(--steel);font:inherit;cursor:pointer;text-align:left}
.sc-cal-day:hover{background:var(--surface-raised);border-color:var(--control-border)}
.sc-cal-day.is-past{color:var(--steel-muted)}
.sc-cal-day.is-today .sc-cal-num{color:var(--green-soft, #7DBA70);font-weight:700}
.sc-cal-day.in-week{border-color:var(--green-mid);background:var(--green-deep)}
.sc-cal-day[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--green-mid)}
.sc-cal-day.is-planned .sc-cal-count{color:var(--steel-muted);font-style:italic}
.sc-cal-num{font:600 14px/1 var(--font-display)}
.sc-cal-count{font:600 13px/1 var(--font-sans);color:var(--green-soft, #7DBA70)}
.sc-cal-booked{font-size:11px;color:var(--steel-muted)}
@media (max-width:640px){.sc-cal-day{min-height:48px;padding:4px 6px}.sc-cal-booked{display:none}}
/* Leads: the sign-up link panel with its QR code. */
.ld-share>summary{list-style:none} .ld-share>summary::-webkit-details-marker{display:none}
.ld-share>summary::after{content:'▾';color:var(--steel-muted)} .ld-share[open]>summary::after{content:'▴'}
.ld-share .row.wrap{margin-top:12px}
.ld-qr{width:150px;height:150px;background:#fff;border-radius:var(--radius-sm);padding:4px} .ld-qr svg{width:100%;height:100%;display:block}

/* Bar speed (vbt-ui.js): tiles, one card per exercise with the load-velocity chart, sessions set by set, the import's column matching. */
.vb-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
.vb-tile{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:var(--surface-raised);border-radius:var(--radius-sm)}
.vb-tile b{font:600 22px/1.1 var(--font-display);color:var(--steel)} .vb-tile span{font:400 12px/16px var(--font-sans);color:var(--steel-muted)}
.vb-ex-list{display:flex;flex-direction:column;gap:10px}
.vb-ex-body{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:flex-start;margin-top:6px}
.vb-est b{font:600 20px/1.1 var(--font-display);color:var(--steel)}
.vb-chart{width:220px;max-width:100%;height:auto;flex:0 0 auto}
.vb-axis{font:400 9px var(--font-sans);fill:var(--steel-muted)} .vb-axis--amber{fill:var(--amber)}
.vb-session{padding:8px 0;border-top:1px solid var(--line-subtle)}
.vb-session-ex{margin-top:6px}
.vb-table{width:100%;border-collapse:collapse;font:400 12px/16px var(--font-sans);margin-top:4px}
.vb-table th{text-align:left;font-weight:500;color:var(--steel-muted);padding:3px 6px 3px 0;border-bottom:1px solid var(--line-subtle)}
.vb-table td{padding:4px 6px 4px 0;border-bottom:1px solid var(--line-subtle);font-variant-numeric:tabular-nums}
.vb-map summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:13px}
.vb-map-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:6px 16px;margin:8px 0}
.vb-map-row{display:flex;align-items:center;justify-content:space-between;gap:8px} .vb-map-row .select{max-width:200px}
.vb-problems{border-left:3px solid var(--amber);padding-left:10px} .vb-problems ul{margin:4px 0 0;padding-left:16px}
.vb-summary td,.vb-summary th{vertical-align:top;padding-top:8px;padding-bottom:8px} .vb-summary b{font-size:15px}
/* The Schedule week grid: Sunday to Saturday across, 4 am to 10 pm down in 15-minute rows. Sessions block out the whole
   time they cover; bookable hours sit behind them as bands; a click on an empty cell adds something there. */
.sc-grid-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}
.sc-grid{display:grid;grid-template-columns:52px repeat(var(--cols,7),minmax(128px,1fr));min-width:calc(52px + var(--cols,7) * 128px)}
.sc-grid-corner{position:sticky;left:0;z-index:4;background:var(--surface);border-bottom:1px solid var(--line)}
.sc-grid-dayhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;padding:8px 6px;border-bottom:1px solid var(--line);border-left:1px solid var(--line-subtle);position:sticky;top:0;z-index:3;background:var(--surface)}
.sc-grid-dayname{font:500 11px/1 var(--font-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--steel-muted)}
.sc-grid-daynum{font:600 18px/1 var(--font-display)}
.sc-grid-dayhead.is-today .sc-grid-daynum,.sc-grid-dayhead.is-today .sc-grid-dayname{color:var(--green-soft)}
.sc-grid-todaytag{font:600 11px/1 var(--font-sans);color:var(--green-soft)}
.sc-grid-off{font:600 10px/1.2 var(--font-sans);padding:2px 6px;border-radius:var(--radius-pill);background:var(--amber-deep);color:var(--amber)}
.sc-grid-times{position:sticky;left:0;z-index:2;background:var(--surface);border-right:1px solid var(--line)}
.sc-grid-hour{position:absolute;right:6px;margin-top:3px;font:500 11px/1 var(--font-mono);color:var(--steel-muted);white-space:nowrap}
.sc-grid-day{position:relative;border-left:1px solid var(--line-subtle)}
.sc-grid-day.is-today{background:rgba(125,186,112,.04)}
.sc-grid-day.is-past{background:rgba(0,0,0,.18)}
.sc-grid-day.is-closed{background:repeating-linear-gradient(135deg,transparent 0 10px,rgba(240,180,88,.06) 10px 12px)}
.sc-cell{display:block;box-sizing:border-box;width:100%;height:14px;margin:0;padding:0;border:0;border-top:1px solid transparent;background:transparent;cursor:default}
.sc-cell.is-hour{border-top-color:var(--line-subtle)}
button.sc-cell{cursor:pointer}
button.sc-cell:hover,button.sc-cell:focus-visible{background:rgba(125,186,112,.18);outline:none}
button.sc-cell:focus-visible{box-shadow:inset 0 0 0 2px var(--green-bright)}
.sc-hours{position:absolute;left:0;right:0;z-index:1;pointer-events:none;box-sizing:border-box;border-left:3px solid var(--green-mid);background:rgba(90,154,79,.14);padding:2px 4px;overflow:hidden;font:500 10px/1.2 var(--font-sans);color:var(--green-soft)}
.sc-hours--evaluation{border-left-color:var(--amber);background:rgba(240,180,88,.1);color:var(--amber)}
.sc-hours.is-off{opacity:.45;border-left-style:dashed}
.sc-block{position:absolute;z-index:2;box-sizing:border-box;display:flex;flex-direction:column;gap:1px;padding:3px 5px;border-radius:4px;border:1px solid transparent;overflow:hidden;color:#fff;text-decoration:none;font:400 11px/1.25 var(--font-sans)}
.sc-block-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}
.sc-block-note{font-style:italic;opacity:.95}
.sc-block-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.9}
.sc-block-flag{font-weight:600;color:var(--amber)}
.sc-block--group{background:#2F6B34;border-color:#5A9A4F}
.sc-block--camp,.sc-block--clinic{background:#7A5A1C;border-color:#B98A3A}
.sc-block--team{background:#2B5C8A;border-color:#4F86B8}
.sc-block--private{background:#5A4A8C;border-color:#8A78C0}
.sc-block--evaluation{background:#4A4F4C;border-color:#7A807C}
a.sc-block:hover,a.sc-block:focus-visible{filter:brightness(1.15);outline:none;box-shadow:0 0 0 2px var(--green-bright)}
.sc-block.is-done{opacity:.55}
.sc-block.is-live{box-shadow:0 0 0 2px var(--green-bright)}
.sc-block.is-full .sc-block-name::after{content:' · Full';font-weight:400;opacity:.85}
.sc-block.is-planned{background:transparent;border-style:dashed;color:var(--steel-muted)}
.sc-now{position:absolute;left:0;right:0;z-index:3;height:0;border-top:2px solid var(--green-bright);pointer-events:none}
.sc-now::before{content:'';position:absolute;left:-4px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--green-bright)}
.sc-choice{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 12px;border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--steel);font:inherit;text-align:left;cursor:pointer}
.sc-choice:hover{background:var(--surface-raised);border-color:var(--green-mid)}
@media (max-width:640px){.sc-grid{grid-template-columns:44px repeat(var(--cols,7),minmax(112px,1fr));min-width:calc(44px + var(--cols,7) * 112px)}.sc-grid-daynum{font-size:16px}}
/* The day view's coach columns, drag and resize, colour by coach, the legend. */
.sc-grid-who{font-size:14px;line-height:1.2}
.sc-block.can-drag{cursor:grab;user-select:none;-webkit-user-drag:none;touch-action:pan-x pan-y}
.sc-block.is-dragging{opacity:.9;z-index:6;box-shadow:0 10px 28px rgba(0,0,0,.55);cursor:grabbing;outline:2px solid var(--green-bright)}
.sc-block-grip{position:absolute;left:0;right:0;bottom:0;height:8px;cursor:ns-resize}
.sc-block-grip::after{content:'';position:absolute;left:50%;bottom:2px;width:22px;height:2px;margin-left:-11px;border-radius:1px;background:rgba(255,255,255,.45)}
.sc-block-drag{position:absolute;top:2px;right:4px;z-index:1;font:600 10px/1.2 var(--font-mono);padding:2px 5px;border-radius:3px;background:rgba(0,0,0,.6);color:#fff;white-space:nowrap}
.sc-grid.by-coach .sc-block--c0,.sc-swatch--c0{background:#2F6B34;border-color:#5A9A4F}
.sc-grid.by-coach .sc-block--c1,.sc-swatch--c1{background:#2B5C8A;border-color:#4F86B8}
.sc-grid.by-coach .sc-block--c2,.sc-swatch--c2{background:#5A4A8C;border-color:#8A78C0}
.sc-grid.by-coach .sc-block--c3,.sc-swatch--c3{background:#7A5A1C;border-color:#B98A3A}
.sc-grid.by-coach .sc-block--c4,.sc-swatch--c4{background:#1F6B6B;border-color:#3F9B9B}
.sc-grid.by-coach .sc-block--c5,.sc-swatch--c5{background:#7A2E4A;border-color:#B05A7C}
.sc-grid.by-coach .sc-block--c6,.sc-swatch--c6{background:#8A4A1C;border-color:#C27A3F}
.sc-grid.by-coach .sc-block--c7,.sc-swatch--c7{background:#555A57;border-color:#8A908C}
.sc-grid.by-coach .sc-block--cnone,.sc-swatch--cnone{background:#3A3F3C;border-color:#5A605C}
.sc-grid.by-coach .sc-block.is-planned{background:transparent}
.sc-swatch--group{background:#2F6B34} .sc-swatch--camp,.sc-swatch--clinic{background:#7A5A1C} .sc-swatch--team{background:#2B5C8A} .sc-swatch--private{background:#5A4A8C} .sc-swatch--evaluation{background:#4A4F4C}
.sc-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--steel-muted)}
.sc-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:middle;border:1px solid transparent}
/* Colour by class (version 85): the block's own colour; the picker in the class and session dialogs. */
.sc-block.is-own{background:var(--own);border-color:color-mix(in srgb,var(--own) 70%,#fff)}
.sc-grid.by-coach .sc-block.is-own{background:var(--own)}
.sc-block.is-own.is-planned{background:transparent;color:var(--steel-muted);border-color:var(--own)}
.sc-pick{display:flex;flex-wrap:wrap;gap:8px}
.sc-pick-swatch{position:relative;width:32px;height:32px;border-radius:50%;background:var(--sw);cursor:pointer;border:2px solid transparent}
.sc-pick-swatch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.sc-pick-swatch:has(input:checked){border-color:#fff;box-shadow:0 0 0 2px var(--sw)}
.sc-pick-swatch:has(input:focus-visible){outline:2px solid var(--green-bright);outline-offset:2px}
.sc-pick-dot{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#fff;opacity:0;pointer-events:none}
.sc-pick-swatch:has(input:checked) .sc-pick-dot{opacity:1}
