:root{
  --bg:#EEF1F3; --surface:#FFFFFF; --surface-2:#F5F7F9; --surface-3:#E8ECEF;
  --text:#1B1F27; --text-muted:#5C6472; --text-faint:#8A93A1;
  --border:#DBE0E5; --border-strong:#C6CCD3;
  --accent:#B8860A; --accent-ink:#14151A; --accent-soft:#FBF0D6;
  --good:#1E7A4C; --good-soft:#DFF3E7;
  --warn:#B23A2E; --warn-soft:#FBE4E1;
  --shadow:0 1px 2px rgba(20,25,30,.06),0 4px 14px rgba(20,25,30,.05);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#12151A; --surface:#1A1F27; --surface-2:#212832; --surface-3:#2A323D;
    --text:#E9EBEE; --text-muted:#9AA3B0; --text-faint:#6B7480;
    --border:#2E3641; --border-strong:#3B4552;
    --accent:#F2B705; --accent-ink:#14151A; --accent-soft:#3A2F0C;
    --good:#3FB577; --good-soft:#173A28;
    --warn:#E2574C; --warn-soft:#3D1F1C;
    --shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.35);
    --date-icon-filter:invert(1);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#12151A; --surface:#1A1F27; --surface-2:#212832; --surface-3:#2A323D;
  --text:#E9EBEE; --text-muted:#9AA3B0; --text-faint:#6B7480;
  --border:#2E3641; --border-strong:#3B4552;
  --accent:#F2B705; --accent-ink:#14151A; --accent-soft:#3A2F0C;
  --good:#3FB577; --good-soft:#173A28;
  --warn:#E2574C; --warn-soft:#3D1F1C;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.35);
  --date-icon-filter:invert(1);
  color-scheme:dark;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{background:var(--bg);color:var(--text);font-family:'Work Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased;padding-bottom:84px;min-height:100vh;}
@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms !important;transition-duration:.001ms !important;}}
.num{font-family:'IBM Plex Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums;}
h1,h2,h3{font-family:'Bebas Neue',system-ui,sans-serif;letter-spacing:.03em;text-wrap:balance;margin:0;}
button{font-family:inherit;cursor:pointer;}
input,textarea{font-family:inherit;}
button:focus-visible,input:focus-visible,textarea:focus-visible,[data-act]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.topbar{position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--border);padding:14px 16px 10px;}
.topbar-row{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.brand{display:flex;align-items:baseline;gap:8px;}
.brand h1{font-size:26px;color:var(--text);}
.brand .tag{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.12em;}
.week-strip{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap;}
.pill{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600;color:var(--text-muted);}
.pill.accent{background:var(--accent-soft);color:var(--accent);border-color:transparent;}
.pill button{background:none;border:none;color:inherit;font:inherit;padding:0;margin-left:2px;text-decoration:underline;}
.date-pill input[type="date"]{background:none;border:none;color:inherit;font:inherit;font-weight:600;padding:0;-webkit-appearance:none;}
.date-pill input[type="date"]::-webkit-calendar-picker-indicator{filter:var(--date-icon-filter,none);cursor:pointer;}
.deload-flag{background:var(--warn-soft);color:var(--warn);}
.tabs{display:flex;gap:4px;margin-top:12px;}
.tabs button{flex:1;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-faint);font-weight:600;font-size:13.5px;padding:9px 4px;text-transform:uppercase;letter-spacing:.06em;}
.tabs button.active{color:var(--text);border-bottom-color:var(--accent);}
main{max-width:640px;margin:0 auto;padding:16px;}
.section-title{font-size:22px;margin-bottom:2px;}
.section-sub{color:var(--text-muted);font-size:13.5px;margin-bottom:14px;}
.daychips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;}
.daychip{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:9px 14px;font-weight:600;font-size:13.5px;color:var(--text-muted);display:flex;align-items:center;gap:6px;}
.daychip.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
.daychip .suggested{font-size:9.5px;background:var(--good-soft);color:var(--good);padding:1px 6px;border-radius:999px;text-transform:uppercase;letter-spacing:.05em;}
.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);margin-bottom:12px;overflow:hidden;}
.rest-card,.cardio-card{padding:22px 18px;text-align:center;}
.rest-card h3,.cardio-card h3{font-size:20px;margin-bottom:6px;}
.rest-card p,.cardio-card p{color:var(--text-muted);font-size:14px;line-height:1.5;margin:0 0 14px;}
.ex-card{padding:14px 16px;}
.ex-head{display:flex;gap:10px;align-items:flex-start;}
.ex-order{flex:none;width:26px;height:26px;border-radius:8px;background:var(--surface-3);color:var(--text-muted);font-family:'IBM Plex Mono',monospace;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:2px;}
.ex-card.done .ex-order{background:var(--good);color:#fff;}
.ex-title{flex:1;min-width:0;}
.ex-name{font-weight:600;font-size:15px;line-height:1.3;}
.ex-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:5px;}
.tag{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);background:var(--surface-2);border-radius:5px;padding:2px 7px;}
.rx-line{font-size:13px;color:var(--text-muted);margin-top:6px;}
.rx-line .num{color:var(--text);font-weight:600;}
.note{font-size:12.5px;line-height:1.4;margin-top:8px;padding:8px 10px;border-radius:8px;}
.note.safety{background:var(--warn-soft);color:var(--warn);}
.note.tip{background:var(--surface-2);color:var(--text-muted);}
.checkbtn{width:30px;height:30px;border-radius:50%;border:2px solid var(--border-strong);background:var(--surface);display:flex;align-items:center;justify-content:center;color:transparent;font-size:15px;flex:none;}
.checkbtn.checked{background:var(--good);border-color:var(--good);color:#fff;}
.sets-table{margin-top:12px;border-top:1px dashed var(--border);padding-top:10px;}
.set-row{display:grid;grid-template-columns:24px 1fr 1fr 42px 34px;gap:6px;align-items:center;margin-bottom:6px;}
.set-convert{height:100%;min-height:32px;padding:0 4px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text-muted);font-size:10.5px;font-weight:600;font-family:'IBM Plex Mono',monospace;white-space:nowrap;}
.set-convert:active{background:var(--surface-2);}
.set-row .set-idx{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--text-faint);}
.set-row input{width:100%;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text);font-size:14px;padding:7px 8px;font-family:'IBM Plex Mono',monospace;}
.set-row input::placeholder{color:var(--text-faint);font-family:'Work Sans',sans-serif;}
.set-row.cols-2{grid-template-columns:1fr 1fr;}
.set-check{width:30px;height:30px;border-radius:8px;border:2px solid var(--border-strong);background:var(--surface);color:transparent;display:flex;align-items:center;justify-content:center;font-size:14px;}
.set-check.checked{background:var(--good);border-color:var(--good);color:#fff;}
.add-set{background:none;border:1px dashed var(--border-strong);color:var(--text-muted);border-radius:8px;padding:6px 10px;font-size:12.5px;font-weight:600;margin-top:2px;}
.finish-bar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--surface);border-top:1px solid var(--border);padding:10px 16px calc(10px + env(safe-area-inset-bottom));display:flex;justify-content:center;}
.finish-bar .wrap-outer{max-width:640px;width:100%;}
.finish-bar .wrap{display:flex;gap:10px;}
.save-indicator{font-size:11px;color:var(--text-faint);text-align:center;margin-bottom:6px;min-height:14px;}
.save-indicator.saved{color:var(--good);}
.save-indicator.error{color:var(--warn);}
.save-indicator.saving,.save-indicator.pending{color:var(--text-muted);}
.btn{border:none;border-radius:11px;padding:13px 18px;font-weight:700;font-size:14.5px;flex:1;text-align:center;}
.btn-primary{background:var(--accent);color:var(--accent-ink);}
.btn-ghost{background:var(--surface-2);color:var(--text);border:1px solid var(--border);}
.btn-small{padding:8px 12px;font-size:13px;border-radius:9px;flex:none;}
.btn-icon{padding:4px 7px;font-size:13px;border-radius:6px;flex:none;}
.btn-full{width:100%;flex:none;}
.btn:disabled{opacity:.5;}
.stat-row{display:flex;gap:10px;margin-bottom:16px;}
.stat{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;}
.stat .n{font-family:'IBM Plex Mono',monospace;font-size:22px;font-weight:600;}
.stat .l{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;margin-top:2px;}
.hist-item{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:10px;}
.hist-top{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.hist-date{font-weight:700;font-size:14.5px;}
.hist-badges{display:flex;gap:6px;margin-top:5px;flex-wrap:wrap;}
.hist-sub{color:var(--text-muted);font-size:12.5px;margin-top:6px;}
.hist-del{background:none;border:none;color:var(--text-faint);font-size:12px;text-decoration:underline;padding:4px;}
.hist-detail{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border);display:none;}
.hist-detail.open{display:block;}
.hist-ex{font-size:13px;margin-bottom:5px;}
.hist-ex b{font-weight:600;}
.empty{text-align:center;color:var(--text-faint);padding:40px 20px;font-size:14px;}
.prog-day{margin-bottom:22px;}
.prog-day h3{font-size:19px;margin-bottom:8px;}
.prog-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.prog-table th{text-align:left;color:var(--text-faint);font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:6px 8px;border-bottom:1px solid var(--border);}
.prog-table td{padding:8px;border-bottom:1px solid var(--border);vertical-align:top;}
.prog-table td:last-child{white-space:nowrap;}
.prog-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface);}
.banner{background:var(--accent-soft);color:var(--accent);font-size:12.5px;padding:8px 14px;border-radius:10px;text-align:center;font-weight:600;margin-bottom:14px;}
.banner.off{background:var(--warn-soft);color:var(--warn);}
.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:10px 18px;border-radius:999px;font-size:13px;font-weight:600;z-index:50;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .25s ease;}
.toast.show{opacity:1;}

.info-btn{background:none;border:none;color:var(--accent);font-size:11.5px;font-weight:600;padding:2px 4px;margin-left:2px;text-decoration:underline;vertical-align:middle;white-space:nowrap;}
.info-modal-overlay{position:fixed;inset:0;z-index:60;background:rgba(10,12,15,.55);display:flex;align-items:flex-end;justify-content:center;padding:0;}
@media (min-width:640px){.info-modal-overlay{align-items:center;padding:24px;}}
.info-modal{max-width:480px;width:100%;max-height:88vh;overflow-y:auto;padding:18px 18px calc(18px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;}
@media (min-width:640px){.info-modal{border-radius:16px;}}
.info-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px;}
.info-modal-head h3{font-size:22px;}
.info-modal-close{flex:none;background:var(--surface-2);border:none;color:var(--text-muted);width:30px;height:30px;border-radius:50%;font-size:18px;line-height:1;}
.info-modal-img{display:block;width:100%;max-height:280px;object-fit:contain;background:var(--surface-2);border-radius:10px;margin-top:12px;}
.info-modal-credit{font-size:10.5px;color:var(--text-faint);margin-top:6px;}
.info-modal-guidance{font-size:14.5px;line-height:1.55;color:var(--text);margin-top:14px;white-space:pre-line;}

.bar-row{display:grid;grid-template-columns:100px 1fr 28px;gap:10px;align-items:center;margin-bottom:8px;}
.bar-row:last-child{margin-bottom:0;}
.bar-label{font-size:12.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bar-track{background:var(--surface-2);border-radius:6px;height:10px;overflow:hidden;}
.bar-fill{background:var(--accent);height:100%;border-radius:6px;}
.bar-row.flag .bar-fill{background:var(--warn);}
.bar-row.flag .bar-label{color:var(--warn);font-weight:600;}
.bar-value{font-size:12px;color:var(--text-faint);text-align:right;}

.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;}
.login-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:32px 28px;max-width:340px;width:100%;text-align:center;}
.login-card h1{font-size:30px;margin-bottom:4px;}
.login-card p{color:var(--text-muted);font-size:13.5px;margin:0 0 20px;}
.login-card input{width:100%;border:1px solid var(--border);border-radius:10px;background:var(--surface-2);color:var(--text);font-size:16px;padding:12px 14px;margin-bottom:12px;font-family:'Work Sans',sans-serif;text-align:center;}
.login-card .err{color:var(--warn);font-size:13px;margin-bottom:10px;min-height:16px;}
.remember-row{display:flex;align-items:center;gap:7px;justify-content:center;color:var(--text-muted);font-size:13px;margin:-2px 0 12px;cursor:pointer;}
.remember-row input{width:auto;margin:0;accent-color:var(--accent);}

.field{display:block;width:100%;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text);font-size:14px;padding:10px 12px;font-family:inherit;margin-bottom:10px;}
textarea.field{resize:vertical;}
.field-label{font-weight:600;font-size:15px;margin-bottom:10px;}
.admin-row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;}
.sparkline{width:100%;height:auto;display:block;}
