:root{
  color-scheme:dark;
  --bg:#090d12;--panel:#111821;--panel2:#151f2a;--panel3:#0d141c;--text:#f5f7fb;--muted:#97a6b7;--line:#283546;
  --blue:#4389ff;--green:#24c36b;--amber:#f5a524;--purple:#a766ff;--teal:#20bfb2;--red:#ef5c5c;--shadow:0 18px 60px rgba(0,0,0,.28)
}
*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:radial-gradient(circle at top,#142234 0,#0b1119 36%,var(--bg) 72%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.app{width:min(1320px,100%);margin:auto;padding:18px 18px 64px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.brand h1{margin:0;font-size:clamp(26px,4vw,38px);letter-spacing:-.03em}.subtle,.muted,label{color:var(--muted)}.subtle{font-size:13px}.card{background:linear-gradient(180deg,rgba(20,29,40,.97),rgba(15,22,31,.97));border:1px solid var(--line);border-radius:20px;padding:17px;margin:12px 0;box-shadow:0 1px 0 rgba(255,255,255,.02)}.card.flat{box-shadow:none}.hyroxChoiceCard{width:100%;text-align:left;cursor:pointer}.hyroxChoiceCard h3{margin:4px 0}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.grid{display:grid;gap:12px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.g2,.g3,.g4{grid-template-columns:1fr}.app{padding:12px}.topbar{align-items:flex-start}}
button,input,select,textarea{font:inherit}input,select,textarea{width:100%;color:var(--text);background:#0b121a;border:1px solid var(--line);border-radius:11px;padding:10px 11px;outline:none}input:focus,select:focus,textarea:focus{border-color:#5f8fc7;box-shadow:0 0 0 3px rgba(67,137,255,.12)}textarea{min-height:86px;resize:vertical}label{display:block;font-size:12px;font-weight:600}label input,label select,label textarea{margin-top:5px}button{color:var(--text);background:#101924;border:1px solid var(--line);border-radius:12px;padding:9px 12px;cursor:pointer;transition:.16s transform,.16s background,.16s border-color,.16s opacity}button:hover:not(:disabled){transform:translateY(-1px);background:#162231}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:var(--blue);border-color:var(--blue);font-weight:750}.danger{border-color:#6c3434;color:#ffb3b3}.small{padding:6px 9px;font-size:12px}.iconbtn{width:38px;height:38px;padding:0;display:inline-flex;align-items:center;justify-content:center}.hidden{display:none!important}.pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#0d151f;border-radius:999px;padding:5px 9px;font-size:12px}.good{color:#baf5cf}.warn{color:#ffd594}.bad{color:#ffb0b0}.statusDot{width:7px;height:7px;border-radius:50%;background:#34d77b}.types{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px}@media(max-width:950px){.types{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:540px){.types{grid-template-columns:1fr}}.type{position:relative;min-height:104px;border:1px solid var(--line);border-left:6px solid currentColor;border-radius:17px;padding:16px;background:#131c26;cursor:pointer;transition:.2s ease;overflow:hidden}.type:after{content:"";position:absolute;inset:0;background:currentColor;opacity:0;pointer-events:none;transition:.2s}.type:hover{transform:translateY(-2px)}.type.active{transform:translateY(-3px);box-shadow:0 0 0 1px currentColor,var(--shadow)}.type.active:after{opacity:.10}.type.active .selected{display:inline-flex}.type .selected{display:none;position:absolute;right:10px;top:10px;font-size:11px;background:rgba(0,0,0,.28);border-radius:999px;padding:4px 7px}.type b{font-size:18px}.strength{color:var(--blue)}.cardio{color:var(--green)}.mobility{color:var(--amber)}.hyrox{color:var(--purple)}.custom{color:var(--teal)}.sectionAccent.strength{border-top:3px solid var(--blue)}.sectionAccent.cardio{border-top:3px solid var(--green)}.sectionAccent.mobility{border-top:3px solid var(--amber)}.sectionAccent.hyrox{border-top:3px solid var(--purple)}.sectionAccent.custom{border-top:3px solid var(--teal)}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.exerciseCard,.historyItem,.clientTile,.block{background:#0d151e;border:1px solid var(--line);border-radius:15px;padding:12px;margin-top:10px}.exerciseTitle{font-weight:760;font-size:15px}.sets{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:8px;margin-top:9px}.set{background:#0a1118;border:1px solid #202c3a;border-radius:12px;padding:9px}.set h4{margin:0 0 7px}.note{background:#0e1721;border-left:4px solid var(--blue);border-radius:12px;padding:10px}.tabs{display:flex;gap:7px;flex-wrap:wrap}.tabs button.active{background:var(--purple);border-color:var(--purple)}.progressTable{width:100%;border-collapse:collapse;font-size:13px}.progressTable th,.progressTable td{padding:9px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.progressTable th{color:#b6c2cf;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.scroll{overflow:auto}.empty{padding:22px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:14px}.modal{position:fixed;inset:0;background:rgba(1,5,9,.78);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:18px;z-index:100}#miniPtModal{z-index:110}.modalbox{width:min(960px,100%);max-height:92vh;overflow:auto;background:#111923;border:1px solid #354356;border-radius:22px;padding:18px;box-shadow:var(--shadow)}.techimg{width:100%;border:1px solid var(--line);border-radius:15px;background:white}.qr{width:260px;max-width:100%;background:white;padding:12px;border-radius:14px}.toast{position:fixed;right:18px;bottom:18px;max-width:min(430px,calc(100vw - 36px));background:#132030;border:1px solid #39516b;border-radius:14px;padding:11px 14px;box-shadow:var(--shadow);z-index:120;opacity:0;transform:translateY(15px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.25);border-top-color:white;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.savebar{position:sticky;bottom:10px;z-index:20;margin-top:14px;background:rgba(10,15,22,.94);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:15px;padding:9px}.participant{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:999px;padding:4px 5px 4px 9px;font-size:12px}.clientMeta{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:8px}.metric{background:#0c141c;border:1px solid var(--line);border-radius:13px;padding:10px}.metric b{display:block;font-size:18px;margin-top:3px}.hyroxSegment.running{border-color:var(--purple);box-shadow:0 0 0 1px var(--purple)}.timer{font-variant-numeric:tabular-nums;font-size:24px;font-weight:800}.screenTitle{margin:0}.authWrap{max-width:960px;margin:42px auto}.help{font-size:11px;color:#7e8b99;margin-top:5px}
.fieldInfo{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;margin-left:5px;border-radius:50%;border:1px solid #3a4c60;color:#9fb1c4;font-size:10px;font-weight:700;line-height:1;vertical-align:middle;background:#101924;cursor:pointer;user-select:none}
.fieldInfo:hover,.fieldInfo:focus-visible{background:#182534;color:var(--text);outline:none}.divider{height:1px;background:var(--line);margin:14px 0}
.participantTabs{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:6px 0}.participantTab{--participant-colour:var(--blue);position:relative;display:inline-flex;align-items:center;gap:7px;border-color:color-mix(in srgb,var(--participant-colour) 55%,var(--line));background:color-mix(in srgb,var(--participant-colour) 8%,#101924);padding:8px 12px}.participantTab.active{background:color-mix(in srgb,var(--participant-colour) 22%,#101924);border-color:var(--participant-colour);box-shadow:0 0 0 1px var(--participant-colour),0 8px 24px color-mix(in srgb,var(--participant-colour) 18%,transparent);transform:translateY(-1px)}.participantDot{width:9px;height:9px;border-radius:50%;background:var(--participant-colour);box-shadow:0 0 10px var(--participant-colour)}.participantRemove{width:28px;height:28px;padding:0;border-radius:50%;color:#ffb3b3}.guestBadge{font-size:10px;padding:2px 5px;border-radius:999px;background:rgba(255,255,255,.08);color:var(--muted)}.hyroxPlanner{border:1px solid color-mix(in srgb,var(--purple) 35%,var(--line));background:linear-gradient(180deg,rgba(72,45,112,.14),rgba(13,21,30,.8))}.hyroxPlanCard.scheduled{border-color:color-mix(in srgb,var(--purple) 52%,var(--line));box-shadow:inset 4px 0 0 var(--purple)}details>summary{cursor:pointer;color:var(--muted);padding:8px 0} 

/* V22.2.1 participant tab reliability/polish */
.participantSection{border:1px solid var(--line);background:#0b121a;border-radius:16px;padding:10px 12px}
.participantSectionHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:5px}
.participantTabs{display:flex!important;align-items:center;gap:8px;flex-wrap:wrap;min-height:42px;padding:5px 0}
.participantTabWrap{display:inline-flex;align-items:center;gap:4px}
.participantTab{position:relative!important;display:inline-flex!important;align-items:center!important;gap:7px!important;min-height:38px!important;padding:8px 12px!important;background:#101924!important;border:2px solid var(--participant-colour,#4389ff)!important;border-radius:12px!important;color:var(--text)!important;opacity:.82}
.participantTab.active{opacity:1!important;background:#182638!important;box-shadow:0 0 0 2px var(--participant-colour,#4389ff),0 8px 24px rgba(0,0,0,.25)!important;transform:translateY(-1px)}
.participantTab.active:after{content:'ACTIVE';font-size:9px;font-weight:800;letter-spacing:.06em;color:var(--participant-colour,#4389ff);margin-left:2px}
.participantDot{flex:0 0 10px;width:10px!important;height:10px!important;background:var(--participant-colour,#4389ff)!important}
.participantRemove{flex:0 0 28px}
.participantEmpty{font-size:12px;color:var(--muted);padding:4px 0}
@media(max-width:650px){.participantSectionHeader{align-items:flex-start}.participantTab{padding:9px 10px!important}.participantTabs{gap:7px}}

/* V22.4 technique content */
.buttonLike{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid var(--border);border-radius:10px;padding:9px 12px;font-weight:700}
.youtubeBtn{background:#b91c1c;color:#fff;border-color:#dc2626;white-space:nowrap}
.techniqueHero{align-items:flex-start;margin-bottom:12px}
.techPanel{background:rgba(255,255,255,.025);border:1px solid var(--border);border-radius:12px;padding:10px}
.techPanel li{margin:6px 0}

/* V22.4.1 Mini PT */
.miniPtCard{border:1px solid var(--border);border-radius:16px;padding:16px;background:linear-gradient(180deg,rgba(67,137,255,.10),rgba(255,255,255,.02));margin-bottom:14px}
.miniPtCard.good{background:linear-gradient(180deg,rgba(36,195,107,.13),rgba(255,255,255,.02))}
.miniPtCard.warn{background:linear-gradient(180deg,rgba(245,165,36,.13),rgba(255,255,255,.02))}
.miniPtCard.info{background:linear-gradient(180deg,rgba(32,191,178,.13),rgba(255,255,255,.02))}
.miniPtEyebrow{font-size:.72rem;letter-spacing:.13em;font-weight:800;color:var(--muted)}
.miniPtRecommendation{font-size:1.05rem;line-height:1.55}
.miniPtStatGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0}
.miniPtStatGrid>div{border:1px solid var(--border);border-radius:10px;padding:9px;background:rgba(0,0,0,.12)}
.miniPtStatGrid span{display:block;color:var(--muted);font-size:.76rem}.miniPtStatGrid b{display:block;margin-top:3px}
.miniPtToday,.miniPtCoachNote{border:1px solid var(--border);border-radius:12px;padding:10px;margin:10px 0}
.miniPtCoachNote{border-left:4px solid #a766ff}
@media(max-width:700px){.miniPtStatGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}

.historyExercise{border:1px solid var(--border);border-radius:12px;padding:10px;margin:8px 0;background:rgba(255,255,255,.025)}
.historyParticipantHeader{--participant-colour:var(--blue);display:flex;align-items:center;gap:8px;margin:16px 0 4px;padding:6px 10px;border-left:3px solid var(--participant-colour);background:color-mix(in srgb,var(--participant-colour) 10%,transparent);border-radius:8px;font-size:13px}
.historyParticipantHeader:first-child{margin-top:4px}

/* V22.5 Beta */
.versionEntry{background:none!important;border:0!important;padding:0!important;color:inherit!important;font:inherit!important;box-shadow:none!important;cursor:default}
.betaText{font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.linkBtn{background:none;border:0;padding:8px 0;color:var(--muted);text-decoration:underline}
.type.ai{border-color:rgba(139,92,246,.35)}
.type.ai.active{background:rgba(139,92,246,.13);border-color:rgba(139,92,246,.8)}
.sectionAccent.ai{border-top-color:#8b5cf6}
.aiHero{padding:8px 0 14px}

.authSingle{max-width:560px;margin:5vh auto;width:min(560px,calc(100vw - 32px))}
.resetSent{text-align:center;padding:32px}
.resetIcon{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;margin:0 auto 14px;font-size:30px;font-weight:800;border:2px solid #24c36b;color:#24c36b}
/* V22.6 security / intelligent training */
.recoveryCodes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}
.recoveryCodes code{display:block;padding:10px;border:1px solid var(--border);border-radius:9px;text-align:center;font-size:1rem}
.equipmentConfirm{border:1px solid var(--border);border-radius:10px;padding:10px;background:rgba(255,255,255,.025)}
.miniPtQuick{margin-top:8px;flex-wrap:wrap}
@media(max-width:650px){.recoveryCodes{grid-template-columns:1fr}}

/* V22.7 AI Maintenance */
.maintenanceConsole{border-top:2px solid rgba(139,92,246,.75)}
.maintenanceDiff{max-height:480px;overflow:auto;white-space:pre-wrap;font-size:.76rem;line-height:1.35;background:rgba(0,0,0,.18);border:1px solid var(--border);border-radius:10px;padding:10px}
.maintenanceConsole textarea{min-height:100px}

/* V22.7.1 Master Settings layout fix */
.adminConsoleRoot{max-width:1280px;margin:26px auto;padding:0 18px 40px;position:relative;z-index:1}
.adminConsoleRoot>.card,.adminConsoleRoot>#adminBody>.card{margin-top:12px}
#adminLogin{max-width:620px;margin:32px auto}

/* V23.1 sticky multi-participant session control */
.sessionParticipantsSticky{position:sticky;top:76px;background:rgba(11,18,26,.97);backdrop-filter:blur(12px);box-shadow:0 10px 24px rgba(0,0,0,.22)}
@media(max-width:700px){.sessionParticipantsSticky{top:66px;margin-left:-4px;margin-right:-4px}.sessionParticipantsSticky .participantTabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:7px}.sessionParticipantsSticky .participantTabWrap{flex:0 0 auto}}
.mobilityModeTabs{background:rgba(10,15,22,.94);backdrop-filter:blur(10px);padding:7px;border-radius:12px;border:1px solid var(--line)}

/* V23.2 */
.landingPage{min-height:calc(100vh - 110px);display:grid;place-items:center;padding:32px 18px}.landingInner{text-align:center;width:min(560px,100%)}.landingLogo{width:min(430px,82vw);max-height:48vh;object-fit:contain;filter:invert(1)}.landingTagline{margin:8px 0 28px;color:var(--muted);letter-spacing:.08em}.landingActions{display:grid;gap:12px;width:min(360px,100%);margin:auto}.landingButton{width:100%;padding:14px}.aiLockedRow{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px 0}.aiLockedSwitch{opacity:.55;pointer-events:none}.unitInput{display:grid;grid-template-columns:1fr 92px;gap:7px}.sessionParticipantsSticky{position:sticky;top:76px;box-shadow:none}.sessionParticipantsSticky.isFloating{z-index:45;background:rgba(11,18,26,.97);backdrop-filter:blur(12px);box-shadow:0 10px 24px rgba(0,0,0,.22)}.sessionParticipantsSticky.isFloating .participantHomeActions,.sessionParticipantsSticky.isFloating .participantSectionHeader,.sessionParticipantsSticky.isFloating .participantEmpty{display:none!important}

/* V23.3 */
.nonStickyTabs{position:static!important;top:auto!important}.splitUnitFields{display:grid;grid-template-columns:1fr 1fr;gap:6px}.unitInput>div{min-width:0}.unitInput input{width:100%}

/* V23.4 Professional content and gym media */
.stageGrid,.gymPhotoGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.stageCard,.gymPhoto{border:1px solid var(--line);border-radius:12px;padding:8px;background:rgba(255,255,255,.02)}.stageCard img,.gymPhoto img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;margin:8px 0}.stageCard input{font-size:12px}.gymPhoto button{margin-top:6px}@media(max-width:800px){.stageGrid,.gymPhotoGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V23.5 interface cleanup: focused page navigation without removing functionality */
.appHeaderCard{position:relative;margin-bottom:10px;padding:14px 17px}.legacyHeaderAction{display:none!important}.appNav{position:relative;top:auto;z-index:90;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:10px 0 14px;padding:7px;background:rgba(9,14,20,.84);border:1px solid var(--line);border-radius:17px;backdrop-filter:blur(18px);box-shadow:0 12px 40px rgba(0,0,0,.20)}.appNavItem{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;border:0;background:transparent;color:var(--muted);font-weight:720}.appNavItem:hover:not(:disabled){background:#121d29;transform:none}.appNavItem.active{background:#182638;color:var(--text);box-shadow:inset 0 0 0 1px #32445a}.appNavIcon{font-size:18px;line-height:1}.pageEyebrow{margin-bottom:6px;color:#6f91b6;font-size:10px;font-weight:850;letter-spacing:.16em}.appPage{animation:pageIn .16s ease-out}@keyframes pageIn{from{opacity:.45;transform:translateY(4px)}to{opacity:1;transform:none}}.moreMenu{display:grid;gap:8px;margin-top:14px}.moreMenuItem{width:100%;display:flex;align-items:center;justify-content:space-between;text-align:left;padding:15px 16px;background:#0d151e;border-radius:15px}.moreMenuItem>span:first-child{display:grid;gap:4px}.moreMenuItem small{color:var(--muted);font-size:12px;font-weight:500}.moreMenuItem>span:last-child{font-size:26px;color:#6f8298}.dangerMenu b{color:#ffb3b3}
@media(max-width:650px){body{padding-bottom:78px}.app{padding-bottom:18px}.topbar{margin-bottom:8px}.brand h1{font-size:25px}.subtle{font-size:11px}.appHeaderCard{margin-top:8px}.appHeaderCard .pill{display:none}.appNav{position:fixed;left:10px;right:10px;bottom:9px;top:auto;margin:0;z-index:90;padding:6px;grid-template-columns:repeat(5,1fr);border-radius:18px;padding-bottom:max(6px,env(safe-area-inset-bottom));box-shadow:0 14px 40px rgba(0,0,0,.50)}.appNavItem{min-height:51px;display:grid;justify-items:center;gap:1px;padding:5px 2px;font-size:10px;border-radius:13px}.appNavIcon{font-size:19px}.card{border-radius:17px;padding:14px;margin:9px 0}.types{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.type{min-height:92px;padding:13px;border-left-width:4px}.type b{font-size:16px}.type .muted{font-size:11px}.toolbar{align-items:flex-start}.sessionParticipantsSticky{top:8px}.sessionParticipantsSticky.isFloating{z-index:24;box-shadow:0 10px 30px rgba(0,0,0,.25)}
/* The bottom nav is position:fixed on phones, so the page-level sticky Save bar
   has to sit above it (same offset .workoutMenu uses) or the nav covers the
   Save button. Modal save bars scroll inside the modal box and keep their own offset. */
.savebar{bottom:calc(76px + env(safe-area-inset-bottom))}.modalbox .savebar{bottom:10px}}

/* V23.5 custom workout naming */
.customWorkoutHeader{margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.customWorkoutHeader label{margin:0}.customWorkoutHeader input{font-size:1.05rem;font-weight:700}

/* V23.5.2 dashboard + workout switcher */
.workoutNavWrap{position:relative;min-width:0}.workoutNavWrap>.appNavItem{width:100%;height:100%}.workoutMenu{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);z-index:80;width:min(300px,86vw);padding:8px;background:#0b121a;border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 55px rgba(0,0,0,.42);display:grid;gap:5px}.workoutMenu button{text-align:left;padding:12px 14px;background:transparent;border-color:transparent}.workoutMenu button:hover{background:#172331;border-color:#2c3d50;transform:none}.homeHero{display:flex;align-items:flex-end;justify-content:space-between;margin:4px 2px 12px}.homeDashboardGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.dashboardWindow{margin:0;min-height:280px;display:flex;flex-direction:column}.dashboardWindowHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dashboardWindowHeader h3{font-size:22px;margin:0}.dashboardIcon{font-size:28px;line-height:1}.dashboardWindowBody{display:grid;gap:9px;margin-top:16px;flex:1}.dashboardMetric{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}.dashboardMetric span{color:var(--muted);font-size:12px}.dashboardMetric b{text-align:right}.dashboardLink{margin-top:12px;background:transparent;text-align:left;padding-left:0;border:0;color:#8fb9e8}.achievementGrid{display:grid;gap:8px}.achievementBadge{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line);border-radius:13px;background:#0d151f}.achievementBadge>span{font-size:24px}.achievementBadge>div{display:grid;gap:2px}.achievementBadge small{color:var(--muted)}.achievementBadge.locked{opacity:.48;filter:saturate(.45)}.achievementBadge.earned{border-color:#4b6244;background:#101a15}@media(max-width:900px){.homeDashboardGrid{grid-template-columns:1fr}.dashboardWindow{min-height:0}.workoutMenu{position:fixed;left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));top:auto;transform:none;width:auto}}
/* V23.5.2 had forced .appNav to position:static!important here on desktop/tablet
   to keep it in normal document flow (non-sticky). That's now handled by .appNav's
   own base position:relative rule instead (relative with no top/left offsets is
   visually identical to static -- doesn't move or stick -- but unlike static, it
   actually lets the nav's z-index take effect). The !important override was left
   in place after that, which silently defeated .appNav's z-index on every
   viewport >=651px: any .appPage section (which gets its own stacking context via
   the .appPage animation below) or sticky-positioned element with a z-index in
   between static's effective 0 and .appNav's declared value would paint on top of
   the whole nav, including any open dropdown menu inside it (V24.2.7: this was
   reported as the workout-type dropdown rendering behind the session participants
   panel). If a real reason resurfaces to force .appNav static again, don't just
   restore this rule -- also re-check .appNav's z-index against every sticky/
   floating element added since (session participants panel, mobility mode tabs). */
/* V24 AI PT */
.aiPtHero{margin-bottom:16px;padding:22px}.aiPtHero h2{margin:5px 0 6px}.aiPtHero textarea{min-height:92px;font-size:16px;margin:12px 0}.aiPtPlan{margin-top:14px}.setFeedback{margin-top:8px;gap:6px;flex-wrap:wrap}.aiFeedback{text-transform:capitalize}

/* V24.1 AI PT training mode */
.aiThinking{margin-top:14px;padding:16px;border:1px solid var(--line);border-radius:14px;display:grid;gap:4px;background:#0d151f}.aiThinking span{color:var(--muted);font-size:12px}.aiPlanTop,.aiTrainingHeader,.aiTrainingFooter,.aiStartBar{display:flex;align-items:center;justify-content:space-between;gap:12px}.aiPlanExercises{display:grid;gap:6px;margin:14px 0}.aiPlanRow{display:grid;grid-template-columns:30px 1fr;gap:9px;align-items:center;padding:9px;border-bottom:1px solid var(--line)}.aiPlanRow>span{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#172331}.aiPlanRow small{display:block;color:var(--muted);margin-top:2px}.aiStartButton{font-size:18px;padding:14px 22px}.aiTrainingMode{display:grid;gap:14px;margin-top:14px}.aiTrainingHeader{padding:6px 2px}.aiTimer{display:grid;text-align:right}.aiTimer span{font-size:10px;color:var(--muted);letter-spacing:.12em}.aiTimer b{font-size:28px;font-variant-numeric:tabular-nums}.aiProgressLine{height:5px;background:#172331;border-radius:99px;overflow:hidden}.aiProgressLine span{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .25s ease}.aiCurrentCard{border:1px solid var(--line);border-radius:20px;padding:22px;background:#0d151f}.aiExerciseCount{color:var(--muted);font-size:12px;letter-spacing:.04em}.aiCurrentCard h2{font-size:30px;margin:8px 0 16px}.aiPrescription{display:flex;align-items:baseline;gap:10px;margin:10px 0}.aiPrescription b{font-size:42px}.aiPrescription span{font-size:23px;color:var(--muted)}.aiCoachCue{padding:14px 16px;border-left:3px solid var(--accent);background:#111c28;border-radius:10px;margin:14px 0}.aiDemoCues{display:grid;gap:7px;margin:16px 0}.aiDemoCues>div{display:grid;grid-template-columns:26px 1fr;gap:8px;align-items:center}.aiDemoCues>div span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#172331;font-size:11px}.aiTechniqueActions{margin:14px 0}.aiSetActions{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}.aiFeedbackGrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin-top:9px}.aiSetFeedback{min-height:48px}.aiRestPanel{border:1px solid var(--line);border-radius:18px;padding:18px;background:#101a15;display:flex;justify-content:space-between;align-items:center;gap:12px}.aiRestPanel>div{display:grid}.aiRestPanel span{font-size:10px;letter-spacing:.14em;color:var(--muted)}.aiRestPanel b{font-size:36px;font-variant-numeric:tabular-nums}.aiRestPanel small{color:var(--muted);margin-top:3px}.aiFinish{text-align:center;padding:26px}.achievementBig{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;margin:0 auto 10px;font-size:30px;background:#183020}.aiFinish .row{justify-content:center;margin:12px 0}@media(max-width:650px){.aiPlanTop,.aiStartBar,.aiTrainingHeader{align-items:flex-start;flex-direction:column}.aiTimer{text-align:left}.aiCurrentCard{padding:16px}.aiCurrentCard h2{font-size:26px}.aiPrescription b{font-size:34px}.aiFeedbackGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.aiFeedbackGrid button:last-child{grid-column:1/-1}.aiTrainingFooter{position:static}.aiRestPanel{align-items:flex-start;flex-direction:column}}

/* V24.1.3 Admin demo library + live AI PT exercise demos */
.demoAdminGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-top:12px}
.demoAdminCard{border:1px solid var(--line,#2a3340);border-radius:14px;padding:12px;background:rgba(255,255,255,.025);min-width:0}
.adminDemoPreview,.aiExerciseDemo{display:block;width:100%;max-height:280px;object-fit:contain;border-radius:14px;background:#0b0f14;margin:10px 0}
.aiPtDemoSlot{margin:10px 0 14px}
.aiExerciseDemo{max-height:340px;aspect-ratio:1/1}

/* V24.2 Athlete Memory + gym photo review */
.athleteMemorySummary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.athleteMemorySummary>div{border:1px solid var(--line);border-radius:12px;padding:10px;display:grid;gap:4px}.athleteMemorySummary span{color:var(--muted);font-size:.9rem}.uploadProgress{margin:10px 0;display:grid;gap:6px}.uploadProgressTrack{height:8px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}.uploadProgressTrack span{display:block;width:0;height:100%;background:var(--accent);transition:width .15s ease}.gymPhoto.reviewable{display:grid;gap:8px}.gymPhotoThumb{position:relative;min-height:150px;border-radius:10px;overflow:hidden;background:rgba(255,255,255,.04)}.gymPhotoThumb img{width:100%;height:190px;object-fit:cover;display:block}.photoLoading{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted)}.gymPhotoMeta{display:flex;gap:8px;justify-content:space-between;align-items:center}.photoEqRow{margin:6px 0}@media(max-width:700px){.athleteMemorySummary{grid-template-columns:1fr}.gymPhotoThumb img{height:160px}}
abbr.acr{text-decoration:underline dotted;text-decoration-color:#6f91b6;text-underline-offset:2px;cursor:help;border:0}abbr.acr:focus-visible{outline:1px solid var(--blue);border-radius:3px}
.acrTip{position:fixed;z-index:130;max-width:min(320px,calc(100vw - 24px));background:#132030;border:1px solid #39516b;border-radius:12px;padding:9px 12px;box-shadow:var(--shadow);font-size:13px;line-height:1.35;color:var(--text)}.acrTip b{color:#fff}.acrNote{color:var(--muted);margin-top:4px}
