:root{--bg:#0f1115;--panel:#171a21;--ink:#e8ecf1;--muted:#8a93a6;--accent:#5ac8fa;--ok:#28c76f;--warn:#f6c343;--bad:#ea5455;--line:#252a35}
*{box-sizing:border-box}
body{margin:0;font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
header{display:flex;align-items:baseline;gap:24px;padding:16px 24px;border-bottom:1px solid var(--line);background:var(--panel)}
header h1{font-size:18px;margin:0;letter-spacing:.5px}
header nav{display:flex;gap:14px}
header nav a{color:var(--muted);text-decoration:none;font-size:13px}
header nav a:hover{color:var(--ink)}
header .meta{margin-left:auto;color:var(--muted);font-size:12px}
main{padding:24px;max-width:1100px;margin:0 auto}
h2{font-size:14px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:24px 0 10px}
.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px}
.kpi span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.6px}
.kpi strong{font-size:22px;font-weight:600}
table.week{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}
table.week th,table.week td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left}
table.week th{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);background:#11141a}
tr.done td{color:var(--ok)}
tr.skipped td{color:var(--bad)}

/* misc */
.muted{color:var(--muted);font-size:13px}
section.warn{background:#3a2b13;border:1px solid #6b4f1c;border-radius:8px;padding:10px 14px;margin-top:14px}
section.warn a{color:var(--warn);font-weight:600;text-decoration:none}
.tsb-pos strong{color:var(--ok)}
.tsb-neg strong{color:var(--warn)}
canvas{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px}

/* calendar — Xert-style card grid */
main:has(.cal-wrap){max-width:1600px}
.cal-head-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:8px 0 16px}
.cal-legend{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:var(--muted)}
.cal-legend span{display:inline-flex;align-items:center;gap:4px}
.cal-legend .dot{display:inline-block;width:10px;height:10px;border-radius:2px}

/* intensity palette */
.int-z2        { --tone:#5b8def; }   /* low / Z2 — blue */
.int-sweetspot { --tone:#28c76f; }   /* green */
.int-threshold { --tone:#f6c343; }   /* orange/yellow */
.int-vo2       { --tone:#ea5455; }   /* red */
.int-ou        { --tone:#c44ad8; }   /* magenta */
.int-legs      { --tone:#a07a3f; }   /* gold-brown */
.int-long      { --tone:#1d8eb8; }   /* teal */
.int-test      { --tone:#e8d44b; }   /* yellow */
.int-race      { --tone:#ff5e3a; }   /* hot red */
.int-openers   { --tone:#7a88a6; }
.int-rest      { --tone:#3a4252; }

.dot.int-z2,.dot.int-sweetspot,.dot.int-threshold,.dot.int-vo2,.dot.int-ou,
.dot.int-legs,.dot.int-long,.dot.int-test,.dot.int-race { background:var(--tone) }

.cal-wrap{display:flex;flex-direction:column;gap:18px}
.cal-week{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px}
.cal-week-grid{display:grid;grid-template-columns:56px repeat(7,1fr);gap:8px}
.block-banner{align-self:flex-start;font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--accent,#5b9dff);background:rgba(91,157,255,.10);border:1px solid rgba(91,157,255,.28);border-radius:6px;padding:3px 9px;text-transform:uppercase}

.cal-wknum{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#11141a;border:1px solid var(--line);border-radius:8px;color:var(--muted);text-align:center}
.cal-wknum strong{font-size:14px;color:var(--ink)}
.cal-wknum small{font-size:10px;opacity:.6;margin-top:2px}

.cal-daycell{display:flex;flex-direction:column;gap:6px;min-width:0}
.cal-daycell-head{
  display:flex;align-items:baseline;justify-content:space-between;
  font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;
  padding:0 4px 2px;border-bottom:1px solid var(--line);margin-bottom:2px;
}
.cal-daycell-head .dow{font-weight:600}
.cal-daycell-head .date{opacity:.7;font-variant-numeric:tabular-nums}
.cal-daycell.today .cal-daycell-head{color:var(--accent)}
.cal-daycell.past{opacity:0.88}

.cal-card{background:#11141a;border:1px solid var(--line);border-left:4px solid var(--tone,var(--line));border-radius:8px;padding:8px 10px;min-height:108px;display:flex;flex-direction:column;gap:6px;transition:transform .1s;position:relative}
.cal-card .card-x{
  position:absolute;top:4px;right:4px;width:18px;height:18px;
  background:transparent;border:none;color:var(--muted);font-size:14px;
  font-weight:600;line-height:1;cursor:pointer;padding:0;border-radius:9px;
  opacity:0;transition:opacity .1s, color .1s, background .1s;
}
.cal-card:hover .card-x{opacity:0.55}
.cal-card .card-x:hover{opacity:1;color:#ea5455;background:rgba(234,84,85,0.15)}

/* ===== Program page ===== */
.prog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;flex-wrap:wrap;gap:14px}
.active-prog-wrap{margin-bottom:14px}
.active-prog{
  background:linear-gradient(135deg, rgba(91,141,239,0.08), #11141a 70%);
  border:1px solid rgba(91,141,239,0.4);border-left:4px solid var(--accent);
  border-radius:8px;padding:18px 22px;
}
.ap-head{display:flex;gap:10px;align-items:center;margin-bottom:6px}
.ap-type{
  font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;
  padding:2px 8px;background:#1d212a;border:1px solid var(--line);border-radius:3px;
}
.ap-status{
  font-size:9.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
  padding:2px 8px;border-radius:10px;
}
.ap-status.active{background:rgba(40,199,111,0.18);color:#28c76f}
.ap-status.archived{background:rgba(138,147,166,0.15);color:var(--muted)}
.ap-status.draft{background:rgba(246,195,67,0.15);color:#f6c343}
.ap-name{margin:6px 0 14px;font-size:22px;color:var(--ink)}
.ap-stats{display:grid;grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));gap:12px;margin-bottom:14px}
.ap-stats > div{display:flex;flex-direction:column;gap:2px}
.ap-stats span{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.ap-stats strong{font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.ap-actions{display:flex;gap:8px;padding-top:10px;border-top:1px solid var(--line)}
.ap-actions button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:6px 14px;border-radius:4px;font-size:12px;cursor:pointer;
}
.ap-actions button:hover{color:var(--ink);border-color:var(--accent)}

.prog-list{display:flex;flex-direction:column;gap:6px}
.prog-row{
  display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;
  background:#11141a;border:1px solid var(--line);border-radius:5px;padding:10px 14px;
}
.prog-row.status-active{border-left:3px solid #28c76f}
.prog-row.status-draft{border-left:3px solid #f6c343;opacity:0.95}
.prog-row.status-archived{opacity:0.7}
.pr-head{display:flex;gap:8px;align-items:center;margin-bottom:3px}
.pr-name{font-size:13.5px;font-weight:600;color:var(--ink)}
.pr-dates{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:2px}
.pr-actions{display:flex;gap:5px;flex-wrap:wrap}
.pr-actions button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:5px 12px;border-radius:3px;font-size:11.5px;cursor:pointer;
}
.pr-actions button:hover{color:var(--ink);border-color:var(--accent)}
.pr-actions .danger:hover{color:#ea5455;border-color:#ea5455}

/* Program editor modal */
.prog-card{max-width:560px}
.prog-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.prog-form label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.prog-form label.full{grid-column:1/-1}
.prog-form input, .prog-form select{
  background:#11141a;border:1px solid var(--line);color:var(--ink);
  padding:6px 8px;border-radius:4px;font-size:13px;
}
.prog-footer{
  grid-column:1/-1;display:flex;gap:10px;align-items:center;
  padding-top:14px;border-top:1px solid var(--line);margin-top:6px;
}
.prog-footer #prog-cancel{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:7px 14px;border-radius:4px;font-size:13px;cursor:pointer;
}
.prog-footer #prog-cancel:hover{color:var(--ink)}

/* Weekly availability */
.availability-wrap{
  background:#11141a;border:1px solid var(--line);border-radius:6px;
  padding:14px 18px;margin:18px 0;
}
.availability-wrap .card-head{padding-bottom:10px}
.avail-grid{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.avail-row{
  display:grid;grid-template-columns:50px 120px 1fr 1fr 1.6fr;gap:10px;
  align-items:center;padding:6px 10px;
  background:#0f1115;border:1px solid var(--line);border-radius:4px;
}
.avail-row.unavailable{opacity:0.5}
.avail-row.unavailable .avail-field{pointer-events:none}
.avail-dow{font-size:11.5px;font-weight:700;color:var(--ink);letter-spacing:.4px;text-transform:uppercase}
.avail-toggle{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);cursor:pointer}
.avail-toggle input{margin:0}
.avail-field{display:flex;flex-direction:column;gap:2px;font-size:9.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.avail-field input, .avail-field select{
  background:#11141a;border:1px solid var(--line);color:var(--ink);
  padding:4px 6px;border-radius:3px;font-size:12px;
}
.avail-footer{display:flex;align-items:center;gap:10px;margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}
.avail-footer #avail-save{margin-left:auto}
.avail-footer #avail-reset{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:7px 14px;border-radius:4px;font-size:12px;cursor:pointer;
}
.avail-footer #avail-reset:hover{color:var(--ink)}

/* Side disciplines in program editor */
.side-disc{display:flex;flex-direction:column;gap:6px;padding:10px;background:#0f1115;border:1px solid var(--line);border-radius:5px}
.side-disc-head{display:flex;justify-content:space-between;align-items:center;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.side-disc-head button{
  background:#1d212a;border:1px solid var(--line);color:var(--accent);
  padding:3px 10px;border-radius:3px;font-size:11px;cursor:pointer;
}
.side-disc-head button:hover{border-color:var(--accent)}
.sd-row{
  background:#11141a;border:1px solid var(--line);border-radius:4px;
  padding:8px;display:flex;flex-direction:column;gap:8px;margin-bottom:6px;
}
.sd-line1{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.sd-line1 select{
  background:#0f1115;border:1px solid var(--line);color:var(--ink);
  padding:4px 8px;border-radius:3px;font-size:12px;flex:1;min-width:0;
}
.sd-line1 select.sd-template{flex:2}
.sd-line1 button[data-rm]{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  width:26px;height:26px;border-radius:3px;font-size:14px;cursor:pointer;line-height:1;padding:0;
}
.sd-line1 button[data-rm]:hover{color:#ea5455;border-color:#ea5455}
.sd-days{display:flex;gap:4px;flex-wrap:wrap}
.sd-day-chip{
  display:flex;align-items:center;gap:3px;padding:3px 8px;border-radius:12px;
  background:#0f1115;border:1px solid var(--line);font-size:10.5px;color:var(--muted);
  cursor:pointer;user-select:none;
}
.sd-day-chip input{margin:0;display:none}
.sd-day-chip.active{background:rgba(91,141,239,0.15);border-color:var(--accent);color:var(--accent)}
.sd-freq{
  font-size:10px;font-weight:600;letter-spacing:.4px;
  padding:3px 8px;border-radius:10px;
  background:rgba(91,141,239,0.15);color:var(--accent);
  margin-left:auto;
}

/* Program builder — section layout */
.builder-card{max-width:720px}
.builder-section{
  display:grid;grid-template-columns:38px 1fr;gap:12px;
  padding:14px 0;border-bottom:1px solid var(--line);
}
.builder-section:last-of-type{border-bottom:none}
.bs-num{
  width:30px;height:30px;border-radius:15px;
  background:#1d212a;color:var(--accent);
  display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:14px;border:1px solid rgba(91,141,239,0.4);
  flex-shrink:0;
}
.bs-body h4{margin:0 0 10px;font-size:15px;color:var(--ink);font-weight:600}
.bs-hint{color:var(--muted);font-weight:500;font-size:13px;text-transform:lowercase}
.bs-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.bs-row label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;min-width:140px}
.bs-row label.grow{flex:1}
.bs-row input, .bs-row select{
  background:#11141a;border:1px solid var(--line);color:var(--ink);
  padding:6px 8px;border-radius:4px;font-size:13px;
}
.bs-row button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:7px 14px;border-radius:4px;font-size:13px;cursor:pointer;
}
.bs-row button:hover{color:var(--ink);border-color:var(--accent)}
.bs-row button.primary{
  background:var(--accent);color:#0f1115;border:none;font-weight:600;flex:1;
}
.bs-row button.primary:hover{filter:brightness(1.1)}

.ghost-btn{
  background:transparent;border:1px dashed var(--line);color:var(--accent);
  padding:6px 14px;border-radius:4px;font-size:12px;cursor:pointer;
  margin-top:8px;
}
.ghost-btn:hover{border-color:var(--accent);background:rgba(91,141,239,0.08)}

.primary-outline{
  background:transparent;border:1px solid var(--accent);color:var(--accent);
  padding:7px 14px;border-radius:4px;font-size:13px;cursor:pointer;
}
.primary-outline:hover{background:rgba(91,141,239,0.08)}

/* Program preview pane */
.preview-pane{
  grid-column:1/-1;background:#0f1115;border:1px solid var(--line);border-radius:5px;
  padding:12px;margin-top:6px;max-height:60vh;overflow-y:auto;
}
.preview-head{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin-bottom:10px}
.preview-week{margin-bottom:12px;padding-bottom:10px;border-bottom:1px dashed var(--line)}
.preview-week:last-child{border-bottom:none;margin-bottom:0}
.pw-head{display:flex;gap:14px;align-items:baseline;margin-bottom:6px}
.pw-head span:first-child{font-size:13px;font-weight:700;color:var(--ink);letter-spacing:.4px}
.pw-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.pw-day{
  background:#11141a;border:1px solid var(--line);border-radius:4px;padding:5px;
  display:flex;flex-direction:column;gap:3px;min-height:60px;
}
.pw-day.rest{align-items:center;justify-content:center;color:var(--muted);opacity:0.7}
.pw-dow{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:600}
.pw-rest{font-size:11px;font-style:italic}
.pw-card{
  background:#0f1115;border-left:2px solid var(--tone, var(--accent));padding:3px 5px;border-radius:2px;
}
.pw-card.disc-bike{--tone:#5b8def}
.pw-card.disc-legs{--tone:#9b59b6}
.pw-title{font-size:10px;color:var(--ink);font-weight:500;line-height:1.2;overflow-wrap:break-word}
.pw-meta{font-size:9px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:1px}
@media (max-width:780px){
  .pw-days{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:780px){
  .avail-row{grid-template-columns:50px 100px 1fr;gap:8px}
  .avail-row .avail-field:nth-child(4),
  .avail-row .avail-field:nth-child(5){grid-column:span 3;border-top:1px solid var(--line);padding-top:6px}
}
.cal-card.legs{min-height:auto}
.cal-card-body.legs-card{padding:2px 0;gap:4px}
.cal-card-body.legs-card .title{font-size:11.5px;display:flex;align-items:center;gap:5px}
.legs-meta{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.legs-tag{
  font-size:9px;text-transform:uppercase;letter-spacing:.4px;
  padding:1px 5px;border-radius:3px;background:#1d212a;border:1px solid var(--line);
  color:var(--muted);
}
.int-legs{--tone:#9b59b6}  /* purple tone for legs cards */

/* Day "+" add-from-library button */
.day-add{
  background:transparent;border:1px solid var(--line);color:var(--muted);
  width:22px;height:22px;border-radius:11px;font-size:13px;font-weight:600;
  cursor:pointer;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;
}
.day-add:hover{color:var(--accent);border-color:var(--accent);background:rgba(91,141,239,0.08)}

/* Library page — discipline tabs */
.lib-disciplines{
  display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--line);
}
.disc-tab{
  background:none;border:none;color:var(--muted);padding:8px 16px;cursor:pointer;
  font-size:13px;border-bottom:2px solid transparent;font-weight:600;
}
.disc-tab:hover{color:var(--ink)}
.disc-tab.active{color:var(--accent);border-bottom-color:var(--accent)}

/* Dedicated add picker — zone/band filter chips */
.add-bands{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.band-chip{
  background:none;border:1px solid var(--line);color:var(--muted);
  padding:5px 12px;border-radius:999px;cursor:pointer;
  font-size:12px;font-weight:600;
}
.band-chip:hover{color:var(--ink);border-color:var(--muted)}
.band-chip.active{
  background:var(--accent);border-color:var(--accent);color:#0f1115;
}

/* Strength preview rows (used in library cards and the add picker) */
.lib-card-preview.strength{
  display:flex;flex-direction:column;gap:2px;
  background:#0f1115;padding:6px 8px;border-radius:3px;font-size:11px;
}
.ex-row{display:flex;justify-content:space-between;gap:8px;line-height:1.4}
.ex-row .ex-name{color:var(--ink);font-weight:500;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ex-row .ex-meta{color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0}
.ex-row.muted{color:var(--muted);font-style:italic;font-size:10.5px}

/* Strength editor — exercise blocks */
.ed-block.ex-block .ex-name-input{
  flex:1;background:#0f1115;border:1px solid var(--line);color:var(--ink);
  padding:5px 8px;border-radius:3px;font-size:13px;font-weight:600;
}
.ed-block.ex-block .ed-fields{margin-top:6px}
.ed-block.ex-block .ed-field span{min-width:auto;text-align:left;font-size:10px}
.ed-block.ex-block .ed-field input,
.ed-block.ex-block .ed-field select{
  background:#0f1115;border:1px solid var(--line);color:var(--ink);
  padding:3px 6px;border-radius:3px;font-size:12px;
}
.hidden{display:none !important}
.cal-card:hover{transform:translateY(-1px)}
.cal-card.today{outline:2px solid var(--accent);outline-offset:-1px}
.cal-card.past:not(.done):not(.skipped){opacity:.78}
.cal-card.done{border-color:var(--ok)}
.cal-card.skipped{opacity:.45}

.cal-card-head{display:flex;align-items:baseline;justify-content:space-between;font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.cal-card-head .dow{font-weight:600}
.cal-card-head .date{opacity:.7}

.cal-card-body{display:flex;flex-direction:column;gap:6px;flex:1}
.cal-card-body .title{font-size:12px;font-weight:500;color:var(--ink);line-height:1.25;overflow-wrap:break-word}
.cal-card-body.rest .title{color:var(--muted);text-align:center;margin:auto 0}
.cal-card-body .meta{display:flex;align-items:center;justify-content:space-between;margin-top:auto}
.cal-card-body .dur{font-size:11px;color:var(--muted)}
.cal-card-body .actual{font-size:10.5px;color:var(--ok)}

.tss-bubble{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--tone);color:#0f1115;font-weight:700;font-size:13px;line-height:1}
.tss-bubble small{font-size:8px;font-weight:600;opacity:.7;margin-top:1px}

.week-strip{display:flex;flex-wrap:wrap;gap:16px;margin-top:6px;padding:7px 12px 7px 14px;
  background:#11141a;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:8px}
.week-strip.ramp-neutral{border-left-color:var(--muted)}
.week-strip.ramp-green{border-left-color:var(--ok)}
.week-strip.ramp-amber{border-left-color:var(--warn)}
.week-strip.ramp-red{border-left-color:var(--bad)}
.ws-item{display:flex;flex-direction:column;gap:1px}
.ws-label{font-size:9px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.ws-val{font-size:12px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}

/* legs */
.legs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.leg-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px}
.leg-card.done{border-color:var(--ok)}
.leg-card header{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.leg-card header strong{font-size:13px}
.leg-week{color:var(--muted);font-size:11px}
.leg-status{margin-left:auto;font-size:10px;text-transform:uppercase;color:var(--muted)}
.leg-card h3{font-size:14px;margin:0 0 10px;color:var(--accent)}
.leg-list{list-style:none;padding:0;margin:0}
.leg-list li{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:5px 0;border-bottom:1px solid #1d212a;font-size:12px;align-items:baseline}
.leg-list li:last-child{border-bottom:none}
.leg-name{color:var(--ink)}
.leg-reps{color:var(--accent);font-weight:600;font-variant-numeric:tabular-nums}
.leg-load{color:var(--muted);font-size:11px}
.focus-power .leg-name::before{content:'⚡ '}
.focus-strength .leg-name::before{content:'💪 '}
.focus-core .leg-name::before{content:'🎯 '}
.focus-mobility .leg-name::before{content:'🧘 '}

.coach-tile{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:14px;margin-top:14px}
.coach-tile .meta{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.6px}
.coach-tile .vibe{margin:6px 0;font-weight:500}
.coach-tile a.more{color:var(--accent);text-decoration:none;font-size:12px}

.tiz-tile{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px;margin-top:14px}
.tiz-tile .meta{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px}
.tiz-bar{display:flex;width:100%;height:18px;border-radius:4px;overflow:hidden;background:#11141a}
.tiz-bar span{display:block;height:100%}
.tiz-bar .z12{background:#3a4252}
.tiz-bar .z3{background:#f6c343}
.tiz-bar .z4{background:#ea5455}
.tiz-legend{font-size:12px;color:var(--muted);margin-top:6px}

/* ---------- Mini structure chart + adjust chips + modal ---------- */
.chart-wrap{margin:4px 0;line-height:0}
.mini-chart{width:100%;height:32px;display:block;border-radius:3px;background:rgba(0,0,0,0.25)}

/* ---------- Done-card execution summary ---------- */
.exec-summary{margin:4px 0}
.exec-summary .tiz-wrap{line-height:0;margin-bottom:4px}
.exec-summary .tiz-bar{width:100%;height:8px;border-radius:2px;display:block}
.exec-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 8px;font-size:10.5px;color:var(--muted)}
.exec-grid span b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}

/* ---------- Modal execution block ---------- */
.exec-title{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--ink);display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.exec-title a{color:#fc4c02;text-decoration:none}
.exec-title a:hover{text-decoration:underline}
.exec-title .exec-type{color:var(--muted);font-weight:400;font-size:11.5px;text-transform:uppercase;letter-spacing:.3px}
.exec-grid-modal{
  display:grid;grid-template-columns:repeat(4, 1fr);gap:8px;
  margin:0 0 12px;padding:10px;background:#11141a;border:1px solid var(--line);border-radius:6px;
}
@media (max-width:520px){.exec-grid-modal{grid-template-columns:repeat(2,1fr)}}
.exec-cell{display:flex;flex-direction:column;gap:2px}
.exec-cell .lab{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.exec-cell .val{font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.exec-cell .val b{color:var(--ink);font-weight:600}
.modal-tiz{margin:0 0 14px}
.modal-tiz svg{width:100%;height:12px;display:block;border-radius:2px}
.modal-tiz .tiz-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-top:6px}
.modal-tiz .tiz-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle}

.modal-download{
  display:flex;align-items:center;gap:10px;margin:10px 0;padding:8px 12px;
  background:#11141a;border:1px solid var(--line);border-left:3px solid var(--accent);
  border-radius:5px;flex-wrap:wrap;
}
.download-fit{
  background:var(--accent);color:#0f1115;padding:6px 14px;border-radius:4px;
  font-size:12px;font-weight:600;text-decoration:none;
}
.download-fit:hover{filter:brightness(1.1)}

/* Plan-vs-actual exec chart */
.exec-chart-wrap{margin:8px 0 14px}
.exec-chart-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.exec-chart-title{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.hr-toggle{font-size:11.5px;color:var(--muted);cursor:pointer;user-select:none}
.hr-toggle input{margin-right:4px;vertical-align:middle}
.exec-chart-body{background:#11141a;border:1px solid var(--line);border-radius:4px;padding:6px;line-height:0}
.exec-chart-body .exec-chart{width:100%;height:auto;display:block}
.exec-chart-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:11px;color:var(--muted);margin-top:6px}
.exec-chart-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle}
.exec-chart-legend .target-line{width:14px;height:2px;background:#ffffff;border-radius:0}

/* Library picker */
.swap-btn{
  background:#1d212a;border:1px solid var(--line);color:var(--accent);
  padding:4px 10px;border-radius:4px;font-size:11px;cursor:pointer;margin-left:6px;
}
.swap-btn:hover{border-color:var(--accent)}
.library-card{max-width:680px}
/* Add picker — fixed-height card so the modal stays put as the zone/band
   filter changes the result count (the list scrolls inside instead). */
#add-modal .library-card{
  height:80vh;display:flex;flex-direction:column;overflow:hidden;
}
#add-modal #add-list{flex:1;max-height:none;min-height:0}
.library-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:12px}
.show-all-toggle{font-size:11.5px;color:var(--muted);cursor:pointer;user-select:none}
.show-all-toggle input{margin-right:5px;vertical-align:middle}
.library-list{display:flex;flex-direction:column;gap:6px;max-height:60vh;overflow-y:auto}
.lib-band-head{
  font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);
  padding:8px 0 4px;border-bottom:1px solid var(--line);margin-top:6px;
}
.lib-row{
  display:grid;grid-template-columns:1fr 280px auto;gap:12px;align-items:center;
  padding:8px 10px;background:#11141a;border:1px solid var(--line);border-radius:5px;
}
.lib-row.off{opacity:0.65}
.lib-row-title{font-size:13px;color:var(--ink);font-weight:600}
.lib-row-meta{font-size:10.5px;color:var(--muted);margin-top:2px}
.lib-row-preview{line-height:0}
.lib-row-preview svg{width:260px;height:72px;border-radius:3px;background:rgba(0,0,0,0.3);padding:3px}
.lib-blocked{
  padding:30px 20px;display:flex;flex-direction:column;align-items:center;gap:12px;
  background:#11141a;border:1px dashed #ea5455;border-radius:6px;color:var(--muted);
}
.lib-blocked-icon{font-size:36px}
.lib-blocked-msg{font-size:13px;line-height:1.5;text-align:center;max-width:440px;color:var(--ink)}
.lib-swap-error{
  background:rgba(234,84,85,0.12);border:1px solid #ea5455;border-radius:4px;
  padding:8px 12px;margin-bottom:8px;font-size:12px;color:#ea5455;
}
.lib-pick{
  background:var(--accent);color:#0f1115;border:none;padding:6px 14px;
  border-radius:4px;font-size:12px;font-weight:600;cursor:pointer;
}
.lib-pick:hover{filter:brightness(1.1)}
.lib-pick:disabled{opacity:.6;cursor:wait}
@media (max-width:640px){
  .lib-row{grid-template-columns:1fr auto;gap:8px}
  .lib-row-preview{display:none}
}

/* ===== Library page ===== */
.lib-page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
button.primary{
  background:var(--accent);color:#0f1115;border:none;padding:7px 16px;
  border-radius:5px;font-size:13px;font-weight:600;cursor:pointer;
}
button.primary:hover{filter:brightness(1.1)}

.lib-filters{
  display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:14px;
  padding-bottom:10px;border-bottom:1px solid var(--line);
}
.filter-chips{display:flex;gap:6px;flex-wrap:wrap}
.filter-chips .chip{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:5px 11px;border-radius:14px;font-size:11.5px;cursor:pointer;
}
.filter-chips .chip:hover{color:var(--ink)}
.filter-chips .chip.active{background:var(--accent);color:#0f1115;border-color:var(--accent)}
.lib-filters input[type="search"]{
  background:#11141a;border:1px solid var(--line);color:var(--ink);
  padding:6px 10px;border-radius:4px;font-size:12px;min-width:180px;
}
.show-archived{font-size:11.5px;color:var(--muted);cursor:pointer;user-select:none;margin-left:auto}
.show-archived input{margin-right:5px;vertical-align:middle}

.lib-grid{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(260px, 1fr));
  gap:12px;
}
.lib-card{
  background:#11141a;border:1px solid var(--line);border-radius:6px;
  padding:12px;display:flex;flex-direction:column;gap:6px;
}
.lib-card.archived{opacity:.55}
.lib-card.system{border-left:2px solid #5b8def}
.lib-card.user{border-left:2px solid var(--accent)}
.lib-card-head{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.band-tag{
  font-size:9.5px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;
  padding:2px 6px;border-radius:3px;color:#0f1115;
}
.band-tag.b-z12{background:#5b8def}
.band-tag.b-z3{background:#f6c343}
.band-tag.b-z4{background:#28c76f}
.band-tag.b-z5{background:#ea5455}
.band-tag.b-flow{background:#7cc1ff;color:#0f1115}
.band-tag.b-restorative{background:#c44ad8;color:#0f1115}
.vid-tag{
  font-size:9.5px;color:#ea5455;border:1px solid rgba(234,84,85,0.4);
  padding:1px 6px;border-radius:3px;font-weight:600;
}
.lib-card-title.clickable, .lib-card .clickable{cursor:pointer}
.lib-card-title.clickable:hover{color:var(--accent)}

/* Detail modal */
.detail-card{max-width:720px}
.detail-meta{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ink);font-variant-numeric:tabular-nums;margin-bottom:8px}
.detail-desc{font-size:12.5px;color:var(--muted);font-style:italic;line-height:1.5;margin:0 0 12px}
.detail-video{
  position:relative;width:100%;padding-top:56.25%;
  background:#000;border-radius:5px;overflow:hidden;margin-bottom:14px;
}
.detail-video iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}
.detail-chart{background:#11141a;border:1px solid var(--line);border-radius:4px;padding:8px;margin-bottom:12px}
.detail-chart svg{width:100%;height:auto;display:block}
.detail-poses, .detail-exercises{margin-bottom:12px;max-height:42vh;overflow-y:auto}
.detail-poses table, .detail-exercises table{width:100%;border-collapse:collapse;font-size:12.5px}
.detail-poses td, .detail-exercises td{padding:6px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.dp-idx{color:var(--muted);width:22px;font-variant-numeric:tabular-nums}
.dp-name{color:var(--ink);font-weight:500}
.dp-dur, .dp-meta{color:var(--ink);font-variant-numeric:tabular-nums;width:60px;text-align:right}
.dp-load{font-style:italic;width:120px}
.dp-rest, .dp-note{font-size:11px;font-style:italic}
.dp-thumb{width:90px;padding-right:6px}
.dp-thumb img{
  width:84px;height:auto;max-height:64px;object-fit:cover;border-radius:3px;
  background:#11141a;border:1px solid var(--line);display:block;
}
.ex-thumb{
  width:46px;height:34px;object-fit:cover;border-radius:3px;
  border:1px solid var(--line);background:#11141a;margin-right:6px;flex-shrink:0;
}
.detail-actions{
  display:flex;gap:8px;padding-top:12px;border-top:1px solid var(--line);
  justify-content:flex-end;flex-wrap:wrap;
}
.detail-actions button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:6px 14px;border-radius:4px;font-size:12.5px;cursor:pointer;
}
.detail-actions button:hover{color:var(--ink);border-color:var(--accent)}
.src-tag, .arch-tag{
  font-size:9px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);
  padding:2px 5px;border:1px solid var(--line);border-radius:3px;
}
.arch-tag{color:#ea5455;border-color:#ea5455}
.lib-card-title{margin:2px 0 4px;font-size:14px;font-weight:600;color:var(--ink);text-transform:none;letter-spacing:0}
.lib-card-preview{line-height:0;background:rgba(0,0,0,0.3);border-radius:3px;padding:4px}
.lib-card-preview svg{width:100%;height:auto;display:block}
.lib-card-meta{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.lib-card-desc{font-size:11px;color:var(--muted);font-style:italic;line-height:1.35}
.lib-card-actions{display:flex;gap:5px;margin-top:auto;flex-wrap:wrap;padding-top:4px}
.lib-card-actions button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:4px 10px;border-radius:3px;font-size:11px;cursor:pointer;flex:1;
}
.lib-card-actions button:hover{color:var(--ink);border-color:var(--accent)}
.lib-card-actions .danger:hover{color:#ea5455;border-color:#ea5455}
.lib-card-actions .hint{
  color:var(--accent);border-color:rgba(91,141,239,0.4);
  background:rgba(91,141,239,0.05);
}
.lib-card-actions .hint:hover{
  border-color:var(--accent);background:rgba(91,141,239,0.12);
}
.lib-card.system .src-tag{color:#ffd166;border-color:rgba(255,209,102,0.4)}

/* Modal Move / Delete row */
.modal-move-delete{
  display:flex;align-items:center;gap:8px;margin-top:8px;
  padding-top:8px;border-top:1px solid var(--line);flex-wrap:wrap;
}
.modal-move-delete .meta{
  font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;
}
.modal-move-delete input[type=date]{
  background:#11141a;border:1px solid var(--line);color:var(--ink);
  padding:4px 8px;border-radius:4px;font-size:12px;
}
.modal-move-delete button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:5px 12px;border-radius:4px;font-size:12px;cursor:pointer;
}
.modal-move-delete button:hover{color:var(--ink);border-color:var(--accent)}
.modal-move-delete button.danger{margin-left:auto}
.modal-move-delete button.danger:hover{color:#ea5455;border-color:#ea5455}

/* Editor modal */
.editor-card{max-width:780px}
.editor-meta{display:grid;grid-template-columns:2fr 1fr;gap:10px;margin-bottom:12px}
.editor-meta .grow{grid-column:1/-1}
.editor-meta label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.editor-meta input, .editor-meta select{
  background:#11141a;border:1px solid var(--line);color:var(--ink);
  padding:6px 8px;border-radius:4px;font-size:13px;
}
.editor-preview{margin-bottom:12px}
.editor-preview-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;font-size:11px;text-transform:uppercase;letter-spacing:.4px}
.ed-stats{color:var(--ink);font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:0;font-size:12px}
#ed-chart{background:#11141a;border:1px solid var(--line);border-radius:4px;padding:6px;line-height:0;min-height:60px}
#ed-chart svg{width:100%;height:auto;display:block}

.editor-mode-tabs{display:flex;gap:4px;margin-bottom:8px;border-bottom:1px solid var(--line)}
.mode-tab{
  background:none;border:none;color:var(--muted);padding:6px 14px;cursor:pointer;
  font-size:12px;border-bottom:2px solid transparent;text-transform:uppercase;letter-spacing:.4px;
}
.mode-tab.active{color:var(--ink);border-bottom-color:var(--accent)}
.editor-visual.hidden, .editor-json.hidden{display:none}

.ed-blocks{display:flex;flex-direction:column;gap:6px;max-height:38vh;overflow-y:auto;margin-bottom:10px}
.ed-empty{padding:14px;text-align:center;background:#11141a;border:1px dashed var(--line);border-radius:4px}
.ed-block{
  background:#11141a;border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:4px;padding:8px 10px;
}
.ed-block.t-wu, .ed-block.t-cd{border-left-color:#3a4252}
.ed-block.t-easy{border-left-color:#5b8def}
.ed-block.t-varied_easy{border-left-color:#5b8def}
.ed-block.t-free_ride{border-left-color:#5b8def}
.ed-block.t-set{border-left-color:#f6c343}
.ed-block.t-ou{border-left-color:#28c76f}
.ed-block-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.ed-block-label{font-size:12px;font-weight:600;color:var(--ink);text-transform:uppercase;letter-spacing:.4px}
.ed-block-actions{display:flex;gap:3px}
.ed-block-actions button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  width:24px;height:22px;border-radius:3px;font-size:12px;cursor:pointer;line-height:1;
}
.ed-block-actions button:hover{color:var(--ink)}
.ed-block-actions .danger:hover{color:#ea5455;border-color:#ea5455}
.ed-fields{display:flex;gap:8px;flex-wrap:wrap}
.ed-field{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--muted)}
.ed-field span{min-width:54px;text-align:right}
.ed-field input{
  background:#0f1115;border:1px solid var(--line);color:var(--ink);
  padding:3px 5px;border-radius:3px;font-size:12px;width:58px;
  font-variant-numeric:tabular-nums;text-align:right;
}
.ed-field i{color:var(--muted);font-style:normal;margin-left:-2px}

.ed-add-row{display:flex;gap:5px;flex-wrap:wrap;align-items:center;padding-top:6px;border-top:1px solid var(--line)}
.ed-add-row .add-block{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:4px 10px;border-radius:3px;font-size:11px;cursor:pointer;
}
.ed-add-row .add-block:hover{color:var(--accent);border-color:var(--accent)}

.editor-json textarea{
  width:100%;background:#0f1115;border:1px solid var(--line);color:var(--ink);
  padding:8px;border-radius:4px;font-family:ui-monospace,Menlo,monospace;font-size:12px;
}
.ed-json-help{margin-top:6px;font-size:11px}
.ed-json-help code{background:#0f1115;padding:1px 5px;border-radius:2px;font-size:11px}

.editor-footer{display:flex;gap:10px;align-items:center;padding-top:12px;border-top:1px solid var(--line);margin-top:10px}
.editor-footer #ed-cancel{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:7px 14px;border-radius:4px;font-size:13px;cursor:pointer;
}
.editor-footer #ed-cancel:hover{color:var(--ink)}
.ed-error{flex:1;font-size:12px;color:#ea5455}

/* Route-import modal */
.lib-head-actions{display:flex;gap:8px}
.lib-head-actions button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:6px 13px;border-radius:5px;font-size:12px;cursor:pointer;
}
.lib-head-actions button:hover{color:var(--accent);border-color:var(--accent)}
.lib-head-actions button.primary{
  background:var(--accent);color:#0f1115;border:none;font-weight:600;
}
.import-card{max-width:560px}
.import-help{font-size:12px;color:var(--muted);line-height:1.45;margin:0 0 14px}
.import-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.import-form label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.import-form label.full{grid-column:1/-1}
.import-form input, .import-form select{
  background:#11141a;border:1px solid var(--line);color:var(--ink);
  padding:6px 8px;border-radius:4px;font-size:13px;
}
.import-footer{
  grid-column:1/-1;display:flex;gap:10px;align-items:center;
  padding-top:14px;border-top:1px solid var(--line);margin-top:6px;
}
.import-footer #import-cancel{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:7px 14px;border-radius:4px;font-size:13px;cursor:pointer;
}
.import-footer #import-cancel:hover{color:var(--ink)}

/* ===== History page ===== */
.hist-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:14px}
.hist-totals{display:flex;gap:14px}
.hist-totals .kpi{
  background:#11141a;border:1px solid var(--line);border-radius:5px;
  padding:6px 12px;display:flex;flex-direction:column;align-items:flex-start;min-width:70px;
}
.hist-totals .kpi span{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.hist-totals .kpi strong{font-size:16px;color:var(--ink);font-variant-numeric:tabular-nums}

.hist-filters{
  display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:10px;
  border-bottom:1px solid var(--line);
}
.hist-filters input, .hist-filters select{
  background:#11141a;border:1px solid var(--line);color:var(--ink);
  padding:6px 10px;border-radius:4px;font-size:12px;
}
.hist-filters input[type="search"]{min-width:200px;flex:1}

.hist-list{display:flex;flex-direction:column;gap:18px}
.hist-week{background:transparent}
.hist-week-head{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:6px 10px;background:#11141a;border:1px solid var(--line);
  border-radius:5px 5px 0 0;border-bottom:none;
}
.hwh-label{font-size:13px;font-weight:600;color:var(--ink);text-transform:uppercase;letter-spacing:.5px}
.hwh-stats{display:flex;gap:14px;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.hwh-stats b{color:var(--ink);font-weight:600}

.hist-row{
  display:grid;grid-template-columns:54px 360px 1fr;gap:14px;align-items:start;
  background:#11141a;border:1px solid var(--line);border-top:none;
  padding:12px 14px;cursor:pointer;transition:background 0.15s;
}
.hist-row:hover{background:#161a23}
.hist-row:last-child{border-radius:0 0 5px 5px}

.hist-row-date{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:4px}
.hist-row-date .dow{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:600}
.hist-row-date .datetxt{font-size:16px;color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1;margin-top:2px}

.hist-row-main{display:flex;flex-direction:column;gap:8px;min-width:0}
.hist-row-title{font-size:14px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.outdoor-pin{font-size:13px}
.focus-tag{
  font-size:9px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
  padding:2px 6px;border-radius:3px;color:#0f1115;
}
.hist-row-chart{line-height:0;background:rgba(0,0,0,0.3);border-radius:4px;padding:5px}
.hist-row-chart svg{width:100%;height:auto;display:block;max-height:90px}
.hist-row-chart .no-chart{
  display:flex;align-items:center;justify-content:center;
  height:90px;font-size:11px;line-height:1.2;
}
.hist-row-chips{display:flex;flex-wrap:wrap;gap:5px;font-size:10.5px;color:var(--muted)}
.chip-mini{background:#1d212a;border:1px solid var(--line);padding:2px 7px;border-radius:3px;font-variant-numeric:tabular-nums}
.chip-mini.main{color:var(--ink)}
.chip-mini b{color:var(--ink);font-weight:600}
.chip-mini.xss i{font-style:normal;font-weight:600}
.xss-split{font-weight:600;letter-spacing:0.5px}
.delta{margin-left:5px;font-weight:600;font-size:9.5px}
.delta-pos{color:#28c76f}
.delta-neg{color:#ea5455}
.hist-row-coach{
  font-size:11.5px;color:var(--muted);font-style:italic;line-height:1.45;
  padding-top:4px;border-top:1px dashed var(--line);margin-top:2px;
}

@media (max-width:900px){
  .hist-row{grid-template-columns:54px 240px 1fr;gap:10px}
}

/* ===== Today page ===== */
.today-head{
  display:flex;justify-content:space-between;align-items:baseline;
  margin-bottom:14px;flex-wrap:wrap;gap:14px;
}
.today-head-meta{display:flex;gap:18px;font-size:12px;color:var(--muted)}
.today-head-meta b{color:var(--ink);font-weight:600}

.warn-banner{
  background:rgba(246,195,67,0.1);border:1px solid #f6c343;border-radius:5px;
  padding:8px 14px;margin-bottom:12px;font-size:13px;
}

.today-grid{
  display:grid;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));
  gap:12px;
}
.today-grid .card{
  background:#11141a;border:1px solid var(--line);border-radius:6px;padding:14px;
  display:flex;flex-direction:column;gap:8px;
}
/* Today's session card spans more space */
.today-grid .today-session{grid-column:span 2;min-width:0}
@media (max-width:780px){
  .today-grid .today-session{grid-column:span 1}
}
.card-head{
  display:flex;justify-content:space-between;align-items:center;
  font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);
  padding-bottom:6px;border-bottom:1px solid var(--line);
}

/* Readiness */
.readiness-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.r-stat{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 4px}
.r-stat span{font-size:9.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.r-stat strong{font-size:18px;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.1;margin-top:3px}
.r-stat em{font-size:9.5px;color:var(--muted);font-style:normal;margin-top:2px}
.r-stat .ar{font-style:normal;font-size:13px;font-weight:600;margin-left:1px}
.form-pill{
  font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;
  padding:2px 8px;border-radius:10px;font-weight:600;
}
.form-fresh{background:rgba(40,199,111,0.15);color:#28c76f}
.form-rested{background:rgba(40,199,111,0.15);color:#28c76f}
.form-neutral{background:rgba(91,141,239,0.15);color:#5b8def}
.form-tired{background:rgba(246,195,67,0.15);color:#f6c343}
.form-very_tired{background:rgba(234,84,85,0.18);color:#ea5455}
.r-tsb{
  display:flex;gap:14px;font-size:11px;color:var(--muted);
  padding-top:8px;border-top:1px solid var(--line);margin-top:4px;
}
.r-tsb b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.tsb-pos b{color:#28c76f}
.tsb-neg b{color:#ea5455}

/* Today session card */
.sess-title{margin:6px 0 2px;font-size:18px;color:var(--ink)}
.sess-short{margin:0;font-size:12px;color:var(--muted);font-style:italic}
.sess-meta{display:flex;gap:14px;font-size:12px;color:var(--muted)}
.sess-meta b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.disc-pill{
  background:#1d212a;border:1px solid var(--line);padding:2px 8px;border-radius:3px;
  font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;
}
.disc-pill.small{font-size:9.5px;padding:1px 6px}
.today-chart-wrap{line-height:0;background:rgba(0,0,0,0.3);border-radius:4px;padding:6px;min-height:130px}
.today-chart-wrap svg{width:100%;height:auto;display:block;max-height:140px}
.sess-details{font-size:12px;color:var(--muted);line-height:1.5;margin:4px 0}
.sess-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-top:8px;border-top:1px solid var(--line)}
.sess-actions button{
  background:#1d212a;border:1px solid var(--line);color:var(--muted);
  padding:6px 14px;border-radius:4px;font-size:12px;cursor:pointer;
}
.sess-actions button.primary{background:var(--accent);color:#0f1115;border:none;font-weight:600}
.sess-actions button:hover{color:var(--ink)}
.sess-actions a.ghost{margin-left:auto;font-size:12px;color:var(--accent);text-decoration:none}
.status-pill{
  font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;
  padding:2px 8px;border-radius:10px;font-weight:600;
}
.status-pill.status-planned{background:rgba(91,141,239,0.15);color:#5b8def}
.status-pill.status-done{background:rgba(40,199,111,0.15);color:#28c76f}
.status-pill.status-skipped{background:rgba(138,147,166,0.15);color:var(--muted)}
.rest-day{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;color:var(--muted);font-size:13px;text-align:center}
.rest-icon{font-size:32px}

/* Tomorrow / week-progress / last-ride / coach */
.tom-title{font-size:14px;font-weight:600;color:var(--ink);margin-top:4px}
.tom-meta{display:flex;gap:10px;font-size:11px;color:var(--muted);margin-top:4px;font-variant-numeric:tabular-nums}
.tom-short{font-size:12px;color:var(--muted);font-style:italic;margin-top:4px}
.wp-stats{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.wp-stats > div{display:flex;flex-direction:column;align-items:flex-start;gap:2px;font-size:11px}
.wp-stats .label{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.wp-stats strong{font-size:17px;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.1}
.wp-bar{
  background:#1d212a;border-radius:6px;height:7px;overflow:hidden;margin-top:8px;border:1px solid var(--line);
}
.wp-bar span{display:block;height:100%;background:var(--accent);border-radius:6px}
.lr-title{font-size:14px;font-weight:600;color:var(--ink);margin-top:4px}
.lr-stats{display:flex;gap:10px;font-size:11.5px;color:var(--muted);margin:6px 0;flex-wrap:wrap}
.lr-stats b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.latest-coach .vibe{font-size:13px;line-height:1.5;color:var(--ink);margin:6px 0}
.ghost{color:var(--accent);text-decoration:none;font-size:11.5px}
.ghost:hover{text-decoration:underline}
.small{font-size:10.5px}
@media (max-width:640px){
  .hist-row{grid-template-columns:48px 1fr;gap:8px;padding:10px}
  .hist-row-chart{display:none}
}

.cal-card[data-clickable="1"]{cursor:pointer}
.cal-card .cal-actions,.cal-card .cal-adjust{pointer-events:auto}

/* outdoor badge & rode-outdoor indicator */
.outdoor-tag{
  display:inline-block;font-size:9.5px;font-weight:600;letter-spacing:.3px;
  color:#28c76f;background:rgba(40,199,111,0.12);
  padding:1px 5px;border-radius:3px;margin-left:4px;vertical-align:middle;
  text-transform:uppercase;
}
.indoor-tag{
  display:inline-block;font-size:9.5px;font-weight:600;letter-spacing:.3px;
  color:#7aa7ff;background:rgba(122,167,255,0.12);
  padding:1px 5px;border-radius:3px;margin-left:4px;vertical-align:middle;
  text-transform:uppercase;
}
.program-tag{
  display:inline-block;font-size:9px;font-weight:600;letter-spacing:.2px;
  color:var(--muted);background:rgba(255,255,255,0.06);
  padding:1px 5px;border-radius:3px;margin:2px 0 0;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.outdoor-note{
  font-size:10.5px;color:var(--muted);font-style:italic;
  padding:6px 4px;border-left:2px solid rgba(40,199,111,0.4);margin:4px 0;
}
.outdoor-swap{
  color:#28c76f;font-size:11px;margin-left:4px;cursor:help;
}

.cal-adjust{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}
.cal-adjust .adj{
  flex:1 1 calc(50% - 4px);
  min-width:42px;
  background:#1d212a;border:1px solid var(--line);
  color:var(--muted);padding:3px 4px;border-radius:4px;
  font-size:10.5px;cursor:pointer;font-variant-numeric:tabular-nums;
}
.cal-adjust .adj:hover{color:var(--accent);border-color:var(--accent)}
.cal-adjust .adj:disabled{opacity:.5;cursor:wait}

/* modal */
.modal-backdrop{
  position:fixed;inset:0;background:rgba(0,0,0,0.65);
  display:flex;align-items:center;justify-content:center;
  z-index:100;padding:20px;
}
.modal-backdrop.hidden{display:none}
.modal-card{
  background:var(--panel);border:1px solid var(--line);border-radius:12px;
  max-width:560px;width:100%;max-height:90vh;overflow-y:auto;padding:20px;
}
.modal-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.modal-card header h3{margin:0;font-size:16px;color:var(--ink);text-transform:none;letter-spacing:0}
.modal-close{background:none;border:none;color:var(--muted);font-size:24px;cursor:pointer;line-height:1;padding:0 4px}
.modal-close:hover{color:var(--ink)}
.modal-chart{margin:8px 0 14px}
.modal-chart .mini-chart{height:160px;background:#11141a;border:1px solid var(--line);padding:6px;border-radius:4px}
.modal-meta{display:flex;gap:18px;font-size:13px;color:var(--muted);margin:8px 0;border-bottom:1px solid var(--line);padding-bottom:10px}
.modal-meta b{color:var(--ink)}
.modal-details{color:var(--muted);font-size:13px;line-height:1.45}
.modal-legs{list-style:none;padding:0;margin:8px 0}
.modal-legs li{display:grid;grid-template-columns:1fr auto auto;gap:10px;padding:5px 0;border-bottom:1px solid #1d212a;font-size:12px}
.modal-legs li .r{color:var(--accent);font-weight:600}
.modal-legs li .l{color:var(--muted);font-size:11px}
.modal-adjust{display:flex;gap:8px;align-items:center;margin-top:14px;flex-wrap:wrap}
.modal-adjust .meta{color:var(--muted);font-size:12px;margin-right:6px}
.modal-adjust .adj{
  background:#1d212a;border:1px solid var(--line);
  color:var(--ink);padding:6px 12px;border-radius:6px;
  font-size:13px;cursor:pointer;
}
.modal-adjust .adj:hover{color:var(--accent);border-color:var(--accent)}

/* ---------- Mobile responsive ---------- */
@media (max-width: 800px) {
  main { padding: 12px; }
  header { flex-wrap: wrap; padding: 12px; gap: 12px; }
  header nav { flex-wrap: wrap; gap: 10px; }
  header .meta { font-size: 11px; width: 100%; margin-left: 0 }

  /* KPI cards stack 2-wide */
  .kpis { grid-template-columns: repeat(2, 1fr); }
  .kpi strong { font-size: 18px; }

  /* Calendar — one week per row stacks day cards in 2-column grid */
  main:has(.cal-wrap){max-width:100%}
  .cal-week-grid { grid-template-columns: 40px repeat(2, 1fr); }
  .cal-card { min-height: 80px; padding: 6px 8px; }
  .cal-card-body .title { font-size: 11px; }
  .tss-bubble { width: 32px; height: 32px; font-size: 11px; }

  /* Legend wraps */
  .cal-legend { font-size: 10px; }
}

@media (max-width: 600px) {
  .kpis { grid-template-columns: 1fr 1fr; }
  /* Calendar — single column on phones */
  .cal-week-grid { grid-template-columns: 100%; }
  .cal-week-grid .cal-wknum { grid-column: 1; padding: 6px; }
}

/* Generic horizontally-scrollable table wrapper */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* ---------- Mobile phone (≤640px) ---------- */
@media (max-width: 640px) {
  /* Nav: single horizontally-scrollable row, no wrap, ≥44px tap targets */
  header nav {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    gap: 4px;
    width: 100%;
    margin-left: 0;
  }
  header nav a {
    flex: 0 0 auto;
    font-size: 14px;
    padding: 12px 10px;
    min-height: 44px;
    display: flex;
    align-items: center;
    white-space: nowrap;
  }

  /* Strength split editor — touch-friendly */
  .bld-ex-card { flex-wrap: wrap; }
  .ex-fields { flex: 1 1 100%; }
  .ex-num { width: 64px; padding: 8px 6px; font-size: 14px; }
  .ex-actions { flex: 0 0 100%; flex-direction: row; align-items: stretch; gap: 6px; }
  .btn-icon { min-height: 40px; padding: 8px 12px; font-size: 13px; flex: 1; }
}

.cal-actions { display: flex; gap: 6px; margin-top: 4px; }
.cal-actions .chip {
  flex: 1; background: #1d212a; border: 1px solid var(--line);
  color: var(--muted); padding: 3px 6px; border-radius: 4px;
  font-size: 11px; cursor: pointer;
}
.cal-actions .chip:hover { color: var(--ink); }

/* Slab A — program cards */
.programs-page .page-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 6px;
}
.programs-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1rem;
}
.program-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 1rem;
  background: var(--panel);
}
.program-card header {
  display: flex; align-items: center; gap: .5rem;
  margin-bottom: .5rem;
}
.program-card header h3 { margin: 0; font-size: 14px; }
.program-card .disc-icon { font-size: 1.5rem; }
.program-card .focal-badge {
  margin-left: auto;
  font-size: .85rem;
  color: var(--accent);
}
.program-card dl {
  margin: 0; display: grid;
  grid-template-columns: 7em 1fr; gap: .25rem .5rem;
  align-items: center;
}
.program-card dt { color: var(--muted); }
.program-card dd { margin: 0; }
.program-card footer {
  margin-top: .75rem; display: flex; gap: .75rem;
}
.hours-share-input {
  width: 4em; background: #1d212a; border: 1px solid var(--line);
  color: var(--ink); border-radius: 4px; padding: 2px 4px;
}
.hours-derived { color: var(--muted); margin-left: .25em; }
.maintenance-override {
  background: #1d212a; border: 1px solid var(--line);
  color: var(--ink); border-radius: 4px; padding: 2px 4px;
}
.programs-page .empty { color: var(--muted); }
.programs-page .btn-link {
  background: none; border: none; color: var(--accent);
  cursor: pointer; padding: 0; font-size: 13px;
}
.programs-page .archived-details { margin-top: 1.5rem; color: var(--muted); }
.archived-row {
  display: flex; align-items: center; gap: .6rem;
  padding: .4rem .2rem; border-top: 1px solid var(--line);
}
.archived-row .archived-name { color: var(--ink); text-decoration: none; flex: 0 0 auto; }
.archived-row .archived-name:hover { color: var(--accent); }
.archived-row .unarchive-btn {
  margin-left: auto; background: none; border: none;
  color: var(--accent); cursor: pointer; padding: 0; font-size: 13px;
}

/* 5-tile program-creation picker */
.tile-section-h {
  margin: 1.4rem 0 .6rem; font-size: 13px; text-transform: uppercase;
  letter-spacing: .05em; color: var(--muted);
}
.tile-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 1rem;
}
.tile-card {
  display: block; text-decoration: none; color: var(--ink);
  border: 1px solid var(--line); border-radius: 8px;
  padding: 1rem; background: var(--panel);
}
.tile-card:hover { border-color: var(--accent); }
.tile-card .tile-icon { font-size: 1.6rem; }
.tile-card h4 { margin: .4rem 0 .3rem; font-size: 14px; }
.tile-card p { margin: 0; color: var(--muted); font-size: 13px; }

/* Per-tile creation form */
.tile-form { display: flex; flex-direction: column; gap: .7rem; max-width: 460px; }
.tile-form label { display: flex; flex-direction: column; gap: .25rem; font-size: 13px; }
.tile-form input, .tile-form select {
  background: #1d212a; border: 1px solid var(--line);
  color: var(--ink); border-radius: 4px; padding: 5px 6px;
}
.tile-form menu { display: flex; gap: 1rem; align-items: center; padding: 0; margin: .5rem 0 0; }
.profile-box, .verdict-box {
  border: 1px solid var(--line); border-radius: 6px;
  padding: .7rem; background: var(--panel);
}
.profile-box h4 { margin: 0 0 .4rem; font-size: 13px; }
.profile-box dl {
  margin: 0 0 .6rem; display: grid;
  grid-template-columns: 1fr auto; gap: .2rem .6rem; font-size: 13px;
}
.profile-box dt { color: var(--muted); }
.profile-box dd { margin: 0; }
.verdict-box { display: flex; align-items: center; gap: .6rem; }
.verdict-pill {
  font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 4px;
  color: #0f1115;
}
.verdict-green { background: #4ade80; }
.verdict-amber { background: #fbbf24; }
.verdict-red { background: #f87171; }

/* Program detail page */
.program-detail .btn-link {
  background: none; border: none; color: var(--accent);
  cursor: pointer; padding: 0; font-size: 13px; text-decoration: none;
}
.program-detail .split-list { margin: .3rem 0; padding-left: 1.2rem; }
.program-detail .week-block {
  margin: 1rem 0; padding: .8rem 1rem;
  background: var(--panel); border: 1px solid var(--line); border-radius: 8px;
}
.program-detail .week-block h4 { margin: 0 0 .5rem; }
.program-detail .week-sessions { width: 100%; border-collapse: collapse; font-size: 13px; }
.program-detail .week-sessions th,
.program-detail .week-sessions td {
  text-align: left; padding: .3rem .5rem; border-bottom: 1px solid var(--line);
}
.program-detail .week-sessions th { color: var(--muted); font-weight: 600; }
.program-detail .empty { color: var(--muted); }
.deploy-banner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px; flex-wrap: wrap;
  margin: .6rem 0 1rem; padding: .9rem 1.1rem;
  background: rgba(110,168,254,0.08);
  border: 1px solid var(--accent); border-radius: 8px;
}
.deploy-banner .deploy-explainer { margin: 0; font-size: 13px; color: var(--ink); }
.status-active-indicator { margin: .4rem 0 1rem; color: var(--ok); }
.block-focus {
  margin: .6rem 0 1rem; padding: .9rem 1.1rem;
  background: rgba(110,168,254,0.08);
  border: 1px solid var(--accent); border-radius: 8px;
}
.block-focus h3 { margin: 0 0 .2rem; }
.block-focus label {
  display: block; margin: .6rem 0 .3rem;
  font-size: 11px; text-transform: uppercase;
  letter-spacing: .5px; color: var(--muted);
}
.block-focus select { padding: .35rem .5rem; }
.draft-tag {
  font-size: 10.5px; text-transform: uppercase; letter-spacing: .5px;
  color: var(--muted); border: 1px solid var(--line);
  border-radius: 4px; padding: 1px 6px;
}
#add-program-modal {
  background: var(--panel); color: var(--ink);
  border: 1px solid var(--line); border-radius: 8px;
  padding: 1.25rem; min-width: 320px;
}
#add-program-modal::backdrop { background: rgba(0,0,0,0.5); }
#add-program-form label {
  display: block; margin-bottom: .75rem; font-size: 13px;
}
#add-program-form input, #add-program-form select {
  display: block; width: 100%; margin-top: 4px;
  background: #1d212a; border: 1px solid var(--line);
  color: var(--ink); border-radius: 4px; padding: 4px 6px;
}
#add-program-form .help { color: var(--muted); font-size: 12px; }
#add-program-form menu {
  display: flex; justify-content: flex-end; gap: .5rem;
  margin: 0; padding: 0;
}

/* Slab A: phase-aware focal banner + migration banner */
.focal-banner {
  padding: .75rem 1rem;
  border-radius: 6px;
  margin-bottom: 1rem;
  font-weight: 500;
}
.focal-banner.phase-early_peak { background: #fff8dc; border-left: 4px solid #ffa500; }
.focal-banner.phase-mid_peak { background: #ffe9c4; border-left: 4px solid #ff7700; }
.focal-banner.phase-race_taper { background: #ffd9b3; border-left: 4px solid #ff4400; }
.focal-banner.phase-race_day { background: #ffcccc; border-left: 4px solid #cc0000; }
.focal-banner.phase-recovery { background: #e0f0e0; border-left: 4px solid #4a8; }
.migration-banner {
  background: #f0f4ff; border-left: 4px solid #4a7;
  padding: .5rem 1rem; margin-bottom: 1rem;
  display: flex; align-items: center; gap: 1rem;
}

.log-btn {
  display: inline-block; margin-top: 6px;
  background: var(--accent); color: #0f1115;
  font-size: 12px; font-weight: 700;
  padding: 5px 12px; border-radius: 14px; text-decoration: none;
}
.log-btn:hover { filter: brightness(1.1); }
.edit-day-btn {
  display: inline-block; margin-top: 6px; margin-left: 6px;
  background: transparent; color: var(--accent);
  border: 1px solid var(--accent);
  font-size: 12px; font-weight: 700;
  padding: 4px 11px; border-radius: 14px; text-decoration: none;
}
.edit-day-btn:hover { filter: brightness(1.1); }

/* Add-program modal: training-days picker */
#training-days-row { margin: 8px 0; }
#training-days-checks {
  display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px;
}
#training-days-checks label {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 13px; white-space: nowrap;
}

/* RPE chip — compact post-ride perceived-exertion control on done bike cards */
.rpe-chip {
  display: flex; flex-wrap: wrap; align-items: center; gap: 3px;
  margin-top: 6px;
}
.rpe-label { font-size: 10px; color: var(--muted); margin-right: 2px; }
.rpe-btn {
  width: 18px; height: 18px; padding: 0;
  font-size: 10px; line-height: 1;
  border: 1px solid var(--line); border-radius: 4px;
  background: var(--panel); color: var(--muted); cursor: pointer;
}
.rpe-btn:hover { color: var(--ink); border-color: var(--accent); }
.rpe-btn:disabled { opacity: .5; cursor: default; }
.rpe-set {
  display: inline-block;
  font-size: 10px; font-weight: 700; color: var(--accent);
  background: rgba(90,200,250,.12);
  padding: 2px 8px; border-radius: 10px;
}

/* Race Readiness panel — Slab: Race Readiness, Task 9 */
.rr-panel {
  background: var(--panel); border: 1px solid var(--line);
  border-radius: 8px; padding: 14px 16px; margin: 16px 0;
}
.rr-empty, .rr-note { color: var(--muted); font-size: 13px; }
.rr-note { margin: 4px 0 0; }

.rr-verdict {
  display: flex; align-items: center; gap: 14px;
  padding: 8px 0 12px; border-bottom: 1px solid var(--line);
}
.rr-icon { display: inline-flex; }
.rr-word { font-size: 26px; font-weight: 700; letter-spacing: .3px; }
.rr-green .rr-icon, .rr-green .rr-word { color: var(--ok); }
.rr-amber .rr-icon, .rr-amber .rr-word { color: var(--warn); }
.rr-red .rr-icon, .rr-red .rr-word { color: var(--bad); }
.rr-verdict-side {
  display: flex; flex-direction: column; gap: 2px; margin-left: auto;
  text-align: right;
}
.rr-weeks { font-size: 15px; font-weight: 600; }
.rr-limiter { font-size: 11.5px; color: var(--muted); }

.rr-table { width: 100%; border-collapse: collapse; margin-top: 10px; }
.rr-table th {
  font-size: 11px; text-transform: uppercase; letter-spacing: .6px;
  color: var(--muted); font-weight: 500; padding: 6px 10px;
  border-bottom: 1px solid var(--line);
}
.rr-table td {
  padding: 8px 10px; border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.rr-l { text-align: left; }
.rr-r { text-align: right; }
.rr-num { font-variant-numeric: tabular-nums; font-weight: 600; }

.rr-row[role="button"] { cursor: pointer; }
.rr-row[role="button"]:hover td { background: #1d212a; }
.rr-row:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.rr-pending td { color: var(--muted); }
.rr-muted { color: var(--muted); }

.rr-key-tag {
  display: inline-block; font-size: 9px; font-weight: 700;
  letter-spacing: .5px; color: var(--accent);
  background: rgba(90,200,250,.12); border-radius: 3px;
  padding: 1px 4px; vertical-align: middle;
}
.rr-gap {
  display: inline-block; font-variant-numeric: tabular-nums;
  font-weight: 700; font-size: 12px;
  border-radius: 10px; padding: 2px 9px;
}
.rr-gap-green { color: var(--ok); background: rgba(40,199,111,.14); }
.rr-gap-amber { color: var(--warn); background: rgba(246,195,67,.14); }
.rr-gap-red { color: var(--bad); background: rgba(234,84,85,.14); }

/* Strength S3 — per-muscle volume panel */
.vol-panel {
  background: var(--panel); border: 1px solid var(--line);
  border-radius: 8px; padding: 14px 16px; margin: 16px 0;
}
.vol-edit {
  font-size: 12px; font-weight: 400; margin-left: 8px;
  color: var(--muted); text-decoration: none;
}
.vol-edit:hover { color: var(--accent, #6ab0ff); text-decoration: underline; }
.vol-table { width: 100%; border-collapse: collapse; margin-top: 10px; }
.vol-table th {
  font-size: 11px; text-transform: uppercase; letter-spacing: .6px;
  color: var(--muted); font-weight: 500; padding: 6px 10px;
  border-bottom: 1px solid var(--line);
}
.vol-table td {
  padding: 8px 10px; border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.vol-l { text-align: left; text-transform: capitalize; }
.vol-r { text-align: right; }
.vol-num { font-variant-numeric: tabular-nums; font-weight: 600; }
.vol-chip {
  display: inline-block; font-size: 11px; font-weight: 700;
  letter-spacing: .3px; text-transform: capitalize;
  border-radius: 10px; padding: 2px 9px;
}
.vol-chip-progress { color: var(--ok); background: rgba(40,199,111,.14); }
.vol-chip-hold { color: var(--warn); background: rgba(246,195,67,.14); }
.vol-chip-deload { color: var(--accent); background: rgba(90,200,250,.12); }
.vol-flags {
  margin: 10px 0 0; padding-left: 18px;
  font-size: 12px; color: var(--warn);
}
.vol-flags li { margin: 2px 0; }

/* Strength S4 — recovery heat-map (shared: /strength + /today) */
.rec-map {
  display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 0;
}
.rec-tile {
  display: flex; flex-direction: column; gap: 2px;
  min-width: 84px; padding: 8px 10px;
  border-radius: 8px; border: 1px solid var(--line);
  border-left: 3px solid var(--line);
  background: var(--panel);
}
.rec-muscle {
  font-size: 11px; font-weight: 600; text-transform: capitalize;
  letter-spacing: .3px; color: var(--ink);
}
.rec-pct {
  font-size: 17px; font-weight: 700;
  font-variant-numeric: tabular-nums; color: var(--ink);
}
.rec-age { font-size: 11px; color: var(--muted); }
.rec-fresh {
  border-color: rgba(40,199,111,.35);
  border-left-color: var(--ok);
  background: rgba(40,199,111,.12);
}
.rec-moderate {
  border-color: rgba(246,195,67,.35);
  border-left-color: var(--warn);
  background: rgba(246,195,67,.12);
}
.rec-fatigued {
  border-color: rgba(234,84,85,.35);
  border-left-color: var(--bad);
  background: rgba(234,84,85,.12);
}

.rr-target-input {
  width: 72px; text-align: right;
  font-variant-numeric: tabular-nums; font-size: 13px; font-weight: 600;
  background: #1d212a; border: 1px solid var(--line);
  color: var(--ink); border-radius: 4px; padding: 3px 6px;
}
.rr-target-input:focus-visible { outline: 2px solid var(--accent); }
.rr-spark svg { vertical-align: middle; }

.rr-expand td { padding: 0 10px; }
.rr-chart {
  padding: 8px 0; max-height: 240px; opacity: 1; overflow: hidden;
}
.rr-chart.rr-collapsed {
  max-height: 0; opacity: 0; overflow: hidden; padding-top: 0; padding-bottom: 0;
}

.rr-sentence {
  margin: 12px 0 2px; font-size: 13.5px; color: var(--ink);
  line-height: 1.5;
}

@media (prefers-reduced-motion: no-preference) {
  .rr-chart {
    transition: max-height .22s ease, opacity .22s ease,
                padding .22s ease;
  }
}

/* --- Strength S6: per-day split editor --------------------------------- */
.split-editor-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px;margin:16px 0}
.split-editor-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.split-editor-head h3{margin:0}
.split-editor-actions{display:flex;gap:8px}
.split-editor-error{margin:8px 0 0;color:var(--bad);font-size:13px}
.day-block{border:1px solid var(--line);border-radius:8px;margin-top:12px;background:#11141a}
.day-head{display:flex;align-items:center;gap:8px;padding:8px 10px;flex-wrap:wrap}
.day-toggle{background:none;border:none;color:var(--muted);font-size:14px;cursor:pointer;padding:2px 4px}
.day-name{background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:5px 8px;font-size:14px;font-weight:600;flex:1;min-width:120px}
.day-count{color:var(--muted);font-size:12px}
.day-body{padding:6px 10px 12px;display:flex;flex-direction:column;gap:8px}
.day-block.collapsed .day-body{display:none}
.bld-ex-card{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:6px;padding:8px;background:var(--panel)}
.bld-ex-thumb{width:48px;height:48px;border-radius:6px;object-fit:cover;background:var(--bg);flex-shrink:0}
.bld-ex-thumb-empty{visibility:hidden}
.bld-ex-body{flex:1;min-width:0}
.bld-ex-name{font-size:13px;font-weight:600;margin-bottom:6px}
.ex-fields{display:flex;gap:8px;flex-wrap:wrap}
.ex-field{display:flex;flex-direction:column;gap:2px}
.ex-field-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.ex-num{width:56px;background:var(--bg);border:1px solid var(--line);border-radius:5px;color:var(--ink);padding:4px 6px;font-size:13px}
.ex-actions{display:flex;flex-direction:column;gap:4px;align-items:flex-end}
.btn-icon{background:var(--bg);border:1px solid var(--line);border-radius:5px;color:var(--ink);cursor:pointer;font-size:12px;padding:3px 7px}
.btn-icon:disabled{opacity:.35;cursor:default}
.btn-icon.btn-text{font-size:11px}
.btn-icon.btn-danger{color:var(--bad)}
.add-ex-btn{align-self:flex-start;font-size:12px;padding:5px 10px}
.picker-modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center}
.picker-modal[hidden]{display:none}
.picker-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.6)}
.picker-dialog{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;width:min(420px,92vw);max-height:80vh;display:flex;flex-direction:column;gap:10px}
.picker-head{display:flex;align-items:center;justify-content:space-between}
.picker-head h4{margin:0;font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.picker-x{background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer;line-height:1}
.picker-search{background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:8px 10px;font-size:14px}
.picker-results{list-style:none;margin:0;padding:0;overflow-y:auto;display:flex;flex-direction:column;gap:4px}
.picker-item{display:flex;align-items:center;gap:10px;padding:6px;border-radius:6px;cursor:pointer}
.picker-item:hover{background:var(--bg)}
.picker-thumb{width:40px;height:40px;border-radius:6px;object-fit:cover;background:var(--bg);flex-shrink:0}
.picker-name{font-size:13px;font-weight:600}
.picker-muscle{font-size:11px;color:var(--muted)}
.picker-empty{color:var(--muted);font-size:13px;padding:8px}

/* Today — weekly planned-load bar strip (compact tile) */
.wk-bars-strip{
  margin-top:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;
}
.wk-bars{display:block;height:auto}      /* renders at its natural SVG size */
.wkb-future{fill:var(--line)}
.wkb-done{fill:var(--accent)}
.wkb-current{fill:var(--accent)}
.wkb-dot{fill:var(--accent)}

/* Standalone auth pages (login / signup) */
.auth-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:28px;width:100%;max-width:360px}
.auth-card h1{margin:0 0 4px;font-size:20px;color:var(--ink)}
.auth-card form{display:flex;flex-direction:column;gap:14px;margin-top:16px}
.auth-card label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted)}
.auth-card input{padding:9px 11px;border-radius:8px;border:1px solid var(--line);
  background:var(--card2,#1b2230);color:var(--ink);font-size:14px}
.auth-error{background:rgba(234,84,85,0.15);border:1px solid #ea5455;color:#ea5455;
  padding:8px 11px;border-radius:8px;font-size:13px;margin:12px 0 0}
.admin-users{width:100%;border-collapse:collapse;margin-top:8px;font-size:12px}
.admin-users th,.admin-users td{text-align:left;padding:5px 6px;border-bottom:1px solid var(--line)}
.admin-users th{color:var(--muted);font-weight:600}
