/* Intrinsic widths must never enlarge the page beyond the viewport. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body,main,#appScreen,.card,.stat,.insight-grid,.insight-grid>*,.chart-controls,.scope-filters,.plan-card,.plan-exercise,.table-scroll{min-width:0}
main>header>div,.card-heading>div,.modal-heading>div{min-width:0}
fieldset{min-inline-size:0;max-width:100%}
input,select,textarea{min-width:0;max-width:100%}
.table-scroll{position:relative;max-width:100%}
.table-scroll .sr-only{left:0;top:0}
#chart{min-width:0;width:100%;max-width:100%}
#chart svg{display:block;width:100%;max-width:100%;min-width:0}
@media(max-width:850px){
 .insight-grid{grid-template-columns:minmax(0,1fr)}
 input,select,textarea{font-size:16px}
 .policy-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 main>header{flex-wrap:wrap}
 .header-actions{flex-wrap:wrap;flex:1 1 100%;justify-content:flex-start}
}
@media(max-width:580px){
 #appScreen{width:100%;max-width:100%}
 main{width:100%;max-width:none;margin:0;padding:22px 16px calc(104px + env(safe-area-inset-bottom,0px))}
 main>header{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin-bottom:22px}
 header h1{font-size:28px;line-height:1.2}
 header .eyebrow{font-size:10px}
 #greeting{font-size:13px;line-height:1.6;margin-top:10px}
 .header-actions{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 .header-actions #logoutMobile{grid-column:1/-1;justify-self:end;padding:8px 12px;min-height:44px}
 header .header-actions button{font-size:14px;min-width:0;min-height:46px;padding:12px 8px;white-space:normal}
 header .header-actions button span{display:inline}
 .toolbar{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin:20px 0}
 .toolbar>div{font-size:12px;line-height:1.6;overflow-wrap:anywhere}
 .inline{font-size:12px;justify-content:space-between;gap:12px}
 .inline select{font-size:16px;max-width:100%;min-height:44px}
 .scope-filters{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
 .scope-filters label{min-width:0;width:100%;font-size:13px}
 .scope-filters p{grid-column:1;font-size:12px;line-height:1.6}
 .scope-filters #clearScopes{justify-self:start;min-height:44px;font-size:13px}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
 .stat{padding:14px;min-width:0}
 .stat-top{font-size:12px;gap:6px;line-height:1.5;overflow-wrap:anywhere}
 .stat-icon{flex-shrink:0}
 .stat-value{font-size:28px;line-height:1.3;overflow-wrap:anywhere}
 .stat-foot{font-size:12px;line-height:1.6;overflow-wrap:anywhere}
 .card{padding:18px;max-width:100%}
 .card-heading{align-items:flex-start;flex-wrap:wrap}
 .card-heading h2{font-size:21px;line-height:1.3}
 .card-heading .eyebrow{font-size:9px;line-height:1.6}
 .tag{flex-shrink:0;font-size:12px}
 .chart-controls{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
 .chart-controls .phase-filter,.chart-controls>select{width:100%;max-width:100%;min-width:0;font-size:13px}
 .chart-controls select,.chart-controls .phase-filter select{width:100%;max-width:100%;font-size:16px;min-height:44px;margin-top:6px}
 .growth,.chart-caption{font-size:12px;line-height:1.6;white-space:normal;overflow-wrap:anywhere}
 .muscle-bar{grid-template-columns:minmax(0,1fr) auto;gap:8px;font-size:13px}
 .muscle-bar>span{grid-column:1;grid-row:1;overflow-wrap:anywhere}
 .muscle-bar>strong{grid-column:2;grid-row:1;font-size:12px}
 .muscle-bar-track{grid-column:1/-1;grid-row:2}
 .record-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:10px}
 .record-buttons button,.records .text-btn{font-size:13px;min-width:0;white-space:normal}
 .record-filters{flex-wrap:wrap;gap:12px}
 .record-filters input{max-width:100%;width:100%;min-height:46px;font-size:16px}
 .record-filters span{font-size:12px}
 #recordsCard .table-scroll{overflow:visible}
 #recordsCard table,#recordsBody{display:block;width:100%;white-space:normal}
 #recordsCard thead{position:absolute;left:0;top:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
 #recordsBody{display:grid;gap:14px;padding:8px 0}
 #recordsBody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:'exercise exercise' 'date volume' 'series series' 'actions actions';gap:16px;border:1px solid var(--line);border-radius:10px;padding:16px;min-width:0}
 #recordsBody td{display:block;padding:0;border:0;min-width:0;font-size:14px;white-space:normal;overflow-wrap:anywhere}
 #recordsBody td::before{content:attr(data-label);display:block;margin-bottom:6px;font-size:11px;line-height:1.5;color:var(--muted);font-weight:500;letter-spacing:.03em}
 #recordsBody td:nth-child(1){grid-area:exercise;font-size:16px}
 #recordsBody td:nth-child(2){grid-area:date}
 #recordsBody td:nth-child(3){grid-area:series}
 #recordsBody td:nth-child(4){grid-area:volume}
 #recordsBody td:nth-child(5){grid-area:actions}
 #recordsBody td small{font-size:12px;line-height:1.6}
 #recordsBody .series-details{min-width:0}
 #recordsBody .series-details>div{font-size:13px;line-height:1.8;white-space:normal}
 #recordsBody .phase-badge{min-width:0;font-size:12px;white-space:normal}
 .row-action{font-size:14px;min-height:44px;padding:10px;margin-right:8px}
 .record-locked{font-size:12px}
 .all-records{font-size:13px;min-height:48px}
 .fine,.plan-card p{font-size:12px;line-height:1.7}
 .empty{padding:24px 12px;overflow-wrap:anywhere}
 .plan-cards{grid-template-columns:minmax(0,1fr)}
 .exercise-actions{max-width:100%;gap:10px}
 .exercise-actions button{min-width:44px;max-width:100%;min-height:44px;flex:1 1 auto;white-space:normal}
 .exercise-actions button[data-action=up],.exercise-actions button[data-action=down]{flex:0 0 44px}
 .plan-exercise strong{font-size:15px;line-height:1.6}
 .plan-exercise small{font-size:12px}
 .muscle-choices{grid-template-columns:repeat(2,minmax(0,1fr))}
 .muscle-choice{font-size:12px;line-height:1.6;min-width:0}
 dialog,#recordDialog,#planDialog,#planExerciseDialog,#sessionDialog,#shareOwnerDialog,#shareImportDialog{width:calc(100% - 24px);max-width:calc(100% - 24px);margin:auto;padding:18px;max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));overscroll-behavior:contain}
 .modal-heading{align-items:flex-start;gap:12px}
 .modal-heading h2{min-width:0;font-size:22px;line-height:1.4}
 .modal-heading .icon-btn{min-width:44px;min-height:44px;flex-shrink:0}
 .form-grid,.form-grid.three{grid-template-columns:minmax(0,1fr)}
 .series-row{grid-template-columns:18px minmax(0,1fr) minmax(0,1fr) 28px}
 .series-row label{min-width:0}
 .series-row label:nth-of-type(1){grid-column:2/4;grid-row:1}
 .series-row label:nth-of-type(2){grid-column:2;grid-row:2}
 .series-row label:nth-of-type(3){grid-column:3;grid-row:2}
 .series-row label:nth-of-type(4){grid-column:2/4;grid-row:3}
 .series-fieldset{min-inline-size:0}
 .modal-actions{flex-wrap:wrap;gap:10px}
 .modal-actions button{flex:1 1 110px;min-height:46px;font-size:14px;white-space:normal}
 .policy-grid{grid-template-columns:minmax(0,1fr)}
 .admin-toolbar,.admin-tabs,.admin-filters,.security-line{flex-wrap:wrap;min-width:0}
 .admin-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
 .admin-summary .stat{padding:10px}
 .admin-summary .stat-value{font-size:23px}
 .admin-actions button{font-size:12px;min-height:44px}
 .sidebar{inset:auto 0 0;width:100%;height:auto;min-height:calc(72px + env(safe-area-inset-bottom,0px));padding:0 0 env(safe-area-inset-bottom,0px)}
 .sidebar nav{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);height:72px;width:100%;gap:0;align-items:stretch}
 .sidebar nav button{min-width:0;min-height:48px;padding:8px 2px;font-size:20px;gap:4px;line-height:1.2}
 .sidebar nav button span{font-size:10px;max-width:100%;line-height:1.3;overflow-wrap:anywhere;text-align:center}
 #toast{bottom:calc(88px + env(safe-area-inset-bottom,0px));width:calc(100% - 32px);max-width:100%;font-size:14px;line-height:1.6}
 .banner{flex-wrap:wrap;font-size:12px}
 footer{font-size:12px;line-height:1.7;overflow-wrap:anywhere}
}
