/* ============================================================
   vr15: Source of Truth repairs (AUXE-005 and on). Layout only;
   colours follow the colour lock (#8792A2 accent, neutral rest).
   ============================================================ *//* AUXE-005 Coach: the dock (prompts + Ask) never sits on top of Right now.
   coachFit() adds .cfit-c when it would: the action tiles become one row you
   slide. If even that does not fit, .cfit-f puts the dock back in the page. */


body.pm-premium #ask.cfit-c #coachChips:not(.hide){display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden!important;
  gap:8px!important;margin:0 0 4px!important;padding:0 0 2px!important;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}
body.pm-premium #ask.cfit-c #coachChips:not(.hide)::-webkit-scrollbar{display:none}
body.pm-premium #ask.cfit-c #coachChips .chipbtn.ca{flex:0 0 auto!important;width:104px!important;min-height:72px!important;padding:7px 6px!important;scroll-snap-align:start;justify-content:flex-end}
body.pm-premium #ask.cfit-c #coachChips .chipbtn.ca .ca-ob{width:32px;height:32px}
body.pm-premium #ask.cfit-c #coachChips .chipbtn.ca .ca-ob .fi{width:30px;height:30px}
body.pm-premium #ask.cfit-c #coachChips .chipbtn.ca b{font-size:var(--ui-meta,14px)!important}
body.pm-premium #ask.cfit-c #coachChips .chipbtn.ca.lead{width:262px!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;text-align:left!important;gap:10px}
body.pm-premium #ask.cfit-c #coachChips .chipbtn.ca.lead span{display:none!important}
body.pm-premium #ask.cfit-c #coachChips .chipbtn.ca.lead b{font-size:var(--ui-meta,14px)!important;line-height:1.25}
body.pm-premium #ask.cfit-c .chatdock{padding-top:8px!important}
body.pm-premium #ask.cfit-f .chatdock{position:relative!important;bottom:auto!important}/* step 2: the tiles sit in the page just above the pinned Ask */

body.pm-premium #ask.cfit-n>#coachChips:not(.hide){margin:6px 0 6px!important}/* AUXE-024 the wordmark is lowercase auxe everywhere, the opening included */

body.pm-premium .onb-open .onb-word{text-transform:none!important;letter-spacing:-.02em!important;font-size:22px!important;font-weight:800!important;padding-left:0!important}/* AUXE-013 Account & app: the account leads as one physical card */

body.pm-premium .pfa-acct{display:flex!important;flex-direction:row!important;align-items:center!important;gap:14px;width:100%;min-height:0!important;padding:16px!important;margin:0 0 14px!important;border-radius:24px!important;border:0!important;
  background:linear-gradient(180deg,#FBFBFC 0%,#EFF0F2 100%)!important;box-shadow:0 1px 0 #FFFFFF inset,0 10px 22px -12px rgba(28,29,30,.32),0 1px 2px rgba(28,29,30,.08)!important;text-align:left;cursor:pointer;font:inherit;color:var(--ink)}
body.pm-premium .pfa-acct .pfa-em{width:54px;height:54px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 38% 30%,#FFFFFF 0%,#F3F4F5 55%,#E6E5E2 100%);box-shadow:inset 0 -2px 4px rgba(28,29,30,.10),0 6px 12px -8px rgba(28,29,30,.4)}
body.pm-premium .pfa-acct .pfa-em img{width:36px;height:36px;object-fit:contain}
body.pm-premium .pfa-acct .pfa-who{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}
body.pm-premium .pfa-acct .pfa-who b{font-size:19px;font-weight:800;letter-spacing:-.01em;color:var(--ink)}
body.pm-premium .pfa-acct .pfa-who .pfr-v{font-size:14px!important;font-weight:600;color:var(--ink-2)!important;text-align:left!important;white-space:normal}
body.pm-premium .pfa-acct .pfa-go{flex:none;padding:11px 16px;border-radius:999px;background:#141516;color:#FFFFFF;font-size:14px;font-weight:700;box-shadow:0 1px 0 rgba(255,255,255,.14) inset,0 8px 16px -10px rgba(28,29,30,.7)}/* the tour row keeps its inside space */

body.pm-premium .pfa-row{padding:14px 18px!important}
/* AUXE-010 on a very short phone the rack window is short; the pairs shrink so
   the chosen one always fits whole inside it */
@media (max-width:899px) and (max-height:600px){
  body.pm-premium .rack-pair .db{width:calc(var(--sz,56) * .78%)!important}
  body.pm-premium .rack-pair{padding-bottom:6px!important}
}/* AUXE-011 the loaded bar in the exercise picture: the stage's 62% cap on
   pictures was shrinking the bar, so it stopped short of the right-hand plates
   and the plates floated. The bar and its plates keep their own geometry. */

body.pm-premium .sess-stage .lr .lr-barimg{max-width:none!important;width:100%!important}
body.pm-premium .sess-stage .lr .lr-plate{max-width:none!important}/* plates stack outward: heaviest against the collar, each lighter plate shows
   just outside the one before it (the old offset pulled it inside) */

.lr-side.lr-r .lr-plate+.lr-plate{margin-left:calc(-58% - var(--edge))!important}
.lr-side.lr-l .lr-plate+.lr-plate{margin-right:calc(-58% - var(--edge))!important}/* PRACTICE WORKOUT (BR-13): one strip, one place, just above the main button */

.tutbar{flex:none;margin:0 16px 10px;padding:10px 14px 12px;border-radius:16px;background:var(--surface);border:1px solid var(--hair);border-left:4px solid #A7CFF2;box-shadow:0 6px 18px rgba(12,13,14,.06);height:118px;overflow:hidden;box-sizing:border-box}/* during practice the button area keeps one height, so the strip above it never moves */

#sess.tut-practice .sess-foot{height:112px;min-height:112px;max-height:112px;overflow:visible}
#sess.tut-practice .sess-ctx{display:none}/* skipping the only practice lift jumped straight to "Finish the workout" and then called it a whole
   workout; leaving practice is Exit practice (or the close key), which says what it does */

#sess.tut-practice #sessSkip{display:none!important}/* practice rest: the "Next" card sat under the instruction strip on short phones (36% shown at 320x568, 1% at
   375x667); the strip now carries what is next, so in practice the card steps aside. Dial, keys and timer unchanged;
   a normal workout keeps its card. */

#sess.tut-practice.resting #sessNext{display:none!important}
/* "auxe Practice Set" ran into the set line on a narrow phone; in practice it wraps cleanly there */
@media (max-width:360px){
  :root body.pm-premium #sess.tut-practice:not(.resting) .sess-head #sessLift{font-size:22px!important;line-height:1.12!important;white-space:normal!important;display:block!important;-webkit-line-clamp:unset!important;overflow:visible!important}/* and the strip's words fit its fixed height: the count stays on one line beside a slimmer Exit */
  
  .tutbar{padding:9px 12px 10px}
  .tutbar .tb-k{font-size:var(--ui-meta,14px);letter-spacing:.06em;white-space:nowrap}
  .tutbar .tb-x{min-height:30px;padding:0 10px;white-space:nowrap}
  .tutbar .tb-p{font-size:var(--ui-meta,14px);line-height:1.3}
}
.tutbar .tb-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}
.tutbar .tb-k{font-size:var(--ui-meta,14px);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#2F6A9A}
.tutbar .tb-x{min-height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--hair);background:transparent;color:var(--ink-2);font:inherit;font-size:var(--ui-meta,14px);font-weight:700;cursor:pointer}/* BR-13: Exit practice (32px tall) and the workout's ≡ and × keys (38px) keep their look and get a 44px touch
   area from an invisible pseudo-element; the ≡ and × sit 12px apart, so their areas never meet */

.tutbar .tb-x,#sessList,#sessX{position:relative}
.tutbar .tb-x::after{content:"";position:absolute;left:0;right:0;top:50%;height:44px;margin-top:-22px}
#sessList::after,#sessX::after{content:"";position:absolute;left:50%;top:50%;width:44px;height:44px;margin:-22px 0 0 -22px}
.tutbar .tb-h{font-size:16px;font-weight:800;color:var(--ink);line-height:1.25}
.tutbar .tb-p{font-size:var(--ui-meta,14px);font-weight:500;color:var(--ink-2);line-height:1.35;margin-top:2px}
/* a short phone (iPhone SE size): practice keeps the named control in reach. The decorative bar picture
   and the video key step aside, and the footer gives back the room Skip this lift used (it is not offered
   in practice), so the workout's own area is not squeezed to a sliver. The strip keeps its full height
   so its words are never cut (BR-13) */
@media (max-height:640px){
  #sess.tut-practice #sessStage,#sess.tut-practice #sessVideo{display:none!important}
  #sess.tut-practice .sess-foot{height:80px;min-height:80px;max-height:80px}
}
/* The focused workout already supplies the page gutters. Give its practice
   strip that full width and reserve the same space for the longest lesson.
   Rest copy and Exit practice must fit without shrinking either control. */
:root body.pm-premium #sess.focus-workout.tut-practice .tutbar{
  margin-left:0;margin-right:0;height:auto;min-height:154px;overflow:visible
}
:root body.pm-premium #sess.focus-workout.tut-practice .tb-top{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;min-height:44px
}
:root body.pm-premium #sess.focus-workout.tut-practice .tb-k{
  min-width:0;white-space:normal;letter-spacing:.03em;line-height:1.35
}
:root[data-theme="dark"] body.pm-premium #sess.focus-workout.tut-practice .tb-k{color:var(--wf-blue)}
:root body.pm-premium #sess.focus-workout.tut-practice .tb-x{min-height:44px}
/* Log reps and Back to set share this area. Their 58px and 44px targets plus
   the 7px gap need 109px even on a short phone. Keeping the area constant also
   keeps the instruction strip from moving between workout steps. */
:root body.pm-premium #sess.focus-workout.tut-practice .sess-foot{
  height:112px!important;min-height:112px!important;max-height:112px!important
}
.tut-focus{outline:3px solid #A7CFF2!important;outline-offset:4px;border-radius:14px}
.ctxtip{position:relative;max-width:520px;margin:12px auto 16px;transition:opacity .35s ease;box-shadow:0 10px 28px rgba(12,13,14,.12);display:flex;align-items:center;gap:12px;padding:11px 12px 11px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--hair);border-left:4px solid #A7CFF2;font-size:var(--ui-meta,14px);font-weight:600;color:var(--ink);line-height:1.35}
.ctxtip span{flex:1}
.ctxtip.out{opacity:0}
.ctxtip button{flex:none;min-height:44px;padding:0 13px;border-radius:999px;border:1px solid var(--hair);background:transparent;color:var(--ink);font:inherit;font-size:var(--ui-meta,14px);font-weight:750;cursor:pointer}/* Coach food logging: the app's own line, with Undo or Try again (BR-26) */

.cmsg.flog{align-self:flex-start;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:var(--ui-meta,14px);font-weight:650;color:var(--ink);max-width:100%}
.cmsg.flog.bad,.cmsg.flog.left,.cmsg.did.warn{color:var(--ink-2)}
.cmsg.flog .fl-q{width:100%;font-weight:700}
.cmsg.flog .fl-opts{display:flex;flex-wrap:wrap;gap:8px}
.cmsg.flog button{min-height:36px;padding:0 15px;border-radius:999px;border:1px solid var(--hair);background:var(--surface);font:inherit;font-size:var(--ui-meta,14px);font-weight:750;color:var(--ink);cursor:pointer}
.cmsg.flog.reading .wave{display:inline-flex}
.cact .ca-note{margin-top:10px;font-size:var(--ui-meta,14px);font-weight:600;color:var(--ink-2)}/* The phone's clock and battery sit on a calm strip of the page colour, so nothing scrolls under
   them. Only on a phone that reports a top safe area (the home-screen app); zero high elsewhere. */

#sbar{--sb:rgba(250,249,246,.95);position:fixed;left:0;right:0;top:0;height:env(safe-area-inset-top,0px);z-index:var(--z-nav,45);background:var(--sb);-webkit-backdrop-filter:blur(14px) saturate(1.1);backdrop-filter:blur(14px) saturate(1.1);pointer-events:none}
:root[data-theme="dark"] #sbar{--sb:rgba(13,14,15,.95)}
#sbar::after{content:"";position:absolute;left:0;right:0;top:100%;height:12px;background:linear-gradient(var(--sb),rgba(250,249,246,0))}
:root[data-theme="dark"] #sbar::after{background:linear-gradient(var(--sb),rgba(13,14,15,0))}
