:root{color-scheme:dark;--bg:#191c1d;--panel:#202425;--line:#34393a;--text:#eceded;--muted:#a0a7a9;--blue:#45a9e3;--swim:#45ace4;--bike:#35c87a;--run:#f5a046}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--text);font:13px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,select{font:inherit;color:inherit;border:1px solid #485052;background:#292e30;border-radius:5px;padding:7px 12px;cursor:pointer}button:hover,select:hover{background:#353d40;border-color:#738087}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--blue);outline-offset:3px}button:disabled{opacity:.42;cursor:not-allowed}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:29px;letter-spacing:-.8px;font-weight:600}h2{font-size:17px;font-weight:550;letter-spacing:-.2px}h3{font-size:15px}p{color:var(--muted)}.rail{width:62px;position:fixed;inset:0 auto 0 0;background:#16191a;border-right:1px solid var(--line);z-index:20;display:flex;align-items:center;flex-direction:column;gap:14px}.rail a{height:42px;width:42px;display:grid;place-items:center;font-size:25px;color:#8c9598;border-radius:7px}.rail .brand{font-size:35px;font-weight:700;color:white;height:64px;position:relative}.brand span{color:var(--blue);font-size:23px;position:absolute;right:0;top:8px}.rail a.active{background:#26333a;color:#72bfea}.rail a:hover{background:#283033}.rail-bottom{margin-top:auto;margin-bottom:20px;font-size:11px;color:#879295;border:1px solid #41494c;padding:8px;border-radius:50%}.topbar{height:66px;margin-left:62px;border-bottom:1px solid var(--line);padding:0 30px;display:flex;align-items:center;justify-content:space-between;background:#1d2122}.topbar strong{letter-spacing:2px;font-size:12px}.topbar span{color:#abb2b4}.divider{margin:0 18px;color:#556063!important}.top-right{display:flex;gap:8px;align-items:center;font-size:11px}.local-dot{width:6px;height:6px;border-radius:50%;background:#6cba93}.avatar{display:grid;place-items:center;background:#46575d;color:#e2ebef!important;width:31px;height:31px;border-radius:50%;margin-left:15px;font-size:13px}main{margin-left:62px;padding:28px 30px 45px;max-width:2200px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.eyebrow{font-size:9px;letter-spacing:1.7px;color:#9da9ad;font-weight:650;margin-bottom:5px}.page-heading p{margin-top:5px}.quiet{background:transparent}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}.metric{border:1px solid var(--line);border-radius:6px;background:#202425;padding:17px 20px;position:relative;overflow:hidden}.metric-label{color:#a6afb2;font-size:11px}.metric-value{font-size:29px;letter-spacing:-1px;line-height:1.25;margin-top:7px;font-weight:550}.metric-value small{font-size:13px;letter-spacing:0;color:#9fa9ac;margin-left:5px;font-weight:400}.metric-foot{font-size:11px;color:#9aa5a8;margin-top:7px}.metric-bar{height:3px;position:absolute;bottom:0;left:0;right:0;display:flex}.metric-bar span{height:100%}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 304px;gap:22px}.primary,.sidebar{min-width:0}.panel{background:var(--panel);border:1px solid var(--line);border-radius:6px;overflow:hidden;margin-bottom:20px}.calendar-toolbar{padding:18px 16px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px}.date-nav{display:flex;align-items:center;gap:8px}.date-nav h2{margin-left:7px;font-size:18px}.icon-button{border:0;background:transparent;font-size:24px;line-height:1;padding:4px 7px}.date-nav #today{background:#224763;border-color:#315979;color:#a2d6f5;font-size:11px}.segmented{display:flex}.segmented button{border-radius:0;padding:5px 12px;font-size:11px;background:transparent}.segmented button:first-child{border-radius:4px 0 0 4px}.segmented button:last-child{border-radius:0 4px 4px 0;border-left:0}.segmented button.selected{background:#596467;color:white}.calendar-subbar{padding:0 18px 16px;display:flex;justify-content:space-between;align-items:center;font-size:10px}.sport-filters{display:flex;gap:15px}.sport-filters label{cursor:pointer;display:flex;align-items:center;gap:4px}.sport-filters input{width:11px;height:11px;margin:0;accent-color:currentColor}.swim{color:var(--swim)}.bike{color:var(--bike)}.run{color:var(--run)}.muted{color:var(--muted);font-size:11px}.planned-marker{font-size:16px;margin-left:3px}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr)) 105px}.day-heading{padding:9px 3px;text-align:center;background:#2b3031;border-top:1px solid var(--line);border-right:1px solid var(--line);font-size:10px;color:#d3d9da;font-weight:600}.day,.week-total{min-height:145px;border-top:1px solid #303637;border-right:1px solid #303637;padding:7px 4px 10px;background:#202425;min-width:0}.day.outside{background:#1b1f20}.outside .day-number{color:#697477}.day.is-today{background:#243039;box-shadow:inset 0 2px #51afe5}.day-number{color:#bbc5c8;font-size:10px;display:flex;align-items:center;justify-content:space-between;padding:0 3px 6px}.day-number strong{font-weight:500}.is-today .day-number strong{color:white;background:#2876a3;border-radius:50%;width:21px;height:21px;display:grid;place-items:center;margin-top:-3px;margin-bottom:-3px}.day-number span{font-size:8px;color:#7db6d8}.session{padding:6px 5px 5px 7px;width:100%;text-align:left;display:block;background:#1d2122;border:1px solid #3b4244;border-left:3px solid var(--sport-color);border-radius:3px;font-size:10px;line-height:1.35;margin-bottom:5px;overflow:hidden}.session:hover{background:#30383b;border-left-color:var(--sport-color)}.session-title{display:block;color:#dfe6e8;overflow-wrap:anywhere}.session-meta{display:block;color:#9ca9ad;margin-top:4px;font-size:9px}.session-icon{color:var(--sport-color);margin-right:3px}.rest-label{color:#748185;display:block;text-align:center;margin-top:24px;font-size:10px}.race-event{border-left:3px solid #d0b9ec;background:#34303e;padding:5px;font-size:10px;margin-bottom:6px}.week-total{background:#384245;cursor:pointer;padding:11px 10px;display:flex;flex-direction:column;align-items:flex-start;border-radius:0;border-bottom:0;border-left:0;color:#fff;font-size:10px;text-align:left}.week-total:hover{background:#465356}.week-total b{font-size:17px;font-weight:550;margin:1px 0 5px}.week-total .week-focus{font-size:9px;color:#c0cbd0;margin-bottom:5px;text-transform:capitalize}.total-sports{font-size:9px;line-height:1.8}.calendar-footer{padding:10px 15px;display:flex;justify-content:space-between;gap:12px;color:#829095;font-size:9px;border-top:1px solid var(--line)}.today-key{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--blue);margin-right:5px}.section-heading{display:flex;justify-content:space-between;align-items:center;padding:19px 20px 13px;gap:8px}.subtle-icon{font-size:24px;color:#7f9097}.sidebar .section-heading{padding:19px 18px 12px}.races #race-list{padding:0 18px}.race-row{padding:15px 0;border-bottom:1px solid var(--line)}.race-row:last-child{border:0;padding-bottom:20px}.race-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.race-name{font-size:13px;font-weight:550}.priority{border:1px solid #4e575a;border-radius:3px;padding:0 5px;font-size:9px;color:#b7c0c3}.priority-a{border-color:#756947;color:#e4c67c;background:#353126}.race-date{font-size:10px;color:#a0adb1;margin-top:5px}.countdown{color:#e6edef;font-size:21px;line-height:1.4;letter-spacing:-.5px;margin-top:6px}.countdown small{font-size:11px;color:#a1adb0;letter-spacing:0}.race-goal{font-size:10px;color:#8e9ca1;margin-top:3px}.thresholds{padding-bottom:17px}.badge{color:#a9b6bc;font-size:8px;border:1px solid #455155;border-radius:3px;padding:3px 5px;white-space:nowrap}.threshold-row{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid #303738}.threshold-name{font-size:11px}.threshold-value{font-size:20px;letter-spacing:-.5px}.threshold-value small{font-size:10px;color:#97a6ab;letter-spacing:0}.thresholds .source{padding:13px 18px}.source{font-size:10px;line-height:1.6;color:#8e9da3;overflow-wrap:anywhere}.thresholds .wide{width:calc(100% - 36px);margin:0 18px}.wide{width:100%;font-size:11px}.week-review{padding:0 18px 18px}.week-review .section-heading{padding:19px 0 16px}.field-label{display:block;font-size:10px;color:#a9b5b9;margin-bottom:6px}.week-review select{margin-bottom:12px}.week-review button.wide{margin-top:9px;padding:10px}.primary-button{background:#2874a3;border-color:#438cba;color:white}.primary-button:hover{background:#3587b8}.week-review .source{margin-top:12px}.mini-budget{display:flex;gap:14px;margin:9px 0 12px;font-size:11px}.week-summary-head{display:flex;justify-content:space-between;gap:5px;color:#d4dee2;font-size:11px}.job-status{font-size:10px;color:#a1b2b9;background:#1a2023;padding:10px;border-radius:4px;border:1px solid #35434a;margin-top:14px;overflow-wrap:anywhere}.job-status.failed{color:#f6b0a5;border-color:#7c4943}.text-button{background:none;border:0;color:#6ab4e3;font-size:11px;padding:9px 0 0}.sidebar-note{font-size:10px;line-height:1.8;padding:0 5px;color:#87969c}.outlook .section-heading select{font-size:10px}.chart-legend{display:flex;gap:15px;font-size:10px;padding:0 20px 6px;flex-wrap:wrap}.chart-legend .muted{font-size:9px;margin-left:auto}.chart{padding:14px 20px 0;overflow-x:auto}.bars{height:210px;display:flex;gap:7px;align-items:flex-end;border-bottom:1px solid #4a565c;background:repeating-linear-gradient(to top,transparent 0,transparent 39px,#30393d 40px,transparent 41px);min-width:500px;padding:0 4px}.chart-column{height:100%;flex:1;min-width:9px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}.volume-bar{width:100%;max-width:45px;background:none;padding:0;display:flex;flex-direction:column-reverse;border:0;border-radius:3px 3px 0 0;overflow:hidden;flex-shrink:0}.volume-bar:hover{filter:brightness(1.2)}.volume-bar span{display:block;width:100%;min-height:0}.bar-value{color:#a5b4bc;font-size:9px;margin-bottom:5px}.bar-labels{display:flex;gap:7px;min-width:500px;padding:7px 4px 0}.bar-labels span{flex:1;text-align:center;font-size:8px;color:#8a9ca4;min-width:9px}.chart-caption{font-size:10px;padding:13px 20px 18px;color:#96a7b0}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:11px;white-space:nowrap}th{font-weight:400;color:#8e9fa7;font-size:10px;padding:10px 16px;background:#242b2e}td{padding:13px 16px;border-top:1px solid #303a3e}tbody tr{cursor:pointer}tbody tr:hover{background:#29353b}.focus-pill{font-size:9px;padding:3px 7px;background:#2d3b41;border:1px solid #43565e;border-radius:3px;color:#b7cbd5;text-transform:capitalize}.recovery{color:#c2b0d9;background:#35303e;border-color:#50445d}.error{padding:14px;background:#402923;border:1px solid #885349;border-radius:5px;margin-bottom:20px;color:#ffc3af}.error[hidden]{display:none}dialog{width:min(760px,calc(100vw - 32px));max-height:85vh;background:#22292d;color:var(--text);border:1px solid #52616a;border-radius:10px;padding:24px;box-shadow:0 20px 90px #0008}dialog::backdrop{background:#060c10b8;backdrop-filter:blur(3px)}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.dialog-heading h2{font-size:23px}#detail-content p{margin:10px 0}pre{font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere;background:#172025;border:1px solid #3c4c55;border-radius:5px;padding:14px;max-height:350px;overflow:auto;color:#c2d2dc}.detail-stats{display:flex;gap:28px;padding:15px 0;border-top:1px solid #3b464d;border-bottom:1px solid #3b464d;margin-bottom:15px}.detail-stat span{display:block;color:#91a5b0;font-size:10px}.detail-stat strong{font-weight:500;font-size:20px}.session-list-row{padding:10px 0;border-bottom:1px solid #35434a;font-size:12px}.session-list-row small{display:block;color:#95a7b0}.step-list{padding-left:22px;color:#d0dde4;font-size:12px}.step-list li{margin:8px 0}details summary{cursor:pointer;color:#80b4d4;font-size:11px;margin-top:16px}@media(min-width:1700px){.workspace{grid-template-columns:minmax(0,1fr) 340px}.day,.week-total{min-height:170px}.session{font-size:11px;padding:8px}.calendar{grid-template-columns:repeat(7,minmax(0,1fr)) 125px}}@media(max-width:1200px){main{padding:24px 20px}.workspace{grid-template-columns:minmax(0,1fr) 280px;gap:16px}.calendar{min-width:760px}.calendar-scroll{overflow:auto}.metrics{gap:10px}.metric{padding:15px}.metric-value{font-size:25px}.calendar-toolbar{flex-wrap:wrap}.date-nav h2{font-size:16px}.page-heading h1{font-size:26px}}@media(max-width:950px){.workspace{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.sidebar .panel{margin:0}.sidebar-note{grid-column:1/-1}.metrics{grid-template-columns:repeat(2,1fr)}.week-review{grid-column:1/-1}.topbar{padding:0 20px}.calendar{min-width:850px}}@media(max-width:600px){.rail{width:46px}.rail a{width:36px}.topbar,main{margin-left:46px}.topbar{padding:0 12px}.topbar .divider,.topbar .divider+span,.top-right>span:not(.avatar){display:none}main{padding:20px 12px}.page-heading{align-items:flex-start;gap:10px}.page-heading>button{font-size:10px;padding:6px;max-width:90px}.page-heading h1{font-size:23px}.eyebrow{font-size:8px}.page-heading p{font-size:11px}.metric{padding:12px}.metric-value{font-size:24px}.metric-foot{font-size:9px}.sidebar{grid-template-columns:1fr}.sidebar-note,.week-review{grid-column:auto}.calendar-footer{display:block}.calendar-footer>span{display:block;margin:3px 0}.calendar-toolbar{padding:15px 10px}.date-nav{gap:4px}.date-nav h2{font-size:15px;margin-left:3px}.section-heading{padding:17px 14px}.chart-legend{padding:0 14px}.chart-legend .muted{margin:0}.upcoming .section-heading>.muted{display:none}}
