:root{
  --bg:#060A0F; --card:#0D1720; --card2:#122230; --bd:#1B3040;
  --cy:#00E5D0; --or:#FF5C2E; --gr:#3DF08C; --pu:#A78BFA; --ye:#FFC93C; --rd:#FF4757;
  --tx:#E9F5F2; --mu:#5E8490; --dim:#536F7E; /* --dim: faint TEXT, 3.40:1 on --card, 3.04:1 on --card2 (v121's #4F6B7A was 2.87:1 on card2) */
  --track:#2A4454; /* empty bar/timeline track (not text) */
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{background:var(--bg);color:var(--tx);font-family:-apple-system,system-ui,sans-serif;overscroll-behavior-y:contain;touch-action:manipulation}
body{padding-bottom:84px;max-width:520px;margin:0 auto}
.pg{display:none;padding:calc(14px + env(safe-area-inset-top)) 14px 20px}
.pg.on{display:block}
h1{font-size:25px;font-weight:800;letter-spacing:-.4px}
.eyebrow{font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--cy)}
.sub{font-size:13.5px;color:var(--mu);line-height:1.45}
.card{background:var(--card);border:1px solid var(--bd);border-radius:14px;padding:17px;margin-bottom:12px}
.stitle{font-size:12.5px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;margin-bottom:12px}
button{font-family:inherit;cursor:pointer;border:none}
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}/* visually hidden, still read by screen readers */

/* nav */
nav{position:fixed;bottom:0;left:0;right:0;max-width:520px;margin:0 auto;display:flex;background:#0A121A;border-top:1px solid var(--bd);padding:7px 8px calc(8px + env(safe-area-inset-bottom));z-index:50;transform:translateZ(0);will-change:transform}/* translateZ+will-change: promote the fixed bar to its own GPU layer so iOS standalone-PWA momentum scroll can't leave it floating mid-screen (v75) */
nav button{flex:1;background:none;color:var(--mu);font-size:11.5px;font-weight:700;letter-spacing:.4px;padding:8px 2px;border-radius:10px;display:flex;flex-direction:column;gap:3px;align-items:center}
nav button.on{color:var(--cy)}
nav svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* scanline hero */
.hero{position:relative;overflow:hidden}
.scan{position:absolute;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--cy),transparent);opacity:.5;animation:scan 4s linear infinite}
@keyframes scan{0%{top:0}100%{top:100%}}
@media(prefers-reduced-motion:reduce){.scan{display:none}}/* diagram tween is JS-gated on the same query */

/* stat bars */
.sb{margin-bottom:11px}
.sbt{display:flex;justify-content:space-between;font-size:13px;margin-bottom:4px}
.sbg{height:5px;background:var(--track);border-radius:3px}
.sbf{height:100%;border-radius:3px}
.gsrc{color:var(--dim);font-size:11px}/* where a goal bar's number came from (weigh-in date / scan date) */

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mini{background:var(--card2);border-radius:10px;padding:11px 12px}
.mini .v{font-size:17px;font-weight:800;margin-top:3px;display:flex;flex-wrap:wrap;align-items:center;column-gap:6px;row-gap:3px}
.mini .l{font-size:11.5px;color:var(--mu);letter-spacing:.4px;text-transform:uppercase}
.flag{font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;vertical-align:middle;line-height:1.3}

/* timeline */
.tl{display:flex;gap:4px;margin:10px 0 6px}
.tlw{flex:1;height:9px;border-radius:4px;background:var(--track);position:relative}
.tlw.now{outline:2px solid var(--cy);outline-offset:2px}
.tlx{display:flex;justify-content:space-between;font-size:11px;color:var(--mu)}

/* pills / selectors */
.row{display:flex;gap:5px;margin-bottom:10px}
.row button{flex:1;padding:11px 2px;border-radius:11px;font-weight:800;font-size:13px;background:var(--card);color:var(--mu);transition:background .15s}
.row button.on{background:var(--or);color:#fff}
.row.ph button.on{background:var(--cy);color:#00110F}
.seg{display:flex;gap:4px;margin-bottom:10px}
.seg button{flex:1;padding:9px 2px;border-radius:9px;font-size:11.5px;font-weight:700;background:var(--card);color:var(--mu);line-height:1.3;border-bottom:2px solid transparent}
.seg button.on{background:var(--card2)}

/* exercise rows */
.ex{background:var(--card);border:1px solid var(--bd);border-radius:12px;margin-bottom:8px;overflow:hidden}
.exh{display:flex;align-items:center;gap:10px;padding:12px 13px;cursor:pointer}
.chk{width:23px;height:23px;min-width:23px;padding:0;border-radius:50%;border:2px solid var(--dim);display:flex;align-items:center;justify-content:center;font-size:13px;color:#00110F;background:transparent}
.chk.on{background:var(--gr);border-color:var(--gr)}
.exn{flex:1}
.exn .n{font-size:16px;font-weight:700;line-height:1.3}
.exn .r{font-size:13.5px;font-weight:600;margin-top:2px}
.car{color:var(--dim);font-size:11px}
.exb{display:none;padding:0 13px 13px;border-top:1px solid var(--bd)}
.ex.open .exb{display:block}
.dia{background:#081018;border:1px solid var(--bd);border-radius:10px;margin:10px 0;display:flex;justify-content:center;padding:6px;position:relative;cursor:pointer}
.dia svg{width:100%;max-width:250px;height:auto}
.dia line,.dia circle,.dia path{stroke:#DCEFEA;stroke-width:2.6;stroke-linecap:round;fill:none}
.dia .eq{stroke:#3E6070;stroke-width:2.2}
.dia .eqf{fill:#16303E;stroke:#3E6070;stroke-width:1.6}
.dia .ac{stroke:var(--cy)}
.dia .gnd{stroke:#22404E;stroke-width:1.4}
.dia .dsh{stroke:#3E6070;stroke-dasharray:3 4;stroke-width:1.6}
.dia .ghost line,.dia .ghost circle{stroke:#264754;stroke-width:2;stroke-dasharray:3 3}
.dia .trc{stroke:#1E3D4B;stroke-dasharray:2 4;stroke-width:1.3}
.smb{position:absolute;top:6px;right:8px;font-size:9.5px;font-weight:800;letter-spacing:1px;color:var(--dim);border:1px solid var(--bd);border-radius:6px;padding:2px 6px}
.dia.slow .smb{color:var(--cy);border-color:var(--cy)}
.vbtn{display:flex;align-items:center;justify-content:center;gap:7px;margin:2px 0 10px;padding:10px;background:#101E29;border:1px solid var(--bd);border-radius:10px;color:var(--tx);font-size:13.5px;font-weight:700;text-decoration:none}
.vbtn b{color:var(--rd)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0}
.chip{font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:7px;background:#0A2A26;color:var(--cy)}
.why{font-size:13.5px;color:#C7DCD6;line-height:1.6;background:var(--card2);border-left:3px solid var(--gr);border-radius:8px;padding:10px 12px;margin-bottom:8px}
.cue{font-size:13.5px;color:#FDE68A;line-height:1.6;background:#141008;border-left:3px solid var(--ye);border-radius:8px;padding:10px 12px}
.li{background:var(--card);border:1px solid var(--bd);border-radius:11px;padding:12px 14px;margin-bottom:7px;display:flex;gap:10px;align-items:flex-start;font-size:14.5px;line-height:1.5}
.note{background:#12100A;border:1px solid #6B4A00;border-radius:11px;padding:13px 15px;font-size:13.5px;color:#FDE68A;line-height:1.6;margin:10px 0}
.pban{border-radius:11px;padding:12px 15px;font-size:13px;line-height:1.6;margin-bottom:10px;border:1px solid}

/* muscle map */
.mm{display:flex;gap:14px;justify-content:center;padding:4px 0}
.mm svg{width:78px;height:138px}
.mm .bod{stroke:#33525F;stroke-width:1.6;fill:none;stroke-linecap:round}
.mm .rg{fill:#12242E;opacity:.7}
.mm .rg.hot{fill:var(--cy);opacity:.85;filter:drop-shadow(0 0 3px rgba(0,229,208,.7))}
.mm .lab{font-size:7.5px;fill:var(--mu);text-anchor:middle;letter-spacing:1px}

/* timer */
#tmr{position:fixed;right:14px;bottom:92px;z-index:60;background:var(--card2);border:1px solid var(--cy);color:var(--cy);border-radius:999px;padding:11px 17px;font-weight:800;font-size:15px;box-shadow:0 4px 14px rgba(0,0,0,.5);transform:translateZ(0);will-change:transform}/* same GPU-layer promotion as nav so the timer doesn't detach on momentum scroll (v75) */
#tmr.run{background:var(--cy);color:#00110F}
/* "New version ready" — shown when a service-worker update lands mid-session */
.toast{position:fixed;left:14px;right:14px;bottom:calc(92px + env(safe-area-inset-bottom));max-width:492px;margin:0 auto;z-index:150;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card2);border:1px solid var(--cy);border-radius:12px;padding:10px 12px;font-size:13.5px;font-weight:700;box-shadow:0 4px 14px rgba(0,0,0,.5)}
.toast button{background:var(--cy);color:#00110F;font-weight:800;border-radius:8px;padding:8px 14px;font-size:13px}
.small{font-size:12.5px;color:var(--mu);line-height:1.55}
.gcard{border:1px solid #14532D;background:#071410}
.gcard .stitle{color:var(--gr)}

/* per-exercise log */
.exlog{background:#0A1620;border:1px solid var(--bd);border-radius:10px;padding:11px 12px;margin:2px 0 10px}
.exlogt{font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--gr);margin-bottom:8px}
.exlog textarea{width:100%;background:var(--card2);border:1px solid var(--bd);border-radius:8px;padding:9px 10px;color:var(--tx);font-family:inherit;font-size:14px;line-height:1.45;resize:vertical;min-height:48px}
.exlog .savebtn{width:100%;margin-top:7px;padding:10px;border-radius:8px;background:var(--gr);color:#00110F;font-weight:800;font-size:13px}
.logentry{background:var(--card2);border-radius:8px;padding:8px 10px;margin-top:7px;display:flex;gap:8px;align-items:flex-start}
.logentry .del{background:none;color:var(--mu);font-size:17px;line-height:1;padding:2px 6px}
.logdate{font-size:10.5px;font-weight:700;color:var(--mu);letter-spacing:.3px;text-transform:uppercase}
.logtxt{font-size:13.5px;line-height:1.45;white-space:pre-wrap;margin-top:2px}

/* inline edit forms (meal, weigh-in, bar base) */
.ef input{width:100%;min-width:0;background:var(--card);border:1px solid var(--bd);border-radius:7px;padding:8px 9px;color:var(--tx);font-family:inherit;font-size:14px}
.efl{display:block;font-size:10.5px;font-weight:700;color:var(--mu);letter-spacing:.3px;text-transform:uppercase;margin:4px 0 3px}
.efrow{display:flex;gap:6px}.efrow>div{flex:1;min-width:0}
.efbtns{display:flex;gap:6px;margin-top:8px}
.efok{flex:1;background:var(--gr);color:#00110F;font-weight:800;border-radius:8px;padding:8px 12px;font-size:13px}
.efno{background:var(--card);border:1px solid var(--bd);color:var(--tx);font-weight:700;border-radius:8px;padding:8px 10px;font-size:12.5px;white-space:nowrap}
.eferr{color:var(--rd);font-size:12px;font-weight:700;margin-top:5px;line-height:1.4}
.eferr:empty{display:none}
/* appBanner(): persistent alerts stacked at the top (storage full, notes archive trimmed) */
.banners{position:fixed;top:0;left:0;right:0;z-index:998}
.banner{display:flex;align-items:center;gap:10px;justify-content:space-between;font:700 12px/1.5 -apple-system,sans-serif;padding:calc(9px + env(safe-area-inset-top)) 14px 9px;color:#fff;background:#7F1D1D}
.banner.warn{background:#5A3A06}
.banner button{color:#fff;font-size:14px;padding:4px 8px;background:transparent}
