:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;font-size:16px;line-height:1.42;color-scheme:dark;--bg:#0B0D0F;--surface:#1A1E21;--raised:#282D31;--text:#F4F5F3;--muted:#C5CBCF;--line:#3E4448;--accent:#D9976B;--on-accent:#17110D;--danger:#E0AFA8;--success:#CAD9CC;--backdrop:rgba(0,0,0,.72)}
:root[data-theme=light]{color-scheme:light;--bg:#F4F3F0;--surface:#FFF;--raised:#E9E9E6;--text:#16191B;--muted:#4E575E;--line:#C8CCCF;--accent:#9B512B;--on-accent:#FFF;--danger:#9B3E3B;--success:#235E48;--backdrop:rgba(13,16,19,.57)}
@media(prefers-color-scheme:light){:root[data-theme=system]{color-scheme:light;--bg:#F4F3F0;--surface:#FFF;--raised:#E9E9E6;--text:#16191B;--muted:#4E575E;--line:#C8CCCF;--accent:#9B512B;--on-accent:#FFF;--danger:#9B3E3B;--success:#235E48;--backdrop:rgba(13,16,19,.57)}}
*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:auto}body{margin:0;min-width:320px;background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%}#app{max-width:760px;min-height:100svh;margin:0 auto;padding:0 14px max(30px,env(safe-area-inset-bottom))}main{padding-bottom:32px}
button,input,select,textarea{font:inherit}button{min-height:44px;touch-action:manipulation;cursor:pointer;border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:var(--raised);color:var(--text);font-weight:600}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button.primary,.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:750}button.secondary{background:var(--raised);border-color:var(--line)}button.quiet,.text-btn{background:transparent;border-color:transparent;color:var(--muted)}button.danger,.text-danger{background:transparent;color:var(--danger);border-color:transparent}button.wide{width:100%;min-height:52px}button.hero-action{font-size:1.04rem;min-height:56px;margin:14px 0 6px}button.icon-btn{width:46px;min-width:46px;height:46px;display:grid;place-items:center;border:0;background:transparent;color:var(--muted);font-size:1.35rem;padding:0}.app-header{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}.brand-action{border:0;background:transparent;display:flex;align-items:center;gap:10px;padding:3px 0;min-height:52px}.brand-action img{object-fit:contain;background:#000;border-radius:4px;width:56px;height:40px}.wordmark{font-size:1.42rem;font-weight:800;letter-spacing:.12em}.header-actions{display:flex;align-items:center;gap:4px}.sync-dot{display:block;width:7px;height:7px;background:var(--muted);border-radius:50%}.menu{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 0;border-bottom:1px solid var(--line)}.menu button{text-align:left;font-size:.88rem;background:var(--surface);padding:12px}.menu [aria-current]{border-color:var(--accent)}.status{font-size:.73rem;color:var(--muted);padding:6px 1px 2px;min-height:27px}.status.error{color:var(--danger)}
h1{font-size:1.55rem;line-height:1.2;margin:0;font-weight:740;letter-spacing:-.025em}h2{font-size:1.07rem;line-height:1.3;margin:0;font-weight:690}h3{font-size:1rem;margin:12px 0 7px}p{line-height:1.46;margin:8px 0}small,.hint{display:block;color:var(--muted);font-size:.83rem}.heading{margin:18px 0 12px}.heading p{color:var(--muted);font-size:.88rem}.eyebrow{font-size:.74rem!important;letter-spacing:.09em;font-weight:750}.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;margin:12px 0}.panel.tight{padding:12px}.panel.compact{padding:11px 14px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:25px 0 8px}.section-heading{margin:22px 0 8px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:54px;text-align:left;padding:8px 0;border:0;background:transparent;color:var(--text);border-radius:0}.list-row small{margin-top:2px}.list-row strong{font-size:.94rem}.section-head button,.list-row button{flex-shrink:0}.time-line{font-size:.9rem;color:var(--muted);font-variant-numeric:tabular-nums}
.workout-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0 6px}.finish{min-height:48px;padding:9px 20px;background:var(--accent);color:var(--on-accent);border:0}.workout-tools{display:flex;flex-wrap:wrap;justify-content:space-between;gap:3px;margin:2px 0 10px}.workout-tools button{font-size:.84rem;padding:8px 5px}.rest-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:64px;padding:9px 12px;background:var(--surface);border:1px solid var(--line);border-radius:10px;margin:10px 0 14px}.rest-strip small{font-size:.7rem;letter-spacing:.04em}.rest-strip strong{display:block;font-size:1.04rem;font-variant-numeric:tabular-nums}.rest-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.rest-actions button{padding:8px 10px;font-size:.83rem;min-height:44px}.exercise-card{background:var(--surface);border:1px solid var(--line);border-radius:11px;margin:9px 0;scroll-margin-top:14px;overflow:hidden}.exercise-head{display:flex;align-items:center;gap:4px;min-height:65px;padding:3px 9px 3px 13px}.exercise-toggle{flex:1;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;border:0;background:transparent;padding:8px 2px}.exercise-toggle strong{display:block;font-size:1.01rem;font-weight:720;line-height:1.3}.exercise-toggle small{font-weight:450;margin-top:2px}.chevron{font-size:1.3rem;color:var(--muted);margin:0 4px}.exercise-body{padding:0 10px 9px;border-top:1px solid var(--line)}.table-head,.set-row{display:grid;grid-template-columns:46px minmax(0,1fr) minmax(0,1fr) 68px;gap:6px;align-items:center}.table-head{font-weight:650;font-size:.73rem;color:var(--muted);min-height:35px;text-align:center}.set-row{padding:3px 0;position:relative}.set-row .set-cell input{width:100%;min-width:0;height:48px;border:1px solid var(--line);border-radius:8px;padding:0 7px;background:var(--raised);color:var(--text);text-align:center;font-size:1.04rem;font-weight:625;font-variant-numeric:tabular-nums}.set-row.performed .set-cell input{background:var(--surface);border-color:var(--line)}.set-row input:focus{background:var(--raised)}.set-number{text-align:center;font-size:.92rem;font-weight:650;font-variant-numeric:tabular-nums}.pr-mark{color:var(--accent);display:block;font-size:.75rem}.done-btn{min-width:60px;height:48px;padding:5px 8px;border:1px solid var(--accent);color:var(--on-accent);background:var(--accent);font-weight:770;border-radius:8px}.done-btn.completed{color:var(--success);border-color:var(--line);background:var(--raised);font-size:1.2rem}.set-extra{grid-column:1/-1;color:var(--muted);font-size:.78rem}.set-extra summary{list-style:none;min-height:22px;cursor:pointer;padding:0 3px 1px}.set-extra summary::-webkit-details-marker{display:none}.set-extra summary::before{content:'⋯  ';font-weight:700}.extra-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 1px 6px}.extra-grid label{font-size:.78rem}.extra-grid .span-all{grid-column:1/-1}.add-set{min-height:46px!important;margin:10px 0 5px}.entry-manage{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 0}.entry-manage button{font-size:.8rem;padding:5px 10px}.text-danger{display:block;margin:18px auto 0;font-size:.86rem}.picker-row .picker-add{min-width:90px;height:48px}
input:not([type=checkbox]),select,textarea{display:block;width:100%;min-height:48px;border:1px solid var(--line);border-radius:8px;padding:11px 12px;background:var(--raised);color:var(--text);font-size:1rem}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:0}label{display:block;font-size:.89rem;color:var(--muted);margin:10px 0}label input,label select{margin-top:4px}input[type=checkbox]{height:22px;width:22px;accent-color:var(--accent)}.checkbox-row{display:flex;align-items:center;gap:12px;color:var(--text);font-size:.96rem;padding:8px 0;min-height:48px}
.overlay,.info-overlay{position:fixed;inset:0;z-index:10;background:var(--backdrop);display:flex;justify-content:center;align-items:stretch}.picker{width:min(100%,760px);height:100dvh;background:var(--bg);display:flex;flex-direction:column;padding:env(safe-area-inset-top) 14px max(env(safe-area-inset-bottom),16px);overflow:hidden}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:57px}.picker>input{flex:0 0 auto}.picker-results{overflow:auto;flex:1;overscroll-behavior:contain;margin:12px 0;min-height:85px}.picker-row{display:flex;align-items:center;gap:5px;min-height:66px;border-bottom:1px solid var(--line);padding:6px 1px}.picker-label{flex:1;min-width:0}.picker-label strong{display:block;font-size:.92rem;overflow-wrap:anywhere}.picker-label small{font-size:.77rem}.picker .custom-form{padding-top:10px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 140px;gap:8px}.custom-form h3{grid-column:1/-1;font-size:.88rem;margin:0}.custom-form button{grid-column:1/-1}.info-overlay{z-index:20;align-items:center;padding:15px}.info-dialog{width:min(100%,520px);background:var(--surface);padding:16px;border:1px solid var(--line);border-radius:14px;max-height:80dvh;overflow-y:auto}.info-dialog p{font-size:.9rem}.info-dialog .modal-head h2{max-width:80%}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}.stat-grid>div{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 5px;text-align:center}.stat-grid strong{display:block;font-size:1.23rem;white-space:nowrap;font-variant-numeric:tabular-nums}.stat-grid small{font-size:.72rem}.summary-actions{display:flex;flex-wrap:wrap;gap:8px}.summary-actions button{flex:1;min-width:140px}.pr-line{font-size:.91rem}.switcher{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.switcher button{background:var(--surface)}.switcher button.selected{border-color:var(--accent);color:var(--text)}.history-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;padding:14px 7px;min-height:65px;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0}.history-row strong{display:block;font-weight:650}.history-row small{margin-top:4px}.pr-tag{color:var(--accent)}.mini-result{padding:6px 0;border-bottom:1px solid var(--line);font-size:.86rem}.knowledge{padding:12px 0;border-bottom:1px solid var(--line)}.knowledge summary{min-height:44px;padding:10px 0;cursor:pointer;font-weight:650}
.template-row details{margin-top:7px}.template-row summary{min-height:44px;cursor:pointer;padding-top:8px;font-size:.84rem}.default-row{display:grid;grid-template-columns:1fr 1fr 48px;gap:6px;margin:7px 0}.default-row input{min-width:0}.defaults button{font-size:.85rem}.conflict{padding:12px;margin-top:12px;border:1px solid var(--danger);border-radius:10px}.storage-error{padding:20px}
@media(max-width:370px){#app{padding-left:9px;padding-right:9px}.workout-tools button{font-size:.78rem}.table-head,.set-row{grid-template-columns:43px minmax(0,1fr) minmax(0,1fr) 60px;gap:4px}.set-row .set-cell input{padding:0 3px;font-size:.98rem}.picker{padding-left:9px;padding-right:9px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

body.dialog-open{overflow:hidden}

/* Fatigue-first workout refinements: pinned controls, direct inputs, restrained type indicators. */
.workout-pinned{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);padding:3px 0 2px;border-bottom:1px solid var(--line)}
.workout-heading{margin:2px 0;min-height:50px}
.workout-heading h1{font-size:1.12rem}
.jump-toggle{font-size:.86rem;padding:7px 12px;min-height:44px}
.workout-tools{margin:6px 0 0}
.workout-tools button{padding:6px 8px}
.finish-bottom{margin:24px 0 8px;min-height:58px!important;font-size:1.02rem}
.rest-strip{display:flex;flex-wrap:wrap;min-height:52px;margin:3px 0 6px;padding:4px 8px;gap:6px}
.rest-compact{min-height:42px;display:flex;align-items:center;gap:8px;text-align:left;flex:1;min-width:0;padding:4px 8px;border:0;background:transparent}
.rest-compact small{font-size:.68rem;letter-spacing:.03em;white-space:nowrap}
.rest-compact strong{font-size:1.07rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.rest-compact span:last-child{margin-left:auto}
.rest-switch{display:flex;gap:4px;align-items:center;min-height:44px;margin:0;padding:0 5px;font-weight:600;color:var(--text);font-size:.78rem}
.rest-switch input{min-width:23px;min-height:23px}
.rest-expanded{flex:0 0 100%;border-top:1px solid var(--line);padding:6px 8px 8px}
.rest-expanded .checkbox-row{margin:2px 0}
.rest-duration-label{margin:2px 0 8px}
.time-entry{font-variant-numeric:tabular-nums;font-size:1.45rem!important;font-weight:700!important;letter-spacing:.04em!important;text-align:right!important;min-height:54px!important}
.rest-expanded .rest-actions{justify-content:flex-start}
.jump-list{max-height:min(60dvh,540px);overflow-y:auto}
.jump-item{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:12px 4px;min-height:52px;font-size:.98rem}
.undo-toast{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 14px);left:50%;transform:translateX(-50%);z-index:25;display:flex;align-items:center;gap:10px;background:var(--raised);color:var(--text);border:1px solid var(--line);padding:10px 12px;border-radius:12px;box-shadow:0 2px 14px rgba(0,0,0,.22);width:max-content;max-width:96vw}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.set-number{position:relative;display:flex;flex-direction:column;align-items:center}
.set-number select{min-height:46px;width:100%;padding:0 2px!important;text-align:center;font-size:.83rem!important;font-weight:750;border-radius:6px;background:transparent!important;appearance:none;-webkit-appearance:none;color:var(--text)}
.set-row{touch-action:pan-y}
/* Type distinction belongs around its tap target, never beside the entire set row. */
.set-row.type-working .set-type-button{border:1px solid var(--line)}
.set-row.type-warmup .set-type-button{border:2px dashed var(--muted)}
.set-row.type-drop .set-type-button{border:3px double var(--text)}
.set-row.type-failure .set-type-button{border:2px dotted var(--danger)}
.set-row.type-other .set-type-button{border:2px solid var(--muted)}
.set-row .set-extra{margin-left:0}
.set-row .set-extra summary{min-height:35px;display:flex;align-items:center}
.set-row .set-cell input{font-size:1rem}
.swipe-delete{display:none;position:absolute;right:0;top:1px;bottom:1px;z-index:2;min-height:46px;border-color:var(--danger);background:var(--danger);color:var(--bg);border-radius:6px;padding:0 12px}
.set-row.revealed .swipe-delete{display:flex;align-items:center;justify-content:center}
.weight-settings{flex:1 1 160px;margin:3px 0}
.weight-settings summary{cursor:pointer;display:flex;align-items:center;min-height:44px;font-size:.81rem;color:var(--muted)}
.weight-settings label{margin:0 0 10px}
@media(max-width:370px){.table-head,.set-row{grid-template-columns:43px minmax(0,1fr) minmax(0,1fr) 55px;gap:3px}.set-row .set-cell input{padding:0 2px;font-size:.93rem}.set-number select{font-size:.78rem!important}.done-btn{min-width:53px;padding:4px}.rest-compact small{font-size:.62rem}}

.rest-switch input[role=switch]{appearance:none;-webkit-appearance:none;display:block;position:relative;width:48px;height:28px;min-width:48px;min-height:28px;margin:0;border:1px solid var(--line);border-radius:18px;background:var(--raised);cursor:pointer}
.rest-switch input[role=switch]::before{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--muted);transition:transform .12s ease}
.rest-switch input[role=switch]:checked{background:var(--accent);border-color:var(--accent)}
.rest-switch input[role=switch]:checked::before{background:var(--on-accent);transform:translateX(20px)}
.rest-switch input[role=switch]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* Compact set-type letter; tap opens fully labeled type menu. */
.set-number{margin:0;min-width:0}
.set-number input[type=hidden]{display:none}
.set-type-button{display:grid;place-items:center;width:100%;min-width:0;height:48px;min-height:48px;padding:0 2px;border-radius:7px;font-size:1.02rem;font-weight:750;background:transparent;border:1px solid var(--line)}
.type-options{display:grid;gap:4px;margin-top:5px}
.type-option{display:flex;align-items:center;gap:14px;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;min-height:54px}
.type-option strong{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:8px;font-size:1rem}
.type-option span{font-weight:500}
/* Minimal persistent workout recovery strip on non-training pages. */
body.has-active-dock main{padding-bottom:calc(105px + env(safe-area-inset-bottom))}
.active-workout-dock{position:fixed;bottom:0;left:0;right:0;z-index:8;background:var(--bg);border-top:1px solid var(--line);padding:8px 12px calc(8px + env(safe-area-inset-bottom));box-shadow:0 -3px 15px rgba(0,0,0,.16)}
.active-dock-button{display:flex;align-items:center;gap:12px;margin:0 auto;padding:8px 12px;max-width:735px;width:100%;background:var(--surface);text-align:left;min-height:58px}
.dock-label{flex:1;min-width:0;display:grid;gap:1px}.dock-label strong{font-size:.94rem}.dock-label small{font-size:.74rem;line-height:1.1}
.dock-times{display:grid;gap:3px;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.81rem}.dock-times strong{color:var(--accent);font-size:.93rem}
.dock-arrow{font-size:1.1rem;color:var(--muted)}
body.has-active-dock .undo-toast{bottom:calc(89px + env(safe-area-inset-bottom))}


/* Workout tables: explicit grid tracks for iOS Safari/Home Screen WebKit.
   Never use var() in repeat() here: a rejected column template makes every
   set control stack vertically and turns a compact workout into a long form. */
.table-head[data-measures="1"],.set-row[data-measures="1"]{grid-template-columns:46px minmax(0,1fr) 68px}
.table-head[data-measures="2"],.set-row[data-measures="2"]{grid-template-columns:46px minmax(0,1fr) minmax(0,1fr) 68px}
.table-head[data-measures="3"],.set-row[data-measures="3"]{grid-template-columns:46px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 68px}
.table-head[data-measures="4"],.set-row[data-measures="4"]{grid-template-columns:46px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 68px}
.table-head>[class],.set-row>.set-cell{min-width:0}
.set-row>.done-btn{min-width:0;width:100%}
@media(max-width:370px){
 .table-head[data-measures="1"],.set-row[data-measures="1"]{grid-template-columns:43px minmax(0,1fr) 60px}
 .table-head[data-measures="2"],.set-row[data-measures="2"]{grid-template-columns:43px minmax(0,1fr) minmax(0,1fr) 60px}
 .table-head[data-measures="3"],.set-row[data-measures="3"]{grid-template-columns:43px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 60px}
 .table-head[data-measures="4"],.set-row[data-measures="4"]{grid-template-columns:43px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 60px}
}
/* Advanced mixed-measure sets need space for 4 editable values; allow a
   short, scoped horizontal scroll rather than shrinking tap controls. */
@media(max-width:440px){
 .set-grid-scroll.measure-cols-4{overflow-x:auto;overscroll-behavior-inline:contain}
 .set-grid-scroll.measure-cols-4>.table-head,
 .set-grid-scroll.measure-cols-4>.set-table{min-width:420px}
}

/* Historical completion is status, never a control that silently removes training facts. */
.completed-indicator{display:grid;place-items:center;cursor:default;user-select:none}
