:root {
 --bg:#06090d; --surface:#0c1219; --surface2:#111b26; --surface3:#172436;
 --border:#1c2f42; --border2:#243d55;
 --accent:#2bb8ec; --accent-dim:rgba(var(--accent-rgb),.13); --accent2:#ff4757; --accent3:#7dd4f0;
 --text:#eaf5fb; --text2:#6fa8c4; --text3:#4a7888;
 --accent-rgb:43,184,236; --btn-text:#060d14; --coach:#1a8fc4; --radius:10px; --font-display:'Barlow Condensed',sans-serif;
 /* Status / tier traffic-light tokens. Used across goals.js, axis profiles,
    cognitive bars, coaching-inbox severity dots. Adjust here once per theme
    rather than chasing inline hex across feature files. */
 --good:#7a3; --warn:#d80; --bad:#c44; --info:#27a;
}

/* ── LOGIN THEME: Grossen Performance master brand, light palette,
   matches theme-master so the pre-auth screen feels like the same product.
   Ink-navy accent, paper-white cards on warm bg. Display type unified
   on Barlow Condensed across all themes. */
:root.theme-login {
 --bg:#F4F2EE; --surface:#FFFFFF; --surface2:#F0EFEC; --surface3:#E4E2DE;
 --border:#E4E2DE; --border2:#D0CEC9;
 --accent:#1B2A47; --accent-dim:rgba(27,42,71,.07); --accent2:#C8323C; --accent3:#555555;
 --text:#1A1A1A; --text2:#555555; --text3:#888888;
 --accent-rgb:27,42,71; --btn-text:#F0EFEC; --coach:#2C2C2C; --radius:10px;
 --font-display:'Barlow Condensed',sans-serif;
}

/* ── MASTER THEME: Grossen Performance master brand for self-service tiers.
   Light palette: off-white field, white cards, ink-navy accent. Display
   type is Barlow Condensed (unified with the coach themes and the website),
   visually distinct from coach themes through palette and card treatment
   rather than typography. */
:root.theme-master {
 --bg:#F4F2EE; --surface:#FFFFFF; --surface2:#F0EFEC; --surface3:#E4E2DE;
 --border:#E4E2DE; --border2:#D0CEC9;
 --accent:#1B2A47; --accent-dim:rgba(27,42,71,.07); --accent2:#C8323C; --accent3:#555555;
 --text:#1A1A1A; --text2:#555555; --text3:#888888;
 --accent-rgb:27,42,71; --btn-text:#F0EFEC; --coach:#2C2C2C; --radius:10px;
 --font-display:'Barlow Condensed',sans-serif;
 /* Darker traffic-light variants tuned for the cream paper background. */
 --good:#1f6f3a; --warn:#a85a1f; --bad:#8c2a2a; --info:#1B2A47;
}

/* ── DISPLAY POLISH (master + login only) ──────────────────────────────
   Light themes get larger page titles, bigger stat values, and roomier
   cards so the whitespace earns its keep. Type family inherits from the
   theme's --font-display (Barlow Condensed across all themes). Case
   treatment also inherits, keeping the system unified with coach themes
   and the website. */
:root.theme-login .page-title,
:root.theme-master .page-title {
 font-family: var(--font-display);
 font-weight: 800;
 letter-spacing: -0.4px;
 font-size: 38px;
}
:root.theme-login .card-title,
:root.theme-master .card-title {
 font-family: var(--font-display);
 font-weight: 700;
 letter-spacing: -0.2px;
}
:root.theme-login .stat-value,
:root.theme-master .stat-value {
 font-family: var(--font-display);
 font-size: 56px;
 font-weight: 800;
 letter-spacing: -1px;
 line-height: 1;
}
:root.theme-login .card,
:root.theme-master .card {
 padding: 28px;
}
:root.theme-login .stat-card,
:root.theme-master .stat-card {
 padding: 24px;
}

/* Chart axis colors — theme-aware. Dark themes get white-on-dark, light
   themes get ink-on-light. Read by chartTextColor() / chartGridColor(). */
:root { --chart-text:#1A1A1A; --chart-grid:rgba(0,0,0,.10); }

/* ── DRIES THEME: black base, electric blue accent (default, unchanged) ── */
:root.theme-dries {
 --bg:#06090d; --surface:#0c1219; --surface2:#111b26; --surface3:#172436;
 --border:#1c2f42; --border2:#243d55;
 --accent:#2bb8ec; --accent-dim:rgba(var(--accent-rgb),.13); --accent2:#ff4757; --accent3:#7dd4f0;
 --text:#eaf5fb; --text2:#6fa8c4; --text3:#4a7888;
 --accent-rgb:43,184,236; --btn-text:#060d14; --coach:#1a8fc4; --radius:10px; --font-display:'Barlow Condensed',sans-serif;
 --chart-text:#fff; --chart-grid:rgba(255,255,255,.15);
}

/* ── AGATHE THEME: black base, warm bronze accent ── */
:root.theme-agathe {
 --bg:#0e0a06; --surface:#1c1209; --surface2:#26180a; --surface3:#30200d;
 --border:#5a3820; --border2:#7a5030;
 --accent:#c8956c; --accent-dim:rgba(200,149,108,.15); --accent2:#ff4757; --accent3:#e0b896;
 --text:#f5ede4; --text2:#b08060; --text3:#9a7550;
 --accent-rgb:200,149,108; --btn-text:#1a0c04; --coach:#a07040; --radius:10px; --font-display:'Barlow Condensed',sans-serif;
 --chart-text:#fff; --chart-grid:rgba(255,255,255,.15);
}

/* ── DRIES LIGHT: master palette + electric blue accent ── */
:root.theme-dries-light {
 --bg:#F4F2EE; --surface:#FFFFFF; --surface2:#F0EFEC; --surface3:#E4E2DE;
 --border:#E4E2DE; --border2:#D0CEC9;
 --accent:#2bb8ec; --accent-dim:rgba(43,184,236,.10); --accent2:#C8323C; --accent3:#7dd4f0;
 --text:#1A1A1A; --text2:#555555; --text3:#888888;
 --accent-rgb:43,184,236; --btn-text:#FFFFFF; --coach:#1a8fc4; --radius:10px;
 --font-display:'Barlow Condensed',sans-serif;
}

/* ── AGATHE LIGHT: master palette + warm bronze accent ── */
:root.theme-agathe-light {
 --bg:#F4F2EE; --surface:#FFFFFF; --surface2:#F0EFEC; --surface3:#E4E2DE;
 --border:#E4E2DE; --border2:#D0CEC9;
 --accent:#c8956c; --accent-dim:rgba(200,149,108,.10); --accent2:#C8323C; --accent3:#e0b896;
 --text:#1A1A1A; --text2:#555555; --text3:#888888;
 --accent-rgb:200,149,108; --btn-text:#FFFFFF; --coach:#a07040; --radius:10px;
 --font-display:'Barlow Condensed',sans-serif;
}

/* Display polish for the light coach themes (mirrors master). Family + case
   inherit from base, so the type system stays unified across all themes. */
:root.theme-dries-light .page-title,
:root.theme-agathe-light .page-title {
 font-family: var(--font-display); font-weight: 800; letter-spacing: -0.4px;
 font-size: 38px;
}
:root.theme-dries-light .card-title,
:root.theme-agathe-light .card-title {
 font-family: var(--font-display); font-weight: 700; letter-spacing: -0.2px;
}
:root.theme-dries-light .stat-value,
:root.theme-agathe-light .stat-value {
 font-family: var(--font-display); font-size: 56px; font-weight: 800; letter-spacing: -1px; line-height: 1;
}
:root.theme-dries-light .card,
:root.theme-agathe-light .card { padding: 28px; }
:root.theme-dries-light .stat-card,
:root.theme-agathe-light .stat-card { padding: 24px; }

/* Subtle card depth on every light theme. Dark themes get separation from
   contrast alone; light themes need the shadow to keep cards from floating. */
:root.theme-login .card,
:root.theme-master .card,
:root.theme-dries-light .card,
:root.theme-agathe-light .card {
 box-shadow: 0 2px 8px rgba(0,0,0,.05);
}
:root.theme-login .stat-card,
:root.theme-master .stat-card,
:root.theme-dries-light .stat-card,
:root.theme-agathe-light .stat-card {
 box-shadow: 0 1px 4px rgba(0,0,0,.04);
}

/* Soften the dark-tuned shadows that look heavy on light themes. The
   athlete panel slide-in, modal drop, and rest-timer bar all originally
   used rgba(0,0,0,.5)+ which reads as a grey halo on white. */
:root.theme-login .athlete-panel,
:root.theme-master .athlete-panel,
:root.theme-dries-light .athlete-panel,
:root.theme-agathe-light .athlete-panel {
 box-shadow: -4px 0 18px rgba(0,0,0,.10);
}
:root.theme-login .client-session-card,
:root.theme-master .client-session-card,
:root.theme-dries-light .client-session-card,
:root.theme-agathe-light .client-session-card {
 box-shadow: 0 2px 10px rgba(0,0,0,.06);
}
:root.theme-login #rest-timer-bar,
:root.theme-master #rest-timer-bar,
:root.theme-dries-light #rest-timer-bar,
:root.theme-agathe-light #rest-timer-bar {
 box-shadow: 0 -4px 16px rgba(0,0,0,.10);
}

*{box-sizing:border-box;margin:0;padding:0}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.field select,.form-group select,.pa-athlete-bar select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%236fa8c4' d='M6 8L0 0h12z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}
input[type=range]{touch-action:pan-x}
input[type=number]{-moz-appearance:textfield}
html,body{height:100%}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{background:var(--bg);color:var(--text);font-family:'Barlow',sans-serif;font-size:15px;-webkit-tap-highlight-color:transparent}
[style*="scrollbar-width:none"]::-webkit-scrollbar{display:none}

/* LOGIN */
#login-screen, #signup-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
 overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:1000;
 background:var(--bg);
 background-image:repeating-linear-gradient(0deg,transparent,transparent 39px,var(--border) 39px,var(--border) 40px),
 repeating-linear-gradient(90deg,transparent,transparent 39px,var(--border) 39px,var(--border) 40px)}
.login-card{background:var(--surface);border:1px solid var(--border2);border-radius:16px;padding:48px 40px;
 width:100%;max-width:400px;box-shadow:0 32px 80px rgba(0,0,0,.6);animation:slideUp .4s ease}
.login-card{will-change:transform,opacity}
@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
/* login-logo and login-sub replaced with image */
.login-tabs{display:flex;gap:6px;margin-bottom:28px;background:var(--surface2);border-radius:8px;padding:4px}
.login-tab{flex:1;padding:8px;border:none;background:none;color:var(--text2);cursor:pointer;border-radius:6px;
 font-family:'Barlow Semi Condensed',sans-serif;font-weight:600;font-size:13px;letter-spacing:.5px;transition:all .15s}
.login-tab.active{background:var(--surface3);color:var(--text)}
.field{margin-bottom:16px}
.field label{display:block;font-size:12px;color:var(--text2);text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;font-weight:600}
.field input{width:100%;background:var(--surface2);border:1px solid var(--border2);color:var(--text);
 padding:11px 14px;border-radius:8px;font-family:'Barlow',sans-serif;font-size:14px;transition:border-color .15s}
.field input:focus{outline:none;border-color:var(--accent)}
.btn-primary{width:100%;background:var(--accent);color:var(--btn-text);border:none;border-radius:8px;padding:13px;touch-action:manipulation;
 font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:16px;letter-spacing:1.5px;cursor:pointer;transition:all .15s;margin-top:4px}
.btn-primary:hover{background:#f5ff6e;transform:translateY(-1px)}
.login-error{color:var(--accent2);font-size:13px;margin-top:12px;display:none}

/* APP SHELL */
#app{display:none;height:100vh;height:100vh;height:100dvh;flex-direction:column}
.topbar{background:var(--surface);border-bottom:1px solid var(--border);
 display:flex;align-items:center;padding:0 16px;gap:10px;flex-shrink:0;z-index:50;
 padding-top:env(safe-area-inset-top,0px);min-height:calc(52px + env(safe-area-inset-top,0px));flex-wrap:nowrap;overflow:hidden}
.topbar-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(120px,25vw)}
.topbar-logo{display:flex;align-items:center;flex-shrink:0}
.topbar-role{font-size:10px;background:var(--accent-dim);color:var(--accent);padding:3px 10px;
 border-radius:20px;font-weight:700;letter-spacing:.8px;border:1px solid rgba(var(--accent-rgb),.2)}
.topbar-name{font-family:'Barlow Semi Condensed',sans-serif;font-weight:600;font-size:14px;color:var(--text2)}
.topbar-spacer{flex:1}
.topbar-btn{background:transparent;border:1px solid var(--border);color:var(--text3);padding:5px 14px;
 border-radius:6px;cursor:pointer;font-size:12px;font-family:'Barlow',sans-serif;transition:all .15s;letter-spacing:.3px}
.topbar-btn:hover{border-color:var(--accent2);color:var(--accent2)}
/* v3.2+ Stage 2: always-on Cmd+K search bar in topbar. */
.topbar-cmd{background:var(--surface2);border:1px solid var(--border);color:var(--text3);padding:6px 10px;border-radius:7px;cursor:pointer;font-size:12px;font-family:'Barlow Semi Condensed',sans-serif;display:inline-flex;align-items:center;gap:8px;min-width:240px;transition:all .15s}
.topbar-cmd:hover{border-color:var(--border2);color:var(--text2)}
.topbar-cmd .topbar-cmd-label{flex:1;text-align:left}
.topbar-cmd .topbar-cmd-kbd{margin-left:0}
@media (max-width:768px){
 .topbar-cmd{min-width:36px;padding:6px}
 .topbar-cmd .topbar-cmd-label,.topbar-cmd .topbar-cmd-kbd{display:none}
}
/* Mobile topbar: drop the role pill + name and tighten button padding so all
   icons + Sign Out still fit on 375px-wide phones with the theme toggle. */
@media(max-width:600px){
 .topbar{gap:6px;padding:0 10px}
 .topbar-role,.topbar-name{display:none}
 .topbar-btn{padding:5px 8px;font-size:11px;letter-spacing:0}
}
.shell{display:flex;flex:1;overflow:hidden}

/* SIDEBAR */
.sidebar{width:230px;background:var(--surface);border-right:1px solid var(--border);
 display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}

.sidebar-section{padding:14px 10px 6px}
.sidebar-label{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:2px;
 font-weight:700;padding:0 10px;margin-bottom:6px;margin-top:4px}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;min-height:44px;border-radius:8px;cursor:pointer;
 color:var(--text2);font-size:13px;font-weight:500;transition:all .15s;border:none;background:none;width:100%;text-align:left;touch-action:manipulation}
.nav-item:hover{background:var(--surface2);color:var(--text)}
.nav-item.active{background:var(--accent-dim);color:var(--accent);font-weight:600;
 box-shadow:inset 3px 0 0 var(--accent);border-radius:0 8px 8px 0;margin-left:-10px;padding-left:22px;width:calc(100% + 10px);min-height:44px}

/* COACH SLIM SIDEBAR (v3.2+, 4 icons: Today/Athletes, Build, Messages, Settings).
   Option A polish: 64px wide, icons 22px, label text under each icon, brighter
   inactive color. Tooltip removed, label is always visible. */
.sidebar-slim{width:64px;padding:12px 0;display:flex;flex-direction:column;align-items:center;gap:2px}
.sidebar-slim .sb-icon-group{display:flex;flex-direction:column;gap:2px;width:100%;align-items:center}
.sidebar-slim .sb-icon-group-bottom{margin-top:auto}
.sb-iconbtn{width:56px;min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:8px;cursor:pointer;color:var(--text2);background:transparent;border:none;position:relative;transition:all .15s;flex-shrink:0;padding:6px 4px;font-family:'Barlow Semi Condensed',sans-serif}
.sb-iconbtn:hover{background:var(--surface2);color:var(--text)}
.sb-iconbtn.active{background:var(--accent-dim);color:var(--accent)}
.sb-iconbtn.active::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--accent);border-radius:0 2px 2px 0}
.sb-iconbtn svg{display:block;width:22px;height:22px;opacity:.9}
.sb-iconbtn.active svg{opacity:1}
.sb-iconbtn .sb-label{font-size:10px;font-weight:600;letter-spacing:.4px;line-height:1;text-transform:uppercase}
.sb-iconbtn .sb-tip{display:none}
.sb-iconbtn .sb-badge{position:absolute;top:4px;right:8px;background:var(--accent2);color:#fff;font-size:9px;font-weight:800;border-radius:999px;padding:0 5px;min-width:14px;height:14px;display:flex;align-items:center;justify-content:center;line-height:1}
@media(max-width:768px){
 .sidebar-slim{width:56px}
 .sb-iconbtn{width:48px;min-height:48px}
 .sb-iconbtn svg{width:20px;height:20px}
}

/* COACH MOBILE BOTTOM BAR (v3.2+, swaps with slim sidebar on small screens) */
.coach-bottom-bar{position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--border);display:none;justify-content:space-around;align-items:stretch;z-index:55;padding:6px 8px calc(8px + env(safe-area-inset-bottom,0px));gap:4px}
.coach-bottom-bar .cbb-btn{flex:1;background:transparent;border:none;color:var(--text3);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 4px;border-radius:8px;font-family:'Barlow Semi Condensed',sans-serif;position:relative;min-width:0}
.coach-bottom-bar .cbb-btn:hover{background:var(--surface2);color:var(--text)}
.coach-bottom-bar .cbb-btn.active{color:var(--accent)}
.coach-bottom-bar .cbb-label{font-size:10px;font-weight:600;letter-spacing:.4px;text-transform:uppercase}
.coach-bottom-bar .cbb-badge{position:absolute;top:4px;right:calc(50% - 22px);background:var(--accent2);color:#fff;font-size:9px;font-weight:800;border-radius:999px;padding:0 5px;min-width:14px;height:14px;display:flex;align-items:center;justify-content:center;line-height:1}
@media(max-width:768px){
 body.role-coach .coach-bottom-bar{display:flex}
 body.role-coach .sidebar-slim{display:none!important}
 body.role-coach .main{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
 /* Mobile roster: hide Glance button + chevron arrow + setup chip strip
    so names get full row width. Tap-anywhere still opens the workspace. */
 #view-athletes .users-row > button[onclick*="openWholeAthleteView"],
 #view-athletes .users-row-arrow{display:none!important}
 #view-athletes .users-row > div > div:last-child:not([style*="display:flex"]){display:none}
 /* Bump athlete name a notch since it's the primary tap target. */
 #view-athletes .users-row > div > div:first-child > div:first-child{font-size:16px!important}
 /* Coach mobile: hamburger is redundant (bottom bar provides the same 4
    entries within thumb reach) AND broken — toggleMobileSidebar tries to
    open the slim sidebar but CSS forces it hidden. Hide the hamburger so
    the topbar reads cleanly and the bottom bar is the only nav. */
 body.role-coach .hamburger{display:none!important}
 /* Mobile: full-screen swap between roster and workspace based on selection.
    No athlete = roster fills the pane (Today still embedded too, scroll past
    the roster to reach it). Athlete selected = workspace fills, roster
    hidden, back button visible to return to roster. */
 #view-athletes[data-mode="athlete"] .caw-roster{display:none}
 #view-athletes[data-mode="today"] .caw-pane{display:none}
 #view-athletes .caw-workspace{grid-template-columns:1fr!important;gap:0}
 .caw-back-btn{display:inline-flex!important}
}
.caw-back-btn{display:none;align-items:center;gap:6px;background:transparent;border:1px solid var(--border2);color:var(--text);padding:6px 12px;border-radius:7px;cursor:pointer;font-size:12px;font-family:inherit;margin-bottom:12px}
.caw-back-btn:hover{border-color:var(--accent);color:var(--accent)}
.caw-back-btn svg{display:block}
.nav-icon{width:16px;display:flex;align-items:center;justify-content:center;opacity:.45;flex-shrink:0;color:var(--text2)}
.nav-icon svg{display:block;}
.nav-item.active .nav-icon{opacity:1;color:var(--accent)}
.nav-item:hover .nav-icon{opacity:.85}
.sidebar-divider{height:1px;background:var(--border);margin:6px 10px}
.client-pill{margin:2px 10px;background:transparent;border:1px solid transparent;
 border-radius:8px;padding:8px 10px;cursor:pointer;transition:all .15s}
.client-pill:hover{background:var(--surface2);border-color:var(--border)}
.client-pill.active{background:var(--accent-dim);border-color:rgba(var(--accent-rgb),.25)}
.client-pill-name{font-size:13px;font-weight:600;color:var(--text)}
.client-pill-meta{font-size:11px;color:var(--text3);margin-top:2px}

/* ATHLETE PANEL (coach dashboard sidebar) */
.athlete-panel{position:fixed;right:0;top:0;bottom:0;width:380px;z-index:250;display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--bg,#06090d);overflow:hidden;box-shadow:-4px 0 24px rgba(0,0,0,.6);animation:slideInRight .2s ease}
.athlete-panel-header{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.athlete-panel-tabs{display:flex;gap:2px;padding:6px 12px;border-bottom:1px solid var(--border);overflow-x:auto;flex-shrink:0;background:var(--surface2);-webkit-overflow-scrolling:touch;scrollbar-width:none}
.athlete-panel-tabs::-webkit-scrollbar{display:none}
.athlete-panel-body{flex:1;overflow-y:auto;padding:14px 18px;-webkit-overflow-scrolling:touch}
.ap-tab-btn{padding:6px 12px;border-radius:6px;border:none;cursor:pointer;font-family:'Barlow Semi Condensed',sans-serif;font-size:12px;font-weight:600;transition:all .15s;background:transparent;color:var(--text2);white-space:nowrap}
.ap-tab-btn.active{background:var(--accent);color:var(--btn-text,#060d14)}

/* MAIN */
.main{flex:1;overflow-y:auto;padding:18px 28px 28px;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}
.view{display:none;animation:fadeIn .2s ease}
.view.active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* PAGE HEADER */
.page-header{margin-bottom:16px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.page-title{font-family:Barlow Condensed,sans-serif;font-size:34px;font-weight:800;letter-spacing:1.5px;line-height:1;text-transform:uppercase;word-break:break-word}
.page-sub{color:var(--text2);font-size:13px;margin-top:5px;letter-spacing:.3px}

/* BUTTONS */
.btn{padding:9px 18px;border-radius:7px;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;
 font-family:'Barlow Semi Condensed',sans-serif;font-size:13px;font-weight:600;letter-spacing:.3px;transition:all .15s}
.btn-accent{background:var(--accent);color:var(--btn-text)}
.btn-accent:hover{filter:brightness(1.15)}
.btn-ghost{background:var(--surface2);border:1px solid var(--border2);color:var(--text)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn-danger{background:rgba(255,71,87,.12);border:1px solid rgba(255,71,87,.3);color:var(--accent2)}
.btn-danger:hover{background:rgba(255,71,87,.2)}
.btn-sm{padding:5px 11px;font-size:12px}
.btn-xs{padding:3px 8px;font-size:11px}

/* CARDS */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}
.card+.card{margin-top:16px}
.card-title{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:18px;letter-spacing:.8px;
 margin-bottom:4px;text-transform:uppercase;color:var(--text)}
.card-meta{font-size:12px;color:var(--text2)}

/* GRID */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}

/* STAT CARDS */
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;
 position:relative;overflow:hidden}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;
 background:linear-gradient(90deg,var(--accent),transparent)}
.stat-label{font-size:10px;color:var(--text2);text-transform:uppercase;letter-spacing:1.2px;font-weight:700}
.stat-value{font-family:Barlow Condensed,sans-serif;font-size:42px;font-weight:700;line-height:1;color:var(--accent);margin-top:6px}
.stat-unit{font-size:12px;color:var(--text2);margin-top:3px;text-transform:uppercase;letter-spacing:.5px}

/* FORM */
.form-row{display:grid;gap:12px;margin-bottom:12px}
.form-row.cols-2{grid-template-columns:1fr 1fr}
.form-row.cols-3{grid-template-columns:1fr 1fr 1fr}
.form-row.cols-4{grid-template-columns:1fr 1fr 1fr 1fr}
.form-group{display:flex;flex-direction:column;gap:5px}
.form-label{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:1px;font-weight:600}
.form-input,.form-select,.form-textarea{background:var(--surface2);border:1px solid var(--border2);color:var(--text);
 padding:9px 12px;border-radius:7px;font-family:'Barlow',sans-serif;font-size:16px;transition:border-color .15s;width:100%;min-height:40px}
.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent)}
.form-textarea{resize:vertical;min-height:60px}

/* SESSION BUILDER */
.session-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:16px}
.session-header{padding:14px 18px;background:var(--surface2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-wrap:wrap;cursor:pointer;user-select:none}
.session-header:hover{background:var(--surface3)}
.session-body{padding:16px 18px}
.session-body.collapsed{display:none}
.session-chevron{margin-left:auto;font-size:12px;color:var(--text3);transition:transform .2s;flex-shrink:0}
.session-chevron.open{transform:rotate(180deg)}
.section-block{margin-bottom:20px}
.section-block-title{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:1.5px;font-weight:700;
 margin-bottom:10px;display:flex;align-items:center;gap:8px}
.section-block-title::after{content:'';flex:1;height:1px;background:var(--border)}

/* EXERCISE ROW */
.ex-row{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:8px}
.ex-row-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ex-drag-handle{display:inline-flex;align-items:center;justify-content:center;cursor:grab;touch-action:none;padding:6px 4px;color:var(--text3);flex-shrink:0;border-radius:4px;user-select:none}
.ex-drag-handle:hover{color:var(--accent);background:rgba(var(--accent-rgb),.08)}
.ex-drag-handle:active{cursor:grabbing}
.ex-slot-label{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:18px;color:var(--accent);width:32px;flex-shrink:0}
/* Superset group - builder */
.superset-group{border:1px solid rgba(var(--accent-rgb),.25);border-radius:10px;overflow:hidden;margin-bottom:12px;background:rgba(var(--accent-rgb),.03)}
.superset-group-label{padding:6px 14px;background:rgba(var(--accent-rgb),.08);border-bottom:1px solid rgba(var(--accent-rgb),.18);
 font-family:Barlow Condensed,sans-serif;font-size:13px;font-weight:800;color:var(--accent);
 letter-spacing:1.5px;text-transform:uppercase;display:flex;align-items:center;gap:8px}
.superset-group-label::after{content:'';flex:1;height:1px;background:rgba(var(--accent-rgb),.2)}
.superset-group .ex-row{border-radius:0;border:none;border-bottom:1px solid var(--border);margin-bottom:0}
.superset-group .ex-row:last-child{border-bottom:none}
/* Superset group - client */
.client-superset-group{border:1px solid rgba(var(--accent-rgb),.25);border-radius:12px;overflow:hidden;margin-bottom:14px;background:rgba(var(--accent-rgb),.03)}
.client-superset-label{padding:7px 18px;background:rgba(var(--accent-rgb),.08);border-bottom:1px solid rgba(var(--accent-rgb),.18);
 font-family:Barlow Condensed,sans-serif;font-size:13px;font-weight:800;color:var(--accent);
 letter-spacing:1.5px;text-transform:uppercase;display:flex;align-items:center;gap:8px}
.client-superset-label::after{content:'';flex:1;height:1px;background:rgba(var(--accent-rgb),.2)}
.client-superset-group .client-ex-card{border-radius:0;border:none;border-bottom:1px solid var(--border);margin-bottom:0}
.client-superset-group .client-ex-card:last-child{border-bottom:none}
.video-btn{padding:5px 10px;border-radius:5px;background:rgba(41,182,232,.1);border:1px solid rgba(41,182,232,.25);
 color:var(--accent3);font-size:12px;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;gap:4px}

/* EXERCISE LIBRARY */
.lib-tabs{display:flex;gap:4px;margin-bottom:20px;flex-wrap:wrap}
.lib-tab{padding:7px 16px;border-radius:6px;border:1px solid var(--border2);background:var(--surface2);
 color:var(--text2);cursor:pointer;font-size:13px;font-weight:600;transition:all .15s}
.lib-tab.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.cat-accordion{border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:8px}
.cat-header{padding:12px 16px;background:var(--surface2);cursor:pointer;display:flex;align-items:center;justify-content:space-between;
 font-weight:600;font-size:14px;transition:background .15s;user-select:none}
.cat-header:hover{background:var(--surface3)}
.cat-header-left{display:flex;align-items:center;gap:10px}
.cat-chevron{transition:transform .2s;color:var(--text3);font-size:12px}
.cat-chevron.open{transform:rotate(90deg)}
.cat-body{display:none;padding:8px}
.cat-body.open{display:block}
.ex-lib-row{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;transition:background .12s}
.ex-lib-row:hover{background:var(--surface3)}
.ex-lib-name{flex:1;font-size:13px}
.ex-lib-video{font-size:11px;color:var(--accent3);cursor:pointer;padding:3px 8px;border-radius:4px;
 border:1px solid rgba(41,182,232,.2);background:rgba(41,182,232,.06);white-space:nowrap;text-decoration:none}
.ex-lib-video:hover{background:rgba(41,182,232,.15)}
.ex-lib-video.has-link{background:rgba(41,182,232,.15);border-color:var(--accent3)}

/* EXERCISE LIBRARY V2 */
.lib-shell{display:grid;grid-template-columns:clamp(160px,20vw,220px) 1fr;gap:0;min-height:500px;height:calc(100vh - 160px);height:calc(100dvh - 160px);max-height:calc(100vh - 160px);max-height:calc(100dvh - 160px);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.lib-sheets{background:var(--surface);border-right:1px solid var(--border);padding:8px 6px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.lib-sheet-btn{display:block;width:100%;text-align:left;padding:9px 12px;border-radius:7px;border:none;
 background:transparent;color:var(--text2);cursor:pointer;font-size:12px;font-weight:600;
 font-family:'Barlow Semi Condensed',sans-serif;letter-spacing:.3px;transition:all .15s;line-height:1.3;touch-action:manipulation;min-height:40px}
.lib-sheet-btn:hover{background:var(--surface2);color:var(--text)}
.lib-sheet-btn.active{background:var(--accent-dim);color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.lib-main{background:var(--surface2);display:flex;flex-direction:column;overflow:hidden}
.lib-main-top{padding:14px 16px 10px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex-shrink:0}
.lib-search-new{background:var(--surface3);border:1px solid var(--border2);color:var(--text);
 padding:7px 12px;border-radius:7px;font-family:'Barlow',sans-serif;font-size:13px;flex:1;min-width:160px;max-width:280px}
.lib-search-new:focus{outline:none;border-color:var(--accent)}
.lib-body{flex:1;overflow-y:auto;padding:14px 16px}
.lib-cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin-bottom:18px}
.lib-cat-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px;
 cursor:pointer;transition:all .15s;touch-action:manipulation}
.lib-cat-card:hover{border-color:var(--border2);background:var(--surface3)}
.lib-cat-card.active{border-color:var(--accent);background:var(--accent-dim)}
.lib-cat-name{font-size:12px;font-weight:700;color:var(--text);line-height:1.3;margin-bottom:5px;word-break:break-word}
.lib-cat-card.active .lib-cat-name{color:var(--accent)}
.lib-cat-meta{font-size:11px;color:var(--text2)}

.lib-ex-section{border:1px solid var(--border);border-radius:8px;overflow:hidden}
.lib-ex-section-header{padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-shrink:0}
.lib-ex-section-title{font-family:Barlow Condensed,sans-serif;font-size:16px;font-weight:700;flex:1}
.lib-ex-count{font-size:11px;color:var(--text2)}
.lib-ex-row{display:flex;align-items:center;gap:6px;padding:10px 14px;border-bottom:1px solid var(--border);transition:background .1s;flex-wrap:wrap}
.lib-ex-row:last-child{border-bottom:none}
.lib-ex-row:hover{background:var(--surface3)}
.lib-ex-name{flex:1;min-width:0;font-size:13px;color:var(--text);word-break:break-word}
.lib-ex-custom-tag{font-size:10px;color:var(--coach);font-weight:700;margin-left:4px}
.lib-vid-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;cursor:pointer;transition:transform .15s}
.lib-vid-dot:hover{transform:scale(1.5)}
.lib-vid-dot.has-vid{background:var(--accent)}
.lib-vid-dot.no-vid{background:var(--surface3);border:1px solid var(--border2)}
.lib-vid-inline{display:none;align-items:center;gap:6px;padding:6px 14px 10px;background:var(--surface3);border-bottom:1px solid var(--border);flex-wrap:wrap}
.lib-vid-inline.open{display:flex}
.lib-vid-input{background:var(--surface2);border:1px solid var(--border2);color:var(--text);
 padding:6px 10px;border-radius:6px;font-family:'Barlow',sans-serif;font-size:16px;flex:1;min-width:0}
.lib-vid-input:focus{outline:none;border-color:var(--accent)}
.lib-inline-add{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--surface);border-top:1px solid var(--border);flex-wrap:wrap}
.lib-inline-input{background:var(--surface2);border:1px solid var(--border2);color:var(--text);
 padding:7px 10px;border-radius:6px;font-family:'Barlow',sans-serif;font-size:16px;flex:1;min-width:0}
.lib-inline-input:focus{outline:none;border-color:var(--accent)}
/* Ex picker in builder */
.expicker-sheets{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:12px;
 background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:4px}
.expicker-sheet-btn{padding:5px 11px;border-radius:6px;border:none;background:transparent;
 color:var(--text2);cursor:pointer;font-size:12px;font-weight:600;font-family:'Barlow Semi Condensed',sans-serif;transition:all .15s;white-space:nowrap}
.expicker-sheet-btn.active{background:var(--accent);color:var(--btn-text)}
.expicker-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:5px;margin-bottom:12px}
.expicker-cat-btn{padding:6px 10px;border-radius:7px;border:1px solid var(--border);background:var(--surface2);
 color:var(--text2);cursor:pointer;font-size:11px;font-weight:600;font-family:'Barlow',sans-serif;transition:all .15s;text-align:left;line-height:1.3}
.expicker-cat-btn:hover{border-color:var(--border2);color:var(--text)}
.expicker-cat-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}
.expicker-body{max-height:calc(70vh - 160px);max-height:calc(70dvh - 160px);overflow-y:auto}
.expicker-list{display:flex;flex-direction:column;gap:1px;overflow-y:auto;border:1px solid var(--border);border-radius:7px}
.expicker-ex-btn{padding:8px 12px;border:none;background:transparent;color:var(--text);cursor:pointer;
 font-size:13px;font-family:'Barlow',sans-serif;text-align:left;transition:background .1s;display:flex;align-items:center;gap:8px;width:100%;border-bottom:1px solid var(--border)}
.expicker-ex-btn:last-child{border-bottom:none}
.expicker-ex-btn:hover{background:var(--surface3)}
.expicker-vid-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.expicker-vid-dot.has{background:var(--accent)}
.expicker-vid-dot.no{background:var(--border2)}

/* MOBILITY BLOCK */
.mob-block{background:var(--surface2);border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:10px}
.mob-block.building{border-color:rgba(var(--accent-rgb),.2)}
.mob-block-header{padding:10px 14px;background:var(--surface3);border-bottom:1px solid var(--border);
 display:flex;align-items:center;gap:8px}
.mob-block-title{font-size:11px;color:var(--accent3);text-transform:uppercase;letter-spacing:1.2px;font-weight:700;flex:1}
.mob-ex-row{display:grid;grid-template-columns:1fr 72px 72px auto;gap:8px;align-items:center;
 padding:8px 14px;border-bottom:1px solid var(--border)}
.mob-ex-row:last-child{border-bottom:none}
.mob-ex-name{font-size:13px;color:var(--text);display:flex;align-items:center;gap:6px}
.mob-ex-joint{font-size:10px;color:var(--text3);font-weight:600;text-transform:uppercase;
 background:var(--surface3);border-radius:3px;padding:1px 5px;flex-shrink:0}
.mob-add-row{display:flex;align-items:center;gap:8px;padding:8px 14px;
 border-top:1px solid var(--border);flex-wrap:wrap}

/* PROGRAM OVERVIEW */
.overview-week{margin-bottom:20px}
.overview-week-title{font-family:Barlow Condensed,sans-serif;font-size:18px;font-weight:800;
 letter-spacing:1px;text-transform:uppercase;color:var(--accent);margin-bottom:10px;
 display:flex;align-items:center;gap:10px}
.overview-week-title::after{content:'';flex:1;height:1px;background:var(--border)}
.overview-sessions{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.overview-session-card{background:var(--surface2);border:1px solid var(--border);border-radius:8px;
 overflow:hidden;cursor:pointer;transition:border-color .15s}
.overview-session-card:hover{border-color:var(--accent)}
.overview-session-header{padding:10px 14px;background:var(--surface3);border-bottom:1px solid var(--border);
 display:flex;align-items:center;gap:8px}
.overview-session-name{font-family:Barlow Condensed,sans-serif;font-size:15px;font-weight:700;flex:1}
.overview-session-type{font-size:11px;color:var(--text2);font-weight:600;text-transform:uppercase;letter-spacing:.5px}
.overview-session-body{padding:10px 14px}
.overview-ex-row{display:flex;align-items:baseline;gap:6px;padding:3px 0;
 border-bottom:1px solid var(--border);font-size:12px}
.overview-ex-row:last-child{border-bottom:none}
.overview-ex-slot{font-family:Barlow Condensed,sans-serif;font-size:13px;font-weight:700;
 color:var(--accent);width:22px;flex-shrink:0}
.overview-ex-name{flex:1;color:var(--text);line-height:1.3}
.overview-ex-vars{color:var(--text2);font-size:12px;white-space:nowrap;flex-shrink:0}
.overview-empty-session{padding:12px 14px;font-size:13px;color:var(--text2);font-style:italic}
.overview-no-sessions{font-size:12px;color:var(--text3);font-style:italic;padding:4px 0}

/* TEMPLATES */
.template-card{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:16px;
 display:flex;align-items:center;gap:12px;margin-bottom:10px}
.template-info{flex:1}
.template-name{font-weight:600;font-size:14px}
.template-meta{font-size:12px;color:var(--text2);margin-top:3px}

/* CLIENT VIEW */
.client-session-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;margin-bottom:18px;box-shadow:0 2px 12px rgba(0,0,0,.18)}
.client-session-header{padding:16px 22px;background:linear-gradient(90deg,var(--surface2) 0%,rgba(var(--accent-rgb),.05) 100%);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}
.client-session-title{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:22px;letter-spacing:.5px}
.client-session-body{padding:20px 22px;transition:none}
.client-session-body.collapsed{display:none}
.session-chevron{margin-left:auto;font-size:16px;color:var(--text2);transition:transform .2s;flex-shrink:0}
.session-chevron.open{transform:rotate(180deg)}
.prep-block{background:rgba(125,212,240,.05);border-left:3px solid var(--accent3);border-radius:0 8px 8px 0;padding:11px 16px;margin-bottom:8px;display:flex;flex-direction:column;gap:4px}
.prep-label{font-size:13px;color:var(--accent3);font-weight:700;letter-spacing:.5px}
.prep-desc{font-size:13px;color:var(--text);line-height:1.5}
.client-ex-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:16px 18px;margin-bottom:10px;transition:border-color .15s}
.client-ex-card:hover{border-color:var(--border2)}
.client-ex-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.client-ex-slot{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:16px;color:var(--accent);
 background:var(--accent-dim);border-radius:6px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.client-ex-name{font-size:16px;font-weight:700;line-height:1.2}
.client-ex-fields{display:flex;gap:0;flex-wrap:wrap;margin-bottom:10px;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.client-ex-field{display:flex;flex-direction:column;gap:3px;padding:9px 14px;border-right:1px solid var(--border);flex:1;min-width:70px}
.client-ex-field:last-child{border-right:none}
.client-ex-field-label{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.8px;font-weight:700}
.client-ex-field-val{font-family:Barlow Condensed,sans-serif;font-size:18px;font-weight:700;color:var(--text);letter-spacing:.3px}
.client-notes{font-size:13px;color:var(--text);line-height:1.5;padding:8px 12px;background:rgba(var(--accent-rgb),.05);
 border:1px solid rgba(var(--accent-rgb),.15);border-radius:7px;margin-top:6px;display:flex;gap:7px;align-items:flex-start}
/* LOGGING */
.log-section{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}
.log-section-title{font-size:10px;color:var(--accent);text-transform:uppercase;letter-spacing:1.2px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.log-section-title::after{content:'';flex:1;height:1px;background:var(--border)}
.log-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.log-input{background:var(--surface3);border:1px solid var(--border2);color:var(--text);
 padding:8px 12px;border-radius:7px;font-family:'Barlow',sans-serif;font-size:13px;width:100%;transition:border-color .15s}
.log-input:focus{outline:none;border-color:var(--accent)}
.log-input.has-value{border-color:rgba(var(--accent-rgb),.4);background:rgba(var(--accent-rgb),.04)}
.log-textarea{background:var(--surface3);border:1px solid var(--border2);color:var(--text);
 padding:8px 12px;border-radius:7px;font-family:'Barlow',sans-serif;font-size:13px;width:100%;
 resize:vertical;min-height:52px;transition:border-color .15s}
.log-textarea:focus{outline:none;border-color:var(--accent)}
.log-textarea.has-value{border-color:rgba(var(--accent-rgb),.4);background:rgba(var(--accent-rgb),.04)}
.saved-log{background:rgba(var(--accent-rgb),.05);border:1px solid rgba(var(--accent-rgb),.18);border-radius:8px;padding:10px 14px;margin-top:10px;font-size:12px}
.saved-log-label{font-size:10px;color:var(--accent);text-transform:uppercase;letter-spacing:1px;font-weight:700;margin-bottom:6px}
/* SET LOGGING */
.set-log-table{width:100%;border-collapse:collapse;margin-top:2px}
.set-log-table th{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.8px;font-weight:700;
 padding:6px 8px;text-align:left;border-bottom:1px solid var(--border)}
.set-log-table td{padding:5px 4px;vertical-align:middle}
.set-num{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:16px;color:var(--accent);
 width:28px;text-align:center;padding:0 6px}
.set-input{background:var(--surface3);border:1px solid var(--border2);color:var(--text);
 padding:7px 10px;border-radius:6px;font-family:'Barlow',sans-serif;font-size:13px;width:100%;transition:border-color .15s}
.set-input:focus{outline:none;border-color:var(--accent)}
.set-input.has-value{border-color:rgba(var(--accent-rgb),.45);background:rgba(var(--accent-rgb),.05)}
.set-saved-row{display:flex;gap:14px;font-size:12px;padding:5px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}
.set-saved-row:last-child{border-bottom:none}
/* WEEK NAV */
.week-nav{display:flex;align-items:center;gap:6px;margin-bottom:20px;overflow-x:auto;padding:10px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;scrollbar-width:thin;scrollbar-color:var(--border2) transparent}
.week-nav::-webkit-scrollbar{height:4px}.week-nav::-webkit-scrollbar-track{background:transparent}.week-nav::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}
.week-label-tag{display:inline-block;padding:3px 10px;border-radius:4px;font-size:11px;font-weight:700;
 text-transform:uppercase;letter-spacing:.8px;background:rgba(var(--accent-rgb),.15);color:var(--accent);
 border:1px solid rgba(var(--accent-rgb),.3);margin-left:6px;vertical-align:middle}
.week-label-tag.deload{background:rgba(255,152,74,.15);color:#ff984a;border-color:rgba(255,152,74,.3)}
.week-label-tag.test{background:rgba(46,204,113,.15);color:#2ecc71;border-color:rgba(46,204,113,.3)}
.week-label-tag.comp{background:rgba(255,71,87,.15);color:#ff4757;border-color:rgba(255,71,87,.3)}
.week-btn{flex-shrink:0;padding:5px 11px;border-radius:6px;border:1px solid var(--border2);background:transparent;
 color:var(--text2);cursor:pointer;font-weight:700;font-size:12px;transition:all .15s;font-family:Barlow Condensed,sans-serif;letter-spacing:.3px;touch-action:manipulation}
.week-btn:hover,.week-btn.active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}
.week-display{font-family:Barlow Condensed,sans-serif;font-size:22px;font-weight:700;letter-spacing:1px;padding:0 6px}
.save-bar{display:flex;align-items:center;gap:12px;padding:14px 22px;background:var(--surface);
 border-top:2px solid rgba(var(--accent-rgb),.2);position:sticky;bottom:0;z-index:10;margin:0 -28px -28px;box-shadow:0 -4px 20px rgba(0,0,0,.3)}
.save-status{font-size:12px;color:var(--text3);flex:1}
/* LAST WEEK HINT */
.last-week-hint{font-size:11px;color:var(--accent3);margin-top:3px;font-style:italic;min-height:15px;opacity:.8}
/* SESSION MODE */
.session-pre-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;margin-bottom:14px;transition:border-color .15s}
.session-pre-card:hover{border-color:var(--border2)}
.session-pre-header{padding:18px 22px;display:flex;align-items:center;gap:14px}
.session-pre-icon{width:44px;height:44px;border-radius:10px;background:var(--accent-dim);border:1px solid rgba(var(--accent-rgb),.2);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:Barlow Condensed,sans-serif;font-weight:800;font-size:18px;color:var(--accent)}
.session-pre-info{flex:1;min-width:0}
.session-pre-name{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:20px;letter-spacing:.3px}
.session-pre-meta{font-size:12px;color:var(--text2);margin-top:3px}
.session-pre-done{display:flex;align-items:center;gap:6px;font-size:12px;color:#2ecc71;font-weight:700;padding:4px 12px;border-radius:20px;background:rgba(46,204,113,.12);border:1px solid rgba(46,204,113,.3);white-space:nowrap}
.session-active-header{padding:14px 22px;background:rgba(var(--accent-rgb),.07);border-bottom:2px solid rgba(var(--accent-rgb),.25);display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.session-active-tag{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:1.2px;font-weight:700;padding:3px 10px;border-radius:20px;background:rgba(var(--accent-rgb),.15);border:1px solid rgba(var(--accent-rgb),.3)}
.session-elapsed{font-size:13px;color:var(--text2);font-family:Barlow Condensed,sans-serif;letter-spacing:.5px;margin-left:auto}
.set-row{display:flex;align-items:center;gap:6px;padding:7px 0;border-bottom:1px solid var(--border)}
.set-row:last-child{border-bottom:none}
.set-row.confirmed{background:rgba(46,204,113,.03)}
.set-num-cell{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:16px;color:var(--accent);width:26px;text-align:center;flex-shrink:0}
.set-field{display:flex;flex-direction:column;gap:2px;flex:1;min-width:56px}
.set-field-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.set-input-sm{background:var(--surface3);border:1px solid var(--border2);color:var(--text);padding:7px 9px;border-radius:6px;font-family:'Barlow',sans-serif;font-size:14px;width:100%;transition:border-color .15s;-webkit-appearance:none}
.set-input-sm:focus{outline:none;border-color:var(--accent)}
.set-input-sm.has-value{border-color:rgba(var(--accent-rgb),.45);background:rgba(var(--accent-rgb),.05)}
.set-confirm-btn{width:38px;height:38px;border-radius:8px;border:1.5px solid var(--border2);background:transparent;color:var(--text3);cursor:pointer;font-size:20px;transition:all .15s;flex-shrink:0;display:flex;align-items:center;justify-content:center;touch-action:manipulation;line-height:1}
.set-confirm-btn:hover{border-color:#2ecc71;color:#2ecc71;background:rgba(46,204,113,.1)}
.set-confirm-btn.confirmed{border-color:#2ecc71;color:#2ecc71;background:rgba(46,204,113,.12)}
.set-optional-toggle{font-size:13px;color:var(--text2);background:none;border:1px solid var(--border2);cursor:pointer;padding:5px 8px;font-family:'Barlow',sans-serif;touch-action:manipulation;border-radius:6px;flex-shrink:0;white-space:nowrap;transition:all .15s;line-height:1}
.set-optional-toggle:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}
.set-optional-toggle.has-value{border-color:rgba(var(--accent-rgb),.4);color:var(--accent);background:rgba(var(--accent-rgb),.08)}
.set-optional-fields{display:none;gap:6px;padding:6px 0 2px;flex-wrap:wrap}
.set-optional-fields.open{display:flex}
#rest-timer-bar{display:none;position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--surface);border-top:1px solid var(--border2);padding:10px 20px calc(10px + env(safe-area-inset-bottom,0px));box-shadow:0 -6px 24px rgba(0,0,0,.5)}
body.keyboard-open #rest-timer-bar{display:none!important}
.rest-timer-inner{display:flex;align-items:center;gap:14px;max-width:640px;margin:0 auto}
.rest-timer-label{font-size:12px;color:var(--text2);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rest-timer-countdown{font-family:Barlow Condensed,sans-serif;font-size:30px;font-weight:700;letter-spacing:1px;min-width:58px;text-align:center;transition:color .2s}
.rest-timer-track{flex:2;height:4px;background:var(--surface3);border-radius:2px;overflow:hidden;min-width:50px}
.rest-timer-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .9s linear}
.rest-timer-skip{background:none;border:1px solid var(--border2);color:var(--text2);border-radius:6px;padding:5px 14px;cursor:pointer;font-size:12px;font-family:'Barlow',sans-serif;white-space:nowrap;touch-action:manipulation;transition:all .15s}
.rest-timer-skip:hover{border-color:var(--accent);color:var(--accent)}
/* PROGRESS */
.progress-ex-picker{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}
.progress-ex-btn{padding:7px 16px;border-radius:6px;border:1px solid var(--border2);background:var(--surface2);
 color:var(--text2);cursor:pointer;font-size:12px;font-weight:600;font-family:'Barlow',sans-serif;
 transition:all .15s;white-space:nowrap;letter-spacing:.3px}
.progress-ex-btn:hover,.progress-ex-btn.active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}
/* PR BOARD */
.pr-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:28px}
.pr-card{background:var(--surface2);border:1px solid var(--border);border-top:2px solid var(--border);border-radius:10px;padding:16px 18px;position:relative;transition:border-color .2s}
.pr-card:hover{border-color:var(--border2)}
.pr-card.has-pr{border-color:rgba(255,196,0,.25);border-top-color:#ffc400}
.pr-ex-name{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.8px;font-weight:700;margin-bottom:8px;line-height:1.4;word-break:break-word}
.pr-value{font-family:Barlow Condensed,sans-serif;font-size:32px;font-weight:700;line-height:1;color:var(--text);margin-bottom:2px}
.pr-value span{font-size:16px;color:var(--text2);font-weight:400;margin-left:2px}
.pr-meta{font-size:11px;color:var(--text3);margin-top:4px}
.pr-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;
 letter-spacing:.6px;text-transform:uppercase;color:#ffc400;margin-top:6px}
/* CHART PANEL */
.progress-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0;margin-bottom:16px}
.progress-panel-header{padding:18px 20px 14px;border-bottom:1px solid var(--border);
 display:flex;align-items:center;justify-content:space-between}
.progress-panel-title{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:18px;
 letter-spacing:.5px;color:var(--text)}
.progress-panel-sub{font-size:12px;color:var(--text3);margin-top:2px}
.progress-panel-body{padding:20px}
.chart-canvas-wrap{position:relative;height:180px}
.progress-stats{display:flex;gap:0;border-top:1px solid var(--border);margin-top:16px;border-radius:0 0 10px 10px;overflow:hidden}
.progress-stat{flex:1;padding:14px 20px;text-align:center;border-right:1px solid var(--border)}
.progress-stat:last-child{border-right:none}
.progress-stat-val{font-family:Barlow Condensed,sans-serif;font-size:26px;font-weight:700;color:var(--accent);line-height:1}
.progress-stat-val.gold{color:#ffc400}
.progress-stat-lbl{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.8px;font-weight:700;margin-top:3px}
/* HEATMAP */
.heatmap-grid{display:flex;flex-wrap:wrap;gap:4px;padding:4px 0}
.heatmap-cell{width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;
 font-size:10px;font-weight:700;color:var(--text3);cursor:default;transition:transform .1s;position:relative}
.heatmap-cell:hover{transform:scale(1.15);z-index:2}
.heatmap-cell.empty{background:var(--surface3);border:1px solid var(--border)}
.heatmap-cell.logged{background:rgba(var(--accent-rgb),.18);border:1px solid rgba(var(--accent-rgb),.35);color:var(--accent)}
.heatmap-cell.full{background:rgba(var(--accent-rgb),.38);border:1px solid rgba(var(--accent-rgb),.6);color:var(--accent)}
.heatmap-cell.current{box-shadow:0 0 0 2px var(--accent)}
.heatmap-legend{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text3);margin-top:10px}
.heatmap-swatch{width:14px;height:14px;border-radius:3px;display:inline-block}
.progress-empty{text-align:center;padding:48px 20px;color:var(--text3);font-size:13px;line-height:1.6}
/* v3.2+ Style Standard, Rule 5: section labels inside a view (11px uppercase
   letter-spacing 1.2px text3 color, optional 14px lucide icon left of text). */
.section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--text3);margin:22px 0 12px;display:flex;align-items:center;gap:8px}

/* v3.2+ Stat box pattern used by Performance Progress, Health Trends, Self
   Hub practice strip. .stat-row is the grid wrapper; each .stat-box is one
   card with label, big value, and optional sub line. */
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.stat-box{padding:14px 16px;border:1px solid var(--border);background:var(--surface);border-radius:10px}
.stat-box-label{font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--text3);margin-bottom:6px}
.stat-box-value{font-family:'Barlow Condensed',sans-serif;font-size:24px;font-weight:800;line-height:1;color:var(--text)}
.stat-box-sub{font-size:11px;color:var(--text2);margin-top:4px}

.section-label-row{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.section-label-row-title{font-family:Barlow Condensed,sans-serif;font-size:13px;font-weight:700;
 letter-spacing:1.5px;text-transform:uppercase;color:var(--text3);white-space:nowrap}
.section-label-row::after{content:'';flex:1;height:1px;background:var(--border)}

/* MODAL */

.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:200;
 display:flex;align-items:center;justify-content:center;
 padding:16px;
 animation:fadeIn .2s;overscroll-behavior:none;-webkit-overflow-scrolling:none}
@media(max-height:600px){
 .modal-overlay{align-items:flex-start;padding:8px}
}
.modal{
 background:var(--surface);border:1px solid var(--border2);border-radius:14px;
 width:100%;
 /* Phone: nearly full screen */
 max-width:min(700px,calc(100vw - 24px));
 height:calc(100vh - 32px);height:calc(100dvh - 32px);
 max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);
 display:flex;flex-direction:column;overflow:hidden}
.modal--wide{max-width:min(960px,calc(100vw - 24px))}
/* Tablet 768px+ */
@media(min-width:768px){
 .modal{
   max-width:min(800px,calc(100vw - 48px));
   height:calc(100vh - 48px);height:calc(100dvh - 48px);
   max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px)}
 .modal--wide{max-width:min(1100px,calc(100vw - 48px))}
}
/* Laptop 1200px+ */
@media(min-width:1200px){
 .modal{
   max-width:min(900px,calc(100vw - 80px));
   height:auto;
   min-height:60vh;
   max-height:calc(100vh - 80px);max-height:calc(100dvh - 80px)}
 .modal--wide{
   max-width:min(1400px,calc(100vw - 80px));
   min-height:60vh}
}
/* Large desktop 1600px+ */
@media(min-width:1600px){
 .modal{max-width:min(1000px,calc(100vw - 120px))}
 .modal--wide{max-width:min(1500px,calc(100vw - 120px))}
}
.modal-header{padding:18px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.modal-title{font-family:Barlow Condensed,sans-serif;font-weight:700;font-size:22px;letter-spacing:.5px}
.modal-close{background:none;border:none;color:var(--text2);font-size:20px;cursor:pointer;padding:4px}
.modal-close:hover{color:var(--text)}
.modal-body{padding:24px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;overflow-y:auto;flex:1;min-height:0}
.modal-footer{padding:14px 24px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;flex-shrink:0}

/* TABLE */
table.list{width:100%;border-collapse:collapse;font-size:13px}
table.list th{padding:10px 14px;text-align:left;font-size:11px;color:var(--text3);
 text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--border);font-weight:600}
table.list td{padding:12px 14px;border-bottom:1px solid var(--border)}
table.list tr:last-child td{border-bottom:none}
table.list tr:hover td{background:var(--surface2)}

/* MISC */
.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;letter-spacing:.3px}
.badge-green{background:rgba(76,175,80,.15);color:#66bb6a}
.badge-orange{background:rgba(26,143,196,.15);color:var(--coach)}
.badge-blue{background:rgba(41,182,232,.12);color:var(--accent3)}
.badge-yellow{background:var(--accent-dim);color:var(--accent)}
.empty{text-align:center;padding:60px 20px;color:var(--text3);font-size:14px}
.empty-icon{font-size:40px;margin-bottom:12px}
.divider{height:1px;background:var(--border);margin:20px 0}
.toast{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%) translateY(80px);
 background:var(--accent);color:var(--btn-text);
 padding:12px 22px;border-radius:8px;font-weight:600;font-size:13px;
 max-width:calc(100vw - 40px);text-align:center;word-break:break-word;
 opacity:0;transition:transform .3s,opacity .3s;z-index:10000;pointer-events:none;
 box-shadow:0 4px 20px rgba(0,0,0,.4);white-space:pre-wrap}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1}
.toast.toast-error{background:var(--accent2);color:#fff}
.toast.toast-warn{background:#ff984a;color:#1a0a00}
.search-bar{background:var(--surface2);border:1px solid var(--border2);color:var(--text);
 padding:9px 14px;border-radius:8px;font-family:'Barlow',sans-serif;font-size:14px;width:100%;max-width:340px}
.search-bar:focus{outline:none;border-color:var(--accent)}
/* Command Palette */
#cmd-overlay{position:fixed;inset:0;background:rgba(0,0,0,.40);z-index:11000;display:none;align-items:flex-start;justify-content:center;padding-top:min(20vh,140px)}
#cmd-overlay.open{display:flex}
#cmd-box{background:var(--surface);border:1px solid var(--border2);border-radius:14px;width:100%;max-width:520px;box-shadow:0 16px 50px rgba(0,0,0,.5);overflow:hidden;max-height:70vh;display:flex;flex-direction:column}
#cmd-input{background:transparent;border:none;border-bottom:1px solid var(--border);color:var(--text);font-family:'Barlow',sans-serif;font-size:16px;padding:16px 20px;width:100%;outline:none}
#cmd-input::placeholder{color:var(--text3)}
#cmd-results{overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:calc(70vh - 56px)}
.cmd-group-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--text3);padding:12px 20px 4px}
.cmd-item{display:flex;align-items:center;gap:12px;padding:10px 20px;cursor:pointer;transition:background .1s}
.cmd-item:hover,.cmd-item.active{background:var(--surface2)}
.cmd-item-icon{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--surface3)}
.cmd-item-text{flex:1;min-width:0}
.cmd-item-title{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmd-item-sub{font-size:11px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmd-kbd{font-size:10px;color:var(--text3);background:var(--surface3);padding:2px 6px;border-radius:4px;border:1px solid var(--border);font-family:monospace}
@media(max-width:768px){.cmd-kbd-desktop{display:none!important}
 #cmd-overlay{padding-top:8px}
 #cmd-box{max-width:100%;border-radius:0;max-height:100vh;border:none}
 .cmd-item{padding:14px 20px;min-height:48px}
}
@media(pointer:coarse){.cmd-kbd-desktop{display:none!important}}


/* ── SCREENING ───────────────────────────────────────────── */
.assess-template-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;
 padding:18px 20px;margin-bottom:12px;transition:border-color .15s}
.assess-template-card:hover{border-color:var(--border2)}
.assess-template-name{font-family:Barlow Condensed,sans-serif;font-size:20px;font-weight:700;letter-spacing:.3px;margin-bottom:4px}
.assess-template-meta{font-size:12px;color:var(--text3)}
.assess-type-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.assess-type-tab{padding:6px 14px;border-radius:20px;border:1px solid var(--border2);
 background:transparent;color:var(--text2);cursor:pointer;font-size:12px;font-weight:600;
 font-family:'Barlow',sans-serif;transition:all .15s}
.assess-type-tab.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.assess-test-row{display:grid;grid-template-columns:1fr 160px 120px 40px;gap:8px;align-items:center;
 padding:10px 14px;background:var(--surface3);border-radius:7px;margin-bottom:6px}
.assess-test-name{font-size:13px;font-weight:600;color:var(--text)}
.assess-test-unit{font-size:12px;color:var(--text2)}
/* assigned screening cards */
.assigned-assess-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;margin-bottom:12px;overflow:hidden}
.assigned-assess-header{padding:14px 18px;display:flex;align-items:center;gap:12px;cursor:pointer;
 border-bottom:1px solid transparent;transition:border-color .15s}
.assigned-assess-header:hover{border-bottom-color:var(--border)}
.assigned-assess-title{font-family:Barlow Condensed,sans-serif;font-size:18px;font-weight:700;flex:1}
.assigned-assess-body{padding:16px 18px}
.assess-result-row{display:grid;grid-template-columns:1fr 140px 100px;gap:10px;align-items:center;
 padding:8px 0;border-bottom:1px solid var(--border)}
.assess-result-row:last-child{border-bottom:none}
.assess-result-name{font-size:13px;color:var(--text)}
.assess-result-input{background:var(--surface3);border:1px solid var(--border2);color:var(--text);
 padding:7px 10px;border-radius:6px;font-family:'Barlow',sans-serif;font-size:13px;
 width:100%;transition:border-color .15s}
.assess-result-input:focus{outline:none;border-color:var(--accent)}
.assess-result-input.has-value{border-color:rgba(var(--accent-rgb),.45);background:rgba(var(--accent-rgb),.05)}
.assess-result-notes{font-size:12px;color:var(--text2)}
/* history table */
.assess-history-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:12px}
.assess-history-table th{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.8px;
 font-weight:700;padding:6px 10px;text-align:left;border-bottom:1px solid var(--border)}
.assess-history-table td{padding:7px 10px;border-bottom:1px solid var(--border);color:var(--text2)}
.assess-history-table tr:last-child td{border-bottom:none}
.assess-history-table td.best{color:var(--accent);font-weight:700}
.assess-pr-badge{display:inline-block;padding:1px 6px;border-radius:3px;font-size:9px;
 font-weight:700;letter-spacing:.5px;background:var(--surface3);color:var(--text2);margin-left:4px}
/* type badges */
.screen-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:12px;
 font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
 background:var(--surface3);color:var(--text2)}
.screen-badge.speed,.screen-badge.strength,.screen-badge.jump,.screen-badge.mobility,.screen-badge.mobility-upper{background:var(--surface3);color:var(--text2)}
/* coach results view */
.coach-screen-athlete-row{display:flex;align-items:center;gap:10px;padding:10px 14px;
 background:var(--surface3);border-radius:7px;margin-bottom:6px;cursor:pointer;transition:background .15s}
.coach-screen-athlete-row:hover{background:var(--surface2)}
/* Screening Hub / F-V Profiling / Biofeedback: hide inner renderers' pickers + page
   headers so the wrapper's own chrome takes over. The wrapper's own page-header is a
   direct child of the view, the unhide rules below restore it. */
#view-screening-hub .pa-athlete-bar{display:none}
#view-screening-hub .page-header{display:none}
#view-screening-hub > .page-header{display:flex}
#view-biofeedback-coach #biofeedback-panel .pa-athlete-bar{display:none}
#view-biofeedback-coach #biofeedback-panel .page-header{display:none}
#view-fv-profiling .pa-athlete-bar{display:none}
#view-fv-profiling .page-header{display:none}
#view-fv-profiling > .page-header{display:flex}
/* movement screening redesign */
.pa-athlete-bar{display:flex;align-items:center;gap:12px;padding:14px 20px;background:var(--surface2);
 border:1px solid var(--border);border-radius:12px;margin-bottom:24px}
.pa-athlete-bar-label{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:1px;font-weight:700;white-space:nowrap}
.pa-athlete-select{flex:1;background:var(--surface3);border:1px solid var(--border2);color:var(--text);
 padding:9px 36px 9px 14px;border-radius:8px;font-family:'Barlow',sans-serif;font-size:14px;font-weight:600;cursor:pointer;
 -webkit-appearance:none;appearance:none;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
 background-repeat:no-repeat;background-position:right 12px center}
.pa-athlete-select:focus{outline:none;border-color:var(--accent)}
.pa-section-title{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:1.2px;font-weight:700;
 margin-bottom:14px;display:flex;align-items:center;gap:10px}
.pa-section-title::after{content:'';flex:1;height:1px;background:var(--border);display:block}
.pa-template-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;
 padding:16px 20px;margin-bottom:10px;transition:border-color .15s;display:flex;align-items:flex-start;gap:14px}
.pa-template-card:hover{border-color:var(--border2)}
.pa-template-info{flex:1;min-width:0}
.pa-template-name{font-family:Barlow Condensed,sans-serif;font-size:19px;font-weight:700;letter-spacing:.3px;margin-bottom:4px}
.pa-template-meta{font-size:12px;color:var(--text3);margin-bottom:8px}
.pa-template-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.pa-more-btn{background:none;border:1px solid var(--border2);color:var(--text3);border-radius:6px;
 width:30px;height:30px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;
 transition:all .15s;position:relative;flex-shrink:0}
.pa-more-btn:hover{border-color:var(--border2);color:var(--text);background:var(--surface3)}
.pa-more-menu{display:none;position:absolute;right:0;top:34px;background:var(--surface);border:1px solid var(--border2);
 border-radius:8px;padding:4px;z-index:50;min-width:130px;box-shadow:0 8px 24px rgba(0,0,0,.4)}
.pa-more-menu.open{display:block}
.pa-more-item{display:block;width:100%;text-align:left;padding:7px 12px;border:none;background:none;
 color:var(--text);font-size:13px;font-family:'Barlow',sans-serif;cursor:pointer;border-radius:5px;transition:background .1s}
.pa-more-item:hover{background:var(--surface2)}
.pa-more-item.danger{color:var(--accent2)}
.pa-screening-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;margin-bottom:10px;overflow:hidden}
.pa-screening-header{padding:14px 20px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:background .12s}
.pa-screening-header:hover{background:var(--surface3)}
.pa-screening-title{font-family:Barlow Condensed,sans-serif;font-size:18px;font-weight:700;flex:1}
.pa-screening-body{padding:16px 20px;border-top:1px solid var(--border)}
.pa-empty{color:var(--text3);font-size:13px;padding:28px 20px;text-align:center;border:1px dashed var(--border);
 border-radius:10px;margin-bottom:10px}

/* VIDEO SCREENING */
.screen-badge.video{background:var(--surface3);color:var(--text2)}
.video-section-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;
 margin-bottom:14px;overflow:hidden}
.video-section-header{padding:16px 18px;border-bottom:1px solid var(--border)}
.video-section-category{font-size:10px;color:var(--accent);text-transform:uppercase;letter-spacing:1px;
 font-weight:700;margin-bottom:4px}
.video-section-title{font-family:Barlow Condensed,sans-serif;font-size:22px;font-weight:700;
 letter-spacing:.3px;margin-bottom:4px}
.video-section-exercises{font-size:13px;color:var(--text2);margin-bottom:6px}
.video-section-desc{font-size:12px;color:var(--text3);font-style:italic}
.video-section-body{padding:16px 18px}
.video-link-input-wrap{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.video-link-input{flex:1;background:var(--surface3);border:1px solid var(--border2);color:var(--text);
 padding:9px 14px;border-radius:7px;font-family:'Barlow',sans-serif;font-size:13px;transition:border-color .15s}
.video-link-input:focus{outline:none;border-color:var(--accent)}
.video-link-input.has-value{border-color:rgba(var(--accent-rgb),.45);background:rgba(var(--accent-rgb),.04)}
.video-link-btn{padding:9px 14px;border-radius:7px;background:var(--surface3);border:1px solid var(--border2);
 color:var(--accent);font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;transition:all .15s}
.video-link-btn:hover{border-color:var(--accent);background:var(--accent-dim)}
/* Coach scoring panel */
.coach-score-section{background:var(--surface3);border:1px solid var(--border);border-radius:8px;
 padding:14px 16px;margin-top:10px}
.coach-score-title{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:.8px;
 font-weight:700;margin-bottom:12px}
.coach-criteria-row{display:flex;align-items:center;gap:10px;padding:6px 0;
 border-bottom:1px solid var(--border)}
.coach-criteria-row:last-child{border-bottom:none}
.coach-criteria-label{flex:1;font-size:13px;color:var(--text2)}
.score-pills{display:flex;gap:4px}
.score-pill{width:30px;height:28px;border-radius:5px;border:1px solid var(--border2);background:transparent;color:var(--text3);font-size:12px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;font-family:Barlow Condensed,sans-serif}
.score-pill:hover{border-color:var(--accent);color:var(--accent)}
.score-pill.selected{background:var(--accent);border-color:var(--accent);color:var(--btn-text)}
.score-pill.sel-2{background:#ff984a;border-color:#ff984a;color:#1a0a00}
.score-pill.sel-1{background:#ff4757;border-color:#ff4757;color:#fff}
/* ── Collapsible client nav groups ── */
.cnav-group{margin-bottom:2px}
.cnav-group-btn{width:100%;display:flex;align-items:center;gap:9px;padding:8px 12px;background:transparent;border:none;cursor:pointer;color:var(--text2);font-family:'Barlow Semi Condensed',sans-serif;font-size:13px;font-weight:600;letter-spacing:.2px;border-radius:7px;transition:background .15s,color .15s;text-align:left;text-transform:none;touch-action:manipulation}
.cnav-group-btn:hover{background:var(--surface2);color:var(--text)}
.cnav-group-btn.open{color:var(--text)}
.cnav-group-icon{flex-shrink:0;opacity:.5;display:flex;align-items:center}
.cnav-group-btn.open .cnav-group-icon{opacity:.8}
.cnav-group-label{flex:1}
.cnav-chevron{flex-shrink:0;display:flex;align-items:center;transition:transform .2s;opacity:.4}
.cnav-group-btn.open .cnav-chevron{transform:rotate(180deg);opacity:.7}
.cnav-items{overflow:hidden;max-height:0;transition:max-height .25s ease;padding-left:8px}
.cnav-items.open{max-height:500px}
.coach-section-notes{width:100%;background:var(--surface2);border:1px solid var(--border2);
 color:var(--text);padding:8px 12px;border-radius:6px;font-family:'Barlow',sans-serif;
 font-size:12px;margin-top:10px;resize:vertical;min-height:56px;transition:border-color .15s}
.coach-section-notes:focus{outline:none;border-color:var(--accent)}
.video-history-row{display:flex;gap:8px;align-items:flex-start;padding:10px 0;
 border-bottom:1px solid var(--border)}
.video-history-row:last-child{border-bottom:none}

/* READINESS CHECK-IN */
.readiness-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:20px 22px;margin-bottom:20px}
.readiness-title{font-family:Barlow Condensed,sans-serif;font-size:17px;font-weight:700;margin-bottom:16px;display:flex;align-items:center;gap:8px;color:var(--text)}
.readiness-sliders{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}
.readiness-slider-wrap{display:flex;flex-direction:column;gap:6px}
.readiness-slider-label{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.8px;font-weight:700}
.readiness-slider-val{font-family:Barlow Condensed,sans-serif;font-size:28px;font-weight:700;color:var(--accent);line-height:1}
.readiness-slider{width:100%;accent-color:var(--accent);height:4px;cursor:pointer;margin-top:4px}
.readiness-submitted{background:rgba(var(--accent-rgb),.08);border:1px solid rgba(var(--accent-rgb),.25);border-radius:10px;padding:14px 18px;
 font-size:13px;color:var(--accent);display:flex;align-items:center;gap:12px;flex-wrap:wrap}
/* SESSION NOTES */
.session-notes-wrap{margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}
.session-notes-label{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.8px;font-weight:700;margin-bottom:8px}
.session-notes-input{width:100%;background:var(--surface3);border:1px solid var(--border2);color:var(--text);
 padding:10px 14px;border-radius:8px;font-family:'Barlow',sans-serif;font-size:13px;resize:vertical;
 min-height:72px;transition:border-color .15s;line-height:1.6}
.session-notes-input:focus{outline:none;border-color:var(--accent)}
/* COACH FEEDBACK */
.coach-feedback-bubble{background:rgba(26,143,196,.07);border-left:3px solid var(--coach);border-radius:0 10px 10px 0;
 padding:12px 16px;margin-top:12px}
.coach-feedback-label{font-size:10px;color:var(--coach);text-transform:uppercase;letter-spacing:.8px;font-weight:700;margin-bottom:4px}
.coach-feedback-text{font-size:14px;color:var(--text);line-height:1.6}
/* DASH IMPROVEMENTS */
.dash-activity-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}
.dash-activity-row:last-child{border-bottom:none}
.dash-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dash-dot.green{background:#2ecc71}
.dash-dot.orange{background:#ff984a}
.dash-dot.red{background:#ff4757}
.dash-dot.grey{background:var(--border2)}
.dash-readiness-badge{font-family:Barlow Condensed,sans-serif;font-size:13px;font-weight:700;padding:2px 8px;border-radius:4px}

@keyframes slideInRight{from{transform:translateX(100%)}to{transform:translateX(0)}}
@media(max-width:480px){
 .athlete-panel{width:100%}
 .mh-header,.mh-row{gap:8px!important}
 .mh-header .mh-name,.mh-row .mh-name{min-width:0!important;flex:0 0 84px;max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .mh-header .mh-recov,.mh-row .mh-recov{display:none!important}
 .mh-header .mh-avg,.mh-row .mh-avg{min-width:36px!important;font-size:16px!important}
 .mh-cell{min-width:8px!important}
 .users-row{gap:10px!important;padding:10px 12px!important}
 .users-row .users-row-arrow{display:none!important}
 .users-row .users-row-avatar{width:32px!important;height:32px!important;font-size:12px!important}
}

@media(max-width:768px){
 #dashboard-content [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
 #dashboard-content [style*="grid-template-columns:repeat"]{grid-template-columns:1fr 1fr!important}
 #client-dashboard-content [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
 #client-dashboard-content [style*="grid-template-columns:repeat"]{grid-template-columns:1fr 1fr!important}
 #client-trends-charts [style*="grid-template-columns"]{grid-template-columns:1fr!important}
 .hamburger{display:flex!important}
 input,select,textarea{font-size:max(16px,1em)!important}
 textarea{resize:none}
 .sidebar{position:fixed;left:-240px;top:0;bottom:0;width:240px;z-index:100;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);transition:left .25s ease;box-shadow:4px 0 20px rgba(0,0,0,.5)}
 .sidebar.mobile-open{left:0}
 .mobile-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99}
 .mobile-overlay.show{display:block}
 .grid-2,.grid-3,.grid-4{grid-template-columns:1fr}
 #physical-assessment-content .pa-layout,
 #physical-assessment-content [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
 .main{padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}
 .save-bar{margin:0 -16px -16px;padding:12px 16px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
 .readiness-sliders{grid-template-columns:1fr 1fr}
 .client-ex-fields{flex-direction:column}
 .client-ex-field{border-right:none!important;border-bottom:1px solid var(--border)}
 .client-ex-field:last-child{border-bottom:none}
 .form-row.cols-3,.form-row.cols-4{grid-template-columns:1fr 1fr}
 .grid-4{grid-template-columns:1fr 1fr}
 .grid-3{grid-template-columns:1fr 1fr}
 .grid-2{grid-template-columns:1fr}
 .form-row.cols-2{grid-template-columns:1fr 1fr}
 .page-header{flex-direction:column;align-items:flex-start}
 .page-header>div:last-child{display:flex;flex-wrap:wrap;gap:6px;width:100%}
 .page-header .btn{flex:1;min-width:120px;text-align:center}
 .modal{max-width:100%;margin:0;border-radius:14px}
 .stat-card .stat-value{font-size:32px}
 .assess-test-row{grid-template-columns:1fr 100px 80px 40px}
 .assess-result-row{grid-template-columns:1fr 110px}
 .progress-stats{flex-wrap:wrap}
 .progress-stat{min-width:50%}
 .session-header{flex-wrap:wrap}
 .client-session-header{flex-wrap:wrap;padding:12px 16px}
 .week-btn{min-height:44px;padding:8px 14px}
 table.list{font-size:12px}
 table.list th,table.list td{padding:8px 10px}
 .btn-xs{min-height:44px;padding:4px 10px}
 .btn-sm{min-height:44px}
 .form-input,.form-select,.form-textarea{font-size:16px}
 .modal-body{padding:16px;overflow-y:auto;flex:1;min-height:0}
 .modal-header{padding:14px 16px;flex-shrink:0}
 .modal-footer{padding:12px 16px;flex-shrink:0}
 /* Exercise library mobile */
 .lib-shell{
   display:flex;
   flex-direction:column;
   min-height:unset;
   height:calc(100vh - 140px);height:calc(100dvh - 140px);
   max-height:calc(100vh - 140px)
 }
 .lib-sheets{display:none!important}
 .lib-sheet-dropdown-wrap{
   display:flex;max-height:calc(100dvh - 140px)
 }
 .lib-sheets{display:none!important}
 .lib-sheet-dropdown-wrap{
   display:flex;align-items:center;
   border-bottom:1px solid var(--border);background:var(--surface);
   flex-shrink:0;padding:10px 12px;gap:10px;
 }
 .lib-sheet-dropdown-label{
   font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;
   color:var(--text3);white-space:nowrap;font-family:'Barlow Semi Condensed',sans-serif;
 }
 .lib-sheet-select{
   flex:1;background:var(--surface2);border:1px solid var(--border2);
   color:var(--text);border-radius:8px;
   padding:10px 38px 10px 14px;font-family:'Barlow Semi Condensed',sans-serif;
   font-size:15px;font-weight:600;letter-spacing:.2px;
   cursor:pointer;-webkit-appearance:none;appearance:none;
   background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236fa8c4' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
   background-repeat:no-repeat;background-position:right 12px center;background-size:16px;
   min-height:44px;touch-action:manipulation;
   transition:border-color .15s,box-shadow .15s;
 }
 .lib-sheet-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(var(--accent-rgb),.18)}
 .lib-sheet-btn{white-space:nowrap;flex-shrink:0;min-height:44px;padding:10px 14px;touch-action:manipulation}
 .lib-shell{grid-template-columns:1fr!important;height:auto!important;max-height:none!important;border:none!important;border-radius:0!important;overflow:visible!important;display:flex!important;flex-direction:column!important;gap:0!important}
 .lib-main{min-height:0;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius)}
 .lib-main-top{flex-shrink:0}
 .lib-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:10px 12px;min-height:200px;max-height:calc(100vh - 280px)}
 .lib-cat-grid{grid-template-columns:repeat(auto-fill,minmax(min(140px,calc(50% - 4px)),1fr));max-height:calc(100dvh - 280px)}
 .lib-cat-grid{grid-template-columns:repeat(auto-fill,minmax(min(140px,calc(50% - 4px)),1fr));gap:6px;margin-bottom:12px}
 .lib-cat-card{padding:10px 12px}
 .lib-search-new{max-width:100%!important;font-size:16px!important}
 /* Exercise rows on mobile: wrap buttons below name */
 .lib-ex-row{flex-wrap:wrap;gap:6px;padding:10px 12px}
 .lib-ex-name{width:100%;flex-basis:100%}
 /* Section header wraps on mobile */
 .lib-ex-section-header{flex-wrap:wrap;gap:6px}
 /* Video input full width on mobile */
 .lib-vid-input{min-width:0;width:100%}
 .lib-vid-inline{flex-direction:column;align-items:stretch}
 /* Inline add full width on mobile */
 .lib-inline-add{flex-wrap:wrap}
 .lib-inline-input{min-width:0}
 /* Exercise picker mobile */
 .expicker-body{max-height:calc(60vh - 100px)}
 .expicker-cats{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}
}
@media(orientation:landscape) and (max-width:1024px){
 /* Landscape phones: sidebar stays as slide-over, content full height */
 .main{padding:12px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
 .page-title{font-size:18px}
 .page-header{margin-bottom:10px}
 .page-sub{font-size:12px}
}
@media(orientation:landscape) and (max-height:500px){
 /* Short landscape phones (iPhone SE landscape etc) - compact sidebar when open */
 .sidebar{width:210px}
 .cnav-group-btn{padding:5px 10px;font-size:12px}
 .nav-item{padding:6px 10px;min-height:36px;font-size:12px}
 .cnav-items{padding-left:6px}
 #client-nav-groups{padding:4px 0}
 .sidebar-logo{padding:6px 12px}
 /* Compact modals in landscape */
 .modal{max-height:90vh;max-height:90dvh}
 .modal-body{max-height:calc(75dvh - 120px)}
 /* Compact page headers */
 .page-title{font-size:17px}
 .page-header{margin-bottom:8px;flex-direction:row;align-items:center}
 /* Session cards more compact */
 .session-pre-card{padding:10px 14px}
 .client-session-header{padding:10px 14px}
}
@media(min-width:769px){
 .hamburger{display:none!important}
 .mobile-overlay{display:none!important}
}
.btn-outline-accent{border:1px solid var(--accent);background:transparent;color:var(--accent);cursor:pointer;transition:background .15s;font-family:"Barlow Semi Condensed",sans-serif;font-size:12px;font-weight:700;white-space:nowrap;padding:5px 12px;border-radius:7px}
.btn-outline-accent:hover,.btn-outline-accent:focus-visible{background:var(--accent-dim)}
.pick-recipe-btn{width:100%;border:none;outline:none;border-radius:8px;padding:12px 16px;background:var(--accent) !important;color:var(--btn-text) !important;cursor:pointer;font-family:'Barlow Semi Condensed',sans-serif;font-size:14px;font-weight:700;letter-spacing:.5px;transition:opacity .15s,transform .1s;display:block;text-align:center;margin-top:8px;-webkit-appearance:none;appearance:none}
.pick-recipe-btn:hover,.pick-recipe-btn:focus-visible{opacity:.88}
.pick-recipe-btn:active{transform:scale(.98)}
.recipe-row-card{padding:10px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:border-color .15s,background .15s;user-select:none}
.recipe-row-card:hover{border-color:var(--accent);background:var(--surface3)}
.recipe-row-card:active{opacity:.85}
.food-row-item{padding:7px 10px;border-radius:7px;cursor:pointer;transition:background .1s;display:flex;align-items:center;justify-content:space-between;gap:8px}
.food-row-item:hover,.food-row-item:focus-visible{background:var(--surface2)}
.food-row-item.selected{background:var(--accent-dim)}

/* Notification panel */
.notif-item{padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s}
.notif-item:hover{background:var(--surface2)}
.notif-item.unread{border-left:3px solid var(--accent)}
.notif-item .notif-title{font-size:13px;font-weight:600;color:var(--text)}
.notif-item .notif-body{font-size:11px;color:var(--text2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.notif-item .notif-time{font-size:10px;color:var(--text3);margin-top:4px}
.notif-header{padding:12px 16px;font-family:Barlow Condensed,sans-serif;font-size:16px;font-weight:700;color:var(--text);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;letter-spacing:.5px;text-transform:uppercase}
.notif-empty{padding:32px 16px;text-align:center;color:var(--text3);font-size:13px}

/* Smart suggestion badges */
.smart-suggestion{font-size:11px;padding:2px 8px;border-radius:10px;margin-left:8px;font-weight:600;letter-spacing:.3px;white-space:nowrap}
.smart-suggestion-up{background:rgba(46,204,113,.12);color:#2ecc71;border:1px solid rgba(46,204,113,.25)}
.smart-suggestion-hold{background:var(--accent-dim);color:var(--accent);border:1px solid rgba(var(--accent-rgb),.2)}
.smart-suggestion-down{background:rgba(255,71,87,.1);color:var(--accent2);border:1px solid rgba(255,71,87,.2)}

/* Training video */
.tvid-section{margin-top:8px;padding:8px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:8px}
.tvid-requested{border-color:rgba(var(--accent-rgb),.4);background:var(--accent-dim)}
.tvid-feedback{font-size:12px;color:var(--text2);padding:8px 10px;background:var(--surface3);border-radius:6px;margin-top:6px;border-left:3px solid var(--accent);line-height:1.5}

/* Coach container tab strip — appears at top of contained views (Plan, Library) */
.container-tabs{display:flex;gap:4px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:4px;width:fit-content;max-width:100%;margin:0 0 18px;flex-wrap:wrap}
.container-tabs .ctab{padding:7px 18px;border-radius:7px;border:none;cursor:pointer;font-size:13px;font-weight:600;font-family:'Barlow Semi Condensed',sans-serif;letter-spacing:.3px;background:transparent;color:var(--text2);transition:background .15s,color .15s}
.container-tabs .ctab:hover{color:var(--text)}
.container-tabs .ctab.active{background:var(--accent);color:var(--btn-text,#fff)}

.users-row-active{border-color:var(--accent)!important;background:var(--surface2)!important}

/* Coach Athletes Workspace (v3.2 Option N): two-pane layout.
   Left = roster, right = selected athlete detail panel with hub actions. */
.caw-workspace{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:18px;align-items:start;margin-top:6px;transition:grid-template-columns .2s ease}
@media (max-width:900px){.caw-workspace{grid-template-columns:1fr}}

/* v3.2+ Stage 2: roster collapse to 60px initials rail. Hide search/filter/
   sub-header content when collapsed; toggle button stays visible. */
#view-athletes[data-roster-collapsed="true"] .caw-workspace{grid-template-columns:64px 1fr}
#view-athletes[data-roster-collapsed="true"] .users-row{padding:6px;gap:0;justify-content:center;min-width:0}
#view-athletes[data-roster-collapsed="true"] .users-row > *:not(.users-row-avatar){display:none}
#view-athletes[data-roster-collapsed="true"] #users-search,
#view-athletes[data-roster-collapsed="true"] #users-tabs,
#view-athletes[data-roster-collapsed="true"] #coach-filter-btns,
#view-athletes[data-roster-collapsed="true"] #users-filter-breadcrumb,
#view-athletes[data-roster-collapsed="true"] #athletes-sub,
#view-athletes[data-roster-collapsed="true"] .page-header button[onclick*="openBroadcastModal"]{display:none}
/* Today mode (no athlete selected): hide the entire view-athletes page-header
   (USERS title + filter strip + Broadcast/Add/Collapse buttons) so the embedded
   dashboard owns the surface. Roster auto-collapses to 64px regardless of the
   user's manual preference. */
#view-athletes[data-mode="today"] > .page-header,
#view-athletes[data-mode="today"] > #users-tabs,
#view-athletes[data-mode="today"] > div[style*="users-filter-breadcrumb"],
#view-athletes[data-mode="today"] > #users-filter-breadcrumb,
#view-athletes[data-mode="today"] > div:has(> #coach-filter-btns){display:none}
@media (max-width:900px){
 #view-athletes[data-roster-collapsed="true"] .caw-workspace{grid-template-columns:1fr}
}
.caw-roster{min-width:0}
.caw-pane{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:0;min-height:480px;position:sticky;top:14px}
/* v3.2+ unified surface: empty state hosts the embedded view-dashboard. The
   old centred icon prompt is gone since dashboard owns this surface now. */
.caw-empty{padding:24px;min-height:480px;color:var(--text2)}
.caw-empty > .caw-embed{padding:0!important}
.caw-empty:empty{padding:60px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.caw-detail{padding:22px 26px}

/* v3.2+ Stage 2 athlete header strip: identity row + 6 score chips + engagement row. */
.caw-ahs{display:flex;flex-direction:column;gap:10px;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.caw-ahs-id{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.caw-ahs-name{font-family:'Barlow Condensed',sans-serif;font-size:30px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;line-height:1;color:var(--text)}
.caw-ahs-tier{font-size:10px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;background:var(--accent-dim);color:var(--accent);padding:3px 9px;border-radius:999px}
.caw-ahs-meta{font-size:12px;color:var(--text3)}
.caw-ahs-spacer{flex:1}
.caw-ahs-action{background:transparent;border:1px solid var(--border2);color:var(--text);padding:6px 12px;border-radius:7px;cursor:pointer;font-size:12px;font-family:inherit}
.caw-ahs-action:hover{border-color:var(--accent);color:var(--accent)}
.caw-ahs-chips{display:flex;gap:6px;flex-wrap:wrap}
.caw-ahs-chip{display:inline-flex;flex-direction:column;align-items:center;padding:6px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:60px}
.caw-ahs-chip-l{font-size:9px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--text3)}
.caw-ahs-chip-v{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:800;line-height:1;margin-top:2px}
.caw-ahs-chip.cleared{border-color:rgba(34,197,94,.4)}
.caw-ahs-chip.cleared .caw-ahs-chip-v{color:#22c55e}
.caw-ahs-chip.watch{border-color:rgba(245,158,11,.4)}
.caw-ahs-chip.watch .caw-ahs-chip-v{color:#f59e0b}
.caw-ahs-chip.priority{border-color:rgba(239,68,68,.4)}
.caw-ahs-chip.priority .caw-ahs-chip-v{color:#ef4444}
.caw-ahs-eng{display:flex;gap:10px;font-size:11px;color:var(--text2);align-items:center;flex-wrap:wrap}
.caw-ahs-eng .caw-ahs-eng-k{color:var(--text3)}
.caw-ahs-eng strong{color:var(--text);font-weight:600}
.caw-ahs-eng strong.cleared{color:#22c55e}
.caw-ahs-eng strong.watch{color:#f59e0b}
.caw-ahs-eng strong.caw-ahs-unread{color:var(--accent2)}
.caw-ahs-eng-sep{color:var(--text3);opacity:.5}
/* In-person session tracking row (feature #3). Shown only when engagement_mode = 'in_person'. */
.caw-ahs-cs{display:flex;gap:10px;font-size:11px;color:var(--text2);align-items:center;flex-wrap:wrap}
.caw-ahs-cs .caw-ahs-eng-k{color:var(--text3)}
.caw-ahs-cs strong{color:var(--text);font-weight:600}
.caw-ahs-cs .caw-ahs-cs-btn{margin-left:auto;background:transparent;border:1px solid var(--border2);color:var(--text);padding:5px 10px;border-radius:7px;cursor:pointer;font-size:11px;font-family:inherit;font-weight:600}
.caw-ahs-cs .caw-ahs-cs-btn:hover{border-color:var(--accent);color:var(--accent)}
/* Loyalty pending chip (feature #1). Shown on the identity row when the athlete has unredeemed grants. */
.caw-ahs-loy{display:inline-flex;align-items:center;gap:5px;background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.4);color:#f59e0b;font-size:10px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;padding:3px 9px;border-radius:999px;cursor:pointer}
.caw-ahs-loy:hover{background:rgba(245,158,11,.2);border-color:rgba(245,158,11,.6)}
.caw-ahs-loy strong{color:#f59e0b;font-weight:800}

/* Legacy classes kept for any code that still references them. */
.caw-detail-header{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.caw-detail-name{font-family:'Source Serif 4',serif;font-size:24px;font-weight:700;color:var(--text);letter-spacing:-0.3px;line-height:1.1}
.caw-detail-meta{font-size:11px;color:var(--text3);margin-top:4px;text-transform:uppercase;letter-spacing:.8px;font-weight:600}
.caw-hub-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-bottom:18px}
.caw-hub-tile{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:14px 12px;text-align:left;cursor:pointer;color:var(--text);font-family:inherit;font-size:13px;font-weight:600;display:flex;flex-direction:column;gap:6px;transition:border-color .12s ease,transform .08s ease}
.caw-hub-tile:hover{border-color:var(--accent);transform:translateY(-1px)}
.caw-hub-tile svg{opacity:.65}
.caw-hub-tile-label{font-weight:700}
.caw-hub-tile-sub{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;font-weight:600}
.caw-summary{margin-top:8px}
.caw-summary-section{margin-bottom:18px}
.caw-summary-label{font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:var(--accent);font-weight:800;margin-bottom:10px}
.caw-score-row{display:flex;gap:6px;flex-wrap:wrap}
.caw-score-chip{flex:1 1 90px;min-width:90px;text-align:center;padding:10px 8px;border-radius:8px;border:1px solid var(--border);background:var(--surface2)}
.caw-score-chip-label{font-size:9px;text-transform:uppercase;letter-spacing:.8px;font-weight:700;color:var(--text3);margin-bottom:3px}
.caw-score-chip-value{font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:900;line-height:1}
.caw-score-chip.cleared{border-color:rgba(34,197,94,0.3);background:rgba(34,197,94,0.06)}
.caw-score-chip.cleared .caw-score-chip-value{color:#22c55e}
.caw-score-chip.watch{border-color:rgba(245,158,11,0.3);background:rgba(245,158,11,0.06)}
.caw-score-chip.watch .caw-score-chip-value{color:#f59e0b}
.caw-score-chip.priority{border-color:rgba(239,68,68,0.3);background:rgba(239,68,68,0.06)}
.caw-score-chip.priority .caw-score-chip-value{color:#ef4444}

/* Workspace tab strip (sits below header, owns content area) */
.caw-tabs{display:flex;gap:2px;background:var(--surface2);border-radius:9px;padding:4px;border:1px solid var(--border);width:fit-content;max-width:100%;margin-bottom:16px;flex-wrap:wrap}
.caw-tab{padding:7px 16px;border-radius:7px;border:none;cursor:pointer;font-size:13px;font-weight:600;font-family:'Barlow Semi Condensed',sans-serif;letter-spacing:.3px;background:transparent;color:var(--text2);transition:background .12s,color .12s}
.caw-tab:hover{color:var(--text)}
.caw-tab.active{background:var(--accent);color:var(--btn-text,#fff)}
.caw-tab-content{min-height:200px}
.caw-glance{display:flex;flex-direction:column;gap:16px}
.caw-action-row{display:flex;align-items:center;gap:10px;padding:10px 14px;width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-family:inherit;color:var(--text);text-align:left;margin-bottom:6px;transition:border-color .12s}
.caw-action-row:hover{border-color:var(--accent)}
.caw-action-icon{display:flex;align-items:center;justify-content:center;width:18px;color:var(--accent)}
.caw-action-icon svg{display:block}
.caw-action-label{flex:1;font-size:13px;font-weight:600}
.caw-action-arrow{display:flex;align-items:center;color:var(--text3)}
.caw-action-row.caw-action-priority{border-color:rgba(239,68,68,.35);background:rgba(239,68,68,.04)}
.caw-action-row.caw-action-priority .caw-action-icon{color:var(--accent2)}
.caw-action-row.caw-action-watch{border-color:rgba(245,158,11,.35);background:rgba(245,158,11,.04)}
.caw-action-row.caw-action-watch .caw-action-icon{color:#f59e0b}
.caw-action-row.caw-action-cleared{border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.04)}
.caw-action-row.caw-action-cleared .caw-action-icon{color:#22c55e}
.caw-stat-row{display:flex;gap:8px;flex-wrap:wrap}
.caw-stat{flex:1 1 120px;min-width:120px;padding:10px 14px;background:var(--surface2);border-radius:8px;border:1px solid var(--border);text-align:center}
.caw-stat-label{font-size:9px;text-transform:uppercase;letter-spacing:.8px;color:var(--text3);font-weight:700;margin-bottom:3px}
.caw-stat-value{font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:800;color:var(--text);line-height:1}
.caw-stat-sub{font-size:10px;color:var(--text3);margin-top:3px}

/* Embedded view overrides: when a coach-side view-* element is moved into
   the workspace right pane, hide its internal page headers and athlete
   pickers because the workspace owns both. */
.caw-embed.view{display:block!important;padding:0!important}
.caw-embed > .page-header{display:none!important}
.caw-embed > .shub-header{display:none!important}
.caw-embed #fv-athlete-picker,
.caw-embed #shub-athlete-picker{display:none!important}
.caw-embed > .shub-tabs{margin-top:0!important}
.caw-embed > #fv-wizard-banner:empty{display:none!important}

/* .coach-context-bar removed 2026-05-12: superseded by the v3.2+ unified
   workspace which owns athlete context inside view-athletes. */

/* Sub-group tab strip — sits directly under the main container tabs when
   the active view is part of a sub-group (e.g. Nutrition/7-Day/Trends/Recipes
   under Health Hub > Nutrition). Same pill shape, slightly lighter to read
   as secondary navigation. */
/* Roster row kebab (per-athlete quick admin: mark test, archive, open
   settings). Uses native <details> so click-outside-to-close + keyboard
   handling come for free. */
.users-row-kebab{position:relative;flex-shrink:0}
.users-row-kebab>summary{list-style:none;width:28px;height:28px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;line-height:1;user-select:none}
.users-row-kebab>summary::-webkit-details-marker{display:none}
.users-row-kebab>summary:hover{background:var(--surface2);border-color:var(--border);color:var(--text)}
.users-row-kebab[open]>summary{background:var(--surface2);border-color:var(--accent);color:var(--accent)}
.users-row-kebab-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:160px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.25);padding:4px;z-index:30;display:flex;flex-direction:column}
.users-row-kebab-menu button{appearance:none;background:transparent;border:none;color:var(--text);padding:8px 12px;text-align:left;font-size:13px;font-weight:500;font-family:inherit;border-radius:6px;cursor:pointer}
.users-row-kebab-menu button:hover{background:var(--surface2)}

.container-subtabs{display:flex;gap:4px;background:transparent;border:1px solid var(--border2);border-radius:10px;padding:4px;width:fit-content;max-width:100%;margin:-8px 0 18px;flex-wrap:wrap}
/* Sub-strip buttons match the main-strip button dimensions (7×18 padding,
   13px font, 7px radius) so labels like "Create" / "Plan" / "Library" /
   "Insights" sit at the same weight as the parent "Plan" / "Library" /
   "Content" labels above. The strip container still differs (transparent
   background, border2 outline) so the visual hierarchy stays readable. */
.container-subtabs .ctab-sub{padding:7px 18px;border-radius:7px;border:none;cursor:pointer;font-size:13px;font-weight:600;font-family:'Barlow Semi Condensed',sans-serif;letter-spacing:.3px;background:transparent;color:var(--text3);transition:background .15s,color .15s}
.container-subtabs .ctab-sub:hover{color:var(--text)}
.container-subtabs .ctab-sub.active{background:var(--accent);color:var(--btn-text,#fff)}

/* Two-column Messages layout (coach side) */
.msg-twocol{display:grid;grid-template-columns:320px 1fr;gap:14px;align-items:stretch;min-height:calc(100vh - 140px);min-height:calc(100dvh - 140px)}
.msg-rail{background:var(--surface);border:1px solid var(--border);border-radius:12px;display:flex;flex-direction:column;overflow:hidden;min-height:0}
.msg-rail-header{padding:14px 16px 10px;border-bottom:1px solid var(--border)}
.msg-search{margin:10px 12px 8px;font-size:13px}
.msg-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.msg-empty-rail{padding:30px 16px;text-align:center;color:var(--text3);font-size:13px}
.msg-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s}
.msg-row:hover{background:var(--surface2)}
.msg-row.active{background:var(--surface2);border-left:3px solid var(--accent);padding-left:11px}
.msg-row.unread{background:rgba(var(--accent-rgb),.04)}
.msg-row.unread .msg-row-name{color:var(--text);font-weight:700}
.msg-row.unread .msg-row-preview{color:var(--text2)}
.msg-row-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.msg-row-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.msg-row-name{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-row-time{font-size:11px;color:var(--text3);flex-shrink:0;white-space:nowrap}
.msg-row-bot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.msg-row-preview{font-size:12px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.msg-row-badge{background:var(--accent2);color:#fff;font-size:10px;font-weight:800;padding:1px 7px;border-radius:10px;min-width:18px;text-align:center;flex-shrink:0}
.msg-avatar{width:36px;height:36px;border-radius:50%;background:var(--surface2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--text2);flex-shrink:0}
.msg-pane{background:var(--surface);border:1px solid var(--border);border-radius:12px;display:flex;flex-direction:column;overflow:hidden;min-height:0}
.msg-pane-header{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border)}
.msg-pane-thread{flex:1;padding:14px 18px;max-height:none!important;min-height:0!important}
.msg-pane-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:14px;padding:60px 20px;text-align:center}
.msg-pane > div:last-child:not(.msg-pane-thread):not(.msg-pane-header):not(.msg-pane-empty){padding:12px 18px}

@media(max-width:820px){
  .msg-twocol{grid-template-columns:1fr;min-height:auto}
  .msg-rail{max-height:50vh}
  .msg-pane-thread{max-height:50vh!important}
}

/* ── GP Content tool: responsive (M2 + M3) ──
   Write surface grids collapse to single column on phones.
   The Quick mode default is 1fr / 320px; the Deep mode is 1.2fr / 1fr / 320px.
   Inline column templates were desktop-only as shipped, this fixes mobile. */
@media(max-width:820px){
  .gp-write-grid{grid-template-columns:1fr!important}
  .gp-write-deep-grid{grid-template-columns:1fr!important}
  /* Sticky firewall panel becomes a normal block flow on phone so the
     editor isn't pushed off-screen. */
  #gp-write-firewall{position:static!important}
}

/* Note: .container-tabs (existing class) already has flex-wrap:wrap, which
   handles 6+ tabs on narrow screens by stacking to multiple rows. Acceptable
   default; no additional CSS needed for tabs themselves. */
