:root{--navy:#0b2436;--ink:#122e41;--muted:#587080;--line:#d9e3e9;--paper:#f3f7fa;--mint:#3bdec0;--blue:#195dec;--white:#fff}*{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{margin:0;background:var(--paper);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);line-height:1.5}button,input,select{font:inherit}button,a,select,input{touch-action:manipulation}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.4;cursor:default}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #008e81;outline-offset:4px}button{border:1px solid var(--line);background:white;border-radius:10px;padding:10px 16px;min-height:44px;color:var(--ink)}button:hover{background:#eaf2f6}h1,h2,h3,p{margin:0}h1{font-size:clamp(2rem,4.4vw,3.2rem);letter-spacing:-.045em;line-height:1.12;font-weight:760}h2{font-size:1.4rem;letter-spacing:-.025em;line-height:1.25}h3{font-size:1.1rem;line-height:1.35}p{overflow-wrap:anywhere}.muted{color:var(--muted)}.tiny,.eyebrow{font-size:.75rem;letter-spacing:.12em;font-weight:700}.eyebrow{color:var(--muted);margin-bottom:12px}.review-bar{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 28px;background:#e0f1ed;color:#164e48;font-size:.8125rem}.review-bar button{border:0;background:transparent;padding:6px 12px;font-size:.8125rem;min-height:36px;font-weight:700;color:#164e48;text-decoration:underline}.review-panel{padding:24px 32px;background:#e8f5f1;display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.review-panel[hidden]{display:none}.review-panel h3{margin:6px 0}.review-panel p{font-size:.9rem;max-width:65ch}.shell{display:grid;grid-template-columns:235px minmax(0,1fr);min-height:calc(100vh - 48px)}.sidebar{background:var(--navy);color:white;padding:34px 28px;display:flex;flex-direction:column;position:relative}.brand{display:flex;align-items:center;min-height:44px;width:176px;max-width:100%;padding:6px;background:var(--white);border-radius:6px}.brand-logo{display:block;width:100%;height:auto;object-fit:contain}.season-label{font-size:.6875rem;letter-spacing:.13em;color:#8aa6b7;margin:62px 0 20px}.desktop-nav{display:grid;gap:8px}.desktop-nav a{padding:13px 16px;font-size:1rem;border-radius:9px;color:#b9cbd5;font-weight:600}.desktop-nav a[aria-current=page]{background:#183e51;color:white;box-shadow:inset 3px 0 var(--mint)}.sidebar-bottom{margin-top:auto;padding-top:80px;color:#88a6b6}.sidebar-bottom p{color:#d3e1e9;font-size:1.1rem;margin:15px 0 44px;line-height:1.65}.tiny{font-size:.6875rem}.workspace{min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;padding:24px 44px;border-bottom:1px solid var(--line);min-height:98px;background:white}.top-context{color:var(--muted);font-size:.875rem}.athlete-control{display:flex;align-items:center;gap:14px}.athlete-control label{font-size:.75rem;color:var(--muted)}select{border:0;background:transparent;font-weight:650;max-width:210px;padding:10px 24px 10px 8px;min-height:44px;color:var(--ink)}.avatar{background:var(--navy);color:white;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-size:.8125rem;font-weight:650}.mobile-brand{display:none}main{padding:40px 44px;max-width:1390px;margin:auto;min-height:65vh}.heading{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px}.heading p{margin-top:12px}.date-control{display:flex;flex-direction:column;gap:5px;flex-shrink:0}.date-control label{font-size:.75rem;color:var(--muted)}input[type=date]{border:1px solid var(--line);background:white;color:var(--ink);border-radius:8px;padding:10px;min-height:44px;max-width:100%}.day-strip{display:grid;grid-template-columns:44px repeat(7,minmax(0,1fr)) 44px;gap:7px;margin:0 0 26px}.day-button{padding:9px 2px;display:grid;gap:3px;border-radius:11px;background:transparent;border:1px solid transparent}.day-button .dow{font-size:.75rem;color:var(--muted)}.day-button .num{font-size:1.25rem;font-weight:700}.day-button.active{background:var(--navy);color:white}.day-button.active .dow{color:#a8c8d8}.day-button .marks{height:4px;background:#aabac4;border-radius:3px;width:12px;margin:auto}.day-button.active .marks{background:var(--mint)}.two-col{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:28px;align-items:start}.stack{display:grid;gap:18px}.session-card{background:white;border:1px solid var(--line);border-radius:15px;overflow:hidden;position:relative}.session-card::before{content:"";position:absolute;top:0;left:0;bottom:0;width:4px;background:var(--zone,#879baa)}.card-main{padding:23px 26px}.card-top{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:16px}.slot{display:flex;align-items:center;gap:9px;font-size:.8125rem;color:var(--muted)}.slot strong{color:var(--ink);font-size:.9375rem}.badge{border-radius:6px;padding:4px 8px;background:var(--zone-bg,#edf2f6);color:var(--zone-ink,#365060);font-size:.75rem;font-weight:650;white-space:normal}.session-card h2{font-size:1.5rem;max-width:28ch}.session-card .meta{display:flex;gap:18px;flex-wrap:wrap;margin-top:15px;color:var(--muted);font-size:.875rem}.card-foot{border-top:1px solid #e8eef1;padding:12px 25px;display:flex;justify-content:space-between;gap:12px;align-items:center;background:#fbfcfd}.card-foot span{font-size:.75rem;color:var(--muted)}.card-foot a{font-size:.875rem;font-weight:650;padding:8px 0;min-height:40px}.card-foot a:hover{color:var(--blue)}.session-card.off{background:#edf2f5;border-style:dashed;box-shadow:none}.session-card.off::before{display:none}.session-card.off h2{font-size:1.15rem;color:var(--muted)}.session-card.off .card-main{padding:18px 25px}.aside-card{border:1px solid var(--line);border-radius:14px;padding:23px;background:white}.aside-card p{font-size:.9rem;color:var(--muted);margin-top:10px}.aside-card h3{font-size:1.25rem}.aside-card .eyebrow{margin-bottom:14px}.aside-card.dark{background:var(--navy);color:white;border:0}.aside-card.dark p,.aside-card.dark .eyebrow{color:#a8c3d0}.aside-card.dark h3{font-size:1.8rem;line-height:1.15}.aside-card a.text-link{color:var(--mint)}.text-link{display:inline-block;margin-top:18px;font-size:.875rem;font-weight:650;text-decoration:underline;text-underline-offset:4px}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.metric strong{display:block;font-size:1.65rem;font-variant-numeric:tabular-nums}.metric span{font-size:.75rem;color:var(--muted)}.notice{padding:14px 17px;border:1px solid #dce7ef;border-radius:9px;background:#eaf2f8;font-size:.875rem;color:#345568;margin-bottom:22px}.notice.warn{background:#fff5dd;border-color:#edd9a7;color:#755714}.week-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.week-grid{display:grid;gap:25px}.day-heading{display:flex;gap:12px;align-items:center;margin-bottom:11px}.date-square{background:#dfebf1;color:#1e475e;border-radius:8px;min-width:44px;height:47px;text-align:center;font-weight:750;font-size:1.25rem;padding:7px}.day-heading h2{font-size:1.15rem}.day-heading p{font-size:.8125rem;color:var(--muted)}.day-sessions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.day-sessions .session-card h2{font-size:1.1rem}.day-sessions .card-main{padding:18px 20px}.day-sessions .card-foot{padding:8px 20px}.back{display:inline-flex;min-height:44px;align-items:center;margin-bottom:17px;color:var(--muted);font-size:.875rem;text-decoration:underline;text-underline-offset:5px}.session-header{border-bottom:1px solid var(--line);padding-bottom:25px;margin-bottom:25px}.session-header h1{max-width:25ch;margin:12px 0 18px}.session-meta{display:flex;gap:10px;flex-wrap:wrap}.session-meta span{background:white;border:1px solid var(--line);border-radius:7px;padding:7px 11px;font-size:.8125rem}.workout-block{background:white;border:1px solid var(--line);border-radius:14px;margin-bottom:18px;overflow:hidden}.block-head{display:flex;justify-content:space-between;gap:15px;padding:17px 22px;border-bottom:1px solid var(--line);align-items:center}.block-head h2{font-size:1.1rem}.block-number{color:var(--muted);font-size:.75rem;letter-spacing:.08em}.set-line{padding:14px 22px;border-bottom:1px solid #e9eff3;font-size:1rem;line-height:1.65;overflow-wrap:anywhere}.set-line:last-child{border-bottom:0}.set-line small{display:block;color:var(--muted);font-size:.875rem}.set-line.indent{padding-left:36px;border-left:3px solid #cfdee6;margin-left:22px}.set-line .z{font-size:.875rem;font-weight:700;padding:3px 7px;border-radius:4px;white-space:nowrap}.z-pink{background:#ff69bd;color:#0b2436}.z-red{background:#ff7064;color:#0b2436}.z-blue{background:#5b9bff;color:#0b2436}.z-green{background:#39ed69;color:#0b2436}.z-white{background:#f0f3f5;color:#53606a}.z-clear{background:#eff5fa;color:#3d596c}sup{font-size:.68em;color:var(--ink)}.plan-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px}.plan-week{border-left:2px solid #bbd0dc;padding:0 0 27px 24px;position:relative}.plan-week:before{content:"";position:absolute;width:10px;height:10px;border:3px solid var(--paper);background:#217d99;border-radius:50%;left:-6px;top:4px}.plan-week .eyebrow{margin-bottom:8px}.plan-week h2{font-size:1.25rem}.plan-week p{color:var(--muted);margin-top:9px;font-size:.9375rem}.plan-week a{font-size:.875rem;text-decoration:underline;display:inline-block;margin-top:9px}.event{padding:18px 0;border-top:1px solid var(--line)}.event:first-of-type{border-top:0}.event h3{font-size:1rem;margin:6px 0}.event .event-date{color:var(--muted);font-size:.8125rem}.event p{font-size:.8125rem;margin-top:6px}.page-footer{padding:8px 44px 35px;font-size:.75rem;color:var(--muted);line-height:1.8;max-width:1390px;margin:auto}.mobile-nav{display:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip{position:absolute;top:-60px;left:10px;background:white;z-index:100;padding:12px}.skip:focus{top:5px}.legend{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.empty{padding:35px 25px;text-align:center;background:white;border:1px dashed #b7cbd7;border-radius:14px}.empty p{color:var(--muted);margin-top:12px}.comparison{margin-top:14px;font-size:.8125rem;color:var(--muted)}
@media(min-width:1600px){.shell{grid-template-columns:270px minmax(0,1fr)}}
@media(max-width:1150px){.shell{grid-template-columns:195px minmax(0,1fr)}.sidebar{padding:28px 20px}.topbar{padding:20px 28px}main{padding:30px 28px}.two-col,.plan-layout{grid-template-columns:minmax(0,1fr)}.side-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.page-footer{padding-left:28px}.athlete-control label{display:none}}
@media(max-width:720px){.shell{display:block}.sidebar,.desktop-label,.top-context,.avatar{display:none}.review-bar{padding:4px 16px}.review-panel{padding:20px;grid-template-columns:1fr}.topbar{padding:12px 20px;min-height:74px}.mobile-brand{display:flex;align-items:center;width:112px;min-height:44px}select{font-size:.875rem;padding-right:15px;max-width:200px}main{padding:26px 18px}.heading{display:block}.heading .date-control{margin-top:19px}.date-control{flex-direction:row;align-items:center;justify-content:space-between}.heading p{font-size:.875rem}.day-strip{gap:1px}.day-button{padding:10px 1px}.day-button .num{font-size:1.15rem}.day-button .dow{font-size:.6875rem}.two-col{gap:22px}.side-stack{grid-template-columns:1fr}.day-sessions{grid-template-columns:1fr}.card-main{padding:20px}.session-card h2{font-size:1.35rem}.card-foot{padding:10px 20px}.card-top{gap:8px;align-items:start}.slot{flex-wrap:wrap}.week-toolbar{margin-top:20px}.week-toolbar button{flex:1;padding:9px}.page-footer{padding:5px 20px 110px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.98);border-top:1px solid var(--line);padding:8px 18px max(10px,env(safe-area-inset-bottom));z-index:10;gap:8px}.mobile-nav a{flex:1;text-align:center;padding:12px 8px;font-size:.875rem;font-weight:650;border-radius:8px;min-height:46px;color:var(--muted)}.mobile-nav a[aria-current=page]{color:var(--navy);background:#dfefed;box-shadow:inset 0 2px #00a78c}.session-meta span{font-size:.8125rem}.block-head,.set-line{padding-left:17px;padding-right:17px}.set-line.indent{margin-left:15px;padding-left:17px}.review-bar button{padding:6px 0}.plan-layout{gap:20px}.athlete-control{gap:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.empty-day{padding:18px 0}.card-foot{justify-content:flex-end}
@media(max-width:720px){main{padding-bottom:110px}}

.session-focus{margin-bottom:24px;padding:0 0 22px;border-bottom:1px solid var(--line)}.session-focus h2{font-size:1.1rem;margin-bottom:10px}.session-focus p{font-size:1rem;line-height:1.65;max-width:65ch}.set-note{margin-top:8px;color:#345568;font-size:.9375rem;font-weight:550}.repeat-group{margin:15px;border-left:3px solid #97afbf;background:#f8fbfd;border-radius:0 8px 8px 0}.repeat-label{padding:10px 16px;font-size:.9375rem;background:#e4edf3}.repeat-items .set-line{padding-left:16px;padding-right:16px}.repeat-group .repeat-group{margin:12px;border-color:#51778e}.z-gold{background:#ffed00;color:#0b2436;box-shadow:inset 0 0 0 1px #978900}@media(max-width:720px){.repeat-group{margin:12px 10px}.repeat-group .repeat-group{margin:10px 8px}.repeat-label{padding:9px 12px}.repeat-items .set-line{padding:12px}}

/* Preparation precedes the workout in reading order; volume summary follows it. */
.session-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;grid-template-rows:min-content 1fr;gap:20px 28px;align-items:start}.session-preparation{grid-column:2;grid-row:1;display:grid;gap:18px;min-width:0}.session-workout{grid-column:1;grid-row:1 / 3;min-width:0}.session-volumes{grid-column:2;grid-row:2;min-width:0}.widget-heading{font-size:.875rem;letter-spacing:.035em;margin-bottom:16px;font-weight:700;color:var(--muted)}.weather-card .location-name{font-size:1.4rem;line-height:1.3}.weather-card .country-name{margin-top:3px}.weather-card .pool-course{margin-top:6px}.weather-reading{display:flex;align-items:center;gap:14px;padding-top:19px;margin-top:18px;border-top:1px solid var(--line)}.weather-icon{font-size:2.5rem;line-height:1}.weather-reading strong{display:block;font-size:2rem;line-height:1.2;font-variant-numeric:tabular-nums}.weather-reading div>span{display:block;font-size:.9375rem;margin-top:4px}.weather-card .weather-date{font-size:.875rem;line-height:1.6;margin-top:12px}.session-volumes .volume-total{margin:0 0 22px;color:var(--ink)}.volume-total strong{font-size:1.6rem;line-height:1.2;display:block}.volume-total>span{display:block;margin-top:7px;font-size:.875rem;color:var(--muted)}.session-volumes .volume-subhead{font-size:.9375rem;margin:0 0 10px}.volume-list{margin:0}.volume-list>div{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0}.volume-list dt{font-size:.9375rem}.volume-list dd{margin:0;font-size:1rem;font-weight:650;white-space:nowrap;font-variant-numeric:tabular-nums}.volume-list .z{display:inline-block;font-size:.8125rem;font-weight:750;padding:4px 8px;border-radius:5px}.volume-secondary{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
@media(max-width:1100px){.session-layout{display:flex;flex-direction:column;gap:24px}.session-preparation,.session-workout,.session-volumes{width:100%}.session-preparation{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}
@media(max-width:720px){.session-preparation{grid-template-columns:1fr;gap:16px}.session-layout{gap:24px}.weather-reading{padding-top:14px;margin-top:14px}.session-layout .aside-card{padding:20px}.session-workout>.workout-block:last-child{margin-bottom:0}}

.workout-options{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:18px 20px;margin:0 0 22px;background:white;border:1px solid var(--line);border-radius:12px}.workout-options label{font-weight:650;font-size:1rem}.workout-options select{font-size:1rem;min-height:44px;max-width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:#f5f9fb;color:var(--ink)}
.workout-alternatives{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start}.workout-alternative{min-width:0;display:none;border:2px solid var(--line);border-radius:14px;padding:12px;background:#f5f8fa}.workout-alternative.is-selected{display:block;border-color:#087b70;background:#edf9f5}.alternative-heading{display:flex;align-items:start;justify-content:space-between;gap:10px;padding:8px 4px 18px;flex-wrap:wrap}.alternative-heading h2{font-size:1.15rem;line-height:1.5}.alternative-heading h2 span{display:block;font-size:1rem;color:var(--muted)}.alternative-heading button{min-height:44px;font-size:.875rem;padding:8px 12px}.alternative-heading button[aria-pressed=true]{background:#087b70;color:white}.workout-alternative .workout-block:last-child{margin-bottom:0}.reading-link-bottom{display:inline-block;margin-top:28px;padding:12px 0}.weather-date a{text-decoration:underline}
@media(min-width:1200px){.workout-alternatives{grid-template-columns:repeat(2,minmax(0,1fr))}.workout-alternative{display:block}.workout-alternative .block-head{padding:15px 12px}.workout-alternative .set-line{padding:12px}.workout-alternative .repeat-group{margin:10px 5px}.workout-alternative .block-head h2{font-size:1.1rem}}
.calendar-date-link{display:block;border-radius:5px;text-decoration:none;color:inherit}.calendar-date-link .calendar-day{min-height:36px}.calendar-date-link:hover{box-shadow:0 0 0 2px #087b70}.calendar-date-link:focus-visible{outline:3px solid #087b70;outline-offset:2px}.session-breakouts{display:grid;gap:18px}.breakout-widget h2{font-size:1.05rem;line-height:1.4;margin-bottom:10px}.breakout-widget p{font-size:.9375rem;line-height:1.65}.reference-table{width:100%;border-collapse:collapse;font-size:.875rem;margin-top:16px;font-variant-numeric:tabular-nums}.reference-table caption{text-align:left;font-weight:700;margin-bottom:7px}.reference-table th,.reference-table td{padding:7px 4px;text-align:center;border-bottom:1px solid var(--line)}.reference-table th:first-child{text-align:left}.reference-table thead th{color:var(--muted)}.breakouts-mobile{display:none}
@media(max-width:1100px){.breakouts-desktop{display:none}.breakouts-mobile{display:grid;margin:0 0 24px}.calendar-date-link .calendar-day{min-height:40px}}
/* Monday-first four-week calendar, individual to the selected athlete. */
.calendar-card{grid-column:1 / -1}.mini-calendar{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:3px 5px;font-variant-numeric:tabular-nums}.mini-calendar caption{text-align:left;font-size:.8125rem;font-weight:650;color:var(--muted);padding:0 0 10px}.mini-calendar td{padding:0;text-align:center}.calendar-day{display:flex;align-items:center;justify-content:center;min-height:28px;border-radius:5px;font-size:.875rem;font-weight:650;color:var(--navy)}.calendar-travel{background:#39ed69}.calendar-competition{background:#ffed00}.calendar-travel.calendar-competition{background:linear-gradient(135deg,#ffed00 50%,#39ed69 50%)}.calendar-selected{outline:2px solid var(--navy);outline-offset:1px}.calendar-key{display:flex;gap:15px;flex-wrap:wrap;margin-top:12px;font-size:.6875rem;color:var(--muted)}.calendar-key span{display:flex;align-items:center;gap:5px}.calendar-key i{width:9px;height:9px;border-radius:2px;display:inline-block}.key-competition{background:#ffed00;border:1px solid #b8aa00}.key-travel{background:#39ed69;border:1px solid #00bd40}

/* Training reference and camp spaces. */
.zone-link{min-height:32px;cursor:pointer;border:0;font:inherit;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;vertical-align:baseline}.zone-link:hover{filter:brightness(.96)}.z-orange{background:#ffb34a;color:#0b2436}.z-purple{background:#c29aff;color:#0b2436}.guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.zone-guide{background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden}.zone-guide summary{padding:20px;cursor:pointer;min-height:64px;font-size:1rem;font-weight:600}.zone-guide summary .z{display:inline-block;padding:4px 8px;border-radius:5px;font-size:.875rem;margin-right:10px}.zone-body{padding:0 22px 22px}.zone-body h2,#zone-content h2{font-size:1.4rem;line-height:1.35}.zone-purpose{font-size:.875rem;color:var(--muted);margin-bottom:7px}.zone-feeling{margin-top:14px}.guide-facts{margin:18px 0}.guide-facts>div{padding:10px 0;border-bottom:1px solid var(--line)}.guide-facts dt{font-size:.875rem;color:var(--muted)}.guide-facts dd{margin:4px 0 0;font-weight:600}.zone-cue{padding:14px;background:#edf5f8;border-radius:8px}.unit-label{display:block;margin-top:20px;font-size:.875rem}.unit-label select{display:block;border:1px solid var(--line);border-radius:8px;width:100%;max-width:100%;font-size:.875rem;margin-top:6px}.stroke-values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;text-align:center;margin:12px 0}.stroke-values div{padding:10px 3px;background:#f3f7fa;border-radius:6px}.stroke-values dt{font-size:.875rem;color:var(--muted)}.stroke-values dd{margin:5px 0 0;font-weight:650;font-size:.9375rem}.guide-note{font-size:.875rem;color:var(--muted);margin-top:18px}.guide-downloads{margin-top:26px}.guide-downloads>a{display:inline-block;margin:16px 24px 16px 0;text-decoration:underline;text-underline-offset:4px;font-size:.9375rem}.guide-downloads summary,.facility-directory summary{cursor:pointer;font-weight:650;min-height:44px;padding:10px 0}#zone-dialog{width:min(560px,calc(100% - 28px));max-height:85dvh;overflow:auto;border:1px solid var(--line);border-radius:18px;padding:24px;color:var(--ink);box-shadow:0 20px 90px #0b243644}#zone-dialog::backdrop{background:#0b243699}.dialog-close{display:block;margin:0 0 16px auto}.camp-select{font-size:.875rem;color:var(--muted)}.camp-select select{display:block;max-width:100%;border:1px solid var(--line);background:white;border-radius:8px}.camp-banner{padding:28px;background:var(--navy);color:white;border-radius:16px;margin-bottom:24px}.camp-banner .badge{background:#315565;color:white}.camp-banner h2{font-size:1.8rem;margin:14px 0 10px}.camp-banner p{color:#d3e1e9;margin-top:8px}.camp-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:22px;align-items:start}.camp-layout .aside-card h2{font-size:1.25rem}.camp-layout .text-link{color:var(--blue)}.camp-booking{padding:18px 0;border-bottom:1px solid var(--line)}.facility-directory{margin-top:24px}.facility-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;padding-top:16px}.facility-list article{padding:16px;border:1px solid var(--line);border-radius:10px}.facility-list .badge{margin-top:12px}.facility-list h3{font-size:1.1rem}
@media(max-width:900px){.guide-grid,.camp-layout{grid-template-columns:1fr}.facility-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.mobile-nav{gap:3px;padding-left:8px;padding-right:8px}.mobile-nav a{padding:12px 3px;font-size:.875rem}.camp-select{display:block;margin-top:18px}.facility-list{grid-template-columns:1fr}.camp-banner{padding:22px}.zone-guide summary{padding:18px}.zone-body{padding:0 18px 18px}}

.reading-guide>h2{font-size:1.5rem;margin-bottom:8px}.reading-guide>p{margin-bottom:20px}.reading-group{margin-bottom:10px;padding:8px 20px}.reading-group summary{padding:12px 0;min-height:48px;cursor:pointer;font-weight:650}.reading-group .guide-facts{margin-top:4px}.reading-group .guide-facts dt{font-weight:700;color:var(--ink);font-size:1rem}.reading-group .guide-facts dd{font-weight:400;line-height:1.65}.guide-section-heading{margin:30px 0 18px}.reading-link{display:inline-block;font-size:.9375rem;text-decoration:underline;text-underline-offset:4px;margin:0 0 20px;padding:8px 0}.rpe-anchors{margin:14px 0}.rpe-anchors>div{display:flex;gap:18px;align-items:center;border-bottom:1px solid var(--line);padding:10px 0}.rpe-anchors dt{width:42px;font-weight:750}.rpe-anchors dd{margin:0}

.pool-days{margin-top:20px}.pool-day{border-top:1px solid var(--line);padding:18px 0}.pool-day h3{font-size:1rem;margin-bottom:12px}.pool-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.pool-slots>div{padding:12px;border-radius:8px;background:var(--paper);display:grid;gap:5px}.pool-slots strong{font-size:1rem}.pool-slots span{font-size:.875rem}.pool-slot-label{color:var(--muted)}.aside-card .pool-schedule-note{font-size:.875rem}.aside-card .pool-booking-note{font-size:.875rem;padding:10px 12px;background:#fff4d6;border-radius:7px;color:#654c12}.aside-card .stay-name{font-size:1.05rem;margin-top:14px}@media(max-width:420px){.pool-slots{grid-template-columns:1fr}}

.venue-details{margin-top:16px}.venue-details h3{font-size:1.1rem}.venue-details address{font-style:normal;line-height:1.65;margin-top:8px;font-size:1rem;overflow-wrap:anywhere}.venue-details a.text-link,.activity-grid a.text-link{color:var(--blue)}.activity-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.activity-grid h2{font-size:1.25rem}@media(max-width:720px){.activity-grid{grid-template-columns:1fr}}

.pool-slots>div.pool-options{padding:0;background:transparent;align-content:start}.pool-option{display:grid;gap:7px;border-left:5px solid var(--zone);background:var(--zone-bg);color:#0b2436;padding:14px;border-radius:8px}.pool-option .badge{color:#0b2436}.activity-heading{margin:28px 0 12px}.activity-featured{border-top:5px solid #00bd40}.activity-note{font-size:.9rem;color:var(--muted)}.spin-card{margin-top:24px}

.spin-days{margin:18px 0}.spin-option{border:1px solid var(--line);border-radius:9px;padding:14px}.spin-option h3{margin:8px 0}.spin-option p{margin:0;font-size:.9rem}

.activity-legend{display:flex;flex-wrap:wrap;gap:12px 20px;margin:16px 0 26px}.activity-legend span{border-left:4px solid var(--activity);padding-left:8px;font-size:.9rem}.agenda-day{margin:28px 0}.agenda-day>h2{font-size:1.2rem;border-bottom:1px solid var(--line);padding-bottom:12px}.agenda-card{border-left:4px solid var(--activity)}.agenda-card-top{display:flex;flex-wrap:wrap;gap:8px 18px;justify-content:space-between;margin-bottom:14px}.activity-tag{color:var(--activity);font-weight:700;font-size:.9rem}.agenda-card h3{font-size:1.15rem;margin:8px 0}.agenda-pending{display:inline-block;background:#fff1d4;color:#6a490b;padding:5px 8px;border-radius:5px;font-size:.875rem}
[hidden]{display:none!important}.coach-link{color:inherit;font-weight:700}.primary-action,.coach-page button{display:inline-block;padding:12px 18px;background:#0b2436;color:white;border:0;border-radius:8px;font:inherit;cursor:pointer}.coach-page button:disabled{opacity:.5;cursor:default}.coach-page{max-width:1120px;margin:0 auto;padding:28px 20px 80px}.coach-page header{display:flex;gap:24px;align-items:center;justify-content:space-between}.coach-page h1{font-size:2rem}.coach-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin:16px 0 28px}.coach-page label{display:block;margin:12px 0}.coach-page input[type=email],.coach-page input[type=text]{display:block;width:100%;padding:12px;border:1px solid #a5b6c0;border-radius:6px;font:inherit;margin-top:8px}.coach-page li{margin:10px 0;line-height:1.5}.coach-page a{color:#0062ad}.success-message,.error-message{padding:14px;border-radius:8px;margin:16px 0;background:#d9f5e6;color:#123d2d}.error-message{background:#ffeded;color:#881f24}.coach-page .aside-card{margin:16px 0}.coach-page #message:empty{display:none}
.feedback-entry{max-width:1000px;margin-bottom:36px}.feedback-header{border-bottom:1px solid var(--line);padding-bottom:22px;margin-bottom:24px}.feedback-header h2{font-size:1.65rem;line-height:1.25;margin:10px 0}.feedback-header p{line-height:1.6;margin-top:12px}.feedback-section-title{font-size:1.2rem;margin:24px 0 16px}.feedback-priorities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.feedback-priorities .aside-card{margin:0;border-top:4px solid #0066ff}.feedback-priorities p,.feedback-followup p{line-height:1.65;margin-top:12px}.feedback-number{display:block;color:#0066ff;font-weight:800;font-size:.875rem;margin-bottom:10px}.feedback-materials{margin-top:24px}.feedback-materials a{display:block;width:fit-content;margin:16px 0;overflow-wrap:anywhere}.feedback-materials .muted{font-size:.875rem;line-height:1.5}.feedback-detail{background:white;border:1px solid var(--line);border-radius:10px;margin:10px 0;padding:18px 22px}.feedback-detail summary{font-size:1rem;font-weight:700;cursor:pointer}.feedback-detail li{line-height:1.6;margin:14px 0}.feedback-detail ul{padding-left:20px}.feedback-detail .muted{font-size:.875rem}.feedback-followup{margin-top:24px}@media(max-width:720px){.feedback-priorities{grid-template-columns:1fr}.mobile-nav{overflow-x:auto}.mobile-nav a{flex:1 0 auto;min-width:54px;padding-left:5px;padding-right:5px}.workspace{padding-bottom:76px}}
.analysis-category{display:inline-block;border-radius:20px;padding:5px 11px;font-size:.75rem;font-weight:750;color:#1256a0;background:#e2efff}.analysis-video{color:#875017;background:#fff0cd}.analysis-upload{margin:20px 0;padding:18px;border:1px solid var(--line);border-radius:10px}.analysis-upload label{display:grid;gap:10px}.analysis-upload input{max-width:100%}.analysis-upload button{margin-top:14px}@media(max-width:720px){.mobile-nav a[data-nav=feedback]{max-width:92px;white-space:normal;line-height:1.2;text-align:center}.feedback-header h2{font-size:1.45rem}}

/* The physiological purpose stays visible even when a colour card is closed. */
.colour-guide{margin-bottom:36px}.colour-guide .guide-section-heading{margin-top:0}.zone-guide summary{display:flex;align-items:flex-start;gap:14px;min-height:112px;list-style:none}.zone-guide summary::-webkit-details-marker{display:none}.zone-guide summary::after{content:'+';margin-left:auto;flex:none;font-size:1.35rem;line-height:1.3;color:var(--muted)}.zone-guide[open] summary::after{content:'−'}.zone-guide summary .z{margin:3px 0 0;flex:none}.zone-summary{display:grid;gap:7px;min-width:0}.zone-summary strong{font-size:1.1rem;line-height:1.4;color:var(--ink)}.zone-summary>span{font-size:.9375rem;font-weight:400;line-height:1.5;color:var(--muted)}.zone-body .zone-purpose,#zone-content .zone-purpose{font-size:1.35rem;font-weight:750;color:var(--ink);margin:0 0 8px}.zone-description{font-size:1rem;line-height:1.5;color:var(--muted)}.zone-guide summary:focus-visible{outline:3px solid #087b70;outline-offset:-4px}
.session-layout{grid-template-rows:min-content min-content 1fr}.session-workout{grid-row:1 / 4}.rpe-widget{grid-column:2;grid-row:3;min-width:0}.rpe-widget h2{font-size:1.15rem;line-height:1.4;margin-bottom:6px}.rpe-widget .rpe-anchors>div{padding:7px 0;gap:12px;font-size:.9375rem}.rpe-widget .rpe-anchors dt{flex:0 0 40px}.rpe-widget .rpe-anchors dd{line-height:1.4}.rpe-help,.rpe-plus{font-size:.875rem;line-height:1.6}.rpe-plus{margin-top:14px}.rpe-plus .z{margin-right:5px}.rpe-widget .text-link{display:inline-block;margin-top:14px;color:var(--blue)}.translation-note{font-size:.875rem;color:var(--muted);line-height:1.5;margin-bottom:16px}
.topbar-controls{display:flex;align-items:center;gap:24px;min-width:0}.language-control{display:flex;align-items:center;gap:8px;font-size:.875rem}.language-control select{font:inherit;min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);max-width:100%}
@media(max-width:1100px){.rpe-widget{width:100%}.rpe-widget .rpe-anchors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}}
@media(max-width:720px){.topbar{flex-wrap:wrap;gap:12px}.topbar-controls{gap:12px;flex-wrap:wrap}.language-control>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.language-control select{min-width:102px;font-size:1rem}.athlete-control select{max-width:160px}.zone-guide summary{gap:10px;min-height:104px}.zone-summary strong{font-size:1.05rem}.rpe-widget .rpe-anchors{grid-template-columns:1fr}.stroke-values{grid-template-columns:repeat(2,minmax(0,1fr))}.unit-label select{font-size:1rem}}
.day-heading{color:inherit;text-decoration:none;border-radius:8px}.day-heading:hover{background:#e9f3f6}.day-heading:focus-visible{outline:3px solid #087b70;outline-offset:3px}.workout-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:20px}.date-control{flex-wrap:wrap}.workout-actions #print-message{font-size:.9rem}.language-control select{max-width:165px}
#print-dialog{max-width:900px;width:calc(100% - 24px);max-height:92vh;border:1px solid #a5b6c0;padding:0;border-radius:12px;background:#fff;color:#0b2436}#print-dialog::backdrop{background:#0b243699}.print-toolbar{position:sticky;top:0;z-index:1;display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:16px;background:#edf4f7}.print-toolbar p{flex:1 1 230px;font-size:.9rem}.print-toolbar button{padding:10px 16px}.print-workout{padding:28px}.print-workout h1{font-size:1.8rem;margin:8px 0}.print-workout header p{margin:8px 0;line-height:1.5}.print-workout .workout-block{margin:22px 0}.print-workout .breakouts-print{display:block}.print-workout .session-volumes{margin-top:24px}.print-workout footer{font-size:.8rem;border-top:1px solid #a5b6c0;margin-top:24px;padding-top:12px}.print-option{font-size:1.2rem;margin:20px 0}
@media print{
 @page{size:auto;margin:12mm}
 body:has(#print-dialog[open])> :not(#print-dialog){display:none!important}
 #print-dialog[open]{display:block!important;position:static!important;inset:auto!important;width:100%!important;max-width:none!important;max-height:none!important;height:auto!important;overflow:visible!important;border:0!important;border-radius:0!important;margin:0!important;padding:0!important;box-shadow:none!important}
 #print-dialog::backdrop,.print-toolbar{display:none!important}
 .print-workout{padding:0;font-size:10pt;color:#000;background:#fff;print-color-adjust:exact;-webkit-print-color-adjust:exact}
 .print-workout h1{font-size:18pt}.print-workout h2{font-size:13pt}.print-workout h3{font-size:11pt}
 .print-workout .workout-block{break-inside:auto;border:0;box-shadow:none;margin:14px 0}
 .print-workout .block-head,.print-workout .repeat-label,.print-workout .print-option{break-after:avoid}
 .print-workout .set-line,.print-workout tr,.print-workout .volume-list>div{break-inside:avoid}
 .print-workout .repeat-group{break-inside:auto}.print-workout .repeat-items{padding:8px 12px}
 .print-workout .set-line{font-size:11pt;line-height:1.5;padding:6px 0}.print-workout .set-note{font-size:9pt}
 .print-workout .aside-card{padding:12px;box-shadow:none}.print-workout .z{font-size:inherit;color:#000;border:1px solid #777}
 .print-workout .session-volumes{break-inside:avoid}.print-workout table{width:100%;border-collapse:collapse}.print-workout th,.print-workout td{padding:5px;border:1px solid #aaa}
}
#print-content{background:#e9eff2}.print-page{display:block;width:100%;height:auto;background:#fff}.pdf-loading{padding:24px}#download-workout-pdf{text-decoration:none}
@media print{
 @page{size:A4 portrait;margin:10mm}
 #print-content{background:#fff!important;max-height:none!important;overflow:visible!important}
 .print-page{width:180mm!important;height:auto!important;max-width:180mm!important;max-height:255mm!important;object-fit:contain;margin:0 auto!important;break-inside:avoid!important;page-break-inside:avoid!important}
}

/* Keep week controls beside Monday/Sunday, including narrow phones. */
.day-week-arrow{padding:0;font-size:1.8rem;align-self:center;height:44px;line-height:1}.empty-day{padding:18px;border:1px dashed var(--line);border-radius:12px;background:white}.empty-day p+p,.session-card.pending p{margin-top:8px}.session-card.pending{border-style:dashed}.session-card.pending h2{font-size:1.1rem;margin-top:10px}.session-card.pending p{font-size:.875rem}.session-card.pending::before{background:#a3b4c0}
@media(max-width:380px){.day-strip{grid-template-columns:32px repeat(7,minmax(0,1fr)) 32px}.day-week-arrow{min-width:32px}.day-button .dow{font-size:.625rem}}

.round-descriptions{margin:8px 0 0 20px;display:grid;gap:5px}.round-description{font-weight:700;line-height:1.5}

/* Training statistics: the same selected option powers week and season totals. */
.training-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;margin:1rem 0}.training-metrics>div{display:flex;flex-direction:column;gap:.5rem}.training-metrics strong{font-size:2rem}.training-metrics span:last-child{font-size:.85rem}.statistics-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:1.5rem;margin:1.5rem 0}.trend-row{display:grid;grid-template-columns:65px 1fr 70px;align-items:center;gap:10px;text-decoration:none;color:inherit;font-size:.85rem;margin:12px 0}.trend-track{display:flex;background:#eef2f5;height:14px;border-radius:4px;overflow:hidden}.trend-done{background:#117d73}.trend-planned{background:#a9d5cf}.statistics-sessions a{display:flex;justify-content:space-between;gap:1rem;padding:1rem 0;border-bottom:1px solid #dbe3e8;color:inherit;text-decoration:none}.statistics-sessions a span:last-child{font-size:.85rem;color:#455e6d}.mobile-nav{overflow-x:auto}.mobile-nav a{flex-shrink:0}@media(max-width:800px){.statistics-grid{grid-template-columns:1fr}.statistics-sessions a{flex-direction:column}.training-metrics{gap:.75rem}.training-metrics strong{font-size:1.6rem}.mobile-nav{grid-template-columns:repeat(7,minmax(70px,1fr))}}

/* Private club uploads and athlete review. */
.club-question{padding:20px 0;border-top:1px solid #d3e0e5;min-width:0}.club-question-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.club-question-heading h3{margin:0;font-size:1.05rem;line-height:1.5;overflow-wrap:anywhere}.club-question-heading .badge{flex-shrink:0}.club-question-count{color:#0c7168;font-weight:700;font-size:.9rem;line-height:1.5}.club-answer,.club-resolution{padding:14px 16px;margin:14px 0;background:#edf6f5;border-radius:8px;overflow-wrap:anywhere}.club-resolution{background:#f5f2e7}.club-answer p,.club-resolution p{margin:4px 0}.club-answer-options{display:flex;flex-wrap:wrap;gap:10px}.club-answer-options button,.club-question>form button{min-height:44px;padding:8px 16px}.club-questions details>summary{cursor:pointer;min-height:44px;padding:12px 0}.club-questions .club-form{margin:14px 0}.club-question.is-resolved{opacity:.95}.club-question .eyebrow{font-size:.72rem}.club-distance .badge{font-size:.75rem;vertical-align:middle}@media(max-width:600px){.club-question-heading{flex-direction:column;gap:8px}.club-answer-options button{flex:1}.club-questions{padding:18px}}
.club-add{display:inline-flex;margin:12px 0;min-height:44px;align-items:center}.club-card{border-left:4px solid #117d73}.club-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;margin:24px 0}.club-list-item{display:grid;gap:12px;text-decoration:none;color:inherit;min-width:0}.club-list-item h2{font-size:1.2rem}.club-list-item .badge{width:fit-content}.club-form{display:grid;gap:18px;max-width:900px;margin:20px 0}.club-form label{display:grid;gap:8px;font-weight:650}.club-form input,.club-form select,.club-form textarea{width:100%;max-width:100%;min-width:0;padding:12px;border:1px solid #a5b6c0;border-radius:7px;background:white;font:inherit;font-weight:400;color:var(--ink)}.club-form input[type=file]{font-size:.95rem}.club-form textarea{resize:vertical;line-height:1.6}.club-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.club-form .muted{font-weight:400;line-height:1.6}.club-form button{justify-self:start;min-height:44px}.club-file{padding:18px;background:#eef7f5;border:1px dashed #50958b;border-radius:10px}.club-original{display:block;max-width:100%;max-height:700px;object-fit:contain;margin:15px auto;border-radius:8px}.club-review-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:24px;align-items:start}.club-review-grid .aside-card{margin-bottom:20px}.club-review-grid h3{margin:20px 0 10px}.club-review-grid li{margin:12px 0;line-height:1.6}.club-review-grid ul{padding-left:20px}.club-review-grid p{line-height:1.65}.club-prewrap,.club-history pre{white-space:pre-wrap;overflow-wrap:anywhere}.club-section-title{margin:0 0 14px}.club-distance{font-size:1.5rem;font-weight:700;margin-bottom:16px}.club-actions{display:flex;gap:12px;flex-wrap:wrap}.club-history{padding:12px 0}.club-history pre{font:inherit;margin-top:12px}.club-form button:disabled{opacity:.5;cursor:default}#club-message:empty{display:none}#club-message{padding:14px 0;font-weight:650;overflow-wrap:anywhere}@media(max-width:800px){.club-review-grid,.club-form-grid{grid-template-columns:1fr}.club-list{grid-template-columns:1fr}.club-original{max-height:450px}.club-actions{flex-direction:column;align-items:stretch}.club-actions button{width:100%}.heading>a.primary-action{margin-top:18px}}

.shared-camp-sessions{margin:0 0 1.6rem;padding:0 0 1rem;border-bottom:1px solid #dbe4e9}.shared-camp-sessions>h3{font-size:1.15rem}.guest-status{font-size:.8rem;color:#647987;margin:.8rem 0}.guest-shell .mobile-nav{grid-template-columns:repeat(2,1fr)}

.pool-option a.pool-workout-link{color:#0b2436;font-size:.875rem;font-weight:700;margin-top:4px;text-decoration:underline;text-underline-offset:3px}
