/* Home additions: race week (#19) */
.race-slim{position:relative;width:100%;display:flex;align-items:center;gap:14px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;border:1px solid var(--line);border-radius:var(--radius-sm);padding:13px 16px 16px;margin-bottom:22px;overflow:hidden;cursor:pointer}
.race-slim-count{font:500 30px/1 var(--font-display);letter-spacing:-.03em;color:var(--accent-text);min-width:42px}
.race-slim-text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.race-slim-label{font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);font-weight:700}
.race-slim strong{font:500 17px/1.2 var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.race-slim-date{font-size:12px;color:var(--muted);white-space:nowrap}
.race-slim svg{width:18px;height:18px;color:var(--muted);flex:none}
.race-slim-track{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--surface-2)}
.race-slim-track span{display:block;height:100%;background:var(--accent-fill)}
.race-slim:focus-visible{outline:2px solid var(--accent-fill);outline-offset:2px}
.raceweek{background:var(--surface);border-radius:var(--radius);border-top:3px solid var(--accent-fill);padding:22px;margin-bottom:22px;overflow:hidden}
.raceweek-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.raceweek-head .eyebrow{color:var(--accent-text);margin:0}
.raceweek-date{font-size:11px;font-weight:600;border-radius:5px;padding:5px 8px;background:var(--accent-soft);color:var(--accent-text);white-space:nowrap}
.raceweek-hero{display:flex;align-items:flex-end;gap:8px 22px;margin:20px 0 4px;flex-wrap:wrap}
.raceweek-count{font:500 84px/.88 var(--font-display);letter-spacing:-.05em;color:var(--accent-text)}
.raceweek-count span{display:block;font:700 11px/1 var(--font-body);letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-top:12px}
.raceweek-hero h2{font-size:28px;line-height:1.1}
.raceweek-hero p{font-size:13px;color:var(--muted);margin-top:7px}
.raceweek-grid{display:grid;margin-top:16px}
.raceweek-block{border-top:1px solid var(--line);padding:18px 0;min-width:0}
.raceweek-block:last-child{padding-bottom:0}
.raceweek-block h3{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;font:700 11px/1.3 var(--font-body);letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.raceweek-block h3 span{font-weight:600;letter-spacing:0;text-transform:none;font-size:12px;color:var(--accent-text)}
.raceweek-session{font:500 22px/1.2 var(--font-display);color:var(--ink)}
.raceweek-meta{font-size:13px;color:var(--muted);margin:6px 0 12px}
.raceweek-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.raceweek-list li{position:relative;padding-left:18px;font-size:14px;line-height:1.45;color:var(--muted-strong)}
.raceweek-list li::before{content:"";position:absolute;left:0;top:.5em;width:7px;height:7px;border-radius:50%;background:var(--accent-fill)}
.raceweek-kit{margin:0 0 4px;gap:0}
.raceweek-kit label{font-size:15px;border-bottom:1px solid var(--line)}
.raceweek-kit label:last-child{border-bottom:0}
.split-grid{list-style:none;padding:0;margin:0 0 4px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.split-grid li{background:var(--surface-2);border-radius:var(--radius-sm);padding:8px 9px;display:flex;flex-direction:column;gap:3px;min-width:0}
.split-grid li span{font-size:10px;color:var(--muted);white-space:nowrap}
.split-grid li b{font:500 16px/1.1 var(--font-display);color:var(--ink)}
.split-grid li.km{background:var(--accent-soft)}
.split-grid li.km span{color:var(--accent-text)}
.split-grid li.finish{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:center;background:var(--accent-fill)}
.split-grid li.finish span,.split-grid li.finish b{color:var(--accent-on-fill)}
.split-grid li.finish span{font-size:12px;font-weight:700}
@media(min-width:760px){.raceweek{padding:30px}.raceweek-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:40px}.raceweek-count{font-size:112px}.raceweek-hero h2{font-size:34px}}
@media(max-width:370px){.raceweek{padding:19px}.raceweek-count{font-size:72px}.split-grid li{padding:7px}.split-grid li b{font-size:15px}}
/* Daily score (#20) */
.score-card{background:var(--surface);border-radius:var(--radius);padding:20px 22px 8px;margin-bottom:22px;display:grid;gap:4px}
.score-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.score-head .eyebrow{margin:0}
.score-streak{font-size:11px;font-weight:600;border-radius:5px;padding:5px 8px;background:var(--accent-soft);color:var(--accent-text);white-space:nowrap}
.score-main{display:flex;align-items:flex-end;gap:6px 16px;flex-wrap:wrap;margin:14px 0 14px}
.score-number{font:500 64px/.9 var(--font-display);letter-spacing:-.05em;color:var(--ink)}
.score-number span{font-size:20px;letter-spacing:0;color:var(--muted);margin-left:4px}
.score-main p{font-size:13px;color:var(--muted-strong);padding-bottom:4px}
.score-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.score-bar span{height:7px;border-radius:4px;background:var(--surface-2);transition:background .25s}
.score-bar span.on{background:var(--accent-fill)}
.score-how{font-size:12px;line-height:1.5;color:var(--muted);margin-top:12px}
.score-parts{list-style:none;margin:10px 0 0;padding:0}
.score-parts li{display:flex;align-items:center;gap:12px;min-height:58px;border-top:1px solid var(--line);padding:8px 0}
.score-tick svg{width:22px;height:22px;color:var(--line-strong);display:block}
.score-parts li.done .score-tick svg{color:var(--accent-text)}
.score-label{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.score-label b{font-size:15px;font-weight:600;color:var(--ink)}
.score-label small{font-size:12px;color:var(--muted)}
.score-parts li.done .score-label small{color:var(--accent-text)}
.score-acts{display:flex;gap:6px;flex:none}
.score-act{min-height:38px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px;border-radius:9px;font:600 12px var(--font-body);background:var(--surface-2);color:var(--ink);border:0;text-decoration:none;white-space:nowrap;cursor:pointer}
.score-parts li:not(.done) .score-act:not(.quiet){background:var(--accent-fill);color:var(--accent-on-fill)}
.score-act.quiet{background:transparent;color:var(--accent-text);padding:0 6px}
.score-act:focus-visible{outline:2px solid var(--accent-fill);outline-offset:2px}
.score-note{font-size:12px;line-height:1.5;color:var(--caution);background:var(--caution-soft);border-radius:var(--radius-sm);padding:10px 12px;margin:4px 0 14px}
@media(min-width:760px){.score-card{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);column-gap:40px;padding:26px 30px 14px}.score-summary{padding-bottom:12px}.score-parts{margin:0}.score-parts li:first-child{border-top:0}.score-note{grid-column:1/-1}.score-number{font-size:76px}}
@media(max-width:370px){.score-card{padding:18px 18px 6px}.score-act{padding:0 10px}.score-label b{font-size:14px}}
/* Weekly recap image (#21) */
.recap-layout{display:grid;gap:20px;margin-top:14px}
.recap-preview{justify-self:center;width:100%;max-width:340px}
.recap-preview.story{max-width:270px}
.recap-preview canvas{display:block;width:100%;height:auto;border-radius:14px;border:1px solid var(--line);box-shadow:0 10px 30px var(--shadow);background:var(--surface-2)}
.recap-controls{display:grid;gap:12px;align-content:start;min-width:0}
.recap-lede{font-size:14px;line-height:1.5;color:var(--muted-strong)}
.recap-seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;background:var(--surface-2);border-radius:11px;padding:4px}
.recap-seg button{min-height:40px;border:0;border-radius:8px;background:transparent;color:var(--muted-strong);font:600 13px var(--font-body);cursor:pointer;white-space:nowrap}
.recap-seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px var(--shadow)}
.recap-seg button:focus-visible{outline:2px solid var(--accent-fill);outline-offset:1px}
.recap-controls .primary{margin-top:6px}
.recap-controls .save-note{font-size:11px;line-height:1.5;color:var(--muted)}
@media(min-width:760px){.recap-layout{grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:36px;align-items:start}.recap-preview{justify-self:start}.recap-controls{max-width:440px;padding-top:4px}}
