/**
 * Miles & Mountains — coach dashboard styles, slice 1.
 *
 * Taken from mockup v7 (coach-dashboard-mockup-v7.html), which uses the athlete
 * app's own tokens and components (spec § 11b, D41); colours are
 * MM_Color_Constants.md's. Font size and weight are written out in full: no
 * `font:` shorthand (the athlete app's `font: … inherit` is invalid CSS that
 * browsers drop). The mockup's own chrome (its option bar, the width frames,
 * the athlete-phone pictures) is left out; the coach page's additions are at
 * the end.
 */
  /* ===== The app's own tokens and components (index.html, ui 2.21beta) ===== */
  :root {
    --ink:#12202e; --muted:#5d7183; --line:#dfe6ec; --bg:#f4f7f9; --card:#fff;
    --accent:#003A63; --link:#2f5d86; --accent-d:#24486a; --focus:#1177D1;
    --filled:#00A368; --good:#00674E; --warn:#99231f; --bad:#a8302a; --dd:#57758b;
    --select:#7a4bab;
    --amb-bg:#fff6e0; --amb-bd:#e8c36a; --amb-ink:#5a3d00; --amb-btn:#8a5a00;
    --red-bg:#fbedeb; --red-bd:#e2b5ae;
  }
  * { box-sizing:border-box; }
  body { margin:0; background:#e9edf1; color:var(--ink);
         font-size:16px; line-height:1.45; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; }
  button { font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; cursor:pointer; }

  header.top { background:var(--accent) url('https://static.wixstatic.com/media/59abde_f9812a970d9c4a0cb24c73809f42f8be~mv2.png') center top/cover no-repeat;   /* coach0.6beta: pinned by its top (Josh, 21 Oct) */
    color:#fff; padding:12px 16px; min-height:58px; display:flex; align-items:center; gap:12px; }
  header.top img { height:36px; width:auto; display:block; }
  header.top .brand { font-size:15px; font-weight:700; letter-spacing:-.2px; }
  header.top .who { margin-left:auto; font-size:14px; font-weight:700; text-align:right; }
  .pagetitle { background:#2b2b2b; color:#fff; padding:6px 16px; font-size:11px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
  .wfocus { background:var(--accent-d); color:#fff; padding:4px 16px; font-size:11px; letter-spacing:.08em; text-transform:uppercase; font-weight:700; }
  .tag { display:inline-block; font-size:10px; line-height:14px; letter-spacing:.05em; font-weight:700; padding:2px 8px; border-radius:20px; white-space:nowrap; vertical-align:middle; }
  .tag.today { background:#2b2b2b; color:#fff !important; box-shadow:0 0 0 1.5px #fff; }
  .tag.done { background:var(--accent); color:#fff; }
  .tag.wait { background:#854F0B; color:#fff !important; }
  .tag.comment { background:#00674E; color:#fff; }
  .tag.edit { background:var(--select); color:#fff; }
  .badge { display:inline-block; font-size:11px; font-weight:700; padding:2px 8px; border-radius:20px; white-space:nowrap; }
  .badge.tierA { background:#ba36ff; color:#fff; }
  .badge.tierB { background:#db97ff; color:#3d0a57; }
  .badge.tierC { background:#f4e0ff; color:#4a2360; }
  .badge.race  { background:#ece3f4; color:#4a2360; }
  .wknav { display:flex; align-items:center; gap:8px; padding:4px 12px; background:#fff; border-bottom:1px solid var(--line); }
  .wknav.now { background:#e2ecf6; border-bottom-color:#b9cee3; }
  .wknav button { border:1px solid var(--line); background:#fff; color:var(--accent); border-radius:8px; padding:7px 10px; font-weight:700; font-size:12px; line-height:1; white-space:nowrap; }
  .wknav.now button { border-color:#b9cee3; }
  .wknav button[disabled] { opacity:.35; cursor:default; }
  .wknav .range { flex:1; min-width:0; text-align:center; white-space:nowrap; }
  .wknav .range .rel { font-size:12.5px; font-weight:800; color:var(--ink); line-height:1.2; }
  .wknav .range .dts { font-size:11.5px; font-weight:600; color:#8b98a3; line-height:1.2; }
  .wknav.now .range .rel { color:var(--accent); }
  .wknav.now .range .dts { color:#5f7d97; }
  .wktot { display:flex; align-items:center; justify-content:space-between; gap:6px; white-space:nowrap; padding:7px 14px; font-size:12.5px; line-height:1.3;
    background:#e2ecf6; color:#24486a; border-top:1.5px solid #94abc2; border-bottom:1.5px solid #94abc2; }
  .wktot b { font-weight:800; color:var(--accent); }
  .wktot .vs { flex:0 0 1px; height:13px; background:#b4c2ce; }
  .wktot span:not(.vs) { flex:1 1 0; text-align:center; }
  .note { border-radius:12px; padding:12px 14px; margin-bottom:10px; }
  .note.mine { background:#e6f1f9; border:1.5px solid #006ebb; }
  .note.coach { background:#e8f6ef; border:1.5px solid #57bb8a; }
  .note .hd { font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; margin-bottom:5px; }
  .note.mine .hd { color:#00548d; } .note.coach .hd { color:#2f7c58; }
  .note .bd { font-size:14px; white-space:pre-wrap; }
  .flagcard { background:#eef7f2; border:1px solid var(--good); border-radius:10px; padding:10px 11px; margin:0 0 8px; }
  .flagcard .ft { font-size:15px; font-weight:800; color:var(--good); margin-bottom:3px; }
  .flagcard .fb { font-size:13.5px; line-height:1.45; }
  .flagcard .fbtns { display:flex; gap:8px; margin-top:9px; }
  .flagcard .fbtn { flex:1 1 0; border-radius:8px; padding:9px 4px; font-size:14px; font-weight:600; }
  .flagcard .fbtn.go { background:var(--good); color:#fff; border:1.5px solid var(--good); }
  .flagcard .fbtn.no { background:#fff; color:var(--good); border:1.5px solid var(--good); }
  .seg { display:inline-flex; border:1.5px solid var(--select); border-radius:20px; overflow:hidden; }
  .seg button { border:0; background:#fff; color:var(--select); padding:6px 14px; font-weight:700; font-size:11.5px; line-height:1.3; letter-spacing:.06em; text-transform:uppercase; }
  .seg button.on { background:var(--select); color:#fff; }
  .seg.navy { border-color:var(--accent); } .seg.navy button { color:var(--accent); } .seg.navy button.on { background:var(--accent); color:#fff; }
  .day { display:flex; gap:10px; align-items:flex-start; padding:4px 14px; border-bottom:1px solid var(--line); }
  .day .dcol { flex:0 0 50px; font-size:12px; line-height:1.3; }
  .day .dcol b { display:block; font-weight:700; }
  .day .dcol span { color:rgba(0,0,0,.55); }
  .day .body { flex:1; min-width:0; }
  .day .type { font-size:13px; font-weight:700; }
  .day .desc { font-size:12px; line-height:1.3; color:rgba(0,0,0,.68); }
  .day.sel { outline:3px solid var(--select); outline-offset:-3px; }

  /* ===== Coach app ===== */
  .cnav { display:flex; gap:4px; background:#fff; border-bottom:1px solid var(--line); padding:0 12px; overflow-x:auto; }
  .cnav button { border:0; background:none; padding:11px 12px 9px; font-size:13.5px; font-weight:700; color:var(--muted); border-bottom:3px solid transparent; white-space:nowrap; }
  .cnav button.on { color:var(--accent); border-bottom-color:var(--accent); }
  .cnav .sp { flex:1; }
  .cnav .fresh { align-self:center; font-size:11.5px; color:var(--muted); white-space:nowrap; }
  .pad { padding:16px; }
  .thead { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
  .ann { flex:1; min-width:240px; background:#d3eadf; border:1px solid #8fc3ab; color:#0a3326; border-radius:8px; padding:6px 10px; font-size:12.5px; }
  .ann b { font-weight:800; }
  .laylab { font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }

  .grid { display:grid; gap:14px; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; }
  .stage.w-wide .grid { grid-template-columns:repeat(auto-fill,minmax(400px,1fr)); }
  .stage.w-wide .split .grid { grid-template-columns:repeat(auto-fill,minmax(400px,1fr)); }
  .stage.w-lap .grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stage.w-phone .grid { grid-template-columns:1fr; }
  .split { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:16px; align-items:start; }
  .split .grid { grid-template-columns:1fr; }
  .stage.w-phone .split, .stage.w-lap .split { grid-template-columns:1fr; }

  .acard { background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden; }
  .acard .ah { display:flex; align-items:center; gap:8px; padding:10px 12px; border-bottom:1px solid var(--line); }
  .acard .ah .t { font-size:14px; font-weight:800; color:var(--accent); flex:1; }
  .acard .ah .n { font-size:12px; font-weight:800; min-width:22px; text-align:center; padding:1px 7px; border-radius:20px; background:#e2ecf6; color:var(--accent); }
  .acard .ah .n.red { background:var(--warn); color:#fff; }
  .acard .ah .n.amb { background:var(--amb-btn); color:#fff; }
  .acard .ah select { font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12px; border:1px solid var(--line); border-radius:6px; padding:2px 4px; color:var(--accent); background:#fff; }
  .acard.empty .ah { border-bottom:0; }
  .acard.empty .ah .t { color:var(--good); font-weight:700; font-size:13.5px; }
  .arow { padding:9px 12px; border-bottom:1px solid #eef2f5; border-left:4px solid transparent; }
  .arow:last-child { border-bottom:0; }
  .arow.red { border-left-color:var(--warn); background:var(--red-bg); }
  .arow.amb { border-left-color:var(--amb-bd); background:var(--amb-bg); }
  .arow.grey { border-left-color:#c2ccd4; }
  .arow .l1 { display:flex; align-items:baseline; gap:6px; flex-wrap:wrap; }
  .nm { font-weight:800; font-size:14px; color:var(--ink); cursor:pointer; }
  .nm:hover { text-decoration:underline; }
  .arow .wh { font-size:12.5px; color:var(--muted); }
  .arow .ms { font-size:13px; margin-top:3px; line-height:1.4; }
  .arow .ctx { font-size:12px; color:#5f7d97; margin-top:4px; line-height:1.4; }
  .arow .acts { display:flex; gap:6px; margin-top:7px; flex-wrap:wrap; }
  /* Buttons follow the athlete app: primary = filled navy (Save, popup confirm),
     secondary = navy outline (.btnlink), quiet = the popup's quiet button
     (#33546f text, #5f7d97 border, MM_Color_Constants item 10). One size. */
  .abtn { border:1.5px solid var(--accent); background:#fff; color:var(--accent); border-radius:8px; padding:6px 12px; font-size:13px; font-weight:700; line-height:1.2; white-space:nowrap; }
  .abtn.go { background:var(--accent); color:#fff; }
  .abtn.quiet { border-color:#5f7d97; color:#33546f; font-weight:600; }
  .abtn:active { filter:brightness(.95); }
  .snz { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-top:7px; padding:7px; background:#f6f8fa; border-radius:8px; font-size:12px; }
  .snz input { font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12px; border:1px solid var(--line); border-radius:6px; padding:4px 6px; flex:1; min-width:120px; }
  .afoot { font-size:12px; color:var(--muted); padding:7px 12px; border-top:1px solid var(--line); background:#fafbfc; }
  .afoot a { color:var(--link); cursor:pointer; text-decoration:underline; }
  .bar4 { display:inline-flex; gap:2px; vertical-align:middle; margin-left:4px; }
  .bar4 i { display:inline-block; width:9px; border-radius:2px; background:#94abc2; }
  .bar4 i.hot { background:var(--amb-btn); } .bar4 i.cold { background:#5f7d97; }
  .fat { display:inline-block; font-size:10.5px; font-weight:700; padding:1px 6px; border-radius:10px; white-space:nowrap; }
  .q { background:#fff; border-left:3px solid #006ebb; padding:4px 8px; margin-top:4px; font-size:13px; border-radius:0 6px 6px 0; }

  /* roster */
  .rtools { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:10px; }
  .rtools input, .rtools select { font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:13px; border:1px solid var(--line); border-radius:8px; padding:6px 9px; background:#fff; }
  .rtools input[type=text] { flex:1; min-width:160px; }
  table.ro { width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden; font-size:13px; }
  table.ro th { text-align:left; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); font-weight:800; padding:8px 10px; background:#f6f8fa; border-bottom:1px solid var(--line); white-space:nowrap; }
  table.ro td { padding:8px 10px; border-bottom:1px solid #eef2f5; vertical-align:middle; }
  table.ro tr:last-child td { border-bottom:0; }
  table.ro tr.paused td { color:#9aa8b4; }
  .lk { display:inline-flex; width:22px; height:22px; border-radius:5px; align-items:center; justify-content:center; font-size:10px; font-weight:800; color:#fff; margin-right:3px; text-decoration:none; }
  .lk.s { background:#fc4c02; } .lk.g { background:#1a1a1a; } .lk.c { background:#0057b8; }
  .chip { display:inline-block; font-size:10.5px; font-weight:700; padding:2px 7px; border-radius:10px; margin:1px 2px 1px 0; white-space:nowrap; }
  .chip.red { background:var(--warn); color:#fff; } .chip.amb { background:var(--amb-bg); color:var(--amb-ink); border:1px solid var(--amb-bd); }
  .chip.blu { background:#e2ecf6; color:var(--accent); } .chip.grn { background:#e8f4ee; color:#0d3d2e; }
  .stage.w-phone table.ro .hp { display:none; }

  /* athlete page */
  .ahead { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:12px 16px; background:#fff; border-bottom:1px solid var(--line); }
  .ahead .an { font-size:20px; font-weight:800; }
  .ahead select { font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:13px; border:1px solid var(--line); border-radius:8px; padding:5px 8px; }
  .ahead .sp { flex:1; }
  .fbanner { margin:12px 16px 0; background:var(--amb-bg); border:1px solid var(--amb-bd); border-radius:10px; padding:10px 12px; color:var(--amb-ink); font-size:13px; display:flex; gap:12px; align-items:flex-start; flex-wrap:wrap; }
  .fbanner .ft { font-weight:800; font-size:14.5px; }
  .fbanner .dots { display:flex; gap:3px; margin-top:6px; }
  .fbanner .dots i { width:16px; height:16px; border-radius:4px; display:inline-block; }
  .fbanner .dots span { font-size:10px; color:var(--muted); margin-right:4px; align-self:center; }
  .fbanner .rules { flex:1; min-width:240px; }
  .fbanner .rules div { margin-top:2px; }
  .ecols { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:16px; align-items:start; padding:16px; }
  .stage.w-lap .ecols, .stage.w-phone .ecols { grid-template-columns:1fr; }
  .ebox { background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden; }
  .estate { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:8px 12px; font-size:12.5px; border-bottom:1px solid var(--line); }
  .estate.draft { background:#f3eefa; color:#4a2a6e; }
  .estate.pub { background:#e8f4ee; color:#0d3d2e; }
  .estate.pending { background:var(--amb-bg); color:var(--amb-ink); }
  .estate .sp { flex:1; }
  .etools { display:flex; gap:6px; flex-wrap:wrap; align-items:center; padding:8px 12px; border-bottom:1px solid var(--line); background:#fafbfc; }
  .etools .hint { font-size:11.5px; color:var(--muted); }
  .focusin { display:flex; align-items:center; gap:8px; background:var(--accent-d); padding:5px 12px; }
  .focusin span { color:#fff; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
  .focusin input { flex:1; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12.5px; border:0; border-radius:5px; padding:4px 7px; background:#3a5d7f; color:#fff; text-transform:uppercase; letter-spacing:.05em; font-weight:700; }
  table.ed { width:100%; border-collapse:collapse; font-size:12.5px; table-layout:fixed; }
  table.ed th { font-size:10px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); font-weight:800; text-align:left; padding:6px; background:#f6f8fa; border-bottom:1px solid var(--line); }
  table.ed td { border-bottom:1px solid var(--line); border-right:1px solid rgba(0,0,0,.05); padding:0; vertical-align:top; }
  table.ed tr.sel td:first-child { box-shadow:inset 4px 0 0 var(--select); }
  table.ed tr.sel td { background-image:linear-gradient(rgba(122,75,171,.07),rgba(122,75,171,.07)); }
  table.ed td.dl { padding:5px 6px; font-size:12px; line-height:1.25; cursor:pointer; user-select:none; }
  table.ed td.dl b { display:block; }
  table.ed td.dl .dsub { color:rgba(0,0,0,.55); display:block; }
  table.ed input, table.ed textarea { width:100%; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12.5px; border:0; background:transparent; padding:6px; color:inherit; resize:none; }
  table.ed input[data-f="t"] { font-weight:700; }
  table.ed textarea { min-height:44px; line-height:1.3; }
  table.ed input:focus, table.ed textarea:focus { outline:2px solid var(--focus); outline-offset:-2px; background:#fff; color:var(--ink); }
  table.ed input[data-f="dur"]::placeholder { color:rgba(0,0,0,.5); font-weight:400; }
  table.ed tr.dk input[data-f="dur"]::placeholder { color:rgba(255,255,255,.75); }
  table.ed textarea { overflow:hidden; }
  table.ed input[data-f="dur"] { font-weight:700; }
  table.ed td.act { padding:4px; text-align:center; position:relative; }
  .mini { border:1.5px solid var(--accent); background:#fff; color:var(--accent); border-radius:8px; padding:4px 8px; font-size:11.5px; font-weight:700; margin:1px; white-space:nowrap; }
  tr.chg td.dl b::after { content:'changed'; display:inline-block; margin-left:4px; font-size:9px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; background:var(--amb-btn); color:#fff; border-radius:8px; padding:1px 5px; vertical-align:middle; }
  .pop { position:absolute; right:4px; top:30px; z-index:20; width:320px; background:#fff; border:1px solid #b9cde3; border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,.16); text-align:left; padding:6px; color:var(--ink); }
  .pop .ph { font-size:10.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); padding:6px 6px 3px; }
  .pop button { display:block; width:100%; text-align:left; border:0; background:none; padding:6px; border-radius:6px; font-size:12.5px; }
  .pop button:hover { background:#eef4f8; }
  .pop button small { display:block; color:var(--muted); font-size:11px; }
  .side h3 { font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin:0 0 6px; }
  .side .sbox { background:#fff; border:1px solid var(--line); border-radius:12px; padding:12px; margin-bottom:12px; font-size:13px; }
  .cmp { display:flex; justify-content:space-between; gap:8px; font-size:12.5px; padding:2px 0; }
  .cmp b { color:var(--accent); white-space:nowrap; }
  .kbd { display:inline-block; font-weight:700; font-size:11px; line-height:1; font-family:ui-monospace,Menlo,monospace; border:1px solid #c2ccd4; border-bottom-width:2px; border-radius:4px; padding:2px 5px; background:#fff; color:var(--ink); }
  .klist { font-size:12.5px; } .klist div { display:flex; justify-content:space-between; gap:8px; padding:3px 0; border-bottom:1px solid #eef2f5; }

  /* coaching view */
  .cview { padding:16px; }
  .cwrap { overflow-x:auto; background:#fff; border:1px solid var(--line); border-radius:12px; }
  table.cv { width:100%; min-width:1080px; border-collapse:collapse; font-size:12.5px; table-layout:fixed; }
  table.cv th { font-size:10px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); font-weight:800; text-align:left; padding:6px 8px; background:#f6f8fa; border-bottom:1px solid var(--line); position:sticky; top:0; }
  table.cv td { padding:6px 8px; border-bottom:1px solid var(--line); vertical-align:top; line-height:1.35; }
  table.cv tr.wkh td { background:#e2ecf6; color:var(--accent); font-weight:800; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; padding:6px 10px; border-bottom:1.5px solid #94abc2; }
  table.cv tr.wkh td span { color:#5f7d97; font-weight:600; text-transform:none; letter-spacing:0; margin-left:6px; }
  table.cv tr.wkh.up td { background:#f3eefa; color:#4a2a6e; border-bottom-color:#cdb8e4; }
  table.cv td.dc { cursor:pointer; font-size:12px; }
  table.cv td.dc b { display:block; font-size:12.5px; }
  table.cv td.dc .rel { color:rgba(0,0,0,.6); }
  table.cv td.dc:hover { text-decoration:underline; }
  table.cv td.wo { border-left:5px solid transparent; }
  table.cv td.wo .ty { font-weight:800; font-size:12px; }
  table.cv td.wo .de { white-space:pre-wrap; color:#33414e; }
  table.cv .tm { font-size:12px; white-space:nowrap; }
  table.cv .tm .pl { color:#7d8f9e; } table.cv .tm .ac { font-weight:800; }
  table.cv .ath { white-space:pre-wrap; }
  table.cv .ath.none { color:#c2ccd4; }
  table.cv .fl { display:inline-block; font-size:9.5px; font-weight:800; letter-spacing:.05em; background:var(--good); color:#fff; border-radius:8px; padding:1px 6px; margin-bottom:2px; text-transform:uppercase; }
  table.cv textarea { width:100%; min-height:40px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12.5px; border:1.5px solid #b8d9c9; background:#f3faf6; border-radius:6px; padding:5px; resize:vertical; }
  table.cv textarea:focus { outline:none; border-color:var(--good); background:#fff; }
  table.cv tr.isToday td { background:#fbf9ff; }
  table.cv tr.isToday td, table.ed tr.isToday td { border-top:2.5px solid #2b2b2b; border-bottom:2.5px solid #2b2b2b; }
  table.cv tr.isToday td:first-child, table.ed tr.isToday td:first-child { border-left:2.5px solid #2b2b2b; }
  table.cv tr.isToday td:last-child, table.ed tr.isToday td:last-child { border-right:2.5px solid #2b2b2b; }

  .modal { position:fixed; inset:0; background:rgba(8,20,32,.45); z-index:80; display:flex; align-items:center; justify-content:center; padding:16px; }
  .modal .box { background:#fff; border-radius:14px; max-width:560px; width:100%; max-height:88vh; overflow:auto; padding:16px 18px; box-shadow:0 12px 40px rgba(0,0,0,.25); }
  .modal h2 { font-size:17px; margin:0 0 4px; color:var(--accent); }
  .modal .mrow { display:flex; gap:8px; align-items:flex-start; font-size:13px; padding:6px 0; border-bottom:1px solid #eef2f5; }
  .modal .mrow .d { flex:0 0 120px; font-weight:800; color:var(--accent); font-size:12.5px; }
  .modal .mrow.skip { color:#9aa8b4; }
  .modal .mb { display:flex; gap:8px; justify-content:flex-end; margin-top:12px; }
  .lib .lf { display:flex; gap:6px; flex-wrap:wrap; margin:8px 0; }
  .lib .lf input { flex:1; min-width:160px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:13px; border:1px solid var(--line); border-radius:8px; padding:6px 9px; }
  .lib .le { border:1px solid var(--line); border-radius:10px; padding:8px 10px; margin-bottom:6px; display:flex; gap:10px; align-items:flex-start; border-left:5px solid #f6b26b; }
  .lib .le .tx { flex:1; min-width:0; font-size:12.5px; }
  .lib .le .tx b { font-size:13.5px; }
  .lib .le .tx pre { margin:3px 0 0; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; white-space:pre-wrap; color:#33414e; }
  .lib .le .tm { font-size:12px; color:var(--muted); white-space:nowrap; }
  .fchipf { border:1.5px solid #5f7d97; background:#fff; border-radius:20px; padding:4px 11px; font-size:12px; font-weight:600; color:#33546f; }
  .fchipf.on { background:var(--accent); color:#fff; border-color:var(--accent); }
  .setrow { display:flex; align-items:center; gap:6px; font-size:13px; margin:6px 0; }
  .setrow .k { flex:1; }
  .step { display:inline-flex; align-items:center; border:1px solid var(--line); border-radius:7px; overflow:hidden; }
  .step button { border:0; background:#f6f8fa; width:26px; height:26px; font-weight:800; color:var(--accent); }
  .step span { min-width:54px; text-align:center; font-weight:800; font-size:12.5px; }
  .setrow select { font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12.5px; border:1px solid var(--line); border-radius:6px; padding:3px; }
  .sethd { font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin:14px 0 2px; }
  .toast { position:fixed; left:50%; bottom:22px; transform:translateX(-50%); background:#1f2a35; color:#fff; padding:10px 16px; border-radius:10px; font-size:13px; z-index:90; box-shadow:0 6px 20px rgba(0,0,0,.25); max-width:90vw; }
  .toast a { color:#9fd3bd; margin-left:8px; cursor:pointer; text-decoration:underline; }

  /* v3 */
  .tc { display:inline-flex; align-items:center; gap:4px; cursor:pointer; vertical-align:middle; margin:2px 0 0; outline:none; }
  .tci { width:19px; height:19px; border-radius:50%; background:#d98e00; display:inline-flex; align-items:center; justify-content:center; box-shadow:0 0 0 2px #fff, 0 1px 3px rgba(0,0,0,.25); flex:0 0 auto; }
  .tc:focus .tci { box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--focus); }
  .tcw { font-size:10.5px; font-weight:700; color:#5a3d00; background:#fff6e0; border:1px solid #e8c36a; border-radius:8px; padding:0 6px; max-width:120px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  #tip { position:fixed; z-index:95; max-width:280px; background:#fff6e0; border:1.5px solid #d98e00; color:#3d2a00; border-radius:10px; padding:8px 10px; font-size:13px; line-height:1.4; box-shadow:0 6px 18px rgba(0,0,0,.18); display:none; }
  #tip b { display:block; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:#8a5a00; margin-bottom:2px; }
  .pop { position:fixed; right:auto; top:0; max-height:70vh; overflow:auto; z-index:70; }
  .pop .ph.sub { padding-top:8px; } .pop .none { font-size:12px; color:var(--muted); padding:2px 6px 6px; }
  .wsec { margin-bottom:14px; }
  .wsec.prev { opacity:.62; } .wsec.prev:hover { opacity:.9; }
  .wsec .wknav { justify-content:center; }
  .estate.done { background:#eef2f5; color:#5d7183; }
  .rocell { padding:6px; white-space:pre-wrap; font-size:12.5px; min-height:30px; } .rocell.b { font-weight:700; } .rocell.gr { color:rgba(0,0,0,.5); }
  .fro { color:#fff; font-size:12.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
  .edspacer { height:240px; font-size:11.5px; color:#a3b0bb; padding-top:10px; }
  .cvtools { display:flex; align-items:center; gap:10px; font-size:12px; color:var(--muted); margin-bottom:8px; }
  .cvsec { margin-bottom:14px; }
  .cvh { position:sticky; left:0; display:inline-block; background:#e2ecf6; color:var(--accent); font-weight:800; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; padding:6px 10px; border-radius:8px 8px 0 0; border:1px solid #b9cee3; border-bottom:0; }
  .cvh span { color:#5f7d97; font-weight:600; text-transform:none; letter-spacing:0; margin-left:6px; }
  .cvh.up { background:#f3eefa; color:#4a2a6e; border-color:#cdb8e4; }
  .cvh .xtnote { color:#8a5a00; }
  .cwrap { background:transparent !important; border:0 !important; padding-bottom:4px; }
  table.cv { min-width:0 !important; background:#fff; border:1px solid var(--line); }
  table.cv th { position:relative; }
  .rz { position:absolute; right:-4px; top:0; bottom:0; width:9px; cursor:col-resize; z-index:2; }
  .rz::after { content:''; position:absolute; left:4px; top:5px; bottom:5px; width:1.5px; background:#c2ccd4; }
  .rz:hover::after { background:var(--focus); width:3px; left:3px; }
  table.cv td.dc .dlink { cursor:pointer; display:block; } table.cv td.dc .dlink:hover { text-decoration:underline; }
  table.cv td.dc:hover { text-decoration:none; }
  table.cv .tm b { font-weight:800; }
  .cvfoot { font-size:11.5px; color:var(--muted); margin-top:4px; }
  .mrow.tcrow { background:#fff6e0; border-radius:6px; padding:6px; }
  /* v4 */
  .okstrip { background:#e8f4ee; border:1px solid #b8d9c9; color:#0d3d2e; border-radius:8px; padding:6px 10px; font-size:12.5px; margin:-4px 0 12px; }
  .okstrip .okt { font-weight:800; color:var(--good); }
  table.ed td.dl { position:relative; }
  table.ed td.dl.hastc { padding-bottom:28px; }
  .tc.wide { position:absolute; left:6px; bottom:6px; width:206px; z-index:3; display:flex; }
  .tc.wide .tcw { max-width:none; flex:1; min-width:0; font-size:11px; padding:1px 7px; }
  table.cv td.dc .tc { display:flex; margin-top:3px; }
  table.cv td.dc .tcw { max-width:64px; }
  /* v5: on the athlete page the header, athlete bar and banner stay put; the weeks scroll */
  .stage.shell { height:100vh; display:flex; flex-direction:column; }
  .stage.shell > header, .stage.shell > .cnav, .stage.shell > .ahead, .stage.shell > .fbanner { flex:none; }
  .stage.shell > .abody { flex:1; min-height:0; }
  .stage.shell .ecols { height:100%; padding:0 16px; align-items:stretch; }
  .stage.shell .epane { overflow:auto; height:100%; padding:16px 4px 0 0; }
  .stage.shell .side { overflow:auto; height:100%; padding-top:16px; }
  .stage.shell .cview { height:100%; overflow:auto; }
  .stage.shell .pad { overflow:auto; }
  .fbanner.slim { align-items:center; flex-wrap:nowrap; padding:7px 12px; gap:10px; }
  .fbanner.slim .ft { font-size:13.5px; white-space:nowrap; }
  .fbanner.slim .abtn { white-space:nowrap; flex:none; }
  .fbanner.slim .why { font-size:12.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
  .fbanner.slim .dots { display:flex; gap:3px; margin:0; }
  .fbanner.slim .dots i { width:12px; height:12px; border-radius:3px; display:inline-block; }
  .stage.shell table.cv th { position:sticky; top:0; z-index:4; box-shadow:0 1px 0 var(--line); }
  table.cv tr.flash td { animation:flashov 6s ease-out var(--fd,0s) both; }   /* coach1.1 (B13): an overlay, so the day keeps its colour */
  @keyframes flash { 0%,60% { background:#fff1c2; } 100% { background:transparent; } }
  table.cv textarea, table.ed textarea { overflow:hidden; resize:none; }
  /* v6: tools bars stay put in both views; open on this week */
  .stage.shell .emain { display:flex; flex-direction:column; height:100%; min-height:0; padding-top:12px; }
  .stage.shell .etoolbar { flex:none; margin-bottom:10px; }
  .stage.shell .epane { flex:1; min-height:0; height:auto; overflow:auto; padding:0 4px 0 0; position:relative; }
  .stage.shell .side { padding-top:12px; }
  .stage.shell .cview { height:100%; overflow:hidden; display:flex; flex-direction:column; padding:12px 16px 8px; }
  .cvtools.ebox { padding:7px 12px; margin-bottom:10px; flex:none; }
  .stage.shell .cwrap { flex:1; min-height:0; overflow:auto; position:relative; }
  .cvfoot { flex:none; }
  /* v7 */
  .ftags { display:inline-flex; gap:4px; margin-left:2px; }
  .ftag { font-size:10.5px; font-weight:700; padding:1px 7px; border-radius:10px; background:#e2ecf6; color:var(--accent); }
  .ftag.inj { background:#fbedeb; color:var(--warn); border:1px solid #e2b5ae; }
  .q.clamp { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .q.full { margin-top:6px; }
  .q .qf { display:block; font-size:10.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:#5f7d97; margin-bottom:2px; }
  a.more { display:inline-block; font-size:12px; font-weight:700; color:var(--link); cursor:pointer; margin-top:3px; text-decoration:underline; }
  .chip.grnb { background:var(--good); color:#fff; }
  .wkflex { display:flex; align-items:stretch; }
  .wkflex table.ed { flex:1; min-width:0; }
  .wkbar { flex:0 0 78px; background:#e2ecf6; border-right:1.5px solid #94abc2; display:flex; flex-direction:column; gap:10px; padding:10px 6px; color:#24486a; }
  .wkb span { display:block; font-size:9.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:#5f7d97; }
  .wkb b { display:block; font-size:13.5px; font-weight:800; color:var(--accent); }
  .wkb i { display:block; font-style:normal; font-size:11px; color:#5f7d97; }
  .wktot.wkhead { margin-top:0; }
  .cvsec .wktot.wkhead { border-radius:0; }
  .wkcmp { font-size:11.5px; color:#5f7d97; padding:5px 12px; background:#fafbfc; border-top:1px solid var(--line); }

/* ===== Coach page additions (slice 1) ===== */
  .stage { margin:0 auto; background:var(--bg); max-width:1900px; min-height:100vh; }
  .stage.shell { overflow:hidden; }
  /* Later slices' parts: shown, greyed, and inert (Josh, 19 Oct). */
  .abtn[disabled], .mini[disabled], .seg button[disabled], .inert button, .inert select { opacity:.45; cursor:not-allowed; }
  .acard.inert { opacity:.75; }
  .acard.inert .ah .t { color:var(--muted); }
  .acard.inert .soon { font-size:12.5px; color:var(--muted); padding:9px 12px; line-height:1.4; }
  .soonchip { display:inline-block; font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:10px; background:#eef2f5; color:#5d7183; white-space:nowrap; }
  .setinert { opacity:.6; }
  .cnav .fresh.bad { color:var(--warn); font-weight:700; }
  .loading { padding:24px; text-align:center; color:var(--muted); font-size:14px; }
  .errbox { background:var(--red-bg); border:1px solid var(--red-bd); color:var(--warn); border-radius:10px; padding:12px 14px; font-size:13.5px; margin-bottom:12px; }
  table.cv .jtext { white-space:pre-wrap; min-height:40px; font-size:12.5px; border:1.5px solid #b8d9c9; background:#f3faf6; border-radius:6px; padding:5px; color:#33414e; }
  table.cv .jtext.none { color:#a3b0bb; }
  .cvh .chk { display:inline-block; margin-left:8px; font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; background:var(--amb-bg); color:var(--amb-ink); border:1px solid var(--amb-bd); border-radius:8px; padding:0 6px; }
  .cvnone { font-size:12.5px; color:var(--muted); background:#fff; border:1px solid var(--line); padding:10px 12px; }
  .setrow input[type=text] { flex:1.4; font-family:inherit; font-size:12.5px; border:1px solid var(--line); border-radius:6px; padding:4px 7px; min-width:0; }
  .setrow .own { font-size:10.5px; font-weight:700; color:var(--select); margin-left:4px; }
  .lkerr { color:var(--warn); font-size:12px; min-height:16px; margin-top:2px; }
  .chip.cp { background:#eef2f5; color:#5d7183; }
  .chip.pur { background:#f3eefa; color:#4a2a6e; }
  /* Demo mode only: the busy / quiet switch sits in the tab bar, out of the way. */
  .demobar { display:flex; align-items:center; gap:6px; align-self:center; background:#1f2a35; color:#dfe6ec;
    border-radius:10px; padding:4px 6px; font-size:12px; margin-right:12px; white-space:nowrap; }
  .demobar .lab { font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:#9fb0bf; margin-right:2px; }
  .demobar button { border:1px solid #4a5b6b; background:#2b3846; color:#dfe6ec; border-radius:16px; padding:3px 10px; font-size:12px; font-weight:600; font-family:inherit; }
  .demobar button.on { background:#fff; color:#1f2a35; border-color:#fff; }
  .signin { max-width:420px; margin:12vh auto 0; background:#fff; border:1px solid var(--line); border-radius:14px; padding:22px; text-align:center; }
  .signin h2 { font-size:18px; color:var(--accent); margin:0 0 8px; }
  .signin p { font-size:14px; color:var(--muted); margin:0 0 6px; }

/* ===== coach0.2beta (Josh's notes on 0.1beta; mockup v8) ===== */
  /* Tabs in the header (v8 option A), well clear of the title. */
  header.top { min-height:46px; padding:6px 14px; gap:10px; }
  header.top img { height:30px; }
  header.top .htabs { display:flex; gap:2px; margin-left:38px; }
  header.top .htabs button { border:0; background:transparent; color:rgba(255,255,255,.72); padding:7px 12px; font-size:13.5px; font-weight:700; border-radius:8px; font-family:inherit; }
  header.top .htabs button.on { background:rgba(255,255,255,.16); color:#fff; }
  header.top .sp { flex:1; }
  header.top .fresh { font-size:11.5px; color:rgba(255,255,255,.78); white-space:nowrap; }
  header.top .fresh.bad { color:#ffd2cc; font-weight:700; }
  header.top .who { margin-left:10px; }
  /* A slimmer name bar, with the week tools in its centre. */
  .ahead { padding:6px 16px; }
  .ahead .an { font-size:18px; }
  .ahead .mid { display:flex; align-items:center; gap:6px; }
  .wkb { border:1px solid var(--line); background:#fff; color:var(--accent); border-radius:8px; padding:5px 11px; font-size:15px; font-weight:800; line-height:1; font-family:inherit; }
  .stage.shell .cview { padding-top:10px; }
  /* The corner (Josh): a rounded container clipped the rounder corner inside it. */
  .cwrap, .stage.shell .cwrap { border-radius:0; }
  /* Empty cards, named as small tiles in the last slot. */
  .acard.minis { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; background:transparent; border:0; border-radius:0; overflow:visible; }
  .mini1 { background:#f3f8f5; border:1px solid #cfe5d8; border-radius:10px; padding:8px 10px; font-size:12.5px; color:#0d3d2e; }
  .mini1 b { font-weight:800; }
  .mini1 span:last-child { display:block; font-size:11.5px; color:#5d7183; }
  .mini1 .okt { color:var(--good); font-weight:800; }
  /* The announcement: light yellow, its style as a chip. */
  .ann { background:#fdf8d2; border:1px solid #e3d26f; color:#4a4300; display:flex; align-items:center; gap:8px; }
  .annchip { font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; border-radius:10px; padding:1px 8px; white-space:nowrap; }
  .annchip.simple { background:#efe39a; color:#4a4300; }
  .annchip.action { background:var(--accent); color:#fff; }
  /* Snooze: a 1–6 day stepper. */
  .sstep { display:inline-flex; align-items:center; border:1.5px solid #5f7d97; border-radius:8px; overflow:hidden; background:#fff; }
  .sstep button { border:0; background:#f6f8fa; width:28px; height:28px; font-size:15px; font-weight:800; color:var(--accent); font-family:inherit; }
  .sstep button[disabled] { opacity:.35; cursor:default; }
  .sstep span { min-width:58px; text-align:center; font-size:12.5px; font-weight:800; color:#33546f; }
  /* Coaching view: light separators, the colour filling the Workout cell, logged numbers in ink. */
  table.cv td + td, table.cv th + th { border-left:1px solid #eef2f5; }
  table.cv td.wo { border-left:1px solid #eef2f5; }
  table.cv td.wo.dk, table.cv td.wo.dk .de { color:#fff; }
  table.cv .tm .lg { color:var(--ink); font-weight:600; }
  table.cv tbody tr { cursor:pointer; }
  table.cv tbody td.jcol { cursor:default; }
  .cvsec .wkflex + .wktot.wkhead { border-top:0; border-radius:0 0 8px 8px; }
  /* Dropdowns: the athlete app's arrow, close to the text. */
  /* !important: the older select rules above set `background:#fff`, which would drop the arrow. */
  select { -webkit-appearance:none; appearance:none; padding-right:26px !important; background-color:#fff !important;
    background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2357758b' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 8px center !important; }
  /* Roster: whole rows click; headings sort. */
  table.ro tr.rrow { cursor:pointer; }
  table.ro tr.rrow:hover td { background:#f6f9fb; }
  table.ro th.srt { cursor:pointer; user-select:none; }
  table.ro th.srt.on { color:var(--accent); }
  table.ro th .arr { display:inline-block; width:10px; margin-left:3px; font-size:9px; }
  /* The day overlay: plan, a line, then the athlete app's logged-day card. */
  .modal .msec { font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin:8px 0 2px; }
  .modal .mdiv { border-top:1.5px solid var(--line); margin:12px 0 4px; }
  .daystat { padding:6px 0 4px; }
  .daystat .none { font-size:13px; color:var(--muted); font-style:italic; }
  .daystat .hl { display:flex; align-items:stretch; margin:2px 0 10px; }
  .daystat .hl > div { flex:1 1 0; min-width:0; text-align:center; padding:2px 4px; }
  .daystat .hl > div + div { border-left:1px solid var(--line); }
  .daystat .big { font-size:22px; font-weight:700; line-height:1.15; color:var(--ink); font-variant-numeric:tabular-nums; white-space:nowrap; }
  .daystat .big small { font-size:13px; font-weight:600; color:var(--muted); margin-left:2px; }
  .daystat .lbl { font-size:10.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); margin-top:2px; }
  .daystat .sm { display:grid; grid-template-columns:auto 1fr auto 1fr; gap:6px 10px; align-items:center; }
  .daystat .hl + .sm { padding-top:10px; border-top:1px solid var(--line); }
  .daystat .sm .k { font-size:12.5px; color:var(--muted); }
  .daystat .sm .v { font-size:14px; font-weight:600; color:var(--ink); overflow-wrap:break-word; }
  .daystat .dash { color:#9fb0bd; font-style:italic; }

/* ===== coach0.3beta (Josh, 20 Oct) ===== */
  /* The weeks' pane holds the jump chips and the fades, which stay put while the weeks scroll. */
  .cvpane { position:relative; display:flex; flex-direction:column; min-height:0; }
  .stage.shell .cvpane { flex:1; }
  /* The athlete app's fades (index.html .wview .pfade): 39px, eased, only when there's more that way. */
  .cvfade { position:absolute; left:0; height:39px; pointer-events:none; z-index:6; opacity:0; transition:opacity .15s; }
  .cvfade.t { background:linear-gradient(to top, rgba(18,32,46,0) 0%, rgba(18,32,46,.006) 20%, rgba(18,32,46,.022) 40%, rgba(18,32,46,.052) 60%, rgba(18,32,46,.10) 80%, rgba(18,32,46,.17) 100%); }
  .cvfade.b { background:linear-gradient(to bottom, rgba(18,32,46,0) 0%, rgba(18,32,46,.006) 20%, rgba(18,32,46,.022) 40%, rgba(18,32,46,.052) 60%, rgba(18,32,46,.10) 80%, rgba(18,32,46,.17) 100%); }
  .cvfade.on { opacity:1; }
  /* The athlete app's jump chips (index.html .wview .jchip), in its blue. */
  .cvpane .jchip { position:absolute; left:50%; transform:translateX(-50%); z-index:7; display:none;
    border:0; border-radius:20px; background:var(--accent); color:#fff; cursor:pointer;
    font-family:inherit; font-size:12px; font-weight:700; line-height:1.4; padding:4px 12px;
    box-shadow:0 2px 8px rgba(0,0,0,.25); white-space:nowrap; }
  .cvpane .jchip.t { top:8px; }
  .cvpane .jchip.b { bottom:8px; }
  .cvpane .jchip.on { display:block; }
  /* Each week's table and totals in one card, as wide as the table. */
  .cvcard { width:max-content; min-width:0; border:1px solid var(--line); border-radius:0 9px 9px 9px; background:#fff; }
  .cvcard table.cv { border:0; }
  .cvcard .cvnone { border:0; }
  .cvsec .cvcard .wktot.wkhead { border-bottom:0; border-radius:0 0 8px 8px; }
  /* This week in charcoal (Josh, 20 Oct): #2b2b2b, as the title bar and the TODAY tag; white
     "This week", dates at 78%; a 2px white line under it; the card's border 1.5px charcoal. */
  .cvsec.this .cvh { background:#2b2b2b; color:#fff; border-color:#2b2b2b; border-bottom:2px solid #fff; }
  .cvsec.this .cvh span { color:rgba(255,255,255,.78); }
  .cvsec.this .cvh .xtnote { color:#ffd98a; }
  /* 1.5px drawn as a 1px border plus a half-pixel ring: Chrome rounds a 1.5px border down to 1px. */
  .cvsec.this .cvcard { border:1px solid #2b2b2b; box-shadow:0 0 0 .5px #2b2b2b; }
  /* Sign-in and sign-out. */
  .signin .sgn { display:flex; gap:8px; margin:14px 0 4px; }
  .signin .sgn input { flex:1; min-width:0; font-family:inherit; font-size:15px; font-weight:400; border:1px solid var(--line); border-radius:8px; padding:8px 10px; }
  .signin .sgnerr { text-align:left; }
  .signin p.small { font-size:12px; color:var(--muted); margin-top:10px; }
  header.top .hbtn { border:1px solid rgba(255,255,255,.35); background:transparent; color:rgba(255,255,255,.85); border-radius:7px; padding:3px 9px; font-family:inherit; font-size:12px; font-weight:600; margin-left:10px; white-space:nowrap; }
  .vline { text-align:center; font-size:11px; color:#8b9aa8; padding:14px 0 4px; }

  /* ===== coach0.4beta: your saves (Fast saves phase 1; mockup v9, Josh's picks 20 Oct) ===== */
  /* The reply box: the green box Comments from Josh already had, now typeable. */
  table.cv td.jcol { vertical-align:top; }
  .jbox { position:relative; }
  table.cv .jedit { cursor:text; outline:none; line-height:1.4; word-break:break-word; transition:border-color .15s, box-shadow .15s; }
  table.cv .jedit:empty::before { content:attr(data-ph); color:#9db3a7; }
  table.cv .jedit:hover { border-color:#8fc4aa; }
  table.cv .jedit:focus { border-color:#00A368; background:#fff; box-shadow:0 0 0 3px rgba(0,163,104,.16); }
  table.cv .jedit a { color:var(--link); text-decoration:underline; }
  .jlink { margin-top:4px; }
  .jlink input { width:100%; box-sizing:border-box; font-family:inherit; font-size:12.5px; border:1.5px solid var(--focus); border-radius:6px; padding:4px 6px; }
  /* Save marks */
  .smark { font-size:11.5px; font-weight:700; line-height:1.35; margin-top:4px; }
  .smark.saving { color:var(--muted); }
  .smark.saved { color:var(--good); transition:opacity .8s; }
  .smark.saved.gone { opacity:0; }
  .smark.held { color:var(--warn); font-weight:600; background:#fdf1f0; border-radius:6px; padding:4px 6px; }
  .smark.wait { color:#8a5a00; font-weight:600; background:#fff6e0; border-radius:6px; padding:4px 6px; }
  .smark.note { color:#5f6f7b; font-style:italic; }   /* coach1.1 (B7): a save written with a note (a copy written as text) */
  .smark b { font-weight:800; }
  .smark a { color:var(--link); text-decoration:underline; cursor:pointer; font-weight:700; margin-right:10px; }
  header.top .waitchip { background:#fff6e0; color:#8a5a00; border-radius:999px; padding:3px 10px; font-size:12px; font-weight:700; margin-right:10px; white-space:nowrap; }
  /* The day overlay */
  .modal .mdiv.notes { margin:16px 0 8px; }
  .modal .pmk { display:flex; gap:8px; align-items:flex-start; font-size:13px; padding:4px 0; }
  .modal .pmk .d { flex:0 0 120px; font-weight:800; color:var(--accent); font-size:12.5px; padding-top:4px; }
  .modal .pmk .smark { margin-top:0; }
  .ded .frow { display:flex; gap:10px; align-items:flex-start; padding:6px 0; border-bottom:1px solid #eef2f5; }
  .ded .frow > label { flex:0 0 120px; font-weight:800; color:var(--accent); font-size:12.5px; padding-top:7px; }
  .ded .frow > .f { flex:1; min-width:0; }
  .ded input, .ded select, .ded textarea { width:100%; box-sizing:border-box; border:1.5px solid #cfd9e1; border-radius:7px; padding:5px 8px; font-size:13px; font-family:inherit; color:var(--ink); background:#fbfcfd; }
  .ded textarea { resize:vertical; min-height:36px; line-height:1.4; }
  .ded input:focus, .ded select:focus, .ded textarea:focus { outline:none; border-color:var(--focus); background:#fff; box-shadow:0 0 0 3px rgba(17,119,209,.15); }
  .ded input.min { width:90px; }
  .ded .unit { font-size:12.5px; color:var(--muted); margin-left:6px; }
  .ded .tsel { display:flex; align-items:center; gap:8px; }
  .ded .sw { width:22px; height:22px; border-radius:5px; border:1px solid #cfd9e1; flex:none; }
  .ded .fnote { font-size:11.5px; color:var(--muted); margin-top:3px; }
  .ded .tcrow { margin:4px 0; }

  /* ---------------- coach0.5beta (21 Oct): Josh's edit list #2, and Edit training (mockups v10–v12) ---------------- */
  /* 3 · the help text in an ⓘ next to the view switch */
  .infoi { display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; border-radius:50%; border:1.5px solid #5f7d97; color:#33546f; font-family:Georgia, serif; font-style:italic; font-weight:700; font-size:12px; line-height:1; cursor:help; outline:none; flex:none; }
  .infoi:hover, .infoi:focus { background:#e2ecf6; border-color:var(--accent); color:var(--accent); }
  #notepop { position:fixed; z-index:96; display:none; max-width:380px; max-height:60vh; overflow:auto; background:#fff; border:1.5px solid #b9cee3; color:var(--ink); border-radius:10px; padding:8px 11px; font-size:13px; line-height:1.45; white-space:pre-wrap; box-shadow:0 8px 24px rgba(0,0,0,.18); }
  #notepop b:first-child { display:block; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); margin-bottom:3px; }
  #notepop.info { white-space:normal; background:#f6f9fc; max-width:420px; }
  .clipseg { margin-left:6px; }
  .clipseg button { font-size:11.5px; padding:5px 9px; }

  /* 1 · notes clipped to 3 lines, fading out (Josh's pick B); hover reads all */
  table.cv tr.clipr .de, table.cv tr.clipr .ath, table.cv tr.clipr .jedit:not(:focus) { display:block; max-height:4.05em; overflow:hidden; }
  table.cv tr.clipr .jedit:not(:focus) { max-height:calc(4.2em + 12px); }
  table.cv tr.clipr .ov:not(:focus) { -webkit-mask-image:linear-gradient(to bottom, #000 55%, transparent 100%); mask-image:linear-gradient(to bottom, #000 55%, transparent 100%); }

  /* 4 · a time constraint wraps when the row already has the room */
  table.cv td.dc .tc.wrapt { align-items:flex-start; }
  table.cv td.dc .tc.wrapt .tcw { white-space:normal; overflow:visible; text-overflow:clip; line-height:1.3; padding:1px 6px; }

  /* 5 · Week focus: text on the Coaching view's week tab, in a hairline outline (Josh, 9:13) */
  .wf { margin-left:6px; display:inline-flex; align-items:center; gap:6px; }
  .cvh .wf span { margin-left:0; }
  .wf .wfed { outline:none; cursor:text; min-width:40px; color:inherit; text-transform:none; letter-spacing:0; font-weight:700; font-size:12px; padding:0 6px; border:1px solid rgba(95,125,151,.45); border-radius:5px; }
  .cvsec.this .wf .wfed { border-color:rgba(255,255,255,.5); }
  .wf .wfed:hover { border-color:currentColor; }
  .wf .wfed:focus { background:#fff; color:var(--ink); border-color:var(--focus); box-shadow:0 0 0 2px rgba(17,119,209,.25); }
  .wf .wfed:empty::before { content:attr(data-ph); font-style:italic; font-weight:600; opacity:.75; }
  .wf .wfmk .smark { margin:0; font-size:10.5px; }
  .cvsec.this .wf .wfmk .smark.saving, .cvsec.this .wf .wfmk .smark.saved { color:#bfe8d4; }
  /* … and v7's band in Edit training: the athlete app's .wfocus, editable; greyed on a faded week */
  .wfband { display:flex; align-items:center; gap:10px; background:var(--accent-d); color:#fff; padding:5px 10px 5px 14px; font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; font-weight:800; }
  .wfband.past { background:#7a8ba0; }
  .wfband .wfl { flex:none; opacity:.9; }
  .wfband .wfed { flex:1; min-width:0; background:rgba(255,255,255,.12); border:1.5px solid transparent; border-radius:5px; padding:3px 9px; color:#fff; font-size:12px; letter-spacing:.07em; font-weight:800; text-transform:uppercase; outline:none; cursor:text; }
  .wfband .wfed:hover { background:rgba(255,255,255,.2); }
  .wfband .wfed:focus { background:#fff; color:var(--ink); border-color:var(--focus); text-transform:none; letter-spacing:0; }
  .wfband .wfed:empty::before { content:attr(data-ph); font-style:italic; text-transform:none; letter-spacing:0; font-weight:600; opacity:.8; }
  .wfband .wfmk .smark { margin:0; font-size:10.5px; text-transform:none; letter-spacing:0; color:#bfe8d4; }
  .cvcard:has(.wfband) { overflow:hidden; }

  /* 7 · "still checking": dark text, readable on this week's charcoal tab too */
  .cvh .chk, .cvsec.this .cvh span.chk { color:#12202e; }

  /* 8 · the test-log switch */
  .ck { display:flex; align-items:center; gap:8px; font-weight:700; }
  table.ro .chip.test { background:#eef2f5; color:#5d7183; border:1px dashed #b9c6d1; }

  /* ---- Edit training ---- */
  .ewrap { display:flex; height:100%; min-height:0; }
  .ewrap > .cview { flex:1; min-width:0; }
  .etools { display:flex; align-items:center; gap:8px; flex-wrap:wrap; flex:none; margin-bottom:8px; }
  .etools .sp { flex:1; }
  .etools .ehint { font-size:12px; color:var(--muted); }
  .abtn.sm { padding:3px 8px; font-size:12px; }
  .ewrap .cvcard { width:auto; min-width:980px; }
  table.et { border-collapse:collapse; table-layout:fixed; width:100%; min-width:980px; background:#fff; border:0; font-size:12.5px; }
  table.et th { font-size:10px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); font-weight:800; text-align:left; padding:6px 8px; background:#f6f8fa; border-bottom:1px solid var(--line); position:sticky; top:0; z-index:4; box-shadow:0 1px 0 var(--line); }
  table.et td { border-bottom:1px solid var(--line); vertical-align:top; padding:3px; }
  table.et td + td { border-left:1px solid #eef2f5; }
  table.et td.dc { padding:6px 8px; cursor:pointer; user-select:none; position:relative; font-size:12px; }
  table.et td.dc b { display:block; font-size:12.5px; }
  table.et td.dc .rel { color:rgba(0,0,0,.6); display:block; }
  table.et td.dc:has(.etc) { padding-bottom:30px; }
  table.et .etc { position:absolute; left:7px; bottom:6px; width:248px; z-index:3; display:flex; }
  table.et .etc .tcw { max-width:none; flex:1; min-width:0; font-size:11px; padding:1px 7px; }
  /* Each field fills its cell (Josh, 21 Oct); the tallest field sets the row. */
  table.et td.ecell { height:1px; padding:0; position:relative; }
  table.et .ec { display:block; width:100%; height:100%; min-height:44px; box-sizing:border-box; border:2px solid transparent; border-radius:0; background:transparent; font-family:inherit; font-size:12.5px; line-height:1.4; color:var(--ink); padding:6px 7px; resize:none; overflow:hidden; outline:none; white-space:pre-wrap; }
  table.et .ec:hover { border-color:rgba(17,119,209,.25); }
  table.et .ec:focus { border-color:var(--focus); position:relative; z-index:2; }
  table.et tr:not(.rowc) .ec:focus { background:#fff; }
  table.et .f-type .ec { font-weight:800; }
  table.et .f-duration .ec { text-align:right; padding-right:34px; }
  table.et .f-duration .unit { position:absolute; right:8px; top:8px; pointer-events:none; font-size:11.5px; color:var(--muted); }
  table.et td.ecell > [data-mark] { position:absolute; left:4px; bottom:1px; pointer-events:none; z-index:3; }
  table.et td.ecell > [data-mark] .smark { margin:0; font-size:10.5px; }
  table.et td.ecell > [data-mark] .smark a { pointer-events:auto; }
  table.et tr.rowc td { background:var(--rc); }
  table.et tr.rowc.dk td, table.et tr.rowc.dk .ec { color:#fff; }
  table.et tr.rowc.dk td.dc .rel { color:rgba(255,255,255,.8); }
  table.et tr.rowc.dk .ec:focus { background:#fff; color:var(--ink); }
  table.et tr.isToday td { border-top:2.5px solid #2b2b2b; border-bottom:2.5px solid #2b2b2b; }
  table.et tr.isToday td:first-child { border-left:2.5px solid #2b2b2b; }
  table.et tr.isToday td:last-child { border-right:2.5px solid #2b2b2b; }
  table.et tr.dsel td { box-shadow:inset 0 0 0 9999px rgba(17,119,209,.10); }
  table.et tr.dsel td.dc { box-shadow:inset 3px 0 0 var(--focus), inset 0 0 0 9999px rgba(17,119,209,.16); }
  .cvsec.past table.et td { opacity:.62; transition:opacity .15s; }
  .cvsec.past table.et tr:hover td, .cvsec.past table.et tr:focus-within td, .cvsec.past table.et tr.dsel td { opacity:1; }
  td.ecf { text-align:center; padding-top:5px !important; }
  table.et .cfb { visibility:hidden; }
  table.et tr:hover .cfb, table.et tr:focus-within .cfb, table.et tr.dsel .cfb, table.et .cfb.open { visibility:visible; }
  .eroom { height:260px; }
  .cfmenu { position:fixed; z-index:80; width:330px; overflow:auto; background:#fff; border:1px solid #b9cee3; border-radius:10px; box-shadow:0 10px 28px rgba(0,0,0,.2); padding:6px; }
  .cfh { font-size:10.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); padding:6px 6px 3px; }
  .cfh.dim { color:#a3b0bb; }
  .cfi { display:block; width:100%; text-align:left; border:0; background:none; border-radius:7px; padding:5px 6px; font-family:inherit; font-size:12.5px; color:var(--ink); cursor:pointer; }
  .cfi:hover { background:#eef4fa; }
  .cfi div { color:#33414e; white-space:pre-wrap; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .cff { font-size:11.5px; color:var(--muted); padding:6px; border-top:1px solid var(--line); margin-top:4px; }
  .cff a { color:var(--link); text-decoration:underline; cursor:pointer; }
  .ctw { display:flex; align-items:center; gap:3px; padding:3px 6px; }
  .ctn { width:88px; font-size:11.5px; font-weight:700; color:var(--muted); }
  .ctd { position:relative; width:32px; border:1.5px solid #cfd9e1; background:#fff; border-radius:6px; padding:3px 0 2px; font-family:inherit; font-size:11.5px; font-weight:800; color:var(--accent); cursor:pointer; line-height:1.1; }
  .ctd small { display:block; font-size:10px; font-weight:600; color:var(--muted); }
  .ctd.same { border-color:#8fb0cf; }
  .ctd.has::after { content:''; position:absolute; top:3px; right:3px; width:5px; height:5px; border-radius:50%; background:#d98e00; }
  .ctd:hover:not([disabled]) { background:#eef4fa; border-color:var(--accent); }
  .ctd[disabled] { opacity:.35; cursor:default; }
  .sw { display:inline-block; width:11px; height:11px; border-radius:3px; border:1px solid rgba(0,0,0,.18); vertical-align:-1px; margin-right:5px; }
  .ew { font-size:11.5px; color:var(--muted); }
  .eside { width:300px; flex:none; overflow:auto; padding:12px 16px 8px 0; }
  .ecard { background:#fff; border:1px solid var(--line); border-radius:12px; padding:10px 12px; margin-bottom:12px; }
  .ecard .eh { font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin-bottom:6px; }
  .eside .q { margin-bottom:6px; }
  .eside .q.full { margin-top:0; }
  .elast { font-size:12.5px; padding:5px 0; border-bottom:1px solid #eef2f5; }
  .elast .ew { display:block; }
  .elast div { color:#33414e; white-space:pre-wrap; }
  .enone { font-size:12.5px; color:var(--muted); padding:2px 6px 6px; }
  .enote2 { font-size:11.5px; color:var(--muted); margin-top:6px; }
  .sfi { font-size:13px; line-height:1.45; margin-bottom:8px; }
  table.sft { width:100%; border-collapse:collapse; font-size:13px; }
  table.sft td { padding:5px 6px; border-bottom:1px solid #eef2f5; vertical-align:top; }
  table.sft td:first-child { font-weight:800; width:44px; }
  table.sft .dim { color:var(--muted); }
  table.kt { width:100%; border-collapse:collapse; font-size:13px; }
  table.kt td { padding:5px 6px; border-bottom:1px solid #eef2f5; }
  table.kt td:first-child { white-space:nowrap; width:1%; }

/* ===== coach0.6beta (21 Oct): Races & goals (MM_Coach06_BuildSpec.md; mockups v13–v14, Josh's picks) ===== */
/* The athlete page's tabs: underlined, in the name bar (Josh, v14 B) */
.vtabs { display:inline-flex; align-items:stretch; gap:2px; margin-left:8px; align-self:stretch; }
.vtabs button { border:0; background:none; color:#5d7183; font-size:13px; font-weight:700; padding:8px 10px; border-bottom:3px solid transparent; margin:-6px 0 -7px; }
.vtabs button:hover { color:var(--accent); }
.vtabs button.on { color:var(--accent); border-bottom-color:var(--accent); }
.ahead .lks { display:inline-flex; align-items:center; }
.ahead .gchip { border:0; cursor:pointer; font-family:inherit; }
/* the view: the athlete app's Races screen (ui 2.30), wider */
.rgv { padding:6px 16px 60px; }
.stage.shell .abody > .rgv { height:100%; overflow:auto; }
.rgv .rone { max-width:1080px; margin:0 auto; }
.rgv .loading, .rgv .rnone { color:var(--muted); font-size:13px; padding:12px 4px; }
.rgv .rnav { display:flex; align-items:center; gap:12px; padding:11px 16px; margin:10px 0 8px; background:#e2ecf6; border:1px solid #c4ccd4; border-radius:10px; flex-wrap:wrap; }
.rgv .mstep { flex:0 0 auto; min-width:62px; height:30px; display:inline-flex; align-items:center; justify-content:center; border:1px solid #b9cee3; background:#fff; color:var(--accent); border-radius:8px; padding:0 10px; font-size:12.5px; font-weight:700; line-height:1; white-space:nowrap; }
.rgv .mstep.now { margin-left:auto; }
.rgv .mstep[disabled] { opacity:.35; cursor:default; }
.rgv .mstep.dreamb { color:#0d5c3f; border-color:#a9d5be; }
.rgv .mstep.dreamb.on { background:#0d5c3f; color:#fff; border-color:#0d5c3f; opacity:1; }
.rgv .msel { width:160px; height:30px; padding:0 30px 0 12px; border:1px solid #b9cee3; border-radius:8px; font-family:inherit; font-size:12.5px; font-weight:700; color:var(--accent); }
.rgv .yr { display:flex; align-items:center; gap:8px; background:var(--accent); color:#fff; border-radius:8px; padding:9px 12px; margin:8px 0; }
.rgv .yr.dreams { background:#0d5c3f; }
.rgv .yr .y { flex:1; font-size:15px; font-weight:800; letter-spacing:.04em; }
.rgv .yr .n { font-size:11px; opacity:.85; }
.rgv .ynotes { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:0 0 14px; }
.rgv .note { border-radius:12px; padding:12px 14px; }
.rgv .note.mine { background:#e6f1f9; border:1.5px solid #006ebb; }
.rgv .note.coach { background:#e8f6ef; border:1.5px solid #57bb8a; }
.rgv .note .hd { display:flex; align-items:center; gap:8px; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; margin-bottom:5px; }
.rgv .note.mine .hd { color:#00548d; }
.rgv .note.coach .hd { color:#2f7c58; }
.rgv .note .bd { font-size:14px; white-space:pre-wrap; word-break:break-word; }
.rgv .note .bd .none { color:#7d93a6; }
.rgv .sees { font-size:11px; color:#4f7b65; margin-top:4px; }
/* Your comment and your thoughts: one line high, growing (Josh, 21 Oct) */
.rgv textarea.cbox, .rgv textarea.ybox { display:block; width:100%; min-height:34px; border:1.5px solid #b8d9c9; background:#f3faf6; border-radius:8px; padding:6px 9px; font-family:inherit; font-size:14px; line-height:1.4; color:var(--ink); resize:none; overflow:hidden; }
.rgv .note.coach textarea.ybox { background:#fff; }
.rgv textarea.cbox:focus, .rgv textarea.ybox:focus { outline:none; border-color:var(--good); background:#fff; }
.rgv textarea.cbox:disabled { opacity:.55; }
.rgv .ro { margin-left:auto; font-size:10.5px; font-weight:600; letter-spacing:0; text-transform:none; font-style:italic; color:#7d93a6; cursor:help; }
.rgv .ro::before { content:'🔒 '; font-style:normal; font-size:9px; opacity:.7; }
.rgv .lbl .ro, .rgv .flbl .ro { margin-left:8px; }
/* an entry: the app's race card */
.rgv .rc { background:#fff; border:1px solid #d8d8d3; border-radius:10px; margin-bottom:8px; overflow:hidden; }
.rgv .rc.tier { border-left:4px solid #f4e0ff; }
.rgv .rc.tier.tA { border-left-color:#ba36ff; }
.rgv .rc.tier.tB { border-left-color:#db97ff; }
.rgv .rc.open { background:#f2f7fd; border-color:#cfdcea; }
.rgv .rc.going { opacity:.5; }
.rgv .rc.flash { animation:flashov 6s ease-out both; }
.rgv .rhead { display:flex; align-items:stretch; }
.rgv .rhead[data-rg="toggle"] { cursor:pointer; }
.rgv .dblock { flex:0 0 58px; background:#e7effa; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:10px 0; line-height:1.1; }
.rgv .dblock .m { font-size:10px; font-weight:800; color:#2c5578; text-transform:uppercase; }
.rgv .dblock .d { font-size:19px; font-weight:800; color:#0b2c49; }
.rgv .dblock .raw { font-size:11px; font-weight:700; color:#2c5578; text-align:center; padding:0 4px; }
.rgv .dblock .star { font-size:20px; color:#0d5c3f; line-height:1; }
.rgv .rmain { flex:1; min-width:0; padding:9px 14px; display:flex; flex-direction:column; justify-content:center; gap:3px; }
.rgv .nmrow { display:flex; align-items:center; gap:8px; min-width:0; flex-wrap:wrap; }
.rgv .nmt { font-size:15px; font-weight:700; min-width:0; }
.rgv .metarow { display:flex; align-items:center; gap:6px; font-size:12.5px; color:#6b6b66; flex-wrap:wrap; }
.rgv .rside { display:flex; align-items:center; gap:10px; padding:0 14px; flex:0 0 auto; }
.rgv .caret { font-size:12px; color:#8a8a85; }
.rgv .rbadge { display:inline-block; font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; padding:2px 8px; border-radius:20px; background:#e7effa; color:#0b2c49; white-space:nowrap; }
.rgv .rbadge.race { background:#ece3f4; color:#4a2360; }
.rgv .rbadge.dream { background:#e8f4ee; color:#0d3d2e; }
.rgv .rbadge.tierA { background:#ba36ff; color:#fff; }
.rgv .rbadge.tierB { background:#db97ff; color:#3d0a57; }
.rgv .rbadge.tierC { background:#f4e0ff; color:#4a2360; }
.rgv .result { font-size:12px; font-weight:700; color:#0d5c3f; background:#e8f6ef; border:1px solid #b8d9c9; border-radius:20px; padding:1px 9px; white-space:nowrap; }
.rgv .otag { font-size:11px; font-weight:700; color:#5f7d97; background:#eef3f7; border-radius:20px; padding:1px 8px; cursor:help; }
.rgv .otag.you { color:#2f7c58; background:#e8f6ef; }
.rgv .onlog { font-size:12px; white-space:nowrap; }
.rgv .onlog.ok { color:var(--good); font-weight:700; }
.rgv .onlog.no { color:var(--warn); font-weight:700; }
.rgv .rmk { padding:0 14px 8px 72px; }
.rgv .rmk .smark { margin-top:2px; }
.rgv .note .rmk { padding:0; }
.rgv .rbody { display:grid; grid-template-columns:1fr 1fr 1.15fr; gap:14px; padding:4px 14px 10px 72px; align-items:start; }
.rgv .rq .lbl { display:flex; align-items:center; font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:#8a8a85; margin-bottom:3px; }
.rgv .rq.yours .lbl, .rgv .flbl.yours { color:#2f7c58; }
.rgv .rq .q { margin-top:0; white-space:pre-wrap; }
.rgv .qnone { color:#b0b7bd; font-size:13px; padding:4px 0; }
.rgv .rfoot { display:flex; align-items:center; gap:12px; padding:0 14px 12px 72px; }
.rgv .rlink { font-size:12.5px; font-weight:600; color:var(--link); }
/* the edit form: the app's layout */
.rgv .rform { padding:6px 14px 14px 72px; border-top:1px solid #e3eaf0; background:#f7fafc; }
.rgv .fwarn { background:var(--amb-bg); border:1px solid var(--amb-bd); color:var(--amb-ink); font-size:12.5px; font-weight:600; border-radius:8px; padding:6px 10px; margin:6px 0 10px; }
.rgv .fld { margin-bottom:10px; flex:1 1 0; min-width:0; }
.rgv .fld.off { opacity:.45; }
.rgv .flbl { font-size:13px; font-weight:600; margin-bottom:5px; display:flex; align-items:center; }
.rgv .ff { width:100%; border:1.5px solid #cfd9e1; border-radius:7px; padding:6px 9px; font-size:14px; font-family:inherit; background:#fff; color:var(--ink); }
.rgv select.ff { height:34px; }
.rgv .ff:focus { outline:none; border-color:var(--focus); box-shadow:0 0 0 3px rgba(17,119,209,.15); }
.rgv .fhint { font-size:11px; color:#8b98a3; margin-top:4px; }
.rgv .fpair { display:flex; gap:12px; }
.rgv .ferr { color:var(--warn); font-size:12.5px; font-weight:700; min-height:4px; }
.rgv .fbtns { display:flex; gap:8px; align-items:center; margin-top:4px; }
.rgv .fbtns .sp { flex:1; }
.abtn.danger { border-color:var(--bad); color:var(--bad); }
.abtn.danger.go { background:var(--bad); color:#fff; }
.modal .mtext { margin:0 0 4px; font-size:14px; }
/* the empty slot */
.rgv .addslot { display:flex; align-items:stretch; width:100%; padding:0; background:#fff; border:1.5px dashed #c2ccd4; border-radius:10px; text-align:left; overflow:hidden; margin:4px 0 8px; }
.rgv .addslot:hover { border-color:var(--accent); }
.rgv .dblock.add { background:#eef1f4; }
.rgv .dblock.add .plus { font-size:21px; color:var(--accent); line-height:1; }
.rgv .addslot .nmt { font-size:13.5px; font-weight:800; color:var(--accent); }
.rgv .addslot .meta { font-size:11px; color:#a8b4be; }
@media (max-width:940px) { .rgv .ynotes { grid-template-columns:1fr; } .rgv .rbody { grid-template-columns:1fr; padding-left:14px; } .rgv .rform, .rgv .rfoot, .rgv .rmk { padding-left:14px; } .rgv .fpair { flex-wrap:wrap; } }
/* Today's Races ahead: the names open the race */
.acard[data-card="races"] [data-rg="race"] { cursor:pointer; }
.acard[data-card="races"] .rnm:hover { text-decoration:underline; }

/* ======================= coach0.7beta (22 Oct): MM_Coach07_BuildSpec.md ======================= */
header.top .brand.tlink { cursor:pointer; }
header.top .brand.tlink:hover { text-decoration:underline; text-underline-offset:3px; }
header.top .brand { white-space:nowrap; }
/* B10 · the banner search (Josh's B: translucent) */
.hsrch { position:relative; display:inline-flex; align-items:center; margin-left:10px; height:30px; padding:0 8px; border-radius:8px; background:rgba(255,255,255,.13); border:1px solid rgba(255,255,255,.18); }
.hsrch:focus-within { background:rgba(255,255,255,.22); border-color:rgba(255,255,255,.45); }
.hsrch .hsg { color:rgba(255,255,255,.75); display:inline-flex; margin-right:6px; }
.hsrch input { border:0; outline:0; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:13.5px; width:150px; background:transparent; color:#fff; }
.hsrch input::placeholder { color:rgba(255,255,255,.7); }
.hsrch .hsl { position:absolute; top:34px; left:0; width:260px; background:#fff; border-radius:10px; box-shadow:0 10px 30px rgba(0,0,0,.25); padding:4px; z-index:90; }
.hsrch .hsr { display:flex; justify-content:space-between; gap:8px; padding:7px 9px; border-radius:7px; cursor:pointer; color:#14202b; font-size:13.5px; }
.hsrch .hsr span { color:#7b8a96; font-size:12px; }
.hsrch .hsr.on, .hsrch .hsr:hover { background:#eaf2fb; }
.hsrch .hsn { padding:8px 10px; color:#7b8a96; font-size:13px; }
.hsrch { cursor:text; }
/* Narrower screens: just the glass until you click it or press ⌥S; it opens over the banner. */
@media (max-width:1599px) {
  .hsrch { width:32px; padding:0; justify-content:center; }
  .hsrch .hsg { margin:0; }
  .hsrch input { width:0; padding:0; }
  .hsrch:focus-within, .hsrch.has { width:auto; padding:0 8px; margin-right:-176px; z-index:95; background:#24496f; }
  .hsrch:focus-within .hsg, .hsrch.has .hsg { margin-right:6px; }
  .hsrch:focus-within input, .hsrch.has input { width:150px; }
}
@media (max-width:1366px) { .demobar .lab { display:none; } }
/* A3 · flagged questions */
.acard .cardnote { margin-left:8px; font-size:11.5px; color:var(--muted); font-weight:600; }
.fwait { font-size:11.5px; font-weight:800; border-radius:10px; padding:1px 8px; margin-left:6px; }
.fwait.amb { background:#ffe6c7; color:#9a5300; }
.fwait.red { background:#fbdcdc; color:#a32020; }
/* B8 · reply in the card (the reply box of the Coaching view, in the card) */
.jbox.crbox { margin:8px 0 2px; border:1.5px solid #9cb7d6; border-radius:8px; background:#fff; padding:2px; }
.jbox.crbox.focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(31,61,99,.12); }
.jbox.crbox .jedit { min-height:44px; padding:6px 8px; font-size:13.5px; }
.crbox .crhint { font-size:11.5px; color:var(--muted); padding:2px 8px 4px; }
/* B9 · the sort */
.seg.mini.csort { display:inline-flex; margin-left:8px; border:1px solid #c9d5df; border-radius:7px; overflow:hidden; }
.seg.mini.csort button { border:0; background:#fff; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:11.5px; font-weight:700; color:#5b6b78; padding:2px 8px; cursor:pointer; }
.seg.mini.csort button.on { background:var(--accent); color:#fff; }
/* B15 · the ignore list */
.igbox { width:100%; box-sizing:border-box; border:1.5px solid var(--line); border-radius:8px; padding:6px 8px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:13px; margin:4px 0; }
.setnote { font-size:12px; color:var(--muted); margin:2px 0 4px; }
/* C18 · durations: grey when worked out; the reason at once */
.ecell.f-duration textarea::placeholder { color:rgba(0,0,0,.42); opacity:1; }
tr.dk .ecell.f-duration textarea::placeholder { color:rgba(255,255,255,.72); }
.ded input.min::placeholder { color:rgba(0,0,0,.42); opacity:1; }
[data-why] { cursor:help; }
.whytip { white-space:pre-line; position:fixed; z-index:130; max-width:280px; background:#16212b; color:#fff; font-size:12.5px; line-height:1.4; padding:7px 10px; border-radius:8px; box-shadow:0 6px 18px rgba(0,0,0,.25); pointer-events:none; }
table.cv td.wo.woed { cursor:pointer; }
table.cv td.wo.woed:hover { box-shadow:inset 0 0 0 2px rgba(31,61,99,.35); }
/* C21 · live week totals */
.wktot.ettot { flex-wrap:wrap; }
.ettot .tot4 { color:var(--muted); }
.ettot .tot4 b { color:#33475a; font-weight:700; }
.ettot .totmiss { font-weight:600; color:#a35b00; font-size:12px; }
.ettot .tsep { display:inline-block; width:1px; height:13px; background:#a9b8c6; margin:0 9px; vertical-align:-2px; }
.ettot .tcols { display:inline-flex; align-items:flex-end; gap:5px; height:28px; }
.ettot .tcols i { position:relative; width:12px; height:28px; display:inline-block; }
.ettot .tcols i u { position:absolute; bottom:0; left:0; right:0; border:1.5px solid #7d93a8; border-radius:2px; box-sizing:border-box; }
.ettot .tcols i s { position:absolute; bottom:0; left:3px; right:3px; background:#7d93a8; border-radius:1px; }
.ettot .tcols i.me u { border-color:var(--accent); } .ettot .tcols i.me s { background:var(--accent); }
.ettot .tcap { font-size:11px; color:var(--muted); margin-left:7px; }
/* E · Publish */
.pubband { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:8px 14px; font-size:13px; border-bottom:1px solid; }
.pubband i { color:#7a5a00; font-style:normal; }
.pubband .ptag { font-size:10.5px; font-weight:900; letter-spacing:.08em; border-radius:6px; padding:2px 7px; }
.pubband .sp { flex:1; }
.pubband.draft { background:#f3eefc; border-color:#cbb8ef; color:#3b2a63; }
.pubband.draft .ptag { background:#6b4fbb; color:#fff; }
.pubband.draft .pubgo { background:#6b4fbb; border-color:#6b4fbb; color:#fff; }
.pubband.draft .pubnext { border-color:#6b4fbb; color:#6b4fbb; }
.pubband.pub { background:#eef7f1; border-color:#bfe2cd; color:#1f4d33; }
.pubband.pub .ptag { background:#2e7d5b; color:#fff; }
.pubband a { font-size:12px; color:#2f6fd6; cursor:pointer; font-weight:700; }
.pubband .pubch { background:#fff6e6; border:1px solid #f0cf8f; color:#5c3d00; border-radius:8px; padding:2px 8px; }
.cvh .dtag { margin-left:8px; background:#6b4fbb; color:#fff; border-radius:6px; padding:1px 7px; font-size:10.5px; font-weight:900; letter-spacing:.08em; }
/* C16 · the Workout maker (mockup v15–v17, bands B, wide) */
.etools .abtn.mkon { background:var(--accent); color:#fff; }
.ewrap.mkwide .eside.mkmaker { width:560px; }
.eside.mkmaker { display:flex; flex-direction:column; padding:12px 16px 8px 0; overflow:hidden; }
.mkmaker .mkhd, .mkmaker .mkscroll, .mkmaker .mkfoot { background:#fff; border:1px solid var(--line); }
.mkmaker .mkhd { display:flex; gap:10px; align-items:flex-start; border-radius:12px 12px 0 0; padding:10px 12px; }
.mkmaker .mkhd > div { flex:1; }
.mkmaker .eh { font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
.mkmaker .mksub { font-size:13px; color:#33475a; margin-top:2px; }
.mkmaker .mkauto { margin-top:6px; font-size:12px; color:#1f5a3a; background:#e6f4ec; border-radius:8px; padding:5px 8px; }
.mkmaker .mkx { border:1px solid var(--line); background:#fff; border-radius:8px; width:30px; height:30px; cursor:pointer; font-weight:800; color:#33475a; }
.mkmaker .mkscroll { flex:1; overflow:auto; border-top:0; border-bottom:0; padding:4px 12px 10px; background:#f7f9fb; }
.mkmaker .mkfoot { border-radius:0 0 12px 12px; padding:10px 12px; border-top:2px solid var(--accent); max-height:46%; overflow:auto; }
.mkmaker .mkf { margin:9px 0; }
.mkmaker .fl { display:block; font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin-bottom:5px; }
.mkmaker .au { background:#e3f2ea; color:#2e7d5b; border-radius:8px; padding:0 6px; letter-spacing:0; text-transform:none; }
.mkmaker .cs { display:flex; flex-wrap:wrap; gap:5px; align-items:center; }
.mkmaker .mkc { font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12.5px; font-weight:700; min-height:28px; padding:3px 10px; border-radius:14px; border:1.5px solid #cfd9e2; background:#fff; color:#14202b; cursor:pointer; }
.mkmaker .mkc:hover { border-color:#7d93a8; }
.mkmaker .mkc.on { background:var(--accent); border-color:var(--accent); color:#fff; }
.mkmaker .mkc.sm { min-height:24px; padding:1px 8px; font-size:12px; }
.mkmaker .mkc.pre { border-color:var(--accent); }
.mkmaker .mkc.sv { border-style:dashed; }
.mkmaker .tc-fast:not(.on) { background:#f6b26b; border-color:transparent; } .mkmaker .tc-hills:not(.on) { background:#e8893c; border-color:transparent; }
.mkmaker .tc-cv:not(.on) { background:#f3c79a; border-color:transparent; } .mkmaker .tc-threshold:not(.on) { background:#f7dcbc; border-color:transparent; }
.mkmaker .tc-race:not(.on) { background:#d7c6ee; border-color:transparent; }
.mkmaker .seg { gap:0; border:1.5px solid var(--accent); border-radius:9px; overflow:hidden; display:inline-flex; }
.mkmaker .seg .mkc { border:0; border-radius:0; border-right:1.5px solid var(--accent); }
.mkmaker .seg .mkc:last-child { border-right:0; }
.mkmaker .mkblk { background:#fff; border:1px solid var(--line); border-left:6px solid #f6b26b; border-radius:10px; padding:8px 10px 2px; margin:10px 0; }
.mkmaker .mkblk.t-hills { border-left-color:#e8893c; } .mkmaker .mkblk.t-cv { border-left-color:#f3c79a; } .mkmaker .mkblk.t-threshold { border-left-color:#d9a86a; } .mkmaker .mkblk.t-race { border-left-color:#9b7fc9; }
.mkmaker .mkbh { display:flex; align-items:center; gap:5px; }
.mkmaker .mkbh .eb { font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:#33475a; white-space:nowrap; }
.mkmaker .mkbh .bm { flex:1; min-width:0; font-size:12px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mkmaker .mkbh button { border:1px solid var(--line); background:#fff; border-radius:7px; width:26px; height:26px; cursor:pointer; font-weight:800; color:#33475a; }
.mkmaker .mkbh button:disabled { opacity:.35; cursor:default; }
.mkmaker .mkst { display:inline-flex; align-items:center; gap:3px; margin-right:6px; }
.mkmaker .mkst .lbl { font-weight:800; font-size:12.5px; margin-right:3px; color:#14202b; }
.mkmaker .mkst button { width:26px; height:26px; border:1.5px solid var(--accent); background:#fff; border-radius:7px; font-weight:900; color:var(--accent); cursor:pointer; }
.mkmaker .mkst input { width:40px; height:26px; text-align:center; border:1.5px solid var(--line); border-radius:7px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-weight:700; }
.mkmaker .mkst .u, .mkmaker .hi { font-size:12px; color:var(--muted); }
.mkmaker .wucd { display:flex; flex-wrap:wrap; gap:6px 12px; align-items:center; }
.mkmaker .mkdef { font-size:11.5px; color:#2e7d5b; }
.mkmaker .cu { width:62px; height:28px; border:1.5px dashed #cfd9e2; border-radius:14px; padding:0 8px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12.5px; }
.mkmaker .li { width:150px; height:28px; border:1.5px solid #cfd9e2; border-radius:7px; padding:0 8px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-weight:700; }
.mkmaker .mklk { border:0; background:none; color:#2f6fd6; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12.5px; font-weight:700; cursor:pointer; }
.mkmaker .tg { display:inline-flex; gap:5px; align-items:center; font-size:12.5px; font-weight:700; margin-right:6px; }
.mkmaker .mkdel { border:0; background:none; color:var(--muted); cursor:pointer; margin-left:-4px; font-size:15px; }
.mkmaker .mkadd { width:100%; min-height:36px; border:2px dashed #7d93a8; background:#fff; border-radius:10px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-weight:800; color:#33475a; cursor:pointer; }
.mkmaker .mkpv { margin:5px 0 6px; background:#f6b26b; border-radius:8px; padding:8px 10px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:13px; line-height:1.45; white-space:pre-wrap; }
.mkmaker .mkro { display:flex; gap:14px; font-size:12.5px; color:var(--muted); margin-bottom:8px; }
.mkmaker .mkro b { color:#14202b; font-size:16px; }
.mkmaker .mkact { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.mkmaker .mkact kbd { font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:10.5px; border:1px solid rgba(255,255,255,.6); border-radius:4px; padding:0 4px; margin-left:3px; }
.mkmaker .mksv { display:inline-flex; gap:5px; margin-left:auto; }
.mkmaker .mksv input { height:32px; border:1.5px solid var(--line); border-radius:8px; padding:0 8px; width:150px; font-family:inherit; font-size:inherit; font-weight:inherit; line-height:inherit; font-size:12.5px; }
.mkmaker .mknote { font-size:11.5px; color:var(--muted); margin-top:7px; line-height:1.4; }
.mkmaker .mknote b { color:#1f5a3a; }
.mkmaker .mkwarn { background:#fbe5e5; color:#8f2a2a; border-radius:8px; padding:7px 9px; font-weight:700; font-size:12.5px; }
.mkmaker.narrow .mksv { margin-left:0; } .mkmaker.narrow .mksv input { width:120px; }
/* the Maker */
.mkmaker .mkfor { display:inline-block; background:#e1edfa; color:#173a63; border:1px solid #bcd3ee; border-radius:8px; padding:2px 9px; margin-right:6px; font-weight:600; }
.mkmaker .mkfor b { color:#0f2d52; }
.mkmaker .mklk { white-space:nowrap; flex:none; font-size:12px; padding:2px 5px; line-height:1.2; border-radius:6px; }
.mkmaker .mklk:hover { background:#eaf2fb; }
.mkmaker .mklks { display:inline-flex; gap:8px; flex:none; margin-left:4px; }
.mkmaker .fl .mklk { font-size:11.5px; letter-spacing:0; text-transform:none; vertical-align:1px; }
.mkmaker .brk { flex-basis:100%; height:0; }
/* telling the rows apart (A: by role) */
.mkmaker.c-role .r-work .fl::before, .mkmaker.c-bands .r-work .fl::before, .mkmaker.c-role .r-rec .fl::before, .mkmaker.c-bands .r-rec .fl::before,
.mkmaker.c-role .r-sets .fl::before, .mkmaker.c-bands .r-sets .fl::before, .mkmaker.c-role .r-count .fl::before, .mkmaker.c-bands .r-count .fl::before { content:''; display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; vertical-align:0; }
.mkmaker .r-work .fl::before { background:#e8893c; }
.mkmaker .r-rec .fl::before { background:#2e9a62; }
.mkmaker .r-count .fl::before, .mkmaker .r-sets .fl::before { background:var(--accent); }
.mkmaker:not(.c-navy) .r-work .mkc:not(.on) { border-color:#ecd2b4; }
.mkmaker:not(.c-navy) .r-rec .mkc:not(.on), .mkmaker:not(.c-navy) .mkc.rest:not(.on) { border-color:#bfe2cd; }
.mkmaker:not(.c-navy) .mkblk .r-work .mkc.on { background:#f6b26b; border-color:#b86a1e; color:#3a2205; }
.mkmaker:not(.c-navy) .mkblk.t-hills .r-work .mkc.on { background:#e8893c; border-color:#9c4f12; color:#2e1603; }
.mkmaker:not(.c-navy) .mkblk.t-cv .r-work .mkc.on { background:#f3c79a; border-color:#b07a3e; color:#3a2205; }
.mkmaker:not(.c-navy) .mkblk.t-threshold .r-work .mkc.on { background:#f2d2ac; border-color:#a8733a; color:#3a2205; }
.mkmaker:not(.c-navy) .mkblk.t-race .r-work .mkc.on { background:#d7c6ee; border-color:#7b5bb3; color:#2a1650; }
.mkmaker:not(.c-navy) .r-rec .mkc.on, .mkmaker:not(.c-navy) .mkc.rest.on { background:#cdebd9; border-color:#2e7d5b; color:#123d27; }
.mkmaker:not(.c-navy) .r-rec .seg { border-color:#2e7d5b; }
.mkmaker:not(.c-navy) .r-rec .seg .mkc { border-right-color:#2e7d5b; border-color:transparent #2e7d5b transparent transparent; }
.mkmaker:not(.c-navy) .r-rec .seg .mkc:last-child { border-right-color:transparent; }
.mkmaker:not(.c-navy) .r-rec .seg .mkc.on { background:#2e7d5b; color:#fff; }
/* B: plus bands */
.mkmaker.c-bands .r-count, .mkmaker.c-bands .r-work { background:rgba(246,178,107,.12); }
.mkmaker.c-bands .r-rec, .mkmaker.c-bands .r-sets { background:rgba(46,125,91,.08); }
.mkmaker.c-bands .mkf.r-count, .mkmaker.c-bands .mkf.r-work, .mkmaker.c-bands .mkf.r-rec, .mkmaker.c-bands .mkf.r-sets { margin:0 -10px; padding:7px 10px; }
.mkmaker.c-bands .mkf.r-shape { margin-bottom:6px; }
/* the wide Maker: Description keeps its room, Pacing and Strength narrow */
.ewrap.mkwide table.et col:nth-child(5), .ewrap.mkwide table.et col:nth-child(6) { width:130px !important; }
.ewrap.mkwide table.et col:nth-child(2) { width:118px !important; }
.ewrap.mkwide .cvcard { min-width:0; }
/* v17 · reps and sets in blue, tint included (Josh) */
.mkmaker .r-count .fl::before, .mkmaker .r-sets .fl::before { background:#2f6fd6; }
.mkmaker:not(.c-navy) .r-count .mkc:not(.on), .mkmaker:not(.c-navy) .r-sets .mkc:not(.on):not(.rest) { border-color:#c3d7f1; }
.mkmaker:not(.c-navy) .r-count .mkc.on, .mkmaker:not(.c-navy) .r-sets .mkc.on:not(.rest) { background:#d9e7f9; border-color:#2f6fd6; color:#123a6b; }
.mkmaker:not(.c-navy) .r-count .mkst button, .mkmaker:not(.c-navy) .r-sets .mkst button { border-color:#2f6fd6; color:#2f6fd6; background:#f2f7fd; }
.mkmaker:not(.c-navy) .r-count .mkst input, .mkmaker:not(.c-navy) .r-sets .mkst input { border-color:#c3d7f1; }
.mkmaker.c-bands .mkf.r-count, .mkmaker.c-bands .mkf.r-sets { background:rgba(47,111,214,.07); }
.mkmaker.c-bands .mkf.r-work { background:rgba(246,178,107,.12); }
.mkmaker.c-bands .mkf.r-rec { background:rgba(46,125,91,.08); }
.mkmaker .mkfoot .abtn.go { background:var(--accent); color:#fff; }
.etools .abtn.on.mkon { background:var(--accent); color:#fff; border-color:var(--accent); }

/* ===================== coach0.8beta ===================== */
/* D113 · the Type cell's list */
table.et .f-type .tlb { position:absolute; right:4px; top:6px; z-index:4; display:none; width:20px; height:20px; padding:0; border:0; border-radius:5px; background:rgba(255,255,255,.8); color:#3a4a56; font-size:11px; line-height:20px; cursor:pointer; }
table.et tr:hover .f-type .tlb, table.et .f-type:focus-within .tlb { display:block; }
table.et .f-type .ec { padding-right:26px; }
.typelist { position:fixed; z-index:140; background:#fff; border:1px solid #d6dee4; border-radius:9px; box-shadow:0 10px 26px rgba(0,0,0,.18); padding:4px; max-height:300px; overflow:auto; font-size:13px; }
.typelist .tli { display:flex; align-items:center; gap:8px; padding:5px 9px; border-radius:6px; cursor:pointer; white-space:nowrap; }
.typelist .tli.on, .typelist .tli:hover { background:#eef4f9; }
.typelist .sw { width:14px; height:14px; border-radius:3px; border:1px solid rgba(0,0,0,.12); flex:none; }
/* D97 · the athlete's Settings: Active link, Taking a break */
.setrow.wide { align-items:center; gap:14px; }
.setrow.wide > .k { flex:1; min-width:0; }
.setsub { font-size:11.5px; color:var(--muted); font-weight:400; margin-top:2px; line-height:1.35; }
.setsub.inl { display:inline; }
.setconf { background:#fbf1f1; border:1px solid #efc9c9; border-radius:8px; padding:9px 11px; margin:4px 0 8px; font-size:13px; line-height:1.4; }
.setconf .setcb { margin-top:7px; display:flex; gap:6px; justify-content:flex-end; }
.seterr { color:var(--bad, #a33a3a); font-size:12.5px; margin:4px 0; }
.abtn.red { background:#a33a3a; color:#fff; border-color:#a33a3a; }
.tog { display:inline-flex; align-items:center; gap:7px; flex:none; border:1px solid var(--line, #dfe5ea); background:#fff; border-radius:999px; padding:3px 10px 3px 4px; font-family:inherit; font-size:12.5px; font-weight:700; color:#5f6f7b; cursor:pointer; }
.tog i { width:30px; height:17px; border-radius:999px; background:#cfd8df; position:relative; transition:background .15s; }
.tog i::after { content:''; position:absolute; left:2px; top:2px; width:13px; height:13px; border-radius:50%; background:#fff; transition:left .15s; }
.tog.on { color:#0b3a5c; }
.tog.on i { background:#0b4f7c; }
.tog.on i::after { left:15px; }
.tog[disabled] { opacity:.55; cursor:default; }
.atag { display:inline-block; font-size:11.5px; font-weight:700; border-radius:999px; padding:2px 9px; margin-left:8px; vertical-align:middle; white-space:nowrap; }
.atag.brk { background:#e8f1fb; color:#2f5f8f; }
.atag.off { background:#f3e1e1; color:#8a2c2c; }
.atag.fast { background:#eef2f5; color:#5f6f7b; font-weight:600; }
/* D98 · the roster's lists */
.chip.brk { background:#e8f1fb; color:#2f5f8f; }
.chip.pz { background:#eef2f5; color:#6f7d88; }
.rtools .rwhy { font-size:12px; color:var(--muted); white-space:nowrap; }
.hsr.pz b { color:#8b98a3; }
.hsr .chip { margin-left:6px; font-size:10.5px; }
/* D101 · D107 */
.rfp { font-size:13px; color:#5f6f7b; display:inline-flex; align-items:center; gap:7px; white-space:nowrap; }
.rfp.done { color:#2d6a3e; font-weight:700; }
.rfp.bad { color:#a33a3a; }
.rfp .spin { width:12px; height:12px; border:2px solid #cfd8df; border-top-color:#0b4f7c; border-radius:50%; animation:spin8 .8s linear infinite; }
@keyframes spin8 { to { transform:rotate(360deg); } }
.setsub.warnt { color:#8a6d00; }
/* D102 · What's written */
.wtab { width:100%; border-collapse:collapse; font-size:13px; margin:2px 0 8px; }
.wtab td { padding:5px 6px; border-bottom:1px solid #eef2f5; vertical-align:top; }
.wtab td.wn { width:44px; color:#5f6f7b; font-weight:700; text-align:right; white-space:nowrap; }
.wtab .wex { font-size:11.5px; color:var(--muted); margin-top:1px; }
.wnone { font-size:13px; color:var(--muted); margin:4px 0 8px; }
/* D106 · several runs a day */
table.cv td.tm .nruns { font-size:10.5px; font-weight:700; color:#5f6f7b; margin-top:2px; }
.runs { margin:8px 0 2px; border:1px solid #e3e8ec; border-radius:9px; overflow:hidden; }
.runs .runsh { font-size:10.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:#5f6f7b; padding:5px 10px; background:#f6f8fa; border-bottom:1px solid #e3e8ec; }
.runs .runr { display:grid; grid-template-columns:76px 70px 1fr 56px 58px 60px; align-items:center; gap:6px; padding:6px 10px; font-size:13px; border-top:1px solid #eef2f5; }
.runs .runr:nth-child(2) { border-top:0; }
.runs .rtod, .runs .rsf { color:#5f6f7b; }
.runs .rn { text-align:right; }
.runs small { color:var(--muted); margin-left:1px; }
.runs .rlab { display:inline-block; font-size:11px; font-weight:800; border-radius:999px; padding:2px 8px; background:#fff2cc; color:#5a4500; text-align:center; }
.runs .rlab.l-race { background:#c27ba0; color:#fff; } .runs .rlab.l-workout { background:#f6b26b; color:#3a2200; }
.runs .rlab.l-shuffle { background:#fffee7; color:#6b6400; border:1px solid #ece7a6; }
.rnotes > div { margin-bottom:3px; }
/* D111 · the System card */
.sysc .nm.plain { cursor:default; }
.sysc .ftag.ovt { background:#fdf0d5; color:#7a5600; }
.sysc .cmp { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:8px 0 4px; }
.sysc .cmp > div { background:#fff; border:1px solid #e3e8ec; border-radius:8px; padding:7px 9px; }
.sysc .cmph { font-size:10.5px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:#5f6f7b; margin-bottom:4px; }
.sysc .cmph span { text-transform:none; letter-spacing:0; font-weight:500; color:var(--muted); margin-left:4px; }
.sysc .cmpv { font-size:13px; line-height:1.45; white-space:pre-wrap; word-break:break-word; }
.sysc mark.a { background:#fde2e2; color:#7a1f1f; border-radius:3px; padding:0 2px; }
.sysc mark.b { background:#dff2e3; color:#1f5a2e; border-radius:3px; padding:0 2px; }
.sysline { text-align:center; font-size:12.5px; color:#8b98a3; margin:14px 0 2px; }
/* D110 · Put on log */
.abtn.putlog { padding:2px 8px; font-size:11.5px; margin-left:4px; }
.putmk { font-size:11.5px; color:var(--muted); margin-left:4px; }

/* ======================= coach1.0 (27 Oct): MM_Coach10_BuildSpec.md v1.2; lifted from mockup v21 (its v20 block). Renamed so nothing
   older changes: the switch .sw → .tsw, .fld → .afld, .menu → .pmenu, .ph → .phn. ======================= */
/* Header: Settings sits beside the tabs (admin) */
header.top .hbtn2 { border:1px solid rgba(255,255,255,.35); background:rgba(255,255,255,.08); color:#fff; border-radius:8px; padding:5px 10px; font-size:12.5px; font-weight:700; font-family:inherit; }

/* Small shared bits */
.tsw { position:relative; display:inline-block; width:34px; height:19px; flex:none; vertical-align:middle; }
.tsw input { opacity:0; width:0; height:0; position:absolute; }
.tsw i { position:absolute; inset:0; background:#c6d1da; border-radius:20px; transition:background .15s; cursor:pointer; }
.tsw i::after { content:''; position:absolute; left:2px; top:2px; width:15px; height:15px; background:#fff; border-radius:50%; transition:transform .15s; box-shadow:0 1px 2px rgba(0,0,0,.2); }
.tsw input:checked + i { background:var(--good); }
.tsw input:checked + i::after { transform:translateX(15px); }
.tsw input:disabled + i { opacity:.5; cursor:not-allowed; }
.afld { display:flex; align-items:center; gap:10px; padding:7px 0; border-bottom:1px solid #eef2f5; font-size:13px; position:relative; }
.afld:last-child { border-bottom:0; }
.afld > label, .afld > .k { flex:0 0 150px; font-weight:700; color:#33546f; font-size:12.5px; }
.afld input[type=text], .afld input[type=email], .afld input[type=tel], .afld input[type=date], .afld input[type=url], .afld select, .afld textarea {
  flex:1; min-width:0; font-family:inherit; font-size:13px; border:1.5px solid var(--line); border-radius:7px; padding:5px 8px; background:#fff; color:var(--ink); }
.afld input:focus, .afld select:focus, .afld textarea:focus { outline:0; border-color:var(--focus); }
.afld .aux { font-size:11.5px; color:var(--muted); white-space:nowrap; }
.wto { font-size:9.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; border-radius:6px; padding:1px 5px; white-space:nowrap; }
.wto.cs { background:#e8f4ee; color:#0d3d2e; } .wto.d1 { background:#eef2f5; color:#5d7183; } .wto.lg { background:#fff6e0; color:#5a3d00; }
.lock { font-size:12px; font-weight:700; color:#5d7183; background:#eef2f5; border-radius:7px; padding:3px 9px; }
.sect { background:#fff; border:1px solid var(--line); border-radius:12px; margin-bottom:14px; }
.sect > h3 { margin:0; padding:10px 14px; font-size:13px; font-weight:800; color:var(--accent); border-bottom:1px solid var(--line); display:flex; align-items:center; gap:8px; }
.sect > h3 .sub { font-size:11.5px; color:var(--muted); font-weight:600; }
.sect > .in { padding:4px 14px 8px; }
.atab { padding:16px; overflow:auto; height:100%; }
.atab.stack .acols { max-width:820px; margin:0 auto; }
.atab.two .acols { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:14px; align-items:start; max-width:1400px; margin:0 auto; }
.mini2 { font-size:12px; border:1px solid #c2ccd4; background:#fff; color:#33546f; border-radius:6px; padding:2px 8px; font-weight:700; font-family:inherit; }

/* D121 · the Saved pill: over the box's top-right corner, its own background; layout unchanged */
.pillhost { position:relative; }
.savedpill { position:absolute; top:-8px; right:6px; z-index:3; background:#fff; color:var(--good); border:1px solid #b8d9c9; border-radius:10px; padding:0 7px; font-size:10.5px; font-weight:800; line-height:16px; box-shadow:0 2px 6px rgba(0,0,0,.12); pointer-events:none; transition:opacity .4s; }
.savedpill.out { opacity:0; }

/* D126 · a tip with its × */
.tipnote { display:flex; align-items:flex-start; gap:8px; background:#f6f9fc; border:1px solid #b9cee3; border-radius:8px; padding:6px 10px; font-size:12.5px; color:#33546f; margin:0 0 10px; }
.tipnote .x { margin-left:auto; border:0; background:none; color:#5d7183; font-size:16px; line-height:1; padding:0 2px; }

/* D127 / D158 · the sheet icon, greyed icons, the paste field */
.lk.sh { background:#0f9d58; }
.lk.off { background:#dfe6ec; color:#9aa8b4; }
.lk { cursor:pointer; }
.lkpop { position:fixed; z-index:120; background:#fff; border:1.5px solid #b9cee3; border-radius:10px; padding:8px; box-shadow:0 8px 24px rgba(0,0,0,.18); width:300px; font-size:12px; }
.lkpop b { color:var(--accent); }
.lkpop input { width:100%; box-sizing:border-box; font-family:inherit; font-size:13px; border:1.5px solid var(--focus); border-radius:7px; padding:5px 8px; margin-top:5px; }
.lkpop .h { color:var(--muted); margin-top:4px; }

/* D133 · the races-before pop-over; D157 · With you */
.rpop { position:fixed; z-index:120; background:#fff; border:1.5px solid #cdb8e4; border-radius:10px; padding:8px 10px; box-shadow:0 8px 24px rgba(0,0,0,.18); font-size:12.5px; min-width:290px; }
.rpop .rt { font-weight:800; color:#4a2360; margin-bottom:4px; font-size:12px; }
.rpop .rr { display:flex; gap:8px; padding:3px 0; border-top:1px solid #f1ecf6; }
.rpop .rr .d { flex:0 0 70px; color:var(--muted); }
.rpop .rr .n { flex:1; font-weight:700; }
.withyou { display:inline-block; font-size:11px; font-weight:700; line-height:16px; color:#0d3d2e; background:#d3eadf; border-radius:20px; padding:2px 8px; white-space:nowrap; }
.ahead .gchip { font-size:11px; line-height:16px; padding:2px 8px; border:0; }
.flagv { color:var(--warn); cursor:pointer; text-decoration:underline dotted; }
.lkadd { width:22px; height:22px; border-radius:5px; border:1px dashed #9aa8b4; background:#fff; color:#5d7183; font-size:13px; font-weight:800; line-height:1; padding:0; visibility:hidden; vertical-align:top; }
tr:hover .lkadd, .lks:hover .lkadd, .lkadd:focus { visibility:visible; }
.mini2.on { background:var(--accent); color:#fff; border-color:var(--accent); }
.tlsw { margin-left:auto; display:inline-flex; gap:6px; align-items:center; font-size:12px; font-weight:700; color:#33546f; }
.tourl { margin-left:6px; }
.lbprev { background:#fff; border:1px solid #d3e7dc; border-radius:8px; padding:8px 10px; font-size:13px; line-height:1.6; margin-top:8px; }

/* Today: Recently logged (D132), System rows (D135), quiet lines (D134, D157) */
.acard.rl { container-type:inline-size; }
.rlrow { display:flex; align-items:center; gap:7px; padding:6px 12px; border-bottom:1px solid #eef2f5; border-left:4px solid #c2ccd4; font-size:13px; white-space:nowrap; }
.rlrow:last-child { border-bottom:0; }
.rlrow .nm { font-weight:800; color:var(--accent); cursor:pointer; overflow:hidden; text-overflow:ellipsis; }
.rlrow .cnt { font-size:10.5px; font-weight:800; background:#e2ecf6; color:var(--accent); border-radius:9px; padding:0 6px; line-height:16px; }
.rlrow .ff { font-size:10px; font-weight:800; background:var(--amb-bg); color:var(--amb-ink); border:1px solid var(--amb-bd); border-radius:8px; padding:0 5px; line-height:14px; }
.rlrow .sp { flex:1; }
.rlrow .sd { font-size:11.5px; color:var(--muted); visibility:hidden; }
.rlrow:hover .sd { visibility:visible; }
.rlrow .sd a, .rlrow a.ol { cursor:pointer; color:var(--link); text-decoration:underline; }
.rlrow .olb { border:1.5px solid var(--accent); background:#fff; color:var(--accent); border-radius:7px; padding:1px 9px; font-size:12px; font-weight:700; line-height:18px; }
.rlrow a.ol { display:none; font-size:12.5px; font-weight:700; }
@container (max-width:340px) { .rlrow .olb { display:none; } .rlrow a.ol { display:inline; } .rlrow .sd { display:none; } }
.qline { font-size:12.5px; color:#33546f; background:#fff; border:1px solid var(--line); border-radius:8px; padding:6px 10px; margin:0 0 10px; display:flex; gap:8px; align-items:center; }
.qline .ic { font-size:14px; }
.qline [data-why] { text-decoration:underline dotted; }
.sysrow { display:flex; gap:8px; padding:6px 12px; border-bottom:1px solid #eef2f5; font-size:12.5px; align-items:baseline; }
.sysrow .k { flex:0 0 150px; font-weight:800; color:#33546f; }
.sysrow .v { flex:1; }
.sysrow.bad { border-left:4px solid var(--warn); background:var(--red-bg); }
.sysrow.amb { border-left:4px solid var(--amb-bd); background:var(--amb-bg); }
.sysrow .cw { font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:#5d7183; background:#eef2f5; border-radius:6px; padding:0 5px; }
.sysq { font-size:11.5px; color:var(--muted); padding:6px 12px; }
.afoot a { cursor:pointer; color:var(--link); text-decoration:underline; }

/* Coaching view: empty days (D130), custom columns (D136), handles everywhere (D137) */
table.cv tr.thin td { padding:2px 8px; height:22px; background:#fafbfc; color:#7b8a96; font-size:11.5px; }
table.cv tr.thin td.dc b { display:inline; font-size:11.5px; font-weight:700; }
table.cv tr.thin .tw { cursor:pointer; color:var(--link); }
table.cv tr.thin .tw:hover { text-decoration:underline; }
table.cv td.num { text-align:right; }
table.cv td.txt { white-space:pre-wrap; word-break:break-word; }
table.cv th .rz { display:block; }
table.cv th.cust { color:#4a2a6e; }
.cvh .cnote { color:#4a2a6e; font-weight:700; margin-left:10px; }
.outl { position:relative; }
.outl::after { content:'70h?'; position:absolute; top:-15px; left:50%; transform:translateX(-50%); font-size:9.5px; font-weight:800; color:var(--warn); white-space:nowrap; font-style:normal; }
.ettot .tcols i.cap u { border-color:var(--warn); border-style:dashed; border-top:0; }
.ettot .tcols i.cap s { background:repeating-linear-gradient(180deg,var(--warn) 0 3px,transparent 3px 5px); }

/* Day details (D136, D140) */
.ddrow { display:flex; align-items:baseline; gap:10px; padding:5px 0; border-bottom:1px solid #eef2f5; font-size:13px; position:relative; }
.ddrow .k { flex:0 0 160px; font-weight:700; color:#33546f; font-size:12.5px; }
.ddrow .k .cu { font-size:9.5px; font-weight:800; color:#4a2a6e; background:#f3eefa; border-radius:6px; padding:0 4px; margin-left:4px; text-transform:uppercase; }
.ddrow .v { flex:1; white-space:pre-wrap; }
.ddrow .cor { visibility:hidden; font-size:11.5px; border:1px solid #c2ccd4; background:#fff; color:#33546f; border-radius:6px; padding:0 7px; font-weight:700; font-family:inherit; }
.ddrow:hover .cor, .ddrow .cor:focus { visibility:visible; }
.ddrow .was { font-size:11px; font-weight:800; color:var(--good); background:#e8f4ee; border-radius:8px; padding:0 6px; }
.corform { display:flex; gap:6px; align-items:center; margin:4px 0 6px 170px; font-size:12.5px; background:#f6f9fc; border:1px solid #b9cee3; border-radius:8px; padding:6px 8px; }
.corform input { width:90px; font-family:inherit; font-size:13px; border:1.5px solid var(--focus); border-radius:6px; padding:3px 6px; }
.corform .old { color:var(--warn); font-weight:800; text-decoration:line-through; }

/* Edit training (only what v20 needs) */
.pmenu { position:fixed; z-index:120; background:#fff; border:1.5px solid #b9cee3; border-radius:10px; box-shadow:0 10px 30px rgba(0,0,0,.2); padding:4px; min-width:260px; font-size:13px; }
.pmenu .mh { font-size:10px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); padding:6px 9px 2px; }
.pmenu .mi { padding:6px 9px; border-radius:7px; cursor:pointer; display:flex; gap:8px; }
.pmenu .mi:hover, .pmenu .mi.on { background:#eaf2fb; }
.pmenu .mi .s { color:var(--muted); font-size:12px; margin-left:auto; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:220px; }
.pmenu .mf { font-size:11.5px; color:var(--muted); padding:4px 9px 6px; border-top:1px solid #eef2f5; margin-top:3px; }
.rich b.pr { font-weight:800; }
.rich a { color:var(--link); text-decoration:underline; }
.rich .rt { font-weight:800; }
.prevrow { display:flex; gap:10px; padding:6px 0; border-bottom:1px solid #eef2f5; font-size:12.5px; }
.prevrow .d { flex:0 0 46px; font-weight:800; color:var(--accent); }
.prevrow .v { flex:1; }
.prevrow.skip { color:#9aa8b4; }
.prevrow.skip .d { color:#9aa8b4; }
.prevrow .why { font-size:11.5px; font-style:italic; }

/* Part 8 · the Strength tab */
.stv { padding:12px 16px; overflow:auto; height:100%; }
.stbar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:10px; font-size:12.5px; color:var(--muted); }
.stgrid { display:grid; gap:12px; grid-template-columns:repeat(4,minmax(0,1fr)); align-items:start; }
.stgrid.mob { margin-top:12px; }
.sblk { background:#fff; border:3px solid #ccc; border-radius:6px; }
.sblk .bt { text-align:center; font-weight:800; font-size:15px; padding:8px 8px 0; color:#14202b; }
.sblk .bt .lockt { font-size:10px; color:#9aa8b4; font-weight:700; margin-left:4px; }
.sblk .sub { display:block; margin:2px auto 6px; width:80%; text-align:center; font-style:italic; font-size:13px; border:1px dashed transparent; border-radius:5px; padding:2px 4px; font-family:inherit; background:transparent; color:#14202b; }
.sblk .sub:hover { border-color:#c2ccd4; } .sblk .sub:focus { outline:0; border:1px solid var(--focus); background:#fff; }
.sblk table { width:100%; border-collapse:collapse; font-size:13px; table-layout:fixed; }
.sblk th { font-size:12.5px; font-weight:800; padding:2px 4px; border-bottom:1.5px solid var(--bcol,#ccc); color:#14202b; }
.sblk th.exh { text-align:left; padding-left:4px; }
.sblk thead th { border-bottom:2px solid var(--bcol,#ccc); }
.sblk td { padding:3px 4px; vertical-align:top; }
.sblk tr.r:hover td { background:#f6f9fc; }
.sblk tr.r.drag td { background:#e2ecf6; }
.sblk .hd { width:16px; cursor:grab; color:#b4c2ce; font-size:12px; user-select:none; text-align:center; }
.sblk tr.r:hover .hd { color:#5d7183; }
.sblk .ex { outline:0; min-height:19px; border:1px solid transparent; border-radius:4px; padding:1px 3px; line-height:1.4; }
.sblk .ex:focus, .sblk input.rp:focus { border-color:var(--focus); background:#fff; }
.sblk .ex a { color:#1155cc; text-decoration:underline; }
.sblk input.rp { width:100%; box-sizing:border-box; border:1px solid transparent; border-radius:4px; background:transparent; font-family:inherit; font-size:13px; text-align:center; padding:1px 2px; }
.sblk input.rp:hover { border-color:#dfe6ec; }
.sblk .rm { width:18px; text-align:center; }
.sblk .rm button { border:0; background:none; color:#c2ccd4; font-size:14px; padding:0; visibility:hidden; }
.sblk tr.r:hover .rm button { visibility:visible; } .sblk .rm button:hover { color:var(--warn); }
.sblk tr.dash td { border-top:1.5px dashed #555; padding:0; height:4px; }
.sblk .add { font-size:11.5px; padding:2px 4px 4px 28px; }
.sblk .add a { color:var(--link); cursor:pointer; text-decoration:underline; }
.sblk .add .cap { color:var(--muted); margin-left:6px; }
.sblk .full { font-size:11.5px; color:var(--amb-ink); background:var(--amb-bg); border:1px solid var(--amb-bd); border-radius:6px; padding:3px 7px; margin:2px 6px 4px 28px; }
.sblk .notes { display:block; width:calc(100% - 16px); margin:8px; box-sizing:border-box; border:1px dashed transparent; border-radius:5px; font-family:inherit; font-size:13px; font-style:italic; text-align:center; resize:vertical; min-height:58px; padding:4px; background:transparent; color:#14202b; }
.sblk .notes:hover { border-color:#c2ccd4; } .sblk .notes:focus { outline:0; border:1px solid var(--focus); background:#fff; }
.sblk .bf { display:flex; gap:6px; align-items:center; border-top:1px solid #eef2f5; padding:5px 8px; font-size:11.5px; color:var(--muted); }
.sblk .bf .sp { flex:1; }
.sblk .bf .ok { color:var(--good); font-weight:700; }
.sblk .held { margin:6px 8px; font-size:12px; background:var(--amb-bg); border:1px solid var(--amb-bd); color:var(--amb-ink); border-radius:7px; padding:6px 8px; }
.sblk .empty1 { font-size:12.5px; color:var(--muted); text-align:center; padding:14px 10px; }
.sblk .empty1 a { color:#1155cc; }
.defbox { margin-top:12px; background:#fff; border:1px solid #9aa8b4; padding:6px 10px; font-size:12.5px; color:#5d7183; }
.defbox i { color:#33414e; }
.stsplit { display:grid; grid-template-columns:220px minmax(0,1fr); gap:14px; align-items:start; }
.stlist { background:#fff; border:1px solid var(--line); border-radius:10px; padding:4px; }
.stlist .it { display:flex; align-items:center; gap:8px; padding:7px 9px; border-radius:7px; cursor:pointer; font-size:13px; font-weight:700; color:#33414e; }
.stlist .it .c { width:12px; height:12px; border-radius:3px; flex:none; }
.stlist .it .s { margin-left:auto; font-size:11px; color:var(--muted); font-weight:600; }
.stlist .it.on { background:#e2ecf6; color:var(--accent); }
.stsplit .sblk { max-width:640px; }
.xpick { position:fixed; z-index:125; width:330px; background:#fff; border:1.5px solid #b9cee3; border-radius:10px; box-shadow:0 10px 30px rgba(0,0,0,.22); padding:6px; font-size:13px; }
.xpick input { width:100%; box-sizing:border-box; font-family:inherit; font-size:13px; border:1.5px solid var(--focus); border-radius:7px; padding:5px 8px; }
.xpick .xl { max-height:230px; overflow:auto; margin-top:4px; }
.xpick .xi { padding:5px 8px; border-radius:6px; cursor:pointer; display:flex; gap:6px; }
.xpick .xi .p { margin-left:auto; color:#9aa8b4; font-size:11px; }
.xpick .xi.on, .xpick .xi:hover { background:#eaf2fb; }
.xpick .xh { font-size:11px; color:var(--muted); padding:5px 8px 2px; border-top:1px solid #eef2f5; margin-top:4px; }

/* Add athlete (D144–D147) */
.modal .box.wide { max-width:720px; }
.fnprev { font-size:12px; color:var(--muted); margin:-2px 0 4px 160px; }
.asteps { margin:8px 0; }
.astep { display:flex; gap:10px; align-items:flex-start; padding:7px 0; border-bottom:1px solid #eef2f5; font-size:13px; }
.astep .ic { flex:0 0 20px; height:20px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; }
.astep.ok .ic { background:var(--good); color:#fff; }
.astep.bad .ic { background:var(--warn); color:#fff; }
.astep.wait .ic { background:#eef2f5; color:#9aa8b4; }
.astep.run .ic { border:2px solid var(--accent); border-top-color:transparent; animation:mkspin .8s linear infinite; }
.astep .e { font-size:12px; color:var(--warn); margin-top:2px; }
.astep.wait { color:#9aa8b4; }
.finish { background:#f3faf6; border:1px solid #b8d9c9; border-radius:10px; padding:10px 12px; }
.finish .fr { display:flex; gap:8px; align-items:center; font-size:13px; padding:4px 0; }
.finish .fr .k { flex:0 0 80px; font-weight:800; color:#0d3d2e; font-size:12px; }
.finish .fr code { background:#fff; border:1px solid #d3e7dc; border-radius:6px; padding:2px 6px; font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:440px; }
.kmsteps { font-size:12.5px; background:var(--amb-bg); border:1px solid var(--amb-bd); color:var(--amb-ink); border-radius:8px; padding:6px 10px; margin-top:8px; }
.kmsteps ol { margin:4px 0 0 18px; padding:0; }

/* Settings */
.setv { display:grid; grid-template-columns:210px minmax(0,1fr); gap:16px; padding:16px; align-items:start; max-width:1500px; margin:0 auto; }
.setnav { background:#fff; border:1px solid var(--line); border-radius:12px; padding:4px; position:sticky; top:8px; }
.setnav .it { padding:8px 10px; border-radius:8px; cursor:pointer; font-size:13px; font-weight:700; color:#33414e; }
.setnav .it.on { background:#e2ecf6; color:var(--accent); }
.setnav .it .s { display:block; font-size:11px; font-weight:600; color:var(--muted); }
.cotable { width:100%; border-collapse:collapse; font-size:13px; }
.cotable th { text-align:left; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); font-weight:800; padding:6px 8px; border-bottom:1px solid var(--line); }
.cotable td { padding:7px 8px; border-bottom:1px solid #eef2f5; vertical-align:middle; }
.cotable tr.off td { color:#9aa8b4; }
.cotable tr.sel td { background:#eaf2fb; }
.cotable tr.click { cursor:pointer; }
.codebox { display:flex; gap:10px; align-items:center; background:#fff6e0; border:1.5px solid #e8c36a; border-radius:10px; padding:8px 12px; margin:8px 0; font-size:13px; }
.codebox code { font-size:17px; font-weight:800; letter-spacing:.08em; color:#3d2a00; background:#fff; border-radius:6px; padding:2px 8px; }
.annwrap { display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:14px; align-items:start; }
.annprev { background:#f4f7f9; border:1px solid var(--line); border-radius:12px; padding:10px; }
.annprev .ph2 { font-size:10.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); margin-bottom:6px; }
.appann { background:#fff; border-radius:12px; border-left:5px solid var(--accent); box-shadow:0 2px 8px rgba(0,0,0,.08); padding:10px 12px; position:relative; }
.appann.action { border-left-color:#d98e00; }
.appann .at { font-weight:800; font-size:15px; color:var(--accent); padding-right:18px; }
.appann .am { font-size:13.5px; color:#33414e; margin-top:3px; white-space:pre-wrap; }
.appann .al { font-size:13px; margin-top:6px; } .appann .al a { color:var(--link); }
.appann .ab { margin-top:8px; display:inline-block; background:var(--accent); color:#fff; border-radius:8px; padding:7px 14px; font-size:13px; font-weight:700; }
.appann .ax { position:absolute; top:8px; right:10px; color:#9aa8b4; }
.pseditor { display:grid; grid-template-columns:200px minmax(0,1fr); gap:14px; align-items:start; }
.psweek { background:#fff; border:1px solid var(--line); border-radius:10px; }
.psweek .pd { display:flex; gap:10px; border-bottom:1px solid #eef2f5; padding:6px 10px; align-items:flex-start; }
.psweek .pd:last-child { border-bottom:0; }
.psweek .pd .d { flex:0 0 40px; font-weight:800; color:var(--accent); font-size:12.5px; padding-top:4px; }
.psweek .pd .ce { flex:1; min-height:22px; border:1px solid transparent; border-radius:6px; padding:3px 6px; font-size:13px; line-height:1.4; outline:0; }
.psweek .pd .ce:hover { border-color:#dfe6ec; } .psweek .pd .ce:focus { border-color:var(--focus); }
.psweek .pd .ce:empty::before { content:'(empty)'; color:#c2ccd4; font-style:italic; }
.pswarn { font-size:12px; color:var(--warn); background:var(--red-bg); border:1px solid var(--red-bd); border-radius:7px; padding:4px 8px; margin:6px 0 0; }
.lktab { width:100%; border-collapse:collapse; font-size:12.5px; margin-top:6px; }
.lktab td { padding:4px 6px; border-bottom:1px solid #eef2f5; }
.lktab td a { color:var(--link); }
.edtools { display:flex; gap:6px; align-items:center; margin-bottom:6px; flex-wrap:wrap; font-size:12px; color:var(--muted); }
.wtx { width:100%; box-sizing:border-box; min-height:170px; font-family:inherit; font-size:13px; border:1.5px solid var(--line); border-radius:8px; padding:8px 10px; line-height:1.45; }
.phn { font-size:11px; color:var(--muted); }
.phn code { background:#eef2f5; border-radius:4px; padding:0 4px; }

.acard.nosd .rlrow .sd { display:none; }
@media (max-width:1500px) { .stgrid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
/* coach1.0 · D121 the Saved pill: over the box's top-right corner, its own background and a soft shadow; the layout doesn't move */
td.ecell, .jbox, .wf, .wfband, .pmk { position:relative; }
.smark.saved { position:absolute; top:-8px; right:6px; z-index:3; margin:0; background:#fff; color:var(--good); border:1px solid #b8d9c9; border-radius:10px; padding:0 7px; font-size:10.5px; font-weight:800; line-height:16px; box-shadow:0 2px 6px rgba(0,0,0,.12); pointer-events:none; transition:opacity .4s; }
.wf .wfmk .smark.saved, .modal .pmk .smark.saved { margin:0; font-size:10.5px; }
/* D122 the capped bar's label */
.outl::after { content:attr(data-o); }
/* D126 a tip's × */
.tipw { position:relative; padding-right:22px !important; }
.tipx { position:absolute; top:1px; right:2px; border:0; background:none; color:#5d7183; font-size:15px; line-height:1; padding:0 3px; cursor:pointer; font-family:inherit; }
.tipx:hover { color:var(--ink); }
/* D127 the services' own icons */
.lk img { width:22px; height:22px; border-radius:5px; display:block; }
.lk.sh, .lk.s, .lk.g, .lk.c { background:none; }
/* D130 a collapsed run of empty days */
table.cv tr.thin td[colspan] { color:#9aa8b4; }
.cvnone .tw { color:var(--link); cursor:pointer; text-decoration:underline; margin-left:6px; }
/* In Edit training's cells the marks sat at the cell's bottom-left; the Saved pill goes to the cell's top-right corner. */
table.et td.ecell > [data-mark] { position:static; }
table.et td.ecell > [data-mark] .smark:not(.saved) { position:absolute; left:4px; bottom:1px; z-index:3; }
table.et td.ecell > [data-mark] .smark.saved { top:-8px; right:6px; }
/* coach1.0 · D136 the day details' fields; D140 Correct */
.ddlist { padding:2px 0; }
.ddrow.typo .k { color:var(--warn); }
.ddrow.hl { background:#fff6e0; }
.ddrow .was.held { color:var(--amb-ink); background:var(--amb-bg); }
.ddrow .dash { color:#c2ccd4; }
.corform .lkerr { margin:0; }
.modal .corform { margin:4px 0 6px; flex-wrap:wrap; }
.corform b { white-space:nowrap; } .corform .old { white-space:nowrap; }
table.cv td .fat { display:inline-block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; vertical-align:top; box-sizing:border-box; }
/* coach1.0 · D133 the races before the A race; D132 Recently logged */
.rpop .rr .ty { color:var(--muted); font-size:11.5px; white-space:nowrap; }
.rpop .rr.none { color:var(--muted); font-style:italic; }
.rlrow .chip.test { margin-left:2px; }
.afld > label.tsw, .tlsw > label.tsw { flex:0 0 34px; width:34px; }
.atab .afld > label:not(.tsw) { flex:0 0 150px; }

/* coach1.0: the athlete bar's right end (links, With you, the dropdown) stays together; a tighter bar below 1600px so the
   five tabs and the week tools fit on one line at 1440, and when it can't, the group wraps as one, at the right. */
.ahead .aright { display:inline-flex; align-items:center; gap:10px; margin-left:auto; flex:none; }
@media (max-width:1600px) {
  .ahead { gap:6px; }
  .ahead .sp { width:0; }
  .vtabs button { padding:8px 6px; }
  .clipseg button { padding:5px 6px; }
  .ahead .aright { gap:8px; }
  .ahead .lkadd { width:0; border-width:0; overflow:hidden; }
  .ahead .lks:hover .lkadd, .ahead .lkadd:focus { width:22px; border-width:1px; }
}
/* coach1.0 Part 8: the Strength tab's own bits beyond mockup v21's */
.sttip { font-size:12px; color:var(--muted); background:#f4f7fa; border:1px solid #e2e8ee; border-radius:8px; padding:5px 30px 5px 10px; margin:0 0 10px; position:relative; }
.sblk .bf .bad { color:var(--warn); font-weight:700; }
.sblk .held .hb { display:inline-flex; gap:6px; margin-top:4px; }
.sblk .held .abtn { padding:2px 9px; font-size:12px; }
.sblk .ex b { font-weight:800; }
.defbox > div { line-height:1.55; }
.defbox .dl { font-size:11px; color:#9aa8b4; text-align:right; }
.xpick .xh { font-size:11px; color:var(--muted); padding:4px 4px 0; }
/* coach1.0 (D153): the Default strength plan's preview */
.prevrow.has, .prevrow.none { color:#9aa8b4; }
.prevrow.has .d, .prevrow.none .d { color:#9aa8b4; }
.prevrow .rich a { color:#1155cc; }
.prevrow label.d { font-weight:700; color:#14202b; }
.dprev { max-height:56vh; overflow:auto; }
/* coach1.0 Part 7: the Settings screen's own bits beyond mockup v21's */
.setpane .mb { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.setpane .sect + .sect, .setpane .annwrap { margin-top:12px; }
.pseditor h3 input[data-psname] { font-family:inherit; font-size:inherit; font-weight:800; color:var(--accent); border:1px dashed #c2ccd4; border-radius:6px; padding:2px 6px; background:#fff; }
.setpane .held .hb { display:inline-flex; gap:6px; margin-left:6px; }
.setpane .held .abtn { padding:2px 9px; font-size:12px; }
.setpane .codebox code { user-select:all; }

/* ===== coach1.1 ===== */
@keyframes flashov { 0%,60% { box-shadow:inset 0 0 0 100vmax rgba(255,241,194,.85); } 100% { box-shadow:inset 0 0 0 100vmax rgba(255,241,194,0); } }
/* B9: the dashboard on dev */
.devpill { display:inline-block; background:#e8590c; color:#fff; font-size:11px; font-weight:800; letter-spacing:.08em; border-radius:6px; padding:3px 8px; margin-left:10px; white-space:nowrap; }
html.dev header.top { box-shadow:inset 0 4px 0 #e8590c; }
/* B10: moved runs */
.mvtag { display:inline-block; font-size:10px; font-weight:800; letter-spacing:.04em; padding:1px 6px; border-radius:6px; background:#e8eef4; color:var(--accent); margin-top:4px; white-space:nowrap; }
td.dc .mvtag { display:block; width:max-content; }
.mvnote { font-size:11.5px; color:var(--muted); margin-top:2px; }
.dmoved { font-size:13px; font-weight:700; margin:6px 0 2px; display:flex; gap:8px; align-items:center; }
.dmoved .mvtag { margin:0; }
/* B13: a chip per run, the app's colours */
.rlab { display:inline-block; font-size:11px; font-weight:800; border-radius:999px; padding:2px 8px; background:#fff2cc; color:#5a4500; text-align:center; }
.rlab.l-warmup { background:#9fc5e8; color:#12202e; } .rlab.l-cooldown { background:#b6d7a8; color:#12202e; }
.rlab.l-race { background:#c27ba0; color:#fff; } .rlab.l-workout { background:#f6b26b; color:#3a2200; }
.rlab.l-shuffle { background:#fffee7; color:#6b6400; border:1px solid #ece7a6; }
.rlab.l-none { background:#e9edf1; color:#5f6f7b; }
.rchips { margin-top:3px; }
.rchips .rlab { display:block; width:max-content; margin:2px 0 0; font-size:10px; padding:1px 6px; }
/* B5: a total with a hover */
.ofp { position:relative; border-bottom:1.5px dotted #6b7f91; cursor:help; }
/* B14: the day's details */
.modal .msec.dsec { font-size:12px; }
.msub { font-size:10.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin:8px 0 2px; }
.rtots { display:flex; gap:8px; align-items:center; font-size:12px; font-weight:700; color:#33546f; margin:2px 0 4px; }
.rtots i { width:1px; height:12px; background:#c2ccd4; }
.drun { display:flex; align-items:baseline; gap:8px; padding:5px 0; border-bottom:1px solid #eef2f5; font-size:13px; flex-wrap:wrap; }
.drun.corr { background:#f6f9fc; }
.drun .rnum { font-size:10.5px; font-weight:800; color:#fff; background:var(--accent); border-radius:999px; padding:1px 7px; white-space:nowrap; }
.drun .rmeta { color:var(--muted); font-size:12px; min-width:90px; }
.drun .rv { min-width:70px; font-weight:700; }
.drun .rv .was { font-size:11px; font-weight:800; color:var(--good); background:#e8f4ee; border-radius:8px; padding:0 6px; }
.drun .rv .was.held { color:var(--amb-ink); background:var(--amb-bg); }
.drun .dash { color:#c2ccd4; }
.drun .cor { visibility:hidden; font-size:11.5px; border:1px solid #c2ccd4; background:#fff; color:#33546f; border-radius:6px; padding:0 7px; font-weight:700; font-family:inherit; margin-left:auto; }
.drun:hover .cor, .drun .cor:focus { visibility:visible; }
.corform.runcor { flex-wrap:wrap; }
.corform .rcf { white-space:nowrap; } .corform .rcf input { width:70px; }
.rcfn { flex-basis:100%; font-size:11.5px; color:var(--muted); }
/* B1: a change in the record, the log to follow */
.opmark { display:inline-block; margin-left:8px; font-size:11px; font-weight:700; color:#5f6f7b; font-style:italic; }
.opmark.fail { color:var(--warn); font-style:normal; }
/* B2: the database stage */
.dbseg button { padding:5px 12px; }
.dbseg button.asked { background:repeating-linear-gradient(135deg,#dce9f6 0 6px,#fff 6px 12px); color:var(--accent); }
.dbl { font-size:12.5px; margin:4px 0 2px; color:#33546f; }
.dbl.amb { color:#7a4b00; } .dbl.bad { color:var(--warn); }
.dbl .ok { color:var(--good); font-weight:800; } .dbl .no { color:var(--warn); font-weight:800; }
/* B8: cancel */
.abtn.warnbtn { color:var(--warn); border-color:#e8b4ae; }
.abtn.warnbtn.solid { background:var(--warn); color:#fff; border-color:var(--warn); }
.cxul { margin:4px 0 8px 18px; padding:0; font-size:13px; line-height:1.5; }
.cxnote { font-size:12px; color:var(--muted); margin-top:6px; }
.cxlink { font-size:12px; margin:6px 2px 0; color:var(--muted); }
.cxlink a { color:var(--muted); cursor:pointer; text-decoration:underline; }
/* B12: What's written */
.wtabs { display:flex; gap:6px; align-items:center; margin:0 0 6px; }
.wtabs button { border:1px solid #c2ccd4; background:#fff; color:#33546f; border-radius:8px; padding:4px 10px; font-weight:700; font-size:12.5px; font-family:inherit; cursor:pointer; }
.wtabs button.on { background:var(--accent); color:#fff; border-color:var(--accent); }
.wtabs button span { margin-left:6px; font-size:11px; opacity:.8; }
.wtabs .sp { flex:1; }
.wtab td.wig { width:70px; text-align:right; }
/* B4: the System card */
.sysrow.q { color:var(--muted); }
.sylink { cursor:pointer; text-decoration:underline; color:var(--link); }
.sydiff { font-size:12px; color:#5f6f7b; margin-top:4px; }
