:root{color-scheme:light;--bg:#f7f8f5;--paper:#ffffff;--ink:#1b2a25;--sub:#728079;--accent:#205843;--accent-soft:#e9f2ea;--border:#e7ebe6;--orange:#c77c43;--shadow:0 7px 27px rgba(27,49,36,.035);--radius:22px;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #a2ccb7;outline-offset:2px}svg{width:22px;height:22px;stroke-linecap:round;stroke-linejoin:round}a{color:var(--accent)}.app-shell{min-height:100dvh;max-width:680px;margin:auto;padding:0 20px calc(106px + env(safe-area-inset-bottom,0px))}.header{height:74px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:9px;align-items:center;font-size:25px;letter-spacing:-1.4px;font-weight:800}.brand-mark{font-family:Georgia,serif;background:var(--accent);color:#fff;font-size:29px;letter-spacing:-4px;line-height:42px;text-align:center;border-radius:13px;width:41px;height:41px;padding-right:5px}.brand-dot{color:#bcdcc4}.header-actions{display:flex;align-items:center;gap:10px}.icon-button{border:0;background:transparent;color:var(--ink);display:grid;place-items:center;width:42px;height:42px;border-radius:50%}.icon-button:hover{background:var(--accent-soft)}.offline-pill{background:#f6eae3;border-radius:20px;font-size:11px;color:#9d5c3c;padding:5px 9px}.eyebrow{text-transform:uppercase;letter-spacing:1.6px;color:var(--sub);font-weight:700;font-size:10px}.intro{margin:16px 0 25px}.intro h1{font-size:35px;letter-spacing:-1.7px;line-height:1.1;margin:8px 0 10px;font-weight:780}.intro p{color:var(--sub);margin:0;font-size:14px;line-height:1.6}.section-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:25px 0 12px}.section-head h2{font-size:19px;letter-spacing:-.6px;margin:0}.section-head .hint{font-size:12px;color:var(--sub)}.card{background:var(--paper);border:1px solid var(--border);border-radius:var(--radius);padding:19px;box-shadow:var(--shadow)}.card + .card{margin-top:10px}.hero{background:var(--accent);color:#fff;border-radius:25px;padding:23px;min-height:198px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative}.hero:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.11);width:230px;height:230px;right:-80px;top:-115px;border-radius:50%;box-shadow:0 0 0 42px rgba(255,255,255,.035),0 0 0 84px rgba(255,255,255,.025)}.hero .eyebrow{color:#c6e1d2}.hero h2{font-size:28px;letter-spacing:-.9px;margin:11px 0 5px;position:relative;z-index:1}.hero p{color:#d5e5db;font-size:13px;margin:0;position:relative;z-index:1}.hero .hero-button{margin-top:20px;position:relative;z-index:1}.button{border:0;border-radius:14px;padding:12px 17px;font-weight:680;font-size:14px;background:var(--accent);color:#fff;display:inline-flex;justify-content:center;align-items:center;gap:9px}.button:hover{filter:brightness(1.08)}.button.secondary{background:var(--accent-soft);color:var(--accent)}.button.white{background:white;color:var(--accent)}.button.outline{background:white;border:1px solid var(--border);color:var(--ink)}.button.danger{background:#fbe9e6;color:#9e302c}.button.full{width:100%}.button.sm{padding:9px 12px;font-size:12px;border-radius:11px}.muted{color:var(--sub)}.small{font-size:12px;line-height:1.5}.num{font-variant-numeric:tabular-nums}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.stat{padding:16px 12px;background:var(--paper);border:1px solid var(--border);border-radius:17px}.stat strong{font-size:26px;letter-spacing:-1px;font-weight:760}.stat small{font-size:10px;color:var(--sub);display:block;margin-top:5px}.stat .unit{font-size:11px;color:var(--sub);margin-left:3px}.coach{display:flex;gap:13px}.coach-icon{flex:none;width:38px;height:38px;background:var(--accent-soft);color:var(--accent);border-radius:12px;display:grid;place-items:center;font-size:20px}.coach p{font-size:13px;line-height:1.65;color:#53665b;margin:5px 0 0}.coach strong{font-size:14px}.row{display:flex;justify-content:space-between;align-items:center;gap:12px}.row + .row{margin-top:12px}.row-title{font-size:14px;font-weight:680}.row-sub{font-size:12px;color:var(--sub);margin-top:5px}.divider{height:1px;background:var(--border);margin:15px 0}.list{display:flex;flex-direction:column;gap:9px}.list-card{display:flex;align-items:center;gap:13px;padding:14px 15px;background:var(--paper);border:1px solid var(--border);border-radius:17px}.daybox{width:45px;flex:none;text-align:center}.daybox b{font-size:11px;letter-spacing:.5px;color:var(--sub)}.daybox span{display:block;font-size:19px;font-weight:760;margin-top:3px}.list-main{flex:1;min-width:0}.list-main .row-title{line-height:1.3}.bubble{width:33px;height:33px;flex:none;display:grid;place-items:center;border-radius:11px;background:var(--accent-soft);font-size:16px}.bubble.rest{background:#f2eee8}.bubble.quality{background:#fcefe2}.chip{font-size:11px;font-weight:700;color:var(--accent);padding:5px 8px;background:var(--accent-soft);border-radius:99px;white-space:nowrap}.pill-row{display:flex;flex-wrap:wrap;gap:8px}.pill{border-radius:99px;background:#f0f3ee;color:#53655a;padding:7px 10px;font-size:12px}.chart{display:flex;align-items:flex-end;gap:8px;height:146px;padding:12px 3px 0}.chart-col{flex:1;min-width:0;height:100%;display:flex;align-items:center;flex-direction:column;justify-content:flex-end;gap:7px}.chart-track{width:100%;height:112px;display:flex;align-items:end;border-radius:7px;overflow:hidden;background:#f3f5f1}.chart-fill{background:#76a893;border-radius:7px 7px 0 0;width:100%;min-height:0}.chart-fill.recent{background:var(--accent)}.chart-label{font-size:10px;color:var(--sub)}.empty{text-align:center;padding:27px 15px}.empty-icon{margin:0 auto 12px;background:var(--accent-soft);width:55px;height:55px;border-radius:16px;display:grid;place-items:center;font-size:26px}.empty h3{font-size:17px;margin:0 0 8px}.empty p{color:var(--sub);font-size:13px;line-height:1.6;max-width:340px;margin:0 auto 16px}.actions{display:flex;gap:9px;flex-wrap:wrap}.actions .button{flex:1}.tabbar{position:fixed;bottom:0;left:0;right:0;max-width:680px;margin:auto;background:rgba(255,255,255,.97);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(5,1fr);padding:10px 8px calc(9px + env(safe-area-inset-bottom,0px));z-index:15;backdrop-filter:blur(18px)}.tab{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;border:0;background:transparent;color:#99a29d;font-size:10px;padding:3px 0;min-height:45px}.tab svg{fill:none;stroke:currentColor;stroke-width:1.7;width:21px;height:21px}.tab.active{color:var(--accent);font-weight:760}.tab.active svg{stroke-width:2.2}.modal-backdrop{position:fixed;inset:0;background:rgba(17,31,25,.42);z-index:30;display:flex;align-items:flex-end;justify-content:center}.modal-backdrop[hidden]{display:none}.sheet{background:var(--bg);width:100%;max-width:680px;border-radius:26px 26px 0 0;max-height:90dvh;overflow:auto;padding:10px 22px calc(24px + env(safe-area-inset-bottom,0px));box-shadow:0 20px 60px #0002}.sheet-grip{width:38px;height:5px;border-radius:9px;background:#d9ded9;margin:0 auto 15px}.sheet-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.sheet-top h2{font-size:22px;letter-spacing:-.65px;margin:0}.sheet p{font-size:13px;color:var(--sub);line-height:1.6}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:15px}.field label{font-size:12px;font-weight:700;color:#475c50}.field input,.field select,.field textarea{background:white;border:1px solid #dce3dc;border-radius:12px;padding:13px;color:var(--ink);width:100%;min-height:46px}.field textarea{min-height:80px;resize:vertical}.fields-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.help{font-size:11px;color:var(--sub);line-height:1.55}.notice{background:var(--accent-soft);border-radius:14px;padding:13px;color:#315848;font-size:12px;line-height:1.6}.mini-row{display:flex;gap:10px;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.mini-row:last-child{border-bottom:0}.mini-row strong{font-size:13px}.mini-row input{width:68px;border:1px solid var(--border);border-radius:10px;padding:9px;text-align:center;background:white;font-size:13px}.mini-row .mini-input{display:flex;gap:5px;align-items:center}.toast{position:fixed;bottom:95px;left:50%;transform:translateX(-50%) translateY(15px);background:#1b3327;color:#fff;border-radius:12px;padding:11px 18px;font-size:13px;z-index:50;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;max-width:85%;text-align:center}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.subtle-link{background:none;border:0;padding:5px 0;font-weight:650;font-size:12px;color:var(--accent)}.section-hint{font-size:12px;color:var(--sub);line-height:1.5}.progress-track{height:7px;border-radius:5px;background:#e9efe9;overflow:hidden;margin-top:10px}.progress-fill{height:100%;background:var(--accent);border-radius:5px}.footer-note{text-align:center;font-size:11px;color:#9aa69e;margin:30px 0 6px}.goal-card{background:#ebf2ea;border:1px solid #d7e8d8;border-radius:19px;padding:20px}.goal-card strong{font-size:32px;letter-spacing:-1px}.goal-card small{display:block;color:#5f7c6b;margin-top:6px}.badge{font-size:10px;font-weight:750;color:#7b6040;background:#f9efe0;padding:6px 8px;border-radius:99px}.tight{margin:0}.mt{margin-top:17px}.mb{margin-bottom:13px}details{font-size:13px}summary{cursor:pointer;color:var(--accent);font-weight:700}.no-data{color:var(--sub);font-size:12px;text-align:center;padding:20px 10px}.callout{border-left:3px solid #87b69a;padding:6px 0 6px 12px;color:#536b5c;font-size:12px;line-height:1.6}.loading{min-height:280px;display:grid;place-items:center;color:var(--sub)}.top-actions{display:flex;justify-content:space-between;align-items:center;gap:10px}.file-picker{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden}.check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.check-grid label{border:1px solid var(--border);border-radius:13px;padding:12px 7px;text-align:center;font-size:12px;background:white}.check-grid input{display:block;margin:0 auto 7px;accent-color:var(--accent)}@media (min-width:700px){.app-shell{border-left:1px solid var(--border);border-right:1px solid var(--border);background:var(--bg)}body{background:#e9eeea}.tabbar{border-left:1px solid var(--border);border-right:1px solid var(--border)}}@media (max-width:360px){.app-shell{padding-left:13px;padding-right:13px}.intro h1{font-size:30px}.stats{gap:6px}.stat{padding:13px 9px}.stat strong{font-size:22px}}

/* Strava import review (v1.1) */
.import-warning{padding:12px 14px;border:1px solid #e3b96b;background:#fff5df;border-radius:13px;color:#785523;font-size:12px;line-height:1.55;margin:12px 0}
.import-sample{padding:14px 16px}.import-sample .row{min-width:0}.import-sample .row-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.import-option{display:flex;gap:12px;align-items:flex-start;padding:14px;background:#fff;border-radius:15px;border:1px solid var(--border);font-size:13px;line-height:1.5}
.import-option input{accent-color:var(--accent);width:19px;height:19px;flex:none;margin-top:2px}.import-option small{display:block;color:var(--sub);font-size:11px;margin-top:5px}

/* Version 1.2 fixed-goal accountability */
.status-badge{display:inline-block;max-width:175px;padding:6px 9px;border-radius:9px;font-size:10px;font-weight:750;line-height:1.3;white-space:normal;text-align:center;background:#eff1ec;color:#526057}
.status-badge.met,.status-badge.on-track{background:#deeee4;color:#215b3c}
.status-badge.behind,.status-badge.missed{background:#fff0e9;color:#a14830}
.status-badge.in-progress{background:#eaf0fc;color:#3d6396}
.status-badge.rest{background:#ecefeb;color:#6e7770}
.status-badge.upcoming{background:#eff1ec;color:#737d75}
.hero .status-badge{background:#e5f5e9;color:#22563c;margin-top:10px}
.hero .status-badge.in-progress{background:#e4f0fc;color:#224976}
.score-amount{font-size:29px;font-weight:800;letter-spacing:-1.3px;margin-top:5px;white-space:nowrap}
.score-amount span{font-size:13px;color:var(--sub);font-weight:600;letter-spacing:0}
.weekly-score{margin:12px 0}.weekly-score .row{align-items:flex-start;gap:8px}
.score-footer{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--sub);margin-top:9px}
.alert-note{margin-top:12px;background:#fff0e9;color:#9d4d32;padding:10px 12px;border-radius:10px;font-size:12px;line-height:1.5}
.daily-miss-note{margin-top:10px;color:#aa5638;font-weight:650;font-size:11px;line-height:1.45}
.missed-day{border-color:#f2d6c9;background:#fffaf7}
.day-target{font-size:16px;white-space:nowrap;font-weight:800;text-align:right}
.day-target small{display:block;font-size:9px;color:var(--sub);font-weight:500}
.status-line{margin-top:7px}
.comparison{padding:5px 0 10px}.comparison .progress-track{margin-top:8px}
.progress-fill.behind-fill{background:#d68d6b}
@media(max-width:380px){.weekly-score .status-badge{max-width:125px}.score-amount{font-size:26px}.day-target{font-size:14px}}


/* v1.3 — Native-feeling system appearance: follow iOS Light / Dark settings.
   There is no stored theme preference. Switching device appearance updates the UI
   live, without altering any workouts, imported runs or fixed training plans. */
@media (prefers-color-scheme: dark) {
  :root {
    color-scheme: dark;
    --bg: #121915;
    --paper: #1c2821;
    --ink: #f1f6f0;
    --sub: #a8bbac;
    --accent: #97dcba;
    --accent-soft: #273d30;
    --border: #34443a;
    --orange: #d3a06e;
    --shadow: 0 7px 30px rgba(0,0,0,.13);
  }
  html,body { background: var(--bg); }
  .brand-mark { background:#286549; color:#fff; }
  .brand-dot { color:#c0e9cb; }
  .hero { background:#24513c; color:#fff; }
  .hero .eyebrow { color:#c1dec9; }
  .hero p { color:#d6e9dc; }
  .button { background:#326b50; color:#fff; }
  .button.secondary { background:var(--accent-soft); color:var(--accent); }
  .button.white { background:#fafcf9; color:#24513c; }
  .button.outline { background:var(--paper); border-color:var(--border); color:var(--ink); }
  .button.danger { background:#4d2c2b; color:#ffb9b2; }
  .coach p { color:#bed0c1; }
  .offline-pill { background:#4c3429; color:#ffd4b8; }
  .bubble.rest { background:#38352e; }
  .bubble.quality { background:#45392a; }
  .pill { background:#2c3d31; color:#c5d5c8; }
  .chart-track { background:#28372e; }
  .chart-fill { background:#5d987c; }
  .chart-fill.recent { background:#7dc39d; }
  .tabbar { background:rgba(24,34,28,.96); }
  .tab { color:#9aab9f; }
  .tab.active { color:var(--accent); }
  .sheet-grip { background:#536458; }
  .field label { color:#c3d7c7; }
  .field input,.field select,.field textarea {
    background:#202e25; border-color:#45584b; color:var(--ink);
  }
  .field input::placeholder,.field textarea::placeholder,.mini-row input::placeholder { color:#8fa797; }
  .field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible,
  .mini-row input:focus-visible { outline-color:#8dd1a9; }
  .mini-row input { background:#202e25; border-color:#45584b; color:var(--ink); }
  .notice { color:#bfdec9; }
  .import-option { background:var(--paper); }
  .import-warning { background:#453623; border-color:#816039; color:#ffdb9c; }
  .check-grid label { background:var(--paper); }
  .progress-track { background:#2b3c30; }
  .footer-note { color:#99ab9e; }
  .goal-card { background:#243d2f; border-color:#395a45; }
  .goal-card small { color:#b8d5c2; }
  .badge { background:#433b2c; color:#ffdbad; }
  .callout { color:#b9d5bf; border-left-color:#81bc98; }
  .toast { background:#eef7ef; color:#193627; box-shadow:0 5px 20px #0006; }
  .status-badge { background:#2d3931; color:#bbcdbf; }
  .status-badge.met,.status-badge.on-track { background:#244833; color:#a9e6bd; }
  .status-badge.behind,.status-badge.missed { background:#493024; color:#ffc5a6; }
  .status-badge.in-progress { background:#293d56; color:#bed9ff; }
  .status-badge.rest { background:#303831; color:#c3cec4; }
  .status-badge.upcoming { background:#303a32; color:#c4d3c7; }
  .hero .status-badge { background:#dcefe1; color:#27543b; }
  .hero .status-badge.in-progress { background:#e4f0fc; color:#224976; }
  .alert-note { background:#473027; color:#ffccaa; }
  .daily-miss-note { color:#ffb38f; }
  .missed-day { border-color:#684636; background:#302720; }
  .progress-fill.behind-fill { background:#dd9671; }
  .score-amount span, .day-target small { color:var(--sub); }
  @media (min-width:700px) { body { background:#0d120f; } }
}

/* v1.4 — compact, pace-led design. Today is today's assignment; Plan is the calendar. */
.intro{margin:9px 0 18px}.intro h1{font-size:32px;margin:6px 0 5px}.intro p:empty{display:none}
.hero-min{min-height:0;gap:12px;padding:23px}.hero-min:after{display:none}
.hero-min h2{font-size:26px;margin:3px 0 5px}
.hero-metrics{display:grid;grid-template-columns:.65fr 1.35fr;gap:10px;margin:9px 0 5px}
.hero-metrics>div{min-width:0}.hero-metrics small,.detail-metrics span{display:block;font-size:11px;color:#c4ddcd;margin-bottom:5px}
.hero-metrics strong{display:block;font-size:25px;line-height:1.18;letter-spacing:-.7px;overflow-wrap:anywhere}
.hero-metrics .pace-number{font-size:19px;letter-spacing:-.3px}
.hero-min .hero-foot{margin:0}.hero-min .status-badge{margin:0}
.hero-min .button{align-self:flex-start;margin-top:3px}
.concise-score{margin:0}.concise-score .score-amount{font-size:27px}.concise-score .status-badge{max-width:135px}
.compact-note{font-size:12px;color:var(--sub);line-height:1.5;margin:12px 0 2px}
.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.week-select{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}
.week-select>div{text-align:center}.week-select strong{font-size:15px}.week-select small{display:block;font-size:11px;color:var(--sub);margin-top:5px}
.pace-strip{display:flex;justify-content:space-between;align-items:center;gap:12px;border-radius:16px;background:var(--accent-soft);padding:13px 16px;margin:14px 0 2px;color:var(--ink)}
.pace-strip strong{display:block;font-size:25px;letter-spacing:-.5px;margin-top:5px}
.pace-strip strong span{font-size:12px;font-weight:500;color:var(--sub)}
.pace-strip>span{flex-shrink:0;color:var(--sub);font-size:11px}
.day-list{display:flex;flex-direction:column;gap:7px}
.day-row{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:13px;background:var(--paper);border:1px solid var(--border);border-radius:16px;color:var(--ink)}
.day-row:active{filter:brightness(.97)}
.day-date{width:42px;flex:none;text-align:center}.day-date span{display:block;font-size:10px;font-weight:650;color:var(--sub);text-transform:uppercase}.day-date strong{font-size:18px;display:block;margin-top:3px}
.day-copy{flex:1;min-width:0}.day-copy strong{display:block;font-size:13px;margin-bottom:4px}.day-copy span{display:block;font-size:11px;line-height:1.45;color:var(--sub)}.day-copy .day-pace{font-weight:750;color:var(--accent);margin-top:3px;font-size:12px}
.day-state{font-size:16px;font-weight:800;display:grid;place-items:center;width:25px;height:25px;flex:none;border-radius:50%;background:var(--accent-soft);color:var(--accent)}
.day-state.missed{background:#fff0e9;color:#a14830}.day-state.in-progress{background:#eaf0fc;color:#3d6396}.day-state.upcoming,.day-state.rest{background:var(--bg);color:var(--sub)}
.plan-actions{display:flex;justify-content:space-between;gap:10px;padding:12px 2px 0}
.two-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
.pace-figure{font-size:28px;font-weight:760;letter-spacing:-1px;margin-top:4px}.pace-figure small{font-size:12px;font-weight:500;color:var(--sub);margin-left:3px}
.pace-arrow{color:var(--sub);font-size:21px}
.detail-metrics{display:grid;grid-template-columns:.7fr 1.3fr;gap:14px;border-radius:18px;background:var(--accent-soft);padding:16px}
.detail-metrics span{color:var(--sub)}.detail-metrics strong{display:block;font-size:20px;line-height:1.25}
@media (prefers-color-scheme: dark) {
  .hero-min .hero-foot{color:#d6e9dc}
  .day-state.missed{background:#493024;color:#ffc5a6}
  .day-state.in-progress{background:#293d56;color:#bed9ff}
  .day-state.upcoming,.day-state.rest{background:#29362c;color:var(--sub)}
}
@media(max-width:355px){.hero-metrics{grid-template-columns:.7fr 1.3fr}.hero-metrics .pace-number{font-size:16px}.pace-strip>span{font-size:10px}.plan-actions .subtle-link{font-size:11px}}
.roadmap{margin:12px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:12px 0}
.roadmap summary{font-size:12px}.roadmap[open] summary{margin-bottom:10px}
.roadmap-row{display:flex;align-items:center;justify-content:space-between;padding:8px 2px;border-bottom:1px solid var(--border);font-size:12px;color:var(--sub)}.roadmap-row strong{color:var(--ink)}.roadmap-row:last-child{border-bottom:0}
