:root{
    color-scheme: light dark;
    --bg:#f4f1ec; --bg-2:#fff; --bg-elev:rgba(255,255,255,.72); --bg-elev-2:rgba(255,255,255,.94);
    --ink:#1a1d24; --ink-2:#5b6473; --ink-3:#9098a6;
    --line:rgba(26,29,36,.09); --line-2:rgba(26,29,36,.16);
    --iron:#1a1d24; --iron-2:#2c313d;
    --amber:#d4a017; --amber-2:#b8870c;
    --ok:#1f9d55; --warn:#b26a00; --bad:#c92a2a;
    --shadow:0 12px 36px rgba(26,29,36,.10); --shadow-sm:0 4px 14px rgba(26,29,36,.06);
    --r-xl:24px; --r-lg:18px; --r-md:14px; --tap:44px;
    --spring:cubic-bezier(.34,1.56,.64,1); --ease:cubic-bezier(.22,.61,.36,1);
}
[data-theme="dark"]{
    --bg:#0b0d12; --bg-2:#16181d; --bg-elev:rgba(28,30,36,.72); --bg-elev-2:rgba(40,43,52,.94);
    --ink:#f5f1e8; --ink-2:#a5adbb; --ink-3:#6b7280;
    --line:rgba(255,255,255,.08); --line-2:rgba(255,255,255,.16);
    --shadow:0 18px 48px rgba(0,0,0,.5);
}
[data-theme="gym"]{
    --bg:#000; --bg-2:#000; --bg-elev:#000; --bg-elev-2:#0a0a0a;
    --ink:#fff; --ink-2:#bbb; --ink-3:#888;
    --line:rgba(255,255,255,.2); --line-2:rgba(255,255,255,.4);
}
@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-variant-numeric:tabular-nums}
body{
    font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text",Inter,system-ui,sans-serif;
    background:
        radial-gradient(900px 500px at 80% -10%,rgba(212,160,23,.10),transparent 60%),
        radial-gradient(700px 400px at -10% 110%,rgba(26,29,36,.06),transparent 60%),
        var(--bg);
    color:var(--ink); -webkit-font-smoothing:antialiased;
    overscroll-behavior-y:contain; touch-action:manipulation;
}
[data-theme="gym"] body{background:#000}
button,input,select,textarea{font:inherit;color:inherit}
button{border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:3px solid var(--amber);outline-offset:2px;border-radius:8px}

.shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}
.topbar{position:sticky;top:0;z-index:30;backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);background:var(--bg-elev);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}
.topbar-inner{max-width:1180px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.brand-mark{width:36px;height:36px;border-radius:10px;background:var(--iron);display:grid;place-items:center;color:var(--amber);font-weight:900;letter-spacing:-1px;font-size:.85rem;box-shadow:0 6px 18px rgba(26,29,36,.25)}
[data-theme="dark"] .brand-mark{background:var(--amber);color:var(--iron)}
.brand-name{margin:0;font-size:1.02rem;font-weight:900;letter-spacing:-.02em}
.brand-sub{margin:0;font-size:.76rem;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}
.top-actions{display:flex;gap:6px}
.icon-btn{width:var(--tap);height:var(--tap);border-radius:50%;background:var(--bg-elev-2);border:1px solid var(--line);box-shadow:var(--shadow-sm);display:grid;place-items:center;transition:transform .18s var(--spring)}
.icon-btn:active{transform:scale(.9)}
.icon-btn svg{width:20px;height:20px;stroke:var(--ink);stroke-width:2;fill:none}

.session-pill{position:fixed;top:calc(env(safe-area-inset-top) + 70px);left:50%;transform:translateX(-50%);z-index:40;background:var(--iron);color:var(--amber);padding:8px 16px;border-radius:999px;font-weight:800;font-size:.82rem;box-shadow:0 10px 30px rgba(0,0,0,.3);display:none;align-items:center;gap:8px;animation:pulse 2s ease-in-out infinite}
.session-pill.show{display:inline-flex}
@keyframes pulse{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(1.04)}}

.offline-bar{background:var(--warn);color:#fff;text-align:center;padding:6px;font-size:.78rem;font-weight:700;display:none}
.offline-bar.show{display:block}

.main{flex:1;width:min(1180px,100%);margin:0 auto;padding:14px 14px 100px}
.view{display:none;animation:rise .26s var(--ease)}
.view.active{display:block}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:18px}
.card+.card{margin-top:12px}
.card-title{margin:0 0 12px;font-size:1.02rem;font-weight:900;letter-spacing:-.02em}
.muted{color:var(--ink-2)}
.tiny{font-size:.78rem}

.hero{position:relative;overflow:hidden;background:linear-gradient(155deg,var(--iron) 0%,var(--iron-2) 60%,#3a4051 100%);color:#fff;border:0}
.hero::before{content:"";position:absolute;inset:auto -20% -40% auto;width:70%;aspect-ratio:1;background:radial-gradient(circle,rgba(212,160,23,.32),transparent 60%);pointer-events:none}
.hero-eyebrow{font-size:.74rem;opacity:.7;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--amber)}
.hero-title{margin:8px 0 14px;font-size:2rem;font-weight:900;letter-spacing:-.035em;line-height:1.05}
.hero-lifts{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.hero-lift{background:rgba(255,255,255,.08);padding:12px 14px;border-radius:14px;font-size:.92rem;font-weight:700;display:flex;justify-content:space-between;align-items:center;border:1px solid rgba(255,255,255,.06);gap:10px}
.hero-lift .lname{font-weight:800}
.hero-lift .lprev{font-size:.74rem;opacity:.7;font-weight:600;margin-top:2px;display:block}
.hero-lift .lweight{font-size:1.1rem;font-weight:900;color:var(--amber)}
.hero-lift .lunit{font-size:.74rem;opacity:.7;margin-left:3px}
.hero-cta{background:var(--amber);color:var(--iron);font-weight:900;min-height:54px;padding:0 24px;border-radius:14px;display:inline-flex;align-items:center;gap:8px;box-shadow:0 10px 24px rgba(212,160,23,.32);transition:transform .18s var(--spring);width:100%;justify-content:center;font-size:1.02rem}
.hero-cta:active{transform:scale(.97)}
.hero-meta{display:flex;gap:14px;margin-top:14px;font-size:.82rem;opacity:.85;flex-wrap:wrap}

.metric-row{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.metric{padding:14px;border-radius:var(--r-lg);background:var(--bg-elev-2);border:1px solid var(--line)}
.metric .lbl{font-size:.74rem;color:var(--ink-2);margin:0 0 6px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
.metric .val{font-size:1.4rem;font-weight:900;margin:0;letter-spacing:-.03em}
.metric .delta{font-size:.76rem;font-weight:800;margin-top:4px}
.delta.up{color:var(--ok)}.delta.down{color:var(--bad)}

.btn{min-height:48px;padding:0 16px;border-radius:14px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .14s var(--spring),box-shadow .2s}
.btn:active{transform:scale(.96)}
.btn-primary{color:var(--iron);background:var(--amber);box-shadow:0 8px 20px rgba(212,160,23,.32)}
.btn-secondary{background:var(--bg-elev-2);border:1px solid var(--line-2);color:var(--ink)}
.btn-ghost{background:transparent;color:var(--ink-2)}
.btn-danger{background:rgba(201,42,42,.12);color:var(--bad);border:1px solid rgba(201,42,42,.22)}
.btn-block{width:100%}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}

.pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:999px;font-size:.78rem;font-weight:800;background:rgba(26,29,36,.08);color:var(--ink)}
.pill.ok{background:rgba(31,157,85,.14);color:var(--ok)}
.pill.warn{background:rgba(178,106,0,.14);color:var(--warn)}
.pill.bad{background:rgba(201,42,42,.14);color:var(--bad)}
.pill.gold{background:rgba(212,160,23,.16);color:var(--amber-2)}
.pill.ghost{background:var(--bg-elev-2);color:var(--ink-2);border:1px solid var(--line)}

.field{display:grid;gap:6px}
.field label{font-weight:700;font-size:.92rem}
.field-row{display:grid;gap:12px;grid-template-columns:1fr 1fr}
.input,.select,.textarea{min-height:48px;padding:0 14px;border-radius:14px;background:var(--bg-elev-2);border:1px solid var(--line-2);color:var(--ink);transition:border-color .18s;width:100%;font-variant-numeric:tabular-nums}
.textarea{padding:12px 14px;min-height:90px;font-family:inherit}
.input:focus,.select:focus,.textarea:focus{border-color:var(--amber);outline:none}
.input.error{border-color:var(--bad)}
.input.valid{border-color:var(--ok)}

.stepper{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}
.stepper button{width:48px;height:48px;border-radius:14px;background:var(--bg-elev-2);border:1px solid var(--line-2);font-size:1.4rem;font-weight:900;color:var(--ink);transition:transform .14s var(--spring)}
.stepper button:active{transform:scale(.9)}
.stepper .input{text-align:center;font-size:1.3rem;font-weight:900}
.stepper-suggest{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.stepper-suggest button{padding:6px 12px;border-radius:999px;background:var(--bg-elev-2);border:1px solid var(--line);font-size:.78rem;font-weight:700;color:var(--ink-2)}

.session-stage{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--r-xl);padding:22px 18px;box-shadow:var(--shadow);text-align:center}
.session-stage .target{font-size:3.4rem;font-weight:900;letter-spacing:-.045em;line-height:1;margin:14px 0 6px}
.session-stage .target span{font-size:1rem;color:var(--ink-2);font-weight:700;margin-left:6px}
.session-stage .target-meta{color:var(--ink-2);margin:0 0 10px;font-weight:600;font-size:.88rem}
.last-time{color:var(--ink-2);font-size:.82rem;margin:2px 0 12px;font-weight:600}
.last-time strong{color:var(--ink);font-weight:800}

.set-progress{display:flex;justify-content:center;gap:10px;margin:18px 0 10px;flex-wrap:wrap}
.set-dot{
    width:56px;height:56px;
    border-radius:14px;
    background:var(--bg-elev-2);
    border:2px solid var(--line-2);
    display:grid;place-items:center;
    font-weight:900;font-size:1.5rem;
    color:var(--ink-3);
    transition:background .2s,border-color .2s,color .2s,box-shadow .2s,transform .15s var(--spring);
    -webkit-user-select:none;user-select:none;
}
.set-dot.future{opacity:.45}
.set-dot.active{
    border-color:var(--amber);
    color:var(--ink);
    box-shadow:0 0 0 4px rgba(212,160,23,.18);
    cursor:pointer;
    background:var(--bg-2);
}
.set-dot.active:active{transform:scale(.94)}
.set-dot.done{background:var(--ok);border-color:var(--ok);color:#fff}
.set-dot.short{background:var(--warn);border-color:var(--warn);color:#fff}
.set-dot.fail{background:var(--bad);border-color:var(--bad);color:#fff}
.set-dot.pr{background:var(--amber);border-color:var(--amber);color:var(--iron);box-shadow:0 8px 22px rgba(212,160,23,.35)}

.rest-label{
    font-size:.72rem;color:var(--ink-2);
    text-transform:uppercase;letter-spacing:.06em;font-weight:800;
    text-align:center;margin:18px 0 6px;
}
.log-btn{
    width:100%;
    min-height:56px;
    font-size:1.05rem;
    margin-top:8px;
}
.rest-options{
    display:flex;gap:6px;flex-wrap:wrap;justify-content:center;
    margin-top:14px;
}
.rest-opt{
    min-width:54px;
    padding:8px 12px;
    border-radius:12px;
    background:var(--bg-elev-2);
    border:1px solid var(--line);
    font-weight:800;font-size:.84rem;
    color:var(--ink-2);
    transition:background .2s,color .2s,border-color .2s,transform .14s var(--spring);
}
.rest-opt:active{transform:scale(.94)}
.rest-opt.active{
    background:var(--amber);
    color:var(--iron);
    border-color:var(--amber);
    box-shadow:0 6px 16px rgba(212,160,23,.28);
}

.rest{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;padding:14px;border-radius:var(--r-lg);background:var(--bg-elev-2);border:1px solid var(--line);margin-top:14px;text-align:left}
.ring-wrap{position:relative;width:88px;height:88px}
.ring-wrap svg{transform:rotate(-90deg)}
.ring-bg{fill:none;stroke:var(--line-2);stroke-width:7}
.ring-fg{fill:none;stroke:var(--amber);stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset .9s linear}
.ring-label{position:absolute;inset:0;display:grid;place-items:center;font-weight:900;font-size:1.3rem}
.rest-controls{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.rest-controls .btn{min-height:36px;padding:0 12px;font-size:.82rem}

.barbell{display:flex;align-items:center;justify-content:center;gap:1px;padding:18px 8px;border-radius:var(--r-lg);background:var(--bg-elev-2);border:1px solid var(--line);overflow-x:auto;min-height:120px}
.bar-sleeve{background:linear-gradient(180deg,#cfd3da,#8a909c);width:14px;height:5px}
.bar-mid{background:linear-gradient(180deg,#cfd3da,#8a909c);height:5px;width:40px}
[data-theme="dark"] .bar-sleeve,[data-theme="dark"] .bar-mid{background:linear-gradient(180deg,#5a6070,#2a2e38)}
.plate{border-radius:5px;display:grid;place-items:center;color:#fff;font-weight:900;font-size:.68rem;padding:0 3px;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 2px 5px rgba(0,0,0,.18);min-width:12px}
.plate.p45{background:#1a2e6b;height:96px;min-width:18px}
.plate.p35{background:#a8a8a8;height:84px;color:#222;min-width:16px}
.plate.p25{background:#1f9d55;height:72px;min-width:15px}
.plate.p20{background:#1a2e6b;height:92px;min-width:18px}
.plate.p15{background:#d4a017;height:80px;color:#222;min-width:16px}
.plate.p10{background:#c92a2a;height:56px;min-width:14px}
.plate.p5{background:#1267d1;height:44px;min-width:13px}
.plate.p2_5{background:#b3b3b3;height:34px;color:#222;min-width:12px}
.plate.p1_25{background:#777;height:26px;min-width:12px}
.plate.p0_5{background:#444;height:20px;min-width:12px}
.collar{background:#aaa;width:7px;height:22px;border-radius:2px}
.plate-tag{font-size:.76rem;padding:4px 10px;border-radius:999px;background:var(--bg-elev-2);border:1px solid var(--line);font-weight:800}

.warmup{display:grid;gap:6px}
.warmup-row{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-md);background:var(--bg-elev-2);border:1px solid var(--line)}
.warmup-row.done{opacity:.5}
.warmup-row .seq{font-weight:900;color:var(--ink-2);font-size:.86rem}
.warmup-row .weight{font-weight:800}
.warmup-row .reps{font-size:.78rem;color:var(--ink-2);font-weight:700}

.set-log{display:grid;gap:8px;margin-top:8px}
.set-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--r-md);background:var(--bg-elev-2);border:1px solid var(--line)}
.set-row.pr{border-color:rgba(212,160,23,.4);background:linear-gradient(180deg,rgba(212,160,23,.08),var(--bg-elev-2))}

.spark{width:100%;height:60px;display:block}

.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:25;background:var(--bg-elev);backdrop-filter:saturate(180%) blur(28px);-webkit-backdrop-filter:saturate(180%) blur(28px);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
.tabbar-inner{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.tab{min-height:52px;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--ink-2);font-size:.68rem;font-weight:800;transition:color .2s,background .2s,transform .14s var(--spring)}
.tab svg{width:22px;height:22px;stroke:currentColor;stroke-width:2;fill:none}
.tab.active{color:var(--amber-2)}
[data-theme="dark"] .tab.active{color:var(--amber)}
.tab:active{transform:scale(.94)}

.toast-stack{position:fixed;top:calc(env(safe-area-inset-top) + 12px);left:50%;transform:translateX(-50%);z-index:100;display:flex;flex-direction:column;gap:8px;pointer-events:none;width:min(380px,calc(100% - 28px))}
.toast{pointer-events:auto;background:var(--bg-elev-2);border:1px solid var(--line);border-radius:14px;padding:12px 16px;box-shadow:var(--shadow);display:flex;align-items:center;gap:10px;animation:toast-in .32s var(--spring);font-weight:700;font-size:.88rem}
.toast.ok{border-color:rgba(31,157,85,.35)}
.toast.bad{border-color:rgba(201,42,42,.35)}
.toast.pr{border-color:rgba(212,160,23,.5);background:linear-gradient(180deg,rgba(212,160,23,.14),var(--bg-elev-2))}
.toast .ic{font-size:1.3rem}
@keyframes toast-in{from{opacity:0;transform:translateY(-12px) scale(.96)}to{opacity:1;transform:none}}

.sheet-backdrop{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.45);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .25s var(--ease)}
.sheet-backdrop.open{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:95;background:var(--bg-2);border-top-left-radius:26px;border-top-right-radius:26px;padding:8px 20px calc(20px + env(safe-area-inset-bottom));transform:translateY(110%);transition:transform .35s var(--ease);max-height:88vh;overflow-y:auto;box-shadow:0 -20px 60px rgba(0,0,0,.3)}
.sheet.open{transform:translateY(0)}
.sheet-handle{width:36px;height:5px;border-radius:3px;background:var(--line-2);margin:8px auto 14px}
.sheet-title{margin:0 0 14px;font-size:1.2rem;font-weight:900}

.onb{position:fixed;inset:0;z-index:80;background:var(--bg);display:flex;flex-direction:column}
.onb-pages{flex:1;overflow:hidden;position:relative}
.onb-page{position:absolute;inset:0;padding:30px 22px;display:flex;flex-direction:column;opacity:0;transform:translateX(20px);transition:opacity .3s,transform .3s var(--ease);pointer-events:none;overflow-y:auto}
.onb-page.active{opacity:1;transform:none;pointer-events:auto}
.onb-emoji{font-size:60px;text-align:center;margin:8px 0}
.onb h2{font-size:1.7rem;font-weight:900;letter-spacing:-.03em;margin:0 0 8px;text-align:center}
.onb p.lead{color:var(--ink-2);text-align:center;margin:0 0 18px;font-size:.94rem}
.onb-foot{padding:14px 22px calc(14px + env(safe-area-inset-bottom));display:flex;gap:10px;align-items:center;justify-content:space-between;border-top:1px solid var(--line)}
.onb-dots{display:flex;gap:6px}
.onb-dot{width:8px;height:8px;border-radius:50%;background:var(--line-2);transition:background .2s,width .2s}
.onb-dot.active{background:var(--amber);width:22px;border-radius:4px}

.choice-grid{display:grid;gap:10px;margin-top:16px}
.choice{padding:16px 18px;border-radius:var(--r-lg);background:var(--bg-elev-2);border:2px solid var(--line);text-align:left;display:flex;align-items:center;gap:14px;transition:border-color .2s,transform .14s var(--spring)}
.choice:active{transform:scale(.98)}
.choice.selected{border-color:var(--amber);background:rgba(212,160,23,.06)}
.choice .cic{font-size:1.6rem}
.choice .cname{font-weight:800;font-size:1rem;margin:0}
.choice .cdesc{font-size:.82rem;color:var(--ink-2);margin:2px 0 0}

.confetti{position:fixed;inset:0;pointer-events:none;z-index:99;overflow:hidden}
.confetti i{position:absolute;top:-10px;width:8px;height:14px;opacity:.95;animation:fall 2.6s ease-in forwards;border-radius:1px}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg);opacity:0}}

.h-item{display:block;width:100%;text-align:left;padding:14px;border-radius:var(--r-lg);background:var(--bg-elev-2);border:1px solid var(--line);margin-bottom:10px;transition:border-color .2s,transform .14s var(--spring)}
.h-item:active{transform:scale(.98)}
.h-item.active{border-color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber)}
.h-row{display:flex;justify-content:space-between;align-items:center;gap:8px}

[data-theme="gym"] .session-stage{padding:32px 18px}
[data-theme="gym"] .session-stage .target{font-size:4.5rem}

.bw-ratio{display:inline-block;font-size:.72rem;font-weight:800;color:var(--amber-2);background:rgba(212,160,23,.12);padding:2px 8px;border-radius:999px;margin-left:6px}

@media (min-width:768px){.metric-row{grid-template-columns:repeat(4,1fr)}.field-row{grid-template-columns:1fr 1fr 1fr}}
@media (min-width:1024px){.layout-2col{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}.layout-2col>*+*{margin-top:0}}
