
:root{
  --bg:#f3f6fb;--card:#fff;--text:#101828;--muted:#667085;--border:#e4e7ec;
  --accent:#2563eb;--accent-soft:#dbeafe;--good:#15803d;--shadow:0 10px 30px rgba(15,23,42,.07)
}
body.dark{--bg:#09111f;--card:#111c2f;--text:#f8fafc;--muted:#9ca3af;--border:#26344c;--accent:#60a5fa;--accent-soft:#183050;--good:#4ade80;--shadow:none}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}
button,input,select{font:inherit}
button{cursor:pointer}
h1,h2,h3,p{margin-top:0}
h1{font-size:1.6rem;margin-bottom:0}
h2{font-size:1.25rem;margin-bottom:8px}
h3{font-size:1rem}
.eyebrow{font-size:.7rem;font-weight:850;letter-spacing:.12em;color:var(--accent);margin-bottom:5px}
.muted,small{color:var(--muted)}
.app-header{max-width:780px;margin:auto;padding:calc(18px + env(safe-area-inset-top)) 18px 12px;display:flex;justify-content:space-between;align-items:center}
.round-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--card);color:var(--text)}
main{max-width:780px;margin:auto;padding:0 14px 110px}
.screen{display:none}.screen.active{display:block}
.hero-card{border-radius:24px;padding:22px;background:linear-gradient(135deg,var(--accent),#111827);color:#fff;margin-bottom:14px;box-shadow:var(--shadow)}
.hero-card>div:first-child{display:flex;justify-content:space-between;align-items:end;gap:10px}
.hero-card strong{font-size:2.5rem}.hero-label{color:rgba(255,255,255,.78);margin-bottom:0}.hero-card span{font-size:.92rem}
.hero-bar{height:10px;background:rgba(255,255,255,.2);border-radius:99px;margin-top:15px;overflow:hidden}.hero-bar span{display:block;width:0;height:100%;background:#fff;border-radius:99px}
.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.quick-card,.card{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow)}
.quick-card{border-radius:18px;padding:15px}.quick-card span,.quick-card strong,.quick-card small{display:block}.quick-card span,.quick-card small{font-size:.8rem}.quick-card strong{font-size:1.13rem;margin:5px 0}
.card{border-radius:22px;padding:18px;margin-bottom:14px}
.card-title-row,.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.card-title-row h2,.section-head h2{margin:0}
#dayType{width:auto;max-width:150px}
select,input{width:100%;border:1px solid var(--border);border-radius:12px;background:var(--card);color:var(--text);padding:11px}
.task-row,.check-row{display:flex;align-items:flex-start;gap:11px;padding:12px 0;border-bottom:1px solid var(--border)}.task-row:last-child,.check-row:last-child{border:0}
.task-row input,.check-row input{width:21px;height:21px;accent-color:var(--accent);flex:0 0 auto}.task-row label,.check-row label{flex:1}.task-row strong,.task-row small{display:block}.task-row small{margin-top:3px}
.water-track{height:12px;border-radius:99px;background:var(--accent-soft);overflow:hidden;margin:14px 0}.water-track span{display:block;height:100%;width:0;background:var(--accent);border-radius:99px}
.button-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.primary,.secondary,.upload-label{border-radius:13px;padding:12px 15px;font-weight:750;text-align:center}
.primary{border:0;background:var(--accent);color:#fff}.secondary,.upload-label{border:1px solid var(--border);background:var(--card);color:var(--text)}
.full{width:100%}.link-btn{border:0;background:transparent;color:var(--accent);font-weight:750;padding:8px}
.intro{margin-bottom:14px}
.workout-card{padding:0;overflow:hidden}.workout-summary{padding:18px}.workout-summary-top{display:flex;justify-content:space-between;gap:12px}.badge{display:inline-block;padding:6px 9px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font-size:.72rem;font-weight:850;white-space:nowrap}
.exercise-list{border-top:1px solid var(--border)}.exercise-line{padding:13px 18px;border-bottom:1px solid var(--border)}.exercise-line:last-child{border:0}.exercise-line strong,.exercise-line small{display:block}
.garage-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.garage-card{background:var(--card);border:1px solid var(--border);border-radius:24px;padding:20px;box-shadow:var(--shadow)}
.previous-box,.rest-box{background:var(--accent-soft);border-radius:16px;padding:15px;margin:14px 0}.previous-box span,.previous-box strong,.rest-box span,.rest-box strong{display:block}.previous-box strong,.rest-box strong{margin-top:6px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.form-grid label{font-size:.82rem;color:var(--muted);font-weight:700}.form-grid input{margin-top:5px}
.garage-actions{display:grid;gap:10px}.video-link{color:var(--accent);text-align:center;font-weight:750;text-decoration:none;padding:10px}
.rest-box{text-align:center}.rest-box strong{font-size:2rem;font-variant-numeric:tabular-nums}
.segment{display:grid;grid-template-columns:1fr 1fr;background:var(--card);border:1px solid var(--border);padding:4px;border-radius:14px;margin:14px 0}.plan-btn{border:0;background:transparent;color:var(--muted);padding:10px;border-radius:10px;font-weight:750}.plan-btn.active{background:var(--accent-soft);color:var(--accent)}
.meal-card ul{padding-left:20px;margin-bottom:0}.shop-group{margin-top:18px}.shop-group:first-child{margin-top:0}.shop-group h3{font-size:.84rem;color:var(--accent);text-transform:uppercase;letter-spacing:.08em}
.chart-card canvas{width:100%;height:auto;display:block;margin-top:14px}.history{margin-top:12px}.history-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border);font-size:.9rem}.history-row:last-child{border:0}.pb{color:var(--good)}
.range-label{display:block;font-size:.85rem;color:var(--muted);font-weight:700;margin-bottom:14px}.range-label input{padding:0;border:0;margin-top:10px;accent-color:var(--accent)}
.upload-label input{display:none}
.bottom-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(780px,100%);display:grid;grid-template-columns:repeat(5,1fr);padding:8px 8px calc(8px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);border-top:1px solid var(--border);z-index:20}
body.dark .bottom-nav{background:rgba(17,28,47,.96)}
.nav-btn{border:0;background:transparent;color:var(--muted);font-size:.72rem;padding:6px 2px}.nav-btn span{display:block;font-size:1.15rem;margin-bottom:3px}.nav-btn.active{color:var(--accent);font-weight:850}
footer{text-align:center;color:var(--muted);font-size:.78rem;padding-bottom:calc(92px + env(safe-area-inset-bottom))}
#toast{position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:#111827;color:#fff;padding:11px 16px;border-radius:99px;opacity:0;pointer-events:none;transition:.2s;z-index:30;white-space:nowrap}#toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:420px){.button-row,.form-grid{grid-template-columns:1fr 1fr}.garage-card{padding:17px}}

.hidden{display:none!important}
.set-status{display:flex;align-items:center;justify-content:space-between;margin:12px 0}
.set-history{margin-top:14px}
.set-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}
.set-row:last-child{border:0}
.set-row span{color:var(--muted);font-size:.82rem}
.set-row strong{text-align:center}
.cue{display:block;color:var(--muted);font-size:.78rem;margin-top:5px}
.weekly-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}
.weekly-grid>div{background:var(--accent-soft);border-radius:14px;padding:12px;text-align:center}
.weekly-grid span,.weekly-grid strong{display:block}
.weekly-grid span{font-size:.72rem;color:var(--muted)}
.weekly-grid strong{font-size:1.2rem;margin-top:4px}
.drink-options{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.drink-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.drink-advice{margin:12px 0 0}
@media(max-width:520px){
  .weekly-grid{grid-template-columns:1fr 1fr}
  .drink-options{grid-template-columns:1fr 1fr}
}

/* Version 3.1 additions */
.date-card{padding:14px 18px}.date-nav,.calendar-head{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:10px}.date-centre{border:0;background:transparent;color:var(--text);text-align:center;padding:6px}.date-centre span,.date-centre strong{display:block}.date-centre span{font-size:.76rem;color:var(--accent);font-weight:850;text-transform:uppercase;letter-spacing:.08em}.date-centre strong{margin-top:3px}.calendar-panel{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}.calendar-head strong{text-align:center}.calendar-week,.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;text-align:center}.calendar-week{margin-top:12px}.calendar-week span{font-size:.68rem;color:var(--muted);font-weight:800;padding:5px 0}.calendar-day{position:relative;aspect-ratio:1;border:0;border-radius:11px;background:transparent;color:var(--text);font-weight:700}.calendar-day.other{opacity:.3}.calendar-day.today{outline:2px solid var(--accent)}.calendar-day.selected{background:var(--accent);color:#fff}.calendar-day.complete:after{content:"";position:absolute;width:6px;height:6px;border-radius:50%;background:var(--good);bottom:4px;left:50%;transform:translateX(-50%)}.calendar-day.selected.complete:after{background:#fff}.calendar-today{margin-top:10px}
.daily-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.daily-summary-grid .quick-card{text-align:center;padding:13px 8px}.daily-summary-grid .quick-card strong{font-size:1rem}.plan-controls{display:flex;align-items:center;gap:8px}.plan-controls select{max-width:145px}.calorie-number{display:flex;align-items:baseline;margin-top:12px}.calorie-number>strong{font-size:2.1rem}.calorie-number span{color:var(--muted)}.calorie-track{height:12px;background:var(--accent-soft);border-radius:99px;overflow:hidden;margin:12px 0}.calorie-track span{display:block;height:100%;width:0;background:var(--accent);border-radius:99px}.calorie-split{display:flex;justify-content:space-between;gap:12px;font-size:.78rem;color:var(--muted)}.calorie-split strong{color:var(--text)}.meal-kcal{white-space:nowrap;color:var(--accent);font-size:.78rem;font-weight:850}.misc-quick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.misc-quick button{padding:9px 6px;font-size:.75rem}.misc-form{display:grid;grid-template-columns:1fr 90px 65px;gap:8px;margin-bottom:9px}.misc-list{margin-top:12px}.misc-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);font-size:.86rem}.misc-row:last-child{border:0}.delete-misc{border:0;border-radius:9px;background:#fee4e2;color:#b42318;padding:6px 8px}.complete-day{border:0;border-radius:15px;padding:15px;background:linear-gradient(135deg,#15803d,#22c55e);color:#fff;font-weight:850;font-size:1rem}.complete-day.done{background:#475467}.end-day-card{padding:14px}.end-day-note{text-align:center;font-size:.78rem;margin:9px 0 0}.history-summary{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:11px 0;border-bottom:1px solid var(--border)}.history-summary:last-child{border:0}.history-summary small{display:block;margin-top:3px}.history-summary strong{text-align:right}.over-target{color:#b42318!important}
@media(max-width:620px){.daily-summary-grid{grid-template-columns:1fr 1fr}.misc-quick{grid-template-columns:1fr}.misc-form{grid-template-columns:1fr 82px 58px}}

/* Version 3.2 additions */
.coach-box{background:linear-gradient(135deg,var(--accent-soft),rgba(37,99,235,.08));border:1px solid rgba(37,99,235,.18);border-radius:16px;padding:15px;margin:14px 0}.coach-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.coach-box strong,.coach-box small{display:block}.coach-box strong{font-size:1.18rem;margin:7px 0 5px}.coach-box small{color:var(--muted)}
.photo-form{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.photo-form label{font-size:.82rem;color:var(--muted);font-weight:700}.photo-form input,.photo-form select{margin-top:5px}.photo-upload{display:block;margin-bottom:12px}.photo-tools{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.photo-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.photo-item{position:relative;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--card)}.photo-item.selected{outline:3px solid var(--accent)}.photo-item img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}.photo-meta{padding:10px}.photo-meta strong,.photo-meta small{display:block}.photo-meta small{color:var(--muted);margin-top:3px}.photo-actions{display:grid;grid-template-columns:1fr auto auto;gap:8px;margin-top:8px}.photo-select,.photo-edit,.photo-delete{border:0;border-radius:9px;padding:7px 8px;font-weight:750}.photo-select{background:var(--accent-soft);color:var(--accent)}.photo-edit{background:var(--accent-soft);color:var(--text)}.photo-delete{background:#fee4e2;color:#b42318}.photo-compare{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.photo-compare figure{margin:0}.photo-compare img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:16px}.photo-compare figcaption{text-align:center;font-size:.78rem;color:var(--muted);margin-top:5px}
.coach-library{margin-top:12px}.coach-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;padding:12px 0;border-bottom:1px solid var(--border)}.coach-row:last-child{border:0}.coach-row strong,.coach-row small{display:block}.coach-row small{color:var(--muted);margin-top:3px}.coach-target{text-align:right}.coach-target strong{color:var(--accent)}
@media(max-width:520px){.photo-form{grid-template-columns:1fr}.photo-tools{grid-template-columns:1fr}.photo-gallery{grid-template-columns:1fr 1fr}}

.photo-source-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:8px}.photo-source-buttons .photo-upload{display:flex;align-items:center;justify-content:center;margin:0;text-align:center}.photo-source-note{font-size:.78rem;margin:0 0 12px}.photo-reminder{border-color:var(--accent)}
@media(max-width:520px){.photo-source-buttons{grid-template-columns:1fr}}

/* Version 3.3 premium dashboard */
:root{--ring-track:rgba(37,99,235,.12)}
body{background:linear-gradient(180deg,var(--bg),color-mix(in srgb,var(--bg) 92%,var(--accent-soft)));}
.app-header{padding-top:calc(18px + env(safe-area-inset-top));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.card,.quick-card,.progress-ring-card,.metric-tile{transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.card:active,.quick-card:active,.progress-ring-card:active{transform:scale(.995)}
.hero-card{position:relative;overflow:hidden}
.hero-card:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;right:-75px;top:-95px;background:rgba(255,255,255,.10)}
.daily-rings{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.progress-ring-card{display:grid;grid-template-columns:62px 1fr;align-items:center;gap:12px;background:var(--card);border:1px solid var(--border);border-radius:18px;padding:12px;box-shadow:var(--shadow)}
.progress-ring{--value:0;display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--value)*1%),var(--ring-track) 0);position:relative}
.progress-ring:after{content:"";position:absolute;inset:7px;border-radius:50%;background:var(--card)}
.progress-ring span{position:relative;z-index:1;font-size:.72rem;font-weight:850;color:var(--text)}
.progress-ring-card strong,.progress-ring-card small{display:block}.progress-ring-card strong{font-size:.86rem}.progress-ring-card small{font-size:.72rem;color:var(--muted);margin-top:2px}
.next-session-card{border-color:color-mix(in srgb,var(--accent) 24%,var(--border))}
.coach-preview{display:grid;gap:8px;margin:14px 0}.coach-preview-row{display:grid;grid-template-columns:1fr auto;gap:12px;padding:10px 12px;border-radius:13px;background:var(--accent-soft)}.coach-preview-row strong,.coach-preview-row small{display:block}.coach-preview-row small{color:var(--muted);font-size:.75rem;margin-top:2px}.coach-preview-row>span{text-align:right;font-weight:850;color:var(--accent)}
.progress-overview{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.metric-tile{background:var(--card);border:1px solid var(--border);border-radius:17px;padding:14px;box-shadow:var(--shadow)}.metric-tile span,.metric-tile strong,.metric-tile small{display:block}.metric-tile span{font-size:.72rem;color:var(--muted);font-weight:750}.metric-tile strong{font-size:1.15rem;margin:5px 0}.metric-tile small{font-size:.72rem;color:var(--muted)}
.workout-card{overflow:hidden}.workout-card .primary{position:relative;overflow:hidden}.workout-card .primary:after,.next-session-card .primary:after{content:"→";position:absolute;right:16px}
.screen.active{animation:screenIn .22s ease both}@keyframes screenIn{from{opacity:.45;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(max-width:520px){.progress-overview{grid-template-columns:1fr 1fr}.progress-overview .metric-tile:last-child{grid-column:1/-1}.daily-rings{grid-template-columns:1fr 1fr}.progress-ring-card{grid-template-columns:52px 1fr;padding:10px}.progress-ring{width:50px;height:50px}.progress-ring:after{inset:6px}}

/* v3.3.1 dashboard layout and Safari cache-safe refinements */
.daily-rings{align-items:stretch}
.progress-ring-card>div:last-child{min-width:0}
.progress-ring-card small{line-height:1.25;overflow-wrap:anywhere}
@media(max-width:430px){
  .daily-rings{grid-template-columns:1fr}
  .progress-ring-card{grid-template-columns:58px minmax(0,1fr);padding:12px 14px}
  .progress-ring{width:54px;height:54px}
  .progress-ring-card strong{font-size:.92rem}
  .progress-ring-card small{font-size:.76rem}
}

/* Version 3.4 premium home-flow refinements */
.daily-actions-card{padding:16px}
.daily-action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:14px}
.daily-action{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:3px;border:1px solid var(--border);border-radius:15px;background:var(--card);color:var(--text);padding:12px;text-align:left}
.daily-action>span{font-size:1.2rem}.daily-action strong{font-size:.84rem}.daily-action small{font-size:.7rem;color:var(--muted)}
.daily-action:active{transform:scale(.98)}
.end-day-final{margin-top:18px;border-color:color-mix(in srgb,var(--good) 35%,var(--border));background:linear-gradient(180deg,var(--card),color-mix(in srgb,var(--card) 90%,#dcfce7))}
.end-day-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.end-day-heading h2{margin:0}.end-day-heading>strong{font-size:1.8rem;color:var(--good)}
.end-day-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:13px}.end-day-summary span{background:var(--accent-soft);border-radius:11px;padding:9px 7px;text-align:center;font-size:.72rem;font-weight:750;color:var(--text)}
.complete-day{min-height:52px;font-size:1.05rem}
@media(max-width:430px){.daily-action-grid{grid-template-columns:1fr 1fr}.daily-action:last-child{grid-column:1/-1}.end-day-summary{grid-template-columns:1fr}.end-day-summary span{text-align:left;padding:9px 11px}}
.run-entry-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.run-overview{margin-top:0}.run-subheading{margin:22px 0 4px}.run-detail{display:flex;flex-direction:column;gap:2px}.run-detail small{color:var(--muted)}.run-history-actions{display:flex;align-items:center;gap:10px}.delete-run{border:0;background:transparent;color:var(--danger);font:inherit;padding:4px}.distance-pb-row strong{color:var(--good)}
@media(max-width:420px){.run-entry-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

.profile-card hr,.screen .card hr{border:0;border-top:1px solid var(--border);margin:18px 0}
.profile-action-wrap{display:flex;align-items:end}
.profile-action-wrap .full{margin:0}
.plan-editor-group{margin:14px 0}
.plan-editor-group h4{margin:0 0 8px}
.editable-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border)}
.editable-row div{min-width:0}
.editable-row strong,.editable-row small{display:block}
.editable-row small{color:var(--muted);margin-top:3px;overflow-wrap:anywhere}
.link-btn.danger,.danger{color:#b42318}
#customMealsList,#customWorkoutsList{margin-bottom:16px}
