:root{
  --bg:#060807;--bg2:#0b0e0c;--card:#121613;--card2:#191e1b;--line:#222a25;--line2:#2e3832;
  --text:#f2f6f3;--muted:#9aa59e;--dim:#67716b;--green:#00f57a;--green2:#3dff9a;--green-deep:#00b85c;--green-ink:#04120a;
  --blue:#5fb3ff;--amber:#ffb347;--pink:#ff8fa3;--purple:#c98bff;--red:#ff6b6b;
  --display:"Outfit","Avenir Next","Segoe UI",system-ui,sans-serif;--body:"Manrope","Avenir","Segoe UI",system-ui,sans-serif;
  --ease:cubic-bezier(.2,.8,.2,1);--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{color-scheme:dark}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}
button,input,select{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--display);margin:0;letter-spacing:-.02em;line-height:1.1}
h1{font-size:1.9rem;font-weight:700}h2{font-size:1.35rem;font-weight:600}h3{font-size:1.05rem;font-weight:600}
p{margin:0}
.muted{color:var(--muted)}.dim{color:var(--dim)}.g{color:var(--green)}
.small{font-size:.85rem}
#embers{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.62}
#app{min-height:100dvh;display:flex;flex-direction:column;position:relative;z-index:1}
.screen{flex:1;padding:calc(14px + var(--sat)) 14px calc(96px + var(--sab));max-width:640px;width:100%;margin-inline:auto;animation:fade .35s var(--ease)}
/* Full-bleed pages (Community): content runs to the edges, cards become sections divided by hairlines. */
.screen.wide{padding-inline:0}
.screen.wide .topbar{padding-inline:14px;margin-bottom:6px}
.screen.wide>.card{margin-inline:14px}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}
.brand{font-family:var(--display);font-weight:800;color:var(--green);font-size:1.25rem;letter-spacing:-.01em}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.8rem;font-weight:700;color:var(--muted)}
.chip.on{background:rgba(0,245,122,.12);border-color:rgba(0,245,122,.4);color:var(--green)}
.chip .fire{font-size:.95rem}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;font:700 1rem var(--body);padding:14px 20px;border-radius:999px;text-decoration:none;transition:transform .15s var(--ease),background .15s;white-space:nowrap}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--green);color:var(--green-ink)}
.btn-ghost{background:var(--card);color:var(--text);border:1px solid var(--line2)}
.btn-danger{background:transparent;color:var(--red);border:1px solid var(--line2)}
.btn-block{width:100%}
.btn-sm{padding:9px 14px;font-size:.88rem}
.btn:disabled{opacity:.5;cursor:default}
.row{display:flex;gap:10px;align-items:center}
.stack{display:grid;gap:10px}
.spread{display:flex;justify-content:space-between;align-items:center;gap:12px}

.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px}
.card.hero{background:linear-gradient(160deg,rgba(0,245,122,.10),rgba(18,24,20,.72) 60%),url(img/banners/hero.jpg) center/cover,var(--card);border-color:rgba(0,245,122,.28);position:relative;overflow:hidden}
.card.hero::after{content:"";position:absolute;right:-40px;top:-40px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(0,245,122,.22),transparent 70%);pointer-events:none}
/* Session banners — on-brand gradient headers per workout type (no photos needed) */
.sbanner{position:relative;height:120px;border-radius:16px;margin:6px 0 14px;overflow:hidden;display:flex;align-items:flex-end;padding:14px 16px;border:1px solid rgba(255,255,255,.07);background-size:cover;background-position:center;background-color:#111}
.sbanner .sb-tag{position:relative;z-index:1;font-family:var(--display);font-weight:700;font-size:.78rem;letter-spacing:2px;text-transform:uppercase;color:#fff;background:rgba(0,0,0,.35);padding:5px 12px;border-radius:999px;backdrop-filter:blur(4px)}
.item .ic.k-run{background:rgba(0,245,122,.14)}
.item .ic.k-cond{background:rgba(255,122,26,.16)}
.item .ic.k-cool{background:rgba(58,160,255,.16)}
.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--green)}

/* today items */
.item{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 16px;cursor:pointer;transition:border-color .2s,transform .2s var(--ease)}
.item:active{transform:scale(.99)}
.item.done{border-color:rgba(0,245,122,.35);background:rgba(0,245,122,.05)}
.item .t{font-size:.72rem;font-weight:700;letter-spacing:.06em;color:var(--dim);text-transform:uppercase}
.item b{display:block;font-family:var(--display);font-weight:600;font-size:1.02rem}
.item .s{color:var(--muted);font-size:.85rem}
.item .k{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--card2);font-size:1.2rem}
.item.done .k{background:var(--green);color:var(--green-ink)}
.k.mob{box-shadow:inset 0 0 0 2px var(--purple)}.k.str{box-shadow:inset 0 0 0 2px var(--green)}.k.cond{box-shadow:inset 0 0 0 2px var(--blue)}.k.walk{box-shadow:inset 0 0 0 2px var(--blue)}.k.cool{box-shadow:inset 0 0 0 2px var(--amber)}.k.sleep{box-shadow:inset 0 0 0 2px var(--dim)}
.check{width:30px;height:30px;border-radius:50%;border:2px solid var(--line2);display:grid;place-items:center;font-weight:800;color:var(--green-ink);flex:none;transition:background .2s}
.item.done .check{background:var(--green);border-color:var(--green)}
.item .ready{font-size:.8rem;font-weight:800;letter-spacing:.02em;color:var(--green-ink);background:var(--green);border-radius:999px;padding:8px 13px;flex:none;white-space:nowrap}
.progress{height:8px;background:var(--card2);border-radius:999px;overflow:hidden}
.swingline{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding-top:11px;border-top:1px solid var(--line);font-size:.82rem;flex-wrap:wrap}
.swingline .sl-now{font-weight:700;color:var(--text)}
.swingline .sl-to{font-weight:800;color:var(--green)}
.progress i{display:block;height:100%;background:var(--green);border-radius:999px;transition:width .5s var(--ease)}

/* week strip */
.strip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:8px 0 14px}
.strip button{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 2px;text-align:center;cursor:pointer;color:var(--muted)}
.strip button b{display:block;font-family:var(--display);font-size:1rem;color:var(--text)}
.strip button small{font-size:.65rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.strip button.sel{border-color:var(--green);background:rgba(0,245,122,.1)}
.strip button.did{border-color:rgba(0,245,122,.45)}
.strip button.fly small{color:var(--green)}.strip button.rr small{color:var(--dim)}

/* tab bar */
.tabs{position:fixed;left:0;right:0;bottom:0;background:rgba(6,8,7,.9);backdrop-filter:blur(16px);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding:6px 2px calc(8px + var(--sab));z-index:20}
.tabs a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 2px;border-radius:12px;text-decoration:none;color:var(--dim);font-size:.62rem;font-weight:700;letter-spacing:0}
.tabs a svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fpost{border:1px solid var(--line2);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--card)}
.fbody{margin:6px 0 0;white-space:pre-wrap;font-size:.95rem;line-height:1.45}
.fpost .fdel{margin-top:8px}
.fsite{display:block;font-size:.74rem;color:var(--green);font-weight:600;margin-top:1px}
.tabs a.on{color:var(--green)}

/* forms */
label.f{display:block;font-size:.76rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin:14px 0 6px}
input.in,select.in{width:100%;height:50px;padding:0 16px;border-radius:14px;border:1px solid var(--line2);background:var(--card);color:var(--text);font-size:1rem}
input.in:focus,select.in:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}
.seg{display:flex;flex-wrap:wrap;gap:8px}
.seg button{border:1px solid var(--line2);background:var(--card);color:var(--muted);font-weight:700;padding:10px 14px;border-radius:999px;cursor:pointer}
.seg button.on{background:var(--green);border-color:var(--green);color:var(--green-ink)}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.tiles button{border:1px solid var(--line2);background:var(--card);color:var(--muted);font-weight:700;font-size:.82rem;padding:14px 8px;border-radius:14px;cursor:pointer;line-height:1.2}
.tiles button.on{border-color:var(--green);background:rgba(0,245,122,.12);color:var(--green)}
.steps-dots{display:flex;gap:6px;margin-bottom:16px}
.steps-dots i{flex:1;height:4px;border-radius:2px;background:var(--card2)}
.steps-dots i.on{background:var(--green)}
.err{color:var(--red);font-size:.9rem;margin-top:8px}
.ok{color:var(--green);font-size:.9rem;margin-top:8px}

/* runner */
.runner{position:fixed;inset:0;background:rgba(6,8,7,.9);z-index:30;display:flex;flex-direction:column;padding:calc(14px + var(--sat)) 18px calc(18px + var(--sab));max-width:560px;margin-inline:auto;animation:fade .3s var(--ease)}
.runner .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.runner .prog{display:flex;gap:4px;margin-bottom:18px}
.runner .prog i{flex:1;height:4px;border-radius:2px;background:var(--card2)}
.runner .prog i.on{background:var(--green)}
.runner .body{flex:1;display:flex;flex-direction:column;gap:14px}
.runner .ex{font-size:clamp(1.7rem,7vw,2.3rem);font-weight:700;font-family:var(--display);letter-spacing:-.02em;line-height:1.05}
.runner .target{font-family:var(--display);font-size:1.2rem;color:var(--green);font-weight:600}
.timer{font-family:var(--display);font-size:clamp(4.6rem,26vw,7.6rem);font-weight:700;letter-spacing:-.04em;line-height:1;text-align:center;font-variant-numeric:tabular-nums;margin:8px 0}
.timer.rest{color:var(--amber)}
.ring{margin:0 auto;width:min(80vw,320px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--green) var(--p,0%),var(--card2) 0);position:relative}
.ring::before{content:"";position:absolute;inset:10px;border-radius:50%;background:var(--bg)}
.ring>*{position:relative}
.runner .cue{color:var(--muted);font-size:.98rem;max-width:36ch}
.runner .body{min-height:0;overflow-y:auto}
.posefig{background:var(--card);border:1px solid var(--line);border-radius:16px;height:clamp(104px,19vh,158px);display:grid;place-items:center;padding:8px;--fig-body:var(--green2);--fig-eq:var(--green);--fig-ground:var(--line2)}
.posefig .figsvg{height:100%;width:auto;max-width:100%;overflow:visible}
.posefig .figsvg line,.posefig .figsvg path{transition:none}
.mtrack{font-size:.72rem;font-weight:700;letter-spacing:.06em;color:var(--green);opacity:.85;text-align:center;font-variant-numeric:tabular-nums}
.runner .foot{display:grid;gap:10px}
.runner .setrow{display:flex;gap:8px;flex-wrap:wrap}
.runner .setrow span{border:1px solid var(--line2);border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:700;color:var(--muted)}
.runner .setrow span.done{background:var(--green);color:var(--green-ink);border-color:var(--green)}
.runner .setrow span.cur{border-color:var(--green);color:var(--green)}
.finish{text-align:center;display:grid;gap:14px;place-items:center;flex:1;justify-content:center}
.finish .big{font-size:4rem}

/* meals */
.meal{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start}
.meal .ic{width:42px;height:42px;border-radius:12px;background:var(--card2);display:grid;place-items:center;font-size:1.2rem}
.meal b{display:block;font-family:var(--display);font-weight:600}
.meal p{color:var(--muted);font-size:.9rem}

/* crew */
.lb{display:grid;gap:8px}
.lb .m{display:grid;grid-template-columns:32px 1fr auto;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.lb .m.me{border-color:rgba(0,245,122,.45)}
.lb .m .r{font-family:var(--display);font-weight:700;color:var(--dim);text-align:center}
.lb .m.top .r{color:var(--green)}
.lb .m b{display:block;font-weight:700}
.lb .m small{color:var(--muted)}
.lb .m .st{font-family:var(--display);font-weight:700;color:var(--green);font-size:1.1rem;text-align:right;white-space:nowrap}
.gstats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.gcell{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:8px 4px;text-align:center;display:grid;gap:1px}
.gcell b{font-family:var(--display);font-size:1.2rem;color:var(--green)}
.code{font-family:var(--display);font-size:2rem;font-weight:700;letter-spacing:.2em;color:var(--green);text-align:center;background:var(--bg);border:1px dashed var(--line2);border-radius:14px;padding:14px}
.toast{white-space:nowrap;position:fixed;left:50%;bottom:calc(100px + var(--sab));transform:translateX(-50%);background:var(--green);color:var(--green-ink);font-weight:700;padding:10px 18px;border-radius:999px;z-index:40;animation:fade .3s var(--ease);box-shadow:0 10px 30px rgba(0,245,122,.3)}
.install{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;font-size:.9rem;color:var(--muted)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* video */
.vbox{border-radius:16px;overflow:hidden;background:#000;aspect-ratio:16/9;width:100%;position:relative}
.vbox iframe,.vbox video{position:absolute;inset:0;width:100%;height:100%;border:0}
.vplay{position:absolute;inset:0;width:100%;height:100%;border:0;cursor:pointer;background:#111 center/cover no-repeat;display:grid;place-items:center;align-content:center;gap:6px;color:#fff}
.vplay::before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,.15),rgba(0,0,0,.55))}
.vplay span{position:relative;width:64px;height:64px;border-radius:50%;background:var(--green);color:var(--green-ink);display:grid;place-items:center;font-size:1.5rem;padding-left:5px}
.vplay small{position:relative;font-weight:700;font-size:.8rem;letter-spacing:.04em}
/* meals */
.mealcard{padding:0;overflow:hidden}
.mc-body{padding:14px 16px}
.plate{width:84px;height:84px;flex:none}
.legend{display:grid;gap:4px;font-size:.8rem;color:var(--muted)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.dayhd{font-family:var(--display);font-weight:600;font-size:1.05rem}
.mp-row{display:grid;grid-template-columns:56px 1fr;gap:10px;font-size:.88rem;color:var(--muted);margin-top:8px}
.mp-k{font-weight:700;color:var(--dim);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;padding-top:2px}
.runner .vbox{height:min(190px,28dvh);aspect-ratio:auto}
.vplay.vsearch{text-decoration:none}
.vmore{display:inline-block;margin-top:8px;font-size:.82rem;font-weight:700;color:var(--green);text-decoration:none}
.chip.clock{font-variant-numeric:tabular-nums;background:var(--green);color:var(--green-ink);border-color:var(--green)}
.timer-done{font-size:2.4rem;font-weight:800;margin:2px 0 6px;color:var(--green);font-variant-numeric:tabular-nums}
.run-clock{text-align:center;margin:6px 0 2px}
.run-clock .rc-lab{display:block;font-size:.66rem;font-weight:800;letter-spacing:.16em;color:var(--muted)}
.run-clock b{font-family:var(--display,inherit);font-size:clamp(4.4rem,24vw,7.2rem);font-weight:800;line-height:1;color:var(--green);font-variant-numeric:tabular-nums}
.body.countdown{text-align:center;align-items:center;justify-content:center}
.count-num{font-size:clamp(8rem,44vw,13rem);font-weight:800;line-height:1;margin:14px 0;color:var(--green);font-variant-numeric:tabular-nums;animation:pop .4s ease}
@keyframes pop{from{transform:scale(.6);opacity:.3}to{transform:scale(1);opacity:1}}
/* pinned mini demo player — watch the demo while you keep training */
.dp{position:fixed;right:10px;bottom:76px;width:min(46vw,190px);z-index:30;background:#000;border-radius:12px;overflow:hidden;box-shadow:0 10px 32px rgba(0,0,0,.55);display:none}
.dp.on{display:block}
.dp-bar{display:flex;align-items:center;justify-content:space-between;gap:6px;background:#141414;color:#fff;padding:5px 6px 5px 9px;font-size:.72rem;font-weight:700}
.dp-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dp-close{background:none;border:0;color:#fff;font-size:1rem;line-height:1;cursor:pointer;padding:2px 4px;flex:none}
.dp-frame{position:relative;aspect-ratio:16/9;background:#000}
.dp-frame iframe,.dp-frame video{position:absolute;inset:0;width:100%;height:100%;border:0}
/* next-set countdown inside the rest game */
.rg-count{position:absolute;inset:0;display:none;align-items:center;justify-content:center;flex-direction:column;font-weight:800;color:var(--green);pointer-events:none;text-shadow:0 4px 24px rgba(0,0,0,.6)}
.rg-count.on{display:flex}
.rg-count .n{font-size:7rem;line-height:1;font-variant-numeric:tabular-nums;animation:pop .4s ease}
.rg-count .l{font-size:1rem;letter-spacing:.1em;text-transform:uppercase;opacity:.85}
.runner .body{overflow-y:auto}
/* v2 */
.avatar{width:34px;height:34px;border-radius:50%;background:var(--card2);border:1px solid var(--line2);display:grid;place-items:center;font-family:var(--display);font-weight:700;color:var(--green);text-decoration:none;font-size:.9rem}
.card.slim{padding:12px 14px}
.card.ci{border-color:rgba(0,245,122,.25);margin-top:10px}
.ci-row{display:grid;grid-template-columns:56px 1fr;align-items:center;gap:8px;margin-top:6px;font-size:.85rem;font-weight:700;color:var(--muted)}
.scale{display:flex;gap:6px}
.scale button{flex:1;border:1px solid var(--line2);background:var(--bg);border-radius:10px;font-size:1.25rem;padding:6px 0;cursor:pointer;line-height:1}
.scale button.on{border-color:var(--green);background:rgba(0,245,122,.14)}
.card.nudge{border-color:rgba(0,245,122,.4);background:rgba(0,245,122,.06);margin-top:10px;font-size:.95rem}
.item.adj{border-color:rgba(255,179,71,.45)}
.exrow{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px 10px 10px}
.exrow.off{opacity:.45}
.exrow b{display:block;font-family:var(--display);font-weight:600;font-size:.98rem}
.exrow .s{color:var(--muted);font-size:.8rem}
.exrow .th{width:72px;height:48px;border-radius:9px;background:#111 center/cover no-repeat;display:grid;place-items:center;cursor:pointer;position:relative;overflow:hidden}
.exrow .th span{width:24px;height:24px;border-radius:50%;background:var(--green);color:var(--green-ink);display:grid;place-items:center;font-size:.7rem;padding-left:2px}
.setlog{display:flex;flex-direction:column;gap:6px}
.setlog .loglab{font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-align:center}
.setlog .logrow{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.setlog .in{height:46px;text-align:center;font-family:var(--display);font-size:1.15rem;font-weight:600}
.setlog .in:only-child{grid-column:1/-1}
.setlog .hint{font-size:.8rem;color:var(--green);text-align:center}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:40;display:flex;align-items:flex-end;justify-content:center;animation:fade .2s var(--ease)}
.sheet{background:var(--card);border:1px solid var(--line2);border-radius:22px 22px 0 0;padding:16px 18px calc(18px + var(--sab));width:100%;max-width:560px}
.stat{flex:1;text-align:center;padding:12px 6px}
.stat h2{margin-top:4px}
.heat{display:grid;grid-template-columns:repeat(10,1fr);grid-auto-flow:column;grid-template-rows:repeat(7,1fr);gap:4px;margin-top:10px}
.heat i{aspect-ratio:1;border-radius:3px;background:var(--card2)}
.heat i.l1{background:rgba(0,245,122,.35)}.heat i.l2{background:rgba(0,245,122,.65)}.heat i.l3{background:var(--green)}.heat i.fut{background:transparent;border:1px dashed var(--line)}
.chart{width:100%;height:auto;margin-top:8px;display:block}
.badges{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.badge-t{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 6px;text-align:center;opacity:.35;display:grid;gap:4px}
.badge-t.on{opacity:1;border-color:rgba(0,245,122,.45)}
.badge-t span{font-size:1.6rem}.badge-t small{font-size:.7rem;font-weight:700;color:var(--muted)}

.banner{display:block;text-decoration:none;margin-top:10px;border-color:rgba(0,245,122,.4);background:rgba(0,245,122,.07)}
.banner b{display:block;font-family:var(--display);font-weight:600}
.banner span{font-size:.85rem;color:var(--muted)}
.banner.lock{border-color:rgba(255,179,71,.5);background:rgba(255,179,71,.07)}
.banner.strava-note{border-color:rgba(252,82,0,.55);background:rgba(252,82,0,.09)}
.sn-row{display:flex;gap:12px;align-items:center}
.sn-map{flex:0 0 auto;background:rgba(0,0,0,.25);border-radius:10px;padding:4px;border:1px solid rgba(0,245,122,.25)}
.runmap{display:block}
.celeb{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;pointer-events:none}
.celeb canvas{position:absolute;inset:0}
.celeb-card{position:relative;pointer-events:auto;background:var(--card);border:1px solid rgba(0,245,122,.4);border-radius:20px;padding:24px 28px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.5);animation:pop .35s cubic-bezier(.2,1.4,.5,1)}
.celeb-card b{display:block;font-family:var(--display);font-size:1.15rem;margin-top:4px}
.celeb-emoji{font-size:56px;line-height:1}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
.feats{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:8px}
.feats li{display:flex;gap:10px;align-items:flex-start;color:var(--muted);font-size:.95rem}
.feats li::before{content:"✓";color:var(--green);font-weight:800}

/* ---- week report card ---- */
.wc-hero{background:linear-gradient(160deg,var(--card2),var(--card))}
.wc-grade{font-family:var(--display);font-weight:800;font-size:3.2rem;line-height:1;width:84px;height:84px;display:grid;place-items:center;border-radius:20px;background:var(--card);border:1px solid var(--line2)}
.wc-grade.g-A{color:var(--green);border-color:rgba(0,245,122,.5)}
.wc-grade.g-B{color:var(--blue)}.wc-grade.g-C{color:var(--amber)}.wc-grade.g-D,.wc-grade.g-—{color:var(--dim)}
.wc-chart{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;height:140px;padding:14px}
.wc-day{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px;height:100%}
.wc-bar{width:70%;min-height:6px;border-radius:6px 6px 3px 3px;background:var(--line2)}
.wc-bar.on{background:var(--green)}.wc-bar.rr{background:var(--amber)}.wc-bar.fly{background:var(--purple)}
.wc-day small{color:var(--dim);font-size:.72rem}

/* ---- crew feed ---- */
.feed{gap:8px}
.fi{display:flex;flex-direction:column;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.fi-top{display:flex;gap:12px;align-items:center}
.fav{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:var(--card2);color:var(--green);font-family:var(--display)}
.fi-top>div{flex:1;min-width:0}
.fi .react{flex:none}
.fi-proof{position:relative;border-radius:10px;overflow:hidden;line-height:0}
.fi-proof img{width:100%;max-height:280px;object-fit:cover;display:block}
.proof-tag{position:absolute;left:8px;bottom:8px;background:rgba(0,0,0,.6);color:#fff;font-size:.72rem;font-weight:600;padding:3px 8px;border-radius:999px;line-height:1.2}
.proofpic{position:relative;margin:4px 0 10px;border-radius:12px;overflow:hidden}
.proofpic img{width:100%;max-height:240px;object-fit:cover;display:block;border-radius:12px}
.proofpic .btn{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.6);color:#fff;border:none}

/* ---- notifications ---- */
.notif-row{padding:6px 0}
.notif-row input{width:20px;height:20px;accent-color:var(--green)}

/* ---- mini segmented control (leaderboard period) ---- */
.seg.mini{gap:6px}
.seg.mini button{padding:5px 12px;font-size:.82rem}
.wk-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.wk-day{flex:1;text-align:left;border:1px solid var(--line2);background:var(--card);color:var(--muted);font-weight:700;padding:11px 14px;border-radius:12px;cursor:pointer}
.wk-day.on{background:var(--green);border-color:var(--green);color:var(--green-ink)}
.wk-h{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--muted);white-space:nowrap}
.wk-h.off{opacity:.4}
.wk-h .wk-hin{width:64px;padding:9px 8px;text-align:center}
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.me-lab{margin:18px 0 2px;font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.me-sec{border:1px solid var(--line);border-radius:16px;background:var(--card);overflow:hidden}
.me-sec>summary{list-style:none;cursor:pointer;padding:15px 16px;font-weight:700;font-size:.95rem;display:flex;align-items:center;justify-content:space-between}
.me-sec>summary::-webkit-details-marker{display:none}
.me-sec>summary::after{content:"›";color:var(--muted);font-size:1.3rem;line-height:1;transform:rotate(90deg);transition:transform .2s}
.me-sec[open]>summary::after{transform:rotate(-90deg)}
.me-sec[open]>summary{border-bottom:1px solid var(--line)}
.me-sec>*:not(summary){margin-left:14px;margin-right:14px}
.me-sec>*:last-child{margin-bottom:14px}
.me-sec .card{border:none;background:var(--card2)}
.install-banner{position:relative}
.install-banner b{padding-right:26px}
.install-banner span{display:block;margin-bottom:2px}
.install-banner .btn{display:inline-block;width:auto}
.install-banner .ib-x{position:absolute;top:8px;right:10px;background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;padding:4px;line-height:1}
#offbar{position:fixed;left:50%;transform:translateX(-50%) translateY(20px);bottom:calc(72px + var(--sab));z-index:40;background:rgba(255,179,71,.16);border:1px solid rgba(255,179,71,.5);color:#ffb347;font-size:.82rem;font-weight:700;padding:8px 16px;border-radius:999px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .25s,transform .25s;backdrop-filter:blur(8px)}
#offbar.show{opacity:1;transform:translateX(-50%) translateY(0)}
.card.sess{border-color:rgba(0,245,122,.22)}
.card.sess.past{opacity:.55}
.pb-row{align-items:flex-start}
.pb-row b{white-space:nowrap;font-variant-numeric:tabular-nums}
.me-head{display:flex;align-items:center;gap:14px;margin-top:6px}
.me-avatar{position:relative;width:64px;height:64px;flex:none;border-radius:50%;border:2px solid var(--line2);background:var(--card);color:var(--muted);font-weight:800;font-size:1.5rem;cursor:pointer;overflow:hidden;padding:0}
.me-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.me-avatar-edit{position:absolute;right:-2px;bottom:-2px;width:24px;height:24px;border-radius:50%;background:var(--green);color:var(--green-ink);font-size:.7rem;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}
.toggle-sm{display:flex;align-items:center;gap:6px;font-size:.82rem;color:var(--muted);font-weight:700}
.toggle-sm input{width:18px;height:18px;accent-color:var(--green)}
.cw-row{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--line2)}
.cw-ex{flex:1;min-width:0;display:flex;flex-direction:column}
.cw-ex b{font-size:.92rem}
.cw-sr{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:.85rem}
.cw-sr .in{width:52px;padding:8px 6px;text-align:center}
.cw-ctl{display:flex;gap:4px}
.cw-ctl button{width:30px;height:30px;border-radius:8px;border:1px solid var(--line2);background:var(--card);color:var(--muted);cursor:pointer;font-size:.75rem}
.cw-ctl button:disabled{opacity:.3}
.cw-picker{margin-top:10px}
.cw-group{margin-bottom:12px}
.cw-group .tiles{margin-top:6px}
.lb .m .r{font-size:1.05rem;min-width:28px;text-align:center}

/* ---- referral / invite ---- */
.invite{background:linear-gradient(160deg,rgba(0,245,122,.10),var(--card))}
.ref-link{display:flex;gap:8px;align-items:center}
.ref-link code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:9px 12px;font:500 13px ui-monospace,Consolas,monospace}
.ref-stats{display:flex;gap:16px;margin-top:12px;flex-wrap:wrap}
.ref-stats span{font-size:.82rem;color:var(--muted)}
.ref-stats b{font-family:var(--display);font-size:1.15rem;color:var(--text);margin-right:4px}

/* ---- social links ---- */
.socials{display:flex;gap:14px;justify-content:center;margin-top:18px}
.socials a{color:var(--muted);display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;transition:color .15s,border-color .15s}
.socials a:hover{color:var(--green);border-color:var(--green)}

/* first-run welcome (onboarding: get the first session done) */
.card.welcome{margin-top:12px;border:1px solid rgba(0,245,122,.45);background:linear-gradient(180deg,rgba(0,245,122,.09),rgba(0,245,122,.03));}
.card.welcome h3{font-size:1.15rem;letter-spacing:-.01em}
.card.welcome .eyebrow{color:var(--green2)}

/* ---- roster calendar ---- */
.cal-nav{display:flex;align-items:center;justify-content:center;gap:18px;margin:6px 0 10px}
.cal-nav b{font-family:var(--display);font-size:1.15rem;min-width:150px;text-align:center}
.cal-nav button{width:36px;height:36px;border-radius:10px;border:1px solid var(--line2);background:var(--card2);color:var(--text);font-size:1.2rem;cursor:pointer}
.cal-nav button:hover{border-color:var(--muted)}
.cal-legend{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;font-size:.72rem;color:var(--muted);margin-bottom:10px}
.cal-legend span{display:inline-flex;align-items:center;gap:5px}
.cal-legend span::before{content:"";width:10px;height:10px;border-radius:3px;background:var(--line2)}
.cal-legend span.on::before{background:var(--green-deep)}
.cal-legend span.rr::before{background:#3a4640}
.cal-legend span.fly::before{background:var(--amber,#ffb347)}
.cal-legend span.dotleg::before{display:none}
.cal-legend .dotleg i{width:6px;height:6px;border-radius:50%;background:var(--green);display:inline-block}
.cal-wd{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.cal-wd span{text-align:center;font-size:.66rem;color:var(--dim);text-transform:uppercase;letter-spacing:.04em}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-cell{aspect-ratio:1;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--text);position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;font-variant-numeric:tabular-nums;padding:0}
.cal-cell.empty{border:none;background:transparent;cursor:default}
.cal-cell .cn{font-size:.9rem;font-weight:600}
.cal-cell.on{background:rgba(0,245,122,.26);border-color:rgba(0,245,122,.55);color:#eafff4}
.cal-cell.rr{background:#0d100e;border-color:#1b211d;color:var(--dim)}
.cal-cell.fly{background:rgba(255,179,71,.16);border-color:rgba(255,179,71,.32)}
.cal-cell.today{outline:2px solid var(--green);outline-offset:1px}
.cal-cell.sel{border-color:var(--text)}
.cal-cell .cdot{position:absolute;bottom:5px;width:5px;height:5px;border-radius:50%;background:var(--green)}
.cal-detail{margin-top:16px}
.chip.on{background:rgba(0,245,122,.16);color:var(--green2)}
.chip.rr{background:var(--card2);color:var(--muted)}
.chip.fly{background:rgba(255,179,71,.18);color:var(--amber,#ffb347)}

/* ---- rest-timer mini-game overlay (Plate Pop) ---- */
.rg{position:fixed;inset:0;z-index:40;background:radial-gradient(120% 90% at 50% 0%,#0e1b13 0%,var(--bg) 60%);display:none;flex-direction:column;padding:calc(16px + var(--sat)) 18px calc(18px + var(--sab));max-width:560px;margin-inline:auto}
.rg.on{display:flex;animation:fade .25s var(--ease)}
.rg-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.rg-rest{display:flex;align-items:baseline;gap:10px}
.rg-lab{font-size:.72rem;font-weight:800;letter-spacing:.16em;color:var(--green)}
.rg-rest b{font-family:var(--display);font-size:clamp(2.8rem,12vw,4.4rem);font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--green)}
.rg-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.rg-actions button{border:1px solid var(--line2);background:var(--card2);color:var(--text);font-weight:700;font-size:.82rem;padding:9px 12px;border-radius:999px;cursor:pointer}
.rg-actions button.prim{background:var(--green);border-color:var(--green);color:var(--green-ink)}
.rg-scorebar{display:flex;justify-content:space-between;align-items:center;margin-top:14px;font-size:.82rem;color:var(--muted)}
.rg-scorebar b{color:var(--text);font-family:var(--display);font-size:1.05rem}
.rg-scorebar span:nth-child(2){color:var(--green2);font-weight:700}
.rg-canvaswrap{flex:1;margin:12px 0;border-radius:18px;border:1px solid var(--line);background:rgba(0,0,0,.25);overflow:hidden;position:relative;min-height:0}
.rg-canvaswrap canvas{width:100%;height:100%;display:block;touch-action:none}
.rg-hint{text-align:center;color:var(--dim);font-size:.82rem}

/* designed food tiles + meal alternatives */
.food{position:relative;aspect-ratio:16/6;border-radius:14px 14px 0 0;display:grid;place-items:center;overflow:hidden;background:radial-gradient(90% 120% at 50% 0%,rgba(0,245,122,.16),#141a16 70%)}
.food::after{content:"";position:absolute;inset:0;background:radial-gradient(60% 90% at 50% 40%,rgba(0,245,122,.10),transparent 70%)}
.food .em{font-size:3.4rem;position:relative;z-index:1;filter:drop-shadow(0 8px 18px rgba(0,0,0,.45))}
.food img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2;display:block}
.alts{margin-top:6px;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.alts summary{list-style:none;cursor:pointer;padding:12px 16px;font-weight:700;font-size:.92rem;color:var(--green2);display:flex;align-items:center;justify-content:space-between}
.alts summary::-webkit-details-marker{display:none}
.alts summary::after{content:"⌄";font-size:1.2rem;transition:transform .2s}
.alts[open] summary::after{transform:rotate(180deg)}
.alt-list{padding:0 12px 12px;display:grid;gap:8px}
.alt-row,.alt-safe{display:flex;gap:12px;align-items:center;background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.alt-safe{background:rgba(0,245,122,.06);border-color:rgba(0,245,122,.25)}
.alt-row .ae,.alt-safe .ae{font-size:1.5rem;flex:none}
.alt-row b,.alt-safe b{display:block;font-size:.95rem}
.alt-row small,.alt-safe small{color:var(--muted);font-size:.82rem}

/* Community filter chips: one scrollable row instead of wrapping to a second line */
#crew-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
#crew-tabs::-webkit-scrollbar{display:none}
#crew-tabs button{flex:0 0 auto}
/* inline "see gear" link */
.lnk{background:none;border:0;padding:0;color:var(--green);font-weight:700;font-size:.85rem;cursor:pointer;text-decoration:underline}

/* Shift Saver + overtake + weekly target + swing comparison */
.banner.saver{border-color:rgba(95,179,255,.5);background:rgba(95,179,255,.08)}
.banner.overtake{border-color:rgba(255,179,71,.5);background:rgba(255,179,71,.08)}
.wk-target{margin-top:10px}
.wk-target b{font-family:var(--display);font-weight:600}
.trend{font-size:.78rem;font-weight:800}
.trend.up{color:var(--green)}.trend.down{color:var(--amber)}.trend.flat{color:var(--muted)}
.cmp{margin-top:10px;display:grid;gap:8px}
.cmp-row{display:grid;grid-template-columns:78px 1fr 28px;align-items:center;gap:10px;font-size:.82rem;color:var(--muted)}
.cmp-row b{font-family:var(--display);color:var(--text);text-align:right}
.cmp-bar{height:10px;background:var(--card2);border-radius:999px;overflow:hidden}
.cmp-bar i{display:block;height:100%;background:var(--green);border-radius:999px}
.cmp-row.prev .cmp-bar i{background:var(--line2)}

/* Equipment picker: presets + grouped tiles */
.presets{display:grid;gap:8px}
.presets .preset{text-align:left;background:var(--card);border:1px solid var(--line2);border-radius:14px;padding:12px 14px;cursor:pointer;color:var(--text)}
.presets .preset b{display:block;font-family:var(--display);font-weight:600;font-size:.98rem}
.presets .preset span{display:block;color:var(--muted);font-size:.8rem;margin-top:2px}
.presets .preset.on{border-color:var(--green);background:rgba(0,245,122,.10)}
.eq-group{margin-bottom:14px}
.eq-head{font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin:0 0 7px}

/* ---- portions: the actual serve, spelled out ---- */
.portions{margin:8px 0 0;padding-left:16px;list-style:none}
.portions li{position:relative;font-size:13px;line-height:1.55;color:var(--muted);padding-left:2px;margin-bottom:3px}
.portions li:before{content:"";position:absolute;left:-12px;top:7px;width:5px;height:5px;border-radius:50%;background:var(--green);opacity:.65}
.mp-row .block{display:block;margin-top:2px;line-height:1.45}
.alt-row small{display:block;line-height:1.45}

/* ---- too easy / too hard ---- */
.rate{margin:14px 0}
.rate-row{display:flex;gap:8px}
.rate-row .btn{flex:1;padding-left:4px;padding-right:4px;font-size:12px}
.lv-row{align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.lv-row:first-of-type{border-top:0}
.lv-seg{flex:0 0 auto}
.lv-seg button{min-width:30px;padding:5px 6px;font-size:12px}

/* ---- next-7-days strip under the workout ---- */
.wstrip{margin-top:8px}
.wstrip-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line);color:inherit;text-decoration:none}
.wstrip-row:first-child{border-top:0}
.wstrip-row .wd{flex:0 0 46px;font-size:12px;color:var(--dim);font-weight:700}
.wstrip-row.now .wd{color:var(--green)}
.wstrip-row .wn{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wstrip-row .wk-done{flex:0 0 14px;color:var(--green);font-size:13px}

/* ---- folded warm-up on the session screen ---- */
.warmfold{margin-top:16px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--card)}
.warmfold>summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--muted);list-style:none}
.warmfold>summary::-webkit-details-marker{display:none}
.warmfold>summary:before{content:"▸ ";color:var(--green)}
.warmfold[open]>summary:before{content:"▾ "}

/* ---- settings cog in the top bar ---- */
.topbar .cog{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--card);border:1px solid var(--line)}
.topbar .cog svg{width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:1.6;stroke-linejoin:round}
.topbar .cog:active svg{stroke:var(--green)}

/* ---- jump-straight-to-it setup grid ---- */
.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.setup-grid a{display:block;padding:10px;border:1px solid var(--line);border-radius:12px;color:inherit;text-decoration:none;background:rgba(255,255,255,.02)}
.setup-grid a span{font-size:16px;display:block}
.setup-grid a b{display:block;font-size:13px;margin-top:3px}
.setup-grid a small{display:block;color:var(--dim);font-size:11px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exrow .th.novid{opacity:.45}

/* ---- reactions on the crew feed ---- */
.reacts{display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap}
.reacts .rx{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.03);color:var(--muted);font-size:13px;line-height:1;cursor:pointer}
.reacts .rx .rxe{font-size:15px;filter:grayscale(.55);transition:filter .12s,transform .12s}
.reacts .rx b{font-size:12px;font-weight:700;color:var(--muted)}
.reacts .rx.on{border-color:var(--green);background:rgba(0,245,122,.12)}
.reacts .rx.on .rxe{filter:none;transform:scale(1.12)}
.reacts .rx.on b{color:var(--green)}
.reacts .rx:active .rxe{transform:scale(1.3)}
.reacts .rx.ro{opacity:.75;cursor:default}
.reacts .rx-tot{font-size:12px;color:var(--dim);margin-left:2px}

/* ---- WOD tiers ---- */
.tiers{display:flex;gap:6px;flex-wrap:wrap}
.tiers .tier{flex:1 1 auto;min-width:72px;padding:8px 6px;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.03);color:var(--muted);font-size:12px;font-weight:700;cursor:pointer}
.tiers .tier.on{border-color:var(--green);background:rgba(0,245,122,.14);color:var(--green)}
.tier-now{color:var(--green);font-size:14px}
.tier-chip{display:inline-block;padding:2px 8px;border-radius:999px;background:rgba(0,245,122,.14);color:var(--green);font-weight:800;font-size:11px;letter-spacing:.04em;margin-right:4px}

/* ---- the feed ---- */
.composer textarea{min-height:56px;resize:vertical}
.po-row{display:flex;gap:8px;margin-top:10px;align-items:center}
.po-row .btn-primary{margin-left:auto}
.po-pic{position:relative;margin-top:10px;border-radius:12px;overflow:hidden;background:#000}
.po-pic img{display:block;width:100%;max-height:420px;object-fit:cover}
.po-x{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:13px;cursor:pointer}
.audbox{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.audopt{text-align:left;padding:10px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.02);color:inherit;cursor:pointer}
.audopt span{font-size:15px;display:block}
.audopt b{display:block;font-size:13px;margin-top:2px}
.audopt small{display:block;color:var(--dim);font-size:11px;margin-top:2px;line-height:1.35}
.audopt.on{border-color:var(--green);background:rgba(0,245,122,.1)}
.post{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px}
.feedlist{gap:12px}
.po-head{display:flex;align-items:center;gap:10px}
.po-head .fav{flex:0 0 auto}
.po-more{background:none;border:0;color:var(--dim);font-size:18px;line-height:1;padding:4px 6px;cursor:pointer}
.po-kind{display:inline-block;margin-top:10px;padding:3px 9px;border-radius:999px;background:rgba(0,245,122,.14);color:var(--green);font-size:11px;font-weight:800;letter-spacing:.03em}
.po-body{margin:10px 0 0;font-size:14px;line-height:1.55;white-space:pre-wrap}
.ba-pair{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}
.ba-pair figure{margin:0;border-radius:12px;overflow:hidden;background:#000;position:relative}
.ba-pair img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover}
.ba-pair figcaption{position:absolute;left:0;right:0;bottom:0;padding:5px 8px;background:linear-gradient(transparent,rgba(0,0,0,.75));color:#fff;font-size:11px;font-weight:700}
.post .reacts{margin-top:12px}
.reacts .rx.cmt{margin-left:auto}
.cbox{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.cm{font-size:13px;line-height:1.5;margin-bottom:8px}
.cm b{color:var(--text,#fff)}
.cm-new{display:flex;gap:8px;margin-top:8px}
.cm-new .in{flex:1}
.sugg{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
.sg{flex:0 0 132px;text-align:center;padding:12px 8px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.02)}
.sg .fav{margin:0 auto 6px}
.sg b{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sg small{display:block;color:var(--dim);font-size:11px;margin:2px 0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---- before & after album ---- */
.ba-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.ba-one{margin:0;position:relative;border-radius:12px;overflow:hidden;background:#000;border:2px solid transparent;cursor:pointer}
.ba-one.on{border-color:var(--green)}
.ba-one img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;background:#111}
.ba-one figcaption{position:absolute;left:0;right:0;bottom:0;padding:4px 6px;background:linear-gradient(transparent,rgba(0,0,0,.8));color:#fff;font-size:10px;font-weight:700}
.ba-one .ba-del{top:6px;right:6px;width:22px;height:22px;font-size:11px}

/* ---- illustrated technique guide ---- */
.figbox{background:#0d1410;border:1px solid var(--line);border-radius:14px;padding:10px;display:flex;justify-content:center}
.figbox .figsvg{width:190px;height:auto}
.exrow .th.novid span{font-size:15px;opacity:.75}

/* ---- drawn figure used as the exercise thumbnail ---- */
.exrow .th.figthumb{background:#0d1410;display:flex;align-items:center;justify-content:center;padding:2px}
.exrow .th.figthumb .figsvg{width:100%;height:100%}

/* ---- difficulty panel on the Workout tab ---- */
.diffpanel{margin-top:12px}
.diffpanel>summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--muted);list-style:none;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.diffpanel>summary::-webkit-details-marker{display:none}
.diffpanel[open]>summary{border-bottom-left-radius:0;border-bottom-right-radius:0}

/* ---- live leaderboard ---- */
.lb-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);margin-left:6px;vertical-align:middle;animation:lbpulse 2s infinite}
@keyframes lbpulse{0%,100%{opacity:1}50%{opacity:.25}}
.lb-mini .m{padding:6px 0}

/* share sheet (v81) */
.ss-code{display:flex;align-items:center;gap:12px;background:var(--bg);border:1px dashed var(--line2);border-radius:14px;padding:10px 14px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ss-code b{flex:1;font-family:var(--display);font-size:1.7rem;letter-spacing:.2em;color:var(--green)}
.ss-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}
.ss-app{background:none;border:0;color:var(--text);font:inherit;font-size:.78rem;display:flex;flex-direction:column;align-items:center;gap:6px;padding:4px 0;cursor:pointer}
.ss-app:active .ss-ico{transform:scale(.92)}
.ss-ico{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:1.5rem;transition:transform .1s}
.ss-msg{margin-top:14px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 12px}

/* auth screens (v82) */
.pw{position:relative;margin-top:10px}
.pw .in{padding-right:48px}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--muted);font-size:1.1rem;padding:8px;cursor:pointer;opacity:.6}
.pw-eye.on{opacity:1;color:var(--green)}
.au-or{display:flex;align-items:center;gap:10px;margin:16px 0;color:var(--dim);font-size:.8rem;text-transform:uppercase;letter-spacing:.1em}
.au-or:before,.au-or:after{content:"";flex:1;height:1px;background:var(--line)}
.auth .card h2{font-size:1.5rem}
.cal-cell.pre{background:transparent;border-color:var(--line);color:var(--dim);opacity:.55}
.chip.pre{background:#141a16;color:var(--dim)}

/* ---- feed v87: Instagram-style cards, stories, profile pages, notifications, sponsor cards ---- */
.fav img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
a.fav{text-decoration:none;color:inherit}
.fav.big{width:72px;height:72px;font-size:1.6rem}
.fav.sp{background:linear-gradient(135deg,#ffb347,#ff7a18);color:#1a0d00}
.po-name{color:var(--text);font-weight:700;text-decoration:none}
.po-name:active{opacity:.7}
.post.ig{padding:12px 0 12px;overflow:hidden}
.post.ig .po-head,.post.ig .reacts,.post.ig .po-body,.post.ig .po-prev,.post.ig .po-viewc,.post.ig .cbox,.post.ig .po-count,.post.ig .po-kind{margin-left:14px;margin-right:14px}
.post.ig .po-kind{margin-top:8px}
.post.ig .hero-pic{margin:10px 0 0;border-radius:0;position:relative;background:#000;cursor:pointer;-webkit-user-select:none;user-select:none}
.post.ig .hero-pic img{max-height:560px;width:100%;object-fit:cover}
.post.ig .ba-pair{margin:10px 14px 0;position:relative}
.burst{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);font-size:84px;pointer-events:none;opacity:0;filter:drop-shadow(0 4px 12px rgba(0,0,0,.5))}
.pop .burst{animation:burst .7s var(--ease)}
@keyframes burst{0%{transform:translate(-50%,-50%) scale(0);opacity:0}30%{transform:translate(-50%,-50%) scale(1.15);opacity:1}70%{transform:translate(-50%,-50%) scale(1);opacity:1}100%{transform:translate(-50%,-50%) scale(1.3);opacity:0}}
.po-count{font-size:12px;font-weight:700;margin-top:8px}
.po-prev{margin-top:6px}
.po-prev .cm{margin-bottom:3px}
.po-viewc{display:block;margin-top:6px;color:var(--dim);font-size:13px;background:none;border:0;padding:0;cursor:pointer;text-align:left}
.post.flash{box-shadow:0 0 0 2px var(--green)}
.post.sponsor{border-color:rgba(255,179,71,.35);padding:14px}
.post.sponsor .hero-pic{margin:10px 0 0;border-radius:12px}
.reacts .rx.shr{margin-left:0}
.stories{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.stories::-webkit-scrollbar{display:none}
.story{flex:0 0 auto;background:none;border:0;color:var(--muted);font:inherit;font-size:11px;display:flex;flex-direction:column;align-items:center;gap:5px;padding:0;cursor:pointer;width:64px}
.st-ring{width:60px;height:60px;border-radius:50%;padding:3px;background:linear-gradient(135deg,var(--green),#ffb347);display:block}
.st-ring img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:2px solid var(--bg);display:block}
.story small{max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#ptr{position:fixed;top:0;left:0;right:0;z-index:30;text-align:center;padding:12px;font-size:12px;font-weight:700;color:var(--green);background:linear-gradient(var(--bg),transparent);pointer-events:none}
.tabs a{position:relative}
.tbadge,.nbadge{position:absolute;top:4px;right:calc(50% - 22px);min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--red,#ff4d4d);color:#fff;font-size:10px;font-weight:800;font-style:normal;display:grid;place-items:center;line-height:1}
.seg .bell{position:relative}
.nbadge{top:-4px;right:-6px}
.notif{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.notif.unread{border-color:rgba(0,245,122,.45)}
.nthumb{width:44px;height:44px;border-radius:8px;object-fit:cover;flex:none}
.prof-top{display:flex;align-items:center;gap:18px}
.prof-stats{flex:1;display:flex;justify-content:space-around;text-align:center}
.prof-stats b{display:block;font-family:var(--display);font-size:1.3rem}
.prof-stats small{color:var(--dim);font-size:11px}
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:12px;border-radius:12px;overflow:hidden}
.pg{position:relative;background:#000;border:0;padding:0;aspect-ratio:1;cursor:pointer}
.pg img{width:100%;height:100%;object-fit:cover;display:block}
.pg-tag{position:absolute;top:6px;right:6px;font-size:12px}
.people .person{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.peoplebar{display:flex;gap:14px;overflow-x:auto;padding:2px 2px 10px;font-size:13px;font-weight:700;scrollbar-width:none}
.peoplebar a{color:var(--muted);text-decoration:none;white-space:nowrap}
.peoplebar a.g{color:var(--green)}
.prof-stats a{text-decoration:none;color:inherit}

/* ---- reels ---- */
.reelsbar{margin-bottom:8px}
.reels{display:flex;gap:8px;overflow-x:auto;padding:8px 2px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.reels::-webkit-scrollbar{display:none}
.reel{position:relative;flex:0 0 96px;height:150px;border-radius:14px;overflow:hidden;background:#0b120d;border:1px solid var(--line);padding:0;cursor:pointer;color:#fff;font:inherit}
.reel img,.reel-dark{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.reel-dark{background:linear-gradient(160deg,#16261c,#0b120d)}
.reel small{position:absolute;left:6px;right:6px;bottom:6px;font-size:11px;font-weight:700;text-shadow:0 1px 4px #000;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reel .play,.reelpic .play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.55);display:grid;place-items:center;font-size:14px;color:#fff;pointer-events:none}
.reelpic .play{width:64px;height:64px;font-size:24px}
.reelpic .reeltag{position:absolute;top:10px;left:10px;font-size:11px;font-weight:800;background:rgba(0,0,0,.55);padding:3px 8px;border-radius:999px;color:#fff}
.reelpic img{aspect-ratio:9/12;object-fit:cover}
.reel.add{border:1px dashed var(--green);background:rgba(0,245,122,.06);color:var(--green)}
.reel-plus{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);font-size:34px;font-weight:800}
.reel.add small{color:var(--green);text-align:center;text-shadow:none}
.reelprev{position:relative;border-radius:14px;overflow:hidden;background:#000;margin-top:10px}
.reelprev video{display:block;width:100%;max-height:50vh;object-fit:contain}
.reelprev .chip{position:absolute;top:8px;right:8px}
.reelview{position:fixed;inset:0;background:#000;z-index:60;display:flex;align-items:center;justify-content:center}
.reelview video{width:100%;height:100%;object-fit:contain;background:#000}
.rv-x,.rv-mute{position:absolute;top:calc(12px + var(--sat,0px));width:40px;height:40px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:16px;cursor:pointer}
.rv-x{right:12px}.rv-mute{left:12px}
.rv-side{position:absolute;right:10px;bottom:calc(120px + var(--sab,0px));display:flex;flex-direction:column;gap:12px}
.rv-rx{width:46px;border:0;background:none;color:#fff;font:inherit;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;filter:drop-shadow(0 2px 6px #000)}
.rv-rx span{font-size:26px}
.rv-rx small{font-size:11px;font-weight:700}
.rv-rx.on span{transform:scale(1.2)}
.rv-meta{position:absolute;left:12px;right:70px;bottom:calc(58px + var(--sab,0px));display:flex;gap:10px;align-items:flex-start;color:#fff;text-shadow:0 1px 4px #000}
.rv-nav{position:absolute;left:0;right:0;bottom:calc(10px + var(--sab,0px));display:flex;justify-content:center;align-items:center;gap:14px;color:#fff;font-size:12px;opacity:.85}
.rv-nav button{width:36px;height:36px;border-radius:50%;border:0;background:rgba(255,255,255,.15);color:#fff;cursor:pointer}
.rv-nav button:disabled{opacity:.3}

/* ---- v90: calmer Community ---- */
.utabs{display:flex;gap:2px;overflow-x:auto;border-bottom:1px solid var(--line);padding:0 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.utabs::-webkit-scrollbar{display:none}
.utabs button{flex:0 0 auto;background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);font:700 .9rem var(--body);padding:10px 9px;cursor:pointer;position:relative;white-space:nowrap}
.utabs button.on{color:var(--text);border-bottom-color:var(--green)}
.utabs .bell{margin-left:auto}
.utabs .nbadge{top:4px;right:2px}
.chips{display:flex;gap:6px;overflow-x:auto;padding:10px 14px 8px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chips button{flex:0 0 auto;border:1px solid var(--line);background:transparent;color:var(--muted);font:600 .8rem var(--body);padding:6px 12px;border-radius:999px;cursor:pointer}
.chips button.on{background:var(--card);border-color:var(--line2);color:var(--text)}
.feedwrap .reelsbar{padding:12px 14px 0;margin:0}
.feedwrap .reelsbar .reels{padding-bottom:6px}
.feedwrap .composer{padding:12px 14px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:transparent}
.composer .in{background:transparent;border:0;border-radius:0;padding:8px 0;height:auto;min-height:38px;resize:none;font-size:.95rem;line-height:1.35}
.composer .in:focus{outline:none}
.feedwrap .po-row{margin-top:4px;padding-left:48px}
.feedwrap .po-row .btn-ghost{border:0;background:transparent;padding-inline:6px;color:var(--muted)}
.feedwrap .feedlist{gap:0}
.feedwrap .post.ig{border-radius:0;border-left:0;border-right:0;border-top:0;background:transparent;padding:14px 0 16px}
.feedwrap .post.sponsor{border-radius:0;border-left:0;border-right:0;border-top:0;margin:0}
.feedwrap .post.ig .ba-pair{margin-inline:0}
.feedwrap .post.ig .ba-pair figure{border-radius:0}
.feedwrap .card{margin:12px 14px}
.feedwrap #feed-more{border-top:1px solid var(--line)}
.friendsbar{padding:10px 14px 0}
.friends{display:flex;gap:12px;overflow-x:auto;padding:8px 2px 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.friends::-webkit-scrollbar{display:none}
.friend{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:4px;width:58px;text-decoration:none;color:var(--muted);font-size:11px}
.friend .fav{width:50px;height:50px;font-size:1.1rem}
.friend small{max-width:58px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.friend.add .fav{border:1px dashed var(--green);background:rgba(0,245,122,.06);color:var(--green)}
.stories{padding-inline:14px}

/* ---- messages ---- */
.inbox{display:flex;flex-direction:column}
.ib{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.ib.unread b{color:var(--text)}
.ib-last{font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nbadge.static{position:static;flex:none}
.screen.chat{display:flex;flex-direction:column;padding-bottom:0;min-height:100dvh}
.chat-top{padding:10px 14px;border-bottom:1px solid var(--line);margin:0}
.chat-body{flex:1;overflow-y:auto;padding:14px 14px calc(90px + var(--sab));display:flex;flex-direction:column;gap:8px}
.msg{max-width:78%;align-self:flex-start}
.msg.me{align-self:flex-end;text-align:right}
.bub{background:var(--card);border:1px solid var(--line);border-radius:18px 18px 18px 4px;padding:9px 13px;font-size:.95rem;line-height:1.4;white-space:pre-wrap;word-break:break-word;text-align:left}
.msg.me .bub{background:var(--green);color:var(--green-ink);border-color:var(--green);border-radius:18px 18px 4px 18px}
.tiny{font-size:10px;margin-top:3px}
.chat-form{position:fixed;left:0;right:0;bottom:0;display:flex;gap:8px;padding:10px 14px calc(10px + var(--sab));background:rgba(6,8,7,.94);backdrop-filter:blur(12px);border-top:1px solid var(--line);z-index:25;max-width:640px;margin-inline:auto}
.chat-form .in{flex:1}
.po-hidden{margin:8px 14px 0;font-size:12px;color:#ffb347}
.rules{margin:10px 0 12px;padding-left:18px;color:var(--muted);font-size:.9rem;line-height:1.5}
.rules li{margin:4px 0}

/* v94 — our own line icons in place of stock emoji (see icons.js) */
.ei{width:1.2em;height:1.2em;display:inline-block;vertical-align:-.22em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.btn-primary .ei{color:inherit!important}
.ss-ico{position:relative;color:#fff;overflow:hidden}
.ss-ico .ei{width:26px;height:26px;color:#fff!important}
.ss-ico img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.badge-t span .ei{width:1.5em;height:1.5em}

/* v96 — no-account nudge */
.noacct{border-color:var(--green)!important;box-shadow:0 0 0 1px rgba(0,245,122,.25) inset}
.noacct b{color:var(--text)}

/* v97 — labelled partner slide in the reels player */
.rv-ad{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;background:#060807;color:#fff;text-align:center}
.rv-ad img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.rv-ad-body{position:relative;padding:24px 22px calc(90px + var(--sab,0px));background:linear-gradient(transparent,rgba(0,0,0,.85) 35%)}
.rv-ad-body h2{font-size:1.5rem;margin:10px 0 6px}.rv-ad-body p{margin:0;opacity:.85}
.rv-ad-tag{display:inline-block;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3)}
