/* Interaction and density system. Loaded last; no data or theme migration. */
:root{--radius-control:12px;--radius-card:20px;--radius-dialog:24px;--violet:var(--user-accent);--muted:#c0ccde;--line:#c2d1ff30}
body{font-size:15px;line-height:1.55}
h1{font-size:clamp(28px,3vw,36px);line-height:1.2;letter-spacing:-.035em}
h2{font-size:20px;line-height:1.35}h3{font-size:17px;line-height:1.4}
.tiny,.stats-label,.program-selector,.program-targets,.program-read-copy small{font-size:13px;line-height:1.5}
.muted{font-size:14px;line-height:1.55}.eyebrow{font-size:12px;letter-spacing:.06em}
button,.primary,.secondary,.plain{font-size:14px;line-height:1.4;min-height:44px;border-radius:var(--radius-control)}
button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--user-accent);outline-offset:3px}
button:hover:not(:disabled),a[data-nav]:hover{filter:none}
.primary:hover:not(:disabled){box-shadow:inset 0 0 0 100px #ffffff12}
.secondary:hover:not(:disabled),.plain:hover:not(:disabled){border-color:#d6e3ff80}
.icon,nav svg.icon{width:20px;height:20px;stroke-width:1.8;flex-shrink:0;display:block}
.icon-action,.text-action,.primary,.secondary,.plain{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.icon-action{min-width:44px;min-height:44px}.text-action{font-size:14px;text-align:start;line-height:1.5}
.panel,.home-hero,.active-set,.inline-card,.profile-card,.history-card,.program-read-exercise{border-radius:var(--radius-card)}
body .panel,body .active-set,body .inline-card,body .program-read-exercise,body .history-card,body .profile-card{background:rgb(var(--user-tint)/max(var(--user-alpha),.52));box-shadow:inset 0 1px 0 #ffffff0d;border-color:#dce6ff2c}
body dialog,body .startup-card{background:rgb(var(--user-tint)/max(var(--user-alpha),.85));border-radius:var(--radius-dialog)}
input,select,textarea{font-size:16px;line-height:1.5;background:#101c31eb;border-radius:var(--radius-control);min-height:44px}
input[type=checkbox]{width:20px;height:20px;min-height:20px;accent-color:var(--user-accent)}
.brand{padding-bottom:12px;gap:12px}.connection{font-size:11px}.save-state{font-size:11px}
.welcome{margin:4px 0 16px}.welcome h1{font-size:32px;margin:8px 0}.welcome .muted{font-size:14px}
.home-hero{padding:20px}.home-hero h2{font-size:42px;margin:16px 0 8px;line-height:1.15}
.hero-metrics{margin:16px 0;padding:12px 0}.hero-metrics b{font-size:28px}.hero-metrics span{font-size:13px}
.home-hero>.primary{min-height:48px;border-radius:var(--radius-control);font-size:15px}
.hero-date{margin-top:8px}.hero-date .text-action{min-height:44px}
.cycle-overview{margin-top:16px;padding:16px;border-radius:var(--radius-card)}
.cycle-overview h2{font-size:18px}.cycle-now{font-size:15px;margin:12px 0}.cycle-now span{display:block;color:var(--muted);font-size:13px;margin-top:4px}
.cycle-details summary{font-size:14px;min-height:44px;display:list-item;padding-block:10px;cursor:pointer}
.cycle-overview .days{margin:12px 0;gap:8px}.cycle-overview .day{font-size:13px;overflow-wrap:anywhere}
.cycle-overview .day.active b{background:var(--user-accent);color:#162033;box-shadow:none}
.backup-reminder{padding:12px 16px;margin-top:16px}.backup-reminder h3{font-size:14px}.backup-reminder .secondary{flex-shrink:0}
.recent-link{padding:16px}.recent-link small{font-size:13px}
.program-heading{gap:12px;align-items:center;margin-bottom:16px}.program-heading h1{font-size:28px}
.program-selector{gap:8px}.program-summary{margin:12px 0}.program-read-list{gap:8px;margin-top:12px}
.program-read-exercise{padding:12px;min-height:88px;gap:12px;margin-bottom:8px;border-radius:16px}
.program-read-copy{gap:4px;min-width:0}.program-read-copy strong{font-size:17px;line-height:1.3;overflow-wrap:anywhere}
.program-read-copy>span{font-size:14px}.program-read-exercise>.tiny{background:transparent;width:24px;min-width:24px}
.program-rename label{display:grid;gap:8px;margin:16px 0;font-size:14px}.program-rename input{width:100%}
.inline-program{display:grid;gap:12px}.inline-card{padding:12px 16px;margin:0}
.inline-card>summary{min-height:56px;padding-right:36px;cursor:pointer}.inline-card>summary strong{font-size:17px}.inline-card>summary span{font-size:14px}
.inline-card>summary:after{content:'';width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;border-radius:0;background:none;transform:rotate(45deg);top:20px;right:6px}
.inline-card[open]>summary:after{content:'';transform:rotate(225deg);top:24px}
.inline-card form{padding-top:12px}.inline-card .inline-names label,.inline-targets label,.inline-targets legend{font-size:14px;line-height:1.5}
.inline-card button[data-inline-action=remove]{width:auto;min-width:44px;font-size:14px;padding:8px 12px;white-space:nowrap}
.inline-targets fieldset{align-self:stretch;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-content:end}
.inline-targets label{min-width:0;text-align:center;display:grid;gap:8px}
.inline-targets input{padding:8px 2px;text-align:center}.inline-targets{gap:8px;align-items:end}.inline-targets fieldset{min-width:0}.inline-targets legend{text-align:center;width:100%;padding-bottom:8px}
.inline-card details>summary{font-size:14px;min-height:44px;padding-block:12px}
.inline-add-footer{margin:16px 0 24px}.inline-add-footer [data-inline-action=add]{width:100%;background:var(--user-accent);color:#162033;border-color:transparent;min-height:48px}
.program-savebar{display:flex;gap:12px;padding:12px;border-radius:16px;position:sticky;bottom:0;margin-top:16px;z-index:5}
.program-savebar .secondary{flex:0 0 auto}.program-savebar .primary{flex:1}
main[data-page=program]{scroll-padding-bottom:96px}.inline-add-footer{scroll-margin-bottom:100px}
.focus-exercise .machine-title{font-size:28px;line-height:1.2;letter-spacing:-.035em;margin:8px 0}
.exercise-subtitle{font-size:16px;margin:4px 0 12px}.focus-exercise>.between .text-action{font-size:13px}
.exercise-targets{flex-wrap:wrap;gap:12px;font-size:13px;margin:12px 0}.exercise-targets span{white-space:normal}.exercise-targets small{display:block;color:var(--muted);font-size:12px}.exercise-targets b{font-size:17px}.exercise-targets>.text-action{font-size:14px}
.active-set{padding:16px}.series-track{gap:8px;margin:8px 0 16px}.series-track button{display:grid;place-items:center;font-size:15px}
.series-track button[aria-pressed=true]{background:transparent;color:var(--text);border-bottom-color:var(--user-accent)}
.series-track button.validated{color:var(--mint)}.focus-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.focus-fields label,.focus-fields small{font-size:13px;line-height:1.4}.focus-fields input{font-size:32px;min-height:60px;letter-spacing:-.02em;scroll-margin-block:100px}
.last-performance{font-size:13px;margin:12px 0;min-height:32px}.last-performance .text-action{font-size:13px}
.validate-focus{min-height:50px;font-size:15px;scroll-margin-block:16px}.rest-dock{padding:16px 0 8px}.rest-dock .clock{font-size:36px}
.timer-buttons .icon-action{font-size:14px}.set-help{flex-wrap:wrap;gap:8px}.set-help .tiny,.set-help .text-action,.session-meta .text-action{font-size:13px}
.session-footer .secondary{font-size:14px;min-width:0;text-align:left}.session-footer .secondary span{overflow-wrap:anywhere}.pending-link{font-size:13px}
.exercise-rail small{font-size:13px}.exercise-rail b{font-size:15px}.exercise-rail button[aria-current=step]{border-color:var(--user-accent);background:color-mix(in srgb,var(--user-accent) 10%,transparent)}
dialog{padding:24px;scroll-padding-block:20px}dialog h2{font-size:24px;margin:0 0 16px}dialog h3{margin-top:16px}dialog p{font-size:14px}
dialog>label,dialog details>label,.editor-form label,.machine-form label{display:grid;gap:8px;font-size:14px;margin:16px 0;min-width:0}
dialog>details{margin-top:16px}dialog>details>summary{min-height:44px;padding:12px 0;cursor:pointer;font-size:15px}
.inline-card .inline-names input{font-size:16px;min-height:44px}.inline-card .inline-names [data-inline-field=machine]{font-size:17px}
dialog input:not([type=checkbox]),dialog select,dialog textarea{width:100%;min-width:0}
dialog .actions{display:flex;flex-direction:column;gap:12px;margin-top:20px;padding-top:16px}dialog .actions button{width:100%;margin:0}
.program-detail-targets{gap:16px;margin:16px 0}.program-detail-targets>span{background:transparent;color:var(--muted);font-size:14px}.program-instructions p{font-size:15px}
.profile-intro{margin-bottom:16px}.profile-grid{gap:8px;max-height:34dvh;overflow:auto;padding:4px}
.profile-card{padding:12px;min-height:68px;border-radius:12px}.profile-card-copy strong{font-size:16px}.profile-card-copy small{font-size:13px}.profile-avatar{border-radius:50%;width:36px;height:36px;flex:0 0 36px}
body .profile-selected{background:transparent;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;padding:0;margin:16px 0}
.profile-selected .primary-choice{font-size:14px;margin:12px 0;min-height:44px}.profile-action-row{gap:12px}
.profile-delete-link{font-size:14px;min-height:44px;margin-top:12px}.profile-create-footer{padding-top:16px;margin-top:16px}.profile-create-footer button{width:100%}.profile-create-footer .tiny{margin-top:8px}
.startup-card{padding:24px}.startup-card>h1{font-size:28px}.startup-card .profile-grid{max-height:40dvh}.startup-card .primary-choice{font-size:14px;line-height:1.5}
.cycle-config-day{gap:8px;padding-block:8px}.cycle-config-day input{min-width:0}.rest-choice{min-height:44px}
.settings{padding:16px;margin-top:12px}.settings>summary{font-size:18px;min-height:44px;cursor:pointer}.settings[open]>summary{margin-bottom:16px}
.settings .secondary,.settings .primary{width:100%}.settings button+button{margin-top:8px}
.theme-preview{display:grid;gap:8px;padding:20px;border:1px solid #e1eaff45;border-radius:16px;background:radial-gradient(at 100% 0,var(--user-glow),transparent 80%),rgb(var(--user-tint)/var(--user-alpha));margin:16px 0}.theme-preview strong{font:500 24px 'Training Display',sans-serif}.preview-action{background:var(--user-accent);color:#162033;border-radius:10px;padding:8px 12px;justify-self:start;font-size:13px}
.theme-choices{gap:8px}.theme-choice{font-size:14px}.glass-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0}.glass-presets button{padding:8px 4px;margin:0!important;font-size:13px}
.glass-presets [aria-pressed=true],.theme-choice[aria-pressed=true]{outline:2px solid var(--user-accent);outline-offset:-2px}
.appearance-advanced>summary{padding:12px 0;min-height:44px;cursor:pointer}.appearance-advanced label{display:grid;gap:8px;margin:16px 0;font-size:14px}
.stats-tabs{margin:12px 0 16px}.stats-tabs button{font-size:14px}.stats-tabs [aria-pressed=true]{background:color-mix(in srgb,var(--user-accent) 15%,transparent);box-shadow:none;color:var(--text)}
.stats-label{display:grid;gap:8px;margin:16px 0}.history-tools{display:flex;justify-content:flex-end;margin-top:8px}.history-tools .text-action{color:var(--muted)}
.history-card{padding:16px}.history-card h2{font-size:20px}.history-card .success{font-size:13px}.stat-value,.stats-numbers b{color:var(--text)}
.stats-numbers{gap:16px}.stats-numbers span{font-size:13px}.stats-explanation{margin-top:16px}.stats-explanation>summary{font-size:14px;min-height:44px;padding-block:12px;cursor:pointer}
.first-performance{display:none}
.rest-slot{padding-block:8px;background:transparent;opacity:.85}.chart-line{stroke:var(--user-accent)}.chart-point{stroke:var(--user-accent);fill:var(--user-accent)}.chart-point.partial{fill:transparent}
body .app>nav a{font-size:12px;min-height:52px}body .app>nav a[aria-current=page]{color:var(--text)}
@media(min-width:700px){.program-read-exercise{height:100%;margin-bottom:0}.focus-main{max-width:700px}.focus-exercise .machine-title{font-size:34px}.program-read-copy strong{font-size:18px}}
@media(min-width:900px){.home-hero{padding:24px;grid-row:2/span 3}.home-hero h2{font-size:52px}.hero-metrics{margin:24px 0}.cycle-overview{margin:0}}
@media(min-width:1200px){body .app>nav a{font-size:15px}.welcome h1{font-size:36px}.app main{padding-top:16px}.app>nav{top:232px}}
@media(max-width:699px){.app{padding-inline:16px}.home-hero{padding:16px}.welcome h1{font-size:30px}.home-hero h2{font-size:36px}.hero-metrics>div{padding-inline:8px}.hero-metrics b{font-size:26px}.hero-metrics span{font-size:12px}.program-read-exercise{padding:12px;min-height:84px}.program-read-copy strong{font-size:17px}.program-read-copy small{font-size:13px}.program-heading h1{font-size:26px}dialog{padding:20px;max-height:90dvh}.focus-exercise .machine-title{font-size:28px}.session-meta{flex-wrap:wrap}.session-meta .text-action{max-width:100%}.program-savebar{padding:10px}.backup-reminder{flex-wrap:wrap}}
@media(max-height:600px) and (max-width:699px){.brand,.connection{display:none}.app{grid-template-rows:minmax(0,1fr) auto auto}.focus-exercise .machine-title{font-size:24px}.active-set{padding:12px}.series-track{margin-bottom:8px}.focus-fields input{min-height:48px;font-size:28px}.validate-focus{position:sticky;bottom:0;z-index:2}.app>nav{padding-block:2px}body .app>nav a{min-height:44px}}
@media(prefers-reduced-transparency:reduce){body .panel,body .active-set,body .inline-card,body .app>nav,body dialog{background:rgb(var(--user-tint)/.97);backdrop-filter:none}}

/* Separate profile actions even when they are outside the dialog footer. */
#dialog>[data-action=profile-rename]{display:flex;width:100%;margin:0 0 16px}
#dialog>[data-action=profile-security]+[data-action=profile-lock]{margin-top:12px}
#dialog>[data-action=profile-cycle]{margin-bottom:12px}
.cycle-placement{display:grid;gap:12px;margin-top:16px}
.cycle-placement label{display:grid;grid-template-columns:minmax(0,1fr) 80px;align-items:center;gap:12px;overflow-wrap:anywhere}
/* Inset focus is visible without being clipped by a scrolling container. */
body input:focus,body input:focus-visible,body select:focus-visible,body textarea:focus-visible{outline:2px solid var(--user-accent);outline-offset:-3px;box-shadow:none}
.inline-targets legend small{display:block;font-size:11px;font-weight:400}
main[data-page=history] .workout-controls>.session-footer{display:flex;flex-direction:column;align-items:stretch;gap:12px}
main[data-page=history] .workout-controls>.session-footer>button{flex:0 0 auto;min-height:48px;width:100%;padding:12px 16px}
main[data-page=history] .history-options{flex:0 0 auto;width:100%;padding:0}
main[data-page=history] .history-options button{width:100%;margin-top:8px}

/* Reserve navigation space inside Android's current visible viewport. */
@media(max-width:1199px){
 body .app{position:fixed;top:var(--visible-top,0px);left:0;right:0;height:var(--visible-height,100dvh);min-height:0;max-height:var(--visible-height,100dvh);margin:0 auto;padding-bottom:max(8px,env(safe-area-inset-bottom));display:flex;flex-direction:column}
 body .app>main{flex:1 1 0;min-height:0;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
 body .app>.brand,body .app>.connection,body .app>nav,body .app>.save-state{flex-shrink:0}
 body .app>nav{position:relative;inset:auto;margin-top:8px;margin-bottom:0}
 body .app>.save-state:empty{display:none}
}
