/* Touch layouts for iPhone portrait and compact phone landscape. */
html { -webkit-text-size-adjust:100%; }
.app-shell { min-height:100vh;min-height:100svh; }
@media (max-width:650px), (max-width:980px) and (max-height:600px) and (pointer:coarse) {
 :root { --phone-nav-height:72px;--phone-gutter:16px; }
 html { scroll-padding-top:140px;scroll-padding-bottom:calc(var(--phone-nav-height) + env(safe-area-inset-bottom,0px) + 24px); }
 .app-shell { display:block;max-width:100%;min-width:0; }
 .workspace { width:100%;min-width:0;max-width:100%;margin:0;padding-bottom:calc(var(--phone-nav-height) + env(safe-area-inset-bottom,0px) + 16px); }
 .sidebar { position:fixed;inset:auto 0 0;width:100%;height:calc(var(--phone-nav-height) + env(safe-area-inset-bottom,0px));padding:6px max(8px,env(safe-area-inset-right,0px)) env(safe-area-inset-bottom,0px) max(8px,env(safe-area-inset-left,0px));border:0;border-top:1px solid #2c3d58;overflow:visible;z-index:50;background:#172132;transition:transform .15s; }
 .sidebar>.brand,.workspace-label,.sidebar-bottom { display:none; }
 .nav { display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;height:100%;gap:3px; }
 .nav-item { display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-width:0;min-height:55px;padding:8px 2px;border-radius:9px;font-size:10px;line-height:1.2;white-space:nowrap; }
 .nav-item svg { width:21px;height:21px; }
 .nav-badge { display:none; }
 .topbar { height:auto;min-height:calc(64px + env(safe-area-inset-top,0px));padding:calc(10px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 10px max(16px,env(safe-area-inset-left,0px));gap:10px; }
 .topbar-right { gap:7px;flex-shrink:0; }
 .breadcrumb { min-width:0;gap:10px; }
 .breadcrumb>strong { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:108px;font-size:11px; }
 .workspace-caption,.breadcrumb-divider,.local-indicator { display:none!important; }
 .mobile-wordmark { display:inline-block;flex-shrink:0;min-height:44px;line-height:44px;font-family:'Manrope',sans-serif;font-size:24px;font-weight:800;letter-spacing:-1px; }
 .icon-button,.history-table .icon-button { min-width:44px;width:44px;min-height:44px;height:44px; }
 .avatar.small { width:30px;height:30px; }
 .content-grid { display:grid;grid-template-columns:minmax(0,1fr);gap:24px;max-width:100%;padding:24px max(var(--phone-gutter),env(safe-area-inset-right,0px)) 24px max(var(--phone-gutter),env(safe-area-inset-left,0px)); }
 #main-content { min-width:0;max-width:100%; }
 h1 { font-size:clamp(27px,7.5vw,34px);line-height:1.25;letter-spacing:-1.2px;overflow-wrap:anywhere; }
 .page-header { margin:0 0 20px; }
 .eyebrow { font-size:10px;line-height:1.5; }
 .page-subtitle { font-size:13px;line-height:1.8;max-width:none; }
 .date-label { display:none; }
 .program-banner { flex-wrap:wrap;gap:7px 10px;margin-bottom:14px; }
 .program-strip-title { flex:1; }
 .program-banner strong { font-size:11px; }
 .program-banner>span { flex-basis:100%;order:2;font-size:11px;max-width:none;text-align:left;margin:0;line-height:1.7; }
 .program-banner i { margin:0 4px; }
 .program-banner>button { display:none; }
 .workout-hero { display:block;min-height:260px;padding:25px 22px;border-radius:14px; }
 .workout-hero h2 { font-size:clamp(29px,8.2vw,37px);line-height:1.16;max-width:none;letter-spacing:-1.2px; }
 .workout-hero p { font-size:13px;line-height:1.8;max-width:280px; }
 .hero-illustration { position:absolute;right:-45px;top:62px;bottom:0;width:210px;opacity:.14; }
 .hero-illustration>span,.hero-meta { display:none; }
 .hero-actions { flex-wrap:wrap;gap:9px 18px; }
 .hero-actions .button { font-size:13px;min-height:46px;padding:12px 14px; }
 .hero-actions .secondary-button { padding:10px 0;font-size:12px; }
 .stat-grid { grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 25px; }
 .stat-card { padding:15px 10px;border-radius:11px; }
 .stat-top { display:block; }
 .stat-label { min-height:31px;line-height:1.5;font-size:10px;overflow-wrap:anywhere; }
 .stat-icon { width:28px;height:28px;margin-bottom:10px; }
 .stat-value { min-width:0;max-width:100%;overflow-wrap:anywhere;font-size:29px;line-height:1.2;margin:10px 0 8px; }
 .stat-value small { display:block;font-size:10px;margin-top:5px; }
 .stat-detail { font-size:10px;line-height:1.7;overflow-wrap:anywhere; }
 .section-heading { align-items:flex-start;flex-wrap:wrap;gap:10px 14px;margin:25px 0 15px; }
 .section-heading h2 { font-size:17px;line-height:1.5; }
 .section-heading p,.week-meta { font-size:12px;line-height:1.7; }
 .section-heading select { width:100%;max-width:none;min-height:46px;padding:11px 12px;font-size:16px; }
 .count-badge { display:none; }
 .week-plan { margin:24px 0 28px; }
 .week-plan .section-heading { margin-bottom:13px; }
 .week-grid { display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:78px;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scroll-padding:2px;max-width:100%;padding:2px 2px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:thin; }
 .week-day { scroll-snap-align:center;min-height:120px;min-width:0;width:100%;padding:14px 5px 12px;gap:9px;border-radius:10px; }
 .week-day-name { font-size:12px; }
 .week-date { font-size:25px; }
 .week-day-type { font-size:11px;min-height:18px;max-width:none;line-height:1.5;white-space:normal;letter-spacing:0; }
 .week-day-marker,.week-day.is-today .week-day-marker { min-height:14px;font-size:9px; }
 .exercise-list { max-width:100%;border-radius:12px; }
 .exercise-row { display:grid;grid-template-columns:38px minmax(0,1fr) 48px;gap:7px 10px;padding:17px 13px 5px; }
 .exercise-number { display:none; }
 .exercise-visual { width:38px;height:43px;grid-row:1/3; }
 .exercise-info { grid-column:2;grid-row:1;min-width:0; }
 .exercise-info strong { font-size:14px;line-height:1.55;overflow-wrap:anywhere; }
 .exercise-meta { gap:4px; }
 .exercise-meta span { font-size:10px;line-height:1.6; }
 .exercise-row>.exercise-target { display:flex;flex-wrap:wrap;gap:3px 8px;grid-column:2;grid-row:2;text-align:left;min-width:0; }
 .exercise-row>.exercise-target strong { font-size:13px;white-space:normal;line-height:1.7; }
 .exercise-row>.exercise-target>span { display:none; }
 .exercise-row>.exercise-weight { margin-left:0;grid-row:3;grid-column:2; }
 .exercise-row>.exercise-weight strong { font-size:13px;line-height:1.7; }
 .exercise-row>button { grid-column:3;grid-row:1/4;min-width:44px;min-height:48px;padding:8px 5px;margin:0;font-size:11px;gap:3px;flex-direction:column; }
 .exercise-row>button svg { width:15px;height:15px; }
 .target-details { margin:3px 13px 11px 61px; }
 .target-details summary { min-height:44px;font-size:12px;line-height:1.7;max-width:100%; }
 .target-details p { font-size:12px;line-height:1.8; }
 .personal-target-list { margin-left:-48px; }
 .personal-target-list>div { grid-template-columns:35px minmax(0,1fr);gap:5px 10px;padding:12px;font-size:11px; }
 .personal-target-list>div>span:last-child { grid-column:2; }
 .personal-target-list strong { font-size:12px;overflow-wrap:anywhere; }
 .program-editor>summary,.logger-notes>summary { min-height:48px;font-size:12px;line-height:1.7; }
 .program-target-form,.program-editor-form { padding:4px 14px 18px; }
 .program-target-form>p,.target-editor-exercise>.measurement-note { font-size:12px;line-height:1.8; }
 .target-editor-exercise h3 { font-size:14px;line-height:1.6; }
 .target-editor-row { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:13px;border-radius:9px; }
 .target-editor-row>span { grid-column:1/-1;font-size:11px; }
 .target-editor-row input { min-height:48px;font-size:16px;padding:11px 9px; }
 .target-editor-row .field-label { font-size:11px;line-height:1.6; }
 .button,.btn-primary,.primary-button,.btn-secondary,.text-button { min-height:46px; }
 .program-target-form>.button,.goal-actions>.button { min-height:48px;font-size:14px; }
 .insight-card { padding:17px 15px;gap:10px; }
 .insight-card strong,.insight-card p { font-size:12px;line-height:1.8; }
 .session-toolbar { top:max(8px,env(safe-area-inset-top,0px));grid-template-columns:minmax(0,1fr) auto;gap:11px 10px;padding:14px 12px;border-radius:11px;backdrop-filter:none;-webkit-backdrop-filter:none;background:#f9fbff; }
 .session-heading-text { min-width:0; }
 .session-heading-text h2 { font-size:15px;line-height:1.5;overflow-wrap:anywhere; }
 .session-heading-text p { font-size:11px;line-height:1.7; }
 .session-kind { font-size:8px;line-height:1.5; }
 .session-toolbar-actions .button,.session-toolbar-actions .btn-secondary { min-height:46px;font-size:11px;padding:11px 10px;white-space:normal;max-width:116px; }
 .session-next { padding:16px; }
 .session-next h2 { font-size:15px;line-height:1.6;overflow-wrap:anywhere; }
 .session-next p { font-size:12px;line-height:1.8; }
 .logger-card { padding:18px 14px;scroll-margin-top:160px; }
 .logger-heading { gap:9px;flex-wrap:wrap; }
 .logger-heading h2 { font-size:16px;line-height:1.5;overflow-wrap:anywhere; }
 .logger-heading p { font-size:11px;line-height:1.7; }
 .logger-heading .exercise-number { display:grid;width:28px;height:28px; }
 .logger-heading .exercise-completion { font-size:9px; }
 .logger-heading .logger-target { flex-basis:100%;font-size:12px;order:3; }
 .logger-notes .measurement-note,.measure-hint,.effort-help { font-size:12px;line-height:1.8; }
 .set-row.mixed-set-row { grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 9px;padding:15px 12px 13px; }
 .set-row.mixed-set-row .set-number { grid-column:1/-1;font-size:12px; }
 .set-row.mixed-set-row .field-label { font-size:11px;line-height:1.5;min-height:30px;margin-bottom:6px; }
 .set-row.mixed-set-row input { min-height:49px;font-size:18px;line-height:1.5;border-radius:8px;padding:10px 8px;scroll-margin-top:165px;scroll-margin-bottom:130px; }
 .set-row.mixed-set-row .button { grid-column:1/-1;min-height:48px;font-size:13px; }
 .field-label { display:block; }
 .movement-choice-label { font-size:12px; }
 input,select,textarea,.form-field select,.alternative-select,.exercise-choice,.coach-form textarea,.coach-main-form input { font-size:16px; }
 .alternative-select,.form-field select { min-height:48px;line-height:1.5;max-width:100%; }
 .form-grid { grid-template-columns:1fr;gap:0; }
 .form-field { font-size:13px; }
 .form-field small,.goal-actions p,.program-settings p { font-size:12px;line-height:1.8; }
 .goal-card { padding:21px 16px; }
 .goal-actions { flex-direction:column;align-items:stretch; }
 .goal-actions p { max-width:none; }
 .training-mix { gap:8px; }
 .mix-card { padding:15px 10px;min-width:0;display:block; }
 .mix-card .mix-label { font-size:11px;line-height:1.6; }
 .mix-card .mix-value { font-size:25px;line-height:1.35;overflow-wrap:anywhere; }
 .mix-card .mix-value small { display:block;font-size:10px;line-height:1.6; }
 .mix-card .mix-caption { font-size:10px;line-height:1.7; }
 .session-history-item { grid-template-columns:28px minmax(0,1fr);gap:9px 11px; }
 .session-history-volume { grid-column:2;text-align:left; }
 .session-history-volume>span { font-size:10px;max-width:none; }
 .session-history-item .session-history-name h3 { font-size:14px; }
 .session-history-item .session-history-name p { font-size:11px; }
 .chart-card { padding:19px 14px;min-width:0; }
 .chart-card .section-heading { flex-direction:column;gap:10px; }
 .chart-card .section-heading h2 { font-size:16px; }
 .chart-card .section-heading p { font-size:12px;line-height:1.8; }
 .volume-chart svg { display:block;max-width:100%;min-width:0; }
 .history-card { border:0;background:transparent;box-shadow:none;padding:0;overflow:visible; }
 .history-table,.history-table tbody { display:block;width:100%;max-width:100%; }
 .history-table thead { position:absolute;clip:rect(0,0,0,0);clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap; }
 .history-table tr { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 16px;background:#fff;border:1px solid #e0e7f2;border-radius:12px;padding:16px;margin:0 0 12px; }
 .history-table td { display:block;min-width:0!important;border:0;padding:0!important;white-space:normal!important;overflow-wrap:anywhere;line-height:1.7;font-size:14px; }
 .history-table td:before { content:attr(data-label);display:block;color:#7b879a;font-size:11px;line-height:1.7;margin-bottom:3px;font-weight:400; }
 .history-table td:nth-child(1),.history-table td:nth-child(2) { grid-column:1/-1; }
 .history-table td:nth-child(1) { font-size:11px;color:#8291a8; }
 .history-table td:nth-child(2) { font-size:15px;color:#344a70;font-weight:550; }
 .history-table td:nth-child(1):before,.history-table td:nth-child(2):before { display:none; }
 .history-table td:nth-child(3),.history-table td:nth-child(4) { font-size:17px;color:#365d9f;font-variant-numeric:tabular-nums; }
 .history-table .history-actions { display:flex;align-items:end;justify-content:flex-end; }
 .history-table .history-actions:before { display:none; }
 .history-table .history-actions button { display:grid;min-width:46px;min-height:46px;border:1px solid #e1e8f3;background:#f4f7fc;border-radius:8px; }
 .history-table tr:hover td { background:transparent; }
 .history-basis { font-size:11px;line-height:1.8;margin-top:5px;font-weight:400; }
 .coach-panel { position:static;display:block;padding:21px 17px;min-width:0; }
 .coach-title h2 { font-size:15px; }
 .coach-title #coach-mode { font-size:11px; }
 .coach-intro h3 { font-size:26px; }
 .coach-intro p,.coach-context>span { font-size:12px; }
 .chat-messages { max-height:320px; }
 .chat-bubble { font-size:13px!important;line-height:1.85; }
 .quick-prompts { gap:8px; }
 .quick-prompts button,.quick-prompts button:last-child { min-height:44px;font-size:12px;padding:11px 10px; }
 .coach-form textarea { min-height:74px;line-height:1.8;resize:vertical; }
 .composer-bottom>span { font-size:8px; }
 .composer-bottom button { min-width:44px;min-height:44px;width:44px;height:44px; }
 .demo-note { font-size:10px;line-height:1.7; }
 .coach-explainer { padding:22px 17px; }
 .coach-explainer>p { font-size:13px;line-height:1.85; }
 .prompt-chips { grid-template-columns:1fr; }
 .prompt-chips button { min-height:48px;font-size:13px; }
 .coach-main-card { padding:19px 14px; }
 .coach-main-form { gap:8px; }
 .coach-main-form input { min-height:48px;padding:11px 10px;line-height:1.5; }
 .coach-main-form .button { min-height:48px;min-width:48px;padding:12px; }
 .content-grid:has(#main-content[data-view="coach"]) #coach-panel { display:none; }
 .app-footer { padding:0 max(16px,env(safe-area-inset-right,0px)) 20px max(16px,env(safe-area-inset-left,0px));font-size:11px;gap:12px; }
 .app-footer>span:first-child { font-size:9px; }
 #toast { bottom:calc(var(--phone-nav-height) + env(safe-area-inset-bottom,0px) + 16px);font-size:12px;line-height:1.7;max-width:calc(100% - 32px);padding:12px 17px; }
 html[data-keyboard-open="true"] .sidebar { transform:translateY(100%);pointer-events:none;visibility:hidden; }
 html[data-keyboard-open="true"] .session-toolbar { position:static; }
 html[data-keyboard-open="true"] #toast { bottom:calc(var(--phone-keyboard-inset,0px) + 14px); }
}
@media (max-width:360px) {
 .stat-grid { grid-template-columns:1fr;gap:9px; }
 .stat-card { display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;padding:16px; }
 .stat-top { display:flex;align-items:center;gap:9px; }
 .stat-icon { margin:0;width:29px;height:29px; }
 .stat-label { font-size:12px;min-height:0; }
 .stat-value { grid-column:2;grid-row:1/3;font-size:29px;text-align:right;margin:0;align-self:center; }
 .stat-value small { font-size:10px; }
 .stat-detail { font-size:11px;grid-column:1; }
 .mini-progress { grid-column:1;margin:5px 0; }
 .training-mix { grid-template-columns:1fr;gap:9px; }
 .mix-card { display:flex;gap:12px;align-items:flex-start;padding:16px; }
 .mix-card .mix-icon { margin:0; }
 .mix-card .mix-label { font-size:12px; }
 .mix-card .mix-value { margin-top:5px;font-size:26px; }
 .mix-card .mix-value small { display:inline;margin-left:4px; }
 .logger-heading .exercise-completion { margin-left:0; }
 .session-toolbar { grid-template-columns:minmax(0,1fr); }
 .session-toolbar-actions { grid-column:1;grid-row:3; }
 .session-toolbar-actions .button,.session-toolbar-actions .btn-secondary { width:100%;max-width:none; }
 .set-row.mixed-set-row { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .set-row.mixed-set-row label:last-of-type { grid-column:1/-1; }
 .set-row.mixed-set-row .field-label { min-height:0; }
}
@media (max-width:980px) and (max-height:600px) and (pointer:coarse) {
 :root { --phone-nav-height:64px; }
 .topbar { min-height:56px;padding-top:max(6px,env(safe-area-inset-top,0px));padding-bottom:6px; }
 .nav-item { flex-direction:row;gap:8px;min-height:48px;font-size:11px; }
 .content-grid { padding-top:20px; }
 .workout-hero { min-height:220px; }
 .hero-illustration { opacity:.3;right:12px;top:10px; }
 .week-grid { grid-auto-columns:minmax(78px,1fr); }
 .session-toolbar { top:6px; }
 .form-grid { grid-template-columns:1fr 1fr;gap:15px; }
}
@media (prefers-reduced-motion:reduce) { .sidebar { transition:none; } }
