/* NOTE: do NOT add a self-hosted @font-face for 'Barlow Condensed' here. It
   would OVERRIDE the Google Fonts <link> (declared earlier), and if /fonts/
   isn't deployed the font breaks entirely → the whole UI gets stuck on the big
   fallback font. The UI font comes from the Google <link>. The slide/reel
   EXPORTS embed the font separately via fetched base64 (_gcFontEmbedCSS),
   which degrades safely on its own. */

: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 REMOVED 2026-05-24: the light themes (login, master, and the
   coach -light themes) used to get larger titles (38px), bigger stat values
   (56px) and roomier cards. That made the app render noticeably BIGGER on any
   light theme vs the base sizing, and since the active theme can vary by load
   (preference loads late, splash/boot timing), the app appeared "big on first
   open, normal after refresh". All themes now use the base sizing (.page-title
   34px, .stat-value 42px) so the size is identical everywhere. */

/* 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 REMOVED 2026-05-24 (same reason as
   the master/login block above): it made light themes render bigger than the
   base. All themes now use base sizing for consistency. The card box-shadow
   below is kept (it's depth, not size). */

/* 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 (recovery-screen shares the centered fullscreen treatment; it was
   missing from this selector, which left the set-password card hanging
   top-left, 2026-06-05) */
#login-screen, #signup-screen, #recovery-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. */
