:root{--sat:max(env(safe-area-inset-top,0px),var(--safe-area-inset-top,0px),var(--sat-fb,0px));--sab:max(env(safe-area-inset-bottom,0px),var(--safe-area-inset-bottom,0px),var(--sab-fb,0px));--sal:max(env(safe-area-inset-left,0px),var(--safe-area-inset-left,0px));--sar:max(env(safe-area-inset-right,0px),var(--safe-area-inset-right,0px));--vh:100vh}
@supports (height:100dvh){:root{--vh:100dvh}}
[hidden]{display:none!important}
:root{--bg:#f7f4fb;--card:#ffffff;--line:#e8e0f1;--txt:#1f1534;--mut:#6c6382;--teal:#5b2a86;--teal2:#7a3fb0;--green:#2e9d5b;--green2:#e6f5ec;--lav:#efe7f8;--warn:#c77700;--bad:#d64545}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--txt);font:16px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-tap-highlight-color:transparent}
body{padding-bottom:calc(72px + var(--sab))}
button,input,select,textarea{font:inherit;color:inherit}
button{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 16px;cursor:pointer}
button.primary{background:var(--teal);color:#ffffff;border:0;font-weight:700}
button.big{width:100%;padding:18px;font-size:1.15rem}
button.danger{border-color:#5a2a2a;color:#ffb0b0}
.topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:10px 14px;padding-top:calc(10px + var(--sat));background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{display:flex;gap:8px;align-items:center;font-size:1.1rem}.brand img{width:32px;height:32px;border-radius:50%;border:2px solid var(--teal)}.brand b{color:var(--teal)}
.mic{display:flex;gap:6px;align-items:center;padding:6px 12px;border-radius:999px;font-size:.85rem}
.mic .dot{width:10px;height:10px;border-radius:50%;background:#555}
.mic.on .dot{background:var(--teal);box-shadow:0 0 0 0 rgba(91,42,134,.7);animation:pulse 1.6s infinite}
.mic.armed .dot{background:var(--warn)}
@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(91,42,134,0)}100%{box-shadow:0 0 0 0 rgba(91,42,134,0)}}
main{max-width:640px;margin:0 auto;padding:12px}
.tab{display:none}.tab.active{display:block}.screen{display:none}.screen.active{display:block}
.hero{position:relative;border-radius:20px;overflow:hidden;aspect-ratio:16/10}.hero img{width:100%;height:100%;object-fit:cover;display:block}
.hero-fade{position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(255,255,255,.95))}
.hero-text{position:absolute;left:16px;bottom:12px}.hero-text h1{margin:6px 0 0;font-size:1.7rem}.hero-text p{margin:0;color:var(--mut)}
.badge{display:inline-block;background:rgba(255,255,255,.85);color:var(--teal);border:1px solid var(--teal2);border-radius:999px;padding:3px 10px;font-size:.8rem;font-weight:700}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 14px;margin:12px 0}
.note b{color:var(--teal)}.small{font-size:.85rem}.muted{color:var(--mut)}
.coachline{display:flex;gap:12px;align-items:center}.coachline img{width:52px;height:52px;border-radius:50%;border:2px solid var(--teal);flex:none}.coachline p{margin:0}
.plan{list-style:none;padding:0;margin:8px 0}.plan li{display:flex;justify-content:space-between;padding:8px 2px;border-bottom:1px solid var(--line)}.plan li span:last-child{color:var(--mut)}
/* session */
#screen-session.active{position:fixed;inset:0;z-index:30;background:#000;display:flex;flex-direction:column}
.stage{position:relative;flex:1;overflow:hidden}
.mirror{position:absolute;inset:0}.mirror.flip{transform:scaleX(-1)}
.mirror video,.mirror canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hud-top{position:absolute;top:calc(10px + var(--sat));left:10px;right:10px;display:flex;gap:8px;align-items:center}
.tag{background:var(--teal);color:#ffffff;font-weight:800;border-radius:999px;padding:5px 12px;font-size:.85rem}.tag.ghost{background:rgba(0,0,0,.55);color:#fff}
.iconbtn{margin-left:auto;background:rgba(0,0,0,.55);border:0;padding:6px 12px;border-radius:999px}
.hud-bottom{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:flex-end;gap:10px;padding:14px;background:linear-gradient(0deg,rgba(0,0,0,.85),transparent)}
.movebox{flex:1;min-width:0}.movename{font-size:1.5rem;font-weight:800;text-transform:uppercase;letter-spacing:.02em}
.cue{color:var(--teal);font-weight:600;min-height:1.4em}.cue.warn{color:var(--warn)}
.ringbox{position:relative;width:118px;height:118px;flex:none}.ring{width:100%;height:100%;transform:rotate(-90deg)}
.ring circle{fill:rgba(0,0,0,.5);stroke-width:9}.ring .track{stroke:rgba(255,255,255,.15)}.ring .prog{fill:none;stroke:var(--teal);stroke-linecap:round;stroke-dasharray:326.7;stroke-dashoffset:0;transition:stroke-dashoffset .2s linear}
.ringtxt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.reps{font-size:2.6rem;font-weight:900;line-height:1}.time{color:var(--mut);font-variant-numeric:tabular-nums}
.hud-center{position:absolute;inset:60px 16px 150px;background:rgba(255,255,255,.88);border:1px solid var(--line);border-radius:20px;padding:16px;display:flex;flex-direction:column;align-items:center;text-align:center;overflow:hidden}
.nextup{color:var(--teal);font-weight:800;text-transform:uppercase;letter-spacing:.1em}.nextname{font-size:1.6rem;font-weight:800}.nexthow{color:var(--mut);margin:6px 0}

.coachpanel{position:absolute;right:10px;top:calc(52px + var(--sat));display:flex;flex-direction:row-reverse;align-items:flex-start;gap:8px;max-width:78%}
.coachpanel img{width:48px;height:48px;border-radius:50%;border:2px solid var(--teal);flex:none}
.bubble{background:#fff;color:#0b1116;border-radius:14px 4px 14px 14px;padding:8px 12px;font-weight:600;font-size:.95rem;box-shadow:0 4px 18px rgba(0,0,0,.35);transition:transform .2s}.bubble.pop{transform:scale(1.06)}
.listening{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);background:rgba(255,181,71,.95);color:#2a1a00;font-weight:800;border-radius:999px;padding:10px 18px}
.controls{display:flex;gap:8px;padding:10px;padding-bottom:calc(10px + var(--sab));background:#000}.controls button{flex:1}
/* end */
.totals{width:100%;border-collapse:collapse}.totals td{padding:8px 4px;border-bottom:1px solid var(--line)}.totals td:last-child{text-align:right;font-weight:800;color:var(--teal)}
#screen-end button,#tab-food>button,#tab-settings button{width:100%;margin-top:10px}
/* food */
.streakrow{display:flex;gap:10px}.stat{flex:1;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:10px;text-align:center;color:var(--mut);font-size:.85rem}.stat .num{font-size:1.8rem;font-weight:900;color:var(--teal)}
.meal{margin:10px 0}.meal label{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-bottom:4px}
.meal .row{display:flex;gap:6px}.meal textarea{flex:1;min-height:52px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;resize:vertical}
.meal .dict{flex:none;width:48px;padding:0}.meal .dict.rec{background:var(--warn);color:#2a1a00}
.check{display:flex;gap:8px;align-items:flex-start;margin:10px 0;font-size:.9rem}
.res{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;margin:10px 0}.res h4{margin:0 0 6px}.res .ok{color:var(--teal)}.res .flag{color:var(--warn)}.res ul{margin:6px 0;padding-left:20px}
/* lists/settings */
.list{list-style:none;padding:0}.list li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:6px 0;display:flex;justify-content:space-between;gap:8px}
.row{display:flex;gap:6px}.row input{flex:1}
input[type=text],input[type=url],input[type=password],input[type=number],select{width:100%;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;margin-top:4px}
#tab-settings label:not(.check){display:block;margin:10px 0}
.tabs{position:fixed;bottom:0;left:0;right:0;z-index:25;display:flex;background:rgba(255,255,255,.96);border-top:1px solid var(--line);padding-bottom:var(--sab)}
.tabs button{flex:1;border:0;background:none;border-radius:0;padding:8px 0;display:flex;flex-direction:column;align-items:center;font-size:1.2rem;color:var(--mut)}.tabs button span{font-size:.72rem}.tabs button.active{color:var(--teal)}
.talk{position:fixed;right:14px;bottom:calc(84px + var(--sab));z-index:40;border-radius:999px;background:var(--teal);color:#ffffff;font-weight:800;border:0;box-shadow:0 6px 20px rgba(0,0,0,.4)}
.toast{position:fixed;left:50%;bottom:calc(140px + var(--sab));transform:translateX(-50%);z-index:50;background:#fff;color:#0b1116;padding:10px 16px;border-radius:999px;font-weight:600;max-width:90%;text-align:center}

/* trainer demo tile (smart-mirror PiP) */
.demo{position:absolute;left:10px;bottom:150px;width:34%;max-width:220px;aspect-ratio:16/9;border-radius:14px;overflow:hidden;border:2px solid var(--teal);background:#141d24 url(avatar.jpg) center/contain no-repeat;box-shadow:0 6px 20px rgba(0,0,0,.45);transition:all .45s ease;z-index:3}
.demo video{width:100%;height:100%;object-fit:cover;display:block;background:transparent}
.demo.missing video{visibility:hidden}
.demo .who{position:absolute;left:6px;top:6px}
.who{background:rgba(0,0,0,.6);color:#fff;font-size:.75rem;font-weight:800;border-radius:999px;padding:2px 8px;z-index:4}
.who.you{position:absolute;right:10px;bottom:150px;font-size:.9rem;padding:4px 12px;background:#ff4d4d}
.demo.inline{position:relative;left:auto;bottom:auto;width:100%;max-width:none;margin-top:auto;border-width:1px}
.demo.expanded{left:8px;right:8px;top:calc(56px + var(--sat));width:auto;max-width:none;aspect-ratio:16/9;bottom:auto;border-width:3px;background-color:#000}
.demo.expanded video{object-fit:contain}
@media (min-aspect-ratio:1/1){.demo.expanded{right:auto;width:62%;bottom:140px;aspect-ratio:auto}}
.fixlabel{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:var(--teal);color:#ffffff;font-weight:900;padding:6px 12px;border-radius:999px;white-space:nowrap;font-size:.9rem;box-shadow:0 0 0 4px rgba(91,42,134,.3);animation:pulse 1.6s infinite}
.stage.showing .coachpanel{display:none}
.stage.showing .hud-center{display:none}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:6px 10px;border-radius:999px;font-size:.85rem}.chip.like{background:rgba(91,42,134,.18);border-color:var(--teal);color:var(--teal)}.chip.no{background:rgba(255,107,107,.15);border-color:var(--bad);color:#ffb0b0;text-decoration:line-through}
details summary{cursor:pointer}
#tab-settings .chips button{width:auto;margin-top:0}

/* weigh-in */
.weightform{display:flex;flex-direction:column;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;margin:8px 0;scroll-margin-bottom:120px}
.weightform input{font-size:1.4rem;padding:14px;margin:0}
.seg{display:flex;gap:6px}.seg button{flex:1;padding:10px}.seg button.on{background:rgba(91,42,134,.18);border-color:var(--teal);color:var(--teal);font-weight:700}
.error{color:#ff8a8a;margin:0;font-weight:600}
.toast{bottom:auto;top:calc(70px + var(--sat))}
.heard{position:fixed;right:12px;top:calc(58px + var(--sat));max-width:80%;background:rgba(255,255,255,.95);color:#0b1116;border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:600;box-shadow:0 4px 14px rgba(0,0,0,.4);z-index:60;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.heard.interim{opacity:.75;font-style:italic}
#sessMic{margin-left:auto;display:flex;gap:6px;align-items:center}#sessMic+#flipBtn{margin-left:0}

/* ================= Live-class layout (Peloton-style) ================= */
.stage{background:#000}
.view{position:absolute;overflow:hidden;background:#0b1116;transition:top .35s,left .35s,right .35s,bottom .35s,width .35s,height .35s,border-radius .35s;touch-action:none}
.view video{width:100%;height:100%;object-fit:cover;display:block}
.view.trainer{background:#0b1116 url(avatar.jpg) center/30% no-repeat}
.view .who{position:absolute;left:8px;bottom:8px;z-index:3}
.view.big .who{display:none}.stage.showing .view .who{display:inline-block}
.view.you .who{background:#ff4d4d}
.view.pip{border-radius:18px;border:2px solid rgba(255,255,255,.85);box-shadow:0 8px 28px rgba(0,0,0,.55);z-index:5;cursor:grab}
/* portrait: trainer top ~60%, you bottom */
.stage.portrait .view.big{top:0;left:0;right:0;height:60%;border-radius:0;border:0}
.stage.portrait .view.pip{top:calc(60% + 6px);left:6px;right:6px;bottom:6px;cursor:pointer}
/* landscape: trainer full-bleed, you as a draggable 30% tile bottom-right */
.stage.landscape .view.big{inset:0;border-radius:0;border:0}
.stage.landscape .view.pip{right:12px;bottom:12px;width:30%;aspect-ratio:4/3;height:auto}
.stage.landscape.showing .view.big{right:50%}
.stage.landscape.showing .view.pip{top:0;bottom:0;right:0;left:50%;width:auto;aspect-ratio:auto;transform:none!important;border-radius:0}
.youreps{position:absolute;top:8px;left:10px;z-index:3;text-align:center;text-shadow:0 2px 8px rgba(0,0,0,.6)}
.youreps .reps{font-size:2.8rem;font-weight:900;line-height:1}.view.pip .youreps .reps{font-size:2rem}
.stage.landscape .view.pip .youreps{top:4px;left:6px}
/* class bar */
.classbar{position:absolute;z-index:8;top:calc(8px + var(--sat));left:10px;right:10px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}
.instructor{display:flex;gap:8px;align-items:center;background:rgba(0,0,0,.45);padding:4px 12px 4px 4px;border-radius:999px;backdrop-filter:blur(6px)}
.instructor img{width:38px;height:38px;border-radius:50%;border:2px solid var(--teal)}
.iname{font-weight:800;line-height:1.1}
.livebadge{display:inline-flex;gap:5px;align-items:center;background:#e0245e;color:#fff;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-radius:4px;padding:1px 6px}
.livebadge .pulse{width:7px;height:7px;border-radius:50%;background:#fff;animation:blink 1.4s infinite}@keyframes blink{50%{opacity:.25}}
.topbtns{display:flex;gap:6px;pointer-events:auto}.topbtns .iconbtn{margin:0;background:rgba(0,0,0,.5);border:0;padding:7px 11px;border-radius:999px}
#sessMic{display:flex;gap:6px;align-items:center}
/* timeline */
.timeline{position:absolute;z-index:8;left:10px;right:10px;top:calc(58px + var(--sat));display:flex;gap:2px;height:6px}
.timeline .seg{position:relative;background:rgba(255,255,255,.22);border-radius:3px;overflow:hidden}
.timeline .seg i{position:absolute;inset:0 auto 0 0;width:0;background:var(--teal)}
.timeline .seg.rest{background:rgba(255,255,255,.1)}.timeline .seg.rest i{background:#7a8a93}
.timeline .seg.warm i,.timeline .seg.cool i{background:#7fb7ff}
.timeline .seg.now{outline:1px solid #fff}
/* HUD panel: ring + move + form + energy */
.hudpanel{position:absolute;z-index:7;display:flex;gap:10px;align-items:center;background:rgba(0,0,0,.55);backdrop-filter:blur(8px);border-radius:18px;padding:8px 12px}
.stage.portrait .hudpanel{left:12px;right:12px;bottom:12px}
.stage.landscape .hudpanel{left:12px;bottom:12px;max-width:min(52%,460px)}
.hudpanel .ringbox{width:78px;height:78px;flex:none}
.hudpanel .ringtxt .time{font-size:1.15rem;font-weight:800;color:#fff}.hudpanel .ringtxt .small{font-size:.62rem;color:var(--mut);text-align:center;line-height:1.1;max-width:62px}
.meters{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.meters .movename{font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meter,.erow{display:grid;grid-template-columns:62px 1fr 30px;gap:6px;align-items:center;font-size:.72rem;color:var(--mut)}
.meter b,.erow b{color:#fff;text-align:right;font-size:.85rem}
.bar{height:7px;background:rgba(255,255,255,.15);border-radius:4px;overflow:hidden}.bar i{display:block;height:100%;width:0;background:var(--teal);transition:width .4s}
.erow.last .bar i{background:#7a8a93}.energy.ahead .erow:first-child b{color:var(--teal)}
/* rest card over the trainer */
.stage .hud-center{inset:auto 12px auto 12px;top:calc(76px + var(--sat));padding:12px 14px;background:rgba(255,255,255,.78);backdrop-filter:blur(6px);z-index:7;display:block}
.stage.landscape .hud-center{right:auto;max-width:44%}
.stage .hud-center .nextname{font-size:1.35rem}.stage .hud-center .nexthow{font-size:.9rem;margin:4px 0 0}
/* captions */
.captions{position:absolute;z-index:9;left:12px;right:12px;text-align:center;pointer-events:none}
.stage.portrait .captions{top:calc(60% - 86px)}
.stage.landscape .captions{bottom:110px;left:20%;right:20%}
.captions .cue{display:inline-block;background:rgba(0,0,0,.55);border-radius:8px;padding:2px 10px;font-size:.9rem;margin-bottom:4px}
.captions .cue:empty{display:none}
.caption{display:block;margin:0 auto;max-width:640px;background:rgba(0,0,0,.72);color:#fff;font-weight:600;border-radius:10px;padding:6px 12px;font-size:1rem;line-height:1.3;opacity:0;transition:opacity .3s}
.caption.show{opacity:1}
.fixlabel{z-index:4}
.stage.showing .hudpanel{opacity:.35}
/* overlays: auth + onboarding */
.overlay{position:fixed;inset:0;z-index:100;background:var(--bg);overflow:auto;padding:calc(20px + var(--sat)) 16px 40px}
.authbox{max-width:420px;margin:0 auto;display:flex;flex-direction:column;gap:10px}
.authbox h1{margin:0;text-align:center}.authbox h1 b{color:var(--teal)}.authbox h2{margin:6px 0}
.authbox label{display:block}.authbox input{width:100%;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-top:4px;font-size:1.05rem}
.authbox form{display:flex;flex-direction:column;gap:10px}
.trainer-avatar.big{width:84px;height:84px;border-radius:50%;border:3px solid var(--teal);margin:0 auto}
.linkbtn{background:none;border:0;color:var(--teal);padding:6px}
.acct{display:flex;flex-direction:column;align-items:flex-start;width:100%;margin:4px 0;text-align:left}.acct span{color:var(--mut);font-size:.85rem}
.trainers{display:flex;gap:10px}.trainer{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px}
.trainer img{width:72px;height:72px;border-radius:50%;object-fit:cover;border:2px solid var(--line)}.trainer.on{border-color:var(--teal);background:rgba(91,42,134,.1)}.trainer.on img{border-color:var(--teal)}
.trainer small{font-size:.72rem;text-align:center}
#tab-settings .trainers button{width:auto;margin-top:0}
.view .who.you{right:auto;bottom:8px;left:8px;font-size:.75rem;padding:2px 8px}
.timeline{top:calc(66px + var(--sat))}
.stage .hud-center{top:calc(80px + var(--sat))}
.stage.landscape .captions{bottom:auto;top:calc(82px + var(--sat));left:47%;right:12px;text-align:right}
.stage.landscape .caption{margin:0 0 0 auto;display:inline-block}
.stage.landscape.showing .captions{left:12px;right:52%;text-align:left;top:auto;bottom:60px}
/* trainer framing: portrait big = cover (centred); landscape big = contain over a blurred fill so head and feet stay in */
.view.trainer::before{content:"";position:absolute;inset:-30px;background:var(--poster) center/cover no-repeat;filter:blur(22px) brightness(.55);z-index:0;opacity:0;transition:opacity .3s}
.view.trainer video{position:relative;z-index:1;object-position:center}
.stage.landscape .view.trainer.big::before{opacity:1}
.stage.landscape .view.trainer.big video{object-fit:contain}
.stage.portrait .view.trainer.big video{object-fit:cover;object-position:50% 50%}
.view.trainer .fixlabel,.view.trainer .who{z-index:4}
.stage.portrait .view.trainer.big.floor::before{opacity:1}
.stage.portrait .view.trainer.big.floor video{object-fit:contain}

/* shopping */
.shopcta{margin:4px 0 8px}
.shoplist{border-color:var(--teal);box-shadow:0 0 0 1px rgba(91,42,134,.25)}
.row.between{justify-content:space-between;align-items:center;flex-wrap:wrap}.row.between h3{margin:4px 0}
.count{background:var(--teal);color:#ffffff;border-radius:999px;padding:1px 8px;font-size:.8rem;margin-left:4px}
.aisle{margin:10px 0 4px;color:var(--teal);font-weight:800;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em}
.tick{display:flex;gap:10px;align-items:flex-start;padding:8px 2px;border-bottom:1px solid var(--line)}
.tick input{width:22px;height:22px;flex:none;margin-top:1px;accent-color:var(--teal)}
.tick .t{flex:1}.tick .t small{display:block;color:var(--mut)}
.tick.done .t b{text-decoration:line-through;color:var(--mut)}
.tick .add{flex:none;padding:4px 10px;font-size:.8rem}
.recipe{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;margin:10px 0}
.recipe h4{margin:0 0 4px}.recipe .tags{display:flex;gap:6px;flex-wrap:wrap;font-size:.75rem;color:var(--mut);margin-bottom:6px}
.recipe .tags span{background:rgba(255,255,255,.06);border-radius:999px;padding:2px 8px}.recipe .tags .v{color:#3ddc84}
.recipe .addweek{width:100%;margin:6px 0}.recipe .addweek.on{background:rgba(91,42,134,.15);border-color:var(--teal);color:var(--teal)}
.recipe ol{margin:6px 0;padding-left:20px;font-size:.9rem;color:var(--mut)}
.qty{color:var(--txt);font-weight:700}
#tab-shop button.small{padding:6px 10px;font-size:.8rem}
#storePick .chip.on{background:rgba(91,42,134,.18);border-color:var(--teal);color:var(--teal)}

/* meal prep */
.tabs button span{font-size:.66rem}
.prepsec{margin-top:18px}.prepsec>h2{margin:0 0 4px}
.storebox{background:#f3eefa;border:1px solid #e0d4ef;border-radius:12px;padding:8px 10px;margin:8px 0;font-size:.85rem}
.storebox b{color:#5b2a86}
.glp1{background:rgba(91,42,134,.08);border-left:3px solid var(--teal);padding:6px 10px;border-radius:6px;font-size:.85rem;margin:6px 0}
.weekpick{display:flex;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.weekpick .t{flex:1}.weekpick small{color:var(--mut);display:block}
.weekpick button{padding:6px 10px;font-size:.8rem}
#prepDays button.on{background:rgba(91,42,134,.18);border-color:var(--teal);color:var(--teal);font-weight:700}
#prepStorePick .chip.on{background:rgba(91,42,134,.18);border-color:var(--teal);color:var(--teal)}
.recipe .tags .f{color:#ffb547}
#prepDays button{white-space:nowrap;padding:8px 14px}
/* classes */
.tabs button{padding:7px 0;font-size:1.1rem}.tabs button span{font-size:.6rem}
.rec{border-color:var(--teal);background:linear-gradient(135deg,rgba(91,42,134,.12),#fff)}
.rec h3{margin:0 0 4px}.rec .why{font-size:.85rem;color:var(--mut)}
.rec .toggle{display:flex;gap:8px;align-items:center;font-size:.85rem;margin-top:8px}.rec .toggle input{width:20px;height:20px;accent-color:var(--teal)}
#classFilters .chip.on{background:rgba(91,42,134,.18);border-color:var(--teal);color:var(--teal)}
.trainersel{display:flex;gap:8px;align-items:center;margin:10px 0}.trainersel select{flex:1}
.ccard{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin:12px 0}
.ccard .poster{position:relative;aspect-ratio:16/9;background:#0b1116 center/cover no-repeat}
.ccard .poster .dur{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.7);color:#fff;border-radius:8px;padding:2px 8px;font-weight:800;font-size:.85rem}
.ccard .poster .lead{position:absolute;left:8px;bottom:8px;display:flex;gap:6px;align-items:center;background:rgba(0,0,0,.6);border-radius:999px;padding:3px 10px 3px 3px;font-size:.8rem}
.ccard .poster .lead img{width:28px;height:28px;border-radius:50%;border:2px solid var(--teal);object-fit:cover}
.ccard .body{padding:10px 12px}.ccard h3{margin:0 0 4px}.ccard p{margin:4px 0;font-size:.88rem;color:var(--mut)}
.ccard .tags{display:flex;gap:6px;flex-wrap:wrap;font-size:.75rem}.ccard .tags span{background:rgba(255,255,255,.06);border-radius:999px;padding:2px 8px;color:var(--mut)}
.ccard .tags .int{color:var(--teal)}.ccard .btns{display:flex;gap:8px;margin-top:8px}.ccard .btns button{flex:1;margin:0}
.classhud{position:absolute;z-index:8;right:10px;top:calc(80px + var(--sat));width:min(46%,210px);background:rgba(0,0,0,.6);backdrop-filter:blur(8px);border-radius:14px;padding:8px 10px;font-size:.8rem;display:flex;flex-direction:column;gap:5px}
.stage.landscape .classhud{right:auto;left:12px}
.classhud .meter span{min-width:58px}.chstat{font-weight:800;font-size:.95rem}
.chrow{display:flex;justify-content:space-between;align-items:center;gap:6px}.vol{display:flex;align-items:center;gap:4px}.vol input{width:70px;accent-color:var(--teal)}
.eight{display:flex;gap:4px}.eight i{flex:1;height:18px;border-radius:5px;background:rgba(255,255,255,.15);font-style:normal;font-size:.7rem;text-align:center;line-height:18px;color:#cfe}
.eight i.on{background:var(--teal);color:#ffffff;font-weight:900}.eight i.one{outline:1px solid #fff}
.drivemodal{background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center}
.drivebox{width:min(960px,100%)}.drivewrap{position:relative;aspect-ratio:16/9;background:#000;border-radius:12px;overflow:hidden;margin:8px 0}.drivewrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.stage.classmode .timeline .seg.work i{background:var(--teal)}
#classSearch{width:100%;margin:6px 0 10px}
.newbadge{position:absolute;left:8px;top:8px;background:#ffb547;color:#2a1a00;font-weight:900;border-radius:999px;padding:3px 10px;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase}
.fixlabel.corrective{background:#ffb547;color:#2a1a00;white-space:normal;max-width:92%;text-align:center;bottom:auto;top:calc(150px + var(--sat));box-shadow:0 0 0 4px rgba(255,181,71,.35);font-size:.95rem;z-index:6}
.stage.landscape .fixlabel.corrective{top:auto;bottom:16px}
.updatetoast{position:fixed;left:50%;transform:translateX(-50%);top:calc(10px + var(--sat));z-index:200;background:var(--teal);color:#ffffff;font-weight:800;border:0;border-radius:999px;padding:10px 18px;box-shadow:0 6px 20px rgba(0,0,0,.5)}

/* talking-to-camera clip shown over the move demo while Reta gives the class welcome / cool-down speech */
.view.trainer .talkvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:2}
.view.trainer .talkvid.on{opacity:1}
/* ===== Bigger, easier phone UI (v16) ===== */
html,body{font-size:18px;line-height:1.5}
main{padding-left:14px;padding-right:14px}
h2{font-size:1.45rem;margin:22px 0 10px}h3{font-size:1.2rem;margin:6px 0 10px}h4{font-size:1.1rem}
.small{font-size:.92rem}
button{min-height:48px;padding:12px 18px;font-size:1rem;border-radius:16px}
button.big{min-height:60px;font-size:1.2rem;padding:18px}
input,select,textarea{min-height:48px;font-size:1.05rem}
input[type=checkbox]{min-height:0;width:24px;height:24px;flex:none}
input[type=range]{width:100%;min-height:40px;accent-color:var(--teal)}
label{display:block;margin:10px 0}
.check{font-size:1rem;align-items:center;min-height:48px}
.card{padding:18px;border-radius:20px;margin:14px 0}
.chip{min-height:48px;padding:10px 16px;font-size:1rem}
.tabs button{min-height:68px;padding:6px 0;font-size:1.6rem;gap:2px;min-width:0}
.tabs button span{font-size:.72rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap}
body{padding-bottom:calc(84px + var(--sab))}
.list li{padding:14px 4px;font-size:1.02rem}
.seg button{min-height:48px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid2 label{margin:4px 0}.grid2 input,.grid2 select{width:100%}
.field{margin:6px 0 12px}.field .chips{margin-top:8px}
/* progress */
.statgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.statgrid.three{grid-template-columns:repeat(3,1fr)}
.stat2{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;display:flex;flex-direction:column;min-width:0}
.stat2 small{color:var(--mut);font-size:.85rem}.stat2 b{font-size:1.45rem;line-height:1.2;overflow-wrap:anywhere}.stat2.hl b{color:var(--teal)}.stat2.wide{grid-column:1/-1}
.stat2 .good{color:var(--teal)}.stat2 .up{color:var(--warn)}
.bar{height:14px;background:rgba(255,255,255,.1);border-radius:999px;overflow:hidden;margin:8px 0}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--teal2),var(--teal));border-radius:999px}
.wchart{width:100%;height:auto;display:block}.wchart .line{fill:none;stroke:var(--teal);stroke-width:3;stroke-linejoin:round}.wchart .dot{fill:var(--teal)}
.wchart .grid line{stroke:rgba(255,255,255,.12)}.wchart text{fill:var(--mut);font-size:11px}.wchart .goal{stroke:var(--warn);stroke-dasharray:6 5;stroke-width:2}.wchart .goaltxt{fill:var(--warn)}
.milestones{list-style:none;padding:0;margin:0}.milestones li{padding:10px 0;border-bottom:1px solid var(--line);font-size:1.02rem}.milestones li.done{color:var(--teal);font-weight:700}
.wlist li{align-items:center;gap:8px}.wbtns{display:flex;gap:6px}.wbtns button{min-height:48px;padding:8px 12px}
.wedit{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}.wedit input{width:100%}
.homeprog h3{margin:0}.homeprog .wchart{margin-top:6px}
.backupcard .big{width:100%;margin-top:10px}
#backupNudge .row{gap:8px;margin-top:10px}#backupNudge button{flex:1}
/* GLP-1 builder + offers */
.planhead{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:16px 0 6px;font-size:1.05rem}
.glpmeal{border-top:1px solid var(--line);padding:12px 0}.glpmeal h4{margin:4px 0 6px}
.tags{display:flex;flex-wrap:wrap;gap:6px}.tags span{background:rgba(255,255,255,.07);border-radius:999px;padding:4px 10px;font-size:.88rem}.tags .pb{background:rgba(91,42,134,.18);color:var(--teal);font-weight:700}.tags .v{color:#a6f0a6}
.shoplines{list-style:none;padding:0;margin:0 0 10px}.shoplines li{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.shoplines li span:last-child{text-align:right;white-space:nowrap}
.offer{border:1px solid var(--line);border-radius:16px;padding:12px;margin:10px 0;background:rgba(255,255,255,.02)}
.otop{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.ostore{font-size:.78rem;font-weight:800;border-radius:6px;padding:2px 8px;color:#fff}.ostore.aldi{background:#00205b}.ostore.lidl{background:#0050aa}.ostore.asda{background:#3a8f2b}
.oprice{font-size:1.3rem;margin:4px 0}.oprice del{color:var(--mut);font-size:1rem}.oprice small{color:var(--mut);font-size:.88rem}
.pbadge{display:inline-block;border-radius:999px;padding:2px 8px;background:rgba(255,255,255,.08);font-size:.85rem}.pbadge.hp{background:rgba(91,42,134,.2);color:var(--teal);font-weight:700}
.offer .row{gap:8px;margin-top:8px}.offer .row button{flex:1}.btnlink{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 16px;border:1px solid var(--line);border-radius:16px;color:var(--txt);text-decoration:none}
.tips ul{padding-left:20px}
h2.sep{margin-top:30px}
@media (max-width:380px){.tabs button span{font-size:.66rem}.statgrid.three .stat2 b{font-size:1.15rem}}
.disclaimer{background:rgba(255,184,77,.12);border:1px solid rgba(255,184,77,.5);border-radius:12px;padding:10px 12px;font-weight:700;font-size:.95rem}
.effects{border:1px solid var(--line);border-radius:14px;padding:8px 12px;margin:10px 0}.effects .check{margin:4px 0}
#injCard textarea{width:100%;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px}
#injCard select,#injCard input:not([type=checkbox]){width:100%}#injCard>button{width:100%;margin-top:10px}
.wchart .inj line{stroke:#ffb84d;stroke-width:1.5;stroke-dasharray:3 3;opacity:.8}.wchart .inj text{font-size:10px}
.injnext h3{margin:0 0 6px}.injnext.due{border-color:#ffb84d}
input[type=datetime-local],input[type=time],input[type=date]{color-scheme:dark;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;color:var(--txt)}
.celebrate{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;padding:16px}.celebrate[hidden]{display:none}
.celebrate .sheet{background:var(--card);border:2px solid var(--teal);border-radius:22px;padding:18px;max-width:420px;width:100%;max-height:92vh;overflow:auto;text-align:center}
.celebrate .confetti{font-size:2.4rem}.celebrate img{width:70%;border-radius:12px;margin:8px 0}.celebrate button{width:100%;margin-top:8px}
.certgrid .cert{border:1px solid var(--line);border-radius:14px;padding:12px;margin:8px 0;display:flex;flex-direction:column;gap:4px}.cert .row button{flex:1}
/* store picker: big, obvious, selected state */
.storechips{display:grid;grid-template-columns:1fr 1fr;gap:10px}.storechips .chip{width:100%;min-height:56px;font-size:1.1rem;font-weight:700}
.chip.storechip.on{background:var(--teal);color:#ffffff;border-color:var(--teal);box-shadow:0 0 0 3px rgba(91,42,134,.35)}
.steplabel{font-size:1.1rem}
/* cooking guide + cook mode */
.guide{border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-top:10px}.guide>summary{min-height:48px;display:flex;align-items:center;gap:6px;cursor:pointer;flex-wrap:wrap}
.gtimes{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.gtimes span{background:rgba(255,255,255,.07);border-radius:999px;padding:4px 10px;font-size:.9rem}
.gsteps li{margin:8px 0}.tchip{background:rgba(91,42,134,.18);color:var(--teal);border-radius:999px;padding:1px 8px}
.safe{background:rgba(91,42,134,.1);border-left:4px solid var(--teal);padding:8px 10px;border-radius:8px}.oven{font-size:1rem}
.cookmode{position:fixed;inset:0;z-index:90;background:var(--bg);padding:calc(16px + var(--sat)) 18px 24px;display:flex;flex-direction:column;gap:12px;overflow:auto}.cookmode[hidden]{display:none}
.cookhead{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:1.1rem}
.cookprog{color:var(--teal);font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.cookstep{font-size:1.9rem;line-height:1.3;font-weight:700;margin:0}.cookheat{font-size:1.2rem;color:#ffb84d;margin:0}
.cooktimer{display:flex;flex-direction:column;align-items:center;gap:10px}.cooktimer span{font-size:3.6rem;font-weight:900;font-variant-numeric:tabular-nums}
.cooknav{display:grid;grid-template-columns:1fr 2fr;gap:10px;margin-top:auto}

#priceSearch{color:#0b1116;background:#fff;caret-color:#0b1116;font-size:1rem}#priceSearch::placeholder{color:#5b6670}
.overlay.celebrate{z-index:200}

#priceSearch,.searchbox{color:#0b1116;background:#fff;caret-color:#0b1116;font-size:1rem;width:100%;min-height:50px;border-radius:12px;padding:10px 14px;border:2px solid var(--teal)}.searchbox::placeholder{color:#5b6670}
.chips .chip.on,.chip[aria-pressed=true]{background:var(--teal);color:#ffffff;border-color:var(--teal);font-weight:700}
.catscroll{flex-wrap:nowrap;overflow-x:auto;padding:8px 0;scrollbar-width:none;-webkit-overflow-scrolling:touch}.catscroll .chip{flex:0 0 auto;width:auto;margin:0}
.storeline{font-weight:600;color:var(--teal);margin:4px 0}.empty{padding:14px;border:1px dashed var(--line);border-radius:12px;color:var(--mut)}
.hometiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0}.hometile{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:84px;justify-content:center;font-size:1.1rem}.hometile .ostore{font-size:1.1rem;padding:4px 10px}
.tabs{overflow-x:auto;scrollbar-width:none}.tabs button{flex:0 0 auto;min-width:64px}
.cmp{padding:10px 0;border-bottom:1px solid var(--line)}.cmprow{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:6px}.cmpcell{display:flex;flex-direction:column;align-items:center;padding:8px 4px;border:1px solid var(--line);border-radius:10px;gap:2px}.cmpcell.best{border-color:var(--teal);background:rgba(91,42,134,.14)}.cmpcell small{color:var(--mut);font-size:.75rem}

.weektoggle{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0}.weekbtn{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:68px;font-size:1.1rem;border-radius:14px;margin:0}.weekbtn small{font-size:.8rem;color:var(--mut)}
.weekbtn.on{background:var(--teal);color:#ffffff;border-color:var(--teal);box-shadow:0 0 0 3px rgba(91,42,134,.35)}.weekbtn.on small{color:#ffffff}
.weekrange{font-weight:700;margin:6px 0}.manualrow{padding:10px 0;border-bottom:1px solid var(--line)}


/* ===== GLP1 Life theme ===== */
html,body{background:var(--bg);color:var(--txt);font-family:"Segoe UI",system-ui,-apple-system,Roboto,sans-serif}
.topbar{background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);box-shadow:0 2px 10px rgba(91,42,134,.06)}
.brand .logo{width:34px;height:34px;border:0;border-radius:0}.wordmark{font-weight:900;font-size:1.35rem;color:var(--teal);letter-spacing:-.02em}.wordmark i{font-family:"Brush Script MT","Segoe Script",cursive;color:var(--green);font-weight:700;font-size:1.5rem;margin-left:1px}
.card{background:#fff;border:1px solid var(--line);box-shadow:0 4px 18px rgba(91,42,134,.06);border-radius:18px}
button{background:#fff;border-color:var(--line);color:var(--txt)}button.primary{background:linear-gradient(135deg,#7a3fb0,#5b2a86);color:#fff}
input,select,textarea{background:#fff;color:var(--txt);border:1px solid var(--line)}
.mic{background:var(--lav);color:var(--teal);border:0}
#screen-session,#screen-session *{--txt:#fff}
.hero-fade{background:linear-gradient(180deg,transparent 35%,rgba(31,21,52,.85))}.hero-text{color:#fff}.hero-text p{color:#eee}
.pagehead{font-size:1.35rem;margin:6px 0 10px}.tagline{margin:2px 0 8px;font-weight:700;color:var(--teal);font-size:.85rem;letter-spacing:.02em}
.greet{margin:4px 0 0;font-size:1.5rem}.greetsub{margin:0 0 6px}
.wcard .wrow{display:flex;justify-content:space-between}.wcard .wrow small{color:var(--mut)}.wcard .wrow b{font-size:1.35rem;display:block}
.ringrow{display:flex;align-items:center;gap:18px;margin-top:10px}.wring{width:120px;height:120px;flex:none}.wring text{font:800 22px system-ui;fill:var(--txt)}
.down b{font-size:1.9rem;color:var(--green);display:block;line-height:1}.down span{color:var(--green);font-weight:700}
.minis{gap:10px}.mini{display:flex;gap:10px;align-items:center;text-align:left;margin:0;min-height:86px}.mini i{font-style:normal;font-size:1.8rem}.mini b{font-size:1.25rem;display:block}.mini small{color:var(--mut)}
.nextinj{background:linear-gradient(135deg,#fde8f1,#f6e9fb);border-color:#f3d4e6}.nextinj h3{margin:0 0 2px}.nextinj .row{align-items:center}
.weekchecks{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;text-align:center}.wck{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:0;padding:4px 0;font-size:.78rem;margin:0}
.wck i{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-style:normal;background:var(--lav);color:var(--mut);font-weight:900}.wck.done i{background:var(--green);color:#fff}
.features{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:14px 0}.feat{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;margin:0;border-radius:14px;font-size:.68rem;font-weight:700;text-align:center;line-height:1.15;min-height:84px;justify-content:flex-start}.feat i{font-style:normal;font-size:1.5rem;width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:var(--lav)}
.segtabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px;background:var(--lav);padding:4px;border-radius:14px;margin:6px 0 10px}.segtabs button{margin:0;border:0;background:none;border-radius:11px;min-height:44px;font-weight:700;color:var(--mut)}.segtabs button.on{background:var(--green);color:#fff;box-shadow:0 4px 12px rgba(46,157,91,.3)}
.bodyfig{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}.bodyfig svg{width:100%;height:auto}.bodyfig small{display:block;font-weight:700}
.scard{display:flex;gap:12px;align-items:center}.scard .sic{width:64px;height:64px;border-radius:16px;display:grid;place-items:center;font-size:2rem;flex:none;background:var(--lav)}.scard h3{margin:0}.scard p{margin:2px 0}.scard button{margin:0 0 0 auto;flex:none}
.dayt{display:flex;gap:6px;overflow-x:auto;margin:8px 0}.dayt button{flex:0 0 auto;min-width:52px;margin:0;border-radius:12px;min-height:44px}.dayt button.on{background:var(--green);color:#fff;border-color:var(--green)}
.meal{display:flex;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);width:100%;text-align:left;background:none;border-left:0;border-right:0;border-top:0;border-radius:0;margin:0}.meal .mimg{width:76px;height:76px;border-radius:14px;display:grid;place-items:center;font-size:2.2rem;flex:none}.meal small{color:var(--mut)}.meal b{display:block}
.calrange{display:grid;grid-template-columns:1fr 1fr;gap:8px}.focus{display:flex;gap:6px;flex-wrap:wrap}.focus button{margin:0;border-radius:10px;min-height:40px}.focus button.on{background:var(--green2);border-color:var(--green);color:var(--green);font-weight:700}
button.greenbtn{background:linear-gradient(135deg,#3cb56c,#2e9d5b);color:#fff;border:0;font-weight:800}
.overlay.recipe{background:rgba(31,21,52,.5);align-items:flex-end}.rsheet{background:#fff;width:100%;max-width:640px;max-height:92vh;overflow:auto;border-radius:22px 22px 0 0;position:relative;color:var(--txt)}
.rhero{height:200px;display:grid;place-items:center;font-size:5rem}.rclose{position:absolute;right:10px;top:10px;border-radius:50%;width:44px;height:44px;padding:0;z-index:2}
.rbody{padding:14px}.macros{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;text-align:center}.macros div{background:var(--lav);border-radius:12px;padding:8px 2px}.macros b{display:block;font-size:1.1rem}
.ingl label{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.ingl input{width:22px;height:22px;accent-color:var(--green)}
.pcmp{display:grid;grid-template-columns:1fr;gap:6px}.prow{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:12px;background:#faf8fd;border:1px solid var(--line)}.prow.best{border-color:var(--green);background:var(--green2)}
.bestbadge{display:inline-block;background:var(--green);color:#fff;border-radius:999px;padding:6px 12px;font-weight:800;font-size:.85rem}.save{color:var(--green);font-weight:700;font-size:.85rem}
.plans{display:grid;gap:10px}.plan2{border:2px solid var(--teal);position:relative}.bestv{position:absolute;right:12px;top:-12px;background:var(--teal);color:#fff;border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:800}
.price{font-size:2.2rem;font-weight:900;margin:2px 0;color:var(--teal)}.price small{font-size:1rem}.plan1 h3{color:var(--green)}.plan2 h3 i{color:var(--green);font-family:"Brush Script MT",cursive}
.ticks{list-style:none;padding:0}.ticks li{padding:4px 0}.ticks li::before{content:"✓ ";color:var(--green);font-weight:900}
.cmptable{width:100%;border-collapse:collapse;font-size:.9rem}.cmptable td,.cmptable th{padding:8px 4px;border-bottom:1px solid var(--line);text-align:center}.cmptable td:first-child,.cmptable th:first-child{text-align:left}.cmptable td:last-child{color:var(--teal);font-weight:900}
/* bottom nav */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:25;display:flex;background:rgba(255,255,255,.97);border-top:1px solid var(--line);padding:4px 4px calc(4px + var(--sab));box-shadow:0 -4px 16px rgba(91,42,134,.06)}
.dock button{flex:1;min-width:0;min-height:60px;margin:0;border:0;background:none;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--mut);font-size:.74rem;font-weight:700}
.dock svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.dock button.active,.dock .orb.active,.dock .orb.open{color:var(--green)}.dock button.active svg{stroke-width:2.4}
.launcher{position:fixed;inset:0;z-index:24;background:rgba(31,21,52,0);transition:background .2s}.launcher.open{background:rgba(31,21,52,.35)}
.lsheet{position:absolute;left:0;right:0;bottom:calc(68px + var(--sab));max-width:640px;margin:0 auto;padding:10px 14px 16px;border-radius:22px 22px 0 0;background:#fff;box-shadow:0 -10px 30px rgba(31,21,52,.18);transform:translateY(24px);opacity:0;transition:transform .22s,opacity .2s}.launcher.open .lsheet{transform:none;opacity:1}
.lgrab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 8px}.lsheet h3{margin:0 0 10px;text-align:center}
.lgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.lgrid button{margin:0;min-height:84px;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-weight:700;font-size:.85rem;background:#faf8fd}.lgrid button i{font-style:normal;font-size:1.6rem}.lgrid button.active{border-color:var(--teal);background:var(--lav)}
body{padding-bottom:calc(84px + var(--sab))}.talk{bottom:calc(84px + var(--sab))}
@media (prefers-reduced-motion: reduce){.lsheet,.launcher{transition:none!important}}
.ostore.aldi{background:#00205b;color:#fff}.ostore.lidl{background:#0050aa;color:#fff}.ostore.asda{background:#3d8f1e;color:#fff}
.searchbox,#priceSearch{border-color:var(--teal2)}
.weekbtn.on{background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 0 0 3px rgba(46,157,91,.25)}.weekbtn.on small{color:#fff}
.chips .chip.on,.chip[aria-pressed=true]{background:var(--green);border-color:var(--green);color:#fff}
.storeline{color:var(--green)}
.toast{background:#3a1a5a;color:#fff;box-shadow:0 6px 20px rgba(31,21,52,.3)}
.unlocked{background:var(--green2);border-color:var(--green)}
.authlogo{width:72px;height:72px}.wordmark.big{font-size:2.2rem;margin:4px 0 0}.wordmark.big i{font-size:2.5rem}.authbox{background:#fff;color:var(--txt)}#authScreen,#onboard{background:var(--bg)}
.trtop{display:flex;gap:12px;align-items:center}.trphoto{width:76px;height:76px;border-radius:50%;object-fit:cover;flex:none}.trphoto.ph{display:grid;place-items:center;background:var(--lav);font-size:2rem}.trcard h3{margin:0}.vbadge{display:inline-block;background:var(--green2);color:var(--green);border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:800;margin-top:4px}.wabtn{display:block;text-align:center;background:#25d366;color:#fff;font-weight:800;border-radius:14px;padding:14px;text-decoration:none;margin-top:8px}.trempty{text-align:center}
.consent{max-width:440px;margin:auto}.consent .ticks{list-style:none;padding:0}.consent .ticks li{padding:4px 0}label.sw{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}label.sw input{width:22px;height:22px;accent-color:var(--green)}

/* TV / big-screen mode (?tv=1) */
#castBtn.on{background:var(--green);color:#fff}
html.tv body{zoom:1.45}html.tv body{max-width:none}html.tv .dock{display:none}html.tv main,html.tv .tab{max-width:1500px;margin:0 auto}
html.tv #classList{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}html.tv .tvcard,html.tv #supportCards,html.tv .mic{display:none}
html.tv :focus-visible,html.tv button:focus,html.tv a:focus{outline:5px solid var(--green);outline-offset:4px}
html.tv #screen-session .stage{height:calc(100vh - 160px)}html.tv #screen-session .view.trainer{position:absolute;inset:0;width:100%;height:100%}html.tv #youView{display:none}
html.tv .controls button{font-size:1.1rem;padding:18px 34px}

/* ===== Offers & price lists: roomy, single-column, phone-first (Android incl. 130% text) ===== */
:is(#tab-prices,#tab-aldi,#tab-lidl){overflow-wrap:break-word}
:is(#tab-prices,#tab-aldi,#tab-lidl) > .card{padding:16px 12px;margin-left:-4px;margin-right:-4px}
:is(#tab-prices,#tab-aldi,#tab-lidl) :is(.small,small,.muted,.storeline,label.check,p){font-size:1rem;line-height:1.45}
:is(#tab-prices,#tab-aldi,#tab-lidl) h3{font-size:1.2rem;line-height:1.3}
:is(#tab-prices,#tab-aldi,#tab-lidl) :is(button,.btnlink,a.btnlink,input,select,.chip){min-height:48px;font-size:1rem}
:is(#tab-prices,#tab-aldi,#tab-lidl) label.check{display:flex;gap:12px;align-items:center;min-height:48px}
:is(#tab-prices,#tab-aldi,#tab-lidl) label.check input{width:24px;height:24px;min-height:0;flex:none}
:is(#tab-prices,#tab-aldi,#tab-lidl) .catscroll{flex-wrap:wrap;overflow:visible}
/* offer / price item card */
:is(#tab-prices,#tab-aldi,#tab-lidl) .offer{display:block;padding:16px;margin:12px 0;border-radius:18px;background:#fff;box-shadow:0 1px 3px rgba(40,10,70,.06)}
:is(#tab-prices,#tab-aldi,#tab-lidl) .otop{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .otop b{font-size:1.15rem;line-height:1.3;white-space:normal}
:is(#tab-prices,#tab-aldi,#tab-lidl) .ostore{font-size:1rem;padding:4px 10px;border-radius:8px;white-space:nowrap}
:is(#tab-prices,#tab-aldi,#tab-lidl) .oprice{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:10px 0 6px;font-size:1.6rem}
:is(#tab-prices,#tab-aldi,#tab-lidl) .oprice :is(small,del){font-size:1rem}
:is(#tab-prices,#tab-aldi,#tab-lidl) .offer .small{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
:is(#tab-prices,#tab-aldi,#tab-lidl) .pbadge{font-size:1rem;padding:4px 10px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .offer .row{display:flex;flex-direction:column;gap:10px;margin-top:12px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .offer .row > *{width:100%;flex:none}
/* compare card: store rows full width */
:is(#tab-prices,#tab-aldi,#tab-lidl) .card.cmp{padding:16px;border-radius:18px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .card.cmp > b{display:block;font-size:1.2rem;line-height:1.3}
:is(#tab-prices,#tab-aldi,#tab-lidl) .card.cmp > small{display:block;margin:4px 0 10px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .pcmp{display:flex;flex-direction:column;gap:8px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .prow{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:12px 14px;border-radius:14px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .prow > span:first-child{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0;flex:1}
:is(#tab-prices,#tab-aldi,#tab-lidl) .prow > b{font-size:1.3rem;white-space:nowrap;flex:none}
:is(#tab-prices,#tab-aldi,#tab-lidl) .prow.best{border-width:2px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .prow.best > span:first-child::after{content:"Cheapest";white-space:nowrap;background:var(--green);color:#fff;border-radius:999px;padding:3px 10px;font-weight:800;font-size:.9rem}
:is(#tab-prices,#tab-aldi,#tab-lidl) .card.cmp .row.between{flex-direction:column;align-items:stretch;gap:8px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .bestbadge{display:block;text-align:center;font-size:1rem;padding:12px}
:is(#tab-prices,#tab-aldi,#tab-lidl) .save{display:block;text-align:center;font-size:1rem}
:is(#tab-prices,#tab-aldi,#tab-lidl) .weekbtn{min-height:72px;font-size:1.05rem}
:is(#tab-prices,#tab-aldi,#tab-lidl) .weekbtn small{font-size:1rem}

/* ===== Full-screen, edge-to-edge sign-up / sign-in / onboarding ===== */
#authScreen,#onboard{padding:0;background:#fff;overflow-y:auto;display:flex;flex-direction:column;min-height:100dvh}
#authScreen[hidden],#onboard[hidden]{display:none}
#authScreen .authbox,#onboard .authbox{max-width:none;width:100%;margin:0;flex:1;display:flex;flex-direction:column;gap:12px;background:#fff;box-shadow:none;border-radius:0;padding:0 0 calc(24px + var(--sab))}
#authScreen .authbox > :not(.authhero),#onboard .authbox > :not(.authhero){margin-left:max(20px, var(--sal));margin-right:max(20px, var(--sar))}
.authhero{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;color:#fff;
  padding:calc(36px + var(--sat)) 20px 34px;background:linear-gradient(160deg,#5b2a86 0%,#7a3fb0 55%,#2e9d5b 120%);border-radius:0 0 28px 28px;min-height:34dvh}
.authhero .authlogo{width:88px;height:88px;padding:14px;border-radius:26px;background:rgba(255,255,255,.16)}
.authhero .wordmark{color:#fff;margin:0}.authhero .wordmark i{color:#b9f5cf}
.authhero .tagline{color:rgba(255,255,255,.92);margin:0;font-size:1rem}
#authScreen form{max-width:520px;width:auto}
#authScreen input{min-height:52px;font-size:1.05rem}
#authScreen .primary.big{min-height:56px}
#onboard .authbox > h2:first-child{margin-top:calc(28px + var(--sat))}
.authnote{display:flex;gap:8px;align-items:flex-start;font-size:1rem}
.authwelcome{display:flex;flex-direction:column;gap:12px;margin-top:8px}.authwelcome h2{margin:6px 0 0}.secondbig{min-height:56px;background:#fff;color:var(--teal);border:2px solid var(--teal);font-weight:800;border-radius:16px;width:100%}
:is(#tab-prices,#tab-aldi,#tab-lidl) .chips .chip{white-space:normal;max-width:100%;text-align:left}
.dock{box-sizing:border-box;max-width:calc(100vw - 16px)}.dock button{min-width:0;flex:1 1 0}.dock button span{white-space:nowrap;font-size:.72rem;line-height:1.1;text-align:center}
@media (max-width:420px){.topbar .mic #micLabel{display:none}.topbar .mic{min-width:48px;padding-left:14px;padding-right:14px}}
.topbar{box-sizing:border-box;max-width:100vw}
#aldiPriceCount,#lidlWeekRange{scroll-margin-top:90px}

.wdaterow{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}.wdaterow label{flex:1 1 140px;display:flex;flex-direction:column;gap:4px}
.wdaterow input,.wedit input[type=date],.wedit input[type=time]{min-height:48px;font-size:16px;padding:8px 10px;border-radius:12px;border:1px solid #d9cce8;background:#fff;color:#2a1740;width:100%;box-sizing:border-box}
.wedit{display:flex;flex-wrap:wrap;gap:8px}.wedit input{flex:1 1 120px}
.toast.hasbtn{display:flex;align-items:center;gap:12px;border-radius:18px;padding:8px 8px 8px 16px}.toastbtn{min-height:44px;padding:0 16px;border-radius:999px;border:0;background:#2e9d5b;color:#fff;font-weight:700;font-size:16px;white-space:nowrap}

/* ---- device fit: safe areas, sheets above the nav, fluid type ---- */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{padding-left:var(--sal);padding-right:var(--sar);overflow-wrap:break-word}
img,video,svg,canvas{max-width:100%}
h1{font-size:clamp(1.5rem,1.2rem + 1.6vw,2.2rem)}h2{font-size:clamp(1.3rem,1.1rem + 1.1vw,1.8rem)}
.overlay{padding:calc(12px + var(--sat)) calc(16px + var(--sar)) calc(24px + var(--sab)) calc(16px + var(--sal));max-height:var(--vh);overscroll-behavior:contain}
.overlay.recipe{display:flex;justify-content:center;padding:calc(8px + var(--sat)) 0 0}
.overlay.recipe .rsheet{max-height:calc(var(--vh) - var(--sat) - 8px);padding-bottom:calc(16px + var(--sab));overscroll-behavior:contain}
.rclose{position:sticky;float:right;top:10px;margin:10px 10px -54px auto;display:block;background:#fff;box-shadow:0 2px 10px rgba(31,21,52,.25);min-width:48px;min-height:48px}
.celebrate{padding:calc(12px + var(--sat)) 16px calc(12px + var(--sab))}.celebrate .sheet{max-height:calc(var(--vh) - var(--sat) - var(--sab) - 24px)}
body.modal-open .tabs,body.modal-open .dock,body.modal-open .talk,body:has(.overlay:not([hidden])) .tabs,body:has(.overlay:not([hidden])) .dock,body:has(.overlay:not([hidden])) .talk,body:has(.cookmode:not([hidden])) .dock{display:none!important}
body.modal-open,body:has(.overlay:not([hidden])){overflow:hidden}
.drivebox,.consent{max-height:calc(var(--vh) - var(--sat) - var(--sab) - 40px);overflow:auto}
.tabs{padding-left:var(--sal);padding-right:var(--sar)}
@media (orientation:landscape) and (max-height:500px){.rhero{height:110px;font-size:3rem}}
@media (min-width:768px){main{max-width:900px;margin-left:auto;margin-right:auto}}
.apkupdate{position:fixed;z-index:300;left:calc(10px + var(--sal));right:calc(10px + var(--sar));top:calc(8px + var(--sat));display:flex;align-items:center;gap:10px;background:#3a1a5a;color:#fff;border-radius:18px;padding:10px 10px 10px 16px;box-shadow:0 8px 24px rgba(31,21,52,.35)}
.apkupdate span{flex:1;display:flex;flex-direction:column}.apkupdate small{opacity:.8}.apkupdate button{min-height:48px;min-width:48px;border-radius:999px;font-size:16px}.apkupdate #apkLater{background:transparent;color:#fff;border:0}
/* trainers page: stacked link cards + specialty tags */
.linkcards{display:flex;flex-direction:column;gap:12px;margin:14px 0}
.linkcard{display:flex;align-items:center;gap:14px;width:100%;box-sizing:border-box;min-height:72px;padding:14px 16px;background:var(--card,#fff);border:1px solid var(--line);border-radius:18px;color:var(--txt);text-decoration:none;box-shadow:0 2px 10px rgba(31,21,52,.06)}
.linkcard[hidden]{display:none}.linkcard:active{transform:scale(.99)}
.lcicon{flex:none;width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:var(--lav,#efe6f8);font-size:1.5rem}
.lctext{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.lctext b{font-size:1.05rem;color:#3a1a5a}.lctext small{color:var(--mut,#6b5f7a);font-size:.95rem;line-height:1.35}
.lcgo{flex:none;font-size:1.6rem;color:#5b2a86}
.trtags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;padding:0}.trtags li{padding:6px 12px;border-radius:999px;background:var(--lav,#efe6f8);color:#3a1a5a;font-weight:600;font-size:.95rem;line-height:1.3}
.trtop{flex-wrap:wrap}.trtop>div{min-width:0;flex:1 1 160px}.trcard h3{overflow-wrap:anywhere}.wabtn{display:flex;justify-content:center;text-align:center;min-height:48px;align-items:center}
.mini.water{flex-direction:column;align-items:stretch;gap:8px;grid-column:1/-1}.mini.water .wtop{display:flex;gap:10px;align-items:center}
.wbtns2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.wbtns2 button{min-height:48px;font-size:1rem;font-weight:700;border-radius:14px;margin:0}

/* feature flags: no instructor voice / no on-screen AI trainer; camera form-check opt-in */
.novoice #micBtn,.novoice #sessMic,.novoice #talkBtn,.novoice .heard{display:none!important}
.notrainer .instructor,.notrainer #talkVid,.notrainer #trainerView .who,.notrainer .livebadge{display:none!important}
.stage.nocam #youView,.stage.nocam #swapBtn,.stage.nocam #flipBtn,.stage.nocam .youreps{display:none!important}
.stage.nocam #trainerView{inset:0!important;width:100%!important;height:100%!important;border-radius:0!important;border:0!important}
.stage.nocam #trainerView video{object-fit:contain;background:#000}
.fcbtn{pointer-events:auto;min-height:44px;padding:0 12px;border-radius:999px;font-weight:700;white-space:nowrap}.fcbtn[aria-pressed=true]{background:#2e9d5b;color:#fff}
.classbar{justify-content:flex-end}
.novoice .flagvoice,.notrainer .flagtrainer,.notrainer .trainer-avatar{display:none!important}
.cloudsaved{display:inline-flex;align-items:center;gap:6px;margin:0 0 8px;padding:6px 12px;border-radius:999px;background:#e3f6ea;color:#1d6b3e;font-weight:700;font-size:.95rem}.cloudsaved.pending{background:#f3ecfa;color:#5b2a86}.cloudsaved[hidden]{display:none}
.dayt{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;overflow:visible!important}.dayt button{min-width:0!important;width:100%;padding:8px 0!important;font-size:clamp(.78rem,3.4vw,1rem);min-height:48px}
@container (max-width:300px){.dayt{grid-template-columns:repeat(4,minmax(0,1fr))}}
.toast.hasbtn{width:min(calc(100vw - 24px),440px);max-width:none;justify-content:space-between;text-align:left}.toast.hasbtn span{flex:1;min-width:0}

/* video library */
.vchips{flex-wrap:nowrap;overflow-x:auto;padding:4px 0 10px;scrollbar-width:none}.vchips .chip{flex:0 0 auto;white-space:nowrap}
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:12px}
.vcard{display:flex;flex-direction:column;text-align:left;padding:0;margin:0;border-radius:18px;overflow:hidden;background:var(--card,#fff);border:1px solid var(--line);min-height:48px;width:100%}
.vthumb{position:relative;aspect-ratio:16/9;background:#2a1740 center/cover no-repeat}.vmins,.vext{position:absolute;bottom:8px;padding:3px 8px;border-radius:999px;background:rgba(0,0,0,.72);color:#fff;font-size:.85rem;font-weight:700}.vmins{right:8px}.vext{left:8px}
.vtxt{display:flex;flex-direction:column;gap:2px;padding:10px 12px 12px}.vtxt b{font-size:1rem;line-height:1.3}.vtxt small{color:var(--mut,#6b5f7a);font-size:.85rem}
.vsheet .vplayer{display:block;width:100%;aspect-ratio:16/9;border:0;background:#000}.vsheet .vbody{padding:14px 18px}.vsheet .rclose{position:absolute;top:calc(8px);right:8px;margin:0;z-index:3}
.videoideas .vgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr))}
/* Community */
.cmrule{background:color-mix(in srgb,var(--accent,#7c3aed) 10%,transparent);border-left:4px solid var(--accent,#7c3aed);padding:.6rem .75rem;border-radius:10px;font-size:clamp(.82rem,3.4vw,.92rem);line-height:1.4;overflow-wrap:break-word}
.cmrulemsg{position:fixed;left:max(12px,var(--sal));right:max(12px,var(--sar));bottom:calc(var(--sab) + 90px);z-index:80;background:var(--card,#fff);color:inherit;border:2px solid #dc2626;border-radius:16px;padding:1rem;box-shadow:0 10px 30px #0005;max-width:520px;margin:auto}
.cmrulemsg p{margin:.4rem 0}
.cmtabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.cmtabs .chip{flex:0 0 auto;white-space:nowrap}
.cmglist{list-style:none;padding:0;margin:.5rem 0;display:grid;gap:.6rem}.cmglist li{display:flex;gap:.6rem;align-items:flex-start}.cmglist li>span{font-size:1.3rem;flex:0 0 auto}.cmglist p{margin:.15rem 0 0}
.cmguide label{display:block;margin:.6rem 0}.cmguide input:not([type=checkbox]){width:100%;box-sizing:border-box}
.cmcompose textarea,.cmcompose input:not([type=file]),.cmcompose select{width:100%;box-sizing:border-box;margin:.25rem 0}
.cmcost{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.cmcost input{width:100%}
.cmactions{align-items:center;gap:.5rem;flex-wrap:wrap}.cmactions .primary{margin-left:auto}.cmphoto{cursor:pointer;padding:.45rem .7rem;border-radius:10px;border:1px solid #8884}
.cmpost header{display:flex;align-items:baseline;gap:.25rem;flex-wrap:wrap}.cmmore{margin-left:auto;background:none;border:0;font-size:1.3rem;min-width:44px;min-height:36px;color:inherit}
.cmtext{white-space:pre-wrap;overflow-wrap:anywhere}.cmimg{width:100%;max-height:420px;object-fit:cover;border-radius:12px;margin:.4rem 0}
.cmreact{display:flex;gap:.35rem;flex-wrap:wrap;margin:.4rem 0}.cmreact button{border-radius:999px;padding:.3rem .65rem;min-height:36px;border:1px solid #8884;background:none;color:inherit}.cmreact button.on{background:color-mix(in srgb,var(--accent,#7c3aed) 18%,transparent);border-color:var(--accent,#7c3aed)}
.cmc{padding:.3rem 0;border-top:1px solid #8882;overflow-wrap:anywhere}.cmcform{display:flex;gap:.4rem;margin-top:.4rem}.cmcform input{flex:1;min-width:0}
.cmmenu{display:flex;flex-direction:column;gap:.3rem;margin-top:.4rem}.cmmenu button{text-align:left}
.cmdose{background:#fef3c7;color:#713f12;border-radius:10px;padding:.45rem .65rem;font-size:.88rem;margin:0 0 .4rem}
.cmheld{background:#e0f2fe;color:#0c4a6e;border-radius:10px;padding:.4rem .6rem;font-size:.85rem;margin:0 0 .4rem}
.cmboard{padding-left:1.4rem}.cmboard li{display:flex;justify-content:space-between;gap:.5rem;padding:.2rem 0}.cmboard li.me{font-weight:700}
.cmmoods{gap:.6rem;flex-wrap:wrap}.cmcheck input[name=t]{width:100%;box-sizing:border-box;margin:.35rem 0}.cmchecks{padding-left:1rem}
.cmguide .check,.cmchal .check{display:flex;gap:.5rem;align-items:flex-start}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.helplinks{display:flex;flex-direction:column;gap:.6rem;align-items:flex-start}.helplinks a{overflow-wrap:anywhere;padding:.2rem 0}
/* v36: opaque header + nav, nothing scrolls underneath; clear danger button */
.topbar{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.dock{background:#fff!important;backdrop-filter:none!important;max-width:none!important;left:0!important;right:0!important;width:100%!important;border-radius:0!important}
body{padding-bottom:calc(96px + var(--sab))!important}
.tab,section.tab{scroll-margin-top:calc(70px + var(--sat))}
button.danger,#cloudDelete{background:#d92d20!important;border:1px solid #b42318!important;color:#fff!important;opacity:1!important;font-weight:700}
button.danger:active{background:#b42318!important}
#legacyWorkout,#legacyClasses{display:none!important}
.trempty{text-align:center;padding:24px 18px;opacity:1!important;color:var(--ink,#2a1740)!important}.trempty h3,.trempty p{color:var(--ink,#2a1740)!important;opacity:1!important;margin:8px 0}.trempty button{margin-top:10px}
#trainerAdmin[hidden]{display:none!important}
/* Workouts rows */
.vrow{margin:14px 0 6px}.vrowhead{display:flex;justify-content:space-between;align-items:center;margin:0 2px 6px}.vrowhead h3{margin:0;font-size:1.02rem}
.linkbtn{background:none;border:0;color:var(--purple,#5b2a86);font-weight:700;padding:6px 4px;min-height:0}
.vscroll{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 8px;scrollbar-width:none}.vscroll::-webkit-scrollbar{display:none}
.vmini{flex:0 0 46%;max-width:180px;scroll-snap-align:start;display:flex;flex-direction:column;gap:4px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:14px;padding:6px;margin:0;min-width:0}
.vmini .vthumb{display:block;position:relative;aspect-ratio:16/9;border-radius:10px;background-size:cover;background-position:center}
.vmini b{font-size:.84rem;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.vmini small{color:var(--mut);font-size:.74rem}
.vgrid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.vgrid2 .vmini{max-width:none}
/* Course */
.coursehead .cbar{height:10px;border-radius:99px;background:var(--lav,#eee6f6);overflow:hidden;margin:6px 0 10px}.coursehead .cbar i{display:block;height:100%;background:var(--green,#2fa36b)}
.cmod summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none}.cmod summary::-webkit-details-marker{display:none}.cmi{font-size:1.4rem}.cmod summary b{flex:1}
.cmc{font-size:.8rem;padding:2px 8px;border-radius:99px;background:var(--lav,#eee6f6)}.cmc.ok{background:var(--green,#2fa36b);color:#fff}
.clesson{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);border-radius:0;padding:12px 4px;margin:0}
.ctick{width:24px;height:24px;flex:none;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-size:.8rem}.ctick.on{background:var(--green,#2fa36b);border-color:var(--green,#2fa36b);color:#fff}
.lessonsheet{padding:20px 18px calc(20px + var(--sab))}.lessonsheet h2{margin:4px 0 10px}
/* Home tidy */
.minis{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px;align-items:stretch}
.mini.water{grid-column:auto!important}.minis>.mini{min-height:150px;height:100%;box-sizing:border-box;margin:0}
.mini.water .wbtns2{display:flex;gap:6px}.mini.water .wbtns2 button{flex:1;min-width:0;padding:8px 4px;margin:0;font-size:.85rem}
#stepsCard{flex-direction:column;align-items:flex-start;justify-content:space-between}
.goalprompt{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.goalprompt button{margin:0;white-space:nowrap}
.weekchecks{display:flex!important;flex-direction:column;gap:0}
.wrowck{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);border-radius:0;padding:10px 2px;margin:0}.wrowck:first-child{border-top:0}
.wrowck .wi{font-size:1.3rem}.wrowck .wt{flex:1;display:flex;flex-direction:column}.wrowck small{color:var(--mut)}
.wrowck .wtick{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--lav);color:var(--mut);font-weight:900}.wrowck.done .wtick{background:var(--green);color:#fff}
.rcredit{font-size:11px;color:#6b6478;margin:14px 0 0;line-height:1.4}.rcredit a{color:inherit;text-decoration:underline}
.smash{display:inline-block;font-size:.7rem;font-weight:800;color:#fff;background:var(--green,#2fa36b);border-radius:99px;padding:1px 7px;vertical-align:middle}
.mini.water .wtop>i{font-size:1.3rem}.mini.water .wtop{align-items:flex-start}#waterL{font-size:1.1rem;white-space:nowrap}#waterL .smash{display:block;width:max-content;margin-top:3px}
#stepsCard{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:6px}#stepsCard>span{display:flex;flex-direction:column}
.warm .wbody{padding:22px 18px calc(20px + var(--sab))}.warm ul{padding-left:20px}.wmove{font-size:1.4rem;text-align:center;margin:18px 0 4px}.wclock{font-size:3rem;font-weight:800;text-align:center;margin:0;color:var(--purple,#5b2a86)}

.vthumb>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit}.vthumb .vmins{z-index:1}.vmini .vby{color:var(--acc,#6b3fa0);font-weight:600}
.vtiles{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}@media(min-width:700px){.vtiles{grid-template-columns:repeat(3,1fr)}}.vtile{position:relative;aspect-ratio:16/10;border:0;border-radius:16px;overflow:hidden;padding:0;margin:0;background:#2a1740;text-align:left;color:#fff}.vtile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.vtile::after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 35%,rgba(30,10,50,.88))}.vtname,.vtcount{position:absolute;left:10px;z-index:1}.vtname{bottom:24px;font-weight:800;font-size:1.02rem;line-height:1.15}.vtcount{bottom:7px;font-size:.78rem;opacity:.9}.fitcards{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0 14px}.fitcard{border:0;border-radius:16px;padding:16px 12px;text-align:left;color:#fff;background:linear-gradient(135deg,#5b2a86,#8e5cc7);font-weight:800;font-size:1.05rem;margin:0}.fitcard small{display:block;font-weight:500;opacity:.9;font-size:.78rem;margin-top:4px}.fitcard.alt{background:linear-gradient(135deg,#3d1d5c,#6b3fa0)}
.homefit{display:block;width:100%;margin:10px 0}
.coursebanner{display:flex;gap:14px;align-items:center;width:100%;margin:6px 0 16px;padding:18px 16px;border:0;border-radius:20px;text-align:left;color:#fff;background:linear-gradient(135deg,#4a1f73,#8e5cc7 60%,#3fa57a);box-shadow:0 8px 24px rgba(74,31,115,.28)}.coursebanner .cbicon{font-size:2.4rem;line-height:1}.coursebanner b{display:block;font-size:1.25rem}.coursebanner small{display:block;opacity:.92;margin-top:2px}.coursebanner em{display:inline-block;margin-top:8px;font-style:normal;font-weight:700;background:rgba(255,255,255,.2);padding:5px 12px;border-radius:999px}.homecourse{margin:10px 0 0}.fithead{margin:4px 0 2px}
/* Food photo diary */
.foodtoday{display:block;width:100%;text-align:left;margin:10px 0}.foodtoday .ftrow{display:flex;gap:12px;align-items:center}.foodtoday i{font-style:normal;font-size:1.8rem}.foodtoday .ftmain{flex:1;min-width:0}.foodtoday small{display:block;color:var(--mut)}.foodtoday em{font-style:normal;font-size:.7rem;background:var(--lav);color:var(--teal);border-radius:999px;padding:1px 7px;margin-left:4px}.foodtoday b{display:block;font-size:1.1rem}.foodtoday .ftcta{font-size:1.5rem;background:var(--lav);border-radius:14px;padding:8px 10px}
.foodtoday .bar,.fdcard .bar{height:8px;background:var(--lav);border-radius:99px;margin-top:10px;overflow:hidden}.foodtoday .bar i{display:block;height:100%;background:var(--green);border-radius:99px}
.fdcta{margin:0 0 12px}
.fdhero{display:flex;gap:12px;align-items:center;background:linear-gradient(135deg,#3d1766,#7a3fb0);color:#fff;border-radius:20px;padding:16px;margin:4px 0 12px}.fdhero h2{margin:0 0 2px;font-size:1.3rem}.fdhero p{margin:0;opacity:.92}.fdicon{font-size:2.2rem}
.fdnav{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.fdnav button{min-width:44px;min-height:44px;padding:0;font-size:1.4rem}.fdnav b{font-size:1.1rem}
.fdtot{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;text-align:center}.fdtot>div{background:var(--lav);border-radius:12px;padding:8px 2px}.fdtot>div.p{background:#e6f5ec}.fdtot b{display:block;font-size:.98rem}.fdtot small{color:var(--mut);font-size:.72rem}
.fded .fdtot{display:block;background:var(--lav);border-radius:12px;padding:10px;text-align:left}
.fdest{margin:6px 0 10px}
.fdbtns{display:grid;grid-template-columns:1.4fr 1fr;gap:10px}.fdbtns label{display:flex;align-items:center;justify-content:center;min-height:54px;border-radius:14px;font-weight:700;cursor:pointer;border:1px solid var(--line);background:var(--card)}.fdbtns label.primary{background:var(--teal);color:#fff;border:0}
.fdbtns label:focus-within{outline:3px solid var(--teal2)}
.fdsoon .pill,.pill{display:inline-block;background:var(--lav);color:var(--teal);font-weight:700;font-size:.78rem;border-radius:999px;padding:3px 10px}.pill.est{background:#fff4e0;color:#8a5200}
.fdrow{display:flex;gap:12px;align-items:center;width:100%;text-align:left;margin:0 0 10px;padding:10px;border-radius:16px}.fdthumb{flex:0 0 64px;height:64px;border-radius:12px;background:var(--lav);display:flex;align-items:center;justify-content:center;font-size:1.6rem;overflow:hidden}.fdthumb img{width:100%;height:100%;object-fit:cover}
.fdinfo{flex:1;min-width:0;display:flex;flex-direction:column}.fdinfo small{color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fdinfo b small{font-weight:400}.fdmac{font-size:.85rem;font-weight:600;color:var(--teal)}
.fdscore{flex:0 0 auto;font-size:.75rem;background:#e6f5ec;color:#1d6b3d;border-radius:999px;padding:4px 8px;max-width:38%;text-align:center}
.overlay.fdsheet{background:rgba(31,21,52,.55);display:flex;align-items:flex-end;justify-content:center;padding:calc(8px + var(--sat)) 0 0;z-index:150}
.fdsheet .sheet{background:var(--card);color:var(--txt);width:100%;max-width:640px;max-height:calc(var(--vh) - var(--sat) - 8px);overflow:auto;border-radius:22px 22px 0 0;padding:16px 16px calc(18px + var(--sab))}
.fdwait{text-align:center;padding:10px 0}.fdprev{width:100%;max-height:42vh;object-fit:cover;border-radius:16px;margin-bottom:10px}
.spin{width:38px;height:38px;margin:10px auto;border:4px solid var(--lav);border-top-color:var(--teal);border-radius:50%;animation:fdspin .9s linear infinite}@keyframes fdspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation-duration:3s}}
.fdedtop{display:flex;gap:12px;align-items:flex-start}.fdedimg{flex:0 0 110px;height:110px;border-radius:14px;overflow:hidden;background:var(--lav)}.fdedimg img{width:100%;height:100%;object-fit:cover}
.fdscorebig{margin:12px 0;background:#e6f5ec;border-radius:14px;padding:10px 12px}.fdscorebig b{display:block;color:#1d6b3d;font-size:1.1rem}.fdscorebig small{color:#2b4a36}
.fdmeal{display:flex;gap:10px;align-items:center;margin:6px 0}.fdmeal select{flex:1;min-height:44px;border-radius:12px;border:1px solid var(--line);background:var(--card);padding:0 10px}
.fdportion{display:flex;gap:6px;align-items:center;margin:8px 0;flex-wrap:wrap}.fdportion button{min-height:40px;padding:6px 14px;border-radius:999px}
.fditem{border:1px solid var(--line);border-radius:14px;padding:8px 10px;margin:8px 0}.fdirow{display:flex;gap:6px}.fdname{flex:1;min-height:40px;border:1px solid var(--line);border-radius:10px;padding:0 10px;font-weight:600;background:var(--card)}.fdx{min-width:40px;min-height:40px;padding:0}
.fdnums{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;margin:6px 0 2px}.fdnums label{font-size:.68rem;color:var(--mut);display:flex;flex-direction:column}.fdnums input{width:100%;min-height:36px;border:1px solid var(--line);border-radius:8px;padding:0 4px;text-align:center;background:var(--card);font-size:.9rem}
@media (max-width:380px){.fdnums{grid-template-columns:repeat(3,1fr)}.fdtot{grid-template-columns:repeat(3,1fr)}}
.fdtips{background:var(--lav);border-radius:14px;padding:10px 12px;margin:10px 0}.fdtips ul{margin:6px 0 0;padding-left:20px}
.fdact{display:grid;grid-template-columns:2fr 1fr;gap:8px;margin-top:10px}.fdact .danger{grid-column:1/-1}
.vsoon{text-align:center;padding:26px 18px;background:linear-gradient(160deg,#f6effd,#eaf7f1);border:1px solid #e4d6f5}.vsoon .vsicon{font-size:2.6rem;display:block;line-height:1;margin-bottom:6px}.vsoon h3{margin:4px 0 8px;color:#4a1f73}.vsoon p{margin:6px auto;max-width:34em}

.vmini .vthumb .vdone,.vcard .vthumb .vdone{position:absolute;left:6px;top:6px;z-index:1;background:#2e9d5b;color:#fff;font-size:.7rem;font-weight:700;padding:2px 7px;border-radius:999px}
.avainfo .avaby{display:flex;gap:10px;align-items:flex-start;margin:4px 0 8px}.avainfo .avaby img{width:52px;height:52px;border-radius:50%;object-fit:cover;flex:0 0 auto}
.aibadge{display:inline-block;font-size:.68rem;font-weight:600;color:#5b2a86;background:#efe4fb;border-radius:999px;padding:1px 8px;vertical-align:middle}
.avaex summary{cursor:pointer;font-weight:600;margin:6px 0}.avaex ol{padding-left:20px;margin:4px 0 10px}.avaex li{margin:4px 0}
.overlay.recipe .rsheet.vsheet{max-height:calc(var(--vh, 100vh) - var(--sat, 0px) - var(--sab, 0px) - 40px)}
.vsheet.vb .vbar{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 6px 16px}.vsheet.vb .vbar .rclose{position:static;margin:0}
