:root{--paper:#f4f1ea;--ink:#17362f;--accent:#f05a32;--lime:#c7dc58;--line:#c9c6bd;--muted:#737b76;--white:#fffdf8;--shadow:0 18px 55px rgba(23,54,47,.09)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans","Noto Sans SC",sans-serif}.shell{max-width:1240px;margin:auto;padding:0 34px}.topbar{height:92px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.brand{display:flex;align-items:center;gap:11px;color:inherit;text-decoration:none;font-size:22px;font-weight:800}.logo-mark{width:42px;height:42px;color:var(--accent)}.logo-mark svg{width:100%;height:100%}.date-chip{font-size:13px;letter-spacing:.08em;border:1px solid var(--line);border-radius:30px;padding:10px 17px;display:flex;gap:9px;align-items:center}.dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}button{font:inherit;color:inherit;cursor:pointer}.icon-button{justify-self:end;border:0;background:none;font-size:20px;letter-spacing:3px}.hero{min-height:355px;display:flex;align-items:center;justify-content:space-between;padding:58px 5% 50px}.eyebrow{font-size:11px;letter-spacing:.2em;font-weight:700;margin:0 0 20px;color:var(--accent)}h1{font-size:clamp(48px,6.5vw,88px);line-height:.98;letter-spacing:-.07em;margin:0;font-weight:800}h1 span{color:var(--accent)}.hero-copy{color:var(--muted);font-size:15px;margin:24px 0 0}.hero-stamp{width:180px;height:180px;border:1px solid var(--ink);border-radius:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;transform:rotate(8deg);position:relative}.hero-stamp:before{content:"";position:absolute;inset:8px;border:1px dashed var(--ink);border-radius:50%}.hero-stamp span{font-size:14px;letter-spacing:.3em}.hero-stamp strong{font-size:31px;line-height:1}.hero-stamp i{font-size:30px;color:var(--accent);font-style:normal}.dashboard-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:18px}.panel{background:rgba(255,253,248,.72);border:1px solid var(--line);border-radius:5px;box-shadow:var(--shadow)}.workout-panel,.weight-panel,.trend-panel{padding:28px}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:27px}.panel-heading>div:first-child{display:flex;align-items:center;gap:12px}.panel-heading h2,.share-strip h2{font-size:22px;margin:0;letter-spacing:-.03em}.section-no{font-size:10px;color:var(--accent);border:1px solid currentColor;border-radius:50%;width:25px;height:25px;display:inline-grid;place-items:center}.text-button{border:0;background:none;color:var(--muted);font-size:12px}.text-button span{color:var(--accent);margin-left:5px}.move-row{display:grid;grid-template-columns:38px 1fr auto;align-items:center;padding:15px 3px;border-top:1px solid var(--line)}.move-index{width:27px;height:27px;background:var(--ink);color:var(--white);border-radius:50%;display:grid;place-items:center;font-size:11px}.move-name{font-weight:600}.move-times{font-size:20px;font-weight:700}.move-times small{font-size:12px;color:var(--muted);font-weight:400;margin-left:3px}.complete-button{width:100%;min-height:84px;background:var(--accent);color:white;border:0;border-radius:3px;margin-top:20px;display:grid;grid-template-columns:auto 1fr auto;text-align:left;align-items:center;padding:15px 20px;gap:15px;transition:.2s}.complete-button:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(240,90,50,.25)}.complete-button:active{transform:scale(.99)}.button-icon{font-size:23px;width:42px;height:42px;border:1px solid rgba(255,255,255,.6);border-radius:50%;display:grid;place-items:center}.complete-button b{display:block;font-size:17px}.complete-button small{opacity:.72}.set-count strong{font-size:32px}.status-label{font-size:11px;background:#e3e0d8;padding:7px 10px;border-radius:2px}.status-label.done{background:var(--lime)}.weight-entry{display:flex;gap:10px;margin:35px 0 15px}.weight-entry label{display:flex;align-items:baseline;border-bottom:2px solid var(--ink);flex:1}.weight-entry input{width:100%;font-size:48px;font-weight:700;background:none;border:0;outline:0;color:var(--ink);letter-spacing:-.06em}.weight-entry input::placeholder{color:#bbb}.weight-entry label span{font-weight:600}.weight-entry button{width:50px;border:0;border-radius:50%;background:var(--lime);font-size:24px}.weight-delta{font-size:12px;color:var(--muted);min-height:20px}.weight-delta strong{color:var(--accent)}.mini-rule{height:1px;background:var(--line);margin:35px 0 25px}.quote{font-family:"Noto Sans SC",sans-serif;font-size:16px;line-height:1.8;font-weight:600;margin:0}.trend-panel{margin-top:18px}.tabs{display:flex;background:#e7e3db;padding:3px;border-radius:3px}.tab{border:0;background:transparent;padding:7px 14px;font-size:12px;border-radius:2px}.tab.active{background:var(--ink);color:white}.chart-summary{display:flex;align-items:baseline;gap:6px}.chart-summary strong{font-size:33px}.chart-summary small{margin-left:10px;color:var(--muted)}.chart-wrap{height:230px;margin-top:10px}.chart-wrap svg{width:100%;height:100%;overflow:visible}.chart-grid{stroke:#d9d5cd;stroke-width:1}.chart-line{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.chart-area{fill:url(#areaGradient)}.chart-point{fill:var(--paper);stroke:var(--accent);stroke-width:3}.chart-label{font-size:10px;fill:var(--muted)}.empty-chart{height:100%;display:grid;place-items:center;color:var(--muted);font-size:13px}.share-strip{background:var(--ink);color:var(--white);margin:18px 0 28px;border-radius:5px;padding:42px;display:grid;grid-template-columns:1.3fr 1fr auto;align-items:end;gap:30px}.share-strip>div{display:flex;align-items:flex-start;gap:14px}.section-no.light{color:var(--lime)}.share-strip h2{font-size:30px}.share-strip p{font-size:13px;line-height:1.8;color:#bdc8c4;margin:0}.share-strip button{background:var(--lime);border:0;border-radius:50%;width:100px;height:100px;font-weight:700}.share-strip button span{display:block;font-size:22px}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:22px 0 35px;color:var(--muted);font-size:10px;letter-spacing:.1em}dialog{border:0;padding:0;background:transparent;max-width:none}dialog::backdrop{background:rgba(10,29,24,.72);backdrop-filter:blur(4px)}.dialog-card{width:min(520px,calc(100vw - 30px));max-height:90vh;overflow:auto;background:var(--paper);padding:28px;border-radius:6px;box-shadow:0 24px 80px rgba(0,0,0,.25)}.dialog-head{display:flex;justify-content:space-between;align-items:start}.dialog-head h2{font-size:30px;margin:0}.close-button{border:0;background:none;font-size:30px;line-height:1}.dialog-tip{font-size:13px;color:var(--muted);margin-bottom:25px}.move-field{display:grid;grid-template-columns:1fr 100px 32px;gap:8px;margin:10px 0}.move-field input{min-width:0;border:1px solid var(--line);background:var(--white);padding:12px;outline:0}.move-field input:focus{border-color:var(--accent)}.remove-move{border:0;background:none;color:var(--accent);font-size:18px}.add-move{width:100%;border:1px dashed var(--line);background:none;padding:12px;margin:6px 0 18px}.primary-action,.secondary-action{border:0;padding:14px 20px;font-weight:700}.primary-action{width:100%;background:var(--accent);color:white}.share-dialog-card{width:min(530px,calc(100vw - 30px))}.share-dialog-card canvas{display:block;width:min(100%,360px);height:auto;margin:20px auto;box-shadow:0 12px 35px rgba(0,0,0,.18)}.share-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.secondary-action{background:#dedbd2}.share-actions .primary-action{width:auto}.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,20px);background:var(--ink);color:white;padding:11px 18px;border-radius:30px;font-size:13px;opacity:0;pointer-events:none;transition:.25s;z-index:10}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:760px){.shell{padding:0 16px}.topbar{height:72px;grid-template-columns:1fr auto}.date-chip{display:none}.hero{min-height:310px;padding:45px 4px}.hero-stamp{display:none}h1{font-size:52px}.dashboard-grid{grid-template-columns:1fr}.panel{padding:21px}.weight-panel{min-height:330px}.trend-panel{margin-top:14px}.panel-heading{align-items:flex-start}.chart-wrap{height:190px}.share-strip{grid-template-columns:1fr auto;padding:28px 22px}.share-strip p{display:none}.share-strip button{width:82px;height:82px}footer{padding-bottom:24px}.move-field{grid-template-columns:1fr 82px 28px}}
@media(max-width:410px){h1{font-size:45px}.hero{min-height:280px}.complete-button{padding:14px;gap:10px}.button-icon{width:36px;height:36px}.share-strip h2{font-size:25px}.panel-heading h2{font-size:20px}.text-button{font-size:11px}}

.strength-section{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}
.strength-heading,.strength-heading>div{display:flex;align-items:center;justify-content:space-between}.strength-heading>div{gap:12px}.strength-heading h3{margin:0;font-size:19px}.strength-list{margin-top:15px}.strength-empty{padding:22px 12px;border:1px dashed var(--line);color:var(--muted);font-size:12px;text-align:center}.strength-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:14px 3px;border-top:1px solid var(--line)}.strength-meta{display:flex;align-items:baseline;gap:8px}.strength-meta small{color:var(--muted)}.strength-counter{display:flex;align-items:center;gap:10px}.strength-counter button{width:34px;height:34px;border:1px solid var(--line);border-radius:50%;background:var(--white);font-size:20px;line-height:1}.strength-counter strong{min-width:44px;text-align:center;font-size:18px}.strength-counter small{font-size:11px;color:var(--muted)}.strength-counter button:disabled{opacity:.45;cursor:wait}.move-editor-section{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.move-editor-section h3{margin:0 0 4px;font-size:17px}.move-editor-section .dialog-tip{margin:0 0 14px}.move-editor-section .add-move{margin-bottom:4px}
@media(max-width:410px){.strength-row{grid-template-columns:1fr}.strength-counter{justify-content:flex-end}.strength-meta{justify-content:space-between}}
.account-menu{justify-self:end;display:flex;align-items:center;gap:10px}.account-menu .icon-button{justify-self:auto}.account-menu>span{max-width:150px;overflow:hidden;text-overflow:ellipsis;font-size:11px;color:var(--muted)}.logout-button{border:0;background:none;color:var(--accent);font-size:11px;padding:5px}.auth-dialog{width:100vw;height:100vh;max-width:none;max-height:none;background:var(--paper)}.auth-dialog::backdrop{background:var(--paper)}.auth-card{width:min(430px,calc(100vw - 34px));margin:7vh auto;background:var(--white);border:1px solid var(--line);padding:40px;box-shadow:var(--shadow)}.auth-brand{display:flex;align-items:center;gap:10px;font-size:20px;margin-bottom:45px}.auth-brand .logo-mark{display:block}.auth-card h2{font-size:38px;letter-spacing:-.05em;margin:0 0 8px}.auth-subtitle{font-size:13px;color:var(--muted);margin:0 0 30px}.auth-field{display:block;margin:15px 0}.auth-field span{display:block;font-size:11px;font-weight:700;margin-bottom:7px}.auth-field input{width:100%;border:1px solid var(--line);background:var(--paper);padding:14px;outline:0}.auth-field input:focus{border-color:var(--accent)}.auth-error{min-height:20px;color:var(--accent);font-size:12px}.auth-switch{text-align:center;font-size:12px;color:var(--muted);margin:20px 0}.auth-switch button{border:0;background:none;color:var(--accent);font-weight:700}.security-note{border-top:1px solid var(--line);padding-top:18px;text-align:center;font-size:10px;color:var(--muted)}
@media(max-width:760px){.account-menu>span{display:none}.logout-button{padding:2px}.auth-card{margin:3vh auto;padding:28px}}
.logo-mark img{display:block;width:100%;height:100%}

/* Mobile-only application shell */
body{background:#e7e4dc}.shell{width:100%;max-width:480px;min-height:100vh;margin:0 auto;padding:0 16px;background:var(--paper);box-shadow:0 0 60px rgba(23,54,47,.12)}.topbar{height:72px;grid-template-columns:1fr auto}.date-chip{display:none}.account-menu>span{display:none}.hero{min-height:300px;padding:46px 4px 34px}.hero-stamp{display:none}h1{font-size:52px}.hero-copy{line-height:1.7}.dashboard-grid{grid-template-columns:1fr;gap:14px}.panel{box-shadow:none}.workout-panel,.weight-panel,.trend-panel{padding:21px}.weight-panel{min-height:0}.trend-panel{margin-top:14px}.chart-wrap{height:190px}.share-strip{grid-template-columns:1fr auto;padding:28px 22px}.share-strip p{display:none}.share-strip button{width:82px;height:82px}footer{padding-bottom:calc(24px + env(safe-area-inset-bottom))}.move-field{grid-template-columns:1fr 82px 28px}.weight-photo-picker{height:220px;position:relative;display:grid;place-items:center;overflow:hidden;border:1px dashed var(--line);border-radius:5px;background:#d8d5ce;cursor:pointer}.weight-photo-picker img{width:100%;height:100%;object-fit:contain}.weight-photo-empty{text-align:center}.weight-photo-empty b,.weight-photo-empty small{display:block}.weight-photo-empty b{font-size:15px;color:var(--ink)}.weight-photo-empty small{margin-top:8px;font-size:11px;color:var(--muted)}.photo-change{position:absolute;right:10px;bottom:10px;padding:7px 10px;border-radius:20px;background:rgba(23,54,47,.82);color:white;font-size:10px}.weight-photo-status{min-height:32px;padding-top:10px;color:var(--muted);font-size:11px}.weight-entry{margin:18px 0 14px}.confirm-weight-button{width:100%;border:0;border-radius:3px;background:var(--accent);color:white;padding:15px;font-weight:700}.complete-button:disabled,.confirm-weight-button:disabled{opacity:.6;cursor:wait}.share-dialog-card{width:calc(100vw - 24px);max-width:430px;padding:20px}.auth-card{margin:3vh auto;padding:28px}
@media(max-width:380px){.shell{padding:0 12px}h1{font-size:45px}.hero{min-height:270px}.panel{padding:18px}.weight-photo-picker{height:190px}}
.chart-value-label{font-size:11px;font-weight:700;fill:var(--accent)}

/* Individual movement completion */
.move-row{width:100%;grid-template-columns:38px 1fr auto auto;border-left:0;border-right:0;border-bottom:0;background:transparent;text-align:left;transition:background-color .2s,color .2s,opacity .2s}
.move-row:hover{background:rgba(240,90,50,.05)}
.move-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.move-row.completed{color:var(--muted);background:rgba(173,209,77,.13)}
.move-row.completed .move-name{text-decoration:line-through;text-decoration-thickness:1px}
.move-row.completed .move-index{background:var(--lime);color:var(--ink)}
.move-check{min-width:40px;margin-left:12px;color:var(--accent);font-size:11px;font-weight:700;text-align:right}
.move-row.completed .move-check{font-size:17px}
.move-row:disabled{cursor:wait;opacity:.65}
/* Rest timer */
.rest-setting{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 18px;padding:14px;border:1px solid var(--line);background:var(--white);font-size:12px}
.rest-setting>span:first-child{display:grid;gap:3px}.rest-setting small{color:var(--muted);font-size:10px;font-weight:400}.rest-setting input{width:78px;border:1px solid var(--line);background:var(--paper);padding:9px;text-align:right;font-weight:700;outline:0}.rest-setting input:focus{border-color:var(--accent)}
.rest-timer{position:fixed;z-index:20;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));width:min(calc(100vw - 24px),456px);transform:translateX(-50%);display:grid;grid-template-columns:1fr auto;align-items:center;gap:18px;padding:17px 18px;background:var(--ink);color:var(--white);border:1px solid rgba(255,255,255,.18);border-radius:7px;box-shadow:0 18px 55px rgba(10,29,24,.34)}
.rest-timer[hidden]{display:none}.rest-timer-copy{display:grid;gap:2px}.rest-timer-copy small{color:#bdc8c4;font-size:11px}.rest-timer-copy strong{font-size:32px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:.03em}.rest-timer-actions{display:flex;gap:7px}.rest-timer-actions button{border:1px solid rgba(255,255,255,.3);border-radius:3px;background:transparent;color:white;padding:9px 11px;font-size:11px;font-weight:700}.rest-timer-actions #finishRestBtn{border-color:var(--lime);background:var(--lime);color:var(--ink)}
.rest-timer.ringing{background:var(--accent);animation:rest-alarm-pulse .75s ease-in-out infinite alternate}.rest-timer.ringing .rest-timer-copy small{color:white}
.toast{z-index:30}
@keyframes rest-alarm-pulse{to{box-shadow:0 18px 65px rgba(240,90,50,.55);transform:translateX(-50%) scale(1.015)}}
@media(max-width:380px){.rest-timer{grid-template-columns:1fr;gap:12px}.rest-timer-actions{display:grid;grid-template-columns:1fr 1fr}.rest-timer-actions button{padding:10px}.rest-timer-copy{grid-template-columns:1fr auto;align-items:end}.rest-timer-copy strong{font-size:28px}}
.move-field{grid-template-columns:32px 1fr 100px 32px}.move-order-controls{display:grid;grid-template-rows:1fr 1fr;gap:2px}.move-order-controls button{min-width:32px;border:1px solid var(--line);background:var(--white);padding:0;font-size:13px;line-height:1}.move-order-controls button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.move-order-controls button:disabled{opacity:.28;cursor:default}
@media(max-width:480px){.move-field{grid-template-columns:28px 1fr 72px 28px;gap:6px}.move-order-controls button{min-width:28px}}

/* Previous strength training */
.dumbbell-weight{flex-basis:100%;font-size:12px;color:var(--muted)}
.move-field{align-items:end}
.move-number-field{display:grid;gap:5px;min-width:0;font-size:11px;color:var(--muted)}
.move-number-field input{width:100%;min-width:0}
.move-field .move-name-input{min-width:0}
.move-dumbbell-field{grid-column:2 / 4;grid-row:2}
.move-schedule-field{grid-column:2 / 4;display:grid;gap:5px;font-size:11px;color:var(--muted)}
.move-schedule-field select{width:100%;min-width:0;padding:10px;border:1px solid var(--line);border-radius:4px;background:var(--white);color:var(--ink);font:inherit;font-size:13px}
.move-tutorial-editor{grid-column:1 / -1;min-width:0;padding:10px 0;border-bottom:1px solid var(--line)}
.tutorial-picker{display:block;font-size:12px;color:var(--ink)}
.move-field .tutorial-picker input{display:block;width:100%;min-width:0;margin:8px 0;font-size:12px}
.tutorial-preview{display:block;max-width:100%;max-height:220px;margin:8px 0;object-fit:contain}
.tutorial-preview[hidden],.tutorial-remove[hidden]{display:none}
.tutorial-status{display:block;font-size:12px;color:var(--muted)}
.move-tutorial{flex-basis:100%;min-width:0;font-size:12px;margin-top:8px}
.move-tutorial summary{cursor:pointer;color:var(--accent);padding:6px 0}
.move-tutorial img{display:block;width:100%;max-height:320px;object-fit:contain;margin:8px 0}
.move-tutorial a{color:var(--ink)}
.move-field .remove-move,.move-field .move-order-controls{align-self:stretch}
#strengthList .strength-meta{flex-wrap:wrap;min-width:0}
#strengthList .strength-row.is-current-move{background:#fff0dc;box-shadow:inset 3px 0 #c17b24;padding-left:12px;padding-right:10px}
.strength-streak{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin:16px 0 8px;padding:14px 16px;background:#fff0dc;border:1px solid #e7bf88;border-left:4px solid #c17b24;border-radius:8px;color:#795016;font-size:14px;font-weight:700}
.strength-streak strong{font-size:34px;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap}
.strength-streak strong small{font-size:14px}
#strengthList .previous-training-badge{flex-basis:100%;color:#795016;font-size:11px;line-height:1.5}
#strengthList .strength-comparison{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;line-height:1.6}
#strengthList .strength-comparison b{font-weight:700}
#strengthList .strength-comparison.is-increase b{color:#286044}
#strengthList .strength-comparison.is-decrease b{color:#a23c2d}
#strengthList .strength-comparison.is-neutral b{color:var(--muted)}

/* Keep each control's size and accessible name while its action is pending. */
.is-loading{position:relative!important;cursor:wait!important}
.action-loading-indicator{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:inherit;background:var(--paper);color:var(--accent);cursor:wait}
.loading-spinner{display:block;width:20px;height:20px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:loading-spin .7s linear infinite}
.loading-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
button:disabled{cursor:not-allowed}
.is-loading:disabled{opacity:.8;cursor:wait}
@keyframes loading-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.loading-spinner{animation-duration:1.5s}}

.hero>div:first-child{min-width:0}
.hero-stamp{flex-shrink:0}
.hero{gap:24px}
h1.daily-motivation{font-size:clamp(28px,4.2vw,54px);line-height:1.45;letter-spacing:-.035em;overflow-wrap:anywhere}
#dailyQuoteLead{color:var(--ink)}
.cardio-plan{margin:18px 0 22px}
.cardio-cycle-status{font-size:14px;font-weight:700;color:var(--ink)}
.cardio-cycle-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cardio-cycle-day{display:grid;gap:5px;padding:10px 0;text-align:center;border:1px solid var(--line);border-radius:5px;font-size:10px}
.cardio-cycle-day b{font-size:11px}
.cardio-cycle-day.is-training{background:#edf3d6;border-color:#c6d78e;color:#30451b}
.cardio-cycle-day.is-rest{background:var(--paper);color:var(--muted)}
.cardio-cycle-day.is-done{background:#173e32;border-color:#173e32;color:#fff}
.cardio-cycle-day.is-missed{background:#fce8e3;border-color:#df9b89;color:#9c3626}
.cardio-cycle-day.is-pending{background:#fff5dc;border-color:#d9bd78;color:#73551d}
.cardio-cycle-day.is-today{outline:2px solid var(--ink);outline-offset:1px}
.cardio-streak{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0 10px;padding:14px 16px;background:#edf3d6;border-left:4px solid #789535;border-radius:8px;color:#30451b;font-size:13px;font-weight:700}
.cardio-streak strong{font-size:34px;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap}
.cardio-streak strong small{font-size:14px}
.cycle-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cycle-heading .text-button{flex-shrink:0}
.cycle-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0;padding:16px;border:1px solid var(--line)}
.cycle-fields legend{font-weight:700;padding:0 6px}
.cycle-fields label{display:grid;gap:7px;font-size:13px;min-width:0}
.cycle-fields input{width:100%;min-width:0;padding:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}
.cycle-start{grid-column:1/-1}

/* Allow scrolling without pinch or double-tap page zoom, including dialogs. */
html,body,body *{touch-action:pan-x pan-y}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
/* Keep form text at least 16px before and after focus to avoid input auto-zoom. */
input:not(#weightInput),select,textarea,
input:not(#weightInput):focus,select:focus,textarea:focus{font-size:16px!important}
#weightInput,#weightInput:focus{font-size:48px!important}
.share-status{margin:12px 0 0;padding:12px;border-radius:5px;background:#e6ecdf;color:var(--ink);font-size:13px;line-height:1.7}
.share-status:empty{display:none}
.move-target-field{grid-column:2 / 4}
.move-plan-progress{flex-basis:100%;font-size:12px;color:var(--muted)}
.move-plan-progress.is-complete{color:#28704a;font-weight:700}
.cardio-cycle-day.is-partial{background:#fff0dc;border-color:#c17b24;color:#795016}
.cardio-cycle-day.is-empty{color:var(--muted)}

/* Keep save visible while the move editor content scrolls. */
#movesForm{display:flex;flex-direction:column;max-height:90vh;max-height:90dvh;overflow:hidden;padding:0}
.moves-editor-content{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:28px}
.moves-editor-actions{flex-shrink:0;padding:16px 28px;padding-bottom:max(16px,env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);box-shadow:0 -6px 18px rgba(23,54,47,.08);z-index:1}
.moves-editor-actions .primary-action{border-radius:4px}

/* Travel workout uses a separate daily checklist. */
.travel-training-button{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;margin:16px 0;padding:14px 12px;border:1px solid #c6d78e;border-radius:6px;background:#edf3d6;color:var(--ink);font:inherit;font-size:14px;font-weight:700;text-align:left}
.travel-training-button span{font-size:11px;font-weight:400}
#travelDialog{width:min(460px,calc(100vw - 24px));max-height:90vh;max-height:90dvh;overflow-y:auto}
.travel-dialog-card{width:100%;padding:22px}
.travel-days{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0}
.travel-days button{padding:12px 8px;border:1px solid var(--line);border-radius:5px;background:var(--paper);color:var(--ink);font:inherit;font-weight:700}
.travel-days small{display:block;margin-top:6px;font-size:11px;font-weight:400}
.travel-days button[aria-pressed="true"]{background:var(--ink);color:var(--white);border-color:var(--ink)}
.travel-progress{font-size:12px;line-height:1.7;color:var(--ink)}
.travel-storage-status{font-size:12px;color:#a23c2d}.travel-storage-status:empty{display:none}
.travel-move{padding:16px 0;border-top:1px solid var(--line)}
.travel-move h3{margin:0 0 8px;font-size:15px;line-height:1.6}
.travel-move p{margin:6px 0;font-size:13px;color:var(--muted);line-height:1.6}
.travel-move .travel-move-note{color:#795016}
.travel-move.is-complete h3{color:#28704a}
.travel-counter{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:12px;font-size:12px}
.travel-counter button{min-height:44px;min-width:44px;padding:8px 12px;border:1px solid var(--line);border-radius:5px;background:var(--white);color:var(--ink);font:inherit}
.travel-counter button:disabled{opacity:.4}
.travel-counter b{font-size:17px}
.travel-days button:focus-visible,.travel-counter button:focus-visible,.travel-training-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.travel-tutorial{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.travel-tutorial .tutorial-picker{line-height:1.6}
.travel-tutorial input{display:block;max-width:100%;margin:8px 0;font-size:12px}
.travel-tutorial>small{display:block;margin:8px 0;color:var(--muted);font-size:11px;line-height:1.6}
.travel-tutorial .tutorial-status{line-height:1.6}
.travel-tutorial [hidden]{display:none}
.travel-tutorial .travel-tutorial-remove{min-height:44px}
