:root{--ink:#193b33;--muted:#69746c;--paper:#f5f5ef;--card:#fff;--line:#dce3db;--accent:#d9f17a;--orange:#f4c991;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer;min-height:44px}button:disabled{opacity:.45;cursor:default}button,.button{border:1px solid var(--line);border-radius:12px;background:white;color:var(--ink);padding:11px 16px;font-weight:650;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.primary{background:var(--ink);color:white;border-color:var(--ink)}.accent{background:var(--accent);border-color:var(--accent)}.quiet{background:transparent}.danger{color:#9b312b}.selected{background:var(--ink);color:#fff}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(30px,5vw,46px);letter-spacing:-1.5px;line-height:1.12;margin-bottom:14px}h2{font-size:23px;letter-spacing:-.5px}h3{font-size:18px;margin-bottom:9px}p{line-height:1.65}small,.muted{color:var(--muted)}.eyebrow{text-transform:uppercase;font-size:11px;letter-spacing:2px;font-weight:750}.brand{font-size:30px;font-weight:850;letter-spacing:-1px;display:flex;align-items:center;gap:12px}.brand-mark{width:35px;height:35px;background:var(--accent);color:var(--ink);border-radius:50%;display:grid;place-content:center;font-size:24px}header{height:92px;padding:22px 4vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:14px}.header-tools{display:flex;align-items:center;gap:10px}.avatar{width:40px;height:40px;background:#e2e7dc;border-radius:50%;display:grid;place-content:center;font-weight:700}.shell{max-width:1440px;margin:auto;display:grid;grid-template-columns:230px 1fr;min-height:calc(100vh - 92px)}aside{padding:32px 22px;border-right:1px solid var(--line)}nav{display:grid;gap:8px}nav button{justify-content:flex-start;border:0;background:transparent;text-align:left;color:var(--muted)}nav button.active{background:var(--ink);color:white}nav span{width:24px;font-size:19px}.aside-note{margin-top:45px;font-size:13px;line-height:1.7;padding:17px;background:#e9eddf;border-radius:16px}main{padding:38px 4vw 70px;min-width:0}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.heading h1{margin-bottom:8px}.hero{background:var(--ink);color:#fff;border-radius:24px;padding:32px;display:grid;grid-template-columns:1fr auto;gap:20px;margin-bottom:24px}.hero h2{font-size:30px;max-width:470px}.hero p{color:#d8e2d6;max-width:500px;margin-bottom:0}.hero .orb{height:130px;width:130px;border:1px solid #729276;border-radius:50%;display:grid;place-content:center;font-size:65px;color:var(--accent);transform:rotate(-20deg)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0 32px}.stat{padding:23px;border:1px solid var(--line);border-radius:18px;background:var(--card)}.stat strong{display:block;font-size:33px;margin:8px 0}.stat .eyebrow{color:var(--muted);letter-spacing:1px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.card{padding:24px;background:var(--card);border:1px solid var(--line);border-radius:19px;margin-bottom:18px}.grid .card{margin-bottom:0}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.badge{font-size:11px;font-weight:700;padding:6px 10px;border-radius:30px;background:#eef2e6;display:inline-block;white-space:nowrap}.badge.orange{background:#fae4c8}.date-box{background:#f0f3e9;border-radius:12px;width:60px;min-width:60px;text-align:center;padding:9px;font-size:11px;letter-spacing:1px}.date-box b{display:block;font-size:24px;letter-spacing:-1px}.row{display:flex;gap:12px;align-items:center}.spaced{justify-content:space-between}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.event-meta{font-size:14px;line-height:1.8;color:var(--muted);margin:12px 0}.progress{height:6px;background:#eaf0e6;border-radius:5px;margin:14px 0}.progress-fill{height:6px;background:var(--ink);border-radius:5px}.empty{border:1px dashed #bbc9bc;background:transparent;text-align:center;padding:35px;border-radius:18px;color:var(--muted)}.section-head{display:flex;align-items:center;justify-content:space-between;margin:24px 0 16px}.section-head h2{margin:0}.exercise-icon{height:44px;width:44px;background:#e9f0da;display:grid;place-content:center;border-radius:12px;font-size:24px}.exercise-description{font-size:14px;margin:16px 0;color:var(--muted)}.tags{display:flex;flex-wrap:wrap;gap:7px}.tags span{padding:5px 9px;background:#f2f4ee;border-radius:6px;font-size:12px}.filters{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:24px}.filters input{flex:1;min-width:180px}.filters select{width:auto}label{display:grid;gap:7px;font-size:13px;font-weight:650;margin-bottom:15px}input,select,textarea{border:1px solid #cad5c9;border-radius:10px;padding:12px;background:#fff;color:var(--ink);width:100%;min-height:44px}textarea{min-height:90px;resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.full{grid-column:1/-1}.set-row{display:grid;grid-template-columns:2fr repeat(4,1fr) 44px;gap:8px;align-items:end;margin-bottom:12px}.set-row label{margin-bottom:0}.set-row input,.set-row select{padding:10px 7px}.set-row button{padding:8px}.roster{border-top:1px solid var(--line);margin-top:20px;padding-top:16px}.roster .row{padding:9px 0;border-bottom:1px solid #eef1eb;font-size:13px}.roster .row span{flex:1}.roster button{font-size:12px;padding:6px 10px}.roster summary{cursor:pointer;min-height:36px;font-weight:650}dialog{border:0;border-radius:22px;padding:28px;width:min(750px,calc(100vw - 24px));max-height:90vh;color:var(--ink);box-shadow:0 25px 80px #0003}dialog::backdrop{background:#183d3477;backdrop-filter:blur(3px)}dialog .close{float:right}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-story{padding:60px 10%;background:var(--ink);color:white;display:flex;flex-direction:column;justify-content:space-between}.auth-story h1{font-size:clamp(45px,5vw,70px);max-width:500px;margin-top:70px}.auth-story p{color:#d5e1d1;max-width:430px}.auth-story .brand{color:white}.auth-panel{padding:40px 12%;display:flex;flex-direction:column;justify-content:center}.auth-panel>.header-tools{justify-content:flex-end;margin-bottom:35px}.auth-panel h2{font-size:30px}.auth-tabs{display:flex;gap:10px;margin-bottom:25px}.auth-tabs button{flex:1}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;border-radius:13px;padding:14px 20px;z-index:10;box-shadow:0 8px 30px #0002;display:none;max-width:90vw}#toast.show{display:block}.form-error{color:#a13528;font-size:14px;min-height:22px}.history-item{border-bottom:1px solid var(--line);padding:18px 0}.history-item:last-child{border:0}.history-item h3{margin:0}.history-item details{font-size:14px;margin-top:12px}.history-item summary{cursor:pointer;color:var(--muted)}.set-detail{margin-top:8px;padding:9px;background:#f2f5ed;border-radius:8px}.profile-width{max-width:800px}.hidden{display:none!important}.loading{padding:80px;text-align:center}footer{margin-top:35px;font-size:12px;color:var(--muted)}.user-info{font-size:13px}.user-info b{display:block}.tip{border-left:3px solid var(--accent);padding-left:15px;font-size:13px;color:var(--muted)}
@media(max-width:1000px){.shell{grid-template-columns:190px 1fr}aside{padding:25px 12px}main{padding:30px 24px}.grid{grid-template-columns:1fr}.set-row{grid-template-columns:2fr 1fr 1fr}.set-row label:first-child{grid-column:1/-1}.set-row button{align-self:end}.hero .orb{display:none}}
@media(max-width:650px){header{height:76px;padding:15px 20px}.brand{font-size:26px}.user-info{display:none}.shell{display:block}aside{position:fixed;bottom:0;left:0;right:0;background:#f5f5effa;z-index:5;padding:7px 5px;border-top:1px solid var(--line);border-right:0}nav{display:flex;justify-content:space-around;gap:0}nav button{flex:1;display:flex;flex-direction:column;padding:8px 3px;font-size:10px;gap:3px;border-radius:10px;min-height:54px}nav span{font-size:18px;width:auto}.aside-note{display:none}main{padding:25px 18px 100px}.heading{align-items:flex-start}.heading>.primary{font-size:12px;padding:10px}.hero{padding:25px}.hero h2{font-size:25px}.stats{gap:8px}.stat{padding:14px 10px}.stat strong{font-size:27px}.stat .eyebrow{font-size:9px;letter-spacing:.4px}.stat small{font-size:10px}.card{padding:19px}.form-grid{grid-template-columns:1fr}.full{grid-column:auto}.auth-shell{display:block}.auth-story{padding:30px 25px}.auth-story h1{font-size:38px;margin-top:30px}.auth-story small{display:none}.auth-panel{padding:25px}.auth-panel>.header-tools{margin-bottom:18px}.card-head{gap:10px}dialog{padding:22px}.heading h1{font-size:31px}.header-tools{gap:6px}.header-tools button{padding:8px 10px}.logout-label{display:none}}
:root[data-theme="dark"]{color-scheme:dark;--ink:#e5eddf;--muted:#a8b5a8;--paper:#111a15;--card:#1b2820;--line:#354538;--accent:#d9f17a;--orange:#e8bf88}
[data-theme="dark"] .brand-mark{color:#193b33}
[data-theme="dark"] button,[data-theme="dark"] .button,[data-theme="dark"] input,[data-theme="dark"] select,[data-theme="dark"] textarea{background:var(--card);color:var(--ink);border-color:var(--line)}
[data-theme="dark"] .primary,[data-theme="dark"] .accent,[data-theme="dark"] .selected{background:var(--accent);color:#193b33;border-color:var(--accent)}
[data-theme="dark"] nav button{background:transparent;color:var(--muted)}
[data-theme="dark"] nav button.active{background:#32482c;color:var(--accent)}
[data-theme="dark"] .hero{background:#233e2e;border:1px solid #456140;color:#eaf2e4}
[data-theme="dark"] .hero p{color:#c1ceb9}
[data-theme="dark"] .hero .eyebrow{color:var(--accent)}
[data-theme="dark"] .hero .orb{color:var(--accent);border-color:#637d50}
[data-theme="dark"] .aside-note,[data-theme="dark"] .badge,[data-theme="dark"] .date-box,[data-theme="dark"] .exercise-icon,[data-theme="dark"] .tags span,[data-theme="dark"] .set-detail,[data-theme="dark"] .avatar{background:#2b3b27;color:#d0e3b6}
[data-theme="dark"] .badge.orange{background:#4b3b2a;color:#f5d8af}
[data-theme="dark"] .roster .row{border-color:var(--line)}
[data-theme="dark"] dialog{background:var(--card);color:var(--ink)}
[data-theme="dark"] #toast{background:var(--accent);color:#193b33}
[data-theme="dark"] .form-error,[data-theme="dark"] .danger{color:#ffb5a9}
[data-theme="dark"] .auth-story{background:#233e2e}
@media(max-width:650px){[data-theme="dark"] aside{background:#111a15fa}.header-tools button[data-action="theme"]{font-size:11px;padding:8px}.auth-panel .header-tools button[data-action="theme"]{font-size:14px}}
[data-theme="dark"] .muscle-choices{border-color:var(--line)}
.muscle-choices{border:1px solid var(--line);border-radius:12px;padding:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}
.muscle-choices legend{font-size:13px;font-weight:650;padding:0 6px}
.muscle-choices label{display:flex;align-items:center;gap:9px;margin:0;min-height:36px}
.muscle-choices input{width:20px;min-height:20px;height:20px;accent-color:#7e9b35}
.invitation-banner{border:2px solid #91ae52}
.invitation-banner p{overflow-wrap:anywhere}
.invitation-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.invitation-row b{overflow-wrap:anywhere}
.invitation-created input{font-size:13px}
.invitation-created textarea{min-height:150px;font-size:13px}
@media(max-width:650px){.invitation-row{align-items:flex-start;flex-direction:column}.invitation-banner{padding:18px}}
/* Today's workout uses the existing responsive cards and form grid. */
.workout-today{margin-bottom:24px}
.workout-plan-row,.workout-live-row{margin:16px 0}
.workout-check{display:flex;align-items:center;gap:12px;margin-top:14px;font-weight:700}
.workout-check input{width:24px;height:24px;accent-color:var(--accent)}
.workout-live-row:has(input[name="completed"]:checked){border-color:var(--accent)}
.rest-timer{position:sticky;top:0;z-index:2;display:flex;align-items:center;flex-wrap:wrap;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:16px}
.rest-timer label{margin:0;min-width:90px}
.rest-timer strong{font-size:28px;font-variant-numeric:tabular-nums}
.rest-status{flex-basis:100%;color:var(--muted);font-size:14px}
.calendar-card h1{font-size:32px;margin-bottom:12px}
.mode-switch{display:flex;gap:8px;margin:12px 0 18px}
.coach-banner{padding:14px;border-radius:12px;background:var(--accent);color:#193b33}
.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:20px 0}
.week-strip button{display:flex;flex-direction:column;gap:7px;padding:12px 4px;background:var(--card);color:var(--ink)}
.week-strip strong{font-size:24px}
.week-strip .selected{background:var(--accent);color:#193b33;border-color:var(--accent)}
.week-strip .selected small{color:#193b33}
.calendar-structure{padding-left:24px}
.calendar-structure li{margin:12px 0}
.calendar-structure small{display:block;margin-top:5px}
.rhythm strong{font-size:44px;color:var(--ink)}
@media(max-width:650px){.calendar-card{padding:16px}.week-strip{gap:4px}.week-strip small{font-size:11px}.week-strip strong{font-size:20px}.calendar-card .section-head{align-items:flex-start;flex-direction:column}.mode-switch{flex-wrap:wrap}}
.user-menu{position:relative}
.user-menu summary{display:flex;gap:10px;align-items:center;cursor:pointer;list-style:none;min-height:44px}
.user-menu summary::-webkit-details-marker{display:none}
.user-menu-options{position:absolute;right:0;top:calc(100% + 12px);z-index:10;display:grid;gap:6px;min-width:210px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px;box-shadow:0 12px 35px #0004}
.user-menu-options button{justify-content:flex-start}
.muscle-map{display:flex;align-items:center;gap:14px;margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}
.muscle-views{display:flex;flex-shrink:0;gap:4px}
.muscle-views svg{width:64px;height:96px}
.muscle-body{fill:var(--card);stroke:var(--muted);stroke-width:1.2}
.muscle-region{fill:var(--line);stroke:var(--card);stroke-width:1}
.muscle-active{fill:#df744f;stroke:#aa4c30}
.muscle-map figcaption{font-size:12px;font-weight:650;line-height:1.6}
.muscle-map figcaption small{display:block;font-weight:400}
.muscle-key{display:inline-block;width:9px;height:9px;border-radius:50%;background:#df744f;margin-right:6px}
.catalog-shortcuts{display:flex;gap:10px;margin-bottom:14px}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end}
.filters label{margin:0;font-size:13px}
.filters label select{width:100%;margin-top:6px}
@media(max-width:650px){.filters{grid-template-columns:1fr}}
@media(max-width:400px){.muscle-map{gap:8px;padding:8px}.muscle-views svg{width:50px;height:80px}}
/* Coach workouts: readable instructions and prominent registration on phones. */
.coach-events { margin-block: 1.5rem; }
.coach-event-card .event-title { padding: 0; text-align: left; font: inherit; color: inherit; text-decoration: underline; text-underline-offset: .2em; }
.coach-event-card .actions button { width: 100%; }
.coach-event-detail { width: min(46rem, calc(100vw - 2rem)); max-height: calc(100dvh - 2rem); overflow-y: auto; box-sizing: border-box; }
.coach-workout-structure { padding-left: 1.5rem; }
.coach-workout-structure li { margin-block: 1.25rem; padding-left: .25rem; }
.coach-workout-structure h4 { margin-bottom: .4rem; }
.coach-workout-structure .set-target { font-weight: 700; }
.coach-workout-structure p { overflow-wrap: anywhere; }
.event-registration { margin-top: 1.5rem; }
.event-registration .actions button { flex: 1; min-height: 2.75rem; }
.session-set-fields[hidden] { display: none; }
.session-notes-preview { white-space: pre-wrap; overflow-wrap: anywhere; }
.workout-phase-heading { color: inherit; border-top: 1px solid currentColor; padding-top: .8rem; margin-top: 1.2rem; }
.group-generator-settings { margin-block: 1.25rem; }
.group-generator-settings summary { cursor: pointer; padding-block: .5rem; font-weight: 700; }
#group-generator-dialog { width: min(42rem, calc(100vw - 2rem)); box-sizing: border-box; }
.phase-summary { line-height: 1.7; }
.exercise-picker-info { margin-block: .75rem; }
.exercise-picker-info p { overflow-wrap: anywhere; }
.workout-plan-row select[name="exercise_id"], .set-row select[name="exercise_id"] { width: 100%; min-width: 0; max-width: 100%; }
.playlist-hint { grid-column: 1 / -1; margin-top: -.25rem; }
.playlist-link a { display: inline-block; color: inherit; padding: .6rem .85rem; min-height: 44px; box-sizing: border-box; border: 1px solid currentColor; border-radius: .75rem; text-decoration: none; }
.playlist-link a:hover, .playlist-link a:focus-visible { text-decoration: underline; }

.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:1rem;margin-bottom:1.5rem}.admin-stats .stat{display:flex;flex-direction:column;gap:.4rem}.admin-user{gap:1rem;flex-wrap:wrap}.admin-user>div{min-width:0;overflow-wrap:anywhere}.admin-user select{width:auto;min-width:140px}@media(max-width:650px){nav button{min-width:0}.admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
