:root { --bg:#f7f8f8; --card:#ffffff; --ink:#1c282e; --muted:#65767e; --border:#dfe6e8; --soft:#f0f4f4; --accent:#18585b; --accent-soft:#edf5f4; --error:#a42c2c; --shadow:0 1px 4px #2237440d; --radius:15px; }
* { box-sizing:border-box; }
html { font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif; -webkit-text-size-adjust:100%; scroll-behavior:auto; }
body { margin:0; background:var(--bg); color:var(--ink); font-size:15px; line-height:1.43; }
button,input,select { font:inherit; }
button { cursor:pointer; }
button:disabled { cursor:not-allowed; opacity:.5; }
a { color:inherit; }
:focus-visible { outline:3px solid #539c9e; outline-offset:2px; }
.shell { min-height:100vh; }
.site-header { height:66px; background:#fff; border-bottom:1px solid var(--border); padding:0 max(19px,env(safe-area-inset-right)); padding-left:max(19px,env(safe-area-inset-left)); display:flex; justify-content:space-between; align-items:center; gap:10px; }
.wordmark { display:inline-flex; align-items:center; gap:10px; font-size:16px; font-weight:730; text-decoration:none; letter-spacing:-.2px; white-space:nowrap; }
.mark { background:var(--accent); color:#fff; font-size:15px; font-weight:800; display:grid; place-items:center; width:31px; height:31px; border-radius:8px; }
.private-indicator { font-size:11px; display:flex; align-items:center; gap:6px; color:var(--muted); white-space:nowrap; }
.indicator-dot { width:6px; height:6px; border-radius:50%; background:#548777; }
.app { max-width:900px; margin:0 auto; padding:24px 20px calc(108px + env(safe-area-inset-bottom)); }
.app.no-tabs { padding-bottom:calc(105px + env(safe-area-inset-bottom)); }
.loading { padding:60px 0; text-align:center; color:var(--muted); }
.eyebrow { font-size:11px; font-weight:750; letter-spacing:1.1px; text-transform:uppercase; color:var(--accent); margin-bottom:8px; }
h1 { font-size:29px; line-height:1.13; font-weight:760; letter-spacing:-.7px; margin:0 0 9px; }
h2 { font-size:19px; letter-spacing:-.3px; margin:0; font-weight:740; }
h3 { font-size:15px; font-weight:730; margin:0; }
p { margin:0; }
.subline { color:var(--muted); font-size:14px; margin-top:2px; }
.page-head { margin-bottom:22px; }
.page-head.with-back { margin-top:3px; }
.back { display:inline-flex; gap:7px; align-items:center; color:var(--muted); background:none; padding:0; border:0; font-size:13px; margin-bottom:18px; }
.back:hover { color:var(--accent); }
.card { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); }
.programme-list { display:grid; gap:11px; }
.programme-choice { width:100%; text-align:left; background:#fff; display:flex; align-items:center; justify-content:space-between; padding:20px 19px; gap:12px; border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); }
.programme-choice:hover,.day-option:hover { border-color:#87acaa; background:#fcfefe; }
.choice-name { display:block; font-size:18px; font-weight:720; letter-spacing:-.3px; }
.choice-info { display:block; font-size:12px; color:var(--muted); margin-top:4px; }
.chevron { color:var(--accent); font-size:26px; font-weight:350; line-height:1; }
.section-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; }
.form-panel { padding:18px; margin-bottom:18px; }
.field-name { display:block; color:var(--muted); font-size:12px; font-weight:740; margin:0 0 7px; }
.date-input,.select-input { display:block; height:44px; background:white; color:var(--ink); padding:0 12px; width:100%; border:1px solid #cbd7da; border-radius:9px; font-size:16px; -webkit-appearance:none; appearance:none; }
.date-input { max-width:260px; }
.field-group + .field-group { margin-top:20px; }
.week-options { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:7px; }
.week { min-width:0; height:41px; border:1px solid var(--border); border-radius:9px; color:var(--ink); background:#fff; font-weight:670; }
.week.is-active { background:var(--accent); border-color:var(--accent); color:#fff; }
.day-options { display:grid; gap:8px; }
.day-option { width:100%; border:1px solid var(--border); background:white; border-radius:10px; padding:13px 14px; text-align:left; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.day-option.is-active { border-color:var(--accent); background:var(--accent-soft); }
.day-name { font-size:14px; font-weight:730; }
.day-meta { color:var(--muted); font-size:12px; margin-top:2px; }
.radio-circle { width:18px; height:18px; border-radius:50%; border:1.5px solid #b7c8c8; flex:none; display:grid; place-items:center; }
.day-option.is-active .radio-circle { border-color:var(--accent); }
.day-option.is-active .radio-circle:after { content:""; width:9px; height:9px; background:var(--accent); border-radius:50%; }
.prior-panel { padding:18px; margin-top:17px; margin-bottom:16px; }
.prior-title { font-size:11px; font-weight:790; color:var(--accent); letter-spacing:.6px; text-transform:uppercase; }
.prior-subtitle { color:var(--muted); font-size:12px; margin-top:4px; }
.prior-empty { padding:19px 0 3px; font-size:14px; color:var(--muted); }
.prior-list { list-style:none; margin:10px 0 0; padding:0; }
.prior-list li { display:flex; gap:12px; justify-content:space-between; padding:9px 0; border-bottom:1px solid #edf0f1; font-size:12.5px; }
.prior-list li:last-child { border-bottom:0; padding-bottom:0; }
.prior-list .prior-exercise { font-weight:670; max-width:54%; }
.prior-list .prior-exercise small { display:block; font-size:10.5px; color:var(--muted); font-weight:450; margin-top:3px; }
.prior-list .prior-result { text-align:right; color:var(--muted); max-width:44%; word-break:break-word; }
.actions-row { display:flex; gap:9px; flex-wrap:wrap; }
.btn { background:#fff; color:var(--ink); border:1px solid var(--border); border-radius:10px; padding:12px 15px; min-height:45px; font-size:14px; font-weight:720; display:inline-flex; justify-content:center; align-items:center; gap:7px; text-decoration:none; }
.btn-primary { background:var(--accent); border-color:var(--accent); color:white; }
.btn-primary:hover { background:#134649; }
.btn-block { width:100%; }
.btn-ghost { background:transparent; color:var(--accent); border-color:transparent; }
.btn-small { font-size:12px; min-height:32px; padding:6px 10px; border-radius:8px; }
.muted { color:var(--muted); }
.session-bar { background:var(--accent-soft); border:1px solid #d3e4e2; border-radius:11px; margin:0 0 15px; padding:13px 14px; display:flex; justify-content:space-between; align-items:center; gap:9px; }
.session-title { font-size:14px; font-weight:750; }
.session-meta { font-size:12px; margin-top:2px; color:var(--muted); }
.save-status { color:var(--accent); white-space:nowrap; font-size:11px; font-weight:750; }
.save-status.is-error { color:var(--error); }
.workout-meta { display:flex; align-items:center; flex-wrap:wrap; gap:6px; color:var(--muted); font-size:12px; margin-top:6px; }
.meta-sep { color:#bcc7c9; }
.exercise-stack { display:grid; gap:13px; }
.exercise-card { overflow:hidden; }
.exercise-top { padding:14px 15px 11px; border-bottom:1px solid #e9eeee; }
.exercise-heading { display:flex; gap:10px; align-items:flex-start; }
.exercise-index { width:26px; height:26px; flex:none; display:grid; place-items:center; background:var(--soft); border-radius:8px; color:var(--accent); font-size:12px; font-weight:800; }
.exercise-name { font-size:15px; line-height:1.3; font-weight:760; letter-spacing:-.15px; padding-top:3px; overflow-wrap:anywhere; }
.target-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-top:12px; }
.target-cell { min-width:0; }
.target-label { font-size:10px; color:var(--muted); display:block; }
.target-value { font-size:12px; font-weight:690; display:block; margin-top:2px; overflow-wrap:anywhere; }
.original-reps { color:#2b5557; }
.notes { padding-top:9px; margin-top:10px; border-top:1px dashed #e3e9e9; color:#53666e; font-size:11.5px; white-space:pre-wrap; overflow-wrap:anywhere; }
.prior-inline { background:#f6f9f8; padding:10px 15px; display:flex; gap:12px; justify-content:space-between; align-items:flex-start; border-bottom:1px solid #edf1ef; }
.prior-inline .key { color:var(--muted); font-size:11px; white-space:nowrap; flex:none; }
.prior-inline .value { color:#2d4a4d; font-size:11.5px; font-weight:650; text-align:right; overflow-wrap:anywhere; }
.log-wrap { padding:10px 14px 12px; }
.log-grid-head,.set-row { display:grid; grid-template-columns:46px minmax(0,1fr) minmax(0,1fr); gap:9px; align-items:center; }
.log-grid-head { color:var(--muted); font-size:11px; font-weight:730; margin-bottom:6px; }
.log-grid-head div:not(:first-child) { padding-left:2px; }
.set-row { margin-bottom:7px; }
.set-number { color:var(--muted); text-align:center; font-size:13px; font-weight:690; }
.set-input { border:1px solid #cbd7da; border-radius:9px; background:#fff; padding:9px 10px; width:100%; height:44px; font-size:16px; color:var(--ink); min-width:0; }
.set-input:focus { border-color:var(--accent); outline:2px solid #b7d9d7; outline-offset:0; }
.extra-set-line { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.add-set { border:0; background:none; padding:7px 0; font-size:12px; font-weight:720; color:var(--accent); }
.remove-set { border:0; background:none; color:var(--error); padding:7px 0; font-size:12px; }
.finish-bar { position:fixed; z-index:10; bottom:0; left:0; right:0; background:#fffc; backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border-top:1px solid var(--border); padding:10px max(16px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left)); }
.finish-bar-inner { max-width:860px; margin:0 auto; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.finish-note { color:var(--muted); font-size:11px; max-width:180px; }
.finish-note strong { display:block; font-size:12px; color:var(--ink); }
.bottom-nav { position:fixed; z-index:9; bottom:0; left:0; right:0; padding:4px max(8px,env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left)); background:#fff; border-top:1px solid var(--border); display:flex; justify-content:center; }
.bottom-nav.is-hidden { display:none; }
.bottom-nav a { flex:1; max-width:148px; display:flex; flex-direction:column; gap:1px; align-items:center; justify-content:center; min-height:51px; border-radius:9px; font-size:10px; font-weight:670; color:var(--muted); text-decoration:none; }
.bottom-nav a.is-active { color:var(--accent); background:var(--accent-soft); }
.nav-icon { display:block; font-size:18px; line-height:22px; font-style:normal; }
.list-card { padding:5px 16px; }
.session-list { list-style:none; margin:0; padding:0; }
.session-list li+li { border-top:1px solid #edf0f1; }
.session-link { width:100%; text-align:left; border:0; background:transparent; display:flex; justify-content:space-between; align-items:center; gap:8px; padding:14px 0; }
.session-name { display:block; font-weight:720; font-size:14px; }
.session-desc { display:block; color:var(--muted); font-size:12px; margin-top:3px; }
.small-pill { font-size:10px; font-weight:690; background:#f0f3f3; color:#50676c; border-radius:40px; padding:3px 7px; white-space:nowrap; }
.small-pill.draft { background:#fff1df; color:#7c5c26; }
.empty-state { padding:35px 18px; text-align:center; color:var(--muted); }
.empty-state h3 { color:var(--ink); margin-bottom:7px; }
.view-set { font-size:12px; padding:6px 0; display:grid; grid-template-columns:42px 1fr 1fr; gap:12px; border-bottom:1px dashed #f0f2f2; }
.view-set:last-child { border-bottom:0; }
.view-set .set-label { color:var(--muted); }
.view-set .view-value { font-weight:640; }
.data-card { padding:19px; margin-bottom:13px; }
.data-card h2 { margin-bottom:7px; font-size:18px; }
.data-card p { color:var(--muted); font-size:13px; margin-bottom:15px; }
.data-card .actions-row { margin-top:10px; }
.info-note { color:var(--muted); font-size:12px; margin-top:14px; line-height:1.5; }
.file-input { display:none; }
.chart-panel { margin:17px 0; padding:15px; }
.chart-panel h3 { margin-bottom:10px; }
.chart-svg { width:100%; height:auto; display:block; }
.chart-note { font-size:11px; color:var(--muted); margin-top:8px; }
.simple-table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.simple-table { width:100%; border-collapse:collapse; font-size:12px; text-align:left; }
.simple-table thead { color:var(--muted); background:#f5f7f7; }
.simple-table th,.simple-table td { border-bottom:1px solid #edf0f1; padding:11px 10px; vertical-align:top; }
.simple-table th { font-weight:730; }
.simple-table td { white-space:normal; overflow-wrap:anywhere; }
.simple-table th:first-child,.simple-table td:first-child { white-space:nowrap; }
.progress-select { margin-top:17px; margin-bottom:12px; }
.toast { position:fixed; z-index:40; left:50%; bottom:calc(82px + env(safe-area-inset-bottom)); background:var(--ink); color:#fff; border-radius:9px; padding:10px 15px; font-size:12px; max-width:90vw; text-align:center; transform:translate(-50%,12px); opacity:0; pointer-events:none; transition:opacity .12s,transform .12s; }
.toast.is-visible { opacity:1; transform:translate(-50%,0); }
.alert { border:1px solid #edc9c9; color:#842424; background:#fffafa; padding:13px; border-radius:9px; margin-bottom:16px; font-size:13px; }
.kbd-hint { color:var(--muted); font-size:11px; margin-top:8px; }
@media(min-width:730px) {
 .app { padding-top:35px; }
 .programme-list { grid-template-columns:repeat(3,1fr); }
 .programme-choice { min-height:142px; align-items:flex-start; }
 .programme-choice .chevron { align-self:center; }
 .form-panel { padding:24px; }
 .date-week-fields { display:grid; grid-template-columns:220px 1fr; gap:25px; align-items:end; }
 .date-week-fields .field-group+.field-group { margin-top:0; }
 .day-options { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .exercise-card { display:grid; grid-template-columns:minmax(0,1.02fr) minmax(0,1fr); }
 .exercise-top { grid-row:1 / span 2; border-bottom:0; border-right:1px solid var(--border); }
 .prior-inline { grid-column:2; }
 .log-wrap { grid-column:2; }
 .app.no-tabs { padding-bottom:115px; }
}
@media(max-width:480px) {
 .site-header { height:59px; }
 .app { padding:23px 13px calc(88px + env(safe-area-inset-bottom)); }
 .app.no-tabs { padding-bottom:calc(105px + env(safe-area-inset-bottom)); }
 h1 { font-size:27px; }
 .form-panel,.prior-panel { padding:16px 14px; }
 .target-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; }
 .target-value { font-size:11.5px; }
 .date-input { max-width:none; }
 .week-options { gap:5px; }
 .week { height:39px; font-size:13px; }
 .prior-list .prior-exercise { max-width:48%; }
 .prior-list .prior-result { max-width:50%; }
 .finish-note { max-width:150px; }
}
@media(prefers-reduced-motion:reduce) { .toast { transition:none; } }

/* Custom-plan import: small, readable controls on mobile */
.add-plan-button { margin-top:14px; background:#e8f1f0; border-color:#ccdcd9; color:#18585b; }
.import-panel .actions-row { align-items:stretch; }
.import-panel .btn { flex:1 1 185px; text-align:center; }
.import-panel .alert { margin-top:12px; }
.import-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:7px; margin:16px 0 21px; }
.import-summary>div { padding:14px 6px; border-radius:9px; background:#e9f1f0; text-align:center; }
.import-summary strong { font-size:20px; display:block; color:#18585b; }
.import-summary small { display:block; color:#60747c; font-size:10px; line-height:1.2; }
.preview-days,.imported-list { list-style:none; margin:8px 0 0; padding:0; }
.preview-days li { border-bottom:1px solid #e2e9e9; padding:9px 0; font-size:13px; font-weight:650; }
.preview-days small { display:block; font-size:11px; color:#60747c; font-weight:400; }
.imported-list li { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid #e2e9e9; }
.imported-list li strong { display:block; font-size:13px; }
.imported-list li small { display:block; font-size:11px; color:#60747c; }
/* Keep file inputs accessible for tapping their labels in iOS Safari. */
.file-input { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; opacity:0; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@media(max-width:480px) { .import-summary {grid-template-columns:repeat(2,1fr);} }

/* Version 6: mobile-first plan creation */
.home-plan-actions {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:14px;}
.home-plan-actions .add-plan-button {margin:0;background:#fff;}
.builder-panel {padding:18px;margin-bottom:15px;}
.builder-panel h2 {margin-bottom:15px;}
.builder-panel-heading {display:flex;align-items:center;justify-content:space-between;gap:9px;}
.builder-panel-heading h2 {margin-bottom:12px;}
.builder-input {display:block;width:100%;min-width:0;height:45px;border:1px solid #cbd7da;border-radius:9px;background:#fff;font-size:16px;line-height:1.4;color:var(--ink);padding:9px 10px;}
.builder-input:focus {border-color:var(--accent);outline:2px solid #b7d9d7;outline-offset:0;}
.builder-unit {max-width:140px;}
.builder-spacer {margin-top:14px;}
.builder-hint {font-size:12px;color:var(--muted);margin:12px 0 4px;}
.builder-actions {display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:13px;}
.builder-actions .btn {flex:1 1 112px;white-space:nowrap;}
.btn-danger {color:#a42c2c;}
.builder-exercises {margin-bottom:16px;}
.builder-exercise-list {display:grid;gap:12px;margin-bottom:12px;}
.builder-exercise-card {padding:15px;}
.builder-exercise-head {display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid #e9eeee;padding-bottom:10px;margin-bottom:14px;}
.builder-exercise-head strong {font-size:15px;overflow-wrap:anywhere;}
.builder-reorder {display:flex;gap:4px;flex:none;}
.builder-reorder button {width:31px;height:32px;border:1px solid var(--border);border-radius:7px;background:#fff;font-size:18px;color:var(--accent);}
.builder-reorder button.danger {color:#a42c2c;}
.builder-two-cols {display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px;margin-top:13px;}
.builder-three-cols {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:13px;}
.builder-three-cols .field-name {min-height:28px;font-size:11px;}
.builder-textarea {height:auto;min-height:69px;resize:vertical;font-family:inherit;}
.builder-save-actions {display:flex;gap:9px;flex-wrap:wrap;}
.builder-save-actions>.btn {flex:1 1 200px;}
.plan-actions {display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap;}
.draft-heading {margin-top:22px;margin-bottom:6px;}
@media(max-width:600px) {
  .home-plan-actions {grid-template-columns:1fr;}
  .builder-three-cols {grid-template-columns:repeat(2,minmax(0,1fr));}
  .builder-three-cols>div:last-child {grid-column:span 2;}
  .builder-three-cols .field-name {min-height:0;}
  .builder-two-cols {grid-template-columns:105px minmax(0,1fr);}
  .builder-panel {padding:15px;}
  .builder-exercise-card {padding:12px;}
  .imported-list li {align-items:flex-start;}
  .plan-actions {max-width:52%;}
}
