
/* {{BRAND_SHORT}} Global Polish — stable width, dark-athletic palette, compact nav, readable player UI */
:root{
  --bpf-bg:#060607;--bpf-surface:#111114;--bpf-surface-2:#171218;--bpf-panel:#1a0b10;
  --bpf-panel-soft:#201419;--bpf-red:#e11d48;--bpf-red-2:#b5122e;--bpf-red-soft:rgba(225,29,72,.18);
  --bpf-line:rgba(255,255,255,.14);--bpf-red-line:rgba(225,29,72,.42);
  --bpf-text:#fff7f5;--bpf-muted:#c9bbbd;--bpf-success:#C9FF00;
}
html{overflow-x:hidden!important;background:var(--bpf-bg)!important;}
body{overflow-x:hidden!important;background:radial-gradient(circle at 82% 0%,rgba(130,0,28,.28),transparent 34%),linear-gradient(135deg,#050506 0%,#080609 55%,#030304 100%)!important;color:var(--bpf-text)!important;}
.page,.app-shell,.app,.shell,.wrap,.container,.main,.content,.coach-shell,.library-shell,.planner-shell,.tool-shell,main{max-width:1120px!important;margin-left:auto!important;margin-right:auto!important;box-sizing:border-box!important;}
.page,.app-shell,.app,.shell,.wrap,.container,.main,.content,.coach-shell,.library-shell,.planner-shell,.tool-shell,main{padding-left:clamp(18px,3vw,32px)!important;padding-right:clamp(18px,3vw,32px)!important;}
section,.card,.panel,.hero,.box,.tool-card,.calc-card,.program-card,.exercise-card,.workout-card{box-sizing:border-box;max-width:100%;}
img,video,iframe{max-width:100%;}
.bpf-global-bottom-nav{width:min(600px,calc(100vw - 22px))!important;height:48px!important;bottom:calc(8px + env(safe-area-inset-bottom,0px))!important;border-radius:18px!important;padding:3px 6px!important;background:rgba(5,5,7,.97)!important;border:1px solid rgba(255,255,255,.16)!important;}
.bpf-global-bottom-nav a{font-size:6.5px!important;letter-spacing:.02em!important;gap:1px!important;}
.bpf-global-bottom-nav .ico{font-size:15px!important;line-height:15px!important;}
body{padding-bottom:calc(70px + env(safe-area-inset-bottom,0px))!important;}
/* palette cleanup: reduce lime noise and make calculator/tool pages feel like the same app */
.calculators-page,.calculator-page,.calc-page{background:transparent!important;}
.calculators-page .card,.calculator-page .card,.calc-card,.calc-panel,.tool-card{background:linear-gradient(145deg,rgba(32,15,20,.94),rgba(14,14,17,.96))!important;border-color:var(--bpf-red-line)!important;box-shadow:0 18px 52px rgba(0,0,0,.28)!important;}
.calculators-page .tag,.calculator-page .tag,.calc-card .tag,.calc-card a,.calc-card button:not(.btn),.tool-card .tag{background:rgba(225,29,72,.13)!important;border-color:rgba(225,29,72,.42)!important;color:#fff7f5!important;}
/* Workout player width + hierarchy */
body.bpf-workout-player .page{max-width:1040px!important;padding-left:clamp(18px,3vw,30px)!important;padding-right:clamp(18px,3vw,30px)!important;padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))!important;}
body.bpf-workout-player h1{font-size:clamp(44px,6vw,72px)!important;line-height:.92!important;letter-spacing:-1.6px!important;}
body.bpf-workout-player .brand{font-size:clamp(34px,5vw,46px)!important;}
body.bpf-workout-player .hero,body.bpf-workout-player .panel{padding:clamp(18px,2.8vw,28px)!important;}
body.bpf-workout-player .exercise-row{grid-template-columns:46px 108px minmax(0,1fr) 64px!important;gap:14px!important;overflow:hidden!important;}
body.bpf-workout-player .exercise-row h3{font-size:clamp(24px,3vw,32px)!important;line-height:1!important;letter-spacing:-.3px!important;}
body.bpf-workout-player .thumb{width:108px!important;height:86px!important;}
body.bpf-workout-player .cue{max-width:100%!important;overflow-wrap:anywhere!important;line-height:1.25!important;background:rgba(96,82,8,.32)!important;color:#fffbe8!important;border-color:rgba(201,255,0,.45)!important;}
body.bpf-workout-player .tag{justify-self:end;min-width:54px;text-align:center;}
body.bpf-workout-player .meta span{font-size:18px!important;border-radius:12px!important;}
body.bpf-workout-player #repInfo{background:rgba(225,29,72,.22)!important;border-color:rgba(225,29,72,.55)!important;color:#fff!important;box-shadow:0 0 0 1px rgba(225,29,72,.18) inset;}
body.bpf-workout-player .timer{font-size:clamp(52px,8vw,90px)!important;color:var(--bpf-success)!important;}
body.bpf-workout-player .big-name{font-size:clamp(40px,5.6vw,62px)!important;letter-spacing:-.8px!important;color:#fff7f5!important;text-shadow:none!important;background:none!important;-webkit-text-fill-color:currentColor!important;}
body.bpf-workout-player .big-img{height:min(46vh,450px)!important;}
body.bpf-workout-player .control-row{gap:10px!important;}
body.bpf-workout-player .btn{min-height:50px!important;font-size:14px!important;border-radius:14px!important;}
@media(max-width:860px){body.bpf-workout-player .player-layout{grid-template-columns:1fr!important}body.bpf-workout-player .exercise-row{grid-template-columns:34px 84px minmax(0,1fr)!important}body.bpf-workout-player .exercise-row .tag{grid-column:3;justify-self:start}body.bpf-workout-player .thumb{width:84px!important;height:70px!important}.bpf-global-bottom-nav{width:calc(100vw - 12px)!important}}

/* {{BRAND_SHORT}} APP HARDENING — 2026-06-09 controlled-lime pass
   Purpose: keep red as the CTA color, lime as status/active accent, remove browser-default buttons,
   and protect mobile pages from bottom-tray overlap without changing page logic. */
:root{
  --bpf-red:#e11d48!important;
  --bpf-red-2:#b5122e!important;
  --bpf-lime:#C9FF00!important;
  --bpf-text:#fff7f5!important;
  --bpf-muted:#c9bbbd!important;
}
body{padding-bottom:calc(92px + env(safe-area-inset-bottom,0px))!important;}
main,.page,.app-shell,.shell,.wrap,.container,.content{scroll-margin-bottom:110px!important;}

/* Normalize unstyled/default buttons while preserving existing secondary/ghost semantics. */
button:not(.bnav-item):not(.tab):not(.nav-pill),
input[type="button"],input[type="submit"],
a.btn,.btn,.button,.act-btn,.empty-cta,.notify-btn{
  -webkit-appearance:none;appearance:none;
  border-radius:14px;
  border:1px solid rgba(225,29,72,.45);
  background:linear-gradient(180deg,#e11d48,#a80f2b);
  color:#fff!important;
  font-weight:900;
  text-decoration:none;
  box-shadow:0 10px 28px rgba(225,29,72,.18);
}
button.secondary,.btn.secondary,a.secondary,.btn.ghost,button.ghost,.prog-act:not(.hot),.btn-o{
  background:rgba(255,255,255,.075)!important;
  border-color:rgba(255,255,255,.18)!important;
  color:#fff7f5!important;
  box-shadow:none!important;
}
button:disabled,.btn:disabled{opacity:.68;filter:saturate(.82);cursor:not-allowed;}

/* No blue/orange UI drift: nutrition/macro colors stay inside the {{BRAND_SHORT}} palette. */
.macro-stat-val.c-carb,.pbadge.bl{color:#fff7f5!important;border-color:rgba(255,255,255,.24)!important;background:rgba(255,255,255,.08)!important;}
.macro-stat-val.c-fat,.macro-stat-val.c-cal{color:#e11d48!important;}
.macro-stat-val.c-pro,.metric-change.up{color:#C9FF00!important;}
.badge-orange,.tag.orange,.btn-sm.orange,.btn-full.orange{background:#e11d48!important;color:#fff!important;border-color:#e11d48!important;}

/* Active nav is a controlled performance accent, not another red CTA. */
.bpf-global-bottom-nav a.active{
  background:linear-gradient(180deg,rgba(201,255,0,.18),rgba(201,255,0,.075))!important;
  color:#C9FF00!important;
  border:1px solid rgba(201,255,0,.20)!important;
}
.bpf-global-bottom-nav a.active .ico{filter:drop-shadow(0 0 8px rgba(201,255,0,.38))!important;}
.bpf-global-bottom-nav a{touch-action:manipulation;}

/* Mobile safety: forms/cards should not spill beyond the app frame. */
input,select,textarea{max-width:100%;border-radius:12px;}
.card,.panel,.hero,.tool-card,.calc-card,.program-card,.exercise-card,.workout-card{overflow-wrap:anywhere;}
@media(max-width:560px){
  body{padding-bottom:calc(104px + env(safe-area-inset-bottom,0px))!important;}
  .page,.app-shell,.shell,.wrap,.container,main{padding-left:16px!important;padding-right:16px!important;}
}

/* {{BRAND_SHORT}} CONTROLLED VISUAL SWEEP — 2026-06-09
   Scope: consistency pass only. Keeps red as CTA, lime as active/status accent, and prevents wide/overlapped pages. */
:root{--bpf-app-max:1040px;--bpf-calc-max:940px;--bpf-nav-clear:112px;}
.page,.app-shell,.shell,.wrap,.container,.main,.content,.coach-shell,.library-shell,.planner-shell,.tool-shell,main{
  max-width:var(--bpf-app-max)!important;
}
body.calculators-page .app,body.calculator-page .app,.calc-page .app,.bpf-calc-index-compact{
  max-width:var(--bpf-calc-max)!important;
  margin-left:auto!important;margin-right:auto!important;
}
body{padding-bottom:calc(var(--bpf-nav-clear) + env(safe-area-inset-bottom,0px))!important;}
main,.page,.app,.wrap,.shell,.container{padding-bottom:max(42px,calc(var(--bpf-nav-clear) - 16px))!important;}
section:last-of-type,.card:last-child,.panel:last-child{margin-bottom:18px;}

/* Responsive grids stay clean and do not feel like a wall of cards. */
.grid,.navgrid,.calc-category-grid,.program-grid,.tool-grid,.snack-grid,.cards-grid{
  max-width:100%!important;
}
@media(min-width:901px){
  .navgrid,.calc-category-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  .snack-grid,.program-grid,.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
}
@media(max-width:900px){
  .grid,.navgrid,.calc-category-grid,.program-grid,.tool-grid,.snack-grid,.cards-grid{grid-template-columns:1fr!important;}
}

/* Button consistency: CTAs red, utility buttons dark-outline, lime reserved for status/small badges. */
.btn.primary,.primary:not(.bpf-global-bottom-nav a),button.primary,.bpf-ai-primary,.bpf-load-day-btn,.load-free-player-btn,.preview-workout-btn,.free-workout-btn{
  background:linear-gradient(180deg,#e11d48,#a80f2b)!important;
  border-color:rgba(225,29,72,.65)!important;
  color:#fff!important;
  box-shadow:0 14px 30px rgba(225,29,72,.20)!important;
}
button.lime,.btn.lime,.lime:not(.badge):not(.eyebrow):not(.bpf-global-bottom-nav a),#add30,#toggleSwaps,#testAudio{
  background:rgba(255,255,255,.075)!important;
  border:1px solid rgba(255,255,255,.18)!important;
  color:#fff7f5!important;
  box-shadow:none!important;
}
.badge,.eyebrow,.small,.prog-day-num,.status,.day{color:#C9FF00!important;}

/* Remove remaining blue/orange visual drift, including old free badges that may appear on cached/home sections. */
.bpf-free-badge,.free-footer-nav .free-badge{
  background:linear-gradient(180deg,#e11d48,#a80f2b)!important;
  color:#fff!important;
  border-color:rgba(225,29,72,.65)!important;
  text-shadow:none!important;
}
.notify-icon,.back-site-btn::before{color:#C9FF00!important;}
.notify-btn{background:#e11d48!important;border-color:#e11d48!important;color:#fff!important;}
.checkin-done,.post-lead-check,.testi2-tag.win,.ba-label.after,.trend-down,.metric-change.up{
  color:#C9FF00!important;border-color:rgba(201,255,0,.30)!important;background:rgba(201,255,0,.08)!important;
}

/* Player and image cards: clearer tap target and no trapped content behind the tray. */
.big-img,#exerciseImg,.exercise-visual img,.technique-graphic,img[data-enlarge="true"]{cursor:zoom-in;}
body.bpf-workout-player .current-panel,body.bpf-workout-player .next-card,.exercise-visual,.stage,.hero,.panel,.card{
  min-width:0!important;
}
body.bpf-workout-player .player-layout{max-width:100%!important;}
body.bpf-workout-player aside{min-width:0!important;}

/* Forms and calculators: readable controls, no browser-default blocks. */
input,select,textarea{background:rgba(0,0,0,.42)!important;color:#fff7f5!important;border:1px solid rgba(255,255,255,.16)!important;}
select option{background:#111114;color:#fff7f5;}
.calc-category,.calc-links a,.navcard,.workout-card,.tool-card,.program-card{
  transition:transform .16s ease,border-color .16s ease,background .16s ease;
}
.calc-links a:hover,.navcard:hover,.workout-card:hover,.tool-card:hover,.program-card:hover{
  border-color:rgba(225,29,72,.65)!important;
  transform:translateY(-1px);
}

@media(max-width:560px){
  :root{--bpf-nav-clear:122px;}
  h1{overflow-wrap:anywhere;}
  .hero,.panel,.card{border-radius:20px!important;}
  .top,.topbar{gap:10px!important;}
}


/* {{BRAND_SHORT}} Recovery page bottom-space correction — targeted only
   The global nav-clearance rules are useful on most pages, but Recovery Lab has
   a long in-page card stack and was inheriting too much empty clearance above
   the fixed tray. Keep a small safe gap, not a giant black dead-zone. */
#page-recovery.page,
#page-recovery.page.active{
  padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))!important;
  margin-bottom:0!important;
  min-height:auto!important;
}
#page-recovery .bpf-today-actions:last-of-type,
#page-recovery .recovery-finish{
  margin-bottom:0!important;
}
body:has(#page-recovery.active){
  padding-bottom:calc(70px + env(safe-area-inset-bottom,0px))!important;
}
@supports not selector(body:has(*)){
  #page-recovery{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))!important;}
}

/* {{BRAND_SHORT}} compact mobile centering + bottom tray clearance tune
   Layout-only: reduces wasted black space above fixed nav and prevents mobile horizontal drift. */
html,body{
  width:100%!important;
  max-width:100%!important;
  overflow-x:hidden!important;
}
body{
  padding-bottom:calc(58px + env(safe-area-inset-bottom,0px))!important;
}
.shell,.app-shell,.wrap,.container,.content,.main,main{
  box-sizing:border-box!important;
  max-width:min(980px,calc(100vw - 20px))!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
.shell{
  width:min(760px,100vw)!important;
  padding-bottom:0!important;
}
.main,.shell .main{
  padding-bottom:calc(62px + env(safe-area-inset-bottom,0px))!important;
  scroll-padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))!important;
}
.page,.page.active{
  box-sizing:border-box!important;
  width:100%!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))!important;
  min-height:auto!important;
  overflow-x:hidden!important;
}
.bpf-global-bottom-nav,.bot-nav,.bottom-nav{
  left:50%!important;
  transform:translateX(-50%)!important;
  bottom:calc(6px + env(safe-area-inset-bottom,0px))!important;
  width:min(560px,calc(100vw - 18px))!important;
  max-width:calc(100vw - 18px)!important;
}
@media(max-width:760px){
  body{padding-bottom:calc(54px + env(safe-area-inset-bottom,0px))!important;}
  .shell,.app-shell,.wrap,.container,.content,.main,main{
    width:calc(100vw - 14px)!important;
    max-width:calc(100vw - 14px)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    padding-left:0!important;
    padding-right:0!important;
    overflow-x:hidden!important;
  }
  .main,.shell .main{
    padding-bottom:calc(58px + env(safe-area-inset-bottom,0px))!important;
    scroll-padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))!important;
  }
  .page,.page.active{
    padding-left:10px!important;
    padding-right:10px!important;
    padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))!important;
  }
  .bpf-today-action-grid,.bpf-direct-flow,.recovery-grid,.mindset-grid,.recovery-routine-grid,.breath-selector,.bpf-auto-progress,.bpf-recovery-sequence{
    grid-template-columns:1fr!important;
  }
  .bpf-today-action{
    min-width:0!important;
    width:100%!important;
  }
  .topics-row,.chips,.filter-row,.free-filter-row{
    max-width:100%!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
  }
  .bpf-global-bottom-nav,.bot-nav,.bottom-nav{
    width:calc(100vw - 18px)!important;
    max-width:calc(100vw - 18px)!important;
    bottom:calc(6px + env(safe-area-inset-bottom,0px))!important;
  }
}
@media(max-height:680px){
  .main,.shell .main{padding-bottom:calc(54px + env(safe-area-inset-bottom,0px))!important;scroll-padding-bottom:calc(68px + env(safe-area-inset-bottom,0px))!important;}
  .page,.page.active{padding-bottom:12px!important;}
}
