:root {
  --ink: #172a3a;
  --navy: #0d2232;
  --blue: #087ca7;
  --cyan: #13b5d1;
  --lime: #c6df42;
  --paper: #f6f7f2;
  --white: #fff;
  --muted: #71808b;
  --line: #dfe5e4;
  --success: #2d8a65;
  --shadow: 0 18px 60px rgba(17, 40, 56, .12);
}

* { box-sizing: border-box; }
html { width:100%; overflow-x:hidden; -webkit-text-size-adjust:100%; }
body { width:100%; margin: 0; overflow-x:hidden; font-family: "DM Sans", sans-serif; color: var(--ink); background: var(--paper); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button, a, input, select, textarea { -webkit-tap-highlight-color: rgba(19,181,209,.18); }
img { max-width:100%; }
.hidden { display: none !important; }
.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; }

.brand { display: flex; align-items: center; color: inherit; }
.brand img { display: block; object-fit: contain; }
.brand-wordmark img { width: min(410px, 78vw); height: auto; }
.brand-compact { width: 58px; height: 58px; overflow: hidden; border-radius: 9px; background: #000; }
.brand-compact img { width: 100%; height: 100%; }
.brand-mark { width: 42px; height: 42px; border: 3px solid var(--cyan); border-radius: 50%; position: relative; }
.brand-mark::after { content: ""; position: absolute; width: 25px; height: 4px; background: var(--lime); left: 21px; top: 17px; transform: rotate(-18deg); border-radius: 4px; }
.brand-copy strong { display: block; font-family: Oswald, sans-serif; font-size: 21px; letter-spacing: .04em; line-height: 1; }
.brand-copy small { font-size: 8px; letter-spacing: .17em; text-transform: uppercase; color: var(--muted); }

.login-shell { min-height: 100vh; display: grid; grid-template-columns: 1.1fr .9fr; background: #000; }
.login-hero { padding: 45px 7vw; color: white; display: flex; flex-direction: column; justify-content: space-between; position: relative; overflow: hidden; background:#000; }
.login-hero::before { content: ""; width: 520px; height: 520px; border: 90px solid rgba(19,181,209,.12); border-radius: 50%; position: absolute; right: -180px; bottom: -230px; }
.login-hero .brand-copy small { color: #a9bcc8; }
.hero-copy { max-width: 610px; position: relative; z-index: 1; }
.eyebrow { color: var(--cyan); text-transform: uppercase; letter-spacing: .14em; font-size: 12px; font-weight: 700; }
h1, h2, h3, p { margin-top: 0; }
.hero-copy h1 { font-family: Oswald, sans-serif; font-size: clamp(48px, 6vw, 86px); line-height: .96; text-transform: uppercase; margin: 18px 0 24px; }
.hero-copy h1 span { color: var(--lime); }
.hero-copy p { color: #bfd0d9; font-size: 18px; max-width: 520px; line-height: 1.6; }
.hero-tagline { display:block; width: min(260px,60vw); margin-top: 26px; border-radius: 8px; }
.login-note { color: #718b9c; font-size: 13px; }
.login-panel { background: var(--paper); display: grid; place-items: center; padding: 30px; border-radius: 38px 0 0 38px; }
.login-card { width: min(420px, 100%); }
.login-card h2 { font-family: Oswald, sans-serif; font-size: 36px; text-transform: uppercase; margin-bottom: 8px; }
.subtle { color: var(--muted); line-height: 1.5; }
.role-tabs { display: flex; background: #e8edeb; padding: 5px; border-radius: 12px; margin: 28px 0 22px; }
.role-tab { flex: 1; border: 0; padding: 11px; background: transparent; border-radius: 9px; color: var(--muted); font-weight: 600; }
.role-tab.active { background: white; color: var(--ink); box-shadow: 0 2px 9px rgba(10,30,42,.08); }
.field { margin-bottom: 17px; }
.field label { display: block; font-size: 13px; font-weight: 700; margin-bottom: 7px; }
.field input, .field select, .field textarea { width: 100%; border: 1px solid var(--line); background: white; border-radius: 11px; padding: 13px 14px; outline: none; color: var(--ink); }
.field textarea { resize: vertical; min-height: 94px; }
#session-details,#template-details { min-height:150px; line-height:1.6; white-space:pre-wrap; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--cyan); box-shadow: 0 0 0 3px rgba(19,181,209,.12); }
.primary-btn, .secondary-btn { border: 0; border-radius: 11px; padding: 13px 18px; font-weight: 700; }
.primary-btn { background: var(--lime); color: #203017; }
.primary-btn:hover { filter: brightness(.96); }
.secondary-btn { background: white; border: 1px solid var(--line); color: var(--ink); }
.full-btn { width: 100%; }
.demo-hint { margin-top: 18px; font-size: 12px; color: var(--muted); background: #edf1ef; padding: 12px; border-radius: 10px; }
.secure-note { margin: 26px 0 20px; font-size: 12px; font-weight: 700; color: var(--success); background: #e7f2ed; padding: 11px 13px; border-radius: 10px; }
.install-app-link { width: 100%; margin: 20px 0 8px; border: 1px solid rgba(19,181,209,.34); background: linear-gradient(135deg, rgba(19,181,209,.12), rgba(194,232,39,.18)); color: var(--ink); border-radius: 12px; padding: 13px 16px; font-weight: 800; text-align: center; box-shadow: 0 8px 22px rgba(10,30,42,.07); }
.install-app-link:hover { border-color: var(--cyan); transform: translateY(-1px); }
.install-app-status { min-height: 18px; margin: 0 0 18px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.loading-screen { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: 20px; background: var(--paper); }
.loading-pulse { width: 42px; height: 42px; border-radius: 50%; border: 4px solid #dbe3e1; border-top-color: var(--cyan); animation: spin .8s linear infinite; }
.loading-screen p { color: var(--muted); }
@keyframes spin { to { transform: rotate(360deg); } }

.app-shell { min-height: 100vh; }
.topbar { min-height: 96px; background: #000; border-bottom: 2px solid #00bfff; box-shadow:0 0 0 1px rgba(0,191,255,.35) inset,0 8px 28px rgba(0,60,120,.16); padding: 9px clamp(14px, 3.4vw, 54px); display: flex; align-items: center; justify-content: space-between; gap:22px; position: sticky; top: 0; z-index: 10; }
.brand-banner { display:flex; align-items:center; min-width:0; flex:1 1 auto; max-width:min(1040px, calc(100vw - 350px)); }
.brand-banner-inner { width:fit-content; max-width:100%; display:flex; align-items:center; justify-content:flex-start; gap:1cm; padding:7px 12px 7px 16px; border:2px solid #009dff; border-radius:18px; background:#000; box-shadow:0 0 22px rgba(0,157,255,.48), inset 0 0 20px rgba(0,157,255,.16); }
.banner-wordmark { width:clamp(420px,46vw,620px); max-height:70px; object-fit:contain; object-position:left center; }
.banner-tagline { width:clamp(105px,11vw,145px); max-height:70px; object-fit:contain; object-position:left center; }
.mobile-brand { display:none; }
.top-actions { display: flex; align-items: center; gap: 18px; }
.top-action-stack { display:flex; flex-direction:column; align-items:flex-end; gap:5px; }
.top-data-actions { display:flex; gap:6px; align-items:center; justify-content:flex-end; }
.top-data-actions button,
.top-data-actions a { border:1px solid rgba(0,191,255,.32); background:rgba(0,191,255,.08); color:#d5e6ee; border-radius:999px; padding:4px 8px; font-size:11px; font-weight:800; line-height:1; cursor:pointer; text-decoration:none; }
.top-data-actions button:hover,
.top-data-actions button:focus,
.top-data-actions a:hover,
.top-data-actions a:focus { color:#fff; border-color:#00bfff; background:rgba(0,191,255,.18); }
.user-chip { display: flex; align-items: center; gap: 10px; }
.topbar .user-chip strong { color:#fff; }
.topbar .subtle { color:#b8ceda !important; }
.avatar { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: var(--navy); color: white; font-weight: 700; }
.topbar .avatar { background:#082033; border:1px solid rgba(0,191,255,.5); }
.logout { border: 0; background: transparent; color: #d5e6ee; }
.logout:hover,.logout:focus { color:#00bfff; }
.main { width: min(1180px, 92%); margin: 34px auto 70px; }
.welcome { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 28px; }
.welcome h1 { font-family: Oswald, sans-serif; text-transform: uppercase; font-size: clamp(35px, 5vw, 58px); line-height: 1; margin: 5px 0 8px; }
.coach-assignment-line { margin-top:8px; color:#52636d; font-size:14px; }
.coach-assignment-line strong { color:var(--navy); }
.welcome-actions { display: flex; gap: 9px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.athlete-view-head { align-items:flex-start; }
.coach-athlete-actions { width:min(760px,100%); display:grid; grid-template-columns:repeat(4,minmax(130px,1fr)); gap:10px; align-items:end; justify-content:end; }
.coach-athlete-actions .athlete-switcher { grid-column:span 2; min-width:0; width:100%; }
.coach-athlete-actions #compare-athlete-calendars { grid-column:span 2; }
.coach-athlete-actions #coach-athlete-month-pdf { grid-column:span 2; }
.coach-athlete-actions > button { width:100%; min-height:50px; justify-content:center; padding:10px 14px; }
.athlete-switcher { display:flex; flex-direction:column; gap:4px; min-width:190px; color:var(--muted); font-size:10px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.athlete-switcher select { width:100%; min-height:38px; border:1px solid var(--line); border-radius:10px; background:#fff; color:var(--navy); padding:8px 10px; font-size:13px; font-weight:800; text-transform:none; letter-spacing:0; }
.athlete-switcher select:focus { outline:2px solid rgba(0,191,255,.28); border-color:var(--cyan); }
.date-pill { background: var(--navy); color: white; border-radius: 14px; padding: 13px 18px; white-space: nowrap; }
.stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 24px; }
.stat { background: white; border: 1px solid var(--line); padding: 20px; border-radius: 16px; }
.stat-value { font-family: Oswald, sans-serif; font-size: 34px; }
.stat-label { color: var(--muted); font-size: 13px; }
.dashboard-grid { display: grid; grid-template-columns: 1fr 330px; gap: 22px; align-items: start; }
.card { background: white; border: 1px solid var(--line); border-radius: 18px; box-shadow: 0 7px 24px rgba(20,50,65,.04); }
.card-head { padding: 20px 22px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; }
.card-head h2 { font-family: Oswald, sans-serif; text-transform: uppercase; margin: 0; font-size: 24px; }
.month-nav { display: flex; gap: 7px; align-items: center; }
.icon-btn { width: 34px; height: 34px; border: 1px solid var(--line); background: white; border-radius: 9px; }
.calendar { padding: 18px; }
.calendar-weekday-row,.calendar-week-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:7px; align-items:stretch; min-width:0; overflow:visible; }
.calendar-week-rows { display:grid; gap:7px; }
.week-actions-spacer { width:34px; }
.weekdays, .calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 7px; min-width:0; }
.weekdays div { text-align: center; color: var(--muted); font-size: 11px; font-weight: 700; text-transform: uppercase; padding-bottom: 8px; min-width:0; }
.day { min-height: 92px; min-width:0; border: 1px solid var(--line); border-radius: 10px; padding: 8px; background: #fff; display:flex; flex-direction:column; overflow:hidden; }
.day-top { display:flex; align-items:center; justify-content:space-between; }
.day.muted { background: #f7f8f6; color: #b5bdbd; }
.day.month-jump { cursor:pointer; transition:border-color .15s, background .15s, color .15s, transform .15s; }
.day.month-jump:hover,.day.month-jump:focus { border-color:var(--cyan); background:#eefbfc; color:var(--blue); outline:none; transform:translateY(-1px); }
.day.today { border-color: var(--cyan); box-shadow: inset 0 0 0 1px var(--cyan); }
.day-num { font-size: 12px; font-weight: 700; }
.day-actions { display:flex; align-items:center; gap:3px; }
.day-add,.day-race-btn,.day-weekend-swap-btn { width:22px; height:22px; border:0; border-radius:6px; font-weight:700; line-height:1; opacity:.25; transition:.15s; }
.day-add { background:#e6f5f8; color:var(--blue); }
.day-race-btn { display:grid; place-items:center; padding:0; background:#f2f6df; color:#5d661b; font-size:13px; }
.day-weekend-swap-btn { display:grid; place-items:center; padding:0; background:#e8f2ff; color:#173d69; cursor:pointer; }
.day-weekend-swap-btn img { width:15px; height:15px; object-fit:contain; display:block; }
.day-drag-btn { width:auto; min-width:30px; height:22px; padding:0 6px; border:0; border-radius:6px; background:#edf4ff; color:#2765a6; font-size:9px; font-weight:950; line-height:1; opacity:.4; cursor:grab; }
.day-drag-btn.dragging,.week-drag-btn.dragging { opacity:.65; cursor:grabbing; transform:scale(.97); }
.day:hover .day-add,.day-add:focus,.day:hover .day-race-btn,.day-race-btn:focus,.day:hover .day-weekend-swap-btn,.day-weekend-swap-btn:focus { opacity:1; }
.day:hover .day-drag-btn,.day-drag-btn:focus { opacity:1; }
.day-actions button:disabled { opacity:.1; cursor:not-allowed; }
.week-share-btn { width:25px; height:25px; display:grid; place-items:center; align-self:flex-end; margin-top:auto; padding:5px; border:0; border-radius:8px; background:#dff3e8; color:#168b51; opacity:.45; transition:.15s; }
.week-share-btn svg { width:100%; height:100%; overflow:visible; }
.week-share-btn path:first-child { fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.week-share-btn path:last-child { fill:currentColor; stroke:none; }
.day:hover .week-share-btn,.week-share-btn:focus { opacity:1; transform:translateY(-1px); box-shadow:0 4px 10px rgba(22,139,81,.18); }
.week-actions { display:flex; align-items:center; justify-content:flex-end; gap:4px; align-self:flex-end; margin-top:auto; }
.calendar-week-row > .week-actions { align-self:stretch; justify-content:center; flex-direction:column; min-width:34px; margin-top:0; padding:4px 0; border:1px solid var(--line); border-radius:10px; background:#fbfcfa; }
.week-actions .week-share-btn { align-self:auto; margin-top:0; }
.week-copy-btn { width:25px; height:25px; display:grid; place-items:center; padding:0; border:0; border-radius:8px; background:#e4efff; color:#2765a6; font-size:17px; line-height:1; opacity:.45; transition:.15s; }
.day:hover .week-copy-btn,.week-copy-btn:focus { opacity:1; transform:translateY(-1px); box-shadow:0 4px 10px rgba(39,101,166,.18); }
.week-download-btn { width:30px; height:25px; display:grid; place-items:center; padding:0; border:0; border-radius:8px; background:#f2f6df; color:#5d661b; font-size:9px; font-weight:900; line-height:1; opacity:.45; transition:.15s; cursor:pointer; }
.day:hover .week-download-btn,.week-download-btn:focus { opacity:1; transform:translateY(-1px); box-shadow:0 4px 10px rgba(93,102,27,.16); }
.calendar-week-row:hover .week-share-btn,.calendar-week-row:hover .week-copy-btn,.calendar-week-row:hover .week-download-btn,.calendar-week-row:hover .week-drag-btn,.week-share-btn:focus,.week-copy-btn:focus,.week-download-btn:focus,.week-drag-btn:focus { opacity:1; transform:translateY(-1px); }
.week-drag-btn { height:25px; padding:0 8px; border:0; border-radius:8px; background:#e4efff; color:#2765a6; font-size:9px; font-weight:950; text-transform:uppercase; letter-spacing:.04em; opacity:.48; transition:.15s; cursor:grab; }
.day:hover .week-drag-btn,.week-drag-btn:focus { opacity:1; transform:translateY(-1px); box-shadow:0 4px 10px rgba(39,101,166,.18); }
.session-chip { display: block; width: 100%; min-width:0; border: 1px solid #24d6ee; border-radius: 8px; padding: 6px 7px; margin-top: 7px; text-align: left; font-size: 10.5px; font-weight: 850; line-height: 1.18; background: #aef5ff; color: #052b3a; box-shadow: inset 0 0 0 1px rgba(255,255,255,.34), 0 2px 7px rgba(8,124,167,.08); overflow:hidden; }
.session-chip[draggable="true"] { cursor:grab; }
.session-chip.dragging { opacity:.55; cursor:grabbing; transform:scale(.98); }
.day.drop-target { outline:2px dashed var(--cyan); outline-offset:-5px; background:#f0fbfd; }
.session-chip-type,.session-chip-name { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.session-chip-type { font-weight:950; letter-spacing:-.01em; }
.session-chip-name { margin-top:2px; font-size:9.5px; font-weight:850; opacity:1; }
.session-chip.easy,.session-chip.long { background:#aef5ff; color:#052b3a; border-color:#24d6ee; }
.session-chip.quality,.session-chip.interval,.session-chip.hill,.session-chip.tempo,.session-chip.threshold,.session-chip.steady,.session-chip.fartlek { background: #0047AB; color: #fff; border-color:#00337c; text-shadow:0 1px 1px rgba(0,18,56,.28); box-shadow: inset 0 0 0 1px rgba(255,255,255,.22), 0 2px 8px rgba(0,71,171,.22); }
.session-chip.rest { background: #f4f6f2; color: #44535d; border: 1px dashed #aebdbb; box-shadow:none; }
.session-chip.incomplete { background: #a30209; color: #fff; border: 2px solid #470707; text-shadow:0 1px 1px rgba(80,0,0,.22); }
.session-chip.completed {
  background: #058731;
  color: #c9f2cc;
  border-color: #39ff14;
  text-decoration: none;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18), 0 0 0 2px rgba(57,255,20,.14);
}
.session-chip.unplanned-run { background:#FF5C00!important; color:#fff!important; border-color:#ff8a45!important; text-decoration:none!important; text-shadow:0 1px 1px rgba(92,22,0,.35); box-shadow: inset 0 0 0 1px rgba(255,255,255,.25), 0 0 0 2px rgba(255,92,0,.14), 0 4px 12px rgba(255,92,0,.2)!important; }
.session-chip.race:not(.completed) { background:#8A00C4; color:#fff; border:1px solid #b935ff; text-shadow:0 1px 1px rgba(46,0,70,.3); box-shadow:0 0 0 2px rgba(138,0,196,.16), 0 0 14px rgba(138,0,196,.18); }
.calendar-context-menu { position: fixed; z-index: 120; width: min(230px, calc(100vw - 16px)); padding: 8px; border: 1px solid var(--line); border-radius: 14px; background: #fff; box-shadow: 0 18px 42px rgba(8, 28, 42, .24); }
.calendar-context-title { padding: 6px 8px 7px; color: var(--navy); font-size: 12px; font-weight: 900; border-bottom: 1px solid var(--line); margin-bottom: 5px; }
.calendar-context-menu button { display: block; width: 100%; padding: 9px 10px; border: 0; border-radius: 10px; background: transparent; color: var(--navy); text-align: left; font-size: 13px; font-weight: 800; cursor: pointer; }
.calendar-context-menu button:hover:not(:disabled), .calendar-context-menu button:focus:not(:disabled) { background: #eff9fb; color: var(--blue); outline: none; }
.calendar-context-menu button.danger { color: #b5473f; }
.calendar-context-menu button.danger:hover:not(:disabled), .calendar-context-menu button.danger:focus:not(:disabled) { background: #fff0ef; color: #9c302c; }
.calendar-context-menu button:disabled { opacity: .42; cursor: not-allowed; }
.calendar-context-menu small { display: block; padding: 7px 8px 4px; color: var(--muted); font-size: 10px; line-height: 1.25; }
.race-chip { display:block; width:100%; margin-top:6px; padding:5px 6px; overflow:hidden; border:1px solid #b935ff; border-radius:7px; background:#8A00C4; color:#fff; text-align:left; font-size:10.5px; font-weight:950; line-height:1.15; text-overflow:ellipsis; white-space:nowrap; text-shadow:0 1px 1px rgba(46,0,70,.3); box-shadow: inset 0 0 0 1px rgba(255,255,255,.18), 0 2px 8px rgba(138,0,196,.18); }
.race-chip:hover,.race-chip:focus { border-color:#d46cff; box-shadow:0 0 0 2px rgba(138,0,196,.28), 0 0 16px rgba(138,0,196,.22); }
.compare-main { width:100%; max-width:none; padding:0 clamp(12px,1.5vw,28px); margin-top:24px; }
.compare-head { align-items:flex-start; margin-bottom:18px; }
.compare-head > div { max-width:980px; }
.compare-calendar-layout { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(10px,1.2vw,18px); align-items:start; }
.compare-calendar-panel { min-width:0; overflow:hidden; }
.compare-panel-head { display:grid; gap:12px; padding:16px; border-bottom:1px solid var(--line); background:linear-gradient(180deg,#fff,#fbfcfa); }
.compare-panel-select-row { display:grid; grid-template-columns:minmax(0,2fr) minmax(150px,1fr); gap:10px; align-items:end; }
.compare-panel-head .athlete-switcher { width:100%; min-width:0; }
.compare-panel-month-row { display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; }
.compare-panel-month-controls { display:flex; align-items:center; gap:10px; min-width:0; }
.compare-panel-month-controls h2 { margin:0; font-family:Oswald,sans-serif; font-size:clamp(22px,1.8vw,30px); line-height:1; text-transform:uppercase; white-space:nowrap; }
.compare-panel-month-controls .month-nav { width:auto; flex:0 0 auto; justify-content:flex-start; }
.compare-panel-month-controls .icon-btn { width:38px; height:38px; }
.compare-panel-head .compact-btn { flex:0 0 auto; padding:9px 12px; white-space:nowrap; }
.compare-calendar-panel .calendar { height:clamp(760px,82vh,1040px); min-height:0; padding:12px; overflow:auto; overflow-anchor:none; overscroll-behavior:contain; scrollbar-gutter:stable; -webkit-overflow-scrolling:touch; }
.compare-calendar-panel .weekdays,
.compare-calendar-panel .calendar-grid { min-width:0; gap:5px; }
.compare-calendar-panel .day { min-height:88px; padding:6px; }
.compare-calendar-panel .session-chip,
.compare-calendar-panel .race-chip { font-size:9.5px; padding:5px 6px; margin-top:5px; }
.compare-calendar-panel .day-actions { flex-wrap:wrap; justify-content:flex-end; max-width:94px; }
.compare-week-actions { width:100%; }
.side-card { padding-bottom: 8px; }
.next-session { padding: 21px; }
.type-badge { display: inline-block; color: #586717; background: #edf4c9; border-radius: 99px; padding: 6px 10px; font-size: 11px; font-weight: 700; text-transform: uppercase; }
.type-badge.rest { color: #667781; background: #eef1f0; }
.type-badge.race { color:#fff; background:#8A00C4; box-shadow:0 0 0 1px #b935ff inset; }
.next-session h3 { font-size: 24px; margin: 14px 0 8px; }
.meta-list { list-style: none; padding: 0; margin: 18px 0; }
.meta-list li { padding: 8px 0; border-bottom: 1px solid #edf0ef; display: flex; justify-content: space-between; font-size: 13px; }
.meta-list span { color: var(--muted); }
.recent { padding: 0 21px 12px; }
.recent-item { width:100%; padding:14px 0; border:0; border-bottom:1px solid var(--line); display:flex; gap:12px; text-align:left; background:transparent; color:inherit; }
.recent-item:hover strong { color:var(--blue); }
.recent-dot { width: 9px; height: 9px; margin-top: 5px; background: var(--success); border-radius: 50%; flex: 0 0 auto; }
.recent-item strong { display: block; font-size: 13px; }
.recent-item small { display:block; color: var(--muted); }
.recent-item .recent-shoe-distance { margin-top:3px; color:#476878; font-weight:700; }
.athlete-lower-grid { display: grid; grid-template-columns: 1.45fr .75fr; gap: 22px; margin-top: 22px; align-items: start; }
.empty-state { text-align: center; padding: 42px 20px; color: var(--muted); }
.empty-state strong { color: var(--ink); }
.empty-state p { margin: 7px 0 0; }
.feeling { display: inline-block; padding: 5px 9px; border-radius: 99px; background: #e5f3ed; color: #2b7358; font-size: 11px; font-weight: 700; }
.feeling.alert { background: #f8e1e1; color: #9a3f3f; }
.progress-body { padding: 24px; text-align: center; }
.progress-ring { --progress: 0deg; width: 150px; height: 150px; margin: 0 auto 22px; border-radius: 50%; display: grid; place-items: center; background: conic-gradient(var(--lime) var(--progress), #e7ebe8 0); position: relative; }
.progress-ring::after { content: ""; position: absolute; inset: 13px; border-radius: 50%; background: white; }
.progress-ring div { position: relative; z-index: 1; }
.progress-ring strong { display: block; font-family: Oswald, sans-serif; font-size: 36px; }
.progress-ring small { display: block; color: var(--muted); }
.progress-metrics { display: grid; grid-template-columns: repeat(3,1fr); gap: 5px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 16px 0; margin-bottom: 16px; }
.progress-metrics strong { display: block; font-size: 19px; }
.progress-metrics span { display: block; color: var(--muted); font-size: 10px; }
.load-progress-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:0 0 16px; }
.load-progress-metrics > div { padding:11px; border-radius:10px; background:#f2f7e1; text-align:center; }
.load-progress-metrics strong,.load-progress-metrics span { display:block; }
.load-progress-metrics strong { color:var(--navy); font-size:17px; }
.load-progress-metrics span { margin-top:2px; color:var(--muted); font-size:9px; text-transform:uppercase; }
.athlete-cards { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; padding: 18px; }
.athlete-card { border: 1px solid var(--line); border-radius: 13px; padding: 14px; min-width: 0; }
.athlete-card-top { display: flex; gap: 10px; align-items: center; }
.athlete-card-top .avatar { width: 34px; height: 34px; font-size: 11px; flex: 0 0 auto; }
.athlete-card-top strong, .athlete-card-top span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.athlete-name-link,.profile-name-link { border:0; background:transparent; color:var(--ink); padding:0; text-align:left; font-weight:700; }
.athlete-name-link:hover,.profile-name-link:hover { color:var(--blue); text-decoration:underline; }
.athlete-name-link { font-size:14px; }
.athlete-card-top span { color: var(--muted); font-size: 10px; margin-top: 2px; }
.athlete-contact { margin:14px 0 4px; display:grid; grid-template-columns:1fr 1.5fr; gap:8px 12px; }
.athlete-contact div { min-width:0; }
.athlete-contact dt { color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.05em; }
.athlete-contact dd { margin:2px 0 0; font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mini-progress { height: 5px; margin: 14px 0 8px; background: #e7ebe8; border-radius: 99px; overflow: hidden; }
.mini-progress i { display: block; height: 100%; background: var(--lime); border-radius: inherit; }
.athlete-card-meta { display: flex; justify-content: space-between; gap: 5px; color: var(--muted); font-size: 9px; }
.coach-dashboard-columns { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; align-items:start; }
.coach-dashboard-columns > .card { min-width:0; }
.coach-athletes-card .athlete-list-row { grid-template-columns:38px minmax(0,1fr); gap:10px; padding:10px; }
.coach-athletes-card .athlete-status-pill { grid-column:2; justify-self:start; padding:5px 8px; font-size:9px; }
.coach-athletes-card .athlete-list-metrics { grid-column:1/-1; grid-template-columns:1fr 1fr; text-align:left; gap:4px; font-size:10px; }
.coach-athletes-card .athlete-list-main span { font-size:11px; }
.coach-recent-card .coach-table table { min-width:720px; }
.coach-dashboard-session-list { display:grid; gap:9px; max-height:720px; overflow-y:auto; padding:12px 14px 16px; }
.coach-dashboard-session-item { min-width:0; padding:12px; border:1px solid var(--line); border-radius:13px; background:#fbfcfa; box-shadow:0 4px 12px rgba(6,26,38,.06); }
.coach-dashboard-session-item.completed-session { box-shadow:inset 4px 0 0 rgba(5,135,49,.54),0 4px 12px rgba(6,26,38,.06); }
.coach-dashboard-session-item.upcoming-session { box-shadow:inset 4px 0 0 rgba(0,179,255,.62),0 4px 12px rgba(6,26,38,.06); }
.coach-dashboard-session-kicker { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; margin-bottom:7px; color:var(--muted); font-size:9px; font-weight:900; letter-spacing:.04em; text-transform:uppercase; }
.coach-dashboard-session-kicker span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.coach-dashboard-session-kicker span:last-child { text-align:right; }
.coach-dashboard-session-title { display:block; width:100%; margin:0 0 8px; overflow:hidden; color:var(--navy); font-size:13px; font-weight:950; text-align:left; text-overflow:ellipsis; white-space:nowrap; }
.coach-dashboard-athlete-line { display:flex; align-items:baseline; gap:7px; min-width:0; }
.coach-dashboard-athlete-line .athlete-name-link { min-width:0; overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.coach-dashboard-athlete-line > span { min-width:0; overflow:hidden; color:var(--muted); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.coach-dashboard-session-result { display:grid; gap:2px; margin-top:9px; padding-top:8px; border-top:1px solid var(--line); }
.coach-dashboard-session-result strong { min-width:0; overflow:hidden; color:var(--ink); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.coach-dashboard-session-result span { min-width:0; overflow:hidden; color:var(--muted); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.athlete-list { display:grid; gap:8px; padding:12px 16px 16px; }
.athlete-folder-list { gap:10px; }
.athlete-folder { overflow:hidden; border:1px solid var(--line); border-radius:14px; background:#fbfcfa; }
.athlete-folder summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 14px; cursor:pointer; list-style:none; }
.athlete-folder summary::-webkit-details-marker { display:none; }
.athlete-folder summary::before { content:"▸"; color:var(--blue); font-weight:900; transition:.18s; }
.athlete-folder[open] summary::before { transform:rotate(90deg); }
.athlete-folder summary div { flex:1; min-width:0; }
.athlete-folder summary strong { display:block; font-family:Oswald,sans-serif; color:var(--navy); font-size:18px; text-transform:uppercase; }
.athlete-folder summary span { display:block; margin-top:2px; color:var(--muted); font-size:11px; }
.athlete-folder summary em { min-width:30px; padding:5px 9px; border-radius:999px; background:#e6f5f8; color:var(--blue); text-align:center; font-style:normal; font-size:11px; font-weight:900; }
.athlete-folder-rows { display:grid; gap:8px; padding:0 10px 10px; }
.athlete-list-row { display:grid; grid-template-columns:42px minmax(0,1fr) auto minmax(230px,.9fr); gap:12px; align-items:center; padding:12px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.athlete-list-row.is-inactive { opacity:.62; }
.athlete-list-main { min-width:0; }
.athlete-list-main span { display:block; margin-top:3px; overflow:hidden; color:var(--muted); font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.athlete-status-pill { justify-self:start; padding:6px 9px; border-radius:999px; background:#e5f3ed; color:#27684f; font-size:10px; font-weight:900; text-transform:uppercase; white-space:nowrap; }
.athlete-status-pill.attention { background:#f8e1e1; color:#9a3f3f; }
.athlete-status-pill.inactive { background:#eef1f0; color:#708089; }
.athlete-list-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; color:var(--muted); font-size:11px; text-align:right; }
.athlete-list-metrics span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.athlete-list-metrics strong { color:var(--ink); }
.text-alert { color: #a23f3f; font-weight: 700; }
.back-link { border:0; background:transparent; color:var(--blue); padding:0; margin:0 0 18px; font-weight:700; }
.profile-manager { display:grid; grid-template-columns:minmax(320px,.8fr) 1.2fr; gap:22px; align-items:start; }
.profile-form { padding:24px; }
.profile-form small { display:block; color:var(--muted); margin-top:7px; }
.profile-avatar-preview { width:72px; height:72px; border-radius:50%; display:grid; place-items:center; margin:0 auto 24px; background:var(--navy); color:white; font-family:Oswald,sans-serif; font-size:26px; }
.active-toggle { display:flex; align-items:center; gap:9px; padding:12px 0 20px; font-size:13px; font-weight:700; }
.active-toggle input { accent-color:var(--blue); width:18px; height:18px; }
.profile-list { padding:8px 20px 18px; }
.profile-category-list { display:grid; gap:10px; padding-top:12px; }
.profile-category { border:1px solid var(--line); border-radius:14px; background:#fbfcfa; overflow:hidden; }
.profile-category summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 14px; cursor:pointer; list-style:none; }
.profile-category summary::-webkit-details-marker { display:none; }
.profile-category summary strong { display:block; color:var(--navy); font-size:14px; }
.profile-category summary span { display:block; color:var(--muted); font-size:11px; margin-top:2px; }
.profile-category summary em { min-width:28px; height:28px; display:grid; place-items:center; border-radius:999px; background:#eaf6fb; color:var(--blue); font-style:normal; font-weight:900; }
.profile-category-rows { padding:0 14px 4px; }
.profile-category .profile-row:last-child { border-bottom:0; }
.profile-row { display:grid; grid-template-columns:42px minmax(0,1fr) auto auto auto; align-items:center; gap:12px; padding:14px 0; border-bottom:1px solid var(--line); }
.profile-row:last-child { border-bottom:0; }
.profile-row-copy { min-width:0; }
.profile-row-copy strong,.profile-row-copy span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.profile-name-link { display:block; font-size:13px; }
.profile-row-copy span { color:var(--muted); font-size:12px; margin-top:3px; }
.athlete-title-row { display:flex; align-items:center; gap:16px; }
.avatar.large { width:68px; height:68px; font-size:20px; }
.athlete-info-grid { display:grid; grid-template-columns:.6fr 1fr 1.5fr 1fr; gap:12px; margin-bottom:22px; }
.athlete-info-grid > div { background:white; border:1px solid var(--line); border-radius:13px; padding:15px; min-width:0; }
.athlete-info-grid span { display:block; color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.06em; margin-bottom:5px; }
.athlete-info-grid strong { display:block; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.athlete-info-grid a { color:var(--blue); text-decoration:none; }

.modal-backdrop { position: fixed; inset: 0; background: rgba(6,23,34,.72); display: grid; place-items: center; padding: 20px; z-index: 30; }
.modal { width: min(590px, 100%); max-height: 92vh; overflow: auto; background: var(--paper); border-radius: 20px; box-shadow: var(--shadow); }
.modal-top { padding: 24px 26px; background: var(--navy); color: white; position: relative; }
.modal-top h2 { font-family: Oswald, sans-serif; text-transform: uppercase; font-size: 32px; margin: 10px 40px 4px 0; }
.close { position: absolute; right: 17px; top: 17px; border: 0; background: rgba(255,255,255,.12); color: white; width: 34px; height: 34px; border-radius: 50%; }
.modal-body { padding: 25px 26px; }
.workout-block { background: white; border-left: 4px solid var(--cyan); padding: 16px; border-radius: 0 10px 10px 0; line-height: 1.55; margin: 17px 0; white-space:pre-line; }
.detail-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 15px 0; }
.detail { background: white; padding: 12px; border-radius: 10px; }
.race-priority-strip { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 14px; padding:13px 15px; border:1px solid #dbe9a8; border-radius:13px; background:#fbfdea; }
.race-priority-strip strong { color:var(--navy); font-size:15px; }
.race-goal-pill { display:inline-flex; align-items:center; width:max-content; padding:7px 11px; border-radius:999px; font-size:10px; font-weight:900; text-transform:uppercase; letter-spacing:.05em; }
.race-goal-pill.goal { color:#5d3b00; background:#ffe3a3; }
.race-goal-pill.sub_goal { color:#075f72; background:#dff5f8; }
.race-goal-pill.non_goal { color:#667781; background:#eef1f0; }
.race-goal-pill.training { color:#2f6650; background:#e3f4e9; }
.training-focus-card { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:10px 0 20px; padding:13px 15px; border:1px solid #b9e8ff; border-radius:12px; background:#effaff; }
.training-focus-card small { color:var(--muted); font-weight:700; }
.training-focus-card strong { color:var(--blue); text-align:right; }
.training-focus-card span { color:var(--muted); font-size:11px; line-height:1.4; text-align:right; }
.load-score-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; margin:0 0 20px; }
.load-score-grid > div { padding:13px; border:1px solid #dbe9a8; border-radius:12px; background:#f8fbe9; }
.load-score-grid small,.load-score-grid span { display:block; color:var(--muted); font-size:10px; line-height:1.35; }
.load-score-grid strong { display:block; margin:4px 0 2px; color:var(--navy); font-size:18px; }
.training-focus-label { display:inline-block; margin-top:6px; padding:4px 8px; border-radius:999px; background:#eaf8ff; color:#0878b9; font-size:.78rem; font-weight:800; }
.repeat-results-card { margin:0 0 22px; padding:18px; border:1px solid #b9e8ff; border-radius:14px; background:#f4fbff; }
.fit-upload-card { margin:0 0 20px; padding:18px; border:1px dashed #8fcbd8; border-radius:14px; background:#f5fcfd; }
.fit-upload-copy h4 { margin:4px 0 5px; color:var(--navy); font-size:18px; }
.fit-upload-copy p { margin:0 0 13px; color:var(--muted); font-size:12px; line-height:1.5; }
.fit-upload-button { display:inline-flex; align-items:center; justify-content:center; cursor:pointer; }
.fit-upload-status { margin:10px 0 0; color:var(--muted); font-size:12px; font-weight:700; }
.workout-feedback-card { margin:0 0 20px; padding:18px; border:1px solid #b9e8ff; border-radius:14px; background:#f4fbff; }
.workout-feedback-head { display:flex; justify-content:space-between; align-items:start; gap:12px; margin-bottom:8px; }
.workout-feedback-head h4 { margin:4px 0 0; color:var(--navy); font-size:17px; }
.workout-feedback-head > span { padding:5px 8px; border-radius:99px; background:#dff7e9; color:#24724d; font-size:9px; font-weight:900; text-transform:uppercase; }
.workout-feedback-card > p { margin:0 0 12px; color:var(--muted); font-size:12px; line-height:1.5; }
.workout-feedback-actions { display:flex; flex-wrap:wrap; gap:8px; }
.workout-feedback-card textarea { width:100%; min-height:125px; margin-top:12px; padding:13px 14px; resize:vertical; border:1px solid #9dd4e9; border-radius:11px; background:white; color:var(--ink); font:inherit; line-height:1.5; }
.workout-feedback-card textarea:focus { outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(0,157,220,.12); }
.workout-feedback-card button:disabled { opacity:.45; cursor:not-allowed; }
.workout-feedback-status { min-height:18px; margin:8px 0 10px!important; color:#24724d!important; font-size:11px!important; font-weight:700; }
.saved-workout-feedback { margin-top:18px; }
.fit-analysis-card { margin-top:16px; padding:17px; border:1px solid #b9dce4; border-radius:14px; background:white; }
.fit-analysis-head { display:flex; justify-content:space-between; align-items:start; gap:14px; margin-bottom:14px; }
.fit-analysis-head h4 { margin:4px 0 0; color:var(--navy); font-size:17px; text-transform:capitalize; }
.fit-verified { padding:5px 9px; border-radius:99px; background:#dceee7; color:#296e54; font-size:10px; font-weight:800; text-transform:uppercase; }
.fit-comparison-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.fit-comparison-grid > div { padding:11px; border:1px solid var(--line); border-radius:10px; background:#fafcfb; }
.fit-comparison-grid small,.fit-comparison-grid span { display:block; color:var(--muted); font-size:10px; }
.fit-comparison-grid strong { display:block; margin:4px 0 3px; color:var(--navy); font-size:15px; }
.fit-laps { margin-top:13px; border-top:1px solid var(--line); }
.fit-laps summary { padding:11px 0 3px; color:var(--blue); font-size:12px; font-weight:800; cursor:pointer; }
.fit-lap-table { max-height:270px; overflow:auto; margin-top:8px; border:1px solid var(--line); border-radius:10px; }
.fit-lap-table th,.fit-lap-table td { padding:8px 10px; white-space:nowrap; font-size:11px; }
.fit-analysis-meta { display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }
.fit-analysis-meta span:not(:empty) { padding:5px 8px; border-radius:7px; background:#eff3f2; color:var(--muted); font-size:10px; font-weight:700; }
.fit-history-badge { display:inline-flex; margin-left:7px; padding:3px 6px; border-radius:6px; background:#e4efff; color:#2765a6; font-size:9px; font-weight:900; vertical-align:middle; }
.fit-progress-metrics { grid-column:1/-1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; width:100%; margin-top:12px; }
.fit-progress-metrics > div { padding:10px; border-radius:9px; background:#f2f7f8; text-align:center; }
.fit-progress-metrics strong,.fit-progress-metrics span { display:block; }
.fit-progress-metrics strong { color:var(--navy); font-size:14px; }
.fit-progress-metrics span { margin-top:2px; color:var(--muted); font-size:9px; text-transform:uppercase; }
.unplanned-run-modal .modal-top { background:linear-gradient(135deg,#0d2232 0%,#172a3a 72%,#FF5C00 150%); }
.unplanned-warning { margin:0 0 16px; padding:14px 15px; border-left:5px solid #FF5C00; border-radius:12px; background:#fff1e8; color:#8b2f00; font-size:13px; font-weight:800; line-height:1.45; }
.unplanned-title-card { margin:0 0 16px; padding:14px 16px; border:1px solid rgba(255,92,0,.35); border-radius:14px; background:linear-gradient(135deg,#fff7ef,#fff); }
.unplanned-title-card small { display:block; color:var(--muted); font-size:10px; font-weight:900; text-transform:uppercase; letter-spacing:.08em; }
.unplanned-title-card strong { display:block; margin-top:5px; color:#FF5C00; font-size:22px; }
.unplanned-target-control { margin:0 0 18px; padding:15px; border:1px solid #ffd0b5; border-radius:14px; background:#fffaf6; }
.unplanned-target-control > small,.unplanned-result-hint { display:block; margin-top:9px; color:#8b5b42; font-size:11px; font-weight:800; line-height:1.4; }
.unplanned-result-hint { margin:0 0 9px; padding:9px 11px; border-radius:10px; background:#fff4ec; }
.unplanned-result-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.unplanned-run-modal .modal-actions .primary-btn { background:#FF5C00; color:#fff; }
.unplanned-run-modal .modal-actions .primary-btn:hover { filter:brightness(.96); }
.repeat-results-head { display:flex; justify-content:space-between; align-items:start; gap:16px; }
.repeat-results-head h4 { margin:5px 0 0; font-size:17px; }
.repeat-unit { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:12px; font-weight:700; }
.repeat-unit select { border:1px solid var(--line); border-radius:8px; padding:8px; background:white; }
.repeat-set { margin-top:16px; }
.repeat-set h5 { margin:0 0 9px; color:var(--navy); font-size:13px; text-transform:uppercase; letter-spacing:.05em; }
.repeat-set-heading { display:flex; justify-content:space-between; align-items:end; gap:12px; margin-bottom:9px; }
.repeat-set-heading h5 { margin:0 0 3px; }
.repeat-set-heading span { color:var(--muted); font-size:11px; font-weight:700; }
.repeat-result-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(135px,1fr)); gap:9px; }
.repeat-result-field { min-width:0; margin:0; padding:10px; border:1px solid #d7e8ef; border-radius:11px; background:rgba(255,255,255,.68); }
.repeat-result-field input { min-width:0; background:white; }
.repeat-result-label-row { display:flex; align-items:center; justify-content:space-between; gap:7px; margin-bottom:6px; }
.repeat-result-label-row label { min-width:0; margin:0; }
.repeat-result-remove { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; width:22px; height:22px; padding:0; border:1px solid #efb9b9; border-radius:50%; background:#fff7f7; color:#b44343; font-size:15px; font-weight:900; line-height:1; cursor:pointer; }
.repeat-result-remove:hover { border-color:#d76a6a; background:#ffecec; }
.repeat-alternate-target { margin-top:8px; padding-top:8px; border-top:1px dashed #c8dce5; }
.repeat-alternate-target > label { display:block; margin-bottom:5px; color:var(--navy); font-size:10px; font-weight:800; }
.repeat-alternate-target > div { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:6px; }
.repeat-alternate-target > div span { color:var(--muted); font-size:11px; font-weight:800; }
.repeat-alternate-target small { display:block; margin-top:4px; color:var(--muted); font-size:9px; line-height:1.3; }
.repeat-manual-rep-actions { display:flex; align-items:center; flex-wrap:wrap; gap:9px; margin-top:10px; }
.repeat-manual-rep-actions .secondary-btn { min-height:36px; padding:8px 12px; }
.repeat-manual-rep-actions small { color:var(--muted); font-size:11px; font-weight:700; }
.repeat-pace,.pace-preview,.saved-rep-pace { display:block; margin-top:4px; color:var(--blue); font-size:11px; font-weight:900; line-height:1.25; }
.saved-rep-pace { color:#62707a; font-size:10px; }
.saved-rep-target { display:block; margin-top:3px; color:#47616f; font-size:9px; font-weight:800; }
.repeat-average { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:17px; padding:13px 14px; border-radius:10px; background:var(--navy); color:white; }
.repeat-average span { color:#c8d8df; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
.repeat-average strong { color:var(--cyan); font-size:20px; }
.repeat-average.set-average { margin-top:10px; padding:9px 11px; background:#eaf4f7; color:var(--navy); }
.repeat-average.set-average span { color:var(--muted); font-size:10px; }
.repeat-average.set-average strong { color:var(--blue); font-size:16px; }
.repeat-average.pace-average strong { color:#0047AB; }
.repeat-average.overall-average { margin-top:18px; }
.auto-splits summary { color:var(--navy); font-weight:900; }
.auto-split-table { margin-top:12px; }
.auto-split-table h5 { margin:0 0 8px; color:var(--blue); font-size:13px; text-transform:uppercase; letter-spacing:.05em; }
.logged-workout-link { border:0; padding:0; background:transparent; color:var(--blue); font:inherit; font-weight:800; text-align:left; text-decoration:underline; text-decoration-color:#9bdcf7; text-underline-offset:3px; }
.logged-workout-link:hover { color:var(--navy); }
.saved-workout-heading { margin:7px 0 17px; font-size:24px; }
.saved-result-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:9px; margin-bottom:18px; }
.saved-result-grid > div,.saved-segments > div,.saved-repeat-grid > div { padding:12px; border:1px solid var(--line); border-radius:10px; background:white; }
.saved-result-grid small,.saved-segments small,.saved-repeat-grid small,.saved-notes small { display:block; color:var(--muted); margin-bottom:4px; font-size:11px; text-transform:uppercase; letter-spacing:.04em; }
.saved-result-grid strong,.saved-segments strong,.saved-repeat-grid strong { color:var(--navy); font-size:13px; }
.saved-breakdown { margin:0 0 18px; padding:16px; border-radius:14px; background:#f4fbff; border:1px solid #b9e8ff; }
.saved-segments { display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-bottom:14px; }
.saved-repeat-set + .saved-repeat-set { margin-top:15px; }
.saved-repeat-set h5 { margin:0 0 8px; color:var(--navy); }
.saved-repeat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(90px,1fr)); gap:8px; }
.saved-repeat-grid > .is-unplanned-rep { border-color:#7adfff; box-shadow:inset 0 3px 0 rgba(0,179,255,.2); }
.saved-inside-splits { display:grid; gap:5px; margin-top:9px; padding-top:8px; border-top:1px solid #dcecf3; }
.saved-inside-splits span { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.saved-inside-splits span small { margin:0; color:#5b7180; font-size:9px; letter-spacing:.02em; text-transform:none; }
.saved-inside-splits span strong { color:var(--blue); font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:11px; }
.saved-set-average { margin-top:8px; color:var(--muted); font-size:12px; text-align:right; }
.saved-notes { padding:15px; border-radius:12px; background:white; }
.saved-notes p { margin:3px 0 14px; }
.share-backdrop { position:fixed; inset:0; z-index:70; display:grid; place-items:center; padding:20px; background:rgba(6,23,34,.78); }
.share-dialog { position:relative; width:min(430px,100%); padding:26px; border-radius:18px; background:white; box-shadow:var(--shadow); }
.share-dialog h3 { margin:7px 35px 8px 0; font-size:24px; }
.share-dialog p { margin:0 0 20px; color:var(--muted); line-height:1.5; }
.share-close { position:absolute; right:16px; top:16px; width:34px; height:34px; border:0; border-radius:50%; background:#edf1ef; color:var(--navy); font-size:20px; }
.share-actions { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.share-option { display:flex; justify-content:center; align-items:center; min-height:48px; border:0; border-radius:11px; color:white; font-weight:800; text-decoration:none; }
.share-option.whatsapp { background:#168b51; }
.share-option.business { background:#075e54; }
.share-option:hover { filter:brightness(.94); }
.share-note { margin:14px 0 0!important; padding:10px 12px; border-radius:10px; background:#eef7f3; color:#2c7257!important; font-size:12px; }
.month-pdf-choice-grid { display:grid; gap:12px; }
.month-pdf-choice-card { display:grid; grid-template-columns:minmax(160px,.6fr) minmax(0,1.4fr); gap:12px; align-items:center; padding:14px; border:1px solid var(--line); border-radius:14px; background:#fbfcfa; }
.month-pdf-choice-card strong,.month-pdf-choice-card span { display:block; }
.month-pdf-choice-card strong { color:var(--navy); font-family:Oswald,sans-serif; font-size:22px; text-transform:uppercase; }
.month-pdf-choice-card span { margin-top:3px; color:var(--muted); font-size:13px; }
.month-pdf-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.month-pdf-actions .secondary-btn { min-height:44px; padding:9px 10px; }
.message-layout { display:grid; grid-template-columns:340px minmax(0,1fr); gap:22px; align-items:start; }
.message-layout.athlete-only { grid-template-columns:minmax(0,760px); justify-content:center; }
.message-list-card,.message-thread-card { overflow:hidden; }
.message-thread-list { display:grid; gap:8px; padding:12px; max-height:68vh; overflow:auto; }
.message-thread-link { width:100%; display:grid; grid-template-columns:38px minmax(0,1fr) auto; gap:10px; align-items:center; padding:11px; border:1px solid var(--line); border-radius:12px; background:#fff; color:inherit; text-align:left; }
.message-thread-link.active { border-color:var(--cyan); box-shadow:0 0 0 3px rgba(19,181,209,.1); }
.message-thread-link strong,.message-thread-link span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.message-thread-link strong { font-size:13px; }
.message-thread-link span { margin-top:2px; color:var(--muted); font-size:11px; }
.message-thread-link em { min-width:24px; padding:4px 6px; border-radius:999px; background:#eef3f2; color:var(--muted); font-size:10px; font-style:normal; font-weight:900; text-align:center; }
.message-thread-head { display:flex; align-items:center; gap:12px; padding:20px 22px; border-bottom:1px solid var(--line); background:#fbfcfa; }
.message-thread-head h2 { margin:0; font-family:Oswald,sans-serif; text-transform:uppercase; font-size:24px; }
.message-thread-body { min-height:360px; max-height:58vh; overflow:auto; padding:20px; background:linear-gradient(180deg,#f7f9f6,#eef4f4); }
.message-bubble { width:min(78%,560px); margin:0 0 12px; padding:12px 14px; border-radius:16px 16px 16px 4px; background:white; border:1px solid var(--line); box-shadow:0 5px 18px rgba(20,50,65,.05); }
.message-bubble.mine { margin-left:auto; border-radius:16px 16px 4px 16px; background:#e6f7fb; border-color:#bee9f2; }
.message-meta { display:flex; justify-content:space-between; gap:12px; margin-bottom:5px; color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.04em; }
.message-meta strong { color:var(--blue); }
.message-bubble p { margin:0; line-height:1.5; white-space:pre-wrap; }
.message-empty { min-height:260px; display:grid; place-content:center; }
.message-compose { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; padding:16px 18px 10px; border-top:1px solid var(--line); background:white; }
.message-compose textarea { width:100%; min-height:58px; max-height:180px; resize:vertical; border:1px solid var(--line); border-radius:12px; padding:12px 13px; outline:none; }
.message-compose textarea:focus { border-color:var(--cyan); box-shadow:0 0 0 3px rgba(19,181,209,.12); }
.message-help { margin:0; padding:0 18px 16px; color:var(--muted); font-size:11px; line-height:1.45; }
.message-settings { margin-bottom:18px; padding:0; overflow:hidden; }
.message-settings summary { cursor:pointer; padding:16px 18px; font-weight:800; color:var(--navy); }
.message-settings-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; padding:0 18px 12px; }
.message-settings-grid label { display:flex; align-items:center; gap:8px; min-width:0; padding:10px 11px; border:1px solid var(--line); border-radius:12px; background:#fbfcfa; color:var(--ink); font-size:12px; font-weight:700; }
.message-settings-grid input { width:auto; }
.message-settings-grid select { width:auto; min-width:82px; border:1px solid var(--line); border-radius:9px; padding:6px 8px; background:white; }
.structured-plan-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:9px; margin:0 0 20px; }
.structured-plan-summary > div { padding:12px; border:1px solid var(--line); border-radius:10px; background:white; }
.structured-plan-summary small { display:block; color:var(--muted); margin-bottom:4px; }
.structured-plan-summary strong { font-size:13px; }
.structured-plan-summary > .structured-plan-steps { grid-column:1 / -1; }
.planned-step-structure { display:grid; gap:12px; }
.planned-step-set { display:grid; gap:8px; padding:12px; border:1px solid var(--line); border-radius:10px; background:#f8fbfc; }
.planned-step-set-title { display:block; font-size:15px; color:var(--navy); }
.structured-plan-summary .planned-step-set-title { font-size:15px; }
.planned-step-item { display:grid; gap:3px; padding-left:12px; border-left:3px solid rgba(21,169,190,.35); }
.planned-step-label { display:block; font-weight:600; color:var(--muted); }
.planned-step-prescription { color:var(--navy); font-weight:600; }
.planned-step-recovery { color:var(--muted); }
.planned-step-set-recovery { display:block; padding:10px 12px; border-radius:9px; background:rgba(21,169,190,.1); color:var(--navy); }
.planned-step-warmup,.planned-step-cooldown { margin:0 0 12px; }
.planned-step-cooldown { margin:12px 0 0; }
.planned-step-custom-instructions { margin-top:14px; padding-top:12px; border-top:1px solid var(--line); }
.planned-step-custom-instructions p { margin:6px 0 0; white-space:pre-line; }
.completion-segments-card { margin:0 0 18px; padding:17px; border:1px solid var(--line); border-radius:14px; background:white; }
.completion-segment { display:grid; grid-template-columns:.7fr 1.3fr; gap:14px; align-items:end; padding-top:13px; }
.completion-segment + .completion-segment { margin-top:13px; border-top:1px solid var(--line); }
.completion-segment h5 { margin:0 0 4px; font-size:15px; }
.completion-segment span { color:var(--muted); font-size:12px; }
.completion-segment-fields { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.completion-segment-fields .field { margin:0; }
.structured-segment-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:17px; padding-bottom:17px; border-bottom:1px solid var(--line); }
input[readonly] { background:#edf3f5; color:var(--navy); font-weight:800; }
.detail small { display: block; color: var(--muted); margin-bottom: 3px; }
.modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 22px; }
.plan-modal-actions { flex-wrap:wrap; align-items:stretch; }
.plan-modal-actions > button { flex:1 1 145px; min-width:0; margin-left:0; white-space:normal; }
.plan-modal-actions > .future-completion-note { flex:1 1 100%; }

.coach-table { overflow-x: auto; }
.coach-table { -webkit-overflow-scrolling: touch; }
table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: 15px 18px; border-bottom: 1px solid var(--line); font-size: 13px; }
th { color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .06em; }
.status { display: inline-block; padding: 5px 9px; border-radius: 99px; font-size: 11px; font-weight: 700; }
.status.done { background: #dceee7; color: #296e54; }
.status.pending { background: #f1eee2; color: #847235; }
.status.inactive { background:#ecefee; color:#758087; }
.row-actions { white-space: nowrap; text-align: right; }
.table-btn { border: 1px solid var(--line); background: white; border-radius: 8px; padding: 7px 10px; color: var(--ink); font-size: 12px; margin-left: 5px; }
.table-btn:hover { border-color: var(--cyan); }
.table-btn.danger { color: #a34848; }
.coach-modal { width: min(760px, 100%); }
.workout-builder { background:white; border:1px solid var(--line); border-radius:13px; padding:16px; margin:0 0 18px; }
.builder-row { display:grid; grid-template-columns:.55fr 1fr; gap:14px; align-items:end; }
.builder-row + .builder-row { grid-template-columns:.55fr 1fr 1fr; margin-top:16px; padding-top:16px; border-top:1px solid var(--line); }
.builder-row.reps-builder { grid-template-columns:.55fr 1fr 1fr; }
.sets-count-row { grid-template-columns:minmax(130px,220px); margin-bottom:14px; }
.rep-set-builders { display:grid; gap:12px; }
.rep-set-builder { padding:14px; border:1px solid #cbdadd; border-radius:12px; background:#f7faf9; }
.rep-set-builder h4 { margin:0 0 12px; color:var(--navy); font-size:14px; }
.rep-set-head { display:flex; align-items:start; justify-content:space-between; gap:12px; margin-bottom:12px; }
.rep-set-head h4 { margin:0; }
.rep-line-list { display:grid; gap:12px; }
.rep-line-builder { padding:12px; border:1px solid var(--line); border-radius:11px; background:white; }
.rep-line-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }
.rep-line-head strong { color:var(--blue); font-size:12px; text-transform:uppercase; letter-spacing:.05em; }
.rep-details-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:10px; }
.rep-line-entry { display:grid; gap:6px; }
.add-rep-line-slot { display:flex; align-items:center; justify-content:flex-start; min-height:30px; padding-left:4px; }
.add-rep-line-btn {
  width:auto;
  min-width:84px;
  min-height:28px;
  margin:0;
  padding:4px 9px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  border-radius:999px;
  font-size:10px;
  line-height:1;
  box-shadow:none;
}
.add-rep-line-btn .add-step-plus { font-size:15px; line-height:1; font-weight:900; }
.add-step-stairs { display:inline-flex; align-items:flex-end; gap:1px; width:13px; height:11px; }
.add-step-stairs i { display:block; width:3px; border-radius:1px 1px 0 0; background:currentColor; }
.add-step-stairs i:nth-child(1) { height:4px; }
.add-step-stairs i:nth-child(2) { height:7px; }
.add-step-stairs i:nth-child(3) { height:10px; }
.structured-builder.sets-disabled .rep-set-builder:not(:first-child) { display:none; }
.set-rest-bottom { margin-top:14px; padding:14px; border:1px solid #b9e3ec; border-radius:12px; background:#f1fbfd; }
.set-rest-bottom .metric-control { max-width:360px; }
.count-control label,.metric-control > label { display:block; font-size:12px; font-weight:700; margin-bottom:7px; }
.optional-metric-control small { display:block; margin-top:7px; color:var(--muted); font-size:11px; line-height:1.4; }
.count-control select { width:100%; border:1px solid var(--line); border-radius:9px; padding:10px; background:white; }
.metric-toggle { display:flex; padding:3px; background:#edf1ef; border-radius:8px; margin-bottom:7px; }
.metric-mode,.sets-option { flex:1; border:0; background:transparent; padding:6px 8px; border-radius:6px; color:var(--muted); font-size:11px; font-weight:700; }
.metric-mode.active,.sets-option.active { background:var(--navy); color:white; }
.sets-decision { max-width:230px; margin-bottom:16px; }
.sets-decision > label { display:block; font-size:12px; font-weight:700; margin-bottom:7px; }
.sets-toggle { width:150px; }
.optional-label { color:var(--muted); font-size:10px; font-weight:500; margin-left:5px; }
.metric-value { display:grid; grid-template-columns:1fr 70px; gap:7px; }
.metric-value input,.metric-value select { width:100%; border:1px solid var(--line); border-radius:9px; padding:10px; background:white; }
.time-suffix { display:grid; place-items:center; border:1px solid var(--line); border-radius:9px; background:#f3f5f3; color:var(--muted); font-size:11px; font-weight:700; }
.rpe-guide { margin:-4px 0 18px; border:1px solid var(--line); border-radius:11px; background:white; overflow:hidden; }
.rpe-guide summary { cursor:pointer; padding:11px 14px; color:var(--blue); font-size:12px; font-weight:700; }
.rpe-guide img { display:block; width:100%; height:auto; border-top:1px solid var(--line); }
.rpe-guide.compact { margin:0 0 18px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-row.three { grid-template-columns: .8fr 1fr 1fr; }
.athlete-picker { border: 0; padding: 0; margin: 5px 0 20px; }
.athlete-picker legend { font-size: 13px; font-weight: 700; margin-bottom: 9px; }
.session-athlete-picker { border:1px solid var(--line); border-radius:11px; background:#f8faf9; overflow:hidden; }
.session-athlete-picker > summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 13px; cursor:pointer; list-style:none; color:var(--navy); font-size:13px; font-weight:800; }
.session-athlete-picker > summary::-webkit-details-marker { display:none; }
.session-athlete-picker > summary::after { content:'▾'; color:var(--blue); font-size:13px; transition:transform .18s ease; }
.session-athlete-picker[open] > summary::after { transform:rotate(180deg); }
.session-athlete-picker > summary strong { margin-left:auto; color:var(--muted); font-size:11px; font-weight:800; }
.session-athlete-picker-body { padding:11px 13px 13px; border-top:1px solid var(--line); background:white; }
.athlete-select-actions { display:flex; gap:7px; margin-bottom:9px; }
.athlete-select-actions button { padding:6px 10px; border:1px solid #bfd4d8; border-radius:8px; background:#f3fafb; color:#176074; font-size:11px; font-weight:800; cursor:pointer; }
.athlete-select-actions button:hover { border-color:var(--cyan); background:#e8f8fb; }
.athlete-checks { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.athlete-checks label { display: flex; align-items: center; gap: 9px; padding: 10px; background: white; border: 1px solid var(--line); border-radius: 10px; cursor: pointer; font-size: 13px; }
.athlete-checks label:has(input:checked) { border-color: var(--cyan); background: #effbfc; }
.athlete-checks input { accent-color: var(--blue); }
.avatar.mini { width: 29px; height: 29px; font-size: 10px; }
.toast { position: fixed; right: 24px; bottom: 24px; background: var(--navy); color: white; padding: 14px 18px; border-radius: 11px; box-shadow: var(--shadow); transform: translateY(120px); opacity: 0; transition: .25s; z-index: 50; }
.toast.show { transform: translateY(0); opacity: 1; }
.session-form-status { min-height: 22px; margin: 4px 0 12px; color: #b42318; font-size: .92rem; font-weight: 700; }
.copy-week-modal { width:min(650px,100%); }
.copy-week-source { display:flex; flex-direction:column; gap:4px; margin-bottom:18px; padding:14px 16px; border-left:4px solid var(--cyan); border-radius:0 10px 10px 0; background:#f1fafc; }
.copy-week-source strong { color:var(--navy); }
.copy-week-source span { color:var(--muted); font-size:12px; }
.copy-week-preview { display:flex; flex-direction:column; gap:4px; margin-top:4px; padding:14px; border:1px solid var(--line); border-radius:11px; background:#f8faf9; }
.copy-week-preview span { color:var(--muted); font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.copy-week-preview strong { color:var(--navy); }
.copy-week-preview small { color:var(--muted); }
.session-library-picker { display:grid; grid-template-columns:minmax(180px,.8fr) minmax(300px,1.2fr); gap:14px; align-items:end; margin-bottom:17px; padding:14px; border:1px solid #b9e3ec; border-radius:13px; background:#f2fbfd; }
.session-library-picker label { display:block; margin-bottom:4px; color:var(--navy); font-size:13px; font-weight:800; }
.session-library-picker small { color:var(--muted); font-size:11px; line-height:1.35; }
.session-library-picker-controls { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; }
.session-library-picker select { min-width:0; height:42px; padding:0 11px; border:1px solid var(--line); border-radius:9px; background:white; color:var(--ink); }

/* Coach reports */
.report-heading { align-items:center; }
.report-filters { padding:18px; margin-bottom:18px; }
.report-filters .field { margin:0; }
.report-stats { grid-template-columns:repeat(6,1fr); }
.load-stat { border-color:#dbe9a8; background:#fbfdea; }
.report-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:16px; }
.report-chart { padding:0 16px 14px; }
.report-bar-row { display:grid; grid-template-columns:58px minmax(0,1fr) 72px; gap:10px; align-items:center; padding:8px 0; border-bottom:1px solid var(--line); }
.report-bar-row span { color:var(--muted); font-size:11px; font-weight:800; }
.report-bar-row div { height:12px; overflow:hidden; border-radius:999px; background:#edf3f5; }
.report-bar-row i { display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,var(--cyan),var(--lime)); }
.report-bar-row strong { color:var(--navy); font-size:12px; text-align:right; }
.report-chart small { display:block; margin-top:10px; color:var(--muted); font-size:11px; }
.effort-chart .report-bar-row i { background:linear-gradient(90deg,#c7ea38,#ffb000,#f05252); }
.report-graph-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:16px; }
.report-graph-grid .card:first-child { grid-column:auto; }
.report-delta-chart { padding:0 18px 18px; }
.report-delta-row { display:grid; grid-template-columns:58px minmax(0,1fr) 118px; gap:10px; align-items:center; padding:8px 0; border-bottom:1px solid var(--line); }
.report-delta-row span { color:var(--muted); font-size:11px; font-weight:800; }
.report-delta-row div { height:12px; overflow:hidden; border-radius:999px; background:#edf3f5; }
.report-delta-row i { display:block; height:100%; border-radius:999px; background:#9aa7ad; }
.report-delta-row.up i { background:linear-gradient(90deg,#bce832,#39ff14); }
.report-delta-row.down i { background:linear-gradient(90deg,#ffb4aa,#f05252); }
.report-delta-row strong { color:var(--navy); font-size:12px; text-align:right; }
.report-delta-chart small,.report-line-chart small { display:block; margin-top:10px; color:var(--muted); font-size:11px; }
.benchmark-trend-card { padding:0 16px 14px; }
.benchmark-trend-card h3 { margin:0 0 3px; color:var(--navy); font-size:15px; line-height:1.25; }
.benchmark-trend-card p { margin-bottom:6px; }
.report-line-chart svg { width:min(100%,520px); height:138px; display:block; margin:4px auto 0; overflow:visible; }
.report-line-chart line { stroke:#dce5e5; stroke-width:1.2; }
.report-line-chart polyline { fill:none; stroke:#00bfff; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 0 2px rgba(0,191,255,.45)); }
.report-line-chart circle { fill:#00bfff; stroke:var(--navy); stroke-width:1.2; filter:drop-shadow(0 0 2px rgba(0,191,255,.42)); }
.report-line-meta { display:flex; justify-content:space-between; gap:12px; margin-top:8px; color:var(--muted); font-size:12px; }
.report-line-meta strong { color:var(--navy); }
.report-line-chart.empty { padding-top:6px; }
.effort-profile-chart .report-bar-row i { background:linear-gradient(90deg,#dff5f8,#13b5d1,#0b2638); }
.effort-distribution-smart { padding:0 16px 14px; display:grid; grid-template-columns:126px minmax(0,1fr); gap:14px; align-items:center; }
.effort-donut { width:118px; aspect-ratio:1; border-radius:50%; background:conic-gradient(var(--effort-stops)); display:grid; place-items:center; box-shadow:0 0 10px rgba(0,191,255,.16); }
.effort-donut > div { width:70px; aspect-ratio:1; border-radius:50%; background:#fff; display:grid; place-items:center; text-align:center; box-shadow:inset 0 0 0 1px var(--line); }
.effort-donut strong { color:var(--navy); font-size:21px; line-height:1; }
.effort-donut span { color:var(--muted); font-size:10px; font-weight:900; text-transform:uppercase; }
.effort-legend { display:grid; gap:8px; width:100%; }
.effort-legend div { display:grid; grid-template-columns:12px minmax(0,1fr) auto auto; gap:8px; align-items:center; color:var(--navy); font-size:12px; }
.effort-legend i { width:12px; height:12px; border-radius:50%; box-shadow:0 0 8px rgba(0,191,255,.25); }
.effort-legend strong { font-weight:950; }
.effort-legend small { color:var(--muted); font-weight:800; }
.effort-distribution-smart .report-chart { grid-column:1/-1; padding:4px 0 0; width:100%; }
.training-load-combo { padding:0 16px 14px; display:grid; gap:12px; }
.training-load-chart { border:1px solid var(--line); border-radius:13px; padding:10px; background:#fbfcfa; }
.training-load-chart h3 { margin:0 0 6px; color:var(--navy); font-size:15px; }
.training-load-summary { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.training-load-summary span { padding:10px; border-radius:12px; background:#f1fbfd; color:var(--muted); font-size:12px; }
.training-load-summary strong { display:block; color:var(--blue); font-size:22px; }
.training-load-combo-card { grid-column:auto; }
.athlete-report-card { margin-top:22px; }
.weekly-mileage-strip { margin:22px 0 0; grid-template-columns:2fr 1fr 1fr; }
.athlete-report-filters { padding:0 18px 16px; }
.athlete-benchmark-filter-row { margin-top:12px; }
.athlete-report-stats { grid-template-columns:repeat(6,1fr); padding:0 18px; margin-bottom:18px; }
.athlete-report-grid { padding:0 18px 18px; margin-top:0; }
.athlete-report-grid .card { box-shadow:none; }
.athlete-report-grid .card-head h2 { font-size:20px; }
.athlete-report-benchmarks { padding:0 18px 18px; }
.athlete-report-benchmarks h3 { margin:0 0 12px; color:var(--navy); font-family:Oswald,sans-serif; font-size:23px; text-transform:uppercase; }
.athlete-benchmark-panel { overflow:hidden; border:1px solid var(--line); border-radius:13px; background:white; }
.athlete-benchmark-panel + .athlete-benchmark-panel { margin-top:10px; }
.athlete-benchmark-panel summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 15px; cursor:pointer; list-style:none; color:var(--navy); font-weight:900; }
.athlete-benchmark-panel summary::-webkit-details-marker,.expandable-card summary::-webkit-details-marker { display:none; }
.athlete-benchmark-panel summary::before { content:"▸"; color:var(--blue); transition:.18s; }
.athlete-benchmark-panel[open] summary::before { transform:rotate(90deg); }
.athlete-benchmark-panel summary span { flex:1; }
.athlete-benchmark-panel summary strong { color:var(--muted); font-size:11px; text-transform:uppercase; letter-spacing:.05em; }
.athlete-benchmark-panel .coach-table { border-top:1px solid var(--line); }
.expandable-card { overflow:hidden; }
.rpe-pace-card { margin-top:20px; overflow:hidden; }
.rpe-pace-body { padding:0 18px 18px; }
.rpe-pace-table { overflow:auto; border:1px solid var(--line); border-radius:12px; background:white; }
.rpe-pace-table table { width:100%; border-collapse:collapse; min-width:300px; }
.rpe-pace-table th,.rpe-pace-table td { padding:9px 10px; border-bottom:1px solid #edf0ef; color:var(--navy); font-size:12px; text-align:left; }
.rpe-pace-table th { color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.05em; }
.rpe-pace-table tr:last-child td { border-bottom:0; }
.rpe-pace-table td:last-child { color:var(--blue); font-weight:950; white-space:nowrap; }
.shoe-tracker-card { margin-top:20px; }
.compact-btn { min-height:36px; padding:8px 12px; border-radius:10px; font-size:12px; }
.shoe-list { padding:0 18px 18px; }
.shoe-row { display:grid; grid-template-columns:minmax(0,1fr); gap:10px; padding:13px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.shoe-row + .shoe-row,.archived-shoes { margin-top:10px; }
.shoe-row strong { display:block; color:var(--navy); font-size:15px; }
.shoe-row span { display:block; color:var(--muted); font-size:12px; }
.shoe-row.archived { opacity:.72; background:#f7f8f4; }
.shoe-metrics { display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; }
.shoe-metrics span { padding:9px; border-radius:10px; background:#f4fafb; text-align:center; }
.shoe-metrics strong { font-size:16px; }
.shoe-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.archived-shoes summary { cursor:pointer; color:var(--muted); font-weight:900; font-size:12px; text-transform:uppercase; letter-spacing:.06em; }
.shoe-completion-field { margin-top:10px; }
.empty-inline { padding:12px; border:1px dashed var(--line); border-radius:10px; background:#f8faf7; color:var(--muted); font-size:13px; }
.expandable-card > summary { list-style:none; cursor:pointer; }
.expandable-card > summary .card-head { margin:0; }
.expandable-card > summary .card-head::before { content:"▸"; color:var(--blue); font-size:18px; font-weight:900; }
.expandable-card[open] > summary .card-head::before { transform:rotate(90deg); }
.expandable-body { border-top:1px solid var(--line); }
.benchmark-count-btn { border:1px solid #b9e3ec; border-radius:999px; padding:6px 10px; background:#effbfc; color:#075f72; font-weight:900; cursor:pointer; }
.benchmark-count-btn:hover { border-color:var(--cyan); background:#dff5f8; }
.benchmark-detail-modal { width:min(920px,100%); }
.benchmark-detail-table table { min-width:820px; }
.report-structure { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding:0 18px 18px; }
.report-structure div,.report-structure-card { padding:13px; border:1px solid var(--line); border-radius:12px; background:#f8faf9; }
.report-structure-card { width:100%; text-align:left; color:inherit; font:inherit; cursor:pointer; transition:.15s ease; }
.report-structure-card:hover,.report-structure-card:focus { border-color:var(--cyan); box-shadow:0 0 0 3px rgba(19,181,209,.12); transform:translateY(-1px); }
.report-structure-card em { display:block; margin-top:8px; color:var(--blue); font-size:10px; font-style:normal; font-weight:900; text-transform:uppercase; letter-spacing:.06em; }
.report-structure strong { display:block; color:var(--navy); font-size:13px; }
.report-structure span { color:var(--muted); font-size:11px; line-height:1.4; }
.report-table table { min-width:920px; }
.training-load-info-modal .modal-body { display:grid; gap:14px; }
.science-card { padding:18px; border:1px solid var(--line); border-radius:14px; background:white; }
.science-card h3 { margin:0 0 9px; color:var(--navy); font-size:20px; }
.science-card p { margin:0 0 10px; color:#334654; line-height:1.55; }
.formula-box { display:grid; gap:4px; margin:10px 0; padding:13px 14px; border-left:4px solid var(--lime); border-radius:10px; background:#f7fbdf; }
.formula-box strong { color:var(--navy); }
.formula-box span { color:var(--muted); font-size:12px; }
.science-list { margin:12px 0 0; padding-left:18px; color:#334654; line-height:1.5; }
.science-list li + li { margin-top:7px; }
.sources-card a { color:var(--blue); font-weight:800; }
.science-intro-card { background:linear-gradient(145deg,#fff 0%,#f3fbfd 100%); }
.science-reference-link { width:100%; display:flex; flex-direction:column; align-items:flex-start; gap:3px; margin-top:14px; padding:13px 15px; border:1px solid #9ddae7; border-radius:12px; background:#eaf9fc; color:var(--navy); text-align:left; cursor:pointer; }
.science-reference-link:hover,.science-reference-link:focus { border-color:var(--cyan); box-shadow:0 0 0 3px rgba(19,181,209,.12); }
.science-reference-link span { color:var(--blue); font-weight:900; }
.science-reference-link small { color:var(--muted); font-weight:700; }
.training-load-info-modal { width:min(760px,100%); }
.training-load-references-backdrop { z-index:42; }
.training-load-references-modal { width:min(860px,100%); }
.training-load-references-modal .modal-body { display:grid; gap:12px; }
.research-reference-card { display:grid; grid-template-columns:36px minmax(0,1fr); gap:13px; padding:16px; border:1px solid var(--line); border-radius:14px; background:white; }
.research-reference-number { width:34px; height:34px; display:grid; place-items:center; border-radius:50%; background:var(--navy); color:white; font-family:Oswald,sans-serif; font-size:18px; font-weight:700; }
.research-reference-card h3 { margin:1px 0 7px; color:var(--navy); font-size:17px; }
.research-reference-card p { margin:0 0 8px; color:#334654; line-height:1.5; }
.research-reference-card .research-reference-note { color:var(--muted); font-size:13px; }
.research-reference-card a { display:inline-flex; align-items:center; min-height:36px; padding:7px 11px; border:1px solid #b9e3ec; border-radius:999px; background:#effbfc; color:#075f72; font-size:12px; font-weight:900; text-decoration:none; }
.research-reference-card a:hover,.research-reference-card a:focus { border-color:var(--cyan); background:#dff5f8; }
.research-reference-disclaimer { margin:2px 0 0; padding:13px 15px; border-left:4px solid var(--lime); border-radius:10px; background:#f7fbdf; color:#334654; line-height:1.5; }
.research-action { min-width:230px; }
@media(max-width:640px){
  .research-reference-card { grid-template-columns:30px minmax(0,1fr); padding:14px 12px; }
  .research-reference-number { width:30px; height:30px; font-size:16px; }
  .research-reference-card h3 { font-size:16px; }
  .research-action { width:100%; min-width:0; }
}

/* Workout library */
.library-heading { align-items:center; }
.library-toolbar { display:grid; grid-template-columns:minmax(260px,1fr) minmax(190px,.38fr) auto; gap:14px; align-items:end; padding:18px; margin-bottom:30px; }
.library-search span,.library-filter span { display:block; margin-bottom:7px; color:var(--muted); font-size:11px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.library-search input,.library-filter select { width:100%; height:46px; padding:0 14px; border:1px solid var(--line); border-radius:11px; background:white; color:var(--ink); outline:none; }
.library-search input:focus,.library-filter select:focus { border-color:var(--cyan); box-shadow:0 0 0 3px rgba(19,181,209,.12); }
.library-count { min-width:82px; height:46px; display:flex; align-items:center; justify-content:center; gap:6px; padding:0 14px; border-radius:11px; background:var(--navy); color:white; }
.library-count strong { font-family:Oswald,sans-serif; font-size:23px; }
.library-count span { color:#b8c9d2; font-size:11px; }
.library-section + .library-section { margin-top:38px; }
.library-section-head { display:flex; justify-content:space-between; align-items:end; gap:18px; margin-bottom:15px; }
.library-section-head h2 { margin-bottom:4px; font-family:Oswald,sans-serif; font-size:27px; text-transform:uppercase; }
.library-section-head p { margin:0; color:var(--muted); font-size:13px; }
.library-grid { display:grid; grid-template-columns:1fr; gap:8px; }
.workout-template-groups { display:grid; gap:10px; }
.workout-type-group { overflow:hidden; border:1px solid var(--line); border-radius:14px; background:#fbfcfa; box-shadow:0 4px 14px rgba(17,40,56,.035); }
.workout-type-group summary { display:grid; grid-template-columns:auto minmax(0,1fr); gap:11px; align-items:center; padding:12px 14px; cursor:pointer; list-style:none; }
.workout-type-group summary::-webkit-details-marker { display:none; }
.workout-type-group summary::after { content:"⌄"; justify-self:end; grid-column:2; grid-row:1; color:var(--blue); font-size:16px; font-weight:900; transition:transform .16s ease; }
.workout-type-group[open] summary::after { transform:rotate(180deg); }
.workout-type-group summary strong { display:block; color:var(--navy); font-size:14px; line-height:1.15; }
.workout-type-group summary small { display:block; margin-top:2px; color:var(--muted); font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.workout-type-group .compact-library-grid { padding:0 10px 10px; }
.library-card { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) auto; overflow:hidden; border:1px solid var(--line); border-radius:12px; background:white; box-shadow:0 4px 14px rgba(17,40,56,.045); transition:box-shadow .18s ease,border-color .18s ease; }
.library-card:hover,.library-card:focus-within { border-color:#9ed6e1; box-shadow:0 10px 26px rgba(17,40,56,.09); }
.library-card-main { width:100%; padding:10px 14px; border:0; background:transparent; color:inherit; text-align:left; cursor:pointer; }
.library-card-summary { display:grid; grid-template-columns:130px minmax(180px,1fr) minmax(160px,.8fr) auto; gap:14px; align-items:center; }
.workout-type-pill,.library-source { display:inline-flex; align-items:center; width:max-content; border-radius:99px; font-size:10px; font-weight:800; }
.workout-type-pill { padding:6px 9px; color:#075f72; background:#dff5f8; }
.workout-type-pill.type-rest { color:#667781; background:#eef1f0; border:1px dashed #c9d2d1; }
.workout-type-pill.type-interval,.workout-type-pill.type-hill,.workout-type-pill.type-fartlek { color:#5d661b; background:#edf4c9; }
.workout-type-pill.type-tempo,.workout-type-pill.type-threshold,.workout-type-pill.type-steady { color:#774e10; background:#fff0cb; }
.workout-type-pill.type-race { color:#063640; background:#00f5ff; }
.library-source { padding:5px 8px; background:#eef1f0; color:var(--muted); }
.library-source.custom { background:#e5f3ed; color:#27684f; }
.library-card h3 { margin:0 0 3px; color:var(--navy); font-size:15px; line-height:1.25; }
.library-prescription { margin:0; color:var(--blue); font-size:11px; font-weight:800; }
.library-focus { min-height:0; margin:0; color:var(--muted); font-size:11px; line-height:1.4; }
.library-meta { display:flex; gap:5px; flex-wrap:nowrap; justify-content:flex-end; }
.library-meta span { padding:5px 8px; border-radius:7px; background:#f2f5f4; color:#667781; font-size:10px; font-weight:700; }
.library-card-details { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; max-height:0; margin:0; padding:0; overflow:hidden; opacity:0; border-top:1px solid transparent; transition:max-height .2s ease,opacity .16s ease,margin .2s ease,padding .2s ease; }
.library-card:hover .library-card-details,.library-card:focus-within .library-card-details { max-height:170px; margin-top:10px; padding-top:10px; opacity:1; border-top-color:var(--line); }
.library-card-details small { color:#6a7b84; font-size:9px; font-weight:900; letter-spacing:.04em; text-transform:uppercase; }
.library-card-details p { display:-webkit-box; margin:3px 0 0; overflow:hidden; color:var(--ink); font-size:10px; line-height:1.4; -webkit-line-clamp:3; -webkit-box-orient:vertical; }
.library-card-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:5px; padding:8px 10px; border-left:1px solid var(--line); background:#fafbf9; }
.library-card-actions .table-btn { margin:0; }
.library-empty,.library-no-results { padding:30px; border:1px dashed #b9c9c9; border-radius:17px; background:rgba(255,255,255,.55); text-align:center; }
.library-empty { grid-column:1/-1; }
.library-empty strong,.library-no-results strong { display:block; margin-bottom:6px; font-size:17px; }
.library-empty p,.library-no-results span { display:block; margin-bottom:16px; color:var(--muted); font-size:13px; }
.library-no-results { margin-top:22px; }
.template-preview-modal { width:min(680px,100%); }
.template-preview-hero { display:flex; flex-direction:column; align-items:flex-start; gap:8px; margin-bottom:15px; padding:17px; border-radius:14px; background:var(--navy); color:white; }
.template-preview-hero > strong { margin-top:3px; font-family:Oswald,sans-serif; font-size:27px; }
.template-preview-hero > span:last-child { color:#b9ced8; font-size:13px; }
.focus-callout { display:flex; flex-direction:column; gap:4px; margin-bottom:17px; padding:13px 15px; border-left:4px solid var(--lime); border-radius:0 10px 10px 0; background:#f2f6df; }
.focus-callout small,.template-detail small { color:var(--muted); font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.focus-callout span { color:#52636d; font-size:12px; line-height:1.45; }
.set-rpe-control select { min-width:170px; }
.warmup-picker-field { padding:12px; border:1px dashed #b9dce4; border-radius:12px; background:#f7fcfd; }
.warmup-library-section { margin-top:38px; padding-top:30px; border-top:1px solid var(--line); }
.workout-type-library-section { margin-top:38px; padding-top:30px; border-top:1px solid var(--line); }
.type-base-list { display:flex; flex-wrap:wrap; gap:7px; margin:-4px 0 14px; }
.workout-type-card .library-prescription { color:#52636d; }
.workout-type-card.is-inactive { opacity:.72; }
.active-toggle { display:flex; align-items:center; gap:9px; margin:4px 0 14px; padding:11px 12px; border:1px solid var(--line); border-radius:11px; background:#f8faf9; color:var(--ink); font-size:13px; font-weight:800; }
.active-toggle input { width:auto; accent-color:var(--blue); }
.warmup-card-summary { grid-template-columns:120px minmax(170px,1fr) minmax(220px,1fr) auto; }
.warmup-card .library-focus { color:#435662; }
.template-detail { padding:14px 15px; border:1px solid var(--line); border-radius:12px; background:white; }
.template-detail p { margin:5px 0 0; color:#435662; font-size:13px; line-height:1.6; white-space:pre-line; }
.template-detail + .template-detail { margin-top:10px; }
.template-detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:10px 0; }
.template-detail-grid .template-detail + .template-detail { margin-top:0; }
.template-editor-modal { width:min(780px,100%); }

@media (max-width: 1100px) {
  .compare-main { padding:0 14px; }
  .compare-calendar-layout { grid-template-columns:1fr; }
}

@media (max-width: 900px) {
  .topbar { min-height:96px; gap:14px; padding:10px 18px; }
  .brand-banner { max-width:none; }
  .brand-banner-inner { gap:1cm; padding:6px 10px 6px 13px; border-radius:16px; }
  .banner-wordmark { width:clamp(280px,44vw,470px); max-height:62px; }
  .banner-tagline { width:clamp(78px,12vw,118px); max-height:60px; }
  .top-actions { gap:12px; }
  .coach-athlete-actions { grid-template-columns:repeat(2,minmax(150px,1fr)); width:100%; }
  .coach-athlete-actions .athlete-switcher,
  .coach-athlete-actions #compare-athlete-calendars,
  .coach-athlete-actions #coach-athlete-month-pdf { grid-column:span 2; }
  .login-shell { grid-template-columns: 1fr; }
  .login-hero { min-height: 370px; padding: 35px 7vw; }
  .login-panel { border-radius: 28px 28px 0 0; margin-top: -28px; z-index: 2; padding: 45px 25px; }
  .dashboard-grid { grid-template-columns: 1fr; }
  .athlete-lower-grid { grid-template-columns: 1fr; }
  .athlete-cards { grid-template-columns: repeat(2,1fr); }
  .athlete-list-row { grid-template-columns:42px minmax(0,1fr) auto; }
  .athlete-list-metrics { grid-column:2/-1; text-align:left; }
  .coach-dashboard-columns { grid-template-columns:1fr; }
  .profile-manager { grid-template-columns:1fr; }
  .athlete-info-grid { grid-template-columns:1fr 1fr; }
  .library-card-summary { grid-template-columns:110px minmax(170px,1fr) auto; }
  .library-focus { grid-column:2/-1; }
  .message-layout { grid-template-columns:1fr; }
  .message-thread-list { max-height:none; }
  .compare-main { width:100%; padding:0 14px; }
}
@media (max-width: 620px) {
  body { background:#f3f5ef; }
  input, select, textarea { font-size:16px; }
  .primary-btn, .secondary-btn, .table-btn, .share-option, .install-app-link { min-height:44px; }
  .topbar { min-height: 68px; height:auto; padding: 9px 14px; gap:10px; border-bottom-width:2px; }
  .brand-banner { flex:0 0 auto; }
  .brand-banner-inner { display:none; }
  .mobile-brand { display:block; width:46px; height:46px; flex:0 0 auto; border:1px solid rgba(0,191,255,.42); box-shadow:0 0 12px rgba(0,191,255,.28); }
  .brand-compact { width:46px; height:46px; flex:0 0 auto; }
  .brand-copy small, .user-chip > div:not(.avatar) { display: none; }
  .top-actions { gap:10px; }
  .top-action-stack { gap:3px; }
  .top-data-actions { gap:4px; }
  .top-data-actions button,
  .top-data-actions a { padding:3px 6px; font-size:10px; }
  .avatar { width:36px; height:36px; }
  .logout { min-height:40px; padding:0 4px; font-weight:800; }
  .main { width: 100%; padding:0 12px; margin-top: 18px; margin-bottom:56px; }
  .welcome { align-items: start; flex-direction:column; gap:14px; margin-bottom:20px; }
  .welcome h1 { font-size:38px; }
  .welcome-actions { width:100%; justify-content: flex-start; gap:8px; }
  .welcome-actions > button { flex:1 1 140px; padding-left:12px; padding-right:12px; }
  .coach-athlete-actions { display:flex; width:100%; }
  .coach-athlete-actions .athlete-switcher { flex:1 1 100%; }
  .coach-athlete-actions #compare-athlete-calendars,
  .coach-athlete-actions #coach-athlete-month-pdf { grid-column:auto; }
  .coach-athlete-actions > button { flex:1 1 140px; min-height:42px; }
  .athlete-switcher { width:100%; min-width:0; flex:1 1 100%; }
  .athlete-switcher select { min-height:44px; font-size:16px; }
  .compare-main { padding:0 10px; }
  .compare-panel-head { gap:10px; padding:12px; }
  .compare-panel-select-row { grid-template-columns:1fr; }
  .compare-panel-month-row { align-items:stretch; flex-direction:column; }
  .compare-panel-month-controls { width:100%; justify-content:space-between; }
  .compare-panel-month-controls .month-nav { width:auto; justify-content:flex-start; }
  .compare-panel-head .compact-btn { width:100%; min-height:44px; }
  .compare-calendar-panel .calendar { height:clamp(620px,78dvh,820px); padding:8px; overflow:auto !important; overflow-anchor:none; -webkit-overflow-scrolling:touch; touch-action:pan-x pan-y; }
  .compare-calendar-panel .calendar .weekdays,
  .compare-calendar-panel .calendar .calendar-grid { width:auto; min-width:560px; grid-template-columns:repeat(7,minmax(72px,1fr)); }
  .compare-calendar-panel .day { min-height:86px; }
  .day-drag-btn { height:28px; min-width:38px; opacity:1; font-size:9px; }
  .week-drag-btn { height:30px; opacity:1; }
  .date-pill { display: none; }
  .stats { gap: 8px; }
  .stat { padding: 14px 10px; }
  .stat-value { font-size: 27px; }
  .card { border-radius:16px; }
  .card-head { padding:16px; align-items:flex-start; gap:12px; flex-direction:column; }
  .card-head h2 { font-size:22px; }
  .month-nav { width:100%; justify-content:space-between; }
  .icon-btn { width:44px; height:44px; border-radius:12px; font-size:18px; }
  .calendar { padding: 12px; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .weekdays, .calendar-grid { min-width:660px; gap: 6px; }
  .weekdays div { font-size:10px; padding-bottom:6px; }
  .day { min-height: 98px; padding: 7px; border-radius:12px; }
  .day-top { flex-direction:row; align-items:center; gap:5px; }
  .day-num { font-size:13px; }
  .day-actions { justify-content:flex-end; gap:3px; }
  .day-add,.day-race-btn,.day-weekend-swap-btn { opacity:1; }
  .day-actions .day-add,.day-actions .day-race-btn,.day-actions .day-weekend-swap-btn { width:28px; height:28px; padding:0; font-size:15px; opacity:1; border-radius:8px; }
  .session-chip,.race-chip { font-size:10px; height:auto; min-height:30px; padding:6px 7px; margin-top:6px; line-height:1.15; }
  .week-actions { gap:5px; }
  .week-share-btn,.week-copy-btn,.week-download-btn { width:30px; height:30px; opacity:1; }
  .week-copy-btn { font-size:18px; }
  .week-download-btn { font-size:9px; }
  .detail-grid { grid-template-columns: 1fr; }
  .race-priority-strip { align-items:flex-start; flex-direction:column; }
  .athlete-cards { grid-template-columns: 1fr; }
  .athlete-list { padding:10px; }
  .athlete-list-row { grid-template-columns:38px minmax(0,1fr); align-items:start; }
  .athlete-status-pill { grid-column:2; justify-self:start; }
  .athlete-list-metrics { grid-column:1/-1; grid-template-columns:1fr 1fr; text-align:left; }
  .athlete-contact { grid-template-columns:1fr; }
  .athlete-contact dd { white-space:normal; overflow:visible; }
  .athlete-lower-grid { margin-top:14px; }
  .athlete-info-grid { grid-template-columns:1fr; }
  .athlete-title-row { align-items:flex-start; gap:12px; }
  .avatar.large { width:56px; height:56px; flex:0 0 auto; }
  .profile-row { grid-template-columns:36px minmax(0,1fr) auto auto; }
  .profile-row .status { display:none; }
  .profile-list { padding:4px 14px 14px; }
  .form-row, .form-row.three, .athlete-checks { grid-template-columns: 1fr; }
  .session-library-picker,.session-library-picker-controls { grid-template-columns:1fr; }
  .builder-row,.builder-row + .builder-row,.builder-row.reps-builder { grid-template-columns:1fr; }
  .rep-set-head,.rep-line-head { flex-direction:column; align-items:flex-start; }
  .rep-details-row { grid-template-columns:1fr; }
  .structured-segment-grid,.structured-plan-summary,.completion-segment-fields { grid-template-columns:1fr; }
  .completion-segment { grid-template-columns:1fr; }
  .saved-result-grid,.saved-segments { grid-template-columns:1fr 1fr; }
  .fit-comparison-grid,.fit-progress-metrics,.load-progress-metrics,.load-score-grid { grid-template-columns:1fr 1fr; }
  .fit-analysis-head { flex-direction:column; }
  .fit-lap-table, .coach-table { margin-left:-2px; margin-right:-2px; }
  .fit-lap-table table, .coach-table table { min-width:640px; }
  .repeat-results-card,.fit-upload-card,.workout-feedback-card,.completion-segments-card,.workout-builder { padding:14px; }
  .repeat-set-heading,.repeat-results-head,.workout-feedback-head { flex-direction:column; align-items:flex-start; }
  .repeat-result-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .repeat-average { align-items:flex-start; flex-direction:column; gap:4px; }
  .share-actions { grid-template-columns:1fr; }
  .month-pdf-choice-card { grid-template-columns:1fr; }
  .month-pdf-actions { grid-template-columns:1fr; }
  .share-backdrop { padding:12px; align-items:end; }
  .share-dialog { border-radius:18px 18px 10px 10px; padding:22px 18px calc(18px + env(safe-area-inset-bottom)); }
  .message-thread-list { max-height:260px; }
  .message-thread-head { padding:16px; }
  .message-thread-body { min-height:330px; max-height:58vh; padding:14px; }
  .message-bubble { width:92%; }
  .message-settings-grid { grid-template-columns:1fr; }
  .message-settings-grid label { align-items:flex-start; }
  .message-compose { grid-template-columns:1fr; padding:14px; }
  .message-compose button { width:100%; }
  .message-help { padding:0 14px 14px; }
  .modal-backdrop { padding:0; align-items:end; place-items:end center; }
  .modal { width:100%; max-height:94dvh; border-radius:20px 20px 0 0; }
  .modal-top { padding:20px 18px; }
  .modal-top h2 { font-size:27px; margin-right:42px; }
  .close { width:40px; height:40px; right:14px; top:14px; }
  .modal-body { padding:18px 14px calc(22px + env(safe-area-inset-bottom)); }
  .modal-actions { flex-direction: column-reverse; }
  .modal-actions button { width: 100%; }
  .toast { left:12px; right:12px; bottom:calc(14px + env(safe-area-inset-bottom)); text-align:center; }
  .library-toolbar { grid-template-columns:1fr; }
  .report-stats,.report-grid,.report-graph-grid { grid-template-columns:1fr; }
  .report-graph-grid .card:first-child { grid-column:auto; }
  .report-structure { grid-template-columns:1fr; }
  .report-bar-row { grid-template-columns:52px minmax(0,1fr) 68px; }
  .report-delta-row { grid-template-columns:52px minmax(0,1fr) 94px; }
  .report-line-chart svg { height:124px; }
  .effort-distribution-smart { grid-template-columns:1fr; justify-items:center; padding-left:12px; padding-right:12px; }
  .effort-legend { width:100%; }
  .training-load-summary { grid-template-columns:1fr; }
  .training-load-combo { padding-left:12px; padding-right:12px; }
  .athlete-report-filters,.athlete-report-grid,.athlete-report-benchmarks { padding-left:12px; padding-right:12px; }
  .athlete-report-stats { grid-template-columns:1fr 1fr; padding-left:12px; padding-right:12px; }
  .library-count { width:100%; }
  .library-grid { grid-template-columns:1fr; }
  .library-card { grid-template-columns:1fr; }
  .library-card-summary { grid-template-columns:1fr auto; gap:8px 12px; }
  .warmup-card-summary { grid-template-columns:1fr auto; }
  .library-card-summary .workout-type-pill { grid-column:1; }
  .library-card-title { grid-column:1/-1; }
  .library-focus { grid-column:1/-1; }
  .library-meta { grid-column:2; grid-row:1; }
  .library-card-details { grid-template-columns:1fr; max-height:none; margin-top:10px; padding-top:10px; opacity:1; border-top-color:var(--line); }
  .library-card-actions { justify-content:flex-start; border-top:1px solid var(--line); border-left:0; }
  .library-card-actions .table-btn { flex:1 1 118px; }
  .template-detail-grid { grid-template-columns:1fr; }
  .template-detail-grid .template-detail + .template-detail { margin-top:10px; }
}
@media (max-width: 430px) {
  .login-hero { min-height:300px; padding:26px 20px 42px; }
  .hero-copy h1 { font-size:42px; }
  .hero-copy p { font-size:15px; }
  .hero-tagline { display:none; }
  .login-panel { padding:32px 18px; }
  .role-tabs { margin:22px 0 18px; }
  .main { padding:0 10px; }
  .welcome h1 { font-size:33px; }
  .stats { grid-template-columns:1fr; }
  .stat { display:flex; align-items:center; justify-content:space-between; }
  .fit-comparison-grid,.fit-progress-metrics,.load-progress-metrics,.load-score-grid,.saved-result-grid,.saved-segments { grid-template-columns:1fr; }
  .repeat-result-grid { grid-template-columns:1fr; }
  .library-card-summary { grid-template-columns:1fr; }
  .library-meta { grid-column:1; grid-row:auto; justify-content:flex-start; }
  .workout-type-pill,.library-source { width:max-content; }
}
@media (hover:none) {
  .day-add,.day-race-btn,.day-weekend-swap-btn,.week-share-btn,.week-copy-btn,.week-download-btn { opacity:1; }
  .library-card-details { max-height:none; margin-top:10px; padding-top:10px; opacity:1; border-top-color:var(--line); }
}
@media (max-width: 620px) {
  select { font-size:13px !important; line-height:1.2; }
  select option,
  select optgroup { font-size:13px; line-height:1.2; }
  .field select,
  .athlete-switcher select,
  .library-filter select,
  .session-library-picker select,
  .session-library-picker-controls select { min-height:36px; height:38px; padding:6px 9px; font-size:13px !important; border-radius:9px; }
  .workout-template-groups { gap:8px; }
  .workout-type-group { border-radius:12px; }
  .workout-type-group summary { min-height:44px; padding:9px 10px; gap:8px; }
  .workout-type-group summary strong { font-size:13px; }
  .workout-type-group summary small { font-size:9px; }
  .workout-type-group .compact-library-grid { padding:0 7px 7px; gap:7px; }
  .library-card-main { padding:7px 9px; }
  .library-card-summary { grid-template-columns:minmax(0,1fr) auto; gap:5px 8px; }
  .library-card h3 { font-size:14px; line-height:1.15; }
  .library-prescription { font-size:10px; line-height:1.2; }
  .library-focus { font-size:10px; line-height:1.25; }
  .library-meta { gap:4px; }
  .library-meta span,
  .library-source,
  .workout-type-pill { padding:4px 7px; font-size:9px; line-height:1.1; }
  .library-card-details { display:none !important; max-height:0 !important; margin:0 !important; padding:0 !important; opacity:0 !important; border-top:0 !important; }
  .library-card-actions { gap:5px; padding:6px 7px; }
  .library-card-actions .table-btn { min-height:34px; flex:1 1 104px; padding:6px 8px; font-size:11px; }
  .warmup-card-summary { grid-template-columns:minmax(0,1fr) auto; }
}
/* Mobile overflow fixes: calendar fits the screen; data tables scroll inside their cards. */
@media (max-width: 620px) {
  html,
  body {
    overflow-x: hidden;
  }

  .app-shell,
  .main,
  .card,
  .calendar,
  .side-card,
  .next-session,
  .recent,
  .progress-body {
    max-width: 100%;
    min-width: 0;
  }

  .calendar {
    display: block;
    max-width: 100%;
    overflow-x: visible !important;
    overflow-y: visible;
  }

  .calendar .weekdays,
  .calendar .calendar-grid {
    width: 100%;
    min-width: 0;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 4px;
  }

  .calendar .weekdays div {
    overflow: hidden;
    font-size: 8px;
    text-overflow: clip;
  }

  .calendar .day {
    min-width: 0;
    min-height: 76px;
    padding: 5px 3px;
    overflow: hidden;
  }

  .calendar .day-top {
    min-width: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
  }

  .calendar .day-actions {
    width: 100%;
    min-width: 0;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 2px;
  }

  .calendar .day-actions button:disabled {
    display: none;
  }

  .calendar .day-actions .day-add,
  .calendar .day-actions .day-race-btn,
  .calendar .day-actions .day-weekend-swap-btn {
    width: 17px;
    height: 17px;
    border-radius: 5px;
    font-size: 10px;
  }

  .calendar .session-chip,
  .calendar .race-chip {
    min-width: 0;
    min-height: 18px;
    max-height: 30px;
    padding: 4px 3px;
    overflow: hidden;
    font-size: 8px;
    font-weight: 950;
    line-height: 1.1;
    text-overflow: ellipsis;
  }

  .calendar .week-actions {
    gap: 2px;
  }

  .calendar .week-share-btn,
  .calendar .week-copy-btn,
  .calendar .week-download-btn {
    width: 20px;
    height: 20px;
  }

  .coach-table,
  .fit-lap-table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;
  }

  .coach-table::after,
  .fit-lap-table::after {
    content: "Swipe sideways for more";
    display: block;
    padding: 8px 10px;
    color: var(--muted);
    font-size: 10px;
    font-weight: 800;
    text-align: right;
  }
}

@media (max-width: 620px) {
  .coach-athlete-grid,
  .coach-athlete-grid > div,
  .coach-athlete-grid > .card {
    width:100%;
    min-width:0;
  }

  .coach-athlete-grid .calendar {
    max-width:100%;
    overflow-x:auto !important;
    overflow-y:visible;
    -webkit-overflow-scrolling:touch;
    touch-action:pan-x;
  }

  .coach-athlete-grid .calendar::after {
    content:"Swipe sideways for full coach calendar";
    display:block;
    padding:8px 2px 0;
    color:var(--muted);
    font-size:10px;
    font-weight:800;
    text-align:right;
  }

  .coach-athlete-grid .calendar .weekdays,
  .coach-athlete-grid .calendar .calendar-grid {
    width:auto;
    min-width:560px;
    grid-template-columns:repeat(7,minmax(72px,1fr));
    gap:5px;
  }

  .coach-athlete-grid .calendar .day {
    min-height:88px;
    padding:6px;
    overflow:hidden;
  }

  .coach-athlete-grid .calendar .day-top {
    flex-direction:row;
    align-items:flex-start;
  }

  .coach-athlete-grid .calendar .day-actions {
    flex-wrap:wrap;
    justify-content:flex-end;
  }

  .coach-athlete-grid .progress-body {
    width:100%;
    max-width:100%;
    overflow:visible;
    padding:18px 12px;
  }

  .coach-athlete-grid .progress-ring {
    width:min(140px,60vw);
    height:min(140px,60vw);
  }

  .coach-athlete-grid .progress-metrics,
  .coach-athlete-grid .fit-progress-metrics {
    grid-template-columns:1fr 1fr;
  }
}

@media (max-width: 430px) {
  .coach-athlete-grid .calendar .weekdays,
  .coach-athlete-grid .calendar .calendar-grid {
    min-width:520px;
    grid-template-columns:repeat(7,minmax(66px,1fr));
  }
}

/* Compact density refinements: trims unused white space while keeping phone tap targets usable. */
@media (min-width: 621px) {
  .card-head { padding:18px 20px; }
  .stat { padding:17px 18px; }
  .next-session { padding:18px; }
  .progress-body { padding:21px; }
  .athlete-info-grid > div { padding:13px 14px; }
  .profile-form { padding:21px; }
  .modal-top { padding:22px 24px; }
  .modal-body { padding:22px 24px; }
  .detail { padding:10px 11px; }
  .field { margin-bottom:14px; }
  .field input,
  .field select,
  .field textarea { padding:11px 12px; }
  .workout-builder,
  .repeat-results-card,
  .fit-upload-card,
  .workout-feedback-card,
  .completion-segments-card { padding:15px; }
  .rep-set-builder { padding:12px; }
  .rep-line-builder { padding:10px; }
  th, td { padding:12px 15px; }
}

@media (max-width: 620px) {
  .topbar { min-height:58px; padding:8px 12px; }
  .brand-compact { width:40px; height:40px; }
  .avatar { width:32px; height:32px; }
  .logout { min-height:36px; }
  .main { padding:0 9px; margin-top:12px; margin-bottom:42px; }
  .welcome { gap:9px; margin-bottom:14px; }
  .welcome h1 { font-size:31px; margin-bottom:4px; }
  .welcome-actions { gap:6px; }
  .welcome-actions > button { padding-left:9px; padding-right:9px; }
  .primary-btn,
  .secondary-btn,
  .share-option,
  .install-app-link { min-height:42px; padding:10px 13px; border-radius:10px; }
  .table-btn { min-height:36px; padding:6px 9px; }

  .field { margin-bottom:11px; }
  .field label { margin-bottom:5px; font-size:12px; }
  .field input,
  .field select,
  .field textarea { padding:9px 10px; border-radius:9px; }
  .field textarea { min-height:76px; }
  #session-details,#template-details { min-height:130px; line-height:1.55; }
  .form-row { gap:10px; }

  .stats { gap:6px; margin-bottom:14px; }
  .stat { padding:10px 11px; border-radius:13px; }
  .stat-value { font-size:24px; line-height:1; }
  .stat-label { font-size:11px; line-height:1.2; }
  .card { border-radius:14px; }
  .card-head { padding:11px 12px; gap:7px; }
  .card-head h2 { font-size:20px; }
  .icon-btn { width:38px; height:38px; border-radius:10px; }

  .calendar { padding:7px; }
  .calendar .weekdays,
  .calendar .calendar-grid { gap:3px; }
  .calendar .weekdays div { font-size:7.5px; padding-bottom:4px; }
  .calendar .day { min-height:68px; padding:4px 3px; border-radius:10px; }
  .calendar .day-actions .day-add,
  .calendar .day-actions .day-race-btn,
  .calendar .day-actions .day-weekend-swap-btn { width:16px; height:16px; font-size:9px; border-radius:5px; }
  .calendar .session-chip,
  .calendar .race-chip { min-height:17px; max-height:27px; padding:3px 3px; margin-top:4px; font-size:7.5px; font-weight:950; }
  .calendar .week-share-btn,
  .calendar .week-copy-btn,
  .calendar .week-download-btn { width:18px; height:18px; }
  .coach-athlete-grid .calendar .day { min-height:78px; padding:5px; }
  .coach-athlete-grid .calendar .weekdays,
  .coach-athlete-grid .calendar .calendar-grid { min-width:500px; grid-template-columns:repeat(7,minmax(62px,1fr)); gap:4px; }

  .next-session { padding:14px; }
  .type-badge { padding:4px 8px; font-size:10px; }
  .next-session h3 { margin:10px 0 6px; font-size:20px; }
  .meta-list { margin:12px 0; }
  .meta-list li { padding:6px 0; }
  .recent { padding:0 14px 8px; }
  .recent-item { padding:10px 0; gap:9px; }

  .athlete-info-grid { gap:8px; margin-bottom:14px; }
  .athlete-info-grid > div { padding:10px 11px; border-radius:11px; }
  .athlete-title-row { gap:9px; }
  .avatar.large { width:48px; height:48px; }
  .athlete-lower-grid { gap:14px; }
  .athlete-list-row { padding:9px; gap:8px; border-radius:10px; }
  .athlete-list { gap:6px; padding:8px; }
  .athlete-folder summary { padding:10px 11px; }
  .athlete-folder-rows { gap:6px; padding:0 7px 7px; }
  .profile-form { padding:14px; }
  .profile-list { padding:2px 10px 10px; }
  .profile-row { gap:8px; padding:10px 0; }
  .active-toggle { padding:9px 0 13px; }

  .progress-body,
  .coach-athlete-grid .progress-body { padding:13px 10px; }
  .progress-ring,
  .coach-athlete-grid .progress-ring { width:min(116px,50vw); height:min(116px,50vw); margin-bottom:12px; }
  .progress-ring::after { inset:10px; }
  .progress-ring strong { font-size:30px; }
  .progress-metrics { padding:10px 0; margin-bottom:10px; }
  .load-progress-metrics { gap:6px; margin-bottom:10px; }
  .load-progress-metrics > div { padding:8px 6px; border-radius:8px; }
  .fit-progress-metrics { gap:6px; margin-top:8px; }
  .fit-progress-metrics > div { padding:8px 6px; }

  .modal { max-height:95dvh; border-radius:16px 16px 0 0; }
  .modal-top { padding:14px 14px; }
  .modal-top h2 { font-size:23px; margin:6px 38px 2px 0; }
  .modal-body { padding:12px 11px calc(16px + env(safe-area-inset-bottom)); }
  .modal-actions { gap:8px; margin-top:16px; }
  .close { width:34px; height:34px; right:10px; top:10px; }
  .detail-grid { gap:7px; margin:10px 0; }
  .detail { padding:9px 10px; border-radius:9px; }
  .workout-block { margin:11px 0; padding:12px; line-height:1.45; }
  .training-focus-card { margin:8px 0 12px; padding:10px 11px; gap:10px; }
  .load-score-grid { gap:7px; margin-bottom:12px; }
  .load-score-grid > div { padding:9px; }
  .race-priority-strip { gap:8px; margin-bottom:10px; padding:10px 11px; border-radius:11px; }

  .workout-builder,
  .repeat-results-card,
  .fit-upload-card,
  .workout-feedback-card,
  .completion-segments-card { padding:10px; margin-bottom:12px; border-radius:12px; }
  .builder-row,
  .builder-row + .builder-row,
  .builder-row.reps-builder,
  .structured-segment-grid { gap:9px; }
  .structured-segment-grid { margin-bottom:11px; padding-bottom:11px; }
  .rep-set-builders,
  .rep-line-list { gap:8px; }
  .rep-set-builder,
  .rep-line-builder,
  .set-rest-bottom { padding:9px; border-radius:10px; }
  .rep-set-head,
  .rep-line-head { gap:6px; margin-bottom:7px; }
  .rep-details-row { gap:8px; margin-top:8px; }
  .metric-toggle { margin-bottom:5px; }
  .metric-value { gap:5px; grid-template-columns:1fr 62px; }
  .metric-value input,
  .metric-value select,
  .count-control select { padding:8px 9px; border-radius:8px; }
  .time-suffix { font-size:10px; }
  .add-rep-line-btn { margin:0; }
  .repeat-set { margin-top:11px; }
  .repeat-average { margin-top:12px; padding:10px 11px; }
  .repeat-average.set-average { padding:8px 9px; }
  .completion-segment { gap:9px; padding-top:10px; }
  .completion-segment + .completion-segment { margin-top:10px; }
  .completion-segment h5 { font-size:14px; }
  .fit-analysis-card { margin-top:12px; padding:11px; }
  .fit-comparison-grid > div { padding:8px; }
  .workout-feedback-card textarea { min-height:92px; padding:10px 11px; }

  th, td { padding:9px 10px; font-size:12px; }
  .empty-state { padding:26px 14px; }
  .report-filters { padding:12px; margin-bottom:12px; }
  .report-grid { gap:12px; margin-top:12px; }
  .report-chart { padding:0 12px 12px; }
  .weekly-mileage-strip { grid-template-columns:1fr; }
  .shoe-list { padding:0 12px 12px; }
  .shoe-metrics { grid-template-columns:1fr; }
  .shoe-actions { justify-content:stretch; }
  .shoe-actions .table-btn { flex:1; }
  .report-structure { gap:7px; padding:0 12px 12px; }
  .report-structure div,
  .report-structure-card { padding:10px; border-radius:10px; }
  .science-card { padding:12px; }

  .library-toolbar { padding:12px; margin-bottom:18px; gap:10px; }
  .library-search input,
  .library-filter select,
  .library-count { height:40px; }
  .library-section + .library-section,
  .warmup-library-section,
  .workout-type-library-section { margin-top:24px; padding-top:20px; }
  .library-section-head { gap:10px; margin-bottom:10px; }
  .library-section-head h2 { font-size:22px; }
  .library-card-main { padding:8px 10px; }
  .library-card-summary { gap:6px 9px; }
  .library-card-details { margin-top:7px; padding-top:7px; }
  .library-card-actions { padding:7px 8px; }
  .template-preview-hero,
  .template-detail,
  .focus-callout,
  .warmup-picker-field,
  .session-library-picker,
  .copy-week-source,
  .copy-week-preview { padding:10px; margin-bottom:10px; border-radius:10px; }

  .message-thread-head { padding:12px; }
  .message-thread-body { min-height:260px; padding:10px; }
  .message-compose { padding:10px; gap:8px; }
  .message-help { padding:0 10px 10px; }
  .share-dialog { padding:16px 14px calc(14px + env(safe-area-inset-bottom)); }
}

.benchmark-context-card,
.benchmark-context-preview {
  margin:14px 0;
  padding:14px;
  border:1px solid rgba(0,174,239,.18);
  border-radius:16px;
  background:linear-gradient(135deg,rgba(0,174,239,.08),rgba(190,232,38,.12));
}
.benchmark-context-preview.muted {
  background:#f7faf5;
  border-color:#dfe8d9;
}
.benchmark-context-card h4,
.benchmark-context-preview h4 {
  margin:4px 0 10px;
  font-size:17px;
}
.benchmark-context-preview p {
  margin:6px 0 0;
  color:var(--muted);
}
.benchmark-context-list {
  display:grid;
  gap:8px;
}
.benchmark-context-list div {
  display:grid;
  gap:3px;
  padding:10px;
  border-radius:12px;
  background:rgba(255,255,255,.78);
  box-shadow:inset 0 0 0 1px rgba(10,31,46,.06);
}
.benchmark-context-list strong {
  color:var(--ink);
  font-size:13px;
}
.benchmark-context-list span,
.benchmark-context-list small {
  color:var(--muted);
  font-size:12px;
}

@media (max-width: 430px) {
  .calendar .day { min-height:64px; }
  .coach-athlete-grid .calendar .day { min-height:74px; }
  .coach-athlete-grid .calendar .weekdays,
  .coach-athlete-grid .calendar .calendar-grid { min-width:480px; grid-template-columns:repeat(7,minmax(60px,1fr)); }
  .welcome h1 { font-size:29px; }
  .stat { padding:9px 10px; }
  .modal-top h2 { font-size:21px; }
}

/* Calendar week actions menu and fixed-width workout cards.
   Layout-only patch: uses existing RacePace variables and does not change fonts or colour tokens. */
.calendar-week-row { position:relative; }
.calendar-week-row > .week-actions {
  position:relative;
  align-self:stretch;
  justify-content:center;
  align-items:center;
  flex-direction:column;
  width:34px;
  min-width:34px;
  margin-top:0;
  padding:0;
  border:0;
  background:transparent;
  overflow:visible;
  z-index:2;
}

.week-actions.dropdown-container { overflow:visible; }
.week-actions-toggle {
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--white);
  color:var(--navy);
  font-size:18px;
  font-weight:900;
  line-height:1;
  cursor:pointer;
  transition:.15s;
}
.week-actions-toggle:hover,
.week-actions-toggle:focus {
  border-color:var(--cyan);
  color:var(--blue);
  outline:none;
  transform:translateY(-1px);
}
.week-actions-menu {
  display:none;
  position:absolute;
  top:100%;
  right:0;
  margin-top:6px;
  z-index:160;
  min-width:168px;
  padding:6px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--white);
  box-shadow:var(--shadow);
  flex-direction:column;
  gap:2px;
}
.week-actions-menu.show { display:flex; }

.week-actions-menu button.week-copy-btn,
.week-actions-menu button.week-move-btn,
.week-actions-menu button.week-delete-btn,
.week-actions-menu button.week-download-btn,
.week-actions-menu button.week-share-btn {
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  width:100% !important;
  height:auto !important;
  min-height:0 !important;
  padding:9px 10px !important;
  margin:0 !important;
  border:0 !important;
  border-radius:8px !important;
  background:transparent !important;
  color:var(--navy) !important;
  font-size:12px !important;
  font-weight:800 !important;
  line-height:1.2 !important;
  opacity:1 !important;
  box-shadow:none !important;
  text-align:left !important;
  transform:none !important;
}
.week-actions-menu button.week-copy-btn:hover,
.week-actions-menu button.week-move-btn:hover,
.week-actions-menu button.week-download-btn:hover,
.week-actions-menu button.week-share-btn:hover,
.week-actions-menu button.week-copy-btn:focus,
.week-actions-menu button.week-move-btn:focus,
.week-actions-menu button.week-download-btn:focus,
.week-actions-menu button.week-share-btn:focus {
  color:var(--blue) !important;
  outline:none;
}

.week-actions-menu button.week-delete-btn { color:#b5473f !important; }
.week-actions-menu button.week-delete-btn:hover,
.week-actions-menu button.week-delete-btn:focus { background:#fff0ef !important; color:#9c302c !important; outline:none; }

.week-actions-menu svg {
  width:15px;
  height:15px;
  flex:0 0 15px;
}
.week-actions-menu span {
  display:inline-flex;
  align-items:center;
}
.calendar .session-chip {
  max-width:100%;
  min-width:0;
  overflow:hidden !important;
  white-space:nowrap;
}
.calendar .session-chip-type {
  max-width:100%;
  min-width:0;
  overflow:hidden;
  text-overflow:clip;
  white-space:nowrap;
  container-type:inline-size;
}
.calendar .session-chip-name {
  max-width:100%;
  min-width:0;
  overflow:hidden;
  text-overflow:clip;
  white-space:nowrap;
  container-type:inline-size;
}
.calendar .session-chip-marquee {
  display:inline-block;
  width:max-content;
  max-width:none;
  padding-right:18px;
  white-space:nowrap;
  transform:translateX(0);
  will-change:transform;
}
.calendar .session-chip-type .session-chip-marquee {
  animation:session-chip-type-scroll 16s ease-in-out 1s infinite;
}
.calendar .session-chip-name .session-chip-marquee {
  animation:session-chip-name-scroll 16s ease-in-out 1s infinite;
}
@keyframes session-chip-type-scroll {
  0%,8% { transform:translateX(0); }
  18%,32% { transform:translateX(min(0px, calc(100cqw - 100%))); }
  42%,100% { transform:translateX(0); }
}
@keyframes session-chip-name-scroll {
  0%,50% { transform:translateX(0); }
  60%,74% { transform:translateX(min(0px, calc(100cqw - 100%))); }
  84%,100% { transform:translateX(0); }
}
@media (prefers-reduced-motion:reduce) {
  .calendar .session-chip-marquee { animation:none; }
}
.calendar .day {
  min-width:0;
  overflow:hidden;
}

/* Coach mobile calendar alignment patch.
   Layout-only: keeps existing RacePace colours and fonts unchanged. */
@media (max-width: 620px) {
  .coach-athlete-grid .calendar {
    max-width: 100%;
    overflow-x: visible !important;
    overflow-y: visible;
    touch-action: auto;
  }

  .coach-athlete-grid .calendar::after {
    content: none !important;
    display: none !important;
  }

  .coach-athlete-grid .calendar-weekday-row,
  .coach-athlete-grid .calendar-week-row {
    grid-template-columns: minmax(0, 1fr) 28px;
    gap: 4px;
    min-width: 0;
    align-items: stretch;
    overflow: visible;
  }

  .coach-athlete-grid .week-actions-spacer {
    width: 28px;
    min-width: 28px;
  }

  .coach-athlete-grid .calendar .weekdays,
  .coach-athlete-grid .calendar .calendar-grid {
    width: 100% !important;
    min-width: 0 !important;
    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
    gap: 3px;
  }

  .coach-athlete-grid .calendar .day {
    min-width: 0;
    min-height: 72px;
    padding: 4px 3px;
    overflow: hidden;
  }

  .coach-athlete-grid .calendar .day-top {
    min-width: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
  }

  .coach-athlete-grid .calendar .day-actions {
    width: 100%;
    min-width: 0;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 2px;
  }

  .coach-athlete-grid .calendar-week-row > .week-actions {
    position: relative;
    width: 28px;
    min-width: 28px;
    height: 100%;
    align-self: stretch;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    margin: 0;
    border: 0;
    background: transparent;
    overflow: visible;
    z-index: 25;
  }

  .coach-athlete-grid .week-actions-toggle {
    width: 28px;
    height: 28px;
    border-radius: 10px;
    font-size: 15px;
  }

  .coach-athlete-grid .week-actions-menu {
    top: calc(50% + 18px);
    right: 0;
    left: auto;
    margin-top: 0;
    min-width: min(168px, calc(100vw - 36px));
  }
}

@media (max-width: 430px) {
  .coach-athlete-grid .calendar-weekday-row,
  .coach-athlete-grid .calendar-week-row {
    grid-template-columns: minmax(0, 1fr) 24px;
    gap: 3px;
  }

  .coach-athlete-grid .week-actions-spacer,
  .coach-athlete-grid .calendar-week-row > .week-actions {
    width: 24px;
    min-width: 24px;
  }

  .coach-athlete-grid .week-actions-toggle {
    width: 24px;
    height: 24px;
    border-radius: 9px;
    font-size: 14px;
  }

  .coach-athlete-grid .calendar .day {
    min-height: 68px;
    padding: 4px 2px;
  }
}


/* Coach mobile calendar hard fix v94.
   Layout-only patch: does not change RacePace colours or fonts.
   The coach calendar gets its own class so the mobile week menu cannot fall back inside the 7-day grid. */
@media (max-width: 620px) {
  .calendar.coach-calendar:not(.compare-calendar) {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow: visible !important;
    touch-action: auto !important;
  }

  .calendar.coach-calendar:not(.compare-calendar)::after {
    content: none !important;
    display: none !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .calendar-weekday-row,
  .calendar.coach-calendar:not(.compare-calendar) .calendar-week-row {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 26px !important;
    gap: 3px !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow: visible !important;
    align-items: stretch !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .weekdays,
  .calendar.coach-calendar:not(.compare-calendar) .calendar-grid {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    display: grid !important;
    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
    gap: 3px !important;
    overflow: visible !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .week-actions-spacer,
  .calendar.coach-calendar:not(.compare-calendar) .calendar-week-row > .week-actions {
    width: 26px !important;
    min-width: 26px !important;
    max-width: 26px !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .calendar-week-row > .week-actions {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    align-self: stretch !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    overflow: visible !important;
    z-index: 80 !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .week-actions-toggle {
    width: 24px !important;
    height: 24px !important;
    min-width: 24px !important;
    min-height: 24px !important;
    padding: 0 !important;
    border-radius: 9px !important;
    font-size: 14px !important;
    line-height: 1 !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .week-actions-menu {
    position: absolute !important;
    top: calc(50% + 16px) !important;
    right: 0 !important;
    left: auto !important;
    margin: 0 !important;
    transform: none !important;
    min-width: min(168px, calc(100vw - 36px)) !important;
    z-index: 220 !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .day {
    min-width: 0 !important;
    overflow: hidden !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .session-chip,
  .calendar.coach-calendar:not(.compare-calendar) .race-chip {
    max-width: 100% !important;
    min-width: 0 !important;
  }
}

@media (max-width: 430px) {
  .calendar.coach-calendar:not(.compare-calendar) .calendar-weekday-row,
  .calendar.coach-calendar:not(.compare-calendar) .calendar-week-row {
    grid-template-columns: minmax(0, 1fr) 22px !important;
    gap: 2px !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .week-actions-spacer,
  .calendar.coach-calendar:not(.compare-calendar) .calendar-week-row > .week-actions {
    width: 22px !important;
    min-width: 22px !important;
    max-width: 22px !important;
  }

  .calendar.coach-calendar:not(.compare-calendar) .week-actions-toggle {
    width: 21px !important;
    height: 21px !important;
    min-width: 21px !important;
    min-height: 21px !important;
    font-size: 13px !important;
  }
}


/* Coach athlete dashboard action buttons: icon-only, same RacePace colours/fonts */
.coach-action-icon-bar {
  width:min(780px,100%);
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  justify-content:flex-end;
  gap:8px;
}
.coach-action-icon-bar .athlete-switcher {
  flex:1 1 260px;
  max-width:340px;
  min-width:220px;
  width:auto;
}
.coach-action-icon-bar .dashboard-action-btn {
  flex:0 0 46px;
  width:46px;
  min-width:46px;
  height:46px;
  min-height:46px;
  padding:0;
  display:grid;
  place-items:center;
  line-height:1;
}
.coach-action-icon-bar .dashboard-action-svg {
  width:22px;
  height:22px;
  fill:none;
  stroke:currentColor;
  stroke-width:2;
  stroke-linecap:round;
  stroke-linejoin:round;
  pointer-events:none;
}
.coach-action-icon-bar #add-athlete-session .dashboard-action-svg {
  width:24px;
  height:24px;
}

@media (max-width: 900px) {
  .coach-action-icon-bar {
    display:flex;
    width:100%;
    justify-content:flex-start;
  }
  .coach-action-icon-bar .athlete-switcher {
    flex:1 1 100%;
    max-width:none;
    min-width:0;
  }
  .coach-action-icon-bar .dashboard-action-btn {
    flex:0 0 44px;
    width:44px;
    min-width:44px;
    height:44px;
    min-height:44px;
  }
}

@media (max-width: 430px) {
  .coach-action-icon-bar {
    gap:6px;
  }
  .coach-action-icon-bar .dashboard-action-btn {
    flex:0 0 41px;
    width:41px;
    min-width:41px;
    height:41px;
    min-height:41px;
  }
  .coach-action-icon-bar .dashboard-action-svg {
    width:20px;
    height:20px;
  }
}


/* Coach dashboard/action icons: electric-blue buttons with white icons */
.coach-action-icon-bar .dashboard-action-btn {
  border:1px solid rgba(255,255,255,.42) !important;
  background:linear-gradient(135deg,#00bfff 0%,#087ca7 58%,#0d2232 150%) !important;
  color:#fff !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 9px 22px rgba(0,191,255,.22) !important;
}
.coach-action-icon-bar .dashboard-action-btn:hover,
.coach-action-icon-bar .dashboard-action-btn:focus {
  color:#fff !important;
  border-color:rgba(255,255,255,.7) !important;
  background:linear-gradient(135deg,#13d7ff 0%,#087ca7 52%,#0d2232 145%) !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25),0 11px 26px rgba(0,191,255,.3) !important;
  transform:translateY(-1px);
  outline:none;
}
.coach-action-icon-bar .dashboard-action-svg {
  color:#fff;
  stroke:#fff;
}
.coach-dashboard-actions {
  width:auto;
  max-width:360px;
  flex:0 1 auto;
  align-items:center;
}
.coach-dashboard-actions .dashboard-action-btn {
  flex:0 0 48px;
  width:48px;
  min-width:48px;
  height:48px;
  min-height:48px;
}
.coach-dashboard-actions .dashboard-action-svg {
  width:23px;
  height:23px;
}

@media (max-width: 900px) {
  .coach-dashboard-actions {
    width:100%;
    max-width:none;
    justify-content:flex-start;
  }
}


/* Refined RacePace action icons and full button colouring */
.dashboard-action-svg .icon-plus-badge {
  fill:#fff;
  stroke:#fff;
  stroke-width:1.7;
}
.dashboard-action-svg .icon-plus-mark {
  stroke:#087ca7;
  stroke-width:1.8;
  stroke-linecap:round;
}
.dashboard-action-svg.badge-plus-svg {
  width:25px;
  height:25px;
}
#coach-athlete-month-pdf .dashboard-action-svg,
#manage-athletes .dashboard-action-svg,
#add-session .dashboard-action-svg,
#add-athlete-session .dashboard-action-svg,
#add-athlete-race .dashboard-action-svg {
  width:25px;
  height:25px;
}

/* Keep text buttons full-size, but give coach tool areas the same electric-blue treatment */
.profile-manager .primary-btn,
.profile-manager .secondary-btn,
.profile-form .primary-btn,
.profile-form .secondary-btn,
.library-heading .primary-btn,
.library-section-head .secondary-btn,
.library-empty .secondary-btn,
.template-editor-modal .primary-btn,
.template-editor-modal .secondary-btn,
.session-library-picker .secondary-btn,
.report-heading .primary-btn,
.month-pdf-choice-grid .secondary-btn,
.month-pdf-backdrop .modal-actions .secondary-btn,
.month-pdf-actions .secondary-btn,
.coach-modal .modal-actions .primary-btn,
.coach-modal .modal-actions .secondary-btn {
  border:1px solid rgba(255,255,255,.42) !important;
  background:linear-gradient(135deg,#00bfff 0%,#087ca7 58%,#0d2232 150%) !important;
  color:#fff !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 9px 22px rgba(0,191,255,.22) !important;
}
.profile-manager .primary-btn:hover,
.profile-manager .primary-btn:focus,
.profile-manager .secondary-btn:hover,
.profile-manager .secondary-btn:focus,
.profile-form .primary-btn:hover,
.profile-form .primary-btn:focus,
.profile-form .secondary-btn:hover,
.profile-form .secondary-btn:focus,
.library-heading .primary-btn:hover,
.library-heading .primary-btn:focus,
.library-section-head .secondary-btn:hover,
.library-section-head .secondary-btn:focus,
.library-empty .secondary-btn:hover,
.library-empty .secondary-btn:focus,
.template-editor-modal .primary-btn:hover,
.template-editor-modal .primary-btn:focus,
.template-editor-modal .secondary-btn:hover,
.template-editor-modal .secondary-btn:focus,
.session-library-picker .secondary-btn:hover,
.session-library-picker .secondary-btn:focus,
.report-heading .primary-btn:hover,
.report-heading .primary-btn:focus,
.month-pdf-choice-grid .secondary-btn:hover,
.month-pdf-choice-grid .secondary-btn:focus,
.month-pdf-backdrop .modal-actions .secondary-btn:hover,
.month-pdf-backdrop .modal-actions .secondary-btn:focus,
.month-pdf-actions .secondary-btn:hover,
.month-pdf-actions .secondary-btn:focus,
.coach-modal .modal-actions .primary-btn:hover,
.coach-modal .modal-actions .primary-btn:focus,
.coach-modal .modal-actions .secondary-btn:hover,
.coach-modal .modal-actions .secondary-btn:focus {
  color:#fff !important;
  border-color:rgba(255,255,255,.7) !important;
  background:linear-gradient(135deg,#13d7ff 0%,#087ca7 52%,#0d2232 145%) !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25),0 11px 26px rgba(0,191,255,.3) !important;
  transform:translateY(-1px);
  outline:none;
}
.profile-manager .table-btn:not(.danger),
.library-card-actions .table-btn:not(.danger),
.report-structure-card {
  border:1px solid rgba(0,191,255,.45) !important;
  background:linear-gradient(135deg,rgba(0,191,255,.14),rgba(8,124,167,.08)) !important;
  color:#087ca7 !important;
}
.profile-manager .table-btn:not(.danger):hover,
.profile-manager .table-btn:not(.danger):focus,
.library-card-actions .table-btn:not(.danger):hover,
.library-card-actions .table-btn:not(.danger):focus,
.report-structure-card:hover,
.report-structure-card:focus {
  border-color:#00bfff !important;
  background:linear-gradient(135deg,#00bfff 0%,#087ca7 58%,#0d2232 150%) !important;
  color:#fff !important;
  box-shadow:0 9px 22px rgba(0,191,255,.22) !important;
}

/* Athlete dashboard action buttons: RacePace blue, fixed height, no scrolling text */
.athlete-dashboard-actions {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  width:min(620px,100%);
  align-items:stretch;
  justify-content:end;
}
.athlete-dashboard-actions .athlete-action-btn {
  min-width:0;
  width:100%;
  height:58px;
  min-height:58px;
  max-height:58px;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  padding:0 16px;
  border:1px solid rgba(255,255,255,.42) !important;
  background:linear-gradient(135deg,#00bfff 0%,#087ca7 58%,#0d2232 150%) !important;
  color:#fff !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 9px 22px rgba(0,191,255,.22) !important;
  text-align:center;
  white-space:nowrap;
}
.athlete-dashboard-actions .athlete-action-btn:hover,
.athlete-dashboard-actions .athlete-action-btn:focus {
  color:#fff !important;
  border-color:rgba(255,255,255,.7) !important;
  background:linear-gradient(135deg,#13d7ff 0%,#087ca7 52%,#0d2232 145%) !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25),0 11px 26px rgba(0,191,255,.3) !important;
  transform:translateY(-1px);
  outline:none;
}
.athlete-dashboard-actions .athlete-action-scroll {
  position:relative;
}
.athlete-action-marquee {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  max-width:100%;
  min-width:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  animation:none;
}
.athlete-dashboard-actions .athlete-action-btn:not(.athlete-action-scroll) .athlete-action-marquee {
  animation:none;
}
.athlete-whatsapp-icon {
  flex:0 0 auto;
  width:22px;
  height:22px;
  color:#fff;
}
.athlete-whatsapp-icon path:first-child {
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.athlete-whatsapp-icon path:last-child {
  fill:currentColor;
  stroke:none;
}
.athlete-dashboard-actions .date-pill {
  grid-column:1 / -1;
  justify-self:end;
}
@media (min-width: 901px) {
  .athlete-dashboard-actions .athlete-action-btn {
    height:60px;
    min-height:60px;
    max-height:60px;
  }
}
@media (max-width: 640px) {
  .athlete-dashboard-actions {
    width:100%;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:9px;
  }
  .athlete-dashboard-actions .athlete-action-btn {
    height:54px;
    min-height:54px;
    max-height:54px;
    padding:0 10px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .athlete-action-marquee {
    animation:none;
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
  }
}


/* v100 dashboard icon refresh: stronger blue button theme + descriptive icons */
.coach-action-icon-bar .dashboard-action-btn {
  border: 1px solid rgba(38, 232, 255, .95) !important;
  border-radius: 16px !important;
  background: linear-gradient(180deg, #0f70ff 0%, #0b58db 40%, #083ea8 70%, #062a73 100%) !important;
  color: #fff !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.22),
    inset 0 0 0 2px rgba(0,175,255,.18),
    0 0 0 1px rgba(0,191,255,.18),
    0 10px 22px rgba(5,72,188,.28),
    0 0 16px rgba(0,234,255,.12) !important;
}
.coach-action-icon-bar .dashboard-action-btn:hover,
.coach-action-icon-bar .dashboard-action-btn:focus {
  border-color: #54f0ff !important;
  background: linear-gradient(180deg, #1584ff 0%, #0d64f0 42%, #0a47ba 72%, #072f7e 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.3),
    inset 0 0 0 2px rgba(0,210,255,.22),
    0 12px 24px rgba(5,72,188,.32),
    0 0 20px rgba(0,234,255,.18) !important;
}
.coach-dashboard-actions .dashboard-action-btn,
.coach-athlete-actions .dashboard-action-btn {
  flex: 0 0 50px;
  width: 50px;
  min-width: 50px;
  height: 50px;
  min-height: 50px;
}
.coach-action-icon-bar .dashboard-action-svg {
  width: 24px;
  height: 24px;
}
.coach-action-icon-bar .dashboard-speed-lines {
  stroke: #43f0ff;
  stroke-width: 1.7;
  stroke-linecap: round;
}
#manage-athletes .dashboard-action-svg,
#add-session .dashboard-action-svg,
#add-athlete-session .dashboard-action-svg {
  width: 26px;
  height: 26px;
}
@media (max-width: 430px) {
  .coach-dashboard-actions .dashboard-action-btn,
  .coach-athlete-actions .dashboard-action-btn {
    flex: 0 0 44px;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
  }
}


/* v101 unify text buttons with the same RacePace electric-blue style */
.primary-btn,
.secondary-btn,
.table-btn:not(.danger) {
  border: 1px solid rgba(38, 232, 255, .95);
  background: linear-gradient(180deg, #12a9ff 0%, #0b68f0 38%, #0847ba 70%, #062f81 100%);
  color: #fff;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.22),
    inset 0 0 0 1px rgba(0,175,255,.18),
    0 0 0 1px rgba(0,191,255,.18),
    0 10px 22px rgba(5,72,188,.22),
    0 0 16px rgba(0,234,255,.10);
}
.primary-btn:hover,
.primary-btn:focus,
.secondary-btn:hover,
.secondary-btn:focus,
.table-btn:not(.danger):hover,
.table-btn:not(.danger):focus {
  color: #fff;
  border-color: #54f0ff;
  background: linear-gradient(180deg, #19beff 0%, #0d79ff 38%, #0a54cf 70%, #073793 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.28),
    inset 0 0 0 1px rgba(0,210,255,.20),
    0 12px 24px rgba(5,72,188,.28),
    0 0 18px rgba(0,234,255,.14);
}
/* keep destructive buttons distinct */
.table-btn.danger,
.secondary-btn.danger,
.primary-btn.danger {
  border-color: rgba(240,82,82,.8) !important;
}


/* v102 icon cleanup */
.coach-action-icon-bar .dashboard-speed-lines,
.dashboard-action-svg .dashboard-speed-lines { display:none !important; }


/* v103 final button colour sweep: force all remaining text buttons and athlete page buttons to match the shiny icon-button theme */
.primary-btn,
.secondary-btn,
.table-btn:not(.danger),
.report-heading #download-report-pdf,
.library-heading #new-workout-template,
.month-pdf-choice-grid .secondary-btn,
.month-pdf-backdrop .modal-actions .secondary-btn,
.month-pdf-actions .secondary-btn,
.athlete-dashboard-actions .athlete-action-btn,
.athlete-dashboard-actions .secondary-btn,
.welcome-actions .athlete-action-btn,
.profile-manager .primary-btn,
.profile-manager .secondary-btn,
.profile-form .primary-btn,
.profile-form .secondary-btn,
.library-heading .primary-btn,
.library-section-head .secondary-btn,
.library-empty .secondary-btn,
.template-editor-modal .primary-btn,
.template-editor-modal .secondary-btn,
.session-library-picker .secondary-btn,
.report-heading .primary-btn,
.coach-modal .modal-actions .primary-btn,
.coach-modal .modal-actions .secondary-btn,
.modal-actions .primary-btn,
.modal-actions .secondary-btn {
  border: 1px solid rgba(38, 232, 255, .95) !important;
  background: linear-gradient(180deg, #12a9ff 0%, #0b68f0 38%, #0847ba 70%, #062f81 100%) !important;
  color: #fff !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.22),
    inset 0 0 0 1px rgba(0,175,255,.18),
    0 0 0 1px rgba(0,191,255,.18),
    0 10px 22px rgba(5,72,188,.22),
    0 0 16px rgba(0,234,255,.10) !important;
}
.primary-btn:hover,
.primary-btn:focus,
.secondary-btn:hover,
.secondary-btn:focus,
.table-btn:not(.danger):hover,
.table-btn:not(.danger):focus,
.report-heading #download-report-pdf:hover,
.report-heading #download-report-pdf:focus,
.library-heading #new-workout-template:hover,
.library-heading #new-workout-template:focus,
.month-pdf-choice-grid .secondary-btn:hover,
.month-pdf-choice-grid .secondary-btn:focus,
.month-pdf-backdrop .modal-actions .secondary-btn:hover,
.month-pdf-backdrop .modal-actions .secondary-btn:focus,
.month-pdf-actions .secondary-btn:hover,
.month-pdf-actions .secondary-btn:focus,
.athlete-dashboard-actions .athlete-action-btn:hover,
.athlete-dashboard-actions .athlete-action-btn:focus,
.welcome-actions .athlete-action-btn:hover,
.welcome-actions .athlete-action-btn:focus,
.profile-manager .primary-btn:hover,
.profile-manager .primary-btn:focus,
.profile-manager .secondary-btn:hover,
.profile-manager .secondary-btn:focus,
.profile-form .primary-btn:hover,
.profile-form .primary-btn:focus,
.profile-form .secondary-btn:hover,
.profile-form .secondary-btn:focus,
.library-heading .primary-btn:hover,
.library-heading .primary-btn:focus,
.library-section-head .secondary-btn:hover,
.library-section-head .secondary-btn:focus,
.library-empty .secondary-btn:hover,
.library-empty .secondary-btn:focus,
.template-editor-modal .primary-btn:hover,
.template-editor-modal .primary-btn:focus,
.template-editor-modal .secondary-btn:hover,
.template-editor-modal .secondary-btn:focus,
.session-library-picker .secondary-btn:hover,
.session-library-picker .secondary-btn:focus,
.report-heading .primary-btn:hover,
.report-heading .primary-btn:focus,
.coach-modal .modal-actions .primary-btn:hover,
.coach-modal .modal-actions .primary-btn:focus,
.coach-modal .modal-actions .secondary-btn:hover,
.coach-modal .modal-actions .secondary-btn:focus,
.modal-actions .primary-btn:hover,
.modal-actions .primary-btn:focus,
.modal-actions .secondary-btn:hover,
.modal-actions .secondary-btn:focus {
  border-color: #54f0ff !important;
  background: linear-gradient(180deg, #19beff 0%, #0d79ff 38%, #0a54cf 70%, #073793 100%) !important;
  color: #fff !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.28),
    inset 0 0 0 1px rgba(0,210,255,.20),
    0 12px 24px rgba(5,72,188,.28),
    0 0 18px rgba(0,234,255,.14) !important;
}
/* Keep danger buttons red so destructive actions remain obvious */
.table-btn.danger,
.secondary-btn.danger,
.primary-btn.danger,
#delete-session-btn,
#delete-race-btn {
  border-color: rgba(240,82,82,.85) !important;
  background: #f8e1e1 !important;
  color: #9a3f3f !important;
  box-shadow: none !important;
}

/* v104 coach browser calendar snapshot collapse */
.coach-calendar-head-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  min-width:0;
}
.coach-snapshot-head-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
}
.coach-snapshot-toggle,
.coach-snapshot-hide,
.coach-snapshot-show {
  min-height:34px;
  padding:8px 12px;
  font-size:11px;
  line-height:1;
  white-space:nowrap;
}
.coach-athlete-calendar-panel {
  min-width:0;
}
.coach-snapshot-panel {
  min-width:0;
}
.coach-athlete-grid.snapshot-collapsed {
  grid-template-columns: minmax(0, 1fr);
}
.coach-athlete-grid.snapshot-collapsed .coach-snapshot-panel {
  display:none;
}
.coach-athlete-grid.snapshot-collapsed .calendar {
  overflow-x:visible;
}
@media (min-width: 901px) {
  .coach-athlete-grid.snapshot-collapsed .calendar-weekday-row,
  .coach-athlete-grid.snapshot-collapsed .calendar-week-row {
    grid-template-columns:minmax(0,1fr) auto;
  }
  .coach-athlete-grid.snapshot-collapsed .day {
    min-height:108px;
  }
}
@media (max-width: 900px) {
  .coach-snapshot-hide,
  .coach-snapshot-show {
    display:none !important;
  }
  .coach-athlete-grid.snapshot-collapsed {
    grid-template-columns:1fr;
  }
  .coach-athlete-grid.snapshot-collapsed .coach-snapshot-panel {
    display:block;
  }
}

/* v105 login centering + mobile calendar landscape hint */
.login-hero {
  align-items: center;
  text-align: center;
}
.login-hero .brand-wordmark,
.login-hero .brand,
.login-hero .hero-copy,
.login-hero .login-note {
  margin-left: auto;
  margin-right: auto;
}
.hero-copy {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.hero-copy p {
  margin-left: auto;
  margin-right: auto;
}
.hero-tagline {
  margin-left: auto;
  margin-right: auto;
}
.login-note {
  width: 100%;
  margin-top: 20px;
  color: #9fdff6;
  font-size: 15px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.calendar-mobile-landscape-hint {
  display: none;
}
@media (max-width: 900px) {
  .calendar-mobile-landscape-hint {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    margin: 0 0 10px;
    padding: 7px 10px;
    color: var(--muted);
    font-size: 11px;
    font-weight: 800;
    line-height: 1.25;
    text-align: center;
  }
  .calendar-mobile-landscape-hint svg {
    width: 17px;
    height: 17px;
    flex: 0 0 auto;
    fill: none;
    stroke: var(--cyan);
    stroke-width: 1.9;
    stroke-linecap: round;
    stroke-linejoin: round;
  }
}
@media (orientation: landscape) and (max-width: 900px) {
  .calendar-mobile-landscape-hint {
    display: none;
  }
}

/* v106 login portal title above wordmark */
.login-brand-stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.login-brand-stack .login-note {
  margin-top: 0;
  margin-bottom: 0;
}
.login-brand-stack .brand-wordmark {
  margin-left: auto;
  margin-right: auto;
}

/* v107 completed workout card colour lock */
.session-chip.completed {
  background: #058731 !important;
  color: #c9f2cc !important;
  border-color: #39ff14 !important;
}

/* v109 add session icon changed to stopwatch */
#add-session .dashboard-action-svg,
#add-athlete-session .dashboard-action-svg {
  width: 26px;
  height: 26px;
}

/* v111 compact mobile dropdown lists */
select,
select option,
select optgroup {
  font-size: 14px;
  line-height: 1.25;
}

select {
  max-width: 100%;
  min-width: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 900px) {
  select,
  select option,
  select optgroup {
    font-size: 13px !important;
    line-height: 1.22 !important;
  }

  select {
    min-height: 44px;
    padding: 9px 34px 9px 12px !important;
    border-radius: 12px;
  }

  .athlete-switcher select,
  .coach-action-icon-bar .athlete-switcher select,
  #session-template-picker,
  #library-category,
  #race-athlete,
  #session-type,
  #template-type,
  #profile-group,
  #athlete-group,
  #report-athlete,
  #athlete-report-athlete,
  #completion-shoe,
  #warmup-category,
  [id$="-warmup-template"] {
    font-size: 13px !important;
    line-height: 1.2 !important;
  }

  .athlete-switcher,
  .coach-action-icon-bar .athlete-switcher {
    min-width: 0;
  }
}

@media (max-width: 430px) {
  select,
  select option,
  select optgroup {
    font-size: 12.5px !important;
  }

  select {
    min-height: 42px;
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }
}

/* v114 keep unplanned workout cards neon orange, even when completed */
.session-chip.unplanned-run,
.session-chip.unplanned-run.completed,
.session-chip.completed.unplanned-run {
  background: #FF5C00 !important;
  border-color: #FF5C00 !important;
  color: #fff !important;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.22),
    0 0 0 2px rgba(255,92,0,.18),
    0 4px 12px rgba(255,92,0,.28) !important;
}

.session-chip.unplanned-run .session-chip-type,
.session-chip.unplanned-run .session-chip-name,
.session-chip.unplanned-run.completed .session-chip-type,
.session-chip.unplanned-run.completed .session-chip-name {
  color: #fff !important;
}

/* v117 athlete dashboard distance swap */
.weekly-mileage-strip {
  grid-template-columns: 1fr;
}
.weekly-mileage-strip .stat {
  width: 100%;
}

/* v118 weekly current/planned distance colours */
.weekly-distance-value {
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  white-space: nowrap;
}

.weekly-distance-current-low {
  color: #e8b754;
}

.weekly-distance-current-under {
  color: #FF5C00;
}

.weekly-distance-current-close {
  color: #8ced85;
}

.weekly-distance-current-on {
  color: #058731;
}

.weekly-distance-current-over {
  color: #FF5C00;
}

.weekly-distance-planned {
  color: #058731;
}

.weekly-distance-separator {
  color: var(--ink);
}

.weekly-distance-value small {
  color: var(--ink);
  margin-left: .16em;
}

/* v119 estimated distance field for timed workouts */
.timed-distance-estimate {
  margin-top: 12px;
}

.timed-distance-estimate.hidden {
  display: none !important;
}

.km-inline-field {
  display: flex;
  align-items: center;
  gap: 8px;
}

.km-inline-field input {
  min-width: 0;
}

.km-inline-field span {
  color: var(--muted);
  font-weight: 900;
}

/* v120 timed interval rest distance and auto-estimate support */
.repeat-rest-distance-field {
  max-width: 260px;
  margin-top: 10px;
}

.repeat-rest-distance-field input {
  max-width: 170px;
}

.timed-distance-estimate small,
.repeat-rest-distance-field small {
  color: var(--muted);
}

/* v123 athlete dashboard small icon buttons + quick section navigation */
.athlete-dashboard-actions.coach-action-icon-bar {
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

.athlete-dashboard-icon-btn {
  flex: 0 0 50px;
  width: 50px;
  min-width: 50px;
  height: 50px;
  min-height: 50px;
}

.athlete-dashboard-icon-btn .dashboard-action-svg {
  width: 25px;
  height: 25px;
}

.athlete-quick-links {
  margin-bottom: 18px;
}

.athlete-quick-link-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.athlete-quick-link-grid .dashboard-action-btn {
  flex: 0 0 50px;
  width: 50px;
  min-width: 50px;
  height: 50px;
  min-height: 50px;
}

.athlete-quick-link-grid .dashboard-action-svg {
  width: 25px;
  height: 25px;
}

.back-to-top-btn {
  min-height: 32px;
  padding: 7px 10px;
  font-size: 11px;
  line-height: 1;
  white-space: nowrap;
}

.section-head-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.report-benchmark-head {
  margin-bottom: 12px;
}

#athlete-top,
#athlete-report-section,
#athlete-report-weekly-mileage,
#athlete-report-training-load,
#athlete-report-benchmark-graph,
#athlete-report-benchmark-tables,
#athlete-report-effort,
#athlete-training-history,
#athlete-progress-snapshot,
#athlete-pace-calculator,
#athlete-running-shoes {
  scroll-margin-top: 92px;
}

@media (max-width: 700px) {
  .athlete-dashboard-actions.coach-action-icon-bar {
    justify-content: flex-start;
  }

  .athlete-dashboard-icon-btn,
  .athlete-quick-link-grid .dashboard-action-btn {
    flex-basis: 44px;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
  }

  .athlete-dashboard-icon-btn .dashboard-action-svg,
  .athlete-quick-link-grid .dashboard-action-svg {
    width: 23px;
    height: 23px;
  }

  .athlete-quick-link-grid {
    gap: 8px;
  }

  .back-to-top-btn {
    font-size: 10.5px;
    padding: 7px 9px;
  }
}

/* v152 athlete button structure and custom icon buttons */
.dashboard-action-img {
  width: 26px;
  height: 26px;
  object-fit: contain;
  filter: brightness(0) invert(1);
  display: block;
}

.dashboard-action-combo {
  position: relative;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
}

.dashboard-action-combo .dashboard-action-svg {
  width: 30px;
  height: 30px;
}

.dashboard-action-badge-img {
  position: absolute;
  right: -3px;
  top: -4px;
  width: 14px;
  height: 14px;
  object-fit: contain;
  filter: brightness(0) invert(1);
}

.athlete-dashboard-button-row,
.athlete-page-button-row {
  display: grid;
  gap: 10px;
  align-items: start;
}

.athlete-dashboard-button-row {
  grid-template-columns: repeat(6, minmax(62px, 1fr));
  width: min(100%, 560px);
}

.athlete-page-button-row.toolbox-row {
  grid-template-columns: repeat(3, minmax(72px, 1fr));
  width: min(100%, 360px);
}

.athlete-page-button-row.reports-row {
  grid-template-columns: repeat(5, minmax(62px, 1fr));
  width: min(100%, 520px);
}

.athlete-icon-tile-btn {
  width: 100%;
  min-width: 0;
  height: auto;
  min-height: 70px;
  padding: 8px 5px 7px;
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
}

.athlete-icon-tile-btn .dashboard-action-svg {
  width: 27px;
  height: 27px;
  flex: 0 0 27px;
}

.athlete-icon-tile-btn .dashboard-action-img {
  width: 27px;
  height: 27px;
}

.athlete-icon-tile-btn .dashboard-action-combo {
  width: 29px;
  height: 29px;
}

.athlete-icon-label {
  display: block;
  max-width: 100%;
  color: #fff;
  font-size: 10.5px;
  font-weight: 900;
  line-height: 1.05;
  text-align: center;
  white-space: nowrap;
}

.athlete-page-menu-card {
  margin-bottom: 18px;
}

.athlete-screen-head .back-link {
  margin-bottom: 10px;
}

.back-link {
  border: 0;
  background: transparent;
  color: var(--blue);
  font-weight: 900;
  padding: 0;
  cursor: pointer;
}

.back-to-top-btn {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 10px;
  line-height: 1;
  white-space: nowrap;
}

.back-to-top-btn .dashboard-action-img,
.back-to-top-btn .dashboard-action-svg {
  width: 17px;
  height: 17px;
  flex: 0 0 17px;
}

.athlete-tools-grid {
  align-items: start;
}

.athlete-races-card .card-head {
  align-items: center;
}

.athlete-race-list {
  display: grid;
  gap: 10px;
}

.athlete-race-row {
  width: 100%;
  border: 1px solid var(--line);
  background: #fbfcfa;
  border-radius: 18px;
  padding: 14px;
  text-align: left;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  cursor: pointer;
}

.athlete-race-row:hover {
  border-color: rgba(0, 179, 255, .55);
  box-shadow: 0 8px 22px rgba(5, 72, 188, .10);
}

.athlete-race-title {
  color: var(--ink);
  font-weight: 900;
  font-size: 15px;
  line-height: 1.2;
}

.athlete-race-meta,
.athlete-race-countdown {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.athlete-race-countdown {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
}

.athlete-race-arrow {
  color: var(--blue);
  font-size: 26px;
  font-weight: 900;
  line-height: 1;
}

@media (max-width: 700px) {
  .athlete-dashboard-button-row {
    grid-template-columns: repeat(6, minmax(44px, 1fr));
    width: 100%;
    gap: 8px 6px;
  }

  .athlete-page-button-row.toolbox-row {
    grid-template-columns: repeat(3, minmax(64px, 1fr));
    width: 100%;
  }

  .athlete-page-button-row.reports-row {
    grid-template-columns: repeat(5, minmax(50px, 1fr));
    width: 100%;
    gap: 8px 6px;
  }

  .athlete-icon-tile-btn {
    min-height: 64px;
    padding: 7px 3px 6px;
    border-radius: 14px;
  }

  .athlete-icon-tile-btn .dashboard-action-svg,
  .athlete-icon-tile-btn .dashboard-action-img {
    width: 24px;
    height: 24px;
    flex-basis: 24px;
  }

  .athlete-icon-tile-btn .dashboard-action-combo {
    width: 25px;
    height: 25px;
  }

  .athlete-icon-tile-btn .dashboard-action-combo .dashboard-action-svg {
    width: 25px;
    height: 25px;
  }

  .athlete-icon-tile-btn .dashboard-action-badge-img {
    width: 12px;
    height: 12px;
    right: -3px;
    top: -4px;
  }

  .athlete-icon-label {
    font-size: 9.2px;
  }

  .athlete-races-card .card-head {
    align-items: flex-start;
  }

  .athlete-races-card .card-head .primary-btn {
    width: 100%;
    justify-content: center;
  }
}


/* v160 athlete right-click / long-press quick complete popover */
.athlete-quick-complete-popover {
  position: fixed;
  z-index: 3000;
  width: min(280px, calc(100vw - 24px));
  background: #ffffff;
  border: 1px solid rgba(0, 179, 255, .38);
  border-radius: 18px;
  box-shadow: 0 18px 50px rgba(6, 26, 38, .22);
  padding: 12px;
}

.athlete-quick-complete-form {
  display: grid;
  gap: 10px;
}

.athlete-quick-complete-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.athlete-quick-complete-head span {
  display: block;
  color: var(--blue);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.athlete-quick-complete-head strong {
  display: block;
  color: var(--ink);
  font-size: 16px;
  line-height: 1.15;
}

.athlete-quick-complete-close {
  width: 28px;
  height: 28px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #f8faf6;
  color: var(--ink);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}

.athlete-quick-complete-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.athlete-quick-complete-fields label {
  position: relative;
  display: grid;
  gap: 4px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.athlete-quick-complete-fields input,
.athlete-quick-complete-fields select {
  width: 100%;
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px 9px;
  font: inherit;
  font-weight: 900;
  color: var(--ink);
  background: #fbfcfa;
}

.athlete-quick-complete-rpe {
  grid-column: 1 / -1;
}

.athlete-quick-complete-fields small {
  position: absolute;
  right: 9px;
  bottom: 10px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
}

.athlete-quick-complete-fields label:first-child input {
  padding-right: 31px;
}

.athlete-quick-complete-save {
  width: 100%;
  justify-content: center;
  min-height: 38px;
  border-radius: 12px;
}



/* v161 coach race dashboard screens */
.coach-races-card {
  max-width: 980px;
}

.coach-race-month-list {
  display: grid;
  gap: 12px;
}

.coach-race-month {
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #fbfcfa;
  overflow: hidden;
}

.coach-race-month summary {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 15px 16px;
  cursor: pointer;
}

.coach-race-month summary::-webkit-details-marker {
  display: none;
}

.coach-race-month summary strong {
  display: block;
  color: var(--ink);
  font-size: 17px;
  font-weight: 950;
}

.coach-race-month summary span {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.coach-race-month summary em {
  color: var(--blue);
  font-style: normal;
  font-size: 11px;
  font-weight: 950;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.coach-race-month[open] summary {
  border-bottom: 1px solid var(--line);
  background: rgba(0, 179, 255, .06);
}

.coach-race-list {
  padding: 12px;
}

.coach-race-row {
  background: #ffffff;
}

.compact-empty {
  padding: 14px;
}

#coach-races .dashboard-action-img,
#coach-athlete-races .dashboard-action-img {
  width: 25px;
  height: 25px;
}



/* v162 clickable athlete names in coach completed list */
.coach-table-athlete-link {
  display: inline-block;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-weight: 950;
  text-align: left;
  cursor: pointer;
}

.coach-table-athlete-link:hover,
.coach-table-athlete-link:focus {
  color: var(--blue);
  text-decoration: underline;
  outline: none;
}



/* v163 coach dashboard quick athlete search */
.coach-athlete-quick-search {
  position: relative;
  flex: 0 1 250px;
  min-width: 220px;
  align-self: center;
  display: grid;
  gap: 4px;
  margin-left: auto;
}

.coach-athlete-quick-search label {
  color: var(--muted);
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.coach-athlete-search-wrap {
  position: relative;
}

.coach-athlete-search-wrap input {
  width: 100%;
  min-height: 43px;
  border: 1px solid rgba(0, 179, 255, .35);
  border-radius: 14px;
  background: #ffffff;
  color: var(--ink);
  font: inherit;
  font-weight: 850;
  padding: 10px 12px;
  box-shadow: 0 10px 28px rgba(6, 26, 38, .08);
}

.coach-athlete-search-wrap input:focus {
  outline: 3px solid rgba(0, 179, 255, .18);
  border-color: var(--blue);
}

.coach-athlete-search-results {
  position: absolute;
  z-index: 2400;
  top: calc(100% + 7px);
  left: 0;
  right: 0;
  display: grid;
  gap: 4px;
  max-height: 300px;
  overflow-y: auto;
  padding: 7px;
  border: 1px solid rgba(0, 179, 255, .35);
  border-radius: 16px;
  background: #ffffff;
  box-shadow: 0 18px 45px rgba(6, 26, 38, .18);
}

.coach-athlete-search-option {
  width: 100%;
  border: 0;
  border-radius: 12px;
  background: transparent;
  display: grid;
  gap: 2px;
  padding: 9px 10px;
  text-align: left;
  cursor: pointer;
}

.coach-athlete-search-option span {
  color: var(--ink);
  font-weight: 950;
}

.coach-athlete-search-option small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.coach-athlete-search-option:hover,
.coach-athlete-search-option.is-selected {
  background: rgba(0, 179, 255, .10);
}

.coach-athlete-search-empty {
  padding: 11px 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

@media (max-width: 900px) {
  .coach-athlete-quick-search {
    width: 100%;
    min-width: 0;
    flex-basis: 100%;
    order: 2;
    margin-left: 0;
  }

  .coach-dashboard-actions {
    order: 3;
  }
}



/* v164 app feature page */
.athlete-feature-actions {
  justify-content: flex-end;
}

.feature-page {
  display: grid;
  gap: 18px;
}

.feature-heading {
  align-items: flex-start;
}

.feature-new-highlight {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 18px;
  align-items: start;
  border-color: rgba(0, 179, 255, .45);
  background: linear-gradient(135deg, rgba(0,179,255,.12), #ffffff 44%, #ffffff);
  box-shadow: 0 16px 42px rgba(6, 26, 38, .12);
}

.feature-new-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 11px;
  border-radius: 999px;
  background: #06131d;
  color: var(--blue);
  font-size: 11px;
  font-weight: 950;
  letter-spacing: .08em;
  text-transform: uppercase;
  white-space: nowrap;
}

.feature-new-highlight h2,
.feature-intro h2,
.feature-section h2 {
  margin: 0 0 8px;
  color: var(--blue);
  font-weight: 950;
}

.feature-new-highlight p,
.feature-intro p,
.feature-section p {
  margin: 0 0 10px;
  color: var(--ink);
}

.feature-quick-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin: 12px 0;
}

.feature-quick-grid span {
  border: 1px solid rgba(0, 179, 255, .25);
  border-radius: 999px;
  background: #f7fbff;
  color: var(--ink);
  padding: 6px 9px;
  font-size: 12px;
  font-weight: 850;
}

.feature-device-tip {
  color: var(--muted) !important;
  font-size: 13px;
}

.feature-intro {
  display: grid;
  gap: 14px;
}

.feature-promise {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  background: #06131d;
  border-radius: 14px;
  padding: 10px;
}

.feature-promise span {
  color: #ffffff;
  text-align: center;
  font-weight: 950;
}

.feature-section-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.feature-section {
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #ffffff;
  padding: 16px;
  box-shadow: 0 12px 32px rgba(6, 26, 38, .06);
}

.feature-section ul {
  margin: 0;
  padding-left: 20px;
}

.feature-section li {
  margin: 6px 0;
  color: var(--ink);
}

.feature-share-modal {
  max-width: 760px;
}

.feature-share-tools {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: 10px 0;
}

.feature-athlete-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  max-height: 320px;
  overflow: auto;
  padding: 4px;
}

.feature-athlete-option {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fbfcfa;
  padding: 10px;
  cursor: pointer;
}

.feature-athlete-option input {
  width: 18px;
  height: 18px;
  accent-color: var(--blue);
}

.feature-athlete-option span {
  display: grid;
  gap: 2px;
}

.feature-athlete-option strong {
  color: var(--ink);
  font-weight: 950;
}

.feature-athlete-option small {
  color: var(--muted);
  font-weight: 800;
}

.feature-share-links {
  margin-top: 10px;
}

.feature-share-ready {
  display: grid;
  gap: 8px;
  border: 1px solid rgba(0, 179, 255, .25);
  border-radius: 16px;
  background: rgba(0, 179, 255, .06);
  padding: 12px;
}

@media (max-width: 760px) {
  .feature-new-highlight,
  .feature-section-grid,
  .feature-promise,
  .feature-athlete-list {
    grid-template-columns: 1fr;
  }

  .feature-new-highlight {
    gap: 12px;
  }
}



/* v165 feature WhatsApp app-open buttons */
.feature-whatsapp-app-link {
  width: 100%;
  text-align: center;
  font: inherit;
  cursor: pointer;
}



/* v168 sport-specific workout builder */
.gym-builder {
  display: grid;
  gap: 14px;
}

.gym-workout-mode .warmup-picker-field,
.gym-workout-mode .form-row.hidden {
  display: none !important;
}

.gym-builder .metric-control {
  border-color: rgba(0, 179, 255, .28);
  background: rgba(0, 179, 255, .06);
}



/* v169 emergency restore: keep v166 dashboard/icon button sizing */
.coach-action-icon-bar .dashboard-action-btn {
  overflow: hidden;
}

.coach-action-icon-bar .dashboard-action-svg svg {
  max-width: 100%;
  max-height: 100%;
}



/* v170-clean Add Sport dropdown colours and sport workout cards */
.athlete-add-sport-dropdown {
  position: fixed;
  z-index: 9999;
  min-width: 220px;
  border: 1px solid rgba(6, 26, 38, .12);
  border-radius: 18px;
  background: #ffffff;
  box-shadow: 0 18px 48px rgba(6, 26, 38, .18);
  padding: 8px;
}

.athlete-add-sport-title {
  padding: 8px 10px 6px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 950;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.athlete-add-sport-dropdown button {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  justify-content: flex-start;
  border: 0;
  border-radius: 12px;
  background: var(--sport-color);
  color: var(--sport-text);
  padding: 10px 11px;
  font-weight: 950;
  cursor: pointer;
  margin: 4px 0;
  box-shadow: inset 0 -10px 20px rgba(0,0,0,.08);
}

.athlete-add-sport-dropdown button:hover,
.athlete-add-sport-dropdown button:focus {
  transform: translateY(-1px);
  outline: 2px solid rgba(6,26,38,.18);
}

.sport-colour-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: currentColor;
  border: 2px solid rgba(255,255,255,.65);
}

.session-chip.unplanned-run {
  border: 2px solid #FF5C00 !important;
}

.session-chip.unplanned-run[style*="--sport-color"] {
  box-shadow: inset 5px 0 0 var(--sport-color), 0 4px 12px rgba(6,26,38,.08);
}

.sport-box,
.fit-upload-card.sport-box,
.unplanned-title-card.sport-box {
  border: 2px solid #FF5C00 !important;
  box-shadow: inset 5px 0 0 var(--sport-color), 0 8px 18px rgba(6,26,38,.06);
}

.gym-body-field {
  margin-top: 12px;
}



/* v172 orange border scope: only athlete-created unplanned workouts */
.session-chip.completed:not(.unplanned-run),
.session-chip.easy:not(.unplanned-run),
.session-chip.quality:not(.unplanned-run),
.session-chip.race:not(.unplanned-run),
.race-chip {
  border-color: var(--line) !important;
}

.session-chip:not(.unplanned-run) {
  box-shadow: 0 4px 12px rgba(6,26,38,.08);
}



/* v174 swim target fix and unplanned sport chip colours */
.session-chip.unplanned-run {
  background: var(--sport-color) !important;
  color: var(--sport-text) !important;
  border: 2px solid #FF5C00 !important;
  text-decoration: none !important;
  text-shadow: none !important;
  box-shadow: inset 5px 0 0 rgba(255,255,255,.30), 0 4px 12px rgba(6,26,38,.12) !important;
}

.session-chip.unplanned-run.completed {
  background: var(--sport-color) !important;
  color: var(--sport-text) !important;
  border-color: #FF5C00 !important;
  box-shadow: inset 5px 0 0 rgba(255,255,255,.30), 0 4px 12px rgba(6,26,38,.12) !important;
}

.session-chip.unplanned-run .session-chip-type,
.session-chip.unplanned-run .session-chip-name {
  color: var(--sport-text) !important;
}

.session-chip.unplanned-run.sport-swim,
.session-chip.unplanned-run.sport-run {
  text-shadow: none !important;
}

.session-chip:not(.unplanned-run).completed {
  background: #058731;
  color: #c9f2cc;
  border-color: #39ff14;
}


/* v178 coach search cleanup + athlete dashboard icon-only buttons */
.coach-athlete-search-results[hidden] {
  display: none !important;
}

.athlete-dashboard-button-row .athlete-icon-label {
  display: none !important;
}

.athlete-dashboard-button-row .athlete-icon-tile-btn {
  min-height: 58px;
  padding: 8px;
  gap: 0;
  justify-content: center;
}



/* v179 Add Sport tight crop and shared tile sizing */
#athlete-add-sport .add-sport-main-img {
  width: 27px !important;
  height: 27px !important;
  max-width: 27px !important;
  max-height: 27px !important;
  object-fit: contain !important;
  display: block !important;
  margin: 0 auto !important;
}



/* v181 default running shoe */
.shoe-title-line {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.shoe-default-badge {
  display: inline-flex !important;
  width: auto;
  padding: 3px 8px;
  border-radius: 999px;
  background: rgba(0, 179, 255, .14);
  color: var(--blue) !important;
  font-size: 10px !important;
  font-weight: 950;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.shoe-row.default-shoe {
  border-color: rgba(0, 179, 255, .48);
  box-shadow: inset 4px 0 0 var(--blue);
}

.default-shoe-help {
  display: block;
  margin: -5px 0 12px;
  color: var(--muted);
  font-size: 12px;
}



/* v182 future-completion protection and sport-colour completion lock */
.future-completion-note {
  display: inline-flex;
  align-items: center;
  min-height: 42px;
  padding: 9px 12px;
  border: 1px solid rgba(0, 179, 255, .28);
  border-radius: 12px;
  background: rgba(0, 179, 255, .08);
  color: var(--navy);
  font-size: 12px;
  font-weight: 850;
}

.unplanned-date-mode-message {
  margin: 12px 0;
  padding: 10px 12px;
  border: 1px solid rgba(5, 135, 49, .22);
  border-radius: 12px;
  background: rgba(5, 135, 49, .07);
  color: #155d2d;
  font-size: 12px;
  font-weight: 800;
}

.unplanned-date-mode-message.upcoming {
  border-color: rgba(0, 179, 255, .30);
  background: rgba(0, 179, 255, .08);
  color: var(--navy);
}

#unplanned-completion-fields[hidden] {
  display: none !important;
}

.calendar .session-chip.sport-colour-lock,
.calendar .session-chip.sport-colour-lock.completed {
  background: var(--sport-color) !important;
  color: var(--sport-text) !important;
  text-decoration: none !important;
  text-shadow: none !important;
}

.calendar .session-chip.sport-colour-lock .session-chip-type,
.calendar .session-chip.sport-colour-lock .session-chip-name,
.calendar .session-chip.sport-colour-lock.completed .session-chip-type,
.calendar .session-chip.sport-colour-lock.completed .session-chip-name {
  color: var(--sport-text) !important;
}

.calendar .session-chip.sport-colour-lock.unplanned-run,
.calendar .session-chip.sport-colour-lock.unplanned-run.completed {
  border: 2px solid #FF5C00 !important;
  box-shadow: inset 5px 0 0 rgba(255,255,255,.30), 0 4px 12px rgba(6,26,38,.12) !important;
}

.calendar .session-chip.sport-colour-lock:not(.unplanned-run),
.calendar .session-chip.sport-colour-lock.completed:not(.unplanned-run) {
  border-color: var(--line) !important;
  box-shadow: 0 4px 12px rgba(6,26,38,.08) !important;
}



/* v183 same-day Unplanned Run date lock */
#unplanned-date:disabled {
  opacity: 1;
  color: var(--navy);
  background: rgba(0, 179, 255, .08);
  border-color: rgba(0, 179, 255, .32);
  cursor: not-allowed;
}



/* v187 coach workout ranges and FIT workout import */
.simple-distance-range {
  margin-top: 12px;
  padding: 12px;
  border: 1px solid rgba(0, 179, 255, .24);
  border-radius: 14px;
  background: rgba(0, 179, 255, .055);
}

.simple-distance-range.hidden,
.simple-range-fields.hidden {
  display: none !important;
}

.simple-range-toggle {
  margin-bottom: 10px;
}

.simple-range-fields {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: end;
  gap: 10px;
}

.range-divider {
  padding-bottom: 12px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.range-km-input {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
}

.range-km-input span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.metric-control input:disabled,
.metric-control select:disabled {
  opacity: .52;
  cursor: not-allowed;
  background: #eef2f3;
}

.fit-workout-import-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  margin: 12px 0 16px;
  padding: 14px;
  border: 1px solid rgba(0, 179, 255, .28);
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(0,179,255,.07), rgba(255,255,255,.92));
}

.fit-workout-import-card h3 {
  margin: 3px 0 5px;
  color: var(--navy);
  font-size: 18px;
}

.fit-workout-import-card p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.fit-workout-import-button {
  white-space: nowrap;
  cursor: pointer;
}

.fit-workout-import-status {
  grid-column: 1 / -1;
  padding-top: 2px;
}

@media (max-width: 640px) {
  .simple-range-fields {
    grid-template-columns: minmax(0, 1fr) 22px minmax(0, 1fr);
    gap: 6px;
  }

  .fit-workout-import-card {
    grid-template-columns: 1fr;
  }

  .fit-workout-import-button {
    width: 100%;
    text-align: center;
  }
}



/* v188 FIT workout importer binding fix */
.workout-builder.fit-import-flash {
  animation: fit-import-flash-v188 1.35s ease;
}

@keyframes fit-import-flash-v188 {
  0% {
    box-shadow: 0 0 0 0 rgba(0, 179, 255, .5);
  }
  35% {
    box-shadow: 0 0 0 5px rgba(0, 179, 255, .22);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(0, 179, 255, 0);
  }
}



/* v189 full-width desktop calendars and athlete side-panel collapse */
.athlete-calendar-head-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  min-width:0;
}

.athlete-sidebar-hide,
.athlete-sidebar-show {
  min-height:34px;
  padding:8px 12px;
  font-size:11px;
  line-height:1;
  white-space:nowrap;
}

.athlete-calendar-card,
.athlete-calendar-sidebar {
  min-width:0;
}

.athlete-calendar-grid.athlete-sidebar-collapsed {
  grid-template-columns:minmax(0,1fr);
}

.athlete-calendar-grid.athlete-sidebar-collapsed .athlete-calendar-sidebar {
  display:none;
}

.athlete-calendar-grid.athlete-sidebar-collapsed .calendar {
  overflow-x:visible;
}

@media (min-width: 901px) {
  .main.calendar-main {
    width:calc(100% - 28px);
    max-width:none;
    margin-left:auto;
    margin-right:auto;
  }

  .athlete-calendar-grid.athlete-sidebar-collapsed .day,
  .coach-athlete-grid.snapshot-collapsed .day {
    min-height:112px;
  }
}

@media (max-width: 900px) {
  .athlete-sidebar-hide,
  .athlete-sidebar-show {
    display:none !important;
  }

  .athlete-calendar-grid.athlete-sidebar-collapsed {
    grid-template-columns:1fr;
  }

  .athlete-calendar-grid.athlete-sidebar-collapsed .athlete-calendar-sidebar {
    display:block;
  }
}



/* v190 separate athlete and coach login portals */
.login-portal-switch {
  display:block;
  width:100%;
  margin:18px 0 0;
  padding:10px 8px 2px;
  border:0;
  background:transparent;
  color:var(--blue);
  font-size:12px;
  font-weight:900;
  text-align:center;
  text-decoration:underline;
  text-underline-offset:3px;
  cursor:pointer;
}

.login-portal-switch:hover,
.login-portal-switch:focus {
  color:var(--navy);
}

.coach-login-shell .login-note {
  color:#b9f1ff;
}

.coach-login-shell .login-hero .eyebrow {
  color:#65ddff;
}

.coach-login-shell .hero-copy h1 span {
  color:#00bfff;
}

@media (max-width: 620px) {
  .login-portal-switch {
    min-height:44px;
    padding-top:14px;
  }
}



/* v191 athlete mobile greeting and fullscreen calendar */
.athlete-mobile-greeting {
  display:none;
}

.athlete-calendar-fullscreen-trigger {
  display:none;
}

@media (max-width: 900px) {
  .athlete-dashboard-topbar {
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:12px;
  }

  .athlete-dashboard-topbar .brand-banner {
    flex:0 0 auto;
    max-width:none;
  }

  .athlete-dashboard-topbar .brand-banner-inner {
    display:none;
  }

  .athlete-dashboard-topbar .mobile-brand {
    display:block;
    width:52px;
    height:52px;
    flex:0 0 auto;
    border:1px solid rgba(0,191,255,.42);
    box-shadow:0 0 12px rgba(0,191,255,.28);
  }

  .athlete-dashboard-topbar .user-chip > div:not(.avatar) {
    display:none;
  }

  .athlete-mobile-greeting {
    display:flex;
    min-width:0;
    flex-direction:column;
    justify-content:center;
    line-height:1.05;
  }

  .athlete-mobile-greeting > span {
    color:#65ddff;
    font-size:9px;
    font-weight:950;
    letter-spacing:.13em;
    text-transform:uppercase;
  }

  .athlete-mobile-greeting strong {
    margin-top:3px;
    color:#fff;
    font-family:Oswald,sans-serif;
    font-size:clamp(20px,3.4vw,28px);
    line-height:1;
    text-transform:uppercase;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }

  .athlete-mobile-greeting small {
    margin-top:4px;
    color:#b8ceda;
    font-size:11px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }

  .athlete-dashboard-intro > .eyebrow,
  .athlete-dashboard-intro > h1,
  .athlete-dashboard-intro > .subtle {
    display:none;
  }

  .athlete-dashboard-intro {
    width:100%;
  }

  .athlete-dashboard-intro .coach-assignment-line {
    margin-top:0;
  }
}

@media (max-width: 620px) {
  .athlete-dashboard-topbar {
    min-height:76px;
    padding:8px 10px;
    gap:8px;
  }

  .athlete-dashboard-topbar .mobile-brand,
  .athlete-dashboard-topbar .brand-compact {
    width:42px;
    height:42px;
  }

  .athlete-dashboard-topbar .top-actions {
    gap:7px;
  }

  .athlete-dashboard-topbar .top-action-stack {
    gap:2px;
  }

  .athlete-dashboard-topbar .logout {
    min-height:30px;
    padding:0 2px;
    font-size:13px;
  }

  .athlete-dashboard-topbar .top-data-actions button {
    padding:3px 7px;
    font-size:9px;
  }

  .athlete-mobile-greeting > span {
    font-size:7px;
  }

  .athlete-mobile-greeting strong {
    font-size:clamp(17px,5.6vw,23px);
  }

  .athlete-mobile-greeting small {
    font-size:9px;
  }

  .athlete-calendar-card .card-head {
    gap:10px;
  }

  .athlete-calendar-head-actions {
    width:100%;
    display:flex;
    align-items:stretch;
    gap:9px;
  }

  .athlete-calendar-card .month-nav {
    width:auto;
    flex:0 0 auto;
    justify-content:flex-start;
    gap:8px;
  }

  .athlete-calendar-fullscreen-trigger {
    display:flex;
    min-width:0;
    flex:1 1 auto;
    align-items:center;
    justify-content:center;
    gap:8px;
    min-height:44px;
    padding:8px 12px;
    border:2px solid rgba(0,179,255,.42);
    border-radius:12px;
    background:rgba(0,179,255,.08);
    color:var(--blue);
    font-size:12px;
    cursor:pointer;
  }

  .athlete-calendar-fullscreen-trigger span {
    font-size:20px;
    line-height:1;
  }

  .athlete-calendar-fullscreen-trigger strong {
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }

  body.athlete-calendar-fullscreen-active {
    overflow:hidden !important;
    overscroll-behavior:none;
  }

  .athlete-calendar-card.athlete-mobile-fullscreen {
    position:fixed;
    inset:0;
    z-index:3000;
    width:100vw;
    max-width:none;
    height:100dvh;
    max-height:100dvh;
    margin:0;
    display:flex;
    flex-direction:column;
    border:0;
    border-radius:0;
    background:#fff;
    overflow:hidden;
    box-shadow:none;
  }

  .athlete-calendar-card.athlete-mobile-fullscreen .card-head {
    position:sticky;
    top:0;
    z-index:4;
    flex:0 0 auto;
    padding:max(12px,env(safe-area-inset-top)) 12px 10px;
    border-radius:0;
    background:#fff;
  }

  .athlete-calendar-card.athlete-mobile-fullscreen .calendar {
    flex:1 1 auto;
    min-height:0;
    max-height:none;
    padding:10px 8px max(12px,env(safe-area-inset-bottom));
    overflow-y:auto !important;
    overflow-x:hidden !important;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }

  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-mobile-landscape-hint {
    margin-bottom:6px;
  }

  .athlete-calendar-card.athlete-mobile-fullscreen .day {
    min-height:clamp(76px,12.2dvh,108px);
  }

  .athlete-calendar-card.athlete-mobile-fullscreen .athlete-calendar-fullscreen-trigger {
    border-color:#f05a28;
    background:#fff3ee;
    color:#b83d18;
  }
}

@media (max-width: 390px) {
  .athlete-dashboard-topbar {
    grid-template-columns:40px minmax(0,1fr) auto;
    gap:6px;
  }

  .athlete-mobile-greeting > span,
  .athlete-mobile-greeting small {
    display:none;
  }

  .athlete-mobile-greeting strong {
    font-size:18px;
  }

  .athlete-calendar-fullscreen-trigger {
    padding-left:8px;
    padding-right:8px;
    font-size:10px;
  }
}



/* v192 athlete-only feature guide and effort chart navigation */
.feature-coach-divider {
  padding:18px;
  border-color:rgba(255,92,0,.3);
  background:linear-gradient(135deg,rgba(255,92,0,.08),#fff 48%);
}

.feature-coach-divider h2 {
  margin:3px 0 6px;
  color:var(--navy);
  font-family:Oswald,sans-serif;
  text-transform:uppercase;
}

.feature-coach-divider p {
  margin:0;
  color:var(--muted);
}

.coach-feature-grid {
  margin-top:-4px;
}

.coach-only-feature {
  border-color:rgba(255,92,0,.24);
}

.coach-only-feature h2 {
  color:#c94b1e;
}

#athlete-report-effort-chart {
  scroll-margin-top:18px;
}



/* v193 calendar stats, rotation-safe fullscreen and coach top-bar titles */
.calendar-title-distance {
  display:flex;
  align-items:center;
  gap:18px;
  min-width:0;
}

.calendar-title-distance h2 {
  flex:0 1 auto;
}

.calendar-week-distance {
  display:flex;
  align-items:baseline;
  gap:7px;
  min-width:0;
  padding:6px 10px;
  border:1px solid rgba(0,179,255,.24);
  border-radius:11px;
  background:rgba(0,179,255,.055);
}

.calendar-week-distance > span {
  color:var(--muted);
  font-size:9px;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
  white-space:nowrap;
}

.calendar-week-distance .weekly-distance-value {
  white-space:nowrap;
}

.calendar-week-distance .weekly-distance-current,
.calendar-week-distance .weekly-distance-planned {
  font-family:Oswald,sans-serif;
  font-size:20px;
}

.calendar-week-distance .weekly-distance-value small {
  font-size:10px;
}

.athlete-sidebar-stats-card {
  padding:0;
  overflow:hidden;
}

.athlete-sidebar-stats {
  display:grid;
  grid-template-columns:1fr 1fr;
}

.athlete-sidebar-stats > div {
  min-width:0;
  padding:18px 14px;
  text-align:center;
}

.athlete-sidebar-stats > div + div {
  border-left:1px solid var(--line);
}

.athlete-sidebar-stats strong,
.athlete-sidebar-stats span {
  display:block;
}

.athlete-sidebar-stats strong {
  color:var(--navy);
  font-family:Oswald,sans-serif;
  font-size:32px;
  line-height:1;
}

.athlete-sidebar-stats span {
  margin-top:5px;
  color:var(--muted);
  font-size:10px;
  font-weight:850;
  text-transform:uppercase;
}

.coach-athlete-stats {
  grid-template-columns:repeat(2,minmax(0,1fr));
}

.coach-calendar-fullscreen-trigger {
  display:flex;
  min-height:36px;
  align-items:center;
  justify-content:center;
  gap:7px;
  padding:7px 11px;
  border:1px solid rgba(0,179,255,.34);
  border-radius:10px;
  background:rgba(0,179,255,.07);
  color:var(--blue);
  font-size:11px;
  font-weight:900;
  cursor:pointer;
}

.coach-calendar-fullscreen-trigger span {
  font-size:18px;
  line-height:1;
}

/* Fullscreen styling is intentionally outside width media queries.
   This keeps it active after portrait/landscape rotation changes viewport width. */
body.athlete-calendar-fullscreen-active,
body.coach-calendar-fullscreen-active {
  overflow:hidden !important;
  overscroll-behavior:none;
}

.athlete-calendar-card.athlete-mobile-fullscreen,
.coach-athlete-calendar-card.coach-calendar-fullscreen {
  position:fixed !important;
  inset:0 !important;
  z-index:3000 !important;
  width:100vw !important;
  max-width:none !important;
  height:100dvh !important;
  max-height:100dvh !important;
  margin:0 !important;
  display:flex !important;
  flex-direction:column !important;
  border:0 !important;
  border-radius:0 !important;
  background:#fff !important;
  overflow:hidden !important;
  box-shadow:none !important;
}

.athlete-calendar-card.athlete-mobile-fullscreen .card-head,
.coach-athlete-calendar-card.coach-calendar-fullscreen .card-head {
  position:sticky;
  top:0;
  z-index:4;
  flex:0 0 auto;
  padding:max(12px,env(safe-area-inset-top)) 12px 10px;
  border-radius:0;
  background:#fff;
}

.athlete-calendar-card.athlete-mobile-fullscreen .calendar,
.coach-athlete-calendar-card.coach-calendar-fullscreen .calendar {
  flex:1 1 auto;
  min-height:0;
  max-height:none;
  padding:10px 8px max(12px,env(safe-area-inset-bottom));
  overflow:auto !important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}

.athlete-calendar-card.athlete-mobile-fullscreen .athlete-calendar-fullscreen-trigger,
.coach-athlete-calendar-card.coach-calendar-fullscreen .coach-calendar-fullscreen-trigger {
  display:flex !important;
  border-color:#f05a28;
  background:#fff3ee;
  color:#b83d18;
}

.coach-topbar-page-title {
  min-width:0;
  flex:1 1 auto;
  padding:0 14px;
  text-align:center;
}

.coach-topbar-page-title span,
.coach-topbar-page-title strong {
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.coach-topbar-page-title span {
  color:#65ddff;
  font-size:9px;
  font-weight:950;
  letter-spacing:.13em;
  text-transform:uppercase;
}

.coach-topbar-page-title strong {
  margin-top:3px;
  color:#fff;
  font-family:Oswald,sans-serif;
  font-size:clamp(22px,2.3vw,34px);
  line-height:1;
  text-transform:uppercase;
}

.coach-page-topbar + .main > .welcome h1 {
  display:none;
}

.coach-page-topbar + .main > .welcome {
  margin-top:4px;
}

@media (min-width: 901px) {
  .coach-page-topbar .brand-banner {
    flex:0 1 38%;
  }

  .coach-page-topbar .top-actions {
    flex:0 0 auto;
  }
}

@media (max-width: 900px) {
  .coach-page-topbar {
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:10px;
  }

  .coach-page-topbar .brand-banner {
    flex:0 0 auto;
    max-width:none;
  }

  .coach-page-topbar .brand-banner-inner {
    display:none;
  }

  .coach-page-topbar .mobile-brand {
    display:block;
    width:48px;
    height:48px;
  }

  .coach-page-topbar .user-chip > div:not(.avatar) {
    display:none;
  }

  .coach-topbar-page-title {
    padding:0 4px;
  }

  .coach-topbar-page-title strong {
    font-size:clamp(18px,4vw,27px);
  }

  .coach-topbar-page-title span {
    font-size:8px;
  }

  .athlete-calendar-fullscreen-trigger {
    display:flex;
  }
}

@media (max-width: 620px) {
  .calendar-title-distance {
    width:100%;
    justify-content:space-between;
    gap:8px;
  }

  .calendar-title-distance h2 {
    font-size:21px;
  }

  .calendar-week-distance {
    gap:5px;
    padding:5px 8px;
  }

  .calendar-week-distance > span {
    font-size:8px;
  }

  .calendar-week-distance .weekly-distance-current,
  .calendar-week-distance .weekly-distance-planned {
    font-size:18px;
  }

  .athlete-calendar-sidebar {
    display:flex;
    flex-direction:column;
  }

  .athlete-sidebar-stats-card {
    order:-1;
    margin:12px 0 0;
  }

  .coach-calendar-head-actions {
    width:100%;
    flex-wrap:wrap;
  }

  .coach-calendar-fullscreen-trigger {
    flex:1 1 140px;
    min-height:44px;
  }

  .coach-page-topbar {
    min-height:76px;
    padding:8px 10px;
    gap:7px;
  }

  .coach-page-topbar .mobile-brand,
  .coach-page-topbar .brand-compact {
    width:40px;
    height:40px;
  }

  .coach-topbar-page-title strong {
    font-size:17px;
  }

  .coach-topbar-page-title span {
    display:none;
  }
}

@media (orientation:landscape) {
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar {
    padding-top:7px;
  }

  .athlete-calendar-card.athlete-mobile-fullscreen .day,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .day {
    min-height:78px;
  }
}



/* v194 coach settings, athlete header cleanup and athlete top-bar titles */
.top-settings-menu {
  position:relative;
}

.top-settings-toggle {
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid rgba(0,191,255,.48);
  border-radius:12px;
  background:rgba(0,191,255,.10);
  color:#e7f8ff;
  cursor:pointer;
}

.top-settings-toggle:hover,
.top-settings-toggle:focus,
.top-settings-toggle[aria-expanded="true"] {
  color:#fff;
  border-color:#00bfff;
  background:rgba(0,191,255,.22);
}

.top-settings-toggle .dashboard-action-svg,
.top-settings-toggle svg {
  width:21px;
  height:21px;
}

.top-settings-toggle .top-settings-gear {
  fill:#fff;
}

.top-settings-dropdown {
  position:absolute;
  top:calc(100% + 8px);
  right:0;
  z-index:3200;
  width:180px;
  padding:7px;
  border:1px solid rgba(0,191,255,.28);
  border-radius:13px;
  background:#071925;
  box-shadow:0 14px 34px rgba(0,0,0,.32);
}

.top-settings-dropdown[hidden] {
  display:none !important;
}

.top-settings-dropdown button,
.top-settings-dropdown a {
  width:100%;
  min-height:38px;
  display:flex;
  align-items:center;
  padding:8px 11px;
  border:0;
  border-radius:9px;
  background:transparent;
  color:#dcecf3;
  font-size:12px;
  font-weight:850;
  text-align:left;
  text-decoration:none;
  cursor:pointer;
}

.top-settings-dropdown button:hover,
.top-settings-dropdown button:focus,
.top-settings-dropdown a:hover,
.top-settings-dropdown a:focus {
  background:rgba(0,191,255,.16);
  color:#fff;
}

.calendar-week-distance {
  padding-left:12px;
  padding-right:12px;
}

.athlete-demographics-inline {
  display:flex;
  align-items:center;
  gap:10px;
  flex:0 0 auto;
}

.athlete-demographics-inline > div {
  min-width:120px;
  padding:9px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
}

.athlete-demographics-inline span,
.athlete-demographics-inline strong {
  display:block;
}

.athlete-demographics-inline span {
  color:var(--muted);
  font-size:8px;
  font-weight:900;
  letter-spacing:.06em;
  text-transform:uppercase;
}

.athlete-demographics-inline strong {
  margin-top:3px;
  color:var(--navy);
  font-size:12px;
  white-space:nowrap;
}

.coach-athlete-mobile-stats {
  display:none;
  margin-top:14px;
}

.coach-athlete-sidebar-stats {
  overflow:hidden;
}

.topbar-page-title {
  min-width:0;
  flex:1 1 auto;
  padding:0 14px;
  text-align:center;
}

.topbar-page-title span,
.topbar-page-title strong {
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.topbar-page-title span {
  color:#65ddff;
  font-size:9px;
  font-weight:950;
  letter-spacing:.13em;
  text-transform:uppercase;
}

.topbar-page-title strong {
  margin-top:3px;
  color:#fff;
  font-family:Oswald,sans-serif;
  font-size:clamp(22px,2.3vw,34px);
  line-height:1;
  text-transform:uppercase;
}

.athlete-page-topbar + .main > .athlete-screen-head h1,
.athlete-page-topbar + .main > .welcome h1,
.athlete-page-topbar + .main.feature-page > .feature-heading h1 {
  display:none;
}

@media (min-width:901px) {
  .page-title-topbar .brand-banner {
    flex:0 1 38%;
  }

  .page-title-topbar .top-actions {
    flex:0 0 auto;
  }
}

@media (max-width:900px) {
  .coach-page-topbar,
  .athlete-page-topbar {
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:10px;
  }

  .page-title-topbar .brand-banner {
    flex:0 0 auto;
    max-width:none;
  }

  .page-title-topbar .brand-banner-inner {
    display:none;
  }

  .page-title-topbar .mobile-brand {
    display:block;
    width:48px;
    height:48px;
  }

  .page-title-topbar .user-chip > div:not(.avatar) {
    display:none;
  }

  .topbar-page-title {
    padding:0 4px;
  }

  .topbar-page-title strong {
    font-size:clamp(18px,4vw,27px);
  }

  .topbar-page-title span {
    font-size:8px;
  }

  .athlete-demographics-inline {
    display:none;
  }

  .coach-athlete-mobile-stats {
    display:block;
  }

  .coach-athlete-sidebar-stats {
    display:none;
  }
}

@media (max-width:620px) {
  .page-title-topbar {
    min-height:76px;
    padding:8px 10px;
    gap:7px;
  }

  .page-title-topbar .mobile-brand,
  .page-title-topbar .brand-compact {
    width:40px;
    height:40px;
  }

  .topbar-page-title strong {
    font-size:17px;
  }

  .topbar-page-title span {
    display:none;
  }

  .top-settings-toggle {
    width:36px;
    height:36px;
  }

  .top-settings-dropdown {
    position:fixed;
    top:70px;
    right:10px;
    width:min(220px,calc(100vw - 20px));
  }

  .coach-athlete-mobile-stats {
    margin-top:12px;
  }
}



/* v195 athlete profile modal, desktop athlete fullscreen and mobile cleanup */
.athlete-list-only-card {
  overflow:hidden;
}

.athlete-profile-modal {
  width:min(720px,100%);
}

.athlete-profile-modal .modal-body {
  padding:20px 24px 24px;
}

.athlete-profile-modal-form {
  padding:0;
}

.athlete-profile-modal-form .modal-actions {
  margin-top:18px;
}

.athlete-title-row {
  align-items:center;
}

.athlete-dashboard-topbar .athlete-topbar-page-title {
  display:block;
}

.athlete-dashboard-intro > .eyebrow,
.athlete-dashboard-intro > h1,
.athlete-dashboard-intro > .subtle {
  display:none !important;
}

@media (min-width:901px) {
  .athlete-calendar-fullscreen-trigger {
    display:flex;
    min-height:36px;
    align-items:center;
    justify-content:center;
    gap:7px;
    padding:7px 11px;
    border:1px solid rgba(0,179,255,.34);
    border-radius:10px;
    background:rgba(0,179,255,.07);
    color:var(--blue);
    font-size:11px;
    font-weight:900;
    cursor:pointer;
  }

  .athlete-calendar-fullscreen-trigger span {
    font-size:18px;
    line-height:1;
  }
}

@media (max-width:900px) {
  .athlete-dashboard-topbar .athlete-topbar-page-title {
    display:none;
  }

  .coach-athlete-calendar-card .month-nav {
    display:none !important;
  }

  .athlete-page-topbar + .main > .athlete-screen-head > div > .eyebrow,
  .athlete-page-topbar + .main > .athlete-screen-head > div > h1,
  .athlete-page-topbar + .main > .athlete-screen-head > div > .subtle,
  .athlete-page-topbar + .main > .welcome > div > .eyebrow,
  .athlete-page-topbar + .main > .welcome > div > h1,
  .athlete-page-topbar + .main > .welcome > div > .subtle {
    display:none !important;
  }

  .athlete-page-topbar + .main .athlete-page-menu-card > .card-head {
    display:none;
  }

  .athlete-page-topbar + .main .athlete-page-menu-card {
    padding-top:0;
  }

  .athlete-page-topbar + .main .athlete-page-button-row {
    border-top:0;
  }
}

@media (max-width:620px) {
  .athlete-profile-backdrop {
    padding:8px;
  }

  .athlete-profile-modal {
    max-height:96dvh;
    border-radius:16px;
  }

  .athlete-profile-modal .modal-top {
    padding:18px 18px 15px;
  }

  .athlete-profile-modal .modal-body {
    padding:16px;
  }
}



/* v196 unplanned-run approval and intuitive reports */
.calendar-context-menu .approve-run {
  color:#076b2d;
  background:#e5f7ec;
  font-weight:950;
}
.calendar .session-chip.coach-approved-run,
.calendar .session-chip.coach-approved-run.completed,
.calendar .session-chip.unplanned-run.coach-approved-run.completed {
  background:#058731 !important;
  color:#c9f2cc !important;
  border-color:#39ff14 !important;
  box-shadow:0 4px 12px rgba(5,135,49,.22) !important;
}
.calendar .session-chip.coach-approved-run .session-chip-type,
.calendar .session-chip.coach-approved-run .session-chip-name {
  color:#c9f2cc !important;
}
.report-data-point,
.report-data-bar {
  cursor:pointer;
}
.report-data-point {
  fill:#fff;
  stroke:#00aeea;
  stroke-width:2.5;
  transition:r .15s,fill .15s,stroke-width .15s;
}
.report-data-point:hover,
.report-data-point:focus {
  r:6;
  fill:#00bfff;
  stroke-width:3;
  outline:none;
}
.report-data-bar:hover,
.report-data-bar:focus {
  background:rgba(0,179,255,.07);
  border-radius:8px;
  outline:none;
}
.report-graph-tooltip {
  position:fixed;
  z-index:5000;
  max-width:min(320px,calc(100vw - 16px));
  padding:9px 11px;
  border:1px solid rgba(0,191,255,.35);
  border-radius:10px;
  background:#071925;
  color:#f3fbff;
  box-shadow:0 10px 28px rgba(0,0,0,.28);
  font-size:11px;
  font-weight:800;
  line-height:1.35;
  pointer-events:none;
}
.athlete-benchmark-workspace,
.coach-benchmark-workspace {
  display:grid;
  grid-template-columns:minmax(300px,.85fr) minmax(0,1.6fr);
  gap:22px;
  align-items:start;
  margin-top:22px;
}
.coach-benchmark-tables {
  min-width:0;
}
.coach-benchmark-tables > .card:first-child,
.athlete-report-benchmarks {
  margin-top:0 !important;
}
#athlete-report-benchmark-graph,
#coach-report-benchmark-graph {
  scroll-margin-top:18px;
  position:sticky;
  top:12px;
}
.interactive-report-chart small {
  display:block;
  margin-top:8px;
}
@media (max-width:900px) {
  .athlete-benchmark-workspace,
  .coach-benchmark-workspace {
    grid-template-columns:1fr;
  }
  #athlete-report-benchmark-graph,
  #coach-report-benchmark-graph {
    position:static;
  }
}



/* v197 definitive report renderer fix */
.athlete-mileage-graph-grid > #athlete-report-weekly-mileage,
.athlete-mileage-graph-grid > #athlete-report-monthly-mileage {
  min-width:0;
}

.athlete-benchmark-workspace,
.coach-benchmark-workspace {
  display:grid !important;
  grid-template-columns:minmax(310px,.9fr) minmax(0,1.65fr) !important;
  gap:22px !important;
  align-items:start !important;
  margin-top:22px !important;
}

.athlete-report-benchmarks,
.coach-benchmark-tables {
  min-width:0;
}

#athlete-report-benchmark-graph,
#coach-report-benchmark-graph {
  scroll-margin-top:18px;
}

.report-data-point,
.report-data-bar {
  touch-action:manipulation;
}

.report-graph-tooltip {
  white-space:normal;
}

@media (max-width:900px) {
  .athlete-benchmark-workspace,
  .coach-benchmark-workspace {
    grid-template-columns:1fr !important;
  }
}



/* v198 weekly intensity shading, FIT guides and icon-only back-to-top */
.calendar-week-days.week-intensity-shaded {
  padding:2px;
  border-radius:13px;
  background:linear-gradient(90deg,var(--week-shade-start),var(--week-shade-end));
  box-shadow:inset 0 0 0 1px rgba(7,25,37,.08);
}

.calendar-week-days.week-intensity-shaded .day {
  background:rgba(255,255,255,.60);
  backdrop-filter:saturate(.92);
}

.calendar-week-days.week-intensity-shaded .day.muted {
  background:rgba(255,255,255,.72);
}

.week-actions-menu {
  min-width:248px;
  max-height:min(520px,75vh);
  overflow-y:auto;
}

.week-theme-menu-label {
  padding:7px 10px 5px;
  color:var(--muted);
  font-size:9px;
  font-weight:950;
  letter-spacing:.09em;
  text-transform:uppercase;
}

.week-actions-menu button.week-theme-btn {
  display:grid;
  grid-template-columns:42px minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  width:100%;
  min-height:42px;
  padding:8px 10px;
  border:1px solid transparent;
  border-radius:9px;
  background:transparent;
  color:var(--navy);
  font-size:11px;
  font-weight:850;
  line-height:1.2;
  text-align:left;
  cursor:pointer;
}

.week-actions-menu button.week-theme-btn i {
  width:42px;
  height:13px;
  border:1px solid rgba(7,25,37,.12);
  border-radius:999px;
  background:linear-gradient(90deg,var(--theme-start),var(--theme-end));
}

.week-actions-menu button.week-theme-btn:hover,
.week-actions-menu button.week-theme-btn:focus,
.week-actions-menu button.week-theme-btn.active {
  border-color:rgba(0,179,255,.25);
  background:rgba(0,179,255,.07);
  outline:none;
}

.week-actions-menu button.week-theme-btn.active::after {
  content:'✓';
  color:#087b3d;
  font-weight:950;
}

.week-actions-divider {
  height:1px;
  margin:5px 7px;
  background:var(--line);
}

.fit-export-guide-links {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:7px;
  margin:10px 0 13px;
}

.fit-export-guide-links > span {
  width:100%;
  color:var(--muted);
  font-size:10px;
  font-weight:850;
}

.fit-export-guide-links a {
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:7px 10px;
  border:1px solid rgba(0,179,255,.30);
  border-radius:9px;
  background:#fff;
  color:var(--blue);
  font-size:10px;
  font-weight:900;
  text-decoration:none;
}

.fit-export-guide-links a:hover,
.fit-export-guide-links a:focus {
  border-color:var(--blue);
  background:#eaf8ff;
  outline:none;
}

.back-to-top-btn {
  width:36px;
  min-width:36px;
  height:36px;
  min-height:36px;
  padding:0 !important;
  justify-content:center;
  gap:0;
}

@media (max-width:700px) {
  .week-actions-menu {
    min-width:min(248px,calc(100vw - 24px));
  }

  .fit-export-guide-links a {
    flex:1 1 132px;
    justify-content:center;
  }
}



/* v199 revised weekly shading and clickable PDF guides */
.calendar-week-days.week-intensity-shaded {
  position:relative;
  isolation:isolate;
}

.calendar-week-days.week-intensity-shaded .day {
  position:relative;
  z-index:2;
}

.week-reload-label {
  position:absolute;
  inset:50% 10px auto;
  z-index:1;
  transform:translateY(-50%);
  color:rgba(42,72,42,.32);
  font-family:Oswald,sans-serif;
  font-size:clamp(22px,3.2vw,42px);
  font-weight:950;
  letter-spacing:.08em;
  line-height:1;
  text-align:center;
  text-transform:uppercase;
  pointer-events:none;
  user-select:none;
}

.week-theme-help {
  display:block;
  padding:4px 10px 7px;
  color:var(--muted);
  font-size:9px;
  line-height:1.35;
}

.fit-export-guide-links > small {
  width:100%;
  color:var(--muted);
  font-size:9px;
  line-height:1.35;
}

@media (max-width:700px) {
  .week-reload-label {
    font-size:clamp(16px,6vw,26px);
    letter-spacing:.04em;
  }
}



/* v200 clear athlete-created sport chips */
.calendar .session-chip.sport-detail-chip .session-chip-type {
  line-height:1.05;
}

.calendar .session-chip.sport-detail-chip .session-chip-name {
  margin-top:3px;
  font-size:9px;
  line-height:1.05;
  opacity:.96;
}

/* v204 fullscreen calendar interaction layers */
body.athlete-calendar-fullscreen-active .modal-backdrop,
body.coach-calendar-fullscreen-active .modal-backdrop {
  z-index:3300;
}

body.athlete-calendar-fullscreen-active .athlete-quick-complete-popover,
body.coach-calendar-fullscreen-active .calendar-context-menu {
  z-index:3350;
}

body.athlete-calendar-fullscreen-active .share-backdrop,
body.coach-calendar-fullscreen-active .share-backdrop {
  z-index:3400;
}

body.athlete-calendar-fullscreen-active .toast,
body.coach-calendar-fullscreen-active .toast {
  z-index:3500;
}

/* v210 Session Runner pace guidance fields */
.workout-builder .pace-guidance-builder{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(280px,1.2fr);align-items:end;gap:14px;margin-top:14px;padding:14px;border:1px solid rgba(0,179,255,.18);border-radius:16px;background:rgba(0,179,255,.045)}
.workout-builder .pace-guidance-builder>div:first-child{display:grid;gap:4px;align-self:center}
.workout-builder .pace-guidance-builder>div:first-child>label{font-weight:800;color:var(--ink)}
.workout-builder .pace-guidance-builder>div:first-child>small{color:var(--muted);line-height:1.35}
.workout-builder .pace-guidance-fields{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end;gap:10px}
.workout-builder .pace-guidance-input{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.workout-builder .pace-guidance-input input{min-width:0;border:0;border-radius:0;box-shadow:none;background:transparent}
.workout-builder .pace-guidance-input input:focus{outline:0;box-shadow:inset 0 0 0 2px rgba(0,179,255,.35)}
.workout-builder .pace-guidance-input span{padding:0 10px;color:var(--muted);font-size:.78rem;font-weight:800}
.workout-builder .pace-guidance-divider{padding-bottom:13px;color:var(--muted);font-size:.78rem;font-weight:800;text-transform:uppercase}
@media (max-width:720px){.workout-builder .pace-guidance-builder{grid-template-columns:1fr}.workout-builder .pace-guidance-fields{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}}
@media (max-width:430px){.workout-builder .pace-guidance-fields{grid-template-columns:1fr}.workout-builder .pace-guidance-divider{padding:0;text-align:center}}

/* v211 RPE-chart pacing source controls */
.workout-builder .pace-guidance-controls{display:grid;gap:10px;min-width:0}
.workout-builder .pace-guidance-controls>.field{display:grid;gap:6px}
.workout-builder .pace-guidance-controls select{width:100%}
.workout-builder .pace-guidance-rpe-note{display:block;color:var(--muted);font-size:.75rem;line-height:1.4}
.workout-builder .pace-guidance-rpe-note.hidden,
.workout-builder .pace-guidance-fields.hidden{display:none}

/* v218 compact coach session viewer/editor actions */
.coach-session-workout-modal .modal-actions,
.coach-session-editor-modal .modal-actions {
  display:flex;
  flex-flow:row wrap;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
}
.coach-session-workout-modal .modal-actions > button,
.coach-session-editor-modal .modal-actions > button {
  flex:0 1 auto;
  width:auto;
  min-width:0;
  max-width:100%;
  min-height:36px;
  margin-left:0;
  padding:8px 12px;
  border-radius:9px;
  font-size:12px;
  line-height:1.2;
  white-space:normal;
}
.coach-session-workout-modal .plan-modal-actions > button {
  flex:0 1 auto;
}
@media (max-width:700px) {
  .coach-session-workout-modal .modal-actions,
  .coach-session-editor-modal .modal-actions {
    flex-direction:row;
  }
  .coach-session-workout-modal .modal-actions > button,
  .coach-session-editor-modal .modal-actions > button {
    flex:1 1 calc(50% - 4px);
    width:auto;
  }
}
@media (max-width:380px) {
  .coach-session-workout-modal .modal-actions > button,
  .coach-session-editor-modal .modal-actions > button {
    flex-basis:100%;
  }
}

/* v224 stepped-run builder and RPE requirement ranges */
.coach-session-editor-modal .rpe-requirement-control,
.template-editor-modal .rpe-requirement-control {
  display:grid;
  gap:8px;
  margin-top:14px;
  padding:14px;
  border:1px solid rgba(0,179,255,.2);
  border-radius:16px;
  background:rgba(0,179,255,.045);
}
.coach-session-editor-modal .rpe-requirement-control > label,
.template-editor-modal .rpe-requirement-control > label {
  font-weight:850;
  color:var(--ink);
}
.coach-session-editor-modal .rpe-requirement-control > small,
.template-editor-modal .rpe-requirement-control > small {
  color:var(--muted);
  line-height:1.4;
}
.coach-session-editor-modal .rpe-requirement-fields,
.template-editor-modal .rpe-requirement-fields,
.workout-builder .set-rpe-range-fields {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  gap:10px;
  align-items:end;
}
.coach-session-editor-modal .rpe-requirement-divider,
.template-editor-modal .rpe-requirement-divider,
.workout-builder .set-rpe-range-fields > span {
  padding-bottom:13px;
  color:var(--muted);
  font-size:.76rem;
  font-weight:850;
  text-transform:uppercase;
}
.workout-builder .stepped-run-builder {
  display:grid;
  gap:16px;
}
.workout-builder .stepped-run-head {
  display:grid;
  grid-template-columns:minmax(180px,.55fr) minmax(260px,1.45fr);
  gap:14px;
  align-items:stretch;
}
.workout-builder .stepped-run-total {
  display:grid;
  align-content:center;
  gap:3px;
  padding:14px 16px;
  border:1px solid rgba(0,179,255,.25);
  border-radius:16px;
  background:linear-gradient(135deg,rgba(0,179,255,.1),rgba(0,95,255,.035));
}
.workout-builder .stepped-run-total small,
.workout-builder .stepped-run-total span {
  color:var(--muted);
}
.workout-builder .stepped-run-total strong {
  color:var(--ink);
  font-size:1.15rem;
}
.workout-builder .stepped-run-steps {
  display:grid;
  gap:12px;
}
.workout-builder .stepped-run-step {
  display:grid;
  gap:12px;
  padding:15px;
  border:1px solid rgba(0,179,255,.18);
  border-left:4px solid var(--blue);
  border-radius:16px;
  background:#fff;
  box-shadow:0 8px 20px rgba(15,35,55,.05);
}
.workout-builder .stepped-run-step-head > div {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
.workout-builder .stepped-run-step-head span {
  color:var(--blue-dark);
  font-size:.78rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.workout-builder .stepped-run-step-head strong {
  color:var(--ink);
}
.workout-builder .stepped-run-step-fields {
  display:grid;
  grid-template-columns:minmax(240px,.9fr) minmax(300px,1.1fr);
  gap:14px;
  align-items:start;
}
.workout-builder .stepped-run-step .rpe-requirement-control {
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
}
.workout-builder .stepped-run-pace-note {
  color:var(--muted);
  line-height:1.4;
}
@media (max-width:780px) {
  .workout-builder .stepped-run-head,
  .workout-builder .stepped-run-step-fields {
    grid-template-columns:1fr;
  }
}
@media (max-width:480px) {
  .coach-session-editor-modal .rpe-requirement-fields,
  .template-editor-modal .rpe-requirement-fields,
  .workout-builder .set-rpe-range-fields {
    grid-template-columns:1fr;
  }
  .coach-session-editor-modal .rpe-requirement-divider,
  .template-editor-modal .rpe-requirement-divider,
  .workout-builder .set-rpe-range-fields > span {
    padding:0;
    text-align:center;
  }
  .workout-builder .stepped-run-step {
    padding:12px;
  }
}


/* v233 subtle matte finish for standard calendar session chips */
.calendar .session-chip:not(.long-progression):not(.long-multipaced) {
  position:relative;
  isolation:isolate;
  filter:drop-shadow(0 2px 3px rgba(6,26,38,.16));
}
.calendar .session-chip:not(.long-progression):not(.long-multipaced)::after {
  content:"";
  position:absolute;
  z-index:0;
  top:1px;
  right:1px;
  left:1px;
  height:42%;
  border-radius:inherit;
  background:linear-gradient(180deg,rgba(255,255,255,.34) 0%,rgba(255,255,255,.14) 58%,rgba(255,255,255,0) 100%);
  opacity:.72;
  pointer-events:none;
}
.calendar .session-chip:not(.long-progression):not(.long-multipaced) .session-chip-type,
.calendar .session-chip:not(.long-progression):not(.long-multipaced) .session-chip-name {
  position:relative;
  z-index:1;
}

/* v226 long progression calendar chip gradient */
.calendar .session-chip.long-progression:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock),
.calendar .session-chip.long-multipaced:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) {
  background: linear-gradient(135deg, #aef5ff 0%, #13b5d1 42%, #0047AB 100%) !important;
  color: #fff !important;
  border-color: #13b5d1 !important;
  text-shadow: 0 1px 2px rgba(0, 18, 56, .72) !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.3), 0 3px 10px rgba(0,71,171,.24) !important;
}
.calendar .session-chip.long-progression:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) .session-chip-type,
.calendar .session-chip.long-progression:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) .session-chip-name,
.calendar .session-chip.long-multipaced:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) .session-chip-type,
.calendar .session-chip.long-multipaced:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) .session-chip-name {
  color: #fff !important;
}

/* v234 visual interval workout creator */
.workout-builder .visual-workout-creator {
  margin:0 0 14px;
  padding:16px;
  border:1px solid rgba(0,179,255,.28);
  border-radius:18px;
  background:linear-gradient(145deg,#f7fcfe 0%,#edf7fb 58%,#f8faf9 100%);
  box-shadow:0 14px 30px rgba(17,42,58,.08);
}
.workout-builder .visual-workout-heading {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  margin-bottom:14px;
}
.workout-builder .visual-workout-heading h3 { margin:3px 0 4px; color:var(--navy); font-size:20px; }
.workout-builder .visual-workout-heading p { max-width:650px; margin:0; color:var(--muted); font-size:12px; line-height:1.5; }
.workout-builder .visual-workout-hint {
  flex:0 0 auto;
  padding:7px 10px;
  border:1px solid rgba(0,179,255,.25);
  border-radius:999px;
  background:rgba(255,255,255,.82);
  color:var(--blue);
  font-size:10px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.workout-builder .visual-workout-layout {
  display:grid;
  grid-template-columns:minmax(210px,250px) minmax(0,1fr);
  gap:14px;
  align-items:start;
}
.workout-builder .visual-workout-palette {
  max-height:560px;
  overflow:auto;
  padding:12px;
  border:1px solid rgba(23,42,58,.1);
  border-radius:15px;
  background:rgba(255,255,255,.76);
}
.workout-builder .visual-workout-palette-group + .visual-workout-palette-group { margin-top:15px; padding-top:14px; border-top:1px solid var(--line); }
.workout-builder .visual-workout-warmup-group > summary {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
  padding:2px 0;
  color:var(--navy);
  cursor:pointer;
  list-style:none;
  font-size:10px;
  font-weight:900;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.workout-builder .visual-workout-warmup-group > summary::-webkit-details-marker { display:none; }
.workout-builder .visual-workout-warmup-group > summary::after { content:'▾'; color:var(--blue); transition:transform .16s ease; }
.workout-builder .visual-workout-warmup-group[open] > summary::after { transform:rotate(180deg); }
.workout-builder .visual-workout-warmup-group > summary small {
  grid-column:1 / -1;
  overflow:hidden;
  color:var(--muted);
  font-size:9px;
  font-weight:700;
  letter-spacing:0;
  text-overflow:ellipsis;
  text-transform:none;
  white-space:nowrap;
}
.workout-builder .visual-workout-warmup-group > .visual-workout-palette-list { margin-top:9px; }
.workout-builder .visual-workout-palette-label {
  display:block;
  margin:0 0 8px;
  color:var(--navy);
  font-size:10px;
  font-weight:900;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.workout-builder .visual-workout-palette-list { display:grid; gap:8px; }
.workout-builder .visual-palette-block {
  display:grid;
  width:100%;
  gap:2px;
  padding:10px 11px;
  border:1px solid rgba(23,42,58,.12);
  border-radius:12px;
  background:#fff;
  color:var(--ink);
  text-align:left;
  cursor:grab;
  box-shadow:0 5px 12px rgba(17,42,58,.06);
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;
}
.workout-builder .visual-palette-block:hover,
.workout-builder .visual-palette-block:focus { transform:translateY(-1px); border-color:rgba(0,179,255,.6); box-shadow:0 8px 18px rgba(0,179,255,.12); }
.workout-builder .visual-palette-block:active { cursor:grabbing; }
.workout-builder .visual-palette-block.active { border-color:var(--blue); box-shadow:inset 0 0 0 1px var(--blue),0 7px 16px rgba(0,179,255,.12); }
.workout-builder .visual-palette-block small { color:var(--blue); font-size:9px; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.workout-builder .visual-palette-block strong { color:var(--navy); font-size:12px; line-height:1.25; }
.workout-builder .visual-palette-block span { color:var(--muted); font-size:10px; line-height:1.3; }
.workout-builder .visual-palette-format { border-left:4px solid #405a70; }
.workout-builder .visual-palette-pyramid { border-left:4px solid #7a54a3; background:linear-gradient(135deg,#fff,#faf7fd); }
.workout-builder .visual-palette-set { border-left:4px solid var(--blue); }
.workout-builder .visual-palette-step { border-left:4px solid #22a6c7; }
.workout-builder .visual-palette-cooldown { border-left:4px solid var(--navy); }
.workout-builder .visual-workout-stage { min-width:0; }
.workout-builder .visual-workout-canvas {
  position:relative;
  display:grid;
  gap:10px;
  min-height:230px;
  padding:14px;
  border:1px dashed rgba(0,179,255,.46);
  border-radius:16px;
  background:rgba(255,255,255,.9);
}
.workout-builder .visual-workout-canvas::before {
  content:'';
  position:absolute;
  top:24px;
  bottom:24px;
  left:28px;
  width:2px;
  border-radius:3px;
  background:linear-gradient(var(--blue),rgba(0,179,255,.14),var(--navy));
  pointer-events:none;
}
.workout-builder .visual-workout-block,
.workout-builder .visual-workout-set,
.workout-builder .visual-workout-recovery {
  position:relative;
  z-index:1;
  margin-left:0;
  border-radius:14px;
  box-shadow:0 8px 18px rgba(17,42,58,.08);
}
.workout-builder .visual-workout-block {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 12px 12px 42px;
  border:1px solid rgba(0,179,255,.22);
  background:linear-gradient(135deg,#f4fdff,#fff);
  cursor:grab;
}
.workout-builder .visual-workout-block::before,
.workout-builder .visual-workout-set::before,
.workout-builder .visual-workout-recovery::before {
  content:'';
  position:absolute;
  left:21px;
  top:19px;
  width:12px;
  height:12px;
  border:3px solid #fff;
  border-radius:50%;
  background:var(--blue);
  box-shadow:0 0 0 2px rgba(0,179,255,.35);
}
.workout-builder .visual-workout-cooldown { border-color:rgba(23,42,58,.22); background:linear-gradient(135deg,#f4f7f9,#fff); }
.workout-builder .visual-workout-cooldown::before { background:var(--navy); box-shadow:0 0 0 2px rgba(23,42,58,.22); }
.workout-builder .visual-workout-block-copy { display:grid; min-width:0; gap:2px; }
.workout-builder .visual-workout-block-copy small,
.workout-builder .visual-workout-set header small,
.workout-builder .visual-workout-recovery small { color:var(--blue); font-size:9px; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }
.workout-builder .visual-workout-block-copy strong,
.workout-builder .visual-workout-set header strong,
.workout-builder .visual-workout-recovery strong { color:var(--navy); font-size:13px; }
.workout-builder .visual-workout-block-copy span { color:var(--muted); font-size:10px; }
.workout-builder .visual-workout-set {
  padding:12px 12px 12px 42px;
  border:1px solid rgba(0,179,255,.32);
  background:linear-gradient(145deg,#f0fbff,#fff 60%);
  cursor:grab;
}
.workout-builder .visual-workout-set > header { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:9px; }
.workout-builder .visual-workout-set > header > div:first-child { display:grid; gap:2px; }
.workout-builder .visual-workout-step-list { display:grid; gap:7px; }
.workout-builder .visual-workout-step {
  position:relative;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  padding:10px;
  border:1px solid rgba(23,42,58,.12);
  border-radius:11px;
  background:#fff;
  cursor:grab;
  box-shadow:0 4px 10px rgba(17,42,58,.05);
}
.workout-builder .visual-workout-drag-handle { color:#86a5af; font-size:15px; font-weight:900; letter-spacing:-4px; }
.workout-builder .visual-workout-step-copy { display:grid; min-width:0; gap:2px; }
.workout-builder .visual-workout-step-copy small { color:var(--blue); font-size:9px; font-weight:900; text-transform:uppercase; }
.workout-builder .visual-workout-step-copy strong { overflow:hidden; color:var(--navy); font-size:12px; line-height:1.3; text-overflow:ellipsis; white-space:nowrap; }
.workout-builder .visual-workout-step-copy span { color:var(--muted); font-size:9px; line-height:1.25; }
.workout-builder .visual-workout-block-actions { display:flex; align-items:center; gap:4px; flex:0 0 auto; }
.workout-builder .visual-workout-block-actions button,
.workout-builder .visual-workout-recovery button {
  min-width:30px;
  min-height:28px;
  padding:4px 7px;
  border:1px solid rgba(23,42,58,.12);
  border-radius:8px;
  background:#fff;
  color:var(--navy);
  font-size:10px;
  font-weight:800;
  cursor:pointer;
}
.workout-builder .visual-workout-block-actions button:hover,
.workout-builder .visual-workout-block-actions button:focus,
.workout-builder .visual-workout-recovery button:hover,
.workout-builder .visual-workout-recovery button:focus { border-color:var(--blue); color:var(--blue); }
.workout-builder .visual-workout-block-actions button.danger { color:#b73131; }
.workout-builder .visual-workout-add-step,
.workout-builder .visual-workout-canvas-end {
  width:100%;
  padding:8px 10px;
  border:1px dashed rgba(0,179,255,.42);
  border-radius:10px;
  background:rgba(0,179,255,.035);
  color:var(--blue);
  font-size:10px;
  font-weight:900;
  cursor:pointer;
}
.workout-builder .visual-workout-canvas-end { position:relative; z-index:1; margin-left:0; padding:11px 14px 11px 42px; text-align:left; }
.workout-builder .visual-workout-recovery {
  display:flex;
  align-items:center;
  gap:10px;
  padding:9px 10px 9px 42px;
  border:1px solid rgba(23,42,58,.11);
  background:#f4f7f8;
}
.workout-builder .visual-workout-recovery::before { top:13px; background:#758d96; box-shadow:0 0 0 2px rgba(117,141,150,.2); }
.workout-builder .visual-workout-recovery strong { margin-right:auto; font-size:11px; }
.workout-builder .visual-workout-trash {
  display:grid;
  place-items:center;
  gap:2px;
  min-height:58px;
  margin-top:9px;
  border:1px dashed rgba(183,49,49,.3);
  border-radius:13px;
  background:rgba(183,49,49,.035);
  color:#a34343;
  text-align:center;
  opacity:.68;
  transition:opacity .16s ease,background .16s ease,border-color .16s ease,transform .16s ease;
}
.workout-builder .visual-workout-trash strong { font-size:11px; }
.workout-builder .visual-workout-trash span { font-size:9px; }
.workout-builder .visual-workout-creator.is-dragging .visual-workout-trash { opacity:1; transform:translateY(-1px); }
.workout-builder [data-visual-drop-kind].is-drag-over { border-color:var(--blue) !important; background:rgba(0,179,255,.1) !important; box-shadow:0 0 0 3px rgba(0,179,255,.12) !important; }
.workout-builder .visual-workout-trash.is-drag-over { border-color:#b73131 !important; background:rgba(183,49,49,.12) !important; box-shadow:0 0 0 3px rgba(183,49,49,.1) !important; }
.workout-builder .is-being-dragged { opacity:.45; }
.workout-builder .visual-workout-details {
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
  overflow:hidden;
}
.workout-builder .visual-workout-details > summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  cursor:pointer;
  list-style:none;
  color:var(--navy);
  font-size:12px;
  font-weight:900;
}
.workout-builder .visual-workout-details > summary::-webkit-details-marker { display:none; }
.workout-builder .visual-workout-details > summary::after { content:'▾'; margin-left:auto; color:var(--blue); transition:transform .16s ease; }
.workout-builder .visual-workout-details[open] > summary::after { transform:rotate(180deg); }
.workout-builder .visual-workout-details > summary small { color:var(--muted); font-size:10px; font-weight:600; }
.workout-builder .visual-workout-details-body { padding:14px; border-top:1px solid var(--line); }
.workout-builder .visual-detail-metric { display:contents; }
.workout-builder .visual-detail-metric.hidden { display:none; }
@media (max-width:820px) {
  .workout-builder .visual-workout-layout { grid-template-columns:1fr; }
  .workout-builder .visual-workout-palette { max-height:none; overflow:visible; }
  .workout-builder .visual-workout-palette-list { display:flex; overflow-x:auto; padding:2px 2px 7px; scroll-snap-type:x proximity; }
  .workout-builder .visual-palette-block { flex:0 0 180px; scroll-snap-align:start; }
  .workout-builder .visual-workout-palette-list.compact .visual-palette-block { flex-basis:160px; }
}
@media (max-width:520px) {
  .workout-builder .visual-workout-creator { padding:12px; border-radius:15px; }
  .workout-builder .visual-workout-heading { display:grid; gap:8px; }
  .workout-builder .visual-workout-hint { justify-self:start; }
  .workout-builder .visual-workout-canvas { padding:10px; }
  .workout-builder .visual-workout-canvas::before { left:21px; }
  .workout-builder .visual-workout-block,
  .workout-builder .visual-workout-set,
  .workout-builder .visual-workout-recovery,
  .workout-builder .visual-workout-canvas-end { padding-left:34px; }
  .workout-builder .visual-workout-block::before,
  .workout-builder .visual-workout-set::before,
  .workout-builder .visual-workout-recovery::before { left:14px; }
  .workout-builder .visual-workout-step { grid-template-columns:auto minmax(0,1fr); }
  .workout-builder .visual-workout-step .visual-workout-block-actions { grid-column:1 / -1; justify-content:flex-end; }
  .workout-builder .visual-workout-block { align-items:flex-start; }
  .workout-builder .visual-workout-block > .visual-workout-block-actions { flex-wrap:wrap; justify-content:flex-end; }
  .workout-builder .visual-workout-details > summary { display:grid; grid-template-columns:1fr auto; }
  .workout-builder .visual-workout-details > summary small { grid-column:1 / -1; }
}

/* v237 birthday reminders and fullscreen calendar paint stability */
.coach-birthday-reminders {
  margin-top:22px;
  overflow:hidden;
}
.coach-birthday-reminder-list {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:9px;
  padding:0 14px 16px;
}
.coach-birthday-reminder {
  display:flex;
  min-width:0;
  align-items:center;
  gap:10px;
  padding:10px 11px;
  border:1px solid rgba(0,179,255,.22);
  border-radius:12px;
  background:#f7fcff;
  color:var(--navy);
  text-align:left;
  cursor:pointer;
}
.coach-birthday-reminder:hover,
.coach-birthday-reminder:focus {
  border-color:var(--cyan);
  background:#edfaff;
  outline:none;
}
.coach-birthday-reminder.is-today {
  border-color:rgba(255,92,0,.48);
  background:#fff5ef;
  box-shadow:0 4px 12px rgba(255,92,0,.10);
}
.coach-birthday-date {
  flex:0 0 auto;
  min-width:48px;
  padding:7px 8px;
  border-radius:9px;
  background:var(--navy);
  color:#fff;
  font-family:Oswald,sans-serif;
  font-size:15px;
  font-weight:800;
  text-align:center;
  text-transform:uppercase;
}
.coach-birthday-reminder.is-today .coach-birthday-date {
  background:#d94d17;
}
.coach-birthday-copy {
  display:grid;
  min-width:0;
  gap:2px;
}
.coach-birthday-copy strong,
.coach-birthday-copy small {
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.coach-birthday-copy strong {
  font-size:12px;
  font-weight:950;
}
.coach-birthday-copy small {
  color:var(--muted);
  font-size:10px;
  font-weight:800;
}
.coach-birthday-empty {
  display:grid;
  gap:3px;
  padding:0 14px 16px;
  color:var(--muted);
  font-size:11px;
}
.coach-birthday-empty strong {
  color:var(--navy);
}

@media (orientation:landscape) {
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar {
    -webkit-overflow-scrolling:auto;
    scroll-behavior:auto;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-week-days.week-intensity-shaded .day,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-week-days.week-intensity-shaded .day {
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .session-chip-marquee,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .session-chip-marquee {
    animation:none !important;
    transform:none !important;
    will-change:auto !important;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .session-chip-type,
  .athlete-calendar-card.athlete-mobile-fullscreen .session-chip-name,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .session-chip-type,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .session-chip-name {
    container-type:normal;
  }
}

/* v238 compact planned-session actions in athlete and coach workout windows */
.modal .plan-modal-actions {
  display:flex;
  flex-flow:row wrap;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
}
.modal .plan-modal-actions > button {
  flex:0 1 auto;
  width:auto;
  min-width:0;
  max-width:100%;
  min-height:34px;
  margin-left:0;
  padding:7px 11px;
  border-radius:9px;
  font-size:11px;
  line-height:1.2;
  white-space:normal;
}
@media (max-width:700px) {
  .modal .plan-modal-actions { flex-direction:row; }
  .modal .plan-modal-actions > button { flex:0 1 auto; width:auto; }
}


/* v240 Google Play privacy and account controls */
.login-policy-links{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  margin-top:14px;
  color:var(--muted);
  font-size:12px;
  font-weight:700;
}
.login-policy-links a{
  color:var(--muted);
  text-underline-offset:3px;
}
.login-policy-links a:hover,
.login-policy-links a:focus{color:var(--blue)}
.top-privacy-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:36px;
  padding:0 12px;
  border:1px solid rgba(255,255,255,.24);
  border-radius:10px;
  color:inherit;
  text-decoration:none;
  font-size:12px;
  font-weight:800;
  white-space:nowrap;
}
.top-settings-dropdown .top-privacy-link{
  width:100%;
  justify-content:flex-start;
  min-height:auto;
  padding:10px 12px;
  border:0;
  border-radius:8px;
}
.top-privacy-link:hover,
.top-privacy-link:focus{background:rgba(0,179,255,.13)}
@media(max-width:720px){
  .athlete-feature-actions .top-privacy-link{padding:0 9px;font-size:10px}
}


/* v245 mobile visual builder and portrait calendar chip refinements */
@media (min-width:821px) {
  .workout-builder .visual-workout-warmup-group > summary,
  .workout-builder .visual-workout-option-group > summary {
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:4px 8px;
    padding:2px 0;
    color:var(--navy);
    cursor:pointer;
    list-style:none;
    font-size:10px;
    font-weight:900;
    letter-spacing:.09em;
    text-transform:uppercase;
    pointer-events:auto;
  }
  .workout-builder .visual-workout-option-group > summary::-webkit-details-marker { display:none; }
  .workout-builder .visual-workout-option-group > summary::after {
    content:'▾';
    grid-column:2;
    grid-row:1 / span 2;
    color:var(--blue);
    transition:transform .16s ease;
  }
  .workout-builder .visual-workout-option-group[open] > summary::after { transform:rotate(180deg); }
  .workout-builder .visual-workout-option-group > summary small {
    display:block;
    grid-column:1;
    overflow:hidden;
    color:var(--muted);
    font-size:9px;
    font-weight:700;
    letter-spacing:0;
    text-overflow:ellipsis;
    text-transform:none;
    white-space:nowrap;
  }
  .workout-builder .visual-workout-option-group > .visual-workout-palette-list { margin-top:9px; }
}
@media (max-width:820px) {
  .workout-builder,
  .workout-builder .structured-builder,
  .workout-builder .visual-workout-creator,
  .workout-builder .visual-workout-layout,
  .workout-builder .visual-workout-palette,
  .workout-builder .visual-workout-stage,
  .workout-builder .visual-workout-canvas,
  .workout-builder .visual-workout-details,
  .workout-builder .visual-workout-details-body,
  .workout-builder .rep-set-builders,
  .workout-builder .rep-set-builder,
  .workout-builder .rep-line-builder {
    width:100%;
    max-width:100%;
    min-width:0;
    box-sizing:border-box;
  }
  .workout-builder { overflow:hidden; }
  .workout-builder .visual-workout-creator { padding:10px; }
  .workout-builder .visual-workout-heading { margin-bottom:10px; }
  .workout-builder .visual-workout-heading h3 { font-size:18px; }
  .workout-builder .visual-workout-heading p { font-size:11px; line-height:1.4; }
  .workout-builder .visual-workout-hint { display:none; }
  .workout-builder .visual-workout-layout { display:block; }
  .workout-builder .visual-workout-palette {
    max-height:none;
    overflow:visible;
    padding:0;
    border:0;
    background:transparent;
  }
  .workout-builder .visual-workout-palette > [data-visual-palette] { display:grid; gap:7px; }
  .workout-builder .visual-workout-palette-group,
  .workout-builder .visual-workout-palette-group + .visual-workout-palette-group {
    margin:0;
    padding:0;
    border:1px solid rgba(23,42,58,.12);
    border-radius:11px;
    background:rgba(255,255,255,.9);
    overflow:hidden;
  }
  .workout-builder .visual-workout-warmup-group > summary,
  .workout-builder .visual-workout-option-group > summary {
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:5px 8px;
    padding:9px 10px;
    color:var(--navy);
    cursor:pointer;
    list-style:none;
    font-size:10px;
    font-weight:900;
    letter-spacing:.07em;
    text-transform:uppercase;
  }
  .workout-builder .visual-workout-warmup-group > summary::-webkit-details-marker,
  .workout-builder .visual-workout-option-group > summary::-webkit-details-marker { display:none; }
  .workout-builder .visual-workout-warmup-group > summary::after,
  .workout-builder .visual-workout-option-group > summary::after {
    content:'▾';
    grid-column:2;
    grid-row:1 / span 2;
    color:var(--blue);
    font-size:12px;
    transition:transform .16s ease;
  }
  .workout-builder .visual-workout-warmup-group[open] > summary::after,
  .workout-builder .visual-workout-option-group[open] > summary::after { transform:rotate(180deg); }
  .workout-builder .visual-workout-warmup-group > summary small,
  .workout-builder .visual-workout-option-group > summary small {
    grid-column:1;
    overflow:hidden;
    color:var(--muted);
    font-size:9px;
    font-weight:700;
    letter-spacing:0;
    text-overflow:ellipsis;
    text-transform:none;
    white-space:nowrap;
  }
  .workout-builder .visual-workout-palette-list,
  .workout-builder .visual-workout-palette-list.compact {
    display:grid;
    grid-template-columns:1fr;
    gap:6px;
    overflow:visible;
    margin:0;
    padding:0 8px 8px;
    scroll-snap-type:none;
  }
  .workout-builder .visual-workout-palette-list .visual-palette-block,
  .workout-builder .visual-workout-palette-list.compact .visual-palette-block {
    width:100%;
    max-width:100%;
    min-width:0;
    flex:none;
    padding:8px 9px;
    border-radius:9px;
    box-shadow:0 3px 8px rgba(17,42,58,.05);
    scroll-snap-align:none;
  }
  .workout-builder .visual-palette-block strong { font-size:11px; }
  .workout-builder .visual-palette-block span { font-size:9px; }
  .workout-builder .visual-workout-stage { margin-top:9px; }
  .workout-builder .visual-workout-canvas { min-height:0; padding:8px; gap:7px; }
  .workout-builder .visual-workout-canvas::before { left:18px; }
  .workout-builder .visual-workout-block,
  .workout-builder .visual-workout-set,
  .workout-builder .visual-workout-recovery,
  .workout-builder .visual-workout-canvas-end { padding-left:29px; }
  .workout-builder .visual-workout-block::before,
  .workout-builder .visual-workout-set::before,
  .workout-builder .visual-workout-recovery::before { left:11px; }
  .workout-builder .visual-workout-block,
  .workout-builder .visual-workout-set { border-radius:11px; }
  .workout-builder .visual-workout-block-copy strong,
  .workout-builder .visual-workout-set header strong { font-size:12px; }
  .workout-builder .visual-workout-step {
    grid-template-columns:minmax(0,1fr);
    gap:5px;
    padding:8px;
  }
  .workout-builder .visual-workout-drag-handle { display:none; }
  .workout-builder .visual-workout-step-copy strong {
    overflow:visible;
    text-overflow:clip;
    white-space:normal;
  }
  .workout-builder .visual-workout-step .visual-workout-block-actions,
  .workout-builder .visual-workout-block > .visual-workout-block-actions {
    grid-column:auto;
    justify-content:flex-start;
    flex-wrap:wrap;
  }
  .workout-builder .visual-workout-block-actions button,
  .workout-builder .visual-workout-recovery button { min-width:27px; min-height:27px; padding:3px 6px; }
  .workout-builder .visual-workout-trash { min-height:48px; }
  .workout-builder .visual-workout-details-body { padding:9px; }
  .workout-builder input,
  .workout-builder select,
  .workout-builder textarea { max-width:100%; min-width:0; box-sizing:border-box; }
}
@media (max-width:620px) and (orientation:portrait) {
  .calendar .session-chip {
    min-height:29px;
    max-height:none;
    padding:4px 3px;
    line-height:1.08;
  }
  .calendar .session-chip-type,
  .calendar .session-chip-name {
    line-height:1.08;
    text-overflow:ellipsis;
  }
  .calendar .session-chip-type { font-size:7.6px; }
  .calendar .session-chip-name { margin-top:2px; font-size:7.2px; }
  .calendar .session-chip-marquee {
    display:block;
    width:auto;
    max-width:100%;
    padding-right:0;
    overflow:hidden;
    text-overflow:ellipsis;
    transform:none !important;
    animation:none !important;
    will-change:auto;
  }
}

/* v249 Coach dashboard Multi-timer icon and per-step Session Runner completion controls */
.dashboard-action-img--multi-timer-icon {
  filter:none;
}
.workout-builder .metric-control-label-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  min-width:0;
}
.workout-builder .metric-control-label-row > label {
  min-width:0;
}
.workout-builder .runner-step-mode-toggle {
  display:inline-flex;
  flex:0 0 auto;
  gap:2px;
  padding:2px;
  border:1px solid rgba(0,179,255,.28);
  border-radius:7px;
  background:rgba(0,179,255,.07);
}
.workout-builder .runner-step-mode-option {
  min-width:26px;
  min-height:22px;
  padding:2px 5px;
  border:0;
  border-radius:5px;
  background:transparent;
  color:var(--muted);
  font-size:9px;
  font-weight:900;
  line-height:1;
  letter-spacing:.04em;
  cursor:pointer;
}
.workout-builder .runner-step-mode-option.active {
  background:var(--blue);
  color:#fff;
  box-shadow:0 2px 5px rgba(0,179,255,.24);
}
.workout-builder .runner-step-mode-option:focus-visible {
  outline:2px solid rgba(0,179,255,.45);
  outline-offset:1px;
}
.athlete-profile-view {
  display:grid;
  gap:16px;
}
.athlete-profile-view .profile-avatar-preview {
  margin-inline:auto;
}
.athlete-profile-view dl {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin:0;
}
.athlete-profile-view dl > div {
  min-width:0;
  padding:11px 12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:rgba(255,255,255,.035);
}
.athlete-profile-view dt {
  margin-bottom:4px;
  color:var(--muted);
  font-size:11px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.athlete-profile-view dd {
  margin:0;
  overflow-wrap:anywhere;
  color:var(--text);
  font-weight:700;
}
.athlete-profile-pin-note {
  margin:0;
  color:var(--muted);
  font-size:12px;
}
.calendar,
.calendar * {
  -webkit-user-select:none;
  user-select:none;
}
.calendar .session-chip {
  -webkit-touch-callout:none;
}
@media (max-width:700px) {
  .athlete-profile-view dl {
    grid-template-columns:1fr;
  }
}
.planned-step-runner-mode {
  margin:7px 0 11px;
  color:var(--muted);
  font-size:12px;
}
.planned-step-runner-mode strong {
  color:var(--text);
}

/* v250 coach dashboard consistency ranking */
.coach-consistency-list { display:grid; gap:10px; }
.coach-consistency-row { width:100%; display:grid; grid-template-columns:34px minmax(0,1fr) auto; align-items:center; gap:10px; padding:12px; border:1px solid rgba(0,179,255,.18); border-radius:14px; background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(238,249,255,.94)); color:inherit; text-align:left; cursor:pointer; box-shadow:0 7px 18px rgba(16,37,54,.07); }
.coach-consistency-row:hover,.coach-consistency-row:focus-visible { border-color:rgba(0,179,255,.58); transform:translateY(-1px); box-shadow:0 10px 22px rgba(16,37,54,.11); }
.coach-consistency-rank { display:grid; place-items:center; width:32px; height:32px; border-radius:50%; background:#102536; color:#fff; font-family:"Oswald",sans-serif; font-size:16px; }
.coach-consistency-main { min-width:0; display:grid; gap:4px; }
.coach-consistency-main strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.coach-consistency-main small { color:var(--muted); font-size:11px; }
.coach-consistency-progress { display:block; height:6px; overflow:hidden; border-radius:999px; background:rgba(16,37,54,.11); }
.coach-consistency-progress i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#00b3ff,#126bff); }
.coach-consistency-rate { color:#0875ad; font-family:"Oswald",sans-serif; font-size:19px; font-weight:600; }
@media (max-width:520px){.coach-consistency-row{grid-template-columns:30px minmax(0,1fr) auto;padding:10px;}.coach-consistency-rank{width:28px;height:28px;font-size:14px}.coach-consistency-rate{font-size:17px}}

/* v254 athlete calendar library, birthday messages and RPE pace previews */
.library-source.calendar{
  background:rgba(36,171,171,.14);
  color:#146d73;
}
.coach-birthday-reminder-list{
  grid-template-columns:repeat(auto-fit,minmax(290px,1fr));
}
.coach-birthday-reminder-item{
  display:grid;
  min-width:0;
  border:1px solid rgba(0,179,255,.20);
  border-radius:14px;
  background:#f7fcff;
  overflow:hidden;
}
.coach-birthday-reminder-item.is-today{
  border-color:rgba(86,190,70,.46);
  background:#f0ffe9;
  box-shadow:0 5px 16px rgba(86,190,70,.13);
}
.coach-birthday-reminder-item .coach-birthday-reminder{
  width:100%;
  border:0;
  border-radius:0;
  background:transparent;
}
.coach-birthday-message{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  padding:10px 11px;
  border-top:1px solid rgba(0,179,255,.14);
  background:rgba(183,255,126,.24);
}
.coach-birthday-message p{
  margin:0;
  color:#173827;
  font-size:12px;
  line-height:1.45;
}
.coach-birthday-message .table-btn{
  white-space:nowrap;
}
.workout-builder .rpe-pace-guidance-preview{
  display:grid;
  gap:6px;
  padding:10px 11px;
  border:1px solid rgba(0,179,255,.22);
  border-radius:12px;
  background:#f6fcff;
}
.workout-builder .rpe-pace-guidance-preview.hidden{
  display:none;
}
.workout-builder .rpe-pace-guidance-preview>small{
  color:var(--muted);
  font-size:.72rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.workout-builder .rpe-pace-preview-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  color:var(--ink);
  font-size:.78rem;
}
.workout-builder .rpe-pace-preview-row span{
  color:#087a9c;
  font-weight:800;
  text-align:right;
}
.workout-builder .rpe-pace-preview-row.is-empty span,
.workout-builder .rpe-pace-preview-empty{
  color:#a04c29;
}
@media (max-width:620px){
  .coach-birthday-message{grid-template-columns:1fr}
  .coach-birthday-message .table-btn{justify-self:start}
  .workout-builder .rpe-pace-preview-row{display:grid;gap:2px}
  .workout-builder .rpe-pace-preview-row span{text-align:left}
}


/* v255 compact coach birthday reminders and birthday-only athlete profile message */
.coach-birthday-reminder-list {
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
}
.athlete-profile-birthday-message {
  display:grid;
  gap:6px;
  width:100%;
  margin:2px 0 14px;
  padding:13px 15px;
  border:1px solid rgba(86,190,70,.42);
  border-radius:14px;
  background:linear-gradient(135deg,rgba(183,255,126,.34),rgba(0,179,255,.10));
  color:#173827;
}
.athlete-profile-birthday-message span {
  color:#0875ad;
  font-size:.72rem;
  font-weight:900;
  letter-spacing:.07em;
  text-transform:uppercase;
}
.athlete-profile-birthday-message p {
  margin:0;
  font-size:.92rem;
  font-weight:700;
  line-height:1.5;
}

/* v257 session-RPE load, acute/chronic load and fatigue response reports */
.load-progress-metrics {
  grid-template-columns: repeat(4,minmax(0,1fr));
}
.progress-fatigue-status {
  display:grid;
  gap:4px;
  margin:0 0 16px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-left:4px solid var(--cyan);
  border-radius:12px;
  background:#f7fafb;
}
.progress-fatigue-status strong { color:var(--navy); font-size:14px; }
.progress-fatigue-status span { color:var(--muted); font-size:11px; line-height:1.45; }
.fatigue-snapshot-grid,
.fatigue-evidence-grid {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:9px;
}
.fatigue-snapshot-grid > div,
.fatigue-evidence-grid > div {
  min-width:0;
  padding:13px;
  border:1px solid #dce6eb;
  border-radius:12px;
  background:#f8fafb;
}
.fatigue-snapshot-grid small,
.fatigue-snapshot-grid span,
.fatigue-evidence-grid small,
.fatigue-evidence-grid span {
  display:block;
  color:var(--muted);
  font-size:10px;
  line-height:1.35;
}
.fatigue-snapshot-grid strong,
.fatigue-evidence-grid strong {
  display:block;
  margin:4px 0 2px;
  color:var(--navy);
  font-size:18px;
  line-height:1.15;
}
.fatigue-status-card,
.progress-fatigue-status,
.fatigue-table-status {
  --fatigue-accent:var(--cyan);
}
.fatigue-status-card { border-left:4px solid var(--fatigue-accent)!important; }
.fatigue-none,.fatigue-baseline { --fatigue-accent:#8b9aa5; }
.fatigue-stable { --fatigue-accent:#20a66a; }
.fatigue-freshening { --fatigue-accent:#14a4d8; }
.fatigue-absorbing,.fatigue-building { --fatigue-accent:#e2a329; }
.fatigue-watch { --fatigue-accent:#e47a23; }
.fatigue-high,.fatigue-attention { --fatigue-accent:#cf3c4f; }
.progress-fatigue-status { border-left-color:var(--fatigue-accent); }
.fatigue-table-status {
  display:inline-block;
  padding:4px 8px;
  border-left:3px solid var(--fatigue-accent);
  border-radius:7px;
  background:#f5f8f9;
  color:var(--navy);
  font-size:11px;
  font-weight:900;
  white-space:nowrap;
}
.load-balance-chart {
  padding:12px 14px 10px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
}
.load-balance-chart svg { display:block; width:100%; height:145px; overflow:visible; }
.load-balance-chart svg line { stroke:#dbe4e8; stroke-width:1; }
.load-balance-chart svg polyline { fill:none; stroke-width:3; stroke-linecap:round; stroke-linejoin:round; }
.load-balance-chart .acute-line { stroke:var(--blue); }
.load-balance-chart .chronic-line { stroke:var(--cyan); }
.load-chart-legend {
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:4px;
  color:var(--navy);
  font-size:11px;
  font-weight:800;
}
.load-chart-legend i {
  display:inline-block;
  width:18px;
  height:3px;
  margin-right:5px;
  vertical-align:middle;
  border-radius:99px;
}
.acute-line-key { background:var(--blue); }
.chronic-line-key { background:var(--cyan); }
.load-balance-chart > small,
.load-model-note {
  display:block;
  margin-top:8px;
  color:var(--muted);
  font-size:10px;
  line-height:1.45;
}
.training-load-chart h3 {
  margin:0 0 8px;
  color:var(--navy);
  font-size:14px;
}
.training-load-summary {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.training-load-summary span {
  padding:8px 10px;
  border-radius:999px;
  background:#edf6f8;
  color:var(--muted);
  font-size:11px;
}
.training-load-summary strong { color:var(--navy); }
.training-load-combo-card { min-width:0; }
.fatigue-athlete-report-table table { min-width:1180px; }

@media (max-width:900px) {
  .fatigue-snapshot-grid,
  .fatigue-evidence-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .load-progress-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:520px) {
  .fatigue-snapshot-grid,
  .fatigue-evidence-grid { grid-template-columns:1fr; }
  .load-balance-chart svg { height:125px; }
  .training-load-summary { display:grid; }
  .training-load-summary span { border-radius:10px; }
}

/* v259 smart pace charts for all completed workouts */
.session-runner-intelligence-card.completed-workout-chart-card {
  margin: 0 0 18px;
  border-color: #b9dce4;
  background: linear-gradient(145deg, rgba(0,179,255,.06), rgba(255,255,255,.96));
}
.completed-workout-chart-card > .session-runner-intelligence-head span {
  max-width: 58%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pace-chart-context {
  display: block;
  color: #86a0b0;
  font-size: .66rem;
  font-weight: 700;
  line-height: 1.35;
}
.pace-chart-scroll {
  display: block;
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(95,225,255,.55) rgba(255,255,255,.05);
}
.pace-chart-scroll svg {
  min-width: 0;
  min-height: 0;
  transform-origin: left top;
}
.session-runner-pace-chart .pace-point-time {
  fill: #dff7ff;
  font-size: 9px;
  font-weight: 800;
}
@media (max-width: 620px) {
  .completed-workout-chart-card > .session-runner-intelligence-head span {
    max-width: 100%;
    white-space: normal;
  }
  .pace-chart-context {
    font-size: .62rem;
  }
}

/* v260 timed-rep distance labels and interactive chart sizing */
.pace-chart-title-row {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.pace-chart-title-row > div:first-child {
  display:grid;
  gap:2px;
}
.pace-chart-size-controls {
  display:flex !important;
  align-items:center !important;
  justify-content:flex-end !important;
  flex-direction:row !important;
  gap:5px !important;
  flex:0 0 auto;
}
.pace-chart-size-controls .secondary-btn {
  min-width:32px;
  min-height:30px;
  padding:4px 8px;
  border-radius:8px;
  font-size:12px;
  line-height:1;
}
.pace-chart-size-controls [data-pace-chart-size="fit"] {
  min-width:42px;
}
.pace-chart-size-controls output {
  min-width:42px;
  color:#dff7ff;
  font-size:10px;
  font-weight:900;
  text-align:center;
}
.pace-chart-scroll {
  touch-action:pan-x pan-y;
}
@media (max-width:620px) {
  .pace-chart-title-row {
    align-items:stretch !important;
  }
  .pace-chart-size-controls {
    width:100%;
    justify-content:flex-start !important;
  }
}

/* v262 quality-session calendar chips by starting RPE */
.calendar .session-chip.quality-rpe-5-6 {
  --quality-rpe-chip:#0086ab;
  --quality-rpe-shadow:#0086ab;
}
.calendar .session-chip.quality-rpe-6-7 {
  --quality-rpe-chip:#0067ab;
  --quality-rpe-shadow:#ede907;
}
.calendar .session-chip.quality-rpe-7-8 {
  --quality-rpe-chip:#0047AB;
  --quality-rpe-shadow:#ed9d07;
}
.calendar .session-chip.quality-rpe-8-10 {
  --quality-rpe-chip:#090173;
  --quality-rpe-shadow:#ed2a07;
}
.calendar .session-chip.quality-rpe-variable-5-9 {
  --quality-rpe-chip:#0047AB;
  --quality-rpe-shadow:#0086ab;
}
.calendar .session-chip.quality-rpe-band:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) {
  background:var(--quality-rpe-chip) !important;
  color:#fff !important;
  border-color:var(--quality-rpe-chip) !important;
  text-shadow:0 1px 1px rgba(0,18,56,.34) !important;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.24),
    0 2px 0 var(--quality-rpe-shadow),
    0 5px 9px var(--quality-rpe-shadow) !important;
  filter:none !important;
}
.calendar .session-chip.quality-rpe-band:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) .session-chip-type,
.calendar .session-chip.quality-rpe-band:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) .session-chip-name {
  color:#fff !important;
}


/* v264 desktop-only session-chip icons using the supplied image assets */
.calendar .session-chip-icon {
  display:none;
}
@media (min-width:781px) {
  .calendar .session-chip.has-session-chip-icon {
    position:relative;
    width:100%;
    min-width:0;
    min-height:48px;
    padding:8px 8px 8px 39px;
    border-radius:9px;
  }
  .calendar .session-chip.has-session-chip-icon .session-chip-icon {
    display:block;
    position:absolute;
    z-index:3;
    top:8px;
    left:9px;
    width:23px;
    height:23px;
    max-width:23px;
    max-height:23px;
    object-fit:contain;
    pointer-events:none;
    filter:brightness(0);
  }
  .calendar .session-chip.has-session-chip-icon .session-chip-type,
  .calendar .session-chip.has-session-chip-icon .session-chip-name {
    position:relative;
    z-index:2;
  }
  .calendar .session-chip.has-session-chip-icon .session-chip-type {
    font-size:10.8px;
    line-height:1.16;
  }
  .calendar .session-chip.has-session-chip-icon .session-chip-name {
    margin-top:3px;
    font-size:9.8px;
    line-height:1.14;
  }
  .calendar .session-chip.has-session-chip-icon.completed .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.incomplete .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.unplanned-run .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.coach-approved-run .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.race .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.quality .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.interval .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.hill .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.tempo .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.threshold .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.steady .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.fartlek .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.long-progression .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.long-multipaced .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.multipaced .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.quality-rpe-band .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.sport-walk .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.sport-hike .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.sport-cycle .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.sport-gym .session-chip-icon {
    filter:brightness(0) invert(1);
  }
  .calendar .session-chip.has-session-chip-icon.sport-swim:not(.completed):not(.incomplete):not(.unplanned-run) .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.easy:not(.completed):not(.incomplete):not(.unplanned-run) .session-chip-icon,
  .calendar .session-chip.has-session-chip-icon.long:not(.completed):not(.incomplete):not(.unplanned-run):not(.long-progression):not(.long-multipaced) .session-chip-icon {
    filter:brightness(0);
  }
}

/* v265 Brick Session builder and multi-sport calendar chips; v266 uses RacePace blue for Run blocks */
.brick-session-builder {
  display:grid;
  gap:16px;
  padding:16px;
  border:1px solid rgba(0,179,255,.25);
  border-radius:18px;
  background:linear-gradient(145deg,#f7fcfe 0%,#edf7fb 58%,#f8faf9 100%);
  box-shadow:0 12px 26px rgba(17,42,58,.08);
}
.brick-builder-intro { margin:0; }
.brick-session-toolbar {
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:12px;
  padding:12px;
  border:1px solid rgba(0,71,171,.14);
  border-radius:14px;
  background:rgba(255,255,255,.86);
}
.brick-session-toolbar .field { margin:0; min-width:190px; }
.brick-common-step {
  padding:14px;
  border:1px solid rgba(0,134,171,.2);
  border-radius:14px;
  background:#fff;
}
.brick-session-blocks { display:grid; gap:12px; }
.brick-workout-block {
  padding:15px;
  border:1px solid rgba(0,71,171,.22);
  border-left:5px solid var(--blue,#0047AB);
  border-radius:15px;
  background:#fff;
  box-shadow:0 8px 18px rgba(17,42,58,.07);
}
.brick-workout-block-head,
.brick-block-selectors,
.brick-interval-fields,
.brick-transition-fields {
  display:grid;
  gap:12px;
}
.brick-workout-block-head {
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
  margin-bottom:13px;
}
.brick-workout-block-head span {
  display:block;
  color:var(--muted);
  font-size:11px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.brick-workout-block-head strong {
  display:block;
  margin-top:3px;
  color:var(--navy);
  font-size:18px;
}
.brick-block-actions { display:flex; gap:6px; }
.brick-block-actions button { min-width:36px; }
.brick-block-selectors { grid-template-columns:1fr 1.4fr; }
.brick-block-prescription { display:grid; gap:12px; margin-top:12px; }
.brick-interval-fields { grid-template-columns:1fr 1fr; }
.brick-transition-block {
  display:grid;
  grid-template-columns:28px minmax(0,1fr);
  align-items:center;
  gap:8px;
  padding:4px 10px;
}
.brick-transition-arrow {
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  border-radius:50%;
  background:#102536;
  color:#fff;
  font-size:17px;
  font-weight:900;
}
.brick-transition-fields {
  grid-template-columns:minmax(0,1.4fr) minmax(160px,.8fr);
  align-items:end;
  padding:12px;
  border:1px dashed rgba(0,71,171,.24);
  border-radius:13px;
  background:rgba(255,255,255,.74);
}
.brick-transition-fields .field { margin:0; }
.brick-completion-note { grid-column:1/-1; margin:0; }
.brick-fit-note { grid-template-columns:1fr; }
.workout-type-pill.type-brick {
  background:linear-gradient(135deg,#0047AB 0 50%,#24abab 50% 100%);
  color:#fff;
  border-color:rgba(255,255,255,.35);
}
.calendar .session-chip.brick-session:not(.completed):not(.incomplete):not(.unplanned-run) {
  background:linear-gradient(rgba(3,20,31,.16),rgba(3,20,31,.16)),var(--brick-gradient) !important;
  color:#fff !important;
  border-color:rgba(3,20,31,.34) !important;
  text-shadow:0 1px 2px rgba(0,0,0,.62) !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25),0 3px 10px rgba(6,26,38,.23) !important;
  filter:none !important;
}
.calendar .session-chip.brick-session:not(.completed):not(.incomplete) .session-chip-type,
.calendar .session-chip.brick-session:not(.completed):not(.incomplete) .session-chip-name { color:#fff !important; }
.calendar .session-chip-icon-strip { pointer-events:none; }
@media (min-width:781px) {
  .calendar .session-chip.has-session-chip-icon .session-chip-icon-strip {
    position:absolute;
    z-index:3;
    top:8px;
    left:9px;
    display:flex;
    align-items:center;
    gap:3px;
    pointer-events:none;
  }
  .calendar .session-chip.has-session-chip-icon .session-chip-icon-strip .session-chip-icon {
    position:static;
    display:block;
    width:23px;
    height:23px;
    max-width:23px;
    max-height:23px;
  }
  .calendar .session-chip.brick-session.has-session-chip-icon {
    min-height:58px;
    padding:31px 8px 8px;
  }
  .calendar .session-chip.brick-session .session-chip-icon-strip {
    top:6px;
    left:8px;
    gap:5px;
  }
  .calendar .session-chip.brick-session .session-chip-icon-strip .session-chip-icon {
    width:19px;
    height:19px;
    max-width:19px;
    max-height:19px;
    filter:brightness(0) invert(1) drop-shadow(0 1px 1px rgba(0,0,0,.45)) !important;
  }
  .calendar .session-chip.brick-session .session-chip-type { font-size:10.8px; }
  .calendar .session-chip.brick-session .session-chip-name { font-size:9.4px; }
}
@media (max-width:780px) {
  .brick-session-builder { padding:12px; border-radius:14px; }
  .brick-session-toolbar { align-items:stretch; flex-direction:column; }
  .brick-session-toolbar .field { min-width:0; width:100%; }
  .brick-block-selectors,
  .brick-interval-fields,
  .brick-transition-fields { grid-template-columns:1fr; }
  .brick-workout-block-head { grid-template-columns:1fr; }
  .brick-block-actions { justify-content:flex-start; }
  .brick-transition-block { grid-template-columns:24px minmax(0,1fr); padding:2px 0; }
  .brick-transition-arrow { width:24px; height:24px; font-size:14px; }
}

/* v267: lock the page behind every modal and add full Brick block workout builders */
html.racepace-overlay-open,
body.racepace-overlay-open {
  overflow:hidden !important;
  overscroll-behavior:none;
}
body.racepace-overlay-open {
  position:fixed;
  top:calc(0px - var(--racepace-overlay-scroll-y, 0px));
  right:0;
  left:0;
  width:100%;
}
.modal-backdrop,
.share-backdrop {
  overflow:hidden;
  overscroll-behavior:none;
}
.modal,
.share-dialog {
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  touch-action:pan-y;
}
.brick-block-workout-builder {
  display:grid;
  gap:13px;
  margin-top:14px;
  padding:14px;
  border:1px solid rgba(0,71,171,.2);
  border-radius:14px;
  background:linear-gradient(145deg,#f7fbff 0%,#fff 72%);
}
.brick-block-builder-heading {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding-bottom:11px;
  border-bottom:1px solid rgba(0,71,171,.13);
}
.brick-block-builder-heading small,
.brick-block-builder-heading strong,
.brick-block-builder-heading span {
  display:block;
}
.brick-block-builder-heading small {
  color:#0047AB;
  font-size:10px;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.brick-block-builder-heading strong {
  margin-top:3px;
  color:var(--navy);
  font-size:16px;
}
.brick-block-builder-heading span {
  margin-top:4px;
  color:var(--muted);
  font-size:11px;
  line-height:1.45;
}
.brick-sets-toolbar {
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:12px;
  padding:12px;
  border:1px solid rgba(0,134,171,.16);
  border-radius:12px;
  background:#fff;
}
.brick-sets-toolbar .sets-decision,
.brick-sets-toolbar .count-control {
  margin:0;
}
.brick-sets-toggle {
  margin-top:6px;
}
.brick-sets-option {
  border:0;
  padding:8px 14px;
  background:#e8eef2;
  color:#526776;
  font:inherit;
  font-size:11px;
  font-weight:900;
  cursor:pointer;
}
.brick-sets-option:first-child { border-radius:9px 0 0 9px; }
.brick-sets-option:last-child { border-radius:0 9px 9px 0; }
.brick-sets-option.active {
  background:#0047AB;
  color:#fff;
  box-shadow:0 4px 10px rgba(0,71,171,.22);
}
.brick-rep-set-builders {
  display:grid;
  gap:12px;
}
.brick-structured-workout-builder .rep-set-builder {
  margin:0;
  border-color:rgba(0,71,171,.18);
  background:#fff;
}
.brick-set-rest {
  padding:12px;
  border:1px dashed rgba(0,71,171,.24);
  border-radius:12px;
  background:#f8fbfd;
}
.brick-estimated-distance {
  margin:0;
  padding-top:2px;
}
.brick-block-note {
  margin-top:13px;
}
@media (max-width:780px) {
  .brick-block-workout-builder { padding:12px; }
  .brick-sets-toolbar { align-items:stretch; flex-direction:column; }
  .brick-sets-toolbar .count-control { width:100%; }
}

/* v268 workout chip key and modal overlay lock */
body.overlay-open {
  position:fixed;
  overflow:hidden;
  width:100%;
  left:0;
  right:0;
}
body.overlay-open .calendar .week-actions,
body.overlay-open .calendar .day-actions,
body.overlay-open .calendar .week-actions-menu {
  visibility:hidden !important;
  pointer-events:none !important;
}
.modal-backdrop,
.share-backdrop {
  overscroll-behavior:contain;
}
.workout-chip-key-backdrop {
  z-index:3600;
}
.workout-chip-key-modal {
  width:min(760px,100%);
}
.workout-chip-key-body {
  display:grid;
  gap:18px;
}
.workout-chip-key-section {
  padding:18px;
  border:1px solid rgba(0,179,255,.16);
  border-radius:18px;
  background:#fff;
}
.workout-chip-key-section h3 {
  margin:0 0 8px;
  color:var(--navy);
  font-size:22px;
}
.workout-chip-key-section > p {
  margin:0 0 14px;
  color:var(--muted);
}
.chip-key-row,
.week-key-row {
  display:grid;
  grid-template-columns:190px minmax(0,1fr);
  gap:16px;
  align-items:center;
  padding:12px 0;
  border-top:1px solid rgba(159,180,193,.35);
}
.chip-key-row:first-of-type,
.week-key-row:first-of-type {
  border-top:0;
  padding-top:0;
}
.chip-key-swatch {
  min-height:58px;
  display:flex;
  align-items:center;
  justify-content:center;
}
.chip-key-chip {
  width:160px;
  min-height:54px;
  padding:10px 14px;
  border:1px solid transparent;
  border-radius:14px;
  font-size:14px;
  font-weight:950;
  text-align:center;
}
.chip-key-multi {
  gap:10px;
  justify-content:flex-start;
}
.chip-key-multi span {
  width:34px;
  height:34px;
  border-radius:50%;
  box-shadow:0 4px 10px rgba(6,26,38,.14);
}
.week-key-swatch {
  width:160px;
  height:54px;
  border-radius:14px;
  box-shadow:0 4px 12px rgba(6,26,38,.12);
}
.chip-key-copy strong {
  display:block;
  margin-bottom:4px;
  color:var(--ink);
  font-size:15px;
}
.chip-key-copy p {
  margin:0;
  color:var(--muted);
  line-height:1.45;
}
.workout-chip-key-rules {
  margin:0;
  padding-left:20px;
  color:var(--ink);
  line-height:1.5;
}
.workout-chip-key-rules li + li {
  margin-top:8px;
}
.workout-chip-key-actions {
  justify-content:flex-end;
}
@media (max-width:700px) {
  .chip-key-row,
  .week-key-row {
    grid-template-columns:1fr;
    gap:10px;
  }
  .chip-key-swatch,
  .week-key-swatch {
    justify-self:flex-start;
  }
  .chip-key-chip,
  .week-key-swatch {
    width:100%;
    max-width:220px;
  }
}

/* v269 calendar chips match the flat PDF key: coloured bottom strip, no drop shadow */
.calendar .session-chip:not(.rest) {
  border-width:1px 1px 5px !important;
  border-style:solid !important;
  border-bottom-color:#24d6ee !important;
  box-shadow:none !important;
}
.calendar .session-chip.quality:not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.interval:not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.hill:not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.tempo:not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.threshold:not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.steady:not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.fartlek:not(.completed):not(.incomplete):not(.unplanned-run) {
  border-bottom-color:#0086ab !important;
}
.calendar .session-chip.quality-rpe-band:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) {
  border-bottom-color:var(--quality-rpe-shadow) !important;
  box-shadow:none !important;
}
.calendar .session-chip.long-progression:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock),
.calendar .session-chip.long-multipaced:not(.completed):not(.incomplete):not(.unplanned-run):not(.sport-colour-lock) {
  border-bottom-color:#0b5fa5 !important;
  box-shadow:none !important;
}
.calendar .session-chip.completed:not(.unplanned-run),
.calendar .session-chip.coach-approved-run,
.calendar .session-chip.unplanned-run.coach-approved-run.completed {
  border-bottom-color:#39ff14 !important;
  box-shadow:none !important;
}
.calendar .session-chip.incomplete {
  border-bottom-color:#470707 !important;
  box-shadow:none !important;
}
.calendar .session-chip.race:not(.completed):not(.incomplete) {
  border-bottom-color:#b935ff !important;
  box-shadow:none !important;
}
.calendar .session-chip.unplanned-run:not(.coach-approved-run) {
  border-bottom-color:#ff8a45 !important;
  box-shadow:none !important;
}
.calendar .session-chip.sport-colour-lock.sport-walk:not(.unplanned-run) { border-bottom-color:#7d3fa1 !important; }
.calendar .session-chip.sport-colour-lock.sport-cycle:not(.unplanned-run) { border-bottom-color:#147474 !important; }
.calendar .session-chip.sport-colour-lock.sport-swim:not(.unplanned-run) { border-bottom-color:#008b9f !important; }
.calendar .session-chip.sport-colour-lock.sport-hike:not(.unplanned-run) { border-bottom-color:#40400d !important; }
.calendar .session-chip.sport-colour-lock.sport-gym:not(.unplanned-run) { border-bottom-color:#143c3c !important; }
.calendar .session-chip.brick-session:not(.completed):not(.incomplete):not(.unplanned-run) {
  border-bottom-color:#0047AB !important;
  box-shadow:none !important;
}
/* v269 keep the top and side edges flat against each chip colour */
.calendar .session-chip.easy:not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.long:not(.completed):not(.incomplete):not(.unplanned-run):not(.long-progression):not(.long-multipaced) {
  border-color:#aef5ff !important;
  border-bottom-color:#24d6ee !important;
}
.calendar .session-chip.quality:not(.quality-rpe-band):not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.interval:not(.quality-rpe-band):not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.hill:not(.quality-rpe-band):not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.tempo:not(.quality-rpe-band):not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.threshold:not(.quality-rpe-band):not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.steady:not(.quality-rpe-band):not(.completed):not(.incomplete):not(.unplanned-run),
.calendar .session-chip.fartlek:not(.quality-rpe-band):not(.completed):not(.incomplete):not(.unplanned-run) {
  border-color:#0047AB !important;
  border-bottom-color:#0086ab !important;
}
.calendar .session-chip.completed:not(.unplanned-run),
.calendar .session-chip.coach-approved-run,
.calendar .session-chip.unplanned-run.coach-approved-run.completed {
  border-color:#058731 !important;
  border-bottom-color:#39ff14 !important;
}
.calendar .session-chip.incomplete {
  border-color:#a30209 !important;
  border-bottom-color:#470707 !important;
}
.calendar .session-chip.race:not(.completed):not(.incomplete) {
  border-color:#8A00C4 !important;
  border-bottom-color:#b935ff !important;
}
.calendar .session-chip.unplanned-run:not(.coach-approved-run) {
  border-color:#FF5C00 !important;
  border-bottom-color:#ff8a45 !important;
}
.calendar .session-chip.sport-colour-lock:not(.unplanned-run):not(.completed) {
  border-color:var(--sport-color) !important;
}
.calendar .race-chip {
  border-width:1px 1px 5px !important;
  border-style:solid !important;
  border-color:#8A00C4 !important;
  border-bottom-color:#b935ff !important;
  box-shadow:none !important;
}

/* v270 exact chip-key colours, coach access and three-line calendar chips */
.chip-key-chip {
  box-shadow:none !important;
  box-sizing:border-box;
}
.chip-key-brick {
  background:linear-gradient(to bottom,
    #0047AB 0%, #0047AB 33.333%,
    #24abab 33.333%, #24abab 66.666%,
    #07f2f2 66.666%, #07f2f2 100%);
  color:#fff;
  border:1px solid #0047AB;
  border-width:1px 1px 5px;
}
.chip-key-sports {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  width:180px;
}
.chip-key-sports span {
  display:grid;
  place-items:center;
  min-height:34px;
  padding:5px 7px;
  border:1px solid var(--sample);
  border-width:1px 1px 5px;
  border-bottom-color:var(--strip);
  border-radius:9px;
  background:var(--sample);
  color:#fff;
  font-size:10px;
  font-weight:950;
  box-shadow:none;
}
.week-key-swatch {
  box-shadow:none !important;
}
.session-description-field small {
  display:block;
  margin-top:5px;
  color:var(--muted);
  line-height:1.35;
}
.session-modal-description {
  max-width:560px;
  margin:9px 0 0;
  color:#e1f1f8;
  font-size:13px;
  line-height:1.4;
}
.calendar .session-chip {
  box-sizing:border-box;
  min-height:63px;
}
.calendar .session-chip-description {
  display:block;
  max-width:100%;
  min-width:0;
  margin-top:2px;
  overflow:hidden;
  color:inherit;
  font-size:8.6px;
  font-weight:750;
  line-height:1.1;
  opacity:.94;
  text-overflow:clip;
  white-space:nowrap;
  container-type:inline-size;
}
.calendar .session-chip-description .session-chip-marquee {
  animation:session-chip-name-scroll 16s ease-in-out 1s infinite;
}
@media (min-width:781px) {
  .calendar .session-chip.has-session-chip-icon {
    min-height:68px;
  }
  .calendar .session-chip.has-session-chip-icon .session-chip-type,
  .calendar .session-chip.has-session-chip-icon .session-chip-name,
  .calendar .session-chip.has-session-chip-icon .session-chip-description {
    position:relative;
    z-index:2;
  }
  .calendar .session-chip.has-session-chip-icon .session-chip-description {
    margin-top:2px;
    font-size:8.8px;
    line-height:1.12;
  }
}
@media (max-width:620px) and (orientation:portrait) {
  .calendar .session-chip {
    min-height:48px;
    padding:4px 3px;
  }
  .calendar .session-chip-type,
  .calendar .session-chip-name,
  .calendar .session-chip-description {
    line-height:1.05;
    text-overflow:ellipsis;
  }
  .calendar .session-chip-description {
    margin-top:2px;
    font-size:6.7px;
  }
  .calendar .session-chip-description .session-chip-marquee {
    display:block;
    width:auto;
    max-width:100%;
    padding-right:0;
    overflow:hidden;
    text-overflow:ellipsis;
    transform:none !important;
    animation:none !important;
    will-change:auto;
  }
}

/* v271 daily training email settings */
.daily-training-email-backdrop { z-index:3650; }
.daily-training-email-modal { width:min(760px,100%); }
.daily-email-athlete-picker { margin-bottom:16px; }
.daily-email-loading {
  padding:24px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#fff;
  color:var(--muted);
  text-align:center;
  font-weight:800;
}
.daily-email-setup-warning,
.daily-email-last-status {
  display:grid;
  gap:4px;
  margin-bottom:16px;
  padding:14px 16px;
  border-radius:15px;
}
.daily-email-setup-warning {
  border:1px solid #e4aa3c;
  background:#fff7df;
  color:#624414;
}
.daily-email-last-status {
  border:1px solid rgba(0,179,255,.22);
  background:rgba(0,179,255,.06);
  color:var(--navy);
}
.daily-email-setup-warning strong,
.daily-email-last-status strong { font-size:14px; }
.daily-email-setup-warning span,
.daily-email-last-status span { font-size:12px; line-height:1.45; }
.daily-email-master-toggle,
.daily-email-options label {
  display:flex;
  align-items:flex-start;
  gap:12px;
  cursor:pointer;
}
.daily-email-master-toggle {
  margin-bottom:16px;
  padding:16px;
  border:1px solid rgba(0,71,171,.18);
  border-radius:16px;
  background:#f7fbff;
}
.daily-email-master-toggle input,
.daily-email-options input {
  width:20px;
  height:20px;
  margin:2px 0 0;
  flex:0 0 auto;
  accent-color:#0047AB;
}
.daily-email-master-toggle span,
.daily-email-options span { display:grid; gap:3px; }
.daily-email-master-toggle strong,
.daily-email-options strong { color:var(--ink); font-size:14px; }
.daily-email-master-toggle small,
.daily-email-options small { color:var(--muted); line-height:1.4; }
.daily-email-options {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin-top:14px;
}
.daily-email-options label {
  padding:14px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
}
.daily-email-actions { justify-content:flex-end; }
@media (max-width:700px) {
  .daily-email-options { grid-template-columns:1fr; }
  .daily-email-actions { display:grid; grid-template-columns:1fr; }
  .daily-email-actions > * { width:100%; }
}

/* v272 desktop workout creator layout */
@media (min-width:1000px) {
  .coach-session-editor-modal,
  .template-editor-modal {
    width:min(1240px,calc(100vw - 56px));
  }
  .coach-session-editor-modal .session-primary-fields {
    grid-template-columns:minmax(0,1.5fr) minmax(180px,.7fr) minmax(180px,.7fr);
  }
  .coach-session-editor-modal .warmup-picker-field {
    margin-bottom:18px;
  }
  .coach-session-editor-modal .visual-workout-layout,
  .template-editor-modal .visual-workout-layout {
    grid-template-columns:minmax(260px,320px) minmax(0,1fr);
    gap:20px;
  }
}

/* v273 coach calendar, desktop fine tuner and direct session feedback */
.saved-workout-feedback-text {
  margin:12px 0 0 !important;
  padding:14px;
  border:1px solid #b9e8ff;
  border-radius:11px;
  background:#fff;
  color:var(--ink) !important;
  font-size:13px !important;
  line-height:1.6 !important;
  white-space:pre-wrap;
}
.coach-feedback-composer .workout-feedback-actions { justify-content:flex-end; }
@media (min-width:1000px) {
  .coach-session-editor-modal .workout-builder .structured-builder,
  .template-editor-modal .workout-builder .structured-builder {
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(340px,.68fr);
    gap:20px;
    align-items:start;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-creator,
  .template-editor-modal .workout-builder .visual-workout-creator {
    min-width:0;
    margin-bottom:0;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details,
  .template-editor-modal .workout-builder .visual-workout-details {
    min-width:0;
    align-self:start;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details > summary,
  .template-editor-modal .workout-builder .visual-workout-details > summary {
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details > summary small,
  .template-editor-modal .workout-builder .visual-workout-details > summary small {
    grid-column:1 / -1;
  }
}

/* v274 desktop fine-tuner fit and space use */
@media (min-width:1000px) {
  .coach-session-editor-modal,
  .template-editor-modal {
    width:min(1480px,calc(100vw - 24px));
    max-width:calc(100vw - 24px);
    box-sizing:border-box;
  }
  .coach-session-editor-modal .workout-builder .structured-builder,
  .template-editor-modal .workout-builder .structured-builder {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-layout,
  .template-editor-modal .workout-builder .visual-workout-layout {
    grid-template-columns:minmax(210px,260px) minmax(0,1fr);
    gap:16px;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details,
  .template-editor-modal .workout-builder .visual-workout-details,
  .coach-session-editor-modal .workout-builder .visual-workout-details-body,
  .template-editor-modal .workout-builder .visual-workout-details-body,
  .coach-session-editor-modal .workout-builder .structured-segment-grid,
  .template-editor-modal .workout-builder .structured-segment-grid,
  .coach-session-editor-modal .workout-builder .rep-set-builders,
  .template-editor-modal .workout-builder .rep-set-builders,
  .coach-session-editor-modal .workout-builder .rep-set-builder,
  .template-editor-modal .workout-builder .rep-set-builder,
  .coach-session-editor-modal .workout-builder .rep-line-builder,
  .template-editor-modal .workout-builder .rep-line-builder,
  .coach-session-editor-modal .workout-builder .metric-control,
  .template-editor-modal .workout-builder .metric-control,
  .coach-session-editor-modal .workout-builder .rpe-requirement-control,
  .template-editor-modal .workout-builder .rpe-requirement-control,
  .coach-session-editor-modal .workout-builder .field,
  .template-editor-modal .workout-builder .field {
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-body,
  .template-editor-modal .workout-builder .visual-workout-details-body {
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(130px,.48fr);
    gap:14px 12px;
  }
  .coach-session-editor-modal .workout-builder .structured-segment-grid,
  .template-editor-modal .workout-builder .structured-segment-grid,
  .coach-session-editor-modal .workout-builder .timed-distance-estimate,
  .template-editor-modal .workout-builder .timed-distance-estimate,
  .coach-session-editor-modal .workout-builder .rep-set-builders,
  .template-editor-modal .workout-builder .rep-set-builders,
  .coach-session-editor-modal .workout-builder .set-rest-bottom,
  .template-editor-modal .workout-builder .set-rest-bottom {
    grid-column:1 / -1;
  }
  .coach-session-editor-modal .workout-builder .structured-segment-grid,
  .template-editor-modal .workout-builder .structured-segment-grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin-bottom:0;
    padding-bottom:14px;
  }
  .coach-session-editor-modal .workout-builder .sets-decision,
  .template-editor-modal .workout-builder .sets-decision {
    display:grid;
    grid-template-columns:auto minmax(120px,150px);
    align-items:end;
    gap:12px;
    max-width:none;
    margin:0;
  }
  .coach-session-editor-modal .workout-builder .sets-decision > label,
  .template-editor-modal .workout-builder .sets-decision > label {
    margin-bottom:7px;
  }
  .coach-session-editor-modal .workout-builder .sets-toggle,
  .template-editor-modal .workout-builder .sets-toggle {
    width:100%;
    margin-bottom:0;
  }
  .coach-session-editor-modal .workout-builder .sets-count-row,
  .template-editor-modal .workout-builder .sets-count-row {
    grid-column:2;
    grid-template-columns:minmax(0,1fr);
    align-self:end;
    margin:0;
  }
  .coach-session-editor-modal .workout-builder .rpe-requirement-fields,
  .template-editor-modal .workout-builder .rpe-requirement-fields,
  .coach-session-editor-modal .workout-builder .set-rpe-range-fields,
  .template-editor-modal .workout-builder .set-rpe-range-fields {
    grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);
    gap:8px;
  }
  .coach-session-editor-modal .workout-builder .builder-row.reps-builder,
  .template-editor-modal .workout-builder .builder-row.reps-builder {
    grid-template-columns:minmax(82px,.34fr) minmax(0,1fr) minmax(0,1fr);
    gap:10px;
  }
  .coach-session-editor-modal .workout-builder .metric-value,
  .template-editor-modal .workout-builder .metric-value {
    grid-template-columns:minmax(0,1fr) 58px;
    gap:6px;
  }
  .coach-session-editor-modal .workout-builder input,
  .coach-session-editor-modal .workout-builder select,
  .coach-session-editor-modal .workout-builder textarea,
  .template-editor-modal .workout-builder input,
  .template-editor-modal .workout-builder select,
  .template-editor-modal .workout-builder textarea {
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
  }
  .coach-session-editor-modal .workout-builder .rpe-requirement-fields select,
  .template-editor-modal .workout-builder .rpe-requirement-fields select {
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .coach-session-editor-modal .workout-builder .rep-details-row,
  .template-editor-modal .workout-builder .rep-details-row {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
  }
}

/* v275 Monday-first session date picker */
.monday-date-picker { display:none; }
@media (min-width:900px) and (hover:hover) and (pointer:fine) {
  .coach-session-editor-modal .session-date-native { display:none; }
  .coach-session-editor-modal .monday-date-picker { display:block; position:relative; min-width:0; }
  .coach-session-editor-modal .monday-date-trigger {
    width:100%; min-height:54px; padding:0 16px; border:1px solid #dce3e8; border-radius:14px; background:#fff; color:#061a26;
    display:flex; align-items:center; justify-content:space-between; gap:12px; font:inherit; font-size:18px; text-align:left; cursor:pointer;
  }
  .coach-session-editor-modal .monday-date-trigger:focus-visible { outline:3px solid rgba(0,179,255,.28); border-color:#00b3ff; }
  .coach-session-editor-modal .monday-date-icon { width:18px; height:18px; flex:0 0 18px; border:2px solid currentColor; border-radius:3px; position:relative; }
  .coach-session-editor-modal .monday-date-icon::before { content:""; position:absolute; left:-2px; right:-2px; top:3px; border-top:2px solid currentColor; }
  .coach-session-editor-modal .monday-date-icon::after { content:""; position:absolute; width:8px; height:4px; left:3px; top:-5px; border-left:2px solid currentColor; border-right:2px solid currentColor; }
  .coach-session-editor-modal .monday-date-popover {
    position:absolute; z-index:140; top:calc(100% + 8px); left:0; width:min(330px,calc(100vw - 56px)); padding:12px;
    border:1px solid #cbd7df; border-radius:14px; background:#fff; box-shadow:0 18px 45px rgba(6,26,38,.24); color:#061a26;
  }
  .coach-session-editor-modal .monday-date-popover[hidden] { display:none; }
  .monday-date-header { display:grid; grid-template-columns:38px 1fr 38px; align-items:center; gap:8px; margin-bottom:8px; }
  .monday-date-header strong { text-align:center; font-size:15px; }
  .monday-date-header button,
  .monday-date-footer button { border:0; border-radius:9px; background:#eef8fc; color:#07304a; min-height:36px; cursor:pointer; font:inherit; font-weight:700; }
  .monday-date-header button { font-size:25px; line-height:1; }
  .monday-date-weekdays,
  .monday-date-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px; }
  .monday-date-weekdays { margin-bottom:4px; }
  .monday-date-weekdays span { padding:4px 0; text-align:center; color:#617382; font-size:11px; font-weight:800; }
  .monday-date-day { aspect-ratio:1; min-width:0; border:0; border-radius:9px; background:transparent; color:#102536; font:inherit; font-size:13px; cursor:pointer; }
  .monday-date-day:hover { background:#e8f7fd; }
  .monday-date-day.outside { color:#9aa8b1; }
  .monday-date-day.today { box-shadow:inset 0 0 0 1px #00b3ff; }
  .monday-date-day.selected { background:#005ee8; color:#fff; font-weight:800; box-shadow:none; }
  .monday-date-footer { display:flex; justify-content:flex-end; margin-top:8px; }
  .monday-date-footer button { padding:0 12px; }
}

/* v278 hidden athlete session details and completed split editor */
.calendar .session-chip.session-details-hidden {
  opacity:1;
  cursor:not-allowed;
  border-style:dashed;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.32),0 2px 8px rgba(16,37,54,.12);
}
.calendar .session-chip.session-details-hidden .session-chip-name {
  display:none;
}
.calendar .session-chip.session-details-hidden .session-chip-description {
  display:block;
  margin-top:3px;
  font-size:8.7px;
  line-height:1.2;
  white-space:normal;
}
.calendar .session-chip.session-details-hidden .session-chip-description .session-chip-marquee {
  white-space:normal;
  animation:none;
}
.calendar .session-chip.session-hidden-for-athlete {
  outline:2px dashed rgba(255,176,0,.82);
  outline-offset:1px;
}
.calendar .session-hidden-badge {
  position:absolute;
  z-index:4;
  top:2px;
  right:3px;
  padding:1px 4px;
  border-radius:999px;
  background:#ffb000;
  color:#132433;
  font-size:6.5px;
  font-weight:950;
  letter-spacing:.04em;
  text-transform:uppercase;
  pointer-events:none;
}
.saved-split-edit-launch {
  display:flex;
  justify-content:flex-end;
  margin-top:14px;
}
.completed-split-editor {
  margin-top:16px;
  padding:16px;
  border:1px solid #8edfff;
  border-radius:14px;
  background:#eefaff;
}
.completed-split-editor[hidden] { display:none; }
.completed-split-editor-head,
.completed-split-edit-group-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.completed-split-editor-head h4 { margin:2px 0 0; color:var(--navy); }
.completed-split-editor > p { margin:8px 0 14px; color:var(--muted); }
.completed-split-edit-group {
  margin-top:12px;
  padding:12px;
  border:1px solid #c9e7f5;
  border-radius:12px;
  background:#fff;
}
.completed-split-edit-group-head > div { display:grid; gap:2px; }
.completed-split-edit-group-head strong { color:var(--navy); }
.completed-split-edit-group-head small,
.completed-split-edit-group-head > span { color:var(--muted); font-size:11px; }
.completed-split-edit-rows { display:grid; gap:8px; margin-top:10px; }
.completed-split-edit-row {
  display:grid;
  grid-template-columns:minmax(120px,1fr) minmax(130px,.7fr) minmax(150px,.8fr);
  align-items:end;
  gap:10px;
  padding:10px;
  border-radius:10px;
  background:#f6fbfe;
}
.completed-split-edit-row > div { display:grid; gap:2px; align-self:center; }
.completed-split-edit-row > div strong { color:var(--navy); }
.completed-split-edit-row > div small { color:var(--muted); font-size:10px; }
.completed-split-edit-row label { display:grid; gap:5px; color:var(--navy); font-size:11px; font-weight:800; }
.completed-split-edit-row input { width:100%; min-width:0; }
.completed-split-distance-input {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fff;
  overflow:hidden;
}
.completed-split-distance-input input { border:0; border-radius:0; }
.completed-split-distance-input b { padding:0 11px; color:var(--muted); }
.completed-split-edit-actions { display:flex; justify-content:flex-end; margin-top:14px; }
@media (max-width:700px) {
  .completed-split-edit-row { grid-template-columns:1fr; }
  .calendar .session-chip.session-details-hidden .session-chip-description { font-size:7px; }
}

/* v283 session-RPE load status: 7-day recent, 42-day base and separate performance response */
.load-progress-metrics {
  grid-template-columns: repeat(auto-fit,minmax(105px,1fr));
}
.progress-performance-status,
.performance-response-status {
  --performance-accent:#8b9aa5;
  display:grid;
  gap:4px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-left:4px solid var(--performance-accent);
  border-radius:12px;
  background:#f7fafb;
}
.progress-performance-status { margin:0 0 16px; }
.progress-performance-status strong,
.performance-response-status strong { color:var(--navy); font-size:14px; }
.progress-performance-status span,
.performance-response-status span { color:var(--muted); font-size:11px; line-height:1.45; }
.performance-response-status small { color:var(--muted); font-size:10px; font-weight:900; letter-spacing:.05em; text-transform:uppercase; }
.performance-response-section {
  display:grid;
  gap:10px;
  padding:12px;
  border:1px solid #dce6eb;
  border-radius:13px;
  background:#fbfcfa;
}
.performance-insufficient { --performance-accent:#8b9aa5; }
.performance-stable { --performance-accent:#20a66a; }
.performance-improving { --performance-accent:#14a4d8; }
.performance-monitor { --performance-accent:#e47a23; }
.performance-declining,
.performance-attention { --performance-accent:#cf3c4f; }
.performance-table-status {
  --performance-accent:#8b9aa5;
  display:inline-block;
  padding:4px 8px;
  border-left:3px solid var(--performance-accent);
  border-radius:7px;
  background:#f5f8f9;
  color:var(--navy);
  font-size:11px;
  font-weight:900;
  white-space:nowrap;
}
.fatigue-reduced { --fatigue-accent:#5b8fa8; }
.fatigue-maintaining { --fatigue-accent:#20a66a; }
.fatigue-excessive { --fatigue-accent:#cf3c4f; }
.fatigue-snapshot-grid {
  grid-template-columns:repeat(auto-fit,minmax(145px,1fr));
}
.fatigue-snapshot-grid .fatigue-status-card { grid-column:span 2; }
.load-balance-chart h3 {
  margin:0 0 8px;
  color:var(--navy);
  font-size:14px;
}
.load-balance-chart .daily-load-bar {
  fill:rgba(19,181,209,.24);
}
.daily-load-key { background:rgba(19,181,209,.55); }
.load-percentage-panel {
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid var(--line);
}
.load-percentage-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.load-percentage-heading small {
  display:block;
  color:var(--muted);
  font-size:10px;
  font-weight:900;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.load-percentage-heading strong {
  display:block;
  margin-top:2px;
  color:var(--navy);
  font-size:24px;
}
.load-percentage-svg {
  display:block;
  width:100%;
  height:108px;
  margin-top:6px;
  overflow:visible;
}
.load-percentage-svg .ratio-threshold {
  stroke:#dce5e8;
  stroke-width:1;
  stroke-dasharray:4 4;
}
.load-percentage-svg .ratio-100 { stroke:#9fc5ce; stroke-width:1.5; }
.load-percentage-svg .ratio-line {
  fill:none;
  stroke:var(--blue);
  stroke-width:3;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.ratio-scale {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:5px;
  color:var(--muted);
  font-size:9px;
  line-height:1.25;
  text-align:center;
}
.fatigue-athlete-report-table table { min-width:1420px; }
@media (max-width:900px) {
  .fatigue-snapshot-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .fatigue-snapshot-grid .fatigue-status-card { grid-column:1 / -1; }
}
@media (max-width:520px) {
  .fatigue-snapshot-grid { grid-template-columns:1fr; }
  .fatigue-snapshot-grid .fatigue-status-card { grid-column:auto; }
  .ratio-scale { grid-template-columns:repeat(2,minmax(0,1fr)); text-align:left; }
  .load-percentage-heading { align-items:flex-start; }
}
.fatigue-high { --fatigue-accent:#e47a23; }


/* v284 Walk calendar chip: purple-grey fill with a purple bottom edge in every calendar state. */
.calendar .session-chip.sport-colour-lock.sport-walk {
  background:#786f80 !important;
  border-bottom-color:#7d3fa1 !important;
  color:#fff !important;
}

/* v285 athlete Saturday/Sunday session swap */
.day-weekend-swap-btn:disabled { opacity:.1 !important; cursor:wait; }
@media (max-width:620px){.calendar .day-weekend-swap-btn img{width:11px;height:11px;}}
@media (max-width:430px){.calendar .day-weekend-swap-btn img{width:10px;height:10px;}}

/* v286 training history importer */
.history-import-modal{width:min(1180px,96vw);max-width:1180px}
.history-import-modal .modal-body{display:grid;gap:18px}
.history-import-start{display:grid;gap:16px}
.history-import-file-field input[type=file]{padding:12px;background:#f7fbfd;border:1px dashed #8aa9b7;border-radius:12px;width:100%}
.history-import-explainer{display:grid;gap:5px;padding:14px 16px;border:1px solid #b9d8e5;border-left:5px solid #00b3ff;border-radius:12px;background:#f2fbff;color:#102d3d}
.history-import-explainer span,.history-import-note{color:#4f6977;font-size:.88rem;line-height:1.45}
.history-import-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.history-import-summary>div{display:grid;gap:2px;padding:12px;border:1px solid #c9dbe3;border-radius:12px;background:#f8fbfc;min-width:0}
.history-import-summary strong{font-size:1.35rem;color:#003c64}
.history-import-summary span{font-size:.76rem;color:#607987;text-transform:uppercase;letter-spacing:.04em}
.history-import-errors{display:grid;gap:4px;padding:12px 14px;border-radius:12px;background:#fff4e8;border:1px solid #eebd82;color:#6f3d0c}
.history-import-filterbar{display:grid;grid-template-columns:minmax(150px,220px) minmax(150px,220px) 1fr;gap:12px;align-items:end}
.history-import-selection-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding-bottom:1px}
.history-import-note{margin:0}
.history-import-table{display:grid;border:1px solid #c7d9e1;border-radius:14px;overflow:auto;max-height:52vh;background:#fff}
.history-import-row{display:grid;grid-template-columns:34px 112px minmax(220px,1.4fr) 96px 86px minmax(170px,1fr);gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid #e1ebef;min-width:860px;color:#173342}
.history-import-row:last-child{border-bottom:0}
.history-import-row:not(.history-import-head):hover{background:#f5fbfe}
.history-import-head{position:sticky;top:0;z-index:2;background:#eaf5fa;font-size:.76rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#41606f}
.history-import-row>span{min-width:0}
.history-import-row strong,.history-import-row small{display:block;overflow-wrap:anywhere}
.history-import-row small{font-size:.74rem;color:#657e8b;margin-top:2px;line-height:1.3}
.history-import-row input[type=checkbox]{width:18px;height:18px}
.history-import-status{display:inline-block;padding:4px 8px;border-radius:999px;background:#e7f4f8;color:#174f65;font-size:.72rem;font-style:normal;font-weight:800}
.status-ready .history-import-status{background:#e4f7e9;color:#1f6932}
.status-review .history-import-status{background:#fff1c9;color:#725000}
.status-possible .history-import-status{background:#ffe2c0;color:#7a3c00}
.status-duplicate .history-import-status,.status-imported .history-import-status{background:#e5e8eb;color:#4c5b63}
.status-error .history-import-status{background:#ffe0e0;color:#8a1f1f}
.history-import-row.is-locked{opacity:.7;background:#f5f6f7}
.history-import-progress{min-height:24px;font-weight:700;color:#005f8a}
.history-import-actions{position:sticky;bottom:0;background:#fff;padding-top:12px;border-top:1px solid #dce7ec}
.athlete-profile-view-actions{flex-wrap:wrap}
@media(max-width:900px){
  .history-import-modal{width:min(96vw,760px)}
  .history-import-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
  .history-import-filterbar{grid-template-columns:1fr 1fr}
  .history-import-selection-actions{grid-column:1/-1;justify-content:flex-start}
}
@media(max-width:620px){
  .history-import-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .history-import-filterbar{grid-template-columns:1fr}
  .history-import-selection-actions{grid-column:auto}
  .history-import-table{max-height:48vh}
  .history-import-actions .primary-btn,.history-import-actions .secondary-btn{width:100%}
}


/* v292 bulk athlete-history importer */
.bulk-history-modal{width:min(1260px,97vw);max-width:1260px}
.bulk-history-modal .modal-body{display:grid;gap:18px}
.bulk-history-file-field input[type=file]{padding:14px;background:#f7fbfd;border:1px dashed #8aa9b7;border-radius:12px;width:100%}
.bulk-history-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.bulk-history-summary>div{display:grid;gap:2px;padding:12px;border:1px solid #c9dbe3;border-radius:12px;background:#f8fbfc;min-width:0}
.bulk-history-summary strong{font-size:1.35rem;color:#003c64}
.bulk-history-summary span{font-size:.74rem;color:#607987;text-transform:uppercase;letter-spacing:.04em}
.bulk-history-guidance{display:grid;gap:4px;padding:13px 15px;border:1px solid #b9d8e5;border-left:5px solid #00b3ff;border-radius:12px;background:#f2fbff;color:#173342}
.bulk-history-guidance span{font-size:.85rem;line-height:1.45;color:#526e7c}
.bulk-history-table{display:grid;border:1px solid #c7d9e1;border-radius:14px;overflow:auto;max-height:52vh;background:#fff}
.bulk-history-row{display:grid;grid-template-columns:44px minmax(250px,1.4fr) minmax(220px,1fr) 92px minmax(210px,1fr);gap:12px;align-items:center;padding:11px 12px;border-bottom:1px solid #e1ebef;min-width:980px;color:#173342}
.bulk-history-row:last-child{border-bottom:0}
.bulk-history-row:not(.bulk-history-head):hover{background:#f5fbfe}
.bulk-history-head{position:sticky;top:0;z-index:2;background:#eaf5fa;font-size:.76rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#41606f}
.bulk-history-row>span{min-width:0}
.bulk-history-row strong,.bulk-history-row small{display:block;overflow-wrap:anywhere}
.bulk-history-row small{font-size:.73rem;color:#657e8b;margin-top:3px;line-height:1.3}
.bulk-history-row select{width:100%;min-width:190px}
.bulk-history-row input[type=checkbox]{width:18px;height:18px}
.bulk-history-unmatched-note{color:#8a4a00 !important;font-weight:700}
.bulk-history-status{display:inline-block;padding:4px 8px;border-radius:999px;background:#e7f4f8;color:#174f65;font-size:.72rem;font-style:normal;font-weight:800}
.bulk-history-row.status-ready .bulk-history-status,.bulk-history-row.status-done .bulk-history-status{background:#e4f7e9;color:#1f6932}
.bulk-history-row.status-analysing .bulk-history-status,.bulk-history-row.status-previewing .bulk-history-status,.bulk-history-row.status-importing .bulk-history-status{background:#dff3ff;color:#005f8a}
.bulk-history-row.status-warning .bulk-history-status,.bulk-history-row.status-unmatched .bulk-history-status,.bulk-history-row.status-stopped .bulk-history-status{background:#fff1c9;color:#725000}
.bulk-history-row.status-error .bulk-history-status{background:#ffe0e0;color:#8a1f1f}
.bulk-history-live-progress{display:grid;gap:4px;min-height:56px;padding:13px 15px;border:1px solid #c9dbe3;border-radius:12px;background:#f8fbfc;color:#173342}
.bulk-history-live-progress strong{color:#005f8a}
.bulk-history-live-progress span{font-size:.86rem;line-height:1.4;color:#526e7c}
.bulk-history-actions{position:sticky;bottom:0;background:#fff;padding-top:12px;border-top:1px solid #dce7ec;flex-wrap:wrap}
.danger-btn{border:1px solid #b52b2b;background:#fff1f1;color:#8a1f1f;border-radius:10px;padding:10px 16px;font-weight:800;cursor:pointer}
.danger-btn:hover{background:#ffe2e2}
@media(max-width:900px){
  .bulk-history-modal{width:min(96vw,780px)}
  .bulk-history-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:620px){
  .bulk-history-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .bulk-history-table{max-height:46vh}
  .bulk-history-actions .primary-btn,.bulk-history-actions .secondary-btn,.bulk-history-actions .danger-btn{width:100%}
}

/* v287 imported history chips: quiet grey archive cards with compact activity facts. */
.calendar .session-chip.historical-import,
.calendar .session-chip.historical-import.completed,
.calendar .session-chip.historical-import.incomplete,
.calendar .session-chip.historical-import.sport-colour-lock {
  background:#d9dde1 !important;
  border-color:#b9c0c6 !important;
  border-bottom-color:#9da5ac !important;
  color:#25333b !important;
  box-shadow:none !important;
}
.calendar .session-chip.historical-import .session-chip-type,
.calendar .session-chip.historical-import .session-chip-name,
.calendar .session-chip.historical-import .session-chip-description,
.calendar .session-chip.historical-import.completed .session-chip-type,
.calendar .session-chip.historical-import.completed .session-chip-name,
.calendar .session-chip.historical-import.completed .session-chip-description {
  color:#25333b !important;
}
.calendar .session-chip.historical-import .session-chip-icon {
  filter:grayscale(1) contrast(.8);
  opacity:.72;
}

/* v289 benchmark purpose and comparable-session filters */
.training-purpose-field small[data-training-purpose-hint]{display:block;margin-top:6px;color:#5f7683;line-height:1.4}
.benchmark-advanced-filters{margin-top:16px;padding:16px;border:1px solid #c8dce5;border-radius:14px;background:#f6fbfd;display:grid;gap:14px}
.benchmark-advanced-heading{display:flex;justify-content:space-between;align-items:center;gap:14px}
.benchmark-advanced-heading>div{display:grid;gap:3px}
.benchmark-advanced-heading strong{color:#092f43;font-size:1rem}
.benchmark-advanced-heading span{color:#617986;font-size:.84rem;line-height:1.4}
.benchmark-advanced-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.benchmark-filter-summary,.benchmark-modal-filter-summary{padding:10px 12px;border-radius:10px;background:#e7f5fb;color:#214b5f;font-size:.84rem;line-height:1.4}
.benchmark-item-meta{display:block;margin-top:5px;color:#53707f;font-size:.72rem;line-height:1.4;white-space:normal}
.benchmark-detail-table{overflow-x:auto}
.benchmark-detail-table table{min-width:920px}
@media(max-width:900px){.benchmark-advanced-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.benchmark-advanced-heading{align-items:stretch;flex-direction:column}.benchmark-advanced-heading .compact-btn{width:100%}.benchmark-advanced-grid{grid-template-columns:1fr}.benchmark-advanced-filters{padding:13px}}
.benchmark-context-list em{color:#0d6d92;font-size:12px;font-style:normal;font-weight:700}

/* v290 FitStrong integration preparation and future imported Strength chips */
.calendar .session-chip.fitstrong-import,
.calendar .session-chip.fitstrong-import.completed,
.calendar .session-chip.fitstrong-import.incomplete,
.calendar .session-chip.fitstrong-import.sport-colour-lock {
  background:#d9dde1 !important;
  border-color:#b9c0c6 !important;
  border-bottom-color:#9da5ac !important;
  color:#25333b !important;
  box-shadow:none !important;
}
.calendar .session-chip.fitstrong-import .session-chip-type,
.calendar .session-chip.fitstrong-import .session-chip-name,
.calendar .session-chip.fitstrong-import .session-chip-description {
  color:#25333b !important;
}
.calendar .session-chip.fitstrong-import .session-chip-icon {
  filter:grayscale(1) contrast(.8);
  opacity:.72;
}
.fitstrong-integration-backdrop{z-index:1600}
.fitstrong-integration-modal{width:min(980px,96vw);max-width:980px}
.fitstrong-integration-modal .modal-body{display:grid;gap:16px}
.fitstrong-integration-status{display:grid;gap:15px}
.fitstrong-integration-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:17px 18px;border:1px solid #b8d8e5;border-left:6px solid #00b3ff;border-radius:14px;background:#f0faff;color:#173848}
.fitstrong-integration-banner.needs-sql{border-left-color:#e48b1a;background:#fff8ec;border-color:#ebc78e}
.fitstrong-integration-banner>div{display:grid;gap:4px;min-width:0}
.fitstrong-integration-banner>div>span,.fitstrong-direction-head span{font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;font-weight:800;color:#4d7182}
.fitstrong-integration-banner>div>strong{font-size:1.2rem;color:#07364d}
.fitstrong-integration-banner p{margin:0;color:#4f6977;line-height:1.45}
.fitstrong-status-mark{display:inline-flex;align-items:center;gap:7px;width:max-content;max-width:100%;padding:6px 10px;border-radius:999px;font-size:.76rem;font-weight:800;white-space:nowrap}
.fitstrong-status-mark i{width:9px;height:9px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px rgba(255,255,255,.65)}
.fitstrong-status-mark.ready{background:#dff5e5;color:#206a39}
.fitstrong-status-mark.waiting{background:#fff0cc;color:#785400}
.fitstrong-readiness-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.fitstrong-readiness-grid>div{display:grid;align-content:start;gap:9px;padding:13px;border:1px solid #c9dbe3;border-radius:12px;background:#f8fbfc;min-width:0}
.fitstrong-readiness-grid>div>span{font-size:.78rem;font-weight:800;color:#466270;line-height:1.3}
.fitstrong-direction-section{display:grid;gap:12px;padding:15px;border:1px solid #c9dce5;border-radius:14px;background:#fff}
.fitstrong-direction-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.fitstrong-direction-head>div{display:grid;gap:3px}
.fitstrong-direction-head strong{color:#11384a;font-size:1rem}
.fitstrong-direction-head small{color:#607987;text-align:right;line-height:1.35;max-width:330px}
.fitstrong-count-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}
.fitstrong-count-grid.outbound{grid-template-columns:repeat(3,minmax(0,1fr))}
.fitstrong-count-grid>div{display:grid;gap:2px;padding:11px;border-radius:11px;background:#edf6fa;text-align:center}
.fitstrong-count-grid strong{font-size:1.3rem;color:#004f77}
.fitstrong-count-grid span{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:#5d7480;font-weight:800}
.fitstrong-last-run{display:grid;gap:3px;padding:13px 15px;border-radius:12px;background:#f4f6f7;border:1px solid #d6dfe3;color:#314b58}
.fitstrong-last-run span,.fitstrong-last-run small{font-size:.82rem;color:#607681;line-height:1.4}
.fitstrong-safety-note{display:grid;gap:4px;padding:13px 15px;border-radius:12px;background:#eef7ff;border:1px solid #bfdcf0;color:#16465e}
.fitstrong-safety-note span{font-size:.84rem;line-height:1.45;color:#496978}
.fitstrong-safety-note.live{background:#e9f8ee;border-color:#b9dfc6;color:#1e6036}
.fitstrong-safety-note.live span{color:#416d50}
.fitstrong-readonly-banner{display:grid;gap:4px;margin:2px 0 14px;padding:13px 15px;border-radius:12px;background:#f0f3f5;border:1px solid #cbd2d7;color:#263b46}
.fitstrong-readonly-banner span{font-size:.84rem;line-height:1.45;color:#5b6d76}
.fitstrong-saved-grid{margin-top:0}
.fitstrong-score-note{display:grid;gap:4px;margin-top:14px;padding:13px 15px;border-radius:12px;background:#eef7ff;border:1px solid #bfdcf0;color:#16465e}
.fitstrong-score-note span{font-size:.84rem;line-height:1.45;color:#496978}
.fitstrong-integration-actions{padding-top:2px}
.fitstrong-outgoing-issues{display:grid;gap:12px;padding:15px;border:1px solid #e4b9b5;border-radius:14px;background:#fff8f7}
.fitstrong-outgoing-issues.clean{border-color:#b9dfc6;background:#effaf3}
.fitstrong-outgoing-issues-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.fitstrong-outgoing-issues-head>div{display:grid;gap:3px}
.fitstrong-outgoing-issues-head>div>span{font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;font-weight:800;color:#7b5552}
.fitstrong-outgoing-issues-head strong{font-size:1rem;color:#6e2d28}
.fitstrong-outgoing-issues-head>small{font-weight:800;color:#913e37}
.fitstrong-outgoing-issues.clean .fitstrong-outgoing-issues-head>div>span,.fitstrong-outgoing-issues.clean .fitstrong-outgoing-issues-head strong{color:#28653c}
.fitstrong-outgoing-issues>p{margin:0;color:#52705d;font-size:.84rem;line-height:1.45}
.fitstrong-outgoing-issue-list{display:grid;gap:10px}
.fitstrong-outgoing-issue{display:grid;grid-template-columns:minmax(130px,.8fr) minmax(180px,1.15fr) minmax(145px,.9fr) minmax(230px,1.6fr) minmax(160px,1fr);gap:10px;padding:12px;border:1px solid #ebcfcc;border-radius:11px;background:#fff;align-items:start}
.fitstrong-outgoing-issue>div{display:grid;gap:4px;min-width:0}
.fitstrong-outgoing-issue small{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:#7a6664;font-weight:800}
.fitstrong-outgoing-issue strong{font-size:.82rem;color:#2d414b;overflow-wrap:anywhere}
.fitstrong-outgoing-issue span{font-size:.75rem;color:#687a82;line-height:1.35;overflow-wrap:anywhere}
.fitstrong-outgoing-message strong{color:#8b302a;white-space:pre-wrap}
.fitstrong-retry-mark{display:inline-flex;width:max-content;max-width:100%;padding:5px 8px;border-radius:999px;font-size:.7rem!important;font-weight:800;line-height:1.2!important}
.fitstrong-retry-mark.retry{background:#fff0cc;color:#785400!important}
.fitstrong-retry-mark.blocked{background:#fde3e0;color:#8a2f29!important}
@media(max-width:1000px){.fitstrong-outgoing-issue{grid-template-columns:repeat(2,minmax(0,1fr))}.fitstrong-outgoing-message{grid-column:1/-1}}
@media(max-width:820px){.fitstrong-readiness-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fitstrong-count-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.fitstrong-direction-head,.fitstrong-outgoing-issues-head{display:grid}.fitstrong-direction-head small{text-align:left;max-width:none}}
@media(max-width:560px){.fitstrong-integration-banner{display:grid}.fitstrong-readiness-grid{grid-template-columns:1fr}.fitstrong-count-grid,.fitstrong-count-grid.outbound{grid-template-columns:repeat(2,minmax(0,1fr))}.fitstrong-outgoing-issue{grid-template-columns:1fr}.fitstrong-outgoing-message{grid-column:auto}.fitstrong-integration-actions .primary-btn,.fitstrong-integration-actions .secondary-btn{width:100%}}

/* v299 completed Walk calendar chips: green completed state with the Walk purple bottom edge. */
.calendar .session-chip.sport-colour-lock.sport-walk.completed {
  background:#058731 !important;
  border-color:#058731 !important;
  border-bottom-color:#7d3fa1 !important;
  color:#fff !important;
  box-shadow:none !important;
}

/* v304 adjacent-month calendar previews */
.day.muted.has-adjacent-items { background:#f3f7f7; }
.day.muted .session-chip,
.day.muted .race-chip { opacity:.72; }
.day.muted .session-chip:hover,
.day.muted .session-chip:focus,
.day.muted .race-chip:hover,
.day.muted .race-chip:focus { opacity:1; }
.day.calendar-date-focus {
  border-color:var(--cyan);
  box-shadow:0 0 0 3px rgba(0,191,255,.24), inset 0 0 0 1px var(--cyan);
  outline:none;
  transition:box-shadow .2s ease,border-color .2s ease;
}

/* v305 dynamic run session creator */
.dynamic-run-builder-prompt{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin-top:16px;
  padding:16px 18px;
  border:1px solid rgba(0,179,255,.34);
  border-radius:16px;
  background:linear-gradient(135deg,rgba(0,179,255,.09),rgba(16,37,54,.035));
}
.dynamic-run-builder-prompt>div:first-child{display:grid;gap:3px;min-width:0}
.dynamic-run-builder-prompt small{color:#006a95;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.dynamic-run-builder-prompt strong{font-size:1rem;color:#102536}
.dynamic-run-builder-prompt span{color:#536878;line-height:1.4}
.dynamic-run-builder-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.dynamic-run-builder-actions button{white-space:nowrap}
@media(max-width:700px){
  .dynamic-run-builder-prompt{align-items:stretch;flex-direction:column}
  .dynamic-run-builder-actions{display:grid;grid-template-columns:1fr}
  .dynamic-run-builder-actions button{width:100%}
}


/* v306 workout-menu click safety and per-step recovery controls */
.workout-builder .visual-workout-palette-group:not([open]) > .visual-workout-palette-list{
  display:none !important;
}
.workout-builder .visual-palette-block{
  cursor:grab;
}
.workout-builder .visual-palette-block:active{
  cursor:grabbing;
}
.workout-builder .visual-palette-use{
  justify-self:start;
  margin-top:6px;
  padding:6px 10px;
  border:1px solid rgba(0,132,190,.28);
  border-radius:8px;
  background:#f3fafc;
  color:#005f88;
  font:inherit;
  font-size:.68rem;
  font-weight:900;
  line-height:1.2;
  cursor:pointer;
}
.workout-builder .visual-palette-use:hover,
.workout-builder .visual-palette-use:focus-visible{
  border-color:#00b3ff;
  outline:2px solid rgba(0,179,255,.24);
  outline-offset:2px;
}
.workout-builder .visual-palette-block.active .visual-palette-use{
  background:#102536;
  border-color:#102536;
  color:#fff;
}
.step-recovery-toggle{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin:0 0 12px;
  padding:11px 12px;
  border:1px solid #d3e0e5;
  border-radius:11px;
  background:#f7faf9;
}
.step-recovery-toggle>div:first-child{
  display:grid;
  gap:2px;
  min-width:0;
}
.step-recovery-toggle strong{
  color:#173848;
  font-size:.82rem;
}
.step-recovery-toggle small{
  color:#607681;
  font-size:.72rem;
  line-height:1.35;
}
.step-recovery-toggle-buttons{
  flex:0 0 150px;
  width:150px;
  margin:0;
}
.step-recovery-option{
  flex:1 1 50%;
  min-height:34px;
  border:0;
  border-radius:8px;
  background:transparent;
  color:#5b6f79;
  font:inherit;
  font-size:.74rem;
  font-weight:900;
  cursor:pointer;
}
.step-recovery-option.active{
  background:#102536;
  color:#fff;
}
@media(max-width:700px){
  .step-recovery-toggle{align-items:stretch;flex-direction:column}
  .step-recovery-toggle-buttons{flex-basis:auto;width:100%}
}


/* v309: standalone recovery segments in the dynamic workout builder */
.workout-builder .visual-palette-recovery{border-left:4px solid #71808f;background:linear-gradient(135deg,#fff,#f5f7f8)}
.workout-builder .visual-palette-active-recovery{border-left:4px solid #2d9b62;background:linear-gradient(135deg,#fff,#f1fbf5)}
.workout-builder .visual-workout-recovery-segment{border-color:rgba(113,128,143,.45);background:linear-gradient(135deg,#fff,#f5f7f8)}
.workout-builder .visual-workout-active-recovery-segment{border-color:rgba(45,155,98,.45);background:linear-gradient(135deg,#fff,#f1fbf5)}
.workout-builder .visual-workout-recovery-segment .visual-workout-step-copy small{color:#596978}
.workout-builder .visual-workout-active-recovery-segment .visual-workout-step-copy small{color:#207848}
.workout-builder .standalone-recovery-builder{border-left:4px solid #71808f;background:#f8fafb}
.workout-builder .standalone-recovery-builder.active-recovery-builder{border-left-color:#2d9b62;background:#f4fbf7}
.workout-builder .standalone-recovery-builder .recovery-segment-details{grid-template-columns:minmax(0,1fr)}
.workout-builder .recovery-duration-control .metric-value{margin-top:8px}

/* v318 fixed modal chrome and vertical month scrolling */
.modal {
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.modal-top {
  flex:0 0 auto;
  z-index:6;
}
.modal-body {
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.modal-body > .modal-actions,
.modal-body > form > .modal-actions {
  position:sticky;
  bottom:-25px;
  z-index:7;
  margin-left:-26px;
  margin-right:-26px;
  padding:14px 26px 18px;
  border-top:1px solid rgba(174,196,207,.65);
  background:linear-gradient(180deg,rgba(248,249,245,.92),var(--paper) 28%);
  box-shadow:0 -10px 22px rgba(16,37,54,.08);
}

.athlete-calendar-card,
.coach-athlete-calendar-card {
  overflow:hidden;
}
.athlete-calendar-card > .card-head,
.coach-athlete-calendar-card > .card-head {
  position:relative;
  z-index:8;
  background:#fff;
}
.calendar-scroll-hint {
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:0 10px;
  border:1px solid #cfe1ea;
  border-radius:10px;
  background:#f5fbfe;
  color:#247096;
  font-size:11px;
  font-weight:850;
  white-space:nowrap;
}
.calendar-scroll-window {
  position:relative;
  max-height:min(76vh,920px);
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable;
  scroll-snap-type:y proximity;
  background:#f4f7f7;
}
.calendar-scroll-window:focus-visible {
  outline:3px solid rgba(0,179,255,.35);
  outline-offset:-3px;
}
.calendar-scroll-month {
  scroll-snap-align:start;
  background:#fff;
  border-bottom:10px solid #e6eef1;
}
.calendar-scroll-month:last-child {
  border-bottom:0;
}
.calendar-scroll-month-label {
  margin:0;
  padding:15px 20px 4px;
  color:var(--navy);
  font-family:Oswald,sans-serif;
  font-size:23px;
  letter-spacing:.02em;
  text-transform:uppercase;
  background:#fff;
}
.calendar-scroll-month > .calendar {
  max-height:none;
  overflow:visible;
  padding-top:10px;
}
.athlete-calendar-card.athlete-mobile-fullscreen .calendar-scroll-window,
.coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-scroll-window {
  flex:1 1 auto;
  min-height:0;
  max-height:none;
  padding-bottom:max(10px,env(safe-area-inset-bottom));
}
.athlete-calendar-card.athlete-mobile-fullscreen .calendar-scroll-month > .calendar,
.coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-scroll-month > .calendar {
  flex:none;
  min-height:auto;
  max-height:none;
  overflow:visible !important;
}

@media (max-width:760px) {
  .modal-body > .modal-actions,
  .modal-body > form > .modal-actions {
    bottom:calc(-16px - env(safe-area-inset-bottom));
    margin-left:-11px;
    margin-right:-11px;
    padding:12px 11px calc(14px + env(safe-area-inset-bottom));
  }
  .calendar-scroll-window {
    max-height:72dvh;
  }
  .calendar-scroll-month-label {
    padding:12px 12px 2px;
    font-size:19px;
  }
  .calendar-scroll-hint {
    display:none;
  }
}

/* v319: one continuous week stream with no repeated month-edge weeks */
.calendar-scroll-window {
  scroll-snap-type:none;
  background:#fff;
}
.calendar-scroll-window > .calendar {
  max-height:none;
  overflow:visible !important;
  padding:0 18px 18px;
}
.calendar-scroll-window .calendar-weekday-row {
  position:sticky;
  top:0;
  z-index:9;
  padding-top:14px;
  background:#fff;
  box-shadow:0 8px 14px rgba(16,37,54,.06);
}
.calendar-scroll-window .calendar-week-rows {
  padding-top:7px;
}
.calendar-scroll-window .calendar-week-row {
  scroll-snap-align:none;
}
.athlete-calendar-card.athlete-mobile-fullscreen .calendar-scroll-window > .calendar,
.coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-scroll-window > .calendar {
  flex:none;
  min-height:auto;
  max-height:none;
  margin-top:0;
  padding:0 8px max(12px,env(safe-area-inset-bottom));
  overflow:visible !important;
}
@media (max-width:760px) {
  .calendar-scroll-window > .calendar {
    padding:0 8px 12px;
  }
  .calendar-scroll-window .calendar-weekday-row {
    padding-top:10px;
  }
}

/* v321: bounded natural calendar scrolling, stable refresh anchoring and direct date navigation */
.calendar-date-controls {
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
}
.calendar-month-picker {
  position:relative;
  min-width:0;
}
.calendar-month-picker-trigger {
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-width:0;
  padding:4px 6px;
  border:0;
  border-radius:9px;
  background:transparent;
  color:var(--navy);
  cursor:pointer;
  text-align:left;
}
.calendar-month-picker-trigger:hover,
.calendar-month-picker-trigger:focus-visible {
  background:rgba(0,179,255,.08);
  outline:none;
}
.calendar-month-picker-trigger:focus-visible {
  box-shadow:0 0 0 3px rgba(0,179,255,.22);
}
.calendar-month-label {
  overflow:hidden;
  color:var(--navy);
  font-family:Oswald,sans-serif;
  font-size:28px;
  font-weight:600;
  letter-spacing:.02em;
  line-height:1.05;
  text-overflow:ellipsis;
  text-transform:uppercase;
  white-space:nowrap;
}
.calendar-month-picker-chevron {
  flex:0 0 auto;
  color:#247096;
  font-size:15px;
  font-weight:900;
  transform:translateY(-1px);
}
.calendar-date-picker-input {
  position:absolute;
  left:4px;
  bottom:0;
  width:1px;
  height:1px;
  padding:0;
  border:0;
  opacity:0;
  pointer-events:none;
}
.calendar-this-week-btn {
  flex:0 0 auto;
  min-height:34px;
  padding:7px 11px;
  white-space:nowrap;
}
.calendar-scroll-window {
  scroll-snap-type:none;
  scroll-behavior:auto;
}
.calendar-scroll-window .calendar-week-row {
  scroll-snap-align:none;
  scroll-snap-stop:normal;
}

@media (max-width:760px) {
  .calendar-title-distance {
    align-items:flex-start;
    flex-wrap:wrap;
    gap:8px 10px;
  }
  .calendar-date-controls {
    gap:6px;
    max-width:100%;
  }
  .calendar-month-label {
    font-size:21px;
  }
  .calendar-month-picker-trigger {
    gap:5px;
    padding:3px 4px;
  }
  .calendar-this-week-btn {
    min-height:31px;
    padding:6px 9px;
    font-size:11px;
  }
  .calendar-week-distance {
    padding:5px 8px;
  }
}


/* v322 Active Recovery workout chips */
.calendar .session-chip.active-recovery:not(.completed):not(.incomplete):not(.unplanned-run) {
  background:#c7e2eb !important;
  color:#061a26 !important;
  border-color:#c7e2eb !important;
  border-bottom-color:#8fb8c6 !important;
  text-shadow:none !important;
  box-shadow:none !important;
}
.calendar .session-chip.active-recovery:not(.completed):not(.incomplete):not(.unplanned-run) .session-chip-type,
.calendar .session-chip.active-recovery:not(.completed):not(.incomplete):not(.unplanned-run) .session-chip-name,
.calendar .session-chip.active-recovery:not(.completed):not(.incomplete):not(.unplanned-run) .session-chip-description {
  color:#061a26 !important;
}
@media (min-width:781px) {
  .calendar .session-chip.active-recovery:not(.completed):not(.incomplete):not(.unplanned-run) .session-chip-icon {
    filter:brightness(0) !important;
  }
}
.active-recovery-workout-mode .simple-builder {
  border-color:rgba(143,184,198,.75);
  background:linear-gradient(180deg,rgba(199,226,235,.28),rgba(255,255,255,.72));
}

/* v324: stable click-through monthly calendars */
.calendar-click-nav {
  width:auto;
  display:grid;
  grid-template-columns:34px minmax(150px,auto) 34px;
  align-items:center;
  gap:8px;
}
.calendar-click-nav h2 {
  min-width:0;
  margin:0;
  overflow:hidden;
  color:var(--navy);
  font-family:Oswald,sans-serif;
  font-size:28px;
  font-weight:600;
  letter-spacing:.02em;
  line-height:1.05;
  text-align:center;
  text-overflow:ellipsis;
  text-transform:uppercase;
  white-space:nowrap;
}
@media (max-width:760px) {
  .calendar-click-nav {
    width:auto;
    grid-template-columns:31px minmax(112px,auto) 31px;
    gap:5px;
  }
  .calendar-click-nav .icon-btn {
    width:31px;
    height:31px;
  }
  .calendar-click-nav h2 {
    font-size:21px;
  }
}

/* v327: direct Intervals.icu calendar pairing, visible month selector and safe week menus */
.calendar-click-nav .calendar-month-picker {
  width:100%;
  min-width:0;
}
.calendar-click-nav .calendar-month-picker-trigger {
  width:100%;
  justify-content:center;
}
.calendar-click-nav .calendar-month-label {
  min-width:0;
  overflow:hidden;
  text-align:center;
  text-overflow:ellipsis;
}
.calendar-week-row.week-menu-open {
  z-index:320;
}
.week-actions-menu.open-up {
  top:auto !important;
  bottom:calc(50% + 22px) !important;
  margin-top:0 !important;
  margin-bottom:6px !important;
}
.calendar .session-chip.intervals-pairing-source {
  cursor:grab;
  outline:2px solid rgba(255,92,0,.35);
  outline-offset:-2px;
}
.calendar .session-chip.intervals-pairing-source::before {
  content:'PAIR';
  position:absolute;
  top:3px;
  right:4px;
  z-index:6;
  padding:2px 4px;
  border-radius:5px;
  background:rgba(255,255,255,.9);
  color:#9b3600;
  font-size:7px;
  font-weight:950;
  letter-spacing:.05em;
  line-height:1;
}
.calendar .session-chip.intervals-pairing-source.dragging {
  cursor:grabbing;
  opacity:.68;
}
.calendar .session-chip.intervals-pairing-drop-target {
  outline:4px solid #00b3ff !important;
  outline-offset:2px;
  box-shadow:0 0 0 7px rgba(0,179,255,.2),0 10px 24px rgba(0,87,170,.22) !important;
  transform:translateY(-2px) scale(1.015);
}
@media (max-width:900px) {
  .coach-athlete-calendar-card .month-nav.calendar-click-nav {
    display:grid !important;
  }
}
@media (max-width:760px) {
  .calendar-date-controls {
    width:100%;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
  }
  .calendar-click-nav {
    min-width:0;
  }
  .calendar-click-nav .calendar-month-label {
    font-size:20px;
  }
  .week-actions-menu.open-up {
    bottom:calc(50% + 18px) !important;
  }
}
.calendar .session-chip.intervals-pairing-source {
  position:relative;
}
@media (max-width:620px) {
  .calendar.coach-calendar:not(.compare-calendar) .week-actions-menu.open-up,
  .coach-athlete-grid .week-actions-menu.open-up {
    top:auto !important;
    bottom:calc(50% + 18px) !important;
    margin-top:0 !important;
    margin-bottom:6px !important;
  }
}
@media (pointer:coarse) {
  .calendar .session-chip.intervals-pairing-source {
    touch-action:pan-y;
  }
  body.intervals-touch-pairing {
    overscroll-behavior:none;
    user-select:none;
    -webkit-user-select:none;
  }
  body.intervals-touch-pairing .calendar {
    touch-action:none;
  }
}

/* v328 AM/PM calendar lanes and planned-session order */
.calendar-day-periods {
  display:grid;
  grid-template-rows:auto auto;
  gap:3px;
  min-width:0;
  margin-top:4px;
}
.calendar-day-period {
  min-width:0;
  padding-top:2px;
}
.calendar-day-period + .calendar-day-period {
  margin-top:2px;
  padding-top:5px;
  border-top:1px dashed rgba(56,105,121,.28);
}
.calendar-day-period-label {
  display:flex;
  align-items:center;
  min-height:12px;
  color:#587785;
  font-size:7px;
  font-weight:950;
  line-height:1;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.calendar-day-period-label span {
  display:inline-flex;
  align-items:center;
  min-width:22px;
  padding:2px 5px;
  border:1px solid rgba(56,105,121,.2);
  border-radius:999px;
  background:rgba(235,246,249,.78);
}
.calendar-day-period-pm .calendar-day-period-label span {
  background:rgba(239,238,252,.82);
  border-color:rgba(83,70,147,.2);
  color:#534693;
}
.calendar-day-period-items {
  min-width:0;
  min-height:5px;
}
.calendar-day-period-items > .session-chip:first-child,
.calendar-day-period-items > .race-chip:first-child {
  margin-top:3px;
}
.day.muted .calendar-day-period-label { opacity:.62; }
.session-calendar-period-field small { line-height:1.25; }
@media (min-width:1000px) {
  .coach-session-editor-modal .session-primary-fields {
    grid-template-columns:minmax(0,1.45fr) minmax(170px,.68fr) minmax(120px,.45fr) minmax(170px,.68fr);
  }
}
@media (max-width:620px) and (orientation:portrait) {
  .calendar-day-periods { gap:2px; margin-top:3px; }
  .calendar-day-period + .calendar-day-period { margin-top:1px; padding-top:3px; }
  .calendar-day-period-label { min-height:10px; font-size:6px; }
  .calendar-day-period-label span { min-width:19px; padding:1px 4px; }
}

/* v329 AM/PM drag movement and editor period toggle */
.session-period-toggle {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5px;
  padding:4px;
  border:1px solid rgba(53,102,119,.24);
  border-radius:12px;
  background:#eef6f8;
}
.session-period-toggle button {
  min-height:38px;
  padding:7px 12px;
  border:1px solid transparent;
  border-radius:9px;
  background:transparent;
  color:#526d79;
  font:800 14px/1 "DM Sans",sans-serif;
  cursor:pointer;
}
.session-period-toggle button:hover,
.session-period-toggle button:focus-visible {
  border-color:rgba(0,179,255,.42);
  background:rgba(255,255,255,.7);
  outline:none;
}
.session-period-toggle button.selected {
  border-color:#00b3ff;
  background:#fff;
  color:#0b526e;
  box-shadow:0 2px 8px rgba(5,56,76,.12);
}
.calendar-day-period.session-move-drop-target {
  position:relative;
  border-radius:9px;
  outline:2px solid #00b3ff;
  outline-offset:1px;
  background:rgba(0,179,255,.11);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.8),0 0 0 3px rgba(0,179,255,.12);
}
.calendar-day-period.session-move-drop-target .calendar-day-period-label span {
  border-color:#00b3ff;
  background:#dff6ff;
  color:#075975;
}
body.calendar-touch-session-move {
  overflow:hidden;
  overscroll-behavior:none;
  user-select:none;
  -webkit-user-select:none;
}
body.calendar-touch-session-move .calendar {
  touch-action:none;
}
@media (max-width:620px) {
  .session-period-toggle button { min-height:42px; }
}

/* v330 athlete AM/PM movement, completed compare-copy and split week menus */
.calendar-week-row > .week-actions.week-actions-split {
  gap:6px;
  justify-content:center;
  overflow:visible;
}
.week-actions-dropdown {
  position:relative;
  width:34px;
  min-width:34px;
  height:34px;
}
.week-actions-split .week-actions-menu {
  right:0;
}
.week-actions-split .week-actions-menu.open-up {
  top:auto !important;
  bottom:calc(100% + 6px) !important;
  margin:0 !important;
}
.week-effort-toggle {
  color:#087b9d;
}
.week-effort-toggle .week-effort-svg {
  width:19px;
  height:19px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.week-effort-menu {
  min-width:248px;
}
.week-general-menu {
  min-width:184px;
}
.calendar .session-chip[data-athlete-period-drag="true"] {
  cursor:grab;
}
.calendar .session-chip[data-compare-completed-drag="true"] {
  cursor:copy;
}
.calendar .session-chip[data-athlete-period-drag="true"].dragging,
.calendar .session-chip[data-compare-completed-drag="true"].dragging {
  opacity:.68;
}
@media (pointer:coarse) {
  .calendar .session-chip[data-athlete-period-drag="true"] {
    touch-action:pan-y;
  }
}


/* v332 visible weekly effort edge labels */
.calendar-week-days.week-intensity-shaded {
  padding:2px 18px;
}

.week-effort-edge-label {
  position:absolute;
  top:7px;
  bottom:7px;
  z-index:5;
  display:flex;
  align-items:center;
  justify-content:center;
  width:13px;
  padding:3px 1px;
  border:1px solid rgba(7,25,37,.10);
  border-radius:7px;
  background:rgba(255,255,255,.56);
  color:rgba(16,48,64,.84);
  font-size:8px;
  font-weight:950;
  letter-spacing:.035em;
  line-height:1;
  text-align:center;
  text-transform:uppercase;
  writing-mode:vertical-rl;
  text-orientation:mixed;
  pointer-events:none;
  user-select:none;
  box-shadow:0 1px 4px rgba(7,25,37,.06);
}

.week-effort-edge-left {
  left:2px;
  transform:rotate(180deg);
}

.week-effort-edge-right {
  right:2px;
}

@media (max-width:700px) {
  .calendar-week-days.week-intensity-shaded {
    padding-inline:14px;
  }

  .week-effort-edge-label {
    top:5px;
    bottom:5px;
    width:10px;
    padding:2px 0;
    border-radius:5px;
    font-size:6.5px;
    letter-spacing:0;
  }
}

/* v335: larger completed-workout viewer and compact saved-workout actions */
.saved-completion-modal {
  width:min(1180px,96vw);
  max-height:96vh;
}
.saved-completion-modal .modal-top {
  padding:20px 24px;
}
.saved-completion-modal .modal-body {
  padding:20px 22px;
}
.saved-completion-modal .rp-workout-map-stage {
  min-height:520px;
}
.saved-completion-actions {
  display:flex!important;
  flex-flow:row wrap!important;
  align-items:center;
  justify-content:flex-end;
  gap:6px!important;
}
.saved-completion-actions > button,
.saved-completion-actions > .completed-share-actions > summary {
  flex:0 0 auto!important;
  width:auto!important;
  min-width:0!important;
  min-height:34px!important;
  padding:7px 11px!important;
  border-radius:9px!important;
  font-size:11px!important;
  line-height:1.15!important;
  white-space:nowrap!important;
}
.completed-share-actions {
  position:relative;
  flex:0 0 auto;
}
.completed-share-actions > summary {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  list-style:none;
  cursor:pointer;
}
.completed-share-actions > summary::-webkit-details-marker { display:none; }
.completed-share-actions-menu {
  position:absolute;
  right:0;
  bottom:calc(100% + 8px);
  z-index:20;
  display:grid;
  gap:6px;
  min-width:190px;
  padding:8px;
  border:1px solid #c8dce5;
  border-radius:12px;
  background:#fff;
  box-shadow:0 14px 30px rgba(16,37,54,.2);
}
.completed-share-actions:not([open]) .completed-share-actions-menu { display:none; }
.completed-share-actions-menu .secondary-btn {
  width:100%;
  min-height:34px;
  padding:7px 10px;
  border-radius:8px;
  font-size:11px;
  text-align:left;
  box-shadow:none;
}
@media (max-width:760px) {
  .saved-completion-modal {
    width:100%;
    max-height:96dvh;
  }
  .saved-completion-modal .modal-top { padding:16px 16px; }
  .saved-completion-modal .modal-body { padding:13px 12px calc(14px + env(safe-area-inset-bottom)); }
  .saved-completion-modal .rp-workout-map-stage { min-height:370px; }
  .saved-completion-actions {
    justify-content:center;
    padding-top:10px!important;
    padding-bottom:calc(10px + env(safe-area-inset-bottom))!important;
  }
  .saved-completion-actions > button,
  .saved-completion-actions > .completed-share-actions > summary {
    min-height:32px!important;
    padding:6px 9px!important;
    font-size:10px!important;
  }
  .completed-share-actions-menu { right:auto; left:50%; transform:translateX(-50%); }
}


/* v342 coach account security and Coach Management */
.coach-forgot-password-link{
  display:block;
  margin:12px auto 0;
  border:0;
  background:transparent;
  color:#0067ab;
  font-weight:800;
  text-decoration:underline;
  cursor:pointer;
}
.coach-forgot-password-link:hover,.coach-forgot-password-link:focus-visible{color:#0047ab;outline:none;}
.coach-security-message{min-height:22px;margin:10px 0 0;color:#00678f;font-weight:700;line-height:1.4;}
.coach-password-modal{width:min(560px,calc(100vw - 24px));}
.coach-management-stage{margin-bottom:20px;border-left:5px solid #00b3ff;background:#eef9ff;}
.coach-management-stage strong{display:block;color:#0047ab;font-size:16px;}
.coach-management-stage p{margin:5px 0 0;color:#405a68;}
.coach-management-create,.coach-management-list{margin-top:20px;}
.coach-management-rows{display:grid;gap:14px;}
.coach-management-row{display:grid;grid-template-columns:minmax(250px,1.2fr) auto minmax(260px,1fr) auto;gap:16px;align-items:center;padding:16px;border:1px solid #d7e4ea;border-radius:16px;background:#fff;}
.coach-management-identity{display:flex;align-items:center;gap:12px;min-width:0;}
.coach-management-identity>div:last-child{display:grid;gap:3px;min-width:0;}
.coach-management-identity strong,.coach-management-identity span,.coach-management-identity small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.coach-management-identity span{color:#38505f;}
.coach-management-identity small{color:#71848f;}
.coach-management-status{display:grid;gap:6px;justify-items:start;}
.coach-management-row dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:0;}
.coach-management-row dl div{padding:9px;border-radius:10px;background:#f4f8fa;}
.coach-management-row dt{font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#7a8d97;}
.coach-management-row dd{margin:4px 0 0;font-size:12px;font-weight:700;color:#193344;}
.coach-management-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;}
.coach-management-empty{padding:24px;text-align:center;border:1px dashed #a9c3cf;border-radius:14px;background:#f7fbfd;}
.coach-management-empty p{margin:5px 0 0;color:#667b86;}
@media (max-width:1100px){
  .coach-management-row{grid-template-columns:1fr auto;}
  .coach-management-row dl{grid-column:1/-1;}
  .coach-management-actions{grid-column:1/-1;justify-content:flex-start;}
}
@media (max-width:700px){
  .coach-management-row{grid-template-columns:1fr;}
  .coach-management-status,.coach-management-row dl,.coach-management-actions{grid-column:auto;}
  .coach-management-row dl{grid-template-columns:1fr;}
  .coach-management-actions .table-btn{width:100%;}
}

/* v349: independent-coach athlete counts and limits */
.coach-athlete-limit{display:grid;gap:6px;min-width:210px;padding:10px;border-radius:12px;background:#eef8fc;border:1px solid #cce5ef;}
.coach-athlete-limit label{font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#58727f;}
.coach-athlete-limit>div{display:flex;gap:8px;align-items:center;}
.coach-athlete-limit input{width:86px;min-width:0;padding:9px 10px;border:1px solid #a9cbd9;border-radius:9px;background:#fff;color:#102536;font-weight:800;}
.coach-athlete-limit small{color:#667f8b;line-height:1.3;}
@media(max-width:1120px){.coach-management-row{grid-template-columns:1fr auto;}.coach-athlete-limit{grid-column:1/-1;}}
@media(max-width:700px){.coach-athlete-limit{grid-column:auto;}.coach-athlete-limit>div{align-items:stretch;}.coach-athlete-limit input{flex:1;width:auto;}.coach-athlete-limit .table-btn{white-space:nowrap;}}


/* v354 transparent Effort–Pace Preview */
.rpe-pace-card{overflow:visible}
.effort-pace-preview{display:grid;gap:14px;margin-bottom:16px}
.effort-pace-preview-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid rgba(0,179,255,.34);border-radius:14px;background:linear-gradient(135deg,rgba(0,179,255,.14),rgba(16,37,54,.76))}
.effort-pace-preview-banner strong{font-family:Oswald,DM Sans,sans-serif;font-size:1.02rem;letter-spacing:.02em;color:#fff}
.effort-pace-preview-banner span{max-width:310px;text-align:right;font-size:.78rem;line-height:1.35;color:#b8d5e6}
.effort-pace-control-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.effort-pace-control-grid .field{margin:0;min-width:0}
.effort-pace-control-grid select,.effort-pace-control-grid input{width:100%}
.effort-pace-unit-input{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}
.effort-pace-unit-input span{font-size:.82rem;font-weight:700;color:#a9c5d5}
.effort-pace-result{display:grid;gap:12px}
.effort-pace-result-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:stretch}
.effort-pace-result-head>div{padding:14px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:#0d1c27}
.effort-pace-result-head>div:first-child{display:grid;gap:4px}
.effort-pace-result-head span,.effort-pace-summary-grid span,.effort-pace-source span{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:#8faebe}
.effort-pace-result-head>div:first-child strong{font-family:Oswald,DM Sans,sans-serif;font-size:1.75rem;line-height:1;color:#fff}
.effort-pace-result-head small{color:#9cb7c6}
.effort-pace-confidence{min-width:118px;display:grid;align-content:center;text-align:center;gap:2px}
.effort-pace-confidence strong{font-size:1rem}
.effort-pace-confidence.confidence-high{border-color:rgba(55,211,153,.48);background:rgba(25,92,70,.42)}
.effort-pace-confidence.confidence-medium{border-color:rgba(0,179,255,.45);background:rgba(0,91,140,.32)}
.effort-pace-confidence.confidence-low{border-color:rgba(255,181,71,.48);background:rgba(112,68,17,.34)}
.effort-pace-confidence.confidence-starting{border-color:rgba(255,255,255,.16)}
.effort-pace-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.effort-pace-summary-grid>div{display:grid;gap:4px;padding:10px;border-radius:11px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.07)}
.effort-pace-summary-grid strong{font-size:.92rem;color:#eef8fd}
.effort-pace-source-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.effort-pace-source{display:grid;gap:4px;padding:10px;border-radius:11px;border-left:3px solid #00b3ff;background:rgba(0,179,255,.07)}
.effort-pace-source-curve{border-left-color:#8bd450;background:rgba(139,212,80,.07)}
.effort-pace-source-coach{border-left-color:#d0a5ff;background:rgba(208,165,255,.07)}
.effort-pace-source strong{font-size:.86rem;color:#fff}
.effort-pace-method-note{padding:11px 12px;border-radius:11px;background:rgba(255,255,255,.045);font-size:.82rem;line-height:1.45;color:#b7cbd6}
.effort-pace-method-note strong{color:#fff}
.effort-pace-evidence,.legacy-rpe-pace{border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(255,255,255,.025)}
.effort-pace-evidence>summary,.legacy-rpe-pace>summary{cursor:pointer;padding:11px 13px;font-weight:700;color:#e8f5fb}
.effort-pace-evidence-body,.legacy-rpe-pace-body{display:grid;gap:10px;padding:0 13px 13px}
.effort-pace-evidence-body p{margin:0;font-size:.82rem;color:#b6cad5}
.effort-pace-evidence-table{max-height:260px;overflow:auto}
.effort-pace-evidence-table table{min-width:540px}
.effort-pace-evidence-table th,.effort-pace-evidence-table td{padding:7px 8px;font-size:.76rem}
.effort-pace-empty{padding:16px;border:1px dashed rgba(0,179,255,.35);border-radius:14px;background:rgba(0,179,255,.055)}
.effort-pace-empty strong{display:block;color:#fff;margin-bottom:5px}
.effort-pace-empty p{margin:0 0 8px;color:#b6cbd7;line-height:1.45}
.effort-pace-empty small{color:#8ca8b8}
.legacy-rpe-pace-body .field{margin:0}
@media(max-width:1100px){.effort-pace-control-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.effort-pace-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.effort-pace-source-grid{grid-template-columns:1fr}}
@media(max-width:620px){.effort-pace-preview-banner{display:grid}.effort-pace-preview-banner span{text-align:left}.effort-pace-control-grid{grid-template-columns:1fr}.effort-pace-result-head{grid-template-columns:1fr}.effort-pace-confidence{min-width:0;text-align:left}.effort-pace-summary-grid{grid-template-columns:1fr 1fr}.effort-pace-result-head>div:first-child strong{font-size:1.5rem}}

/* v356 Effort–Pace suggestions inside the workout builder */
.workout-builder .effort-pace-builder-suggestion{
  display:grid;
  gap:0;
  margin-top:2px;
  border:1px solid rgba(0,179,255,.26);
  border-radius:13px;
  background:linear-gradient(135deg,rgba(0,179,255,.065),rgba(255,255,255,.95));
  overflow:hidden;
}
.workout-builder .effort-pace-builder-toggle{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:11px 12px;
  border:0;
  background:transparent;
  color:var(--ink);
  text-align:left;
  cursor:pointer;
}
.workout-builder .effort-pace-builder-toggle>span{
  display:grid;
  gap:2px;
}
.workout-builder .effort-pace-builder-toggle strong{
  font-size:.82rem;
  color:#075e7a;
}
.workout-builder .effort-pace-builder-toggle small{
  color:var(--muted);
  font-size:.7rem;
  line-height:1.35;
}
.workout-builder .effort-pace-builder-toggle b{
  flex:0 0 auto;
  padding:5px 9px;
  border:1px solid rgba(0,179,255,.34);
  border-radius:999px;
  background:#fff;
  color:#057da5;
  font-size:.7rem;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.workout-builder .effort-pace-builder-body{
  border-top:1px solid rgba(0,179,255,.18);
  background:#fff;
}
.workout-builder .effort-pace-builder-body[hidden]{display:none}
.workout-builder .effort-pace-builder-status{
  display:grid;
  gap:8px;
  padding:11px;
}
.workout-builder .effort-pace-builder-target{
  display:flex;
  justify-content:space-between;
  gap:10px;
  padding:8px 10px;
  border-radius:10px;
  background:#eefaff;
  color:var(--ink);
  font-size:.76rem;
}
.workout-builder .effort-pace-builder-target span{
  color:#087a9c;
  font-weight:700;
  text-align:right;
}
.workout-builder .effort-pace-builder-athlete{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(180px,.62fr);
  gap:12px;
  align-items:center;
  padding:10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:#fff;
}
.workout-builder .effort-pace-builder-athlete-main,
.workout-builder .effort-pace-builder-athlete-meta{
  display:grid;
  gap:3px;
  min-width:0;
}
.workout-builder .effort-pace-builder-athlete-main>strong{
  color:var(--ink);
  font-size:.82rem;
}
.workout-builder .effort-pace-builder-athlete-main>span{
  color:#006f96;
  font-family:Oswald,DM Sans,sans-serif;
  font-size:1.18rem;
  font-weight:700;
}
.workout-builder .effort-pace-builder-athlete small{
  color:var(--muted);
  font-size:.69rem;
  line-height:1.35;
}
.workout-builder .effort-pace-builder-athlete-meta{
  padding-left:10px;
  border-left:3px solid rgba(255,181,71,.65);
}
.workout-builder .effort-pace-builder-athlete-meta.confidence-high{border-left-color:#37b979}
.workout-builder .effort-pace-builder-athlete-meta.confidence-medium{border-left-color:#00a7df}
.workout-builder .effort-pace-builder-athlete-meta.confidence-low{border-left-color:#e8a439}
.workout-builder .effort-pace-builder-athlete-meta>span{
  color:var(--ink);
  font-size:.72rem;
  font-weight:800;
}
.workout-builder .effort-pace-builder-athlete-meta .table-btn{
  justify-self:start;
  margin-top:3px;
  white-space:nowrap;
}
.workout-builder .effort-pace-builder-athlete.is-empty{
  grid-template-columns:1fr;
  border-style:dashed;
  background:#fffaf6;
}
.workout-builder .effort-pace-builder-athlete.is-empty span,
.workout-builder .effort-pace-builder-empty{
  color:#9b4e2d;
  font-size:.76rem;
  line-height:1.45;
}
.workout-builder .effort-pace-builder-lock-note{
  margin:0;
  padding:9px 10px;
  border-radius:10px;
  background:#f4f7f9;
  color:#526b78;
  font-size:.71rem;
  line-height:1.45;
}
.workout-builder .effort-pace-builder-lock-note strong{color:var(--ink)}
@media (max-width:720px){
  .workout-builder .effort-pace-builder-athlete{grid-template-columns:1fr}
  .workout-builder .effort-pace-builder-athlete-meta{padding-left:0;padding-top:8px;border-left:0;border-top:3px solid rgba(255,181,71,.65)}
  .workout-builder .effort-pace-builder-athlete-meta.confidence-high{border-top-color:#37b979}
  .workout-builder .effort-pace-builder-athlete-meta.confidence-medium{border-top-color:#00a7df}
  .workout-builder .effort-pace-builder-athlete-meta.confidence-low{border-top-color:#e8a439}
  .workout-builder .effort-pace-builder-target{display:grid}
  .workout-builder .effort-pace-builder-target span{text-align:left}
}


/* v360: stable continuous athlete calendars and taller independent compare panes */
.calendar-scroll-window {
  width:100%;
  height:clamp(680px,78vh,940px);
  max-height:none;
  overflow-x:auto;
  overflow-y:auto;
  overflow-anchor:none;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  scroll-behavior:auto;
  touch-action:pan-x pan-y;
}
.calendar-scroll-window > .calendar {
  min-height:100%;
}
.athlete-calendar-card.athlete-mobile-fullscreen .calendar-scroll-window,
.coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-scroll-window {
  width:100%;
  height:auto;
  min-height:0;
}
.compare-calendar-panel .calendar {
  height:clamp(760px,82vh,1040px);
  overflow-anchor:none;
}
@media (max-width:760px) {
  .calendar-scroll-window {
    height:clamp(540px,72dvh,760px);
  }
  .compare-calendar-panel .calendar {
    height:clamp(620px,78dvh,820px);
  }
}

/* v366: Compare Calendars uses a large page-scrollable workspace */
body.compare-calendar-fullscreen-active {
  overflow-x:hidden;
  overflow-y:auto !important;
  overscroll-behavior-y:auto;
}
body.compare-calendar-fullscreen-active > #app,
body.compare-calendar-fullscreen-active > #app > .app-shell {
  width:100%;
  height:auto;
  min-height:100dvh;
}
body.compare-calendar-fullscreen-active > #app > .app-shell {
  position:relative;
  inset:auto;
  z-index:auto;
  display:block;
  overflow:visible;
  background:#f4f7f5;
}
body.compare-calendar-fullscreen-active .compare-main {
  width:100%;
  max-width:none;
  margin-top:18px;
  padding:0 clamp(10px,1.2vw,20px) 30px;
  display:block;
  overflow:visible;
}
body.compare-calendar-fullscreen-active .compare-head {
  margin-bottom:16px;
}
body.compare-calendar-fullscreen-active .compare-calendar-layout {
  align-items:start;
  scroll-margin-top:92px;
}
body.compare-calendar-fullscreen-active .compare-calendar-panel {
  min-height:0;
  height:auto;
  display:flex;
  flex-direction:column;
}
body.compare-calendar-fullscreen-active .compare-panel-head {
  flex:0 0 auto;
}
body.compare-calendar-fullscreen-active .compare-calendar-panel > .calendar {
  flex:0 0 auto;
  height:clamp(700px,68dvh,900px);
  min-height:700px;
  max-height:none;
  overflow:auto;
  overflow-anchor:none;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
body.compare-calendar-fullscreen-active .modal-backdrop {
  z-index:3300;
}
body.compare-calendar-fullscreen-active .calendar-context-menu,
body.compare-calendar-fullscreen-active .athlete-quick-complete-popover {
  z-index:3350;
}
body.compare-calendar-fullscreen-active .share-backdrop {
  z-index:3400;
}
body.compare-calendar-fullscreen-active .toast {
  z-index:3500;
}
@media (max-width:900px) {
  body.compare-calendar-fullscreen-active .compare-main {
    overflow:visible;
  }
  body.compare-calendar-fullscreen-active .compare-calendar-layout {
    display:grid;
    grid-template-columns:1fr;
  }
  body.compare-calendar-fullscreen-active .compare-calendar-panel {
    height:auto;
    min-height:0;
  }
  body.compare-calendar-fullscreen-active .compare-calendar-panel > .calendar {
    height:clamp(620px,68dvh,820px);
    min-height:620px;
  }
}

/* v368 Effort–Pace Calculator readability */
.rpe-pace-card .effort-pace-confidence strong{
  color:#fff;
  font-weight:800;
}
.rpe-pace-card .effort-pace-confidence small{
  color:#d8edf7;
  font-weight:700;
}
.rpe-pace-card .effort-pace-confidence.confidence-starting{
  border-color:#4d7185;
  background:#173244;
}
.rpe-pace-card .effort-pace-summary-grid>div{
  background:#eef8fc;
  border-color:#c9e1eb;
  box-shadow:0 1px 0 rgba(16,37,54,.04);
}
.rpe-pace-card .effort-pace-summary-grid span{
  color:#3f677a;
  font-size:.76rem;
  font-weight:800;
}
.rpe-pace-card .effort-pace-summary-grid strong{
  color:#102536;
  font-size:1rem;
  font-weight:800;
}
.rpe-pace-card .effort-pace-source{
  background:#eef9fd;
  border:1px solid #cce6ef;
  border-left:4px solid #00a7df;
}
.rpe-pace-card .effort-pace-source-curve{
  background:#f2f9ea;
  border-color:#d4e7bd;
  border-left-color:#70ae35;
}
.rpe-pace-card .effort-pace-source-coach{
  background:#f7f1fc;
  border-color:#e2d2ef;
  border-left-color:#9e67c7;
}
.rpe-pace-card .effort-pace-source span{
  color:#456b7d;
  font-size:.76rem;
  font-weight:800;
}
.rpe-pace-card .effort-pace-source strong{
  color:#102536;
  font-size:.94rem;
  font-weight:800;
}
.rpe-pace-card .effort-pace-method-note{
  border:1px solid #cbdfe7;
  background:#eef5f8;
  color:#345365;
  font-size:.88rem;
  font-weight:500;
}
.rpe-pace-card .effort-pace-method-note strong{
  color:#102536;
}
.rpe-pace-card .effort-pace-evidence,
.rpe-pace-card .legacy-rpe-pace{
  border-color:#c9e0e9;
  background:#f7fbfd;
}
.rpe-pace-card .effort-pace-evidence>summary,
.rpe-pace-card .legacy-rpe-pace>summary{
  color:#12354a;
  font-size:.94rem;
  font-weight:800;
}
.rpe-pace-card .effort-pace-evidence>summary::marker,
.rpe-pace-card .legacy-rpe-pace>summary::marker{
  color:#008fbd;
}
.rpe-pace-card .effort-pace-evidence-body p{
  color:#3b5b6a;
  font-size:.86rem;
}
.rpe-pace-card .effort-pace-evidence-table th{
  color:#24495c;
  background:#e7f3f8;
}
.rpe-pace-card .effort-pace-evidence-table td{
  color:#294b5c;
  background:#fff;
}
.rpe-pace-card .effort-pace-empty{
  background:#eef8fc;
  border-color:#84cde5;
}
.rpe-pace-card .effort-pace-empty strong{
  color:#102536;
}
.rpe-pace-card .effort-pace-empty p{
  color:#34596b;
}
.rpe-pace-card .effort-pace-empty small,
.rpe-pace-card .effort-pace-unit-input span{
  color:#496d7d;
  font-weight:700;
}

/* v379 real Fine-tune scroll viewport matched to Session Flow */
@media (min-width:1000px) {
  .coach-session-editor-modal .workout-builder .visual-workout-details[open],
  .template-editor-modal .workout-builder .visual-workout-details[open] {
    display:block;
    align-self:start;
    min-height:0;
    max-height:none;
    overflow:hidden;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details[open] > summary,
  .template-editor-modal .workout-builder .visual-workout-details[open] > summary {
    position:relative;
    z-index:2;
    flex:0 0 auto;
    background:#fff;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details[open] > .visual-workout-details-body,
  .template-editor-modal .workout-builder .visual-workout-details[open] > .visual-workout-details-body {
    display:block !important;
    min-height:0;
    padding:0 !important;
    box-sizing:border-box;
    overflow-y:auto !important;
    overflow-x:hidden !important;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
    scrollbar-width:auto;
    scrollbar-color:#247096 #e7f1f5;
    -webkit-overflow-scrolling:touch;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-scroll-content,
  .template-editor-modal .workout-builder .visual-workout-details-scroll-content {
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(130px,.48fr);
    gap:14px 12px;
    min-width:0;
    padding:14px;
    box-sizing:border-box;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-scroll-content > .structured-segment-grid,
  .template-editor-modal .workout-builder .visual-workout-details-scroll-content > .structured-segment-grid,
  .coach-session-editor-modal .workout-builder .visual-workout-details-scroll-content > .timed-distance-estimate,
  .template-editor-modal .workout-builder .visual-workout-details-scroll-content > .timed-distance-estimate,
  .coach-session-editor-modal .workout-builder .visual-workout-details-scroll-content > .rep-set-builders,
  .template-editor-modal .workout-builder .visual-workout-details-scroll-content > .rep-set-builders,
  .coach-session-editor-modal .workout-builder .visual-workout-details-scroll-content > .set-rest-bottom,
  .template-editor-modal .workout-builder .visual-workout-details-scroll-content > .set-rest-bottom {
    grid-column:1 / -1;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar,
  .template-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar {
    width:14px;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-track,
  .template-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-track {
    background:#e7f1f5;
    border-left:1px solid #c8dde6;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-thumb,
  .template-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-thumb {
    min-height:52px;
    background:#247096;
    border:3px solid #e7f1f5;
    border-radius:999px;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-thumb:hover,
  .template-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-thumb:hover {
    background:#0b567c;
  }
}
@media (max-width:999px) {
  .workout-builder .visual-workout-details {
    height:auto !important;
  }
  .workout-builder .visual-workout-details-body {
    overflow:visible !important;
  }
  .workout-builder .visual-workout-details-scroll-content {
    display:block;
  }
}

/* v382 Intervals.icu unplanned activity details and reverse pairing */
.intervals-icu-import-detail-card{margin:18px 0;padding:18px;border:1px solid #bfe7f5;border-left:4px solid #00b3ff;border-radius:16px;background:#f5fbfe;color:#173042}
.intervals-icu-import-detail-card h4{margin:4px 0 10px;color:#0d2637}
.intervals-icu-import-detail-card p{margin:0 0 12px;color:#4f6877;white-space:pre-wrap}
.intervals-icu-import-detail-card dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:0}
.intervals-icu-import-detail-card dl>div{padding:10px 12px;border:1px solid #d9edf5;border-radius:12px;background:#fff}
.intervals-icu-import-detail-card dt{font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#638093}
.intervals-icu-import-detail-card dd{margin:4px 0 0;font-weight:800;color:#102b3c}
.session-chip[data-pair-activity-target].intervals-pairing-drop-target{outline:4px solid #00b3ff;outline-offset:2px;box-shadow:0 0 0 7px rgba(0,179,255,.2),0 12px 28px rgba(0,0,0,.18)}

/* v383 Brick warm-up enable / disable control */
.brick-common-step-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
}
.brick-common-step-head strong,
.brick-common-step-head small { display:block; }
.brick-common-step-head small { margin-top:3px; color:var(--muted); }
.brick-common-toggle { margin:0; min-width:150px; }
.brick-common-toggle button { flex:1; }
@media (max-width:700px) {
  .brick-common-step-head { align-items:stretch; flex-direction:column; }
  .brick-common-toggle { width:100%; }
}
.brick-common-toggle button {
  flex:1;
  border:0;
  background:transparent;
  padding:7px 10px;
  border-radius:6px;
  color:var(--muted);
  font-size:11px;
  font-weight:800;
}
.brick-common-toggle button.active { background:var(--navy); color:#fff; }


/* v385 Athlete Profiles report shortcut and compact coaching-workspace loading */
.profile-row { grid-template-columns:42px minmax(0,1fr) auto minmax(250px,auto); }
.profile-row-actions { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:7px; }
.profile-row-actions .table-btn { margin:0; white-space:nowrap; }
.report-workspace-loading { display:flex; align-items:center; gap:18px; min-height:150px; margin-top:18px; }
.report-workspace-loading h2 { margin:0 0 5px; color:var(--navy); }
.report-workspace-loading p { margin:0 0 14px; color:var(--muted); }
.report-workspace-loader { width:42px; height:42px; flex:0 0 42px; border:5px solid #d9edf5; border-top-color:var(--blue); border-radius:50%; animation:report-workspace-spin .8s linear infinite; }
@keyframes report-workspace-spin { to { transform:rotate(360deg); } }
@media (max-width:975px) {
  .profile-row { grid-template-columns:36px minmax(0,1fr) auto; }
  .profile-row-actions { grid-column:2 / -1; justify-content:flex-start; }
  .profile-row .status { display:none; }
}
@media (max-width:620px) {
  .profile-row { grid-template-columns:36px minmax(0,1fr); }
  .profile-row-actions { grid-column:1 / -1; padding-left:44px; }
  .report-workspace-loading { align-items:flex-start; }
}
@media (prefers-reduced-motion:reduce) { .report-workspace-loader { animation-duration:1.8s; } }

/* v391 responsive visual refinements */

/* Phone FIT lap tables must scroll in both directions so every recorded rep remains reachable. */
@media (max-width:620px) {
  .saved-completion-modal .fit-lap-table {
    max-height:min(46dvh,360px);
    overflow-x:auto;
    overflow-y:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    touch-action:pan-x pan-y;
    scrollbar-gutter:stable;
  }
  .saved-completion-modal .fit-lap-table thead th {
    position:sticky;
    top:0;
    z-index:2;
    background:#fff;
  }
}

/* Keep all four Athlete Toolbox buttons on one compact row at every screen size. */
.athlete-page-button-row.toolbox-row {
  grid-template-columns:repeat(4,minmax(0,1fr));
  width:min(100%,420px);
  gap:8px;
}
.athlete-page-button-row.toolbox-row .athlete-icon-tile-btn {
  min-height:58px;
  padding:6px 4px 5px;
  border-radius:13px;
  gap:4px;
}
.athlete-page-button-row.toolbox-row .dashboard-action-svg,
.athlete-page-button-row.toolbox-row .dashboard-action-img {
  width:22px;
  height:22px;
  flex-basis:22px;
}
.athlete-page-button-row.toolbox-row .dashboard-action-combo {
  width:23px;
  height:23px;
}
.athlete-page-button-row.toolbox-row .dashboard-action-combo .dashboard-action-svg {
  width:23px;
  height:23px;
}
.athlete-page-button-row.toolbox-row .athlete-icon-label {
  font-size:9.5px;
  line-height:1.05;
}
@media (max-width:430px) {
  .athlete-page-button-row.toolbox-row {
    gap:6px;
  }
  .athlete-page-button-row.toolbox-row .athlete-icon-tile-btn {
    min-height:55px;
    padding-inline:2px;
  }
  .athlete-page-button-row.toolbox-row .athlete-icon-label {
    font-size:8.8px;
  }
}

/* On touch tablets, stack the visual creator and fine tuner instead of squeezing both into half-width columns. */
@media (min-width:760px) and (pointer:coarse) {
  .coach-session-editor-modal .workout-builder .structured-builder,
  .template-editor-modal .workout-builder .structured-builder {
    grid-template-columns:minmax(0,1fr) !important;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-creator,
  .template-editor-modal .workout-builder .visual-workout-creator,
  .coach-session-editor-modal .workout-builder .visual-workout-details,
  .template-editor-modal .workout-builder .visual-workout-details {
    width:100%;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-body,
  .template-editor-modal .workout-builder .visual-workout-details-body {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media (min-width:760px) and (max-width:980px) and (pointer:coarse) {
  .coach-session-editor-modal .workout-builder .visual-workout-details-body,
  .template-editor-modal .workout-builder .visual-workout-details-body {
    grid-template-columns:minmax(0,1fr);
  }
  .coach-session-editor-modal .workout-builder .sets-count-row,
  .template-editor-modal .workout-builder .sets-count-row {
    grid-column:1;
  }
}

/* Reduce fullscreen phone-calendar chrome so more of the training week remains visible. */
@media (orientation:landscape) and (max-height:650px) {
  .athlete-calendar-card.athlete-mobile-fullscreen .card-head,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .card-head {
    padding:max(4px,env(safe-area-inset-top)) 8px 4px;
    gap:5px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-title-distance,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-title-distance {
    flex:1 1 auto;
    flex-wrap:nowrap;
    gap:6px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-date-controls,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-date-controls {
    gap:4px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-click-nav,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-click-nav {
    grid-template-columns:27px minmax(105px,auto) 27px;
    gap:3px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-click-nav .icon-btn,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-click-nav .icon-btn {
    width:27px;
    height:27px;
    min-height:27px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-month-picker-trigger,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-month-picker-trigger {
    padding:2px 3px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-month-label,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-month-label {
    font-size:21px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-this-week-btn,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-this-week-btn {
    min-height:27px;
    padding:4px 8px;
    border-radius:8px;
    font-size:9.5px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-week-distance,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-week-distance {
    gap:3px;
    padding:3px 6px;
    border-radius:8px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-week-distance > span,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-week-distance > span {
    display:none;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-week-distance .weekly-distance-current,
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-week-distance .weekly-distance-planned,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-week-distance .weekly-distance-current,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-week-distance .weekly-distance-planned {
    font-size:16px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-week-distance .weekly-distance-value small,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-week-distance .weekly-distance-value small {
    font-size:8px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .athlete-calendar-head-actions,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .coach-calendar-head-actions {
    width:auto;
    flex:0 0 auto;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .athlete-calendar-fullscreen-trigger,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .coach-calendar-fullscreen-trigger {
    min-height:28px;
    padding:4px 8px;
    border-radius:8px;
    font-size:9px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .athlete-calendar-fullscreen-trigger span,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .coach-calendar-fullscreen-trigger span {
    font-size:14px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .calendar-scroll-window .calendar-weekday-row,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .calendar-scroll-window .calendar-weekday-row {
    padding-top:4px;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen .weekdays div,
  .coach-athlete-calendar-card.coach-calendar-fullscreen .weekdays div {
    padding-bottom:3px;
    font-size:8px;
  }
}

/* v393 compact mobile headers and icon-led modal action bars */
@media (max-width:620px) {
  /* Use the same compact treatment as the Pace & Splits calculator across mobile headers. */
  .modal-top {
    padding:9px 11px 8px;
  }
  .modal-top .eyebrow {
    font-size:8px;
    line-height:1.1;
    letter-spacing:.12em;
  }
  .modal-top h2 {
    margin:3px 34px 1px 0;
    font-size:20px;
    line-height:1.05;
  }
  .modal-top > div:not(.eyebrow) {
    max-width:calc(100% - 36px);
    margin-right:36px;
    overflow:hidden;
    color:#a9bdc8;
    font-size:10px !important;
    line-height:1.2;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .modal-top .close,
  .modal-top > .close {
    top:7px;
    right:8px;
    width:30px;
    height:30px;
    min-height:30px;
    font-size:18px;
  }

  .topbar,
  .page-title-topbar,
  .coach-page-topbar,
  .athlete-page-topbar,
  .athlete-dashboard-topbar {
    min-height:54px !important;
    padding:5px 8px !important;
    gap:6px !important;
  }
  .topbar .mobile-brand,
  .topbar .brand-compact,
  .page-title-topbar .mobile-brand,
  .page-title-topbar .brand-compact,
  .coach-page-topbar .mobile-brand,
  .coach-page-topbar .brand-compact,
  .athlete-page-topbar .mobile-brand,
  .athlete-page-topbar .brand-compact,
  .athlete-dashboard-topbar .mobile-brand,
  .athlete-dashboard-topbar .brand-compact {
    width:34px !important;
    height:34px !important;
    flex-basis:34px !important;
  }
  .topbar .avatar,
  .page-title-topbar .avatar,
  .coach-page-topbar .avatar,
  .athlete-page-topbar .avatar,
  .athlete-dashboard-topbar .avatar {
    width:30px;
    height:30px;
    flex-basis:30px;
    font-size:12px;
  }
  .topbar-page-title,
  .coach-topbar-page-title,
  .athlete-topbar-page-title {
    padding:0 2px;
  }
  .topbar-page-title strong,
  .coach-topbar-page-title strong,
  .athlete-topbar-page-title strong {
    margin-top:0;
    font-size:15px;
    line-height:1;
  }
  .topbar-page-title span,
  .coach-topbar-page-title span,
  .athlete-topbar-page-title span {
    display:none;
  }
  .top-settings-toggle,
  .athlete-dashboard-topbar .top-settings-toggle {
    width:32px;
    height:32px;
    min-height:32px;
    border-radius:9px;
  }
  .top-settings-toggle .dashboard-action-svg,
  .top-settings-toggle svg {
    width:18px;
    height:18px;
  }
  .topbar .logout,
  .page-title-topbar .logout,
  .coach-page-topbar .logout,
  .athlete-page-topbar .logout,
  .athlete-dashboard-topbar .logout {
    min-height:30px;
    padding:0 2px;
    font-size:10px;
  }

  .card-head {
    padding:9px 10px;
    gap:6px;
  }
  .card-head h2 {
    font-size:18px;
    line-height:1.05;
  }
  .card-head .subtle {
    font-size:10px;
    line-height:1.2;
  }
  .welcome,
  .athlete-screen-head,
  .feature-heading {
    margin-bottom:10px;
  }
  .welcome .eyebrow,
  .athlete-screen-head .eyebrow,
  .feature-heading .eyebrow {
    font-size:8px;
  }

  /* Keep modal actions low-profile, in rows, and easy to recognise by icon. */
  .modal-body > .modal-actions,
  .modal-body > form > .modal-actions {
    bottom:calc(-12px - env(safe-area-inset-bottom));
    margin-left:-11px;
    margin-right:-11px;
    padding:7px 8px calc(8px + env(safe-area-inset-bottom));
  }
  .modal-actions,
  .coach-session-workout-modal .modal-actions,
  .coach-session-editor-modal .modal-actions,
  .saved-completion-actions {
    display:flex !important;
    flex-flow:row wrap !important;
    align-items:center;
    justify-content:flex-end;
    gap:5px !important;
  }
  .modal-actions > button,
  .coach-session-workout-modal .modal-actions > button,
  .coach-session-editor-modal .modal-actions > button,
  .saved-completion-actions > button,
  .saved-completion-actions > .completed-share-actions > summary {
    flex:0 1 auto !important;
    width:auto !important;
    min-width:0 !important;
    min-height:31px !important;
    padding:5px 8px !important;
    border-radius:8px !important;
    font-size:9.5px !important;
    line-height:1 !important;
    white-space:nowrap !important;
  }
  .modal-actions > button,
  .saved-completion-actions > button,
  .saved-completion-actions > .completed-share-actions > summary {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:4px;
  }
  .modal-actions > button::before,
  .saved-completion-actions > button::before,
  .saved-completion-actions > .completed-share-actions > summary::before {
    display:inline-grid;
    min-width:13px;
    place-items:center;
    font-size:14px;
    font-weight:950;
    line-height:1;
  }

  .modal-actions .close-action::before,
  .modal-actions [class*="close-"]::before {
    content:"×";
    font-size:17px;
  }
  .modal-actions button[type="submit"]::before {
    content:"✓";
  }
  #coach-session-form button[type="submit"]::before {
    content:"↵";
    font-size:16px;
  }
  #save-session-template::before,
  #workout-template-form button[type="submit"]::before,
  #warmup-template-form button[type="submit"]::before {
    content:"＋▤";
    min-width:20px;
    font-size:11px;
    letter-spacing:-2px;
  }
  #back-details::before {
    content:"‹";
    font-size:18px;
  }
  #view-plan-btn::before,
  #preview-schedule-template::before,
  #design-intervals-plan-btn::before {
    content:"▣";
  }
  #preview-copy-template::before {
    content:"⧉";
  }
  #preview-edit-template::before,
  #edit-completion-btn::before,
  .modal-actions .edit-athlete-profile-view::before {
    content:"✎";
  }
  #manage-intervals-pairing-btn::before {
    content:"↔";
  }
  .saved-completion-actions > .completed-share-actions > summary::before,
  #share-completed-btn::before {
    content:"↗";
  }
  #download-completed-btn::before {
    content:"↓";
  }
  .modal-actions .danger-btn::before,
  .modal-actions button.danger::before {
    content:"!";
  }

  .completed-share-actions-menu {
    min-width:166px;
    padding:6px;
  }
  .completed-share-actions-menu .secondary-btn {
    min-height:31px;
    padding:5px 7px;
    font-size:9.5px;
  }
}

@media (max-width:380px) {
  .modal-actions > button,
  .coach-session-workout-modal .modal-actions > button,
  .coach-session-editor-modal .modal-actions > button,
  .saved-completion-actions > button,
  .saved-completion-actions > .completed-share-actions > summary {
    flex:0 1 auto !important;
    min-height:30px !important;
    padding:4px 6px !important;
    font-size:9px !important;
  }
}

/* v394 RacePace visual workout flow test */
.workout-builder .visual-workout-flow-test {
  overflow:hidden;
  padding:0;
  border:1px solid rgba(0,179,255,.56);
  background:#f4f8fa;
  box-shadow:0 18px 42px rgba(0,30,58,.13),0 0 0 1px rgba(0,179,255,.12);
}
.workout-builder .visual-workout-flow-test .visual-workout-heading {
  min-height:82px;
  margin:0;
  padding:14px 17px;
  align-items:center;
  color:#fff;
  background:linear-gradient(120deg,#000 0%,#071827 56%,#0d2c44 100%);
  border-bottom:2px solid #00b3ff;
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.08);
}
.workout-builder .visual-workout-heading-brand {
  display:flex;
  align-items:center;
  min-width:0;
  gap:12px;
}
.workout-builder .visual-workout-rp-mark {
  display:grid;
  flex:0 0 48px;
  width:48px;
  height:48px;
  place-items:center;
  border:1px solid rgba(0,179,255,.72);
  border-radius:13px;
  background:linear-gradient(145deg,#071828,#000);
  color:#00b3ff;
  font-family:Oswald,sans-serif;
  font-size:21px;
  font-weight:700;
  font-style:italic;
  letter-spacing:-.06em;
  box-shadow:0 0 16px rgba(0,179,255,.28),inset 0 0 15px rgba(0,179,255,.1);
}
.workout-builder .visual-workout-flow-test .visual-workout-heading .eyebrow { color:#50d7ff; font-size:9px; }
.workout-builder .visual-workout-flow-test .visual-workout-heading h3 { margin:2px 0 3px; color:#fff; font:600 20px Oswald,sans-serif; letter-spacing:.02em; text-transform:uppercase; }
.workout-builder .visual-workout-flow-test .visual-workout-heading p { max-width:690px; color:#b9cfdb; font-size:10px; }
.workout-builder .visual-workout-flow-test .visual-workout-hint {
  border-color:rgba(0,179,255,.55);
  background:rgba(0,179,255,.1);
  color:#8be4ff;
  box-shadow:inset 0 0 12px rgba(0,179,255,.08);
}
.workout-builder .visual-workout-flow-test .visual-workout-layout {
  grid-template-columns:minmax(190px,225px) minmax(0,1fr);
  gap:0;
}
.workout-builder .visual-workout-flow-test .visual-workout-palette {
  max-height:650px;
  padding:12px;
  border:0;
  border-right:1px solid #d9e5eb;
  border-radius:0;
  background:linear-gradient(180deg,#f8fbfc,#eef5f8);
  box-shadow:none;
}
.workout-builder .visual-workout-palette-head {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:8px;
  margin:-2px 0 12px;
  padding:0 1px 10px;
  border-bottom:1px solid #d7e4ea;
}
.workout-builder .visual-workout-palette-head strong { color:#0d2232; font:600 13px Oswald,sans-serif; text-transform:uppercase; }
.workout-builder .visual-workout-palette-head span { color:#71808b; font-size:8px; font-weight:800; }
.workout-builder .visual-workout-flow-test .visual-palette-block {
  position:relative;
  grid-template-columns:30px minmax(0,1fr) auto;
  grid-template-rows:auto auto auto;
  column-gap:8px;
  min-height:62px;
  padding:8px;
  border-radius:10px;
  border-color:#d5e1e6;
  background:#fff;
  box-shadow:0 3px 9px rgba(13,34,50,.05);
}
.workout-builder .visual-workout-flow-test .visual-palette-block::before {
  content:'▦';
  grid-column:1;
  grid-row:1 / 4;
  display:grid;
  width:28px;
  height:28px;
  place-items:center;
  align-self:center;
  border-radius:8px;
  background:#eaf8fd;
  color:#087ca7;
  font-size:15px;
  font-weight:900;
}
.workout-builder .visual-workout-flow-test .visual-palette-warmup::before { content:'↗'; background:#eaf8ee; color:#2d8a65; }
.workout-builder .visual-workout-flow-test .visual-palette-set::before { content:'↻'; background:#eaf3ff; color:#0047ab; }
.workout-builder .visual-workout-flow-test .visual-palette-step::before { content:'▶'; background:#f0ebff; color:#6a3dc0; }
.workout-builder .visual-workout-flow-test .visual-palette-recovery::before { content:'◷'; background:#fff4e9; color:#df6f13; }
.workout-builder .visual-workout-flow-test .visual-palette-active-recovery::before { content:'↻'; background:#eaf8ee; color:#2d8a65; }
.workout-builder .visual-workout-flow-test .visual-palette-cooldown::before { content:'↘'; background:#e9f8fa; color:#008ba3; }
.workout-builder .visual-workout-flow-test .visual-palette-pyramid::before { content:'△'; background:#f4edff; color:#7a54a3; }
.workout-builder .visual-workout-flow-test .visual-palette-block small,
.workout-builder .visual-workout-flow-test .visual-palette-block strong,
.workout-builder .visual-workout-flow-test .visual-palette-block span { grid-column:2; min-width:0; }
.workout-builder .visual-workout-flow-test .visual-palette-block small { font-size:7px; }
.workout-builder .visual-workout-flow-test .visual-palette-block strong { font-size:10px; }
.workout-builder .visual-workout-flow-test .visual-palette-block span { font-size:8px; }
.workout-builder .visual-workout-flow-test .visual-palette-use {
  grid-column:3;
  grid-row:1 / 4;
  align-self:center;
  min-width:34px;
  min-height:28px;
  padding:4px 6px;
  border:1px solid rgba(0,179,255,.32);
  border-radius:8px;
  background:#f0faff;
  color:#087ca7;
  font-size:8px;
  font-weight:900;
}
.workout-builder .visual-workout-stage { padding:12px; background:#fff; }
.workout-builder .visual-workout-stage-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:9px;
  padding:1px 2px;
}
.workout-builder .visual-workout-stage-head > div { display:grid; gap:1px; }
.workout-builder .visual-workout-stage-head strong { color:#0d2232; font-size:11px; }
.workout-builder .visual-workout-stage-head span { color:#71808b; font-size:8px; }
.workout-builder .visual-workout-stage-key { display:flex; align-items:center; gap:5px; font-weight:800; }
.workout-builder .visual-workout-stage-key i { width:7px; height:7px; border-radius:50%; background:#00b3ff; box-shadow:0 0 0 3px rgba(0,179,255,.12); }
.workout-builder .visual-workout-flow-test .visual-workout-canvas {
  display:block;
  min-height:360px;
  padding:12px;
  overflow:hidden;
  border:1px solid #dce8ed;
  border-radius:14px;
  background-color:#fbfdfe;
  background-image:radial-gradient(circle at 1px 1px,rgba(8,124,167,.12) 1px,transparent 0);
  background-size:18px 18px;
}
.workout-builder .visual-workout-flow-test .visual-workout-canvas::before { display:none; }
.workout-builder .visual-flow-scroll {
  width:100%;
  overflow-x:auto;
  overflow-y:hidden;
  padding:17px 4px 12px;
  overscroll-behavior-inline:contain;
  scrollbar-color:#087ca7 #e5f0f4;
}
.workout-builder .visual-flow-row {
  display:flex;
  align-items:center;
  width:max-content;
  min-width:100%;
  min-height:224px;
  gap:0;
}
.workout-builder .visual-flow-connector {
  display:flex;
  flex:0 0 48px;
  align-items:center;
  justify-content:center;
  position:relative;
  height:38px;
}
.workout-builder .visual-flow-connector i {
  position:absolute;
  left:0;
  right:0;
  top:50%;
  height:2px;
  background:linear-gradient(90deg,#97adb8,#087ca7);
}
.workout-builder .visual-flow-connector i::after {
  content:'';
  position:absolute;
  right:-1px;
  top:-4px;
  border-top:5px solid transparent;
  border-bottom:5px solid transparent;
  border-left:7px solid #087ca7;
}
.workout-builder .visual-flow-connector span {
  position:relative;
  z-index:1;
  display:grid;
  min-width:22px;
  height:22px;
  padding:0 5px;
  place-items:center;
  border:1px solid #b8ccd5;
  border-radius:999px;
  background:#fff;
  color:#087ca7;
  font-size:9px;
  font-weight:900;
  text-transform:uppercase;
}
.workout-builder .visual-flow-insert-step {
  position:relative;
  z-index:2;
  display:grid;
  width:24px;
  min-width:24px;
  height:24px;
  padding:0;
  place-items:center;
  border:1px solid #9fc6d5;
  border-radius:999px;
  background:#fff;
  color:#087ca7;
  box-shadow:0 2px 6px rgba(8,124,167,.12);
  font-size:13px;
  font-weight:900;
  line-height:1;
  cursor:pointer;
}
.workout-builder .visual-flow-insert-step:hover,
.workout-builder .visual-flow-insert-step:focus-visible {
  border-color:#00b3ff;
  color:#005fd8;
  box-shadow:0 0 0 3px rgba(0,179,255,.14);
  outline:none;
}
.workout-builder .visual-workout-flow-test .visual-flow-card,
.workout-builder .visual-workout-flow-test .visual-workout-block {
  position:relative;
  display:flex;
  flex:0 0 142px;
  width:142px;
  min-height:178px;
  margin:0;
  padding:28px 12px 12px;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  border:2px solid #00b3ff;
  border-radius:17px;
  background:#fff;
  text-align:center;
  box-shadow:0 10px 22px rgba(13,34,50,.09);
  cursor:grab;
}
.workout-builder .visual-workout-flow-test .visual-flow-card::before,
.workout-builder .visual-workout-flow-test .visual-workout-block::before,
.workout-builder .visual-workout-flow-test .visual-workout-set::before,
.workout-builder .visual-workout-flow-test .visual-workout-recovery::before { display:none; }
.workout-builder .visual-flow-card-number {
  position:absolute;
  top:-12px;
  left:-10px;
  display:grid;
  min-width:25px;
  height:25px;
  padding:0 5px;
  place-items:center;
  border:3px solid #fff;
  border-radius:999px;
  background:#087ca7;
  color:#fff;
  font-size:9px;
  font-weight:900;
  box-shadow:0 3px 8px rgba(13,34,50,.18);
}
.workout-builder .visual-flow-card-icon {
  display:grid;
  width:37px;
  height:37px;
  place-items:center;
  border-radius:12px;
  background:#eaf8fd;
  color:#087ca7;
  font-size:19px;
  font-weight:900;
}
.workout-builder .visual-workout-flow-test .visual-flow-card small,
.workout-builder .visual-workout-flow-test .visual-workout-block-copy small { color:#087ca7; font-size:8px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.workout-builder .visual-workout-flow-test .visual-flow-card strong,
.workout-builder .visual-workout-flow-test .visual-workout-block-copy strong { color:#0d2232; font-size:14px; line-height:1.12; }
.workout-builder .visual-workout-flow-test .visual-flow-card > span:not(.visual-flow-card-number):not(.visual-flow-card-icon),
.workout-builder .visual-workout-flow-test .visual-workout-block-copy span { color:#627684; font-size:9px; line-height:1.25; }
.workout-builder .visual-workout-flow-test .visual-flow-card b { margin-top:2px; color:#087ca7; font-size:8px; }
.workout-builder .visual-workout-flow-test .visual-workout-block-copy { justify-items:center; gap:4px; }
.workout-builder .visual-flow-card-warmup { border-color:#2d8a65 !important; background:linear-gradient(160deg,#f0fbf5,#fff) !important; }
.workout-builder .visual-flow-card-warmup .visual-flow-card-number,
.workout-builder .visual-flow-card-warmup .visual-flow-card-icon { background:#2d8a65; color:#fff; }
.workout-builder .visual-flow-card-work { border-color:#174f6e; background:linear-gradient(160deg,#edf5f8,#fff); }
.workout-builder .visual-flow-card-work .visual-flow-card-number,
.workout-builder .visual-flow-card-work .visual-flow-card-icon { background:#174f6e; color:#fff; }
.workout-builder .visual-flow-card-recovery { border-color:#ef7a19; background:linear-gradient(160deg,#fff5eb,#fff); }
.workout-builder .visual-flow-card-recovery .visual-flow-card-icon { background:#ef7a19; color:#fff; }
.workout-builder .visual-flow-standalone-recovery.is-active-recovery .visual-flow-card-recovery { border-color:#2d8a65; background:linear-gradient(160deg,#f0fbf5,#fff); }
.workout-builder .visual-flow-standalone-recovery.is-active-recovery .visual-flow-card-icon { background:#2d8a65; }
.workout-builder .visual-flow-card-cooldown { border-color:#008ba3 !important; background:linear-gradient(160deg,#eefbfc,#fff) !important; }
.workout-builder .visual-flow-card-cooldown .visual-flow-card-number,
.workout-builder .visual-flow-card-cooldown .visual-flow-card-icon { background:#008ba3; color:#fff; }
.workout-builder .visual-workout-flow-test .visual-workout-set.visual-flow-set {
  flex:0 0 auto;
  min-width:210px;
  margin:0;
  padding:10px;
  border:2px dashed rgba(0,71,171,.56);
  border-radius:19px;
  background:linear-gradient(155deg,rgba(234,243,255,.88),rgba(255,255,255,.95));
  box-shadow:0 10px 25px rgba(0,71,171,.08);
  cursor:grab;
}
.workout-builder .visual-workout-flow-test .visual-workout-set > header { margin:0 0 8px; }
.workout-builder .visual-workout-flow-test .visual-workout-set > header small { color:#0047ab; font-size:8px; }
.workout-builder .visual-workout-flow-test .visual-workout-set > header strong { color:#0d2232; font-size:11px; }
.workout-builder .visual-workout-flow-test .visual-workout-step-list {
  display:flex;
  align-items:center;
  gap:0;
}
.workout-builder .visual-workout-flow-test .visual-workout-step {
  display:flex;
  flex:0 0 auto;
  min-width:0;
  margin:0;
  padding:0;
  flex-direction:column;
  align-items:stretch;
  gap:7px;
  border:0;
  border-radius:15px;
  background:transparent;
  box-shadow:none;
}
.workout-builder .visual-flow-repeat-group {
  padding:8px !important;
  border:1px dashed rgba(97,66,199,.48) !important;
  background:rgba(255,255,255,.54) !important;
}
.workout-builder .visual-flow-repeat-title {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  min-height:22px;
  color:#0047ab;
  font-size:9px;
  font-weight:900;
  text-transform:uppercase;
}
.workout-builder .visual-flow-repeat-body { display:flex; align-items:center; }
.workout-builder .visual-workout-flow-test .visual-workout-step .visual-workout-block-actions {
  align-self:center;
  justify-content:center;
  gap:3px;
  padding:3px;
  border:1px solid #d9e6eb;
  border-radius:9px;
  background:rgba(255,255,255,.92);
}
.workout-builder .visual-workout-flow-test .visual-workout-block > .visual-workout-block-actions {
  position:absolute;
  right:7px;
  top:6px;
  gap:2px;
}
.workout-builder .visual-workout-flow-test .visual-workout-block-actions button,
.workout-builder .visual-workout-flow-test .visual-workout-recovery button {
  min-width:24px;
  min-height:23px;
  padding:2px 5px;
  border-radius:7px;
  font-size:8px;
}
.workout-builder .visual-workout-flow-test .visual-workout-set > header .visual-workout-block-actions { gap:2px; }
.workout-builder .visual-workout-flow-test .visual-workout-add-step {
  flex:0 0 auto;
  width:auto;
  min-width:78px;
  min-height:30px;
  margin-left:8px;
  padding:5px 9px;
  border-radius:999px;
}
.workout-builder .visual-workout-flow-test .visual-workout-canvas-end {
  margin-top:8px;
  padding:9px 12px;
  border-color:rgba(0,179,255,.45);
  background:rgba(0,179,255,.045);
  text-align:center;
}
.workout-builder .visual-workout-flow-test .visual-workout-recovery.visual-flow-card-set-rest {
  flex:0 0 116px;
  width:116px;
  min-height:120px;
  padding:14px 9px 9px;
  border:1px solid #8ba0ac;
  background:#f5f8f9;
}
.workout-builder .visual-flow-overview {
  margin-top:10px;
  overflow:hidden;
  border:1px solid #dce7eb;
  border-radius:12px;
  background:rgba(255,255,255,.95);
}
.workout-builder .visual-flow-overview-stats {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  border-bottom:1px solid #e0eaee;
}
.workout-builder .visual-flow-overview-stats > div { padding:9px 10px; text-align:center; }
.workout-builder .visual-flow-overview-stats > div + div { border-left:1px solid #e0eaee; }
.workout-builder .visual-flow-overview-stats small { display:block; color:#71808b; font-size:7px; font-weight:800; text-transform:uppercase; }
.workout-builder .visual-flow-overview-stats strong { display:block; margin-top:2px; color:#0d2232; font-size:11px; }
.workout-builder .visual-flow-map { padding:9px 11px 10px; }
.workout-builder .visual-flow-map-head { display:flex; justify-content:space-between; gap:10px; margin-bottom:7px; }
.workout-builder .visual-flow-map-head strong { color:#0d2232; font-size:9px; }
.workout-builder .visual-flow-map-head span { color:#71808b; font-size:7px; }
.workout-builder .visual-flow-map-track { display:flex; height:7px; overflow:hidden; border-radius:999px; background:#e8eef1; }
.workout-builder .visual-flow-map-track span { flex:1 1 0; min-width:12px; }
.workout-builder .visual-flow-map-track .is-warmup { background:#2d8a65; }
.workout-builder .visual-flow-map-track .is-work { background:#174f6e; }
.workout-builder .visual-flow-map-track .is-recovery { background:#ef7a19; }
.workout-builder .visual-flow-map-track .is-active-recovery { background:#74b548; }
.workout-builder .visual-flow-map-track .is-cooldown { background:#008ba3; }
.workout-builder .visual-flow-map-legend { display:flex; flex-wrap:wrap; gap:8px 13px; margin-top:7px; }
.workout-builder .visual-flow-map-legend span { display:flex; align-items:center; gap:4px; color:#627684; font-size:7px; font-weight:800; }
.workout-builder .visual-flow-map-legend span::before { content:''; width:6px; height:6px; border-radius:50%; background:#8da0a9; }
.workout-builder .visual-flow-map-legend .is-warmup::before { background:#2d8a65; }
.workout-builder .visual-flow-map-legend .is-work::before { background:#174f6e; }
.workout-builder .visual-flow-map-legend .is-recovery::before { background:#ef7a19; }
.workout-builder .visual-flow-map-legend .is-active-recovery::before { background:#74b548; }
.workout-builder .visual-flow-map-legend .is-cooldown::before { background:#008ba3; }
.workout-builder .visual-flow-rpe-chart {
  display:grid;
  grid-template-columns:18px minmax(0,1fr);
  gap:6px;
  align-items:start;
}
.workout-builder .visual-flow-rpe-scale {
  display:flex;
  height:80px;
  margin-top:16px;
  flex-direction:column;
  justify-content:space-between;
  color:#7a8b95;
  font-size:7px;
  font-weight:800;
  line-height:1;
  text-align:right;
}
.workout-builder .visual-flow-rpe-plot {
  position:relative;
  min-width:0;
  height:112px;
  overflow-x:auto;
  overflow-y:hidden;
  border-left:1px solid #cfdde4;
  border-bottom:1px solid #cfdde4;
  background:repeating-linear-gradient(to top,transparent 0,transparent 15px,rgba(207,221,228,.72) 15px,rgba(207,221,228,.72) 16px);
  scrollbar-width:thin;
}
.workout-builder .visual-flow-rpe-bars {
  display:flex;
  width:max-content;
  min-width:100%;
  height:112px;
  box-sizing:border-box;
  padding:16px 4px;
  align-items:flex-end;
  gap:4px;
}
.workout-builder .visual-flow-rpe-bar {
  position:relative;
  flex:1 0 22px;
  max-width:54px;
  height:calc(var(--rpe) * 8px);
  min-height:8px;
  border-radius:5px 5px 2px 2px;
  background:#8da0a9;
  box-shadow:inset 0 0 0 1px rgba(13,34,50,.08);
}
.workout-builder .visual-flow-rpe-bar b {
  position:absolute;
  top:-14px;
  left:50%;
  transform:translateX(-50%);
  color:#344c5a;
  font-size:7px;
  line-height:1;
  white-space:nowrap;
}
.workout-builder .visual-flow-rpe-bar small {
  position:absolute;
  top:calc(100% + 4px);
  left:50%;
  max-width:48px;
  transform:translateX(-50%);
  overflow:hidden;
  color:#627684;
  font-size:7px;
  font-weight:800;
  line-height:1;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.workout-builder .visual-flow-rpe-bar.is-warmup { background:#2d8a65; }
.workout-builder .visual-flow-rpe-bar.is-work { background:#174f6e; }
.workout-builder .visual-flow-rpe-bar.is-recovery { background:#ef7a19; }
.workout-builder .visual-flow-rpe-bar.is-active-recovery { background:#74b548; }
.workout-builder .visual-flow-rpe-bar.is-rest { background:#8b9aa5; }
.workout-builder .visual-flow-rpe-bar.is-cooldown { background:#008ba3; }
.workout-builder .visual-flow-map-legend .is-rest::before { background:#8b9aa5; }

.workout-builder .visual-workout-flow-test .visual-workout-canvas .is-selected {
  outline:3px solid rgba(0,179,255,.34);
  outline-offset:3px;
  box-shadow:0 0 0 2px #fff,0 0 22px rgba(0,179,255,.34);
}

@media (max-width:1100px), (min-width:760px) and (pointer:coarse) {
  .workout-builder .visual-workout-flow-test .visual-workout-layout { grid-template-columns:1fr; }
  .workout-builder .visual-workout-flow-test .visual-workout-palette {
    max-height:none;
    border-right:0;
    border-bottom:1px solid #d9e5eb;
  }
  .workout-builder .visual-workout-flow-test .visual-workout-palette > [data-visual-palette] { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:7px; }
  .workout-builder .visual-workout-flow-test .visual-workout-palette-group,
  .workout-builder .visual-workout-flow-test .visual-workout-palette-group + .visual-workout-palette-group { margin:0; padding:0; border:0; }
}
@media (max-width:760px) {
  .workout-builder .visual-workout-flow-test .visual-workout-heading { min-height:0; padding:10px; }
  .workout-builder .visual-workout-rp-mark { flex-basis:38px; width:38px; height:38px; font-size:17px; }
  .workout-builder .visual-workout-flow-test .visual-workout-heading h3 { font-size:16px; }
  .workout-builder .visual-workout-flow-test .visual-workout-heading p { font-size:9px; }
  .workout-builder .visual-workout-flow-test .visual-workout-hint { display:none; }
  .workout-builder .visual-workout-flow-test .visual-workout-palette > [data-visual-palette] { display:block; }
  .workout-builder .visual-workout-stage { padding:8px; }
  .workout-builder .visual-workout-stage-head { align-items:flex-start; flex-direction:column; }
  .workout-builder .visual-workout-flow-test .visual-workout-canvas { min-height:0; padding:8px; }
  .workout-builder .visual-flow-scroll { overflow:visible; padding:10px 2px; }
  .workout-builder .visual-flow-row { display:flex; width:100%; min-width:0; min-height:0; flex-direction:column; align-items:stretch; }
  .workout-builder .visual-flow-connector { flex-basis:32px; width:100%; height:32px; }
  .workout-builder .visual-flow-connector i { top:0; bottom:0; left:50%; right:auto; width:2px; height:auto; background:linear-gradient(#97adb8,#087ca7); }
  .workout-builder .visual-flow-connector i::after { right:-4px; top:auto; bottom:-1px; border-top:7px solid #087ca7; border-right:5px solid transparent; border-left:5px solid transparent; border-bottom:0; }
  .workout-builder .visual-workout-flow-test .visual-flow-card,
  .workout-builder .visual-workout-flow-test .visual-workout-block { width:100%; min-height:105px; flex-basis:auto; padding:20px 12px 10px; }
  .workout-builder .visual-workout-flow-test .visual-workout-set.visual-flow-set { width:100%; min-width:0; }
  .workout-builder .visual-workout-flow-test .visual-workout-step-list,
  .workout-builder .visual-flow-repeat-body { flex-direction:column; align-items:stretch; }
  .workout-builder .visual-workout-flow-test .visual-workout-step { width:100%; }
  .workout-builder .visual-workout-flow-test .visual-workout-step .visual-flow-card { width:100%; }
  .workout-builder .visual-workout-flow-test .visual-workout-add-step { width:auto; min-width:78px; min-height:30px; margin:8px 0 0; align-self:flex-start; flex-basis:auto; }
  .workout-builder .visual-workout-flow-test .visual-workout-recovery.visual-flow-card-set-rest { width:100%; min-height:80px; flex-basis:auto; }
  .workout-builder .visual-flow-overview-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .workout-builder .visual-flow-overview-stats > div:nth-child(3) { border-left:0; border-top:1px solid #e0eaee; }
  .workout-builder .visual-flow-overview-stats > div:nth-child(4) { border-top:1px solid #e0eaee; }
}
@media (min-width:1200px) and (pointer:fine) {
  .coach-session-editor-modal .workout-builder .structured-builder,
  .template-editor-modal .workout-builder .structured-builder {
    grid-template-columns:minmax(0,1.62fr) minmax(340px,.68fr);
  }
}

/* v395 larger workout editor, compact desktop chrome and usable Fine-tune layout */
@media (min-width:1000px) {
  .coach-session-editor-backdrop,
  .template-workout-editor-backdrop {
    padding:6px;
  }
  .coach-session-editor-backdrop .coach-session-editor-modal,
  .template-workout-editor-backdrop .template-editor-modal {
    width:calc(100vw - 12px) !important;
    max-width:calc(100vw - 12px) !important;
    height:calc(100vh - 12px);
    height:calc(100dvh - 12px);
    max-height:calc(100vh - 12px);
    max-height:calc(100dvh - 12px);
    border-radius:14px;
  }
  .coach-session-editor-backdrop .coach-session-editor-modal .modal-top,
  .template-workout-editor-backdrop .template-editor-modal .modal-top {
    min-height:46px;
    padding:7px 48px 6px 14px;
  }
  .coach-session-editor-backdrop .coach-session-editor-modal .modal-top .eyebrow,
  .template-workout-editor-backdrop .template-editor-modal .modal-top .eyebrow {
    font-size:7px;
    line-height:1;
    letter-spacing:.12em;
  }
  .coach-session-editor-backdrop .coach-session-editor-modal .modal-top h2,
  .template-workout-editor-backdrop .template-editor-modal .modal-top h2 {
    margin:2px 0 0;
    font-size:21px;
    line-height:1;
  }
  .coach-session-editor-backdrop .coach-session-editor-modal .modal-top .close,
  .template-workout-editor-backdrop .template-editor-modal .modal-top .close {
    top:8px;
    right:10px;
    width:29px;
    height:29px;
    min-height:29px;
    font-size:18px;
  }
  .coach-session-editor-backdrop .coach-session-editor-modal .modal-body,
  .template-workout-editor-backdrop .template-editor-modal .modal-body {
    padding:12px 14px;
  }
  .coach-session-editor-backdrop .coach-session-editor-modal .modal-body > form > .modal-actions,
  .template-workout-editor-backdrop .template-editor-modal .modal-body > form > .modal-actions {
    bottom:-12px;
    margin-left:-14px;
    margin-right:-14px;
    padding:9px 14px 10px;
  }

  .workout-builder .visual-workout-flow-test .visual-workout-heading {
    min-height:54px;
    padding:7px 11px;
  }
  .workout-builder .visual-workout-heading-brand {
    gap:8px;
  }
  .workout-builder .visual-workout-rp-mark {
    flex-basis:34px;
    width:34px;
    height:34px;
    border-radius:9px;
    font-size:15px;
  }
  .workout-builder .visual-workout-flow-test .visual-workout-heading .eyebrow {
    font-size:7px;
  }
  .workout-builder .visual-workout-flow-test .visual-workout-heading h3 {
    margin:1px 0 1px;
    font-size:16px;
    line-height:1;
  }
  .workout-builder .visual-workout-flow-test .visual-workout-heading p {
    max-width:760px;
    overflow:hidden;
    font-size:8.5px;
    line-height:1.2;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .workout-builder .visual-workout-flow-test .visual-workout-hint {
    min-height:25px;
    padding:4px 8px;
    font-size:7.5px;
  }
}

/* Medium desktop and tablet: put Fine-tune below the visual flow at full width. */
@media (min-width:1000px) and (max-width:1499px) {
  .coach-session-editor-modal .workout-builder .structured-builder,
  .template-workout-editor-backdrop .workout-builder .structured-builder {
    grid-template-columns:minmax(0,1fr) !important;
    gap:14px;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details,
  .template-workout-editor-backdrop .workout-builder .visual-workout-details {
    width:100%;
    height:auto !important;
    max-height:none !important;
    overflow:visible !important;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-body,
  .template-workout-editor-backdrop .workout-builder .visual-workout-details-body {
    height:auto !important;
    max-height:none !important;
    overflow:visible !important;
  }
}

/* Wide desktop: retain side-by-side editing but reserve a real working width for Fine-tune. */
@media (min-width:1500px) and (pointer:fine) {
  .coach-session-editor-modal .workout-builder .structured-builder,
  .template-workout-editor-backdrop .workout-builder .structured-builder {
    grid-template-columns:minmax(0,1fr) minmax(520px,560px) !important;
    gap:14px;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-scroll-content,
  .template-workout-editor-backdrop .workout-builder .visual-workout-details-scroll-content {
    grid-template-columns:minmax(0,1fr) !important;
  }
  .coach-session-editor-modal .workout-builder .sets-count-row,
  .template-workout-editor-backdrop .workout-builder .sets-count-row {
    grid-column:1;
  }
  .coach-session-editor-modal .workout-builder .builder-row.reps-builder,
  .template-workout-editor-backdrop .workout-builder .builder-row.reps-builder {
    grid-template-columns:minmax(88px,.3fr) minmax(0,1fr) minmax(0,1fr) !important;
    gap:10px;
  }
  .coach-session-editor-modal .workout-builder .pace-guidance-builder,
  .template-workout-editor-backdrop .workout-builder .pace-guidance-builder {
    grid-template-columns:minmax(0,1fr) !important;
  }
}

/* v396 visual builder navigation, compact editor controls and consistent session date */
.workout-builder .visual-workout-flow-test .visual-workout-heading {
  min-height:42px;
  padding:5px 10px;
  margin-bottom:0;
  align-items:center;
}
.workout-builder .visual-workout-heading-brand { gap:8px; }
.workout-builder .visual-workout-rp-logo {
  display:block;
  flex:0 0 34px;
  width:34px;
  height:34px;
  object-fit:cover;
  border-radius:9px;
  box-shadow:0 0 12px rgba(0,179,255,.28);
}
.workout-builder .visual-workout-flow-test .visual-workout-heading h3 {
  margin:0;
  color:#fff;
  font:600 17px/1 Oswald,sans-serif;
  letter-spacing:.02em;
  text-transform:uppercase;
}

/* Keep the four builder groups across the top. Their opened list becomes a left drawer. */
.workout-builder .visual-workout-flow-test .visual-workout-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) !important;
  gap:0 !important;
}
.workout-builder .visual-workout-flow-test .visual-workout-palette {
  max-height:none !important;
  overflow:visible !important;
  padding:10px 12px !important;
  border:0 !important;
  border-bottom:1px solid #d9e5eb !important;
  border-radius:0 !important;
}
.workout-builder .visual-workout-flow-test .visual-workout-palette > [data-visual-palette] {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:7px;
}
.workout-builder .visual-workout-flow-test .visual-workout-palette-group,
.workout-builder .visual-workout-flow-test .visual-workout-palette-group + .visual-workout-palette-group {
  min-width:0;
  margin:0;
  padding:0;
  border:0;
}
.workout-builder .visual-workout-workspace {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  min-width:0;
  align-items:start;
}
.workout-builder .visual-workout-workspace.has-open-palette {
  grid-template-columns:minmax(245px,315px) minmax(0,1fr);
}
.workout-builder .visual-workout-palette-drawer {
  min-width:0;
  max-height:640px;
  padding:10px;
  overflow:auto;
  border-right:1px solid #d9e5eb;
  background:linear-gradient(180deg,#f3f9fb,#edf5f8);
  scrollbar-color:#087ca7 #e5f0f4;
}
.workout-builder .visual-workout-palette-drawer[hidden] { display:none !important; }
.workout-builder .visual-workout-palette-drawer .visual-workout-palette-list,
.workout-builder .visual-workout-palette-drawer .visual-workout-palette-list.compact {
  display:grid;
  gap:8px;
  margin:0;
  padding:0;
  overflow:visible;
}
.workout-builder .visual-workout-palette-drawer .visual-palette-block,
.workout-builder .visual-workout-palette-drawer .visual-workout-palette-list.compact .visual-palette-block {
  width:100%;
  min-width:0;
  flex-basis:auto;
}
.workout-builder .visual-workout-stage { min-width:0; }

/* Fine-tune navigation and compact two-column step editing on full-width tablet/laptop layouts. */
.workout-builder .rep-line-head-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:6px;
  min-width:0;
}
.workout-builder .visual-back-to-flow {
  display:inline-flex;
  min-width:0;
  min-height:29px;
  padding:4px 8px;
  align-items:center;
  justify-content:center;
  gap:5px;
  border:1px solid rgba(0,179,255,.42);
  border-radius:8px;
  background:#eefaff;
  color:#087ca7;
  font:800 9px/1 DM Sans,sans-serif;
  cursor:pointer;
}
.workout-builder .visual-back-to-flow span { font-size:14px; line-height:1; }
.workout-builder .visual-back-to-flow b { font:inherit; white-space:nowrap; }
.workout-builder .visual-back-to-flow:hover,
.workout-builder .visual-back-to-flow:focus { border-color:#00b3ff; background:#dff6ff; color:#005d84; }
.workout-builder .visual-detail-back-row {
  display:flex;
  justify-content:flex-end;
  margin:0 0 6px;
}
.workout-builder .rep-step-editor-grid {
  display:grid;
  grid-template-columns:minmax(0,1.42fr) minmax(280px,.72fr);
  gap:12px;
  align-items:start;
}
.workout-builder .rep-step-target-panel,
.workout-builder .rep-step-rpe-panel { min-width:0; }
.workout-builder .rep-step-rpe-panel .rpe-requirement-control {
  height:100%;
  margin-top:0;
  box-sizing:border-box;
}
.workout-builder .visual-fine-tune-target {
  outline:3px solid rgba(0,179,255,.28);
  outline-offset:3px;
  border-radius:12px;
}

/* Use RacePace's Monday-first picker everywhere so the visible format is always dd/mm/yyyy. */
.coach-session-editor-modal .session-date-field { position:relative; }
.coach-session-editor-modal .session-date-native {
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  padding:0 !important;
  opacity:0 !important;
  pointer-events:none !important;
}
.coach-session-editor-modal .monday-date-picker {
  display:block !important;
  position:relative;
  min-width:0;
}
.coach-session-editor-modal .monday-date-trigger {
  display:flex;
  width:100%;
  min-height:46px;
  padding:0 13px;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border:1px solid #dce3e8;
  border-radius:12px;
  background:#fff;
  color:#061a26;
  font:inherit;
  font-size:15px;
  text-align:left;
  cursor:pointer;
}
.coach-session-editor-modal .monday-date-trigger:focus-visible { outline:3px solid rgba(0,179,255,.28); border-color:#00b3ff; }
.coach-session-editor-modal .monday-date-icon { position:relative; flex:0 0 16px; width:16px; height:16px; border:2px solid currentColor; border-radius:3px; }
.coach-session-editor-modal .monday-date-icon::before { content:""; position:absolute; left:-2px; right:-2px; top:3px; border-top:2px solid currentColor; }
.coach-session-editor-modal .monday-date-icon::after { content:""; position:absolute; left:2px; top:-5px; width:8px; height:4px; border-left:2px solid currentColor; border-right:2px solid currentColor; }
.coach-session-editor-modal .monday-date-popover {
  position:absolute;
  z-index:420;
  top:calc(100% + 7px);
  left:0;
  width:min(330px,calc(100vw - 44px));
  padding:11px;
  border:1px solid #cbd7df;
  border-radius:13px;
  background:#fff;
  box-shadow:0 18px 45px rgba(6,26,38,.24);
  color:#061a26;
}
.coach-session-editor-modal .monday-date-popover[hidden] { display:none; }
.coach-session-editor-modal .monday-date-header { display:grid; grid-template-columns:36px 1fr 36px; align-items:center; gap:7px; margin-bottom:7px; }
.coach-session-editor-modal .monday-date-header strong { text-align:center; font-size:14px; }
.coach-session-editor-modal .monday-date-header button,
.coach-session-editor-modal .monday-date-footer button { min-height:34px; border:0; border-radius:8px; background:#eef8fc; color:#07304a; cursor:pointer; font:inherit; font-weight:700; }
.coach-session-editor-modal .monday-date-header button { font-size:23px; line-height:1; }
.coach-session-editor-modal .monday-date-weekdays,
.coach-session-editor-modal .monday-date-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px; }
.coach-session-editor-modal .monday-date-weekdays { margin-bottom:4px; }
.coach-session-editor-modal .monday-date-weekdays span { padding:3px 0; text-align:center; color:#617382; font-size:10px; font-weight:800; }
.coach-session-editor-modal .monday-date-day { aspect-ratio:1; min-width:0; border:0; border-radius:8px; background:transparent; color:#102536; font:inherit; font-size:12px; cursor:pointer; }
.coach-session-editor-modal .monday-date-day:hover { background:#e8f7fd; }
.coach-session-editor-modal .monday-date-day.outside { color:#9aa8b1; }
.coach-session-editor-modal .monday-date-day.today { box-shadow:inset 0 0 0 1px #00b3ff; }
.coach-session-editor-modal .monday-date-day.selected { background:#005ee8; color:#fff; font-weight:800; box-shadow:none; }
.coach-session-editor-modal .monday-date-footer { display:flex; justify-content:flex-end; margin-top:7px; }
.coach-session-editor-modal .monday-date-footer button { padding:0 11px; }

/* Smaller sticky footer actions on tablet and desktop. */
@media (min-width:760px) {
  .coach-session-editor-modal .modal-actions > button,
  .template-editor-modal .modal-actions > button {
    min-height:32px !important;
    padding:6px 10px !important;
    border-radius:8px !important;
    font-size:10.5px !important;
    line-height:1 !important;
    white-space:nowrap !important;
  }
}

@media (min-width:760px) and (max-width:1499px) {
  .coach-session-editor-modal .workout-builder .rep-step-editor-grid,
  .template-editor-modal .workout-builder .rep-step-editor-grid {
    grid-template-columns:minmax(0,1.42fr) minmax(280px,.72fr);
  }
}
@media (min-width:1500px) {
  .coach-session-editor-modal .workout-builder .rep-step-editor-grid,
  .template-editor-modal .workout-builder .rep-step-editor-grid {
    grid-template-columns:minmax(0,1fr);
  }
}
@media (max-width:759px) {
  .workout-builder .visual-workout-flow-test .visual-workout-palette > [data-visual-palette] { display:block; }
  .workout-builder .visual-workout-workspace.has-open-palette { grid-template-columns:minmax(0,1fr); }
  .workout-builder .visual-workout-palette-drawer { max-height:330px; border-right:0; border-bottom:1px solid #d9e5eb; }
  .workout-builder .rep-step-editor-grid { grid-template-columns:minmax(0,1fr); }
  .workout-builder .visual-back-to-flow b { display:none; }
  .workout-builder .visual-back-to-flow { width:30px; padding:4px; }
  .coach-session-editor-modal .monday-date-popover { width:min(310px,calc(100vw - 34px)); }
}

/* v397 Fine-tuner below the visual session flow at every screen size. */
.coach-session-editor-modal .workout-builder .structured-builder,
.template-editor-modal .workout-builder .structured-builder,
.template-workout-editor-backdrop .workout-builder .structured-builder {
  display:grid;
  grid-template-columns:minmax(0,1fr) !important;
  gap:14px !important;
  align-items:start;
}
.coach-session-editor-modal .workout-builder .visual-workout-creator,
.template-editor-modal .workout-builder .visual-workout-creator,
.template-workout-editor-backdrop .workout-builder .visual-workout-creator,
.coach-session-editor-modal .workout-builder .visual-workout-details,
.template-editor-modal .workout-builder .visual-workout-details,
.template-workout-editor-backdrop .workout-builder .visual-workout-details {
  width:100%;
  min-width:0;
}
.coach-session-editor-modal .workout-builder .visual-workout-details,
.template-editor-modal .workout-builder .visual-workout-details,
.template-workout-editor-backdrop .workout-builder .visual-workout-details,
.coach-session-editor-modal .workout-builder .visual-workout-details-body,
.template-editor-modal .workout-builder .visual-workout-details-body,
.template-workout-editor-backdrop .workout-builder .visual-workout-details-body,
.coach-session-editor-modal .workout-builder [data-fine-tune-scroll],
.template-editor-modal .workout-builder [data-fine-tune-scroll],
.template-workout-editor-backdrop .workout-builder [data-fine-tune-scroll] {
  height:auto !important;
  max-height:none !important;
  overflow:visible !important;
}
@media (min-width:760px) {
  .coach-session-editor-modal .workout-builder .rep-step-editor-grid,
  .template-editor-modal .workout-builder .rep-step-editor-grid,
  .template-workout-editor-backdrop .workout-builder .rep-step-editor-grid {
    grid-template-columns:minmax(0,1.42fr) minmax(280px,.72fr) !important;
  }
}

/* v398 Fine-tuner compact layout refinement. */
.workout-builder .structured-segment-grid {
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:start;
}
.workout-builder .visual-detail-metric {
  display:block;
  min-width:0;
}
.workout-builder .visual-detail-back-row-shared {
  grid-column:1 / -1;
  justify-content:flex-end;
  margin:0;
}
.workout-builder .rep-step-leading-controls {
  display:grid;
  gap:8px;
  min-width:0;
  align-content:start;
}
.workout-builder .step-recovery-toggle {
  display:grid;
  gap:5px;
  margin:0;
  padding:8px;
  border:1px solid #d3e0e5;
  border-radius:10px;
  background:#f7faf9;
}
.workout-builder .step-recovery-toggle strong {
  color:#173848;
  font-size:.76rem;
  line-height:1.1;
}
.workout-builder .step-recovery-toggle-buttons {
  width:100%;
  min-width:0;
  flex-basis:auto;
}
.workout-builder .builder-row.reps-builder {
  grid-template-columns:minmax(145px,.58fr) minmax(0,1fr) minmax(0,1fr);
  align-items:end;
}
.workout-builder .compact-rpe-requirement {
  gap:9px;
}
.workout-builder .compact-rpe-requirement .rpe-requirement-fields {
  align-items:center;
}
.workout-builder .compact-rpe-requirement .rpe-requirement-divider {
  padding-bottom:0;
}
.workout-builder .compact-rpe-requirement .field {
  margin:0;
}
@media (max-width:759px) {
  .workout-builder .structured-segment-grid {
    grid-template-columns:minmax(0,1fr);
  }
  .workout-builder .visual-detail-back-row-shared {
    grid-column:1;
  }
  .workout-builder .builder-row.reps-builder {
    grid-template-columns:minmax(0,1fr);
  }
}

/* v399 Fine-tuner alignment and independent scroll window. */
.workout-builder .rep-step-leading-controls .reps-count-control > label {
  display:none !important;
}
.workout-builder .rep-step-leading-controls .reps-count-control {
  margin:0;
}
.workout-builder .builder-row.reps-builder {
  align-items:start !important;
}
.workout-builder .rep-step-leading-controls,
.workout-builder .rep-step-rpe-panel {
  align-self:start;
}
.workout-builder .rep-step-rpe-panel .rpe-requirement-control {
  margin-top:0 !important;
}

.coach-session-editor-modal .workout-builder .visual-workout-details,
.template-editor-modal .workout-builder .visual-workout-details,
.template-workout-editor-backdrop .workout-builder .visual-workout-details {
  width:calc(100% - 28px) !important;
  margin:0 14px 16px !important;
  box-sizing:border-box;
  overflow:hidden !important;
}
.coach-session-editor-modal .workout-builder .visual-workout-details[open],
.template-editor-modal .workout-builder .visual-workout-details[open],
.template-workout-editor-backdrop .workout-builder .visual-workout-details[open] {
  display:grid !important;
  grid-template-rows:auto minmax(0,1fr);
  min-height:0;
}
.coach-session-editor-modal .workout-builder .visual-workout-details[open] > summary,
.template-editor-modal .workout-builder .visual-workout-details[open] > summary,
.template-workout-editor-backdrop .workout-builder .visual-workout-details[open] > summary {
  position:relative;
  z-index:2;
  background:#fff;
}
.coach-session-editor-modal .workout-builder .visual-workout-details-body,
.template-editor-modal .workout-builder .visual-workout-details-body,
.template-workout-editor-backdrop .workout-builder .visual-workout-details-body,
.coach-session-editor-modal .workout-builder [data-fine-tune-scroll],
.template-editor-modal .workout-builder [data-fine-tune-scroll],
.template-workout-editor-backdrop .workout-builder [data-fine-tune-scroll] {
  height:auto !important;
  max-height:min(70vh,720px) !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  -webkit-overflow-scrolling:touch;
}
.coach-session-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar,
.template-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar,
.template-workout-editor-backdrop .workout-builder .visual-workout-details-body::-webkit-scrollbar {
  width:12px;
}
.coach-session-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-track,
.template-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-track,
.template-workout-editor-backdrop .workout-builder .visual-workout-details-body::-webkit-scrollbar-track {
  background:#e7f1f5;
  border-left:1px solid #c8dde6;
}
.coach-session-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-thumb,
.template-editor-modal .workout-builder .visual-workout-details-body::-webkit-scrollbar-thumb,
.template-workout-editor-backdrop .workout-builder .visual-workout-details-body::-webkit-scrollbar-thumb {
  min-height:48px;
  background:#247096;
  border:3px solid #e7f1f5;
  border-radius:999px;
}
@media (max-width:759px) {
  .coach-session-editor-modal .workout-builder .visual-workout-details,
  .template-editor-modal .workout-builder .visual-workout-details,
  .template-workout-editor-backdrop .workout-builder .visual-workout-details {
    width:calc(100% - 12px) !important;
    margin:0 6px 12px !important;
  }
  .coach-session-editor-modal .workout-builder .visual-workout-details-body,
  .template-editor-modal .workout-builder .visual-workout-details-body,
  .template-workout-editor-backdrop .workout-builder .visual-workout-details-body,
  .coach-session-editor-modal .workout-builder [data-fine-tune-scroll],
  .template-editor-modal .workout-builder [data-fine-tune-scroll],
  .template-workout-editor-backdrop .workout-builder [data-fine-tune-scroll] {
    max-height:64dvh !important;
  }
}

/* v401 Step target/detail alignment inside the Fine-tuner. */
.workout-builder .rep-step-editor-grid {
  grid-template-columns:minmax(0,1fr) minmax(104px,116px) minmax(300px,.48fr) !important;
  gap:12px;
  align-items:start;
}
.workout-builder .builder-row.reps-builder {
  grid-template-columns:minmax(105px,132px) repeat(2,minmax(0,1fr)) !important;
  gap:12px;
  align-items:start !important;
}
.workout-builder .rep-step-metric-stack {
  display:grid;
  gap:9px;
  min-width:0;
  align-content:start;
}
.workout-builder .rep-inline-detail {
  min-width:0;
  margin:0;
}
.workout-builder .rep-inline-detail > label {
  display:block;
  margin-bottom:7px;
  font-size:12px;
  font-weight:700;
}
.workout-builder .rep-inline-detail > input {
  width:100%;
  box-sizing:border-box;
}
.workout-builder .reps-count-control {
  display:grid;
  grid-template-rows:auto 32px auto;
  gap:7px;
  min-width:0;
  align-content:start;
}
.workout-builder .rep-step-leading-controls .reps-count-control > label,
.workout-builder .reps-count-control > label {
  display:block !important;
  min-height:18px;
  margin:0 !important;
  font-size:12px;
  font-weight:700;
}
.workout-builder .reps-mode-spacer {
  display:block;
  min-height:32px;
  border-radius:8px;
  visibility:hidden;
}
.workout-builder .rep-step-recovery-panel {
  min-width:0;
  align-self:start;
}
.workout-builder .rep-step-recovery-panel .step-recovery-toggle {
  min-height:0;
  margin:0;
  padding:8px;
  box-sizing:border-box;
}
.workout-builder .rep-step-rpe-panel {
  min-width:0;
  align-self:start;
}
@media (max-width:1199px) and (min-width:760px) {
  .workout-builder .rep-step-editor-grid {
    grid-template-columns:minmax(0,1fr) minmax(100px,112px) !important;
  }
  .workout-builder .rep-step-rpe-panel {
    grid-column:1 / -1;
  }
}
@media (max-width:759px) {
  .workout-builder .rep-step-editor-grid {
    grid-template-columns:minmax(0,1fr) !important;
  }
  .workout-builder .builder-row.reps-builder {
    grid-template-columns:minmax(0,1fr) !important;
  }
  .workout-builder .reps-count-control {
    grid-template-rows:auto auto;
  }
  .workout-builder .reps-mode-spacer {
    display:none;
  }
  .workout-builder .rep-step-recovery-panel,
  .workout-builder .rep-step-rpe-panel {
    grid-column:1;
  }
}

/* v403 Fine-tuner row refinement: compact reps/recovery and RPE restored to the right. */
@media (min-width:760px) {
  .workout-builder .rep-step-editor-grid {
    display:grid;
    grid-template-columns:minmax(0,1fr) 78px minmax(300px,.48fr) !important;
    gap:10px;
    align-items:start;
  }
  .workout-builder .rep-step-target-panel {
    min-width:0;
  }
  .workout-builder .builder-row.reps-builder {
    grid-template-columns:82px minmax(0,1fr) minmax(0,1fr) !important;
    gap:10px;
    align-items:start !important;
  }
  .workout-builder .reps-count-control {
    display:grid;
    grid-template-rows:auto auto;
    gap:6px;
    padding-top:46px;
    min-width:0;
    align-content:start;
  }
  .workout-builder .reps-mode-spacer {
    display:none !important;
  }
  .workout-builder .reps-count-control > label,
  .workout-builder .rep-step-leading-controls .reps-count-control > label {
    display:block !important;
    min-height:0;
    margin:0 !important;
    font-size:12px;
    line-height:1;
    font-weight:700;
  }
  .workout-builder .reps-count-control select {
    width:82px;
    min-width:0;
    padding-left:10px;
    padding-right:24px;
  }
  .workout-builder .rep-step-recovery-panel {
    grid-column:2;
    width:78px;
    min-width:78px;
    align-self:start;
  }
  .workout-builder .rep-step-recovery-panel .step-recovery-toggle {
    width:78px;
    min-width:0;
    padding:7px 5px;
    gap:4px;
  }
  .workout-builder .rep-step-recovery-panel .step-recovery-toggle strong {
    font-size:11px;
    text-align:center;
  }
  .workout-builder .rep-step-recovery-panel .step-recovery-toggle-buttons {
    width:100%;
    padding:2px;
    margin:0;
  }
  .workout-builder .rep-step-recovery-panel .step-recovery-toggle-buttons button {
    min-width:0;
    padding:6px 3px;
    font-size:11px;
  }
  .workout-builder .rep-step-rpe-panel {
    grid-column:3 !important;
    min-width:0;
    align-self:start;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-control {
    min-height:0;
    height:auto;
    margin:0 !important;
    padding:10px 12px;
    align-content:center;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-control > label {
    display:none !important;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-fields {
    align-items:center;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-divider {
    padding-bottom:0;
  }
}

@media (min-width:760px) and (max-width:1040px) {
  .workout-builder .rep-step-editor-grid {
    grid-template-columns:minmax(0,1fr) 72px minmax(250px,.58fr) !important;
    gap:8px;
  }
  .workout-builder .builder-row.reps-builder {
    grid-template-columns:74px minmax(0,1fr) minmax(0,1fr) !important;
    gap:8px;
  }
  .workout-builder .reps-count-control select {
    width:74px;
  }
  .workout-builder .rep-step-recovery-panel,
  .workout-builder .rep-step-recovery-panel .step-recovery-toggle {
    width:72px;
    min-width:72px;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-control {
    padding:8px;
  }
}

@media (max-width:759px) {
  .workout-builder .reps-count-control {
    padding-top:0;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-control > label {
    display:none !important;
  }
}

/* v404 Fine-tuner spacing correction: protect usable widths and prevent control collisions. */
@media (min-width:841px) {
  .workout-builder .rep-step-editor-grid {
    display:grid;
    grid-template-columns:minmax(460px,1fr) 68px clamp(260px,27vw,420px) !important;
    gap:12px;
    align-items:start;
    width:100%;
  }
  .workout-builder .rep-step-target-panel {
    min-width:460px;
    width:100%;
  }
  .workout-builder .builder-row.reps-builder {
    display:grid;
    grid-template-columns:74px minmax(160px,1fr) minmax(160px,1fr) !important;
    gap:12px;
    align-items:start !important;
    width:100%;
  }
  .workout-builder .reps-count-control {
    width:74px;
    min-width:74px;
    padding-top:46px;
  }
  .workout-builder .reps-count-control select {
    width:74px;
    min-width:74px;
    max-width:74px;
  }
  .workout-builder .rep-step-work-stack,
  .workout-builder .rep-step-recovery-stack {
    min-width:160px;
    width:100%;
  }
  .workout-builder .rep-step-recovery-panel {
    grid-column:2 !important;
    width:68px;
    min-width:68px;
    max-width:68px;
  }
  .workout-builder .rep-step-recovery-panel .step-recovery-toggle {
    width:68px;
    min-width:68px;
    max-width:68px;
    padding:7px 4px;
  }
  .workout-builder .rep-step-rpe-panel {
    grid-column:3 !important;
    min-width:260px;
    width:100%;
    max-width:420px;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-control {
    width:100%;
    padding:12px;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-fields {
    display:grid;
    grid-template-columns:minmax(0,1fr) 30px minmax(0,1fr) !important;
    gap:8px;
    width:100%;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-fields .field,
  .workout-builder .rep-step-rpe-panel .rpe-requirement-fields select {
    min-width:0;
    width:100%;
  }
}

/* Narrow tablets keep the targets readable and place the RPE range on a clean second row. */
@media (min-width:760px) and (max-width:840px) {
  .workout-builder .rep-step-editor-grid {
    display:grid;
    grid-template-columns:minmax(0,1fr) 68px !important;
    gap:12px;
    align-items:start;
  }
  .workout-builder .rep-step-target-panel {
    min-width:0;
    width:100%;
  }
  .workout-builder .builder-row.reps-builder {
    display:grid;
    grid-template-columns:72px minmax(150px,1fr) minmax(150px,1fr) !important;
    gap:10px;
    width:100%;
  }
  .workout-builder .reps-count-control {
    width:72px;
    min-width:72px;
    padding-top:46px;
  }
  .workout-builder .reps-count-control select {
    width:72px;
    min-width:72px;
    max-width:72px;
  }
  .workout-builder .rep-step-recovery-panel,
  .workout-builder .rep-step-recovery-panel .step-recovery-toggle {
    width:68px;
    min-width:68px;
    max-width:68px;
  }
  .workout-builder .rep-step-rpe-panel {
    grid-column:1 / -1 !important;
    width:100%;
    max-width:none;
  }
  .workout-builder .rep-step-rpe-panel .rpe-requirement-fields {
    grid-template-columns:minmax(0,1fr) 30px minmax(0,1fr) !important;
  }
}

/* v406 interval pacing patterns and active jog recovery. */
.workout-builder .rep-step-options-panel {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  min-width:0;
  align-self:start;
}
.workout-builder .interval-pattern-control {
  grid-column:1 / -1;
  display:grid;
  gap:6px;
  padding:9px;
  border:1px solid #b8deec;
  border-radius:12px;
  background:#f3fbfe;
  min-width:0;
}
.workout-builder .interval-pattern-control > strong,
.workout-builder .active-recovery-toggle > strong {
  font-size:11px;
  line-height:1.2;
  color:#0b3145;
}
.workout-builder .interval-pattern-control > small,
.workout-builder .active-recovery-toggle > small {
  font-size:10px;
  line-height:1.2;
  color:#5f7885;
}
.workout-builder .interval-pattern-options {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:3px;
  padding:3px;
  border-radius:9px;
  background:#e9f0f2;
}
.workout-builder .interval-pattern-option {
  min-width:0;
  min-height:30px;
  padding:5px 4px;
  border:0;
  border-radius:7px;
  background:transparent;
  color:#506873;
  font-size:10px;
  font-weight:800;
  cursor:pointer;
}
.workout-builder .interval-pattern-option.active {
  background:#0b2a3a;
  color:#fff;
  box-shadow:0 2px 5px rgba(8,42,58,.18);
}
.workout-builder .rep-step-options-panel .step-recovery-toggle,
.workout-builder .active-recovery-toggle {
  display:grid;
  gap:5px;
  min-width:0;
  margin:0;
  padding:8px;
  border:1px solid #c8dde6;
  border-radius:11px;
  background:#f7fafb;
  box-sizing:border-box;
}
.workout-builder .rep-step-options-panel .step-recovery-toggle > strong,
.workout-builder .active-recovery-toggle > strong {
  text-align:left;
}
.workout-builder .rep-step-options-panel .step-recovery-toggle-buttons,
.workout-builder .active-recovery-toggle-buttons {
  width:100%;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2px;
  margin:0;
  padding:2px;
}
.workout-builder .rep-step-options-panel .step-recovery-toggle-buttons button,
.workout-builder .active-recovery-toggle-buttons button {
  min-width:0;
  padding:6px 3px;
  font-size:10px;
}
.workout-builder .active-recovery-toggle.is-disabled {
  opacity:.52;
}
.workout-builder .active-recovery-toggle-buttons button.active {
  background:#237c5b;
  color:#fff;
}
.workout-builder .visual-flow-card-recovery.is-active-recovery {
  border-color:#2d8a65;
  background:linear-gradient(160deg,#effbf5,#fff);
}
.workout-builder .visual-flow-card-recovery.is-active-recovery .visual-flow-card-icon {
  background:#2d8a65;
}
.workout-builder .visual-flow-repeat-title em {
  margin-left:auto;
  padding:3px 7px;
  border-radius:999px;
  background:#e8f4ff;
  color:#12639a;
  font-size:10px;
  font-style:normal;
  font-weight:800;
}
.workout-builder .visual-flow-step-group.pattern-progressive .visual-flow-card-work {
  border-image:linear-gradient(180deg,#174f6e,#00a6e7) 1;
}
.workout-builder .visual-flow-step-group.pattern-regressive .visual-flow-card-work {
  border-image:linear-gradient(180deg,#00a6e7,#174f6e) 1;
}

@media (min-width:1200px) {
  .workout-builder .rep-step-editor-grid {
    display:grid;
    grid-template-columns:minmax(620px,1fr) minmax(220px,250px) clamp(300px,24vw,400px) !important;
    gap:14px;
    align-items:start;
  }
  .workout-builder .rep-step-options-panel { grid-column:2 !important; }
  .workout-builder .rep-step-rpe-panel { grid-column:3 !important; }
}
@media (min-width:900px) and (max-width:1199px) {
  .workout-builder .rep-step-editor-grid {
    display:grid;
    grid-template-columns:minmax(540px,1fr) minmax(210px,240px) !important;
    gap:12px;
    align-items:start;
  }
  .workout-builder .rep-step-options-panel { grid-column:2 !important; }
  .workout-builder .rep-step-rpe-panel {
    grid-column:1 / -1 !important;
    width:100%;
    max-width:none;
  }
}
@media (min-width:760px) and (max-width:899px) {
  .workout-builder .rep-step-editor-grid {
    display:grid;
    grid-template-columns:minmax(0,1fr) !important;
    gap:10px;
  }
  .workout-builder .rep-step-options-panel {
    grid-column:1 !important;
    grid-template-columns:1fr 1fr 1fr;
  }
  .workout-builder .interval-pattern-control { grid-column:auto; }
  .workout-builder .rep-step-rpe-panel { grid-column:1 !important; }
}
@media (max-width:759px) {
  .workout-builder .rep-step-options-panel {
    grid-column:1 !important;
    grid-template-columns:1fr 1fr;
  }
  .workout-builder .interval-pattern-control { grid-column:1 / -1; }
}

/* v407 timed-repeat distance limits */
.workout-builder .pace-guidance-input .pace-guidance-distance-unit{
  align-self:stretch;
  min-width:64px;
  border:0;
  border-left:1px solid var(--line);
  border-radius:0;
  background:#f4f8fa;
  color:var(--ink);
  font-weight:800;
  padding:0 9px;
}
.workout-builder .pace-guidance-input .pace-guidance-distance-unit:focus{
  outline:0;
  box-shadow:inset 0 0 0 2px rgba(0,179,255,.35);
}

/* v410 compact planned-workout flow card and modal chrome */
.planned-session-modal .modal-top {
  padding:12px 16px 10px;
}
.planned-session-modal .modal-top .eyebrow {
  font-size:10px;
  line-height:1.1;
  letter-spacing:.11em;
}
.planned-session-modal .modal-top h2 {
  margin:5px 42px 2px 0;
  font-size:clamp(22px,2.4vw,27px);
  line-height:1.08;
}
.planned-session-modal .modal-top > div:not(.eyebrow) {
  font-size:13px !important;
  line-height:1.2;
}
.planned-session-modal .session-modal-description {
  display:-webkit-box;
  max-width:100%;
  margin:5px 42px 0 0;
  overflow:hidden;
  font-size:11px;
  line-height:1.3;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.planned-session-modal .modal-top .close {
  top:10px;
  right:11px;
  width:34px;
  height:34px;
  min-height:34px;
  font-size:20px;
}
.planned-session-modal .plan-modal-actions {
  gap:5px;
  margin-top:12px;
}
.planned-session-modal .plan-modal-actions > button {
  min-height:29px !important;
  padding:5px 9px !important;
  border-radius:8px !important;
  font-size:10px !important;
  line-height:1 !important;
}

.planned-mini-flow {
  margin:10px 0 13px;
  overflow:hidden;
  border:1px solid #b9e8ff;
  border-radius:14px;
  background:linear-gradient(180deg,#f7fcff 0%,#f1f8fb 100%);
  box-shadow:0 7px 18px rgba(16,37,54,.06);
}
.planned-mini-flow-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:8px 11px 7px;
  border-bottom:1px solid rgba(174,214,232,.72);
}
.planned-mini-flow-head strong {
  color:#102536;
  font-size:11px;
  letter-spacing:.03em;
  text-transform:uppercase;
}
.planned-mini-flow-head span {
  overflow:hidden;
  color:#6d7f8a;
  font-size:9px;
  font-weight:700;
  text-align:right;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.planned-mini-flow-scroll {
  overflow-x:auto;
  overflow-y:hidden;
  padding:10px 11px 11px;
  overscroll-behavior-x:contain;
  scrollbar-width:thin;
  scrollbar-color:#1a7899 #dceef5;
  -webkit-overflow-scrolling:touch;
}
.planned-mini-flow-row {
  display:flex;
  width:max-content;
  min-width:100%;
  align-items:center;
  gap:6px;
}
.planned-mini-flow-card {
  display:grid;
  flex:0 0 112px;
  min-height:104px;
  padding:9px 8px 8px;
  place-items:center;
  align-content:center;
  border:1.5px solid #174f6e;
  border-radius:13px;
  background:#fff;
  color:#102536;
  text-align:center;
}
.planned-mini-flow-icon {
  display:grid;
  width:31px;
  height:31px;
  margin-bottom:5px;
  place-items:center;
  border-radius:10px;
  background:#174f6e;
  color:#fff;
  font-size:15px;
  font-weight:900;
}
.planned-mini-flow-card small {
  color:#1680a8;
  font-size:7px;
  font-weight:900;
  letter-spacing:.08em;
  line-height:1.15;
  text-transform:uppercase;
}
.planned-mini-flow-card strong {
  max-width:100%;
  margin-top:3px;
  color:#102536;
  font-size:15px;
  line-height:1.08;
  overflow-wrap:anywhere;
}
.planned-mini-flow-card > span:not(.planned-mini-flow-icon) {
  margin-top:4px;
  color:#6d7f8a;
  font-size:8px;
  line-height:1.2;
}
.planned-mini-flow-card b {
  margin-top:5px;
  padding:2px 6px;
  border-radius:999px;
  background:#e8f3f7;
  color:#174f6e;
  font-size:7px;
  line-height:1.15;
}
.planned-mini-flow-card.is-warmup {
  border-color:#2d8a65;
  background:linear-gradient(155deg,#effaf4,#fff);
}
.planned-mini-flow-card.is-warmup .planned-mini-flow-icon { background:#2d8a65; }
.planned-mini-flow-card.is-recovery {
  border-color:#ef7a19;
  background:linear-gradient(155deg,#fff4e9,#fff);
}
.planned-mini-flow-card.is-recovery .planned-mini-flow-icon { background:#ef7a19; }
.planned-mini-flow-card.is-active-recovery {
  border-color:#74b548;
  background:linear-gradient(155deg,#f2f9eb,#fff);
}
.planned-mini-flow-card.is-active-recovery .planned-mini-flow-icon { background:#74b548; }
.planned-mini-flow-card.is-rest {
  border-color:#8b9aa5;
  background:linear-gradient(155deg,#f3f6f7,#fff);
}
.planned-mini-flow-card.is-rest .planned-mini-flow-icon { background:#8b9aa5; }
.planned-mini-flow-card.is-cooldown {
  border-color:#008ba3;
  background:linear-gradient(155deg,#ecf9fb,#fff);
}
.planned-mini-flow-card.is-cooldown .planned-mini-flow-icon { background:#008ba3; }
.planned-mini-flow-connector {
  flex:0 0 auto;
  color:#1680a8;
  font-size:16px;
  font-weight:900;
}
.planned-mini-flow-set {
  flex:0 0 auto;
  padding:6px;
  border:1px dashed #78a8c1;
  border-radius:14px;
  background:rgba(255,255,255,.58);
}
.planned-mini-flow-set > header {
  padding:0 3px 5px;
  color:#174f6e;
  font-size:8px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.planned-mini-flow-set > div {
  display:flex;
  align-items:center;
  gap:6px;
}
.planned-mini-flow-fallback .planned-mini-flow-row {
  justify-content:center;
}

@media (max-width:700px) {
  .planned-session-modal .modal-top {
    padding:8px 10px 7px;
  }
  .planned-session-modal .modal-top h2 {
    margin:3px 35px 1px 0;
    font-size:19px;
    line-height:1.06;
  }
  .planned-session-modal .modal-top .eyebrow { font-size:8px; }
  .planned-session-modal .modal-top > div:not(.eyebrow) { font-size:10px !important; }
  .planned-session-modal .session-modal-description {
    margin:3px 35px 0 0;
    font-size:9px;
    -webkit-line-clamp:1;
  }
  .planned-session-modal .modal-top .close {
    top:7px;
    right:8px;
    width:29px;
    height:29px;
    min-height:29px;
    font-size:17px;
  }
  .planned-session-modal .plan-modal-actions > button {
    min-height:27px !important;
    padding:4px 7px !important;
    font-size:9px !important;
  }
  .planned-mini-flow { margin:7px 0 9px; border-radius:11px; }
  .planned-mini-flow-head { padding:6px 8px 5px; }
  .planned-mini-flow-head strong { font-size:9px; }
  .planned-mini-flow-head span { font-size:7px; }
  .planned-mini-flow-scroll { padding:7px 8px 8px; }
  .planned-mini-flow-card {
    flex-basis:94px;
    min-height:88px;
    padding:7px 6px 6px;
    border-radius:11px;
  }
  .planned-mini-flow-icon {
    width:26px;
    height:26px;
    margin-bottom:4px;
    border-radius:8px;
    font-size:13px;
  }
  .planned-mini-flow-card strong { font-size:12px; }
  .planned-mini-flow-card small,
  .planned-mini-flow-card b { font-size:6.5px; }
  .planned-mini-flow-card > span:not(.planned-mini-flow-icon) { font-size:7px; }
  .planned-mini-flow-connector { font-size:13px; }
}

/* v413 benchmark pace details, clickable workout rows and nested completion view */
.benchmark-detail-table .benchmark-workout-row {
  cursor: pointer;
  transition: background-color .16s ease, box-shadow .16s ease;
}
.benchmark-detail-table .benchmark-workout-row:hover,
.benchmark-detail-table .benchmark-workout-row:focus-visible {
  background: #eaf7fc;
  box-shadow: inset 4px 0 0 #00b3ff;
  outline: none;
}
.benchmark-detail-table .benchmark-workout-row[aria-busy="true"] {
  cursor: wait;
  opacity: .72;
}
.benchmark-pace-detail {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  margin-top: 3px;
  color: #174f6e;
  font-weight: 700;
  white-space: nowrap;
}
.benchmark-pace-detail small {
  color: #6a7d88;
  font-size: .68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .035em;
}

/* v438 mobile athlete/coach list calendar */
.mobile-calendar-shell{display:none}
@media (max-width:760px){
  .mobile-calendar-shell{display:block;background:#fff}
  .mobile-calendar-topline{background:#fff;padding:8px 8px 6px;border-bottom:1px solid var(--line)}
  .mobile-calendar-summary{display:grid;grid-template-columns:.72fr .9fr 1.35fr;gap:6px}
  .mobile-calendar-summary-item{min-width:0;background:#fff;border:1px solid #d8e1e4;border-radius:10px;padding:7px 8px;text-align:center;box-shadow:0 2px 7px rgba(16,37,54,.06)}
  .mobile-calendar-summary-item span{display:block;color:#71818c;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
  .mobile-calendar-summary-item strong{display:block;color:#102536;font-size:16px;line-height:1.15;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mobile-calendar-summary-item small{display:block;color:#88959d;font-size:8px;margin-top:2px}
  .mobile-calendar-summary-item.fatigue-low strong{color:#198754}.mobile-calendar-summary-item.fatigue-medium strong{color:#b87800}.mobile-calendar-summary-item.fatigue-high strong{color:#c52d2d}
  .mobile-calendar-summary-item.condition-competition strong{color:#b21f2d}.mobile-calendar-summary-item.condition-tapering strong{color:#8c5eb8}.mobile-calendar-summary-item.condition-building strong{color:#007ea5}.mobile-calendar-summary-item.condition-maintaining strong{color:#4c7d4a}.mobile-calendar-summary-item.condition-recovery strong,.mobile-calendar-summary-item.condition-freshening strong{color:#348a79}
  .mobile-calendar-view-toggle{display:flex;justify-content:flex-end;gap:5px;margin-top:6px}
  .mobile-calendar-view-toggle button{border:1px solid #c8d7dd;background:#fff;color:#526670;border-radius:999px;padding:4px 10px;font-size:10px;font-weight:800}
  .mobile-calendar-view-toggle button.active{background:#102536;color:#fff;border-color:#102536}
  .mobile-calendar-list-window{width:100%;height:clamp(540px,72dvh,760px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;overflow-anchor:none;background:#fff;touch-action:pan-y}
  .mobile-calendar-list-window:focus-visible{outline:3px solid rgba(0,179,255,.35);outline-offset:-3px}
  .mobile-calendar-list{padding:7px 7px 12px;background:#fff}
  .mobile-calendar-week{position:relative;margin-bottom:8px;padding:2px;border-radius:13px}
  .mobile-calendar-week.week-intensity-shaded{background:linear-gradient(90deg,var(--week-shade-start),var(--week-shade-end));box-shadow:inset 0 0 0 1px rgba(7,25,37,.08)}
  .mobile-calendar-week-marker{padding:8px 7px 5px;color:#71818c;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
  .mobile-calendar-week.week-intensity-shaded .mobile-calendar-week-marker{color:#314957}
  .mobile-calendar-day{background:#fff;border:1px solid var(--line);border-radius:10px;margin:0 2px 6px;overflow:hidden}
  .mobile-calendar-week.week-intensity-shaded .mobile-calendar-day{background:rgba(255,255,255,.60);backdrop-filter:saturate(.92)}
  .mobile-calendar-day.today{border-color:var(--cyan);box-shadow:inset 0 0 0 1px var(--cyan)}
  .mobile-calendar-day>header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px 5px}
  .mobile-calendar-day>header>div:first-child{display:flex;align-items:baseline;gap:8px}.mobile-calendar-day>header strong{font-size:13px;color:#102536}.mobile-calendar-day>header span{font-size:10px;color:#7b8790}
  .mobile-calendar-day-actions{display:flex;gap:4px}.mobile-calendar-day-actions button{width:25px;height:25px;border:0;border-radius:7px;background:#f5fbfe;color:#526670;font-size:14px;font-weight:800}
  .mobile-calendar-period{display:grid;grid-template-columns:32px minmax(0,1fr);gap:5px;align-items:start;padding:3px 7px 6px}
  .mobile-calendar-period+.mobile-calendar-period{border-top:1px dashed rgba(100,115,125,.20)}
  .mobile-calendar-period-label{margin-top:5px;justify-self:start;background:#f4f1ff;border:1px solid #d5cbee;color:#6d6385;border-radius:999px;padding:2px 6px;font-size:8px;font-weight:800}
  .mobile-calendar-period-items{display:grid;gap:5px;min-width:0}
  .mobile-calendar-empty{padding:7px 8px;color:#9aa7ae;font-size:10px;font-style:italic}
  .mobile-calendar-period .session-chip{width:100%;min-height:58px;height:auto;padding:8px 10px 8px 42px;border-radius:10px;text-align:left}
  .mobile-calendar-period .session-chip .session-chip-icon-strip{left:10px;top:11px}
  .mobile-calendar-period .session-chip-type,.mobile-calendar-period .session-chip-name,.mobile-calendar-period .session-chip-description{font-size:11px;line-height:1.25}
  .mobile-calendar-period .session-chip-type{font-weight:800}
  .mobile-calendar-period .race-chip{width:100%;min-height:38px;border-radius:9px;text-align:left;padding:7px 10px}
  .athlete-calendar-card[data-mobile-calendar-view="list"]>.calendar-scroll-window,.coach-athlete-calendar-card[data-mobile-calendar-view="list"]>.calendar-scroll-window{display:none!important}
  .athlete-calendar-card[data-mobile-calendar-view="grid"] .mobile-calendar-list-window,.coach-athlete-calendar-card[data-mobile-calendar-view="grid"] .mobile-calendar-list-window{display:none}
  .athlete-calendar-card[data-mobile-calendar-view="grid"]>.calendar-scroll-window,.coach-athlete-calendar-card[data-mobile-calendar-view="grid"]>.calendar-scroll-window{display:block!important}
  .athlete-calendar-card.athlete-mobile-fullscreen .mobile-calendar-list-window,.coach-athlete-calendar-card.coach-calendar-fullscreen .mobile-calendar-list-window{height:auto;flex:1 1 auto;min-height:0}
}

/* v440 mobile list calendar: one date state, bidirectional week scroll and fullscreen scrolling */
@media (max-width:760px){
  .athlete-calendar-card.athlete-mobile-fullscreen[data-mobile-calendar-view="list"] .mobile-calendar-shell,
  .coach-athlete-calendar-card.coach-calendar-fullscreen[data-mobile-calendar-view="list"] .mobile-calendar-shell{
    display:flex!important;
    flex:1 1 auto;
    flex-direction:column;
    min-height:0;
    overflow:hidden;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen[data-mobile-calendar-view="list"] .mobile-calendar-topline,
  .coach-athlete-calendar-card.coach-calendar-fullscreen[data-mobile-calendar-view="list"] .mobile-calendar-topline{
    flex:0 0 auto;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen[data-mobile-calendar-view="list"] .mobile-calendar-list-window,
  .coach-athlete-calendar-card.coach-calendar-fullscreen[data-mobile-calendar-view="list"] .mobile-calendar-list-window{
    display:block!important;
    flex:1 1 auto!important;
    width:100%;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    touch-action:pan-y!important;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
  }
  .athlete-calendar-card.athlete-mobile-fullscreen[data-mobile-calendar-view="list"] .mobile-calendar-list.calendar,
  .coach-athlete-calendar-card.coach-calendar-fullscreen[data-mobile-calendar-view="list"] .mobile-calendar-list.calendar{
    display:block!important;
    flex:none!important;
    min-height:0!important;
    max-height:none!important;
    height:auto!important;
    overflow:visible!important;
    padding:7px 7px max(12px,env(safe-area-inset-bottom))!important;
  }
}

/* v441 mobile athlete dashboard bottom navigation strip */
@media (max-width:760px){
  /* Keep the existing six dashboard buttons and their IDs/actions, but remove
     the row from the top layout and anchor it to a RacePace strip at the bottom. */
  .athlete-dashboard-actions.athlete-dashboard-button-row{
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    z-index:850;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    grid-template-columns:repeat(6,minmax(0,1fr))!important;
    gap:6px!important;
    padding:7px 8px calc(7px + env(safe-area-inset-bottom))!important;
    background:linear-gradient(180deg,#0088c7 0%,#006b9f 100%);
    border-top:2px solid #00b3ff;
    box-shadow:0 -8px 24px rgba(5,35,54,.24);
  }

  .athlete-dashboard-actions.athlete-dashboard-button-row .athlete-icon-tile-btn{
    min-height:52px!important;
    height:52px!important;
    padding:6px!important;
    border-radius:13px!important;
    box-shadow:0 4px 12px rgba(0,24,46,.22), inset 0 0 0 1px rgba(255,255,255,.28)!important;
  }

  .athlete-dashboard-actions.athlete-dashboard-button-row .dashboard-action-svg,
  .athlete-dashboard-actions.athlete-dashboard-button-row .dashboard-action-img{
    width:24px!important;
    height:24px!important;
    flex-basis:24px!important;
  }

  /* Reserve space so the fixed strip never hides the bottom of the athlete page. */
  .athlete-calendar-main{
    padding-bottom:calc(76px + env(safe-area-inset-bottom))!important;
  }

  /* The list has its own scroller, so give its final content enough breathing room
     above the fixed strip without changing any Calendar/grid interaction logic. */
  .athlete-calendar-card[data-mobile-calendar-view="list"] .mobile-calendar-list.calendar{
    padding-bottom:calc(88px + env(safe-area-inset-bottom))!important;
  }
}

/* v442 mobile athlete dashboard compact chrome */
.athlete-calendar-fullscreen-inline{display:none}
@media (max-width:760px){
  /* Coach assignment lives in the compact black athlete header on phones. */
  .athlete-dashboard-intro .coach-assignment-line{display:none!important}
  .athlete-mobile-coach-line{color:#b8ceda!important}
  .athlete-mobile-coach-line strong{color:#fff;font-weight:800}
  .athlete-calendar-main #athlete-top{min-height:0!important;padding-top:0!important;padding-bottom:0!important;margin-top:0!important;margin-bottom:0!important}

  /* Keep the normal desktop fullscreen control in place, but use only the small inline icon on mobile. */
  .athlete-calendar-head-actions .athlete-calendar-fullscreen-trigger{display:none!important}
  .athlete-calendar-fullscreen-inline{
    display:inline-flex;
    flex:0 0 34px;
    width:34px;
    height:34px;
    min-height:34px;
    align-items:center;
    justify-content:center;
    padding:0;
    border:0;
    border-radius:8px;
    background:transparent;
    color:var(--blue);
    cursor:pointer;
  }
  .athlete-calendar-fullscreen-inline span{font-size:25px;line-height:1;font-weight:700}
  .athlete-calendar-fullscreen-inline:hover,
  .athlete-calendar-fullscreen-inline:focus-visible{background:rgba(0,179,255,.09);outline:none}
  .athlete-calendar-fullscreen-inline:focus-visible{box-shadow:0 0 0 3px rgba(0,179,255,.20)}

  /* In List view, weekly distance sits beneath LP / Fatigue / Condition instead of beside the month. */
  .athlete-calendar-card[data-mobile-calendar-view="list"] .card-head .calendar-week-distance,
  .coach-athlete-calendar-card[data-mobile-calendar-view="list"] .card-head .calendar-week-distance{display:none!important}
  .mobile-calendar-summary-distance{
    display:flex;
    justify-content:center;
    align-items:center;
    margin:7px auto 0;
    width:max-content;
    max-width:100%;
    padding:4px 9px;
    border:1px solid rgba(0,179,255,.24);
    border-radius:9px;
    background:rgba(0,179,255,.055);
  }
  .mobile-calendar-summary-distance .weekly-distance-current,
  .mobile-calendar-summary-distance .weekly-distance-planned{font-family:Oswald,sans-serif;font-size:18px}
  .mobile-calendar-summary-distance .weekly-distance-value small{font-size:9px}

  /* Six existing athlete actions remain real buttons for accessibility, but visually become icons on one blue RacePace strip. */
  .athlete-dashboard-actions.athlete-dashboard-button-row{
    gap:0!important;
    padding:5px 6px calc(5px + env(safe-area-inset-bottom))!important;
    background:#007fb7!important;
    border-top:2px solid #00b3ff!important;
    box-shadow:0 -6px 18px rgba(5,35,54,.22)!important;
  }
  .athlete-dashboard-actions.athlete-dashboard-button-row .athlete-icon-tile-btn{
    min-height:48px!important;
    height:48px!important;
    padding:6px!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    outline-offset:-2px;
  }
  .athlete-dashboard-actions.athlete-dashboard-button-row .athlete-icon-tile-btn:hover,
  .athlete-dashboard-actions.athlete-dashboard-button-row .athlete-icon-tile-btn:focus-visible{
    background:rgba(255,255,255,.10)!important;
    box-shadow:none!important;
  }
  .athlete-dashboard-actions.athlete-dashboard-button-row .athlete-icon-label{display:none!important}
  .athlete-dashboard-actions.athlete-dashboard-button-row .dashboard-action-svg,
  .athlete-dashboard-actions.athlete-dashboard-button-row .dashboard-action-img{
    width:29px!important;
    height:29px!important;
    flex-basis:29px!important;
    margin:0 auto!important;
  }
}

/* v443 mobile List chrome compaction: keep header controls and status row tight */
@media (max-width:760px){
  /* List view only: month controls, fullscreen and This week stay on one row. */
  .athlete-calendar-card[data-mobile-calendar-view="list"] .calendar-date-controls,
  .coach-athlete-calendar-card[data-mobile-calendar-view="list"] .calendar-date-controls{
    width:100%;
    display:grid;
    grid-template-columns:minmax(0,1fr) 34px auto;
    align-items:center;
    gap:5px;
  }
  .athlete-calendar-card[data-mobile-calendar-view="list"] .calendar-this-week-btn,
  .coach-athlete-calendar-card[data-mobile-calendar-view="list"] .calendar-this-week-btn{
    width:auto!important;
    min-width:74px;
    min-height:34px;
    margin:0!important;
    padding:6px 10px;
    justify-self:end;
    white-space:nowrap;
  }
  .athlete-calendar-card[data-mobile-calendar-view="list"] .athlete-calendar-fullscreen-inline{
    justify-self:center;
    margin:0!important;
  }

  /* Put weekly distance and List / Calendar on one compact line below the status cards. */
  .mobile-calendar-topline{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    column-gap:7px;
    row-gap:0;
    padding:8px 8px 5px;
  }
  .mobile-calendar-summary{
    grid-column:1 / -1;
  }
  .mobile-calendar-summary-distance{
    grid-column:1;
    grid-row:2;
    justify-self:start;
    align-self:center;
    margin:6px 0 0;
  }
  .mobile-calendar-view-toggle{
    grid-column:2;
    grid-row:2;
    align-self:center;
    justify-self:end;
    margin-top:6px;
  }
}

/* v444 mobile athlete workout action strip: temporarily use the bottom RacePace strip for workout actions */
@media (max-width:760px){
  /* The workout modal action bar sits over the normal dashboard strip only while an athlete workout is open. */
  .athlete-workout-modal .modal-body{
    padding-bottom:calc(78px + env(safe-area-inset-bottom))!important;
  }
  .athlete-workout-modal .modal-actions{
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    z-index:1105!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-around!important;
    gap:0!important;
    width:100%!important;
    margin:0!important;
    padding:5px 6px calc(5px + env(safe-area-inset-bottom))!important;
    background:#007fb7!important;
    border-top:2px solid #00b3ff!important;
    box-shadow:0 -6px 18px rgba(5,35,54,.25)!important;
    overflow:visible!important;
  }
  .athlete-workout-modal .modal-actions > button,
  .athlete-workout-modal .modal-actions > .completed-share-actions,
  .athlete-workout-modal .modal-actions > .completed-share-actions > summary{
    flex:1 1 0!important;
    min-width:0!important;
  }
  .athlete-workout-modal .modal-actions > button,
  .athlete-workout-modal .modal-actions > .completed-share-actions > summary{
    position:relative!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    min-height:48px!important;
    height:48px!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    color:#fff!important;
    box-shadow:none!important;
    font-size:0!important;
    line-height:1!important;
    cursor:pointer!important;
  }
  .athlete-workout-modal .modal-actions > button:hover,
  .athlete-workout-modal .modal-actions > button:focus-visible,
  .athlete-workout-modal .modal-actions > .completed-share-actions > summary:hover,
  .athlete-workout-modal .modal-actions > .completed-share-actions > summary:focus-visible{
    background:rgba(255,255,255,.10)!important;
    outline:none!important;
  }
  .athlete-workout-modal .modal-actions > button::before,
  .athlete-workout-modal .modal-actions > .completed-share-actions > summary::before{
    display:block;
    color:#fff;
    font-family:Arial,sans-serif;
    font-size:30px;
    font-weight:500;
    line-height:1;
  }
  .athlete-workout-modal .modal-actions .close-action::before{content:'×';font-size:38px}
  .athlete-workout-modal .modal-actions #share-planned-btn::before,
  .athlete-workout-modal .modal-actions #share-completed-btn::before,
  .athlete-workout-modal .modal-actions > .completed-share-actions > summary::before{content:'↗';font-size:31px}
  .athlete-workout-modal .modal-actions #download-planned-btn::before,
  .athlete-workout-modal .modal-actions #download-completed-btn::before{content:'⇩';font-size:32px}
  .athlete-workout-modal .modal-actions #view-completion-btn::before{content:'✓';font-size:31px}
  .athlete-workout-modal .modal-actions #start-session-runner::before{content:'▶';font-size:27px}
  .athlete-workout-modal .modal-actions #complete-btn::before,
  .athlete-workout-modal #completion-form .modal-actions button[type=submit]::before{content:'✓';font-size:31px}
  .athlete-workout-modal #completion-form .modal-actions #back-details::before{content:'←';font-size:32px}
  .athlete-workout-modal .saved-completion-actions #view-plan-btn::before{content:'▣';font-size:27px}
  .athlete-workout-modal .saved-completion-actions #edit-completion-btn::before{content:'✎';font-size:29px}
  .athlete-workout-modal .saved-completion-actions #design-intervals-plan-btn::before{content:'+';font-size:34px}
  .athlete-workout-modal .saved-completion-actions [id*='intervals']::before{content:'↔';font-size:28px}

  /* Share/PDF stays available from the same bottom strip; its flyout opens upward. */
  .athlete-workout-modal .completed-share-actions{
    position:relative!important;
    margin:0!important;
  }
  .athlete-workout-modal .completed-share-actions > summary{list-style:none!important}
  .athlete-workout-modal .completed-share-actions > summary::-webkit-details-marker{display:none!important}
  .athlete-workout-modal .completed-share-actions-menu{
    position:absolute!important;
    left:50%!important;
    bottom:54px!important;
    transform:translateX(-50%)!important;
    min-width:190px!important;
    padding:7px!important;
    border-radius:12px!important;
    background:#102536!important;
    border:1px solid rgba(0,179,255,.45)!important;
    box-shadow:0 10px 28px rgba(0,0,0,.30)!important;
    z-index:1110!important;
  }
  .athlete-workout-modal .completed-share-actions-menu button{
    width:100%!important;
    min-height:38px!important;
    margin:3px 0!important;
    font-size:13px!important;
  }

  /* The normal six dashboard icons remain underneath and return immediately when the workout closes. */
  body:has(.athlete-workout-modal) .athlete-dashboard-actions.athlete-dashboard-button-row{
    visibility:hidden!important;
  }
}

/* v446 mobile coach chrome: fixed bottom navigation + athlete-calendar parity */
.coach-calendar-fullscreen-inline{display:none}
.coach-athlete-bottom-actions{display:contents}

@media (max-width:760px){
  /* Remove only the crossed-out mobile helper/category copy. */
  .coach-dashboard-monitor-text,
  .coach-athlete-category-line{display:none!important}

  /* Keep the athlete switcher in its existing top position; only the six coach athlete actions move to the bottom. */
  .coach-athlete-actions{
    width:100%!important;
    display:block!important;
  }
  .coach-athlete-actions .athlete-switcher{
    display:block!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }

  /* Team overview and selected-athlete action strips match the athlete bottom strip. */
  .coach-dashboard-actions.coach-action-icon-bar,
  .coach-athlete-bottom-actions{
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    z-index:1035!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-around!important;
    gap:0!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:5px 6px calc(5px + env(safe-area-inset-bottom))!important;
    background:#007fb7!important;
    border-top:2px solid #00b3ff!important;
    box-shadow:0 -6px 18px rgba(5,35,54,.22)!important;
  }
  .coach-dashboard-actions.coach-action-icon-bar .dashboard-action-btn,
  .coach-athlete-bottom-actions .dashboard-action-btn{
    flex:1 1 0!important;
    width:auto!important;
    min-width:0!important;
    height:48px!important;
    min-height:48px!important;
    margin:0!important;
    padding:6px!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    color:#fff!important;
  }
  .coach-dashboard-actions.coach-action-icon-bar .dashboard-action-btn:hover,
  .coach-dashboard-actions.coach-action-icon-bar .dashboard-action-btn:focus-visible,
  .coach-athlete-bottom-actions .dashboard-action-btn:hover,
  .coach-athlete-bottom-actions .dashboard-action-btn:focus-visible{
    background:rgba(255,255,255,.10)!important;
    box-shadow:none!important;
    transform:none!important;
  }
  .coach-dashboard-actions.coach-action-icon-bar .dashboard-action-svg,
  .coach-athlete-bottom-actions .dashboard-action-svg{
    width:29px!important;
    height:29px!important;
    margin:0 auto!important;
    color:#fff!important;
    stroke:#fff!important;
  }
  .coach-dashboard-main,
  .coach-calendar-main{
    padding-bottom:calc(76px + env(safe-area-inset-bottom))!important;
  }
  .coach-athlete-calendar-card[data-mobile-calendar-view="list"] .mobile-calendar-list.calendar{
    padding-bottom:calc(88px + env(safe-area-inset-bottom))!important;
  }

  /* Coach mobile List header now uses the same compact month / fullscreen / This week row as athlete. */
  .coach-calendar-head-actions .coach-calendar-fullscreen-trigger{display:none!important}
  .coach-calendar-fullscreen-inline{
    display:inline-flex;
    flex:0 0 34px;
    width:34px;
    height:34px;
    min-height:34px;
    align-items:center;
    justify-content:center;
    padding:0;
    border:0;
    border-radius:8px;
    background:transparent;
    color:var(--blue);
    cursor:pointer;
  }
  .coach-calendar-fullscreen-inline span{font-size:25px;line-height:1;font-weight:700}
  .coach-calendar-fullscreen-inline:hover,
  .coach-calendar-fullscreen-inline:focus-visible{background:rgba(0,179,255,.09);outline:none}
  .coach-calendar-fullscreen-inline:focus-visible{box-shadow:0 0 0 3px rgba(0,179,255,.20)}
  .coach-athlete-calendar-card[data-mobile-calendar-view="list"] .coach-calendar-fullscreen-inline{
    justify-self:center;
    margin:0!important;
  }

  /* While a coach workout window is open, its own action row takes over the bottom strip. */
  .coach-session-workout-modal .modal-body,
  .coach-session-editor-modal .modal-body{
    padding-bottom:calc(78px + env(safe-area-inset-bottom))!important;
  }
  .coach-session-workout-modal .modal-actions,
  .coach-session-editor-modal .modal-actions{
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    z-index:1110!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-around!important;
    gap:0!important;
    width:100%!important;
    margin:0!important;
    padding:5px 6px calc(5px + env(safe-area-inset-bottom))!important;
    background:#007fb7!important;
    border-top:2px solid #00b3ff!important;
    box-shadow:0 -6px 18px rgba(5,35,54,.25)!important;
    overflow:visible!important;
  }
  .coach-session-workout-modal .modal-actions > button,
  .coach-session-workout-modal .modal-actions > .completed-share-actions,
  .coach-session-workout-modal .modal-actions > .completed-share-actions > summary,
  .coach-session-editor-modal .modal-actions > button{
    flex:1 1 0!important;
    min-width:0!important;
  }
  .coach-session-workout-modal .modal-actions > button,
  .coach-session-workout-modal .modal-actions > .completed-share-actions > summary,
  .coach-session-editor-modal .modal-actions > button{
    position:relative!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    min-height:48px!important;
    height:48px!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    color:#fff!important;
    box-shadow:none!important;
    font-size:0!important;
    line-height:1!important;
  }
  .coach-session-workout-modal .modal-actions > button:hover,
  .coach-session-workout-modal .modal-actions > button:focus-visible,
  .coach-session-workout-modal .modal-actions > .completed-share-actions > summary:hover,
  .coach-session-workout-modal .modal-actions > .completed-share-actions > summary:focus-visible,
  .coach-session-editor-modal .modal-actions > button:hover,
  .coach-session-editor-modal .modal-actions > button:focus-visible{
    background:rgba(255,255,255,.10)!important;
    outline:none!important;
  }
  .coach-session-workout-modal .modal-actions > button::before,
  .coach-session-workout-modal .modal-actions > .completed-share-actions > summary::before,
  .coach-session-editor-modal .modal-actions > button::before{
    display:block;
    color:#fff;
    font-family:Arial,sans-serif;
    font-size:30px;
    font-weight:500;
    line-height:1;
  }
  .coach-session-workout-modal .modal-actions .close-action::before,
  .coach-session-editor-modal .modal-actions .close-action::before{content:'×';font-size:38px}
  .coach-session-workout-modal .modal-actions #share-planned-btn::before,
  .coach-session-workout-modal .modal-actions #share-completed-btn::before,
  .coach-session-workout-modal .modal-actions > .completed-share-actions > summary::before{content:'↗';font-size:31px}
  .coach-session-workout-modal .modal-actions #download-planned-btn::before,
  .coach-session-workout-modal .modal-actions #download-completed-btn::before{content:'⇩';font-size:32px}
  .coach-session-workout-modal .modal-actions #view-completion-btn::before,
  .coach-session-workout-modal .modal-actions #complete-btn::before,
  .coach-session-workout-modal #completion-form .modal-actions button[type=submit]::before{content:'✓';font-size:31px}
  .coach-session-workout-modal .modal-actions #edit-session-btn::before,
  .coach-session-workout-modal .saved-completion-actions #edit-completion-btn::before{content:'✎';font-size:29px}
  .coach-session-workout-modal .modal-actions #delete-session-btn::before{content:'⌫';font-size:29px}
  .coach-session-workout-modal .modal-actions #coach-multi-timer-btn::before{content:'◴';font-size:30px}
  .coach-session-workout-modal #completion-form .modal-actions #back-details::before{content:'←';font-size:32px}
  .coach-session-workout-modal .saved-completion-actions #view-plan-btn::before{content:'▣';font-size:27px}
  .coach-session-workout-modal .saved-completion-actions [id*='intervals']::before{content:'↔';font-size:28px}
  .coach-session-editor-modal .modal-actions #save-session-template::before{content:'▣';font-size:27px}
  .coach-session-editor-modal .modal-actions button[type=submit]::before{content:'✓';font-size:31px}

  /* Completed share/PDF menu opens upward from the fixed strip. */
  .coach-session-workout-modal .completed-share-actions{position:relative!important;margin:0!important}
  .coach-session-workout-modal .completed-share-actions > summary{list-style:none!important}
  .coach-session-workout-modal .completed-share-actions > summary::-webkit-details-marker{display:none!important}
  .coach-session-workout-modal .completed-share-actions-menu{
    position:absolute!important;
    left:50%!important;
    bottom:54px!important;
    transform:translateX(-50%)!important;
    min-width:190px!important;
    padding:7px!important;
    border-radius:12px!important;
    background:#102536!important;
    border:1px solid rgba(0,179,255,.45)!important;
    box-shadow:0 10px 28px rgba(0,0,0,.30)!important;
    z-index:1115!important;
  }

  body:has(.coach-session-workout-modal) .coach-dashboard-actions.coach-action-icon-bar,
  body:has(.coach-session-workout-modal) .coach-athlete-bottom-actions,
  body:has(.coach-session-editor-modal) .coach-dashboard-actions.coach-action-icon-bar,
  body:has(.coach-session-editor-modal) .coach-athlete-bottom-actions{
    visibility:hidden!important;
  }
}

/* v447 mobile calendar parity: one compact header for List and Calendar */
@media (max-width:760px){
  /* Month changes on mobile are via the month title/picker or direct scrolling, not arrow buttons. */
  .athlete-calendar-card .month-nav > .icon-btn,
  .coach-athlete-calendar-card .month-nav > .icon-btn{display:none!important}

  /* List and Calendar use the same compact top row: month, fullscreen, This week. */
  .athlete-calendar-card .calendar-date-controls,
  .coach-athlete-calendar-card .calendar-date-controls{
    width:100%!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 34px auto!important;
    align-items:center!important;
    gap:5px!important;
  }
  .athlete-calendar-card .month-nav,
  .coach-athlete-calendar-card .month-nav{
    min-width:0!important;
    display:block!important;
  }
  .athlete-calendar-card .calendar-month-picker,
  .coach-athlete-calendar-card .calendar-month-picker{width:100%!important}
  .athlete-calendar-card .calendar-month-picker-trigger,
  .coach-athlete-calendar-card .calendar-month-picker-trigger{max-width:100%!important}
  .athlete-calendar-card .calendar-this-week-btn,
  .coach-athlete-calendar-card .calendar-this-week-btn{
    width:auto!important;
    min-width:74px!important;
    min-height:34px!important;
    margin:0!important;
    padding:6px 10px!important;
    justify-self:end!important;
    white-space:nowrap!important;
  }
  .athlete-calendar-card .athlete-calendar-fullscreen-inline,
  .coach-athlete-calendar-card .coach-calendar-fullscreen-inline{
    justify-self:center!important;
    margin:0!important;
  }

  /* Weekly distance appears once only, beside List / Calendar. */
  .athlete-calendar-card .calendar-week-distance,
  .coach-athlete-calendar-card .calendar-week-distance{display:none!important}

  /* Keep the same compact control spacing in both mobile modes. */
  .athlete-calendar-card .calendar-title-distance,
  .coach-athlete-calendar-card .calendar-title-distance{
    width:100%!important;
    display:block!important;
    margin:0!important;
  }
}

/* v450 mobile calendar month/fatigue parity */
@media (max-width:760px){
  .athlete-calendar-card .calendar-date-controls,
  .coach-athlete-calendar-card .calendar-date-controls{
    grid-template-columns:minmax(145px,1fr) 34px auto!important;
  }
  .athlete-calendar-card .month-nav,
  .coach-athlete-calendar-card .month-nav,
  .athlete-calendar-card .calendar-month-picker,
  .coach-athlete-calendar-card .calendar-month-picker,
  .athlete-calendar-card .calendar-month-picker-trigger,
  .coach-athlete-calendar-card .calendar-month-picker-trigger{
    width:100%!important;
    min-width:0!important;
  }
  .athlete-calendar-card .calendar-month-picker-trigger,
  .coach-athlete-calendar-card .calendar-month-picker-trigger{
    justify-content:flex-start!important;
  }
  .athlete-calendar-card .calendar-month-label,
  .coach-athlete-calendar-card .calendar-month-label{
    overflow:visible!important;
    text-overflow:clip!important;
    white-space:nowrap!important;
    font-size:20px!important;
  }
}

/* v452 mobile calendar save-return and context-menu safety */
@media (max-width:760px){
  /* Calendar menus must sit above the fixed RacePace bottom navigation and remain scrollable when tall. */
  .calendar-context-menu{
    z-index:1205;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }
}

/* v463 reversible weekly effort shading */
.week-theme-choice {
  display:grid;
  grid-template-columns:minmax(0,1fr) 30px;
  align-items:center;
  gap:4px;
  padding:0 5px 0 0;
}
.week-theme-choice .week-theme-btn {
  min-width:0;
}
.week-actions-menu button.week-theme-swap-btn {
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  min-height:28px;
  padding:0;
  border:1px solid rgba(7,25,37,.14);
  border-radius:8px;
  background:#fff;
  color:#526773;
  font-size:17px;
  font-weight:900;
  line-height:1;
  cursor:pointer;
}
.week-actions-menu button.week-theme-swap-btn:hover,
.week-actions-menu button.week-theme-swap-btn:focus {
  border-color:rgba(0,179,255,.42);
  background:rgba(0,179,255,.08);
  color:#087b9d;
  outline:none;
}
.week-actions-menu button.week-theme-swap-btn.reversed {
  border-color:rgba(0,179,255,.32);
  background:rgba(0,179,255,.09);
  color:#087b9d;
}
.week-theme-choice.no-swap {
  grid-template-columns:1fr;
  padding-right:5px;
}

/* v469 Run work-target Exact / Range control */
.target-range-option {
  flex:1;
  border:0;
  background:transparent;
  padding:6px 8px;
  border-radius:6px;
  color:var(--muted);
  font-size:11px;
  font-weight:700;
  cursor:pointer;
}
.target-range-option.active {
  background:var(--navy);
  color:#fff;
}
@media (max-width:700px) {
  [data-target-range-fields] {
    grid-template-columns:1fr !important;
  }
  [data-target-range-fields] > span {
    text-align:center;
  }
}

/* v470 coach calendar week/month completed load summary */
@media (min-width:761px) {
  .calendar.coach-calendar:not(.compare-calendar) .week-actions-spacer,
  .calendar.coach-calendar:not(.compare-calendar) .calendar-week-row > .week-actions.week-actions-split {
    width:68px;
    min-width:68px;
    max-width:68px;
  }
  .calendar.coach-calendar:not(.compare-calendar) .calendar-week-row > .week-actions.week-actions-split {
    justify-content:center;
    gap:5px;
  }
}
.week-load-summary {
  width:64px;
  display:grid;
  grid-template-columns:1fr;
  gap:3px;
  margin:0 auto 1px;
}
.week-load-summary-item {
  min-width:0;
  padding:4px 3px 3px;
  border:1px solid #dce7eb;
  border-radius:8px;
  background:#f3f9fb;
  text-align:center;
  line-height:1;
}
.week-load-summary-item.month { background:#f1f8f1; border-color:#d9ead9; }
.week-load-summary-item small {
  display:block;
  margin:0 0 2px;
  color:#667d88;
  font-size:7px;
  font-weight:950;
  letter-spacing:.035em;
  white-space:nowrap;
}
.week-load-summary-item strong {
  display:block;
  color:var(--navy);
  font-size:13px;
  font-weight:950;
  line-height:1.05;
}
@media (max-width:760px) {
  .week-load-summary { display:none !important; }
}

/* RacePace v477 — race results / benchmark history */
.race-result-pill{display:inline-flex;align-items:center;width:max-content;padding:6px 10px;border-radius:999px;background:#dff6ff;color:#006f9f;border:1px solid #9edff7;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.race-result-card{margin:16px 0;padding:16px;border:1px solid #b9ddeb;border-radius:16px;background:linear-gradient(180deg,#f8fdff 0%,#eef9fd 100%)}
.race-result-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
.race-result-card-head h3{margin:2px 0 0;color:var(--navy);font-size:30px;line-height:1}
.race-result-benchmark{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;background:#fff;color:#08769d;border:1px solid #b9ddeb;font-size:11px;font-weight:900;text-align:right}
.race-result-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.race-result-stats>div{padding:11px;border-radius:12px;background:#fff;border:1px solid #d8eaf1}
.race-result-stats small,.race-result-notes small{display:block;margin-bottom:4px;color:#71808a;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.05em}
.race-result-stats strong{display:block;color:var(--navy);font-size:14px;overflow-wrap:anywhere}
.race-result-splits{margin-top:16px}
.race-result-splits h4{margin:0 0 8px;color:var(--navy)}
.race-result-split-table{overflow:hidden;border:1px solid #d8eaf1;border-radius:12px;background:#fff}
.race-result-split-head,.race-result-split-line{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;align-items:center;padding:9px 11px}
.race-result-split-head{background:#e9f6fb;color:#61747f;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.05em}
.race-result-split-line{border-top:1px solid #e2eef3;color:#263844;font-size:13px}
.race-result-split-line strong{color:var(--navy)}
.race-result-notes{margin-top:14px;padding:12px;border-radius:12px;background:#fff;border:1px solid #d8eaf1}
.race-result-notes p{margin:0;color:#354b58;white-space:pre-wrap}
.race-result-modal{width:min(820px,calc(100vw - 24px))}
.race-result-source-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin-bottom:16px;padding:13px;border:1px solid #d6e8ef;border-radius:14px;background:#f6fbfd}
.race-result-source-summary{display:flex;flex-direction:column;gap:3px;min-width:0}
.race-result-source-summary strong{color:var(--navy)}
.race-result-source-summary span{color:#6b7d87;font-size:12px;overflow-wrap:anywhere}
.race-result-source-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.race-result-split-editor{margin:18px 0;padding:14px;border:1px solid #d6e8ef;border-radius:14px;background:#fbfeff}
.race-result-split-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.race-result-split-editor-head h4{margin:0 0 3px;color:var(--navy)}
.race-result-split-editor-head p{margin:0}
#race-result-split-rows{display:grid;gap:8px}
.race-result-split-edit-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(120px,1fr) minmax(90px,.7fr) 38px;gap:8px;align-items:center}
.race-result-split-distance{display:grid;grid-template-columns:minmax(80px,1fr) 70px;gap:6px}
.race-result-split-edit-row input,.race-result-split-edit-row select{width:100%}
.race-result-segment{display:flex;align-items:center;justify-content:center;min-height:42px;padding:8px;border-radius:10px;background:#e9f6fb;color:#08769d;font-size:12px;font-weight:900;text-align:center}
.race-result-remove-split{width:38px;height:38px;border-radius:10px;border:1px solid #efb5b5;background:#fff;color:#b43a3a;font-size:20px;font-weight:900;cursor:pointer}
.race-result-source-modal{width:min(720px,calc(100vw - 24px))}
.race-result-activity-list{display:grid;gap:9px;max-height:55vh;overflow:auto}
.race-result-activity-option{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;padding:13px 14px;border:1px solid #cfe3eb;border-radius:13px;background:#fff;text-align:left;cursor:pointer}
.race-result-activity-option:hover{border-color:#00b3ff;box-shadow:0 0 0 2px rgba(0,179,255,.08)}
.race-result-activity-option div{display:flex;flex-direction:column;gap:3px;min-width:0}
.race-result-activity-option strong{color:var(--navy)}
.race-result-activity-option span{color:#6d7f89;font-size:12px}
.race-result-activity-option em{flex:0 0 auto;color:#08769d;font-style:normal;font-size:17px;font-weight:900}
.race-history-card{margin-top:18px}
.coach-past-race-list .coach-race-row{opacity:.97}
@media(max-width:760px){
  .race-result-card-head,.race-result-split-editor-head,.race-result-source-tools{grid-template-columns:1fr;display:grid}
  .race-result-benchmark{justify-self:start;text-align:left}
  .race-result-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .race-result-source-actions{justify-content:flex-start}
  .race-result-split-edit-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 38px}
  .race-result-segment{grid-column:1 / -1;grid-row:2}
  .race-result-remove-split{grid-column:3;grid-row:1}
  .race-result-activity-option{align-items:flex-start}
}

/* v479: desktop coach calendar multi-day selection */
@media (min-width:1000px) and (any-pointer:fine){
  .calendar.coach-calendar:not(.compare-calendar) .calendar-grid .day[data-calendar-date]{cursor:default;}
  .calendar.coach-calendar:not(.compare-calendar) .calendar-grid .day.calendar-multi-selected{
    border-color:#00b3ff;
    box-shadow:inset 0 0 0 3px rgba(0,179,255,.78),0 0 0 2px rgba(0,179,255,.14);
  }
  .calendar-multi-day-toolbar{
    position:fixed;
    left:50%;
    bottom:22px;
    transform:translateX(-50%);
    z-index:118;
    display:flex;
    align-items:center;
    gap:14px;
    min-width:460px;
    max-width:calc(100vw - 40px);
    padding:10px 12px 10px 16px;
    border:1px solid rgba(0,179,255,.7);
    border-radius:16px;
    background:#102536;
    color:#fff;
    box-shadow:0 18px 46px rgba(3,24,37,.28),0 0 0 1px rgba(255,255,255,.05) inset;
  }
  .calendar-multi-day-toolbar-copy{display:flex;flex-direction:column;gap:1px;min-width:116px;}
  .calendar-multi-day-toolbar-copy strong{font-size:13px;font-weight:900;letter-spacing:.01em;}
  .calendar-multi-day-toolbar-copy span{font-size:10px;font-weight:700;color:#a9bdc8;}
  .calendar-multi-day-toolbar-actions{display:flex;align-items:center;gap:7px;margin-left:auto;}
  .calendar-multi-day-toolbar-actions button{
    min-height:36px;
    padding:0 13px;
    border:1px solid #168db9;
    border-radius:10px;
    background:#087cad;
    color:#fff;
    font-size:12px;
    font-weight:900;
    cursor:pointer;
  }
  .calendar-multi-day-toolbar-actions button:hover:not(:disabled),
  .calendar-multi-day-toolbar-actions button:focus-visible:not(:disabled){background:#00a9e8;outline:none;}
  .calendar-multi-day-toolbar-actions button.danger{border-color:#a84848;background:#8f3434;}
  .calendar-multi-day-toolbar-actions button.danger:hover:not(:disabled),
  .calendar-multi-day-toolbar-actions button.danger:focus-visible:not(:disabled){background:#b84444;}
  .calendar-multi-day-toolbar-actions button.clear{border-color:#536878;background:#263d4e;}
  .calendar-multi-day-toolbar-actions button:disabled{opacity:.4;cursor:not-allowed;}
}

/* v480 workout comment indicator: coach + athlete calendars only */
.calendar .session-chip.has-session-comment{
  position:relative;
  padding-right:30px;
}
.calendar .session-comment-indicator{
  position:absolute;
  top:5px;
  right:5px;
  z-index:6;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:19px;
  height:19px;
  border:1px solid rgba(0,179,255,.45);
  border-radius:999px;
  background:#fff;
  color:#0a607d;
  box-shadow:0 2px 6px rgba(4,31,45,.20);
  pointer-events:none;
}
.calendar .session-comment-indicator svg{
  width:12px;
  height:12px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
@media(max-width:760px){
  .calendar .session-chip.has-session-comment{padding-right:31px;}
  .calendar .session-comment-indicator{top:6px;right:6px;width:18px;height:18px;}
  .calendar .session-comment-indicator svg{width:11px;height:11px;}
}

/* v482 Small & Large Steps workout builder */
.small-large-steps-builder{display:grid;gap:16px;}
.small-large-intro{margin-bottom:0;}
.small-large-common-grid,.small-large-steps-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.small-large-common-card,.small-large-sets-card,.small-large-step-card{border:1px solid var(--line);border-radius:16px;background:#fff;padding:16px;box-shadow:0 8px 24px rgba(17,40,56,.06);}
.small-large-step-card.small{border-top:4px solid var(--cyan);}
.small-large-step-card.large{border-top:4px solid var(--blue);}
.small-large-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:14px;}
.small-large-toggle-row>div:first-child{min-width:0;}
.small-large-toggle-row strong{display:block;font-size:14px;}
.small-large-toggle-row small{display:block;margin-top:3px;color:var(--muted);font-size:11px;line-height:1.35;}
.small-large-toggle-buttons,.small-large-sets-toggle{flex:0 0 auto;}
.small-large-common-fields,.small-large-rest-fields,.small-large-set-options{margin-top:14px;}
.small-large-set-options{display:grid;grid-template-columns:minmax(130px,.45fr) minmax(220px,1fr);gap:14px;align-items:start;}
.small-large-set-options.hidden{display:none!important;}
.small-large-step-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px;}
.small-large-step-head small{display:block;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:10px;font-weight:800;}
.small-large-step-head h4{margin:2px 0 0;font-family:Oswald,sans-serif;font-size:22px;text-transform:uppercase;letter-spacing:.02em;}
.small-large-step-grid{display:grid;grid-template-columns:minmax(105px,.32fr) minmax(230px,1fr);gap:14px;align-items:start;}
.small-large-step-card .field,.small-large-set-options .field{margin-bottom:0;}
.small-large-target .metric-control,.small-large-common-fields .metric-control,.small-large-rest-fields .metric-control,.small-large-set-rest .metric-control{margin:0;}
.small-large-rest-metric>.metric-toggle{display:none;}
.small-large-rest-metric .metric-control-label-row{margin-bottom:7px;}
@media(max-width:760px){
  .small-large-common-grid,.small-large-steps-grid,.small-large-set-options,.small-large-step-grid{grid-template-columns:1fr;}
  .small-large-toggle-row{align-items:flex-start;}
}


/* v491 mobile modal stacking hotfix: open windows must sit above the fixed RacePace bottom navigation. */
@media (max-width:760px){
  .modal-backdrop{
    z-index:1200!important;
  }
}
