
/* NEXT Generation Development v91 clean build
   One CSS file. Mobile-first. No legacy yellow-green accent. No nested-patch inheritance.
*/

/* ---------- Base ---------- */
:root{
  --bg:#050a13;
  --bg2:#07101d;
  --panel:#091323;
  --panel2:#0d1a2d;
  --panel3:#101f35;
  --text:#f7faff;
  --muted:#aebfd3;
  --soft:#d8e7f6;
  --cyan:#87e6ff;
  --blue:#5aa0ff;
  --blue2:#7bb8ff;
  --line:rgba(128,181,255,.18);
  --line2:rgba(135,230,255,.30);
  --shadow:0 18px 48px rgba(0,0,0,.30);
  --r:24px;
  --r2:18px;
  --safe-bottom:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box}
html{background:#050a13;scroll-behavior:smooth}
body{
  margin:0;
  min-height:100svh;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--text);
  background:
    radial-gradient(900px 700px at 12% -8%, rgba(40,132,255,.16), transparent 60%),
    radial-gradient(800px 650px at 94% 18%, rgba(80,210,255,.11), transparent 58%),
    linear-gradient(180deg,#040812 0%,#08101d 42%,#050914 100%);
}
button,select,input{font:inherit}
button{cursor:pointer}
a{color:inherit}
.wrap{
  width:min(1220px, calc(100vw - 20px));
  margin:0 auto;
  padding:10px 0 calc(90px + var(--safe-bottom));
}
.screen{display:none}
.screen.active{display:block}

/* iPhone top scrim */
body::before{
  content:'';
  position:fixed;
  inset:0 0 auto 0;
  height:106px;
  z-index:80;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(4,8,16,.98),rgba(4,8,16,.82) 66%,rgba(4,8,16,0));
}

/* ---------- Common UI ---------- */
.panel,.hero,.video-card,.info-card,.playlist-card,.day-card,.test-card,.qa-row,.library-detail,.selected-day-focus,.dose-card,.coach-checklist-panel,.overview-insight-card,.flow-card{
  border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(10,20,36,.94),rgba(6,12,22,.98));
  border-radius:var(--r);
  box-shadow:var(--shadow), inset 0 1px 0 rgba(255,255,255,.035);
}
.panel{overflow:hidden}
.panel-pad{padding:16px}
.meta,.section-title,.kicker,.dash-kicker,.flow-kicker,.exercise-meta,.overview-list-head{
  color:var(--cyan);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:12px;
  font-weight:950;
}
.section-title{margin:0 0 12px}
.title{
  margin:6px 0 10px;
  font-size:clamp(38px,10vw,58px);
  line-height:.92;
  letter-spacing:-.065em;
}
.muted,.hint,.small-note,.sub,.panel p{color:var(--muted);line-height:1.38}
.small-note{font-size:13px}
.main-btn,.ghost-btn,.seg-btn,.profile-btn,.day-start,.day-overview,.menu-toggle,.tool-btn,.utility-pill,.next-pass-btn,.app-primary-action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:48px;
  padding:12px 16px;
  border-radius:17px;
  font-weight:900;
  text-decoration:none;
  border:1px solid var(--line);
  color:var(--text);
  background:linear-gradient(180deg,rgba(255,255,255,.065),rgba(255,255,255,.035));
}
.main-btn,.next-pass-btn,.day-start,.app-primary-action{
  border:0;
  color:#07111f;
  background:linear-gradient(180deg,var(--blue2),var(--blue));
  box-shadow:0 16px 36px rgba(90,160,255,.30), inset 0 1px 0 rgba(255,255,255,.30);
}
.main-btn:disabled,.ghost-btn:disabled{opacity:.45;cursor:not-allowed}
.seg{display:grid;grid-template-columns:1fr;gap:10px}
.seg-btn.active,.profile-btn.active{
  border-color:var(--line2);
  background:linear-gradient(180deg,rgba(70,142,255,.24),rgba(23,54,104,.24));
}
.tag,.week-day-chips span,.selected-day-tags span,.selected-day-equipment span,.qa-meta-pills span,.library-facts span,.overview-equipment span,.overview-equipment b,.dash-focus-chips span,.week-day-stats span{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:7px 11px;
  border-radius:999px;
  border:1px solid rgba(135,230,255,.20);
  background:rgba(13,31,55,.76);
  color:#e9f6ff;
  font-weight:850;
}

/* ---------- App top bar ---------- */
/* v91.1 emergency mobile nav hotfix */
.v84-rail{display:none!important}
.app-nav-toggle,.app-tab{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 16px;border-radius:17px;font-weight:900;border:1px solid var(--line);color:var(--text);background:linear-gradient(180deg,rgba(255,255,255,.065),rgba(255,255,255,.035));}
.app-nav-toggle{min-width:116px;white-space:nowrap;}
.app-primary-action{display:none!important;}
.app-topbar{position:sticky;top:calc(env(safe-area-inset-top,0px) + 8px);z-index:120;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding:14px 16px;border-radius:22px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(5,10,19,.98),rgba(6,12,22,.96));backdrop-filter:blur(18px) saturate(120%);box-shadow:0 18px 44px rgba(0,0,0,.36);}
.app-topbar{position:sticky}
.app-tabs{display:none;position:absolute;right:16px;top:calc(100% + 8px);width:min(220px,calc(100vw - 40px));padding:10px;border-radius:18px;border:1px solid var(--line);background:rgba(5,10,19,.98);box-shadow:var(--shadow);gap:8px;}
.app-topbar.nav-open .app-tabs{display:grid;}
.app-tab.active{border-color:var(--line2);background:linear-gradient(180deg,rgba(70,142,255,.24),rgba(23,54,104,.24));}
.app-location{min-width:0}.app-location strong{font-size:18px}.app-location span{font-size:12px}

.app-topbar{
  position:sticky;
  top:calc(env(safe-area-inset-top,0px) + 8px);
  z-index:120;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
  padding:14px 16px;
  border-radius:22px;
  border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(5,10,19,.98),rgba(6,12,22,.96));
  backdrop-filter:blur(18px) saturate(120%);
  box-shadow:0 18px 44px rgba(0,0,0,.36);
}
.app-location{display:grid;gap:2px}
.app-location span{color:var(--cyan);text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:950}
.app-location strong{font-size:20px}
.app-nav-toggle{min-width:110px}

/* ---------- Home/Dashboard ---------- */
.home-hero{
  padding:0;
  background:
    radial-gradient(circle at 86% 8%,rgba(70,160,255,.12),transparent 36%),
    linear-gradient(180deg,rgba(10,20,36,.94),rgba(6,12,22,.98));
}
.home-topbar,.showcase-copy,.showcase-benefits,.showcase-signals{display:none!important}
.showcase-grid{display:block}
.hero-dashboard-panel{border:0;background:transparent;box-shadow:none;border-radius:0}
.hero-dashboard-panel .panel-pad{padding:0}
#progressDashboard{display:grid;gap:12px}
.daily-primary,.daily-secondary{
  border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(13,24,42,.94),rgba(8,15,27,.98));
  border-radius:24px;
  padding:16px;
}
.dash-title{
  margin-top:10px;
  font-size:clamp(38px,10vw,58px);
  line-height:.92;
  letter-spacing:-.06em;
  font-weight:1000;
}
.dash-sub,.dash-context{color:var(--muted);font-size:16px;margin-top:8px}
.daily-time-pill{width:max-content;margin-top:14px}
.dash-focus-card{
  margin-top:14px;
  padding:14px;
  border-radius:18px;
  background:rgba(14,24,42,.78);
  border:1px solid var(--line);
}
.dash-focus-label{color:var(--cyan);text-transform:uppercase;letter-spacing:.14em;font-weight:950;font-size:12px}
.dash-focus-text{font-size:18px;line-height:1.32;font-weight:850;margin-top:8px}
.dash-focus-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.dash-action-row{display:grid;gap:10px;margin-top:14px}
.next-pass-btn{min-height:64px;font-size:22px;border-radius:20px}
.overview-pass-btn{min-height:54px}
.dash-progress{display:grid;gap:10px}
.dash-row{display:flex;justify-content:space-between;gap:12px;font-weight:900}
.dash-bar{height:10px;border-radius:999px;background:rgba(160,190,230,.15);overflow:hidden}
.dash-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--blue));}
.dash-week-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.dash-week-title{font-weight:1000;font-size:20px}
.dash-week-count{
  border:1px solid var(--line);
  border-radius:999px;
  padding:8px 12px;
  color:#eaf7ff;
  font-weight:900;
  background:rgba(13,31,55,.68);
}
.dash-grid{
  display:grid!important;
  grid-auto-flow:column!important;
  grid-auto-columns:minmax(116px,1fr)!important;
  grid-template-columns:none!important;
  gap:10px!important;
  overflow-x:auto;
  padding:2px 0 6px;
  scrollbar-width:none;
}
.dash-grid::-webkit-scrollbar{display:none}
.dash-day{
  min-width:116px;
  min-height:92px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.035);
  border-radius:18px;
  padding:12px;
}
.dash-day-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.dash-day-top b{font-size:22px}
.dash-day-state{font-size:12px;color:var(--muted);font-weight:900}
.dash-day-icon{font-size:28px;color:var(--cyan);margin-top:8px}
.subtle-skip{display:none}

/* ---------- Profile/program ---------- */
#profileScreen .profile-config-panel{
  border:0;
  background:transparent;
  box-shadow:none;
  overflow:visible;
}
#profileScreen .profile-config-panel>.panel-pad{padding:0}
#profileScreen .overview-head{
  margin-bottom:10px;
  padding:16px;
  border:1px solid var(--line);
  border-radius:24px;
  background:
    radial-gradient(circle at 84% 12%,rgba(80,160,255,.12),transparent 34%),
    linear-gradient(180deg,rgba(9,17,31,.96),rgba(5,10,19,.98));
}
#profileScreen .overview-head .page-actions{display:none}
#profileScreen .title{max-width:8ch}
#profileScreen .muted{max-width:24ch;font-size:16px}
.profile-config-grid{display:grid;gap:10px}
.profile-config-grid>.panel{background:linear-gradient(180deg,rgba(11,20,36,.94),rgba(7,13,24,.96));}
.profile-row{display:grid;grid-template-columns:1fr;gap:10px}
.profile-btn.add-profile{color:#eaf5ff}
#stageButtons{display:grid!important;grid-template-columns:1fr!important;gap:12px!important}
.stage-choice{
  position:relative;
  min-height:212px;
  display:flex!important;
  flex-direction:column;
  justify-content:flex-end;
  align-items:flex-start;
  overflow:hidden;
  padding:20px!important;
  border-radius:26px!important;
  border:1px solid var(--line)!important;
  background:#06101d!important;
  background-size:cover!important;
  background-position:center!important;
  text-align:left!important;
}
.stage-choice::before{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(2,7,14,.86),rgba(2,7,14,.50) 58%,rgba(2,7,14,.16));
  z-index:0;
}
.stage-choice[data-stage="Stage 1"]{background-image:url('../img/program/stage1.png')!important}
.stage-choice[data-stage="Stage 2"]{background-image:url('../img/program/stage2.png')!important}
.stage-choice[data-stage="Stage 3"]{background-image:url('../img/program/stage3.png')!important}
.stage-choice b,.stage-choice span{position:relative;z-index:1}
.stage-choice b{font-size:clamp(36px,10vw,58px);line-height:.96;letter-spacing:-.06em;max-width:9ch}
.stage-choice span{margin-top:8px;font-size:16px;line-height:1.25;max-width:22ch;color:#dcecf9}
.developed-cards-grid,.week-plan-grid,.day-grid,.test-grid{display:grid;grid-template-columns:1fr;gap:12px}
.developed-card{padding:16px;border-radius:20px;background:rgba(11,20,36,.86);border:1px solid var(--line)}
.developed-card .big{font-size:28px;font-weight:1000;line-height:1;letter-spacing:-.04em;margin:8px 0}
.week-day-card{
  position:relative;
  min-height:320px;
  overflow:hidden;
  border-radius:26px!important;
  background:#06101d!important;
}
.week-day-image{position:absolute;inset:0;background-size:cover;background-position:center;filter:saturate(.95) brightness(.82)}
.week-day-card[data-day-index="1"] .week-day-image{background-image:linear-gradient(90deg,rgba(2,7,14,.88),rgba(2,7,14,.50) 58%,rgba(2,7,14,.20)),url('../img/program/stage1.png')}
.week-day-card[data-day-index="2"] .week-day-image{background-image:linear-gradient(90deg,rgba(2,7,14,.88),rgba(2,7,14,.50) 58%,rgba(2,7,14,.20)),url('../img/program/stage2.png')}
.week-day-card[data-day-index="3"] .week-day-image{background-image:linear-gradient(90deg,rgba(2,7,14,.88),rgba(2,7,14,.50) 58%,rgba(2,7,14,.20)),url('../img/program/stage3.png')}
.week-day-card[data-day-index="4"] .week-day-image{background-image:linear-gradient(90deg,rgba(2,7,14,.88),rgba(2,7,14,.50) 58%,rgba(2,7,14,.20)),url('../img/hero/hero-dashboard.png')}
.week-day-content{position:relative;z-index:2;display:grid;align-content:end;gap:10px;height:100%;padding:18px}
.week-day-top{display:flex;justify-content:space-between;gap:10px}
.week-day-top small{color:var(--cyan);text-transform:uppercase;letter-spacing:.14em;font-weight:950}
.week-day-top strong{font-size:28px}
.week-day-content h3{font-size:42px;line-height:.95;margin:0;letter-spacing:-.055em}
.week-day-content p{margin:0;color:#d1dfef;max-width:24ch}
.week-day-stats,.week-day-chips{display:flex;flex-wrap:wrap;gap:8px}
.week-day-actions{display:grid;grid-template-columns:1fr;gap:10px}
.selected-day-focus{padding:16px}
.selected-day-focus h3{font-size:40px;line-height:.95;letter-spacing:-.055em;margin:8px 0}
.selected-day-stats{font-size:26px;font-weight:1000;margin:10px 0}
.selected-day-tags,.selected-day-equipment{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.selected-day-grid{display:grid;grid-template-columns:1fr;gap:10px}
.selected-day-grid>div{padding:14px;border-radius:18px;background:rgba(8,15,27,.72);border:1px solid var(--line)}
.selected-day-grid .label{display:block;color:var(--cyan);text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:950;margin-bottom:8px}
.selected-day-grid b{display:block;font-size:24px;line-height:1.1}
.selected-day-grid small{display:block;color:var(--muted);margin-top:6px}
.day-actions{display:grid!important;grid-template-columns:1fr 1fr;gap:10px!important;margin-top:12px}
.day-actions button{min-height:54px!important}

/* ---------- Overview ---------- */
.overview-head{display:grid;gap:14px}
.overview-head .page-actions{display:grid;gap:10px}
.overview-equipment{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
#overviewInsights{display:grid;grid-template-columns:1fr;gap:12px}
.overview-insight-card{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;padding:14px}
.overview-insight-icon,.flow-icon{width:48px;height:48px;border-radius:999px;display:grid;place-items:center;background:rgba(13,31,55,.76);border:1px solid var(--line2);color:var(--cyan);font-size:24px}
.overview-insight-card .big{font-size:21px;font-weight:1000;line-height:1.05}
#overviewFlow{display:grid!important;grid-template-columns:1fr;gap:10px!important;margin:12px 0}
.overview-flow-step{display:grid;grid-template-columns:auto auto 1fr;gap:12px;align-items:center;padding:14px;background:rgba(8,15,27,.72);border:1px solid var(--line);border-radius:20px}
.flow-index{color:var(--cyan);font-weight:1000}
.overview-flow-step h3{margin:0;font-size:22px}
.overview-flow-step p{margin:3px 0 0;color:var(--muted)}
.coach-checklist-panel{display:grid;gap:12px;padding:14px}
.coach-checks{display:grid;gap:10px}
.coach-check{padding:12px;border:1px solid var(--line);border-radius:16px;background:rgba(8,15,27,.72)}
.coach-check b{display:block}
.coach-check span{color:var(--muted)}
#overviewList{display:grid;gap:8px;margin-top:12px}
.overview-list-head{display:none}
.ex-row{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:12px;border:1px solid var(--line);border-radius:16px;background:rgba(8,15,27,.72)}
.num{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:rgba(13,31,55,.76);color:var(--cyan);font-weight:1000}
.ex-main b{font-size:17px}
.section,.reps{grid-column:2;color:var(--muted)}

/* ---------- Exercise/pass ---------- */
body.exercise-active .wrap{width:100%;padding:0 0 calc(120px + var(--safe-bottom))}
.sticky-nav{
  position:sticky;
  top:0;
  z-index:130;
  padding:8px 10px 10px;
  background:linear-gradient(180deg,rgba(5,10,19,.98),rgba(6,12,22,.95));
  border-bottom:1px solid var(--line);
  backdrop-filter:blur(18px);
}
.nav-row{display:grid;gap:8px}
.nav-actions{display:grid;gap:8px}
.nav-left{display:grid;grid-template-columns:auto auto;gap:8px;align-items:center}
.menu-wrap{position:relative}
.menu-toggle,.exit-pass-btn{width:auto;min-height:42px;border-radius:14px;padding:9px 14px;font-size:15px}
.top-tools{display:none;position:fixed;left:10px;right:10px;top:86px;z-index:200;padding:10px;border-radius:20px;border:1px solid var(--line);background:rgba(5,10,19,.98);box-shadow:var(--shadow)}
.top-tools.open{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tool-btn{font-size:12px;min-height:42px;justify-content:space-between}
.progress-meta{display:grid;gap:6px}
#exerciseMeta{font-size:14px;letter-spacing:.10em;text-transform:uppercase;color:#dff8ff;font-weight:1000}
.progress-shell{height:9px;border-radius:999px;background:rgba(160,190,230,.14);overflow:hidden}
.progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--cyan),var(--blue))}
.stage-layout{display:grid;grid-template-columns:1fr;gap:10px}
.video-card{border-radius:0 0 24px 24px;overflow:hidden;border-left:0;border-right:0}
.video-wrap{aspect-ratio:16/9;background:#050a12;position:relative;display:grid;place-items:center}
.video-wrap iframe,.video-wrap video{width:100%;height:100%;border:0;display:block}
.no-video{min-height:220px;display:grid;place-items:center;text-align:center;padding:24px;color:var(--muted)}
.no-video h2{margin:8px 0;color:var(--text)}
.proxy-status,.open-link{display:none!important}
.info-card{margin:0 10px;padding:16px;display:grid;gap:12px}
.exercise-kicker{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}
.exercise-kicker::-webkit-scrollbar{display:none}
.exercise-kicker .tag{flex:0 0 auto;text-transform:uppercase;letter-spacing:.12em;font-size:12px;color:var(--cyan)}
.exercise-name{font-size:clamp(36px,10vw,58px);line-height:.92;letter-spacing:-.06em;margin:0;text-wrap:balance}
.exercise-reps{min-height:112px;border-radius:22px;background:rgba(255,255,255,.045);border:1px solid var(--line);display:grid;place-items:center;padding:14px}
.rx-line{font-size:clamp(48px,14vw,72px);line-height:.95;font-weight:1000;letter-spacing:-.06em}
.set-note,.coach-cues,.next-preview,.timer-card,.superset-status{padding:14px;border-radius:20px;background:rgba(8,15,27,.72);border:1px solid var(--line)}
.coach-cues small,.next-preview small{display:block;color:var(--cyan);letter-spacing:.14em;text-transform:uppercase;font-weight:950;font-size:12px;margin-bottom:8px}
.coach-cues ul{margin:0;padding-left:20px;color:#dce8f5}
.next-preview b,.next-line{color:#dff8ff;font-weight:950}
.timer-card{display:none}
.timer-card.show{display:grid;gap:10px}
.timer-display{font-size:44px;font-weight:1000;font-variant-numeric:tabular-nums}
.timer-status{color:var(--cyan);font-weight:900}
.timer-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.playlist-card{display:none!important}
.pass-bottom-controls{
  position:sticky;
  bottom:0;
  z-index:110;
  display:grid;
  grid-template-columns:auto 1fr;
  gap:10px;
  padding:10px 10px calc(10px + var(--safe-bottom));
  background:linear-gradient(180deg,rgba(5,10,19,0),rgba(5,10,19,.94) 25%,rgba(5,10,19,.98));
}
#prevBtn{min-width:106px;max-width:128px;min-height:54px;border-radius:18px;font-size:0;opacity:.80}
#prevBtn::before{content:'← Tillbaka';font-size:15px}
#nextBtn{min-height:58px;border-radius:20px;font-size:19px}

/* Rest */
.rest-stage{position:absolute;inset:0;display:grid;align-content:center;justify-items:start;padding:26px;background-size:cover;background-position:center;color:#fff}
.rest-stage::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,8,16,.68),rgba(3,8,16,.18));z-index:0}
.rest-stage>*{position:relative;z-index:1}
.rest-kicker{color:var(--cyan);letter-spacing:.14em;text-transform:uppercase;font-weight:950}
.rest-title{font-size:44px;font-weight:1000}
.rest-display{font-size:clamp(80px,22vw,160px);font-weight:1000;letter-spacing:-.08em}
.rest-next{font-size:18px;color:#e4f0fb}

/* ---------- Library ---------- */
.library-filters{display:grid;grid-template-columns:1fr;gap:12px;margin:12px 0}
.library-filters input,.library-filters select,.test-card input{
  min-height:56px;
  border-radius:18px;
  border:1px solid var(--line);
  background:#071020;
  color:var(--text);
  padding:0 14px;
  width:100%;
}
.library-detail{display:grid!important;grid-template-columns:1fr!important;gap:14px;padding:14px;margin-bottom:14px}
.library-video{aspect-ratio:16/9;min-height:0;height:auto;border-radius:20px;overflow:hidden;background:#050a12}
.library-video iframe,.library-video video,.library-video img{width:100%;height:100%;border:0;display:block;object-fit:cover}
.library-copy{display:grid;gap:12px}
.library-copy h2{font-size:clamp(36px,10vw,58px);line-height:.94;letter-spacing:-.06em;margin:0}
.library-copy p{font-size:16px;margin:0}
.library-facts,.library-dose{display:grid;gap:10px}
.dose-card{padding:14px;border-radius:18px;background:rgba(8,15,27,.72)}
.dose-card .sub{display:flex;flex-wrap:wrap;gap:8px}
.dose-card ul{margin:0;padding-left:20px;color:var(--muted)}
.qa-grid{display:grid;grid-template-columns:1fr;gap:12px}
.qa-row{padding:16px;display:grid;gap:12px}
.qa-top{display:grid;gap:10px}
.qa-top b{font-size:28px;line-height:1;letter-spacing:-.04em}
.qa-status{width:max-content;border-radius:999px;padding:8px 12px;border:1px solid var(--line);background:rgba(13,31,55,.76);font-weight:900}
.qa-meta-pills{display:flex;flex-wrap:wrap;gap:8px}
.qa-open{min-height:50px;border-radius:18px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);font-weight:900}

/* ---------- Tests ---------- */
.test-card{padding:16px;display:grid;gap:12px}
.test-card label{color:var(--cyan);font-weight:950;font-size:18px}
.test-stats{display:grid;grid-template-columns:1fr;gap:10px}
.test-stat{padding:14px;border-radius:18px;border:1px solid var(--line);background:rgba(8,15,27,.72)}
.test-stat small{display:block;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:900}
.test-stat b{display:block;font-size:28px;margin-top:6px}
.test-delta,.test-history{color:var(--muted);font-size:14px}

/* ---------- Responsive desktop-ish ---------- */
@media (min-width:760px){
  .wrap{padding-top:18px}
  .panel-pad{padding:22px}
  .home-hero{padding:22px}
  .showcase-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(360px,1.05fr);gap:18px}
  .app-primary-action{display:inline-flex!important}
  .showcase-copy{display:grid!important;align-content:center}
  .showcase-eyebrow{display:block!important}
  .showcase-copy h1{font-size:clamp(56px,6vw,92px);line-height:.9;letter-spacing:-.07em;margin:0}
  .showcase-intro{display:block!important;max-width:44ch}
  .showcase-benefits,.showcase-signals{display:flex!important;gap:10px;flex-wrap:wrap}
  .benefit{padding:14px;border:1px solid var(--line);border-radius:18px;background:rgba(8,15,27,.72)}
  .benefit b,.benefit span{display:block}
  .benefit span{color:var(--muted)}
  .dash-action-row{grid-template-columns:1.2fr .8fr}
  .profile-config-grid{grid-template-columns:repeat(12,minmax(0,1fr))}
  .profile-config-grid>.profile-panel{grid-column:span 4}
  .profile-config-grid>.selector-panel:nth-of-type(2){grid-column:1/-1}
  .profile-config-grid>.selector-panel:nth-of-type(3),
  .profile-config-grid>.selector-panel:nth-of-type(4){grid-column:span 6}
  .profile-overview-panel,.week-overview-panel,.passday-panel,.data-panel{grid-column:1/-1}
  #stageButtons{grid-template-columns:repeat(3,1fr)!important}
  .developed-cards-grid{grid-template-columns:repeat(4,1fr)}
  .week-plan-grid{grid-template-columns:repeat(3,1fr)}
  .selected-day-grid{grid-template-columns:repeat(2,1fr)}
  .overview-head{grid-template-columns:1fr auto}
  #overviewInsights{grid-template-columns:repeat(4,1fr)}
  #overviewFlow{grid-template-columns:repeat(4,1fr)!important}
  .stage-layout{grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr)}
  body.exercise-active .wrap{width:min(1220px,calc(100vw - 32px));padding-top:0}
  .video-card{border-radius:24px;border-left:1px solid var(--line);border-right:1px solid var(--line)}
  .info-card{margin:0}
  .playlist-card{display:block!important}
  .mini-list{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:40vh;overflow:auto}
  .mini-item{display:grid;grid-template-columns:34px 1fr;gap:8px;align-items:center;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.035);padding:8px}
  .mini-item.active{border-color:var(--line2);background:rgba(70,142,255,.16)}
  .mini-title{font-weight:850;font-size:13px}.mini-reps{font-size:12px;color:var(--muted)}
  .qa-grid{grid-template-columns:repeat(2,1fr)}
  .library-detail{grid-template-columns:1fr 1fr!important}
  .test-stats{grid-template-columns:repeat(3,1fr)}
}


/* v91.2 structural cleanup
   Keeps v91.1 navigation base. Cleans remaining mobile density, box nesting and pass controls.
*/

/* Global: fewer nested visual borders on mobile */
@media (max-width: 760px){
  .panel,
  .hero,
  .daily-primary,
  .daily-secondary,
  .profile-config-grid > .panel,
  .selected-day-focus,
  .library-detail,
  .qa-row,
  .test-card,
  .info-card{
    box-shadow:0 12px 30px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.03) !important;
  }

  .panel-pad{
    padding:14px !important;
  }
}

/* Dashboard: avoid large nested card feeling and make CTA safe around Safari toolbar */
@media (max-width: 760px){
  .home-hero{
    border-radius:22px !important;
  }
  .daily-primary{
    padding:14px !important;
    border-radius:20px !important;
  }
  .dash-title{
    font-size:clamp(34px,10.2vw,50px) !important;
  }
  .dash-focus-card{
    padding:12px !important;
    border-radius:16px !important;
  }
  .dash-focus-text{
    font-size:16px !important;
  }
  .dash-action-row{
    gap:8px !important;
  }
  .next-pass-btn{
    min-height:58px !important;
    border-radius:18px !important;
    font-size:20px !important;
  }
  .overview-pass-btn{
    min-height:48px !important;
    border-radius:16px !important;
  }
  .daily-secondary{
    padding:14px !important;
    border-radius:20px !important;
  }
  .dash-grid{
    grid-auto-columns:minmax(104px,1fr) !important;
  }
  .dash-day{
    min-width:104px !important;
    min-height:84px !important;
    padding:10px !important;
  }
}

/* Profile: remove "big marketing block" feeling; make it compact control-first */
@media (max-width:760px){
  #profileScreen .overview-head{
    padding:14px !important;
    border-radius:20px !important;
    margin-bottom:10px !important;
  }
  #profileScreen .overview-head .meta{
    font-size:11px !important;
    letter-spacing:.12em !important;
  }
  #profileScreen .title{
    font-size:clamp(32px,8.8vw,48px) !important;
    max-width:none !important;
    margin:4px 0 8px !important;
  }
  #profileScreen .muted{
    max-width:28ch !important;
    font-size:15px !important;
    line-height:1.25 !important;
  }
  #profileScreen .profile-config-grid{
    gap:8px !important;
  }
  #profileScreen .profile-panel,
  #profileScreen .selector-panel,
  #profileScreen .profile-overview-panel,
  #profileScreen .week-overview-panel,
  #profileScreen .passday-panel,
  #profileScreen .data-panel{
    border-radius:20px !important;
  }
  #profileScreen .stage-choice{
    min-height:188px !important;
    border-radius:22px !important;
    padding:18px !important;
  }
  #profileScreen .stage-choice b{
    font-size:clamp(32px,9.5vw,50px) !important;
  }
  #profileScreen .stage-choice span{
    font-size:15px !important;
  }
  .week-day-card{
    min-height:278px !important;
    border-radius:22px !important;
  }
  .week-day-content h3{
    font-size:clamp(34px,10vw,48px) !important;
  }
  .selected-day-focus h3{
    font-size:clamp(32px,9vw,46px) !important;
  }
}

/* Selected pass: fewer boxes inside boxes */
@media(max-width:760px){
  .selected-day-grid{
    display:none !important;
  }
  .selected-day-equipment span:nth-child(n+5){
    display:none !important;
  }
  .selected-day-stats{
    font-size:22px !important;
  }
}

/* Library: video and card sizing more controlled */
#qaScreen .library-video{
  aspect-ratio:16 / 9 !important;
  width:100% !important;
  max-height:42svh !important;
}
#qaScreen .library-video iframe,
#qaScreen .library-video video{
  width:100% !important;
  height:100% !important;
}
@media(max-width:760px){
  .library-detail{
    padding:12px !important;
    border-radius:22px !important;
  }
  .library-copy h2{
    font-size:clamp(30px,9vw,44px) !important;
    line-height:.98 !important;
  }
  .library-copy p{
    font-size:15px !important;
  }
  .qa-top b{
    font-size:clamp(24px,7vw,34px) !important;
  }
}

/* Pass mode: previous should be tiny/secondary; hidden when disabled */
body.exercise-active .pass-bottom-controls{
  grid-template-columns:1fr !important;
}
body.exercise-active .pass-bottom-controls.has-prev{
  grid-template-columns:minmax(82px,.32fr) 1fr !important;
}
body.exercise-active #prevBtn:disabled{
  display:none !important;
}
body.exercise-active #prevBtn{
  min-width:0 !important;
  max-width:none !important;
  min-height:48px !important;
  padding-inline:10px !important;
  opacity:.72 !important;
  font-size:0 !important;
}
body.exercise-active #prevBtn::before{
  content:'←';
  font-size:20px;
}
body.exercise-active .pass-bottom-controls.has-prev #prevBtn::before{
  content:'←';
}
body.exercise-active #nextBtn{
  min-height:58px !important;
  font-size:18px !important;
}
@media(min-width:760px){
  body.exercise-active #prevBtn::before{
    content:'← Tillbaka';
    font-size:15px;
  }
}

/* Pass mode: if reps-based exercise, timer should not dominate below */
body.exercise-active .timer-card:not(.show){
  display:none !important;
}
body.exercise-active .timer-card{
  margin-top:2px !important;
}

/* App menu: ensure dropdown stays clean and never sits as visible pills */
.app-tabs{
  overflow:hidden;
}
.app-tab{
  width:100%;
}



/* v91.3 – phase/week segment cleanup
   The large stacked phase/week controls wasted vertical space on iPhone.
   Keep nav base from v91.1 and structural flattening from v91.2.
*/

/* Rename-friendly compact controls */
#profileScreen #phaseButtons,
#profileScreen #weekButtons{
  display:grid !important;
  gap:8px !important;
}

#profileScreen #phaseButtons{
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
}

#profileScreen #weekButtons{
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
}

#profileScreen #phaseButtons .seg-btn,
#profileScreen #weekButtons .seg-btn{
  min-height:52px !important;
  padding:10px 8px !important;
  border-radius:16px !important;
  font-size:clamp(15px,4vw,19px) !important;
  white-space:nowrap !important;
}

/* Similar compact button groups that should not become huge vertical stacks */
#profileScreen .profile-row{
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
}

#profileScreen .profile-row .profile-btn{
  min-height:52px !important;
  padding:10px 8px !important;
  border-radius:16px !important;
  font-size:clamp(15px,4vw,19px) !important;
}

#profileScreen .profile-row .profile-btn.add-profile{
  grid-column:auto !important;
}

/* Make these selector panels smaller now that controls are grids */
#profileScreen .selector-panel .panel-pad,
#profileScreen .profile-panel .panel-pad{
  padding:14px !important;
}

#profileScreen .selector-panel,
#profileScreen .profile-panel{
  border-radius:18px !important;
}

/* When the phone is very narrow, keep phase as 3 columns but week as 2x2 if needed */
@media(max-width:390px){
  #profileScreen #weekButtons{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
  #profileScreen .profile-row{
    grid-template-columns:1fr 1fr !important;
  }
  #profileScreen .profile-row .profile-btn.add-profile{
    grid-column:1 / -1 !important;
  }
}

/* Reduce vertical rhythm around these panels */
#profileScreen .profile-config-grid{
  gap:9px !important;
}
#profileScreen .section-title{
  margin-bottom:10px !important;
}



/* v91.4 – Dashboard/pass cleanup
   Fixes real iPhone findings:
   - progress stat icons were huge
   - pass mode had two top bars
   - next/rest button appeared above video
   - week rhythm clipped horizontally
*/

/* Dashboard week rhythm: 3 equal cards, no right clipping */
#progressDashboard .dash-grid{
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  grid-auto-flow:row !important;
  grid-auto-columns:unset !important;
  overflow:visible !important;
  gap:8px !important;
  width:100% !important;
}
#progressDashboard .dash-day{
  min-width:0 !important;
  width:100% !important;
  min-height:92px !important;
}
#progressDashboard .dash-day-top{
  display:grid !important;
  grid-template-columns:1fr auto !important;
  gap:6px !important;
}
#progressDashboard .dash-day-top b{
  font-size:clamp(28px,8vw,42px) !important;
  line-height:.95 !important;
}
#progressDashboard .dash-day-state{
  font-size:13px !important;
  line-height:1.05 !important;
  max-width:3.5em;
}
#progressDashboard .dash-week-summary{
  display:grid !important;
  grid-template-columns:1fr auto !important;
  gap:8px !important;
  align-items:center !important;
}
#progressDashboard .dash-week-count{
  white-space:nowrap !important;
  font-size:clamp(16px,5vw,24px) !important;
  padding:8px 12px !important;
}
@media(max-width:370px){
  #progressDashboard .dash-grid{
    grid-template-columns:repeat(3,minmax(92px,1fr)) !important;
    overflow-x:auto !important;
  }
}

/* Quick stats: no giant icons, compact stat cards */
.quick-stats-grid{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:12px !important;
}
.progress-stat,
.stat-card.progress-stat{
  min-height:0 !important;
  padding:16px !important;
  border-radius:20px !important;
  display:grid !important;
  gap:8px !important;
  align-content:start !important;
}
.progress-stat .stat-icon,
.stat-icon{
  display:none !important;
}
.progress-stat .big{
  font-size:clamp(32px,9vw,52px) !important;
  line-height:.92 !important;
  letter-spacing:-.05em !important;
}
.progress-stat .sub{
  font-size:15px !important;
}
.progress-stat .mini-progress{
  height:10px !important;
  border-radius:999px !important;
  overflow:hidden !important;
  background:rgba(160,190,230,.14) !important;
}
.progress-stat .mini-progress span{
  display:block;
  height:100%;
  background:linear-gradient(90deg,var(--cyan),var(--blue));
}
.progress-stat .cta{
  color:var(--cyan);
  font-weight:900;
}

/* Desktop can use grid, mobile remains single-column readable */
@media(min-width:760px){
  .quick-stats-grid{
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  }
}

/* Pass mode: hide normal app shell topbar when workout is active */
body.exercise-active .app-topbar{
  display:none !important;
}

/* Pass mode: bottom controls are actual bottom controls, never above the video */
body.exercise-active .wrap{
  padding-bottom:calc(92px + var(--safe-bottom)) !important;
}
body.exercise-active .pass-bottom-controls{
  position:fixed !important;
  left:max(10px, calc((100vw - 1220px) / 2)) !important;
  right:max(10px, calc((100vw - 1220px) / 2)) !important;
  bottom:0 !important;
  z-index:500 !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:8px !important;
  padding:10px 10px calc(10px + var(--safe-bottom)) !important;
  background:linear-gradient(180deg,rgba(5,10,19,0),rgba(5,10,19,.94) 28%,rgba(5,10,19,.99)) !important;
  pointer-events:auto !important;
}
body.exercise-active .pass-bottom-controls.has-prev{
  grid-template-columns:minmax(52px,64px) 1fr !important;
}
body.exercise-active #prevBtn:disabled{
  display:none !important;
}
body.exercise-active #prevBtn{
  width:100% !important;
  min-width:0 !important;
  max-width:64px !important;
  min-height:56px !important;
  border-radius:18px !important;
  padding:0 !important;
  opacity:.72 !important;
}
body.exercise-active #prevBtn::before{
  content:'←' !important;
  font-size:22px !important;
}
body.exercise-active #nextBtn{
  width:100% !important;
  min-height:60px !important;
  border-radius:20px !important;
  font-size:clamp(17px,4.8vw,22px) !important;
}

/* Since controls are fixed, video should be first after pass topbar */
body.exercise-active .stage-layout{
  margin-top:0 !important;
}
body.exercise-active .sticky-nav{
  margin-bottom:0 !important;
}
body.exercise-active .video-card{
  margin-top:0 !important;
}

/* Pass video: keep 16:9 and avoid oversized vertical flow */
body.exercise-active .video-wrap{
  aspect-ratio:16 / 9 !important;
  max-height:42svh !important;
}
body.exercise-active .video-wrap iframe,
body.exercise-active .video-wrap video{
  width:100% !important;
  height:100% !important;
}

/* Pass info: slightly tighter after moving controls out of flow */
body.exercise-active .info-card{
  margin-top:10px !important;
  padding-bottom:16px !important;
}
body.exercise-active .exercise-reps{
  min-height:96px !important;
}

/* Top pass bar compact after removing app topbar */
body.exercise-active .sticky-nav{
  top:0 !important;
  padding-top:calc(8px + env(safe-area-inset-top,0px)) !important;
}
body.exercise-active #exerciseMeta{
  font-size:clamp(12px,3.4vw,16px) !important;
}



/* v91.5 – restore dashboard nav tiles and create more room in pass mode */
.dashboard-shortcuts-panel{margin-bottom:14px;}
.dashboard-shortcuts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;}
.shortcut-btn{min-height:112px;border-radius:28px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(14,23,40,.92),rgba(8,14,27,.96));box-shadow:var(--shadow);color:var(--text);font-weight:900;font-size:clamp(22px,6.2vw,28px);letter-spacing:-.03em;padding:20px 16px;text-align:center;}
.shortcut-btn.active{outline:2px solid rgba(108,225,255,.75); box-shadow:0 16px 36px rgba(0,0,0,.34), inset 0 -4px 0 rgba(108,225,255,.75);}
.shortcut-btn:active{transform:translateY(1px);}
@media(min-width:760px){.dashboard-shortcuts-grid{grid-template-columns:repeat(4,minmax(0,1fr));}}

/* pass mode: remove non-essential duplication to prioritise film + övning + coach-cues */
#nextTopPreview,.next-top-preview,.next-preview,#exerciseSummary{display:none !important;}
body.exercise-active .info-card{display:grid !important;gap:12px !important;align-content:start !important;padding:16px !important;}
body.exercise-active .exercise-kicker{margin-bottom:0 !important;}
body.exercise-active .exercise-name{margin:0 !important;font-size:clamp(30px,8.6vw,54px) !important;line-height:.94 !important;}
body.exercise-active .exercise-reps{margin-top:0 !important;min-height:72px !important;}
body.exercise-active .coach-cues{padding:14px !important;}
body.exercise-active .set-note, body.exercise-active .next-preview{display:none !important;}
body.exercise-active .stage-layout{gap:12px !important;}
body.exercise-active .sticky-nav{padding-bottom:8px !important;}
body.exercise-active .nav-row{gap:8px !important;}
body.exercise-active .progress-meta{gap:8px !important;}
body.exercise-active #exitPassBtn{min-height:48px !important;padding:12px 16px !important;border-radius:16px !important;}
body.exercise-active .menu-toggle{min-height:48px !important;padding:12px 16px !important;border-radius:16px !important;}


/* v91.6 – Pass lite
   Goal: active pass should prioritize film, exercise, prescription and coach-cues.
   Exit moves into menu. Previous is tiny. Topbar is compact.
*/

/* Active pass: one compact header row */
body.exercise-active .sticky-nav{
  padding:calc(6px + env(safe-area-inset-top,0px)) 10px 8px !important;
  border-bottom:1px solid rgba(128,181,255,.14) !important;
}

body.exercise-active .nav-row{
  display:grid !important;
  grid-template-columns:auto 1fr !important;
  gap:8px !important;
  align-items:center !important;
}

body.exercise-active .nav-actions{
  display:block !important;
}

body.exercise-active .nav-left{
  display:block !important;
}

body.exercise-active .menu-wrap{
  display:block !important;
}

body.exercise-active #menuToggleBtn,
body.exercise-active .menu-toggle{
  width:48px !important;
  min-width:48px !important;
  height:44px !important;
  min-height:44px !important;
  padding:0 !important;
  border-radius:15px !important;
  font-size:0 !important;
}

body.exercise-active #menuToggleBtn::before{
  content:'☰';
  font-size:22px;
  line-height:1;
}

/* Exit stays available inside menu, not as a big top button */
body.exercise-active #exitPassBtn{
  display:none !important;
}

/* Settings menu in pass becomes the place for secondary actions */
body.exercise-active .top-tools{
  top:calc(58px + env(safe-area-inset-top,0px)) !important;
}

/* Progress is compact but visible */
body.exercise-active .progress-meta{
  min-width:0 !important;
  gap:6px !important;
}

body.exercise-active #exerciseMeta{
  font-size:clamp(11px,3vw,14px) !important;
  letter-spacing:.08em !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}

body.exercise-active .progress-shell{
  height:7px !important;
}

/* Film should dominate */
body.exercise-active .stage-layout{
  gap:8px !important;
}

body.exercise-active .video-card{
  border-radius:0 0 18px 18px !important;
}

body.exercise-active .video-wrap{
  aspect-ratio:16 / 9 !important;
  max-height:48svh !important;
}

body.exercise-active .video-wrap iframe,
body.exercise-active .video-wrap video{
  width:100% !important;
  height:100% !important;
}

/* Exercise card: no extra pass-name feeling, fewer chips */
body.exercise-active .info-card{
  margin:8px 10px 0 !important;
  padding:14px !important;
  border-radius:20px !important;
  gap:8px !important;
}

body.exercise-active .exercise-kicker{
  display:flex !important;
  gap:8px !important;
  min-height:0 !important;
  margin:0 !important;
}

/* Keep only first meaningful category chip; hide group/set duplication */
body.exercise-active #exerciseGroup,
body.exercise-active #exerciseSet{
  display:none !important;
}

body.exercise-active #exerciseSection{
  min-height:30px !important;
  padding:6px 10px !important;
  font-size:11px !important;
  letter-spacing:.12em !important;
}

body.exercise-active .exercise-name{
  font-size:clamp(32px,9vw,52px) !important;
  line-height:.92 !important;
  margin:0 !important;
  letter-spacing:-.06em !important;
}

body.exercise-active .exercise-reps{
  min-height:78px !important;
  border-radius:18px !important;
  padding:10px !important;
}

body.exercise-active .rx-line{
  font-size:clamp(42px,12vw,64px) !important;
  line-height:.92 !important;
}

/* Coach cues get priority after prescription */
body.exercise-active .coach-cues{
  display:grid !important;
  padding:12px 14px !important;
  border-radius:18px !important;
}

body.exercise-active .coach-cues small{
  margin-bottom:6px !important;
  font-size:11px !important;
}

body.exercise-active .coach-cues ul{
  padding-left:18px !important;
  line-height:1.35 !important;
}

/* Remove non-essential active-pass modules */
body.exercise-active .set-note,
body.exercise-active .next-preview,
body.exercise-active #nextPreview,
body.exercise-active #exerciseSummary,
body.exercise-active .superset-status:empty,
body.exercise-active .playlist-card{
  display:none !important;
}

/* Timer only when actually active/visible */
body.exercise-active .timer-card:not(.show){
  display:none !important;
}

body.exercise-active .timer-card.show{
  padding:12px !important;
  border-radius:18px !important;
}

body.exercise-active .timer-display{
  font-size:34px !important;
}

body.exercise-active .timer-controls{
  gap:8px !important;
}

/* Bottom controls: primary next/rest, tiny back */
body.exercise-active .pass-bottom-controls{
  position:fixed !important;
  left:10px !important;
  right:10px !important;
  bottom:0 !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:8px !important;
  padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px)) !important;
}

body.exercise-active .pass-bottom-controls.has-prev{
  grid-template-columns:48px 1fr !important;
}

body.exercise-active #prevBtn{
  min-width:48px !important;
  width:48px !important;
  max-width:48px !important;
  height:54px !important;
  min-height:54px !important;
  border-radius:16px !important;
}

body.exercise-active #prevBtn::before{
  content:'←' !important;
  font-size:22px !important;
}

body.exercise-active #nextBtn{
  min-height:56px !important;
  border-radius:18px !important;
  font-size:clamp(17px,4.8vw,21px) !important;
}

/* Ensure bottom controls don't hide coach cues too aggressively */
body.exercise-active .wrap{
  padding-bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important;
}

/* Very small screens: squeeze further */
@media(max-width:390px){
  body.exercise-active .info-card{
    margin-left:8px !important;
    margin-right:8px !important;
    padding:12px !important;
  }
  body.exercise-active .exercise-name{
    font-size:clamp(30px,8.4vw,44px) !important;
  }
  body.exercise-active .exercise-reps{
    min-height:68px !important;
  }
}



/* ==========================================================
   v92 MOCKUP SYNC
   Purpose: return to the original mockup direction:
   - premium dark / cyan / electric blue
   - image-backed hero cards
   - fewer technical boxes
   - consistent rounded pill/card system
   - pass mode = film + exercise + coach cues, no clutter
   ========================================================== */

:root{
  --mock-bg:#050914;
  --mock-panel:#08111f;
  --mock-panel2:#101a2d;
  --mock-card:#111b2d;
  --mock-line:rgba(128,181,255,.19);
  --mock-line-strong:rgba(125,222,255,.48);
  --mock-cyan:#88e8ff;
  --mock-blue:#5da5ff;
  --mock-text:#f7fbff;
  --mock-muted:#aebfd5;
  --mock-glow:rgba(74,160,255,.22);
}

/* Global final mood */
html, body{
  background:
    radial-gradient(900px 760px at 18% -8%, rgba(32,119,255,.18), transparent 56%),
    radial-gradient(760px 680px at 92% 12%, rgba(54,202,255,.12), transparent 54%),
    linear-gradient(180deg,#030713 0%,#08101d 48%,#040814 100%) !important;
}

body::before{
  height:108px !important;
  background:linear-gradient(180deg,rgba(3,7,15,.96),rgba(3,7,15,.76) 64%,rgba(3,7,15,0)) !important;
}

/* Make cards share the same mockup surface */
.panel,.hero,.daily-primary,.daily-secondary,.profile-config-grid > .panel,
.selected-day-focus,.library-detail,.qa-row,.test-card,.info-card,.video-card,
.coach-cues,.exercise-reps,.timer-card,.week-day-card,.stage-choice,.dashboard-shortcuts-panel{
  border-color:var(--mock-line) !important;
  background:
    radial-gradient(circle at 84% 8%, rgba(61,157,255,.10), transparent 34%),
    linear-gradient(180deg, rgba(10,19,34,.94), rgba(6,12,23,.98)) !important;
  box-shadow:0 18px 48px rgba(0,0,0,.30), inset 0 1px 0 rgba(255,255,255,.035) !important;
}

.meta,.section-title,.kicker,.dash-kicker,.flow-kicker,.exercise-meta,
.overview-list-head,.dash-focus-label,.app-location span{
  color:var(--mock-cyan) !important;
}

/* ----------------------------------------------------------
   TOP APP BAR / MENU
   ---------------------------------------------------------- */

.app-topbar{
  border-radius:24px !important;
  padding:14px 18px !important;
  background:linear-gradient(180deg,rgba(5,10,20,.98),rgba(6,12,23,.96)) !important;
  border-color:rgba(128,181,255,.20) !important;
}

.app-nav-toggle{
  min-width:132px !important;
  min-height:58px !important;
  border-radius:22px !important;
  border-color:rgba(128,181,255,.22) !important;
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.035)) !important;
  font-size:22px !important;
}

.app-topbar.nav-open .app-tabs{
  display:grid !important;
}

.app-tabs{
  right:14px !important;
  top:calc(100% + 10px) !important;
  width:min(330px, calc(100vw - 38px)) !important;
  padding:12px !important;
  gap:8px !important;
  border-radius:24px !important;
  background:rgba(6,12,23,.96) !important;
  backdrop-filter:blur(18px) saturate(125%) !important;
  border:1px solid rgba(128,181,255,.22) !important;
}

.app-tab{
  min-height:58px !important;
  border-radius:18px !important;
  font-size:20px !important;
  font-weight:950 !important;
}

.app-tab.active{
  border-color:var(--mock-line-strong) !important;
  background:linear-gradient(180deg,rgba(35,88,160,.65),rgba(12,34,70,.80)) !important;
}

/* ----------------------------------------------------------
   DASHBOARD MOCKUP SHORTCUTS
   ---------------------------------------------------------- */

.dashboard-shortcuts-panel{
  margin-bottom:14px !important;
  border-radius:30px !important;
  background:
    radial-gradient(circle at 88% 10%,rgba(77,178,255,.10),transparent 36%),
    linear-gradient(180deg,rgba(7,14,26,.96),rgba(5,10,20,.98)) !important;
}

.dashboard-shortcuts-panel .panel-pad{
  padding:18px !important;
}

.dashboard-shortcuts-grid{
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:14px !important;
}

.shortcut-btn{
  min-height:96px !important;
  border-radius:25px !important;
  border:1px solid rgba(128,181,255,.18) !important;
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025)) !important;
  color:var(--mock-text) !important;
  font-size:clamp(20px,5.6vw,28px) !important;
  font-weight:1000 !important;
  letter-spacing:-.035em !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035) !important;
}

.shortcut-btn.active{
  background:
    radial-gradient(circle at 0% 50%,rgba(0,183,255,.22),transparent 58%),
    linear-gradient(180deg,rgba(20,62,115,.82),rgba(7,28,56,.75)) !important;
  border-color:rgba(90,180,255,.75) !important;
  outline:0 !important;
  box-shadow:0 10px 32px rgba(0,158,255,.18), inset 0 -4px 0 rgba(91,222,255,.75) !important;
}

@media(min-width:760px){
  .dashboard-shortcuts-grid{grid-template-columns:repeat(4,minmax(0,1fr)) !important;}
}

/* Dashboard main card: closer to mockup hero-card, less framed nesting */
.daily-primary{
  border-radius:28px !important;
  padding:20px !important;
}

.dash-title{
  font-size:clamp(46px,11vw,76px) !important;
  line-height:.90 !important;
  letter-spacing:-.07em !important;
}

.dash-sub,.dash-context{
  font-size:clamp(17px,4.2vw,24px) !important;
  line-height:1.25 !important;
}

.next-pass-btn{
  min-height:72px !important;
  border-radius:24px !important;
  font-size:clamp(22px,6vw,34px) !important;
}

.overview-pass-btn{
  min-height:60px !important;
  border-radius:20px !important;
  font-size:20px !important;
}

.daily-secondary{
  border-radius:26px !important;
}

/* Week rhythm in a clean mockup row */
#progressDashboard .dash-week-title{
  font-size:clamp(26px,7vw,38px) !important;
}

#progressDashboard .dash-day{
  border-radius:20px !important;
  min-height:112px !important;
  background:linear-gradient(180deg,rgba(17,28,47,.92),rgba(10,18,31,.96)) !important;
}

#progressDashboard .dash-day-top b{
  font-size:clamp(32px,8.8vw,48px) !important;
}

#progressDashboard .dash-day-icon{
  font-size:34px !important;
}

/* Compact phase progress cards */
.quick-stats-grid{
  gap:12px !important;
}

.progress-stat{
  border-radius:24px !important;
  background:linear-gradient(180deg,rgba(10,19,34,.94),rgba(6,12,23,.98)) !important;
}

.progress-stat .big{
  font-size:clamp(30px,8vw,48px) !important;
}

.progress-stat .stat-icon{
  display:none !important;
}

/* ----------------------------------------------------------
   PROFILE / PROGRAM
   ---------------------------------------------------------- */

#profileScreen .overview-head{
  border-radius:26px !important;
  background:
    radial-gradient(circle at 86% 12%,rgba(67,158,255,.14),transparent 35%),
    linear-gradient(180deg,rgba(11,22,40,.94),rgba(7,13,24,.98)) !important;
}

#profileScreen .title{
  font-size:clamp(38px,9.4vw,64px) !important;
  letter-spacing:-.07em !important;
}

#profileScreen .muted{
  color:var(--mock-muted) !important;
}

/* Segment buttons should be chips, not form fields */
#profileScreen #phaseButtons,
#profileScreen #weekButtons,
#profileScreen .profile-row{
  gap:8px !important;
}

#profileScreen #phaseButtons .seg-btn,
#profileScreen #weekButtons .seg-btn,
#profileScreen .profile-row .profile-btn{
  border-radius:18px !important;
  background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.028)) !important;
}

/* Image cards should feel like the mockup again */
#profileScreen .stage-choice{
  min-height:240px !important;
  border-radius:28px !important;
}

#profileScreen .stage-choice b{
  font-size:clamp(40px,10vw,68px) !important;
}

/* ----------------------------------------------------------
   ACTIVE PASS — PASS PLAYER MODE
   ---------------------------------------------------------- */

body.exercise-active::before{
  display:none !important;
}

body.exercise-active .app-topbar{
  display:none !important;
}

body.exercise-active .sticky-nav{
  padding:calc(7px + env(safe-area-inset-top,0px)) 10px 8px !important;
  background:linear-gradient(180deg,rgba(4,8,16,.98),rgba(5,10,19,.94)) !important;
  border-bottom:1px solid rgba(128,181,255,.16) !important;
}

body.exercise-active .nav-row{
  grid-template-columns:48px 1fr !important;
  gap:8px !important;
}

body.exercise-active #menuToggleBtn,
body.exercise-active .menu-toggle{
  width:48px !important;
  min-width:48px !important;
  height:44px !important;
  min-height:44px !important;
  border-radius:15px !important;
  padding:0 !important;
}

body.exercise-active #menuToggleBtn::before{
  content:'☰';
  font-size:22px;
}

body.exercise-active #menuToggleBtn{
  font-size:0 !important;
}

body.exercise-active #exitPassBtn{
  display:none !important;
}

body.exercise-active #exerciseMeta{
  font-size:clamp(12px,3.1vw,15px) !important;
  letter-spacing:.09em !important;
}

body.exercise-active .progress-shell{
  height:7px !important;
}

body.exercise-active .video-card{
  border-radius:0 0 22px 22px !important;
  border-left:0 !important;
  border-right:0 !important;
}

body.exercise-active .video-wrap{
  aspect-ratio:16 / 9 !important;
  max-height:50svh !important;
}

body.exercise-active .info-card{
  margin:8px 10px 0 !important;
  padding:14px !important;
  border-radius:22px !important;
  gap:8px !important;
}

body.exercise-active #exerciseGroup,
body.exercise-active #exerciseSet{
  display:none !important;
}

body.exercise-active #exerciseSection{
  min-height:30px !important;
  border-radius:999px !important;
  padding:6px 11px !important;
  font-size:11px !important;
}

body.exercise-active .exercise-name{
  font-size:clamp(32px,9vw,58px) !important;
  line-height:.92 !important;
  margin:0 !important;
}

body.exercise-active .exercise-reps{
  min-height:76px !important;
  border-radius:18px !important;
  padding:10px !important;
}

body.exercise-active .rx-line{
  font-size:clamp(42px,12vw,70px) !important;
}

body.exercise-active .coach-cues{
  border-radius:18px !important;
  padding:12px 14px !important;
}

body.exercise-active .coach-cues ul{
  margin:0 !important;
  line-height:1.35 !important;
}

body.exercise-active .set-note,
body.exercise-active .next-preview,
body.exercise-active #nextPreview,
body.exercise-active #exerciseSummary,
body.exercise-active .playlist-card{
  display:none !important;
}

body.exercise-active .pass-bottom-controls{
  position:fixed !important;
  left:10px !important;
  right:10px !important;
  bottom:0 !important;
  z-index:500 !important;
  grid-template-columns:1fr !important;
  padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px)) !important;
}

body.exercise-active .pass-bottom-controls.has-prev{
  grid-template-columns:48px 1fr !important;
}

body.exercise-active #prevBtn{
  min-width:48px !important;
  width:48px !important;
  max-width:48px !important;
  height:54px !important;
  min-height:54px !important;
  opacity:.72 !important;
  border-radius:16px !important;
}

body.exercise-active #prevBtn:disabled{
  display:none !important;
}

body.exercise-active #prevBtn::before{
  content:'←' !important;
  font-size:22px !important;
}

body.exercise-active #nextBtn{
  min-height:56px !important;
  border-radius:18px !important;
  font-size:clamp(17px,4.8vw,22px) !important;
}

body.exercise-active .top-tools{
  top:calc(58px + env(safe-area-inset-top,0px)) !important;
  left:10px !important;
  right:10px !important;
  grid-template-columns:1fr 1fr !important;
}

/* Rest screen: keep next exercise in rest, but cleaner */
body.exercise-active .rest-stage{
  padding:22px !important;
}

body.exercise-active .rest-title{
  font-size:clamp(38px,10vw,58px) !important;
}

body.exercise-active .rest-display{
  font-size:clamp(78px,22vw,140px) !important;
}

body.exercise-active .rest-equipment{
  color:var(--mock-muted) !important;
}

/* ----------------------------------------------------------
   LIBRARY
   ---------------------------------------------------------- */
.library-detail{
  border-radius:24px !important;
}
.library-video{
  aspect-ratio:16 / 9 !important;
  border-radius:20px !important;
}

/* ----------------------------------------------------------
   MOBILE TWEAKS
   ---------------------------------------------------------- */

@media(max-width:760px){
  .wrap{
    width:100% !important;
    padding-left:10px !important;
    padding-right:10px !important;
  }

  .dashboard-shortcuts-panel{
    margin-left:0 !important;
    margin-right:0 !important;
  }

  .dashboard-shortcuts-grid{
    gap:12px !important;
  }

  .shortcut-btn{
    min-height:92px !important;
  }

  #progressDashboard .dash-grid{
    gap:8px !important;
  }

  #progressDashboard .dash-day{
    min-height:104px !important;
    padding:12px !important;
  }

  .daily-primary{
    padding:18px !important;
  }

  .dash-title{
    font-size:clamp(42px,12vw,66px) !important;
  }

  #profileScreen .stage-choice{
    min-height:220px !important;
  }
}

@media(max-width:390px){
  .shortcut-btn{
    min-height:82px !important;
    font-size:18px !important;
  }

  .dashboard-shortcuts-grid{
    gap:8px !important;
  }

  body.exercise-active .exercise-name{
    font-size:clamp(30px,8.5vw,46px) !important;
  }
}



/* ==========================================================
   v93 VISUAL ASSET SYNC
   Asset-backed mockup direction.
   ========================================================== */

:root{
  --asset-dashboard:url("../img/v93/hero/hero-dashboard.webp");
  --asset-profile:url("../img/v93/hero/hero-profile.webp");
  --asset-library:url("../img/v93/hero/hero-library.webp");
  --asset-tests:url("../img/v93/hero/hero-tests.webp");
  --asset-stage-ground:url("../img/v93/stage/stage-ground.webp");
  --asset-stage-development:url("../img/v93/stage/stage-development.webp");
  --asset-stage-advanced:url("../img/v93/stage/stage-advanced.webp");
  --asset-rest-goalie:url("../img/v95/rest/rest-goalie-pause.png");
  --asset-rest-downhill:url("../img/v95/rest/rest-downhill-pause.png");
  --asset-rest-hockey:url("../img/v95/rest/rest-hockey-pause.png");
}

/* Page hero assets */
#startScreen .home-hero,
#startScreen .daily-primary{
  background:
    linear-gradient(90deg,rgba(5,9,18,.94) 0%,rgba(8,15,29,.84) 48%,rgba(7,14,28,.58) 100%),
    var(--asset-dashboard) center right / cover no-repeat !important;
}
#profileScreen .overview-head{
  background:
    linear-gradient(90deg,rgba(5,9,18,.94) 0%,rgba(8,15,29,.82) 50%,rgba(7,14,28,.58) 100%),
    var(--asset-profile) center right / cover no-repeat !important;
}
#qaScreen .overview-head,
#qaScreen .qa-hero{
  background:
    linear-gradient(90deg,rgba(5,9,18,.94) 0%,rgba(8,15,29,.80) 52%,rgba(7,14,28,.55) 100%),
    var(--asset-library) center right / cover no-repeat !important;
}
#testScreen .overview-head,
#testScreen .hero{
  background:
    linear-gradient(90deg,rgba(5,9,18,.94) 0%,rgba(8,15,29,.80) 52%,rgba(7,14,28,.55) 100%),
    var(--asset-tests) center right / cover no-repeat !important;
}

/* Dashboard shortcut icons */
.shortcut-btn{
  position:relative !important;
  overflow:hidden !important;
}
.shortcut-btn::before{
  content:"";
  display:inline-block;
  width:26px;
  height:26px;
  margin-right:10px;
  vertical-align:-5px;
  background:var(--icon-url) center / contain no-repeat;
  filter:drop-shadow(0 0 10px rgba(136,232,255,.25));
  opacity:.95;
}
.shortcut-btn:nth-child(1){--icon-url:url("../img/v93/icons/dashboard.svg");}
.shortcut-btn:nth-child(2){--icon-url:url("../img/v93/icons/profile.svg");}
.shortcut-btn:nth-child(3){--icon-url:url("../img/v93/icons/library.svg");}
.shortcut-btn:nth-child(4){--icon-url:url("../img/v93/icons/tests.svg");}

/* Stage cards */
#profileScreen .stage-choice{
  position:relative !important;
  overflow:hidden !important;
  background:
    linear-gradient(90deg,rgba(5,9,18,.90) 0%,rgba(7,14,28,.74) 48%,rgba(7,14,28,.38) 100%),
    var(--stage-asset) center right / cover no-repeat !important;
  box-shadow:0 20px 46px rgba(0,0,0,.32), inset 0 0 0 1px rgba(136,232,255,.08) !important;
}
#profileScreen .stage-choice:nth-of-type(1){--stage-asset:var(--asset-stage-ground);}
#profileScreen .stage-choice:nth-of-type(2){--stage-asset:var(--asset-stage-development);}
#profileScreen .stage-choice:nth-of-type(3){--stage-asset:var(--asset-stage-advanced);}
#profileScreen .stage-choice::after{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 78% 16%,rgba(111,205,255,.16),transparent 36%);
  pointer-events:none;
}
#profileScreen .stage-choice > *{
  position:relative;
  z-index:1;
}

/* Week/pass cards */
.week-day-card,
.selected-day-focus{
  background:
    linear-gradient(90deg,rgba(5,9,18,.92) 0%,rgba(8,15,29,.82) 52%,rgba(7,14,28,.54) 100%),
    var(--asset-stage-development) center right / cover no-repeat !important;
}
.week-day-card:nth-child(3n+1){
  background:
    linear-gradient(90deg,rgba(5,9,18,.92) 0%,rgba(8,15,29,.82) 52%,rgba(7,14,28,.54) 100%),
    var(--asset-stage-ground) center right / cover no-repeat !important;
}
.week-day-card:nth-child(3n+2){
  background:
    linear-gradient(90deg,rgba(5,9,18,.92) 0%,rgba(8,15,29,.82) 52%,rgba(7,14,28,.54) 100%),
    var(--asset-stage-development) center right / cover no-repeat !important;
}
.week-day-card:nth-child(3n+3){
  background:
    linear-gradient(90deg,rgba(5,9,18,.92) 0%,rgba(8,15,29,.82) 52%,rgba(7,14,28,.54) 100%),
    var(--asset-stage-advanced) center right / cover no-repeat !important;
}

/* Rest mode image backgrounds */
body.exercise-active .rest-stage{
  position:relative !important;
  overflow:hidden !important;
  border-radius:0 0 24px 24px !important;
  background:
    linear-gradient(90deg,rgba(5,9,18,.96) 0%,rgba(5,9,18,.82) 44%,rgba(5,9,18,.46) 100%),
    var(--rest-asset, var(--asset-rest-goalie)) center right / cover no-repeat !important;
}
body.exercise-active .rest-stage[data-rest-theme="downhill"]{--rest-asset:var(--asset-rest-downhill);}
body.exercise-active .rest-stage[data-rest-theme="hockey"]{--rest-asset:var(--asset-rest-hockey);}
body.exercise-active .rest-stage[data-rest-theme="goalie"]{--rest-asset:var(--asset-rest-goalie);}
body.exercise-active .rest-stage::after{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 78% 26%,rgba(92,165,255,.18),transparent 42%);
  pointer-events:none;
}
body.exercise-active .rest-stage > *{
  position:relative;
  z-index:1;
}

/* Iconized detail language */
.coach-cues small::before,
.timer-card .timer-label::before,
.progress-stat .kicker::before,
.selected-day-equipment::before{
  content:"";
  display:inline-block;
  width:20px;
  height:20px;
  margin-right:8px;
  vertical-align:-4px;
  background:var(--info-icon, url("../img/v93/icons/coach.svg")) center / contain no-repeat;
  opacity:.95;
  filter:drop-shadow(0 0 8px rgba(136,232,255,.25));
}
.coach-cues small{--info-icon:url("../img/v93/icons/coach.svg");}
.timer-card .timer-label{--info-icon:url("../img/v93/icons/timer.svg");}
.progress-stat .kicker{--info-icon:url("../img/v93/icons/progress.svg");}
.selected-day-equipment{--info-icon:url("../img/v93/icons/equipment.svg");}

/* Stronger mockup button accents */
.next-pass-btn,
body.exercise-active #nextBtn,
.primary,
button.primary{
  background:linear-gradient(180deg,#80c2ff 0%,#48a0ff 100%) !important;
  color:#030713 !important;
  box-shadow:0 16px 42px rgba(72,160,255,.28), inset 0 1px 0 rgba(255,255,255,.28) !important;
}
.shortcut-btn.active,
.app-tab.active,
.seg-btn.active,
.profile-btn.active{
  box-shadow:0 14px 34px rgba(39,172,255,.22), inset 0 -3px 0 rgba(136,232,255,.62) !important;
}

/* Mobile crop safety */
@media(max-width:760px){
  #startScreen .home-hero,
  #startScreen .daily-primary,
  #profileScreen .overview-head,
  #qaScreen .overview-head,
  #testScreen .overview-head{
    background-position:center right !important;
  }
  #profileScreen .stage-choice{
    min-height:210px !important;
    background-position:center right !important;
  }
  .week-day-card,
  .selected-day-focus{
    background-position:center right !important;
  }
}
@media(max-width:390px){
  #profileScreen .stage-choice{
    min-height:190px !important;
  }
  .shortcut-btn::before{
    width:22px;
    height:22px;
    margin-right:7px;
  }
}

/* Asset QA preload marker */
body::after{
  content:"";
  display:none;
  background-image:
    var(--asset-dashboard),
    var(--asset-profile),
    var(--asset-library),
    var(--asset-tests),
    var(--asset-stage-ground),
    var(--asset-stage-development),
    var(--asset-stage-advanced),
    var(--asset-rest-goalie),
    var(--asset-rest-downhill),
    var(--asset-rest-hockey);
}


/* ==========================================================
   v93.1 – Mobile nav + film cleanup
   User decision:
   - On mobile the 2x2 dashboard shortcuts duplicate the menu.
   - Keep dashboard inside menu and hide shortcut panel on mobile.
   - Lock a compact menu bar to the top.
   - Remove the extra manual "Starta" button overlay for videos.
   ========================================================== */

.ios-play-btn{
  display:none !important;
}

/* Mobile: menu is the navigation; dashboard shortcut grid is redundant */
@media(max-width:760px){
  body:not(.exercise-active) .dashboard-shortcuts-panel{
    display:none !important;
  }

  body:not(.exercise-active) .app-topbar{
    position:fixed !important;
    top:calc(env(safe-area-inset-top,0px) + 8px) !important;
    left:10px !important;
    right:10px !important;
    z-index:900 !important;
    margin:0 !important;
    padding:10px 12px !important;
    border-radius:20px !important;
    min-height:62px !important;
    background:linear-gradient(180deg,rgba(5,10,20,.98),rgba(6,12,23,.95)) !important;
    backdrop-filter:blur(18px) saturate(125%) !important;
    box-shadow:0 14px 38px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.035) !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(78px + env(safe-area-inset-top,0px)) !important;
  }

  body:not(.exercise-active) .app-location span{
    font-size:11px !important;
    letter-spacing:.13em !important;
  }

  body:not(.exercise-active) .app-location strong{
    font-size:22px !important;
    line-height:1.05 !important;
  }

  body:not(.exercise-active) .app-nav-toggle{
    min-width:112px !important;
    min-height:46px !important;
    border-radius:17px !important;
    padding:8px 12px !important;
    font-size:18px !important;
  }

  body:not(.exercise-active) .app-tabs{
    position:fixed !important;
    right:10px !important;
    left:auto !important;
    top:calc(env(safe-area-inset-top,0px) + 78px) !important;
    width:min(318px, calc(100vw - 20px)) !important;
    max-height:calc(100svh - 104px) !important;
    overflow:auto !important;
    z-index:920 !important;
  }

  /* Since shortcuts are gone on mobile, the first dashboard content can breathe but not become oversized */
  #startScreen .home-hero{
    margin-top:0 !important;
  }

  #startScreen .daily-primary{
    border-radius:26px !important;
  }
}

/* Desktop/tablet can still use the visual 2x2/4x1 shortcut board */
@media(min-width:761px){
  .dashboard-shortcuts-panel{
    display:block !important;
  }
}

/* Prevent any video overlay start button variants from reappearing */
.video-wrap .ios-play-btn,
.video-card .ios-play-btn,
.library-video .ios-play-btn,
#iosPlayBtn{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}


/* ==========================================================
   v94 PIXEL SYNC
   No feature rebuild. Polish toward the mockup:
   - thinner integrated mobile topbar
   - tighter dashboard hierarchy
   - cleaner week rhythm
   - pass mode feels more like a video player
   - fewer heavy nested panels
   ========================================================== */

:root{
  --v94-border:rgba(126,181,255,.16);
  --v94-border-strong:rgba(126,224,255,.38);
  --v94-soft-shadow:0 14px 36px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.032);
}

/* Shared polish */
.panel,.hero,.daily-primary,.daily-secondary,.profile-config-grid > .panel,
.selected-day-focus,.library-detail,.qa-row,.test-card,.info-card,.video-card,
.coach-cues,.exercise-reps,.timer-card,.week-day-card,.stage-choice{
  border-color:var(--v94-border) !important;
  box-shadow:var(--v94-soft-shadow) !important;
}

@media(max-width:760px){
  .panel-pad{padding:14px !important;}
}

/* Mobile topbar: slimmer, more integrated */
@media(max-width:760px){
  body:not(.exercise-active)::before{height:92px !important;}

  body:not(.exercise-active) .app-topbar{
    top:calc(env(safe-area-inset-top,0px) + 6px) !important;
    left:12px !important;
    right:12px !important;
    min-height:54px !important;
    padding:8px 10px !important;
    border-radius:18px !important;
    background:linear-gradient(180deg,rgba(5,10,20,.92),rgba(5,10,20,.82)) !important;
    border-color:rgba(126,181,255,.17) !important;
    box-shadow:0 12px 30px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.03) !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(68px + env(safe-area-inset-top,0px)) !important;
  }

  body:not(.exercise-active) .app-location span{
    font-size:10px !important;
    letter-spacing:.14em !important;
  }

  body:not(.exercise-active) .app-location strong{
    font-size:20px !important;
  }

  body:not(.exercise-active) .app-nav-toggle{
    min-width:98px !important;
    min-height:42px !important;
    padding:7px 10px !important;
    border-radius:15px !important;
    font-size:17px !important;
  }

  body:not(.exercise-active) .app-tabs{
    top:calc(env(safe-area-inset-top,0px) + 68px) !important;
    right:12px !important;
    width:min(300px, calc(100vw - 24px)) !important;
    padding:10px !important;
    gap:8px !important;
    border-radius:20px !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:52px !important;
    border-radius:16px !important;
    font-size:18px !important;
  }
}

/* Dashboard: compact premium card */
@media(max-width:760px){
  #startScreen .home-hero{
    border-radius:24px !important;
    overflow:hidden !important;
  }

  #startScreen .daily-primary{
    padding:16px !important;
    border-radius:24px !important;
    min-height:0 !important;
  }

  #startScreen .daily-primary .dash-kicker,
  #startScreen .daily-primary .kicker{
    font-size:11px !important;
    letter-spacing:.16em !important;
  }

  .dash-title{
    font-size:clamp(38px,11vw,58px) !important;
    line-height:.90 !important;
    margin:8px 0 8px !important;
  }

  .dash-sub,
  .dash-context{
    font-size:clamp(15px,4vw,19px) !important;
    line-height:1.26 !important;
  }

  .daily-time-pill{
    margin-top:10px !important;
    min-height:34px !important;
    padding:6px 11px !important;
    font-size:11px !important;
  }

  .dash-focus-card{
    margin-top:12px !important;
    padding:12px !important;
    border-radius:17px !important;
    background:rgba(8,15,29,.62) !important;
  }

  .dash-focus-text{
    font-size:clamp(17px,4.8vw,22px) !important;
    line-height:1.25 !important;
  }

  .dash-focus-chips{
    gap:7px !important;
    margin-top:10px !important;
  }

  .dash-focus-chips span{
    min-height:30px !important;
    padding:6px 10px !important;
    font-size:13px !important;
  }

  .next-pass-btn{
    min-height:62px !important;
    border-radius:20px !important;
    font-size:clamp(20px,5.8vw,28px) !important;
  }

  .overview-pass-btn{
    min-height:52px !important;
    border-radius:17px !important;
    font-size:18px !important;
  }
}

/* Week rhythm: clean, no cramped Ej klar collision */
#progressDashboard .dash-week-summary{
  align-items:end !important;
  margin-top:12px !important;
}

#progressDashboard .dash-week-title{
  font-size:clamp(24px,6.6vw,34px) !important;
  line-height:1 !important;
}

#progressDashboard .dash-week-count{
  min-height:44px !important;
  padding:8px 12px !important;
  border-radius:16px !important;
  font-size:clamp(17px,5vw,23px) !important;
}

#progressDashboard .dash-grid{gap:9px !important;}

#progressDashboard .dash-day{
  min-height:94px !important;
  padding:11px !important;
  border-radius:18px !important;
  display:grid !important;
  grid-template-rows:auto 1fr !important;
  align-content:space-between !important;
  position:relative !important;
}

#progressDashboard .dash-day-top{
  display:block !important;
  position:relative !important;
}

#progressDashboard .dash-day-top b{
  display:block !important;
  font-size:clamp(28px,8.4vw,40px) !important;
  line-height:.92 !important;
  letter-spacing:-.055em !important;
}

#progressDashboard .dash-day-state{display:none !important;}

#progressDashboard .dash-day-icon{
  margin-top:6px !important;
  font-size:30px !important;
  line-height:1 !important;
  opacity:.95 !important;
}

#progressDashboard .dash-day::after{
  content:"Ej klar";
  position:absolute;
  right:10px;
  bottom:10px;
  color:rgba(214,230,246,.72);
  font-size:11px;
  font-weight:900;
  letter-spacing:.03em;
}

#progressDashboard .dash-day.done::after{
  content:"Klar";
  color:var(--mock-cyan, #88e8ff);
}

/* Phase progress: support cards, not hero cards */
.quick-stats-grid{gap:8px !important;}

.progress-stat,
.stat-card.progress-stat{
  padding:14px !important;
  border-radius:20px !important;
}

.progress-stat .kicker{font-size:11px !important;}

.progress-stat .big{
  font-size:clamp(26px,7.4vw,42px) !important;
}

.progress-stat .sub{
  font-size:14px !important;
  line-height:1.25 !important;
}

/* Profile/program: slight tightening */
@media(max-width:760px){
  #profileScreen .overview-head{
    padding:14px !important;
    border-radius:22px !important;
  }

  #profileScreen .title{
    font-size:clamp(34px,9vw,54px) !important;
    margin:4px 0 8px !important;
  }

  #profileScreen .muted{
    font-size:15px !important;
    line-height:1.24 !important;
  }

  #profileScreen .stage-choice{
    min-height:198px !important;
    border-radius:24px !important;
  }

  #profileScreen .stage-choice b{
    font-size:clamp(34px,9.5vw,54px) !important;
  }
}

/* Active pass: player mode polish */
body.exercise-active .sticky-nav{
  padding:calc(6px + env(safe-area-inset-top,0px)) 10px 7px !important;
  background:linear-gradient(180deg,rgba(4,8,16,.98),rgba(4,8,16,.92)) !important;
  box-shadow:0 10px 26px rgba(0,0,0,.24) !important;
}

body.exercise-active .nav-row{
  grid-template-columns:44px 1fr !important;
  gap:9px !important;
}

body.exercise-active #menuToggleBtn,
body.exercise-active .menu-toggle{
  width:44px !important;
  min-width:44px !important;
  height:42px !important;
  min-height:42px !important;
  border-radius:14px !important;
}

body.exercise-active #exerciseMeta{
  font-size:clamp(11px,3vw,14px) !important;
  letter-spacing:.08em !important;
}

body.exercise-active .progress-shell{height:6px !important;}

body.exercise-active .video-card{
  border-radius:0 0 18px 18px !important;
  box-shadow:none !important;
}

body.exercise-active .video-wrap{
  aspect-ratio:16 / 9 !important;
  max-height:52svh !important;
}

body.exercise-active .info-card{
  margin:7px 9px 0 !important;
  padding:12px !important;
  border-radius:20px !important;
  gap:9px !important;
}

body.exercise-active #exerciseSection{
  min-height:28px !important;
  padding:5px 10px !important;
  font-size:10.5px !important;
}

body.exercise-active .exercise-name{
  font-size:clamp(31px,8.8vw,52px) !important;
  line-height:.92 !important;
  letter-spacing:-.064em !important;
}

body.exercise-active .exercise-reps{
  min-height:68px !important;
  border-radius:17px !important;
  padding:8px !important;
}

body.exercise-active .rx-line{
  font-size:clamp(38px,11vw,62px) !important;
}

body.exercise-active .coach-cues{
  padding:11px 13px !important;
  border-radius:17px !important;
}

body.exercise-active .coach-cues small{
  font-size:10.5px !important;
  margin-bottom:5px !important;
}

body.exercise-active .coach-cues ul{
  font-size:15px !important;
  line-height:1.32 !important;
}

body.exercise-active .pass-bottom-controls{
  padding:7px 8px calc(7px + env(safe-area-inset-bottom,0px)) !important;
}

body.exercise-active .pass-bottom-controls.has-prev{
  grid-template-columns:44px 1fr !important;
}

body.exercise-active #prevBtn{
  width:44px !important;
  min-width:44px !important;
  max-width:44px !important;
  height:52px !important;
  min-height:52px !important;
  border-radius:15px !important;
}

body.exercise-active #nextBtn{
  min-height:54px !important;
  border-radius:17px !important;
  font-size:clamp(16px,4.6vw,20px) !important;
}

body.exercise-active .wrap{
  padding-bottom:calc(78px + env(safe-area-inset-bottom,0px)) !important;
}

/* Rest view: dramatic but less wasteful */
body.exercise-active .rest-stage{
  min-height:0 !important;
  padding:18px 20px !important;
}

body.exercise-active .rest-kicker,
body.exercise-active .rest-stage > div:first-child{
  font-size:14px !important;
  opacity:.62 !important;
}

body.exercise-active .rest-title{
  font-size:clamp(34px,9vw,52px) !important;
  line-height:.9 !important;
}

body.exercise-active .rest-display{
  font-size:clamp(78px,21vw,128px) !important;
  line-height:.88 !important;
}

body.exercise-active .rest-next{
  font-size:clamp(16px,4.4vw,21px) !important;
  line-height:1.25 !important;
}

@media(max-width:390px){
  #progressDashboard .dash-day{
    min-height:88px !important;
    padding:10px !important;
  }

  #progressDashboard .dash-day-top b{
    font-size:30px !important;
  }

  body.exercise-active .coach-cues ul{
    font-size:11px !important;
  }
}


/* ==========================================================
   v94.1 – Fixed nav + pass controls + rest image fit
   ========================================================== */

/* Mobile menu must be locked to viewport top */
@media(max-width:760px){
  body:not(.exercise-active) .app-topbar{
    position:fixed !important;
    top:calc(env(safe-area-inset-top,0px) + 6px) !important;
    left:12px !important;
    right:12px !important;
    width:auto !important;
    max-width:none !important;
    z-index:5000 !important;
    transform:translateZ(0) !important;
    will-change:transform !important;
    -webkit-backdrop-filter:blur(18px) saturate(125%) !important;
    backdrop-filter:blur(18px) saturate(125%) !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(76px + env(safe-area-inset-top,0px)) !important;
  }

  body:not(.exercise-active) .app-tabs{
    position:fixed !important;
    top:calc(68px + env(safe-area-inset-top,0px)) !important;
    z-index:5010 !important;
  }
}

/* Pass/vila controls: previous + next on same row whenever previous exists */
body.exercise-active .pass-bottom-controls{
  position:fixed !important;
  left:10px !important;
  right:10px !important;
  bottom:0 !important;
  z-index:5000 !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  align-items:stretch !important;
  gap:8px !important;
  padding:7px 8px calc(7px + env(safe-area-inset-bottom,0px)) !important;
  background:linear-gradient(180deg,rgba(5,10,19,0),rgba(5,10,19,.94) 28%,rgba(5,10,19,.99)) !important;
}

body.exercise-active .pass-bottom-controls.has-prev{
  grid-template-columns:52px minmax(0,1fr) !important;
}

body.exercise-active #prevBtn{
  position:static !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-width:52px !important;
  width:52px !important;
  max-width:52px !important;
  height:auto !important;
  min-height:54px !important;
  margin:0 !important;
  padding:0 !important;
  border-radius:17px !important;
  font-size:0 !important;
  opacity:.82 !important;
}

body.exercise-active #prevBtn:disabled{
  display:none !important;
}

body.exercise-active #prevBtn::before{
  content:'←' !important;
  font-size:23px !important;
  line-height:1 !important;
}

body.exercise-active #nextBtn{
  width:100% !important;
  min-width:0 !important;
  min-height:54px !important;
  margin:0 !important;
}

body.exercise-active .wrap{
  padding-bottom:calc(82px + env(safe-area-inset-bottom,0px)) !important;
}

/* Rest hero image should fill the full rest/movie frame */
body.exercise-active .rest-stage{
  width:100% !important;
  min-height:clamp(260px, 42svh, 440px) !important;
  border-radius:0 0 24px 24px !important;
  background-size:cover !important;
  background-position:center center !important;
  background-repeat:no-repeat !important;
  display:grid !important;
  align-content:center !important;
  overflow:hidden !important;
}

body.exercise-active .rest-stage[data-rest-theme="downhill"],
body.exercise-active .rest-stage[data-rest-theme="hockey"],
body.exercise-active .rest-stage[data-rest-theme="goalie"]{
  background-size:cover !important;
  background-position:center center !important;
  background-repeat:no-repeat !important;
}

body.exercise-active .rest-stage > *{
  position:relative !important;
  z-index:1 !important;
}

@media(max-width:390px){
  body.exercise-active .pass-bottom-controls.has-prev{
    grid-template-columns:48px minmax(0,1fr) !important;
  }

  body.exercise-active #prevBtn{
    min-width:48px !important;
    width:48px !important;
    max-width:48px !important;
  }

  body.exercise-active .rest-stage{
    min-height:clamp(240px, 40svh, 390px) !important;
  }
}


/* ==========================================================
   v95 FINAL MOCKUP PASS
   Final polish layer:
   1. Topbar becomes thinner and more integrated.
   2. Dashboard week rhythm becomes icon/status based.
   3. Active pass becomes closer to a video-player layout.
   4. Shared radii, padding and button heights are normalized.
   ========================================================== */

:root{
  --v95-radius-lg:24px;
  --v95-radius-md:18px;
  --v95-radius-sm:14px;
  --v95-line:rgba(129,184,255,.15);
  --v95-line-strong:rgba(135,232,255,.34);
  --v95-glass:rgba(7,14,27,.78);
}

/* ----------------------------------------------------------
   1. Unified spacing / forms
   ---------------------------------------------------------- */

.panel,.hero,.daily-primary,.daily-secondary,.profile-config-grid > .panel,
.selected-day-focus,.library-detail,.qa-row,.test-card,.info-card,.video-card,
.coach-cues,.exercise-reps,.timer-card,.week-day-card,.stage-choice{
  border-radius:var(--v95-radius-lg) !important;
  border-color:var(--v95-line) !important;
}

button,.main-btn,.ghost-btn,.seg-btn,.profile-btn,.day-start,.day-overview,
.next-pass-btn,.overview-pass-btn,.app-tab,.app-nav-toggle{
  border-radius:var(--v95-radius-md) !important;
}

@media(max-width:760px){
  .panel-pad{padding:13px !important;}
}

/* ----------------------------------------------------------
   2. Topbar final integration
   ---------------------------------------------------------- */

@media(max-width:760px){
  body:not(.exercise-active)::before{
    height:82px !important;
    background:linear-gradient(180deg,rgba(3,7,15,.88),rgba(3,7,15,.52) 66%,rgba(3,7,15,0)) !important;
  }

  body:not(.exercise-active) .app-topbar{
    position:fixed !important;
    top:calc(env(safe-area-inset-top,0px) + 5px) !important;
    left:12px !important;
    right:12px !important;
    z-index:6000 !important;
    min-height:50px !important;
    padding:7px 9px !important;
    border-radius:17px !important;
    background:linear-gradient(180deg,rgba(5,10,20,.86),rgba(5,10,20,.72)) !important;
    border-color:rgba(129,184,255,.14) !important;
    box-shadow:0 10px 26px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.025) !important;
    -webkit-backdrop-filter:blur(18px) saturate(125%) !important;
    backdrop-filter:blur(18px) saturate(125%) !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(66px + env(safe-area-inset-top,0px)) !important;
  }

  body:not(.exercise-active) .app-location span{
    font-size:9.5px !important;
    letter-spacing:.14em !important;
    opacity:.88 !important;
  }

  body:not(.exercise-active) .app-location strong{
    font-size:18px !important;
    line-height:1 !important;
    letter-spacing:-.02em !important;
  }

  body:not(.exercise-active) .app-nav-toggle{
    min-width:88px !important;
    min-height:38px !important;
    padding:6px 10px !important;
    border-radius:14px !important;
    font-size:16px !important;
    background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.025)) !important;
  }

  body:not(.exercise-active) .app-tabs{
    position:fixed !important;
    top:calc(62px + env(safe-area-inset-top,0px)) !important;
    right:12px !important;
    width:min(292px, calc(100vw - 24px)) !important;
    z-index:6010 !important;
    padding:9px !important;
    gap:7px !important;
    border-radius:18px !important;
    background:rgba(5,10,20,.94) !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:48px !important;
    border-radius:14px !important;
    font-size:17px !important;
  }
}

/* ----------------------------------------------------------
   3. Dashboard final density
   ---------------------------------------------------------- */

@media(max-width:760px){
  #startScreen .daily-primary{
    padding:15px !important;
    border-radius:22px !important;
  }

  .dash-title{
    font-size:clamp(36px,10.5vw,54px) !important;
    line-height:.90 !important;
    margin:6px 0 7px !important;
  }

  .dash-sub,.dash-context{
    font-size:15px !important;
    line-height:1.23 !important;
  }

  .dash-focus-card{
    margin-top:10px !important;
    padding:11px !important;
    border-radius:16px !important;
  }

  .dash-focus-text{
    font-size:clamp(16px,4.6vw,20px) !important;
  }

  .next-pass-btn{
    min-height:58px !important;
    border-radius:18px !important;
    font-size:clamp(19px,5.4vw,25px) !important;
  }

  .overview-pass-btn{
    min-height:48px !important;
    border-radius:16px !important;
    font-size:17px !important;
  }
}

/* ----------------------------------------------------------
   4. Week rhythm final: icon cards, less text
   ---------------------------------------------------------- */

#progressDashboard .daily-secondary{
  border-radius:22px !important;
  padding:13px !important;
}

#progressDashboard .dash-week-summary{
  margin-top:10px !important;
  margin-bottom:8px !important;
  align-items:center !important;
}

#progressDashboard .dash-week-title{
  font-size:clamp(22px,6vw,30px) !important;
  line-height:1 !important;
}

#progressDashboard .dash-week-count{
  min-height:38px !important;
  padding:7px 10px !important;
  border-radius:14px !important;
  font-size:clamp(15px,4.5vw,20px) !important;
}

#progressDashboard .dash-grid{
  gap:8px !important;
}

#progressDashboard .dash-day{
  min-height:82px !important;
  padding:10px !important;
  border-radius:16px !important;
  display:grid !important;
  align-content:center !important;
  justify-items:start !important;
  position:relative !important;
  background:linear-gradient(180deg,rgba(14,25,43,.84),rgba(8,15,28,.92)) !important;
}

#progressDashboard .dash-day-top{
  display:block !important;
}

#progressDashboard .dash-day-top b{
  font-size:clamp(25px,7.4vw,34px) !important;
  line-height:.9 !important;
  letter-spacing:-.055em !important;
}

#progressDashboard .dash-day-state,
#progressDashboard .dash-day::after{
  display:none !important;
  content:none !important;
}

#progressDashboard .dash-day-icon{
  position:absolute !important;
  right:10px !important;
  bottom:9px !important;
  margin:0 !important;
  font-size:26px !important;
  opacity:.92 !important;
}

#progressDashboard .dash-day.todo .dash-day-icon,
#progressDashboard .dash-day:not(.done) .dash-day-icon{
  opacity:.62 !important;
  filter:grayscale(.15) brightness(.85);
}

#progressDashboard .dash-day.done{
  border-color:rgba(135,232,255,.42) !important;
  background:linear-gradient(180deg,rgba(23,62,102,.72),rgba(8,24,44,.88)) !important;
}

#progressDashboard .dash-day.done .dash-day-icon{
  opacity:1 !important;
  filter:drop-shadow(0 0 10px rgba(135,232,255,.28));
}

/* ----------------------------------------------------------
   5. Progress cards / secondary panels
   ---------------------------------------------------------- */

.progress-stat,
.stat-card.progress-stat{
  padding:12px !important;
  border-radius:18px !important;
}

.progress-stat .big{
  font-size:clamp(24px,7vw,36px) !important;
}

.progress-stat .sub{
  font-size:13.5px !important;
}

.progress-stat .mini-progress{
  height:8px !important;
}

/* ----------------------------------------------------------
   6. Active pass: final player-mode polish
   ---------------------------------------------------------- */

body.exercise-active .sticky-nav{
  padding:calc(5px + env(safe-area-inset-top,0px)) 9px 6px !important;
  background:linear-gradient(180deg,rgba(4,8,16,.98),rgba(4,8,16,.88)) !important;
}

body.exercise-active .nav-row{
  grid-template-columns:42px 1fr !important;
  gap:8px !important;
}

body.exercise-active #menuToggleBtn,
body.exercise-active .menu-toggle{
  width:42px !important;
  min-width:42px !important;
  height:40px !important;
  min-height:40px !important;
  border-radius:13px !important;
}

body.exercise-active #exerciseMeta{
  font-size:clamp(10.5px,2.9vw,13.5px) !important;
  letter-spacing:.08em !important;
}

body.exercise-active .progress-shell{
  height:5px !important;
}

body.exercise-active .stage-layout{
  gap:6px !important;
}

body.exercise-active .video-card{
  border-radius:0 0 16px 16px !important;
}

body.exercise-active .video-wrap{
  aspect-ratio:16 / 9 !important;
  max-height:54svh !important;
}

body.exercise-active .info-card{
  margin:6px 8px 0 !important;
  padding:11px !important;
  border-radius:18px !important;
  gap:8px !important;
  background:linear-gradient(180deg,rgba(8,15,29,.88),rgba(5,10,20,.94)) !important;
}

body.exercise-active #exerciseSection{
  min-height:26px !important;
  padding:4px 9px !important;
  font-size:10px !important;
}

body.exercise-active .exercise-name{
  font-size:clamp(30px,8.4vw,48px) !important;
  line-height:.91 !important;
}

body.exercise-active .exercise-reps{
  min-height:62px !important;
  padding:7px !important;
  border-radius:15px !important;
}

body.exercise-active .rx-line{
  font-size:clamp(34px,10.2vw,56px) !important;
}

body.exercise-active .coach-cues{
  padding:10px 12px !important;
  border-radius:15px !important;
}

body.exercise-active .coach-cues small{
  font-size:10px !important;
  margin-bottom:4px !important;
}

body.exercise-active .coach-cues ul{
  font-size:14.5px !important;
  line-height:1.28 !important;
}

/* Controls always same row when previous exists */
body.exercise-active .pass-bottom-controls{
  left:8px !important;
  right:8px !important;
  padding:6px 7px calc(6px + env(safe-area-inset-bottom,0px)) !important;
  gap:7px !important;
}

body.exercise-active .pass-bottom-controls.has-prev{
  grid-template-columns:48px minmax(0,1fr) !important;
}

body.exercise-active #prevBtn{
  width:48px !important;
  min-width:48px !important;
  max-width:48px !important;
  min-height:52px !important;
  border-radius:15px !important;
}

body.exercise-active #nextBtn{
  min-height:52px !important;
  border-radius:16px !important;
  font-size:clamp(16px,4.5vw,20px) !important;
}

body.exercise-active .wrap{
  padding-bottom:calc(76px + env(safe-area-inset-bottom,0px)) !important;
}

/* ----------------------------------------------------------
   7. Rest image: full-cover movie frame
   ---------------------------------------------------------- */

body.exercise-active .rest-stage{
  min-height:clamp(270px, 44svh, 460px) !important;
  width:100% !important;
  border-radius:0 0 18px 18px !important;
  background-size:cover !important;
  background-position:center center !important;
  background-repeat:no-repeat !important;
}

body.exercise-active .rest-title{
  font-size:clamp(32px,8.8vw,48px) !important;
}

body.exercise-active .rest-display{
  font-size:clamp(74px,20vw,118px) !important;
}

body.exercise-active .rest-next{
  font-size:clamp(15px,4.2vw,20px) !important;
}

/* ----------------------------------------------------------
   8. Library/test/profile consistency
   ---------------------------------------------------------- */

#qaScreen .library-detail,
#testScreen .test-card,
#profileScreen .selector-panel,
#profileScreen .profile-panel{
  border-radius:20px !important;
}

#qaScreen .library-video{
  border-radius:17px !important;
}

/* Very narrow safety */
@media(max-width:390px){
  body:not(.exercise-active) .wrap{
    padding-top:calc(64px + env(safe-area-inset-top,0px)) !important;
  }

  #progressDashboard .dash-day{
    min-height:76px !important;
    padding:9px !important;
  }

  #progressDashboard .dash-day-top b{
    font-size:26px !important;
  }

  body.exercise-active .video-wrap{
    max-height:50svh !important;
  }

  body.exercise-active .coach-cues ul{
    font-size:13.5px !important;
  }
}


/* ==========================================================
   v95.1 FINAL MICRO QA
   - Topbar is portaled and truly fixed on mobile.
   - Menu opens as compact 2x2 icon grid.
   - Recovery frame is locked to 16:9 like video.
   - Dashboard progress uses circular rings beside copy.
   ========================================================== */

/* Topbar portal keeps fixed positioning reliable in iOS Safari */
body.topbar-portal .app-topbar{
  width:min(1220px, calc(100vw - 24px)) !important;
  margin:0 auto !important;
}

@media(max-width:760px){
  body.topbar-portal:not(.exercise-active) .app-topbar,
  body:not(.exercise-active) .app-topbar{
    position:fixed !important;
    top:calc(env(safe-area-inset-top,0px) + 6px) !important;
    left:12px !important;
    right:12px !important;
    width:auto !important;
    max-width:none !important;
    z-index:9000 !important;
    min-height:50px !important;
    padding:7px 9px !important;
    border-radius:17px !important;
    transform:translate3d(0,0,0) !important;
    -webkit-transform:translate3d(0,0,0) !important;
    will-change:transform !important;
    background:linear-gradient(180deg,rgba(5,10,20,.94),rgba(5,10,20,.78)) !important;
    border-color:rgba(129,184,255,.16) !important;
    -webkit-backdrop-filter:blur(18px) saturate(125%) !important;
    backdrop-filter:blur(18px) saturate(125%) !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(68px + env(safe-area-inset-top,0px)) !important;
  }

  body:not(.exercise-active) .app-location strong{
    font-size:18px !important;
  }

  body:not(.exercise-active) .app-nav-toggle{
    min-width:88px !important;
    min-height:38px !important;
    font-size:16px !important;
    padding:6px 10px !important;
  }

  /* Compact 2x2 icon menu */
  body:not(.exercise-active) .app-tabs{
    position:fixed !important;
    top:calc(62px + env(safe-area-inset-top,0px)) !important;
    right:12px !important;
    width:min(310px, calc(100vw - 24px)) !important;
    z-index:9010 !important;
    display:none !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    padding:10px !important;
    border-radius:20px !important;
    background:rgba(5,10,20,.96) !important;
    border:1px solid rgba(129,184,255,.18) !important;
    box-shadow:0 18px 44px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.03) !important;
    -webkit-backdrop-filter:blur(18px) saturate(125%) !important;
    backdrop-filter:blur(18px) saturate(125%) !important;
  }

  body:not(.exercise-active) .app-topbar.nav-open .app-tabs{
    display:grid !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:74px !important;
    display:grid !important;
    grid-template-columns:auto 1fr !important;
    align-items:center !important;
    justify-items:start !important;
    gap:9px !important;
    padding:10px 11px !important;
    border-radius:17px !important;
    font-size:15px !important;
    line-height:1.05 !important;
    text-align:left !important;
    white-space:normal !important;
    background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.022)) !important;
  }

  body:not(.exercise-active) .app-tab::before{
    content:"";
    width:24px;
    height:24px;
    display:block;
    background:var(--menu-icon) center/contain no-repeat;
    filter:drop-shadow(0 0 8px rgba(136,232,255,.24));
  }

  body:not(.exercise-active) .app-tab[data-target="startScreen"]{--menu-icon:url("../img/v93/icons/dashboard.svg");}
  body:not(.exercise-active) .app-tab[data-target="profileScreen"]{--menu-icon:url("../img/v93/icons/profile.svg");}
  body:not(.exercise-active) .app-tab[data-target="qaScreen"]{--menu-icon:url("../img/v93/icons/library.svg");}
  body:not(.exercise-active) .app-tab[data-target="testScreen"]{--menu-icon:url("../img/v93/icons/tests.svg");}

  body:not(.exercise-active) .dashboard-shortcuts-panel{
    display:none !important;
  }
}

/* Dashboard circular progress cards */
.quick-stats-grid{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:8px !important;
}

.progress-stat,
.stat-card.progress-stat{
  display:grid !important;
  grid-template-columns:76px minmax(0,1fr) !important;
  align-items:center !important;
  gap:12px !important;
  min-height:0 !important;
  padding:12px !important;
  border-radius:20px !important;
}

.ring-progress{
  width:68px;
  height:68px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at 50% 50%, rgba(8,15,29,.94) 0 56%, transparent 57%),
    conic-gradient(var(--mock-cyan,#88e8ff) calc(var(--p,0)*1%), rgba(139,173,220,.18) 0);
  box-shadow:0 0 0 1px rgba(136,232,255,.16), 0 0 22px rgba(54,202,255,.12);
}

.ring-progress span{
  font-weight:1000;
  color:var(--mock-cyan,#88e8ff);
  font-size:15px;
  letter-spacing:-.03em;
}

.test-ring{
  background:
    radial-gradient(circle at 50% 50%, rgba(8,15,29,.94) 0 56%, transparent 57%),
    conic-gradient(rgba(136,232,255,.42) 0 100%);
}

.test-ring span{
  font-size:24px;
}

.progress-copy{
  min-width:0;
}

.progress-stat .kicker{
  font-size:10.5px !important;
  letter-spacing:.15em !important;
  margin-bottom:2px !important;
}

.progress-stat .big{
  font-size:clamp(26px,7vw,40px) !important;
  line-height:.95 !important;
  letter-spacing:-.055em !important;
}

.progress-stat .sub{
  font-size:13.5px !important;
  line-height:1.18 !important;
  margin-top:3px !important;
}

.progress-stat .mini-progress{
  display:none !important;
}

.progress-stat .cta{
  margin-top:5px !important;
  font-size:14px !important;
  color:var(--mock-cyan,#88e8ff) !important;
  font-weight:950 !important;
}

@media(min-width:760px){
  .quick-stats-grid{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
}

/* Recovery frame: same ratio/family as video, no jumping */
.video-wrap{
  position:relative !important;
}

.video-wrap.rest-video-wrap,
.video-wrap:has(.rest-stage){
  aspect-ratio:16 / 9 !important;
  height:auto !important;
  min-height:0 !important;
  max-height:54svh !important;
  overflow:hidden !important;
  border-radius:0 0 18px 18px !important;
  background:#030713 !important;
}

.video-wrap.rest-video-wrap .rest-stage,
.video-wrap:has(.rest-stage) .rest-stage{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
  border-radius:inherit !important;
  background-size:cover !important;
  background-position:center center !important;
  background-repeat:no-repeat !important;
  align-content:center !important;
  padding:clamp(14px,4vw,24px) !important;
}

.video-wrap.rest-video-wrap .rest-card,
.video-wrap:has(.rest-stage) .rest-card{
  max-width:64% !important;
}

.video-wrap.rest-video-wrap .rest-title,
.video-wrap:has(.rest-stage) .rest-title{
  font-size:clamp(30px,8.8vw,52px) !important;
}

.video-wrap.rest-video-wrap .rest-display,
.video-wrap:has(.rest-stage) .rest-display{
  font-size:clamp(64px,18vw,118px) !important;
  line-height:.82 !important;
}

.video-wrap.rest-video-wrap .rest-next,
.video-wrap:has(.rest-stage) .rest-next{
  font-size:clamp(14px,4vw,19px) !important;
}

.video-wrap.rest-video-wrap .rest-equipment,
.video-wrap:has(.rest-stage) .rest-equipment{
  font-size:clamp(12px,3.6vw,15px) !important;
  line-height:1.2 !important;
}

@media(max-width:390px){
  .progress-stat,
  .stat-card.progress-stat{
    grid-template-columns:64px minmax(0,1fr) !important;
    gap:8px !important;
  }
  .ring-progress{
    width:58px;
    height:58px;
  }
  .ring-progress span{
    font-size:13px;
  }
  body:not(.exercise-active) .app-tab{
    min-height:68px !important;
    font-size:11px !important;
  }
  .video-wrap.rest-video-wrap .rest-card,
  .video-wrap:has(.rest-stage) .rest-card{
    max-width:70% !important;
  }
}


/* ==========================================================
   v95.2 STRUCTURE CLEANUP
   - Remove card-in-card feeling on dashboard.
   - Hard fixed topbar fallback for iOS/Safari.
   - Preserve compact 2x2 icon menu.
   ========================================================== */

/* Fixed means fixed: fallback even if JS portal misses for a moment */
@media(max-width:760px){
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar,
  body:not(.exercise-active) .app-topbar{
    position:fixed !important;
    top:calc(env(safe-area-inset-top,0px) + 6px) !important;
    left:12px !important;
    right:12px !important;
    width:auto !important;
    max-width:none !important;
    z-index:9000 !important;
    margin:0 !important;
    transform:translate3d(0,0,0) !important;
    -webkit-transform:translate3d(0,0,0) !important;
    will-change:transform !important;
    contain:none !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(66px + env(safe-area-inset-top,0px)) !important;
  }

  body:not(.exercise-active) .app-tabs{
    position:fixed !important;
    top:calc(62px + env(safe-area-inset-top,0px)) !important;
    z-index:9010 !important;
  }
}

/* Dashboard: remove extra outer "cell" so content gets the full width */
@media(max-width:760px){
  #startScreen{
    gap:8px !important;
  }

  #startScreen .home-hero{
    padding:0 !important;
    margin:0 !important;
    border:none !important;
    background:transparent !important;
    box-shadow:none !important;
    border-radius:0 !important;
    overflow:visible !important;
  }

  #startScreen .daily-primary{
    margin:0 !important;
    padding:16px !important;
    border-radius:24px !important;
    border:1px solid rgba(126,181,255,.16) !important;
    box-shadow:0 16px 42px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.03) !important;
    overflow:hidden !important;
  }

  /* Focus is content, not a new heavy card */
  #startScreen .dash-focus-card,
  #startScreen .dash-focus-card.compact{
    margin-top:12px !important;
    padding:0 !important;
    border:none !important;
    background:transparent !important;
    box-shadow:none !important;
    border-radius:0 !important;
  }

  #startScreen .dash-focus-label{
    margin-bottom:5px !important;
  }

  #startScreen .dash-focus-text{
    max-width:100% !important;
    font-size:clamp(17px,4.8vw,22px) !important;
    line-height:1.22 !important;
  }

  #startScreen .dash-focus-chips span{
    min-height:28px !important;
    padding:5px 10px !important;
    border-radius:999px !important;
    background:rgba(10,32,54,.64) !important;
  }

  #startScreen .dash-action-row{
    margin-top:14px !important;
    gap:9px !important;
  }

  #startScreen .next-pass-btn{
    min-height:58px !important;
  }

  #startScreen .overview-pass-btn{
    min-height:48px !important;
  }

  /* Progress summary: one clean card, no inner-cell squeeze */
  #progressDashboard .daily-secondary{
    padding:14px !important;
    border-radius:24px !important;
    overflow:hidden !important;
  }

  #progressDashboard .dash-progress{
    padding:0 !important;
    margin:0 0 12px !important;
    border:none !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  #progressDashboard .dash-row{
    gap:8px !important;
    align-items:flex-start !important;
  }

  #progressDashboard .dash-row span:first-child{
    font-size:clamp(18px,5.1vw,25px) !important;
    line-height:1.08 !important;
  }

  #progressDashboard .dash-row span:last-child{
    font-size:clamp(20px,5.6vw,28px) !important;
    line-height:1 !important;
  }

  #progressDashboard .dash-bar{
    margin-top:9px !important;
    height:8px !important;
  }

  #progressDashboard .dash-week-summary{
    margin-top:12px !important;
  }

  #progressDashboard .dash-grid{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:7px !important;
    overflow:visible !important;
  }

  #progressDashboard .dash-day{
    min-width:0 !important;
    min-height:78px !important;
    padding:9px !important;
    border-radius:15px !important;
  }

  #progressDashboard .dash-day-top b{
    font-size:clamp(23px,6.9vw,31px) !important;
  }

  #progressDashboard .dash-day-icon{
    right:9px !important;
    bottom:8px !important;
    font-size:24px !important;
  }
}

/* Quick stats: remove nested-card feel; ring and copy share one row */
.quick-stats-grid{
  gap:9px !important;
}

.progress-stat,
.stat-card.progress-stat{
  border-radius:18px !important;
  padding:11px !important;
  background:linear-gradient(180deg,rgba(9,18,33,.78),rgba(5,10,20,.86)) !important;
  box-shadow:0 10px 26px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.025) !important;
}

@media(max-width:390px){
  #startScreen .daily-primary{
    padding:14px !important;
  }

  #progressDashboard .dash-row span:first-child{
    font-size:18px !important;
  }

  #progressDashboard .dash-day{
    min-height:72px !important;
    padding:8px !important;
  }

  #progressDashboard .dash-day-top b{
    font-size:24px !important;
  }
}

/* ==========================================================
   v95.3 BREADTH-MAX CLEANUP
   - Move mobile navigation into the fixed top menu.
   - Remove duplicated dashboard shortcuts on mobile.
   - Let dashboard content use the same width logic as phase progress.
   - Reduce card-in-card feeling across mobile screens.
   ========================================================== */

@media(max-width:760px){
  /* Hard lock the topbar on iPhone/Safari */
  body:not(.exercise-active) .app-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar{
    position:fixed !important;
    top:max(6px, env(safe-area-inset-top,0px)) !important;
    left:12px !important;
    right:12px !important;
    z-index:9999 !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(74px + env(safe-area-inset-top,0px)) !important;
  }

  /* Navigation lives in the dropdown, not in a duplicated dashboard card */
  .dashboard-shortcuts-panel{
    display:none !important;
  }

  .app-tabs{
    display:none;
    position:fixed !important;
    right:12px !important;
    top:calc(74px + env(safe-area-inset-top,0px)) !important;
    width:min(292px, calc(100vw - 24px)) !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    padding:10px !important;
    border-radius:24px !important;
    background:rgba(6,12,23,.98) !important;
    backdrop-filter:blur(18px) saturate(125%) !important;
    box-shadow:0 20px 56px rgba(0,0,0,.42) !important;
  }

  .app-topbar.nav-open .app-tabs{
    display:grid !important;
  }

  .app-tab{
    min-height:84px !important;
    padding:12px 14px !important;
    display:flex !important;
    flex-direction:column !important;
    justify-content:center !important;
    align-items:flex-start !important;
    gap:8px !important;
    text-align:left !important;
    font-size:16px !important;
    line-height:1.05 !important;
  }

  .app-tab .tab-icon{
    display:block;
    font-size:22px;
    line-height:1;
    color:var(--mock-cyan);
    opacity:.95;
  }

  .app-tab span:last-child{
    display:block;
    font-size:17px;
    font-weight:950;
    letter-spacing:-.03em;
  }

  /* Give the core dashboard the full width rhythm from the quick stats section */
  #startScreen,
  #profileScreen,
  #overviewScreen,
  #qaScreen,
  #testScreen{
    gap:12px !important;
  }

  #startScreen .home-hero,
  #profileScreen > .panel,
  #overviewScreen > .panel,
  #qaScreen > .panel,
  #testScreen > .panel{
    margin-left:0 !important;
    margin-right:0 !important;
  }

  #startScreen .showcase-grid{
    gap:12px !important;
  }

  #startScreen .showcase-dashboard{
    border:none !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  #startScreen .showcase-dashboard > .panel-pad{
    padding:0 !important;
  }

  #startScreen .daily-primary,
  #startScreen .daily-secondary,
  #startScreen .quickstats-panel{
    width:100% !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }

  #startScreen .daily-primary{
    padding:16px !important;
    border-radius:26px !important;
  }

  #startScreen .dash-sub,
  #startScreen .dash-context,
  #startScreen .daily-time-pill{
    margin-top:6px !important;
  }

  #startScreen .dash-focus-card,
  #startScreen .dash-focus-card.compact{
    margin-top:14px !important;
    padding:0 !important;
    background:transparent !important;
    border:none !important;
    box-shadow:none !important;
  }

  #startScreen .dash-action-row{
    margin-top:14px !important;
    gap:8px !important;
  }

  #startScreen .dash-action-row .next-pass-btn,
  #startScreen .dash-action-row .overview-pass-btn{
    width:100% !important;
  }

  #progressDashboard .daily-secondary{
    padding:16px !important;
    border-radius:26px !important;
  }

  #progressDashboard .dash-progress{
    margin:0 0 14px !important;
    padding:0 !important;
    border:none !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  #progressDashboard .dash-row{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) auto !important;
    gap:8px !important;
    align-items:start !important;
  }

  #progressDashboard .dash-week-summary{
    margin-top:0 !important;
    margin-bottom:10px !important;
    align-items:center !important;
  }

  #progressDashboard .dash-week-title{
    font-size:clamp(24px,8vw,36px) !important;
    line-height:.98 !important;
  }

  #progressDashboard .dash-week-count{
    min-height:48px !important;
    padding:0 16px !important;
    border-radius:999px !important;
  }

  #progressDashboard .dash-grid{
    gap:8px !important;
  }

  #progressDashboard .dash-day{
    min-height:96px !important;
    padding:12px !important;
    border-radius:20px !important;
  }

  #progressDashboard .subtle-skip{
    width:100% !important;
    margin-top:10px !important;
  }

  /* Progress section: use the card width more efficiently */
  .quickstats-panel .panel-pad{
    padding:16px !important;
  }

  .quick-stats-grid{
    gap:8px !important;
  }

  .progress-stat,
  .stat-card.progress-stat{
    min-height:102px !important;
    align-items:center !important;
  }

  .progress-copy .big{
    line-height:.95 !important;
  }

  /* Breadth-max other screens: reduce over-framing on mobile */
  #profileScreen .profile-config-panel > .panel-pad,
  #overviewScreen .panel > .panel-pad,
  #qaScreen .panel > .panel-pad,
  #testScreen .panel > .panel-pad{
    padding:0 !important;
  }

  #profileScreen .overview-head,
  #overviewScreen .overview-head,
  #qaScreen .overview-head,
  #testScreen .overview-head{
    padding:16px !important;
    margin-bottom:12px !important;
  }

  #profileScreen .profile-config-grid,
  #overviewScreen #overviewInsights,
  #overviewScreen #overviewFlow,
  #qaScreen #qaList,
  #testScreen #testGrid{
    gap:12px !important;
  }

  #profileScreen .selector-panel .panel-pad,
  #profileScreen .profile-overview-panel .panel-pad,
  #profileScreen .week-overview-panel .panel-pad,
  #profileScreen .passday-panel .panel-pad,
  #profileScreen .data-panel .panel-pad,
  #qaScreen .library-detail,
  #testScreen .test-card,
  #overviewScreen .selected-day-focus,
  #overviewScreen .coach-checklist-panel,
  #overviewScreen .flow-card,
  #overviewScreen .overview-insight-card{
    padding:14px !important;
  }

  /* Pass mode: keep the player width-maxed */
  body.exercise-active .stage-layout,
  body.exercise-active .playlist-card,
  body.exercise-active .pass-bottom-controls,
  body.exercise-active .sticky-nav{
    width:100% !important;
  }
}


/* ==========================================================
   v95.4 QA HOTFIX
   Final override after QA review:
   - topbar fixed override at absolute end
   - menu dropdown compact 2x2 at absolute end
   - full-width mobile content shell
   - dashboard weekly/progress blocks width aligned
   ========================================================== */

@media(max-width:760px){
  html, body{
    overflow-x:hidden !important;
  }

  .wrap{
    width:100% !important;
    max-width:100% !important;
    padding-left:10px !important;
    padding-right:10px !important;
    box-sizing:border-box !important;
  }

  body:not(.exercise-active) .app-topbar{
    position:fixed !important;
    top:calc(env(safe-area-inset-top,0px) + 6px) !important;
    left:10px !important;
    right:10px !important;
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    z-index:10000 !important;
    transform:translate3d(0,0,0) !important;
    -webkit-transform:translate3d(0,0,0) !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(74px + env(safe-area-inset-top,0px)) !important;
  }

  body:not(.exercise-active) .app-tabs{
    position:fixed !important;
    display:none !important;
    top:calc(env(safe-area-inset-top,0px) + 68px) !important;
    right:10px !important;
    left:auto !important;
    width:min(300px, calc(100vw - 20px)) !important;
    max-width:calc(100vw - 20px) !important;
    z-index:10001 !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    padding:10px !important;
    border-radius:22px !important;
  }

  body:not(.exercise-active) .app-topbar.nav-open .app-tabs{
    display:grid !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:74px !important;
    padding:10px 11px !important;
    border-radius:18px !important;
    overflow:hidden !important;
  }

  body:not(.exercise-active) .app-tab .tab-icon{
    font-size:20px !important;
  }

  body:not(.exercise-active) .app-tab span:last-child{
    font-size:15.5px !important;
    line-height:1.05 !important;
  }

  /* Universal width-max pass for standard screens */
  #startScreen > *,
  #profileScreen > *,
  #overviewScreen > *,
  #qaScreen > *,
  #testScreen > *{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
  }

  #startScreen .showcase-grid,
  #profileScreen .profile-config-grid,
  #overviewScreen .developed-cards-grid,
  #overviewScreen .overview-flow-grid,
  #qaScreen .qa-grid,
  #testScreen .test-grid{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
  }

  #startScreen .daily-primary,
  #startScreen .daily-secondary,
  #startScreen .quickstats-panel{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
  }

  #startScreen .daily-primary{
    padding:15px !important;
  }

  #progressDashboard .daily-secondary{
    padding:15px !important;
  }

  #progressDashboard .dash-progress,
  #progressDashboard .dash-week-summary,
  #progressDashboard .dash-grid{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
  }

  #progressDashboard .dash-row{
    width:100% !important;
    grid-template-columns:minmax(0,1fr) auto !important;
  }

  #progressDashboard .dash-row span:first-child{
    min-width:0 !important;
  }

  #progressDashboard .dash-grid{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  }

  #progressDashboard .dash-day{
    min-width:0 !important;
  }

  .quickstats-panel .panel-pad{
    padding:15px !important;
  }

  .progress-stat,
  .stat-card.progress-stat{
    grid-template-columns:66px minmax(0,1fr) !important;
  }

  .ring-progress{
    width:62px !important;
    height:62px !important;
  }

  /* Prevent bottom browser toolbar from covering last progress item too badly */
  .home-quickstats{
    margin-bottom:24px !important;
  }
}

@media(max-width:380px){
  body:not(.exercise-active) .app-location strong{
    font-size:16px !important;
  }

  body:not(.exercise-active) .app-nav-toggle{
    min-width:82px !important;
    font-size:15px !important;
  }

  #progressDashboard .dash-week-title{
    font-size:25px !important;
  }

  #progressDashboard .dash-week-count{
    min-height:42px !important;
    padding:0 12px !important;
    font-size:16px !important;
  }

  #progressDashboard .dash-day{
    min-height:82px !important;
    padding:9px !important;
  }

  #progressDashboard .dash-day-top b{
    font-size:25px !important;
  }
}


@media(max-width:760px){
  body:not(.exercise-active) .wrap{
    padding-top:var(--topbar-space, calc(74px + env(safe-area-inset-top,0px))) !important;
  }
}


/* ==========================================================
   v95.5 SCROLL-AWAY MENU
   Clarification:
   The top menu should sit at the top of the page, but scroll away.
   It must NOT be fixed/sticky while scrolling.
   ========================================================== */

@media(max-width:760px){
  body:not(.exercise-active)::before{
    height:0 !important;
    display:none !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:10px !important;
  }

  body:not(.exercise-active) .app-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar{
    position:relative !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    width:100% !important;
    max-width:100% !important;
    margin:0 0 12px 0 !important;
    z-index:20 !important;
    transform:none !important;
    -webkit-transform:none !important;
    will-change:auto !important;
    contain:layout paint !important;
  }

  /* Dropdown belongs to the topbar and scrolls away with it */
  body:not(.exercise-active) .app-tabs,
  body.topbar-portal:not(.exercise-active) .app-tabs,
  body.topbar-hard-fixed:not(.exercise-active) .app-tabs{
    position:absolute !important;
    top:calc(100% + 8px) !important;
    right:0 !important;
    left:auto !important;
    width:min(300px, calc(100vw - 20px)) !important;
    max-width:calc(100vw - 20px) !important;
    z-index:30 !important;
    display:none !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    padding:10px !important;
    border-radius:22px !important;
  }

  body:not(.exercise-active) .app-topbar.nav-open .app-tabs{
    display:grid !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:74px !important;
    padding:10px 11px !important;
  }

  /* Since the menu is in normal flow again, the first content block should start close below it */
  #startScreen,
  #profileScreen,
  #overviewScreen,
  #qaScreen,
  #testScreen{
    padding-top:0 !important;
  }
}

/* Desktop can also scroll normally; no accidental fixed nav */
@media(min-width:761px){
  body:not(.exercise-active) .app-topbar{
    position:relative !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    z-index:20 !important;
  }

  body:not(.exercise-active) .app-tabs{
    position:absolute !important;
  }
}


/* ==========================================================
   v95.6 MENU SCROLL-AWAY REALFIX
   Remove the remaining fixed/sticky conflict completely.
   Topbar is ordinary document flow and scrolls away.
   Dropdown is absolute inside the topbar and clickable.
   ========================================================== */

body.topbar-portal,
body.topbar-hard-fixed{
  /* legacy classes may exist briefly, but should not change behavior */
}

.app-topbar{
  overflow:visible !important;
  pointer-events:auto !important;
}

.app-tabs,
.app-tab,
.app-nav-toggle{
  pointer-events:auto !important;
}

@media(max-width:760px){
  body:not(.exercise-active)::before{
    display:none !important;
    height:0 !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:10px !important;
  }

  body:not(.exercise-active) .app-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar{
    position:relative !important;
    inset:auto !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    bottom:auto !important;
    width:100% !important;
    max-width:100% !important;
    margin:0 0 12px 0 !important;
    z-index:40 !important;
    transform:none !important;
    -webkit-transform:none !important;
    will-change:auto !important;
    contain:none !important;
    overflow:visible !important;
  }

  body:not(.exercise-active) .app-tabs,
  body.topbar-portal:not(.exercise-active) .app-tabs,
  body.topbar-hard-fixed:not(.exercise-active) .app-tabs{
    position:absolute !important;
    top:calc(100% + 8px) !important;
    right:0 !important;
    left:auto !important;
    bottom:auto !important;
    width:min(300px, calc(100vw - 20px)) !important;
    max-width:calc(100vw - 20px) !important;
    z-index:80 !important;
    display:none !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    padding:10px !important;
    border-radius:22px !important;
    pointer-events:auto !important;
  }

  body:not(.exercise-active) .app-topbar.nav-open .app-tabs{
    display:grid !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:74px !important;
    padding:10px 11px !important;
    pointer-events:auto !important;
  }

  /* Normal content starts directly after topbar */
  #startScreen,
  #profileScreen,
  #overviewScreen,
  #qaScreen,
  #testScreen{
    padding-top:0 !important;
  }
}

/* Desktop/tablet also scrolls normally */
@media(min-width:761px){
  body:not(.exercise-active) .app-topbar{
    position:relative !important;
    top:auto !important;
    z-index:40 !important;
    overflow:visible !important;
  }

  body:not(.exercise-active) .app-tabs{
    position:absolute !important;
  }
}


/* ==========================================================
   v95.9 REST IMAGE + iPAD VIDEO FIX
   - Rest images are now forced from inline --rest-asset-url.
   - Old rest theme/background rules can no longer win.
   - iPad/Safari iframe/video is forced to fill the full 16:9 frame.
   ========================================================== */

/* Preload current pause images */
body::after{
  position:absolute;
  width:0;
  height:0;
  overflow:hidden;
  z-index:-1;
  content:
    url("../img/v95/rest/rest-goalie-pause.png")
    url("../img/v95/rest/rest-hockey-pause.png")
    url("../img/v95/rest/rest-downhill-pause.png");
}

/* Rest frame: the new inline asset variable wins over all older rules */
body.exercise-active .rest-stage.rest-stage-v959,
body.exercise-active .rest-stage.rest-visual-goalie-pause,
body.exercise-active .rest-stage.rest-visual-hockey-pause,
body.exercise-active .rest-stage.rest-visual-downhill-pause{
  background:
    linear-gradient(90deg,rgba(5,9,18,.92) 0%,rgba(5,9,18,.78) 42%,rgba(5,9,18,.28) 100%),
    var(--rest-asset-url) center center / cover no-repeat !important;
  background-size:cover !important;
  background-position:center center !important;
  background-repeat:no-repeat !important;
}

/* Remove/neutralize older pseudo overlays that made images feel like old variants */
body.exercise-active .rest-stage.rest-stage-v959::after{
  background:radial-gradient(circle at 76% 25%,rgba(92,165,255,.12),transparent 38%) !important;
}

/* iPad / Safari video fit fix */
.video-wrap,
body.exercise-active .video-wrap,
body.exercise-active #videoWrap{
  position:relative !important;
  width:100% !important;
  aspect-ratio:16 / 9 !important;
  height:auto !important;
  min-height:0 !important;
  overflow:hidden !important;
  background:#030713 !important;
}

.video-wrap iframe,
.video-wrap video,
.video-wrap embed,
.video-wrap object,
#videoWrap iframe,
#videoWrap video,
#videoWrap embed,
#videoWrap object{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-width:100% !important;
  min-height:100% !important;
  max-width:none !important;
  max-height:none !important;
  display:block !important;
  border:0 !important;
  object-fit:cover !important;
}

/* YouTube iframe wrapper safety */
.video-wrap .yt-frame,
.video-wrap .youtube-frame,
.video-wrap .iframe-shell,
.video-wrap .video-frame,
#videoWrap .yt-frame,
#videoWrap .youtube-frame,
#videoWrap .iframe-shell,
#videoWrap .video-frame{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
}

/* Rest uses exact same frame sizing as video */
.video-wrap.rest-video-wrap,
#videoWrap.rest-video-wrap{
  aspect-ratio:16 / 9 !important;
  height:auto !important;
  min-height:0 !important;
  max-height:min(54svh, 520px) !important;
}

.video-wrap.rest-video-wrap .rest-stage,
#videoWrap.rest-video-wrap .rest-stage{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
}

/* iPad-ish wide mobile/tablet layout */
@media (min-width:761px) and (max-width:1180px){
  body.exercise-active .video-wrap,
  body.exercise-active #videoWrap{
    aspect-ratio:16 / 9 !important;
    width:100% !important;
    height:auto !important;
    max-height:58vh !important;
  }

  body.exercise-active .video-card{
    width:100% !important;
  }

  body.exercise-active .stage-layout{
    grid-template-columns:minmax(0,1fr) !important;
    width:100% !important;
  }
}


/* ==========================================================
   v95.10 REST IMAGE LAYER FIX
   Rest images are now real <img> layers, not just background CSS.
   This avoids old background/theme timing issues.
   ========================================================== */

body.exercise-active .rest-stage.rest-stage-v9510{
  position:relative !important;
  overflow:hidden !important;
  background:#030713 !important;
  isolation:isolate !important;
}

body.exercise-active .rest-stage.rest-stage-v9510 .rest-bg-img{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-width:100% !important;
  min-height:100% !important;
  object-fit:cover !important;
  object-position:center center !important;
  display:block !important;
  z-index:0 !important;
  pointer-events:none !important;
  opacity:1 !important;
}

body.exercise-active .rest-stage.rest-stage-v9510 .rest-bg-overlay{
  position:absolute !important;
  inset:0 !important;
  z-index:1 !important;
  pointer-events:none !important;
  background:
    linear-gradient(90deg,rgba(5,9,18,.90) 0%,rgba(5,9,18,.72) 42%,rgba(5,9,18,.22) 100%),
    radial-gradient(circle at 76% 25%,rgba(92,165,255,.14),transparent 38%) !important;
}

body.exercise-active .rest-stage.rest-stage-v9510 .rest-card{
  position:relative !important;
  z-index:2 !important;
}

/* Old pseudo overlays must not cover the actual rest image */
body.exercise-active .rest-stage.rest-stage-v9510::before,
body.exercise-active .rest-stage.rest-stage-v9510::after{
  display:none !important;
  content:none !important;
}

/* Keep rest frame identical to video frame */
.video-wrap.rest-video-wrap,
#videoWrap.rest-video-wrap{
  aspect-ratio:16 / 9 !important;
  position:relative !important;
  overflow:hidden !important;
  background:#030713 !important;
}

.video-wrap.rest-video-wrap .rest-stage.rest-stage-v9510,
#videoWrap.rest-video-wrap .rest-stage.rest-stage-v9510{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
}

/* iPad: iframe/video full frame, repeated after old rules */
#videoWrap iframe,
#videoWrap video,
.video-wrap iframe,
.video-wrap video{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  border:0 !important;
}


/* ==========================================================
   v95.11 ONBOARDING + TABLET/DESKTOP TRAINING LAYOUT
   - Onboarding is brought into the same visual system.
   - iPad landscape / desktop shows instructions beside the film.
   ========================================================== */

/* ------------------------------
   Onboarding style rescue
   ------------------------------ */

.onboarding,
#onboarding,
.onboarding-panel,
.start-onboarding,
.profile-start,
.create-profile-card{
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}

.onboarding input,
#onboarding input,
.profile-start input,
.create-profile-card input,
input[type="text"]{
  border:1px solid rgba(129,184,255,.22) !important;
  background:linear-gradient(180deg,rgba(8,15,29,.88),rgba(5,10,20,.94)) !important;
  color:#fff !important;
  border-radius:16px !important;
  min-height:48px !important;
  padding:10px 14px !important;
  font-weight:800 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 10px 26px rgba(0,0,0,.16) !important;
}

.onboarding input::placeholder,
#onboarding input::placeholder,
.profile-start input::placeholder,
.create-profile-card input::placeholder{
  color:rgba(218,232,255,.62) !important;
}

.onboarding button,
#onboarding button,
.profile-start button,
.create-profile-card button{
  border-radius:18px !important;
}

.onboarding .stage-btn,
#onboarding .stage-btn,
.profile-start .stage-btn,
.create-profile-card .stage-btn,
.onboarding .age-btn,
#onboarding .age-btn,
.profile-start .age-btn,
.create-profile-card .age-btn,
.onboarding [data-stage],
#onboarding [data-stage]{
  width:100% !important;
  min-height:72px !important;
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  align-content:center !important;
  justify-items:start !important;
  gap:3px !important;
  padding:14px 16px !important;
  margin:8px 0 !important;
  border-radius:22px !important;
  border:1px solid rgba(129,184,255,.20) !important;
  background:
    linear-gradient(135deg,rgba(14,45,76,.78),rgba(8,15,29,.94)),
    radial-gradient(circle at 78% 20%,rgba(135,232,255,.14),transparent 42%) !important;
  color:#fff !important;
  text-align:left !important;
  box-shadow:0 12px 30px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.03) !important;
  white-space:normal !important;
}

.onboarding .stage-btn strong,
#onboarding .stage-btn strong,
.profile-start .stage-btn strong,
.create-profile-card .stage-btn strong,
.onboarding .age-btn strong,
#onboarding .age-btn strong,
.profile-start .age-btn strong,
.create-profile-card .age-btn strong{
  font-size:clamp(21px,5vw,28px) !important;
  line-height:1 !important;
  letter-spacing:-.045em !important;
  color:#fff !important;
}

.onboarding .stage-btn span,
#onboarding .stage-btn span,
.profile-start .stage-btn span,
.create-profile-card .stage-btn span,
.onboarding .age-btn span,
#onboarding .age-btn span,
.profile-start .age-btn span,
.create-profile-card .age-btn span{
  font-size:15px !important;
  line-height:1.18 !important;
  color:rgba(218,232,255,.78) !important;
}

.onboarding .stage-btn.active,
#onboarding .stage-btn.active,
.profile-start .stage-btn.active,
.create-profile-card .stage-btn.active,
.onboarding .age-btn.active,
#onboarding .age-btn.active,
.profile-start .age-btn.active,
.create-profile-card .age-btn.active,
.onboarding [data-stage].active,
#onboarding [data-stage].active{
  border-color:rgba(135,232,255,.58) !important;
  box-shadow:0 0 0 1px rgba(135,232,255,.20), 0 18px 42px rgba(29,151,255,.18), inset 0 1px 0 rgba(255,255,255,.05) !important;
  background:
    linear-gradient(135deg,rgba(20,78,124,.88),rgba(8,20,39,.96)),
    radial-gradient(circle at 82% 12%,rgba(135,232,255,.22),transparent 46%) !important;
}

.onboarding .muted-card,
#onboarding .muted-card,
.profile-start .muted-card,
.create-profile-card .muted-card{
  border-radius:22px !important;
  border:1px solid rgba(129,184,255,.14) !important;
  background:linear-gradient(180deg,rgba(12,22,39,.82),rgba(6,12,23,.92)) !important;
  color:rgba(234,242,255,.84) !important;
}

/* Known first-run/onboarding text blocks in the app */
#startScreen .onboarding-card,
#startScreen .profile-onboarding,
#startScreen .quick-start-card,
#startScreen .start-profile-card,
#startScreen .create-profile,
#startScreen .start-panel{
  border-radius:26px !important;
  border:1px solid rgba(129,184,255,.16) !important;
  background:
    linear-gradient(180deg,rgba(9,18,33,.86),rgba(5,10,20,.94)),
    radial-gradient(circle at 80% 10%,rgba(135,232,255,.12),transparent 44%) !important;
  box-shadow:0 16px 42px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.03) !important;
  padding:16px !important;
  overflow:hidden !important;
}

/* Generic fallback for old onboarding buttons that were still white pills */
#startScreen button:not(.app-nav-toggle):not(.app-tab):not(.next-pass-btn):not(.overview-pass-btn){
  border:1px solid rgba(129,184,255,.24);
}

/* Remove white-pill look from stage choice buttons even if old classes are missing */
#startScreen .stage-choice,
#startScreen .age-choice,
#startScreen .track-choice{
  border-radius:22px !important;
  background:
    linear-gradient(135deg,rgba(14,45,76,.78),rgba(8,15,29,.94)),
    radial-gradient(circle at 78% 20%,rgba(135,232,255,.14),transparent 42%) !important;
  color:#fff !important;
  border-color:rgba(129,184,255,.20) !important;
  padding:14px 16px !important;
  min-height:72px !important;
  text-align:left !important;
  white-space:normal !important;
}

#startScreen .stage-choice *,
#startScreen .age-choice *,
#startScreen .track-choice *{
  color:inherit !important;
}

/* ------------------------------
   iPad landscape / desktop: media left, instructions right
   ------------------------------ */

@media (min-width:900px) and (orientation:landscape){
  body.exercise-active .stage-layout{
    display:grid !important;
    grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr) !important;
    gap:18px !important;
    align-items:start !important;
    width:100% !important;
    max-width:min(1360px, calc(100vw - 32px)) !important;
    margin:0 auto !important;
  }

  body.exercise-active .video-card{
    grid-column:1 !important;
    position:sticky !important;
    top:78px !important;
    align-self:start !important;
    width:100% !important;
  }

  body.exercise-active .info-card{
    grid-column:2 !important;
    margin:0 !important;
    align-self:start !important;
    width:100% !important;
    max-height:calc(100vh - 116px) !important;
    overflow:auto !important;
    padding:18px !important;
  }

  body.exercise-active .video-wrap,
  body.exercise-active #videoWrap{
    aspect-ratio:16 / 9 !important;
    width:100% !important;
    height:auto !important;
    max-height:calc(100vh - 150px) !important;
  }

  body.exercise-active .exercise-name{
    font-size:clamp(34px,3.6vw,58px) !important;
  }

  body.exercise-active .rx-line{
    font-size:clamp(38px,5vw,72px) !important;
  }

  body.exercise-active .coach-cues ul{
    font-size:clamp(15px,1.45vw,19px) !important;
  }

  body.exercise-active .pass-bottom-controls{
    max-width:min(1360px, calc(100vw - 32px)) !important;
    left:50% !important;
    right:auto !important;
    transform:translateX(-50%) !important;
  }
}

@media (min-width:1024px){
  body.exercise-active .stage-layout{
    display:grid !important;
    grid-template-columns:minmax(0,1.35fr) minmax(360px,.65fr) !important;
    gap:20px !important;
    align-items:start !important;
    max-width:min(1440px, calc(100vw - 40px)) !important;
    margin:0 auto !important;
  }

  body.exercise-active .video-card{
    grid-column:1 !important;
  }

  body.exercise-active .info-card{
    grid-column:2 !important;
    margin:0 !important;
  }
}


/* ==========================================================
   v95.12 TABLET/DESKTOP NAV INLINE
   - iPad/desktop should not use the toned mobile dropdown menu.
   - Navigation buttons live directly in the topbar.
   - Start-screen duplicate shortcut panel is hidden on wider screens.
   ========================================================== */

@media (min-width: 900px){
  body:not(.exercise-active) .app-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar{
    display:grid !important;
    grid-template-columns:minmax(170px,.9fr) auto !important;
    grid-template-areas:
      "loc primary"
      "tabs tabs" !important;
    align-items:center !important;
    gap:14px !important;
    padding:18px !important;
    overflow:visible !important;
  }

  body:not(.exercise-active) .app-location{
    grid-area:loc !important;
    min-width:0 !important;
  }

  body:not(.exercise-active) .app-primary-action{
    grid-area:primary !important;
    justify-self:end !important;
    min-height:58px !important;
    padding:0 22px !important;
    white-space:nowrap !important;
  }

  body:not(.exercise-active) .app-nav-toggle{
    display:none !important;
  }

  body:not(.exercise-active) .app-tabs,
  body.topbar-portal:not(.exercise-active) .app-tabs,
  body.topbar-hard-fixed:not(.exercise-active) .app-tabs{
    grid-area:tabs !important;
    position:static !important;
    inset:auto !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    width:100% !important;
    max-width:none !important;
    display:grid !important;
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
    gap:12px !important;
    padding:0 !important;
    margin:0 !important;
    border:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    z-index:auto !important;
  }

  body:not(.exercise-active) .app-topbar.nav-open .app-tabs{
    display:grid !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:72px !important;
    padding:14px 16px !important;
    border-radius:22px !important;
    border:1px solid rgba(129,184,255,.18) !important;
    background:linear-gradient(180deg,rgba(14,23,40,.92),rgba(8,14,27,.96)) !important;
    box-shadow:0 14px 34px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.025) !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    gap:8px !important;
    text-align:center !important;
    font-size:clamp(16px,1.7vw,20px) !important;
    font-weight:900 !important;
  }

  body:not(.exercise-active) .app-tab .tab-icon{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    font-size:20px !important;
    opacity:.95 !important;
  }

  body:not(.exercise-active) .app-tab.active{
    border-color:rgba(108,225,255,.52) !important;
    box-shadow:0 0 0 1px rgba(108,225,255,.24), 0 16px 36px rgba(0,0,0,.28), inset 0 -3px 0 rgba(108,225,255,.62) !important;
    background:linear-gradient(180deg,rgba(40,92,162,.92),rgba(18,34,69,.96)) !important;
  }

  body:not(.exercise-active) .dashboard-shortcuts-panel{
    display:none !important;
  }
}

@media (min-width: 900px) and (max-width: 1180px){
  body:not(.exercise-active) .app-topbar{
    grid-template-columns:minmax(150px,.85fr) auto !important;
    gap:12px !important;
    padding:16px !important;
  }
  body:not(.exercise-active) .app-tab{
    min-height:66px !important;
    padding:12px 12px !important;
    font-size:clamp(15px,1.55vw,18px) !important;
  }
}

@media (min-width: 1200px){
  body:not(.exercise-active) .app-topbar{
    gap:16px !important;
  }
  body:not(.exercise-active) .app-tab{
    min-height:76px !important;
  }
}


/* ==========================================================
   v95.13 PASS MENU CLEANUP
   - Pass menu gets the same cleaned component language as the app.
   - Less height, clearer grouping, better tap targets.
   - Menu no longer feels like a stack of random legacy buttons.
   ========================================================== */

/* Exercise topbar: calmer and more compact */
body.exercise-active .sticky-nav{
  padding:calc(7px + env(safe-area-inset-top,0px)) 10px 8px !important;
  background:linear-gradient(180deg,rgba(4,8,16,.98),rgba(4,8,16,.90)) !important;
  border-bottom:1px solid rgba(129,184,255,.12) !important;
}

body.exercise-active .nav-row{
  display:grid !important;
  grid-template-columns:46px minmax(0,1fr) !important;
  gap:8px !important;
  align-items:center !important;
}

body.exercise-active #menuToggleBtn,
body.exercise-active .menu-toggle{
  width:46px !important;
  min-width:46px !important;
  height:44px !important;
  min-height:44px !important;
  padding:0 !important;
  border-radius:15px !important;
  font-size:0 !important;
  display:grid !important;
  place-items:center !important;
  background:linear-gradient(180deg,rgba(17,31,51,.94),rgba(7,13,25,.96)) !important;
  border:1px solid rgba(129,184,255,.20) !important;
  box-shadow:0 8px 22px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.035) !important;
}

body.exercise-active #menuToggleBtn::before,
body.exercise-active .menu-toggle::before{
  content:"☰";
  font-size:24px;
  line-height:1;
  color:#fff;
}

body.exercise-active #exerciseMeta{
  min-width:0 !important;
  font-size:clamp(11px,3.1vw,15px) !important;
  letter-spacing:.10em !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}

/* Pass tool/menu panel */
body.exercise-active .tool-panel,
body.exercise-active .pass-menu,
body.exercise-active .session-menu,
body.exercise-active .exercise-menu,
body.exercise-active #toolPanel,
body.exercise-active #passMenu{
  margin:8px 10px 8px !important;
  padding:10px !important;
  border-radius:22px !important;
  border:1px solid rgba(129,184,255,.16) !important;
  background:rgba(5,10,20,.96) !important;
  box-shadow:0 18px 50px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.03) !important;
  backdrop-filter:blur(18px) saturate(125%) !important;
}

/* Target common button grids in the pass menu without affecting content cards */
body.exercise-active .tool-panel .tool-grid,
body.exercise-active .tool-panel .settings-grid,
body.exercise-active .tool-panel .menu-grid,
body.exercise-active .pass-menu .tool-grid,
body.exercise-active .pass-menu .settings-grid,
body.exercise-active .pass-menu .menu-grid,
body.exercise-active #toolPanel .tool-grid,
body.exercise-active #passMenu .tool-grid{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
}

/* Generic pass-menu buttons */
body.exercise-active .tool-panel button,
body.exercise-active .pass-menu button,
body.exercise-active .session-menu button,
body.exercise-active .exercise-menu button,
body.exercise-active #toolPanel button,
body.exercise-active #passMenu button{
  min-height:46px !important;
  border-radius:15px !important;
  padding:9px 10px !important;
  font-size:clamp(13px,3.4vw,16px) !important;
  line-height:1.05 !important;
  font-weight:950 !important;
  letter-spacing:-.025em !important;
  color:#fff !important;
  background:linear-gradient(180deg,rgba(14,23,40,.92),rgba(8,14,27,.96)) !important;
  border:1px solid rgba(129,184,255,.17) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025) !important;
  text-align:center !important;
  white-space:normal !important;
}

/* Active/on-looking buttons get cyan edge, not huge color blast */
body.exercise-active .tool-panel button.active,
body.exercise-active .pass-menu button.active,
body.exercise-active .session-menu button.active,
body.exercise-active .exercise-menu button.active,
body.exercise-active #toolPanel button.active,
body.exercise-active #passMenu button.active,
body.exercise-active .tool-panel button[aria-pressed="true"],
body.exercise-active .pass-menu button[aria-pressed="true"],
body.exercise-active #toolPanel button[aria-pressed="true"],
body.exercise-active #passMenu button[aria-pressed="true"]{
  border-color:rgba(135,232,255,.42) !important;
  background:linear-gradient(180deg,rgba(18,60,96,.92),rgba(8,22,41,.96)) !important;
  box-shadow:0 0 0 1px rgba(135,232,255,.16), inset 0 1px 0 rgba(255,255,255,.035) !important;
}

/* Destructive exit button should be visible but not dominate */
body.exercise-active .tool-panel button.danger,
body.exercise-active .tool-panel button.danger-btn,
body.exercise-active .pass-menu button.danger,
body.exercise-active .pass-menu button.danger-btn,
body.exercise-active #toolPanel button.danger,
body.exercise-active #toolPanel button.danger-btn,
body.exercise-active #passMenu button.danger,
body.exercise-active #passMenu button.danger-btn{
  border-color:rgba(255,129,129,.22) !important;
  background:linear-gradient(180deg,rgba(52,20,25,.82),rgba(18,9,14,.94)) !important;
}

/* If the menu is just a plain div with buttons, make the button collection a neat grid */
body.exercise-active .tool-panel,
body.exercise-active #toolPanel{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
}

body.exercise-active .tool-panel > *,
body.exercise-active #toolPanel > *{
  min-width:0 !important;
}

/* Exit/fullscreen can span if marked by old layout width */
body.exercise-active .tool-panel .wide,
body.exercise-active #toolPanel .wide,
body.exercise-active .pass-menu .wide,
body.exercise-active #passMenu .wide{
  grid-column:1 / -1 !important;
}

/* On tablet/desktop pass mode: menu should be side-panel compact, not overlay-heavy */
@media(min-width:900px){
  body.exercise-active .tool-panel,
  body.exercise-active #toolPanel,
  body.exercise-active .pass-menu,
  body.exercise-active #passMenu{
    max-width:520px !important;
    margin:10px auto 12px !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  }

  body.exercise-active .tool-panel button,
  body.exercise-active #toolPanel button,
  body.exercise-active .pass-menu button,
  body.exercise-active #passMenu button{
    min-height:44px !important;
    font-size:11px !important;
  }
}

/* Very small phones */
@media(max-width:390px){
  body.exercise-active .tool-panel,
  body.exercise-active #toolPanel,
  body.exercise-active .pass-menu,
  body.exercise-active #passMenu{
    margin-left:8px !important;
    margin-right:8px !important;
    padding:8px !important;
    gap:7px !important;
  }

  body.exercise-active .tool-panel button,
  body.exercise-active #toolPanel button,
  body.exercise-active .pass-menu button,
  body.exercise-active #passMenu button{
    min-height:42px !important;
    font-size:12.5px !important;
    padding:8px !important;
  }
}


/* ==========================================================
   v95.14 NAV-ONLY TOPBAR
   Top navigation should only contain the page buttons.
   Remove redundant "Dashboard / Start" text and "Starta pass" action.
   ========================================================== */

body:not(.exercise-active) .app-location,
body:not(.exercise-active) .app-primary-action{
  display:none !important;
}

/* Mobile: only a compact menu button remains at top; dropdown contains nav buttons */
@media(max-width:899px){
  body:not(.exercise-active) .app-topbar{
    display:flex !important;
    justify-content:flex-end !important;
    align-items:center !important;
    min-height:54px !important;
    padding:8px 10px !important;
  }

  body:not(.exercise-active) .app-nav-toggle{
    margin-left:auto !important;
  }
}

/* iPad / desktop: show only the 4 navigation buttons, no header text or start button */
@media(min-width:900px){
  body:not(.exercise-active) .app-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar{
    display:block !important;
    padding:16px !important;
    min-height:0 !important;
  }

  body:not(.exercise-active) .app-nav-toggle{
    display:none !important;
  }

  body:not(.exercise-active) .app-tabs,
  body.topbar-portal:not(.exercise-active) .app-tabs,
  body.topbar-hard-fixed:not(.exercise-active) .app-tabs{
    position:static !important;
    display:grid !important;
    width:100% !important;
    max-width:none !important;
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
    gap:12px !important;
    padding:0 !important;
    margin:0 !important;
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:72px !important;
  }
}

/* Wide desktop can stay elegant without becoming huge */
@media(min-width:1200px){
  body:not(.exercise-active) .app-topbar{
    padding:16px 18px !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:74px !important;
  }
}


/* ==========================================================
   v95.15 TOP SHADE FIX
   Remove the unintended top shading/vignette above the topbar.
   Keep the header clean while preserving the overall dark theme.
   ========================================================== */

/* Normal app views: no extra top wash / gradient layer */
body:not(.exercise-active)::before,
body.topbar-portal:not(.exercise-active)::before,
body.topbar-hard-fixed:not(.exercise-active)::before{
  display:none !important;
  content:none !important;
  height:0 !important;
  background:none !important;
  box-shadow:none !important;
}

/* Also remove any decorative top haze layer that can read as a shadow band */
body:not(.exercise-active)::after{
  background:none !important;
  box-shadow:none !important;
}

/* Make the topbar sit cleaner against the page top */
body:not(.exercise-active) .app-topbar,
body.topbar-portal:not(.exercise-active) .app-topbar,
body.topbar-hard-fixed:not(.exercise-active) .app-topbar{
  box-shadow:0 10px 24px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.025) !important;
}

@media(max-width:760px){
  body:not(.exercise-active) .wrap{
    padding-top:10px !important;
  }
}


/* ==========================================================
   v95.16 PASS MENU FUNCTION FIX
   - Exercise list now targets the real .playlist-card element.
   - Old display:none!important is overridden correctly.
   - Pass menu buttons get explicit on/off state markup.
   - The menu remains compact but the controls are easier to understand.
   ========================================================== */

body.exercise-active.playlist-visible .playlist-card,
body.exercise-active .playlist-card.open{
  display:block !important;
}

body.exercise-active.playlist-hidden .playlist-card,
body.exercise-active .playlist-card[aria-hidden="true"]{
  display:none !important;
}

body.exercise-active .playlist-card{
  margin:10px 10px calc(90px + var(--safe-bottom)) !important;
  padding:10px !important;
  border-radius:22px !important;
  max-height:min(46svh, 420px) !important;
  overflow:auto !important;
}

body.exercise-active #settingsMenu.top-tools{
  display:none !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
  padding:10px !important;
  border-radius:22px !important;
  background:rgba(5,10,20,.97) !important;
  border:1px solid rgba(129,184,255,.18) !important;
  box-shadow:0 18px 50px rgba(0,0,0,.36), inset 0 1px 0 rgba(255,255,255,.03) !important;
}

body.exercise-active #settingsMenu.top-tools.open{
  display:grid !important;
}

body.exercise-active #settingsMenu .tool-btn{
  min-height:48px !important;
  border-radius:15px !important;
  padding:8px 10px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:8px !important;
  font-size:13px !important;
  line-height:1 !important;
  text-align:left !important;
}

body.exercise-active #settingsMenu .tool-btn span{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}

body.exercise-active #settingsMenu .tool-btn b{
  flex:0 0 auto !important;
  font-size:11px !important;
  color:var(--cyan) !important;
  padding:5px 7px !important;
  border-radius:999px !important;
  border:1px solid rgba(135,232,255,.22) !important;
  background:rgba(7,35,56,.54) !important;
}

body.exercise-active #settingsMenu .tool-btn.off b,
body.exercise-active #settingsMenu .tool-btn[aria-pressed="false"] b{
  color:rgba(218,232,255,.58) !important;
  border-color:rgba(160,185,225,.14) !important;
  background:rgba(255,255,255,.035) !important;
}

body.exercise-active #settingsMenu .danger-tool{
  grid-column:1 / -1 !important;
  justify-content:center !important;
  border-color:rgba(255,129,129,.22) !important;
  background:linear-gradient(180deg,rgba(52,20,25,.82),rgba(18,9,14,.94)) !important;
}

body.pseudo-fullscreen.exercise-active{
  overflow:hidden !important;
}

body.pseudo-fullscreen.exercise-active #exerciseScreen{
  position:fixed !important;
  inset:0 !important;
  z-index:9999 !important;
  overflow:auto !important;
  background:#030713 !important;
}

@media(min-width:900px){
  body.exercise-active #settingsMenu.top-tools.open{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    max-width:580px !important;
    left:12px !important;
    right:auto !important;
  }
  body.exercise-active .playlist-card{
    max-width:min(1360px, calc(100vw - 32px)) !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}


/* ==========================================================
   v95.17 NEXT BUTTON WIDTH FIX
   Bug: when returning to the first exercise, the previous button disappears
   and the next/rest button could collapse into a narrow vertical button.
   Fix: no-prev state = one full-width action button.
   ========================================================== */

body.exercise-active .pass-bottom-controls{
  width:100% !important;
  max-width:100% !important;
}

/* Default: only next/rest button visible -> full width */
body.exercise-active .pass-bottom-controls:not(.has-prev),
body.exercise-active:not(.pass-has-prev) .pass-bottom-controls{
  display:grid !important;
  grid-template-columns:1fr !important;
}

/* When previous is hidden/disabled, it must not reserve or distort space */
body.exercise-active .pass-bottom-controls:not(.has-prev) #prevBtn,
body.exercise-active:not(.pass-has-prev) #prevBtn{
  display:none !important;
}

/* Next/rest action owns the whole row in no-prev state */
body.exercise-active .pass-bottom-controls:not(.has-prev) #nextBtn,
body.exercise-active:not(.pass-has-prev) #nextBtn{
  grid-column:1 / -1 !important;
  width:100% !important;
  max-width:none !important;
  min-width:0 !important;
  min-height:58px !important;
  white-space:nowrap !important;
  text-align:center !important;
  justify-content:center !important;
  align-items:center !important;
  flex-direction:row !important;
}

/* With previous available: two-column compact row */
body.exercise-active .pass-bottom-controls.has-prev,
body.exercise-active.pass-has-prev .pass-bottom-controls{
  display:grid !important;
  grid-template-columns:minmax(96px, 0.34fr) minmax(0, 1fr) !important;
}

body.exercise-active .pass-bottom-controls.has-prev #prevBtn,
body.exercise-active.pass-has-prev .pass-bottom-controls #prevBtn{
  display:inline-flex !important;
  width:100% !important;
}

body.exercise-active .pass-bottom-controls.has-prev #nextBtn,
body.exercise-active.pass-has-prev .pass-bottom-controls #nextBtn{
  width:100% !important;
  min-width:0 !important;
  white-space:nowrap !important;
}

/* Small phones: preserve row, never let the next button become a tall narrow pill */
@media(max-width:430px){
  body.exercise-active .pass-bottom-controls:not(.has-prev),
  body.exercise-active:not(.pass-has-prev) .pass-bottom-controls{
    grid-template-columns:1fr !important;
  }

  body.exercise-active .pass-bottom-controls.has-prev,
  body.exercise-active.pass-has-prev .pass-bottom-controls{
    grid-template-columns:minmax(88px, .34fr) minmax(0, 1fr) !important;
  }

  body.exercise-active #nextBtn{
    font-size:clamp(17px,5.2vw,24px) !important;
    line-height:1.05 !important;
  }
}


/* ==========================================================
   v95.18 DEEP BUGFIX PASS CONTROLS
   Findings:
   - Bottom button row state was not synced on every render path.
   - Pass menu cleanup targeted some legacy/generic selectors instead of the real #settingsMenu.top-tools.
   - Fullscreen could be a silent no-op on iOS/Safari.
   ========================================================== */

body.exercise-active #settingsMenu.top-tools{
  position:fixed !important;
  left:10px !important;
  right:10px !important;
  top:calc(64px + env(safe-area-inset-top,0px)) !important;
  z-index:650 !important;
  display:none !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
  padding:10px !important;
  border-radius:22px !important;
  border:1px solid rgba(129,184,255,.18) !important;
  background:rgba(5,10,20,.98) !important;
  box-shadow:0 20px 56px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.035) !important;
  backdrop-filter:blur(18px) saturate(125%) !important;
}

body.exercise-active #settingsMenu.top-tools.open{
  display:grid !important;
}

body.exercise-active #settingsMenu.top-tools .tool-btn{
  min-height:46px !important;
  border-radius:16px !important;
  padding:9px 11px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:8px !important;
  color:#fff !important;
  background:linear-gradient(180deg,rgba(14,23,40,.94),rgba(8,14,27,.96)) !important;
  border:1px solid rgba(129,184,255,.18) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025) !important;
  font-size:14px !important;
  font-weight:950 !important;
  line-height:1.05 !important;
}

body.exercise-active #settingsMenu.top-tools .tool-btn span{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}

body.exercise-active #settingsMenu.top-tools .tool-btn b{
  flex:0 0 auto !important;
  font-size:12px !important;
  color:var(--mock-cyan, #7cecff) !important;
  letter-spacing:.02em !important;
}

body.exercise-active #settingsMenu.top-tools .tool-btn.on,
body.exercise-active #settingsMenu.top-tools .tool-btn[aria-pressed="true"]{
  border-color:rgba(135,232,255,.46) !important;
  background:linear-gradient(180deg,rgba(20,60,98,.94),rgba(9,22,42,.98)) !important;
  box-shadow:0 0 0 1px rgba(135,232,255,.14), inset 0 1px 0 rgba(255,255,255,.035) !important;
}

body.exercise-active #settingsMenu.top-tools .danger-tool{
  grid-column:1 / -1 !important;
  border-color:rgba(255,129,129,.26) !important;
  background:linear-gradient(180deg,rgba(56,20,28,.86),rgba(18,9,14,.96)) !important;
}

@media(min-width:900px){
  body.exercise-active #settingsMenu.top-tools{
    left:50% !important;
    right:auto !important;
    width:min(560px, calc(100vw - 32px)) !important;
    transform:translateX(-50%) !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    top:calc(72px + env(safe-area-inset-top,0px)) !important;
  }
}

body.exercise-active .pass-bottom-controls{
  display:grid !important;
  width:100% !important;
  max-width:100% !important;
}

body.exercise-active .pass-bottom-controls:not(.has-prev),
body.exercise-active:not(.pass-has-prev) .pass-bottom-controls{
  grid-template-columns:1fr !important;
}

body.exercise-active .pass-bottom-controls:not(.has-prev) #prevBtn,
body.exercise-active:not(.pass-has-prev) .pass-bottom-controls #prevBtn,
body.exercise-active #prevBtn[aria-hidden="true"]{
  display:none !important;
  width:0 !important;
  min-width:0 !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
  overflow:hidden !important;
}

body.exercise-active .pass-bottom-controls:not(.has-prev) #nextBtn,
body.exercise-active:not(.pass-has-prev) .pass-bottom-controls #nextBtn{
  grid-column:1 / -1 !important;
  width:100% !important;
  max-width:none !important;
  min-width:0 !important;
  justify-content:center !important;
  white-space:nowrap !important;
}

body.exercise-active .pass-bottom-controls.has-prev,
body.exercise-active.pass-has-prev .pass-bottom-controls{
  grid-template-columns:minmax(92px,.34fr) minmax(0,1fr) !important;
}

body.exercise-active .pass-bottom-controls.has-prev #prevBtn,
body.exercise-active.pass-has-prev .pass-bottom-controls #prevBtn{
  display:inline-flex !important;
  width:100% !important;
  min-width:0 !important;
  padding:0 12px !important;
  border:1px solid var(--line) !important;
}

body.exercise-active.pseudo-fullscreen .sticky-nav{
  position:sticky !important;
  top:0 !important;
  z-index:700 !important;
}

body.exercise-active.pseudo-fullscreen .wrap,
body.exercise-active.pseudo-fullscreen #exerciseScreen{
  max-width:none !important;
  width:100% !important;
}

body.exercise-active.tv-mode .video-card{
  box-shadow:0 18px 58px rgba(0,0,0,.36), inset 0 1px 0 rgba(255,255,255,.04) !important;
}

@media(min-width:900px){
  body.exercise-active.tv-mode .stage-layout{
    grid-template-columns:minmax(0,1.6fr) minmax(320px,.55fr) !important;
  }
  body.exercise-active.tv-mode .video-wrap,
  body.exercise-active.tv-mode #videoWrap{
    max-height:68vh !important;
  }
}

/* Keep playlist toggle functional even after every older layer */
body.exercise-active.playlist-visible .playlist-card.open,
body.exercise-active.playlist-visible .playlist-card{
  display:block !important;
}

body.exercise-active.playlist-hidden .playlist-card:not(.open),
body.exercise-active .playlist-card[aria-hidden="true"]{
  display:none !important;
}


/* ==========================================================
   v95.19 DEEP BUGFIX PLUS 10
   Extra cleanup found by static audit.
   ========================================================== */

/* Tests page id is singular in HTML: #testScreen */
#testScreen .overview-head,
#testScreen .hero{
  background:
    linear-gradient(90deg,rgba(5,9,18,.94) 0%,rgba(8,15,29,.80) 52%,rgba(7,14,28,.55) 100%),
    var(--asset-tests) center right / cover no-repeat !important;
}

/* Live mode now has an actual, subtle effect: less chrome, more content. */
body.exercise-active.live-mode #exitPassBtn,
body.exercise-active.live-mode #openLink{
  display:none !important;
}

body.exercise-active.live-mode .sticky-nav{
  box-shadow:0 8px 22px rgba(0,0,0,.18) !important;
}

/* Stage/profile age consistency */
#profileScreen .developed-card .sub{
  overflow-wrap:anywhere;
}

/* Strong final guard: if previous is hidden, the main action can never collapse. */
body.exercise-active #prevBtn[aria-hidden="true"] + #nextBtn{
  grid-column:1 / -1 !important;
  width:100% !important;
  min-width:0 !important;
  max-width:none !important;
}


/* ==========================================================
   v95.20 DEVICE COMPATIBILITY PATCH
   Compatibility target:
   - phone portrait
   - large phone portrait
   - iPad portrait
   - iPad landscape
   - laptop/desktop
   ========================================================== */

/* General safety: no accidental horizontal scroll from legacy wide panels */
html,
body{
  max-width:100% !important;
  overflow-x:hidden !important;
}

*,
*::before,
*::after{
  box-sizing:border-box;
}

/* Tablet portrait should behave like tablet/desktop navigation, not mobile dropdown */
@media (min-width:768px) and (max-width:899px){
  body:not(.exercise-active) .app-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar{
    display:block !important;
    padding:14px !important;
    min-height:0 !important;
    overflow:visible !important;
  }

  body:not(.exercise-active) .app-location,
  body:not(.exercise-active) .app-primary-action,
  body:not(.exercise-active) .app-nav-toggle{
    display:none !important;
  }

  body:not(.exercise-active) .app-tabs,
  body.topbar-portal:not(.exercise-active) .app-tabs,
  body.topbar-hard-fixed:not(.exercise-active) .app-tabs{
    position:static !important;
    inset:auto !important;
    width:100% !important;
    max-width:none !important;
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    padding:0 !important;
    margin:0 !important;
    border:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  body:not(.exercise-active) .app-tab{
    min-height:64px !important;
    padding:12px 14px !important;
    border-radius:20px !important;
    font-size:clamp(17px,2.6vw,22px) !important;
  }
}

/* Preserve explicit mobile menu on phones only */
@media (max-width:767px){
  body:not(.exercise-active) .app-tab,
  body:not(.exercise-active) .app-nav-toggle,
  body.exercise-active .tool-btn,
  body.exercise-active #menuToggleBtn,
  body.exercise-active #prevBtn,
  body.exercise-active #nextBtn{
    min-height:44px !important;
  }
}

/* Touch-target cleanup for all common interactive controls */
button,
.profile-btn,
.seg-btn,
.app-tab,
.app-nav-toggle,
.shortcut-btn,
.tool-btn,
.main-btn,
.ghost-btn,
#menuToggleBtn,
#prevBtn,
#nextBtn{
  min-height:44px;
}

/* Pass menu should not overflow short landscape screens */
body.exercise-active #settingsMenu.top-tools{
  max-height:calc(100svh - 92px) !important;
  overflow:auto !important;
  overscroll-behavior:contain !important;
  -webkit-overflow-scrolling:touch !important;
}

/* iPhone/short landscape: pass menu top must be safer */
@media (max-height:520px) and (orientation:landscape){
  body.exercise-active #settingsMenu.top-tools{
    top:calc(48px + env(safe-area-inset-top,0px)) !important;
    max-height:calc(100svh - 64px) !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  }

  body.exercise-active #settingsMenu.top-tools .tool-btn{
    min-height:40px !important;
    font-size:12.5px !important;
    padding:7px 9px !important;
  }
}

/* iPad landscape / desktop training layout guardrails */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active .stage-layout{
    min-width:0 !important;
  }

  body.exercise-active .video-card,
  body.exercise-active .info-card{
    min-width:0 !important;
  }

  body.exercise-active .info-card{
    scrollbar-gutter:stable both-edges;
  }
}

/* iPad portrait active pass should stay clean and stacked */
@media (min-width:768px) and (max-width:899px){
  body.exercise-active .stage-layout{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:14px !important;
    max-width:min(760px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
  }

  body.exercise-active .video-wrap,
  body.exercise-active #videoWrap{
    aspect-ratio:16 / 9 !important;
    width:100% !important;
    height:auto !important;
  }

  body.exercise-active .pass-bottom-controls{
    max-width:min(760px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
  }
}

/* Video/iframe guard repeated last for Safari/iPad */
#videoWrap,
.video-wrap{
  contain:layout paint;
}

#videoWrap iframe,
#videoWrap video,
.video-wrap iframe,
.video-wrap video{
  width:100% !important;
  height:100% !important;
  max-width:none !important;
  max-height:none !important;
}

/* Reduce accidental huge typography on very small phones */
@media (max-width:380px){
  body.exercise-active .rx-line{
    font-size:clamp(42px,15vw,64px) !important;
  }

  body.exercise-active .exercise-name{
    font-size:clamp(30px,10.5vw,48px) !important;
  }

  body.exercise-active .rest-display{
    font-size:clamp(68px,20vw,116px) !important;
  }
}


/* ==========================================================
   v95.21 VISUAL POLISH + iPAD PASS MENU FIX
   Focus:
   - safer pass menu on iPad / desktop / short landscape screens
   - a little more mockup-aligned nav/card polish
   ========================================================== */

/* Pass menu must always stay fully inside viewport */
body.exercise-active #settingsMenu.top-tools{
  box-sizing:border-box !important;
  max-width:calc(100vw - 20px) !important;
  max-height:calc(100svh - 86px - env(safe-area-inset-bottom,0px)) !important;
  overflow:auto !important;
  overscroll-behavior:contain !important;
  -webkit-overflow-scrolling:touch !important;
}

/* iPad portrait: center but never outside */
@media (min-width:768px) and (max-width:899px){
  body.exercise-active #settingsMenu.top-tools{
    position:fixed !important;
    left:14px !important;
    right:14px !important;
    top:calc(64px + env(safe-area-inset-top,0px)) !important;
    width:auto !important;
    max-width:none !important;
    transform:none !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    max-height:calc(100svh - 92px - env(safe-area-inset-bottom,0px)) !important;
  }
}

/* iPad landscape + laptop: use inset positioning instead of transform centering */
@media (min-width:900px) and (max-width:1240px){
  body.exercise-active #settingsMenu.top-tools{
    position:fixed !important;
    left:16px !important;
    right:16px !important;
    top:calc(66px + env(safe-area-inset-top,0px)) !important;
    width:auto !important;
    max-width:none !important;
    transform:none !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    max-height:calc(100svh - 94px - env(safe-area-inset-bottom,0px)) !important;
  }

  body.exercise-active #settingsMenu.top-tools .danger-tool{
    grid-column:auto !important;
  }
}

/* Desktop: centered but still clamped safely */
@media (min-width:1241px){
  body.exercise-active #settingsMenu.top-tools{
    left:50% !important;
    right:auto !important;
    width:min(720px, calc(100vw - 48px)) !important;
    max-width:calc(100vw - 48px) !important;
    transform:translateX(-50%) !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  }
}

/* Short landscape: force a low-height compact menu */
@media (orientation:landscape) and (max-height:620px){
  body.exercise-active #settingsMenu.top-tools{
    top:calc(50px + env(safe-area-inset-top,0px)) !important;
    left:12px !important;
    right:12px !important;
    width:auto !important;
    transform:none !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    max-height:calc(100svh - 64px - env(safe-area-inset-bottom,0px)) !important;
    padding:8px !important;
    gap:7px !important;
  }

  body.exercise-active #settingsMenu.top-tools .tool-btn{
    min-height:40px !important;
    padding:7px 9px !important;
    font-size:12.5px !important;
    border-radius:14px !important;
  }
}

/* Extra iPad/browser safe fallback if svh behaves oddly */
@supports not (height: 100svh){
  body.exercise-active #settingsMenu.top-tools{
    max-height:calc(100vh - 96px) !important;
  }
}

/* Polish: top nav buttons should feel less heavy and more component-like */
@media (min-width:768px){
  body:not(.exercise-active) .app-tab{
    box-shadow:0 10px 26px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.025) !important;
  }

  body:not(.exercise-active) .app-tab.active{
    box-shadow:0 0 0 1px rgba(108,225,255,.22), 0 12px 30px rgba(0,0,0,.24), inset 0 -3px 0 rgba(108,225,255,.60) !important;
  }
}

/* Polish: reduce accidental "stacked cards" feel a bit more */
#startScreen .daily-primary,
#progressDashboard .daily-secondary,
.quickstats-panel,
#profileScreen .selector-panel,
#overviewScreen .panel,
#qaScreen .panel,
#testScreen .panel{
  box-shadow:0 12px 34px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.028) !important;
}

/* Polish: pass menu buttons read like toggles, not generic cards */
body.exercise-active #settingsMenu.top-tools .tool-btn{
  min-width:0 !important;
}

body.exercise-active #settingsMenu.top-tools .tool-btn b{
  padding:3px 7px !important;
  border-radius:999px !important;
  background:rgba(124,236,255,.10) !important;
}

body.exercise-active #settingsMenu.top-tools .tool-btn.off b{
  color:rgba(218,232,255,.58) !important;
  background:rgba(218,232,255,.06) !important;
}

/* Keep bottom controls clear above iPad/browser bottom bars */
body.exercise-active .pass-bottom-controls{
  padding-bottom:calc(10px + env(safe-area-inset-bottom,0px)) !important;
}


/* ==========================================================
   v95.22 iPAD PORTRAIT TOPBAR DEDUPE
   Bug: iPad portrait could show two top menus because legacy mobile
   topbar/dropdown rules and tablet inline nav rules both matched.
   Fix: 768-899px gets exactly one in-flow topbar with inline 2x2 nav.
   ========================================================== */

@media (min-width:768px) and (max-width:899px) and (orientation:portrait){
  body:not(.exercise-active)::before{
    display:none !important;
    content:none !important;
    height:0 !important;
    background:none !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:12px !important;
  }

  body:not(.exercise-active) .app-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar{
    position:relative !important;
    inset:auto !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    bottom:auto !important;
    transform:none !important;
    -webkit-transform:none !important;
    width:100% !important;
    max-width:100% !important;
    margin:0 0 14px 0 !important;
    padding:14px !important;
    display:block !important;
    overflow:visible !important;
    z-index:40 !important;
  }

  /* Hide the mobile dropdown trigger and all redundant header/action content */
  body:not(.exercise-active) .app-location,
  body:not(.exercise-active) .app-primary-action,
  body:not(.exercise-active) #appNavToggle,
  body:not(.exercise-active) .app-nav-toggle{
    display:none !important;
  }

  /* One single inline nav, not dropdown */
  body:not(.exercise-active) #appTabs.app-tabs,
  body:not(.exercise-active) .app-tabs,
  body.topbar-portal:not(.exercise-active) .app-tabs,
  body.topbar-hard-fixed:not(.exercise-active) .app-tabs{
    position:static !important;
    inset:auto !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    bottom:auto !important;
    display:grid !important;
    visibility:visible !important;
    opacity:1 !important;
    width:100% !important;
    max-width:none !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    padding:0 !important;
    margin:0 !important;
    border:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
    z-index:auto !important;
  }

  body:not(.exercise-active) .app-topbar.nav-open #appTabs.app-tabs,
  body:not(.exercise-active) .app-topbar.nav-open .app-tabs{
    display:grid !important;
  }

  body:not(.exercise-active) .app-tab{
    display:flex !important;
    min-height:64px !important;
    padding:12px 14px !important;
    border-radius:20px !important;
    align-items:center !important;
    justify-content:center !important;
    gap:9px !important;
    text-align:center !important;
    white-space:normal !important;
  }
}

/* iPad portrait but inside workout: normal pass header only, no app topbar */
@media (min-width:768px) and (max-width:899px) and (orientation:portrait){
  body.exercise-active .app-topbar{
    display:none !important;
  }

  body.exercise-active .sticky-nav{
    position:sticky !important;
    top:0 !important;
    z-index:500 !important;
  }
}

/* Defensive fallback: tablet inline nav must never be fixed/dropdown */
@media (min-width:768px) and (max-width:899px){
  body:not(.exercise-active) .app-tabs{
    position:static !important;
  }
}


/* ==========================================================
   v95.23 PASS OVERVIEW AUTOSCROLL
   - Current exercise is always aligned to the top visible row.
   - Active/upcoming row gets a 10s fill indicator for test.
   ========================================================== */

body.exercise-active .playlist-card{
  overflow:hidden !important;
}

body.exercise-active .mini-list{
  position:relative !important;
  scroll-behavior:smooth !important;
  overflow:auto !important;
  overscroll-behavior:contain !important;
  -webkit-overflow-scrolling:touch !important;
  scrollbar-gutter:stable both-edges !important;
}

/* Keep enough visible rows without stealing the whole pass screen */
body.exercise-active.playlist-visible .mini-list,
body.exercise-active .playlist-card.open .mini-list{
  max-height:min(44svh, 420px) !important;
}

/* On wider screens the list can be taller, but still internally scrollable */
@media(min-width:900px){
  body.exercise-active.playlist-visible .mini-list,
  body.exercise-active .playlist-card.open .mini-list{
    max-height:min(52svh, 520px) !important;
  }
}

body.exercise-active .mini-item{
  position:relative !important;
  overflow:hidden !important;
  min-height:58px !important;
  isolation:isolate !important;
}

body.exercise-active .mini-item > *:not(.mini-fill){
  position:relative !important;
  z-index:2 !important;
}

body.exercise-active .mini-fill{
  position:absolute !important;
  inset:0 auto 0 0 !important;
  width:0%;
  z-index:1 !important;
  pointer-events:none !important;
  background:linear-gradient(90deg,rgba(124,236,255,.18),rgba(72,160,255,.08)) !important;
  border-radius:inherit !important;
  transform-origin:left center !important;
}

body.exercise-active .mini-item.active .mini-fill,
body.exercise-active .mini-item.filling .mini-fill{
  animation:miniListFill var(--mini-fill-ms,10000ms) linear forwards;
}

@keyframes miniListFill{
  from{width:0%;}
  to{width:100%;}
}

/* Active row should read as the anchor/top row */
body.exercise-active .mini-item.active{
  border-color:rgba(124,236,255,.58) !important;
  box-shadow:0 0 0 1px rgba(124,236,255,.20), inset 3px 0 0 rgba(124,236,255,.82) !important;
}

/* Done rows stay calm so active row is obvious */
body.exercise-active .mini-item.done:not(.active){
  opacity:.66 !important;
}

/* If reduced motion is enabled, keep fill visible but don't animate */
@media (prefers-reduced-motion: reduce){
  body.exercise-active .mini-list{
    scroll-behavior:auto !important;
  }
  body.exercise-active .mini-item.active .mini-fill,
  body.exercise-active .mini-item.filling .mini-fill{
    animation:none !important;
    width:100% !important;
  }
}


/* ==========================================================
   v95.24 VIDEO PRELOAD FLOW
   - First video loads paused.
   - Bottom button starts the pass and unlocks sound.
   - Next video preloads during rest in a hidden-but-live layer.
   - Preloaded iframe is promoted into the active video slot.
   ========================================================== */

.video-preload-shell{
  position:relative !important;
  overflow:hidden !important;
}

.preload-video-wrap{
  position:absolute !important;
  width:2px !important;
  height:2px !important;
  left:-9999px !important;
  top:-9999px !important;
  opacity:.01 !important;
  pointer-events:none !important;
  overflow:hidden !important;
  contain:layout paint !important;
}

.preload-video-wrap iframe{
  width:220px !important;
  height:124px !important;
  border:0 !important;
}

.video-tap-fallback{
  position:absolute !important;
  left:50% !important;
  bottom:16px !important;
  transform:translateX(-50%) !important;
  z-index:12 !important;
  min-height:46px !important;
  padding:10px 16px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.42) !important;
  background:rgba(5,10,20,.92) !important;
  color:#fff !important;
  font-weight:950 !important;
  box-shadow:0 16px 40px rgba(0,0,0,.36), 0 0 0 1px rgba(124,236,255,.12) !important;
  backdrop-filter:blur(16px) saturate(130%) !important;
}

.video-tap-fallback.hide{
  display:none !important;
}

body.exercise-active #nextBtn{
  transition:transform .16s ease, box-shadow .16s ease, background .16s ease !important;
}

body.exercise-active:not(.pass-has-prev) #nextBtn{
  min-height:60px !important;
}

body.exercise-active .video-wrap iframe{
  background:#030713 !important;
}

body.exercise-active #videoWrap iframe#videoFrame{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  display:block !important;
}

body.exercise-active .rest-video-wrap + .preload-video-wrap,
body.exercise-active .video-preload-shell .preload-video-wrap{
  display:block !important;
}


/* ==========================================================
   v95.25 iPAD MEDIA + REST OVERVIEW POLISH
   - iPad landscape media fills its frame.
   - Remove stray top line / misaligned split view.
   - Rest periods become real rows in the exercise overview.
   - Rest row fill duration follows the actual rest length.
   ========================================================== */

/* Media card should be one clean frame with no extra top seam */
body.exercise-active .video-card{
  overflow:hidden !important;
  border-radius:24px !important;
  border:1px solid rgba(129,184,255,.16) !important;
  background:#030713 !important;
}

body.exercise-active .video-card::before,
body.exercise-active .video-card::after,
body.exercise-active .video-wrap::before,
body.exercise-active .video-wrap::after{
  content:none !important;
  display:none !important;
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
}

/* Video/rest media fills the available frame */
body.exercise-active #videoWrap,
body.exercise-active .video-wrap{
  width:100% !important;
  aspect-ratio:16 / 9 !important;
  overflow:hidden !important;
  background:#030713 !important;
  display:block !important;
  place-items:unset !important;
}

body.exercise-active #videoWrap iframe,
body.exercise-active .video-wrap iframe,
body.exercise-active #videoWrap video,
body.exercise-active .video-wrap video,
body.exercise-active #videoWrap img,
body.exercise-active .video-wrap img{
  width:100% !important;
  height:100% !important;
  max-width:none !important;
  max-height:none !important;
  object-fit:cover !important;
  border:0 !important;
  display:block !important;
}

/* Rest images also cover the full 16:9 media frame */
body.exercise-active .rest-stage,
body.exercise-active .rest-stage-v9510{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
  border-radius:0 !important;
  overflow:hidden !important;
}

body.exercise-active .rest-bg-img{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
}

/* iPad landscape / desktop: video and text start on exactly the same row */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active .stage-layout{
    align-items:start !important;
    gap:18px !important;
  }

  body.exercise-active .video-card,
  body.exercise-active .info-card{
    align-self:start !important;
    margin-top:0 !important;
  }

  body.exercise-active .video-card{
    top:76px !important;
  }

  body.exercise-active #videoWrap,
  body.exercise-active .video-wrap{
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    aspect-ratio:16 / 9 !important;
  }

  body.exercise-active .info-card{
    padding-top:18px !important;
  }
}

/* iPad portrait keeps clean stacked media */
@media (min-width:768px) and (max-width:899px){
  body.exercise-active #videoWrap,
  body.exercise-active .video-wrap{
    aspect-ratio:16 / 9 !important;
    height:auto !important;
  }
}

/* Overview list with exercise + rest rows */
body.exercise-active .mini-list{
  align-content:start !important;
}

body.exercise-active .mini-item{
  cursor:pointer !important;
}

body.exercise-active .mini-item .num{
  position:relative !important;
  z-index:2 !important;
}

body.exercise-active .mini-item.mini-rest{
  border-style:dashed !important;
  background:linear-gradient(180deg,rgba(124,236,255,.070),rgba(12,20,34,.82)) !important;
}

body.exercise-active .mini-item.mini-rest .num{
  color:#06101c !important;
  background:linear-gradient(180deg,#baf6ff,#58c8ff) !important;
  border-radius:999px !important;
  width:30px !important;
  height:30px !important;
  display:grid !important;
  place-items:center !important;
  font-weight:1000 !important;
}

body.exercise-active .mini-item.mini-rest .mini-title{
  color:#dffcff !important;
}

body.exercise-active .mini-item.active.mini-rest{
  border-color:rgba(124,236,255,.72) !important;
  box-shadow:0 0 0 1px rgba(124,236,255,.22), inset 3px 0 0 rgba(124,236,255,.92) !important;
}

/* Rest rows use actual rest-duration progress through data-fill-ms -> --mini-fill-ms */
body.exercise-active .mini-item.mini-rest .mini-fill{
  background:linear-gradient(90deg,rgba(124,236,255,.24),rgba(140,255,215,.10)) !important;
}

/* Current row should always be readable at the top of the scrolled list */
body.exercise-active .mini-item.active{
  scroll-margin-top:0 !important;
}

/* On iPad/desktop, list remains a vertical running order so rest rows are clear */
@media (min-width:900px){
  body.exercise-active .mini-list{
    grid-template-columns:1fr !important;
    max-height:min(46svh, 520px) !important;
  }

  body.exercise-active .mini-item{
    min-height:54px !important;
  }
}

/* On phones, keep list compact but still clearly sequential */
@media (max-width:899px){
  body.exercise-active .mini-list{
    grid-template-columns:1fr !important;
  }
}


/* ==========================================================
   v95.26 HARD MEDIA FILL + HARD AUTOSCROLL
   The previous version was too polite on iPad. This layer forces:
   - iframe/media to cover the entire media card
   - active list row to be the top visible row
   ========================================================== */

/* Hard media/frame fill */
body.exercise-active .video-card,
body.exercise-active .video-preload-shell{
  position:relative !important;
  padding:0 !important;
  overflow:hidden !important;
  background:#020713 !important;
  line-height:0 !important;
}

body.exercise-active #videoWrap.video-wrap,
body.exercise-active #videoWrap,
body.exercise-active .video-wrap{
  position:relative !important;
  display:block !important;
  width:100% !important;
  height:auto !important;
  aspect-ratio:16 / 9 !important;
  min-height:0 !important;
  max-height:none !important;
  padding:0 !important;
  margin:0 !important;
  overflow:hidden !important;
  background:#020713 !important;
  line-height:0 !important;
}

/* YouTube iframe: crop tiny embed/player edges and fill full 16:9 card */
body.exercise-active #videoWrap > iframe,
body.exercise-active #videoWrap iframe#videoFrame,
body.exercise-active .video-wrap > iframe,
body.exercise-active .video-wrap iframe{
  position:absolute !important;
  inset:50% auto auto 50% !important;
  width:101.8% !important;
  height:101.8% !important;
  min-width:101.8% !important;
  min-height:101.8% !important;
  max-width:none !important;
  max-height:none !important;
  transform:translate(-50%,-50%) !important;
  border:0 !important;
  display:block !important;
  background:#020713 !important;
}

/* Non-iframe media should fill normally */
body.exercise-active #videoWrap > video,
body.exercise-active #videoWrap > img,
body.exercise-active .video-wrap > video,
body.exercise-active .video-wrap > img{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  border:0 !important;
  display:block !important;
}

/* Rest stage must be full-bleed in the same frame */
body.exercise-active #videoWrap .rest-stage,
body.exercise-active #videoWrap .rest-stage-v9510,
body.exercise-active .video-wrap .rest-stage,
body.exercise-active .video-wrap .rest-stage-v9510{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
  margin:0 !important;
  border-radius:0 !important;
  overflow:hidden !important;
  line-height:normal !important;
}

body.exercise-active #videoWrap .rest-bg-img,
body.exercise-active .video-wrap .rest-bg-img{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
}

/* Remove seam/line from surrounding containers */
body.exercise-active .video-card,
body.exercise-active .video-card *,
body.exercise-active #videoWrap,
body.exercise-active #videoWrap *{
  box-decoration-break:clone;
}

body.exercise-active .video-card::before,
body.exercise-active .video-card::after,
body.exercise-active #videoWrap::before,
body.exercise-active #videoWrap::after{
  display:none !important;
  content:none !important;
}

/* iPad landscape alignment: both cards start on the same baseline */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active .stage-layout{
    align-items:start !important;
  }

  body.exercise-active .video-card,
  body.exercise-active .info-card{
    align-self:start !important;
    margin-top:0 !important;
  }
}

/* Hard autoscroll support */
body.exercise-active .mini-list{
  position:relative !important;
  display:grid !important;
  grid-auto-flow:row !important;
  grid-template-columns:1fr !important;
  align-content:start !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  scroll-behavior:auto !important;
  overscroll-behavior:contain !important;
  -webkit-overflow-scrolling:touch !important;
}

body.exercise-active .mini-item{
  scroll-margin-top:0 !important;
  min-height:56px !important;
}

body.exercise-active .mini-item[data-active="true"],
body.exercise-active .mini-item.active{
  order:0 !important;
}

/* Make it obvious which row is currently pinned to top */
body.exercise-active .mini-item[data-active="true"]{
  border-color:rgba(124,236,255,.72) !important;
  box-shadow:0 0 0 1px rgba(124,236,255,.22), inset 4px 0 0 rgba(124,236,255,.96) !important;
}


/* ==========================================================
   v95.27 YOUTUBE COVER FIT
   The iframe itself must stay 16:9 and cover the measured media frame.
   iPad/Safari was preserving video ratio inside a too-wide iframe,
   giving black side area. JS now sets exact pixel size; CSS supports it.
   ========================================================== */

body.exercise-active #videoWrap{
  position:relative !important;
  overflow:hidden !important;
  background:#020713 !important;
}

/* Let JS pixel sizing win. The iframe is centered and oversizes as needed. */
body.exercise-active #videoWrap > iframe.yt-cover-frame,
body.exercise-active #videoWrap iframe#videoFrame.yt-cover-frame{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:var(--yt-cover-w, auto);
  height:var(--yt-cover-h, auto);
  min-width:100% !important;
  min-height:100% !important;
  max-width:none !important;
  max-height:none !important;
  transform:translate(-50%,-50%) !important;
  border:0 !important;
  display:block !important;
  background:#020713 !important;
}

/* Fallback before JS has measured: make it taller, not just wider. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active #videoWrap > iframe.yt-cover-frame,
  body.exercise-active #videoWrap iframe#videoFrame.yt-cover-frame{
    width:112% !important;
    height:112% !important;
  }
}

/* Keep rest images untouched/full bleed */
body.exercise-active #videoWrap .rest-stage,
body.exercise-active #videoWrap .rest-stage-v9510{
  inset:0 !important;
  width:100% !important;
  height:100% !important;
}


/* ==========================================================
   v95.28 PASS START HERO
   Show a cinematic start image while the first film preloads.
   ========================================================== */
.video-wrap.start-video-wrap,
#videoWrap.start-video-wrap{
  position:relative !important;
  overflow:hidden !important;
  background:#020713 !important;
}
body.exercise-active .start-stage.start-stage-v9528,
#videoWrap.start-video-wrap .start-stage.start-stage-v9528{
  position:absolute !important;
  inset:0 !important;
  display:grid !important;
  align-items:end !important;
  justify-items:start !important;
  overflow:hidden !important;
  border-radius:inherit !important;
  background:#020713 !important;
}
body.exercise-active .start-stage.start-stage-v9528 .start-bg-img,
#videoWrap.start-video-wrap .start-stage.start-stage-v9528 .start-bg-img{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center center !important;
  display:block !important;
  filter:saturate(1.02) brightness(.90) contrast(1.04) !important;
}
body.exercise-active .start-stage.start-stage-v9528 .start-bg-overlay,
#videoWrap.start-video-wrap .start-stage.start-stage-v9528 .start-bg-overlay{
  position:absolute !important;
  inset:0 !important;
  background:
    radial-gradient(circle at 74% 34%, rgba(110,170,255,.18), transparent 30%),
    linear-gradient(90deg, rgba(2,8,18,.78) 0%, rgba(2,8,18,.44) 45%, rgba(2,8,18,.12) 100%),
    linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.36));
}
body.exercise-active .start-stage.start-stage-v9528 .start-card,
#videoWrap.start-video-wrap .start-stage.start-stage-v9528 .start-card{
  position:relative !important;
  z-index:2 !important;
  margin:24px !important;
  max-width:min(540px,72%) !important;
  padding:22px 24px !important;
  border-radius:30px !important;
  border:1px solid rgba(132,180,255,.24) !important;
  background:linear-gradient(180deg, rgba(5,12,26,.42), rgba(5,12,26,.18)) !important;
  box-shadow:0 16px 44px rgba(0,0,0,.34), inset 0 0 0 1px rgba(255,255,255,.03) !important;
  backdrop-filter:blur(4px) !important;
}
.start-badge{
  display:inline-flex !important;
  align-items:center !important;
  gap:8px !important;
  padding:8px 14px !important;
  border-radius:999px !important;
  border:1px solid rgba(150,208,255,.38) !important;
  color:#9fe2ff !important;
  font-size:12px !important;
  font-weight:800 !important;
  letter-spacing:.16em !important;
  text-transform:uppercase !important;
  background:rgba(8,20,42,.36) !important;
}
.start-title{
  margin-top:14px !important;
  font-size:clamp(40px,7vw,68px) !important;
  line-height:.94 !important;
  font-weight:900 !important;
  color:#fff !important;
}
.start-sub{
  margin-top:12px !important;
  font-size:clamp(18px,2.4vw,28px) !important;
  line-height:1.18 !important;
  color:rgba(255,255,255,.96) !important;
}
.start-progress{
  margin-top:16px !important;
  width:min(320px,80%) !important;
  height:10px !important;
  border-radius:999px !important;
  background:rgba(112,144,190,.24) !important;
  overflow:hidden !important;
}
.start-progress-bar{
  width:34% !important;
  height:100% !important;
  border-radius:inherit !important;
  background:linear-gradient(90deg,#9fe2ff,#74afff) !important;
  box-shadow:0 0 22px rgba(116,175,255,.45) !important;
}
.start-hint,
.start-equipment{
  margin-top:12px !important;
  font-size:15px !important;
  line-height:1.35 !important;
  color:rgba(224,235,255,.88) !important;
}
.start-equipment{color:rgba(200,224,255,.84) !important;}
@media (max-width:820px){
  body.exercise-active .start-stage.start-stage-v9528 .start-card,
  #videoWrap.start-video-wrap .start-stage.start-stage-v9528 .start-card{
    max-width:calc(100% - 36px) !important;
    margin:18px !important;
    padding:18px !important;
    border-radius:24px !important;
  }
  .start-title{font-size:clamp(34px,11vw,54px) !important;}
  .start-sub{font-size:clamp(16px,4.5vw,22px) !important;}
  .start-hint,
  .start-equipment{font-size:14px !important;}
}


/* ==========================================================
   v95.29 MEDIA CLIP + START HERO CLEANUP
   - Start hero no longer shows descriptive coach text.
   - YouTube iframe is clipped inside its own media frame.
   - Iframe cannot bleed down over the exercise list.
   ========================================================== */

/* Hard parent clip: media cannot escape into playlist/list */
body.exercise-active .video-card,
body.exercise-active .video-preload-shell{
  position:relative !important;
  overflow:hidden !important;
  contain:layout paint !important;
  isolation:isolate !important;
  padding:0 !important;
  line-height:0 !important;
  background:#020713 !important;
  border-radius:24px !important;
  clip-path:inset(0 round 24px) !important;
}

/* The actual media frame owns the 16:9 height. Nothing inside may change document flow. */
body.exercise-active #videoWrap,
body.exercise-active #videoWrap.video-wrap,
body.exercise-active .video-wrap{
  position:relative !important;
  display:block !important;
  width:100% !important;
  aspect-ratio:16 / 9 !important;
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  overflow:hidden !important;
  contain:layout paint !important;
  isolation:isolate !important;
  padding:0 !important;
  margin:0 !important;
  line-height:0 !important;
  background:#020713 !important;
  border-radius:inherit !important;
  clip-path:inset(0 round 24px) !important;
}

/* Replace the too-aggressive old iframe cover rules.
   It is still cover-sized, but the parent clips it reliably. */
body.exercise-active #videoWrap > iframe,
body.exercise-active #videoWrap iframe#videoFrame,
body.exercise-active #videoWrap > iframe.yt-cover-frame,
body.exercise-active #videoWrap iframe#videoFrame.yt-cover-frame,
body.exercise-active .video-wrap > iframe,
body.exercise-active .video-wrap iframe{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:var(--yt-cover-w, 100%) !important;
  height:var(--yt-cover-h, 100%) !important;
  min-width:100% !important;
  min-height:100% !important;
  max-width:none !important;
  max-height:none !important;
  transform:translate(-50%,-50%) !important;
  border:0 !important;
  display:block !important;
  background:#020713 !important;
  z-index:1 !important;
}

/* Kill the previous broad 112% fallback on iPad landscape. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active #videoWrap > iframe.yt-cover-frame,
  body.exercise-active #videoWrap iframe#videoFrame.yt-cover-frame{
    width:var(--yt-cover-w, 100%) !important;
    height:var(--yt-cover-h, 100%) !important;
  }
}

/* Keep overlay UI above media but inside the same clipped card. */
body.exercise-active .video-tap-fallback{
  z-index:5 !important;
}

/* Playlist/list must always start after the clipped media card. */
body.exercise-active .playlist-card,
body.exercise-active .mini-list{
  position:relative !important;
  z-index:3 !important;
}

/* Start image: cleaner, less text-heavy */
body.exercise-active .start-stage.start-stage-v9528 .start-card,
#videoWrap.start-video-wrap .start-stage.start-stage-v9528 .start-card{
  max-width:min(460px,64%) !important;
  padding:20px 22px !important;
}

body.exercise-active .start-hint,
body.exercise-active .start-equipment,
#videoWrap.start-video-wrap .start-hint,
#videoWrap.start-video-wrap .start-equipment{
  display:none !important;
}

.start-title{
  margin-top:12px !important;
}

.start-sub{
  margin-top:10px !important;
}

.start-progress{
  margin-top:14px !important;
}

@media (max-width:820px){
  body.exercise-active .start-stage.start-stage-v9528 .start-card,
  #videoWrap.start-video-wrap .start-stage.start-stage-v9528 .start-card{
    max-width:calc(100% - 36px) !important;
  }
}


/* ==========================================================
   v95.30 PASS VIEW STRUCTURAL FIX
   This is a structural correction, not another iframe-only patch.
   iPad/desktop pass view becomes a clear grid:
   1. top pass header
   2. media + info on the same row
   3. exercise overview/list below
   4. bottom controls below/sticky
   ========================================================== */

@media (min-width:900px) and (orientation:landscape){
  body.exercise-active #exerciseScreen.active{
    display:grid !important;
    grid-template-areas:
      "passnav"
      "stage"
      "playlist"
      "controls" !important;
    grid-template-columns:1fr !important;
    gap:12px !important;
    align-items:start !important;
    width:100% !important;
    max-width:none !important;
    padding:0 14px calc(14px + env(safe-area-inset-bottom,0px)) !important;
    overflow-x:hidden !important;
  }

  body.exercise-active #exerciseScreen.active .sticky-nav{
    grid-area:passnav !important;
    position:sticky !important;
    top:0 !important;
    z-index:70 !important;
    width:100% !important;
    max-width:min(1360px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
  }

  body.exercise-active #exerciseScreen.active .stage-layout{
    grid-area:stage !important;
    display:grid !important;
    grid-template-columns:minmax(0, 1fr) minmax(310px, 420px) !important;
    gap:18px !important;
    align-items:start !important;
    width:100% !important;
    max-width:min(1360px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
    overflow:visible !important;
    position:relative !important;
  }

  /* Critical: no sticky/top on the media card.
     Sticky was the source of visual offset and row confusion. */
  body.exercise-active #exerciseScreen.active .video-card,
  body.exercise-active #exerciseScreen.active .video-preload-shell{
    grid-column:1 !important;
    grid-row:1 !important;
    position:relative !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    bottom:auto !important;
    transform:none !important;
    align-self:start !important;
    margin:0 !important;
    width:100% !important;
    height:auto !important;
    z-index:1 !important;
    overflow:hidden !important;
    contain:layout paint !important;
    isolation:isolate !important;
    border-radius:24px !important;
    clip-path:none !important;
  }

  body.exercise-active #exerciseScreen.active .info-card{
    grid-column:2 !important;
    grid-row:1 !important;
    align-self:start !important;
    margin:0 !important;
    width:100% !important;
    min-width:0 !important;
    max-height:none !important;
    height:auto !important;
    overflow:visible !important;
    z-index:1 !important;
    padding:18px !important;
  }

  /* One owned media box. The media box, not the iframe, defines the row height. */
  body.exercise-active #exerciseScreen.active #videoWrap,
  body.exercise-active #exerciseScreen.active #videoWrap.video-wrap,
  body.exercise-active #exerciseScreen.active .video-wrap{
    position:relative !important;
    display:block !important;
    width:100% !important;
    aspect-ratio:16 / 9 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:hidden !important;
    contain:layout paint !important;
    isolation:isolate !important;
    margin:0 !important;
    padding:0 !important;
    line-height:0 !important;
    background:#020713 !important;
    border-radius:24px !important;
    clip-path:none !important;
  }

  /* The iframe can be larger than the media box, but the media box clips it.
     No iframe may participate in document flow or overlap the list. */
  body.exercise-active #exerciseScreen.active #videoWrap > iframe,
  body.exercise-active #exerciseScreen.active #videoWrap iframe#videoFrame,
  body.exercise-active #exerciseScreen.active #videoWrap > iframe.yt-cover-frame,
  body.exercise-active #exerciseScreen.active #videoWrap iframe#videoFrame.yt-cover-frame{
    position:absolute !important;
    left:50% !important;
    top:50% !important;
    width:var(--yt-cover-w, 100%) !important;
    height:var(--yt-cover-h, 100%) !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;
    transform:translate(-50%,-50%) !important;
    display:block !important;
    border:0 !important;
    z-index:1 !important;
    background:#020713 !important;
  }

  body.exercise-active #exerciseScreen.active #videoWrap .rest-stage,
  body.exercise-active #exerciseScreen.active #videoWrap .rest-stage-v9510,
  body.exercise-active #exerciseScreen.active #videoWrap .start-stage,
  body.exercise-active #exerciseScreen.active #videoWrap .start-stage-v9528{
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    min-height:0 !important;
    overflow:hidden !important;
    z-index:2 !important;
    border-radius:24px !important;
  }

  body.exercise-active #exerciseScreen.active .playlist-card{
    grid-area:playlist !important;
    position:relative !important;
    z-index:2 !important;
    width:100% !important;
    max-width:min(1360px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
    padding:10px !important;
    max-height:min(28svh, 260px) !important;
    overflow:auto !important;
    contain:layout paint !important;
    isolation:isolate !important;
    clear:both !important;
  }

  body.exercise-active.playlist-visible #exerciseScreen.active .playlist-card,
  body.exercise-active #exerciseScreen.active .playlist-card.open{
    display:block !important;
  }

  body.exercise-active.playlist-hidden #exerciseScreen.active .playlist-card,
  body.exercise-active #exerciseScreen.active .playlist-card[aria-hidden="true"]{
    display:none !important;
  }

  body.exercise-active #exerciseScreen.active .mini-list{
    grid-template-columns:1fr !important;
    max-height:none !important;
    overflow:auto !important;
  }

  body.exercise-active #exerciseScreen.active .pass-bottom-controls{
    grid-area:controls !important;
    position:sticky !important;
    bottom:0 !important;
    z-index:60 !important;
    width:100% !important;
    max-width:min(1360px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
    left:auto !important;
    right:auto !important;
    transform:none !important;
    padding:8px 0 calc(8px + env(safe-area-inset-bottom,0px)) !important;
    background:linear-gradient(180deg,rgba(5,10,19,0),rgba(5,10,19,.82) 34%,rgba(5,10,19,.98)) !important;
  }

  /* Top alignment guard: media and info must share the exact same grid row. */
  body.exercise-active #exerciseScreen.active .video-card,
  body.exercise-active #exerciseScreen.active .info-card{
    margin-top:0 !important;
    translate:none !important;
  }
}

/* iPad portrait and phones keep stacked layout, but also no media leakage. */
@media (max-width:899px){
  body.exercise-active .video-card,
  body.exercise-active .video-preload-shell,
  body.exercise-active #videoWrap,
  body.exercise-active .video-wrap{
    overflow:hidden !important;
    contain:layout paint !important;
    isolation:isolate !important;
  }

  body.exercise-active #videoWrap > iframe,
  body.exercise-active #videoWrap iframe#videoFrame{
    position:absolute !important;
    left:50% !important;
    top:50% !important;
    transform:translate(-50%,-50%) !important;
  }
}

/* Debug killer: old sticky/top rules must lose after this point. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active .stage-layout > .video-card{
    position:relative !important;
    top:auto !important;
  }
}


/* ==========================================================
   v95.31 VIDEO EXACT FIT + AUTOSCROLL CONTAINER FIX
   v95.30 fixed the structure. Therefore YouTube no longer needs cover crop.
   Exact 16:9 iframe fit prevents the 1 cm left/right visual offset.
   Autoscroll now targets the real scroll container.
   ========================================================== */

@media (min-width:900px) and (orientation:landscape){
  /* Make the visible media frame the single source of truth. */
  body.exercise-active #exerciseScreen.active #videoWrap,
  body.exercise-active #exerciseScreen.active #videoWrap.video-wrap,
  body.exercise-active #exerciseScreen.active .video-wrap{
    aspect-ratio:16 / 9 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:hidden !important;
    contain:layout paint !important;
    isolation:isolate !important;
    background:#020713 !important;
    border-radius:24px !important;
  }

  /* No crop, no center transform, no JS pixel-cover.
     If the box is 16:9, iframe should be exact 100%. */
  body.exercise-active #exerciseScreen.active #videoWrap > iframe,
  body.exercise-active #exerciseScreen.active #videoWrap iframe#videoFrame,
  body.exercise-active #exerciseScreen.active #videoWrap > iframe.yt-cover-frame,
  body.exercise-active #exerciseScreen.active #videoWrap iframe#videoFrame.yt-cover-frame,
  body.exercise-active #exerciseScreen.active #videoWrap iframe.yt-exact-frame{
    position:absolute !important;
    inset:0 !important;
    left:0 !important;
    top:0 !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:100% !important;
    max-height:100% !important;
    transform:none !important;
    border:0 !important;
    display:block !important;
    background:#020713 !important;
    z-index:1 !important;
  }

  /* Playlist card is allowed to be the scroll owner.
     Keep mini-list content regular so JS can pin active row. */
  body.exercise-active #exerciseScreen.active .playlist-card{
    overflow:auto !important;
    scroll-behavior:auto !important;
    overscroll-behavior:contain !important;
    -webkit-overflow-scrolling:touch !important;
  }

  body.exercise-active #exerciseScreen.active .mini-list{
    overflow:visible !important;
    max-height:none !important;
    scroll-behavior:auto !important;
  }

  body.exercise-active #exerciseScreen.active .mini-item.active,
  body.exercise-active #exerciseScreen.active .mini-item[data-active="true"]{
    scroll-margin-top:0 !important;
  }
}

/* Phones/tablets stacked: exact-fit iframe also safer now that media box owns ratio. */
@media (max-width:899px){
  body.exercise-active #videoWrap > iframe,
  body.exercise-active #videoWrap iframe#videoFrame,
  body.exercise-active #videoWrap iframe.yt-cover-frame,
  body.exercise-active #videoWrap iframe.yt-exact-frame{
    inset:0 !important;
    left:0 !important;
    top:0 !important;
    width:100% !important;
    height:100% !important;
    max-width:100% !important;
    max-height:100% !important;
    transform:none !important;
  }
}


/* ==========================================================
   v95.32 MEDIA CARD OWNS THE FRAME
   The problem left in v95.31 was two "visible frames":
   .video-card and #videoWrap. The inner frame could look offset.
   Now the outer .video-card owns the exact 16:9 frame and the inner
   media layer is absolute inset:0.
   ========================================================== */

@media (min-width:900px) and (orientation:landscape){
  /* Outer visible card owns size, ratio, clipping and border. */
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell{
    position:relative !important;
    display:block !important;
    aspect-ratio:16 / 9 !important;
    width:100% !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    padding:0 !important;
    margin:0 !important;
    overflow:hidden !important;
    contain:layout paint !important;
    isolation:isolate !important;
    border-radius:24px !important;
    background:#020713 !important;
    line-height:0 !important;
    box-sizing:border-box !important;
  }

  /* Inner media layer no longer creates its own separate visual frame. */
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap.video-wrap,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap.video-wrap{
    position:absolute !important;
    inset:0 !important;
    display:block !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:100% !important;
    max-height:100% !important;
    aspect-ratio:auto !important;
    padding:0 !important;
    margin:0 !important;
    overflow:hidden !important;
    border-radius:inherit !important;
    background:#020713 !important;
    line-height:0 !important;
    contain:layout paint !important;
    isolation:isolate !important;
    box-sizing:border-box !important;
  }

  /* Actual iframe fills the owned card exactly. No transform, no cover-crop, no inherited width. */
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap > iframe,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap > iframe,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap iframe#videoFrame,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap iframe#videoFrame,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap iframe.yt-cover-frame,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap iframe.yt-cover-frame,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap iframe.yt-exact-frame,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap iframe.yt-exact-frame{
    position:absolute !important;
    inset:0 !important;
    left:0 !important;
    top:0 !important;
    right:auto !important;
    bottom:auto !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:100% !important;
    max-height:100% !important;
    padding:0 !important;
    margin:0 !important;
    transform:none !important;
    border:0 !important;
    display:block !important;
    background:#020713 !important;
    z-index:1 !important;
    box-sizing:border-box !important;
  }

  /* Start/rest visual overlays also fill the single owned frame. */
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap .start-stage,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap .start-stage,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap .start-stage-v9528,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap .start-stage-v9528,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap .rest-stage,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap .rest-stage,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-card > #videoWrap .rest-stage-v9510,
  body.exercise-active #exerciseScreen.active .stage-layout > .video-preload-shell > #videoWrap .rest-stage-v9510{
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:100% !important;
    max-height:100% !important;
    border-radius:inherit !important;
    overflow:hidden !important;
  }

  /* Autoscroll breathing room: the active row should not touch the exact top edge. */
  body.exercise-active #exerciseScreen.active .playlist-card{
    scroll-padding-top:8px !important;
  }

  body.exercise-active #exerciseScreen.active .mini-item.active,
  body.exercise-active #exerciseScreen.active .mini-item[data-active="true"]{
    scroll-margin-top:8px !important;
  }
}

/* Stacked views keep the old behavior; only add the 2mm top breathing room. */
@media (max-width:899px){
  body.exercise-active .playlist-card{
    scroll-padding-top:8px !important;
  }
  body.exercise-active .mini-item.active,
  body.exercise-active .mini-item[data-active="true"]{
    scroll-margin-top:8px !important;
  }
}


/* ==========================================================
   v95.33 PASS CONTROLS + REAL VIDEO SLOT
   Fixes:
   - active-row fill does not run before pass start
   - controls move to top in iPad/desktop landscape so info height cannot push them out
   - media slot is defined by the single outer .video-card, not nested ratio wrappers
   - TV and Live modes now have visible effects
   ========================================================== */

@media (min-width:900px) and (orientation:landscape){
  body.exercise-active #exerciseScreen.active{
    display:grid !important;
    grid-template-areas:
      "passnav controls"
      "stage stage"
      "playlist playlist" !important;
    grid-template-columns:1fr minmax(260px, 380px) !important;
    grid-template-rows:auto auto minmax(0, auto) !important;
    column-gap:14px !important;
    row-gap:12px !important;
    align-items:start !important;
    padding:0 14px calc(14px + env(safe-area-inset-bottom,0px)) !important;
    overflow:hidden auto !important;
  }

  body.exercise-active #exerciseScreen.active .sticky-nav{
    grid-area:passnav !important;
    position:sticky !important;
    top:0 !important;
    z-index:80 !important;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
  }

  /* Controls are top-right now, never below a tall info panel. */
  body.exercise-active #exerciseScreen.active .pass-bottom-controls{
    grid-area:controls !important;
    position:sticky !important;
    top:0 !important;
    bottom:auto !important;
    z-index:82 !important;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:8px 0 !important;
    display:grid !important;
    grid-template-columns:minmax(88px,.45fr) minmax(160px,1fr) !important;
    gap:8px !important;
    align-items:center !important;
    background:linear-gradient(180deg,rgba(5,10,19,.98),rgba(5,10,19,.78),rgba(5,10,19,0)) !important;
    transform:none !important;
  }

  body.exercise-active #exerciseScreen.active .pass-bottom-controls #prevBtn,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls #nextBtn{
    min-height:52px !important;
    height:52px !important;
    padding:8px 12px !important;
    font-size:clamp(15px,1.6vw,20px) !important;
    border-radius:18px !important;
  }

  body.exercise-active #exerciseScreen.active:not(.pass-has-prev) .pass-bottom-controls{
    grid-template-columns:1fr !important;
  }

  body.exercise-active #exerciseScreen.active:not(.pass-has-prev) .pass-bottom-controls #prevBtn{
    display:none !important;
  }

  body.exercise-active #exerciseScreen.active .stage-layout{
    grid-area:stage !important;
    display:grid !important;
    grid-template-columns:minmax(0, 1fr) minmax(330px, 430px) !important;
    grid-template-rows:auto !important;
    gap:18px !important;
    align-items:start !important;
    width:100% !important;
    max-width:min(1380px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
    overflow:visible !important;
  }

  /* THE media slot. One slot, one ratio, no nested visible frame. */
  body.exercise-active #exerciseScreen.active .video-card.video-preload-shell{
    grid-column:1 !important;
    grid-row:1 !important;
    position:relative !important;
    display:block !important;
    width:100% !important;
    aspect-ratio:16 / 9 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    padding:0 !important;
    margin:0 !important;
    overflow:hidden !important;
    contain:layout paint !important;
    isolation:isolate !important;
    border-radius:24px !important;
    line-height:0 !important;
    background:#020713 !important;
  }

  body.exercise-active #exerciseScreen.active .video-card.video-preload-shell > #videoWrap.video-wrap,
  body.exercise-active #exerciseScreen.active .video-card.video-preload-shell > #videoWrap{
    position:absolute !important;
    inset:0 !important;
    display:block !important;
    width:auto !important;
    height:auto !important;
    min-width:0 !important;
    min-height:0 !important;
    max-width:none !important;
    max-height:none !important;
    aspect-ratio:auto !important;
    margin:0 !important;
    padding:0 !important;
    border-radius:inherit !important;
    overflow:hidden !important;
    background:#020713 !important;
    line-height:0 !important;
    contain:paint !important;
  }

  /* Hard reset of all old iframe cover/offset rules. */
  body.exercise-active #exerciseScreen.active .video-card.video-preload-shell > #videoWrap > iframe,
  body.exercise-active #exerciseScreen.active .video-card.video-preload-shell > #videoWrap iframe#videoFrame,
  body.exercise-active #exerciseScreen.active .video-card.video-preload-shell > #videoWrap iframe.yt-cover-frame,
  body.exercise-active #exerciseScreen.active .video-card.video-preload-shell > #videoWrap iframe.yt-exact-frame{
    position:absolute !important;
    inset:0 !important;
    left:0 !important;
    top:0 !important;
    right:0 !important;
    bottom:0 !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:100% !important;
    max-height:100% !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    transform:none !important;
    translate:none !important;
    display:block !important;
    object-fit:fill !important;
    background:#020713 !important;
    z-index:1 !important;
  }

  body.exercise-active #exerciseScreen.active .info-card{
    grid-column:2 !important;
    grid-row:1 !important;
    align-self:start !important;
    margin:0 !important;
    width:100% !important;
    max-height:calc(100svh - 128px) !important;
    overflow:auto !important;
    z-index:1 !important;
  }

  body.exercise-active #exerciseScreen.active .playlist-card{
    grid-area:playlist !important;
    width:100% !important;
    max-width:min(1380px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
    max-height:min(28svh, 250px) !important;
    overflow:auto !important;
  }

  body.exercise-active #exerciseScreen.active .mini-list{
    overflow:visible !important;
    max-height:none !important;
  }
}

/* TV mode: media-first. Hide list, shrink info, larger media footprint. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active.tv-mode #exerciseScreen.active{
    grid-template-areas:
      "passnav controls"
      "stage stage" !important;
  }

  body.exercise-active.tv-mode #exerciseScreen.active .playlist-card{
    display:none !important;
  }

  body.exercise-active.tv-mode #exerciseScreen.active .stage-layout{
    grid-template-columns:minmax(0, 1.25fr) minmax(280px, 360px) !important;
  }

  body.exercise-active.tv-mode #exerciseScreen.active .info-card{
    max-height:calc(100svh - 132px) !important;
  }
}

/* Live mode: less chrome, more training surface. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active.live-mode #exerciseScreen.active .info-card{
    padding:14px !important;
  }

  body.exercise-active.live-mode #exerciseScreen.active .exercise-kicker{
    margin-bottom:6px !important;
  }

  body.exercise-active.live-mode #exerciseScreen.active .exercise-name{
    font-size:clamp(34px,4.2vw,64px) !important;
  }

  body.exercise-active.live-mode #exerciseScreen.active .coach-cues{
    padding:14px !important;
  }
}

/* Start hero, rest hero and fallback cards fill the same single media slot. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active #exerciseScreen.active #videoWrap .start-stage,
  body.exercise-active #exerciseScreen.active #videoWrap .start-stage-v9528,
  body.exercise-active #exerciseScreen.active #videoWrap .rest-stage,
  body.exercise-active #exerciseScreen.active #videoWrap .rest-stage-v9510,
  body.exercise-active #exerciseScreen.active #videoWrap .no-video{
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:100% !important;
    max-height:100% !important;
    overflow:hidden !important;
    border-radius:inherit !important;
  }
}


/* ==========================================================
   v95.34 SELF-QA LAYOUT FIX
   Root cause found in visual QA: old localStorage had TV/Live ON by default.
   That made the playlist both visible and removed from the TV grid, so it
   auto-placed on the right and destroyed the iPad landscape layout.
   ========================================================== */

/* Guard: if TV mode is on, the playlist is really hidden even if old inline state exists. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active.tv-mode #exerciseScreen.active .playlist-card{
    display:none !important;
  }

  /* Standard coaching layout: top nav + top controls, then media/info, then list. */
  body.exercise-active:not(.tv-mode) #exerciseScreen.active{
    grid-template-areas:
      "passnav controls"
      "stage stage"
      "playlist playlist" !important;
  }

  body.exercise-active:not(.tv-mode) #exerciseScreen.active .playlist-card{
    grid-area:playlist !important;
    display:block !important;
    width:100% !important;
    max-width:min(1380px, calc(100vw - 28px)) !important;
    margin:0 auto !important;
    max-height:min(28svh,250px) !important;
    overflow:auto !important;
  }

  /* Keep the media/info row stable and wide; never let playlist join this row. */
  body.exercise-active:not(.tv-mode) #exerciseScreen.active .stage-layout{
    grid-area:stage !important;
    display:grid !important;
    grid-template-columns:minmax(0,1fr) minmax(330px,430px) !important;
    gap:18px !important;
    align-items:start !important;
    max-width:min(1380px, calc(100vw - 28px)) !important;
    width:100% !important;
    margin:0 auto !important;
  }

  body.exercise-active:not(.tv-mode) #exerciseScreen.active .video-card.video-preload-shell{
    grid-column:1 !important;
    grid-row:1 !important;
    width:100% !important;
    aspect-ratio:16 / 9 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:hidden !important;
    position:relative !important;
    margin:0 !important;
  }

  body.exercise-active:not(.tv-mode) #exerciseScreen.active .info-card{
    grid-column:2 !important;
    grid-row:1 !important;
    align-self:start !important;
    margin:0 !important;
    max-height:calc(100svh - 128px) !important;
    overflow:auto !important;
  }

  /* Start image overlay: keep it visual, not text-heavy, so it cannot clip in the media slot. */
  body.exercise-active #exerciseScreen.active #videoWrap.start-video-wrap .start-card{
    position:absolute !important;
    left:18px !important;
    bottom:18px !important;
    margin:0 !important;
    padding:0 !important;
    max-width:none !important;
    width:auto !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
    backdrop-filter:none !important;
  }

  body.exercise-active #exerciseScreen.active #videoWrap.start-video-wrap .start-title,
  body.exercise-active #exerciseScreen.active #videoWrap.start-video-wrap .start-sub,
  body.exercise-active #exerciseScreen.active #videoWrap.start-video-wrap .start-progress,
  body.exercise-active #exerciseScreen.active #videoWrap.start-video-wrap .start-hint,
  body.exercise-active #exerciseScreen.active #videoWrap.start-video-wrap .start-equipment{
    display:none !important;
  }

  body.exercise-active #exerciseScreen.active #videoWrap.start-video-wrap .start-badge{
    display:inline-flex !important;
    font-size:11px !important;
    padding:7px 12px !important;
    border-radius:999px !important;
    background:rgba(5,14,28,.70) !important;
  }
}

/* Live mode should not unexpectedly rearrange layout; it only tightens content. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active.live-mode:not(.tv-mode) #exerciseScreen.active .playlist-card{
    display:block !important;
  }
}


/* ==========================================================
   v95.35 CONTROLS + START COUNTDOWN + FULLSCREEN FIX
   - Back button is small and sits beside Next in the top controls.
   - Active list-row fill does not animate before the pass is started.
   - Fullscreen uses pseudo-fullscreen only, avoiding browser-native X overlay.
   ========================================================== */

/* Prevent the first active row from "counting down" before Starta pass is tapped.
   Older rule animated .mini-item.active .mini-fill, so JS could not stop it alone. */
body.exercise-active .mini-item.active:not(.filling) .mini-fill,
body.exercise-active .mini-item[data-active="true"]:not(.filling) .mini-fill{
  animation:none !important;
  width:0% !important;
  transform:none !important;
}

/* Once started, filling class owns the animation. */
body.exercise-active .mini-item.filling .mini-fill{
  animation:miniListFill var(--mini-fill-ms,10000ms) linear forwards !important;
}

/* iPad/desktop top pass controls: compact back button + large next button. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active #exerciseScreen.active .pass-bottom-controls,
  body.exercise-active.pass-has-prev #exerciseScreen.active .pass-bottom-controls,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls.has-prev{
    grid-template-columns:54px minmax(160px,1fr) !important;
    max-width:420px !important;
    justify-self:end !important;
  }

  body.exercise-active #exerciseScreen.active:not(.pass-has-prev) .pass-bottom-controls,
  body.exercise-active:not(.pass-has-prev) #exerciseScreen.active .pass-bottom-controls,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls:not(.has-prev){
    grid-template-columns:1fr !important;
    max-width:420px !important;
    justify-self:end !important;
  }

  body.exercise-active #exerciseScreen.active .pass-bottom-controls #prevBtn.compact-prev,
  body.exercise-active.pass-has-prev #exerciseScreen.active .pass-bottom-controls #prevBtn.compact-prev,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls.has-prev #prevBtn.compact-prev{
    display:inline-grid !important;
    place-items:center !important;
    width:54px !important;
    min-width:54px !important;
    max-width:54px !important;
    height:52px !important;
    min-height:52px !important;
    padding:0 !important;
    margin:0 !important;
    border-radius:18px !important;
    font-size:28px !important;
    line-height:1 !important;
    font-weight:950 !important;
    text-align:center !important;
  }

  body.exercise-active #exerciseScreen.active .pass-bottom-controls #nextBtn{
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
  }
}

/* Mobile/portrait: if back appears, keep it compact too. */
@media (max-width:899px){
  body.exercise-active .pass-bottom-controls.has-prev,
  body.exercise-active.pass-has-prev .pass-bottom-controls{
    grid-template-columns:52px minmax(0,1fr) !important;
  }

  body.exercise-active .pass-bottom-controls #prevBtn.compact-prev{
    width:52px !important;
    min-width:52px !important;
    max-width:52px !important;
    padding:0 !important;
    font-size:26px !important;
  }
}

/* Pseudo-fullscreen only: no native browser X can cover the pass menu. */
body.exercise-active.pseudo-fullscreen{
  overflow:hidden !important;
}

body.exercise-active.pseudo-fullscreen #exerciseScreen.active{
  position:fixed !important;
  inset:0 !important;
  width:100vw !important;
  height:100svh !important;
  max-width:none !important;
  z-index:9990 !important;
  overflow:auto !important;
  background:#030713 !important;
}

body.exercise-active.pseudo-fullscreen .sticky-nav{
  z-index:9992 !important;
}

body.exercise-active.pseudo-fullscreen .pass-bottom-controls{
  z-index:9993 !important;
}

/* Make sure the app menu button remains tappable in pseudo fullscreen. */
body.exercise-active.pseudo-fullscreen #menuToggleBtn{
  position:relative !important;
  z-index:9994 !important;
}


/* ==========================================================
   v95.36 REAL FULLSCREEN + CONTROLS SAME ROW
   - Fullscreen uses native Fullscreen API first, fallback pseudo.
   - Back/prev button is forced onto the same row as Start/Nästa.
   - Old floating/stacking previous-button rules are neutralized.
   ========================================================== */

/* Force pass controls to a single horizontal row in iPad/desktop landscape. */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active #exerciseScreen.active .pass-bottom-controls{
    display:grid !important;
    grid-template-columns:1fr !important;
    grid-auto-flow:column !important;
    align-items:center !important;
    justify-content:stretch !important;
    gap:8px !important;
    max-width:520px !important;
    width:100% !important;
    justify-self:end !important;
  }

  body.exercise-active.pass-has-prev #exerciseScreen.active .pass-bottom-controls,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls.has-prev{
    grid-template-columns:58px minmax(220px,1fr) !important;
  }

  body.exercise-active:not(.pass-has-prev) #exerciseScreen.active .pass-bottom-controls,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls:not(.has-prev){
    grid-template-columns:minmax(260px,1fr) !important;
  }

  body.exercise-active #exerciseScreen.active .pass-bottom-controls #prevBtn.compact-prev{
    position:static !important;
    inset:auto !important;
    left:auto !important;
    top:auto !important;
    right:auto !important;
    bottom:auto !important;
    transform:none !important;
    translate:none !important;
    grid-column:1 !important;
    grid-row:1 !important;
    display:inline-grid !important;
    place-items:center !important;
    width:58px !important;
    min-width:58px !important;
    max-width:58px !important;
    height:54px !important;
    min-height:54px !important;
    max-height:54px !important;
    padding:0 !important;
    margin:0 !important;
    border-radius:18px !important;
    font-size:28px !important;
    line-height:1 !important;
    z-index:auto !important;
  }

  body.exercise-active #exerciseScreen.active .pass-bottom-controls #nextBtn{
    position:static !important;
    inset:auto !important;
    transform:none !important;
    translate:none !important;
    grid-row:1 !important;
    grid-column:1 !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    height:54px !important;
    min-height:54px !important;
    padding:8px 16px !important;
    margin:0 !important;
  }

  body.exercise-active.pass-has-prev #exerciseScreen.active .pass-bottom-controls #nextBtn,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls.has-prev #nextBtn{
    grid-column:2 !important;
  }
}

/* In portrait/mobile, same row if previous exists. */
@media (max-width:899px){
  body.exercise-active .pass-bottom-controls.has-prev,
  body.exercise-active.pass-has-prev .pass-bottom-controls{
    display:grid !important;
    grid-template-columns:56px minmax(0,1fr) !important;
    gap:8px !important;
    align-items:center !important;
  }

  body.exercise-active .pass-bottom-controls #prevBtn.compact-prev{
    position:static !important;
    inset:auto !important;
    transform:none !important;
    grid-column:1 !important;
    grid-row:1 !important;
    width:56px !important;
    min-width:56px !important;
    max-width:56px !important;
    height:54px !important;
    padding:0 !important;
    margin:0 !important;
  }

  body.exercise-active .pass-bottom-controls.has-prev #nextBtn,
  body.exercise-active.pass-has-prev .pass-bottom-controls #nextBtn{
    grid-column:2 !important;
    grid-row:1 !important;
  }
}

/* Native fullscreen mode: make the fullscreen element own the viewport cleanly. */
body.exercise-active.native-fullscreen-active #exerciseScreen.active,
body.exercise-active.pseudo-fullscreen #exerciseScreen.active{
  width:100vw !important;
  height:100svh !important;
  max-width:none !important;
  overflow:auto !important;
  background:#030713 !important;
}

/* If native fullscreen is active, keep menu/controls inside the safe top zone. */
body.exercise-active.native-fullscreen-active .sticky-nav,
body.exercise-active.pseudo-fullscreen .sticky-nav{
  padding-top:max(8px, env(safe-area-inset-top,0px)) !important;
}

/* Avoid any old floating back button artifacts. */
body.exercise-active #prevBtn.compact-prev::before,
body.exercise-active #prevBtn.compact-prev::after{
  content:none !important;
  display:none !important;
}

/* Fullscreen button should be honest: browser support decides if address bar disappears.
   Pseudo fallback still fills app area when native fullscreen is blocked. */
body.exercise-active.pseudo-fullscreen:not(.native-fullscreen-active) #exerciseScreen.active{
  position:fixed !important;
  inset:0 !important;
  z-index:9990 !important;
}


/* ==========================================================
   v95.37 TOP CONTROLS + WAKELOCK
   - Move pass menu button visually into the right-side control zone.
   - Hide blue back button before workoutPrimed/start.
   - Add Wake Lock support in JS; CSS adds tiny status affordance only.
   ========================================================== */

/* iPad/desktop landscape: one top control row on the right:
   Meny | Tillbaka | Starta/Nästa */
@media (min-width:900px) and (orientation:landscape){
  body.exercise-active #exerciseScreen.active{
    grid-template-areas:
      "passnav controls"
      "stage stage"
      "playlist playlist" !important;
    grid-template-columns:1fr minmax(360px, 620px) !important;
  }

  /* Keep progress/title on the left, but allow menu to be pulled to controls side. */
  body.exercise-active #exerciseScreen.active .sticky-nav{
    display:grid !important;
    grid-template-columns:auto 1fr !important;
    align-items:center !important;
    overflow:visible !important;
  }

  body.exercise-active #exerciseScreen.active .sticky-nav #menuToggleBtn,
  body.exercise-active #exerciseScreen.active .sticky-nav .menu-btn,
  body.exercise-active #exerciseScreen.active .sticky-nav .nav-menu-btn{
    position:fixed !important;
    top:max(8px, env(safe-area-inset-top,0px)) !important;
    right:calc(14px + min(420px, 36vw)) !important;
    z-index:9995 !important;
    width:58px !important;
    min-width:58px !important;
    max-width:58px !important;
    height:54px !important;
    min-height:54px !important;
    max-height:54px !important;
    padding:0 !important;
    border-radius:18px !important;
    display:inline-grid !important;
    place-items:center !important;
  }

  body.exercise-active #exerciseScreen.active .pass-bottom-controls{
    grid-area:controls !important;
    position:sticky !important;
    top:0 !important;
    justify-self:end !important;
    width:100% !important;
    max-width:420px !important;
    margin:0 !important;
    padding:8px 0 !important;
    z-index:9993 !important;
  }

  body.exercise-active.pass-has-prev #exerciseScreen.active .pass-bottom-controls,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls.has-prev{
    grid-template-columns:58px minmax(220px,1fr) !important;
    max-width:420px !important;
  }

  body.exercise-active:not(.pass-has-prev) #exerciseScreen.active .pass-bottom-controls,
  body.exercise-active #exerciseScreen.active .pass-bottom-controls:not(.has-prev){
    grid-template-columns:minmax(260px,1fr) !important;
    max-width:420px !important;
  }
}

/* If no previous action, make absolutely sure it is hidden. */
body.exercise-active:not(.pass-has-prev) #prevBtn.compact-prev,
body.exercise-active .pass-bottom-controls:not(.has-prev) #prevBtn.compact-prev,
body.exercise-active #prevBtn.compact-prev[aria-hidden="true"]{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

/* In native/pseudo fullscreen, keep menu separate from browser UI and controls. */
body.exercise-active.native-fullscreen-active #exerciseScreen.active .sticky-nav #menuToggleBtn,
body.exercise-active.pseudo-fullscreen #exerciseScreen.active .sticky-nav #menuToggleBtn,
body.exercise-active.native-fullscreen-active #exerciseScreen.active .sticky-nav .menu-btn,
body.exercise-active.pseudo-fullscreen #exerciseScreen.active .sticky-nav .menu-btn{
  top:max(10px, env(safe-area-inset-top,0px)) !important;
}

/* Wake lock status is intentionally subtle; no visual clutter. */
body.exercise-active.wake-lock-active .sticky-nav::after{
  content:'';
  width:6px;
  height:6px;
  border-radius:999px;
  background:rgba(127,238,255,.75);
  box-shadow:0 0 10px rgba(127,238,255,.5);
  margin-left:6px;
}


/* ==========================================================
   v95.38 INLINE CAST GUARD MINI
   No new UI. YouTube iframe is treated as passive inline media.
   Goal: reduce AirPlay/screen-share handoff where YouTube tries to cast
   the iframe as separate fullscreen video instead of part of the page.
   ========================================================== */

body.exercise-active #videoWrap iframe.yt-inline-locked,
body.exercise-active #preloadVideoWrap iframe.yt-inline-locked{
  pointer-events:none !important;
  -webkit-user-select:none !important;
  user-select:none !important;
  touch-action:none !important;
}

body.exercise-active #videoWrap iframe.yt-inline-locked{
  border:0 !important;
  outline:0 !important;
  background:#020713 !important;
}

body.exercise-active .video-card.video-preload-shell,
body.exercise-active #videoWrap,
body.exercise-active .video-wrap{
  -webkit-user-select:none !important;
  user-select:none !important;
}

body.exercise-active video{
  -webkit-user-select:none !important;
  user-select:none !important;
}


/* ==========================================================
   v95.39 MENU / BACK BUTTON SEPARATION FIX
   Prevent the fixed menu button from overlapping the compact back button
   in the top pass controls on iPad/desktop.
   Layout intent: [Menu] [Back] [Next]
   ========================================================== */
@media (min-width:900px) and (orientation:landscape){
  /* The right-side controls occupy max 420px. Place the menu button just
     to the LEFT of that control block with a fixed gap. */
  body.exercise-active #exerciseScreen.active .sticky-nav #menuToggleBtn,
  body.exercise-active #exerciseScreen.active .sticky-nav .menu-btn,
  body.exercise-active #exerciseScreen.active .sticky-nav .nav-menu-btn,
  body.exercise-active.native-fullscreen-active #exerciseScreen.active .sticky-nav #menuToggleBtn,
  body.exercise-active.pseudo-fullscreen #exerciseScreen.active .sticky-nav #menuToggleBtn,
  body.exercise-active.native-fullscreen-active #exerciseScreen.active .sticky-nav .menu-btn,
  body.exercise-active.pseudo-fullscreen #exerciseScreen.active .sticky-nav .menu-btn{
    position:fixed !important;
    top:max(10px, env(safe-area-inset-top,0px)) !important;
    right:calc(14px + 420px + 10px) !important;
    left:auto !important;
    margin:0 !important;
    z-index:9995 !important;
  }

  /* Keep the control block tightly right-aligned. */
  body.exercise-active #exerciseScreen.active .pass-bottom-controls{
    justify-self:end !important;
    max-width:420px !important;
  }
}

/* On narrower / portrait views, keep the menu clear of top buttons too. */
@media (max-width:899px){
  body.exercise-active #exerciseScreen.active .sticky-nav #menuToggleBtn,
  body.exercise-active #exerciseScreen.active .sticky-nav .menu-btn,
  body.exercise-active #exerciseScreen.active .sticky-nav .nav-menu-btn{
    right:14px !important;
    left:auto !important;
    z-index:9995 !important;
  }
}


/* ==========================================================
   v95.39 GRAPHICS IMPLEMENTED
   New generated graphics are not only packaged; they are actively used.
   ========================================================== */

/* Homepage: use the new text-led hero image as the actual start visual. */
.home-visual-hero{
  position:relative;
  width:100%;
  margin:0 0 14px;
  border-radius:26px;
  overflow:hidden;
  border:1px solid rgba(124,236,255,.22);
  background:#050b16;
  box-shadow:0 18px 52px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.045);
}

.home-visual-hero img{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:4 / 3;
  object-fit:cover;
  object-position:center center;
}

.home-visual-hero::after{
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(circle at 86% 10%, rgba(124,236,255,.16), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,.04), rgba(0,0,0,.06));
}

/* Make the homepage visual feel like the premium top section, not a loose image. */
.home-hero{
  padding:12px !important;
  overflow:hidden;
}

/* On larger screens, let the image sit as a real hero strip above the dashboard. */
@media(min-width:900px){
  .home-visual-hero img{
    aspect-ratio:21 / 9;
  }
}

/* New start and rest images share the same full-bleed treatment. */
.start-stage-v9528 .start-bg-img,
.rest-stage-v9510 .rest-bg-img{
  filter:saturate(1.04) brightness(.90) contrast(1.06) !important;
}

/* Finish screen: full-bleed victory image. */
#finishScreen.finish.finish-visual-active{
  position:relative;
  min-height:min(720px, calc(100svh - 40px));
  display:none;
  place-items:end start;
  overflow:hidden;
  border-radius:28px;
  border:1px solid rgba(124,236,255,.22);
  background:#030713;
  padding:28px;
}

#finishScreen.finish.finish-visual-active.active{
  display:grid;
}

#finishScreen.finish.finish-visual-active::before{
  content:'';
  position:absolute;
  inset:0;
  background-image:var(--finish-asset-url);
  background-size:cover;
  background-position:center center;
  filter:saturate(1.04) brightness(.88) contrast(1.05);
  transform:scale(1.01);
}

#finishScreen.finish.finish-visual-active::after{
  content:'';
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 70% 28%, rgba(124,236,255,.18), transparent 34%),
    linear-gradient(90deg, rgba(2,8,18,.82), rgba(2,8,18,.42) 44%, rgba(2,8,18,.12)),
    linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.42));
}

#finishScreen.finish.finish-visual-active > div{
  position:relative;
  z-index:2;
  max-width:min(620px, 92vw);
  padding:24px;
  border-radius:28px;
  border:1px solid rgba(124,236,255,.24);
  background:linear-gradient(180deg, rgba(5,12,26,.48), rgba(5,12,26,.20));
  box-shadow:0 18px 54px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.04);
  backdrop-filter:blur(8px) saturate(130%);
}

#finishScreen.finish.finish-visual-active h1{
  margin:8px 0 8px;
  font-size:clamp(44px, 10vw, 86px);
  line-height:.92;
  letter-spacing:-.07em;
}

#finishScreen.finish.finish-visual-active .confetti{
  font-size:clamp(34px, 8vw, 60px);
}

#finishScreen.finish.finish-visual-active p{
  color:rgba(230,240,255,.92);
}


/* ==========================================================
   v95.39 TEXT HERO + FINISH IMAGE FIX
   - Remove poster-style homepage image from layout.
   - Make homepage hero a styled text-led UI component.
   - Finish image uses real <img> layer, not only CSS variable.
   ========================================================== */

/* Kill the previous image poster hero completely. */
.home-visual-hero{
  display:none !important;
}

/* Restore showcase copy and make it the actual hero instead of hidden. */
.home-hero{
  padding:14px !important;
  background:
    radial-gradient(circle at 88% 10%, rgba(124,236,255,.16), transparent 35%),
    radial-gradient(circle at 12% 86%, rgba(72,160,255,.10), transparent 32%),
    linear-gradient(180deg, rgba(10,20,36,.96), rgba(5,10,19,.99)) !important;
  border-radius:28px !important;
  overflow:hidden !important;
}

.home-hero .showcase-grid{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:14px !important;
  position:relative !important;
}

.home-hero .showcase-copy.home-text-hero,
.home-hero .showcase-copy{
  display:block !important;
  position:relative !important;
  padding:22px !important;
  border-radius:26px !important;
  border:1px solid rgba(124,236,255,.22) !important;
  background:
    linear-gradient(135deg, rgba(124,236,255,.10), transparent 34%),
    linear-gradient(180deg, rgba(12,24,44,.84), rgba(7,14,26,.96)) !important;
  box-shadow:0 20px 54px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.045) !important;
  overflow:hidden !important;
}

.home-hero .showcase-copy::before{
  content:'' !important;
  position:absolute !important;
  inset:auto -12% -44% 16% !important;
  height:190px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.18) !important;
  background:radial-gradient(circle, rgba(124,236,255,.12), transparent 68%) !important;
  transform:rotate(-8deg) !important;
  pointer-events:none !important;
}

.home-hero .showcase-copy::after{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  background:
    linear-gradient(90deg, transparent 0 72%, rgba(124,236,255,.06)),
    repeating-linear-gradient(90deg, rgba(255,255,255,.025) 0 1px, transparent 1px 34px) !important;
  opacity:.46 !important;
  pointer-events:none !important;
}

.home-hero .showcase-eyebrow{
  display:inline-flex !important;
  position:relative !important;
  z-index:1 !important;
  padding:8px 12px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.30) !important;
  background:rgba(5,15,28,.56) !important;
  color:var(--cyan) !important;
  font-weight:1000 !important;
  letter-spacing:.16em !important;
  text-transform:uppercase !important;
  font-size:12px !important;
}

.home-hero .showcase-copy h1{
  position:relative !important;
  z-index:1 !important;
  margin:16px 0 0 !important;
  color:#fff !important;
  font-size:clamp(42px, 10vw, 92px) !important;
  line-height:.88 !important;
  letter-spacing:-.075em !important;
  font-weight:1000 !important;
}

.home-hero .showcase-copy h1 span{
  color:#8fefff !important;
  text-shadow:0 0 30px rgba(124,236,255,.20) !important;
}

.home-hero .showcase-intro{
  display:block !important;
  position:relative !important;
  z-index:1 !important;
  max-width:740px !important;
  margin:14px 0 0 !important;
  color:rgba(234,246,255,.90) !important;
  font-size:clamp(18px, 3.8vw, 28px) !important;
  line-height:1.18 !important;
  font-weight:750 !important;
}

.home-hero .showcase-benefits{
  display:none !important;
}

.home-hero .showcase-signals{
  display:flex !important;
  position:relative !important;
  z-index:1 !important;
  flex-wrap:wrap !important;
  gap:8px !important;
  margin-top:18px !important;
}

.home-hero .showcase-signals span{
  padding:9px 12px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.24) !important;
  background:rgba(7,18,32,.62) !important;
  color:rgba(226,244,255,.95) !important;
  font-weight:900 !important;
  font-size:13px !important;
}

@media(min-width:900px){
  .home-hero .showcase-grid{
    grid-template-columns:minmax(0, .95fr) minmax(380px, .75fr) !important;
    align-items:stretch !important;
  }

  .home-hero .showcase-copy.home-text-hero,
  .home-hero .showcase-copy{
    min-height:340px !important;
    display:flex !important;
    flex-direction:column !important;
    justify-content:center !important;
  }
}

/* Finish image: explicit img layer so it cannot disappear if CSS variable is ignored/overridden. */
#finishScreen.finish.finish-visual-active{
  background:#030713 !important;
}

#finishScreen.finish.finish-visual-active .finish-bg-img{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center center !important;
  filter:saturate(1.04) brightness(.88) contrast(1.05) !important;
  transform:scale(1.01) !important;
  z-index:0 !important;
  pointer-events:none !important;
}

#finishScreen.finish.finish-visual-active::before{
  background-image:none !important;
}

#finishScreen.finish.finish-visual-active::after{
  z-index:1 !important;
}

#finishScreen.finish.finish-visual-active > div{
  z-index:2 !important;
}


/* ==========================================================
   v95.40 DASHBOARD MOCKUP SYNC
   Goal: make dashboard feel like the mockup/product home.
   Fewer nested cells, stronger hero, one primary CTA, cleaner metrics.
   ========================================================== */

#startScreen.dashboard-mockup-sync{
  display:none;
}

#startScreen.dashboard-mockup-sync.active{
  display:block;
}

#startScreen.dashboard-mockup-sync .dashboard-shortcuts-panel{
  margin-bottom:10px !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .dashboard-shortcuts-panel .panel-pad{
  padding:0 !important;
}

#startScreen.dashboard-mockup-sync .dashboard-shortcuts-grid{
  display:grid !important;
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:8px !important;
}

#startScreen.dashboard-mockup-sync .shortcut-btn{
  min-height:42px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.16) !important;
  background:rgba(8,16,30,.58) !important;
  color:rgba(226,242,255,.78) !important;
  font-weight:900 !important;
  padding:8px 10px !important;
}

#startScreen.dashboard-mockup-sync .shortcut-btn.active{
  background:linear-gradient(180deg,rgba(124,236,255,.18),rgba(8,18,34,.72)) !important;
  color:#fff !important;
  border-color:rgba(124,236,255,.34) !important;
}

#startScreen.dashboard-mockup-sync .home-hero{
  padding:14px !important;
  border-radius:30px !important;
  border:1px solid rgba(124,236,255,.18) !important;
  background:
    radial-gradient(circle at 82% 6%, rgba(124,236,255,.14), transparent 32%),
    radial-gradient(circle at 18% 88%, rgba(80,160,255,.12), transparent 30%),
    linear-gradient(180deg, rgba(10,20,38,.96), rgba(5,10,19,.99)) !important;
  box-shadow:0 24px 70px rgba(0,0,0,.30), inset 0 1px 0 rgba(255,255,255,.045) !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:14px !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero{
  min-height:0 !important;
  padding:22px !important;
  border-radius:28px !important;
  border:1px solid rgba(124,236,255,.20) !important;
  background:
    linear-gradient(135deg, rgba(124,236,255,.11), transparent 36%),
    linear-gradient(180deg, rgba(12,24,44,.82), rgba(7,14,26,.96)) !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1{
  font-size:clamp(42px, 9vw, 88px) !important;
  line-height:.88 !important;
  letter-spacing:-.075em !important;
  margin-top:14px !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-intro{
  font-size:clamp(18px, 3.3vw, 26px) !important;
  margin-top:12px !important;
  max-width:700px !important;
}

#startScreen.dashboard-mockup-sync .hero-dashboard-panel{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  border-radius:0 !important;
}

#startScreen.dashboard-mockup-sync .hero-dashboard-panel .panel-pad{
  padding:0 !important;
}

.dash-v9540{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
}

.dash-v9540-main,
.dash-v9540-side{
  position:relative;
  overflow:hidden;
  border-radius:28px;
  border:1px solid rgba(124,236,255,.20);
  background:
    radial-gradient(circle at 88% 14%, rgba(124,236,255,.12), transparent 34%),
    linear-gradient(180deg, rgba(11,22,40,.90), rgba(6,12,23,.98));
  box-shadow:0 18px 52px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.04);
}

.dash-v9540-main{
  padding:22px;
}

.dash-v9540-side{
  padding:18px;
  display:grid;
  grid-template-columns:auto 1fr;
  align-items:center;
  gap:12px 16px;
}

.dash-v9540-eyebrow,
.metric-v9540-kicker{
  color:var(--cyan);
  text-transform:uppercase;
  letter-spacing:.16em;
  font-size:12px;
  font-weight:1000;
}

.dash-v9540-title{
  margin-top:10px;
  color:#fff;
  font-size:clamp(34px, 7vw, 62px);
  line-height:.92;
  letter-spacing:-.065em;
  font-weight:1000;
}

.dash-v9540-meta{
  margin-top:9px;
  color:rgba(224,240,255,.74);
  font-size:15px;
  font-weight:850;
}

.dash-v9540-focus{
  margin:14px 0 0;
  color:rgba(234,246,255,.92);
  font-size:clamp(17px, 2.6vw, 22px);
  line-height:1.28;
  font-weight:760;
}

.dash-v9540-chips,
.dash-v9540-pill-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:14px;
}

.dash-v9540-chips span,
.dash-v9540-pill-row span{
  padding:8px 11px;
  border-radius:999px;
  border:1px solid rgba(124,236,255,.22);
  background:rgba(7,18,32,.66);
  color:rgba(228,244,255,.94);
  font-size:12px;
  font-weight:900;
}

.dash-v9540-actions{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  margin-top:18px;
}

.dash-v9540-actions .next-pass-btn{
  min-height:62px;
  border-radius:22px;
  font-size:22px;
}

.dash-v9540-actions .overview-pass-btn{
  min-height:52px;
  border-radius:19px;
}

.dash-v9540-ring,
.metric-v9540-ring{
  --size:92px;
  width:var(--size);
  height:var(--size);
  border-radius:50%;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at center, #071020 0 58%, transparent 59%),
    conic-gradient(var(--cyan) calc(var(--p)*1%), rgba(124,236,255,.10) 0);
  box-shadow:0 0 0 1px rgba(124,236,255,.16), 0 0 34px rgba(124,236,255,.10);
}

.dash-v9540-ring span,
.metric-v9540-ring span{
  font-weight:1000;
  color:#fff;
  font-size:20px;
}

.dash-v9540-side-title{
  color:var(--cyan);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:12px;
  font-weight:1000;
}

.dash-v9540-side-big{
  grid-column:2;
  color:#fff;
  font-size:clamp(24px, 4.6vw, 40px);
  line-height:1;
  letter-spacing:-.045em;
  font-weight:1000;
}

.dash-v9540-side-sub{
  grid-column:2;
  color:rgba(224,240,255,.74);
  line-height:1.3;
  font-size:14px;
  font-weight:760;
}

.dash-v9540-days{
  grid-column:1 / -1;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(52px,1fr));
  gap:8px;
  margin-top:4px;
}

.dash-v9540-day{
  min-height:46px;
  border-radius:16px;
  border:1px solid rgba(124,236,255,.16);
  background:rgba(6,16,30,.72);
  color:#fff;
  display:grid;
  place-items:center;
  gap:2px;
  font-weight:1000;
}

.dash-v9540-day b{
  font-size:13px;
}

.dash-v9540-day span{
  min-height:16px;
  color:var(--cyan);
}

.dash-v9540-day.done{
  background:linear-gradient(180deg,rgba(124,236,255,.20),rgba(7,18,32,.72));
  border-color:rgba(124,236,255,.40);
}

.dash-v9540-day.skipped{
  opacity:.62;
}

.dash-v9540-time{
  grid-column:1 / -1;
  width:max-content;
  padding:9px 12px;
  border-radius:999px;
  border:1px solid rgba(124,236,255,.20);
  background:rgba(8,18,32,.68);
  color:rgba(235,248,255,.94);
  font-weight:950;
  font-size:13px;
}

/* Quick stats becomes a flat metric rail, not another nested panel. */
#startScreen.dashboard-mockup-sync .home-only-grid{
  margin-top:14px !important;
}

#startScreen.dashboard-mockup-sync .home-quickstats{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .home-quickstats .panel-pad{
  padding:0 !important;
}

#startScreen.dashboard-mockup-sync .home-quickstats .section-title{
  display:none !important;
}

#startScreen.dashboard-mockup-sync .quick-stats-grid{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:8px !important;
}

.metric-v9540{
  min-height:92px;
  border-radius:24px;
  border:1px solid rgba(124,236,255,.16);
  background:
    linear-gradient(180deg, rgba(11,22,40,.86), rgba(6,12,23,.96));
  padding:14px;
  display:grid;
  grid-template-columns:auto 1fr;
  gap:12px;
  align-items:center;
  color:inherit;
  text-align:left;
  text-decoration:none;
  box-shadow:0 14px 38px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.035);
}

.metric-v9540-ring{
  --size:58px;
}

.metric-v9540-ring span{
  font-size:14px;
}

.metric-v9540-big{
  margin-top:3px;
  color:#fff;
  font-size:clamp(24px, 5.2vw, 34px);
  line-height:1;
  font-weight:1000;
  letter-spacing:-.045em;
}

.metric-v9540-sub{
  margin-top:4px;
  color:rgba(224,240,255,.70);
  font-size:13px;
  line-height:1.25;
  font-weight:720;
}

.metric-action{
  cursor:pointer;
}

.metric-arrow span{
  font-size:20px;
}

/* Desktop/tablet: one polished hero region with text + daily card + side progress. */
@media(min-width:900px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
    grid-template-columns:minmax(0, .82fr) minmax(420px, 1fr) !important;
    align-items:stretch !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero{
    min-height:440px !important;
    justify-content:center !important;
  }

  .dash-v9540{
    height:100%;
    grid-template-columns:minmax(0, 1fr);
  }

  .dash-v9540-main{
    min-height:274px;
    display:flex;
    flex-direction:column;
    justify-content:center;
  }

  .dash-v9540-actions{
    grid-template-columns:1fr auto;
    align-items:center;
  }

  .dash-v9540-actions .overview-pass-btn{
    min-width:136px;
  }

  #startScreen.dashboard-mockup-sync .quick-stats-grid{
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  }
}

@media(min-width:1180px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
    grid-template-columns:minmax(420px, .72fr) minmax(520px, 1fr) !important;
  }

  .dash-v9540{
    grid-template-columns:minmax(0,1.2fr) minmax(270px,.8fr);
    gap:12px;
  }

  .dash-v9540-main{
    min-height:410px;
  }

  .dash-v9540-side{
    grid-template-columns:1fr;
    align-content:center;
    justify-items:start;
  }

  .dash-v9540-side-big,
  .dash-v9540-side-sub{
    grid-column:1;
  }

  .dash-v9540-days,
  .dash-v9540-time{
    grid-column:1;
    width:100%;
  }

  .dash-v9540-ring{
    --size:124px;
  }
}

@media(max-width:620px){
  #startScreen.dashboard-mockup-sync .dashboard-shortcuts-grid{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }

  .dash-v9540-side{
    grid-template-columns:1fr;
  }

  .dash-v9540-side-big,
  .dash-v9540-side-sub{
    grid-column:1;
  }

  .dash-v9540-days,
  .dash-v9540-time{
    grid-column:1;
  }
}


/* ==========================================================
   v95.41 CLEANUP RELEASE PREP / DESIGN LOCK
   No new features. This locks the visual system after v95.40:
   - consistent radii and spacing
   - fewer accidental nested-card shadows
   - stable dashboard/pass hierarchy
   ========================================================== */

:root{
  --next-card-radius:26px;
  --next-inner-radius:20px;
  --next-card-pad:16px;
  --next-card-line:rgba(124,236,255,.18);
  --next-glass:linear-gradient(180deg, rgba(11,22,40,.90), rgba(6,12,23,.98));
}

.panel,
.hero,
.video-card,
.info-card,
.playlist-card,
.day-card,
.test-card,
.qa-row,
.library-detail,
.selected-day-focus,
.dose-card,
.coach-checklist-panel,
.overview-insight-card,
.flow-card,
.dash-v9540-main,
.dash-v9540-side,
.metric-v9540{
  border-radius:var(--next-card-radius) !important;
}

/* Avoid the old “cell in cell” look where panels are stacked inside panels. */
.panel .panel,
.hero .panel,
.info-card .panel,
.playlist-card .panel{
  box-shadow:none !important;
}

/* Dashboard and pass views should own the strongest visual hierarchy. */
#startScreen.dashboard-mockup-sync .dash-v9540-main,
#startScreen.dashboard-mockup-sync .dash-v9540-side,
#startScreen.dashboard-mockup-sync .metric-v9540{
  border-color:var(--next-card-line) !important;
}

/* Keep CTAs punchy and uniform. */
.next-pass-btn,
.app-primary-action,
.main-btn{
  font-weight:1000 !important;
  letter-spacing:-.02em !important;
}

/* Mobile polish: keep the homepage from feeling stacked/heavy. */
@media(max-width:620px){
  #startScreen.dashboard-mockup-sync .home-hero{
    padding:10px !important;
    border-radius:24px !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  .dash-v9540-main,
  .dash-v9540-side,
  .metric-v9540{
    border-radius:22px !important;
  }
}

/* Final guard: pass controls must remain above media/list in all pass modes. */
body.exercise-active .pass-bottom-controls{
  z-index:9993 !important;
}

body.exercise-active #menuToggleBtn{
  z-index:9995 !important;
}


/* ==========================================================
   v96 RC2 VISUAL SOUL
   Feedback: RC1 lost too many graphic images/icons and still showed too many boxes.
   Goal: restore visual assets as subtle integrated atmosphere/icons, and reduce
   visible card borders / nested boxes on dashboard.
   ========================================================== */

#startScreen.dashboard-mockup-sync{
  --rc2-line-soft:rgba(124,236,255,.105);
  --rc2-line-mid:rgba(124,236,255,.16);
  --rc2-glass-soft:rgba(8,18,34,.44);
  --rc2-glass-mid:rgba(8,18,34,.62);
}

/* Make the outer hero carry the visual identity instead of every child being a box. */
#startScreen.dashboard-mockup-sync .home-hero{
  position:relative !important;
  overflow:hidden !important;
  border-color:rgba(124,236,255,.16) !important;
  background:
    radial-gradient(circle at 82% 10%, rgba(124,236,255,.18), transparent 34%),
    radial-gradient(circle at 18% 88%, rgba(75,145,255,.14), transparent 33%),
    linear-gradient(180deg, rgba(8,18,34,.96), rgba(4,9,18,.99)) !important;
}

#startScreen.dashboard-mockup-sync .home-hero::before{
  content:'' !important;
  position:absolute !important;
  inset:-8% -8% -12% 36% !important;
  background:
    linear-gradient(90deg, rgba(3,8,18,.38), rgba(3,8,18,.06)),
    url('../img/v93/hero/hero-dashboard.webp') center / cover no-repeat !important;
  opacity:.34 !important;
  mix-blend-mode:screen !important;
  pointer-events:none !important;
  filter:saturate(1.08) contrast(1.05) !important;
}

#startScreen.dashboard-mockup-sync .home-hero::after{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  pointer-events:none !important;
  background:
    linear-gradient(90deg, rgba(2,8,18,.46), transparent 38%, rgba(2,8,18,.18)),
    radial-gradient(circle at 72% 70%, rgba(124,236,255,.10), transparent 34%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.018) 0 1px, transparent 1px 42px) !important;
  opacity:.82 !important;
}

/* Main hero text should feel embedded, not like a separate poster/card. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
  position:relative !important;
  z-index:1 !important;
  border-color:transparent !important;
  background:
    radial-gradient(circle at 18% 0%, rgba(124,236,255,.10), transparent 36%),
    linear-gradient(180deg, rgba(7,16,30,.24), rgba(7,16,30,.08)) !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::after{
  opacity:.22 !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-eyebrow{
  border-color:rgba(124,236,255,.20) !important;
  background:rgba(3,11,22,.42) !important;
}

/* Dashboard cards: fewer harsh outlines, more image-driven atmosphere. */
#startScreen.dashboard-mockup-sync .dash-v9540-main,
#startScreen.dashboard-mockup-sync .dash-v9540-side{
  z-index:1 !important;
  border-color:var(--rc2-line-soft) !important;
  background:
    linear-gradient(135deg, rgba(124,236,255,.08), transparent 30%),
    linear-gradient(180deg, rgba(10,22,40,.64), rgba(5,11,22,.82)) !important;
  box-shadow:
    0 18px 46px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.035) !important;
  backdrop-filter:blur(2px) saturate(120%) !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-main::before,
#startScreen.dashboard-mockup-sync .dash-v9540-side::before{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  pointer-events:none !important;
  background:
    radial-gradient(circle at 86% 22%, rgba(124,236,255,.18), transparent 26%),
    linear-gradient(90deg, transparent, rgba(124,236,255,.05)) !important;
  opacity:.82 !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-main::after{
  content:'' !important;
  position:absolute !important;
  inset:auto -4% -16% 46% !important;
  height:210px !important;
  pointer-events:none !important;
  background:url('../img/v93/hero/hero-dashboard.webp') center / cover no-repeat !important;
  opacity:.16 !important;
  mix-blend-mode:screen !important;
  filter:saturate(1.12) brightness(1.06) !important;
  border-radius:28px !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-main > *,
#startScreen.dashboard-mockup-sync .dash-v9540-side > *{
  position:relative !important;
  z-index:1 !important;
}

/* Day chips should read as integrated controls, not three boxed panels. */
#startScreen.dashboard-mockup-sync .dash-v9540-day{
  border-color:rgba(124,236,255,.13) !important;
  background:rgba(4,12,24,.34) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025) !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-day.done{
  background:linear-gradient(180deg,rgba(124,236,255,.22),rgba(5,15,28,.44)) !important;
  box-shadow:0 0 22px rgba(124,236,255,.12), inset 0 1px 0 rgba(255,255,255,.035) !important;
}

/* Shortcuts: bring real icons back, less heavy boxes. */
#startScreen.dashboard-mockup-sync .shortcut-btn{
  position:relative !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  border-color:rgba(124,236,255,.12) !important;
  background:rgba(5,14,28,.38) !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .shortcut-btn::before{
  content:'' !important;
  width:18px !important;
  height:18px !important;
  flex:0 0 18px !important;
  background:var(--shortcut-icon) center / contain no-repeat !important;
  opacity:.95 !important;
  filter:drop-shadow(0 0 8px rgba(124,236,255,.22)) !important;
}

#startScreen.dashboard-mockup-sync .shortcut-btn:nth-child(1){--shortcut-icon:url('../img/v93/icons/dashboard.svg');}
#startScreen.dashboard-mockup-sync .shortcut-btn:nth-child(2){--shortcut-icon:url('../img/v93/icons/profile.svg');}
#startScreen.dashboard-mockup-sync .shortcut-btn:nth-child(3){--shortcut-icon:url('../img/v93/icons/library.svg');}
#startScreen.dashboard-mockup-sync .shortcut-btn:nth-child(4){--shortcut-icon:url('../img/v93/icons/tests.svg');}

#startScreen.dashboard-mockup-sync .shortcut-btn.active{
  border-color:rgba(124,236,255,.30) !important;
  background:linear-gradient(180deg,rgba(59,166,255,.55),rgba(9,28,50,.54)) !important;
  box-shadow:0 0 28px rgba(75,180,255,.16), inset 0 1px 0 rgba(255,255,255,.05) !important;
}

/* App top nav should also keep the icon feeling if visible. */
.app-tab{
  gap:8px !important;
}

.app-tab .tab-icon{
  width:22px !important;
  height:22px !important;
  font-size:0 !important;
  display:inline-block !important;
  background:var(--tab-icon) center / contain no-repeat !important;
  filter:drop-shadow(0 0 8px rgba(124,236,255,.18)) !important;
}

.app-tab[data-target="startScreen"]{--tab-icon:url('../img/v93/icons/dashboard.svg');}
.app-tab[data-target="profileScreen"]{--tab-icon:url('../img/v93/icons/profile.svg');}
.app-tab[data-target="qaScreen"]{--tab-icon:url('../img/v93/icons/library.svg');}
.app-tab[data-target="testScreen"]{--tab-icon:url('../img/v93/icons/tests.svg');}

/* Metric rail: back to icon-driven graphics, but not four hard boxes. */
#startScreen.dashboard-mockup-sync .metric-v9540{
  position:relative !important;
  overflow:hidden !important;
  border-color:rgba(124,236,255,.105) !important;
  background:
    linear-gradient(135deg, rgba(124,236,255,.08), transparent 34%),
    linear-gradient(180deg, rgba(10,22,40,.54), rgba(5,11,22,.74)) !important;
  box-shadow:0 12px 30px rgba(0,0,0,.14), inset 0 1px 0 rgba(255,255,255,.03) !important;
}

#startScreen.dashboard-mockup-sync .metric-v9540::after{
  content:'' !important;
  position:absolute !important;
  right:12px !important;
  top:12px !important;
  width:32px !important;
  height:32px !important;
  opacity:.14 !important;
  background:var(--metric-icon) center / contain no-repeat !important;
  filter:drop-shadow(0 0 12px rgba(124,236,255,.25)) !important;
  pointer-events:none !important;
}

#startScreen.dashboard-mockup-sync .metric-v9540:nth-child(1){--metric-icon:url('../img/icons/pass.svg');}
#startScreen.dashboard-mockup-sync .metric-v9540:nth-child(2){--metric-icon:url('../img/icons/set.svg');}
#startScreen.dashboard-mockup-sync .metric-v9540:nth-child(3){--metric-icon:url('../img/icons/exercise.svg');}
#startScreen.dashboard-mockup-sync .metric-v9540:nth-child(4){--metric-icon:url('../img/icons/test.svg');}

#startScreen.dashboard-mockup-sync .metric-v9540-ring,
#startScreen.dashboard-mockup-sync .dash-v9540-ring{
  box-shadow:
    0 0 0 1px rgba(124,236,255,.11),
    0 0 26px rgba(124,236,255,.12) !important;
}

/* Reduce border noise globally on dashboard only. */
#startScreen.dashboard-mockup-sync .home-hero *,
#startScreen.dashboard-mockup-sync .home-only-grid *{
  outline-color:transparent !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-chips span,
#startScreen.dashboard-mockup-sync .dash-v9540-pill-row span,
#startScreen.dashboard-mockup-sync .dash-v9540-time{
  border-color:rgba(124,236,255,.14) !important;
  background:rgba(4,12,24,.32) !important;
}

/* Desktop/iPad: make it feel like one composition, not separate boxes. */
@media(min-width:900px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
    gap:18px !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero{
    padding:26px !important;
  }

  #startScreen.dashboard-mockup-sync .dash-v9540{
    gap:14px !important;
  }
}

/* Smaller screens: keep icons but avoid clutter. */
@media(max-width:620px){
  #startScreen.dashboard-mockup-sync .home-hero::before{
    inset:34% -20% -18% 16% !important;
    opacity:.20 !important;
  }

  #startScreen.dashboard-mockup-sync .shortcut-btn::before{
    width:16px !important;
    height:16px !important;
  }
}


/* ==========================================================
   v96 RC3 TIME BADGE FIX
   Time belongs to Dagens pass, not the progress card.
   Also supports corrected single-value duration text from JS.
   ========================================================== */

#startScreen.dashboard-mockup-sync .dash-v9540-main .dash-v9540-time.main-time{
  margin-top:12px !important;
  width:max-content !important;
  max-width:100% !important;
  grid-column:auto !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:6px !important;
  padding:9px 13px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.16) !important;
  background:rgba(4,12,24,.38) !important;
  color:rgba(235,248,255,.94) !important;
  font-weight:950 !important;
  font-size:13px !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-side > .dash-v9540-time:not(.main-time){
  display:none !important;
}


/* ==========================================================
   v96 RC4 HERO BACKGROUND RESTORE
   Bring back the graphic soul in the left hero panel:
   - background image integrated behind text, not a separate poster
   - fewer visible boxes
   - stronger mockup feel
   ========================================================== */

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
  position:relative !important;
  overflow:hidden !important;
  border-color:rgba(124,236,255,.105) !important;
  background:
    linear-gradient(90deg, rgba(3,8,18,.86) 0%, rgba(3,8,18,.66) 44%, rgba(3,8,18,.30) 100%),
    radial-gradient(circle at 22% 18%, rgba(124,236,255,.18), transparent 32%),
    url('../img/v93/hero/hero-dashboard.webp') 72% center / cover no-repeat !important;
  box-shadow:
    0 22px 58px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.035) !important;
}

/* The image should be visible but never fight the text. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero::before,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::before{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  background:
    linear-gradient(90deg, rgba(2,8,18,.38), rgba(2,8,18,.12) 46%, rgba(2,8,18,.02)),
    radial-gradient(circle at 70% 55%, rgba(124,236,255,.14), transparent 34%) !important;
  opacity:.95 !important;
  transform:none !important;
  border:0 !important;
  pointer-events:none !important;
}

/* Replace the previous grid overlay with a softer cinematic sheen. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero::after,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::after{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,.035), transparent 24%, rgba(0,0,0,.14)),
    repeating-linear-gradient(90deg, rgba(124,236,255,.020) 0 1px, transparent 1px 54px) !important;
  opacity:.72 !important;
  pointer-events:none !important;
}

/* Text layer stays crisp above image. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy > *{
  position:relative !important;
  z-index:2 !important;
}

/* Reduce the feeling that every dashboard part is boxed. */
#startScreen.dashboard-mockup-sync .dash-v9540-main,
#startScreen.dashboard-mockup-sync .dash-v9540-side,
#startScreen.dashboard-mockup-sync .metric-v9540{
  border-color:rgba(124,236,255,.085) !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-main,
#startScreen.dashboard-mockup-sync .dash-v9540-side{
  background:
    linear-gradient(135deg, rgba(124,236,255,.075), transparent 32%),
    linear-gradient(180deg, rgba(8,19,36,.54), rgba(4,10,20,.74)) !important;
}

/* Make the outer hero do more work so inner cards can be softer. */
#startScreen.dashboard-mockup-sync .home-hero{
  background:
    radial-gradient(circle at 82% 10%, rgba(124,236,255,.18), transparent 34%),
    radial-gradient(circle at 22% 82%, rgba(75,145,255,.13), transparent 34%),
    linear-gradient(180deg, rgba(7,17,33,.97), rgba(3,8,16,.995)) !important;
}

/* On iPad landscape, keep the hero graphic larger and more visible. */
@media(min-width:900px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    background:
      linear-gradient(90deg, rgba(3,8,18,.88) 0%, rgba(3,8,18,.64) 42%, rgba(3,8,18,.24) 100%),
      radial-gradient(circle at 22% 18%, rgba(124,236,255,.18), transparent 32%),
      url('../img/v93/hero/hero-dashboard.webp') 68% center / cover no-repeat !important;
  }
}

/* On phone, keep readability first. */
@media(max-width:620px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    background:
      linear-gradient(90deg, rgba(3,8,18,.92), rgba(3,8,18,.64)),
      radial-gradient(circle at 20% 18%, rgba(124,236,255,.16), transparent 34%),
      url('../img/v93/hero/hero-dashboard.webp') 74% center / cover no-repeat !important;
  }
}


/* ==========================================================
   v96 RC6 GLOBAL DASHBOARD BACKGROUND
   Corrected interpretation:
   - keep the two-column dashboard layout
   - one shared graphic background under the whole dashboard hero area
   - remove the left-panel box; text sits directly on the shared background
   - right column/cards stay readable but with softer borders
   ========================================================== */

#startScreen.dashboard-mockup-sync .home-hero{
  position:relative !important;
  overflow:hidden !important;
  padding:14px !important;
  border-radius:30px !important;
  border:1px solid rgba(124,236,255,.12) !important;
  background:
    linear-gradient(90deg, rgba(3,8,18,.92) 0%, rgba(3,8,18,.70) 38%, rgba(3,8,18,.42) 68%, rgba(3,8,18,.76) 100%),
    radial-gradient(circle at 18% 16%, rgba(124,236,255,.20), transparent 34%),
    radial-gradient(circle at 78% 72%, rgba(90,160,255,.14), transparent 34%),
    url('../img/v93/hero/hero-dashboard.webp') center center / cover no-repeat !important;
  box-shadow:
    0 24px 70px rgba(0,0,0,.28),
    inset 0 1px 0 rgba(255,255,255,.035) !important;
}

/* Background belongs to the whole dashboard, not to left box only. */
#startScreen.dashboard-mockup-sync .home-hero::before{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  display:block !important;
  pointer-events:none !important;
  background:
    linear-gradient(90deg, rgba(2,8,18,.34), transparent 42%, rgba(2,8,18,.18)),
    radial-gradient(circle at 72% 56%, rgba(124,236,255,.12), transparent 32%),
    repeating-linear-gradient(90deg, rgba(124,236,255,.018) 0 1px, transparent 1px 52px) !important;
  opacity:.92 !important;
  mix-blend-mode:normal !important;
  filter:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero::after{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  display:block !important;
  pointer-events:none !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,.035), transparent 22%, rgba(0,0,0,.20)) !important;
  opacity:.80 !important;
}

/* Keep two columns and let both columns sit on the same background. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:14px !important;
}

/* LEFT: no visible box. Text directly over shared background. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
  position:relative !important;
  z-index:1 !important;
  display:block !important;
  padding:clamp(22px,4.2vw,42px) !important;
  border:0 !important;
  border-color:transparent !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  min-height:0 !important;
  overflow:visible !important;
}

/* Remove old local-card graphic layers from the left panel. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero::before,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero::after,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::before,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::after{
  display:none !important;
  content:none !important;
}

/* Make left text feel like premium hero typography over image. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-eyebrow{
  position:relative !important;
  z-index:2 !important;
  width:max-content !important;
  border-color:rgba(124,236,255,.22) !important;
  background:rgba(3,11,22,.34) !important;
  backdrop-filter:blur(4px) saturate(125%) !important;
  box-shadow:0 0 24px rgba(124,236,255,.10) !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1{
  position:relative !important;
  z-index:2 !important;
  margin-top:16px !important;
  max-width:760px !important;
  color:#fff !important;
  text-shadow:0 10px 38px rgba(0,0,0,.42), 0 0 28px rgba(124,236,255,.08) !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1 span{
  color:#9af2ff !important;
  text-shadow:0 0 30px rgba(124,236,255,.22) !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-intro{
  position:relative !important;
  z-index:2 !important;
  max-width:620px !important;
  color:rgba(238,248,255,.90) !important;
  text-shadow:0 8px 28px rgba(0,0,0,.34) !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-signals{
  position:relative !important;
  z-index:2 !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-signals span{
  border-color:rgba(124,236,255,.18) !important;
  background:rgba(3,11,22,.34) !important;
  backdrop-filter:blur(4px) saturate(125%) !important;
}

/* RIGHT: keep daily/progress structure, but less boxy and clearly on top of the same background. */
#startScreen.dashboard-mockup-sync .hero-dashboard-panel{
  position:relative !important;
  z-index:2 !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .hero-dashboard-panel .panel-pad{
  padding:0 !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-main,
#startScreen.dashboard-mockup-sync .dash-v9540-side{
  border-color:rgba(124,236,255,.10) !important;
  background:
    linear-gradient(135deg, rgba(124,236,255,.075), transparent 34%),
    linear-gradient(180deg, rgba(7,16,30,.50), rgba(4,10,20,.68)) !important;
  box-shadow:
    0 18px 48px rgba(0,0,0,.20),
    inset 0 1px 0 rgba(255,255,255,.03) !important;
  backdrop-filter:blur(7px) saturate(128%) !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-main::before,
#startScreen.dashboard-mockup-sync .dash-v9540-side::before{
  opacity:.62 !important;
}

/* Softer second row stats too; background should still be felt under them. */
#startScreen.dashboard-mockup-sync .home-only-grid{
  position:relative !important;
  margin-top:14px !important;
}

#startScreen.dashboard-mockup-sync .home-quickstats{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .metric-v9540{
  border-color:rgba(124,236,255,.09) !important;
  background:
    linear-gradient(135deg, rgba(124,236,255,.065), transparent 34%),
    linear-gradient(180deg, rgba(7,16,30,.46), rgba(4,10,20,.64)) !important;
  backdrop-filter:blur(6px) saturate(124%) !important;
}

/* Minimize nested box feeling inside right card. */
#startScreen.dashboard-mockup-sync .dash-v9540-chips span,
#startScreen.dashboard-mockup-sync .dash-v9540-pill-row span,
#startScreen.dashboard-mockup-sync .dash-v9540-time{
  border-color:rgba(124,236,255,.12) !important;
  background:rgba(3,11,22,.30) !important;
}

/* Desktop/iPad: explicit two-column layout. */
@media(min-width:900px){
  #startScreen.dashboard-mockup-sync .home-hero{
    padding:18px !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
    display:grid !important;
    grid-template-columns:minmax(0,.86fr) minmax(430px,1fr) !important;
    gap:18px !important;
    align-items:stretch !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    min-height:440px !important;
    display:flex !important;
    flex-direction:column !important;
    justify-content:center !important;
  }
}

/* Wider screens: keep two-column premium composition. */
@media(min-width:1180px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
    grid-template-columns:minmax(420px,.72fr) minmax(520px,1fr) !important;
  }
}

/* Phone: same background concept, stacked for readability. */
@media(max-width:620px){
  #startScreen.dashboard-mockup-sync .home-hero{
    padding:10px !important;
    border-radius:24px !important;
    background:
      linear-gradient(90deg, rgba(3,8,18,.94), rgba(3,8,18,.70)),
      radial-gradient(circle at 20% 16%, rgba(124,236,255,.18), transparent 34%),
      url('../img/v93/hero/hero-dashboard.webp') 68% center / cover no-repeat !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    padding:22px 16px !important;
  }
}


/* ==========================================================
   v96 RC7 DASHBOARD BACKGROUND SWAP
   Swaps dashboard/hero background asset from visual-anchor.webp
   to assets/img/v93/hero/hero-dashboard.webp
   ========================================================== */


/* ==========================================================
   v96 RC8 VERIFIED DASHBOARD BACKGROUND
   Dashboard background is now a real <img> layer, not just CSS background.
   ========================================================== */

#startScreen.dashboard-mockup-sync .home-hero{
  position:relative !important;
  overflow:hidden !important;
  isolation:isolate !important;
  padding:18px !important;
  border-radius:30px !important;
  border:1px solid rgba(124,236,255,.14) !important;
  background:#030a16 !important;
  box-shadow:0 24px 70px rgba(0,0,0,.30), inset 0 1px 0 rgba(255,255,255,.035) !important;
}

#startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
  display:block !important;
  position:absolute !important;
  inset:0 !important;
  z-index:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center right !important;
  opacity:.78 !important;
  filter:saturate(1.18) brightness(1.18) contrast(1.10) !important;
  transform:scale(1.012) !important;
  pointer-events:none !important;
  user-select:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero::before{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  z-index:1 !important;
  display:block !important;
  pointer-events:none !important;
  background:
    linear-gradient(90deg,
      rgba(2,8,18,.80) 0%,
      rgba(2,8,18,.66) 34%,
      rgba(2,8,18,.26) 66%,
      rgba(2,8,18,.48) 100%),
    radial-gradient(circle at 72% 58%, rgba(124,236,255,.18), transparent 34%) !important;
  opacity:.94 !important;
}

#startScreen.dashboard-mockup-sync .home-hero::after{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  z-index:2 !important;
  display:block !important;
  pointer-events:none !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,.035), transparent 24%, rgba(0,0,0,.16)),
    repeating-linear-gradient(90deg, rgba(124,236,255,.018) 0 1px, transparent 1px 56px) !important;
  opacity:.70 !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-grid,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy,
#startScreen.dashboard-mockup-sync .hero-dashboard-panel{
  position:relative !important;
  z-index:3 !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
  border:0 !important;
  border-color:transparent !important;
  background:transparent !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  overflow:visible !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero::before,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero::after,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::before,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::after{
  display:none !important;
  content:none !important;
}

#startScreen.dashboard-mockup-sync .dash-v9540-main,
#startScreen.dashboard-mockup-sync .dash-v9540-side,
#startScreen.dashboard-mockup-sync .metric-v9540{
  background:
    linear-gradient(135deg, rgba(124,236,255,.070), transparent 34%),
    linear-gradient(180deg, rgba(5,14,28,.40), rgba(3,9,18,.55)) !important;
  border-color:rgba(124,236,255,.095) !important;
  backdrop-filter:blur(7px) saturate(128%) !important;
  box-shadow:0 16px 44px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.030) !important;
}

@media(min-width:900px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
    display:grid !important;
    grid-template-columns:minmax(0,.86fr) minmax(430px,1fr) !important;
    gap:18px !important;
    align-items:stretch !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    min-height:440px !important;
    display:flex !important;
    flex-direction:column !important;
    justify-content:center !important;
    padding:clamp(22px,4.2vw,42px) !important;
  }
}

@media(max-width:620px){
  #startScreen.dashboard-mockup-sync .home-hero{
    padding:10px !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
    opacity:.60 !important;
    object-position:center center !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero::before{
    background:linear-gradient(90deg, rgba(2,8,18,.90), rgba(2,8,18,.66)) !important;
  }
}


/* ==========================================================
   v96 RC9 CLEAN BACKGROUND + ONBOARDING LOVE
   - Use clean no-text dashboard art as global background.
   - Keep two-column layout.
   - Make onboarding feel like the same product, not an old form.
   ========================================================== */

/* Source of truth background: clean graphic without baked-in copy */
#startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
  content:url('../img/v93/hero/hero-dashboard.webp') !important;
  opacity:.82 !important;
  object-position:center right !important;
  filter:saturate(1.24) brightness(1.16) contrast(1.12) !important;
}

/* Ensure old generated text-poster never appears as dashboard background. */
#startScreen.dashboard-mockup-sync .home-hero{
  background:#030a16 !important;
}

#startScreen.dashboard-mockup-sync .home-hero::before{
  background:
    linear-gradient(90deg,
      rgba(2,8,18,.82) 0%,
      rgba(2,8,18,.68) 34%,
      rgba(2,8,18,.28) 66%,
      rgba(2,8,18,.48) 100%),
    radial-gradient(circle at 74% 52%, rgba(124,236,255,.18), transparent 34%) !important;
}

/* Onboarding card in right column: more product, less form. */
#startScreen.dashboard-mockup-sync .onboarding-v9540{
  height:100% !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-main{
  min-height:440px !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-title{
  max-width:680px !important;
  font-size:clamp(36px,6vw,72px) !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-focus{
  max-width:680px !important;
  color:rgba(238,248,255,.90) !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .v9540-name{
  margin-top:18px !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .onboarding-name-input{
  min-height:58px !important;
  border-radius:18px !important;
  border:1px solid rgba(124,236,255,.18) !important;
  background:rgba(3,11,22,.46) !important;
  color:#fff !important;
  font-weight:850 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035) !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .v9540-programs{
  margin-top:12px !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:8px !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .onboarding-program{
  min-height:62px !important;
  border-radius:18px !important;
  display:grid !important;
  grid-template-columns:auto 1fr !important;
  gap:6px 12px !important;
  align-items:center !important;
  text-align:left !important;
  padding:12px 14px !important;
  border:1px solid rgba(124,236,255,.14) !important;
  background:rgba(3,11,22,.34) !important;
  color:rgba(235,248,255,.90) !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .onboarding-program b{
  grid-row:1 / span 2 !important;
  display:grid !important;
  place-items:center !important;
  min-width:68px !important;
  height:42px !important;
  border-radius:999px !important;
  background:rgba(124,236,255,.12) !important;
  color:var(--cyan) !important;
  font-weight:1000 !important;
  letter-spacing:-.02em !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .onboarding-program strong{
  color:#fff !important;
  font-weight:1000 !important;
  font-size:17px !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .onboarding-program span{
  color:rgba(224,240,255,.68) !important;
  line-height:1.25 !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .onboarding-program.active{
  border-color:rgba(124,236,255,.38) !important;
  background:
    radial-gradient(circle at 10% 20%, rgba(124,236,255,.20), transparent 34%),
    rgba(4,16,30,.54) !important;
  box-shadow:0 0 26px rgba(124,236,255,.10), inset 0 1px 0 rgba(255,255,255,.04) !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-side{
  align-content:center !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-side-title{
  margin-top:2px !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-side-big{
  font-size:clamp(30px,5vw,48px) !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-pill-row span{
  background:rgba(3,11,22,.36) !important;
}

/* Let onboarding sit better on iPad landscape. */
@media(min-width:1180px){
  #startScreen.dashboard-mockup-sync .onboarding-v9540{
    grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr) !important;
  }
}

/* Phone onboarding: clean but not cramped. */
@media(max-width:620px){
  #startScreen.dashboard-mockup-sync .onboarding-v9540 .onboarding-program{
    grid-template-columns:1fr !important;
  }
  #startScreen.dashboard-mockup-sync .onboarding-v9540 .onboarding-program b{
    grid-row:auto !important;
    min-width:0 !important;
    width:max-content !important;
    padding:0 14px !important;
  }
}

/* ==========================================================
   v96 RC9.1 ONBOARDING WIDTH FIX
   The onboarding panel sits in the right dashboard column, so it must not
   split into another two-column layout inside that already narrow area.
   ========================================================== */
#startScreen.dashboard-mockup-sync .onboarding-v9540{
  grid-template-columns:1fr !important;
  gap:12px !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-main{
  min-height:0 !important;
  padding:22px !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-title{
  font-size:clamp(38px,5.4vw,58px) !important;
  line-height:.90 !important;
  max-width:100% !important;
  overflow:visible !important;
  text-wrap:balance !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-focus{
  font-size:clamp(17px,2.2vw,22px) !important;
  max-width:100% !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-side{
  display:grid !important;
  grid-template-columns:auto 1fr !important;
  min-height:0 !important;
  padding:16px !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-side .dash-v9540-ring{
  --size:76px !important;
  grid-row:1 / span 3 !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-side-big,
#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-side-sub{
  grid-column:2 !important;
}

#startScreen.dashboard-mockup-sync .onboarding-v9540 .dash-v9540-pill-row{
  grid-column:1 / -1 !important;
}


/* ==========================================================
   v96 RC10 PASS CONTROLS LOCK
   One source of truth for pass controls:
   menu + progress + prev/next share the sticky top row.
   Old sticky-bottom control behavior is explicitly disabled.
   ========================================================== */

body.exercise-active .wrap{
  padding-bottom:calc(26px + var(--safe-bottom)) !important;
}

/* Top bar becomes the only pass control surface. */
body.exercise-active .sticky-nav{
  position:sticky !important;
  top:0 !important;
  z-index:9994 !important;
  padding:calc(8px + env(safe-area-inset-top,0px)) 10px 8px !important;
  background:
    linear-gradient(180deg, rgba(5,10,19,.98), rgba(5,10,19,.88) 72%, rgba(5,10,19,.10)) !important;
  border-bottom:1px solid rgba(124,236,255,.12) !important;
  backdrop-filter:blur(16px) saturate(126%) !important;
}

body.exercise-active .nav-row{
  display:grid !important;
  grid-template-columns:48px minmax(120px,1fr) minmax(260px,420px) !important;
  gap:8px !important;
  align-items:center !important;
}

body.exercise-active .nav-actions,
body.exercise-active .nav-left,
body.exercise-active .menu-wrap{
  display:block !important;
  min-width:0 !important;
}

/* Menu owns the first cell. */
body.exercise-active #menuToggleBtn,
body.exercise-active .menu-toggle{
  display:grid !important;
  place-items:center !important;
  width:48px !important;
  min-width:48px !important;
  max-width:48px !important;
  height:46px !important;
  min-height:46px !important;
  padding:0 !important;
  margin:0 !important;
  border-radius:16px !important;
  font-size:0 !important;
  line-height:1 !important;
  border:1px solid rgba(124,236,255,.16) !important;
  background:rgba(5,14,27,.76) !important;
  box-shadow:0 10px 30px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.035) !important;
}

body.exercise-active #menuToggleBtn::before{
  content:'☰' !important;
  font-size:22px !important;
  line-height:1 !important;
}

/* Progress stays in the middle and is never allowed to push buttons off screen. */
body.exercise-active .progress-meta{
  min-width:0 !important;
  display:grid !important;
  gap:6px !important;
  align-self:center !important;
}

body.exercise-active #exerciseMeta{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  font-size:clamp(11px,1.8vw,14px) !important;
  letter-spacing:.08em !important;
}

/* The pass buttons now live in the top row. No bottom sticky behavior remains. */
body.exercise-active .pass-bottom-controls{
  position:relative !important;
  inset:auto !important;
  bottom:auto !important;
  left:auto !important;
  right:auto !important;
  top:auto !important;
  z-index:1 !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  align-items:center !important;
  gap:8px !important;
  width:100% !important;
  max-width:none !important;
  padding:0 !important;
  margin:0 !important;
  background:transparent !important;
  justify-self:stretch !important;
}

body.exercise-active .pass-bottom-controls.has-prev{
  grid-template-columns:52px minmax(0,1fr) !important;
}

body.exercise-active .pass-bottom-controls.no-prev,
body.exercise-active:not(.pass-has-prev) .pass-bottom-controls{
  grid-template-columns:1fr !important;
}

/* Compact back button: hidden until workout is primed and meaningful. */
body.exercise-active #prevBtn.compact-prev{
  display:none !important;
  place-items:center !important;
  width:52px !important;
  min-width:52px !important;
  max-width:52px !important;
  height:50px !important;
  min-height:50px !important;
  padding:0 !important;
  margin:0 !important;
  border-radius:16px !important;
  font-size:28px !important;
  line-height:1 !important;
  font-weight:1000 !important;
}

body.exercise-active.pass-has-prev #prevBtn.compact-prev,
body.exercise-active .pass-bottom-controls.has-prev #prevBtn.compact-prev{
  display:grid !important;
}

body.exercise-active #prevBtn.compact-prev::before,
body.exercise-active #prevBtn.compact-prev::after{
  content:none !important;
  display:none !important;
}

body.exercise-active #nextBtn{
  width:100% !important;
  min-width:0 !important;
  max-width:none !important;
  height:50px !important;
  min-height:50px !important;
  border-radius:17px !important;
  font-size:clamp(16px,2.6vw,22px) !important;
  line-height:1 !important;
  font-weight:1000 !important;
  padding:0 16px !important;
  white-space:nowrap !important;
}

/* Exit is menu-only while in pass, reducing top-row collisions. */
body.exercise-active #exitPassBtn{
  display:none !important;
}

/* Menu dropdown aligns below the top bar and stays away from buttons/fullscreen close areas. */
body.exercise-active .top-tools{
  position:fixed !important;
  top:calc(62px + env(safe-area-inset-top,0px)) !important;
  left:10px !important;
  right:10px !important;
  z-index:9996 !important;
}

/* Fullscreen/pseudo fullscreen: leave safe top room and avoid browser-close collisions. */
body.exercise-active.native-fullscreen-active .sticky-nav,
body.exercise-active.pseudo-fullscreen .sticky-nav{
  padding-top:max(16px, calc(12px + env(safe-area-inset-top,0px))) !important;
}

body.exercise-active.pseudo-fullscreen:not(.native-fullscreen-active) #exerciseScreen.active{
  position:fixed !important;
  inset:0 !important;
  z-index:9990 !important;
  overflow:auto !important;
  background:#030713 !important;
}

/* iPad landscape priority: keep one row and never let right buttons fall out. */
@media(min-width:900px){
  body.exercise-active .nav-row{
    grid-template-columns:48px minmax(180px,1fr) minmax(300px,430px) !important;
  }
}

/* Phone/portrait: still one top bar, but buttons compress safely. */
@media(max-width:620px){
  body.exercise-active .nav-row{
    grid-template-columns:46px minmax(86px,1fr) minmax(150px,44vw) !important;
    gap:7px !important;
  }

  body.exercise-active #menuToggleBtn,
  body.exercise-active .menu-toggle{
    width:46px !important;
    min-width:46px !important;
    max-width:46px !important;
    height:44px !important;
    min-height:44px !important;
    border-radius:15px !important;
  }

  body.exercise-active .pass-bottom-controls.has-prev{
    grid-template-columns:44px minmax(0,1fr) !important;
  }

  body.exercise-active #prevBtn.compact-prev{
    width:44px !important;
    min-width:44px !important;
    max-width:44px !important;
    height:44px !important;
    min-height:44px !important;
    border-radius:14px !important;
    font-size:24px !important;
  }

  body.exercise-active #nextBtn{
    height:44px !important;
    min-height:44px !important;
    border-radius:15px !important;
    padding:0 10px !important;
    font-size:clamp(13px,3.4vw,16px) !important;
  }
}

/* Static pass-layout test mode: replace video behavior with deterministic image test. */
body.pass-image-test .video-wrap{
  background:#050a12 !important;
}

body.pass-image-test .video-wrap .pass-test-frame{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}

body.pass-image-test .video-wrap::after{
  content:'PASSVY TEST · filmruta ersatt med bild';
  position:absolute;
  left:14px;
  bottom:14px;
  z-index:3;
  padding:8px 11px;
  border-radius:999px;
  background:rgba(3,11,22,.58);
  border:1px solid rgba(124,236,255,.22);
  color:#dff8ff;
  font-weight:950;
  letter-spacing:.10em;
  text-transform:uppercase;
  font-size:11px;
}


/* ==========================================================
   v96 RC11 PASS CONTROLS POLISH
   Findings from rendered static QA:
   - menu should not be top-left in pass/fullscreen because it can collide with browser close UI
   - next/start button text should not be black
   Fix:
   - progress owns the left/middle space
   - menu is moved into the right-side control cluster before back/next
   - CTA text is white with subtle glow
   ========================================================== */

body.exercise-active .nav-row{
  grid-template-columns:minmax(160px,1fr) 48px minmax(260px,420px) !important;
}

/* Reorder the existing DOM visually:
   1 progress/meta
   2 menu
   3 pass buttons */
body.exercise-active .progress-meta{
  order:1 !important;
  grid-column:1 !important;
}

body.exercise-active .nav-actions{
  order:2 !important;
  grid-column:2 !important;
  justify-self:end !important;
  width:48px !important;
  min-width:48px !important;
}

body.exercise-active .pass-bottom-controls{
  order:3 !important;
  grid-column:3 !important;
}

/* Menu now belongs to the right control zone, not the fullscreen-close zone. */
body.exercise-active #menuToggleBtn,
body.exercise-active .menu-toggle{
  width:48px !important;
  min-width:48px !important;
  max-width:48px !important;
  height:50px !important;
  min-height:50px !important;
  border-radius:16px !important;
}

/* Keep the dropdown aligned under the moved menu/control cluster. */
body.exercise-active .top-tools{
  top:calc(66px + env(safe-area-inset-top,0px)) !important;
  left:auto !important;
  right:10px !important;
  width:min(520px, calc(100vw - 20px)) !important;
}

/* CTA text: no black text on cyan button. */
body.exercise-active #nextBtn,
body.exercise-active .pass-bottom-controls #nextBtn{
  color:#f4fbff !important;
  text-shadow:0 1px 0 rgba(0,0,0,.30), 0 0 18px rgba(255,255,255,.16) !important;
  background:linear-gradient(180deg,#55cfff,#0f8fe8) !important;
  box-shadow:
    0 14px 34px rgba(59,166,255,.24),
    inset 0 1px 0 rgba(255,255,255,.28) !important;
}

body.exercise-active #nextBtn:active{
  transform:translateY(1px) !important;
}

/* Back button should visually match but remain secondary. */
body.exercise-active #prevBtn.compact-prev{
  color:#f4fbff !important;
  background:rgba(5,14,27,.76) !important;
}

/* iPad landscape: reserve a small safety gutter at far left for native fullscreen close UI. */
@media(min-width:900px){
  body.exercise-active .nav-row{
    grid-template-columns:minmax(190px,1fr) 50px minmax(310px,430px) !important;
    padding-left:10px !important;
  }
}

/* Phone/portrait: keep progress first, then menu, then compressed CTA. */
@media(max-width:620px){
  body.exercise-active .nav-row{
    grid-template-columns:minmax(80px,1fr) 44px minmax(150px,44vw) !important;
    gap:7px !important;
  }

  body.exercise-active .nav-actions{
    width:44px !important;
    min-width:44px !important;
  }

  body.exercise-active #menuToggleBtn,
  body.exercise-active .menu-toggle{
    width:44px !important;
    min-width:44px !important;
    max-width:44px !important;
    height:44px !important;
    min-height:44px !important;
  }
}


/* ==========================================================
   v96 RC12 DASHBOARD BACKGROUND VISIBILITY
   Finding: on phone the dashboard background image existed but was buried by
   image opacity + dark overlay. Make the background visibly present on all
   dashboard breakpoints while keeping text readable.
   ========================================================== */

/* Full dashboard section gets a very subtle background echo, so the image is
   not only local to the hero-card area. */
#startScreen.dashboard-mockup-sync{
  position:relative !important;
  overflow:hidden !important;
}

#startScreen.dashboard-mockup-sync::before{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  pointer-events:none !important;
  z-index:0 !important;
  background:
    linear-gradient(180deg, rgba(3,8,18,.72), rgba(3,8,18,.90)),
    url('../img/v93/hero/hero-dashboard.webp') center center / cover no-repeat !important;
  opacity:.18 !important;
  filter:saturate(1.18) brightness(1.16) contrast(1.08) !important;
}

#startScreen.dashboard-mockup-sync > *{
  position:relative !important;
  z-index:1 !important;
}

/* Hero image should be clearly visible behind the two-column dashboard. */
#startScreen.dashboard-mockup-sync .home-hero{
  background:
    linear-gradient(90deg, rgba(3,8,18,.76), rgba(3,8,18,.34) 66%, rgba(3,8,18,.54)),
    url('../img/v93/hero/hero-dashboard.webp') center right / cover no-repeat !important;
}

#startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
  opacity:.94 !important;
  filter:saturate(1.32) brightness(1.22) contrast(1.14) !important;
  object-position:center right !important;
}

/* Overlay still exists, but no longer buries the image. */
#startScreen.dashboard-mockup-sync .home-hero::before{
  background:
    linear-gradient(90deg,
      rgba(2,8,18,.68) 0%,
      rgba(2,8,18,.55) 32%,
      rgba(2,8,18,.18) 66%,
      rgba(2,8,18,.34) 100%),
    radial-gradient(circle at 74% 52%, rgba(124,236,255,.16), transparent 34%) !important;
  opacity:.78 !important;
}

#startScreen.dashboard-mockup-sync .home-hero::after{
  opacity:.48 !important;
}

/* Phone was the problematic case: make the image visible even when stacked. */
@media(max-width:620px){
  #startScreen.dashboard-mockup-sync::before{
    opacity:.24 !important;
    background:
      linear-gradient(180deg, rgba(3,8,18,.58), rgba(3,8,18,.88)),
      url('../img/v93/hero/hero-dashboard.webp') 66% center / cover no-repeat !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero{
    background:
      linear-gradient(90deg, rgba(3,8,18,.74), rgba(3,8,18,.42)),
      url('../img/v93/hero/hero-dashboard.webp') 66% center / cover no-repeat !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
    opacity:.86 !important;
    object-position:66% center !important;
    filter:saturate(1.34) brightness(1.24) contrast(1.15) !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero::before{
    background:
      linear-gradient(90deg,
        rgba(2,8,18,.72) 0%,
        rgba(2,8,18,.55) 52%,
        rgba(2,8,18,.35) 100%) !important;
    opacity:.70 !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero::after{
    opacity:.34 !important;
  }
}


/* ==========================================================
   v96 RC14 PREVIOUS BACKGROUND MINIMAL FIX
   Correction after RC13:
   - keep the previous preferred dashboard image
   - do NOT redesign dashboard text/buttons/layout
   - only add/force a visible background layer using the existing look
   ========================================================== */

#startScreen.dashboard-mockup-sync{
  position:relative !important;
  isolation:isolate !important;
  overflow:hidden !important;
}

#startScreen.dashboard-mockup-sync > .dashboard-global-bg-img{
  display:block !important;
  position:absolute !important;
  inset:0 !important;
  z-index:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center right !important;
  opacity:.52 !important;
  filter:saturate(1.22) brightness(1.28) contrast(1.12) !important;
  pointer-events:none !important;
  user-select:none !important;
}

#startScreen.dashboard-mockup-sync > *:not(.dashboard-global-bg-img){
  position:relative !important;
  z-index:1 !important;
}

/* Keep the same previous image in the hero as well. */
#startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
  content:url('../img/v93/hero/hero-dashboard.webp') !important;
  display:block !important;
  opacity:.76 !important;
  filter:saturate(1.18) brightness(1.22) contrast(1.10) !important;
  object-position:center right !important;
}

/* Only lighten the overlay enough that the old image reads on real iPad/phone.
   This is intentionally smaller than RC13. */
#startScreen.dashboard-mockup-sync .home-hero::before{
  opacity:.56 !important;
}

#startScreen.dashboard-mockup-sync .home-hero::after{
  opacity:.30 !important;
}

@media(max-width:899px){
  #startScreen.dashboard-mockup-sync > .dashboard-global-bg-img{
    opacity:.64 !important;
    object-position:58% center !important;
    filter:saturate(1.25) brightness(1.34) contrast(1.14) !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
    opacity:.84 !important;
    object-position:58% center !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero::before{
    opacity:.48 !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero::after{
    opacity:.24 !important;
  }
}


/* ==========================================================
   v96 RC15 UNFRAMED DASHBOARD BACKGROUND – CORRECTED
   - keep previous liked image: assets/img/v93/hero/hero-dashboard.webp
   - image locked behind everything from the top of dashboard
   - remove the outer shared card around left + right columns
   - keep text/buttons/layout style from RC14
   ========================================================== */

#startScreen.dashboard-mockup-sync{
  position:relative !important;
  isolation:isolate !important;
  overflow:hidden !important;
  background:transparent !important;
}

#startScreen.dashboard-mockup-sync > .dashboard-global-bg-img{
  display:block !important;
  position:absolute !important;
  inset:0 !important;
  z-index:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center right !important;
  opacity:.66 !important;
  filter:saturate(1.24) brightness(1.18) contrast(1.10) !important;
  pointer-events:none !important;
  user-select:none !important;
}

#startScreen.dashboard-mockup-sync::before{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  pointer-events:none !important;
  z-index:0 !important;
  background:
    linear-gradient(180deg, rgba(2,8,18,.56) 0%, rgba(2,8,18,.26) 24%, rgba(2,8,18,.38) 100%),
    linear-gradient(90deg, rgba(2,8,18,.50) 0%, rgba(2,8,18,.18) 35%, rgba(2,8,18,.36) 100%),
    radial-gradient(circle at 74% 52%, rgba(124,236,255,.12), transparent 34%) !important;
  opacity:.86 !important;
}

#startScreen.dashboard-mockup-sync::after{
  content:'' !important;
  position:absolute !important;
  inset:0 !important;
  pointer-events:none !important;
  z-index:0 !important;
  background:
    repeating-linear-gradient(90deg, rgba(124,236,255,.018) 0 1px, transparent 1px 56px),
    linear-gradient(180deg, rgba(255,255,255,.025), transparent 24%, rgba(0,0,0,.13)) !important;
  opacity:.72 !important;
}

#startScreen.dashboard-mockup-sync > *:not(.dashboard-global-bg-img){
  position:relative !important;
  z-index:1 !important;
}

/* The outer hero card is removed. The two columns now live directly on the page background. */
#startScreen.dashboard-mockup-sync .home-hero{
  position:relative !important;
  overflow:visible !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero::before,
#startScreen.dashboard-mockup-sync .home-hero::after{
  display:none !important;
  content:none !important;
}

/* The old local hero image is hidden because the background now belongs to the whole dashboard. */
#startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
  display:none !important;
}

/* Keep the same two-column logic, but without the wrapper card. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:18px !important;
  align-items:stretch !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
  position:relative !important;
  z-index:1 !important;
  padding:clamp(22px,4vw,38px) !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
}

/* Remove the shared panel feeling around the right column, but keep its inner information cards. */
#startScreen.dashboard-mockup-sync .hero-dashboard-panel,
#startScreen.dashboard-mockup-sync .hero-dashboard-panel .panel-pad,
#startScreen.dashboard-mockup-sync .home-quickstats{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .hero-dashboard-panel .panel-pad{
  padding:0 !important;
}

#startScreen.dashboard-mockup-sync .home-only-grid{
  margin-top:18px !important;
}

/* Lighten inner cards slightly so the global image reads through, without changing typography/buttons. */
#startScreen.dashboard-mockup-sync .dash-v9540-main,
#startScreen.dashboard-mockup-sync .dash-v9540-side,
#startScreen.dashboard-mockup-sync .metric-v9540{
  background:
    linear-gradient(135deg, rgba(124,236,255,.075), transparent 34%),
    linear-gradient(180deg, rgba(7,16,30,.42), rgba(4,10,20,.58)) !important;
  border-color:rgba(124,236,255,.10) !important;
  box-shadow:
    0 14px 36px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.030) !important;
  backdrop-filter:blur(5px) saturate(122%) !important;
}

@media(min-width:900px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
    grid-template-columns:minmax(0,.90fr) minmax(420px,1fr) !important;
    gap:20px !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    min-height:440px !important;
    display:flex !important;
    flex-direction:column !important;
    justify-content:center !important;
  }
}

@media(max-width:899px){
  #startScreen.dashboard-mockup-sync > .dashboard-global-bg-img{
    opacity:.72 !important;
    object-position:58% center !important;
    filter:saturate(1.26) brightness(1.24) contrast(1.12) !important;
  }

  #startScreen.dashboard-mockup-sync::before{
    background:
      linear-gradient(180deg, rgba(2,8,18,.50) 0%, rgba(2,8,18,.30) 30%, rgba(2,8,18,.56) 100%),
      linear-gradient(90deg, rgba(2,8,18,.48) 0%, rgba(2,8,18,.14) 56%, rgba(2,8,18,.38) 100%) !important;
    opacity:.82 !important;
  }
}

@media(max-width:620px){
  #startScreen.dashboard-mockup-sync > .dashboard-global-bg-img{
    opacity:.74 !important;
    object-position:54% center !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    padding:20px 14px 14px !important;
  }
}


/* ==========================================================
   v96 RC16 FULLSCREEN LOCKED DASHBOARD BACKGROUND
   Corrects RC15: background must not live in a dashboard cell.
   It is now a viewport-level fixed layer from top of screen.
   ========================================================== */

/* Create a stable stacking context for the app. */
html,
body{
  min-height:100% !important;
}

body{
  position:relative !important;
  background:#030713 !important;
}

/* Viewport-level background source of truth. It is outside #startScreen. */
body > .dashboard-viewport-bg-img{
  display:none;
}

/* Only show on dashboard/start, not exercise. Uses :has where supported by Safari/iPad. */
body:has(#startScreen.active):not(.exercise-active) > .dashboard-viewport-bg-img{
  display:block !important;
  position:fixed !important;
  inset:0 !important;
  z-index:0 !important;
  width:100vw !important;
  height:100dvh !important;
  min-height:100vh !important;
  object-fit:cover !important;
  object-position:center right !important;
  opacity:.72 !important;
  filter:saturate(1.24) brightness(1.18) contrast(1.10) !important;
  pointer-events:none !important;
  user-select:none !important;
}

/* Dashboard overlay also spans the viewport, not a grid cell. */
body:has(#startScreen.active):not(.exercise-active)::before{
  content:'' !important;
  position:fixed !important;
  inset:0 !important;
  z-index:0 !important;
  pointer-events:none !important;
  background:
    linear-gradient(180deg, rgba(2,8,18,.58) 0%, rgba(2,8,18,.24) 28%, rgba(2,8,18,.42) 100%),
    linear-gradient(90deg, rgba(2,8,18,.54) 0%, rgba(2,8,18,.18) 35%, rgba(2,8,18,.36) 100%),
    radial-gradient(circle at 72% 54%, rgba(124,236,255,.14), transparent 34%) !important;
}

body:has(#startScreen.active):not(.exercise-active)::after{
  content:'' !important;
  position:fixed !important;
  inset:0 !important;
  z-index:0 !important;
  pointer-events:none !important;
  background:
    repeating-linear-gradient(90deg, rgba(124,236,255,.018) 0 1px, transparent 1px 56px),
    linear-gradient(180deg, rgba(255,255,255,.025), transparent 24%, rgba(0,0,0,.16)) !important;
  opacity:.70 !important;
}

/* Make the app content sit above the viewport bg. */
body:has(#startScreen.active):not(.exercise-active) .wrap{
  position:relative !important;
  z-index:1 !important;
  background:transparent !important;
}

/* The start screen itself should not own the image anymore. */
#startScreen.dashboard-mockup-sync{
  background:transparent !important;
  isolation:auto !important;
  overflow:visible !important;
}

#startScreen.dashboard-mockup-sync > .dashboard-global-bg-img,
#startScreen.dashboard-mockup-sync > .dashboard-bg-img,
#startScreen.dashboard-mockup-sync .home-hero > .dashboard-bg-img{
  display:none !important;
}

/* Kill startScreen-local overlays from RC14/RC15 so they don't look like a cell. */
#startScreen.dashboard-mockup-sync::before,
#startScreen.dashboard-mockup-sync::after{
  display:none !important;
  content:none !important;
}

/* Keep outer card removed. */
#startScreen.dashboard-mockup-sync .home-hero{
  position:relative !important;
  overflow:visible !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero::before,
#startScreen.dashboard-mockup-sync .home-hero::after{
  display:none !important;
  content:none !important;
}

#startScreen.dashboard-mockup-sync .hero-dashboard-panel,
#startScreen.dashboard-mockup-sync .hero-dashboard-panel .panel-pad,
#startScreen.dashboard-mockup-sync .home-quickstats{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .hero-dashboard-panel .panel-pad{
  padding:0 !important;
}

/* Keep cards readable but not boxy. */
#startScreen.dashboard-mockup-sync .dash-v9540-main,
#startScreen.dashboard-mockup-sync .dash-v9540-side,
#startScreen.dashboard-mockup-sync .metric-v9540{
  background:
    linear-gradient(135deg, rgba(124,236,255,.075), transparent 34%),
    linear-gradient(180deg, rgba(7,16,30,.42), rgba(4,10,20,.58)) !important;
  border-color:rgba(124,236,255,.10) !important;
  box-shadow:
    0 14px 36px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.030) !important;
  backdrop-filter:blur(5px) saturate(122%) !important;
}

/* iPad/phone: stronger background presence under real-world glare. */
@media(max-width:899px){
  body:has(#startScreen.active):not(.exercise-active) > .dashboard-viewport-bg-img{
    opacity:.76 !important;
    object-position:58% center !important;
    filter:saturate(1.26) brightness(1.24) contrast(1.12) !important;
  }

  body:has(#startScreen.active):not(.exercise-active)::before{
    background:
      linear-gradient(180deg, rgba(2,8,18,.50) 0%, rgba(2,8,18,.30) 30%, rgba(2,8,18,.58) 100%),
      linear-gradient(90deg, rgba(2,8,18,.48) 0%, rgba(2,8,18,.14) 56%, rgba(2,8,18,.38) 100%) !important;
  }
}

@media(max-width:620px){
  body:has(#startScreen.active):not(.exercise-active) > .dashboard-viewport-bg-img{
    opacity:.78 !important;
    object-position:54% center !important;
  }
}

/* Fallback class for render/test contexts without :has. */
body.dashboard-bg-force > .dashboard-viewport-bg-img{
  display:block !important;
  position:fixed !important;
  inset:0 !important;
  z-index:0 !important;
  width:100vw !important;
  height:100dvh !important;
  min-height:100vh !important;
  object-fit:cover !important;
  object-position:center right !important;
  opacity:.72 !important;
  filter:saturate(1.24) brightness(1.18) contrast(1.10) !important;
  pointer-events:none !important;
  user-select:none !important;
}

body.dashboard-bg-force .wrap{
  position:relative !important;
  z-index:1 !important;
  background:transparent !important;
}


/* ==========================================================
   v96 RC17 MOBILE DASHBOARD ACTION DOCK
   Feedback: phone view felt stacked when Starta pass + Översikt lived in
   separate rows. Keep them in one shared action cell, side-by-side.
   ========================================================== */
@media screen and (max-width: 620px){
  #startScreen.dashboard-mockup-sync .dash-v9540-actions{
    display:grid !important;
    grid-template-columns:minmax(0,1.42fr) minmax(98px,.58fr) !important;
    gap:8px !important;
    align-items:stretch !important;
    margin-top:16px !important;
    padding:8px !important;
    border:1px solid rgba(124,236,255,.13) !important;
    border-radius:22px !important;
    background:
      linear-gradient(135deg, rgba(124,236,255,.070), transparent 42%),
      linear-gradient(180deg, rgba(3,13,27,.50), rgba(2,8,18,.66)) !important;
    box-shadow:
      0 14px 32px rgba(0,0,0,.20),
      inset 0 1px 0 rgba(255,255,255,.035) !important;
  }

  #startScreen.dashboard-mockup-sync .dash-v9540-actions .next-pass-btn,
  #startScreen.dashboard-mockup-sync .dash-v9540-actions .overview-pass-btn{
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    height:56px !important;
    min-height:56px !important;
    margin:0 !important;
    padding:0 10px !important;
    border-radius:16px !important;
    white-space:nowrap !important;
    line-height:1 !important;
  }

  #startScreen.dashboard-mockup-sync .dash-v9540-actions .next-pass-btn{
    font-size:clamp(18px,5.2vw,21px) !important;
    letter-spacing:-.035em !important;
  }

  #startScreen.dashboard-mockup-sync .dash-v9540-actions .overview-pass-btn{
    font-size:clamp(16px,4.4vw,18px) !important;
    letter-spacing:-.025em !important;
    background:rgba(3,12,24,.56) !important;
  }

  #startScreen.dashboard-mockup-sync .dash-v9540-actions .next-pass-btn:only-child{
    grid-column:1 / -1 !important;
  }
}

@media screen and (max-width: 360px){
  #startScreen.dashboard-mockup-sync .dash-v9540-actions{
    grid-template-columns:minmax(0,1.34fr) minmax(86px,.66fr) !important;
    gap:7px !important;
    padding:7px !important;
  }

  #startScreen.dashboard-mockup-sync .dash-v9540-actions .next-pass-btn,
  #startScreen.dashboard-mockup-sync .dash-v9540-actions .overview-pass-btn{
    height:54px !important;
    min-height:54px !important;
    padding:0 8px !important;
  }

  #startScreen.dashboard-mockup-sync .dash-v9540-actions .next-pass-btn{
    font-size:17px !important;
  }

  #startScreen.dashboard-mockup-sync .dash-v9540-actions .overview-pass-btn{
    font-size:15px !important;
  }
}

/* ==========================================================
   v96 RC18 — dashboard mockup implementation
   - Hero accent locked to approved cyan second line
   - Dagens pass as dedicated card
   - Framgångsmätare rebuilt as integrated module
   - iPad/desktop: KPI meters to the side of phase progress
   - Snabbåtkomst and bottom nav intentionally not introduced in RC18
   ========================================================== */

#startScreen.dashboard-mockup-sync{
  position:relative !important;
  isolation:isolate !important;
}

#startScreen.dashboard-mockup-sync .dashboard-global-bg-img,
#startScreen.dashboard-mockup-sync .dashboard-bg-img{
  display:none !important;
}

body:not(.exercise-active) .dashboard-shortcuts-panel,
#startScreen.dashboard-mockup-sync .dashboard-shortcuts-panel{
  display:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero,
#startScreen.dashboard-mockup-sync .hero.home-hero{
  position:relative !important;
  padding:clamp(24px,5vw,44px) clamp(18px,4.5vw,48px) 18px !important;
  margin:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  overflow:visible !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:18px !important;
  align-items:stretch !important;
  position:relative !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
  display:block !important;
  min-height:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  overflow:visible !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::before,
#startScreen.dashboard-mockup-sync .home-hero .showcase-copy::after{
  display:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-eyebrow{
  display:inline-flex !important;
  align-items:center !important;
  min-height:36px !important;
  padding:8px 16px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.26) !important;
  background:rgba(5,15,30,.42) !important;
  color:#9af4ff !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 0 30px rgba(43,175,255,.10) !important;
  font-size:clamp(12px,2.7vw,16px) !important;
  line-height:1 !important;
  font-weight:1000 !important;
  letter-spacing:.16em !important;
  text-transform:uppercase !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1{
  margin:18px 0 0 !important;
  max-width:min(860px, 100%) !important;
  color:#fff !important;
  font-size:clamp(54px,13vw,106px) !important;
  line-height:.88 !important;
  letter-spacing:-.086em !important;
  font-weight:1000 !important;
  text-wrap:balance !important;
  text-shadow:0 18px 46px rgba(0,0,0,.34) !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1 span{
  color:#9cf3ff !important;
  background:linear-gradient(180deg,#c3fbff 0%,#89ecff 54%,#68d8ff 100%) !important;
  -webkit-background-clip:text !important;
  background-clip:text !important;
  -webkit-text-fill-color:transparent !important;
  text-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-intro{
  margin:18px 0 0 !important;
  max-width:760px !important;
  color:rgba(235,246,255,.93) !important;
  font-size:clamp(21px,5vw,34px) !important;
  line-height:1.16 !important;
  font-weight:760 !important;
  letter-spacing:-.025em !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-signals{
  display:flex !important;
  flex-wrap:wrap !important;
  gap:8px !important;
  margin-top:22px !important;
}

#startScreen.dashboard-mockup-sync .showcase-signals .signal-chip,
#startScreen.dashboard-mockup-sync .showcase-signals span{
  display:inline-flex !important;
  align-items:center !important;
  gap:9px !important;
  min-height:42px !important;
  padding:10px 14px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.30) !important;
  background:rgba(3,13,27,.55) !important;
  color:rgba(239,249,255,.96) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 0 26px rgba(64,190,255,.08) !important;
  font-size:clamp(14px,3.1vw,17px) !important;
  font-weight:900 !important;
  letter-spacing:-.018em !important;
}

#startScreen.dashboard-mockup-sync .signal-icon{
  width:20px !important;
  height:20px !important;
  color:#76ecff !important;
  flex:0 0 auto !important;
}

#startScreen.dashboard-mockup-sync .signal-icon svg,
#startScreen.dashboard-mockup-sync .rc18-pass-icon svg,
#startScreen.dashboard-mockup-sync .rc18-primary-btn svg,
#startScreen.dashboard-mockup-sync .rc18-secondary-btn svg,
#startScreen.dashboard-mockup-sync .rc18-time-chip svg,
#startScreen.dashboard-mockup-sync .rc18-arrow-icon svg{
  width:100% !important;
  height:100% !important;
  display:block !important;
  fill:none !important;
  stroke:currentColor !important;
  stroke-width:2.2 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
}

#startScreen.dashboard-mockup-sync .showcase-dashboard.hero-dashboard-panel,
#startScreen.dashboard-mockup-sync .showcase-dashboard{
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  overflow:visible !important;
}

#startScreen.dashboard-mockup-sync .showcase-dashboard > .panel-pad{
  padding:0 !important;
}

#startScreen.dashboard-mockup-sync .rc18-today-card{
  position:relative !important;
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  gap:18px !important;
  align-items:start !important;
  padding:clamp(22px,4.7vw,34px) !important;
  border-radius:clamp(28px,6vw,42px) !important;
  border:1px solid rgba(124,236,255,.22) !important;
  background:
    radial-gradient(circle at 80% 22%, rgba(124,236,255,.14), transparent 36%),
    radial-gradient(circle at 58% 120%, rgba(40,150,255,.13), transparent 48%),
    linear-gradient(180deg, rgba(6,24,45,.82), rgba(4,13,25,.90)) !important;
  box-shadow:0 26px 70px rgba(0,0,0,.30), inset 0 1px 0 rgba(255,255,255,.045) !important;
  backdrop-filter:blur(14px) saturate(130%) !important;
  overflow:hidden !important;
}

#startScreen.dashboard-mockup-sync .rc18-today-card::after{
  content:'' !important;
  position:absolute !important;
  inset:auto -10% -42% 8% !important;
  height:190px !important;
  border-radius:999px !important;
  background:radial-gradient(circle, rgba(124,236,255,.12), rgba(34,130,255,.06) 38%, transparent 68%) !important;
  opacity:.7 !important;
  pointer-events:none !important;
}

#startScreen.dashboard-mockup-sync .rc18-pass-icon{
  width:70px !important;
  height:70px !important;
  display:grid !important;
  place-items:center !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.26) !important;
  background:linear-gradient(180deg, rgba(25,82,132,.58), rgba(4,18,34,.72)) !important;
  color:#79ecff !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 18px 42px rgba(0,0,0,.22) !important;
}

#startScreen.dashboard-mockup-sync .rc18-pass-icon svg{width:38px !important;height:38px !important;stroke-width:2.7 !important;}

#startScreen.dashboard-mockup-sync .rc18-today-copy{
  position:relative !important;
  z-index:1 !important;
  min-width:0 !important;
}

#startScreen.dashboard-mockup-sync .rc18-kicker{
  color:#86f1ff !important;
  text-transform:uppercase !important;
  letter-spacing:.16em !important;
  font-size:clamp(12px,2.8vw,15px) !important;
  line-height:1.1 !important;
  font-weight:1000 !important;
}

#startScreen.dashboard-mockup-sync .rc18-today-copy h2{
  margin:8px 0 4px !important;
  color:#fff !important;
  font-size:clamp(34px,8.8vw,56px) !important;
  line-height:.94 !important;
  letter-spacing:-.065em !important;
  font-weight:1000 !important;
}

#startScreen.dashboard-mockup-sync .rc18-today-meta{
  color:rgba(221,235,250,.78) !important;
  font-size:clamp(18px,4.3vw,25px) !important;
  line-height:1.15 !important;
  font-weight:820 !important;
  letter-spacing:-.03em !important;
}

#startScreen.dashboard-mockup-sync .rc18-today-copy p{
  margin:22px 0 0 !important;
  max-width:62ch !important;
  color:rgba(224,236,250,.80) !important;
  font-size:clamp(18px,4.1vw,24px) !important;
  line-height:1.30 !important;
  font-weight:760 !important;
  letter-spacing:-.02em !important;
}

#startScreen.dashboard-mockup-sync .rc18-time-chip{
  position:absolute !important;
  top:clamp(20px,4.2vw,30px) !important;
  right:clamp(20px,4.2vw,30px) !important;
  z-index:2 !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:8px !important;
  min-height:40px !important;
  padding:9px 14px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.24) !important;
  background:rgba(3,13,27,.52) !important;
  color:rgba(237,248,255,.96) !important;
  font-size:clamp(14px,3.4vw,17px) !important;
  font-weight:900 !important;
}

#startScreen.dashboard-mockup-sync .rc18-time-chip svg{width:18px !important;height:18px !important;color:#79ecff !important;}

#startScreen.dashboard-mockup-sync .rc18-today-actions{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) minmax(0,.92fr) !important;
  gap:12px !important;
  margin-top:26px !important;
  position:relative !important;
  z-index:1 !important;
}

#startScreen.dashboard-mockup-sync .rc18-primary-btn,
#startScreen.dashboard-mockup-sync .rc18-secondary-btn{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  min-height:60px !important;
  padding:0 18px !important;
  border-radius:18px !important;
  font-weight:1000 !important;
  font-size:clamp(17px,4.4vw,22px) !important;
  letter-spacing:-.03em !important;
  text-decoration:none !important;
}

#startScreen.dashboard-mockup-sync .rc18-primary-btn{
  border:0 !important;
  color:#071523 !important;
  background:linear-gradient(180deg,#6ecbff 0%,#18aefe 56%,#1187ef 100%) !important;
  box-shadow:0 20px 44px rgba(36,166,255,.28), inset 0 1px 0 rgba(255,255,255,.38) !important;
}

#startScreen.dashboard-mockup-sync .rc18-secondary-btn{
  border:1px solid rgba(168,208,255,.24) !important;
  color:rgba(244,249,255,.96) !important;
  background:rgba(3,11,23,.48) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035) !important;
}

#startScreen.dashboard-mockup-sync .rc18-primary-btn svg,
#startScreen.dashboard-mockup-sync .rc18-secondary-btn svg{width:22px !important;height:22px !important;}
#startScreen.dashboard-mockup-sync .rc18-primary-btn svg{fill:currentColor !important;stroke:none !important;}

#startScreen.dashboard-mockup-sync .home-only-grid,
#startScreen.dashboard-mockup-sync .start-grid.home-only-grid{
  display:block !important;
  margin:0 !important;
  padding:0 clamp(18px,4.5vw,48px) clamp(32px,6vw,60px) !important;
}

#startScreen.dashboard-mockup-sync .quickstats-panel.home-quickstats,
#startScreen.dashboard-mockup-sync .quickstats-panel{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  overflow:visible !important;
  margin:0 !important;
}

#startScreen.dashboard-mockup-sync .quickstats-panel > .panel-pad{
  padding:0 !important;
}

#startScreen.dashboard-mockup-sync .progress-section-title,
#startScreen.dashboard-mockup-sync .quickstats-panel .section-title{
  margin:18px 0 14px !important;
  color:#86f1ff !important;
  font-size:clamp(15px,3.8vw,20px) !important;
  letter-spacing:.28em !important;
  font-weight:1000 !important;
}

#startScreen.dashboard-mockup-sync .quick-stats-grid,
#startScreen.dashboard-mockup-sync .rc18-progress-grid{
  display:block !important;
  gap:0 !important;
}

#startScreen.dashboard-mockup-sync .rc18-progress-card{
  --edge:rgba(92,185,255,.68);
  position:relative !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:0 !important;
  padding:clamp(22px,4.7vw,34px) !important;
  border-radius:clamp(30px,6.4vw,44px) !important;
  border:1px solid rgba(100,197,255,.42) !important;
  background:
    radial-gradient(circle at 72% 16%, rgba(124,236,255,.11), transparent 36%),
    radial-gradient(circle at 18% 104%, rgba(28,119,255,.13), transparent 42%),
    linear-gradient(180deg, rgba(5,20,38,.78), rgba(3,10,20,.92)) !important;
  box-shadow:0 0 0 1px rgba(46,168,255,.07), 0 28px 72px rgba(0,0,0,.33), inset 0 1px 0 rgba(255,255,255,.045), 0 0 46px rgba(28,137,255,.16) !important;
  backdrop-filter:blur(14px) saturate(130%) !important;
  overflow:hidden !important;
}

#startScreen.dashboard-mockup-sync .rc18-progress-card::after{
  content:'' !important;
  position:absolute !important;
  inset:auto -8% -1px -8% !important;
  height:130px !important;
  opacity:.54 !important;
  background:
    radial-gradient(ellipse at 50% 100%, rgba(24,144,255,.18), transparent 60%),
    repeating-radial-gradient(ellipse at 22% 116%, rgba(80,202,255,.32) 0 1px, transparent 1px 15px) !important;
  transform:skewY(-3deg) !important;
  pointer-events:none !important;
}

#startScreen.dashboard-mockup-sync .rc18-progress-main{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  gap:clamp(20px,5vw,42px) !important;
  align-items:center !important;
  padding:0 0 clamp(22px,4.7vw,34px) !important;
}

#startScreen.dashboard-mockup-sync .rc18-progress-copy h2{
  margin:10px 0 4px !important;
  color:#fff !important;
  font-size:clamp(40px,9.4vw,72px) !important;
  line-height:.94 !important;
  letter-spacing:-.065em !important;
  font-weight:1000 !important;
}

#startScreen.dashboard-mockup-sync .rc18-progress-copy p{
  margin:0 !important;
  color:rgba(222,237,250,.82) !important;
  font-size:clamp(17px,4.2vw,26px) !important;
  line-height:1.22 !important;
  font-weight:760 !important;
  letter-spacing:-.02em !important;
}

#startScreen.dashboard-mockup-sync .rc18-day-row{
  display:flex !important;
  gap:8px !important;
  flex-wrap:wrap !important;
  margin-top:18px !important;
}

#startScreen.dashboard-mockup-sync .rc18-day-pill{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-width:68px !important;
  min-height:38px !important;
  padding:8px 16px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.25) !important;
  background:rgba(3,13,27,.50) !important;
  color:rgba(248,252,255,.97) !important;
  font-weight:1000 !important;
  font-size:16px !important;
}

#startScreen.dashboard-mockup-sync .rc18-kpi-grid{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  border-top:1px solid rgba(124,236,255,.16) !important;
}

#startScreen.dashboard-mockup-sync .rc18-kpi-grid::before{
  content:'' !important;
  position:absolute !important;
  top:0 !important;
  bottom:0 !important;
  left:50% !important;
  width:1px !important;
  background:linear-gradient(180deg, transparent, rgba(124,236,255,.18) 14%, rgba(124,236,255,.10) 82%, transparent) !important;
}

#startScreen.dashboard-mockup-sync .rc18-kpi-grid::after{
  content:'' !important;
  position:absolute !important;
  left:0 !important;
  right:0 !important;
  top:50% !important;
  height:1px !important;
  background:linear-gradient(90deg, transparent, rgba(124,236,255,.16) 16%, rgba(124,236,255,.10) 84%, transparent) !important;
}

#startScreen.dashboard-mockup-sync .rc18-kpi-cell{
  position:relative !important;
  z-index:1 !important;
  min-height:clamp(118px,24vw,170px) !important;
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  align-items:center !important;
  gap:clamp(12px,3.2vw,22px) !important;
  padding:clamp(18px,4vw,30px) clamp(12px,3.4vw,28px) !important;
  border:0 !important;
  background:transparent !important;
  color:inherit !important;
  text-align:left !important;
  border-radius:0 !important;
  box-shadow:none !important;
}

#startScreen.dashboard-mockup-sync .rc18-kpi-label{
  margin:0 0 8px !important;
  color:#75efff !important;
  text-transform:uppercase !important;
  letter-spacing:.16em !important;
  font-size:clamp(12px,2.8vw,15px) !important;
  line-height:1 !important;
  font-weight:1000 !important;
}

#startScreen.dashboard-mockup-sync .rc18-kpi-value{
  color:#fff !important;
  font-size:clamp(34px,7.2vw,52px) !important;
  line-height:.94 !important;
  letter-spacing:-.055em !important;
  font-weight:1000 !important;
  white-space:nowrap !important;
}

#startScreen.dashboard-mockup-sync .rc18-ring{
  --size:88px;
  --thick:11px;
  width:var(--size) !important;
  height:var(--size) !important;
  display:grid !important;
  place-items:center !important;
  flex:0 0 auto !important;
  position:relative !important;
  border-radius:999px !important;
  color:#fff !important;
  background:
    conic-gradient(from -2deg, #78ecff calc(var(--p) * 1%), rgba(8,36,70,.88) 0) !important;
  box-shadow:0 16px 38px rgba(0,0,0,.28), 0 0 26px rgba(62,201,255,.16), inset 0 0 0 1px rgba(124,236,255,.18) !important;
}

#startScreen.dashboard-mockup-sync .rc18-ring::before{
  content:'' !important;
  position:absolute !important;
  inset:var(--thick) !important;
  border-radius:inherit !important;
  background:radial-gradient(circle at 50% 42%, rgba(3,11,22,.98), rgba(2,8,18,.98)) !important;
  box-shadow:inset 0 0 0 1px rgba(124,236,255,.06) !important;
}

#startScreen.dashboard-mockup-sync .rc18-ring::after{
  content:'' !important;
  position:absolute !important;
  inset:1px !important;
  border-radius:inherit !important;
  background:radial-gradient(circle at 68% 22%, rgba(255,255,255,.20), transparent 8%, transparent 100%) !important;
  opacity:.46 !important;
  pointer-events:none !important;
}

#startScreen.dashboard-mockup-sync .rc18-ring span{
  position:relative !important;
  z-index:1 !important;
  color:#fff !important;
  font-size:calc(var(--size) * .28) !important;
  font-weight:1000 !important;
  letter-spacing:-.05em !important;
  text-shadow:0 10px 26px rgba(0,0,0,.34) !important;
}

#startScreen.dashboard-mockup-sync .rc18-ring-xl{--size:clamp(150px,34vw,236px);--thick:clamp(14px,3.2vw,24px);}
#startScreen.dashboard-mockup-sync .rc18-ring-sm{--size:clamp(72px,16vw,98px);--thick:9px;}

#startScreen.dashboard-mockup-sync .rc18-arrow-icon{
  width:clamp(72px,16vw,98px) !important;
  height:clamp(72px,16vw,98px) !important;
  display:grid !important;
  place-items:center !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.22) !important;
  background:radial-gradient(circle at 50% 34%, rgba(124,236,255,.13), rgba(3,12,24,.82) 62%) !important;
  color:#76ecff !important;
  box-shadow:0 16px 38px rgba(0,0,0,.26), inset 0 1px 0 rgba(255,255,255,.04) !important;
}
#startScreen.dashboard-mockup-sync .rc18-arrow-icon svg{width:44% !important;height:44% !important;stroke-width:2.5 !important;}

@media(max-width:520px){
  #startScreen.dashboard-mockup-sync .home-hero,
  #startScreen.dashboard-mockup-sync .start-grid.home-only-grid{
    padding-left:clamp(18px,5.6vw,26px) !important;
    padding-right:clamp(18px,5.6vw,26px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card{
    grid-template-columns:1fr !important;
    padding-top:74px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-pass-icon{
    position:absolute !important;
    top:22px !important;
    left:22px !important;
    width:58px !important;
    height:58px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-pass-icon svg{width:32px !important;height:32px !important;}

  #startScreen.dashboard-mockup-sync .rc18-time-chip{
    top:24px !important;
    right:22px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-actions{
    grid-template-columns:1.08fr .92fr !important;
    gap:8px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-primary-btn,
  #startScreen.dashboard-mockup-sync .rc18-secondary-btn{
    min-height:58px !important;
    padding:0 12px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-main{
    grid-template-columns:1fr !important;
    justify-items:start !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-ring-wrap{
    justify-self:start !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-cell{
    grid-template-columns:1fr !important;
    justify-items:start !important;
    align-content:center !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-value{
    font-size:clamp(30px,8vw,42px) !important;
  }
}

@media(min-width:820px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-grid{
    grid-template-columns:minmax(0,.94fr) minmax(420px,1.06fr) !important;
    gap:20px !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    min-height:310px !important;
    display:flex !important;
    flex-direction:column !important;
    justify-content:center !important;
    padding:28px !important;
    border:1px solid rgba(124,236,255,.16) !important;
    border-radius:30px !important;
    background:linear-gradient(180deg, rgba(3,13,27,.42), rgba(3,10,20,.52)) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.035) !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1{
    font-size:clamp(56px,4.5vw,78px) !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-intro{
    font-size:clamp(20px,1.75vw,28px) !important;
  }

  #startScreen.dashboard-mockup-sync .showcase-signals .signal-chip,
  #startScreen.dashboard-mockup-sync .showcase-signals span{
    font-size:15px !important;
    min-height:38px !important;
    padding:8px 12px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card{
    min-height:310px !important;
    padding:30px !important;
    align-content:center !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-copy h2{
    font-size:clamp(34px,3vw,48px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-meta{
    font-size:18px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-copy p{
    margin-top:18px !important;
    font-size:18px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-actions{
    grid-template-columns:1fr .94fr !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-card{
    grid-template-columns:minmax(0,1.18fr) minmax(360px,.82fr) !important;
    align-items:center !important;
    min-height:360px !important;
    padding:clamp(30px,3.5vw,48px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-card::before{
    content:'' !important;
    position:absolute !important;
    top:12% !important;
    bottom:12% !important;
    left:58.5% !important;
    width:1px !important;
    background:linear-gradient(180deg, transparent, rgba(124,236,255,.20) 16%, rgba(124,236,255,.08) 84%, transparent) !important;
    pointer-events:none !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-main{
    padding:0 !important;
    padding-right:clamp(28px,3.5vw,54px) !important;
    grid-template-columns:auto minmax(0,1fr) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid{
    border-top:0 !important;
    padding-left:clamp(24px,3.1vw,44px) !important;
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:clamp(22px,3.2vw,40px) clamp(28px,3.6vw,50px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid::before,
  #startScreen.dashboard-mockup-sync .rc18-kpi-grid::after{
    display:none !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-cell{
    min-height:auto !important;
    display:grid !important;
    grid-template-columns:1fr !important;
    justify-items:center !important;
    gap:8px !important;
    padding:0 !important;
    text-align:center !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-label{
    margin:0 0 8px !important;
    font-size:13px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-value{
    font-size:clamp(25px,2.6vw,38px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-xl{--size:clamp(190px,16vw,272px);--thick:22px;}
  #startScreen.dashboard-mockup-sync .rc18-ring-sm{--size:clamp(74px,7.2vw,104px);--thick:9px;}
  #startScreen.dashboard-mockup-sync .rc18-arrow-icon{width:clamp(74px,7.2vw,104px) !important;height:clamp(74px,7.2vw,104px) !important;}
}

@media(min-width:1180px){
  .wrap{width:min(1340px, calc(100vw - 48px)) !important;}
  #startScreen.dashboard-mockup-sync .home-hero,
  #startScreen.dashboard-mockup-sync .start-grid.home-only-grid{
    padding-left:0 !important;
    padding-right:0 !important;
  }
}

/* ==========================================================
   v96 RC19 — real app visual correction toward approved mockup
   - Fix mobile signal icons being styled as empty pills
   - Keep progress summary ring + copy side-by-side on mobile
   - Compact the Framgångsmätare card so it matches mockup proportions
   - Keep iPad/desktop metrics to the side, with unboxed metric modules
   ========================================================== */

/* Only the chip itself should be pill-styled — never the nested icon span. */
#startScreen.dashboard-mockup-sync .showcase-signals > .signal-chip,
#startScreen.dashboard-mockup-sync .showcase-signals > span{
  display:inline-flex !important;
  align-items:center !important;
  gap:9px !important;
  min-height:42px !important;
  padding:10px 14px !important;
  border-radius:999px !important;
  border:1px solid rgba(124,236,255,.30) !important;
  background:rgba(3,13,27,.55) !important;
  color:rgba(239,249,255,.96) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 0 26px rgba(64,190,255,.08) !important;
}
#startScreen.dashboard-mockup-sync .showcase-signals .signal-icon{
  width:20px !important;
  height:20px !important;
  min-width:20px !important;
  min-height:20px !important;
  padding:0 !important;
  margin:0 !important;
  display:inline-grid !important;
  place-items:center !important;
  flex:0 0 20px !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:#78ecff !important;
}
#startScreen.dashboard-mockup-sync .showcase-signals .signal-icon svg{
  width:20px !important;
  height:20px !important;
  display:block !important;
  fill:none !important;
  stroke:currentColor !important;
  stroke-width:2.35 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
}

/* Dagens pass actions must stay on one line on real iPhones. */
#startScreen.dashboard-mockup-sync .rc18-primary-btn,
#startScreen.dashboard-mockup-sync .rc18-secondary-btn{
  white-space:nowrap !important;
  min-width:0 !important;
}

/* Mobile: keep the approved mockup structure — main ring left, copy right. */
@media(max-width:520px){
  #startScreen.dashboard-mockup-sync .home-hero{
    padding-top:clamp(22px,5.4vw,30px) !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1{
    font-size:clamp(50px,12.5vw,66px) !important;
    line-height:.90 !important;
    letter-spacing:-.082em !important;
    max-width:96% !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-intro{
    font-size:clamp(20px,4.9vw,26px) !important;
    line-height:1.16 !important;
    max-width:92% !important;
  }

  #startScreen.dashboard-mockup-sync .showcase-signals{
    gap:8px !important;
    margin-top:18px !important;
  }

  #startScreen.dashboard-mockup-sync .showcase-signals > .signal-chip,
  #startScreen.dashboard-mockup-sync .showcase-signals > span{
    min-height:42px !important;
    padding:9px 13px !important;
    font-size:clamp(14px,3.55vw,16px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card{
    padding:clamp(22px,5.2vw,26px) !important;
    padding-top:74px !important;
    border-radius:32px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-copy h2{
    font-size:clamp(36px,8.7vw,46px) !important;
    line-height:.96 !important;
    letter-spacing:-.058em !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-meta{
    font-size:clamp(19px,4.35vw,22px) !important;
    line-height:1.18 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-copy p{
    margin-top:18px !important;
    font-size:clamp(18px,4.1vw,21px) !important;
    line-height:1.32 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-actions{
    grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr) !important;
    gap:12px !important;
    margin-top:22px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-primary-btn,
  #startScreen.dashboard-mockup-sync .rc18-secondary-btn{
    min-height:58px !important;
    padding:0 10px !important;
    gap:8px !important;
    border-radius:18px !important;
    font-size:clamp(17px,4.15vw,19px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-primary-btn svg,
  #startScreen.dashboard-mockup-sync .rc18-secondary-btn svg{
    width:19px !important;
    height:19px !important;
  }

  #startScreen.dashboard-mockup-sync .progress-section-title,
  #startScreen.dashboard-mockup-sync .quickstats-panel .section-title{
    margin:20px 0 12px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-card{
    padding:clamp(22px,5.4vw,28px) !important;
    border-radius:32px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-main{
    display:grid !important;
    grid-template-columns:minmax(108px, 34%) minmax(0, 1fr) !important;
    gap:clamp(18px,4.8vw,24px) !important;
    align-items:center !important;
    justify-items:stretch !important;
    padding:0 0 24px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-ring-wrap{
    justify-self:start !important;
    align-self:center !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-xl{
    --size:clamp(118px,31vw,136px) !important;
    --thick:clamp(12px,3vw,15px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy{
    min-width:0 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy .rc18-kicker{
    font-size:clamp(11px,2.7vw,13px) !important;
    letter-spacing:.20em !important;
    white-space:nowrap !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy h2{
    font-size:clamp(32px,8.4vw,40px) !important;
    line-height:.96 !important;
    letter-spacing:-.045em !important;
    word-spacing:.08em !important;
    white-space:nowrap !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy p{
    font-size:clamp(14px,3.65vw,17px) !important;
    line-height:1.18 !important;
    white-space:nowrap !important;
    letter-spacing:-.015em !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-day-row{
    margin-top:14px !important;
    gap:8px !important;
    flex-wrap:nowrap !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-day-pill{
    min-width:52px !important;
    min-height:34px !important;
    padding:7px 12px !important;
    font-size:15px !important;
    letter-spacing:.02em !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid{
    border-top:1px solid rgba(124,236,255,.15) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-cell{
    grid-template-columns:minmax(58px,auto) minmax(0,1fr) !important;
    gap:8px !important;
    align-items:center !important;
    justify-items:stretch !important;
    min-height:118px !important;
    padding:16px 10px !important;
    text-align:left !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-sm{
    --size:clamp(58px,15vw,68px) !important;
    --thick:8px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-sm span{
    font-size:calc(var(--size) * .30) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-label{
    margin:0 0 6px !important;
    font-size:clamp(11px,2.75vw,13px) !important;
    letter-spacing:.16em !important;
    white-space:normal !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-value{
    font-size:clamp(31px,7.8vw,39px) !important;
    line-height:.94 !important;
    letter-spacing:-.045em !important;
    white-space:nowrap !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-arrow-icon{
    width:clamp(58px,15vw,68px) !important;
    height:clamp(58px,15vw,68px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-test .rc18-kpi-label{
    letter-spacing:.20em !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid::before{
    background:linear-gradient(180deg, transparent, rgba(124,236,255,.14) 16%, rgba(124,236,255,.075) 84%, transparent) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid::after{
    background:linear-gradient(90deg, transparent, rgba(124,236,255,.13) 16%, rgba(124,236,255,.075) 84%, transparent) !important;
  }
}

/* Very narrow phones: reduce only the values, never collapse the card into a single column. */
@media(max-width:380px){
  #startScreen.dashboard-mockup-sync .rc18-progress-main{
    grid-template-columns:106px minmax(0,1fr) !important;
    gap:14px !important;
  }
  #startScreen.dashboard-mockup-sync .rc18-ring-xl{--size:106px !important;--thick:12px !important;}
  #startScreen.dashboard-mockup-sync .rc18-progress-copy h2{font-size:30px !important;}
  #startScreen.dashboard-mockup-sync .rc18-progress-copy p{font-size:13px !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-cell{grid-template-columns:54px 1fr !important;gap:8px !important;padding:14px 8px !important;}
  #startScreen.dashboard-mockup-sync .rc18-ring-sm{--size:54px !important;--thick:7px !important;}
  #startScreen.dashboard-mockup-sync .rc18-arrow-icon{width:54px !important;height:54px !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-value{font-size:29px !important;}
}

/* iPad/desktop: keep the approved side metrics, but remove small cell outlines completely. */
@media(min-width:820px){
  #startScreen.dashboard-mockup-sync .rc18-kpi-cell{
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    outline:0 !important;
  }
  #startScreen.dashboard-mockup-sync .rc18-progress-card::before{
    opacity:.82 !important;
  }
}


/* ==========================================================
   v96 RC20 — final mobile/iPad overflow polish from real device screenshots
   - Preserve RC19 visual direction, but remove all mobile clipping in progress card
   - More compact mobile KPI grid so 109/324 and 10 sek stay inside card
   - Keep iPad/desktop side-metrics clean and unboxed
   ========================================================== */

html, body{max-width:100%; overflow-x:hidden;}
#startScreen.dashboard-mockup-sync,
#startScreen.dashboard-mockup-sync *{box-sizing:border-box;}
#startScreen.dashboard-mockup-sync .home-only-grid,
#startScreen.dashboard-mockup-sync .quickstats-panel,
#startScreen.dashboard-mockup-sync .quick-stats-grid,
#startScreen.dashboard-mockup-sync .rc18-progress-card,
#startScreen.dashboard-mockup-sync .rc18-progress-main,
#startScreen.dashboard-mockup-sync .rc18-progress-copy,
#startScreen.dashboard-mockup-sync .rc18-kpi-grid,
#startScreen.dashboard-mockup-sync .rc18-kpi-cell{min-width:0 !important; max-width:100% !important;}

#startScreen.dashboard-mockup-sync .rc18-progress-copy h2,
#startScreen.dashboard-mockup-sync .rc18-kpi-value{
  letter-spacing:-.036em !important;
  word-spacing:.04em !important;
}

@media(max-width:520px){
  body:not(.exercise-active) .wrap{
    width:100% !important;
    max-width:100vw !important;
    padding-left:0 !important;
    padding-right:0 !important;
  }

  #startScreen.dashboard-mockup-sync .home-only-grid,
  #startScreen.dashboard-mockup-sync .start-grid.home-only-grid{
    padding-left:12px !important;
    padding-right:12px !important;
  }

  #startScreen.dashboard-mockup-sync .quickstats-panel > .panel-pad{
    padding:0 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-card{
    width:100% !important;
    max-width:100% !important;
    padding:18px !important;
    border-radius:30px !important;
    overflow:hidden !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-main{
    grid-template-columns:112px minmax(0,1fr) !important;
    gap:12px !important;
    padding:0 0 20px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-xl{
    --size:112px !important;
    --thick:12px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy .rc18-kicker{
    font-size:11px !important;
    letter-spacing:.16em !important;
    line-height:1.05 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy h2{
    font-size:clamp(27px,7.0vw,32px) !important;
    line-height:.98 !important;
    letter-spacing:-.034em !important;
    word-spacing:.05em !important;
    white-space:nowrap !important;
    max-width:100% !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy p{
    font-size:clamp(12px,3.25vw,15px) !important;
    line-height:1.18 !important;
    letter-spacing:-.012em !important;
    white-space:nowrap !important;
    max-width:100% !important;
    overflow:hidden !important;
    text-overflow:clip !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-day-row{
    gap:7px !important;
    margin-top:12px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-day-pill{
    min-width:48px !important;
    min-height:32px !important;
    padding:6px 10px !important;
    font-size:11px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
    width:100% !important;
    border-top:1px solid rgba(124,236,255,.14) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-cell{
    min-height:104px !important;
    grid-template-columns:48px minmax(0,1fr) !important;
    gap:8px !important;
    padding:14px 8px !important;
    overflow:hidden !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-sm{
    --size:48px !important;
    --thick:7px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-sm span{
    font-size:15px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-label{
    font-size:10px !important;
    letter-spacing:.16em !important;
    margin:0 0 6px !important;
    line-height:1.04 !important;
    white-space:normal !important;
    max-width:100% !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-value{
    font-size:clamp(23px,6.15vw,28px) !important;
    line-height:.98 !important;
    letter-spacing:-.032em !important;
    white-space:nowrap !important;
    max-width:100% !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-arrow-icon{
    width:48px !important;
    height:48px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-test .rc18-kpi-label{
    letter-spacing:.15em !important;
    font-size:9.5px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-card::after{
    height:96px !important;
    opacity:.46 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-meta{
    font-size:clamp(15px,3.6vw,18px) !important;
    line-height:1.12 !important;
    letter-spacing:-.035em !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-actions{
    grid-template-columns:minmax(0,1fr) minmax(0,.92fr) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-primary-btn,
  #startScreen.dashboard-mockup-sync .rc18-secondary-btn{
    font-size:clamp(16px,3.85vw,18px) !important;
    min-height:56px !important;
  }
}

@media(max-width:380px){
  #startScreen.dashboard-mockup-sync .home-only-grid,
  #startScreen.dashboard-mockup-sync .start-grid.home-only-grid{
    padding-left:10px !important;
    padding-right:10px !important;
  }
  #startScreen.dashboard-mockup-sync .rc18-progress-card{padding:16px !important;}
  #startScreen.dashboard-mockup-sync .rc18-progress-main{
    grid-template-columns:102px minmax(0,1fr) !important;
    gap:8px !important;
  }
  #startScreen.dashboard-mockup-sync .rc18-ring-xl{--size:102px !important;--thick:11px !important;}
  #startScreen.dashboard-mockup-sync .rc18-progress-copy h2{font-size:25px !important;}
  #startScreen.dashboard-mockup-sync .rc18-progress-copy p{font-size:12px !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-cell{
    grid-template-columns:44px minmax(0,1fr) !important;
    gap:7px !important;
    padding:13px 7px !important;
    min-height:98px !important;
  }
  #startScreen.dashboard-mockup-sync .rc18-ring-sm{--size:44px !important;--thick:6px !important;}
  #startScreen.dashboard-mockup-sync .rc18-ring-sm span{font-size:13px !important;}
  #startScreen.dashboard-mockup-sync .rc18-arrow-icon{width:44px !important;height:44px !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-label{font-size:9.5px !important;letter-spacing:.15em !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-value{font-size:21px !important;}
}

@media(min-width:820px){
  #startScreen.dashboard-mockup-sync .rc18-progress-copy h2{
    letter-spacing:-.035em !important;
    word-spacing:.06em !important;
  }
  #startScreen.dashboard-mockup-sync .rc18-kpi-value{
    letter-spacing:-.028em !important;
    word-spacing:.04em !important;
  }
}

/* RC20 narrow-value guard: long numeric KPIs must never clip on iPhone widths. */
@media(max-width:520px){
  #startScreen.dashboard-mockup-sync .rc18-kpi-grid .rc18-kpi-cell:nth-child(2) .rc18-kpi-value,
  #startScreen.dashboard-mockup-sync .rc18-kpi-grid .rc18-kpi-cell:nth-child(3) .rc18-kpi-value{
    font-size:clamp(21px,5.55vw,25px) !important;
  }
  #startScreen.dashboard-mockup-sync .rc18-kpi-test .rc18-kpi-value{
    font-size:clamp(22px,5.8vw,26px) !important;
  }
}

/* ==========================================================
   v96 RC21 — precision polish from real iPhone/iPad review
   - Single icon source in dashboard menu (no duplicate old glyphs)
   - Remove iPad/desktop hero frame/card outline
   - Center Dagens pass dumbbell icon and align time pill
   - Mobile KPI grid becomes vertical: ring/icon -> label -> value
   - Stronger mobile overflow guard for progress module
   ========================================================== */

/* Menu: use the SVG background on .tab-icon only; kill legacy/pseudo icon layer. */
body:not(.exercise-active) .app-tab::before,
body:not(.exercise-active) .app-tab::after{
  content:none !important;
  display:none !important;
}
body:not(.exercise-active) .app-tab .tab-icon{
  font-size:0 !important;
  line-height:0 !important;
  display:inline-block !important;
  width:24px !important;
  height:24px !important;
  flex:0 0 24px !important;
  background:var(--tab-icon) center / contain no-repeat !important;
  opacity:.96 !important;
}
body:not(.exercise-active) .app-tab span:not(.tab-icon){
  min-width:0 !important;
}

/* Tablet/desktop hero should be content, not an extra framed card. */
@media(min-width:820px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy{
    border:0 !important;
    outline:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    padding:clamp(8px,1.5vw,18px) clamp(4px,1vw,10px) !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy::before,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy::after{
    display:none !important;
    content:none !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-time-chip{
    top:28px !important;
    right:28px !important;
    transform:none !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-pass-icon{
    align-self:start !important;
    justify-self:start !important;
    transform:translateY(-2px) !important;
  }
}

/* Dagens pass icon: keep the symbol optically centered in the circle. */
#startScreen.dashboard-mockup-sync .rc18-pass-icon{
  display:grid !important;
  place-items:center !important;
  line-height:0 !important;
}
#startScreen.dashboard-mockup-sync .rc18-pass-icon svg{
  display:block !important;
  margin:0 !important;
  transform:translateY(-1px) !important;
}

/* Mobile precision: contain everything and rebuild KPI cells vertically. */
@media(max-width:520px){
  #startScreen.dashboard-mockup-sync,
  #startScreen.dashboard-mockup-sync .home-only-grid,
  #startScreen.dashboard-mockup-sync .quickstats-panel,
  #startScreen.dashboard-mockup-sync .quick-stats-grid,
  #startScreen.dashboard-mockup-sync .rc18-progress-card{
    overflow-x:hidden !important;
  }

  #startScreen.dashboard-mockup-sync .start-grid.home-only-grid{
    display:block !important;
    width:100% !important;
    max-width:100vw !important;
    padding-left:12px !important;
    padding-right:12px !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }

  #startScreen.dashboard-mockup-sync .quickstats-panel.home-quickstats,
  #startScreen.dashboard-mockup-sync .quickstats-panel{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  #startScreen.dashboard-mockup-sync .quickstats-panel > .panel-pad{
    width:100% !important;
    max-width:100% !important;
    padding:0 !important;
    margin:0 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-card{
    width:100% !important;
    max-width:100% !important;
    margin:0 auto !important;
    padding:18px 16px 22px !important;
    border-radius:30px !important;
    overflow:hidden !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-main{
    display:grid !important;
    grid-template-columns:104px minmax(0,1fr) !important;
    gap:12px !important;
    align-items:center !important;
    padding:0 0 18px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-xl{
    --size:104px !important;
    --thick:12px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-xl span{
    font-size:28px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy{
    min-width:0 !important;
    width:100% !important;
    overflow:hidden !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy .rc18-kicker{
    font-size:10px !important;
    line-height:1.05 !important;
    letter-spacing:.17em !important;
    white-space:nowrap !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy h2{
    margin-top:7px !important;
    font-size:clamp(23px,6.0vw,28px) !important;
    line-height:1 !important;
    letter-spacing:-.032em !important;
    word-spacing:.04em !important;
    white-space:nowrap !important;
    max-width:100% !important;
    overflow:hidden !important;
    text-overflow:clip !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-copy p{
    margin-top:4px !important;
    font-size:clamp(11px,3.05vw,13px) !important;
    line-height:1.18 !important;
    letter-spacing:-.01em !important;
    white-space:nowrap !important;
    max-width:100% !important;
    overflow:hidden !important;
    text-overflow:clip !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-day-row{
    display:flex !important;
    flex-wrap:nowrap !important;
    gap:6px !important;
    margin-top:10px !important;
    width:100% !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-day-pill{
    min-width:43px !important;
    min-height:30px !important;
    padding:5px 9px !important;
    border-radius:999px !important;
    font-size:13px !important;
    line-height:1 !important;
    letter-spacing:.10em !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    width:100% !important;
    max-width:100% !important;
    padding:0 !important;
    margin:0 !important;
    border-top:1px solid rgba(124,236,255,.14) !important;
    overflow:hidden !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-cell,
  #startScreen.dashboard-mockup-sync .rc18-kpi-test{
    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:center !important;
    text-align:center !important;
    gap:7px !important;
    min-height:122px !important;
    padding:12px 4px !important;
    overflow:hidden !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-cell > div:not(.rc18-ring):not(.rc18-arrow-icon),
  #startScreen.dashboard-mockup-sync .rc18-kpi-test > div:not(.rc18-arrow-icon){
    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:flex-start !important;
    width:100% !important;
    min-width:0 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-sm{
    --size:56px !important;
    --thick:7px !important;
    flex:0 0 56px !important;
    margin:0 auto !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-ring-sm span{
    font-size:11px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-arrow-icon{
    width:56px !important;
    height:56px !important;
    flex:0 0 56px !important;
    margin:0 auto !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-label,
  #startScreen.dashboard-mockup-sync .rc18-kpi-test .rc18-kpi-label{
    order:1 !important;
    margin:1px 0 0 !important;
    width:100% !important;
    max-width:100% !important;
    color:#86f1ff !important;
    font-size:9px !important;
    line-height:1.05 !important;
    letter-spacing:.16em !important;
    text-align:center !important;
    white-space:normal !important;
    overflow:visible !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-value,
  #startScreen.dashboard-mockup-sync .rc18-kpi-test .rc18-kpi-value{
    order:2 !important;
    margin-top:1px !important;
    width:100% !important;
    max-width:100% !important;
    font-size:clamp(22px,5.55vw,25px) !important;
    line-height:1 !important;
    letter-spacing:-.02em !important;
    word-spacing:0 !important;
    text-align:center !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:clip !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid .rc18-kpi-cell:nth-child(2) .rc18-kpi-value,
  #startScreen.dashboard-mockup-sync .rc18-kpi-grid .rc18-kpi-cell:nth-child(3) .rc18-kpi-value{
    font-size:clamp(20px,5.15vw,23px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-test .rc18-kpi-label{
    letter-spacing:.13em !important;
    font-size:8.6px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-test .rc18-kpi-value{
    font-size:clamp(21px,5.3vw,24px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid::before{
    left:50% !important;
    top:0 !important;
    bottom:0 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-kpi-grid::after{
    top:50% !important;
    left:0 !important;
    right:0 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-card::after{
    height:82px !important;
    opacity:.38 !important;
  }
}

@media(max-width:380px){
  #startScreen.dashboard-mockup-sync .rc18-progress-card{padding:16px 14px 20px !important;}
  #startScreen.dashboard-mockup-sync .rc18-progress-main{grid-template-columns:94px minmax(0,1fr) !important;gap:8px !important;}
  #startScreen.dashboard-mockup-sync .rc18-ring-xl{--size:94px !important;--thick:11px !important;}
  #startScreen.dashboard-mockup-sync .rc18-ring-xl span{font-size:25px !important;}
  #startScreen.dashboard-mockup-sync .rc18-progress-copy h2{font-size:22px !important;}
  #startScreen.dashboard-mockup-sync .rc18-progress-copy p{font-size:10.5px !important;}
  #startScreen.dashboard-mockup-sync .rc18-day-pill{min-width:39px !important;font-size:12px !important;padding:5px 7px !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-cell,
  #startScreen.dashboard-mockup-sync .rc18-kpi-test{min-height:114px !important;padding:10px 3px !important;gap:6px !important;}
  #startScreen.dashboard-mockup-sync .rc18-ring-sm{--size:50px !important;--thick:6px !important;flex-basis:50px !important;}
  #startScreen.dashboard-mockup-sync .rc18-ring-sm span{font-size:12.5px !important;}
  #startScreen.dashboard-mockup-sync .rc18-arrow-icon{width:50px !important;height:50px !important;flex-basis:50px !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-label{font-size:8px !important;letter-spacing:.13em !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-value{font-size:20px !important;}
  #startScreen.dashboard-mockup-sync .rc18-kpi-grid .rc18-kpi-cell:nth-child(2) .rc18-kpi-value,
  #startScreen.dashboard-mockup-sync .rc18-kpi-grid .rc18-kpi-cell:nth-child(3) .rc18-kpi-value,
  #startScreen.dashboard-mockup-sync .rc18-kpi-test .rc18-kpi-value{font-size:18.5px !important;}
}

/* ==========================================================
   v96 RC22 — final visual polish from real iPhone/iPad review
   - Keep KPI meters approved; do not alter their structure
   - Prevent hero headline clipping on phone
   - Lift Dagens pass content clear of the dumbbell icon on iPhone
   - Align time chip on tablet/iPad
   - Bring back glass transparency in mobile dashboard cards
   ========================================================== */

/* Hero: keep approved cyan accent but reduce edge pressure on iPhone. */
@media(max-width:520px){
  #startScreen.dashboard-mockup-sync .home-hero{
    overflow:visible !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy,
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy.home-text-hero{
    overflow:visible !important;
    max-width:100% !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1{
    font-size:clamp(44px,11.35vw,60px) !important;
    line-height:.91 !important;
    letter-spacing:-.074em !important;
    max-width:94vw !important;
    overflow:visible !important;
    text-wrap:balance !important;
    word-break:normal !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1 span{
    display:inline !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero .showcase-intro{
    max-width:90vw !important;
  }
}

/* Mobile glass: lighten the cards so the locked background comes through again. */
@media(max-width:520px){
  #startScreen.dashboard-mockup-sync .rc18-today-card{
    background:
      radial-gradient(circle at 82% 16%, rgba(124,236,255,.11), transparent 38%),
      radial-gradient(circle at 54% 118%, rgba(40,150,255,.10), transparent 50%),
      linear-gradient(180deg, rgba(6,24,45,.62), rgba(3,12,24,.68)) !important;
    border-color:rgba(124,236,255,.20) !important;
    box-shadow:0 22px 62px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.05) !important;
    backdrop-filter:blur(13px) saturate(128%) !important;
    -webkit-backdrop-filter:blur(13px) saturate(128%) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-progress-card{
    background:
      radial-gradient(circle at 72% 16%, rgba(124,236,255,.10), transparent 36%),
      radial-gradient(circle at 18% 104%, rgba(28,119,255,.11), transparent 42%),
      linear-gradient(180deg, rgba(5,20,38,.60), rgba(3,10,20,.70)) !important;
    border-color:rgba(100,197,255,.36) !important;
    box-shadow:0 0 0 1px rgba(46,168,255,.06), 0 24px 64px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.045), 0 0 40px rgba(28,137,255,.12) !important;
    backdrop-filter:blur(13px) saturate(128%) !important;
    -webkit-backdrop-filter:blur(13px) saturate(128%) !important;
  }
}

/* iPhone Dagens pass: the dumbbell circle must not overlap the kicker/text. */
@media(max-width:520px){
  #startScreen.dashboard-mockup-sync .rc18-today-card{
    padding-top:96px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-pass-icon{
    top:22px !important;
    left:24px !important;
    width:58px !important;
    height:58px !important;
    transform:none !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-pass-icon svg{
    width:31px !important;
    height:31px !important;
    transform:translateY(-1px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-time-chip{
    top:28px !important;
    right:24px !important;
    min-height:40px !important;
  }
}

/* Tablet/iPad Dagens pass: keep time chip visually locked in the upper right. */
@media(min-width:820px){
  #startScreen.dashboard-mockup-sync .rc18-today-card{
    position:relative !important;
    padding-top:34px !important;
    padding-right:clamp(150px,14vw,210px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-time-chip{
    top:26px !important;
    right:30px !important;
    min-height:36px !important;
    padding:7px 12px !important;
    font-size:11px !important;
    transform:none !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-time-chip svg{
    width:16px !important;
    height:16px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-copy h2,
  #startScreen.dashboard-mockup-sync .rc18-today-meta,
  #startScreen.dashboard-mockup-sync .rc18-today-copy p{
    max-width:100% !important;
  }
}

/* Very small phones: one extra notch of hero safety without touching the approved KPI layout. */
@media(max-width:380px){
  #startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1{
    font-size:clamp(40px,10.9vw,52px) !important;
    letter-spacing:-.070em !important;
    max-width:92vw !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card{
    padding-top:92px !important;
  }
}

/* ==========================================================
   v96 RC23 — iPad Dagens pass time-chip alignment
   - iPhone dashboard is approved: do not touch mobile KPI or hero structure
   - iPad/tablet Dagens pass time chip should belong to the same top row
     as the strength icon, not create a separate reserved column/padding block
   ========================================================== */
@media(min-width:820px){
  #startScreen.dashboard-mockup-sync .rc18-today-card{
    display:grid !important;
    grid-template-columns:auto minmax(0,1fr) max-content !important;
    grid-template-rows:auto !important;
    gap:clamp(18px,2vw,24px) !important;
    align-items:start !important;
    align-content:start !important;
    padding:clamp(28px,3vw,34px) !important;
    padding-right:clamp(28px,3vw,34px) !important;
    min-height:310px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-pass-icon{
    grid-column:1 !important;
    grid-row:1 !important;
    align-self:start !important;
    justify-self:start !important;
    margin:0 !important;
    transform:none !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-copy{
    grid-column:2 !important;
    grid-row:1 !important;
    align-self:start !important;
    min-width:0 !important;
    padding:0 !important;
    margin:0 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-time-chip{
    position:static !important;
    grid-column:3 !important;
    grid-row:1 !important;
    align-self:start !important;
    justify-self:end !important;
    width:max-content !important;
    max-width:none !important;
    margin:0 !important;
    top:auto !important;
    right:auto !important;
    transform:none !important;
    white-space:nowrap !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-actions{
    max-width:100% !important;
  }
}

/* Extra guard for narrower iPad landscape / split view: keep the time chip on the top row,
   but allow the copy to breathe rather than squeezing the title into a column. */
@media(min-width:820px) and (max-width:1050px){
  #startScreen.dashboard-mockup-sync .rc18-today-card{
    grid-template-columns:auto minmax(0,1fr) max-content !important;
    gap:16px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-time-chip{
    font-size:13px !important;
    padding:7px 10px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-time-chip svg{
    width:15px !important;
    height:15px !important;
  }
}


/* ==========================================================
   v96 RC24 — iPad Dagens pass card hard rebuild
   - Do not tweak the old squeezed 3-column card anymore.
   - Tablet/desktop Dagens pass is rebuilt as a two-row card:
       row 1: strength icon left + duration chip right, top aligned
       row 2: copy + actions full width, so title/body never get squeezed
   - Phone rules remain untouched because iPhone is approved.
   ========================================================== */
@media(min-width:820px){
  #startScreen.dashboard-mockup-sync .rc18-today-card{
    /* Fresh tablet card model: icon/time top row, content below full width. */
    display:grid !important;
    grid-template-columns:minmax(58px,70px) minmax(0,1fr) max-content !important;
    grid-template-rows:auto minmax(0,1fr) !important;
    grid-template-areas:
      "icon gap time"
      "copy copy copy" !important;
    column-gap:clamp(16px,2vw,24px) !important;
    row-gap:clamp(14px,1.6vw,20px) !important;
    align-items:start !important;
    align-content:start !important;
    justify-items:stretch !important;
    padding:clamp(28px,3vw,36px) !important;
    padding-right:clamp(28px,3vw,36px) !important;
    min-height:0 !important;
    height:auto !important;
    overflow:hidden !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-pass-icon{
    grid-area:icon !important;
    position:relative !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    bottom:auto !important;
    width:clamp(58px,5.2vw,70px) !important;
    height:clamp(58px,5.2vw,70px) !important;
    margin:0 !important;
    transform:none !important;
    align-self:start !important;
    justify-self:start !important;
    z-index:2 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-time-chip{
    grid-area:time !important;
    position:relative !important;
    top:auto !important;
    left:auto !important;
    right:auto !important;
    bottom:auto !important;
    width:max-content !important;
    max-width:100% !important;
    margin:0 !important;
    transform:none !important;
    align-self:start !important;
    justify-self:end !important;
    white-space:nowrap !important;
    z-index:2 !important;
    min-height:clamp(34px,3vw,40px) !important;
    padding:clamp(7px,.8vw,9px) clamp(10px,1.1vw,14px) !important;
    font-size:clamp(12px,1.18vw,15px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-time-chip svg{
    width:clamp(14px,1.3vw,17px) !important;
    height:clamp(14px,1.3vw,17px) !important;
    flex:0 0 auto !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-copy{
    grid-area:copy !important;
    position:relative !important;
    z-index:2 !important;
    min-width:0 !important;
    width:100% !important;
    max-width:100% !important;
    padding:0 !important;
    margin:0 !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-copy .rc18-kicker{
    display:block !important;
    margin:0 0 clamp(6px,.7vw,8px) !important;
    white-space:nowrap !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-copy h2{
    max-width:100% !important;
    margin:0 0 clamp(6px,.7vw,8px) !important;
    font-size:clamp(31px,3.15vw,48px) !important;
    line-height:.96 !important;
    letter-spacing:-.060em !important;
    white-space:normal !important;
    text-wrap:balance !important;
    overflow:visible !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-meta{
    max-width:100% !important;
    font-size:clamp(15px,1.55vw,22px) !important;
    line-height:1.18 !important;
    white-space:normal !important;
    overflow:visible !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-copy p{
    max-width:56ch !important;
    margin-top:clamp(14px,1.35vw,22px) !important;
    font-size:clamp(14px,1.35vw,20px) !important;
    line-height:1.30 !important;
    overflow:visible !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-actions{
    display:grid !important;
    grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr) !important;
    gap:clamp(10px,1.2vw,14px) !important;
    width:100% !important;
    max-width:100% !important;
    margin-top:clamp(18px,1.8vw,26px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-primary-btn,
  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-secondary-btn{
    min-width:0 !important;
    width:100% !important;
    height:clamp(48px,4.4vw,60px) !important;
    min-height:clamp(48px,4.4vw,60px) !important;
    padding:0 clamp(12px,1.6vw,18px) !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:clip !important;
    font-size:clamp(15px,1.45vw,21px) !important;
  }
}

/* Narrow iPad landscape / split-view: keep the fresh two-row model, but make
   controls and title slightly more compact instead of squeezing the copy column. */
@media(min-width:820px) and (max-width:1050px){
  #startScreen.dashboard-mockup-sync .rc18-today-card{
    grid-template-columns:58px minmax(0,1fr) max-content !important;
    column-gap:14px !important;
    row-gap:13px !important;
    padding:26px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-pass-icon{
    width:58px !important;
    height:58px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-pass-icon svg{
    width:31px !important;
    height:31px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-time-chip{
    min-height:34px !important;
    padding:7px 10px !important;
    font-size:12.5px !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-copy h2{
    font-size:clamp(29px,3vw,39px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-meta{
    font-size:clamp(14px,1.6vw,18px) !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-today-copy p{
    font-size:clamp(13.5px,1.45vw,17px) !important;
    max-width:48ch !important;
  }

  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-primary-btn,
  #startScreen.dashboard-mockup-sync .rc18-today-card .rc18-secondary-btn{
    height:48px !important;
    min-height:48px !important;
    font-size:15px !important;
  }
}

/* ==========================================================
   v96 RC25 — mockup top header implementation
   - One glass top bar: hamburger left, NEXT centered, profile right.
   - Remove duplicate NEXT ATHLETE OS chip under hero.
   - Hide the old shortcut/navigation card; menu dropdown remains available.
   - Do not touch approved Dagens pass / KPI structures beyond spacing from the removed eyebrow.
   ========================================================== */

body:not(.exercise-active) .dashboard-shortcuts-panel{
  display:none !important;
}

body:not(.exercise-active) .app-topbar.rc25-topbar,
body.topbar-portal:not(.exercise-active) .app-topbar.rc25-topbar,
body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc25-topbar{
  display:grid !important;
  grid-template-columns:minmax(52px,72px) minmax(0,1fr) minmax(52px,72px) !important;
  align-items:center !important;
  justify-items:center !important;
  gap:12px !important;
  position:relative !important;
  inset:auto !important;
  width:100% !important;
  max-width:min(1280px, calc(100vw - 32px)) !important;
  margin:0 auto clamp(16px,2vw,24px) !important;
  min-height:clamp(72px,7.2vw,94px) !important;
  padding:12px clamp(16px,2.2vw,24px) !important;
  border-radius:clamp(22px,2vw,28px) !important;
  border:1px solid rgba(121,190,255,.22) !important;
  background:linear-gradient(180deg,rgba(4,10,21,.82),rgba(4,12,24,.58)) !important;
  box-shadow:0 18px 44px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.035) !important;
  -webkit-backdrop-filter:blur(18px) saturate(128%) !important;
  backdrop-filter:blur(18px) saturate(128%) !important;
  overflow:visible !important;
  z-index:200 !important;
}

body:not(.exercise-active) .app-topbar.rc25-topbar .app-location,
body:not(.exercise-active) .app-topbar.rc25-topbar .app-primary-action{
  display:none !important;
}

body:not(.exercise-active) .rc25-brand{
  grid-column:2 !important;
  grid-row:1 !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  min-width:0 !important;
  pointer-events:none !important;
  text-align:center !important;
}

body:not(.exercise-active) .rc25-brand .brand-next{
  display:block !important;
  color:rgba(255,255,255,.96) !important;
  font-weight:950 !important;
  letter-spacing:.16em !important;
  font-size:clamp(26px,4.4vw,46px) !important;
  line-height:.82 !important;
  text-shadow:0 0 22px rgba(135,226,255,.08) !important;
  font-family:var(--font-display, inherit) !important;
}

body:not(.exercise-active) .rc25-brand .brand-sub{
  display:block !important;
  color:#79efff !important;
  margin-top:clamp(6px,.7vw,8px) !important;
  font-size:clamp(9px,1.2vw,14px) !important;
  line-height:1 !important;
  font-weight:900 !important;
  letter-spacing:.32em !important;
  opacity:.92 !important;
}

body:not(.exercise-active) .app-nav-toggle.rc25-nav-toggle,
body.topbar-portal:not(.exercise-active) .app-nav-toggle.rc25-nav-toggle,
body.topbar-hard-fixed:not(.exercise-active) .app-nav-toggle.rc25-nav-toggle{
  grid-column:1 !important;
  grid-row:1 !important;
  justify-self:start !important;
  display:grid !important;
  place-items:center !important;
  min-width:44px !important;
  width:clamp(46px,5vw,58px) !important;
  min-height:44px !important;
  height:clamp(46px,5vw,58px) !important;
  padding:0 !important;
  border-radius:999px !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:#a9f2ff !important;
  font-size:0 !important;
  line-height:1 !important;
}

body:not(.exercise-active) .app-nav-toggle.rc25-nav-toggle .nav-burger{
  display:block !important;
  font-size:clamp(30px,3.4vw,42px) !important;
  font-weight:500 !important;
  line-height:.8 !important;
  color:#cfefff !important;
  transform:translateY(-1px) !important;
}

body:not(.exercise-active) .app-nav-toggle.rc25-nav-toggle .nav-label{
  display:none !important;
}

body:not(.exercise-active) .app-profile-toggle.rc25-profile-toggle{
  grid-column:3 !important;
  grid-row:1 !important;
  justify-self:end !important;
  display:grid !important;
  place-items:center !important;
  min-width:44px !important;
  width:clamp(44px,4.8vw,56px) !important;
  min-height:44px !important;
  height:clamp(44px,4.8vw,56px) !important;
  padding:0 !important;
  border-radius:999px !important;
  border:1px solid rgba(116,224,255,.36) !important;
  color:#80edff !important;
  background:rgba(6,20,38,.34) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 0 20px rgba(0,185,255,.08) !important;
}

body:not(.exercise-active) .app-profile-toggle.rc25-profile-toggle svg{
  width:58% !important;
  height:58% !important;
  fill:none !important;
  stroke:currentColor !important;
  stroke-width:1.75 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
}

body:not(.exercise-active) .app-topbar.rc25-topbar #appTabs.app-tabs,
body:not(.exercise-active) .app-topbar.rc25-topbar .app-tabs,
body.topbar-portal:not(.exercise-active) .app-topbar.rc25-topbar .app-tabs,
body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc25-topbar .app-tabs{
  position:absolute !important;
  left:clamp(10px,1.5vw,18px) !important;
  right:auto !important;
  top:calc(100% + 12px) !important;
  display:none !important;
  width:min(560px, calc(100vw - 32px)) !important;
  max-height:calc(100svh - 130px) !important;
  overflow:auto !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
  padding:12px !important;
  border-radius:24px !important;
  border:1px solid rgba(124,236,255,.18) !important;
  background:rgba(4,10,20,.88) !important;
  box-shadow:0 22px 58px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.035) !important;
  -webkit-backdrop-filter:blur(20px) saturate(132%) !important;
  backdrop-filter:blur(20px) saturate(132%) !important;
  z-index:300 !important;
}

body:not(.exercise-active) .app-topbar.rc25-topbar.nav-open #appTabs.app-tabs,
body:not(.exercise-active) .app-topbar.rc25-topbar.nav-open .app-tabs{
  display:grid !important;
}

body:not(.exercise-active) .app-topbar.rc25-topbar .app-tab{
  min-height:clamp(70px,8vw,104px) !important;
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  align-items:center !important;
  justify-items:start !important;
  gap:12px !important;
  padding:clamp(12px,1.6vw,18px) !important;
  border-radius:20px !important;
  font-size:clamp(16px,2vw,24px) !important;
  line-height:1.05 !important;
  text-align:left !important;
  white-space:normal !important;
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02)) !important;
  border:1px solid rgba(124,236,255,.14) !important;
}

body:not(.exercise-active) .app-topbar.rc25-topbar .app-tab.active{
  border-color:rgba(132,238,255,.54) !important;
  box-shadow:inset 0 0 0 1px rgba(132,238,255,.10), 0 14px 32px rgba(0,168,255,.10) !important;
}

body:not(.exercise-active) .app-topbar.rc25-topbar .app-tab .tab-icon{
  width:28px !important;
  height:28px !important;
  flex:0 0 28px !important;
}

/* Header owns the brand now: no duplicate NEXT ATHLETE OS chip below. */
#startScreen.dashboard-mockup-sync .home-hero .showcase-eyebrow{
  display:none !important;
}

#startScreen.dashboard-mockup-sync .home-hero .showcase-copy h1{
  margin-top:0 !important;
}

/* Mobile: same header geometry as the mockup, but keep the proven fixed position. */
@media(max-width:760px){
  body:not(.exercise-active) .app-topbar.rc25-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar.rc25-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc25-topbar{
    position:fixed !important;
    top:calc(env(safe-area-inset-top,0px) + 8px) !important;
    left:12px !important;
    right:12px !important;
    width:auto !important;
    max-width:none !important;
    min-height:64px !important;
    padding:8px 12px !important;
    border-radius:24px !important;
    z-index:9000 !important;
  }

  body:not(.exercise-active) .wrap{
    padding-top:calc(86px + env(safe-area-inset-top,0px)) !important;
  }

  body:not(.exercise-active) .rc25-brand .brand-next{
    font-size:32px !important;
    letter-spacing:.16em !important;
  }

  body:not(.exercise-active) .rc25-brand .brand-sub{
    font-size:9px !important;
    letter-spacing:.26em !important;
    margin-top:5px !important;
  }

  body:not(.exercise-active) .app-topbar.rc25-topbar #appTabs.app-tabs,
  body:not(.exercise-active) .app-topbar.rc25-topbar .app-tabs{
    position:fixed !important;
    left:12px !important;
    right:12px !important;
    top:calc(env(safe-area-inset-top,0px) + 84px) !important;
    width:auto !important;
    max-height:calc(100svh - 112px) !important;
  }

  #startScreen.dashboard-mockup-sync .home-hero{
    padding-top:clamp(54px,13vw,82px) !important;
  }
}

/* Tablet portrait had an old inline-nav special case; RC25 keeps one topbar model. */
@media (min-width:768px) and (max-width:899px) and (orientation:portrait){
  body:not(.exercise-active) .app-topbar.rc25-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar.rc25-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc25-topbar{
    display:grid !important;
    position:relative !important;
    width:100% !important;
    max-width:min(1280px, calc(100vw - 32px)) !important;
    margin:0 auto 18px !important;
    padding:12px 18px !important;
  }
  body:not(.exercise-active) .app-topbar.rc25-topbar #appNavToggle,
  body:not(.exercise-active) .app-topbar.rc25-topbar .app-nav-toggle,
  body:not(.exercise-active) .app-topbar.rc25-topbar .app-profile-toggle{
    display:grid !important;
  }
  body:not(.exercise-active) .app-topbar.rc25-topbar .app-tabs{
    position:absolute !important;
    display:none !important;
  }
  body:not(.exercise-active) .app-topbar.rc25-topbar.nav-open .app-tabs{
    display:grid !important;
  }
}

/* ==========================================================
   v96 RC26 — real logo in the top header
   - Replace text brand with a dedicated SVG logo asset.
   - Preserve the approved RC25 topbar structure and all dashboard content.
   - Keep mobile/iPad dashboard geometry untouched.
   ========================================================== */

body:not(.exercise-active) .app-topbar.rc26-topbar .rc26-brand{
  display:grid !important;
  place-items:center !important;
  min-width:0 !important;
  width:100% !important;
  pointer-events:none !important;
}

body:not(.exercise-active) .app-topbar.rc26-topbar .rc26-brand .brand-fallback,
body:not(.exercise-active) .app-topbar.rc26-topbar .rc26-brand .brand-next,
body:not(.exercise-active) .app-topbar.rc26-topbar .rc26-brand .brand-sub{
  display:none !important;
}

body:not(.exercise-active) .app-topbar.rc26-topbar .rc26-brand-logo{
  display:block !important;
  width:clamp(154px,18vw,218px) !important;
  height:auto !important;
  max-height:clamp(44px,5.1vw,62px) !important;
  object-fit:contain !important;
  filter:drop-shadow(0 0 18px rgba(72,215,255,.13)) !important;
  transform:translateX(.12em) !important;
  user-select:none !important;
  -webkit-user-drag:none !important;
}

body:not(.exercise-active) .app-topbar.rc26-topbar{
  min-height:clamp(72px,7vw,92px) !important;
}

/* Mobile: logo should feel like a mark, not a second hero title. */
@media(max-width:760px){
  body:not(.exercise-active) .app-topbar.rc26-topbar .rc26-brand-logo{
    width:154px !important;
    max-height:44px !important;
    transform:translateX(.08em) !important;
  }
  body:not(.exercise-active) .app-topbar.rc26-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar.rc26-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc26-topbar{
    min-height:64px !important;
    padding-top:8px !important;
    padding-bottom:8px !important;
  }
}

/* Tablet / desktop: allow the micro ATHLETE OS line inside the logo to breathe. */
@media(min-width:761px){
  body:not(.exercise-active) .app-topbar.rc26-topbar .rc26-brand-logo{
    width:clamp(190px,18vw,228px) !important;
    max-height:60px !important;
  }
}

@media(min-width:1100px){
  body:not(.exercise-active) .app-topbar.rc26-topbar .rc26-brand-logo{
    width:232px !important;
    max-height:62px !important;
  }
}

/* ==========================================================
   v96 RC27 — Concept B header refinement
   - Implement selected B1 logo concept.
   - Give the menu button the same premium circular/glass treatment.
   - Hard stop horizontal side scroll on iPhone.
   ========================================================== */

html, body, .wrap, .screen{
  max-width:100% !important;
  overflow-x:clip !important;
}
@supports not (overflow:clip){
  html, body, .wrap, .screen{ overflow-x:hidden !important; }
}

body:not(.exercise-active) .app-topbar.rc27-topbar,
body.topbar-portal:not(.exercise-active) .app-topbar.rc27-topbar,
body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc27-topbar{
  overflow:visible !important;
}

body:not(.exercise-active) .app-topbar.rc27-topbar .rc26-brand-logo{
  width:clamp(188px,20vw,244px) !important;
  max-height:58px !important;
  filter:drop-shadow(0 0 18px rgba(72,215,255,.11)) !important;
  transform:none !important;
}

body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
body.topbar-portal:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
body.topbar-hard-fixed:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
body:not(.exercise-active) .app-profile-toggle.rc27-profile-toggle{
  min-width:48px !important;
  width:clamp(48px,5vw,58px) !important;
  min-height:48px !important;
  height:clamp(48px,5vw,58px) !important;
  border-radius:999px !important;
  border:1px solid rgba(116,224,255,.30) !important;
  background:linear-gradient(180deg, rgba(6,19,38,.58), rgba(3,10,23,.42)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 0 0 1px rgba(30,189,255,.04), 0 10px 26px rgba(0,0,0,.24), 0 0 18px rgba(60,215,255,.07) !important;
  backdrop-filter:blur(10px) saturate(118%) !important;
  -webkit-backdrop-filter:blur(10px) saturate(118%) !important;
  color:#9cecff !important;
}

body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle .nav-burger{
  width:22px !important;
  height:18px !important;
  display:grid !important;
  align-content:center !important;
  gap:4px !important;
  font-size:0 !important;
  line-height:0 !important;
  transform:none !important;
}
body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle .nav-burger > span{
  display:block !important;
  height:2.5px !important;
  border-radius:999px !important;
  background:linear-gradient(90deg,#c8f5ff 0%, #7be6ff 45%, #4dcfff 100%) !important;
  box-shadow:0 0 12px rgba(76,213,255,.18) !important;
}
body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle .nav-burger > span:nth-child(1){ width:22px !important; }
body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle .nav-burger > span:nth-child(2){ width:16px !important; }
body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle .nav-burger > span:nth-child(3){ width:22px !important; }

body:not(.exercise-active) .app-profile-toggle.rc27-profile-toggle svg{
  width:56% !important;
  height:56% !important;
  stroke-width:1.7 !important;
}

@media(max-width:760px){
  body:not(.exercise-active) .app-topbar.rc27-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar.rc27-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc27-topbar{
    left:calc(env(safe-area-inset-left,0px) + 12px) !important;
    right:calc(env(safe-area-inset-right,0px) + 12px) !important;
    width:auto !important;
    max-width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 24px) !important;
    box-sizing:border-box !important;
  }

  body:not(.exercise-active) .app-topbar.rc27-topbar .rc26-brand-logo{
    width:176px !important;
    max-height:42px !important;
  }

  body:not(.exercise-active) .app-topbar.rc27-topbar #appTabs.app-tabs,
  body:not(.exercise-active) .app-topbar.rc27-topbar .app-tabs{
    left:calc(env(safe-area-inset-left,0px) + 12px) !important;
    right:calc(env(safe-area-inset-right,0px) + 12px) !important;
    width:auto !important;
    max-width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 24px) !important;
    box-sizing:border-box !important;
  }
}


/* RC27 final correction: B1 reference uses a clean line hamburger, not a heavy circular chip. */
body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
body.topbar-portal:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
body.topbar-hard-fixed:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

/* ==========================================================
   v96 RC28 — Kalender + programdata foundation
   - Calendar reads PROGRAM_SCHEDULE_RULES layered on existing DATA.
   - No active-program selector; page focuses on weekly rhythm, done/coming and tests.
   - Keep RC27 dashboard language: cinematic background, large glass cards, cyan glow.
   ========================================================== */

.calendar-screen,
.program-screen{
  position:relative !important;
  min-height:100svh !important;
  color:var(--ink,#f7fbff) !important;
}
.calendar-shell,
.program-shell{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  gap:clamp(16px,2.4vw,28px) !important;
  padding:clamp(8px,1vw,14px) 0 clamp(36px,4vw,56px) !important;
}
.calendar-hero{
  position:relative !important;
  min-height:clamp(190px,23vw,320px) !important;
  display:flex !important;
  align-items:end !important;
  padding:clamp(28px,4vw,56px) clamp(18px,3vw,46px) !important;
  border-radius:clamp(28px,3vw,42px) !important;
  overflow:hidden !important;
  border:1px solid rgba(91,181,255,.16) !important;
  background:
    radial-gradient(circle at 82% 28%, rgba(40,190,255,.32), transparent 34%),
    radial-gradient(circle at 20% 100%, rgba(24,128,255,.16), transparent 44%),
    linear-gradient(135deg, rgba(3,8,18,.86), rgba(3,12,28,.58)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 24px 70px rgba(0,0,0,.30) !important;
  -webkit-backdrop-filter:blur(16px) saturate(125%) !important;
  backdrop-filter:blur(16px) saturate(125%) !important;
}
.calendar-hero::before{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  background:url('../img/v93/hero/hero-dashboard.webp') center right/cover no-repeat !important;
  opacity:.74 !important;
  filter:saturate(1.08) contrast(1.05) !important;
  z-index:-2 !important;
}
.calendar-hero::after{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  background:linear-gradient(90deg, rgba(2,6,16,.88), rgba(2,8,18,.56) 48%, rgba(2,8,18,.08)) !important;
  z-index:-1 !important;
}
.calendar-hero h1{
  margin:0 0 clamp(8px,1vw,14px) !important;
  color:#fff !important;
  font-size:clamp(52px,8vw,104px) !important;
  line-height:.88 !important;
  letter-spacing:-.06em !important;
  font-weight:950 !important;
  text-shadow:0 10px 34px rgba(0,0,0,.38) !important;
}
.calendar-hero p{
  max-width:620px !important;
  margin:0 !important;
  color:rgba(234,246,255,.80) !important;
  font-size:clamp(18px,2.2vw,28px) !important;
  line-height:1.24 !important;
  font-weight:760 !important;
}
.calendar-context-chips{
  display:flex !important;
  flex-wrap:wrap !important;
  gap:8px !important;
  margin-top:clamp(18px,2vw,28px) !important;
}
.calendar-context-chips span{
  display:inline-flex !important;
  align-items:center !important;
  min-height:38px !important;
  padding:9px 16px !important;
  border-radius:999px !important;
  border:1px solid rgba(129,229,255,.28) !important;
  background:rgba(4,14,32,.58) !important;
  color:#dff8ff !important;
  font-weight:900 !important;
  letter-spacing:.01em !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035) !important;
}
.calendar-context-chips span:first-child{
  border-color:rgba(122,240,255,.64) !important;
  color:#72f0ff !important;
  box-shadow:0 0 28px rgba(29,211,255,.08), inset 0 1px 0 rgba(255,255,255,.05) !important;
}
.calendar-dashboard{
  position:relative !important;
}
.calendar-grid-main{
  display:grid !important;
  grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr) !important;
  gap:clamp(16px,2vw,24px) !important;
}
.calendar-card,
.program-stage-card{
  position:relative !important;
  overflow:hidden !important;
  border-radius:clamp(24px,2.6vw,36px) !important;
  border:1px solid rgba(99,190,255,.24) !important;
  background:linear-gradient(145deg, rgba(4,17,36,.76), rgba(2,9,22,.54)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 18px 54px rgba(0,0,0,.24) !important;
  -webkit-backdrop-filter:blur(18px) saturate(128%) !important;
  backdrop-filter:blur(18px) saturate(128%) !important;
}
.calendar-card::after,
.program-stage-card::after{
  content:"" !important;
  position:absolute !important;
  left:-10% !important;
  right:-10% !important;
  bottom:-26% !important;
  height:52% !important;
  background:repeating-radial-gradient(ellipse at 50% 100%, rgba(37,168,255,.18) 0 1px, transparent 1px 18px) !important;
  opacity:.22 !important;
  pointer-events:none !important;
}
.calendar-rhythm-card,
.calendar-list-card,
.calendar-phase-card{
  padding:clamp(20px,2.4vw,34px) !important;
}

.calendar-card-head h2{
  letter-spacing:-.02em !important;
}
.calendar-card-head span{
  text-transform:uppercase !important;
  letter-spacing:.12em !important;
}
.calendar-hero-kicker{display:none !important;}
.calendar-card-head{
  position:relative !important;
  z-index:1 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:12px !important;
  margin-bottom:clamp(18px,2vw,26px) !important;
}
.calendar-card-head h2,
.calendar-test-card h2{
  margin:0 !important;
  color:#fff !important;
  font-size:clamp(24px,2.2vw,34px) !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:-.035em !important;
}
.calendar-card-head span{
  color:#83eeff !important;
  font-size:14px !important;
  font-weight:900 !important;
  letter-spacing:.16em !important;
  text-transform:uppercase !important;
}
.calendar-rhythm-track{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:clamp(10px,1.5vw,18px) !important;
  align-items:start !important;
}
.calendar-rhythm-item{
  display:grid !important;
  justify-items:center !important;
  gap:8px !important;
  min-width:0 !important;
}
.calendar-rhythm-day{
  color:rgba(230,243,255,.82) !important;
  font-size:12px !important;
  font-weight:950 !important;
  letter-spacing:.16em !important;
  text-transform:uppercase !important;
}
.calendar-rhythm-node,
.calendar-list-icon,
.calendar-test-icon{
  width:clamp(54px,5vw,72px) !important;
  height:clamp(54px,5vw,72px) !important;
  border-radius:22px !important;
  display:grid !important;
  place-items:center !important;
  border:1px solid rgba(112,230,255,.28) !important;
  background:radial-gradient(circle at 35% 25%, rgba(96,239,255,.16), transparent 55%), rgba(4,19,39,.62) !important;
  color:#73ebff !important;
  box-shadow:0 0 24px rgba(16,205,255,.09), inset 0 1px 0 rgba(255,255,255,.04) !important;
}
.calendar-rhythm-node svg,
.calendar-list-icon svg,
.calendar-test-icon svg{
  width:48% !important;
  height:48% !important;
  fill:none !important;
  stroke:currentColor !important;
  stroke-width:1.9 !important;
  stroke-linecap:round !important;
  stroke-linejoin:round !important;
}
.calendar-rhythm-item.rest .calendar-rhythm-node,
.calendar-list-row.rest .calendar-list-icon{
  color:#d6e7ff !important;
  border-color:rgba(224,235,255,.30) !important;
  background:rgba(7,15,29,.68) !important;
}
.calendar-rhythm-item.done .calendar-rhythm-node,
.calendar-list-row.done .calendar-list-icon{
  color:#65ffd5 !important;
  border-color:rgba(76,255,210,.48) !important;
}
.calendar-rhythm-item.active .calendar-rhythm-node,
.calendar-list-row.coming .calendar-list-icon{
  color:#61cbff !important;
  border-color:rgba(65,165,255,.55) !important;
}
.calendar-rhythm-item strong{
  color:#fff !important;
  font-size:clamp(16px,1.5vw,22px) !important;
  font-weight:950 !important;
  text-align:center !important;
}
.calendar-rhythm-item small{
  color:rgba(223,238,255,.70) !important;
  font-size:13px !important;
  font-weight:730 !important;
  text-align:center !important;
  line-height:1.2 !important;
}
.calendar-rule-note{
  position:relative !important;
  z-index:1 !important;
  margin:clamp(18px,2vw,28px) 0 0 !important;
  color:#7af0ff !important;
  font-size:clamp(14px,1.4vw,17px) !important;
  line-height:1.35 !important;
  font-weight:800 !important;
}
.calendar-list{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  gap:8px !important;
}
.calendar-list-row{
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:14px !important;
  min-height:74px !important;
  padding:10px 12px !important;
  border-radius:20px !important;
  border:1px solid rgba(120,210,255,.12) !important;
  background:rgba(3,10,22,.42) !important;
}
.calendar-list-icon{width:50px !important;height:50px !important;border-radius:16px !important;}
.calendar-list-copy{display:grid !important;gap:4px !important;min-width:0 !important;}
.calendar-list-copy b{color:#fff !important;font-size:clamp(16px,1.4vw,20px) !important;font-weight:950 !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;}
.calendar-list-copy span{color:rgba(224,238,255,.68) !important;font-weight:760 !important;font-size:14px !important;}
.calendar-list-status{
  min-width:70px !important;
  text-align:center !important;
  border-radius:999px !important;
  padding:7px 10px !important;
  font-size:12px !important;
  font-weight:950 !important;
  text-transform:uppercase !important;
  letter-spacing:.04em !important;
  color:#65dcff !important;
  border:1px solid rgba(76,190,255,.26) !important;
  background:rgba(18,67,120,.28) !important;
}
.calendar-list-status.done{color:#5bffd0 !important;background:rgba(15,116,89,.26) !important;border-color:rgba(90,255,210,.32) !important;}
.calendar-list-status.rest{color:#dce9ff !important;background:rgba(255,255,255,.05) !important;border-color:rgba(255,255,255,.12) !important;}
.calendar-test-card{
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  align-items:center !important;
  gap:18px !important;
  padding:clamp(20px,2.3vw,32px) !important;
}
.calendar-test-card p{margin:8px 0 5px !important;color:#fff !important;font-size:clamp(17px,1.5vw,21px) !important;font-weight:850 !important;}
.calendar-test-card small{color:rgba(222,238,255,.70) !important;font-weight:720 !important;line-height:1.35 !important;}
.calendar-phase-card{grid-column:1 / -1 !important;}
.calendar-phase-track{position:relative !important;z-index:1 !important;display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:12px !important;}
.calendar-phase-step{position:relative !important;min-height:92px !important;padding:18px !important;border-radius:20px !important;border:1px solid rgba(119,207,255,.14) !important;background:rgba(4,14,30,.48) !important;display:grid !important;align-content:center !important;gap:7px !important;}
.calendar-phase-step.active{border-color:rgba(94,229,255,.48) !important;box-shadow:0 0 28px rgba(19,194,255,.08) !important;}
.calendar-phase-step b{color:#fff !important;font-size:20px !important;font-weight:950 !important;}
.calendar-phase-step span{color:rgba(222,238,255,.70) !important;font-weight:760 !important;}
.calendar-phase-step i{display:block !important;height:5px !important;border-radius:999px !important;background:linear-gradient(90deg,#6bedff var(--p), rgba(255,255,255,.12) 0) !important;}
.program-catalog{display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:clamp(14px,2vw,24px) !important;}
.program-stage-card{padding:clamp(20px,2.4vw,32px) !important;display:grid !important;gap:18px !important;}
.program-stage-card.active{border-color:rgba(115,240,255,.56) !important;box-shadow:0 0 40px rgba(0,205,255,.10), inset 0 0 0 1px rgba(109,232,255,.06) !important;}
.program-stage-main{display:grid !important;grid-template-columns:auto minmax(0,1fr) !important;gap:16px !important;align-items:center !important;position:relative !important;z-index:1 !important;}
.program-stage-main h2{margin:0 0 8px !important;color:#fff !important;font-size:clamp(26px,2.4vw,38px) !important;line-height:.95 !important;font-weight:950 !important;}
.program-stage-main p{margin:0 !important;color:rgba(224,239,255,.72) !important;font-weight:760 !important;line-height:1.32 !important;}
.program-stage-meta,.program-stage-rhythm{position:relative !important;z-index:1 !important;display:flex !important;flex-wrap:wrap !important;gap:8px !important;}
.program-stage-meta span,.program-stage-rhythm span{display:inline-flex !important;padding:8px 11px !important;border-radius:999px !important;border:1px solid rgba(120,223,255,.16) !important;background:rgba(5,18,36,.52) !important;color:#dff8ff !important;font-weight:850 !important;font-size:13px !important;}
.calendar-link-btn{position:relative !important;z-index:1 !important;min-height:48px !important;border-radius:16px !important;border:1px solid rgba(118,235,255,.42) !important;background:linear-gradient(180deg,rgba(16,218,255,.22),rgba(8,118,204,.20)) !important;color:#e9fdff !important;font-weight:950 !important;}
@media(min-width:900px){
  .calendar-rhythm-card{grid-column:1 / 2 !important;}
  .calendar-list-card{grid-column:1 / 2 !important;}
  .calendar-test-card{grid-column:2 / 3 !important;grid-row:1 / 2 !important;}
}
@media(max-width:899px){
  .calendar-grid-main,.program-catalog{grid-template-columns:1fr !important;}
  .calendar-hero{min-height:260px !important;}
  .calendar-rhythm-track{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .calendar-phase-track{grid-template-columns:1fr !important;}
}
@media(max-width:760px){
  .calendar-shell,.program-shell{padding-top:clamp(18px,5vw,28px) !important;}
  .calendar-hero{
    margin-top:0 !important;
    min-height:clamp(245px,62vw,360px) !important;
    padding:clamp(24px,7vw,36px) clamp(18px,5vw,28px) !important;
    border-radius:30px !important;
  }
  .calendar-hero h1{font-size:clamp(48px,14vw,70px) !important;}
  .calendar-hero p{font-size:clamp(17px,5vw,22px) !important;}
  .calendar-context-chips span{min-height:34px !important;padding:8px 12px !important;font-size:14px !important;}
  .calendar-rhythm-card,.calendar-list-card,.calendar-phase-card,.calendar-test-card,.program-stage-card{border-radius:26px !important;padding:20px !important;}
  .calendar-rhythm-track{grid-template-columns:repeat(4,minmax(0,1fr)) !important;gap:6px !important;}
  .calendar-rhythm-node{width:48px !important;height:48px !important;border-radius:17px !important;}
  .calendar-rhythm-item strong{font-size:13px !important;}
  .calendar-rhythm-item small{font-size:11px !important;}
  .calendar-rhythm-day{font-size:10px !important;letter-spacing:.12em !important;}
  .calendar-list-row{grid-template-columns:auto minmax(0,1fr) !important;gap:8px !important;}
  .calendar-list-status{grid-column:2 !important;justify-self:start !important;min-width:0 !important;margin-top:2px !important;}
  .calendar-card-head{align-items:start !important;flex-direction:column !important;gap:5px !important;}
  .program-stage-main{grid-template-columns:1fr !important;}
}

/* RC28 fix: calendar/program background image must be a layer, never a flow element. */
#calendarScreen.dashboard-mockup-sync > .dashboard-global-bg-img,
#programScreen.dashboard-mockup-sync > .dashboard-global-bg-img{
  position:fixed !important;
  inset:0 !important;
  width:100vw !important;
  height:100svh !important;
  object-fit:cover !important;
  z-index:0 !important;
  opacity:.72 !important;
  pointer-events:none !important;
  filter:saturate(1.08) contrast(1.04) brightness(.88) !important;
}
#calendarScreen.dashboard-mockup-sync > *:not(.dashboard-global-bg-img),
#programScreen.dashboard-mockup-sync > *:not(.dashboard-global-bg-img){
  position:relative !important;
  z-index:1 !important;
}


/* ==========================================================
   v96 RC30 — Calendar hero rewrite
   - Open hero with no outer frame image container.
   - Visual week + phase status replaces text chips.
   - Tests appear in final week flow as voluntary events.
   ========================================================== */
.calendar-shell{
  gap:clamp(18px,2.4vw,30px) !important;
}
.calendar-hero.calendar-hero-open{
  min-height:0 !important;
  display:grid !important;
  grid-template-columns:minmax(0,1.18fr) minmax(320px,.82fr) !important;
  align-items:end !important;
  gap:clamp(18px,2vw,24px) !important;
  padding:clamp(8px,1vw,14px) 0 0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  overflow:visible !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.calendar-hero.calendar-hero-open::before,
.calendar-hero.calendar-hero-open::after{
  display:none !important;
}
.calendar-hero-copy{
  max-width:820px !important;
}
.calendar-hero-kicker{
  margin:0 0 10px !important;
  color:#83eeff !important;
  font-size:14px !important;
  font-weight:950 !important;
  letter-spacing:.16em !important;
  text-transform:uppercase !important;
}
.calendar-hero.calendar-hero-open h1{
  margin:0 0 12px !important;
  font-size:clamp(62px,8vw,112px) !important;
  line-height:.88 !important;
}
.calendar-hero.calendar-hero-open p{
  max-width:720px !important;
  color:rgba(236,245,255,.86) !important;
}
.calendar-hero-status{
  display:grid !important;
  grid-template-columns:minmax(112px,.42fr) minmax(0,1fr) minmax(0,1fr) !important;
  gap:12px !important;
  align-items:stretch !important;
}
.calendar-status-card{
  position:relative !important;
  overflow:hidden !important;
  min-height:104px !important;
  padding:16px 18px !important;
  border-radius:24px !important;
  border:1px solid rgba(99,190,255,.22) !important;
  background:linear-gradient(145deg, rgba(4,17,36,.60), rgba(2,9,22,.36)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 18px 44px rgba(0,0,0,.18) !important;
  -webkit-backdrop-filter:blur(16px) saturate(125%) !important;
  backdrop-filter:blur(16px) saturate(125%) !important;
}
.calendar-status-card.age{
  display:grid !important;
  align-content:center !important;
  justify-items:start !important;
}
.calendar-status-card.track-block{
  display:grid !important;
  align-content:center !important;
  gap:14px !important;
}
.calendar-status-label{
  color:#83eeff !important;
  font-size:12px !important;
  font-weight:950 !important;
  letter-spacing:.2em !important;
  text-transform:uppercase !important;
}
.calendar-status-card strong{
  color:#fff !important;
  font-size:clamp(20px,1.7vw,28px) !important;
  line-height:1 !important;
  font-weight:950 !important;
}
.calendar-progress-track{
  display:grid !important;
  gap:8px !important;
}
.week-track{
  grid-template-columns:repeat(auto-fit,minmax(52px,1fr)) !important;
}
.phase-track{
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
}
.calendar-progress-node{
  min-height:44px !important;
  display:grid !important;
  place-items:center !important;
  border-radius:16px !important;
  border:1px solid rgba(119,207,255,.14) !important;
  background:rgba(4,14,30,.44) !important;
  color:rgba(220,236,255,.74) !important;
  font-size:14px !important;
  font-weight:950 !important;
  letter-spacing:.08em !important;
}
.calendar-progress-node.done{
  color:#bfffe6 !important;
  border-color:rgba(83,255,212,.22) !important;
}
.calendar-progress-node.active{
  color:#09111d !important;
  border-color:rgba(122,240,255,.72) !important;
  background:linear-gradient(180deg, #9cecff, #59cfff) !important;
  box-shadow:0 0 34px rgba(25,201,255,.18) !important;
}
.calendar-progress-node.phase span,
.calendar-progress-node span{transform:translateY(1px) !important;}
.calendar-dashboard{position:relative !important;}
.calendar-grid-main{
  grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr) !important;
}
.calendar-rhythm-track{
  grid-template-columns:repeat(auto-fit,minmax(112px,1fr)) !important;
}
.calendar-list-row.test .calendar-list-icon,
.calendar-rhythm-item.test .calendar-rhythm-node{
  color:#9cecff !important;
  border-color:rgba(126,233,255,.42) !important;
}
.calendar-list-status.test{
  color:#9cecff !important;
  border-color:rgba(118,235,255,.32) !important;
  background:rgba(17,92,124,.20) !important;
}
.calendar-list-copy b{white-space:normal !important;overflow:visible !important;text-overflow:initial !important;}
.calendar-phase-card{grid-column:1 / -1 !important;}
@media(min-width:900px){
  .calendar-rhythm-card{grid-column:1 / 2 !important;}
  .calendar-list-card{grid-column:2 / 3 !important;}
}
@media(max-width:1080px){
  .calendar-hero.calendar-hero-open{
    grid-template-columns:1fr !important;
    align-items:start !important;
  }
  .calendar-hero-status{
    grid-template-columns:1fr !important;
  }
  .calendar-status-card.age{min-height:74px !important;}
}
@media(max-width:760px){
  .calendar-hero.calendar-hero-open{
    padding-top:clamp(6px,1.4vw,10px) !important;
    gap:16px !important;
  }
  .calendar-hero.calendar-hero-open h1{font-size:clamp(54px,15vw,74px) !important;}
  .calendar-hero.calendar-hero-open p{font-size:clamp(17px,5vw,22px) !important;}
  .calendar-hero-status{gap:8px !important;}
  .calendar-status-card{min-height:0 !important;padding:14px 14px !important;border-radius:22px !important;}
  .calendar-status-card.age strong{font-size:22px !important;}
  .week-track{grid-template-columns:repeat(auto-fit,minmax(46px,1fr)) !important;}
  .calendar-progress-node{min-height:40px !important;border-radius:14px !important;font-size:13px !important;}
  .calendar-grid-main{grid-template-columns:1fr !important;}
}


/* ==========================================================
   v96 RC31 - compact phase/week selector
   - Remove separate level/status cards.
   - Phase + week live in one compact glass container.
   - Done weeks/phases are filled; selected item gets outline/glow.
   - Bottom phase overview is no longer rendered.
   ========================================================== */
.calendar-hero.calendar-hero-open{
  grid-template-columns:minmax(0,.96fr) minmax(360px,.78fr) !important;
  align-items:end !important;
}
.calendar-hero.calendar-hero-open .calendar-hero-kicker{
  display:none !important;
}
.calendar-hero.calendar-hero-open h1{
  font-size:clamp(58px,7.2vw,104px) !important;
  margin-bottom:10px !important;
}
.calendar-hero.calendar-hero-open p{
  max-width:680px !important;
  font-size:clamp(18px,2vw,26px) !important;
}
.calendar-hero-status{
  display:block !important;
  min-width:0 !important;
}
.calendar-phaseweek-card{
  position:relative !important;
  overflow:hidden !important;
  display:grid !important;
  gap:clamp(12px,1.3vw,16px) !important;
  padding:clamp(14px,1.5vw,18px) !important;
  border-radius:clamp(22px,2vw,28px) !important;
  border:1px solid rgba(104,206,255,.24) !important;
  background:
    radial-gradient(circle at 85% 25%, rgba(59,194,255,.17), transparent 38%),
    linear-gradient(145deg, rgba(4,17,36,.72), rgba(2,9,22,.48)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 20px 56px rgba(0,0,0,.24), 0 0 34px rgba(0,169,255,.05) !important;
  -webkit-backdrop-filter:blur(18px) saturate(130%) !important;
  backdrop-filter:blur(18px) saturate(130%) !important;
}
.calendar-phaseweek-card::after{
  content:"" !important;
  position:absolute !important;
  inset:auto -8% -45% -8% !important;
  height:78% !important;
  background:radial-gradient(ellipse at 50% 100%, rgba(44,176,255,.18), transparent 58%) !important;
  pointer-events:none !important;
}
.calendar-pw-row{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  grid-template-columns:minmax(54px,.18fr) minmax(0,1fr) !important;
  align-items:center !important;
  gap:clamp(8px,1vw,12px) !important;
}
.calendar-pw-label{
  color:#83eeff !important;
  font-size:clamp(11px,.78vw,13px) !important;
  font-weight:950 !important;
  letter-spacing:.16em !important;
  text-transform:uppercase !important;
}
.calendar-pw-options{
  display:grid !important;
  gap:clamp(8px,.9vw,10px) !important;
  min-width:0 !important;
}
.calendar-pw-phase-options{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}
.calendar-pw-week-options{grid-template-columns:repeat(auto-fit,minmax(64px,1fr)) !important;}
.calendar-pw-divider{
  position:relative !important;
  z-index:1 !important;
  height:1px !important;
  background:linear-gradient(90deg, transparent, rgba(127,219,255,.22), transparent) !important;
}
.calendar-pw-pill{
  min-width:0 !important;
  min-height:clamp(38px,3.4vw,46px) !important;
  border-radius:clamp(13px,1.2vw,16px) !important;
  border:1px solid rgba(123,212,255,.14) !important;
  background:rgba(4,14,30,.44) !important;
  color:rgba(225,238,255,.66) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  font-size:clamp(15px,1.2vw,18px) !important;
  font-weight:950 !important;
  line-height:1 !important;
  letter-spacing:.02em !important;
  cursor:pointer !important;
  -webkit-tap-highlight-color:transparent !important;
}
.calendar-pw-pill.done{
  color:#071222 !important;
  border-color:rgba(126,238,255,.58) !important;
  background:linear-gradient(180deg,#9cecff,#57d2ff) !important;
  box-shadow:0 0 30px rgba(40,206,255,.14), inset 0 1px 0 rgba(255,255,255,.22) !important;
}
.calendar-pw-pill.selected{
  color:#88f0ff !important;
  border-color:rgba(137,239,255,.92) !important;
  background:linear-gradient(180deg, rgba(6,24,48,.78), rgba(3,12,26,.58)) !important;
  box-shadow:0 0 0 2px rgba(98,226,255,.22), 0 0 38px rgba(43,206,255,.18), inset 0 0 22px rgba(49,202,255,.10) !important;
}
.calendar-pw-pill.done.selected{
  color:#041321 !important;
  background:linear-gradient(180deg,#a8f0ff,#62d6ff) !important;
  box-shadow:0 0 0 2px rgba(122,239,255,.36), 0 0 42px rgba(43,206,255,.25), inset 0 1px 0 rgba(255,255,255,.24) !important;
}
.calendar-pw-check{
  width:clamp(16px,1.2vw,20px) !important;
  height:clamp(16px,1.2vw,20px) !important;
  border-radius:999px !important;
  display:inline-grid !important;
  place-items:center !important;
  background:rgba(3,12,26,.82) !important;
  color:#89efff !important;
  font-size:.62em !important;
  line-height:1 !important;
  transform:translateY(-1px) !important;
}
.calendar-phase-card{display:none !important;}
@media(max-width:1080px){
  .calendar-hero.calendar-hero-open{
    grid-template-columns:1fr !important;
  }
  .calendar-phaseweek-card{max-width:none !important;}
}
@media(max-width:760px){
  .calendar-hero-copy{gap:8px !important;}
  .calendar-hero-status{margin-top:2px !important;}
  .calendar-card-head h2{font-size:28px !important;}
  .calendar-card-head span{font-size:12px !important;letter-spacing:.12em !important;}
  .calendar-phaseweek-card{padding:14px !important;gap:10px !important;}
  .calendar-pw-pill{gap:6px !important;min-height:40px !important;font-size:14px !important;border-radius:13px !important;}
  .calendar-hero.calendar-hero-open h1{
    font-size:clamp(52px,15vw,72px) !important;
  }
  .calendar-hero.calendar-hero-open p{
    font-size:clamp(17px,5vw,21px) !important;
  }
  .calendar-pw-row{
    grid-template-columns:1fr !important;
    gap:8px !important;
  }
  .calendar-pw-label{
    font-size:11px !important;
  }
  .calendar-pw-pill{
    min-height:40px !important;
    font-size:14px !important;
    border-radius:13px !important;
  }
  .calendar-pw-week-options{
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
    gap:8px !important;
  }
  .calendar-pw-phase-options{
    gap:8px !important;
  }
  .calendar-pw-check{
    width:16px !important;
    height:16px !important;
  }
}


/* ==========================================================
   v96 RC34 - phase/week selector full rebuild
   Isolated component names. Do not reuse calendar-pw-* so old
   media queries cannot inflate the control again.
   ========================================================== */
#calendarScreen.dashboard-mockup-sync .calendar-shell{
  width:min(1120px, calc(100vw - 48px)) !important;
  max-width:1120px !important;
  margin-inline:auto !important;
}
#calendarScreen.dashboard-mockup-sync .calendar-hero.calendar-hero-open,
#calendarScreen.dashboard-mockup-sync .calendar-dashboard,
#calendarScreen.dashboard-mockup-sync .calendar-grid-main{
  width:100% !important;
  max-width:1120px !important;
  margin-inline:auto !important;
}
#calendarScreen.dashboard-mockup-sync .calendar-hero-status{
  width:100% !important;
  max-width:1120px !important;
  margin-inline:auto !important;
}
.next-phase-week-selector{
  width:100% !important;
  max-width:1120px !important;
  position:relative !important;
  overflow:hidden !important;
  display:grid !important;
  gap:8px !important;
  padding:12px 14px !important;
  border-radius:22px !important;
  border:1px solid rgba(104,206,255,.22) !important;
  background:
    radial-gradient(circle at 86% 26%, rgba(57,190,255,.14), transparent 36%),
    linear-gradient(145deg, rgba(4,17,36,.62), rgba(2,9,22,.42)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 14px 34px rgba(0,0,0,.18) !important;
  -webkit-backdrop-filter:blur(16px) saturate(126%) !important;
  backdrop-filter:blur(16px) saturate(126%) !important;
}
.next-phase-week-selector::after{
  content:"" !important;
  position:absolute !important;
  inset:auto -5% -62% -5% !important;
  height:72% !important;
  background:radial-gradient(ellipse at 50% 100%, rgba(47,172,255,.14), transparent 60%) !important;
  pointer-events:none !important;
}
.next-pw-row{
  position:relative !important;
  z-index:1 !important;
  display:grid !important;
  grid-template-columns:82px minmax(0,1fr) !important;
  align-items:center !important;
  gap:10px !important;
}
.next-pw-current{
  display:grid !important;
  gap:2px !important;
  min-width:0 !important;
}
.next-pw-current span{
  color:#83eeff !important;
  font-size:10px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.16em !important;
  text-transform:uppercase !important;
}
.next-pw-current strong{
  color:#f6fbff !important;
  font-size:15px !important;
  line-height:1.05 !important;
  font-weight:950 !important;
  letter-spacing:-.02em !important;
  white-space:nowrap !important;
}
.next-pw-options{
  display:grid !important;
  min-width:0 !important;
  gap:7px !important;
}
.next-pw-phase-options{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}
.next-pw-week-options{grid-template-columns:repeat(4,minmax(0,1fr)) !important;}
.next-pw-divider{
  height:1px !important;
  position:relative !important;
  z-index:1 !important;
  background:linear-gradient(90deg, transparent, rgba(127,219,255,.18), transparent) !important;
}
.next-pw-btn{
  min-width:0 !important;
  min-height:34px !important;
  height:34px !important;
  padding:0 7px !important;
  border-radius:12px !important;
  border:1px solid rgba(123,212,255,.13) !important;
  background:rgba(4,14,30,.42) !important;
  color:rgba(225,238,255,.64) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:5px !important;
  font-size:13px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.01em !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025) !important;
  -webkit-tap-highlight-color:transparent !important;
}
.next-pw-btn.is-done{
  color:#061523 !important;
  border-color:rgba(126,238,255,.52) !important;
  background:linear-gradient(180deg,#9cecff,#57d2ff) !important;
  box-shadow:0 0 20px rgba(40,206,255,.10), inset 0 1px 0 rgba(255,255,255,.20) !important;
}
.next-pw-btn.is-selected{
  color:#88f0ff !important;
  border-color:rgba(137,239,255,.90) !important;
  background:linear-gradient(180deg, rgba(5,22,44,.76), rgba(3,12,26,.56)) !important;
  box-shadow:0 0 0 1.5px rgba(98,226,255,.20), 0 0 26px rgba(43,206,255,.13), inset 0 0 18px rgba(49,202,255,.08) !important;
}
.next-pw-btn.is-done.is-selected{
  color:#051522 !important;
  background:linear-gradient(180deg,#a9f0ff,#62d6ff) !important;
  box-shadow:0 0 0 1.5px rgba(122,239,255,.32), 0 0 28px rgba(43,206,255,.18), inset 0 1px 0 rgba(255,255,255,.22) !important;
}
.next-pw-check{
  width:14px !important;
  height:14px !important;
  border-radius:999px !important;
  display:inline-grid !important;
  place-items:center !important;
  background:rgba(3,12,26,.84) !important;
  color:#89efff !important;
  font-size:10px !important;
  line-height:1 !important;
  transform:translateY(-.5px) !important;
  flex:0 0 auto !important;
}
@media(max-width:760px){
  #calendarScreen.dashboard-mockup-sync .calendar-shell{
    width:min(100%, calc(100vw - 44px)) !important;
  }
  .next-phase-week-selector{
    padding:11px 12px !important;
    gap:7px !important;
    border-radius:20px !important;
  }
  .next-pw-row{
    grid-template-columns:74px minmax(0,1fr) !important;
    gap:8px !important;
  }
  .next-pw-current span{font-size:9px !important;letter-spacing:.14em !important;}
  .next-pw-current strong{font-size:14px !important;}
  .next-pw-options{gap:6px !important;}
  .next-pw-btn{
    min-height:30px !important;
    height:30px !important;
    border-radius:10px !important;
    font-size:12px !important;
    padding:0 4px !important;
    gap:4px !important;
  }
  .next-pw-check{width:12px !important;height:12px !important;font-size:9px !important;}
}
@media(max-width:380px){
  #calendarScreen.dashboard-mockup-sync .calendar-shell{
    width:min(100%, calc(100vw - 34px)) !important;
  }
  .next-pw-row{grid-template-columns:68px minmax(0,1fr) !important;}
  .next-pw-btn{font-size:11px !important;}
}

/* ==========================================================
   RC36 - Calendar accordion weekly plan
   ========================================================== */
.next-calendar-grid{grid-template-columns:minmax(0,1fr) !important;}
.next-calendar-plan-card{padding:clamp(16px,2vw,26px) !important;border-color:rgba(48,190,255,.42) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.045),0 20px 52px rgba(0,0,0,.26),0 0 34px rgba(19,180,255,.08) !important;}
.next-calendar-plan-head{position:relative !important;z-index:2 !important;display:grid !important;grid-template-columns:auto minmax(0,1fr) auto !important;align-items:center !important;gap:14px !important;margin-bottom:16px !important;}
.next-calendar-plan-head .calendar-rhythm-node{width:48px !important;height:48px !important;border-radius:17px !important;}
.next-calendar-plan-head h2{margin:0 0 5px !important;color:#fff !important;font-size:clamp(26px,2.7vw,40px) !important;line-height:1 !important;font-weight:950 !important;letter-spacing:-.045em !important;}
.next-calendar-plan-head span{color:#83eeff !important;font-size:clamp(14px,1.25vw,18px) !important;font-weight:850 !important;letter-spacing:.03em !important;}
.next-plan-collapse{width:42px !important;height:42px !important;border-radius:999px !important;border:1px solid rgba(109,226,255,.62) !important;background:radial-gradient(circle at 35% 20%, rgba(107,235,255,.22), transparent 56%), rgba(4,20,42,.72) !important;color:#82eeff !important;font-size:22px !important;line-height:1 !important;font-weight:950 !important;box-shadow:0 0 28px rgba(39,206,255,.20), inset 0 1px 0 rgba(255,255,255,.07) !important;}
.next-calendar-list{position:relative !important;z-index:2 !important;display:grid !important;gap:10px !important;}
.next-calendar-row{position:relative !important;overflow:hidden !important;border-radius:20px !important;border:1px solid rgba(116,210,255,.16) !important;background:linear-gradient(145deg, rgba(2,14,31,.62), rgba(3,10,22,.44)) !important;}
.next-calendar-row.active,.next-calendar-row.is-open{border-color:rgba(66,196,255,.36) !important;box-shadow:0 0 0 1px rgba(59,190,255,.12),0 0 28px rgba(30,183,255,.08) !important;}
.next-calendar-row.rest.is-open{border-color:rgba(151,107,255,.46) !important;box-shadow:0 0 0 1px rgba(151,107,255,.14),0 0 28px rgba(151,107,255,.10) !important;}
.next-calendar-row.test.is-open{border-color:rgba(57,231,220,.48) !important;box-shadow:0 0 0 1px rgba(57,231,220,.14),0 0 30px rgba(57,231,220,.10) !important;}
.next-calendar-row-head{width:100% !important;min-height:74px !important;display:grid !important;grid-template-columns:92px 62px minmax(0,1fr) auto 22px !important;align-items:center !important;gap:14px !important;padding:10px 14px !important;border:0 !important;background:transparent !important;color:inherit !important;text-align:left !important;cursor:pointer !important;-webkit-tap-highlight-color:transparent !important;}
.next-calendar-day{color:#1fbfff !important;font-size:clamp(15px,1.5vw,22px) !important;font-weight:900 !important;letter-spacing:-.02em !important;}
.next-calendar-row.rest .next-calendar-day{color:#a17cff !important;}.next-calendar-row.test .next-calendar-day{color:#35eadf !important;}
.next-calendar-row-head .calendar-list-icon{width:52px !important;height:52px !important;border-radius:18px !important;}
.next-calendar-copy{display:grid !important;gap:4px !important;min-width:0 !important;}.next-calendar-copy b{display:block !important;color:#fff !important;font-size:clamp(16px,1.55vw,22px) !important;line-height:1.05 !important;font-weight:930 !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;}.next-calendar-copy small{display:block !important;color:rgba(224,238,255,.70) !important;font-size:clamp(13px,1.15vw,16px) !important;line-height:1.2 !important;font-weight:720 !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;}
.next-calendar-chevron{justify-self:end !important;color:rgba(237,247,255,.9) !important;font-size:30px !important;line-height:1 !important;font-weight:400 !important;}.next-calendar-row.is-open .next-calendar-chevron{color:#7febff !important;}
.next-calendar-expand{margin:0 14px 14px !important;position:relative !important;overflow:hidden !important;min-height:270px !important;border-radius:22px !important;border:1px solid rgba(102,205,255,.25) !important;background:linear-gradient(90deg, rgba(3,13,28,.96) 0%, rgba(3,13,28,.88) 44%, rgba(3,13,28,.46) 72%, rgba(3,13,28,.88) 100%), var(--entry-img) center right / cover no-repeat !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.055),0 20px 48px rgba(0,0,0,.24) !important;}
.next-calendar-expand.rest{border-color:rgba(151,107,255,.36) !important;background:linear-gradient(90deg, rgba(16,9,37,.97) 0%, rgba(16,9,37,.84) 48%, rgba(16,9,37,.42) 78%, rgba(16,9,37,.86) 100%), var(--entry-img) center right / cover no-repeat !important;}.next-calendar-expand.test{border-color:rgba(57,231,220,.36) !important;background:linear-gradient(90deg, rgba(0,24,32,.96) 0%, rgba(0,24,32,.84) 48%, rgba(0,24,32,.36) 78%, rgba(0,24,32,.84) 100%), var(--entry-img) center right / cover no-repeat !important;}
.next-calendar-expand::after{content:"" !important;position:absolute !important;inset:0 !important;background:radial-gradient(circle at 82% 34%, rgba(39,190,255,.15), transparent 35%),linear-gradient(180deg, transparent, rgba(1,7,18,.42)) !important;pointer-events:none !important;}
.next-expand-copy{position:relative !important;z-index:2 !important;width:min(58%,520px) !important;padding:clamp(22px,2.4vw,34px) !important;display:grid !important;gap:14px !important;}.next-expand-kicker{color:#87efff !important;font-size:13px !important;font-weight:950 !important;letter-spacing:.22em !important;text-transform:uppercase !important;}.next-calendar-expand.rest .next-expand-kicker{color:#a986ff !important;}.next-calendar-expand.test .next-expand-kicker{color:#3ff1e5 !important;}.next-expand-copy h3{margin:0 !important;color:#fff !important;font-size:clamp(36px,4vw,62px) !important;line-height:.95 !important;font-weight:950 !important;letter-spacing:-.055em !important;}.next-expand-copy p{margin:0 !important;color:rgba(235,244,255,.82) !important;font-size:clamp(16px,1.7vw,22px) !important;line-height:1.28 !important;font-weight:620 !important;}
.next-expand-chips{display:flex !important;flex-wrap:wrap !important;gap:8px !important;}.next-expand-chips span{min-height:34px !important;display:inline-flex !important;align-items:center !important;padding:0 14px !important;border-radius:999px !important;border:1px solid rgba(117,211,255,.25) !important;background:rgba(5,22,44,.50) !important;color:#edf8ff !important;font-size:14px !important;font-weight:850 !important;}
.next-expand-actions{margin-top:4px !important;display:grid !important;grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;gap:12px !important;}.next-expand-actions button{min-height:50px !important;border-radius:17px !important;font-size:clamp(15px,1.4vw,18px) !important;font-weight:950 !important;width:100% !important;min-width:0 !important;box-sizing:border-box !important;padding-inline:10px !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;}.next-expand-actions .ghost{border:1px solid rgba(208,232,255,.20) !important;color:#eff8ff !important;background:rgba(5,16,34,.70) !important;}.next-expand-actions .primary{border:1px solid rgba(128,225,255,.52) !important;color:#041321 !important;background:linear-gradient(180deg,#8be6ff,#28adff) !important;}.next-calendar-expand.rest .next-expand-actions .primary{background:linear-gradient(180deg,#bb91ff,#8d58ff) !important;color:#08031b !important;}.next-calendar-expand.test .next-expand-actions .primary{background:linear-gradient(180deg,#6cf9ed,#22cfc4) !important;color:#021b1e !important;}
.next-expand-day{position:absolute !important;z-index:2 !important;right:clamp(22px,2.6vw,36px) !important;top:clamp(22px,2.6vw,36px) !important;color:#fff !important;font-size:clamp(28px,3vw,48px) !important;line-height:1 !important;font-weight:950 !important;letter-spacing:-.04em !important;text-shadow:0 10px 34px rgba(0,0,0,.55) !important;}
@media(max-width:760px){.next-calendar-plan-card{padding:14px !important;border-radius:26px !important;}.next-calendar-plan-head{grid-template-columns:auto minmax(0,1fr) auto !important;gap:12px !important;margin-bottom:12px !important;}.next-calendar-plan-head .calendar-rhythm-node{width:40px !important;height:40px !important;border-radius:14px !important;}.next-calendar-plan-head h2{font-size:29px !important;}.next-calendar-plan-head span{font-size:14px !important;}.next-plan-collapse{width:36px !important;height:36px !important;font-size:18px !important;}.next-calendar-list{gap:8px !important;}.next-calendar-row{border-radius:18px !important;}.next-calendar-row-head{min-height:66px !important;grid-template-columns:64px 48px minmax(0,1fr) auto 16px !important;gap:8px !important;padding:8px 10px !important;}.next-calendar-day{font-size:16px !important;letter-spacing:-.03em !important;}.next-calendar-row-head .calendar-list-icon{width:44px !important;height:44px !important;border-radius:15px !important;}.next-calendar-copy b{font-size:16px !important;}.next-calendar-copy small{font-size:13px !important;}.next-calendar-chevron{font-size:22px !important;}.next-calendar-expand{margin:0 10px 10px !important;min-height:265px !important;border-radius:18px !important;background:linear-gradient(90deg, rgba(3,13,28,.97) 0%, rgba(3,13,28,.90) 56%, rgba(3,13,28,.55) 100%),var(--entry-img) center right / cover no-repeat !important;}.next-expand-copy{width:72% !important;padding:18px !important;gap:10px !important;}.next-expand-kicker{font-size:11px !important;}.next-expand-copy h3{font-size:38px !important;}.next-expand-copy p{font-size:15px !important;}.next-expand-chips{gap:6px !important;}.next-expand-chips span{min-height:29px !important;padding:0 10px !important;font-size:12px !important;}.next-expand-actions{grid-template-columns:1fr 1fr !important;gap:8px !important;}.next-expand-actions button{min-height:42px !important;border-radius:14px !important;font-size:14px !important;}.next-expand-day{right:16px !important;top:16px !important;font-size:28px !important;}}
@media(max-width:420px){.next-calendar-row-head{grid-template-columns:56px 42px minmax(0,1fr) 78px 12px !important;gap:7px !important;}.next-calendar-day{font-size:15px !important;}.next-calendar-row-head .calendar-list-icon{width:40px !important;height:40px !important;}.next-calendar-copy b{font-size:15px !important;}.next-calendar-copy small{font-size:12px !important;}.calendar-list-status{min-width:66px !important;font-size:10px !important;padding:5px 7px !important;}.next-calendar-expand{min-height:250px !important;}.next-expand-copy{width:78% !important;padding:16px !important;}.next-expand-copy h3{font-size:34px !important;}}


/* RC37 - Calendar accordion behavior fixes
   - All rows start closed (JS).
   - Expansion opens downward without inset margins.
   - Row, expanded card and weekly plan use the same full available width. */
.next-calendar-list{
  width:100% !important;
  box-sizing:border-box !important;
}
.next-calendar-row{
  width:100% !important;
  box-sizing:border-box !important;
  display:block !important;
}
.next-calendar-row-head{
  width:100% !important;
  box-sizing:border-box !important;
}
.next-calendar-expand{
  width:100% !important;
  box-sizing:border-box !important;
  margin:0 !important;
  border-left:0 !important;
  border-right:0 !important;
  border-bottom:0 !important;
  border-radius:0 0 20px 20px !important;
  min-height:270px !important;
}
.next-calendar-row.is-open .next-calendar-row-head{
  border-bottom:1px solid rgba(118,213,255,.14) !important;
}
.next-calendar-row.is-open .next-calendar-expand{
  display:block !important;
}
.next-calendar-plan-card{
  width:100% !important;
  box-sizing:border-box !important;
}
@media(max-width:760px){
  .next-calendar-expand{
    width:100% !important;
    margin:0 !important;
    border-radius:0 0 18px 18px !important;
    min-height:265px !important;
  }
}
@media(max-width:420px){
  .next-calendar-expand{
    width:100% !important;
    margin:0 !important;
    min-height:250px !important;
  }
}


/* RC38 - Accordion layout guard + cache-bust release
   The RC37 markup requires the accordion CSS; this block force-locks it for iOS/Safari. */
.next-calendar-plan-card,
.next-calendar-row,
.next-calendar-row-head,
.next-calendar-expand,
.next-expand-copy,
.next-expand-chips,
.next-expand-actions,
.next-calendar-copy{
  box-sizing:border-box !important;
}
.next-calendar-row{
  display:block !important;
  width:100% !important;
  overflow:hidden !important;
}
.next-calendar-row-head{
  display:grid !important;
  grid-template-columns:92px 52px minmax(0,1fr) minmax(72px,auto) 24px !important;
  align-items:center !important;
  width:100% !important;
  min-width:0 !important;
  min-height:72px !important;
  gap:12px !important;
  padding:10px 14px !important;
  border:0 !important;
  background:transparent !important;
  appearance:none !important;
  -webkit-appearance:none !important;
  color:inherit !important;
  text-align:left !important;
}
.next-calendar-day,
.next-calendar-copy,
.next-calendar-row-head .calendar-list-icon,
.next-calendar-row-head .calendar-list-status,
.next-calendar-chevron{
  min-width:0 !important;
  align-self:center !important;
}
.next-calendar-copy{
  display:grid !important;
  grid-auto-flow:row !important;
  gap:4px !important;
}
.next-calendar-copy b,
.next-calendar-copy small{
  display:block !important;
  min-width:0 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
.next-calendar-row-head .calendar-list-status{
  justify-self:end !important;
  width:auto !important;
  max-width:96px !important;
}
.next-calendar-chevron{
  justify-self:end !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
.next-calendar-expand{
  display:block !important;
  width:100% !important;
  margin:0 !important;
  border-radius:0 0 20px 20px !important;
  border-left:0 !important;
  border-right:0 !important;
  border-bottom:0 !important;
}
.next-expand-copy{
  display:grid !important;
}
.next-expand-chips{
  display:flex !important;
  flex-wrap:wrap !important;
}
.next-expand-actions{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
}
.next-expand-actions button,
.next-plan-collapse{
  appearance:none !important;
  -webkit-appearance:none !important;
}
@media(max-width:760px){
  .next-calendar-row-head{
    grid-template-columns:58px 42px minmax(0,1fr) minmax(58px,auto) 16px !important;
    gap:7px !important;
    min-height:64px !important;
    padding:8px 10px !important;
  }
  .next-calendar-row-head .calendar-list-icon{width:40px !important;height:40px !important;border-radius:14px !important;}
  .next-calendar-day{font-size:15px !important;letter-spacing:-.03em !important;}
  .next-calendar-copy b{font-size:15px !important;}
  .next-calendar-copy small{font-size:12px !important;}
  .next-calendar-row-head .calendar-list-status{max-width:74px !important;min-width:58px !important;font-size:10px !important;padding:5px 7px !important;}
  .next-calendar-chevron{font-size:20px !important;}
  .next-calendar-expand{border-radius:0 0 18px 18px !important;}
}
@media(max-width:420px){
  .next-calendar-row-head{
    grid-template-columns:52px 38px minmax(0,1fr) minmax(54px,auto) 14px !important;
    gap:6px !important;
  }
  .next-calendar-day{font-size:14px !important;}
  .next-calendar-row-head .calendar-list-icon{width:38px !important;height:38px !important;}
}


/* RC39 - Calendar portrait polish
   - remove extra header icon/collapse control in veckoplan
   - portrait rows get a 2-line grid so title/meta do not clip awkwardly
   - landscape keeps the RC38 layout */
.next-calendar-plan-head{
  grid-template-columns:minmax(0,1fr) !important;
}
.next-calendar-plan-head > .calendar-rhythm-node,
.next-calendar-plan-head .calendar-rhythm-node,
.next-plan-collapse{
  display:none !important;
}
.next-calendar-plan-head > div{
  min-width:0 !important;
}
@media(max-width:760px) and (orientation:portrait){
  .next-calendar-plan-card{
    padding:16px 14px !important;
  }
  .next-calendar-plan-head{
    margin-bottom:12px !important;
    padding:0 !important;
  }
  .next-calendar-plan-head h2{
    font-size:clamp(30px,8.4vw,38px) !important;
    line-height:.98 !important;
  }
  .next-calendar-plan-head span{
    font-size:clamp(14px,4.1vw,17px) !important;
  }
  .next-calendar-list{
    gap:9px !important;
  }
  .next-calendar-row{
    border-radius:19px !important;
  }
  .next-calendar-row-head{
    display:grid !important;
    grid-template-columns:58px 42px minmax(0,1fr) 16px !important;
    grid-template-areas:
      "day icon copy chev"
      "status status copy chev" !important;
    column-gap:9px !important;
    row-gap:5px !important;
    align-items:center !important;
    min-height:82px !important;
    padding:10px 11px !important;
  }
  .next-calendar-day{
    grid-area:day !important;
    align-self:end !important;
    font-size:15px !important;
    line-height:1.05 !important;
  }
  .next-calendar-row-head .calendar-list-icon{
    grid-area:icon !important;
    width:40px !important;
    height:40px !important;
    border-radius:14px !important;
  }
  .next-calendar-copy{
    grid-area:copy !important;
    align-self:center !important;
    gap:3px !important;
  }
  .next-calendar-copy b{
    font-size:16px !important;
    line-height:1.1 !important;
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
  }
  .next-calendar-copy small{
    font-size:13px !important;
    line-height:1.18 !important;
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
  }
  .next-calendar-row-head .calendar-list-status{
    grid-area:status !important;
    justify-self:start !important;
    align-self:start !important;
    min-width:0 !important;
    max-width:none !important;
    width:auto !important;
    font-size:10px !important;
    padding:5px 9px !important;
  }
  .next-calendar-chevron{
    grid-area:chev !important;
    justify-self:end !important;
    align-self:center !important;
    font-size:22px !important;
  }
}
@media(max-width:420px) and (orientation:portrait){
  .next-calendar-row-head{
    grid-template-columns:54px 40px minmax(0,1fr) 14px !important;
    column-gap:8px !important;
    min-height:84px !important;
    padding:10px 10px !important;
  }
  .next-calendar-day{
    font-size:14px !important;
  }
  .next-calendar-row-head .calendar-list-icon{
    width:38px !important;
    height:38px !important;
  }
  .next-calendar-copy b{
    font-size:15px !important;
  }
  .next-calendar-copy small{
    font-size:12px !important;
  }
  .next-calendar-row-head .calendar-list-status{
    font-size:10px !important;
    padding:5px 8px !important;
  }
}


/* RC40 - mobile status icons + simplified rest expansion
   Keeps landscape/iPad layout stable, cleans portrait mobile. */
.next-calendar-expand.next-rest-simple{
  min-height:0 !important;
  border-color:rgba(151,107,255,.22) !important;
  background:linear-gradient(135deg, rgba(18,10,42,.92), rgba(3,12,28,.88)) !important;
}
.next-calendar-expand.next-rest-simple::after{
  background:radial-gradient(circle at 86% 30%, rgba(150,98,255,.13), transparent 38%), linear-gradient(180deg, transparent, rgba(1,7,18,.34)) !important;
}
.next-rest-copy{
  width:100% !important;
  max-width:none !important;
}
.next-calendar-expand.next-rest-simple .next-expand-chips,
.next-calendar-expand.next-rest-simple .next-expand-actions,
.next-calendar-expand.next-rest-simple .next-expand-day{
  display:none !important;
}
@media(max-width:760px) and (orientation:portrait){
  .next-calendar-row-head{
    grid-template-columns:56px 40px minmax(0,1fr) 24px 14px !important;
    grid-template-areas:"day icon copy status chev" !important;
    column-gap:8px !important;
    row-gap:0 !important;
    min-height:66px !important;
    padding:9px 10px !important;
  }
  .next-calendar-day{
    align-self:center !important;
    line-height:1.05 !important;
  }
  .next-calendar-copy b,
  .next-calendar-copy small{
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
  }
  .next-calendar-row-head .calendar-list-status{
    grid-area:status !important;
    justify-self:center !important;
    align-self:center !important;
    width:22px !important;
    height:22px !important;
    min-width:22px !important;
    max-width:22px !important;
    padding:0 !important;
    border-radius:999px !important;
    font-size:0 !important;
    display:inline-grid !important;
    place-items:center !important;
  }
  .next-calendar-row-head .calendar-list-status.done::before{
    content:"✓" !important;
    font-size:15px !important;
    line-height:1 !important;
    font-weight:950 !important;
  }
  .next-calendar-row-head .calendar-list-status.coming::before{
    content:"" !important;
    width:7px !important;
    height:7px !important;
    border-radius:999px !important;
    background:#6fdcff !important;
    box-shadow:0 0 12px rgba(91,215,255,.55) !important;
  }
  .next-calendar-row-head .calendar-list-status.test::before{
    content:"" !important;
    width:8px !important;
    height:8px !important;
    border-radius:2px !important;
    border:2px solid currentColor !important;
    transform:rotate(45deg) !important;
  }
  .next-calendar-row.rest .calendar-list-status{
    display:none !important;
  }
  .next-calendar-row.rest .next-calendar-row-head{
    grid-template-columns:64px 40px minmax(0,1fr) 14px !important;
    grid-template-areas:"day icon copy chev" !important;
  }
  .next-calendar-row.rest .next-calendar-day{
    color:#a986ff !important;
  }
  .next-calendar-expand{
    margin:0 !important;
    width:100% !important;
    border-left:0 !important;
    border-right:0 !important;
    border-bottom:0 !important;
    border-radius:0 0 18px 18px !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.035) !important;
  }
  .next-calendar-expand:not(.next-rest-simple){
    min-height:auto !important;
    background:linear-gradient(100deg, rgba(3,13,28,.98) 0%, rgba(3,13,28,.92) 70%, rgba(3,13,28,.78) 100%), var(--entry-img) center right / cover no-repeat !important;
  }
  .next-expand-copy{
    width:100% !important;
    max-width:none !important;
    padding:16px 14px 18px !important;
    gap:9px !important;
  }
  .next-expand-day{
    display:none !important;
  }
  .next-expand-copy h3{
    font-size:clamp(30px,8vw,36px) !important;
  }
  .next-expand-copy p{
    font-size:14px !important;
    line-height:1.32 !important;
  }
  .next-expand-chips{
    gap:6px !important;
  }
  .next-expand-chips span{
    min-height:28px !important;
    padding:0 10px !important;
    font-size:12px !important;
  }
  .next-expand-actions{
    gap:8px !important;
  }
  .next-expand-actions button{
    min-height:40px !important;
    border-radius:13px !important;
    font-size:13px !important;
  }
  .next-calendar-expand.next-rest-simple{
    min-height:0 !important;
    background:linear-gradient(135deg, rgba(18,10,42,.95), rgba(3,12,28,.90)) !important;
  }
  .next-rest-copy{
    padding:16px 14px 18px !important;
  }
  .next-rest-copy h3{
    font-size:clamp(32px,8.4vw,38px) !important;
  }
}
@media(max-width:420px) and (orientation:portrait){
  .next-calendar-row-head{
    grid-template-columns:52px 38px minmax(0,1fr) 22px 13px !important;
    column-gap:7px !important;
    min-height:64px !important;
    padding:8px 9px !important;
  }
  .next-calendar-row.rest .next-calendar-row-head{
    grid-template-columns:62px 38px minmax(0,1fr) 13px !important;
  }
  .next-calendar-row-head .calendar-list-status{
    width:20px !important;
    height:20px !important;
    min-width:20px !important;
    max-width:20px !important;
  }
  .next-calendar-row-head .calendar-list-status.done::before{font-size:14px !important;}
  .next-calendar-row-head .calendar-list-status.coming::before{width:6px !important;height:6px !important;}
}


/* ==========================================================
   v96 RC41 - visual alignment + background integration
   - integrate coach/tactics background on calendar screen
   - lock icon alignment in mobile portrait rows
   ========================================================== */
#calendarScreen.dashboard-mockup-sync{
  position:relative !important;
  isolation:isolate !important;
}
#calendarScreen.dashboard-mockup-sync::before{
  content:"" !important;
  position:fixed !important;
  inset:0 !important;
  z-index:0 !important;
  pointer-events:none !important;
  background:
    radial-gradient(circle at 76% 18%, rgba(89,198,255,.20), transparent 24%),
    linear-gradient(180deg, rgba(1,6,16,.22) 0%, rgba(1,7,17,.54) 42%, rgba(1,6,14,.82) 100%) !important;
}
#calendarScreen.dashboard-mockup-sync > .calendar-screen-bg{
  opacity:.52 !important;
  object-position:72% center !important;
  filter:saturate(1.02) contrast(1.06) brightness(.70) !important;
}
#calendarScreen.dashboard-mockup-sync .calendar-shell,
#calendarScreen.dashboard-mockup-sync .calendar-hero.calendar-hero-open,
#calendarScreen.dashboard-mockup-sync .calendar-dashboard,
#calendarScreen.dashboard-mockup-sync .calendar-grid-main{
  position:relative !important;
  z-index:1 !important;
}
.next-calendar-plan-card{
  position:relative !important;
  overflow:hidden !important;
  isolation:isolate !important;
}
.next-calendar-plan-card::before{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  z-index:0 !important;
  pointer-events:none !important;
  background:
    linear-gradient(90deg, rgba(3,13,28,.96) 0%, rgba(3,13,28,.90) 48%, rgba(3,13,28,.62) 74%, rgba(3,13,28,.82) 100%),
    url('../img/v96/calendar/calendar-bg-coach-tactics.png') center right / cover no-repeat !important;
  opacity:.34 !important;
}
.next-calendar-plan-card > *{
  position:relative !important;
  z-index:1 !important;
}
.next-calendar-row-head .calendar-list-icon{
  display:grid !important;
  place-items:center !important;
  justify-self:center !important;
  align-self:center !important;
}
.next-calendar-row-head .calendar-list-icon svg{
  display:block !important;
}
@media(max-width:760px) and (orientation:portrait){
  .next-calendar-row-head .calendar-list-status{
    position:relative !important;
    overflow:visible !important;
  }
  .next-calendar-row-head .calendar-list-status::before{
    position:absolute !important;
    left:50% !important;
    top:50% !important;
    display:block !important;
  }
  .next-calendar-row-head .calendar-list-status.done::before{
    content:"✓" !important;
    transform:translate(-50%,-53%) !important;
    font-size:14px !important;
    line-height:1 !important;
    font-weight:950 !important;
  }
  .next-calendar-row-head .calendar-list-status.coming::before{
    content:"" !important;
    width:7px !important;
    height:7px !important;
    border-radius:999px !important;
    background:#6fdcff !important;
    box-shadow:0 0 12px rgba(91,215,255,.55) !important;
    transform:translate(-50%,-50%) !important;
  }
  .next-calendar-row-head .calendar-list-status.test::before{
    content:"" !important;
    width:8px !important;
    height:8px !important;
    border-radius:2px !important;
    border:2px solid currentColor !important;
    box-sizing:border-box !important;
    transform:translate(-50%,-50%) rotate(45deg) !important;
  }
  .next-calendar-row-head .calendar-list-status.done::before,
  .next-calendar-row-head .calendar-list-status.coming::before,
  .next-calendar-row-head .calendar-list-status.test::before{
    margin:0 !important;
  }
}
@media(max-width:760px){
  #calendarScreen.dashboard-mockup-sync > .calendar-screen-bg{
    opacity:.46 !important;
    object-position:68% center !important;
  }
  .next-calendar-plan-card::before{
    opacity:.28 !important;
    background-position:74% center !important;
  }
}


/* ==========================================================
   v96 RC42 - overview smart return context
   Overview can be opened from Dashboard, Calendar, Program/Profile and returns
   to the originating screen with selection restored.
   ========================================================== */
.overview-return-row{
  display:flex !important;
  align-items:center !important;
  gap:10px !important;
  flex-wrap:wrap !important;
  margin:0 0 12px !important;
}
.overview-back-btn{
  min-height:36px !important;
  padding:7px 13px !important;
  border-radius:999px !important;
  border-color:rgba(126,225,255,.28) !important;
  color:#8fedff !important;
  background:rgba(3,15,32,.46) !important;
  font-weight:900 !important;
}
.overview-return-hint{
  color:rgba(225,238,255,.62) !important;
  font-size:13px !important;
  font-weight:750 !important;
}
@media(max-width:760px){
  .overview-return-row{
    margin-bottom:10px !important;
  }
  .overview-back-btn{
    min-height:34px !important;
    font-size:13px !important;
    padding:6px 11px !important;
  }
  .overview-return-hint{
    width:100% !important;
    font-size:12px !important;
  }
}


/* ==========================================================
   v96 RC43 - compressed pass overview blocks
   - Overview topbar scrolls away instead of floating/sticky
   - Hero gets equipment first, Starta pass directly below equipment
   - Exercises compressed into block/superset/circuit overview
   ========================================================== */
body.overview-active .app-topbar,
body.overview-active .app-topbar.rc25-topbar,
body.overview-active .app-topbar.rc26-topbar,
body.overview-active .app-topbar.rc27-topbar{
  position:relative !important;
  top:auto !important;
  transform:none !important;
  -webkit-transform:none !important;
  margin-bottom:18px !important;
}
#overviewScreen{
  position:relative !important;
  overflow:visible !important;
}
#overviewScreen > .panel{
  border-radius:30px !important;
  border:1px solid rgba(101,200,255,.20) !important;
  background:
    radial-gradient(circle at 82% 10%, rgba(57,175,255,.12), transparent 30%),
    linear-gradient(180deg, rgba(6,18,36,.82), rgba(3,10,23,.64)) !important;
  -webkit-backdrop-filter:blur(18px) saturate(122%) !important;
  backdrop-filter:blur(18px) saturate(122%) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 26px 70px rgba(0,0,0,.28) !important;
}
#overviewScreen .panel-pad{
  padding:clamp(22px,4vw,44px) !important;
}
#overviewScreen .overview-head{
  display:block !important;
  max-width:980px !important;
}
#overviewScreen .overview-head .page-actions{
  display:none !important;
}
.overview-return-row{
  display:flex !important;
  align-items:center !important;
  margin-bottom:clamp(20px,4vw,34px) !important;
}
#overviewScreen .overview-back-btn{
  min-height:44px !important;
  padding:0 18px !important;
  border-radius:999px !important;
  font-size:clamp(14px,2.8vw,18px) !important;
  color:#8eeeff !important;
  border-color:rgba(120,224,255,.28) !important;
  background:rgba(2,12,27,.56) !important;
}
#overviewReturnHint{display:none !important;}
#overviewScreen #overviewMeta{
  display:flex !important;
  flex-wrap:wrap !important;
  gap:10px !important;
  margin:0 0 8px !important;
  color:#86efff !important;
  font-size:clamp(12px,3.3vw,16px) !important;
  font-weight:950 !important;
  letter-spacing:.28em !important;
  text-transform:uppercase !important;
}
#overviewScreen #overviewTitle{
  margin:0 !important;
  color:#fff !important;
  font-size:clamp(48px,10vw,86px) !important;
  line-height:.94 !important;
  font-weight:950 !important;
  letter-spacing:-.065em !important;
}
#overviewScreen #overviewDesc{
  max-width:780px !important;
  margin:clamp(12px,2.8vw,24px) 0 0 !important;
  color:rgba(232,242,255,.72) !important;
  font-size:clamp(18px,4.4vw,28px) !important;
  line-height:1.32 !important;
}
#overviewEquipment{
  display:grid !important;
  gap:14px !important;
  margin-top:clamp(22px,4vw,34px) !important;
}
.ov43-statbar{
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  border:1px solid rgba(115,211,255,.22) !important;
  border-radius:22px !important;
  background:rgba(2,12,27,.52) !important;
  overflow:hidden !important;
}
.ov43-stat{
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  grid-template-rows:auto auto !important;
  align-items:center !important;
  column-gap:12px !important;
  padding:14px 16px !important;
  min-width:0 !important;
  border-left:1px solid rgba(115,211,255,.13) !important;
}
.ov43-stat:first-child{border-left:0 !important;}
.ov43-stat span{
  grid-row:1 / 3 !important;
  width:34px !important;
  height:34px !important;
  display:grid !important;
  place-items:center !important;
  color:#72efff !important;
}
.ov43-stat span svg,
.ov43-eq-icon svg,
.ov43-block-icon svg{width:100% !important;height:100% !important;fill:none !important;stroke:currentColor !important;stroke-width:1.8 !important;stroke-linecap:round !important;stroke-linejoin:round !important;}
.ov43-stat strong{color:#fff !important;font-size:clamp(15px,2.3vw,20px) !important;line-height:1.05 !important;font-weight:950 !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;}
.ov43-stat em{color:rgba(225,237,255,.72) !important;font-size:clamp(12px,2.2vw,16px) !important;font-style:normal !important;}
.ov43-equipment-card{
  border:1px solid rgba(115,211,255,.22) !important;
  border-radius:22px !important;
  background:rgba(2,12,27,.50) !important;
  padding:16px !important;
}
.ov43-card-kicker{
  color:#75f0ff !important;
  font-size:13px !important;
  font-weight:950 !important;
  letter-spacing:.24em !important;
  text-transform:uppercase !important;
  margin-bottom:12px !important;
}
.ov43-equipment-grid{
  display:grid !important;
  grid-template-columns:repeat(auto-fit,minmax(140px,1fr)) !important;
  gap:10px !important;
}
.ov43-equipment-chip{
  min-height:54px !important;
  display:flex !important;
  align-items:center !important;
  gap:12px !important;
  padding:8px 12px !important;
  border-radius:16px !important;
  border:1px solid rgba(115,211,255,.18) !important;
  background:rgba(5,16,34,.52) !important;
  color:rgba(238,247,255,.84) !important;
  font-weight:760 !important;
  font-size:15px !important;
}
.ov43-eq-icon{
  flex:0 0 auto !important;
  width:30px !important;
  height:30px !important;
  color:#45e4ff !important;
  display:grid !important;
  place-items:center !important;
}
.ov43-actions{
  display:grid !important;
  grid-template-columns:1fr auto !important;
  gap:12px !important;
  align-items:center !important;
}
.ov43-start{
  order:1 !important;
  width:100% !important;
  min-height:58px !important;
  border-radius:22px !important;
  font-size:clamp(18px,4vw,26px) !important;
  font-weight:950 !important;
  background:linear-gradient(180deg,#89c8ff,#45a8ff) !important;
  color:#041321 !important;
}
.ov43-skip{
  order:2 !important;
  min-height:58px !important;
  border-radius:22px !important;
  padding:0 20px !important;
  color:#eaf6ff !important;
  background:rgba(4,15,34,.54) !important;
}
#overviewInsights{display:none !important;}
#overviewFlow{
  margin-top:clamp(22px,4vw,34px) !important;
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:12px !important;
}
.ov43-section-head{
  display:flex !important;
  align-items:center !important;
  gap:12px !important;
  margin:0 0 2px !important;
}
.ov43-section-head h2{
  margin:0 !important;
  color:#fff !important;
  font-size:clamp(28px,5vw,40px) !important;
  letter-spacing:-.04em !important;
}
.ov43-list-icon{color:#62e8ff !important;font-size:24px !important;line-height:1 !important;}
.ov43-block{
  position:relative !important;
  overflow:hidden !important;
  border-radius:22px !important;
  border:1px solid rgba(111,203,255,.18) !important;
  background:rgba(3,13,28,.54) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03) !important;
}
.ov43-block[open]{
  border-color:rgba(80,228,255,.88) !important;
  box-shadow:0 0 0 1px rgba(80,228,255,.24), 0 0 28px rgba(32,203,255,.16), inset 0 1px 0 rgba(255,255,255,.04) !important;
}
.ov43-block summary{
  list-style:none !important;
  cursor:pointer !important;
  display:grid !important;
  grid-template-columns:58px 58px minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:14px !important;
  padding:14px 18px !important;
  -webkit-tap-highlight-color:transparent !important;
}
.ov43-block summary::-webkit-details-marker{display:none !important;}
.ov43-block-number{
  width:46px !important;
  height:46px !important;
  display:grid !important;
  place-items:center !important;
  border-radius:16px !important;
  background:rgba(31,145,214,.13) !important;
  color:#74eaff !important;
  font-size:22px !important;
  font-weight:950 !important;
}
.ov43-block-icon{
  width:52px !important;
  height:52px !important;
  display:grid !important;
  place-items:center !important;
  border-radius:17px !important;
  border:1px solid rgba(108,210,255,.17) !important;
  background:rgba(4,15,33,.60) !important;
  color:#6adfff !important;
  padding:14px !important;
  box-sizing:border-box !important;
}
.ov43-block-copy{display:grid !important;gap:3px !important;min-width:0 !important;}
.ov43-block-copy > span{display:flex !important;align-items:center !important;gap:10px !important;min-width:0 !important;}
.ov43-block-copy strong{color:#fff !important;font-size:clamp(18px,3vw,25px) !important;line-height:1.05 !important;font-weight:950 !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;}
.ov43-block-copy small{color:rgba(224,238,255,.70) !important;font-size:clamp(14px,2.6vw,18px) !important;line-height:1.2 !important;}
.ov43-badge{
  color:#75eaff !important;
  border:1px solid rgba(84,221,255,.30) !important;
  background:rgba(11,78,113,.18) !important;
  border-radius:999px !important;
  padding:4px 8px !important;
  font-size:11px !important;
  letter-spacing:.14em !important;
  text-transform:uppercase !important;
  flex:0 0 auto !important;
}
.ov43-chevron{color:#d8efff !important;font-size:24px !important;font-weight:950 !important;transition:transform .18s ease !important;}
.ov43-block[open] .ov43-chevron{transform:rotate(180deg) !important;}
.ov43-block-detail{
  margin:0 18px 18px !important;
  padding:14px !important;
  border-radius:18px !important;
  border:1px solid rgba(118,208,255,.16) !important;
  background:rgba(4,16,34,.48) !important;
}
.ov43-focus{
  display:flex !important;
  gap:10px !important;
  align-items:center !important;
  color:rgba(229,241,255,.72) !important;
  font-size:15px !important;
  margin-bottom:12px !important;
}
.ov43-focus span,.ov43-focus b{color:#65e7ff !important;font-style:normal !important;text-transform:uppercase !important;letter-spacing:.14em !important;font-weight:950 !important;}
.ov43-focus em{font-style:normal !important;}
.ov43-ex-list{
  overflow:hidden !important;
  border:1px solid rgba(118,208,255,.14) !important;
  border-radius:16px !important;
}
.ov43-ex-line{
  display:grid !important;
  grid-template-columns:72px minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:12px !important;
  min-height:48px !important;
  padding:8px 12px !important;
  border-top:1px solid rgba(118,208,255,.10) !important;
  background:rgba(255,255,255,.025) !important;
}
.ov43-ex-line:first-child{border-top:0 !important;}
.ov43-code{
  display:grid !important;
  place-items:center !important;
  min-height:34px !important;
  border-radius:10px !important;
  border:1px solid rgba(114,227,255,.30) !important;
  color:#83eeff !important;
  font-weight:950 !important;
}
.ov43-ex-line strong{color:#fff !important;font-size:17px !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;}
.ov43-ex-line > span:last-child{color:rgba(231,243,255,.72) !important;font-weight:760 !important;white-space:nowrap !important;}
.ov43-block-footer{
  display:grid !important;
  grid-template-columns:repeat(auto-fit,minmax(120px,1fr)) !important;
  gap:8px !important;
  margin-top:12px !important;
}
.ov43-block-footer span{
  min-height:34px !important;
  display:grid !important;
  place-items:center !important;
  border-left:1px solid rgba(118,208,255,.12) !important;
  color:rgba(226,241,255,.74) !important;
  font-size:14px !important;
}
#overviewCoachChecklist{
  margin-top:clamp(20px,4vw,32px) !important;
  padding:clamp(18px,4vw,30px) !important;
  border-radius:24px !important;
  background:rgba(3,13,28,.48) !important;
}
#overviewCoachChecklist h3{margin:0 0 8px !important;color:#fff !important;font-size:clamp(24px,5vw,36px) !important;letter-spacing:-.04em !important;}
#overviewCoachChecklist p{margin:0 !important;color:rgba(226,239,255,.70) !important;font-size:clamp(16px,3.4vw,22px) !important;line-height:1.32 !important;}
.ov43-checks{margin-top:18px !important;display:grid !important;gap:10px !important;}
#overviewList{display:none !important;}
@media(max-width:760px){
  #overviewScreen > .panel{border-radius:26px !important;}
  #overviewScreen .panel-pad{padding:22px 16px !important;}
  #overviewScreen #overviewTitle{font-size:clamp(46px,13vw,62px) !important;}
  .ov43-statbar{grid-template-columns:1fr !important;}
  .ov43-stat{border-left:0 !important;border-top:1px solid rgba(115,211,255,.13) !important;padding:12px 14px !important;}
  .ov43-stat:first-child{border-top:0 !important;}
  .ov43-equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .ov43-equipment-chip{font-size:14px !important;min-height:50px !important;}
  .ov43-actions{grid-template-columns:1fr !important;}
  .ov43-start{order:1 !important;min-height:56px !important;}
  .ov43-skip{order:2 !important;min-height:48px !important;}
  .ov43-block summary{grid-template-columns:44px 48px minmax(0,1fr) 20px !important;gap:10px !important;padding:12px !important;}
  .ov43-block-number{width:38px !important;height:38px !important;font-size:19px !important;border-radius:13px !important;}
  .ov43-block-icon{width:42px !important;height:42px !important;border-radius:14px !important;padding:11px !important;}
  .ov43-block-copy > span{align-items:flex-start !important;flex-direction:column !important;gap:5px !important;}
  .ov43-block-copy strong{font-size:18px !important;white-space:normal !important;}
  .ov43-block-copy small{font-size:14px !important;}
  .ov43-badge{font-size:10px !important;padding:3px 7px !important;}
  .ov43-block-detail{margin:0 12px 12px !important;padding:12px !important;}
  .ov43-ex-line{grid-template-columns:54px minmax(0,1fr) !important;gap:9px !important;}
  .ov43-ex-line > span:last-child{grid-column:2 !important;font-size:14px !important;}
  .ov43-ex-line strong{font-size:16px !important;white-space:normal !important;}
  .ov43-block-footer{grid-template-columns:1fr 1fr !important;}
}

/* ==========================================================
   v96 RC44 - compact overview + corrected block logic
   - remove skip pass CTA
   - compact stat/equipment area
   - block-level cards are sections; superset is shown inside section only when data has A/B pairs
   ========================================================== */
#overviewScreen .page-actions .skip-pass-btn,
#overviewScreen .ov43-skip{
  display:none !important;
}
#overviewScreen .panel-pad{
  padding:clamp(18px,3.2vw,34px) !important;
}
#overviewScreen .overview-return-row{
  margin-bottom:clamp(12px,2.4vw,22px) !important;
}
#overviewScreen #overviewMeta{
  margin-bottom:6px !important;
  font-size:clamp(11px,2.8vw,14px) !important;
  letter-spacing:.22em !important;
}
#overviewScreen #overviewTitle{
  font-size:clamp(42px,10.5vw,76px) !important;
}
#overviewScreen #overviewDesc{
  margin-top:10px !important;
  font-size:clamp(16px,4vw,24px) !important;
  line-height:1.25 !important;
}
#overviewEquipment{
  gap:10px !important;
  margin-top:clamp(16px,3vw,26px) !important;
}
.ov43-statbar{
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  border-radius:18px !important;
}
.ov43-stat{
  padding:10px 12px !important;
  column-gap:9px !important;
}
.ov43-stat span{
  width:26px !important;
  height:26px !important;
}
.ov43-stat strong{
  font-size:clamp(13px,2.2vw,18px) !important;
}
.ov43-stat em{
  font-size:clamp(11px,2vw,14px) !important;
}
.ov43-equipment-card{
  padding:12px !important;
  border-radius:18px !important;
}
.ov43-card-kicker{
  margin-bottom:8px !important;
  font-size:11px !important;
  letter-spacing:.22em !important;
}
.ov43-equipment-grid{
  grid-template-columns:repeat(auto-fit,minmax(112px,1fr)) !important;
  gap:8px !important;
}
.ov43-equipment-chip{
  min-height:40px !important;
  gap:8px !important;
  padding:6px 9px !important;
  border-radius:13px !important;
  font-size:13px !important;
  line-height:1.12 !important;
}
.ov43-eq-icon{
  width:22px !important;
  height:22px !important;
}
.ov43-actions{
  grid-template-columns:1fr !important;
  gap:0 !important;
}
.ov43-start{
  min-height:52px !important;
  border-radius:18px !important;
  font-size:clamp(17px,3.8vw,24px) !important;
}
#overviewFlow{
  margin-top:clamp(16px,3vw,26px) !important;
  gap:9px !important;
}
.ov43-section-head h2{
  font-size:clamp(24px,4.5vw,36px) !important;
}
.ov43-block{
  border-radius:18px !important;
}
.ov43-block summary{
  grid-template-columns:44px 44px minmax(0,1fr) auto !important;
  gap:10px !important;
  padding:10px 13px !important;
}
.ov43-block-number{
  width:36px !important;
  height:36px !important;
  border-radius:12px !important;
  font-size:18px !important;
}
.ov43-block-icon{
  width:38px !important;
  height:38px !important;
  border-radius:13px !important;
  padding:10px !important;
}
.ov43-block-copy strong{
  font-size:clamp(16px,2.8vw,22px) !important;
}
.ov43-block-copy small{
  font-size:clamp(12px,2.3vw,16px) !important;
}
.ov43-badge{
  font-size:10px !important;
  padding:3px 7px !important;
}
.ov43-block-detail{
  margin:0 13px 13px !important;
  padding:11px !important;
  border-radius:15px !important;
}
.ov43-focus{
  margin-bottom:9px !important;
  font-size:13px !important;
  line-height:1.25 !important;
}
.ov44-ex-group{
  display:grid !important;
  gap:6px !important;
  margin-top:8px !important;
}
.ov44-ex-group:first-of-type{margin-top:0 !important;}
.ov44-group-head{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:10px !important;
  padding:6px 9px !important;
  border:1px solid rgba(79,223,255,.22) !important;
  border-radius:12px !important;
  background:rgba(9,64,99,.18) !important;
}
.ov44-group-head b{
  color:#81efff !important;
  font-size:12px !important;
  font-weight:950 !important;
  letter-spacing:.12em !important;
  text-transform:uppercase !important;
}
.ov44-group-head span{
  color:rgba(226,241,255,.64) !important;
  font-size:12px !important;
  font-weight:760 !important;
}
.ov44-group-head.circuit{
  border-color:rgba(112,190,255,.18) !important;
}
.ov43-ex-line{
  min-height:38px !important;
  padding:6px 9px !important;
  grid-template-columns:48px minmax(0,1fr) auto !important;
  gap:9px !important;
}
.ov43-code{
  min-height:28px !important;
  border-radius:9px !important;
  font-size:13px !important;
}
.ov43-ex-line strong{
  font-size:14px !important;
}
.ov43-ex-line > span:last-child{
  font-size:13px !important;
}
.ov43-block-footer{
  margin-top:9px !important;
  gap:6px !important;
}
.ov43-block-footer span{
  min-height:28px !important;
  font-size:12px !important;
}
@media(max-width:760px){
  #overviewScreen .panel-pad{
    padding:18px 14px !important;
  }
  #overviewEquipment{
    gap:9px !important;
    margin-top:16px !important;
  }
  .ov43-statbar{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  }
  .ov43-stat{
    grid-template-columns:1fr !important;
    grid-template-rows:auto auto auto !important;
    justify-items:center !important;
    text-align:center !important;
    row-gap:3px !important;
    border-left:1px solid rgba(115,211,255,.13) !important;
    border-top:0 !important;
    padding:9px 5px !important;
  }
  .ov43-stat:first-child{border-left:0 !important;}
  .ov43-stat span{grid-row:auto !important;width:20px !important;height:20px !important;}
  .ov43-stat strong{font-size:13px !important;white-space:normal !important;}
  .ov43-stat em{font-size:10px !important;}
  .ov43-equipment-card{padding:11px !important;}
  .ov43-equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:7px !important;}
  .ov43-equipment-chip{min-height:38px !important;font-size:12px !important;padding:6px 8px !important;}
  .ov43-eq-icon{width:20px !important;height:20px !important;}
  .ov43-start{min-height:50px !important;border-radius:17px !important;}
  #overviewFlow{margin-top:17px !important;gap:8px !important;}
  .ov43-block summary{grid-template-columns:36px 38px minmax(0,1fr) 18px !important;gap:8px !important;padding:9px 10px !important;}
  .ov43-block-number{width:32px !important;height:32px !important;font-size:16px !important;border-radius:11px !important;}
  .ov43-block-icon{width:34px !important;height:34px !important;border-radius:11px !important;padding:9px !important;}
  .ov43-block-copy > span{gap:5px !important;}
  .ov43-block-copy strong{font-size:16px !important;}
  .ov43-block-copy small{font-size:12px !important;}
  .ov43-block-detail{margin:0 10px 10px !important;padding:10px !important;}
  .ov43-ex-line{grid-template-columns:42px minmax(0,1fr) auto !important;min-height:36px !important;}
  .ov43-ex-line > span:last-child{grid-column:auto !important;font-size:12px !important;}
  .ov43-ex-line strong{font-size:13px !important;white-space:normal !important;}
  .ov44-group-head{padding:5px 8px !important;}
  .ov44-group-head b,.ov44-group-head span{font-size:11px !important;}
}
@media(max-width:420px){
  .ov43-equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .ov43-equipment-chip{font-size:11.5px !important;gap:6px !important;}
  .ov43-ex-line{grid-template-columns:38px minmax(0,1fr) !important;}
  .ov43-ex-line > span:last-child{grid-column:2 !important;}
}


/* ==========================================================
   v96 RC45 - overview: remove focus cell from expanded blocks
   - removes the nested focus row to reduce cell-in-cell feeling
   - keeps block exercise/superset details as the main content
   ========================================================== */
.ov45-no-focus-cell .ov43-focus,
.ov43-block-detail > .ov43-focus{
  display:none !important;
}
.ov45-no-focus-cell{
  padding-top:clamp(8px,1.6vw,12px) !important;
}
.ov44-ex-group:first-child{
  margin-top:0 !important;
}
@media(max-width:760px){
  .ov45-no-focus-cell{
    padding-top:8px !important;
  }
}


/* ==========================================================
   v96 RC46 - compact overview polish
   - compact statline + equipment tags
   - human intensity labels instead of RPE jargon
   - tighter expanded blocks and cleaner prescription formatting
   ========================================================== */
.ov46-statline{
  display:flex !important;
  flex-wrap:wrap !important;
  align-items:center !important;
  gap:8px !important;
  padding:10px 12px !important;
  border:1px solid rgba(115,211,255,.20) !important;
  border-radius:18px !important;
  background:linear-gradient(145deg, rgba(4,17,36,.52), rgba(2,9,22,.32)) !important;
  color:rgba(226,240,255,.76) !important;
  font-weight:820 !important;
  font-size:clamp(13px,2.3vw,17px) !important;
}
.ov46-statline span{
  display:inline-flex !important;
  align-items:center !important;
  gap:5px !important;
  white-space:nowrap !important;
}
.ov46-statline span + span::before{
  content:"•" !important;
  color:#7eefff !important;
  opacity:.72 !important;
  margin-right:2px !important;
}
.ov46-statline b{
  color:#fff !important;
  font-weight:950 !important;
}
.ov46-equipment-card{
  padding:10px 11px 11px !important;
  border-radius:17px !important;
}
.ov46-equipment-tags{
  display:flex !important;
  flex-wrap:wrap !important;
  gap:7px !important;
  grid-template-columns:none !important;
}
.ov46-equipment-tag{
  display:inline-flex !important;
  align-items:center !important;
  min-height:30px !important;
  padding:5px 11px !important;
  border-radius:999px !important;
  border:1px solid rgba(119,210,255,.20) !important;
  background:rgba(4,17,36,.50) !important;
  color:#f0f8ff !important;
  font-size:13px !important;
  line-height:1.05 !important;
  font-weight:850 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025) !important;
}
.ov46-equipment-card .ov43-card-kicker{
  margin-bottom:7px !important;
}
.ov43-equipment-card .ov43-equipment-chip{display:none !important;}
.ov43-badge{
  color:#8af2ff !important;
  background:rgba(7,65,95,.34) !important;
  border-color:rgba(97,222,255,.34) !important;
  text-transform:none !important;
  letter-spacing:.04em !important;
}
.ov43-block-detail{
  padding:9px !important;
  margin:0 10px 10px !important;
  border-radius:13px !important;
}
.ov44-ex-group{
  gap:5px !important;
  margin-top:7px !important;
}
.ov44-group-head{
  padding:4px 8px !important;
  border-radius:999px !important;
}
.ov44-group-head b{
  font-size:11px !important;
  letter-spacing:.10em !important;
}
.ov44-group-head span{
  font-size:11px !important;
}
.ov43-ex-list{
  border-radius:12px !important;
}
.ov43-ex-line{
  min-height:32px !important;
  padding:5px 8px !important;
  grid-template-columns:38px minmax(0,1fr) auto !important;
  gap:8px !important;
}
.ov43-code{
  min-height:24px !important;
  min-width:34px !important;
  border-radius:8px !important;
  font-size:12px !important;
}
.ov43-ex-line strong{
  font-size:13px !important;
  line-height:1.1 !important;
}
.ov43-ex-line > span:last-child{
  font-size:12px !important;
  line-height:1.1 !important;
}
.ov43-block-footer{
  margin-top:7px !important;
  gap:5px !important;
}
.ov43-block-footer span{
  min-height:24px !important;
  font-size:11px !important;
}
@media(max-width:760px){
  .ov46-statline{
    gap:6px !important;
    padding:9px 10px !important;
    font-size:13px !important;
    border-radius:16px !important;
  }
  .ov46-equipment-card{padding:9px 10px 10px !important;}
  .ov46-equipment-tags{gap:6px !important;}
  .ov46-equipment-tag{
    min-height:28px !important;
    padding:5px 10px !important;
    font-size:12px !important;
  }
  .ov43-block-detail{margin:0 8px 8px !important;padding:8px !important;}
  .ov43-ex-line{grid-template-columns:34px minmax(0,1fr) !important;min-height:31px !important;}
  .ov43-ex-line > span:last-child{grid-column:2 !important;font-size:11.5px !important;}
  .ov43-ex-line strong{font-size:12.5px !important;}
  .ov44-group-head{gap:6px !important;}
  .ov44-group-head b,.ov44-group-head span{font-size:10.5px !important;}
}
@media(max-width:420px){
  .ov46-statline{font-size:12px !important;}
  .ov46-equipment-tag{font-size:11.5px !important;}
  .ov44-group-head span{max-width:52%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
}

/* ==========================================================
   v96 RC47 - overview top rebuild + data-driven block display
   - rebuild top block to mockup-style stat/equipment/start stack
   - remove ambiguous block meta/footers
   - make superset instructions explicit per group
   ========================================================== */
body.overview-active .app-topbar{
  position:relative !important;
  top:auto !important;
  left:auto !important;
  right:auto !important;
  transform:none !important;
  margin:clamp(16px,4vw,28px) auto clamp(16px,3vw,24px) !important;
}
#overviewScreen .overview-head .page-actions{
  display:none !important;
}
#overviewEquipment{
  display:grid !important;
  gap:12px !important;
  margin-top:16px !important;
}
.ov47-top-block{
  display:grid !important;
  gap:10px !important;
}
.ov47-stat-strip{
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  border:1px solid rgba(117,211,255,.23) !important;
  border-radius:20px !important;
  background:linear-gradient(145deg, rgba(4,17,36,.58), rgba(2,9,22,.36)) !important;
  overflow:hidden !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035) !important;
}
.ov47-stat{
  min-width:0 !important;
  display:grid !important;
  grid-template-columns:40px minmax(0,1fr) !important;
  grid-template-areas:"icon main" "icon sub" !important;
  align-items:center !important;
  column-gap:10px !important;
  row-gap:1px !important;
  padding:12px 14px !important;
}
.ov47-stat i{
  grid-area:icon !important;
  width:36px !important;
  height:36px !important;
  border-radius:999px !important;
  display:grid !important;
  place-items:center !important;
  border:1px solid rgba(113,225,255,.22) !important;
  background:radial-gradient(circle at 35% 25%, rgba(110,238,255,.16), transparent 55%), rgba(5,19,39,.58) !important;
  color:#73ebff !important;
}
.ov47-stat i svg{width:19px !important;height:19px !important;display:block !important;fill:none !important;stroke:currentColor !important;stroke-width:2 !important;stroke-linecap:round !important;stroke-linejoin:round !important;}
.ov47-stat b{
  grid-area:main !important;
  color:#fff !important;
  font-size:clamp(14px,2.8vw,20px) !important;
  font-weight:950 !important;
  line-height:1.05 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
.ov47-stat span{
  grid-area:sub !important;
  color:rgba(222,238,255,.70) !important;
  font-size:clamp(11px,2.2vw,14px) !important;
  font-weight:650 !important;
  line-height:1.15 !important;
}
.ov47-equipment-card{
  border:1px solid rgba(117,211,255,.20) !important;
  border-radius:20px !important;
  background:linear-gradient(145deg, rgba(4,17,36,.50), rgba(2,9,22,.30)) !important;
  padding:12px 14px !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025) !important;
}
.ov47-card-kicker{
  color:#83eeff !important;
  font-size:12px !important;
  line-height:1 !important;
  font-weight:950 !important;
  letter-spacing:.22em !important;
  text-transform:uppercase !important;
  margin-bottom:10px !important;
}
.ov47-equipment-list{
  display:flex !important;
  flex-wrap:wrap !important;
  gap:8px !important;
}
.ov47-equipment-chip{
  display:inline-grid !important;
  grid-template-columns:24px auto !important;
  align-items:center !important;
  gap:8px !important;
  min-height:36px !important;
  padding:6px 12px !important;
  border-radius:999px !important;
  border:1px solid rgba(119,210,255,.20) !important;
  background:rgba(4,17,36,.52) !important;
  color:#eff8ff !important;
  font-size:13px !important;
  line-height:1.05 !important;
  font-weight:850 !important;
}
.ov47-equipment-chip i{display:grid !important;place-items:center !important;width:24px !important;height:24px !important;color:#76ecff !important;}
.ov47-equipment-chip i svg{width:20px !important;height:20px !important;display:block !important;fill:none !important;stroke:currentColor !important;stroke-width:1.9 !important;stroke-linecap:round !important;stroke-linejoin:round !important;}
.ov47-actions{display:grid !important;margin-top:0 !important;}
.ov47-start{
  width:100% !important;
  min-height:58px !important;
  border-radius:22px !important;
  font-size:clamp(17px,3.4vw,22px) !important;
  font-weight:950 !important;
  background:linear-gradient(180deg,#88d5ff,#4aafff) !important;
  color:#03111f !important;
}
#overviewFlow{margin-top:18px !important;}
.ov43-block-copy small:empty{display:none !important;}
.ov43-block.power .ov43-block-copy small,
.ov43-block.strength .ov43-block-copy small{
  display:none !important;
}
.ov47-block-detail{
  padding:8px !important;
  margin:0 9px 9px !important;
  border-radius:14px !important;
}
.ov47-ex-group{display:grid !important;gap:6px !important;margin-top:8px !important;}
.ov47-ex-group:first-child{margin-top:0 !important;}
.ov47-group-head{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:10px !important;
  min-height:32px !important;
  padding:6px 10px !important;
  border-radius:999px !important;
  border:1px solid rgba(98,222,255,.28) !important;
  background:rgba(0,63,92,.28) !important;
}
.ov47-group-head b{
  color:#86f3ff !important;
  font-size:12px !important;
  font-weight:950 !important;
  letter-spacing:.12em !important;
  text-transform:uppercase !important;
  white-space:nowrap !important;
}
.ov47-group-head span{
  color:rgba(225,240,255,.74) !important;
  font-size:12px !important;
  font-weight:780 !important;
  text-align:right !important;
}
.ov47-ex-list{
  display:grid !important;
  overflow:hidden !important;
  border-radius:14px !important;
  border:1px solid rgba(119,210,255,.16) !important;
  background:rgba(5,14,29,.44) !important;
}
.ov47-ex-row{
  display:grid !important;
  grid-template-columns:44px minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:10px !important;
  min-height:42px !important;
  padding:7px 10px !important;
  border-top:1px solid rgba(119,210,255,.12) !important;
}
.ov47-ex-row:first-child{border-top:0 !important;}
.ov47-code{
  display:grid !important;
  place-items:center !important;
  min-width:34px !important;
  min-height:26px !important;
  border-radius:9px !important;
  border:1px solid rgba(122,232,255,.35) !important;
  color:#86f3ff !important;
  font-size:13px !important;
  font-weight:950 !important;
}
.ov47-ex-row strong{
  color:#f7fbff !important;
  font-size:14px !important;
  line-height:1.15 !important;
  font-weight:900 !important;
  min-width:0 !important;
}
.ov47-ex-row em{
  color:rgba(227,240,255,.74) !important;
  font-style:normal !important;
  font-size:13px !important;
  line-height:1.15 !important;
  font-weight:760 !important;
  white-space:nowrap !important;
}
.ov43-block-footer{display:none !important;}
@media(max-width:760px){
  .ov47-stat-strip{border-radius:18px !important;}
  .ov47-stat{grid-template-columns:1fr !important;grid-template-areas:"icon" "main" "sub" !important;justify-items:center !important;text-align:center !important;gap:3px !important;padding:10px 8px !important;}
  .ov47-stat i{width:30px !important;height:30px !important;}
  .ov47-stat i svg{width:16px !important;height:16px !important;}
  .ov47-stat b{font-size:13px !important;}
  .ov47-stat span{font-size:11px !important;}
  .ov47-equipment-card{padding:10px 11px !important;border-radius:18px !important;}
  .ov47-card-kicker{font-size:11px !important;margin-bottom:8px !important;}
  .ov47-equipment-list{gap:6px !important;}
  .ov47-equipment-chip{grid-template-columns:18px auto !important;min-height:30px !important;padding:5px 10px !important;font-size:12px !important;gap:6px !important;}
  .ov47-equipment-chip i{width:18px !important;height:18px !important;}
  .ov47-equipment-chip i svg{width:16px !important;height:16px !important;}
  .ov47-start{min-height:54px !important;border-radius:19px !important;font-size:18px !important;}
  .ov47-block-detail{margin:0 7px 7px !important;padding:7px !important;}
  .ov47-group-head{min-height:30px !important;padding:5px 8px !important;gap:7px !important;align-items:flex-start !important;}
  .ov47-group-head b{font-size:11px !important;}
  .ov47-group-head span{font-size:11px !important;line-height:1.12 !important;}
  .ov47-ex-row{grid-template-columns:38px minmax(0,1fr) !important;gap:8px !important;min-height:39px !important;padding:7px 8px !important;}
  .ov47-ex-row em{grid-column:2 !important;font-size:12px !important;white-space:normal !important;}
  .ov47-ex-row strong{font-size:13px !important;}
  .ov47-code{min-height:24px !important;font-size:12px !important;}
}
@media(max-width:420px){
  .ov47-equipment-chip{font-size:11.5px !important;}
  .ov47-stat b{font-size:12.5px !important;}
  .ov47-stat span{font-size:10.5px !important;}
}

/* =====================================================================
   v96 RC49 - RC48 handoff QA refresh
   ---------------------------------------------------------------------
   No visual behaviour override. Metadata/cache and QA artifacts refreshed.
   ===================================================================== */

/* =====================================================================
   v96 RC50 - clean overview text containers + remove nested exercise frame
   ---------------------------------------------------------------------
   Top block structure from RC48/RC49 is kept, but generic overview chip
   styling no longer wraps the stat/equipment text in extra outlined pills.
   Exercise block details no longer render as an outlined cell containing
   another outlined exercise list.
   ===================================================================== */
#overviewEquipment .ov47-stat b,
#overviewEquipment .ov47-stat span,
#overviewEquipment .ov47-equipment-chip b,
#overviewEquipment .ov47-card-kicker{
  display:block !important;
  min-height:0 !important;
  width:auto !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
#overviewEquipment .ov47-stat b,
#overviewEquipment .ov47-stat span{
  align-items:initial !important;
  justify-content:initial !important;
}
#overviewEquipment .ov47-equipment-chip b{
  color:inherit !important;
  font:inherit !important;
  line-height:1.05 !important;
}
#overviewEquipment .ov47-equipment-chip{
  grid-template-columns:24px minmax(0,auto) !important;
}
.ov47-block-detail{
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  padding:0 !important;
}
@media(max-width:760px){
  .ov47-block-detail{padding:0 !important;}
}


/* =====================================================================
   v96 RC51 - clean exercise-list rows + balanced top menu
   ---------------------------------------------------------------------
   - Keeps one outer card per Passöversikt block.
   - Exercise content becomes compact rows with subtle dividers, not cards
     inside cards.
   - Warm-up no longer shows an empty badge + stray dash.
   - Top header uses symmetrical side columns so the NEXT logo sits centered.
   ===================================================================== */
body:not(.exercise-active) .app-topbar.rc27-topbar,
body.topbar-portal:not(.exercise-active) .app-topbar.rc27-topbar,
body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc27-topbar{
  grid-template-columns:64px minmax(0,1fr) 64px !important;
  align-items:center !important;
  justify-items:center !important;
  gap:8px !important;
  min-height:76px !important;
  padding:10px 14px !important;
}
body:not(.exercise-active) .app-topbar.rc27-topbar .rc26-brand,
body:not(.exercise-active) .app-topbar.rc27-topbar .app-brand{
  grid-column:2 !important;
  justify-self:center !important;
  align-self:center !important;
  width:100% !important;
  display:grid !important;
  place-items:center !important;
}
body:not(.exercise-active) .app-topbar.rc27-topbar .rc26-brand-logo{
  width:clamp(168px,22vw,236px) !important;
  max-height:52px !important;
  transform:none !important;
  margin:0 auto !important;
}
body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
body.topbar-portal:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
body.topbar-hard-fixed:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
body:not(.exercise-active) .app-profile-toggle.rc27-profile-toggle{
  align-self:center !important;
  justify-self:center !important;
  width:52px !important;
  height:52px !important;
  min-width:52px !important;
  min-height:52px !important;
  margin:0 !important;
  transform:none !important;
}
body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle .nav-burger{
  place-self:center !important;
  transform:none !important;
}
body:not(.exercise-active) .app-profile-toggle.rc27-profile-toggle{
  border:1px solid rgba(116,224,255,.30) !important;
  background:linear-gradient(180deg, rgba(6,19,38,.58), rgba(3,10,23,.42)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 10px 26px rgba(0,0,0,.24), 0 0 18px rgba(60,215,255,.07) !important;
}
@media(max-width:760px){
  body:not(.exercise-active) .app-topbar.rc27-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar.rc27-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc27-topbar{
    grid-template-columns:56px minmax(0,1fr) 56px !important;
    min-height:64px !important;
    padding:8px 10px !important;
  }
  body:not(.exercise-active) .app-topbar.rc27-topbar .rc26-brand-logo{
    width:168px !important;
    max-height:42px !important;
  }
  body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
  body.topbar-portal:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
  body.topbar-hard-fixed:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
  body:not(.exercise-active) .app-profile-toggle.rc27-profile-toggle{
    width:48px !important;
    height:48px !important;
    min-width:48px !important;
    min-height:48px !important;
  }
}

/* One clean section card, compact content inside. */
#overviewFlow{
  gap:10px !important;
}
.ov43-section-head{
  margin:clamp(20px,4vw,32px) 0 8px !important;
}
.ov43-block{
  border-radius:22px !important;
  border-color:rgba(85,237,255,.34) !important;
  background:linear-gradient(155deg, rgba(5,18,36,.66), rgba(2,9,22,.46)) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 16px 34px rgba(0,0,0,.16) !important;
  overflow:hidden !important;
}
.ov43-block[open]{
  border-color:rgba(77,238,255,.72) !important;
  box-shadow:inset 0 0 0 1px rgba(77,238,255,.10), 0 0 22px rgba(40,220,255,.08), 0 18px 42px rgba(0,0,0,.20) !important;
}
.ov43-block summary{
  padding:14px 16px !important;
}
.ov43-block-copy > span{
  flex-direction:row !important;
  align-items:center !important;
  gap:9px !important;
}
.ov43-block-copy strong{
  letter-spacing:-.025em !important;
}
.ov43-badge{
  border-radius:999px !important;
  padding:3px 8px !important;
}
.ov51-block-detail{
  margin:0 14px 14px !important;
  padding:0 !important;
  display:grid !important;
  gap:8px !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
.ov51-ex-group{
  display:grid !important;
  gap:6px !important;
  margin:0 !important;
}
.ov51-ex-list{
  display:grid !important;
  overflow:hidden !important;
  border:1px solid rgba(119,210,255,.12) !important;
  border-radius:15px !important;
  background:rgba(3,13,28,.38) !important;
}
.ov51-ex-row{
  grid-template-columns:54px minmax(0,1fr) auto !important;
  min-height:42px !important;
  padding:8px 12px !important;
  gap:12px !important;
  border-top:1px solid rgba(119,210,255,.10) !important;
  background:transparent !important;
}
.ov51-ex-row:first-child{border-top:0 !important;}
.ov51-code{
  min-width:34px !important;
  min-height:26px !important;
  padding:0 6px !important;
  border-radius:10px !important;
  background:rgba(2,24,46,.52) !important;
}
.ov51-no-code .ov51-code{
  min-width:18px !important;
  min-height:18px !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  color:#68efff !important;
  font-size:22px !important;
  line-height:1 !important;
}
.ov51-ex-row strong{
  font-size:15px !important;
  line-height:1.15 !important;
  white-space:normal !important;
}
.ov51-ex-row em{
  justify-self:end !important;
  text-align:right !important;
  color:rgba(226,240,255,.76) !important;
  font-size:14px !important;
  line-height:1.12 !important;
  white-space:nowrap !important;
}
.ov51-group-head{
  min-height:32px !important;
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  align-items:center !important;
  gap:10px !important;
  padding:6px 12px !important;
  border-radius:999px !important;
  border-color:rgba(98,222,255,.30) !important;
  background:linear-gradient(90deg, rgba(4,80,116,.46), rgba(4,28,53,.30)) !important;
}
.ov51-group-head b{
  font-size:12px !important;
  letter-spacing:.22em !important;
}
.ov51-group-head span{
  min-width:0 !important;
  justify-self:end !important;
  text-align:right !important;
  font-size:12px !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
@media(max-width:760px){
  #overviewFlow{gap:9px !important;}
  .ov43-section-head{margin:18px 0 8px !important;}
  .ov43-block{border-radius:20px !important;}
  .ov43-block summary{
    grid-template-columns:44px 44px minmax(0,1fr) 20px !important;
    gap:10px !important;
    padding:12px 14px !important;
  }
  .ov43-block-number{width:38px !important;height:38px !important;font-size:18px !important;}
  .ov43-block-icon{width:38px !important;height:38px !important;}
  .ov43-block-copy > span{
    flex-direction:row !important;
    align-items:center !important;
    gap:6px !important;
  }
  .ov43-block-copy strong{font-size:18px !important;white-space:nowrap !important;}
  .ov43-block-copy small{font-size:13px !important;}
  .ov51-block-detail{margin:0 10px 10px !important;gap:7px !important;}
  .ov51-ex-list{border-radius:14px !important;}
  .ov51-ex-row{
    grid-template-columns:44px minmax(0,1fr) auto !important;
    min-height:39px !important;
    padding:7px 9px !important;
    gap:9px !important;
  }
  .ov51-code{min-width:30px !important;min-height:24px !important;font-size:12px !important;}
  .ov51-ex-row strong{font-size:14px !important;}
  .ov51-ex-row em{grid-column:auto !important;font-size:12.5px !important;white-space:nowrap !important;}
  .ov51-group-head{min-height:30px !important;padding:5px 9px !important;gap:8px !important;}
  .ov51-group-head b{font-size:11px !important;}
  .ov51-group-head span{font-size:11px !important;}
}
@media(max-width:390px){
  .ov43-block summary{grid-template-columns:40px 38px minmax(0,1fr) 18px !important;gap:8px !important;padding:11px 10px !important;}
  .ov43-block-copy strong{font-size:17px !important;}
  .ov43-badge{font-size:9.5px !important;padding:3px 7px !important;}
  .ov51-ex-row{grid-template-columns:38px minmax(0,1fr) auto !important;gap:8px !important;padding:7px 8px !important;}
  .ov51-ex-row strong{font-size:13px !important;}
  .ov51-ex-row em{font-size:12px !important;}
  .ov51-group-head{grid-template-columns:1fr !important;border-radius:14px !important;}
  .ov51-group-head span{justify-self:start !important;text-align:left !important;white-space:normal !important;}
}

/* =========================================================
   RC52 · Profile overview + edit flow + preset avatars
   ========================================================= */
:root{
  --next-panel:rgba(7,16,30,.84);
  --next-panel-2:rgba(10,24,43,.78);
  --next-line:rgba(112,218,255,.22);
  --next-line-strong:rgba(94,219,255,.56);
  --next-cyan:#69e9ff;
  --next-text:#f6fbff;
  --next-muted:rgba(216,229,244,.74);
}
.app-topbar.rc25-topbar.rc26-topbar.rc27-topbar{
  display:grid!important;
  grid-template-columns:minmax(72px,1fr) auto minmax(72px,1fr)!important;
  align-items:center!important;
  justify-items:center!important;
}
.app-topbar .app-nav-toggle{justify-self:start!important;}
.app-topbar .app-profile-toggle{justify-self:end!important;}
.app-topbar .app-brand{justify-self:center!important;transform:none!important;}
#profileScreen.profile-screen-next{
  position:relative;
  overflow:visible;
}
#profileScreen .profile-screen-bg{
  opacity:.18;
  filter:saturate(120%) contrast(112%);
}
.profile-next-shell{
  position:relative;
  z-index:1;
  width:min(100%,1040px);
  margin:0 auto;
  padding:clamp(14px,2.5vw,28px) 0 72px;
}
.profile-view-root{width:100%;}
.profile-next-page{
  display:grid;
  gap:14px;
  color:var(--next-text);
}
.profile-next-head{
  padding:6px 4px 2px;
}
.profile-next-head h1{
  margin:0;
  font-size:clamp(42px,9vw,64px);
  line-height:.95;
  letter-spacing:-.05em;
  font-weight:950;
}
.profile-next-head p{
  margin:10px 0 0;
  color:var(--next-muted);
  font-size:clamp(16px,3.8vw,22px);
}
.profile-back-inline{
  appearance:none;
  border:1px solid var(--next-line);
  border-radius:999px;
  background:rgba(7,17,30,.55);
  color:var(--next-cyan);
  padding:10px 14px;
  font:800 14px/1 inherit;
  margin:0 0 14px;
}
.profile-next-card{
  position:relative;
  border:1px solid var(--next-line);
  border-radius:24px;
  background:
    radial-gradient(800px 320px at 85% -20%,rgba(49,154,255,.14),transparent 62%),
    linear-gradient(180deg,rgba(11,25,45,.88),rgba(5,13,25,.90));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 18px 42px rgba(0,0,0,.16);
  padding:18px;
  overflow:hidden;
}
.profile-card-label{
  margin:0 0 12px;
  color:#7ef1ff;
  text-transform:uppercase;
  letter-spacing:.24em;
  font-size:13px;
  font-weight:950;
}
.profile-card-label.inline{
  display:flex;
  align-items:baseline;
  gap:14px;
  flex-wrap:wrap;
}
.profile-card-label.inline span{
  color:rgba(218,231,246,.62);
  letter-spacing:0;
  text-transform:none;
  font-weight:700;
  font-size:14px;
}
.profile-active-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:16px;
  align-items:center;
}
.profile-active-main h2{
  margin:0 0 12px;
  font-size:clamp(46px,10vw,68px);
  line-height:.92;
  letter-spacing:-.055em;
  font-weight:950;
}
.profile-active-main p{
  margin:12px 0 0;
  color:var(--next-muted);
  font-size:clamp(15px,3.6vw,20px);
  line-height:1.35;
}
.profile-next-chips{
  display:flex;
  gap:9px;
  flex-wrap:wrap;
}
.profile-next-chips.compact{gap:8px;}
.profile-next-chips.wrap{gap:9px;}
.profile-next-chip{
  min-height:38px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  border:1px solid rgba(104,222,255,.25);
  border-radius:999px;
  padding:8px 12px;
  background:linear-gradient(180deg,rgba(18,35,58,.76),rgba(9,20,35,.72));
  color:var(--next-text);
  font-weight:850;
  line-height:1.05;
}
.profile-next-chip svg,
.profile-action svg,
.profile-list-rows svg,
.profile-select-option svg,
.profile-avatar-choice svg,
.profile-helper svg,
.profile-program-compact svg{
  width:19px;
  height:19px;
  stroke:var(--next-cyan);
  stroke-width:2;
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
  flex:0 0 auto;
}
.profile-avatar-wrap{
  position:relative;
  width:clamp(110px,27vw,168px);
  aspect-ratio:1;
}
.profile-avatar{
  width:100%;
  height:100%;
  border-radius:50%;
  border:1.5px solid rgba(109,223,255,.62);
  display:grid;
  place-items:center;
  background:radial-gradient(circle at 50% 38%,rgba(71,207,255,.18),rgba(6,15,29,.72) 70%);
  box-shadow:0 0 34px rgba(30,185,255,.18), inset 0 0 22px rgba(81,198,255,.08);
}
.profile-avatar svg{width:54%;height:54%;stroke:var(--next-cyan);stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round;}
.profile-avatar-edit{
  position:absolute;
  right:-2px;
  bottom:8%;
  width:48px;
  height:48px;
  border-radius:50%;
  border:1px solid rgba(122,223,255,.58);
  background:rgba(12,31,57,.92);
  display:grid;
  place-items:center;
  box-shadow:0 0 18px rgba(42,188,255,.24);
}
.profile-avatar-edit svg{width:22px;height:22px;stroke:var(--next-cyan);stroke-width:2;fill:none;}
.profile-action-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  border-top:1px solid rgba(121,214,255,.16);
  margin:18px -18px -18px;
}
.profile-action-grid.three{grid-template-columns:1.25fr 1fr 1fr;}
.profile-action{
  appearance:none;
  border:0;
  border-left:1px solid rgba(121,214,255,.14);
  background:rgba(11,23,40,.38);
  color:var(--next-text);
  min-height:64px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:12px 10px;
  font-weight:900;
  font-size:16px;
  border-radius:0;
}
.profile-action:first-child{border-left:0;}
.profile-action.primary{
  border:1px solid rgba(78,220,255,.74)!important;
  border-radius:18px;
  margin:10px;
  background:linear-gradient(180deg,rgba(23,78,124,.56),rgba(6,26,49,.72));
  box-shadow:0 0 20px rgba(0,205,255,.22),inset 0 0 12px rgba(56,207,255,.14);
}
.profile-switcher-card{
  margin-top:14px;
  padding:12px;
  border-radius:18px;
  background:rgba(2,9,19,.42);
  border:1px solid rgba(116,223,255,.22);
}
.profile-switcher-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;color:var(--next-text);}
.profile-switcher-head button{appearance:none;border:0;background:transparent;color:var(--next-cyan);font-size:26px;line-height:1;}
.profile-switcher-list{display:flex;gap:8px;flex-wrap:wrap;}
.profile-switcher-btn{
  border:1px solid rgba(121,214,255,.24);
  border-radius:999px;
  background:rgba(12,26,45,.66);
  color:var(--next-text);
  padding:10px 14px;
  font-weight:850;
}
.profile-switcher-btn.active{border-color:rgba(102,231,255,.85);box-shadow:0 0 14px rgba(0,214,255,.18);}
.profile-program-card{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.5fr);
  gap:18px;
  align-items:center;
}
.profile-program-left h3,
.profile-program-compact h3{margin:0 0 8px;font-size:clamp(24px,5.5vw,34px);font-weight:900;letter-spacing:-.035em;}
.profile-program-left p,
.profile-program-compact p{margin:0;color:var(--next-muted);font-size:18px;}
.profile-program-top{display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--next-muted);font-weight:800;}
.profile-program-top strong{color:var(--next-cyan);font-size:26px;}
.profile-progress-track{height:12px;border-radius:999px;background:rgba(86,142,186,.18);overflow:hidden;margin:10px 0 12px;}
.profile-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#4bdfff,#7cc9ff);box-shadow:0 0 16px rgba(62,218,255,.45);}
.profile-helper{display:flex;align-items:center;gap:9px;color:rgba(218,231,246,.72);font-weight:750;}
.profile-program-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.profile-program-actions .profile-action{border:1px solid rgba(121,214,255,.2);border-radius:16px;background:rgba(8,18,32,.45);min-height:58px;}
.profile-summary-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;}
.profile-summary-head .profile-card-label{margin:0;}
.profile-summary-head button{
  appearance:none;
  border:0;
  background:transparent;
  color:#70e8ff;
  font-weight:900;
  font-size:16px;
}
.profile-goal-focus{display:grid;grid-template-columns:minmax(135px,.5fr) minmax(0,1.5fr);gap:16px;align-items:end;}
.profile-goal-focus span{display:block;color:rgba(218,231,246,.66);font-weight:700;margin-bottom:5px;}
.profile-goal-focus strong{display:block;color:var(--next-text);font-size:20px;}
.profile-list-rows{border:1px solid rgba(121,214,255,.14);border-radius:16px;overflow:hidden;background:rgba(6,15,29,.34);}
.profile-list-rows button{
  width:100%;
  min-height:56px;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:12px;
  border:0;
  border-bottom:1px solid rgba(121,214,255,.12);
  background:rgba(15,29,49,.5);
  color:var(--next-text);
  text-align:left;
  padding:10px 14px;
  font:850 16px/1.15 inherit;
}
.profile-list-rows button:last-child{border-bottom:0;}
.profile-list-rows b{color:rgba(233,245,255,.75);font-size:26px;font-weight:500;line-height:1;}
.profile-list-rows .danger svg{stroke:#ff6666;}
.profile-list-card p{margin:12px 2px 0;color:var(--next-muted);font-size:14px;line-height:1.35;}
.profile-toggle{width:52px;height:30px;border-radius:999px;background:#159aff;position:relative;justify-self:end;box-shadow:0 0 15px rgba(0,147,255,.28);}
.profile-toggle i{position:absolute;right:3px;top:3px;width:24px;height:24px;border-radius:50%;background:#f8fbff;}
.profile-edit-card{padding:16px;}
.profile-form-row{
  display:grid;
  grid-template-columns:150px minmax(0,1fr);
  gap:12px;
  align-items:center;
  border-top:1px solid rgba(121,214,255,.10);
  padding:12px 0;
}
.profile-form-row:first-of-type{border-top:0;padding-top:0;}
.profile-form-row label{display:flex;align-items:center;gap:10px;color:var(--next-text);font-weight:850;}
.profile-form-row input{
  width:100%;
  border:1px solid rgba(121,214,255,.10);
  border-radius:12px;
  background:rgba(6,14,27,.42);
  color:var(--next-text);
  min-height:46px;
  padding:0 14px;
  font:850 16px/1 inherit;
}
.profile-select-grid{display:grid;gap:10px;}
.profile-select-grid.age,.profile-select-grid.level{grid-template-columns:repeat(3,minmax(0,1fr));}
.profile-select-grid.sport{grid-template-columns:repeat(4,minmax(0,1fr));}
.profile-select-grid.goals{grid-template-columns:repeat(4,minmax(0,1fr));}
.profile-select-grid.focus,.profile-select-grid.equipment{grid-template-columns:repeat(4,minmax(0,1fr));}
.profile-select-grid.avatar{grid-template-columns:repeat(4,minmax(0,1fr));}
.profile-select-option,
.profile-avatar-choice{
  min-height:50px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  border:1px solid rgba(121,214,255,.16);
  border-radius:14px;
  background:rgba(7,17,30,.48);
  color:var(--next-text);
  padding:10px 12px;
  font:850 15px/1.1 inherit;
}
.profile-select-option.tile{min-height:92px;flex-direction:column;}
.profile-select-option.tile svg{width:28px;height:28px;}
.profile-select-option.selected,
.profile-avatar-choice.selected{
  border-color:rgba(75,224,255,.94);
  background:linear-gradient(180deg,rgba(19,83,129,.58),rgba(7,24,44,.68));
  box-shadow:0 0 18px rgba(0,211,255,.22),inset 0 0 16px rgba(47,210,255,.10);
}
.profile-avatar-choice{min-height:86px;flex-direction:column;}
.profile-avatar-choice span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(121,214,255,.22);}
.profile-avatar-choice small{font-weight:800;color:rgba(239,248,255,.84);}
.profile-edit-note{margin:12px 0 0;color:rgba(218,231,246,.66);font-size:13px;line-height:1.35;}
.profile-program-compact{display:flex;align-items:center;justify-content:space-between;gap:18px;}
.profile-program-compact>div{display:flex;align-items:center;gap:14px;}
.profile-program-compact>div>svg{width:34px;height:34px;}
.profile-program-compact .profile-action{border:1px solid rgba(121,214,255,.2);border-radius:16px;min-height:54px;padding:10px 18px;background:rgba(8,18,32,.45);}
.profile-save-row{display:grid;grid-template-columns:1fr 1.15fr;gap:16px;position:sticky;bottom:12px;z-index:3;}
.profile-save-row .profile-action{border:1px solid rgba(121,214,255,.22);border-radius:18px;background:rgba(6,15,29,.88);min-height:64px;backdrop-filter:blur(12px);}
.profile-save-row .profile-action.save{margin:0;border-color:rgba(75,224,255,.9)!important;}
.profile-save-row .profile-action.cancel{color:rgba(247,251,255,.9);}
@media (max-width:700px){
  .profile-next-shell{padding-left:0;padding-right:0;}
  .profile-next-page{gap:12px;}
  .profile-next-card{border-radius:22px;padding:16px;}
  .profile-active-grid{grid-template-columns:1fr auto;gap:10px;}
  .profile-active-main h2{font-size:48px;}
  .profile-avatar-wrap{width:98px;}
  .profile-avatar-edit{width:40px;height:40px;}
  .profile-action-grid.three{grid-template-columns:1fr;}
  .profile-action-grid{margin:14px -16px -16px;}
  .profile-action.primary{margin:10px 12px;border-radius:16px;}
  .profile-program-card{grid-template-columns:1fr;}
  .profile-program-actions{grid-template-columns:1fr 1fr;}
  .profile-goal-focus{grid-template-columns:1fr;gap:12px;}
  .profile-form-row{grid-template-columns:1fr;gap:9px;}
  .profile-select-grid.age,.profile-select-grid.level{grid-template-columns:repeat(3,minmax(0,1fr));}
  .profile-select-grid.sport,.profile-select-grid.goals,.profile-select-grid.focus,.profile-select-grid.equipment,.profile-select-grid.avatar{grid-template-columns:repeat(2,minmax(0,1fr));}
  .profile-program-compact{align-items:stretch;flex-direction:column;}
  .profile-save-row{grid-template-columns:1fr;bottom:8px;}
}
@media (max-width:430px){
  .profile-next-head h1{font-size:44px;}
  .profile-next-head p{font-size:16px;}
  .profile-active-grid{grid-template-columns:1fr;}
  .profile-avatar-wrap{position:absolute;right:16px;top:28px;width:86px;opacity:.9;}
  .profile-active-main{padding-right:92px;min-height:116px;}
  .profile-next-chip{min-height:34px;padding:7px 10px;font-size:14px;}
  .profile-program-actions{grid-template-columns:1fr;}
  .profile-select-grid.age,.profile-select-grid.level{grid-template-columns:1fr;}
  .profile-select-grid.sport,.profile-select-grid.goals,.profile-select-grid.focus,.profile-select-grid.equipment,.profile-select-grid.avatar{grid-template-columns:1fr 1fr;}
  .profile-select-option{font-size:14px;min-height:46px;}
}


/* =========================================================
   RC53 · Profile mobile polish after real iPhone QA
   - Profile background is a true layer, not a layout hero.
   - Content starts directly after topbar.
   - Active profile card/action area is tighter on mobile.
   - Summary chips use compact wrap rhythm.
   ========================================================= */
#profileScreen.profile-screen-next{
  position:relative !important;
  isolation:isolate !important;
  overflow:hidden auto !important;
  min-height:100svh !important;
}
#profileScreen.profile-screen-next > .profile-screen-bg{
  display:block !important;
  position:absolute !important;
  inset:0 auto auto 0 !important;
  z-index:0 !important;
  width:100% !important;
  height:min(46svh, 430px) !important;
  object-fit:cover !important;
  object-position:center top !important;
  opacity:.22 !important;
  filter:saturate(1.18) brightness(.85) contrast(1.12) !important;
  pointer-events:none !important;
  user-select:none !important;
  -webkit-user-drag:none !important;
  mask-image:linear-gradient(180deg,#000 0%,#000 48%,rgba(0,0,0,.40) 76%,transparent 100%) !important;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 48%,rgba(0,0,0,.40) 76%,transparent 100%) !important;
}
#profileScreen.profile-screen-next > .profile-next-shell{
  position:relative !important;
  z-index:1 !important;
  padding-top:clamp(8px,2vw,18px) !important;
}
#profileScreen.profile-screen-next .profile-next-head{
  padding-top:0 !important;
}
#profileScreen.profile-screen-next .profile-next-card{
  backdrop-filter:blur(8px) saturate(116%);
  -webkit-backdrop-filter:blur(8px) saturate(116%);
}
.profile-more-chip{
  color:#88f2ff !important;
  border-style:dashed !important;
  background:rgba(7,17,30,.34) !important;
}
@media(max-width:760px){
  body:not(.exercise-active) .app-topbar.rc27-topbar,
  body.topbar-portal:not(.exercise-active) .app-topbar.rc27-topbar,
  body.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc27-topbar{
    top:calc(env(safe-area-inset-top,0px) + 7px) !important;
    min-height:60px !important;
    padding:7px 10px !important;
    border-radius:22px !important;
  }
  body:not(.exercise-active) .app-topbar.rc27-topbar .rc26-brand-logo{
    width:164px !important;
    max-height:40px !important;
  }
  body:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
  body.topbar-portal:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
  body.topbar-hard-fixed:not(.exercise-active) .app-nav-toggle.rc27-nav-toggle,
  body:not(.exercise-active) .app-profile-toggle.rc27-profile-toggle{
    width:44px !important;
    height:44px !important;
    min-width:44px !important;
    min-height:44px !important;
  }
  body:not(.exercise-active) .wrap{
    padding-top:calc(70px + env(safe-area-inset-top,0px)) !important;
  }
  #profileScreen.profile-screen-next > .profile-screen-bg{
    height:230px !important;
    opacity:.16 !important;
    object-position:center top !important;
  }
  #profileScreen.profile-screen-next > .profile-next-shell{
    padding-top:4px !important;
    padding-bottom:44px !important;
  }
  #profileScreen.profile-screen-next .profile-next-page{
    gap:10px !important;
  }
  #profileScreen.profile-screen-next .profile-next-head{
    padding:0 4px 0 !important;
  }
  #profileScreen.profile-screen-next .profile-next-head h1{
    font-size:42px !important;
    line-height:.92 !important;
  }
  #profileScreen.profile-screen-next .profile-next-head p{
    margin-top:7px !important;
    font-size:16px !important;
  }
  #profileScreen.profile-screen-next .profile-next-card{
    padding:14px !important;
    border-radius:21px !important;
  }
  #profileScreen.profile-screen-next .profile-card-label{
    font-size:11px !important;
    letter-spacing:.22em !important;
    margin-bottom:10px !important;
  }
  #profileScreen.profile-screen-next .profile-active-main{
    min-height:104px !important;
    padding-right:78px !important;
  }
  #profileScreen.profile-screen-next .profile-active-main h2{
    font-size:44px !important;
    margin-bottom:9px !important;
  }
  #profileScreen.profile-screen-next .profile-active-main p{
    font-size:15px !important;
    line-height:1.32 !important;
    margin-top:10px !important;
    max-width:24ch !important;
  }
  #profileScreen.profile-screen-next .profile-avatar-wrap{
    top:20px !important;
    right:14px !important;
    width:72px !important;
  }
  #profileScreen.profile-screen-next .profile-avatar-edit{
    width:32px !important;
    height:32px !important;
  }
  #profileScreen.profile-screen-next .profile-avatar-edit svg{
    width:17px !important;
    height:17px !important;
  }
  #profileScreen.profile-screen-next .profile-next-chip{
    min-height:30px !important;
    padding:6px 9px !important;
    gap:6px !important;
    font-size:13px !important;
    line-height:1.05 !important;
  }
  #profileScreen.profile-screen-next .profile-next-chip svg{
    width:16px !important;
    height:16px !important;
  }
  #profileScreen.profile-screen-next .profile-action-grid.three{
    grid-template-columns:1fr 1fr !important;
    margin:12px -14px -14px !important;
  }
  #profileScreen.profile-screen-next .profile-action-grid.three .profile-action:first-child{
    grid-column:1/-1 !important;
  }
  #profileScreen.profile-screen-next .profile-action{
    min-height:46px !important;
    font-size:14px !important;
    gap:7px !important;
    padding:9px 8px !important;
  }
  #profileScreen.profile-screen-next .profile-action.primary{
    min-height:50px !important;
    margin:8px 10px !important;
    border-radius:15px !important;
  }
  #profileScreen.profile-screen-next .profile-program-card{
    gap:12px !important;
  }
  #profileScreen.profile-screen-next .profile-program-left h3,
  #profileScreen.profile-screen-next .profile-program-compact h3{
    font-size:28px !important;
    line-height:1.02 !important;
    margin-bottom:5px !important;
  }
  #profileScreen.profile-screen-next .profile-program-left p,
  #profileScreen.profile-screen-next .profile-program-compact p{
    font-size:16px !important;
  }
  #profileScreen.profile-screen-next .profile-program-top{
    font-size:15px !important;
  }
  #profileScreen.profile-screen-next .profile-program-top strong{
    font-size:30px !important;
  }
  #profileScreen.profile-screen-next .profile-progress-track{
    height:10px !important;
    margin:8px 0 10px !important;
  }
  #profileScreen.profile-screen-next .profile-helper{
    font-size:14px !important;
    gap:7px !important;
  }
  #profileScreen.profile-screen-next .profile-program-actions{
    grid-template-columns:1fr !important;
    gap:8px !important;
  }
  #profileScreen.profile-screen-next .profile-program-actions .profile-action{
    min-height:50px !important;
  }
  #profileScreen.profile-screen-next .profile-summary-head{
    margin-bottom:10px !important;
  }
  #profileScreen.profile-screen-next .profile-summary-head button{
    font-size:15px !important;
  }
  #profileScreen.profile-screen-next .profile-goal-focus{
    gap:8px !important;
  }
  #profileScreen.profile-screen-next .profile-goal-focus span{
    margin-bottom:4px !important;
    font-size:13px !important;
  }
  #profileScreen.profile-screen-next .profile-goal-focus strong{
    font-size:20px !important;
  }
  #profileScreen.profile-screen-next .profile-next-chips.compact,
  #profileScreen.profile-screen-next .profile-next-chips.wrap{
    gap:6px !important;
  }
  #profileScreen.profile-screen-next .profile-list-rows button{
    min-height:48px !important;
    font-size:15px !important;
    padding:9px 12px !important;
  }
  #profileScreen.profile-screen-next .profile-list-card p{
    font-size:13px !important;
    margin-top:10px !important;
  }
}
@media(max-width:430px){
  #profileScreen.profile-screen-next .profile-next-shell{
    padding-left:0 !important;
    padding-right:0 !important;
  }
  #profileScreen.profile-screen-next .profile-next-head h1{
    font-size:40px !important;
  }
  #profileScreen.profile-screen-next .profile-next-card{
    border-radius:20px !important;
  }
  #profileScreen.profile-screen-next .profile-program-top{
    align-items:flex-end !important;
  }
}


/* =========================================================
   RC54 · Profile focus/layout polish after real iPhone QA
   - Mål & fokus uses a deterministic compact grid, no random wrap.
   - Utrustning summary hugs its chips instead of floating in a tall card.
   - Program actions are lower and can sit side-by-side on phone.
   - Profile topbar no longer overlays profile content while scrolling.
   ========================================================= */
body.profile-active:not(.exercise-active) .app-topbar.rc25-topbar.rc26-topbar.rc27-topbar,
body.profile-active.topbar-portal:not(.exercise-active) .app-topbar.rc25-topbar.rc26-topbar.rc27-topbar,
body.profile-active.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc25-topbar.rc26-topbar.rc27-topbar{
  position:relative !important;
  top:auto !important;
  margin-top:calc(env(safe-area-inset-top,0px) + 8px) !important;
  margin-bottom:14px !important;
  z-index:20 !important;
}
body.profile-active:not(.exercise-active) .wrap{
  padding-top:0 !important;
  padding-bottom:calc(104px + env(safe-area-inset-bottom,0px)) !important;
}
#profileScreen.profile-screen-next .profile-focus-summary-grid{
  display:grid !important;
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:7px !important;
  width:100% !important;
}
#profileScreen.profile-screen-next .profile-focus-summary-grid .profile-next-chip{
  width:100% !important;
  min-width:0 !important;
  min-height:48px !important;
  padding:6px 4px !important;
  border-radius:16px !important;
  justify-content:center !important;
  flex-direction:column !important;
  gap:3px !important;
  text-align:center !important;
}
#profileScreen.profile-screen-next .profile-focus-summary-grid .profile-next-chip svg{
  width:16px !important;
  height:16px !important;
}
#profileScreen.profile-screen-next .profile-focus-summary-grid .profile-next-chip span{
  max-width:100% !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  font-size:11.5px !important;
  line-height:1 !important;
}
#profileScreen.profile-screen-next .profile-summary-card .profile-goal-focus{
  align-items:start !important;
}
#profileScreen.profile-screen-next .profile-equipment-summary{
  min-height:0 !important;
  padding-bottom:14px !important;
}
#profileScreen.profile-screen-next .profile-equipment-summary .profile-summary-head{
  margin-bottom:12px !important;
}
#profileScreen.profile-screen-next .profile-equipment-summary .profile-next-chips.wrap{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
  align-items:start !important;
  align-content:start !important;
  margin:0 !important;
}
#profileScreen.profile-screen-next .profile-equipment-summary .profile-next-chip{
  width:100% !important;
  justify-content:center !important;
  min-width:0 !important;
  white-space:nowrap !important;
}
#profileScreen.profile-screen-next .profile-equipment-summary .profile-next-chip span{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}
#profileScreen.profile-screen-next .profile-more-chip{
  justify-self:start !important;
  min-width:92px !important;
}
@media(max-width:760px){
  #profileScreen.profile-screen-next .profile-program-actions{
    grid-template-columns:1fr 1fr !important;
    gap:8px !important;
  }
  #profileScreen.profile-screen-next .profile-program-actions .profile-action{
    min-height:44px !important;
    font-size:13px !important;
    border-radius:14px !important;
    padding:8px 7px !important;
  }
  #profileScreen.profile-screen-next .profile-program-actions .profile-action svg{
    width:16px !important;
    height:16px !important;
  }
  #profileScreen.profile-screen-next .profile-program-card{
    gap:10px !important;
  }
}
@media(max-width:430px){
  #profileScreen.profile-screen-next .profile-goal-focus{
    grid-template-columns:1fr !important;
    gap:10px !important;
  }
  #profileScreen.profile-screen-next .profile-focus-summary-grid{
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
    gap:6px !important;
  }
  #profileScreen.profile-screen-next .profile-summary-card{
    padding-bottom:13px !important;
  }
  #profileScreen.profile-screen-next .profile-equipment-summary .profile-next-chips.wrap{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:7px !important;
  }
}
@media(max-width:365px){
  #profileScreen.profile-screen-next .profile-focus-summary-grid{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
}

/* RC54.1 · Keep focus chips readable on phone: controlled 2×2 instead of 3+1 or clipped text. */
@media(max-width:760px){
  #profileScreen.profile-screen-next .profile-focus-summary-grid{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
  #profileScreen.profile-screen-next .profile-focus-summary-grid .profile-next-chip{
    min-height:42px !important;
    flex-direction:row !important;
    gap:6px !important;
    justify-content:center !important;
    padding:7px 8px !important;
  }
  #profileScreen.profile-screen-next .profile-focus-summary-grid .profile-next-chip span{
    font-size:13px !important;
  }
}


/* =========================================================
   RC55 · Profile summary simplification
   - Use the same chip layout for Mål & fokus as for Utrustning.
   - Active program on profile overview is a pure status card.
   - Removes large action buttons from program summary.
   ========================================================= */
#profileScreen.profile-screen-next .profile-program-status-card{
  grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) !important;
  gap:14px !important;
  align-items:end !important;
}
#profileScreen.profile-screen-next .profile-program-status-card .profile-program-progress{
  min-width:0 !important;
}
#profileScreen.profile-screen-next .profile-program-status-meta{
  grid-column:1 / -1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding-top:2px;
  border-top:1px solid rgba(121,214,255,.10);
  color:rgba(218,231,246,.74);
  font-weight:780;
}
#profileScreen.profile-screen-next .profile-program-status-meta strong{
  color:var(--next-text);
  font-size:15px;
  font-weight:880;
}
#profileScreen.profile-screen-next .profile-focus-summary .profile-goal-focus{
  align-items:start !important;
}
#profileScreen.profile-screen-next .profile-focus-summary .profile-focus-chip-wrap{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
  align-items:start !important;
  align-content:start !important;
  margin:0 !important;
}
#profileScreen.profile-screen-next .profile-focus-summary .profile-next-chip{
  width:100% !important;
  justify-content:center !important;
  min-width:0 !important;
  white-space:nowrap !important;
}
#profileScreen.profile-screen-next .profile-focus-summary .profile-next-chip span{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}
@media(max-width:760px){
  #profileScreen.profile-screen-next .profile-program-status-card{
    grid-template-columns:1fr !important;
    gap:10px !important;
  }
  #profileScreen.profile-screen-next .profile-program-status-meta{
    font-size:14px !important;
  }
  #profileScreen.profile-screen-next .profile-focus-summary .profile-focus-chip-wrap{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:7px !important;
  }
}
@media(max-width:430px){
  #profileScreen.profile-screen-next .profile-program-status-meta{
    padding-top:0 !important;
    border-top:0 !important;
  }
  #profileScreen.profile-screen-next .profile-focus-summary .profile-goal-focus{
    gap:10px !important;
  }
}


/* =========================================================
   RC56 · Rebuild profile summary cards from scratch
   - Replaces Mål & fokus and Utrustning summary sections with clean rebuilt markup.
   - Removes dependency on previous summary-grid styles that left height/spacing artifacts.
   ========================================================= */
#profileScreen.profile-screen-next .profile-rebuild-summary{
  min-height:0 !important;
  padding:14px !important;
}
#profileScreen.profile-screen-next .profile-rebuild-summary .profile-summary-head{
  margin-bottom:10px !important;
}
#profileScreen.profile-screen-next .profile-rebuild-body{
  display:grid !important;
  gap:10px !important;
  min-height:0 !important;
  align-content:start !important;
}
#profileScreen.profile-screen-next .profile-rebuild-group{
  display:grid !important;
  gap:8px !important;
  min-height:0 !important;
  align-content:start !important;
}
#profileScreen.profile-screen-next .profile-rebuild-kicker{
  display:block !important;
  margin:0 !important;
  color:rgba(218,231,246,.68) !important;
  font-size:13px !important;
  font-weight:760 !important;
  line-height:1.15 !important;
}
#profileScreen.profile-screen-next .profile-rebuild-goal{
  display:block !important;
  margin:0 !important;
  color:var(--next-text) !important;
  font-size:20px !important;
  font-weight:930 !important;
  line-height:1.08 !important;
  letter-spacing:-.02em !important;
}
#profileScreen.profile-screen-next .profile-rebuild-chip-grid{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
  width:100% !important;
  margin:0 !important;
  align-content:start !important;
}
#profileScreen.profile-screen-next .profile-rebuild-chip-grid .profile-next-chip,
#profileScreen.profile-screen-next .profile-rebuild-chip-grid .profile-more-chip{
  width:100% !important;
  min-width:0 !important;
  min-height:38px !important;
  justify-content:flex-start !important;
  padding:8px 12px !important;
  margin:0 !important;
  white-space:nowrap !important;
}
#profileScreen.profile-screen-next .profile-rebuild-chip-grid .profile-next-chip span,
#profileScreen.profile-screen-next .profile-rebuild-chip-grid .profile-more-chip span{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}
#profileScreen.profile-screen-next .profile-rebuild-chip-grid .profile-more-chip{
  justify-content:center !important;
  color:#88f2ff !important;
}
@media(min-width:761px){
  #profileScreen.profile-screen-next .profile-rebuild-chip-grid{
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  }
  #profileScreen.profile-screen-next .profile-focus-rebuild .profile-rebuild-chip-grid{
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  }
}
@media(max-width:430px){
  #profileScreen.profile-screen-next .profile-rebuild-summary{
    padding:14px !important;
  }
  #profileScreen.profile-screen-next .profile-rebuild-summary .profile-summary-head{
    margin-bottom:9px !important;
  }
  #profileScreen.profile-screen-next .profile-rebuild-goal{
    font-size:18px !important;
  }
  #profileScreen.profile-screen-next .profile-rebuild-chip-grid{
    gap:7px !important;
  }
  #profileScreen.profile-screen-next .profile-rebuild-chip-grid .profile-next-chip,
  #profileScreen.profile-screen-next .profile-rebuild-chip-grid .profile-more-chip{
    min-height:36px !important;
    padding:7px 10px !important;
  }
}


/* =========================================================
   RC57 · Program library
   - Programs page is a library that chooses the program driving Calendar.
   - No phase/week progress or next-pass status here.
   ========================================================= */
.program-library-screen .dashboard-global-bg-img{opacity:.16 !important;filter:saturate(1.08) brightness(.82) contrast(1.1) !important;}
.program-library-shell{gap:18px !important;}
.program-library-head{position:relative;z-index:1;padding:8px 4px 0;color:var(--next-text,#f6fbff);}
.program-library-head h1{margin:0;font-size:clamp(48px,10vw,72px);line-height:.92;letter-spacing:-.055em;font-weight:950;}
.program-library-head p{margin:10px 0 0;max-width:720px;color:rgba(218,231,246,.76);font-size:clamp(16px,3.7vw,22px);line-height:1.32;font-weight:650;}
.program-library-catalog{display:block !important;}
.program57-library{display:grid;gap:18px;}
.program57-profile-strip{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border:1px solid rgba(104,222,255,.22);border-radius:22px;background:linear-gradient(180deg,rgba(12,28,48,.76),rgba(6,15,28,.70));box-shadow:inset 0 1px 0 rgba(255,255,255,.035);}
.program57-profile-strip strong{font-size:20px;font-weight:930;margin-right:auto;}
.program57-profile-icon{width:44px;height:44px;border-radius:16px;border:1px solid rgba(104,222,255,.28);display:grid;place-items:center;background:rgba(5,16,31,.55);}
.program57-profile-icon svg{width:23px;height:23px;stroke:var(--next-cyan,#69e9ff);fill:none;}
.program57-section-head{margin:0 0 10px;color:#7ef1ff;text-transform:uppercase;letter-spacing:.24em;font-size:13px;font-weight:950;}
.program57-featured-grid{display:grid;gap:12px;}
.program57-card,.program57-list-card{position:relative;overflow:hidden;border:1px solid rgba(104,222,255,.24);border-radius:24px;background:radial-gradient(650px 260px at 88% 18%,rgba(45,165,255,.20),transparent 56%),linear-gradient(180deg,rgba(9,23,42,.88),rgba(4,12,24,.92));box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 18px 42px rgba(0,0,0,.20);}
.program57-card.featured{min-height:270px;}
.program57-card.selected,.program57-list-card.selected{border-color:rgba(126,241,255,.66);box-shadow:0 0 34px rgba(0,210,255,.13),inset 0 0 0 1px rgba(111,231,255,.08);}
.program57-card-img{position:absolute;inset:0 0 0 auto;width:56%;height:100%;object-fit:cover;object-position:center;opacity:.42;mask-image:linear-gradient(90deg,transparent 0%,#000 30%,#000 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 30%,#000 100%);}
.program57-card-content{position:relative;z-index:1;display:grid;gap:10px;padding:20px;max-width:68%;}
.program57-card-top{min-height:28px;display:flex;align-items:center;gap:8px;justify-content:flex-end;position:absolute;right:18px;top:16px;left:auto;}
.program57-best,.program57-selected{display:inline-flex;align-items:center;min-height:28px;padding:5px 10px;border-radius:999px;border:1px solid rgba(113,231,255,.34);background:rgba(7,22,40,.58);color:#80efff;text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:950;}
.program57-selected{color:#fff;background:rgba(68,153,255,.22);}
.program57-card h2{margin:20px 0 0;font-size:clamp(28px,5vw,44px);line-height:1;letter-spacing:-.045em;font-weight:950;color:#fff;}
.program57-card .program57-target,.program57-list-main p{margin:0;color:#73ecff;font-weight:850;font-size:15px;}
.program57-desc{margin:0;max-width:33ch;color:rgba(232,242,255,.78);line-height:1.32;font-weight:650;}
.program57-meta,.program57-tags{display:flex;flex-wrap:wrap;gap:7px;}
.program57-chip{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:6px 10px;border-radius:999px;border:1px solid rgba(104,222,255,.22);background:rgba(8,20,36,.62);color:rgba(244,251,255,.94);font-weight:830;font-size:13px;line-height:1;white-space:nowrap;}
.program57-chip svg{width:15px;height:15px;stroke:var(--next-cyan,#69e9ff);fill:none;stroke-width:2;}
.program57-chip.tag{background:rgba(11,31,51,.54);}
.program57-chip.meta{color:rgba(232,242,255,.90);}
.program57-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;}
.program57-btn{appearance:none;border:1px solid rgba(109,222,255,.32);border-radius:16px;background:rgba(5,15,30,.64);min-height:48px;color:#f6fbff;font:900 15px/1 inherit;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 10px;}
.program57-btn.primary{border-color:rgba(89,216,255,.85);background:linear-gradient(180deg,#73c7ff,#48a9ff);color:#061226;box-shadow:0 0 22px rgba(61,182,255,.24);}
.program57-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;}
.program57-preview{grid-column:1/-1;}
.program57-preview-box{margin-top:8px;padding:12px;border-radius:18px;border:1px solid rgba(104,222,255,.17);background:rgba(2,9,18,.44);display:grid;gap:10px;color:rgba(232,242,255,.84);}
.program57-preview-box strong{color:#fff;font-weight:930;}.program57-preview-box p{margin:4px 0 0;color:rgba(218,231,246,.70);font-size:13px;}.program57-preview-box ul{margin:0;padding:0;list-style:none;display:grid;gap:6px}.program57-preview-box li{display:flex;gap:10px}.program57-preview-box li b{color:#7ef1ff}.program57-rhythm{display:flex;flex-wrap:wrap;gap:6px}.program57-rhythm span{display:inline-flex;padding:5px 8px;border-radius:999px;background:rgba(16,47,74,.55);border:1px solid rgba(104,222,255,.16);font-size:12px;font-weight:820;}
.program57-list-grid{display:grid;gap:8px;}
.program57-list-card{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;}
.program57-list-icon{width:48px;height:48px;border-radius:18px;border:1px solid rgba(104,222,255,.22);display:grid;place-items:center;background:rgba(4,14,28,.48);}.program57-list-icon svg{width:24px;height:24px;stroke:var(--next-cyan,#69e9ff);fill:none;}
.program57-list-main h3{margin:0 0 3px;font-size:20px;line-height:1;font-weight:940;color:#fff;letter-spacing:-.025em;}.program57-list-main .program57-meta.small,.program57-list-main .program57-tags.small{margin-top:6px}.program57-list-main .program57-chip{min-height:24px;font-size:11px;padding:5px 8px;}.program57-list-actions{display:grid;gap:7px;min-width:150px}.program57-list-actions .program57-btn{min-height:38px;border-radius:14px;font-size:13px;}
@media(max-width:760px){.program-library-shell{padding-top:14px !important;}.program57-library{gap:16px}.program57-profile-strip{gap:8px;padding:10px 12px;border-radius:20px}.program57-profile-strip strong{width:100%;margin:0;font-size:19px}.program57-profile-icon{display:none}.program57-card.featured{min-height:0}.program57-card-img{width:60%;opacity:.22}.program57-card-content{max-width:none;padding:17px}.program57-card h2{font-size:28px;margin-top:4px;max-width:11ch}.program57-card-top{position:static;justify-content:flex-start;min-height:0;order:-1}.program57-desc{max-width:25ch}.program57-chip{min-height:28px;padding:6px 9px;font-size:12px}.program57-actions{gap:8px}.program57-btn{min-height:44px;font-size:14px;border-radius:15px}.program57-list-card{grid-template-columns:44px minmax(0,1fr);padding:12px;gap:10px}.program57-list-icon{width:40px;height:40px;border-radius:14px}.program57-list-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;min-width:0}.program57-list-main h3{font-size:18px}.program57-list-main .program57-meta.small{display:none}.program57-list-main .program57-tags.small .program57-chip:nth-child(n+3){display:none}}
@media(max-width:390px){.program57-profile-strip .program57-chip{font-size:12px;padding:6px 8px}.program57-card-content{padding:15px}.program57-actions{grid-template-columns:1fr}.program57-card-img{opacity:.18}.program57-list-actions{grid-template-columns:1fr}.program57-card h2{font-size:26px}.program57-chip{font-size:11.5px}.program-library-head h1{font-size:46px !important}}

/* =========================================================
   RC58 · Program library becomes real program manager
   - Program topbar scrolls away like Profile.
   - Started/paused program states + resume/restart/switch prompts.
   - Preview is a template-calendar with days and exercises, no live status.
   ========================================================= */
body.program-active:not(.exercise-active) .app-topbar.rc25-topbar.rc26-topbar.rc27-topbar,
body.program-active.topbar-portal:not(.exercise-active) .app-topbar.rc25-topbar.rc26-topbar.rc27-topbar,
body.program-active.topbar-hard-fixed:not(.exercise-active) .app-topbar.rc25-topbar.rc26-topbar.rc27-topbar{
  position:relative !important;
  top:auto !important;
  margin-top:calc(env(safe-area-inset-top,0px) + 8px) !important;
  margin-bottom:14px !important;
  z-index:20 !important;
}
body.program-active:not(.exercise-active) .wrap{
  padding-top:0 !important;
  padding-bottom:calc(104px + env(safe-area-inset-bottom,0px)) !important;
}
#programScreen.program-screen .program57-card-top.inline{
  position:static !important;
  justify-content:flex-start !important;
  min-height:0 !important;
  margin-bottom:5px !important;
}
.program58-started,
.program58-done{
  display:inline-flex;
  align-items:center;
  min-height:28px;
  padding:5px 10px;
  border-radius:999px;
  border:1px solid rgba(113,231,255,.34);
  background:rgba(7,22,40,.58);
  color:#80efff;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:11px;
  font-weight:950;
}
.program58-done{color:#bfffd8;border-color:rgba(151,255,197,.35);background:rgba(17,72,48,.34);}
.program58-progress-mini{
  display:grid;
  gap:6px;
  margin:2px 0 2px;
  color:rgba(226,240,255,.75);
  font-size:12px;
  font-weight:820;
}
.program58-progress-mini i{
  display:block;
  height:7px;
  border-radius:999px;
  overflow:hidden;
  background:rgba(87,144,185,.18);
}
.program58-progress-mini b{
  display:block;
  height:100%;
  border-radius:inherit;
  background:linear-gradient(90deg,#4bdfff,#7cc9ff);
  box-shadow:0 0 12px rgba(62,218,255,.38);
}
.program58-switch-panel{
  margin-top:8px;
  padding:12px;
  border-radius:18px;
  border:1px solid rgba(126,241,255,.28);
  background:linear-gradient(180deg,rgba(9,27,47,.82),rgba(3,10,20,.78));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 0 24px rgba(0,209,255,.10);
  display:grid;
  gap:10px;
}
.program58-switch-panel strong{font-size:17px;color:#fff;font-weight:930;}
.program58-switch-panel p{margin:0;color:rgba(226,240,255,.76);line-height:1.35;font-weight:680;}
.program58-switch-panel>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
.program58-preview-box{gap:12px !important;}
.program58-rhythm span{font-size:11px !important;}
.program58-preview-days{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.program58-preview-day{
  border:1px solid rgba(104,222,255,.16);
  border-radius:15px;
  background:rgba(5,16,30,.52);
  padding:10px;
  display:grid;
  gap:8px;
}
.program58-preview-day>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.program58-preview-day b{color:#7ef1ff;text-transform:uppercase;letter-spacing:.12em;font-size:11px;}
.program58-preview-day strong{color:#fff;font-weight:900;}
.program58-preview-day ul{margin:0;padding:0;list-style:none;display:grid;gap:4px;}
.program58-preview-day li{color:rgba(226,240,255,.76);font-size:12px;line-height:1.2;}
.program58-preview-day li.muted{color:rgba(126,241,255,.72);font-weight:850;}
@media(max-width:760px){
  .program58-switch-panel>div{grid-template-columns:1fr;}
  .program58-preview-days{grid-template-columns:1fr;}
}

/* =========================================================
   RC60 · Program data and preview correction
   - Program cards now count real program units (stage + phase), not entire stage.
   - Resume/restart prompts are real modal sheets, not nested narrow cards.
   - Preview groups exercises by section/category like the pass overview.
   ========================================================= */
#programScreen.program-screen .program59-modal-backdrop{
  position:fixed !important;
  inset:0 !important;
  z-index:9999 !important;
  display:grid !important;
  place-items:center !important;
  padding:calc(env(safe-area-inset-top,0px) + 18px) 18px calc(env(safe-area-inset-bottom,0px) + 18px) !important;
  background:rgba(1,6,14,.58) !important;
  -webkit-backdrop-filter:blur(10px) saturate(120%) !important;
  backdrop-filter:blur(10px) saturate(120%) !important;
}
#programScreen.program-screen .program59-modal{
  width:min(100%,520px) !important;
  border-radius:24px !important;
  border:1px solid rgba(126,241,255,.36) !important;
  background:
    radial-gradient(520px 220px at 85% 0%,rgba(50,165,255,.18),transparent 60%),
    linear-gradient(180deg,rgba(10,25,45,.96),rgba(3,10,21,.96)) !important;
  box-shadow:0 28px 90px rgba(0,0,0,.54),0 0 38px rgba(0,209,255,.12),inset 0 1px 0 rgba(255,255,255,.05) !important;
  padding:20px !important;
  display:grid !important;
  gap:14px !important;
}
#programScreen.program-screen .program59-modal strong{
  color:#fff !important;
  font-size:clamp(24px,6vw,34px) !important;
  line-height:1.02 !important;
  letter-spacing:-.035em !important;
  font-weight:950 !important;
}
#programScreen.program-screen .program59-modal p{
  margin:0 !important;
  color:rgba(226,240,255,.78) !important;
  font-size:16px !important;
  line-height:1.38 !important;
  font-weight:700 !important;
  max-width:42ch !important;
}
#programScreen.program-screen .program59-modal-actions{
  display:grid !important;
  grid-template-columns:1fr 1fr 1.1fr !important;
  gap:9px !important;
}
#programScreen.program-screen .program59-modal-actions .program57-btn{
  min-height:46px !important;
}
#programScreen.program-screen .program58-preview-days.grouped{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:10px !important;
}
#programScreen.program-screen .program59-preview-day{
  border:1px solid rgba(104,222,255,.17) !important;
  border-radius:17px !important;
  background:rgba(4,14,28,.54) !important;
  padding:12px !important;
  display:grid !important;
  gap:10px !important;
}
#programScreen.program-screen .program59-preview-day-head{
  display:flex !important;
  align-items:baseline !important;
  gap:8px !important;
  flex-wrap:wrap !important;
}
#programScreen.program-screen .program59-preview-day-head b{
  color:#7ef1ff !important;
  text-transform:uppercase !important;
  letter-spacing:.13em !important;
  font-size:11px !important;
}
#programScreen.program-screen .program59-preview-day-head strong{
  color:#fff !important;
  font-weight:940 !important;
  font-size:18px !important;
  line-height:1.05 !important;
}
#programScreen.program-screen .program59-preview-block{
  border:1px solid rgba(104,222,255,.12) !important;
  border-radius:14px !important;
  background:rgba(5,16,30,.44) !important;
  overflow:hidden !important;
}
#programScreen.program-screen .program59-preview-block-head{
  min-height:32px !important;
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  align-items:center !important;
  gap:8px !important;
  padding:7px 10px !important;
  border-bottom:1px solid rgba(104,222,255,.10) !important;
  background:linear-gradient(90deg,rgba(3,80,115,.34),rgba(5,20,36,.18)) !important;
}
#programScreen.program-screen .program59-preview-block-head strong{
  color:#8cf2ff !important;
  text-transform:uppercase !important;
  letter-spacing:.16em !important;
  font-size:10px !important;
  font-weight:950 !important;
}
#programScreen.program-screen .program59-preview-block-head span{
  justify-self:end !important;
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  color:rgba(226,240,255,.64) !important;
  font-size:11px !important;
  font-weight:720 !important;
}
#programScreen.program-screen .program59-preview-block ul{
  margin:0 !important;
  padding:0 !important;
  list-style:none !important;
  display:grid !important;
}
#programScreen.program-screen .program59-preview-block li{
  min-height:30px !important;
  display:grid !important;
  grid-template-columns:38px minmax(0,1fr) auto !important;
  gap:8px !important;
  align-items:center !important;
  padding:6px 9px !important;
  border-top:1px solid rgba(104,222,255,.08) !important;
  color:rgba(226,240,255,.78) !important;
  font-size:12px !important;
}
#programScreen.program-screen .program59-preview-block li:first-child{border-top:0 !important;}
#programScreen.program-screen .program59-preview-block li b{
  width:28px !important;
  min-height:22px !important;
  display:grid !important;
  place-items:center !important;
  border-radius:8px !important;
  border:1px solid rgba(104,222,255,.18) !important;
  color:#8cf2ff !important;
  font-size:10px !important;
  letter-spacing:.08em !important;
}
#programScreen.program-screen .program59-preview-block li span{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  font-weight:800 !important;
}
#programScreen.program-screen .program59-preview-block li em{
  font-style:normal !important;
  color:rgba(226,240,255,.56) !important;
  font-size:11px !important;
  white-space:nowrap !important;
}
#programScreen.program-screen .program59-preview-block li.muted{
  grid-template-columns:1fr !important;
  color:#8cf2ff !important;
  font-weight:850 !important;
}
@media(max-width:760px){
  #programScreen.program-screen .program59-modal-actions{
    grid-template-columns:1fr !important;
  }
  #programScreen.program-screen .program59-modal{
    padding:18px !important;
  }
  #programScreen.program-screen .program59-preview-block li{
    grid-template-columns:34px minmax(0,1fr) !important;
  }
  #programScreen.program-screen .program59-preview-block li em{
    grid-column:2 !important;
    justify-self:start !important;
  }
}


/* RC60 · Program library is model-driven, not example-program driven. */
#programScreen.program-screen .program60-count{
  color:rgba(218,231,246,.58);
  letter-spacing:.04em;
  text-transform:none;
  font-size:.78em;
  margin-left:8px;
}
#programScreen.program-screen .program60-library .program57-section-head{
  display:flex;
  align-items:baseline;
  gap:6px;
  flex-wrap:wrap;
}
@media(max-width:760px){
  #programScreen.program-screen .program60-count{display:block;width:100%;margin-left:0;margin-top:3px;}
}

#programScreen.program-screen .program60-list-stats{
  margin:3px 0 0 !important;
  color:rgba(226,240,255,.74) !important;
  font-size:13px !important;
  font-weight:780 !important;
}
@media(max-width:760px){
  #programScreen.program-screen .program60-library .program57-card h2{max-width:none !important;}
  #programScreen.program-screen .program60-library .program57-list-main .program57-meta.small{display:none !important;}
}


/* =========================================================
   RC61 · Program preview as full program content, not calendar
   - Correct week count uses phase+week.
   - Preview lists all unique exercises, grouped by category.
   - No doses/prescriptions in program preview.
   - Equipment is shown at program level and per exercise when required.
   ========================================================= */
#programScreen.program-screen .program61-preview-box{
  gap:14px !important;
  padding:14px !important;
}
#programScreen.program-screen .program61-preview-head{
  display:flex !important;
  align-items:flex-start !important;
  justify-content:space-between !important;
  gap:12px !important;
}
#programScreen.program-screen .program61-preview-head strong{
  font-size:18px !important;
  line-height:1.05 !important;
}
#programScreen.program-screen .program61-preview-head span{
  display:inline-flex !important;
  align-items:center !important;
  min-height:28px !important;
  padding:5px 9px !important;
  border-radius:999px !important;
  border:1px solid rgba(126,241,255,.26) !important;
  color:#7ef1ff !important;
  background:rgba(8,24,42,.62) !important;
  text-transform:uppercase !important;
  letter-spacing:.12em !important;
  font-size:10px !important;
  font-weight:950 !important;
  white-space:nowrap !important;
}
#programScreen.program-screen .program61-preview-note{
  border:1px solid rgba(126,241,255,.12) !important;
  border-radius:14px !important;
  padding:10px 12px !important;
  color:rgba(226,240,255,.76) !important;
  background:rgba(6,17,31,.42) !important;
  font-size:13px !important;
  line-height:1.35 !important;
  font-weight:680 !important;
}
#programScreen.program-screen .program61-preview-summary{
  display:grid !important;
  grid-template-columns:1fr 1.2fr !important;
  gap:12px !important;
}
#programScreen.program-screen .program61-preview-summary b,
#programScreen.program-screen .program61-list-title{
  display:block !important;
  margin:0 0 8px !important;
  color:#7ef1ff !important;
  text-transform:uppercase !important;
  letter-spacing:.18em !important;
  font-size:11px !important;
  font-weight:950 !important;
}
#programScreen.program-screen .program61-equipment-list,
#programScreen.program-screen .program61-ex-equipment{
  display:flex !important;
  flex-wrap:wrap !important;
  gap:6px !important;
}
#programScreen.program-screen .program61-equipment-chip,
#programScreen.program-screen .program61-muted-chip{
  display:inline-flex !important;
  align-items:center !important;
  gap:6px !important;
  min-height:28px !important;
  padding:6px 9px !important;
  border-radius:999px !important;
  border:1px solid rgba(104,222,255,.20) !important;
  background:rgba(7,20,36,.58) !important;
  color:rgba(244,251,255,.92) !important;
  font-size:12px !important;
  font-weight:820 !important;
  line-height:1 !important;
}
#programScreen.program-screen .program61-equipment-chip svg{
  width:14px !important;
  height:14px !important;
  stroke:var(--next-cyan,#69e9ff) !important;
  fill:none !important;
  stroke-width:2 !important;
}
#programScreen.program-screen .program61-exercise-list{
  display:grid !important;
  gap:10px !important;
}
#programScreen.program-screen .program61-ex-group{
  border:1px solid rgba(104,222,255,.15) !important;
  border-radius:16px !important;
  overflow:hidden !important;
  background:rgba(3,12,24,.34) !important;
}
#programScreen.program-screen .program61-ex-head{
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:10px !important;
  padding:9px 11px !important;
  background:linear-gradient(90deg,rgba(4,80,116,.34),rgba(4,28,53,.18)) !important;
  border-bottom:1px solid rgba(104,222,255,.12) !important;
}
#programScreen.program-screen .program61-ex-head strong{
  color:#7ef1ff !important;
  text-transform:uppercase !important;
  letter-spacing:.16em !important;
  font-size:11px !important;
  font-weight:950 !important;
}
#programScreen.program-screen .program61-ex-head span{
  min-width:0 !important;
  color:#fff !important;
  font-weight:900 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}
#programScreen.program-screen .program61-ex-head em{
  color:rgba(226,240,255,.58) !important;
  font-style:normal !important;
  font-size:11px !important;
  font-weight:760 !important;
  white-space:nowrap !important;
}
#programScreen.program-screen .program61-ex-group ul{
  list-style:none !important;
  padding:0 !important;
  margin:0 !important;
  display:grid !important;
}
#programScreen.program-screen .program61-ex-group li{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) auto !important;
  gap:10px !important;
  align-items:center !important;
  padding:9px 11px !important;
  border-top:1px solid rgba(104,222,255,.09) !important;
}
#programScreen.program-screen .program61-ex-group li:first-child{border-top:0 !important;}
#programScreen.program-screen .program61-ex-group li>span{
  min-width:0 !important;
  color:rgba(248,252,255,.94) !important;
  font-weight:820 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
#programScreen.program-screen .program61-ex-equipment .program61-equipment-chip{
  min-height:24px !important;
  padding:5px 7px !important;
  font-size:10.5px !important;
  background:rgba(9,29,49,.62) !important;
}
#programScreen.program-screen .program61-ex-equipment .program61-equipment-chip svg{width:12px !important;height:12px !important;}
@media(max-width:760px){
  #programScreen.program-screen .program61-preview-summary{grid-template-columns:1fr !important;}
  #programScreen.program-screen .program61-ex-head{grid-template-columns:1fr auto !important;}
  #programScreen.program-screen .program61-ex-head strong{grid-column:1/-1;}
  #programScreen.program-screen .program61-ex-group li{grid-template-columns:1fr !important;align-items:start !important;gap:6px !important;}
  #programScreen.program-screen .program61-preview-head{display:grid !important;}
  #programScreen.program-screen .program61-preview-head span{justify-self:start !important;}
}
