/* PLANNER */
.pv-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:6px}
.pv-nav{display:flex;gap:6px}
.pv-nav button{border:1px solid var(--line);border-radius:var(--radius);width:34px;height:34px;font-size:15px}
.pv-nav .pv-today{width:auto;padding:0 14px;font-family:var(--courier);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.pv-nav button:hover{border-color:var(--ink)}
.pv-label{font-family:var(--helv);font-weight:900;font-size:clamp(20px,2.6vw,26px);letter-spacing:-.02em;}
.seg2{display:flex;gap:3px;background:var(--wash);border-radius:100px;padding:3px}
.seg2 button{font-family:var(--courier);font-size:11px;letter-spacing:.05em;text-transform:uppercase;padding:7px 14px;border-radius:100px;color:var(--muted)}
.seg2 button.on{background:var(--ink);color:var(--paper)}
.pv-foot{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-family:var(--courier);font-size:11px;color:var(--muted);letter-spacing:.03em}
.pv-foot b{color:var(--ink)}
.pm-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.pm-dow{font-family:var(--courier);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);text-align:center;padding:6px 0}
.pm-cell{min-height:88px;border:1px solid var(--line);border-radius:var(--radius);padding:6px;cursor:pointer;transition:.12s;overflow:hidden;position:relative}
.pm-cell:hover{border-color:var(--ink)}
.pm-cell.out{opacity:.35}
.pm-cell.today{box-shadow:inset 0 0 0 2px var(--volt-ink)}
.pm-d{font-family:var(--courier);font-size:11px;font-weight:500;margin-bottom:4px}
.pm-cell.today .pm-d{color:var(--ink)}
.pm-chip{font-family:var(--courier);font-size:9px;background:var(--wash);border-left:2px solid var(--ink);padding:2px 4px;margin-bottom:3px;border-radius:var(--radius);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pm-chip.pm-run{border-left-color:var(--ink)}
.pm-chip.pm-hybrid{border-left-color:var(--accent)}
.pm-chip.pm-cycling,.pm-chip.pm-rowing,.pm-chip.pm-walk{border-left-color:var(--muted)}
.pm-chip.pm-mobility{border-left-color:var(--r2)}
.pm-chip.pm-log{border-left-color:var(--volt-ink);color:var(--muted)}   /* v3.9.3 — an unplanned logged workout, worn as record */
.pm-more{font-family:var(--courier);font-size:9px;color:var(--muted)}
.pm-cnt{display:none}
@media(max-width:720px){.pm-cell{min-height:52px}.pm-chip,.pm-more{display:none}.pm-cnt{display:inline-block;position:absolute;bottom:5px;left:6px;font-family:var(--courier);font-size:10px;background:var(--ink);color:var(--paper);border-radius:100px;padding:0 6px}}
.pw-day{padding:10px 0;border-bottom:1px solid var(--line)}
.pw-day:last-child{border-bottom:none}
.pw-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.pw-dt{font-family:var(--courier);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.pw-dt b{color:var(--ink);font-size:14px}
.pw-day.today .pw-dt b{color:var(--ink)}
.pw-add{font-family:var(--courier);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-text)}
.pw-add:hover{color:var(--ink)}
.pw-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:6px;cursor:pointer}
.pw-item:hover{border-color:var(--ink)}
.pw-time{font-family:var(--courier);font-size:11px;font-weight:500;min-width:64px}
.pw-t{font-weight:700;font-size:13.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pw-meta{font-family:var(--courier);font-size:10px;color:var(--muted);white-space:nowrap}
/* mobile: the meal's NAME is the row (Arrick, 2026-08-08) — macros live on the meal
   itself, one tap away; cramming them here squeezed the name down to one letter */
@media(max-width:640px){.pw-item .pw-meta{display:none}.pw-time{min-width:50px}}   /* phones: the title wins the row — details live one tap away */
.pw-done{font-family:var(--courier);font-size:9px;letter-spacing:.05em;text-transform:uppercase;background:var(--volt);color:var(--ink);padding:3px 8px;border-radius:100px;flex-shrink:0}
.pw-x{color:var(--muted);font-size:15px;width:36px;height:36px;margin:-7px;border-radius:50%;flex-shrink:0} /* 36px hit area, same visual footprint */
@media(hover:hover){.pw-x:hover{background:var(--accent);color:var(--paper)}}
.pw-rest{font-family:var(--courier);font-size:11px;color:var(--muted);padding:4px 0;text-transform:uppercase;letter-spacing:.05em}
/* ═══ v2.9.2 · the Meal Planner — the Training Planner's mirror; plans are substrate ═══ */
.mp-gap{font-family:var(--courier);font-size:11px;color:var(--ink);padding:11px 0 2px;border-top:1px solid var(--line);margin-top:2px}
.pm-chip.pm-meal{border-left-color:var(--muted)}
.mv-calc{margin-bottom:18px}
.mv-dayfoot{font-family:var(--courier);font-size:10px;color:var(--muted);letter-spacing:.03em;padding:5px 0 2px}
.pd-item{display:flex;align-items:flex-start;gap:14px;padding:16px 0;border-bottom:1px solid var(--line)}
.pd-item:last-of-type{border-bottom:none}
.pd-time{font-family:var(--courier);font-weight:500;font-size:14px;min-width:78px;margin-top:2px}
.pd-b{flex:1;min-width:0}
.pd-t{font-family:var(--helv);font-weight:900;font-size:18px;letter-spacing:-.01em;}
.pd-d{font-size:13px;color:var(--muted);margin-top:3px}
.pd-actions{display:flex;gap:8px;flex-shrink:0;align-items:flex-start}
/* v2.18.1 · phones: the day-view row STACKS — time + actions share the top line and
   the session name takes the full row width below them. In the flex row it was being
   squeezed into a sliver between the time gutter and the Start/Edit pills, wrapping
   one word per line under the buttons. Meals' day view shares .pd-item and inherits. */
@media(max-width:640px){
  .pd-item{display:grid;grid-template-columns:1fr auto;column-gap:10px;align-items:center}
  .pd-time{grid-area:1/1;min-width:0;margin-top:0}
  .pd-actions{grid-area:1/2;align-items:center}
  .pd-b{grid-area:2/1/3/3;margin-top:8px}
  .pd-t{font-size:17px;line-height:1.2}
}
