/* ═══════════ BODY LAYER ═══════════
   Same tokens as the rest of the app — this should not look bolted on. */

#v-body{padding:calc(var(--safe-t) + 18px) 20px 120px}
#v-workout{padding:calc(var(--safe-t) + 18px) 20px 40px}

/* ── hero ── */
.b-hero{text-align:center;padding:14px 0 22px}
.b-hero-n{font-family:var(--serif);font-size:66px;line-height:1;letter-spacing:-.02em;color:var(--ink)}
.b-hero-n span{font-family:var(--sans);font-size:20px;font-weight:500;color:var(--gray);margin-left:6px}
.b-hero-s{margin-top:8px;font-size:15px;color:var(--gray)}
.b-hero-d{margin-top:4px;font-size:13px;color:var(--gray-soft)}

/* ── the three rings ── */
.b-rings{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.b-ring{position:relative;text-align:center;background:var(--card);border-radius:20px;
  padding:14px 6px 12px;box-shadow:0 8px 22px -16px rgba(0,0,0,.28)}
.bring{width:80px;height:80px;transform:rotate(-90deg);display:block;margin:0 auto}
.bring-t{fill:none;stroke:var(--hairline);stroke-width:7}
.bring-v{fill:none;stroke:var(--accent);stroke-width:7;stroke-linecap:round;
  transition:stroke-dashoffset .8s var(--spring)}
.bring.over .bring-v{stroke:#C05B3E}
.bring.pro .bring-v{stroke:#3F8F6B}
.bring.st .bring-v{stroke:#D9913F}
.b-ring-c{position:absolute;top:34px;left:0;right:0;pointer-events:none}
.b-ring-c b{display:block;font-size:17px;font-weight:700;color:var(--ink);line-height:1.1}
.b-ring-c span{display:block;font-size:10px;color:var(--gray-soft);margin-top:1px}
.b-ring-l{margin-top:8px;font-size:11px;color:var(--gray);letter-spacing:.02em}

/* ── the honest warning, said once ── */
.b-warn{background:rgba(192,91,62,.09);border:1px solid rgba(192,91,62,.22);
  border-radius:16px;padding:13px 15px;font-size:13.5px;line-height:1.5;
  color:var(--ink);margin-bottom:16px}

/* ── today's workout ── */
.b-card{background:var(--card);border-radius:24px;padding:20px;margin-bottom:18px;
  box-shadow:0 18px 40px -26px rgba(var(--accent-rgb),.5),0 4px 14px -10px rgba(0,0,0,.18)}
.b-card.done{box-shadow:0 8px 22px -18px rgba(0,0,0,.3)}
.b-card-t{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gray-soft)}
.b-card-n{font-family:var(--serif);font-size:29px;line-height:1.15;margin:6px 0 4px;color:var(--ink)}
.b-card-s{font-size:13px;color:var(--gray)}
.b-moves{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 16px}
.b-move{font-size:12.5px;color:var(--ink);background:rgba(var(--accent-rgb),.07);
  border-radius:999px;padding:5px 11px}
.b-move i{font-style:normal;color:var(--gray);margin-left:3px}
.b-card-f{margin-top:11px;font-size:12.5px;color:var(--gray-soft);line-height:1.45;text-align:center}
.b-done-l{font-size:13.5px;color:var(--gray);margin:12px 0 14px}

/* ── the proof gate: the block does not clear until this is settled ── */
.b-proof{margin-top:14px;padding:16px;border-radius:18px;
  background:rgba(var(--accent-rgb),.06);border:1px dashed rgba(var(--accent-rgb),.3)}
.b-proof-t{font-family:var(--serif);font-size:20px;color:var(--ink);margin-bottom:4px}
.b-proof-s{font-size:13px;line-height:1.5;color:var(--gray);margin-bottom:14px}
.b-proof-x{display:block;width:100%;margin-top:10px;background:none;border:none;
  font-family:var(--sans);font-size:12.5px;color:var(--gray-soft);padding:8px;cursor:pointer}
.b-proof-ph{width:100%;height:150px;border-radius:16px;background-size:cover;
  background-position:center;margin:14px 0 12px}

/* ── inline weigh-in ── */
.b-weigh{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:12px}
.b-weigh .ghost-btn{width:auto;padding-left:20px;padding-right:20px}

/* ── sections ── */
.b-sec{background:var(--card);border-radius:22px;padding:17px 17px 15px;margin-bottom:14px;
  box-shadow:0 8px 22px -18px rgba(0,0,0,.26)}
.b-sec-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}
.b-sec-h span{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gray-soft)}
.b-sec-h b{font-size:13px;font-weight:600;color:var(--ink)}
.b-empty{font-size:13px;color:var(--gray-soft);line-height:1.5;padding:2px 0 4px}

/* ── quick food ── */
.b-quick{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.b-q{font-size:12.5px;color:var(--ink);background:transparent;border:1px solid var(--hairline);
  border-radius:999px;padding:7px 12px;cursor:pointer;font-family:var(--sans)}
.b-q i{font-style:normal;color:var(--gray-soft);margin-left:5px;font-size:11px}
.b-q:active{background:rgba(var(--accent-rgb),.09)}
.b-q.more{color:var(--accent);border-color:rgba(var(--accent-rgb),.3)}

.b-food{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.b-f{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--card-line)}
.b-f-ph{width:34px;height:34px;border-radius:10px;background-size:cover;background-position:center;flex:0 0 auto}
.b-f-ph.none{background:var(--hairline)}
.b-f-n{flex:1;font-size:14px;color:var(--ink);line-height:1.25;min-width:0}
.b-f-n i{display:block;font-style:normal;font-size:11px;color:var(--gray-soft);margin-top:1px}
.b-f-k{font-size:14px;font-weight:600;color:var(--ink);text-align:right}
.b-f-k i{display:block;font-style:normal;font-size:11px;font-weight:400;color:var(--gray-soft)}
.b-f-x{background:none;border:none;color:var(--faint);font-size:22px;line-height:1;
  padding:4px 2px 4px 8px;cursor:pointer}

.b-row2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.ghost-btn{font-family:var(--sans);font-size:13.5px;font-weight:500;color:var(--ink);
  background:transparent;border:1px solid var(--hairline);border-radius:14px;
  padding:12px 10px;cursor:pointer;width:100%}
.ghost-btn:active{background:rgba(var(--accent-rgb),.07)}

/* ── weight sparkline ── */
.b-spark{width:100%;height:52px;display:block}
.b-spark polyline{fill:none;stroke:var(--accent);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.b-spark-l{display:flex;justify-content:space-between;font-size:11px;color:var(--gray-soft);margin-top:2px}

/* ── food sheet ── */
.bf-sheet{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--card);
  border-radius:26px 26px 0 0;padding:8px 20px calc(var(--safe-b) + 20px);
  transform:translateY(102%);transition:transform .42s var(--spring);max-height:82vh;
  display:flex;flex-direction:column}
.bf-sheet.up{transform:translateY(0)}
.bf-grab{width:38px;height:4px;border-radius:2px;background:var(--faint);margin:6px auto 14px}
.bf-form{display:grid;grid-template-columns:1fr 68px 60px;gap:7px;margin-bottom:6px}
.bf-in{font-family:var(--sans);font-size:15px;color:var(--ink);background:var(--canvas);
  border:1px solid var(--hairline);border-radius:13px;padding:12px 12px;width:100%}
.bf-add{width:100%;margin:8px 0 14px}
.bf-list{overflow-y:auto;-webkit-overflow-scrolling:touch;margin:0 -4px}
.bf-i{display:flex;justify-content:space-between;align-items:center;width:100%;
  background:none;border:none;border-top:1px solid var(--card-line);padding:13px 4px;
  font-family:var(--sans);font-size:14.5px;color:var(--ink);cursor:pointer;text-align:left}
.bf-i i{font-style:normal;font-size:12px;color:var(--gray-soft);flex:0 0 auto;margin-left:12px}
.bf-i:active{background:rgba(var(--accent-rgb),.07)}

/* ── the workout runner: one thing on screen, nothing to decide ── */
#v-workout{display:flex;flex-direction:column;justify-content:center;text-align:center}
.wo-top{display:flex;justify-content:space-between;font-size:12px;color:var(--gray-soft);
  letter-spacing:.04em;margin-bottom:10px}
.wo-bar{height:3px;border-radius:2px;background:var(--hairline);overflow:hidden;margin-bottom:44px}
.wo-bar i{display:block;height:100%;background:var(--accent);border-radius:2px;
  transition:width .5s var(--spring)}
.wo-name{font-family:var(--serif);font-size:34px;line-height:1.15;color:var(--ink);margin-bottom:10px}
.wo-count{font-family:var(--serif);font-size:104px;line-height:1;letter-spacing:-.03em;
  color:var(--accent);font-variant-numeric:tabular-nums}
.wo-count span{font-family:var(--sans);font-size:22px;font-weight:500;color:var(--gray);
  letter-spacing:0;margin-left:2px}
.wo-cue{margin:22px auto 40px;max-width:19em;font-size:15px;line-height:1.55;color:var(--gray)}
.wo-go{width:100%}
.wo-bail{display:block;width:100%;margin-top:16px;background:none;border:none;
  font-family:var(--sans);font-size:13.5px;color:var(--gray-soft);padding:10px;cursor:pointer}

/* ── night ── */
.app.night .b-ring,.app.night .b-card,.app.night .b-sec{box-shadow:0 8px 22px -16px rgba(0,0,0,.5)}
.app.night .b-warn{background:rgba(192,91,62,.14);border-color:rgba(230,140,110,.28)}
.app.night .b-move{background:rgba(var(--accent-rgb),.16)}
.app.night .b-q,.app.night .ghost-btn{border-color:rgba(237,234,245,.16)}
.app.night .bf-in{background:rgba(31,28,40,.7);border-color:rgba(237,234,245,.18)}
.app.night .b-f-ph.none{background:rgba(237,234,245,.08)}
.app.night .wo-count{color:var(--accent-bright)}

@media (prefers-reduced-motion: reduce){
  .bring-v,.wo-bar i,.bf-sheet{transition:none}
}
