:root{
  --bg:#F1F3F5; --surface:#FFFFFF; --surface-2:#E6EAEE; --ink:#131B23; --ink-2:#48545F; --ink-3:#5F6B77; --line:#D4DAE0; --line-strong:#8C98A4;
  --run:#0A7D71; --lift:#4549C4; --bw:#A5640B;
  --danger:#B8322A; --btn:#131B23; --btn-ink:#F6F8FA; --focus:#0A7D71;
  --scrim:rgba(12,17,22,.45);
  --shadow:0 1px 2px rgba(19,27,35,.05), 0 3px 12px rgba(19,27,35,.05);
  --display:"Barlow Condensed","Arial Narrow","Roboto Condensed",sans-serif;
  --body:"Source Sans 3","Segoe UI",system-ui,-apple-system,sans-serif;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#0D1318; --surface:#161E25; --surface-2:#212B34; --ink:#E6ECF1; --ink-2:#A7B2BC; --ink-3:#8A96A1; --line:#29343E; --line-strong:#5E6B77;
    --run:#3FC2B1; --lift:#9195F6; --bw:#E6A54C;
    --danger:#F0776C; --btn:#E6ECF1; --btn-ink:#0D1318; --focus:#3FC2B1;
    --scrim:rgba(0,0,0,.6); --shadow:0 1px 2px rgba(0,0,0,.3);
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0D1318; --surface:#161E25; --surface-2:#212B34; --ink:#E6ECF1; --ink-2:#A7B2BC; --ink-3:#8A96A1; --line:#29343E; --line-strong:#5E6B77;
  --run:#3FC2B1; --lift:#9195F6; --bw:#E6A54C;
  --danger:#F0776C; --btn:#E6ECF1; --btn-ink:#0D1318; --focus:#3FC2B1;
  --scrim:rgba(0,0,0,.6); --shadow:0 1px 2px rgba(0,0,0,.3);
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.num,.tnum{font-variant-numeric:tabular-nums}

.app{max-width:1080px;margin:0 auto;padding-inline:16px;padding-block:18px 96px}
.top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.brand{margin-right:auto;min-width:0}
.brand h1{font-family:var(--display);font-weight:700;font-size:32px;letter-spacing:.03em;text-transform:uppercase;margin:0;line-height:.95}
.brand h1 span{color:var(--ink-3);font-weight:500}
.brand p{margin:3px 0 0;color:var(--ink-3);font-size:13px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:7px 14px;font-weight:600;min-height:40px;white-space:nowrap}
.btn:hover{border-color:var(--ink-3)}
.btn-primary{background:var(--btn);color:var(--btn-ink);border-color:var(--btn)}
.btn-primary:hover{border-color:var(--btn);opacity:.9}
.btn-ghost{background:transparent;border-color:transparent}
.btn-ghost:hover{background:var(--surface-2);border-color:transparent}
.btn-danger{color:var(--danger)}
.btn[disabled]{opacity:.5;cursor:default}
.btn-sm{min-height:34px;padding:5px 11px;font-size:14px}
.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--ink-2);padding:0;flex:none}
.icon-btn:hover{background:var(--surface-2);color:var(--ink)}
.icon-btn svg{width:18px;height:18px}
.link{background:none;border:0;padding:0;color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:2px}

.settings{margin-top:12px;display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.settings .lbl{margin-right:8px}
.banner{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:10px 14px;border:1px dashed var(--ink-3);border-radius:10px;color:var(--ink-2);font-size:14px}
.banner p{margin:0;flex:1 1 260px}
.note{margin:10px 0 0;font-size:13px;color:var(--ink-3)}

.tabs{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);display:flex;gap:2px;margin-block:14px 16px;border-bottom:1px solid var(--line)}
.tab{background:none;border:0;padding:10px 12px 8px;font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);border-bottom:3px solid transparent;margin-bottom:-1px}
.tab:hover{color:var(--ink-2)}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink)}

.eyebrow{font-family:var(--display);text-transform:uppercase;letter-spacing:.1em;font-size:13.5px;font-weight:600;color:var(--ink-3);margin:0}
.lbl{font-size:12.5px;font-weight:600;color:var(--ink-2);letter-spacing:.02em}
.opt{font-weight:400;color:var(--ink-3)}

/* Week */
.week-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.week-nav h2{font-family:var(--display);font-size:30px;font-weight:600;margin:0 auto 0 0;letter-spacing:.01em;line-height:1.1;text-wrap:balance}
.week-grid{display:grid;gap:18px}
.summary{order:-1}
@media (min-width:900px){
  .week-grid{grid-template-columns:minmax(0,1fr) 300px;align-items:start}
  .summary{order:0;position:sticky;top:calc(env(safe-area-inset-top,0px) + 64px)}
}
.days{display:flex;flex-direction:column}
.day{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;padding-block:12px;border-top:1px solid var(--line)}
.day:first-child{border-top:0}
.day-head{display:flex;flex-direction:column;align-items:flex-start;line-height:1;padding-top:3px}
.dow{font-family:var(--display);text-transform:uppercase;letter-spacing:.09em;font-size:13px;color:var(--ink-3);font-weight:600}
.dnum{font-family:var(--display);font-size:30px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink-2)}
.is-today .dow,.is-today .dnum{color:var(--ink)}
.today-pill{margin-top:4px;font-family:var(--display);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;background:var(--ink);color:var(--bg);padding:2px 5px;border-radius:4px}
.day-body{display:flex;flex-direction:column;gap:8px;min-width:0}
.rest{color:var(--ink-3);font-size:14px;padding-top:6px}
.add-btn{align-self:flex-start;background:none;border:0;color:var(--ink-3);font-weight:600;font-size:13.5px;padding:4px 2px;border-radius:4px}
.add-btn:hover{color:var(--ink)}

.wk{--t:var(--ink-3);display:flex;align-items:flex-start;gap:11px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface)}
.t-run{--t:var(--run)} .t-lift{--t:var(--lift)} .t-bw{--t:var(--bw)}
.wk.is-done{box-shadow:var(--shadow)}
.wk.is-planned{background:transparent;border-style:dashed;border-color:color-mix(in srgb,var(--t) 50%,var(--line))}
.check{flex:none;width:28px;height:28px;margin-top:2px;border-radius:50%;border:2px dashed var(--t);background:transparent;display:grid;place-items:center;color:transparent;padding:0}
.check svg{width:14px;height:14px}
.check:hover{color:var(--t)}
.is-done .check{border-style:solid;border-color:var(--t);background:var(--t);color:var(--surface)}
.wk-main{flex:1;min-width:0;text-align:left;background:none;border:0;padding:0;display:flex;flex-direction:column;gap:1px;border-radius:4px}
.wk-top{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.tag{font-family:var(--display);font-weight:700;font-size:13px;letter-spacing:.09em;text-transform:uppercase;color:var(--t)}
.wk-date{font-size:13px;color:var(--ink-3)}
.ex-pill{font-size:11px;color:var(--ink-3);border:1px solid var(--line);border-radius:99px;padding:0 7px;line-height:17px}
.wk-title{font-weight:600;font-size:15.5px;overflow-wrap:anywhere}
.wk-meta{color:var(--ink-2);font-size:13.5px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}

.summary{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:14px}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:14px 12px}
.stat{display:flex;flex-direction:column;gap:2px;min-width:0}
.stat-val{font-family:var(--display);font-size:32px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums}
.stat-val small{font-size:17px;color:var(--ink-3);font-weight:500;margin-left:2px}
.stat-sub{font-size:12.5px;color:var(--ink-3)}
.meter{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.meter span{display:block;height:100%;background:var(--ink);border-radius:99px}
.type-rows{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
.type-rows li{display:flex;align-items:center;gap:8px;font-size:14px}
.dot{width:9px;height:9px;border-radius:50%;background:var(--t);flex:none}
.type-rows .tnum{margin-left:auto;color:var(--ink-2)}

/* History */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:5px 13px;font-weight:600;font-size:14px;color:var(--ink-2)}
.chip[aria-pressed="true"]{background:var(--btn);border-color:var(--btn);color:var(--btn-ink)}
.month{margin:22px 0 8px;display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.month:first-child{margin-top:0}
.month .stat-sub{font-variant-numeric:tabular-nums}
.hist-list{display:flex;flex-direction:column;gap:8px;max-width:720px}
.empty{color:var(--ink-3);padding:24px 0}

/* Progress */
.prog{display:grid;gap:18px}
@media (min-width:900px){.prog-charts{grid-template-columns:1fr 1fr}}
.prog-charts,.pr-grid{display:grid;gap:18px}
.pr-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;min-width:0}
.panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.panel h3{font-family:var(--display);font-size:21px;font-weight:600;margin:0;letter-spacing:.01em}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-2)}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend .sw{width:10px;height:10px;border-radius:2px;background:var(--t)}
.legend .sw.plan{background:transparent;border:1.5px dashed var(--run)}
.chart{width:100%;overflow:hidden}
.chart svg{display:block;width:100%;height:auto}
.axis text{fill:var(--ink-3);font-size:11px;font-family:var(--body)}
.axis .now{fill:var(--ink);font-weight:600}
.gridline{stroke:var(--line);stroke-width:1}
.b-run{fill:var(--run)} .b-lift{fill:var(--lift)} .b-bw{fill:var(--bw)}
.b-plan{fill:none;stroke:var(--run);stroke-width:1.5;stroke-dasharray:3 3}
.pr-list{list-style:none;margin:0;padding:0}
.pr-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;padding:9px 0;border-top:1px solid var(--line)}
.pr-list li:first-child{border-top:0}
.pr-name{font-weight:600;overflow-wrap:anywhere}
.pr-val{font-family:var(--display);font-size:22px;font-weight:600;line-height:1.1;text-align:right;font-variant-numeric:tabular-nums}
.pr-val small{font-size:14px;color:var(--ink-3);font-weight:500;margin-left:2px}
.pr-sub{grid-column:1 / -1;font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}

/* Editor sheet */
.backdrop{position:fixed;inset:0;z-index:50;background:var(--scrim);display:flex;align-items:flex-end;justify-content:center;padding-top:calc(env(safe-area-inset-top,0px) + 24px)}
.sheet{background:var(--surface);width:100%;max-width:640px;max-height:100%;display:flex;flex-direction:column;border-radius:16px 16px 0 0;overflow:hidden;animation:rise .18s ease-out}
@keyframes rise{from{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}
@media (min-width:700px){.backdrop{align-items:center;padding:24px}.sheet{border-radius:14px;max-height:min(90vh,900px)}}
@media (prefers-reduced-motion:reduce){.sheet{animation:none}*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;scroll-behavior:auto!important}}
.sheet-head{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--line)}
.sheet-head h2{margin:0 auto 0 0;font-family:var(--display);font-size:24px;font-weight:600}
.sheet-body{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:16px}
.sheet-foot{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line)}
.spacer{flex:1}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.input{border:1px solid var(--line-strong);background:var(--bg);border-radius:8px;padding:8px 10px;min-height:40px;width:100%;min-width:0}
.input:focus{border-color:var(--ink-3)}
textarea.input{resize:vertical;min-height:64px}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,130px),1fr));gap:12px}
.seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line-strong);border-radius:9px;padding:3px;background:var(--bg);gap:2px;align-self:flex-start}
.seg button{border:0;background:transparent;padding:6px 13px;border-radius:6px;font-weight:600;color:var(--ink-2);min-height:32px}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.14)}
.type-seg button{font-family:var(--display);font-size:16px;letter-spacing:.06em;text-transform:uppercase;padding:6px 16px}
.type-seg button[aria-pressed="true"]{color:var(--t)}
.pace{margin:-6px 0 0;font-size:14px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.pace b{font-family:var(--display);font-size:19px;font-weight:600;color:var(--ink)}
.ex-list{display:flex;flex-direction:column;gap:12px}
.exercise{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}
.ex-head{display:flex;gap:8px;align-items:center}
.ex-head .input{flex:1}
.ex-head select.input{flex:none;width:auto}
.hint{font-size:13px;color:var(--ink-3);margin:0;font-variant-numeric:tabular-nums}
.hint:empty{display:none}
.set-grid{display:grid;grid-template-columns:26px minmax(0,1fr) minmax(0,1fr) 36px;gap:6px;align-items:center}
.set-grid.two{grid-template-columns:26px minmax(0,1fr) 36px}
.set-grid .h{font-size:11.5px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}
.set-n{font-family:var(--display);font-weight:600;color:var(--ink-3);text-align:center;font-size:16px}
.set-grid .input{min-height:38px;padding:6px 9px}

.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:60;background:var(--btn);color:var(--btn-ink);border-radius:10px;padding:10px 14px;display:flex;gap:14px;align-items:center;font-weight:500;max-width:calc(100% - 32px);box-shadow:0 6px 24px rgba(0,0,0,.2)}
.toast button{background:none;border:0;color:inherit;font-weight:700;text-decoration:underline;text-underline-offset:2px;padding:0}

/* Status & errors */
.self-start{align-self:flex-start}
.pr-empty{display:block;padding-block:4px}
.error-box{border:1px solid var(--danger);border-radius:10px;padding:12px 14px;color:var(--ink);background:var(--surface);max-width:640px}
.error-box p{margin:4px 0 0;color:var(--ink-2);font-size:14px}
.error-box code,.fatal code{font-size:12.5px;overflow-wrap:anywhere}
.fatal{margin-top:12px;border:1px solid var(--danger);color:var(--danger);border-radius:10px;padding:10px 14px;font-size:14px}

/* Runs: multi-week calendar */
.rp-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-block:6px}
#rp-summary{margin:0 0 0 auto;font-variant-numeric:tabular-nums}
.rp-tip{margin:0 0 12px;font-size:12.5px;color:var(--ink-3)}
.runplan{display:flex;flex-direction:column;gap:14px}
.rp-dow,.rp-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.rp-dow span{font-family:var(--display);font-size:12.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);padding-inline:4px}
.rp-week{display:flex;flex-direction:column;gap:6px}
.rp-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.rp-range{font-family:var(--display);font-size:14px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.rp-week.is-current .rp-range{color:var(--ink)}
.rp-total{font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.rp-total b{font-family:var(--display);font-size:18px;font-weight:600;color:var(--ink)}
.rp-none{color:var(--ink-3)}
.rp-meter{height:4px}
.rp-meter span{background:var(--run)}
.rp-cell{min-height:86px;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:4px;display:flex;flex-direction:column;gap:3px;cursor:pointer}
.rp-cell:hover{border-color:var(--ink-3)}
.rp-cell.is-past{background:transparent}
.rp-cell.is-today{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.rp-date{align-self:flex-start;background:none;border:0;padding:1px 3px;border-radius:4px;font-family:var(--display);font-weight:600;font-size:15px;line-height:1.1;color:var(--ink-2);font-variant-numeric:tabular-nums}
.rp-cell.is-today .rp-date{color:var(--ink)}
.rp-mon{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.rp-run{--t:var(--run);display:flex;flex-direction:column;align-items:flex-start;width:100%;min-width:0;text-align:left;border-radius:6px;padding:3px 6px;border:1.5px solid var(--t);background:var(--t);color:var(--surface)}
.rp-run.is-planned{background:transparent;color:var(--t);border-style:dashed}
.rp-dist{font-family:var(--display);font-weight:700;font-size:17px;line-height:1.05;font-variant-numeric:tabular-nums}
.rp-kind{max-width:100%;font-size:11.5px;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rp-other{align-self:stretch;text-align:left;border:0;border-radius:4px;padding:1px 5px;font-size:11px;font-weight:600;color:var(--t);background:color-mix(in srgb,var(--t) 13%,transparent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rp-other:not(.is-done){background:transparent;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--t) 45%,transparent)}
.rp-kind .short,.rp-other .short{display:none}
.rp-reps{max-width:100%;font-size:11.5px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.rp-facts{display:flex;flex-direction:column;font-size:11px;line-height:1.25;opacity:.88;font-variant-numeric:tabular-nums;white-space:nowrap}
.rp-facts:empty{display:none}
.rp-list{display:flex;list-style:none;margin:2px 0 0;padding:0;flex-direction:column;gap:4px}
.rp-row{display:flex;gap:10px;align-items:baseline;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--run);border-radius:8px;padding:6px 10px;color:var(--ink)}
.rp-row.is-planned{border-left-style:dashed;background:transparent}
.rp-row-day{flex:0 0 46px;font-family:var(--display);font-weight:600;font-size:14px;color:var(--ink-2)}
.rp-row-main{display:flex;flex-direction:column;min-width:0;font-size:14px}
.rp-row-main small{font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
@media (max-width:640px){
  .rp-dow,.rp-days{gap:3px}
  .rp-cell{min-height:72px;padding:3px}
  .rp-run{padding:2px 4px}
  .rp-dist{font-size:15px}
  .rp-kind .full,.rp-other .full{display:none}
  .rp-reps,.rp-facts{display:none}
  .rp-list{display:flex}
  .rp-kind .short,.rp-other .short{display:inline}
  .rp-other{padding:1px 3px;text-align:center}
  #rp-summary{margin-left:0;flex-basis:100%}
}

/* Editor: workout steps and Garmin details */
.steps-field{gap:8px}
.steps{display:flex;flex-direction:column;gap:8px}
.step{border:1px solid var(--line);border-radius:10px;padding:8px 10px 10px;display:flex;flex-direction:column;gap:6px}
.step-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.step-name{font-family:var(--display);font-size:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.step-intervals .step-name,.step-steady .step-name{color:var(--run)}
.step-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));gap:8px}
.amt{display:flex;gap:6px}
.amt .input{flex:1;min-width:0}
.amt .unit-sel{flex:none;width:auto}
.step-add{display:flex;flex-wrap:wrap;gap:6px}
.garmin{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;background:var(--bg)}
.garmin .lbl,.garmin .hint{margin:0}
.g-stats{margin:0;font-size:14px;color:var(--ink-2)}
.g-stats b{color:var(--ink);font-variant-numeric:tabular-nums}
.splits summary{cursor:pointer;font-weight:600;font-size:14px}
.tbl-wrap{overflow-x:auto;margin-top:6px}
.tbl-wrap table{border-collapse:collapse;width:100%;font-size:13.5px;font-variant-numeric:tabular-nums}
.tbl-wrap th,.tbl-wrap td{text-align:right;padding:4px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl-wrap th:first-child,.tbl-wrap td:first-child{text-align:left}
.tbl-wrap th{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}

/* Garmin import */
.imp-how{margin:0;padding-left:20px;color:var(--ink-2);font-size:14px;display:flex;flex-direction:column;gap:2px}
.imp-how code{font-size:13px}
.drop{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 16px;border:2px dashed var(--line);border-radius:12px;text-align:center;cursor:pointer;background:var(--bg)}
.drop:hover{border-color:var(--ink-3)}
.drop.is-over{border-color:var(--run);background:color-mix(in srgb,var(--run) 8%,var(--bg))}
.drop input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.drop-main{font-weight:600}
.drop-sub{font-size:12.5px;color:var(--ink-3)}
.imp-list{list-style:none;margin:0;padding:0}
.imp-row{display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;padding:10px 0;border-top:1px solid var(--line)}
.imp-row label{cursor:pointer}
.imp-row p{margin:0}
.imp-check input{width:18px;height:18px;margin-top:2px;accent-color:var(--run)}
.imp-title{font-weight:600}
.imp-meta{font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.imp-status{font-size:13px;color:var(--ink-3)}
.imp-status.is-match{color:var(--run);font-weight:600}
.imp-status.is-bad{color:var(--danger)}
.imp-row.is-off .imp-title{color:var(--ink-3)}
.imp-date{grid-column:2;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.imp-date label{font-size:13.5px;color:var(--ink-2)}
.imp-date .input{width:auto;min-height:36px;padding:6px 8px}
.imp-date .imp-status{flex-basis:100%}

/* ---------- analysis tokens (Garmin-like zone colours) ---------- */
:root{
  --hr:#C8413B; --pwr:#6D4FC4; --cad:#B56A14; --alt:#6E7F63; --dyn:#3F6F8F;
  --z1:#98A3AE; --z2:#3E86C9; --z3:#3A9A5B; --z4:#DE8A1E; --z5:#D6453D;
  --acute:#131B23; --chronic:#3E86C9; --bad:rgba(200,65,59,.12); --sel:rgba(19,27,35,.12);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --hr:#F0766E; --pwr:#A992F5; --cad:#E6A54C; --alt:#9DB08F; --dyn:#7FB3D6;
    --z1:#7A8591; --z2:#5AA2E6; --z3:#55B877; --z4:#EDA040; --z5:#F0665D;
    --acute:#E6ECF1; --chronic:#5AA2E6; --bad:rgba(240,118,110,.16); --sel:rgba(230,236,241,.14);
  }
}
:root[data-theme="dark"]{
  --hr:#F0766E; --pwr:#A992F5; --cad:#E6A54C; --alt:#9DB08F; --dyn:#7FB3D6;
  --z1:#7A8591; --z2:#5AA2E6; --z3:#55B877; --z4:#EDA040; --z5:#F0665D;
  --acute:#E6ECF1; --chronic:#5AA2E6; --bad:rgba(240,118,110,.16); --sel:rgba(230,236,241,.14);
}

/* Settings: heart rate & power */
.set-hr{flex-basis:100%;border-top:1px solid var(--line);padding-top:10px}
.set-title{margin:0 0 8px}
.set-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:10px}
.input[aria-invalid="true"]{border-color:var(--danger)}
.week-load{margin:0}
.week-load b{color:var(--ink);font-variant-numeric:tabular-nums}

/* Step amounts: distance/time chip */
.kind-chip{flex:none;border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:3px 10px;font-size:12px;font-weight:600;white-space:nowrap;color:var(--ink-2)}
.kind-chip.is-time{border-color:color-mix(in srgb,var(--lift) 45%,var(--line));color:var(--lift)}
.kind-chip.is-dist{border-color:color-mix(in srgb,var(--run) 45%,var(--line));color:var(--run)}
.amt{align-items:center}
.step-hills .step-name{color:var(--run)}

/* ---------- run detail ---------- */
.activity{display:flex;flex-direction:column;gap:14px}
.act-top{display:flex;align-items:center;gap:8px}
.act-head h2{font-family:var(--display);font-size:32px;font-weight:600;margin:2px 0 8px;line-height:1.05;text-wrap:balance}
.act-kind{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.act-kind .input{width:auto}
.act-pred{margin:6px 0 0;font-size:14px;color:var(--ink-2)}
.act-note{margin:0}
.est{font-family:var(--body);font-size:11px;font-weight:600;color:var(--hr);vertical-align:middle}
.act-stats{display:flex;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.act-stat{flex:1 0 128px;padding:10px 12px;display:flex;flex-direction:column;gap:1px;min-width:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 -1px -1px 0}
.act-stat-l{font-size:12px;color:var(--ink-3);font-weight:600}
.act-stat-v{font-family:var(--display);font-size:24px;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums}
.act-stat-v small{font-size:14px;color:var(--ink-3);font-weight:500;margin-left:2px}
.act-stat-s{font-size:11.5px;color:var(--ink-3)}
.act-xbar{position:sticky;top:calc(env(safe-area-inset-top,0px) + 46px);z-index:4;background:var(--bg);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-block:6px}
.act-at{font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.act-charts{display:flex;flex-direction:column;gap:10px}
.ch{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 12px;min-width:0}
.ch-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.ch-head h3{margin:0;font-family:var(--display);font-size:18px;font-weight:600}
.ch-val{font-size:13.5px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ch-body{overflow:hidden}
.ch-svg{display:block;width:100%;height:auto;touch-action:pan-y;cursor:crosshair}
.ch-svg.is-selectable{cursor:ew-resize}
.axis-t{fill:var(--ink-3);font-size:10.5px;font-family:var(--body)}
.ch-line{fill:none;stroke:var(--c,var(--ink-2));stroke-width:1.6;stroke-linejoin:round}
.ch-area{fill:color-mix(in srgb,var(--c) 22%,transparent);stroke:none}
.ch-dots{fill:none;stroke:var(--c);stroke-width:2.6;stroke-linecap:round}
.ch-cursor{stroke:var(--ink);stroke-width:1;stroke-dasharray:2 2;pointer-events:none}
.c-pace{--c:var(--run)} .c-hr{--c:var(--hr)} .c-alt{--c:var(--alt)} .c-cad{--c:var(--cad)} .c-pwr{--c:var(--pwr)} .c-dyn{--c:var(--dyn)}
.zband{opacity:.13}
.zband.z1{fill:var(--z1)} .zband.z2{fill:var(--z2)} .zband.z3{fill:var(--z3)} .zband.z4{fill:var(--z4)} .zband.z5{fill:var(--z5)}
.bad-shade{fill:var(--bad)}
.rep-shade{fill:color-mix(in srgb,var(--run) 12%,transparent)}
.sel-rect{fill:var(--sel);pointer-events:none}
.ch-raw{fill:none;stroke:var(--ink-3);stroke-width:1;opacity:.55}
.ch-est{fill:none;stroke:var(--hr);stroke-width:2;stroke-dasharray:4 3}
.hr-help{margin:6px 0 0}
.sel-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:14px;font-variant-numeric:tabular-nums}
.hr-suggest{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:8px;padding:8px 10px;border-radius:8px;background:var(--bad);font-size:13.5px}
.bad-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13.5px;color:var(--ink-2)}
.act-iv .seg{flex:none}
.act-iv .hint{margin:0 0 8px}
.tbl-wrap td.is-key,.tbl-wrap th.is-key{font-weight:700;color:var(--ink)}
.act-zones{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr))}
.zones{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.zrow{display:grid;grid-template-columns:minmax(90px,auto) minmax(0,1fr) auto;grid-template-areas:"name bar time" "name range time";gap:0 10px;align-items:center}
.zname{grid-area:name;font-weight:600;font-size:14px}
.zname small{display:block;font-weight:400;color:var(--ink-3);font-size:12px}
.zbar{grid-area:bar;height:10px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.zbar span{display:block;height:100%;border-radius:99px}
.zrow.z1 .zbar span{background:var(--z1)} .zrow.z2 .zbar span{background:var(--z2)} .zrow.z3 .zbar span{background:var(--z3)} .zrow.z4 .zbar span{background:var(--z4)} .zrow.z5 .zbar span{background:var(--z5)}
.ztime{grid-area:time;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;font-size:14px}
.ztime small{display:block;color:var(--ink-3);font-weight:400;font-size:12px}
.zrange{grid-area:range;font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.lap-bar{display:inline-block;width:70px;height:8px;border-radius:99px;background:var(--surface-2);margin-right:8px;vertical-align:middle;overflow:hidden}
.lap-bar span{display:block;height:100%;background:var(--run);border-radius:99px}
.tbl-wrap .pace-col{text-align:left}

/* ---------- training load ---------- */
.load-top{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));align-items:start;margin-bottom:10px}
.load-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.load-chip{display:inline-block;border-radius:99px;padding:0 7px;font-size:11.5px;font-weight:700;line-height:18px;margin-left:2px}
.st-ok{background:color-mix(in srgb,var(--z3) 20%,transparent);color:var(--z3)}
.st-low{background:color-mix(in srgb,var(--z2) 18%,transparent);color:var(--z2)}
.st-high{background:color-mix(in srgb,var(--z4) 22%,transparent);color:var(--z4)}
.st-vhigh{background:color-mix(in srgb,var(--z5) 20%,transparent);color:var(--z5)}
.st-none{background:var(--surface-2);color:var(--ink-3)}
.load-focus .lbl{margin:0 0 6px}
.lf-bar{display:flex;height:12px;border-radius:99px;overflow:hidden;background:var(--surface-2);margin-bottom:8px}
.lf-seg{display:block;height:100%}
.lf-low{--t:var(--z2)} .lf-high{--t:var(--z4)} .lf-ana{--t:var(--z5)} .lf-other{--t:var(--z1)}
.lf-seg.lf-low,.lf-seg.lf-high,.lf-seg.lf-ana,.lf-seg.lf-other{background:var(--t)}
.b-load{fill:color-mix(in srgb,var(--z3) 55%,transparent)}
.ln-acute{fill:none;stroke:var(--acute);stroke-width:2}
.ln-chronic{fill:none;stroke:var(--chronic);stroke-width:2;stroke-dasharray:5 3}
.dot-acute{fill:var(--acute)} .dot-chronic{fill:var(--chronic)}
.legend .sw-load{background:color-mix(in srgb,var(--z3) 55%,transparent)}
.legend .sw-acute{background:var(--acute);height:3px;border-radius:0}
.legend .sw-chronic{background:transparent;border-top:2px dashed var(--chronic);height:0;border-radius:0}
#load-note{margin:8px 0 0}

/* ---------- run-type colours ---------- */
:root{--k-easy:#58A89B;--k-rec:#9AA7B2;--k-tempo:#DE8A1E;--k-int:#D6453D;--k-hill:#8C5A2E;--k-long:#0A6E63;--k-race:#6D4FC4}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--k-easy:#6CC3B5;--k-rec:#7C8894;--k-tempo:#EDA040;--k-int:#F0665D;--k-hill:#C98E57;--k-long:#3FC2B1;--k-race:#A992F5}}
:root[data-theme="dark"]{--k-easy:#6CC3B5;--k-rec:#7C8894;--k-tempo:#EDA040;--k-int:#F0665D;--k-hill:#C98E57;--k-long:#3FC2B1;--k-race:#A992F5}
.k-easy{--t:var(--k-easy)} .k-rec{--t:var(--k-rec)} .k-tempo{--t:var(--k-tempo)} .k-int{--t:var(--k-int)} .k-hill{--t:var(--k-hill)} .k-long{--t:var(--k-long)} .k-race{--t:var(--k-race)}
rect.k-easy,rect.k-rec,rect.k-tempo,rect.k-int,rect.k-hill,rect.k-long,rect.k-race{fill:var(--t)}
.legend .k-easy .sw,.legend .k-rec .sw,.legend .k-tempo .sw,.legend .k-int .sw,.legend .k-hill .sw,.legend .k-long .sw,.legend .k-race .sw{background:var(--t)}

/* ---------- tabs: top on wide screens, bottom bar on phones ---------- */
.tab{display:inline-flex;align-items:center;gap:6px}
.tab svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
@media (min-width:700px){.tab svg{display:none}}
@media (max-width:699px){
  .app{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px))}
  .tabs{position:fixed;top:auto;left:0;right:0;bottom:0;z-index:30;margin:0;padding:4px 4px calc(4px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);border-bottom:0;background:var(--surface);display:grid;grid-template-columns:repeat(4,1fr);gap:0;box-shadow:0 -2px 10px rgba(0,0,0,.05)}
  .tab{flex-direction:column;gap:2px;padding:6px 2px 4px;font-size:11.5px;letter-spacing:.04em;border-bottom:0;margin:0;border-radius:8px}
  .tab svg{width:22px;height:22px}
  .tab[aria-selected="true"]{color:var(--run);background:color-mix(in srgb,var(--run) 9%,transparent)}
  .act-xbar{top:env(safe-area-inset-top,0px)}
  .toast{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
  .top .btn-primary{padding-inline:10px}
}

/* ---------- shared report pieces ---------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,132px),1fr));gap:14px 12px}
.kpis-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.kpis-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:420px){.kpis-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi{display:flex;flex-direction:column;gap:1px;min-width:0}
.kpi-l{font-size:12px;font-weight:600;color:var(--ink-3)}
.kpi-v{font-family:var(--display);font-size:28px;font-weight:600;line-height:1.05;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.kpi-v small{font-size:15px;color:var(--ink-3);font-weight:500;margin-left:2px}
.kpi-s{font-size:12px;color:var(--ink-3)}
.st-sub{margin:14px 0 6px}
.kv{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:14px}
.kv th{text-align:left;font-weight:600;padding:5px 10px 5px 0;white-space:nowrap}
.kv td{padding:5px 10px 5px 0}
.kv tr+tr th,.kv tr+tr td{border-top:1px solid var(--line)}
.kv .muted{color:var(--ink-3);font-size:13px}
.pb{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.06em;background:var(--run);color:var(--surface);border-radius:4px;padding:0 5px;line-height:16px;vertical-align:middle}
.vdot{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.vdot-v{font-family:var(--display);font-size:52px;font-weight:700;line-height:1;color:var(--run)}
.vdot-l{font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:.08em;display:flex;flex-direction:column}
.vdot-l small{font-family:var(--body);font-size:12.5px;font-weight:400;letter-spacing:0;color:var(--ink-3)}
.split3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px;text-align:center}
.split3 b{display:block;font-family:var(--display);font-size:24px}
.split3 span{font-size:12px;color:var(--ink-3)}
.hbars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.hbars li{display:grid;grid-template-columns:minmax(90px,auto) minmax(0,1fr) auto;gap:10px;align-items:center;--t:var(--run)}
.hb-l{font-weight:600;font-size:14px}
.hb-l small{display:block;font-weight:400;font-size:12px;color:var(--ink-3)}
.hb-bar{height:10px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.hb-bar span{display:block;height:100%;background:var(--t);border-radius:99px}
.hb-v{font-variant-numeric:tabular-nums;font-weight:600;font-size:14px}
.chart svg{max-width:100%}
.trend-line{stroke:var(--ink-3);stroke-width:1.5;stroke-dasharray:4 4}
.tl-run,.tl-hr,.tl-dyn,.tl-lift{fill:none;stroke-width:2}
.tl-run{stroke:var(--run)} .tl-hr{stroke:var(--hr)} .tl-dyn{stroke:var(--dyn)} .tl-lift{stroke:var(--lift)}
.tl-run-dot{fill:var(--run)} .tl-hr-dot{fill:var(--hr)} .tl-dyn-dot{fill:var(--dyn)} .tl-lift-dot{fill:var(--lift)}
.ln-acute-dot{fill:var(--acute)} .ln-chronic-dot{fill:var(--chronic)}
.zb1{fill:var(--z1)} .zb2{fill:var(--z2)} .zb3{fill:var(--z3)} .zb4{fill:var(--z4)} .zb5{fill:var(--z5)}
.zl1{--t:var(--z1)} .zl2{--t:var(--z2)} .zl3{--t:var(--z3)} .zl4{--t:var(--z4)} .zl5{--t:var(--z5)}
.legend [class^="zl"] .sw{background:var(--t)}
.b-dow{fill:color-mix(in srgb,var(--run) 70%,transparent)}
.b-lift{fill:var(--lift)} .b-bw{fill:var(--bw)}
.hm-wrap{overflow-x:auto}
.hm0{fill:var(--surface-2)} .hm1{fill:color-mix(in srgb,var(--run) 22%,var(--surface-2))} .hm2{fill:color-mix(in srgb,var(--run) 45%,var(--surface-2))} .hm3{fill:color-mix(in srgb,var(--run) 70%,var(--surface-2))} .hm4{fill:var(--run)}
.hm-legend{align-items:center}
.hm-legend i{display:inline-block;width:11px;height:11px;border-radius:2px}
.hm-legend i.hm0{background:var(--surface-2)} .hm-legend i.hm1{background:color-mix(in srgb,var(--run) 22%,var(--surface-2))} .hm-legend i.hm2{background:color-mix(in srgb,var(--run) 45%,var(--surface-2))} .hm-legend i.hm3{background:color-mix(in srgb,var(--run) 70%,var(--surface-2))} .hm-legend i.hm4{background:var(--run)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px}
.form-cell{min-width:0}
.form-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:14px;font-weight:600;color:var(--ink-2)}
.form-head b{font-family:var(--display);font-size:20px;color:var(--ink);font-variant-numeric:tabular-nums}
.form-head b small{font-family:var(--body);font-size:12px;color:var(--ink-3);font-weight:500}
.form-head em{font-style:normal;font-size:12.5px;font-family:var(--body);margin-left:4px}
.form-head em.up{color:var(--good,#1D7F46)} .form-head em.down{color:var(--danger)}

/* ---------- Stats page ---------- */
.stats{display:flex;flex-direction:column;gap:12px}
.st-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.st-top h2,.td-head h2{font-family:var(--display);font-size:32px;font-weight:600;margin:0;line-height:1}
.st-jump{position:sticky;top:calc(env(safe-area-inset-top,0px) + 46px);z-index:4;background:var(--bg);display:flex;gap:6px;overflow-x:auto;padding-block:6px;scrollbar-width:none}
.st-jump::-webkit-scrollbar{display:none}
.st-jump .chip{flex:none}
@media (max-width:699px){.st-jump{top:env(safe-area-inset-top,0px)}}
.st-body,.st-stack{display:flex;flex-direction:column;gap:14px}
.st-panel{scroll-margin-top:100px}
.st-two{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr))}
.st-two-flat{gap:24px}
.st-two > .panel{min-width:0}

/* ---------- Today ---------- */
.today{display:flex;flex-direction:column;gap:12px}
.td-head .eyebrow{margin-bottom:4px}
.td-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));align-items:start}
.td-plan{grid-column:1 / -1}
.td-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.td-title{margin:0 0 10px;font-weight:600;font-size:16px}
.td-bests{display:flex;flex-wrap:wrap;gap:6px;margin:0}
.panel .meter{margin-top:12px}
.attn{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.attn li{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--line);font-size:14px}
.attn li:first-child{border-top:0}
.attn li > span:nth-child(2){flex:1 1 200px}
.attn-ic{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700}
.attn-ic.hr{background:var(--bad);color:var(--hr)}
.attn-ic.miss{background:color-mix(in srgb,var(--z4) 18%,transparent);color:var(--z4)}
.attn-btns{display:inline-flex;gap:6px;flex-wrap:wrap}

/* ---------- History extras & card pills ---------- */
.chips-sub{margin-top:-8px}
.chip-sm{padding:3px 10px;font-size:13px}
.pill-warn{color:var(--hr);border-color:color-mix(in srgb,var(--hr) 40%,var(--line))}
.pill-chart{color:var(--run);border-color:color-mix(in srgb,var(--run) 40%,var(--line))}

/* ---------- Run detail: HR tools & nav ---------- */
.act-jump{top:calc(env(safe-area-inset-top,0px) + 46px)}
@media (max-width:699px){.act-jump{top:env(safe-area-inset-top,0px)}}
.hr-tools{display:flex;flex-direction:column;gap:8px;margin-top:8px;border-top:1px solid var(--line);padding-top:10px}
.hr-form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.hr-form .field{width:96px}
.hr-quick{font-size:13px;color:var(--ink-3);align-self:center}
.hr-check-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:4px}
.hr-level{display:inline-flex;align-items:center;gap:6px;font-size:13px}
.hr-level .input{width:auto;min-height:32px;padding:4px 8px}
.hr-ok{align-self:flex-start}
.ch-svg.is-selectable{user-select:none;-webkit-user-select:none}
.act-analysis .kpis{margin-bottom:4px}
#act-charts,#act-iv,#act-zones,#act-laps,#act-analysis{scroll-margin-top:100px}

/* ---------- run type detection ---------- */
:root{--k-dint:#B8433A;--k-strd:#2F8FA6}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--k-dint:#E27F72;--k-strd:#5CC0D6}}
:root[data-theme="dark"]{--k-dint:#E27F72;--k-strd:#5CC0D6}
.k-dint{--t:var(--k-dint)} .k-strd{--t:var(--k-strd)}
rect.k-dint,rect.k-strd{fill:var(--t)}
.legend .k-dint .sw,.legend .k-strd .sw{background:var(--t)}
.det{display:flex;flex-direction:column;gap:4px;margin-top:4px}
.det-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.det-kind{--t:var(--run);display:inline-block;font-family:var(--display);font-size:17px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--t);border:1.5px solid var(--t);border-radius:8px;padding:2px 10px}
.det-conf{font-size:12.5px;color:var(--ink-3)}
.det-reason{margin:0;font-size:14.5px;color:var(--ink-2)}
.det-meta{margin:0;font-size:12.5px;color:var(--ink-3)}
.det-meta b{color:var(--ink)}
.input-ro{display:flex;align-items:center;gap:6px;background:var(--surface-2);color:var(--ink)}
.sh-easy{fill:color-mix(in srgb,var(--ink-3) 10%,transparent)}
.sh-work{fill:color-mix(in srgb,var(--run) 14%,transparent)}
.sh-finish{fill:color-mix(in srgb,var(--z4) 16%,transparent)}
.act-work .kpis{margin-bottom:6px}
.parts th,.segs th{text-align:left;font-weight:600}
.parts .muted{color:var(--ink-3);font-weight:500}
.parts tr.part-rep th,.parts tr.part-tempo th{color:var(--run)}
.parts tr.part-finish th{color:var(--z4)}
.segs tr.seg-recovery td,.segs tr.seg-recovery th,.segs tr.seg-warmup td,.segs tr.seg-warmup th,.segs tr.seg-cooldown td,.segs tr.seg-cooldown th,.segs tr.seg-jog td,.segs tr.seg-jog th{color:var(--ink-3)}
.segs tr.seg-rep th{color:var(--run)}
.segs tr.is-slow th{color:var(--danger)}
.seg-details{margin-top:10px}
.seg-details summary{cursor:pointer;font-weight:600;font-size:14px}
.hbars li.rb-fast{--t:var(--run)} .hbars li.rb-slow{--t:var(--ink-3)}

/* ---------- reps compared ---------- */
.rep-compare{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.rep-compare li{display:grid;grid-template-columns:92px minmax(80px,1fr) 120px 118px minmax(150px,auto);gap:4px 12px;align-items:center;padding:7px 0;border-top:1px solid var(--line);font-size:14px;font-variant-numeric:tabular-nums}
.rep-compare li:first-child{border-top:0}
.rc-n{font-weight:600;white-space:nowrap}
.rc-bar{height:12px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.rc-bar span{display:block;height:100%;border-radius:99px;background:color-mix(in srgb,var(--run) 55%,var(--surface-2))}
.rep-compare li.is-best .rc-bar span{background:var(--run)}
.rc-amt,.rc-pace{font-weight:600;white-space:nowrap}
.rc-d{font-weight:500;font-size:12.5px;color:var(--ink-3);margin-left:2px}
.rc-rec{font-size:13px;color:var(--ink-3);white-space:nowrap}
.parts tr.part-work th{color:var(--run)}
.parts tr.part-other th{color:var(--ink-2)}
@media (max-width:640px){
  .rep-compare li{grid-template-columns:74px minmax(0,1fr);grid-template-areas:"n bar" "amt pace" "rec rec"}
  .rc-n{grid-area:n} .rc-bar{grid-area:bar} .rc-amt{grid-area:amt} .rc-pace{grid-area:pace} .rc-rec{grid-area:rec;white-space:normal}
}

.sh-extra{fill:color-mix(in srgb,var(--k-strd) 14%,transparent)}
.segs tr.seg-extra th{color:var(--k-strd)}

/* ---------- body & fitness ---------- */
.wt-line,.vo-line,.mh-line{fill:none;stroke-width:2.2}
.wt-line{stroke:var(--ink)} .wt-line-dot{fill:var(--ink)}
.wt-dot{fill:color-mix(in srgb,var(--lift) 70%,transparent)}
.wt-bar{fill:color-mix(in srgb,var(--z4) 70%,transparent)} .wt-bar.neg{fill:color-mix(in srgb,var(--z2) 75%,transparent)}
.zero-line{stroke:var(--ink-3);stroke-width:1}
.vo-line{stroke:var(--run)} .vo-line-dot{fill:var(--run)}
.vo-run{fill:none;stroke:var(--run);stroke-width:1.5;opacity:.7}
.mh-line{stroke:var(--hr)} .mh-line-dot{fill:var(--hr)}
.mh-peak{fill:none;stroke:var(--hr);stroke-width:1.3;opacity:.45} .mh-hard{fill:var(--hr);opacity:.75}
.legend .mh-l .sw{background:var(--hr);height:3px;border-radius:0}
.legend .mh-h .sw{background:var(--hr);opacity:.75;border-radius:50%}
.legend .mh-p .sw{background:transparent;border:1.5px solid var(--hr);opacity:.6;border-radius:50%}
.zone-time{margin-top:10px}
.zone-time thead th{font-size:12px;font-weight:500;color:var(--ink-3)}
.legend .wt-l .sw{background:var(--ink);height:3px;border-radius:0}
.legend .wt-d .sw{background:color-mix(in srgb,var(--lift) 70%,transparent);border-radius:50%}
.legend .vo-l .sw{background:var(--run);height:3px;border-radius:0}
.legend .vo-r .sw{background:transparent;border:1.5px solid var(--run);border-radius:50%}
.zone-kv th .sw{display:inline-block;width:10px;height:10px;border-radius:2px;background:var(--t);margin-right:6px;vertical-align:-1px}
.wt-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.wt-tools .input{width:96px}
.wt-tools .spacer{flex:1}

/* ---------- weekly goal ---------- */
.goal{display:flex;flex-direction:column;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.goal .eyebrow{margin:0}
.goal-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.goal-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.goal-rows li{display:grid;grid-template-columns:62px minmax(0,1fr);gap:3px 10px;align-items:baseline}
.gl{font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.gv{font-variant-numeric:tabular-nums;color:var(--ink-2)}
.gv b{font-family:var(--display);font-size:20px;font-weight:600;color:var(--ink)}
.goal-bar{grid-column:2;display:flex;height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.gb-done{background:var(--run)}
.gb-plan{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--run) 45%,transparent) 0 3px,transparent 3px 6px)}
.gs{grid-column:2;font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.gs.is-ok{color:var(--run);font-weight:600}
.goal.is-sugg .gv b{color:var(--ink-2)}
.goal-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.goal-form .input{width:100%}
.goal-dist{display:block;padding:8px 0;font-family:var(--display);font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}
.goal-btns{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.goal-btns .spacer{flex:1}
.goal .hint{margin:0}
.rp-goal{color:var(--ink-2)} .rp-goal.is-sugg{color:var(--ink-3);font-style:italic}

/* ---------- editor page ---------- */
.edit-page{max-width:720px}
.edit-head{margin:6px 0 14px}
.edit-head h2{margin:0;font-family:var(--display);font-size:30px;font-weight:600}
.edit-body{display:flex;flex-direction:column;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px}
.edit-foot{position:sticky;bottom:0;z-index:5;display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;padding:12px 0 calc(12px + env(safe-area-inset-bottom,0px));background:var(--bg);border-top:1px solid var(--line)}
@media (max-width:640px){.edit-foot{bottom:calc(64px + env(safe-area-inset-bottom,0px))}}

/* ---------- history table ---------- */
.hist-layout{display:grid;gap:18px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1000px){.hist-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start}.hist-side{position:sticky;top:calc(env(safe-area-inset-top,0px) + 64px)}}
.hist-count{margin:0 0 6px}
.hist-wrap{border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow-x:auto}
.app[data-view="history"]{max-width:1560px}
.hist-tbl{width:100%;border-collapse:collapse;font-size:13.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.hist-tbl th,.hist-tbl td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left}
.hist-tbl .num{text-align:right}
.hist-tbl thead th{position:sticky;top:0;z-index:2;background:var(--surface-2);padding:0}
.hist-tbl thead th button{width:100%;background:none;border:0;padding:7px 10px;font:inherit;font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);text-align:inherit;cursor:pointer}
.hist-tbl thead th.num button{text-align:right}
.hist-tbl tbody tr:not(.hw):hover{background:color-mix(in srgb,var(--run) 6%,transparent)}
.hist-tbl tr.hw th,.hist-tbl tr.hw td{background:var(--bg);font-weight:700;color:var(--ink);border-top:2px solid var(--line)}
.hw-n{font-weight:500;color:var(--ink-3);margin-left:6px}
.hw-goal{font-weight:500;color:var(--ink-3);margin-left:10px}
.hw-goal.is-met{color:var(--run);font-weight:700}
.hc-date{color:var(--ink-2)}
.hc-type{display:inline-flex;align-items:center;gap:5px;color:var(--t, var(--ink-2));font-weight:600}
.hc-type .sw{width:9px;height:9px;border-radius:2px;background:var(--t, var(--ink-3))}
.hc-title{white-space:normal;min-width:140px}
.hc-title .link{font-weight:600;text-decoration:none}
.hc-title .link:hover{text-decoration:underline}
.hc-chart{color:var(--ink-3);font-size:10px}
.hc-detail{color:var(--ink-2);white-space:normal;min-width:150px}
.hist-side{display:flex;flex-direction:column;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}
.hist-side .eyebrow{margin:0}
.gw-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.gw{display:grid;gap:3px;padding:8px 0;border-top:1px solid var(--line)}
.gw-wk{font-weight:700;font-size:13.5px}
.gw-v{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.gw-v b{color:var(--ink)}
.gw.is-met .gw-wk::after{content:" ✓";color:var(--run)}
.goal-left{display:flex;flex-direction:column;gap:3px;padding:8px 10px;border-radius:8px;background:var(--surface-2);font-size:13.5px}
.goal-left p{margin:0}
.goal-left .lbl{margin-right:4px}
.goal-left.is-done{color:var(--run)}
.goal-left .gs{display:block}

/* ---------- progression ---------- */
:root{--k-prog:#8A5A00}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--k-prog:#E0A94A}}
:root[data-theme="dark"]{--k-prog:#E0A94A}
.k-prog{--t:var(--k-prog)} rect.k-prog{fill:var(--t)} .legend .k-prog .sw{background:var(--t)}
.prog-list{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column}
.prog-list li{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:7px 0;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
.prog-list li:first-child{border-top:0}
.prog-q{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;font-weight:600}
.prog-q i{font-style:normal;color:var(--ink-3);font-weight:400}

/* ---------- today: load range, week ---------- */
.ld-acute,.ld-target,.ld-min,.ld-max{fill:none;stroke-width:2}
.ld-acute{stroke:var(--acute, var(--run));stroke-width:2.4} .ld-acute-dot{fill:var(--acute, var(--run))}
.ld-target{stroke:var(--ink-2);stroke-dasharray:2 3} .ld-target-dot{fill:var(--ink-2)}
.ld-min,.ld-max{stroke:var(--ink-3);stroke-dasharray:6 4;stroke-width:1.4} .ld-min-dot,.ld-max-dot{display:none}
.legend .ld-a .sw{background:var(--acute, var(--run));height:3px;border-radius:0}
.legend .ld-t .sw{background:transparent;border-top:2px dotted var(--ink-2);height:0;border-radius:0}
.legend .ld-r .sw{background:transparent;border-top:2px dashed var(--ink-3);height:0;border-radius:0}
.td-week .goal{border-bottom:0;padding-bottom:0}
.td-week-sub{margin:8px 0 0}
.hist-tbl tr.hr-row{cursor:pointer}
.runplan{display:flex;flex-direction:column;gap:18px;max-width:760px}
.rp-empty{margin:0;font-size:13.5px;color:var(--ink-3)}
.rp-plan{align-self:flex-start;font-size:13.5px}

/* training status lines */
:root{--ld-min:#3E86C9;--ld-target:#2E9A57;--ld-max:#D6453D;--ld-trend:#8A4FC4}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--ld-min:#5AA2E6;--ld-target:#55B877;--ld-max:#F0665D;--ld-trend:#B58AF0}}
:root[data-theme="dark"]{--ld-min:#5AA2E6;--ld-target:#55B877;--ld-max:#F0665D;--ld-trend:#B58AF0}
.ld-min{stroke:var(--ld-min);stroke-dasharray:6 4;stroke-width:1.8}
.ld-max{stroke:var(--ld-max);stroke-dasharray:6 4;stroke-width:1.8}
.ld-target{stroke:var(--ld-target);stroke-dasharray:none;stroke-width:2}
.ld-trend{fill:none;stroke:var(--ld-trend);stroke-width:2;stroke-dasharray:2 3} .ld-trend-dot{display:none}
.ld-target-dot{fill:var(--ld-target)}
.legend .ld-t .sw{border-top:2px solid var(--ld-target)}
.legend .ld-mn .sw{background:transparent;border-top:2px dashed var(--ld-min);height:0;border-radius:0}
.legend .ld-mx .sw{background:transparent;border-top:2px dashed var(--ld-max);height:0;border-radius:0}
.legend .ld-tr .sw{background:transparent;border-top:2px dotted var(--ld-trend);height:0;border-radius:0}
.vo-garmin{fill:var(--k-tempo, #C27A00);stroke:var(--surface);stroke-width:1}
.legend .vo-g .sw{background:var(--k-tempo, #C27A00);border-radius:2px;transform:rotate(45deg)}

/* ---------- editor in place, inside a day of the Week view ---------- */
.edit-slot{width:100%}
.editor-inline{background:var(--surface);border:1.5px solid var(--run);border-radius:12px;padding:12px 14px;box-shadow:0 2px 10px rgba(0,0,0,.06)}
.editor-inline .edit-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin:0 0 10px}
.editor-inline .edit-head h2{font-size:22px}
.editor-inline .edit-body{border:0;padding:0;background:none;gap:12px}
.editor-inline .edit-foot{position:static;background:none;padding:10px 0 0;margin-top:10px}
.hc-vo2 small{font-size:11.5px;margin-left:3px;color:var(--ink-3)}
.hc-vo2 small.up{color:var(--run)} .hc-vo2 small.down{color:var(--z5)}

/* ---------- run page, cleaned-up top ---------- */
.act-head{margin:4px 0 10px}
.act-head .eyebrow{margin:0}
.act-head h2{margin:2px 0 4px}
.act-sub{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0;font-size:14.5px;color:var(--ink-2)}
.act-sub .det-kind{font-size:13px;padding:1px 8px;border-width:1.5px}
.act-struct{font-family:var(--display);font-size:18px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
/* The run's numbers: one table of groups (distance & pace, heart rate, effort, fitness & form).
   Groups share a row in proportion to how many cells they have and wrap as a whole; the outer
   edges' borders are tucked under the rounded box (negative margins + overflow hidden). */
.act-key{display:flex;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.act-grp{flex:var(--n) 1 calc(var(--n) * 150px);min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 -1px -1px 0}
.act-grp-l{margin:0;padding:8px 12px 0;font-family:var(--display);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.act-grp-c{display:flex;flex-wrap:wrap;flex:1;overflow:hidden}
.act-grp-c .act-stat{flex:1 0 96px;padding-top:4px}
.act-key .act-stat-v{font-size:24px}
@media (max-width:560px){.act-grp-c .act-stat{flex:0 0 calc(33.333% + 1px)}} /* a column grid down the page (+1px for the tucked border) */
.hr-fix{margin-top:8px;border-top:1px solid var(--line);padding-top:8px}
.hr-fix>summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;font-size:13.5px;font-weight:600;color:var(--ink-2)}
.hr-fix>summary::-webkit-details-marker{display:none}
.hr-fix>summary::before{content:"▸";color:var(--ink-3);transition:transform .15s}
.hr-fix[open]>summary::before{transform:rotate(90deg)}
.hr-flag{font-size:12.5px;font-weight:600;color:var(--z5);background:color-mix(in srgb,var(--z5) 12%,transparent);border-radius:99px;padding:1px 8px}
.hr-okay{font-size:12.5px;font-weight:600;color:var(--run)}
.hr-fix .hr-tools{border-top:0;padding-top:4px}
.act-sec-h{font-family:var(--display);font-size:20px;font-weight:600;margin:18px 0 8px}
.det-more{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.det-more>summary{cursor:pointer;font-size:13.5px;font-weight:600;color:var(--ink-2)}
.act-jump{margin:14px 0 4px}

/* ---------- tidier workout cards ---------- */
.wk-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.wk-top .wk-title{margin:0}
.wk-kind{color:var(--t);font-weight:600}

/* ---------- runs list rows ---------- */
.rp-head{align-items:baseline}
.rp-head .rp-total{margin-left:auto}
.rp-plan{font-size:13px;margin-left:12px}
.rp-row{display:grid;grid-template-columns:62px minmax(0,1.6fr) repeat(3,minmax(0,.8fr)) minmax(0,.7fr);gap:10px;align-items:center;padding:8px 12px}
.rp-c-day{display:flex;flex-direction:column;font-family:var(--display);font-weight:600;font-size:15px;color:var(--ink-2);line-height:1.1}
.rp-c-day small{font-family:var(--body, inherit);font-size:11px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em}
.rp-c-type{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;min-width:0}
.rp-c-type .sw{width:9px;height:9px;border-radius:2px;background:var(--t);align-self:center;flex:none}
.rp-c-type b{font-weight:600}
.rp-c-type small{color:var(--ink-2);font-size:13px;font-variant-numeric:tabular-nums}
.rp-c{font-variant-numeric:tabular-nums;font-size:14px;color:var(--ink-2);text-align:right;white-space:nowrap}
.rp-c-load{color:var(--ink-3);font-size:13px}
@media (max-width:640px){.rp-row{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;row-gap:2px}.rp-c-day{flex:0 0 46px}.rp-c-type{flex:1 1 60%}.rp-row .rp-c{text-align:left;font-size:13px}.rp-row .rp-c:nth-child(3){margin-left:56px}}

.gv-plan{margin:4px 0 0;font-size:13px;font-weight:600}
.gv-plan.is-ok{color:var(--run)} .gv-plan.is-short{color:var(--z5)} .gv-plan.is-none{color:var(--ink-3);font-weight:500}

.act-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.act-bar .eyebrow{margin:0 0 0 4px}
.act-head h2{font-size:28px;margin:4px 0 4px}
.act-xbar{padding:4px 0;margin-top:6px}
.act-xbar .seg button{min-height:30px;padding:4px 12px}
.act-at{font-size:12.5px}

/* ---------- coach ---------- */
.coach-top{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}
.coach-h{font-family:var(--display);font-size:30px;font-weight:600;margin:0}
.coach-summary{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}
.coach-lead{margin:0;font-size:15.5px;line-height:1.5}
.coach-focus{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:12px 14px;border-radius:10px;background:color-mix(in srgb,var(--run) 9%,var(--surface));border:1px solid color-mix(in srgb,var(--run) 35%,transparent)}
.coach-focus.is-second{background:var(--surface-2);border-color:var(--line)}
.coach-focus .eyebrow{margin:0 0 2px}
.coach-sug{margin:0;font-size:14px;color:var(--ink-2)}
.coach-sug b{color:var(--ink)}
.coach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;margin-bottom:14px}
.coach-card{display:flex;flex-direction:column;gap:6px;border-top:4px solid var(--ink-3)}
.coach-card.is-leading{border-top-color:var(--run)} .coach-card.is-lagging{border-top-color:var(--z5)} .coach-card.is-on-par{border-top-color:var(--z2)}
.coach-card-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.coach-card-h h3{margin:0;font-family:var(--display);font-size:20px;font-weight:600}
.coach-status{font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.is-leading .coach-status{color:var(--run)} .is-lagging .coach-status{color:var(--z5)} .is-on-par .coach-status{color:var(--z2)}
.coach-val{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.coach-v{font-family:var(--display);font-size:30px;font-weight:600;font-variant-numeric:tabular-nums}
.coach-v small{font-size:14px;color:var(--ink-3);font-weight:500;margin-left:4px}
.coach-trend{font-size:13.5px;font-weight:600;color:var(--ink-2)} .coach-trend small{font-weight:500;color:var(--ink-3)}
.coach-sub{margin:0;font-size:13px;color:var(--ink-3)}
.coach-train{margin:0;font-size:13.5px;color:var(--ink-2)} .coach-train .up{color:var(--run)} .coach-train .down{color:var(--z5)}
.coach-how>summary{cursor:pointer;font-size:12.5px;color:var(--ink-3)} .coach-how p{margin:4px 0 0;font-size:13px;color:var(--ink-2)}
.mix-row{display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px;align-items:center;margin:6px 0}
.mix-l{font-size:13px;color:var(--ink-2)}
.mix-bar{display:flex;height:14px;border-radius:99px;overflow:hidden;background:var(--surface-2)}
.mix-base,.mix-base-l .sw{background:var(--z2)} .mix-endurance,.mix-endurance-l .sw{background:var(--k-long, #6E7F63)} .mix-threshold,.mix-threshold-l .sw{background:var(--z4)} .mix-vo2,.mix-vo2-l .sw{background:var(--z5)}
.coach-method{margin-top:14px} .coach-method>summary{cursor:pointer}
@media (max-width:640px){.coach-focus{flex-direction:column;align-items:flex-start}}
.kc-line{fill:none;stroke:var(--z4);stroke-width:2} .kc-line-dot{fill:var(--z4)}
.kc-band{fill:none;stroke:color-mix(in srgb,var(--z4) 45%,transparent);stroke-width:1;stroke-dasharray:3 3} .kc-band-dot{display:none}
/* Stats tabs */
.st-tabs{position:sticky;top:calc(env(safe-area-inset-top,0px) + 46px);z-index:4;background:var(--bg);display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line);margin-bottom:14px}
.st-tabs::-webkit-scrollbar{display:none}
.st-tab{flex:none;border:0;background:transparent;padding:10px 14px;font-weight:600;color:var(--ink-2);border-bottom:3px solid transparent;margin-bottom:-1px;min-height:44px}
.st-tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--run)}
.st-tab:hover{color:var(--ink)}
@media (max-width:699px){.st-tabs{top:env(safe-area-inset-top,0px)}}
/* Records */
.pr-intro{margin:0 0 12px}
.pr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.pr-card{display:flex;flex-direction:column;gap:4px;margin:0}
.pr-card.is-empty{opacity:.7}
.pr-val{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.pr-v{font-family:var(--display);font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.pr-v small{font-size:14px;font-weight:600;margin-left:3px;color:var(--ink-2)}
.pr-s{color:var(--ink-2);font-variant-numeric:tabular-nums}
.pr-gain{margin:0;color:var(--ink-3);font-size:13px}
.pr-dot{fill:color-mix(in srgb,var(--ink-3) 55%,transparent)}
.pr-line{fill:none;stroke:var(--run);stroke-width:2.2} .pr-line-dot{fill:var(--run)}
.pr-prog summary{cursor:pointer;color:var(--ink-2);font-size:13px;font-weight:600;padding:4px 0}
.pr-prog .kv th{font-weight:500}
.pr-sum{margin:0 0 12px}
.rec-sub{margin:-4px 0 12px}
.rec-sub .seg button{min-height:32px}
/* Curves */
.cv-panel{margin:0 0 12px}
.cv-now,.cv-d0,.cv-d1,.cv-d2,.cv-all,.cv-pred{fill:none;stroke-width:2.4;stroke-linejoin:round}
.cv-now{stroke:var(--run)} .cv-now-dot{fill:var(--run)}
.cv-d0{stroke:var(--run)} .cv-d0-dot{fill:var(--run)} .cv-d1{stroke:var(--z2)} .cv-d1-dot{fill:var(--z2)} .cv-d2{stroke:var(--z4)} .cv-d2-dot{fill:var(--z4)}
.cv-all{stroke:var(--ink-3);stroke-width:1.6;opacity:.55}
.cv-pred{stroke:var(--z5);stroke-width:1.8;stroke-dasharray:5 4;opacity:.8}
circle.is-link{cursor:pointer} circle.is-link:hover{r:6}
.cv-mark{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:3 4} .cv-mark-t{font-size:10.5px}
.legend .cv-now-l .sw,.legend .cv-d0-l .sw{background:var(--run)} .legend .cv-d1-l .sw{background:var(--z2)} .legend .cv-d2-l .sw{background:var(--z4)}
.legend .cv-all-l .sw{background:var(--ink-3);opacity:.55} .legend .cv-pred-l .sw{background:transparent;border-top:2px dashed var(--z5);height:0;border-radius:0}
.pr-h{font-family:var(--display);font-size:20px;font-weight:600;margin:20px 0 8px}
.pr-eff th small,.pr-eff td small{display:block;font-size:12px;font-weight:500;color:var(--ink-3);font-variant-numeric:tabular-nums}
.pr-eff{width:auto;min-width:min(100%,520px)}
.pr-eff th,.pr-eff td{text-align:left;padding-right:24px}
.pr-eff td{font-variant-numeric:tabular-nums;font-weight:600}
.pr-eff thead th{font-size:13px;color:var(--ink-2)}
/* Run page tabs and its Coach */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.act-tabs{margin-bottom:12px}
.act-line{font-variant-numeric:tabular-nums;color:var(--ink-2)}
.act-body .act-xbar{position:static;padding-top:0}
.act-body .act-zones{margin-top:12px}
.rch{margin:0;max-width:760px}
.rch-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.rch-item{display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border-radius:10px;border:1px solid var(--line);border-left:4px solid var(--t);--t:var(--ink-3)}
.rch-good{--t:var(--run)} .rch-bad{--t:var(--danger)} .rch-note{--t:var(--z2)}
.rch-minor{--t:color-mix(in srgb,var(--run) 55%,var(--line));padding-block:8px} .rch-minor .rch-t{font-weight:600} .rch-minor .rch-ic{font-size:18px}
.rch-sub{margin:4px 0 0;padding-left:18px;color:var(--ink-2);font-size:13.5px;line-height:1.45;font-variant-numeric:tabular-nums}
.rch-sub li{margin:1px 0}
.rch-fold summary{cursor:pointer;color:var(--ink-2);font-size:13px;font-weight:600;margin-top:4px}
.rch-ic{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:14px;line-height:1;color:var(--surface);background:var(--t)}
.rch-t{margin:0;font-weight:700}
.rch-d{margin:2px 0 0;color:var(--ink-2);font-size:14px;line-height:1.45}
.rch-none{margin:0;color:var(--ink-2)}
.rch-how{margin:12px 0 0}
.hbars li.hz1{--t:var(--z1)} .hbars li.hz2{--t:var(--z2)} .hbars li.hz3{--t:var(--z3)} .hbars li.hz4{--t:var(--z4)} .hbars li.hz5{--t:var(--z5)}
/* Weight tab */
.wt-band{fill:none;stroke:color-mix(in srgb,var(--ink) 35%,transparent);stroke-width:1;stroke-dasharray:3 3} .wt-band-dot{display:none}
.legend .wt-b .sw{background:transparent;border-top:1px dashed var(--ink-3);height:0;border-radius:0}
.kc-day{fill:color-mix(in srgb,var(--z4) 70%,transparent)} .kc-day.neg{fill:color-mix(in srgb,var(--z2) 75%,transparent)}
.legend .kc-d .sw{background:color-mix(in srgb,var(--z2) 75%,transparent)}
.legend .kc-l .sw{background:var(--z4);height:3px;border-radius:0}
.legend .kc-b .sw{background:transparent;border-top:1px dashed var(--z4);height:0;border-radius:0}
.table-wrap{overflow-x:auto}
.data-table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:14px}
.data-table th,.data-table td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
.data-table th{font-size:12px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em}
.data-table .num{text-align:right}
.data-table .muted{color:var(--ink-3)}
.data-table tr.muted-row td{color:var(--ink-3)}
.weight .wt-tools{margin-top:12px}
/* Coach: next week */
.wp-goal{margin:0 0 10px}
.wp-list{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.wp-row{display:grid;grid-template-columns:64px minmax(0,1fr) 110px;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);align-items:start}
.wp-row.is-rest{color:var(--ink-3);padding:6px 0}
.wp-day{font-weight:700;display:flex;flex-direction:column;line-height:1.2}
.wp-day small{font-weight:500;color:var(--ink-3)}
.wp-main b{margin-right:6px}
.wp-part{display:inline-block;font-size:11.5px;font-weight:600;padding:1px 7px;border-radius:99px;background:var(--bg);border:1px solid var(--line);color:var(--ink-2);margin:0 4px 0 0;vertical-align:1px}
.wp-part.is-lag{background:color-mix(in srgb,var(--z5) 12%,transparent);border-color:color-mix(in srgb,var(--z5) 45%,transparent);color:var(--z5)}
.wp-detail{margin:4px 0 0;font-size:14px}
.wp-why{margin:2px 0 0;font-size:13px;color:var(--ink-3)}
.wp-nums{display:flex;flex-direction:column;align-items:flex-end;font-variant-numeric:tabular-nums;font-size:14px;color:var(--ink-2)}
.wp-nums b{color:var(--ink)}
.wp-row .tag{font-size:11px;margin-right:6px}
.wp-total{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 16px;padding:10px 0 4px;font-variant-numeric:tabular-nums}
.wp-verdict.is-met{color:var(--run);font-weight:700} .wp-verdict.is-short{color:var(--z5);font-weight:700}
.wp-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:8px}
@media (max-width:599px){.wp-row{grid-template-columns:48px minmax(0,1fr)}.wp-nums{grid-column:2;flex-direction:row;gap:10px;justify-content:flex-start}}
/* History: Coach columns */
.hist-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.hist-bar .hist-count{margin:0}
.seg-sm button{min-height:28px;padding:3px 11px;font-size:13px}
.hist-hint{margin:0 0 8px;max-width:980px}
.hist-tbl td.cc{position:relative;min-width:84px;vertical-align:top}
.cc-v{font-weight:600}
.cc-bar{display:block;height:4px;border-radius:2px;margin:3px 0 0 auto;opacity:.85}
.cc-r{display:block;font-size:11.5px;color:var(--ink-3);margin-top:2px}
.mix-speed{background:var(--k-strd, #8A63C9)} .mix-economy{background:var(--ink-3)}
.dot-hit{fill:transparent;stroke:none}
.dot-g:hover circle:first-child{r:4.5}
.bf-dot{fill:color-mix(in srgb,var(--z4) 70%,transparent)}
.bf-line{fill:none;stroke:var(--z4);stroke-width:2.2} .bf-line-dot{fill:var(--z4)}
.legend .bf-l .sw{background:var(--z4);height:3px;border-radius:0}
.legend .bf-d .sw{background:color-mix(in srgb,var(--z4) 70%,transparent);border-radius:50%}
/* Week: Coach's suggestions */
.sug-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:10px 12px;margin-bottom:10px;border:1px dashed color-mix(in srgb,var(--run) 55%,transparent);border-radius:10px;background:color-mix(in srgb,var(--run) 6%,var(--surface));font-size:14px}
.sug-bar.is-off{border-style:solid;border-color:var(--line);background:var(--surface);color:var(--ink-3)}
.sug-msg{flex:1 1 320px}
.sug-bar-actions{display:flex;gap:12px;align-items:center}
.sug-ok{color:var(--run);font-weight:700} .sug-short{color:var(--z5);font-weight:700}
.sug-skipped{color:var(--ink-3);font-size:13px}
.sug-card{border:1.5px dashed color-mix(in srgb,var(--run) 60%,transparent);border-radius:10px;padding:9px 11px;margin:0 0 8px;background:color-mix(in srgb,var(--run) 5%,var(--surface))}
.sug-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sug-tag{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--run);border:1px solid color-mix(in srgb,var(--run) 50%,transparent);border-radius:99px;padding:0 6px}
.sug-meta{margin:3px 0 0;font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.sug-parts{color:var(--ink-3);margin-left:4px}
.sug-detail{margin:4px 0 0;font-size:13.5px}
.sug-why{margin:2px 0 0;font-size:12.5px;color:var(--ink-3)}
.sug-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}

/* Help: ? tips, popover, menu, glossary */
.help-tip{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-left:5px;padding:0;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink-3);font:700 11px/1 var(--body, inherit);vertical-align:2px;cursor:pointer;text-transform:none;letter-spacing:0}
.help-tip:hover,.help-tip[aria-expanded="true"]{color:var(--ink);border-color:var(--ink-3)}
.help-tip::before{content:"";position:absolute;inset:-10px}
.help-tip{position:relative}
.help-pop{position:absolute;z-index:80;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.18);padding:10px 12px;font-size:14px;line-height:1.4}
.help-pop b{display:block;margin-bottom:3px}
.help-pop p{margin:0;color:var(--ink-2)}
.help-btn{font-weight:700;font-size:17px}
.help-menu{position:absolute;z-index:80;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 32px rgba(0,0,0,.18);padding:6px;display:flex;flex-direction:column;min-width:260px}
.help-menu button{display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;border:0;background:transparent;padding:9px 12px;border-radius:8px;color:var(--ink);cursor:pointer}
.help-menu button:hover,.help-menu button:focus-visible{background:var(--bg)}
.help-menu span{font-size:13px;color:var(--ink-3)}
.help-sheet-back{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.4);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;overflow:auto}
.help-sheet{background:var(--surface);border-radius:14px;max-width:640px;width:100%;padding:4px 18px 18px;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.gl-list{margin:0}
.gl-list dt{font-weight:700;margin-top:12px}
.gl-list dd{margin:2px 0 0;color:var(--ink-2);line-height:1.45}
/* Tour */
.tour{position:fixed;inset:0;z-index:95}
.tour-ring{position:fixed;border-radius:10px;box-shadow:0 0 0 9999px rgba(0,0,0,.5);outline:2px solid var(--run);pointer-events:none;transition:all .2s ease}
.tour-card{position:fixed;background:var(--surface);color:var(--ink);border-radius:12px;padding:12px 14px;box-shadow:0 12px 36px rgba(0,0,0,.3)}
.tour-card h3{margin:2px 0 4px}
.tour-card p{margin:0;line-height:1.45;color:var(--ink-2)}
.tour-n{font-size:12px;color:var(--ink-3)!important}
.tour-btns{display:flex;align-items:center;gap:8px;margin-top:12px}
/* Getting started */
.welcome{border:1.5px solid color-mix(in srgb,var(--run) 45%,var(--line));margin-bottom:14px}
.wel-head{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-start;justify-content:space-between}
.wel-head h2{margin:0 0 4px}
.wel-head p{margin:0;max-width:640px;color:var(--ink-2)}
.wel-meter{height:6px;border-radius:3px;background:var(--bg);margin:12px 0 4px;overflow:hidden}
.wel-meter span{display:block;height:100%;background:var(--run);border-radius:3px}
.wel-steps{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column}
.wel-step{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.wel-check{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;border:1.5px solid var(--line);color:var(--ink-3)}
.wel-step.is-next .wel-check{border-color:var(--run);color:var(--run)}
.wel-step.is-done .wel-check{background:var(--run);border-color:var(--run);color:#fff}
.wel-step.is-done .wel-title b{color:var(--ink-3)}
.wel-title{margin:3px 0 0}
.wel-done{font-size:12px;color:var(--run);font-weight:700;margin-left:6px}
.wel-text{margin:4px 0 0;color:var(--ink-2);line-height:1.45;max-width:720px}
.wel-act{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:8px}
.wel-act .wt-tools{margin:0}
.wel-act input.num{width:84px}
.wel-foot{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin:10px 0 0}
/* Empty states */
.empty-box{border:1px dashed var(--line);border-radius:12px;padding:22px 18px;text-align:center;background:var(--surface);margin:8px 0}
.empty-box h3{margin:0 0 6px}
.empty-box p{margin:0 auto;max-width:520px;color:var(--ink-2);line-height:1.45}
.empty-cta{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:14px}
.empty-note{margin:6px 0 2px;color:var(--ink-3);line-height:1.45}

/* Polish: Today as balanced columns (no gaps under short panels) */
.td-grid{display:block;columns:3 320px;column-gap:14px}
.td-grid > section{break-inside:avoid;margin:0 0 14px;width:100%}
.td-grid > .td-plan{column-span:all}
.attn li{padding:7px 0;gap:8px;font-size:13.5px}
.attn .attn-t{flex:1 1 180px}
.attn .link{font-size:13.5px}
.attn-more summary{cursor:pointer;color:var(--ink-2);font-size:13px;font-weight:600;padding:6px 0 0}
.pill-warn{color:var(--ink-3);border-color:var(--line)}
.goal-left .gs{margin:4px 0 0}
.coach-need{margin:6px 0;color:var(--ink-3);font-size:13px}
.pr-none{margin-top:14px}
/* Run page: extra charts two across on wide screens */
@media (min-width:1000px){.act-more .act-charts{display:grid;grid-template-columns:1fr 1fr;gap:12px}.act-more .act-charts > *{margin:0}}
@media (max-width:480px){.hide-sm{display:none}}
.race-kv thead th{font-size:12px;font-weight:700;color:var(--ink-3);text-align:left;padding-bottom:4px}
.race-kv td .muted{font-size:12.5px;margin-left:4px}

/* Strength */
.sx-start .sx-sessions{display:flex;flex-wrap:wrap;gap:8px}
.sx-sessions .btn{display:flex;flex-direction:column;align-items:flex-start;gap:0;padding:8px 14px;min-width:130px;height:auto}
.sx-sessions .btn small{font-weight:500;color:var(--ink-3);font-size:12px}
.sx-routine-head{display:flex;align-items:baseline;gap:6px 14px;flex-wrap:wrap;margin:18px 0 8px}
.sx-routine-head h3{margin:0;font-family:var(--display);font-size:22px}
.sx-routine-head .link{margin-left:auto}
.sx-why{margin:0 0 10px}
.sx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.sx-card{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;background:var(--surface)}
.sx-card.is-open{grid-column:1 / -1}
.sx-group{margin:0;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.sx-name{margin:0;font-size:16px}
.sx-rx{margin:0;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;font-size:13.5px}
.sx-how{margin:2px 0 0;font-size:13px;color:var(--ink-2);line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.sx-card.is-open .sx-how{-webkit-line-clamp:unset}
.sx-last{margin:2px 0 0;font-size:12.5px;color:var(--ink-3)}
.sx-card .link{align-self:flex-start;font-size:13px;margin-top:2px}
.eq-chip{font-size:11px;border-radius:99px;padding:0 7px;line-height:17px;border:1px solid var(--line);color:var(--ink-2)}
.eq-db{border-color:color-mix(in srgb,var(--lift) 45%,var(--line));color:var(--lift)}
.eq-band{border-color:color-mix(in srgb,var(--bw) 45%,var(--line));color:var(--bw)}
.eq-bench{border-color:color-mix(in srgb,var(--ink-3) 60%,var(--line))}
.sx-alts{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px}
.sx-alts li{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;border:1px dashed var(--line);border-radius:8px;padding:8px 10px}
.sx-alt-sub{display:block;font-size:12.5px;color:var(--ink-3)}
.sx-alt-how{display:block;font-size:12.5px;color:var(--ink-2);margin-top:2px;line-height:1.35}
.sx-lib-tools{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
.sx-lib-tools .input{max-width:420px}
.sx-lib-tools .chips{margin:0;align-items:center}
.sx-lib-group{margin-top:12px}
.sx-lib-group h4{margin:0 0 4px;font-size:15px}
.sx-lib-list{list-style:none;margin:0;padding:0}
.sx-lib-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:4px 10px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}
.sx-lib-list li.is-active{background:color-mix(in srgb,var(--run) 6%,transparent)}
.sx-lib-name{border:0;background:transparent;text-align:left;padding:0;color:var(--ink);cursor:pointer}
.sx-lib-eq{display:flex;gap:4px;flex-wrap:wrap}
.sx-in{font-size:12px;font-weight:700;color:var(--run)}
.sx-lib-how{grid-column:1 / -1;margin:0 0 4px;font-size:13px;color:var(--ink-2)}
@media (max-width:599px){.sx-lib-list li{grid-template-columns:minmax(0,1fr) auto}.sx-lib-eq{display:none}}
.sx-lib-group{border-top:1px solid var(--line);padding:6px 0}
.sx-lib-group > summary{cursor:pointer;padding:4px 0;list-style-position:inside}
.sx-lib-group > summary .opt{margin-left:4px}
.sx-lib-group[open] > summary{margin-bottom:4px}

/* Strength: suggestion, logger, week, focus, recovery, progress */
.sx-sug-why{margin:0 0 4px;font-weight:600}
.sx-sug-btns{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin-top:8px}
.lg-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--run);margin-left:4px;vertical-align:2px}
.lg{border:1.5px solid color-mix(in srgb,var(--run) 45%,var(--line))}
.lg-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.lg-title{font-family:var(--display);font-size:22px;font-weight:700;padding:4px 8px;max-width:420px}
.lg-clock{display:flex;flex-direction:column;align-items:flex-end}
.lg-t{font-family:var(--display);font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}
.lg-kpis{margin:10px 0 6px}
.lg-ex{border-top:1px solid var(--line);padding:12px 0}
.lg-ex-h{display:flex;align-items:flex-start;gap:8px}
.lg-ex-h > div{flex:1;min-width:0}
.lg-ex-h b{font-size:16px}
.lg-ex-sub{display:block;font-size:12.5px;color:var(--ink-3);margin-top:2px}
.lg-mode{width:auto;max-width:150px;padding:4px 8px;font-size:13px}
.lg-last{margin:4px 0 6px;font-size:12.5px;color:var(--ink-3)}
.lg-how{margin:0 0 6px;font-size:13px;color:var(--ink-2)}
.lg-sets{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:14px}
.lg-sets th{font-size:11.5px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:2px 8px 4px 0}
.lg-sets td{padding:3px 8px 3px 0}
.lg-sets td.num{min-width:70px}
.lg-sets .input.num{width:78px;padding:6px 8px}
.lg-sets tr.is-done td:first-child{color:var(--run);font-weight:700}
.lg-set-btns{white-space:nowrap}
.lg-check{color:var(--ink-3)}
.lg-check.is-on{background:var(--run);color:#fff;border-radius:50%}
.lg-ex-foot{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin-top:6px}
.lg-ex-m{font-size:13px;color:var(--ink-2)}
.fb{font-size:11.5px;font-weight:700;border-radius:99px;padding:0 7px}
.fb-light{background:var(--bg);color:var(--ink-3)} .fb-good{background:color-mix(in srgb,var(--run) 14%,transparent);color:var(--run)}
.fb-hard{background:color-mix(in srgb,var(--z4) 18%,transparent);color:var(--z4)} .fb-very-hard{background:color-mix(in srgb,var(--z5) 16%,transparent);color:var(--z5)}
.lg-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-top:1px solid var(--line);padding-top:12px}
.lg-add select{max-width:360px}
.lg-foot{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-top:14px}
.rc{font-size:11.5px;font-weight:700;border-radius:99px;padding:1px 8px;white-space:nowrap}
.rc-ready{background:color-mix(in srgb,var(--run) 14%,transparent);color:var(--run)}
.rc-nearly{background:color-mix(in srgb,var(--z4) 16%,transparent);color:var(--z4)}
.rc-recovering{background:color-mix(in srgb,var(--z5) 14%,transparent);color:var(--z5)}
.rc-cats{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0}
.rc-cat{display:inline-flex;gap:6px;align-items:center;font-weight:600}
.rc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.rc-cell{border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.rc-cell.rc-recovering{border-color:color-mix(in srgb,var(--z5) 40%,var(--line))}
.rc-name{margin:0;font-weight:700;display:flex;justify-content:space-between;gap:6px;align-items:center}
.rc-sub{margin:3px 0 0;font-size:12.5px;color:var(--ink-3)}
.sw-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
@media (max-width:760px){.sw-days{grid-template-columns:repeat(2,minmax(0,1fr))}}
.sw-day .input{width:100%}
.sw-warn{margin:4px 0 0;font-size:12px;color:var(--z5)}
.mf-rows{display:flex;flex-direction:column}
.mf-row{display:grid;grid-template-columns:150px minmax(80px,1fr) 170px 110px;gap:10px;align-items:center;padding:6px 0;border-top:1px solid var(--line);font-size:14px}
.mf-row:first-child{border-top:0}
@media (max-width:640px){.mf-row{grid-template-columns:1fr auto}.mf-bar{grid-column:1 / -1;order:3}.mf-num{font-size:12.5px}}
.mf-bar{position:relative;height:8px;border-radius:4px;background:var(--bg);overflow:hidden}
.mf-target{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--run) 18%,transparent)}
.mf-fill{position:absolute;left:0;top:2px;bottom:2px;border-radius:3px;background:var(--ink-3)}
.mf-on .mf-fill{background:var(--run)} .mf-over .mf-fill{background:var(--z4)} .mf-neglected .mf-fill{background:var(--z5)}
.mf-num{font-variant-numeric:tabular-nums;color:var(--ink-2)}
.mf-st{font-size:12.5px;font-weight:700;color:var(--ink-3)}
.mf-on .mf-st{color:var(--run)} .mf-neglected .mf-st{color:var(--z5)} .mf-over .mf-st{color:var(--z4)}
.sxp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.sxp-card{margin:0}
.sxp-v{margin:0 0 4px}
.sxp-v .up{color:var(--run);font-weight:700} .sxp-v .down{color:var(--z5);font-weight:700}
.tl-lift{fill:none;stroke:var(--lift);stroke-width:2} .tl-lift-dot{fill:var(--lift)}
.sxc-upper{fill:var(--lift)} .sxc-lower{fill:var(--run)} .sxc-core{fill:var(--z4)} .sxc-abs{fill:var(--bw)} .sxc-prevent{fill:var(--z2)}
.legend .sxc-upper-l .sw{background:var(--lift)} .legend .sxc-lower-l .sw{background:var(--run)} .legend .sxc-core-l .sw{background:var(--z4)} .legend .sxc-abs-l .sw{background:var(--bw)} .legend .sxc-prevent-l .sw{background:var(--z2)}

/* Section sub-tabs (Cardio) */
.sec-tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line);margin:-6px 0 14px}
.sec-tabs::-webkit-scrollbar{display:none}
.hist-top{margin-bottom:8px}
/* Week: moving workouts, rest days, Coach's plan options */
.wk-move{flex:none;align-self:center;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:var(--ink-3);padding:0;cursor:pointer}
.wk-move svg{width:18px;height:18px}
.wk-move:hover,.wk-move:focus-visible{background:var(--surface-2);color:var(--ink)}
.wk[draggable="true"],.wk-str-row[draggable="true"],.sug-card[draggable="true"]{cursor:grab}
.is-dragging{opacity:.45}
.day.is-drop{background:color-mix(in srgb,var(--run) 8%,transparent);outline:2px dashed color-mix(in srgb,var(--run) 60%,transparent);outline-offset:-2px;border-radius:10px}
.move-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:-2px 0 2px;padding:8px 10px;border-radius:10px;background:var(--surface-2)}
.move-bar .lbl{margin-right:2px}
.move-bar .chip small{color:var(--ink-3);font-weight:500}
.move-bar .chip[disabled]{opacity:.45}
.wk-str-row{display:flex;align-items:center;gap:4px;margin:0 0 6px}
.wk-str-row .wk-str{margin:0}
.day-add{display:flex;flex-wrap:wrap;gap:4px 14px}
.rest-card{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-2);font-size:14px}
.rest-card small{color:var(--ink-3);font-weight:500}
.rest-card .link{margin-left:auto}
.rest-ic{width:16px;height:16px;flex:none}
.rest-tag{margin-top:6px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.sug-opts{display:inline-flex;align-items:center;gap:8px}
.sug-opts .seg button{min-height:30px;padding:4px 10px;font-size:13px}
.sug-opts .seg button[disabled]{opacity:.45;cursor:default}
.wp-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:8px;margin:0 0 12px}
.wp-opt{display:flex;flex-direction:column;gap:3px;text-align:left;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.wp-opt[aria-checked="true"]{border:2px solid var(--run);padding:9px 11px;background:color-mix(in srgb,var(--run) 6%,var(--surface))}
.wp-opt[disabled]{opacity:.55;cursor:default}
.wp-opt-n{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.wp-opt-tag{font-size:13px;color:var(--ink-2)}
.wp-opt-sum{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.wk-str{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:1px dashed var(--line);background:transparent;border-radius:8px;padding:5px 10px;margin:0 0 6px;color:var(--ink-2);font-size:13.5px;cursor:pointer}
.wk-str .opt{margin-left:auto}
.wk-str.is-done{border-style:solid;color:var(--ink)}
.wk-str-ic{color:var(--lift);font-weight:700}
.td-str p{margin:4px 0}

.sc-areas{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin:8px 0}
.sc-area{border:1px solid var(--line);border-top:4px solid var(--ink-3);border-radius:10px;padding:8px 10px}
.sc-area.is-leading{border-top-color:var(--run)} .sc-area.is-lagging{border-top-color:var(--z5)} .sc-area.is-on-par{border-top-color:var(--z2)}
.sc-area-h{margin:0;display:flex;justify-content:space-between;gap:6px;align-items:center}
.sc-area .coach-status{font-size:11px}
.sc-rate{margin:4px 0 0;font-family:var(--display);font-size:24px;font-weight:700}
.sc-rate small{font-size:12px;color:var(--ink-3);margin-left:2px}
.sc-pp{margin:8px 0 0}
.sc-calls{list-style:none;margin:0 0 6px;padding:0}
.sc-calls li{display:flex;gap:10px;align-items:baseline;padding:5px 0;border-top:1px solid var(--line);font-size:14px}
.sc-call{flex:none;font-size:11.5px;font-weight:700;border-radius:99px;padding:1px 8px;min-width:64px;text-align:center}
.call-up{background:color-mix(in srgb,var(--run) 15%,transparent);color:var(--run)} .call-reps{background:color-mix(in srgb,var(--z2) 15%,transparent);color:var(--z2)}
.call-hold{background:color-mix(in srgb,var(--z4) 16%,transparent);color:var(--z4)} .call-start{background:var(--bg);color:var(--ink-3)}
.sc-deload{border:1.5px solid color-mix(in srgb,var(--z4) 50%,var(--line))}

/* Chart labels on hover or tap (chartkit initTips) */
.tip{position:fixed;z-index:60;pointer-events:none;white-space:pre-line;max-width:min(300px,calc(100vw - 12px));background:var(--ink);color:var(--bg);font-size:12.5px;font-weight:600;line-height:1.3;padding:5px 9px;border-radius:6px;box-shadow:var(--shadow);font-variant-numeric:tabular-nums}
.tip[hidden]{display:none}
.tip-pt{fill:var(--surface);stroke:var(--ink);stroke-width:1.5;opacity:0}
.tip-pt.is-hot{opacity:1}
svg circle.is-hot:not(.tip-pt){stroke:var(--ink);stroke-width:2}
svg rect.is-hot{stroke:var(--ink);stroke-width:1.5}
svg g.is-hot circle:first-child{stroke:var(--ink);stroke-width:2}

/* Settings: your data */
.set-data{flex-basis:100%;border-top:1px solid var(--line);padding-top:10px}
.set-btns{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}

/* Cardio level and challenges (Today, Level, a run's Coach tab) */
.td-grid > .td-xp{column-span:all}
.xp-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.xp-badge{flex:none;display:grid;place-items:center;align-content:center;width:58px;height:58px;border-radius:50%;border:3px solid var(--run);color:var(--run)}
.xp-badge .xp-n{font-family:var(--display);font-size:26px;font-weight:700;line-height:1}
.xp-badge .xp-l{font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;line-height:1.1}
.xp-big{width:76px;height:76px}
.xp-big .xp-n{font-size:34px}
.xp-main{flex:1 1 220px;min-width:0;display:flex;flex-direction:column;gap:5px}
.xp-rank{margin:0;font-size:16px}
.xp-rank .opt{font-size:13px}
.xp-bar{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.xp-bar span{display:block;height:100%;background:var(--run);border-radius:99px}
.xp-streak{flex:none;display:flex;flex-direction:column;align-items:center;padding:4px 10px;border-left:1px solid var(--line)}
.xp-sv{font-family:var(--display);font-size:26px;font-weight:700;line-height:1}
.xp-sl{font-size:11.5px;color:var(--ink-3)}
.xp-more{align-self:flex-start}
.cg-cols{display:grid;gap:8px 22px;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));margin:14px 0 10px}
.cg-h{margin:0 0 4px}
.cg-list{list-style:none;margin:0;padding:0}
.cg{display:flex;align-items:flex-start;gap:9px;padding:8px 0;border-top:1px solid var(--line)}
.cg:first-child{border-top:0}
.cg-ic{flex:none;width:18px;text-align:center;color:var(--ink-3);font-weight:700;line-height:22px}
.cg.is-on .cg-ic{color:var(--run)}
.cg.is-pass .cg-ic,.cg.is-pass .cg-xp{color:var(--run)}
.cg.is-fail .cg-ic,.cg.is-fail .cg-xp{color:var(--danger)}
.cg-t{flex:1;min-width:0}
.cg-t p{margin:0;overflow-wrap:anywhere}
.cg-t p:first-child{font-weight:600;font-size:14px}
.cg-d{font-size:12.5px;color:var(--ink-3)}
.cg-act{flex:none;display:flex;align-items:center;gap:2px}
.cg-btn{min-height:32px;padding:4px 12px}
.cg-btn.is-on{background:var(--run);border-color:var(--run);color:var(--surface)}
.cg-xp{font-size:13px;font-weight:700;color:var(--ink-2);white-space:nowrap}
.cg-swap{width:32px;height:32px;font-size:17px}
.cg-prog{display:block;height:4px;border-radius:99px;background:var(--surface-2);margin-top:5px;overflow:hidden;max-width:220px}
.cg-prog span{display:block;height:100%;background:var(--run)}
.cg-recent{margin-top:6px;border-top:1px dashed var(--line)}
.lv-hero .kpis{margin-top:14px}
.xb-time{fill:var(--run)} .xb-dist{fill:var(--z2)} .xb-load{fill:var(--z4)} .xb-rec{fill:var(--pwr)} .xb-goal{fill:var(--bw)} .xb-ch{fill:var(--z5)}
.legend .xb-time{--t:var(--run)} .legend .xb-dist{--t:var(--z2)} .legend .xb-load{--t:var(--z4)} .legend .xb-rec{--t:var(--pwr)} .legend .xb-goal{--t:var(--bw)} .legend .xb-ch{--t:var(--z5)}
.lv-rules th{white-space:nowrap}
.lv-ranks{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;font-size:13.5px}
.lv-cal{display:grid;grid-template-columns:repeat(7,minmax(0,28px));gap:5px;margin:4px 0 10px}
.lv-day{aspect-ratio:1;border-radius:5px;background:var(--surface-2);border:1.5px solid transparent}
.lv-day.is-run{background:var(--run)}
.lv-day.is-rest{background:transparent;border-color:var(--run)}
.lv-day.is-break{background:color-mix(in srgb,var(--danger) 30%,transparent);border-color:var(--danger)}
.lv-day.is-pending{background:transparent;border:1.5px dashed var(--ink-3)}
.legend .lv-l-run .sw{background:var(--run)} .legend .lv-l-rest .sw{background:transparent;border:1.5px solid var(--run)} .legend .lv-l-break .sw{background:color-mix(in srgb,var(--danger) 30%,transparent);border:1.5px solid var(--danger)}
.xp-log{list-style:none;margin:0;padding:0}
.xp-log li{display:flex;align-items:baseline;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:14px}
.xp-log li:first-child{border-top:0}
.xl-d{flex:none;width:52px;color:var(--ink-3);font-size:12.5px}
.xl-t{flex:1;min-width:0;display:flex;flex-direction:column}
.xl-t small{color:var(--ink-3);font-size:12.5px}
.xl-x{flex:none;font-variant-numeric:tabular-nums;color:var(--run)}
.xl-x.is-neg{color:var(--danger)}
.xp-run{border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:12px}
.xp-run > p{margin:0 0 4px}
@media (max-width:560px){
  .xp-head{gap:10px 14px}
  .xp-streak{flex-direction:row;align-items:baseline;gap:6px;border-left:0;padding:0;order:3}
  .xp-sv{font-size:22px}
  .xp-more{order:4;margin-left:auto;align-self:center}
}

/* Records: each record's weight */
.pr-wt{display:inline-block;margin-left:6px;font-family:var(--body);font-size:11px;font-weight:600;letter-spacing:0;color:var(--ink-3);border:1px solid var(--line);border-radius:99px;padding:0 7px;line-height:17px;vertical-align:3px;cursor:help}
.pr-wtab th{white-space:normal;font-weight:500}
.pr-wtab td{font-weight:700;text-align:right;width:60px}
.pr-weights{margin-top:6px}

/* Level: titles and levels tables */
.lv-table{font-size:13.5px}
.lv-table thead th{font-size:12px;font-weight:600;color:var(--ink-3)}
.lv-table th small{display:block;font-weight:400;font-size:12px;color:var(--ink-3);white-space:normal}
.lv-table th{white-space:normal}
.lv-table tr.is-cur th,.lv-table tr.is-cur td{color:var(--run);font-weight:700}
.lv-table tr.is-past th,.lv-table tr.is-past td{color:var(--ink-3)}
.lv-table + .link{display:inline-block;margin-top:8px;font-size:13px}
.cg-soon{margin:12px 0 6px;font-size:14px;color:var(--ink-2)}

/* Weight: targets and paces */
.tg-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));margin-bottom:10px}
.tg-card{border:1px solid var(--line);border-top:4px solid var(--t,var(--ink-3));border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.tg-run-c{--t:var(--run)} .tg-health-c{--t:var(--z2)} .tg-mix-c{--t:var(--z4)}
.tg-card .eyebrow{margin:0}
.tg-v{margin:0;font-family:var(--display);font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.tg-v small{font-size:15px;color:var(--ink-3);font-weight:500;margin-left:3px}
.tg-s{margin:0;font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.wt-setup{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.wt-setup .input{width:90px}

/* Level: streak calendar by week */
.lv-cal-h{margin-bottom:0}
.lv-dow{font-size:11px;font-weight:600;color:var(--ink-3);text-align:center}
.lv-day.is-future{background:transparent;border:1.5px dotted var(--line)}
.lv-day.is-none{background:transparent;border:1px solid var(--line);opacity:.5}
.lv-hero + .st-tabs{margin-top:2px}
.xl-t .link{align-self:flex-start;text-align:left}

/* Today: the day's runs and the last run side by side across the top */
.td-grid > .td-top{column-span:all;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));align-items:stretch;margin:0 0 14px}
.td-top > .panel{margin:0}
.td-top > .td-plan{grid-column:auto}

/* A planned run's records in reach */
.chn{margin:-2px 0 4px 40px;font-size:13px}
.chn > summary{cursor:pointer;color:var(--run);font-weight:600;list-style-position:inside}
.chn-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
.chn-list li{display:flex;flex-wrap:wrap;gap:0 8px;align-items:baseline;border-left:2px solid color-mix(in srgb,var(--run) 45%,var(--line));padding-left:8px}
.chn-n{font-weight:600;color:var(--ink)}
.chn-t{color:var(--ink-2);font-variant-numeric:tabular-nums}
.chn-h{flex-basis:100%;color:var(--ink-3);font-size:12px}

/* Record tiers */
.tier{display:inline-block;font-family:var(--body);font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:99px;padding:0 7px;line-height:17px;vertical-align:2px;cursor:help;border:1px solid}
.tier-gold{color:#8a6400;background:#fbeebd;border-color:#e3c35a}
.tier-silver{color:#4f5a64;background:#e9edf1;border-color:#b9c2ca}
.tier-bronze{color:#8a4b22;background:#f6e2d3;border-color:#d9a57f}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .tier-gold{color:#f2cf62;background:rgba(242,207,98,.12);border-color:rgba(242,207,98,.45)}:root:not([data-theme="light"]) .tier-silver{color:#c9d2da;background:rgba(201,210,218,.1);border-color:rgba(201,210,218,.4)}:root:not([data-theme="light"]) .tier-bronze{color:#e3a77c;background:rgba(227,167,124,.12);border-color:rgba(227,167,124,.45)}}
:root[data-theme="dark"] .tier-gold{color:#f2cf62;background:rgba(242,207,98,.12);border-color:rgba(242,207,98,.45)}
:root[data-theme="dark"] .tier-silver{color:#c9d2da;background:rgba(201,210,218,.1);border-color:rgba(201,210,218,.4)}
:root[data-theme="dark"] .tier-bronze{color:#e3a77c;background:rgba(227,167,124,.12);border-color:rgba(227,167,124,.45)}
.chn-list .tier{margin-left:2px}

/* Strength: priority per muscle group */
.sx-pri{display:flex;align-items:center;gap:8px;margin:4px 0 2px}
.sx-pri .seg button{min-height:26px;padding:2px 9px;font-size:12.5px}
.sx-pri-tag{margin-left:6px;font-size:10.5px;font-weight:700;letter-spacing:.04em;border-radius:99px;padding:0 6px;border:1px solid var(--line);text-transform:none}
.sx-pri-tag.pri-3{color:var(--run);border-color:color-mix(in srgb,var(--run) 45%,var(--line))}
.sx-pri-tag.pri-2{color:var(--ink-2)}
.sx-pri-tag.pri-1{color:var(--ink-3)}

/* ---------- Strength: priorities 1–5, designer, today, progress ---------- */
.sx-pri-tag.pri-1{color:var(--run);border-color:color-mix(in srgb,var(--run) 55%,var(--line));font-weight:800}
.sx-pri-tag.pri-2{color:var(--run);border-color:color-mix(in srgb,var(--run) 30%,var(--line))}
.sx-pri-tag.pri-3{color:var(--ink-2);border-color:var(--line)}
.sx-pri-tag.pri-4,.sx-pri-tag.pri-5{color:var(--ink-3)}
.sx-cat > .sx-pri{margin:0 0 12px}
.sx-comb{margin:2px 0 6px;font-size:12.5px}
.panel-head h3 .sx-pri-tag{vertical-align:middle}
.wd-setup{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:8px}
.wd-setup .input{width:auto}
.wd-opts,.wd-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:8px}
.wd-opt{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}
.wd-list{list-style:decimal inside}
.wd-list li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)}
.wd-list li .icon-btn{margin-left:auto}
.wd-own{display:flex;flex-direction:column;gap:4px;margin-top:6px;max-width:420px}
.sx-pri-tag.wd-hard-heavy{color:var(--lift);border-color:color-mix(in srgb,var(--lift) 45%,var(--line))}
.sx-pri-tag.wd-hard-moderate{color:var(--ink-2)}
.sx-pri-tag.wd-hard-light{color:var(--ink-3)}
.lt-list{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}
.lt-ex{border:1px solid var(--line);border-radius:12px;padding:12px}
.lt-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.lt-head h4{margin:0 0 2px}
.lt-tools{display:flex;gap:2px;flex:none}
.lt-metrics{display:flex;flex-wrap:wrap;gap:8px 22px;margin:8px 0}
.lt-m{display:flex;flex-direction:column}
.lt-m b{font-size:18px}
.lt-new{margin-top:2px;align-self:flex-start}
.lt-sets{margin:6px 0;padding-left:22px}
.lt-sets li{display:flex;gap:10px;align-items:center;padding:2px 0}
.lt-sets li .icon-btn{margin-left:auto}
.lt-prev{margin:6px 0}
.lt-add{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-top:6px}
.lt-f{display:flex;flex-direction:column;gap:2px}
.lt-f .input{width:96px}
:root{--cat-upper:var(--lift);--cat-lower:var(--run);--cat-core:var(--z4);--cat-abs:var(--bw);--cat-prevent:var(--z2);--cat-other:var(--ink-3)}
.b-cat-upper{fill:var(--cat-upper)}.b-cat-lower{fill:var(--cat-lower)}.b-cat-core{fill:var(--cat-core)}.b-cat-abs{fill:var(--cat-abs)}.b-cat-prevent{fill:var(--cat-prevent)}.b-cat-other{fill:var(--cat-other)}
.legend .cat-upper,.hbars li.cat-upper{--t:var(--cat-upper)}.legend .cat-lower,.hbars li.cat-lower{--t:var(--cat-lower)}.legend .cat-core,.hbars li.cat-core{--t:var(--cat-core)}
.legend .cat-abs,.hbars li.cat-abs{--t:var(--cat-abs)}.legend .cat-prevent,.hbars li.cat-prevent{--t:var(--cat-prevent)}.legend .cat-other,.hbars li.cat-other{--t:var(--cat-other)}
.lp-cats,.lp-ex{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px 18px}
.lp-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px 24px}
.lp-body-cat .lbl{margin-bottom:6px}
.lp-ex{margin:10px 0}
.lp-table tr.is-sel td{font-weight:700}
#lp-ex{max-width:360px}

.lt-day{display:flex;align-items:center;gap:6px;margin-bottom:10px}
.lt-day .input{width:auto}
.lt-del{color:var(--ink-3)}
.lh-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.lh-row{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:4px 12px;align-items:baseline;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);padding:10px 4px;color:inherit;font:inherit;cursor:pointer}
.lh-row:hover{background:var(--surface-2)}
.lh-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.lh-main .opt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lh-date{color:var(--ink-2);font-size:13px}
.lh-load{color:var(--ink-2);font-size:13px;white-space:nowrap}
@media (max-width:599px){.lh-row{grid-template-columns:minmax(0,1fr) auto}.lh-date{grid-column:1/-1}}

/* ---------- Cardio → Compare ---------- */
.cmp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:6px}
.cmp-v{font-size:26px;font-variant-numeric:tabular-nums}
.cmp-p{display:flex;flex-direction:column;align-items:flex-end}
.cmp-p b{font-size:18px;color:var(--run)}
.cmp-bar{position:relative;height:10px;border-radius:99px;margin:8px 0 6px;background:linear-gradient(90deg,color-mix(in srgb,var(--ink-3) 25%,transparent),color-mix(in srgb,var(--run) 45%,transparent))}
.cmp-bar i{position:absolute;top:-2px;bottom:-2px;width:1px;background:var(--line)}
.cmp-bar span{position:absolute;top:50%;width:16px;height:16px;border-radius:50%;background:var(--run);border:2px solid var(--surface,#fff);transform:translate(-50%,-50%);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.cmp-t{margin-top:8px}
.cmp-races{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.cmp-race{border:1px solid var(--line);border-radius:12px;padding:12px}
.cmp-race h4{margin:0 0 6px}
.cmp-you{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.cmp-you .input{width:auto}

/* Today's set grid: logged sets, the one you're entering and last time's side by side */
.lt-grid{display:flex;flex-direction:column;gap:4px;margin:8px 0 4px}
.lt-grid{max-width:480px}
.lt-row{display:grid;grid-template-columns:26px 104px 84px 64px 46px 50px;gap:6px;align-items:center;padding:3px 4px;border-radius:8px}
.lt-grid.is-timed .lt-row{grid-template-columns:26px 104px 84px 46px 50px}
.lt-hd{font-size:11.5px;font-weight:700;letter-spacing:.03em;color:var(--ink-3);text-transform:uppercase;padding-bottom:0}
.lt-row .input{width:100%;min-height:34px;padding:4px 8px;text-align:center;font-variant-numeric:tabular-nums}
.lt-n{text-align:center;font-weight:700;color:var(--ink-3)}
.lt-row.is-done{background:color-mix(in srgb,var(--run) 8%,transparent)}
.lt-row.is-done .lt-n{color:var(--run)}
.lt-row.is-done .input{border-color:color-mix(in srgb,var(--run) 30%,var(--line));background:transparent}
.lt-row.is-entry{background:var(--surface-2);outline:1px dashed color-mix(in srgb,var(--run) 45%,var(--line))}
.lt-row.is-todo{opacity:.6}
.lt-last{font-variant-numeric:tabular-nums;color:var(--ink-2);font-size:13.5px}
.lt-rm{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.lt-act{display:flex;justify-content:flex-start}
.lt-x{min-width:32px;min-height:32px}
.lt-go{min-height:34px;padding:4px 10px}
@media (max-width:420px){.lt-row{grid-template-columns:20px minmax(64px,1fr) 64px 50px 0 46px;gap:4px}.lt-rm{display:none}.lt-grid.is-timed .lt-row{grid-template-columns:20px minmax(64px,1fr) 70px 0 46px}}
.cmp-age{color:var(--ink-2)}
.cmp-age b{color:var(--ink)}

/* Form & demo panels */
.xf{margin-top:8px;border-top:1px solid var(--line);padding-top:6px}
.xf summary{cursor:pointer;font-weight:600;color:var(--run);min-height:32px;display:flex;align-items:center}
.xf-body{font-size:14px;line-height:1.45}
.xf-body ol,.xf-body ul{margin:4px 0 8px;padding-left:20px}
.xf-body li{margin:2px 0}
.xf-setup{margin:6px 0 4px}
.xf-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px 16px}
.xf-caution{margin:6px 0;padding:6px 10px;border-radius:8px;background:color-mix(in srgb,var(--z4) 14%,transparent);border-left:3px solid var(--z4)}
.xf-scale{display:flex;flex-direction:column;gap:2px;margin:6px 0;color:var(--ink-2)}
.xf-demo{margin-top:8px}
.xf-video{position:relative;width:100%;max-width:560px;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#000}
.xf-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.xf-links{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:6px 0}
.xf-add{display:flex;gap:6px;max-width:560px}
.xf-add .input{flex:1;min-width:0}

.wd-types{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px;margin-bottom:6px}
.wd-type{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;min-height:48px}
.wd-type span{font-size:12px;color:var(--ink-3)}
.wd-type[aria-pressed="true"]{border-color:var(--run);background:color-mix(in srgb,var(--run) 10%,transparent)}
.wd-type[aria-pressed="true"] b{color:var(--run)}
.wd-type-why{margin:2px 0 10px}
.wd-name{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:10px}
.wd-name .input{flex:1;min-width:180px;max-width:360px}

.cmp-scroll{overflow-x:auto;margin:4px 0 10px}
.cmp-ages{min-width:520px}
.cmp-ages td,.cmp-ages th{text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
.cmp-ages tbody th{text-align:left}
.cmp-ages tr.is-cur td,.cmp-ages tr.is-cur th{font-weight:700;color:var(--run)}

/* More room: slimmer side padding, wider pages, and roomier Compare tiles */
.app{max-width:1240px;padding-inline:12px}
.panel{padding:14px}
@media (max-width:600px){.app{padding-inline:8px}.panel{padding:11px}}
.app[data-view="compare"]{max-width:1440px}
.compare .panel{padding:12px}
.cmp-races{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}
.cmp-race{padding:10px 12px}
.cmp-race .cmp-t th,.cmp-race .cmp-t td{padding-inline:4px}
@media (max-width:600px){.cmp-races{grid-template-columns:1fr}.cmp-race{padding:9px}}

/* Today: last run */
.td-lr{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:4px 0 10px}
.td-lr-t{display:flex;flex-direction:column;gap:2px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);min-width:0}
.td-lr-v{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15}
.td-lr-v small{font-size:13px;font-weight:600;color:var(--ink-3)}
.td-lr-s{font-size:12.5px;color:var(--ink-2);line-height:1.35}
.td-lr-bar{height:5px;border-radius:99px;background:color-mix(in srgb,var(--ink-3) 22%,transparent);margin-top:5px;overflow:hidden}
.td-lr-bar span{display:block;height:100%;background:var(--run);border-radius:99px}
.td-good{color:var(--z3)}
.td-bad{color:var(--z5)}
.td-zone{display:inline-block;margin-top:2px;padding:1px 8px;border-radius:99px;font-weight:700;font-size:12.5px;color:#fff;align-self:flex-start}
.td-zone.zc-1{background:var(--z1)}.td-zone.zc-2{background:var(--z2)}.td-zone.zc-3{background:var(--z3)}.td-zone.zc-4{background:var(--z4)}.td-zone.zc-5{background:var(--z5)}
.td-last .td-title .opt{font-weight:400;font-size:13px}
/* Compare: race tiles two across at most, so each has room */
.cmp-races{grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:12px}
.cmp-race{padding:12px 14px}
.cmp-me{display:flex;flex-direction:column;gap:1px}
.cmp-head{gap:16px}
.cmp-p{text-align:right}
.cmp-p .opt{white-space:nowrap}

/* Achievements */
:root{--t0:#A86B3C;--t1:#8C99A6;--t2:#C9A227;--t3:#5FA8A0;--t4:#4AA3DF;--t5:#8E5BD6;--t6:#D0467B;--t7:#E0762B;--t8:#1F2937}
.xb-ach{fill:var(--t2)} .legend .xb-ach{--t:var(--t2)}
.ach-tier{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 5px;border-radius:99px;font-size:11px;font-weight:800;color:#fff;background:var(--ink-3)}
.ach-tier.t0{background:var(--t0)}.ach-tier.t1{background:var(--t1)}.ach-tier.t2{background:var(--t2)}.ach-tier.t3{background:var(--t3)}.ach-tier.t4{background:var(--t4)}.ach-tier.t5{background:var(--t5)}.ach-tier.t6{background:var(--t6)}.ach-tier.t7{background:var(--t7)}.ach-tier.t8{background:var(--t8);box-shadow:0 0 0 2px var(--t2) inset}
.ach-tier.tu{background:var(--run)}
.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.ach-fam{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.ach-fam.is-locked{opacity:.75}
.ach-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ach-what{margin:0;font-size:13px;color:var(--ink-2)}
.ach-bar{height:6px;border-radius:99px;background:color-mix(in srgb,var(--ink-3) 22%,transparent);overflow:hidden}
.ach-bar span{display:block;height:100%;background:var(--t2);border-radius:99px}
.ach-next{margin:0;font-size:12.5px;color:var(--ink-3)}
.ach-pips{display:flex;gap:4px;margin-top:2px}
.ach-pips i{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line);background:transparent}
.ach-pips i.on.t0{background:var(--t0);border-color:var(--t0)}.ach-pips i.on.t1{background:var(--t1);border-color:var(--t1)}.ach-pips i.on.t2{background:var(--t2);border-color:var(--t2)}.ach-pips i.on.t3{background:var(--t3);border-color:var(--t3)}.ach-pips i.on.t4{background:var(--t4);border-color:var(--t4)}.ach-pips i.on.t5{background:var(--t5);border-color:var(--t5)}.ach-pips i.on.t6{background:var(--t6);border-color:var(--t6)}.ach-pips i.on.t7{background:var(--t7);border-color:var(--t7)}.ach-pips i.on.t8{background:var(--t8);border-color:var(--t2)}
.ach-ugrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.ach-u{border:1px dashed var(--line);border-radius:10px;padding:9px 11px;display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--ink-3)}
.ach-u b{color:var(--ink-2)}
.ach-u.is-got{border-style:solid;border-color:color-mix(in srgb,var(--t2) 55%,var(--line));background:color-mix(in srgb,var(--t2) 8%,transparent);color:var(--ink-2)}
.ach-u.is-got b{color:var(--ink)}
.ach-u.is-secret:not(.is-got){font-style:italic}
.ach-u small{font-size:11.5px;color:var(--ink-3)}
.ach-recent{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}
.ach-recent li{display:flex;align-items:center;gap:8px}
.chn-sub{margin:6px 0 2px;font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3)}
.chn-list li.is-stretch{border-left-style:dashed;opacity:.85}
.ach-goal{margin:0;font-variant-numeric:tabular-nums}
.ach-goal b{font-size:18px}
.ach-goal span{color:var(--ink-3);font-weight:600}
.ach-what{margin:0}
.ach-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 12px}
.ach-legend span{display:inline-flex;align-items:center;gap:5px;font-size:12.5px}
.ach-legend small{color:var(--ink-3)}
.ach-recent li{align-items:flex-start}
.ach-how{display:block;font-size:12.5px;color:var(--ink-2)}
.ach-run{margin:8px 0 10px}
.ach-run .lbl{margin-bottom:4px}

/* Achievements: views and filters, compact cards */
.ach-nav{margin-bottom:12px}
.ach-nav small,.ach-chips small{font-weight:500;color:var(--ink-3);margin-left:3px}
.ach-chips{margin-bottom:10px}
.chip[aria-pressed="true"] small{color:inherit;opacity:.8}
.ach-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.ach-fam{padding:8px 10px;gap:3px}
.ach-fam .ach-goal b{font-size:16px}
.ach-ugrid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px}
.ach-u{padding:7px 10px}
.ach-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px 24px;margin-top:12px}
.ach-close{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:9px}
.ach-close .ach-goal b{font-size:15px}
.ach-close .ach-goal .opt{font-size:12px;margin-left:4px}
.ach-kpis{margin-bottom:4px}

/* Today: a small last run, sitting beside "Running today" without making it taller */
.td-grid > .td-top{align-items:start}
.td-last{padding:10px 12px}
.td-last .panel-head{margin-bottom:2px}
.td-last .td-title{margin:0 0 4px;font-size:14px}
ul.td-lr{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px;grid-template-columns:none}
ul.td-lr li{display:flex;align-items:baseline;gap:8px;font-size:13px;line-height:1.5;min-width:0}
.td-lr-l{flex:none;width:58px;color:var(--ink-3);font-size:12px}
ul.td-lr b{flex:none;font-variant-numeric:tabular-nums}
ul.td-lr .td-lr-s{font-size:12px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
ul.td-lr .td-zone{margin:0;padding:0 6px;font-size:11.5px}
.td-done{margin:4px 0 6px 40px;font-size:13px}
ul.td-lr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 14px}
ul.td-lr li{flex-wrap:wrap;gap:0 6px;line-height:1.35}
ul.td-lr .td-lr-s{flex-basis:100%;padding-left:64px;margin-top:-1px}
.td-lr-l{width:58px}
.td-lr-open{font-size:13px;font-weight:600;max-width:65%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:420px){ul.td-lr{grid-template-columns:1fr}}
ul.td-lr li{flex-wrap:nowrap}
ul.td-lr .td-lr-s{flex-basis:auto;padding-left:0;margin-top:0;flex:1 1 auto}
.td-lr-l{width:52px}

/* ---------- Today on one screen ---------- */
.app[data-view="today"]{padding-block:10px 24px}
.td-grid{display:grid;columns:auto;gap:10px;grid-template-columns:repeat(6,minmax(0,1fr));align-items:start}
.td-grid > section{margin:0;column-span:none;grid-column:1 / -1}
@media (min-width:1000px){
  .td-grid > .td-plan,.td-grid > .td-week,.td-grid > .td-last{grid-column:span 2}
  .td-grid > .td-status,.td-grid > .td-vo2{grid-column:span 3}
}
@media (min-width:700px) and (max-width:999px){
  .td-grid > .td-plan,.td-grid > .td-last,.td-grid > .td-status,.td-grid > .td-vo2{grid-column:span 3}
}
.td-grid .panel{padding:10px 12px}
.td-grid .panel-head{margin-bottom:6px}
.td-grid .kpis{gap:8px;margin-bottom:6px}
.td-grid .kpi-v{font-size:22px}
.td-grid .kpi-s{font-size:11.5px;line-height:1.3}
.td-grid .legend{font-size:11.5px;gap:4px 10px}
.td-actions{margin-top:6px;gap:6px}
.td-chips{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin:4px 0 2px 40px;max-height:52px;overflow:hidden}
.td-chips-l{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3);margin-right:2px}
.td-chip{display:inline-flex;align-items:baseline;gap:4px;padding:1px 8px;border-radius:99px;border:1px solid var(--line);font-size:12px;line-height:1.5;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;background:var(--surface)}
.td-chip b{color:var(--t2)}
.td-chip span{color:var(--ink-3)}
.td-chip.is-ach{border-color:color-mix(in srgb,var(--t2) 45%,var(--line))}
.td-chip.is-stretch{border-style:dashed}
.td-chip.is-got{background:color-mix(in srgb,var(--t2) 10%,var(--surface))}
.td-chip.td-more{cursor:pointer;color:var(--ink-2);font-weight:600}
.td-bests-l{margin:6px 0 2px;font-size:12px;color:var(--ink-3)}
.td-bests{margin:0}
.td-attn .attn{margin:0}
.td-xp{padding:10px 12px}

.ach-tier{min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:700;vertical-align:1px;line-height:1}
.td-chip .ach-tier{min-width:15px;height:15px;font-size:9.5px;vertical-align:0}
.chn-n .ach-tier{min-width:16px;height:16px;font-size:10px}

.td-kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0 0 4px}
.td-kv > span{display:flex;flex-direction:column;min-width:0}
.td-kv small{font-size:11px;color:var(--ink-3);font-weight:600}
.td-kv b{font-size:19px;font-variant-numeric:tabular-nums;line-height:1.15}
.td-kv i{font-style:normal;font-size:11.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td-wk{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.td-wk li{display:grid;grid-template-columns:58px auto minmax(40px,1fr) auto;gap:8px;align-items:center;font-size:13px}
.td-wk li:last-child{grid-template-columns:58px auto 1fr}
.td-wk small{color:var(--ink-3);font-size:12px}
.td-wk b{font-variant-numeric:tabular-nums}
.td-wk i{font-style:normal;color:var(--ink-2);font-size:12px;white-space:nowrap}
.td-wbar{height:6px;border-radius:99px;background:color-mix(in srgb,var(--ink-3) 22%,transparent);overflow:hidden}
.td-wbar span{display:block;height:100%;background:var(--run);border-radius:99px}
.td-wk-sug{margin:4px 0 0;font-size:12px;color:var(--ink-3)}
.td-week-sub{margin:4px 0 0}
.td-attn{padding:6px 12px}
.attn-fold summary{cursor:pointer;font-size:13.5px}
.attn-fold[open] .attn{margin-top:6px}
.td-ch{margin-top:6px;border-top:1px solid var(--line);padding-top:6px}
.td-ch summary{cursor:pointer;font-size:13.5px}
.td-ch-soon{margin:6px 0 0}
.td-xp .xp-head{margin:0}

@media (min-width:1000px){.td-grid > .td-status,.td-grid > .td-vo2,.td-grid > .td-xp{grid-column:span 2}}
@media (min-width:700px) and (max-width:999px){.td-grid > .td-week{grid-column:span 3}.td-grid > .td-xp{grid-column:span 3}}
.td-acts{display:flex;gap:10px;font-size:13px}
.td-xp .xp-head{flex-wrap:wrap;row-gap:6px}
.td-xp .xp-main{min-width:0;flex:1 1 180px}
.td-plan .hist-list{gap:4px}
.td-grid ul.td-lr{grid-template-columns:1fr;gap:0}
.td-grid ul.td-lr li{line-height:1.4}

/* Today: roomier, and on a wide screen the bottom row fills the window */
.td-grid{gap:14px}
.td-grid .panel{padding:14px 16px}
.td-grid .panel-head{margin-bottom:10px}
.td-kv b{font-size:24px}
.td-kv small{font-size:12px}
.td-kv i{font-size:12.5px}
.td-wk{gap:10px}
.td-wk li{font-size:14px}
.td-grid ul.td-lr li{font-size:14px;line-height:1.75}
.td-chip{font-size:12.5px;padding:2px 9px}
.td-chips{max-height:64px;gap:5px;margin-top:8px}
.td-grid.is-fill{grid-template-rows:auto auto minmax(0,1fr);align-content:stretch}
.td-grid.is-fill:not(:has(> .td-attn)){grid-template-rows:auto minmax(0,1fr)}
.td-grid.is-fill > .td-status,.td-grid.is-fill > .td-vo2,.td-grid.is-fill > .td-xp{align-self:stretch;display:flex;flex-direction:column;min-height:0}
.td-grid.is-fill > .td-status .chart,.td-grid.is-fill > .td-vo2 .chart{flex:1 1 auto;min-height:90px}

/* Filled Today: the top row gets about as much height as the charts, and Running today's
   achievements and records use it (scrolling inside the panel if there are a lot). */
.td-grid.is-fill{grid-template-rows:auto minmax(0,1fr) minmax(0,1fr)}
.td-grid.is-fill:not(:has(> .td-attn)){grid-template-rows:minmax(0,1fr) minmax(0,1fr)}
.td-grid.is-fill > .td-plan,.td-grid.is-fill > .td-week,.td-grid.is-fill > .td-last{align-self:stretch;min-height:0}
.td-grid.is-fill > .td-plan{display:flex;flex-direction:column}
.td-grid.is-fill > .td-plan .hist-list{flex:1 1 auto;min-height:0;overflow:auto}
.td-chips{max-height:none}
.td-grid:not(.is-fill) .td-chips{max-height:80px;overflow:hidden}

/* ---------- Today: last pass ---------- */
/* Chips: the tier as a plain colored symbol, text that fits, nothing clipped at the panel's edge */
.td-chip{align-items:center;line-height:1.35;padding:3px 10px;gap:5px}
.td-chip .ach-tier{background:none !important;box-shadow:none !important;min-width:0;height:auto;padding:0;font-size:12px;line-height:1;vertical-align:0}
.td-chip .ach-tier.t0{color:var(--t0)}.td-chip .ach-tier.t1{color:var(--t1)}.td-chip .ach-tier.t2{color:var(--t2)}.td-chip .ach-tier.t3{color:var(--t3)}.td-chip .ach-tier.t4{color:var(--t4)}.td-chip .ach-tier.t5{color:var(--t5)}.td-chip .ach-tier.t6{color:var(--t6)}.td-chip .ach-tier.t7{color:var(--t7)}.td-chip .ach-tier.t8{color:var(--t8)}
.td-chips{margin:8px 0 0;row-gap:6px}
.td-plan .td-chips{margin-left:40px}
.td-chips-l{flex-basis:100%;margin:0 0 1px}
.td-grid.is-fill > .td-plan .hist-list{overflow:auto;padding-bottom:2px;mask-image:linear-gradient(#000 calc(100% - 14px),transparent);-webkit-mask-image:linear-gradient(#000 calc(100% - 14px),transparent)}
/* Tiles fill their height with something useful */
.td-grid.is-fill > .td-week,.td-grid.is-fill > .td-last,.td-grid.is-fill > .td-xp{display:flex;flex-direction:column}
.td-days{flex:1 1 auto;display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:10px;min-height:70px;align-items:end}
.td-day{display:flex;flex-direction:column;align-items:center;gap:3px;height:100%;min-height:70px}
.td-day-bar{flex:1 1 auto;width:100%;max-width:26px;position:relative;border-radius:5px;background:color-mix(in srgb,var(--ink-3) 12%,transparent);overflow:hidden}
.td-day-bar i{position:absolute;left:0;right:0;bottom:0;background:var(--run);border-radius:5px 5px 0 0}
.td-day-bar i.is-plan{background:transparent;border:1.5px dashed var(--run);border-bottom:0}
.td-day-v{font-size:11px;color:var(--ink-2);font-variant-numeric:tabular-nums;min-height:14px}
.td-day-l{font-size:11px;font-weight:700;color:var(--ink-3)}
.td-day.is-today .td-day-l{color:var(--run)}
.td-lr-ach{margin-top:auto;padding-top:8px}
.td-latest{margin-top:auto;padding-top:8px;border-top:1px solid var(--line)}
.td-latest ul{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}
.td-latest li{display:flex;justify-content:space-between;gap:8px;font-size:13px}
.td-latest .ach-tier{min-width:16px;height:16px;font-size:10px}
.td-latest .td-chips-l{display:flex;justify-content:space-between;flex-basis:auto}
.td-latest .td-chips-l .link{font-size:12px;text-transform:none;letter-spacing:0;font-weight:600}
.td-ch-soon{margin:8px 0}
.td-grid.is-fill > .td-last ul.td-lr{flex:1 1 auto;display:flex;flex-direction:column;justify-content:space-evenly}
.td-grid.is-fill > .td-last .td-lr-ach{margin-top:6px}
.td-xp .xp-streak{min-width:64px}
.td-grid.is-fill > .td-xp{overflow:hidden}
/* Filled Today: the top row as tall as its tallest tile, the bottom row the rest (at least its content) */
.td-grid.is-fill{grid-template-rows:auto auto minmax(auto,1fr)}
.td-grid.is-fill:not(:has(> .td-attn)){grid-template-rows:auto minmax(auto,1fr)}

/* Record chips wrap when they must, rather than cut off */
.td-chip.is-rec{white-space:normal;text-overflow:clip;border-radius:10px;display:inline-block;line-height:1.35;max-width:100%}
.td-chip.is-rec span{white-space:nowrap}
/* This week: the rows share one grid, so the time and distance bars line up and match in length */
.td-wk{display:grid;grid-template-columns:auto max-content minmax(40px,1fr) max-content;column-gap:8px;row-gap:10px;align-items:center}
.td-wk li{display:contents}
.td-wk li:last-child i{grid-column:3 / span 2}
.td-wbar.is-met span{background:var(--z3)}

/* Records on Today: rows, not bubbles */
.td-grid.is-fill > .td-plan .hist-list{mask-image:none;-webkit-mask-image:none}
.td-plan .td-recs-l{margin:10px 0 3px 40px}
.td-recs{list-style:none;margin:0 0 0 40px;padding:0;display:flex;flex-direction:column}
.td-recs li{display:flex;align-items:baseline;gap:10px;padding:3px 0;border-bottom:1px solid var(--line);font-size:13px;min-width:0}
.td-recs li:last-child{border-bottom:0}
.td-rec-n{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.td-rec-v{flex:none;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.td-rec-v small{font-weight:400;color:var(--ink-3);margin-left:4px}
.td-recs-more{margin:6px 0 0 40px}

.td-plan .hist-list > *{flex-shrink:0}
.td-plan .td-chips{overflow:visible;max-height:none}
.td-plan .hist-list > .td-recs-l,.td-plan .hist-list > .td-recs-more{flex-basis:auto}
.td-wk li:last-child i{grid-column:auto}
.td-wk li:last-child i.td-wide{grid-column:3 / span 2}

/* Records: the chance of beating it today */
.pr-odds{margin:2px 0 4px;font-size:12.5px;color:var(--ink-2);display:flex;align-items:center;gap:6px}
.pr-odds-p{display:inline-block;min-width:38px;text-align:center;padding:1px 6px;border-radius:99px;font-weight:700;font-size:12px;font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ink-3) 15%,transparent);color:var(--ink-2)}
.pr-odds.is-hi .pr-odds-p{background:color-mix(in srgb,var(--z3) 18%,transparent);color:var(--z3)}
.pr-odds.is-mid .pr-odds-p{background:color-mix(in srgb,var(--z4) 18%,transparent);color:var(--z4)}
.pr-odds.is-none{color:var(--ink-3)}

.xf summary{list-style:none;gap:6px}
.xf summary::-webkit-details-marker{display:none}
.xf-arrow{display:inline-block;transition:transform .15s;font-size:12px}
.xf[open] .xf-arrow{transform:rotate(90deg)}
.xf-close{display:block;margin:10px 0 2px;font-size:13px;color:var(--ink-2)}

/* Strength → Exercises: the weekly plan */
.sx-plan-l{margin:0 0 8px;font-size:14px}
.sx-plan-bars{display:flex;gap:3px;height:34px;border-radius:8px;overflow:hidden;margin-bottom:8px}
.sx-pb{display:flex;flex-direction:column;justify-content:center;padding:0 8px;min-width:0;color:#fff;font-size:11px;line-height:1.2;overflow:hidden;white-space:nowrap}
.sx-pb i{font-style:normal;opacity:.9;overflow:hidden;text-overflow:ellipsis}
.sx-pb b{font-size:13px}
.sx-pb-upper{background:var(--cat-upper)}.sx-pb-lower{background:var(--cat-lower)}.sx-pb-core{background:var(--cat-core)}.sx-pb-abs{background:var(--cat-abs)}.sx-pb-prevent{background:var(--cat-prevent)}
.sx-target{display:flex;align-items:center;gap:6px;margin:0 0 12px}
.sx-target b{min-width:30px;text-align:center;font-size:16px;font-variant-numeric:tabular-nums}
.sx-target .icon-btn{border:1px solid var(--line);width:30px;height:30px}

/* Today: warm-ups, the plan line, planned sets still to come */
.lt-planline{margin:4px 0 6px;font-size:13px;color:var(--ink-2)}
.lt-row.is-wu .lt-n{color:var(--ink-3);font-size:12px}
.lt-row.is-wu.is-done{background:color-mix(in srgb,var(--ink-3) 8%,transparent)}
.lt-row.is-wu .input{font-size:13px}
.lt-row.is-todo .lt-plan{font-variant-numeric:tabular-nums;color:var(--ink-3);text-align:center}
.lt-entry-acts{display:flex;gap:4px;align-items:center}
.lt-wu{width:26px;height:26px;border-radius:6px;border:1px solid var(--line);background:transparent;color:var(--ink-3);font-weight:700;font-size:12px;cursor:pointer;padding:0}
.lt-wu.is-on{background:var(--ink-3);border-color:var(--ink-3);color:var(--surface,#fff)}
.lt-row{grid-template-columns:30px 104px 84px 64px 46px 84px}
.lt-grid.is-timed .lt-row{grid-template-columns:30px 104px 84px 46px 84px}
.lt-grid{max-width:520px}
@media (max-width:420px){.lt-row{grid-template-columns:24px minmax(56px,1fr) 60px 46px 0 74px;gap:4px}.lt-rm{display:none}.lt-grid.is-timed .lt-row{grid-template-columns:24px minmax(56px,1fr) 66px 0 74px}}

.sx-how{display:flex;flex-direction:column;gap:8px}
.sx-how-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.sx-how-row .lbl{min-width:150px}
.sx-eg{list-style:none;margin:4px 0 8px;padding:0;display:flex;flex-direction:column;gap:3px;font-size:13.5px}

/* Today: the rest timer (informational) */
.lt-rest{display:flex;align-items:center;gap:10px;margin:6px 0 2px;padding:5px 10px;border-radius:8px;background:var(--surface-2);font-size:13px;max-width:520px}
.lt-rest-t b{font-size:16px;font-variant-numeric:tabular-nums;margin-left:4px}
.lt-rest-s{font-weight:700;margin-left:auto}
.lt-rest[data-state="ready"]{background:color-mix(in srgb,var(--z3) 16%,transparent)}
.lt-rest[data-state="ready"] .lt-rest-s{color:var(--z3)}
.lt-rest[data-state="over"]{background:color-mix(in srgb,var(--z4) 16%,transparent)}
.lt-rest[data-state="over"] .lt-rest-s{color:var(--z4)}
.lt-rest-x{width:26px;height:26px}

/* Today's set table: 1RM, % of 1RM and load per set */
.lt-grid{max-width:640px}
.lt-row{grid-template-columns:30px 96px 80px 58px 44px 46px 48px 84px}
.lt-grid.is-timed .lt-row{grid-template-columns:30px 96px 80px 44px 46px 48px 84px}
.lt-pct,.lt-ld{text-align:left}
.lt-arrow{color:var(--ink-3);font-weight:400}
.lt-m b small{font-size:12px;color:var(--ink-3);font-weight:600}
/* Narrow screens: the 1RM column folds to nothing (kept in the grid so the columns after it stay put). */
@media (max-width:520px){.lt-row{grid-template-columns:22px minmax(52px,1fr) 58px 44px 0 38px 40px 72px;gap:4px}.lt-grid.is-timed .lt-row{grid-template-columns:22px minmax(52px,1fr) 62px 0 38px 40px 72px}.lt-row > .lt-rm{display:block}.lt-row > .lt-rm:not(.lt-pct):not(.lt-ld){visibility:hidden;overflow:hidden}}

.lt-confirm{display:flex;gap:4px}
.lt-del-yes,.lt-del-no{border:1px solid var(--line);border-radius:6px;background:transparent;font-size:11.5px;font-weight:700;padding:3px 6px;cursor:pointer;color:var(--ink-2)}
.lt-del-yes{background:var(--z5);border-color:var(--z5);color:#fff}

.lt-donebar{display:flex;align-items:center;gap:10px;margin:6px 0 2px;flex-wrap:wrap}
.lt-done-l{font-weight:700;color:var(--z3);font-size:13.5px}
.lt-ex.is-closed{border-color:color-mix(in srgb,var(--z3) 40%,var(--line))}

/* Band color pickers */
.lt-band{width:100%;min-height:34px;padding:4px 6px;border-left-width:6px}
.lt-band.band-green{border-left-color:#2E9E4F}.lt-band.band-purple{border-left-color:#7B4BC4}.lt-band.band-black{border-left-color:#222}.lt-band.band-red{border-left-color:#D63A2F}.lt-band.band-orange{border-left-color:#EF8A1E}

/* Strength load: the workout's total, by area and muscle group */
.lt-sl{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 12px}
.lt-sl-head{display:flex;align-items:baseline;gap:10px}
.lt-sl-head b{font-size:22px;font-variant-numeric:tabular-nums}
.lt-sl-bar{display:flex;gap:3px;height:30px;border-radius:7px;overflow:hidden;margin:8px 0 6px}
.lt-sl-bar > span{display:flex;flex-direction:column;justify-content:center;padding:0 8px;color:#fff;font-size:11px;line-height:1.15;min-width:0;overflow:hidden;white-space:nowrap}
.lt-sl-bar i{font-style:normal;opacity:.9;overflow:hidden;text-overflow:ellipsis}
.lt-sl-groups{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;font-size:12.5px;color:var(--ink-2)}
.sx-pb-other{background:var(--cat-other)}

/* Strength calories by week */
.b-kcal{fill:var(--hr)}

/* Weight → Calories: exercise calories by day */
.kc-ex-run{fill:var(--run)}.kc-ex-str{fill:var(--hr)}
.legend .kc-er .sw{background:var(--run)}.legend .kc-es .sw{background:var(--hr)}

/* Weight → Today: activity levels and the sum */
.wd-levels{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:8px}
.wd-level{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:transparent;color:inherit;font:inherit;font-size:13px;cursor:pointer}
.wd-level span{font-size:12px;color:var(--ink-2)}
.wd-level[aria-pressed="true"]{border-color:var(--run);box-shadow:inset 0 0 0 1px var(--run);background:color-mix(in srgb,var(--run) 8%,transparent)}
.wd-sum td{vertical-align:top}.wd-sum .seg{margin-top:6px;flex-wrap:wrap}
.wd-total td{border-top:2px solid var(--line)}

/* ---------- Strength: wider pages, compact Exercises cards, the Today snapshot, the Workout layout ---------- */
.app[data-view="strength"]{max-width:1400px}
.sx-plan .panel-head,.sx-cat .panel-head{flex-wrap:wrap;gap:4px 12px}
.sx-plan .sx-reset{margin-left:auto;font-size:13px}
.sx-plan .sx-plan-bars{height:28px;margin-bottom:4px}
.sx-plan .hint{margin:4px 0 0}
.sx-cat{padding-block:10px}
.sx-cat .panel-head{margin-bottom:8px}
.sx-cat .sx-target{margin:0 0 0 auto;gap:4px}
.sx-cat .sx-target .opt{margin-right:4px}
.sx-cat .sx-target .icon-btn{width:28px;height:28px}
.sx-grid{grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:8px}
.sx-card{padding:7px 10px;gap:2px}
.sx-group{display:flex;align-items:baseline;gap:6px;font-size:11px}
.sx-freq{margin-left:auto;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink-3);font-size:11.5px;white-space:nowrap}
.sx-name{font-size:14.5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sx-card.is-open .sx-name{white-space:normal}
.sx-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}
.sx-card .sx-card-foot .link{margin-top:0;font-size:12.5px;color:var(--ink-2)}
.sx-wt{display:flex;align-items:center;gap:2px}
.sx-wt .icon-btn{width:26px;height:26px;border:1px solid var(--line);font-size:15px;line-height:1}
.sx-wt .icon-btn[disabled]{opacity:.35;cursor:default}
.sx-wt b{min-width:44px;text-align:center;font-size:13.5px;font-variant-numeric:tabular-nums}
.sx-wt b.is-changed{color:var(--run)}

.sx-snap .panel-head{margin-bottom:6px}
.sx-snap-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}
.sx-snap-top .sx-sug-btns{margin-top:0}
.sx-sts{display:flex;flex-wrap:wrap;gap:6px}
.sx-snap-w{margin:8px 0 0;font-size:14px}
.sx-st{display:inline-flex;align-items:baseline;gap:4px;font-size:12px;font-weight:700;border-radius:6px;padding:2px 7px;background:color-mix(in srgb,var(--st) 14%,transparent);color:var(--st);white-space:nowrap}
.st-rec{--st:var(--z5)}.st-over{--st:var(--z4)}.st-due{--st:var(--bw)}.st-soon{--st:var(--z2)}.st-fresh{--st:var(--z3)}.st-never{--st:var(--ink-3)}.st-off{--st:var(--ink-3)}
.sx-snap-cat{padding-block:8px}
.sx-snap-cat .panel-head{margin-bottom:2px}
.sx-rows{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,520px),1fr));column-gap:28px}
.sx-row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.2fr) 92px minmax(150px,1.1fr);gap:4px 12px;align-items:center;padding:6px 0;border-top:1px solid var(--line);font-size:13.5px}
.sx-row > span{display:flex;flex-direction:column;min-width:0}
.sx-row .opt{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sx-row-aim{color:var(--ink-2);font-size:12.5px}
.sx-row-st{gap:3px}
.sx-row-st .sx-st{align-self:flex-start}
.sx-bar{position:relative;display:block;height:5px;border-radius:3px;background:var(--surface-2);overflow:visible;max-width:160px}
.sx-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:var(--st)}
.sx-bar s{position:absolute;left:66.7%;top:-2px;bottom:-2px;width:1px;background:var(--ink-3)}
@media (max-width:640px){.sx-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}

.lh-groups{font-size:13px;color:var(--ink-2)}
.lh-groups b{font-weight:600;color:var(--ink)}

.lt-ex{padding:10px 14px}
.lt-head{align-items:center;gap:10px}
.lt-num{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-2);color:var(--ink-2);font-weight:700;font-size:13px}
.lt-title{flex:1;min-width:0}
.lt-head h4{margin:0;font-size:16.5px}
.lt-cols{display:grid;grid-template-columns:minmax(0,640px) minmax(0,1fr);gap:4px 28px;align-items:start;margin-top:4px}
.lt-main{min-width:0}
.lt-cols > .lt-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 18px;margin:8px 0 0;padding:10px 12px;border-radius:10px;background:var(--surface-2)}
.lt-cols > .lt-metrics .lt-m b{font-size:17px}
@media (max-width:900px){.lt-cols{grid-template-columns:minmax(0,1fr)}.lt-cols > .lt-metrics{margin-top:4px}}
.lt-how{margin-top:6px}
.lt-how summary{cursor:pointer;font-size:13px;color:var(--ink-2);font-weight:600}
.xf-body{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr);gap:4px 22px;align-items:start}
.xf-guide{min-width:0}
.xf-demo{margin-top:6px;min-width:0}
.xf-body .xf-close{grid-column:1 / -1}
.xf-video{max-width:none}
@media (max-width:760px){.xf-body{grid-template-columns:minmax(0,1fr)}}

/* Cardio → Today: challenges open take the whole row; XP earned today beside "Running today" */
.td-grid > .td-xp.is-open{grid-column:1 / -1}
.td-xp.is-open .cg-cols{gap:10px 28px}
.td-xpday{margin-left:8px;font-size:12.5px;font-weight:600;color:var(--run);background:color-mix(in srgb,var(--run) 12%,transparent);border-radius:6px;padding:1px 7px;white-space:nowrap;cursor:default}
.td-xpday b{font-size:14px;font-variant-numeric:tabular-nums}

/* Run page: the steadiness session (Charts) */
.sess-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;margin:0 0 10px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.sess-bar .hint{flex-basis:100%;margin:0;font-size:12.5px}
.sess-t b{margin-right:4px}
.sess-t #sess-txt{font-variant-numeric:tabular-nums;font-weight:600}
.sess-form{display:flex;align-items:center;gap:6px;margin-left:auto}
.sess-form .input{width:78px;min-height:32px;padding:3px 8px;text-align:center}
.sess-out{fill:var(--ink-3);opacity:.16}
.sess-edge line{stroke:var(--ink);stroke-width:1.5;stroke-dasharray:3 2}
.sess-edge rect{fill:var(--surface);stroke:var(--ink);stroke-width:1.5}
.ch-svg.is-sess{touch-action:pan-y}
.ch-svg.is-sess.is-edge{cursor:ew-resize}

/* Import data sheet: Garmin steps fold away, data files, and moving data to another computer */
.imp-how-d summary{cursor:pointer;font-size:14px}
.imp-how-d[open] summary{margin-bottom:6px}
.imp-how-l{margin:0;font-size:14px}
.imp-how-l .opt{display:block;margin-top:2px}
.imp-export{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:6px}
.imp-export .hint{margin:0}
.imp-export .set-btns{display:flex;flex-wrap:wrap;gap:8px}

/* Strength → Workout on a phone: the set grid fits (1RM and % 1RM fold away; they're on wider screens) */
.lt-hd > .lt-rm{font-size:inherit;color:inherit}
@media (max-width:520px){
  .lt-ex{padding:8px}
  .lt-row{grid-template-columns:20px minmax(44px,1fr) 54px 40px 0 0 38px 60px;gap:3px}
  .lt-grid.is-timed .lt-row{grid-template-columns:20px minmax(44px,1fr) 60px 0 0 38px 60px;gap:3px}
  .lt-row > .lt-pct{visibility:hidden;overflow:hidden}
  .lt-head{gap:8px}
  .lt-num{width:22px;height:22px;font-size:12px}
}

/* ---------- Strength → Coach: the strength coach's week ---------- */
.sc-head .panel-head{flex-wrap:wrap;gap:6px 12px}
.sc-status{margin:0 0 6px;font-size:14px}
.sc-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px;margin:8px 0 4px}
.sc-ctl-g{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sc-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:0 0 14px}
@media (max-width:1100px){.sc-week{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}}
.sc-day{border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:8px;display:flex;flex-direction:column;gap:6px;min-height:120px;min-width:0}
.sc-day.is-today{border-color:var(--run)}
.sc-day.is-past{opacity:.6}
.sc-day.is-drop{outline:2px dashed var(--run);outline-offset:-2px}
.sc-dh{display:flex;align-items:baseline;gap:6px}
.sc-runs{display:flex;flex-wrap:wrap;gap:4px}
.sc-run{font-size:12px;border-radius:6px;padding:1px 6px;background:color-mix(in srgb,var(--run) 12%,transparent);color:var(--ink-2)}
.sc-run.is-hard{background:color-mix(in srgb,var(--z4) 20%,transparent);color:var(--ink);font-weight:600}
.sc-run.is-sug{border:1px dashed var(--line);background:transparent}
.sc-run.is-none{background:transparent;color:var(--ink-3)}
.sc-ses{border:1px solid var(--line);border-radius:8px;padding:6px 8px;background:var(--bg);display:flex;flex-direction:column;gap:4px}
.sc-ses.is-legs{border-left:4px solid var(--cat-lower)}
.sc-ses.is-locked{opacity:.85}
.sc-ses[draggable="true"]{cursor:grab}
.sc-ses.is-dragging,.sc-ex li.is-dragging{opacity:.4}
.sc-sh{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sc-sh b{font-size:13.5px}
.sc-sh .sc-menu{margin-left:auto}
.sc-clash{margin:0;font-size:12px;color:var(--z5)}
.sc-ex{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.sc-ex li{display:flex;align-items:center;gap:4px;font-size:12.5px;border-top:1px solid var(--line);padding-top:3px}
.sc-ex li[draggable="true"]{cursor:grab}
.sc-exn{display:flex;flex-direction:column;min-width:0;flex:1}
.sc-exn b{font-weight:600;line-height:1.2}
.sc-exn .opt{font-size:11px}
.sc-menu{width:34px;min-height:26px;padding:0 2px;font-size:12px;flex:none}
.sc-add{width:100%;min-height:28px;font-size:12px;padding:2px 6px;color:var(--ink-2)}
.sc-sum-l{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:3px;font-size:14px}
.sc-areas{display:flex;flex-direction:column;gap:6px}
.sc-area{display:grid;grid-template-columns:130px minmax(0,1fr);gap:6px;align-items:start}
.sc-area > div{display:flex;flex-wrap:wrap;gap:4px}
.sc-g{font-size:12px;border-radius:6px;padding:1px 7px;border:1px solid var(--line);white-space:nowrap}
.sc-g small{color:var(--ink-3)}
.sc-g.st-left-out{border-color:var(--z5);color:var(--z5)}
.sc-g.st-doubled{border-color:var(--z4);background:color-mix(in srgb,var(--z4) 12%,transparent)}
.sc-g.st-extra{border-style:dashed}
.sc-g.st-short{color:var(--ink-3)}
.sc-sum-l .st-left-out b{color:var(--z5)}.sc-sum-l .st-doubled b{color:var(--z4)}
@media (max-width:520px){.sc-area{grid-template-columns:minmax(0,1fr)}}

/* Cardio → Week: runs this week */
.sug-runs{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.sug-runs .seg button{min-width:30px}

/* ---------- Coach section ---------- */
.app[data-view="coaching"]{max-width:1240px}
.ch-hz td{vertical-align:top}
.ch-hz tr.is-cur td{background:color-mix(in srgb,var(--run) 7%,transparent)}
.ch-hz tr.hz-taper td:nth-child(2) b,.ch-hz tr.hz-race td:nth-child(2) b{color:var(--z4)}
.ch-wk{margin-bottom:12px}
.ch-wk > .lbl{margin:0 0 4px}
.ch-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
@media (max-width:720px){.ch-days{grid-template-columns:repeat(4,minmax(0,1fr))}}
.ch-day{border:1px solid var(--line);border-radius:8px;padding:6px;display:flex;flex-direction:column;gap:3px;min-height:74px;font-size:12px;min-width:0}
.ch-day.is-today{border-color:var(--run)}
.ch-day.is-past{opacity:.6}
.ch-it{border-radius:5px;padding:1px 5px;background:color-mix(in srgb,var(--run) 12%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-it.is-hard{background:color-mix(in srgb,var(--z4) 22%,transparent);font-weight:600}
.ch-it.is-str{background:color-mix(in srgb,var(--cat-upper) 14%,transparent)}
.ch-it.is-str.is-legs{background:color-mix(in srgb,var(--cat-lower) 20%,transparent)}
.ch-it.is-sug{outline:1px dashed var(--ink-3);outline-offset:-1px}
.ch-it.is-none{background:transparent;color:var(--ink-3)}
.legend .ch-l-hard .sw{background:color-mix(in srgb,var(--z4) 40%,transparent)}.legend .ch-l-run .sw{background:color-mix(in srgb,var(--run) 30%,transparent)}
.legend .ch-l-legs .sw{background:color-mix(in srgb,var(--cat-lower) 40%,transparent)}.legend .ch-l-str .sw{background:color-mix(in srgb,var(--cat-upper) 30%,transparent)}
.legend .ch-l-sug .sw{background:transparent;outline:1px dashed var(--ink-3)}
.ch-focus{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:14px}
.ch-intro{margin:0 0 12px}
.ch-set{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:6px 24px;padding:10px 0;border-top:1px solid var(--line)}
.ch-set:first-of-type{border-top:0}
.ch-set-l{display:flex;flex-direction:column;gap:2px}
.ch-set-l .hint{margin:0}
.ch-set-c{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.ch-seg{flex-wrap:wrap}
.ch-means{margin:0;font-size:13.5px;color:var(--ink-2)}
.ch-warn{margin-top:6px;padding:6px 8px;border-radius:6px;background:var(--bad);color:var(--ink)}
.ch-dows{display:flex;flex-wrap:wrap;gap:4px}
.ch-dows .chip[aria-pressed="true"]{background:var(--btn);color:var(--btn-ink);border-color:var(--btn)}
.ch-how{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.5}
@media (max-width:720px){.ch-set{grid-template-columns:minmax(0,1fr)}}

/* ---------- The web app: account button and menu, the sign-in and consent screen ---------- */
.acct-btn{min-height:36px;min-width:36px;padding:0 12px;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:700;font-size:14px}
.acct-btn.is-in{padding:0;width:36px;background:var(--run);border-color:var(--run);color:#fff}
.acct-btn:hover{border-color:var(--ink-3)}
.acct-menu{position:absolute;right:16px;top:64px;z-index:40;width:min(320px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:8px;display:flex;flex-direction:column;gap:2px}
.app{position:relative}
.acct-who{margin:4px 8px 8px;display:flex;flex-direction:column;gap:2px;word-break:break-word}
.acct-item{text-align:left;background:none;border:0;border-radius:8px;padding:9px 10px;font-weight:600;color:var(--ink)}
.acct-item:hover{background:var(--surface-2)}
.acct-item.is-danger{color:var(--danger)}
.acct-legal{margin:6px 10px 2px;font-size:12.5px;color:var(--ink-3)}
.acct-legal a{color:inherit}
.banner-btns{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
#acct-move{border-style:solid;border-color:var(--run);background:color-mix(in srgb,var(--run) 7%,var(--surface))}
.gate{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:var(--bg)}
.gate-card{width:min(560px,100%);background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:28px 26px;display:flex;flex-direction:column;gap:12px}
.gate-brand{font-family:var(--display);font-weight:700;font-size:34px;letter-spacing:.03em;text-transform:uppercase;margin:0;line-height:1}
.gate-brand span{color:var(--ink-3);font-weight:500}
.gate-card h2{margin:4px 0 0;font-size:21px;line-height:1.3}
.gate-card p{margin:0}
.gate-consent{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.45;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.gate-consent input{margin-top:3px;width:18px;height:18px;flex:none}
.gate-btns{display:flex;flex-wrap:wrap;gap:10px}
.gate-err{color:var(--danger);font-weight:600}
@media (max-width:520px){.gate-card{padding:22px 18px}.gate-btns .btn{flex:1 1 100%}}

/* ---------- Set up your coach (#setup, js/views/setup.js) and Discover (#discover) ---------- */
.setup{max-width:720px;margin:0 auto}
.su-top .lbl{margin:0}
.su-step h2{font-family:var(--display);font-size:26px;margin:0 0 10px}
.su-step h2:focus{outline:none}
.su-step p{margin:0 0 12px}
.su-choices{display:grid;gap:8px;margin:0 0 14px}
.su-choice{display:flex;flex-direction:column;gap:2px;text-align:left;padding:12px 14px;min-height:48px;border:1.5px solid var(--line);border-radius:10px;background:var(--surface)}
.su-choice span{font-size:13.5px;color:var(--ink-2)}
.su-choice[aria-checked="true"]{border-color:var(--run);background:color-mix(in srgb,var(--run) 8%,var(--surface))}
.su-choice[aria-checked="true"] b::before{content:"✓ ";color:var(--run)}
.su-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px;margin:0 0 14px}
.su-grid .field,.su-step>.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.su-step .seg{flex-wrap:wrap}
.su-why{font-size:13.5px;color:var(--ink-2);background:var(--surface-2);border-radius:8px;padding:10px 12px;margin:4px 0 0}
.su-btns{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.su-how summary{cursor:pointer;color:var(--ink-2);font-size:14px}
.su-how p{font-size:14px;margin:8px 0 0}
.su-sum{margin:0 0 12px;padding-left:20px}
.su-sum li{margin:4px 0}
.su-nav{display:flex;align-items:center;gap:8px;margin:12px 0}
.su-nav .spacer{flex:1}
.su-note{text-align:center}
.feats{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:0 0 14px}
.feat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;box-shadow:var(--shadow)}
.feat.is-on{opacity:.8}
.feat-t{margin:0 0 4px}
.feat-w{font-size:14px;color:var(--ink-2);margin:0 0 10px}
.feat-a{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.disc-card{margin-bottom:14px}
.disc-card .feat{border:none;box-shadow:none;padding:0}
.discover .lead{color:var(--ink-2);margin:0 0 14px}
.st-more{color:var(--run)}
.set-prof{margin-bottom:12px}
.set-prof .set-btns{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ---------- launch UX fixes ---------- */
/* The pace line on Today wraps instead of spilling out of its card. */
.td-wk li:last-child i.td-wide{white-space:normal}
/* The signed-in avatar is readable in dark mode too. */
.acct-btn.is-in{color:var(--btn-ink);background:var(--run)}
/* Scrolling tab rows: a fade at the edge says there's more. */
.st-tabs,.sec-tabs{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);padding-right:24px}
/* Phones: the tab bar doesn't sit under the editor's Save bar, and tap targets are at least 44 px. */
@media (max-width:699px){
  #app[data-view="edit"] .tabs{display:none}
  .icon-btn,.acct-btn{position:relative}
  .icon-btn::after,.acct-btn::after{content:"";position:absolute;inset:-4px}
  .link{min-height:44px;padding-inline:6px;display:inline-flex;align-items:center}
  p .link,li .link,.hint .link,.stat-sub .link{min-height:0;padding-inline:0;display:inline}
  .check{position:relative}.check::after{content:"";position:absolute;inset:-8px}
  .chip,.seg>button,.st-tab,.btn-sm{min-height:44px}
  .lt-x,.lt-tools button,.lt-day button{min-width:44px;min-height:44px}
  .strength>.st-top h2,.weight>.st-top h2,.coaching>.st-top h2,.discover>.st-top h2{margin-top:8px}
}
/* Sign-in by email (js/cloud.js) */
.gate-card .field{display:flex;flex-direction:column;gap:6px;margin:0 0 12px}
.gate-code{font-size:24px;letter-spacing:6px;font-variant-numeric:tabular-nums;max-width:12ch}
.gate-card p.gate-err:not([hidden]){color:var(--danger)}
.gate-have{margin:8px 0 0}
