.bike-fit-section-label[data-astro-cid-sjmpttht]{font-family:JetBrains Mono,monospace;font-size:.62rem;font-weight:800;letter-spacing:1.5px;color:#666;margin:4px 0 12px;text-align:left}.bike-fit-grid[data-astro-cid-sjmpttht]{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.bike-fit-grid[data-astro-cid-sjmpttht] .modal-field-group[data-astro-cid-sjmpttht]{margin-bottom:16px}.bike-tyre-grid[data-astro-cid-sjmpttht]{display:grid;grid-template-columns:1.15fr .8fr 1.05fr;gap:0 10px}.bike-tyre-grid[data-astro-cid-sjmpttht] .modal-field-group[data-astro-cid-sjmpttht]{margin-bottom:16px;min-width:0}.bike-tyre-grid[data-astro-cid-sjmpttht] .modal-field-label[data-astro-cid-sjmpttht]{letter-spacing:.4px;font-size:.58rem}.bike-tyre-grid[data-astro-cid-sjmpttht] .gear-select[data-astro-cid-sjmpttht]{font-size:.9rem;padding-right:22px}.bike-tyre-grid[data-astro-cid-sjmpttht] .gear-select-chevron[data-astro-cid-sjmpttht]{bottom:8px;font-size:18px}@media(max-width:480px){.bike-fit-grid[data-astro-cid-sjmpttht]{grid-template-columns:1fr}}.race-modal-content{position:relative;padding:48px 24px 24px;min-height:460px}.race-modal-stage{flex:1;position:relative;width:100%;min-height:300px;display:flex;flex-direction:column}.transition-step-grid{display:flex;flex-direction:column;gap:20px;margin:8px 0 24px}.transition-step-row{display:flex;align-items:center;justify-content:center;gap:16px}.transition-step-label{font-family:JetBrains Mono,monospace;font-size:.85rem;font-weight:800;color:#888;letter-spacing:1px;min-width:28px}.time-dial-wrap--transition{flex:0 1 auto}.dash-widget-title{font-size:.65rem;color:#888;font-weight:800;font-family:JetBrains Mono,monospace;letter-spacing:1px;text-transform:uppercase}.dash-widget-value{font-size:1.5rem;color:#fff;font-weight:900;font-family:Manrope,sans-serif;line-height:1}.dash-widget-value-large{font-size:2rem;color:var(--active-color, #00ffc3);font-weight:900;font-family:Manrope,sans-serif;line-height:1}.dash-widget-subtext{font-size:.55rem;color:#888;font-family:JetBrains Mono,monospace;margin-top:2px}.dash-empty-state-text{color:#888;font-size:.85rem;font-family:Manrope,sans-serif;line-height:1.5;max-width:90%;text-align:center}.dash-icon-large{font-size:28px;margin-bottom:4px}.dash-flex-col-center{display:flex;flex-direction:column;align-items:center;gap:8px}.dash-divider-vert{width:1px;background:#ffffff0d;margin:0 8px}.hub-overlay{position:fixed;inset:0;background:#0b0d17f2;backdrop-filter:none;-webkit-backdrop-filter:none;z-index:999999;opacity:0;pointer-events:none;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto}.hub-overlay.is-open{opacity:1;pointer-events:auto;visibility:visible;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.hub-container{width:100%;max-width:var(--shell-wide);margin:auto;animation:wx-slide-up .4s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column;gap:var(--widget-gap, 24px);padding-bottom:60px}.hub-overlay.is-open .hub-container{transform:translateY(0)}.hub-header{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:var(--widget-gap, 24px)}.hub-title{font-size:clamp(28px,4vw,42px);color:#fff;margin:0;text-transform:uppercase;font-weight:900;letter-spacing:-1px}.hub-subtitle{font-family:JetBrains Mono,monospace;font-size:.75rem;color:#888;font-weight:800;letter-spacing:1px;display:block;margin-top:8px;text-transform:uppercase;transition:color .3s}.hub-container .icon-btn{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:50%;color:#aaa;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;width:44px;height:44px;outline:none}.hub-container .icon-btn:hover{color:#fff;background:#ffffff1a;border-color:#ffffff4d;transform:scale(1.05)}.hub-grid{display:grid;width:100%;column-gap:var(--widget-gap, 24px);row-gap:var(--widget-gap, 24px)}.hub-grid.grid-3-col{grid-template-columns:repeat(3,1fr)}.hub-grid.grid-4-col{grid-template-columns:repeat(4,1fr)}.hub-grid.grid-2-1-col{grid-template-columns:2fr 1fr}.hub-container .widget-card{display:flex;flex-direction:column;transition:border-color .3s;position:relative}.hub-container .widget-card:hover{border-color:#ffffff1a}.hub-container .widget-header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:var(--widget-gap, 24px);border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:16px}.hub-container .widget-title{font-size:.8rem;color:#888;font-weight:800;letter-spacing:2px;text-transform:uppercase;font-family:JetBrains Mono,monospace;display:flex;align-items:center;gap:8px}.hub-ghost-btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 24px;background:transparent;border:1px solid rgba(255,255,255,.2);color:#888;border-radius:8px;font-size:.75rem;font-weight:800;letter-spacing:1px;transition:all .2s;text-transform:uppercase;font-family:JetBrains Mono,monospace;white-space:nowrap;cursor:pointer;outline:none;text-decoration:none}.hub-ghost-btn:hover{border-color:#fff6;color:#fff;background:#ffffff0d}.hub-ghost-btn.is-active{background:var(--active-color);color:#000;border-color:var(--active-color)}.hub-container .inline-action-btn{background:transparent;border:1px solid rgba(255,255,255,.2);color:#888;text-decoration:none;border-radius:8px;font-size:.65rem;font-weight:800;letter-spacing:1px;transition:all .2s;text-transform:uppercase;padding:10px 16px;cursor:pointer;outline:none;text-align:center}.hub-container .plan-card,.hub-container .health-card{display:flex;flex-direction:column;justify-content:space-between}.health-card #inp-weight::-webkit-outer-spin-button,.health-card #inp-weight::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.health-card #inp-weight{-moz-appearance:textfield}.health-card .weight-arrow.hub-weight-step{background:transparent;border:none;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;min-width:48px;min-height:48px;padding:0;border-radius:12px;transition:color .15s ease,background .15s ease,transform .1s ease;touch-action:manipulation;-webkit-user-select:none;user-select:none}.health-card .weight-arrow.hub-weight-step:hover{color:#fff;background:#ffffff0f}.health-card .weight-arrow.hub-weight-step:active{transform:scale(.94);background:#ffffff1a}.hub-container .health-header{position:absolute;top:var(--widget-gap, 24px);right:var(--card-pad-x);font-size:.7rem;color:#888;font-weight:800;letter-spacing:2px;text-transform:uppercase;font-family:JetBrains Mono,monospace}.hub-container .health-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;margin:var(--widget-gap, 24px) 0}.hub-container .plan-hero{display:flex;flex-direction:column;gap:4px;margin-bottom:var(--widget-gap, 24px)}.hub-container .plan-hero-title{font-size:clamp(2rem,3vw,2.5rem);color:#fff;font-weight:900;line-height:1;font-family:Manrope,sans-serif;letter-spacing:-1px;text-transform:uppercase}.hub-container .plan-hero-subtitle{font-size:1.1rem;color:var(--active-color);font-weight:800;font-family:JetBrains Mono,monospace;text-transform:uppercase}.hub-container .plan-stats-grid{display:flex;gap:var(--widget-gap, 24px);align-items:center;padding-top:var(--widget-gap, 24px);margin-bottom:var(--widget-gap, 24px);border-top:1px solid rgba(255,255,255,.1)}.hub-container .plan-stat{display:flex;flex-direction:column;align-items:flex-start;gap:4px;flex:1}.hub-container .plan-stat span{font-size:.6rem;color:#888;font-family:JetBrains Mono,monospace;font-weight:800;letter-spacing:1px;text-transform:uppercase}.hub-container .plan-stat strong{font-size:1.25rem;color:#fff;font-family:JetBrains Mono,monospace;font-weight:900}.hub-container .discipline-header{display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:16px;margin-bottom:var(--widget-gap, 24px)}.hub-container .discipline-icon{font-size:28px}.hub-container .discipline-title{font-size:1.1rem;color:#fff;font-weight:900;letter-spacing:2px;font-family:JetBrains Mono,monospace}.swim-card .discipline-icon,.swim-card .discipline-title{color:var(--swim, #00d2ff)}.bike-card .discipline-icon,.bike-card .discipline-title{color:var(--bike, #00ffc3)}.run-card .discipline-icon,.run-card .discipline-title{color:var(--run, #FF5900)}.swim-card .inline-action-btn:hover{border-color:var(--swim);color:#fff;background:color-mix(in srgb,var(--swim) 15%,transparent);box-shadow:0 0 15px color-mix(in srgb,var(--swim) 20%,transparent)}.bike-card .inline-action-btn:hover{border-color:var(--bike);color:#fff;background:color-mix(in srgb,var(--bike) 15%,transparent);box-shadow:0 0 15px color-mix(in srgb,var(--bike) 20%,transparent)}.run-card .inline-action-btn:hover{border-color:var(--run);color:#fff;background:color-mix(in srgb,var(--run) 15%,transparent);box-shadow:0 0 15px color-mix(in srgb,var(--run) 20%,transparent)}.swim-card .editable-anchor:hover{color:var(--swim);border-color:var(--swim)}.bike-card .editable-anchor:hover{color:var(--bike);border-color:var(--bike)}.run-card .editable-anchor:hover{color:var(--run);border-color:var(--run)}.hub-container .metric-chunk{display:flex;flex-direction:column;gap:8px}.hub-container .chunk-label{font-size:.65rem;color:#555;font-family:JetBrains Mono,monospace;font-weight:800;letter-spacing:1px;text-transform:uppercase}.hub-container .chunk-val{font-size:1.25rem;color:#fff;font-weight:900;font-family:JetBrains Mono,monospace;transition:color .2s}.hub-container .btn-dual-row{display:flex;gap:8px;margin-top:auto;padding-top:var(--widget-gap, 24px)}.hub-container .editable-anchor{cursor:pointer;border-bottom:1px solid rgba(255,255,255,.3);padding-bottom:2px}.hub-container .locked-anchor{cursor:not-allowed}.hub-container .predictor-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:16px;margin-bottom:var(--widget-gap, 24px);flex-wrap:wrap;gap:16px}.hub-container .pred-mode-toggle{display:flex;gap:8px}.hub-container .predictor-tabs{display:flex;gap:8px;flex-wrap:wrap}.hub-container .predictor-result-grid{display:flex;justify-content:space-around;align-items:center;text-align:center;flex-wrap:wrap;gap:16px;margin-bottom:var(--widget-gap, 24px)}.hub-container .pred-stat{display:flex;flex-direction:column;gap:4px}.hub-container .pred-stat span{font-size:.65rem;color:#888;font-family:JetBrains Mono,monospace;font-weight:800;letter-spacing:1px;text-transform:uppercase}.hub-container .pred-stat strong{font-size:1.5rem;color:#fff;font-weight:900;font-family:Manrope,sans-serif}.hub-container .total-stat strong{font-size:2rem;color:var(--active-color)}.hub-container .pr-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}.hub-container .pr-label{font-size:.7rem;color:#fff;font-weight:800;text-transform:uppercase;font-family:JetBrains Mono,monospace}.hub-container .pr-time{font-size:1.1rem;color:var(--bike, #00ffc3);font-weight:400;font-family:JetBrains Mono,monospace}.hub-container .pr-empty{font-size:.8rem;color:#555;font-family:JetBrains Mono,monospace;text-align:center;display:block;margin:auto 0}.hub-container .matrix-dna-row{display:flex;justify-content:space-around;align-items:center;text-align:center;font-family:JetBrains Mono,monospace;font-size:1.2rem;font-weight:900;color:#fff;padding-bottom:var(--widget-gap, 24px);border-bottom:1px solid rgba(255,255,255,.05)}.hub-container .tool-grid-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:var(--widget-gap, 24px);background:#ffffff05;border:1px solid rgba(255,255,255,.05);border-radius:12px;text-decoration:none;color:#aaa;transition:all .2s;font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:800;letter-spacing:1px;text-transform:uppercase;text-align:center}.hub-container .tool-grid-btn:hover{background:#ffffff0d;border-color:#fff3;color:#fff;transform:translateY(-2px)}.hub-container .tool-grid-btn .material-symbols-outlined{font-size:32px;color:#fff;transition:color .2s}.hub-container .tool-grid-btn:hover .material-symbols-outlined{color:var(--active-color)}.hub-modal-content{background:#12141d;border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:var(--widget-gap, 24px) var(--card-pad-x);width:100%;max-width:450px;box-shadow:0 20px 40px #00000080;overflow:hidden;position:relative}.hub-modal-content .card-wrap{animation:slideInRight .3s forwards}.hub-modal-content .card-wrap.exit{animation:slideOutLeft .3s forwards;position:absolute;top:var(--card-pad-x);left:var(--card-pad-x);width:calc(100% - 2 * var(--card-pad-x))}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideOutLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-20px)}}.hub-modal-content .hero-prompt{font-size:1.5rem;font-family:Manrope,sans-serif;font-weight:900;color:#fff;text-align:center;margin:0 0 var(--widget-gap, 24px) 0;letter-spacing:-.5px}.hub-modal-content .preset-grid{display:flex;flex-direction:column;gap:12px}.hub-modal-content .preset-row{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#ffffff05;border:1px solid rgba(255,255,255,.05);border-radius:8px;cursor:pointer;transition:all .2s}.hub-modal-content .preset-row:hover{background:#ffffff0d;border-color:var(--active-color)}.hub-modal-content .preset-name{font-family:JetBrains Mono,monospace;font-size:.9rem;font-weight:800;color:#fff}.hub-modal-content .preset-meta{font-family:JetBrains Mono,monospace;font-size:.65rem;color:#888}.hub-modal-content .sleek-input{width:100%;background:transparent;border:none;border-bottom:2px solid rgba(255,255,255,.1);color:#fff;font-size:1.5rem;font-weight:900;text-align:center;padding:12px 0;outline:none;font-family:JetBrains Mono,monospace;border-radius:0}.hub-modal-content .sleek-input:focus{border-color:var(--active-color)}.hub-modal-content .cockpit-row{display:flex;flex-direction:column;gap:var(--widget-gap, 24px);margin-bottom:var(--widget-gap, 24px)}.hub-modal-content .stepper-wrap{display:flex;align-items:center;justify-content:space-between;border:1px solid;border-radius:12px;padding:12px;background:#0003}.hub-modal-content .stepper-btn{background:transparent;border:none;color:#fff;font-size:1.5rem;font-weight:900;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.hub-modal-content .stepper-val{font-size:2rem;font-weight:900;font-family:JetBrains Mono,monospace;color:#fff}.hub-modal-content .stepper-unit{font-size:.8rem;color:#888}.hub-modal-content .time-dial-wrap{display:flex;justify-content:center;align-items:center;gap:8px;border:1px solid;border-radius:12px;padding:16px;background:#0003}.hub-modal-content .time-segment{display:flex;flex-direction:column;align-items:center}.hub-modal-content .time-arrow{background:transparent;border:none;color:#888;font-size:.8rem;cursor:pointer;padding:4px}.hub-modal-content .time-arrow:hover{color:#fff}.hub-modal-content .time-input{background:transparent;border:none;color:#fff;font-size:2.5rem;font-weight:900;font-family:JetBrains Mono,monospace;width:60px;text-align:center;appearance:none;outline:none;margin:0;padding:0}.hub-modal-content .time-input::-webkit-outer-spin-button,.time-modal-content .time-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.hub-modal-content .time-colon{font-size:2rem;font-weight:900;color:#555;font-family:JetBrains Mono,monospace;margin-top:16px}.hub-modal-label{font-size:.65rem;color:#888;font-family:JetBrains Mono,monospace;letter-spacing:1px;text-transform:uppercase;display:block;margin-bottom:8px}.hub-modal-input,.hub-modal-select{width:100%;background:transparent;border:none;border-bottom:1px solid rgba(255,255,255,.2);color:#fff;padding:12px 0;font-family:JetBrains Mono,monospace;font-size:1rem;outline:none}.hub-modal-select{appearance:none}.hub-modal-select option{background:#12141d;color:#fff}@media(max-width:850px){.hub-page.master-container .hub-container .widget-card{padding:var(--card-pad-y) var(--page-pad-x) var(--card-pad-b)!important;width:100%!important;box-sizing:border-box}.hub-page.master-container .hub-grid{column-gap:var(--widget-gap);row-gap:var(--widget-gap)}.hub-container .widget-card{padding:var(--card-pad-y) var(--page-pad-x) var(--card-pad-b)}.hub-grid.grid-3-col,.hub-grid.grid-4-col,.hub-grid.grid-2-1-col{grid-template-columns:1fr}.hub-container .plan-hero-title{font-size:2rem}.hub-container .total-stat strong{font-size:1.5rem}.hub-container .pred-stat strong{font-size:1.25rem}.hub-container .health-header{position:relative;top:0;right:0;text-align:left;width:100%;margin-bottom:16px}.hub-container .plan-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:16px 0 0}.hub-container .predictor-header{flex-direction:column;gap:16px;align-items:stretch}.hub-container .predictor-header-left{width:100%}.hub-container .pred-mode-toggle{width:auto;display:flex;gap:8px;max-width:100%}.hub-container .pred-mode-toggle .hub-route-btn,.hub-container .pred-mode-toggle .pred-tab{width:auto!important}.hub-container .predictor-tabs{display:grid;grid-template-columns:1fr 1fr;width:100%}.hub-container .predictor-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;text-align:left}.hub-container .btn-dual-row{flex-direction:column;gap:12px}.hub-container .btn-dual-row .inline-action-btn{width:100%}.hub-page .widget-header{flex-wrap:wrap;gap:12px}.hub-page .hub-ghost-btn{margin-left:auto}}html:has(.hub-page) .minimal-footer,html:has(.hub-container) .minimal-footer{position:relative!important;bottom:auto!important;margin-top:64px!important;padding-bottom:calc(var(--app-bottom-bar-clearance) + var(--app-vv-bottom, 0px))!important;z-index:10!important}.pred-tab{background:transparent!important;border:1px solid rgba(255,255,255,.1)!important;color:#888!important;transition:all .2s ease!important}.pred-tab:hover:not(.is-active){background:#ffffff0d!important;color:#fff!important;border-color:#ffffff4d!important}.pred-tab.is-active{background:#00ffc30d!important;border-color:var(--active-color, #00ffc3)!important;color:var(--active-color, #00ffc3)!important;box-shadow:0 0 10px #00ffc31a!important}.widget-action-header{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:#888;transition:all .2s ease;cursor:pointer;padding:4px 8px 4px 0;border-radius:4px}.widget-action-header .widget-title{color:inherit;margin:0;border:none;padding:0;transition:color .2s ease}.widget-action-header .action-icon{font-size:18px;transition:transform .2s ease,color .2s ease}.widget-action-header:hover{color:var(--hover-color, #fff)}.widget-action-header:hover .action-icon{transform:scale(1.1)}.inline-pb-badge{display:inline-block;background:#f59e0b;color:#000;font-family:JetBrains Mono,monospace;font-size:.65rem;padding:2px 6px;border-radius:4px;font-weight:900;vertical-align:top;margin-left:4px;line-height:1;letter-spacing:.5px}.hub-pb-list{display:flex;flex-direction:column;height:100%;justify-content:flex-start;padding-top:8px}.hub-pb-row{display:flex;justify-content:space-between;align-items:baseline;width:calc(100% + 12px);margin:0 0 12px -6px;padding:4px 6px;border:none;border-radius:8px;background:transparent;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:background .15s ease}.hub-pb-row:hover,.hub-pb-row:focus-visible{background:#ffffff0d;outline:none}.hub-pb-row:hover .hub-pb-row__time,.hub-pb-row:focus-visible .hub-pb-row__time{color:var(--active-color, #00ffc3)}.hub-pb-row--empty{cursor:default;pointer-events:none}.hub-pb-row--empty .hub-pb-row__log{pointer-events:auto}.hub-pb-row__label{font-size:.75rem;color:#888;font-weight:800;font-family:JetBrains Mono,monospace}.hub-pb-row__label--empty{color:#555}.hub-pb-row__time{font-size:1.1rem;color:#fff;font-weight:900;font-family:JetBrains Mono,monospace;transition:color .15s ease}.hub-pb-row__log{font-size:.75rem;color:var(--active-color);font-weight:800;font-family:JetBrains Mono,monospace;text-decoration:none;display:flex;align-items:center;gap:4px}.hub-pb-row__log .material-symbols-outlined{font-size:14px}.hub-page .hub-container{width:100%;max-width:none;height:auto;max-height:none;background:transparent;border:none;box-shadow:none;padding:0}.hub-page .hub-page-intro{display:flex;flex-direction:column;gap:10px;width:100%}.hub-page .hub-header{margin-bottom:0}.hub-page .hub-title{font-size:2rem}.hub-page .hub-subtitle{font-size:.72rem;color:#888;font-weight:700;line-height:1.45;max-width:none;width:100%;margin-top:0}.hub-page .hub-subtitle.is-hidden{display:none}.hub-empty-hint{color:#666;font-size:.75rem;font-family:Manrope,sans-serif;line-height:1.45;text-align:center;margin:8px 0 0;max-width:92%}.hub-empty-state{text-align:center;color:#666;font-size:.85rem;margin:auto;display:flex;flex-direction:column;align-items:center;gap:10px;font-family:Manrope,sans-serif;line-height:1.45;max-width:92%}.hub-empty-state__action{font-size:18px;color:var(--active-color);cursor:pointer}.hub-injury-status-link{text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;transition:transform .2s ease}.hub-injury-status-link:hover{transform:scale(1.05)}.hub-injury-subtext{font-size:.6rem;color:#555;font-family:Manrope,sans-serif;font-weight:500;line-height:1.35;text-align:center;text-transform:none;letter-spacing:0;max-width:11rem}.hub-page .hub-injury-banner{display:none;align-items:center;gap:8px;background:#f59e0b14;border:1px solid rgba(245,158,11,.3);color:#f59e0b;font-family:JetBrains Mono,monospace;font-size:.72rem;font-weight:800;letter-spacing:1px;padding:10px 16px;border-radius:8px;width:100%;box-sizing:border-box}.hub-page .hub-injury-banner .material-symbols-outlined{font-size:16px}.hub-page .hub-grid{display:grid;width:100%;column-gap:var(--widget-gap);row-gap:var(--widget-gap)}.hub-page .hub-grid.grid-3-col{grid-template-columns:repeat(3,1fr)}.hub-page .hub-grid.grid-4-col,.hub-page .hub-plan-pb-row{grid-template-columns:repeat(4,1fr)}.hub-page .hub-grid--spaced{margin-top:var(--widget-gap);width:100%;clear:both}.hub-page .widget-card{display:flex;flex-direction:column;align-items:stretch;text-align:left}.hub-page .hub-container .hub-race-course-card[hidden],.hub-page .hub-container .hub-race-course-card.is-hidden,.hub-page .hub-container .hub-operate-pressure-card[hidden],.hub-page .hub-container .hub-operate-pressure-card.is-hidden,.hub-page .hub-race-course-card[hidden],.hub-page .hub-race-course-card.is-hidden,.hub-page .hub-operate-pressure-card[hidden],.hub-page .hub-operate-pressure-card.is-hidden{display:none!important}.hub-page .plan-card,.hub-page .race-profile-card,.hub-page .pb-card{grid-column:span 2}.hub-page .predictor-card{grid-column:span 2;width:100%}.hub-page .race-course-card,.hub-page .hub-operate-pressure-card,.hub-page .nutrition-card{grid-column:span 2}.hub-page .nutrition-card{container-type:inline-size;container-name:nutrition}.hub-page .hub-card-body{flex:1;display:flex;flex-direction:column}.hub-page .hub-card-body--center{justify-content:center}.hub-page .hub-card-body--garage{gap:12px}.hub-page .hub-card-header{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.05)}.hub-page .hub-card-header.widget-section-header{margin-bottom:16px}.hub-widget-header-link{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:inherit;transition:color .2s ease;min-height:28px}.hub-widget-header-link:hover{color:var(--hover-color, #fff)}.hub-widget-header-link:hover .hub-link-cue{opacity:1}.hub-widget-header-link:hover .hub-widget-header-icon{transform:scale(1.05)}.hub-widget-header-static{display:inline-flex;align-items:center;gap:8px;min-height:28px}.hub-widget-header-static .data-tag,.hub-widget-header-link .data-tag{margin-bottom:0;line-height:1}.hub-widget-header-icon{font-size:18px;flex-shrink:0;line-height:1;transition:transform .2s ease}.hub-link-cue{font-size:14px;opacity:.4;margin-left:4px;line-height:1;transition:opacity .2s ease}.hub-page .hub-card-header .inline-action-btn{width:auto;height:24px;padding:0 8px;border-radius:4px;font-size:.55rem;white-space:nowrap}.hub-plan-current-week{margin-top:8px;padding-top:18px;border-top:1px solid rgba(255,255,255,.1)}.hub-plan-week-headline{font-family:JetBrains Mono,monospace;font-size:.75rem;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#6b7280;margin-bottom:10px}.hub-plan-current-week .hub-plan-week-headline{margin-bottom:14px}.hub-plan-current-week-body{display:grid;grid-template-columns:1fr 1fr;gap:18px 28px}.hub-plan-week-line{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-family:Manrope,sans-serif;font-size:.98rem;font-weight:600;color:#d1d5db;line-height:1.35;min-width:0}.hub-plan-week-label{flex:0 0 auto;font-family:JetBrains Mono,monospace;font-size:.72rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#777}.hub-plan-week-value{flex:0 1 auto;min-width:0;font-family:JetBrains Mono,monospace}.hub-plan-week-focus .hub-plan-week-value{color:#fff;font-weight:700}.hub-plan-week-load .hub-plan-week-label{display:inline-flex;align-items:center;gap:4px}.hub-plan-load-link{display:inline-flex;align-items:center;color:#6b7280;text-decoration:none;transition:color .2s ease;line-height:1}.hub-plan-load-link:hover{color:var(--hover-color, #fff)}.hub-plan-load-link:hover .hub-link-cue{opacity:1}.hub-plan-load-link .hub-link-cue{font-size:12px;margin-left:0}.hub-plan-load-word{text-transform:uppercase;letter-spacing:.04em;font-weight:800}.hub-plan-load-word--recovering{color:#94a3b8}.hub-plan-load-word--building{color:var(--bike, #00ffc3)}.hub-plan-load-word--working_hard{color:#f59e0b}.hub-plan-load-word--overdoing{color:var(--run, #ff5900)}.hub-plan-load-icon{font-size:16px;line-height:1;flex-shrink:0;color:var(--bike, #00ffc3);font-variation-settings:"FILL" 1,"wght" 500,"GRAD" 0,"opsz" 20}.hub-plan-block-started{font-family:JetBrains Mono,monospace;font-size:.65rem;color:#888;font-weight:800;text-transform:uppercase;margin:0;white-space:nowrap}.hub-plan-block-started span{color:#fff}.hub-nut-body{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:12px 8px;width:100%;margin:0 0 8px}.hub-nut-body:has(.hub-nut-pack){grid-template-columns:repeat(4,minmax(0,1fr))}.hub-nut-col{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;min-width:0}.hub-nut-col:not(:last-child){border-right:1px solid rgba(255,255,255,.05);padding-right:8px}.hub-nut-pack{gap:12px;justify-content:center}.hub-nut-pack-item{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:0}.hub-nut-pack-val{font-family:JetBrains Mono,monospace;display:inline-flex;align-items:baseline;line-height:1}.hub-nut-pack-val--with-icon{align-items:center;gap:4px}.hub-nut-pack-icon{font-size:1.15em;line-height:1;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.hub-nut-pack-unit{font-size:.65rem;color:#666;margin-left:4px;font-weight:800}@container nutrition (max-width: 520px){.hub-nut-body,.hub-nut-body:has(.hub-nut-pack){grid-template-columns:repeat(2,minmax(0,1fr))}.hub-nut-col:nth-child(2n){border-right:none;padding-right:0}.hub-nut-col:nth-child(odd):not(:last-child){border-right:1px solid rgba(255,255,255,.05);padding-right:8px}}@media(max-width:850px){.hub-nut-body,.hub-nut-body:has(.hub-nut-pack){grid-template-columns:repeat(2,minmax(0,1fr))}.hub-nut-col:nth-child(2n){border-right:none;padding-right:0}.hub-nut-col:nth-child(odd):not(:last-child){border-right:1px solid rgba(255,255,255,.05);padding-right:8px}}.hub-nut-caption{margin:0 0 12px;font-size:.6rem;color:#666;font-family:JetBrains Mono,monospace;text-align:center;letter-spacing:.02em}.hub-page .predictor-card .predictor-body,.hub-page #hub-predictor-content{flex:1;display:flex;flex-direction:column;width:100%;min-height:0}.hub-page .hub-predictor-splits{display:flex;flex-direction:column;gap:0;margin-top:0;flex:1}.hub-page .hub-predictor-split{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.06)}.hub-page .hub-predictor-split:has(+.hub-predictor-split--total),.hub-page .hub-predictor-split--total{border-bottom:none}.hub-page .hub-predictor-split--total{margin-top:4px;padding-top:14px;border-top:1px solid rgba(255,255,255,.1)}.hub-page .hub-predictor-split-main{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.hub-page .hub-predictor-split-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}.hub-page .hub-predictor-split .dash-widget-title{font-size:.8rem;color:#aaa;letter-spacing:1.5px}.hub-page .hub-predictor-split-pace{font-size:.75rem;font-family:JetBrains Mono,monospace;font-weight:800}.hub-page .hub-predictor-split .dash-widget-value,.hub-page .hub-predictor-split .dash-widget-value-large{text-align:right}.hub-page .hub-predictor-split--total .dash-widget-value-large{color:var(--active-color, #00ffc3)}@media(min-width:851px){.hub-page .hub-predictor-splits{display:grid;grid-template-columns:1fr 1fr;column-gap:28px;row-gap:0}.hub-page .hub-predictor-split{border-bottom:1px solid rgba(255,255,255,.06)}.hub-page .hub-predictor-split:nth-child(1),.hub-page .hub-predictor-split:nth-child(2){border-bottom:1px solid rgba(255,255,255,.06)}.hub-page .hub-predictor-split--total{margin-top:0;padding-top:10px;border-top:none;border-bottom:none}.hub-page .hub-predictor-split:nth-child(3){border-bottom:none;margin-top:0;padding-top:10px;border-top:1px solid rgba(255,255,255,.1)}.hub-page .hub-predictor-split--total{border-top:1px solid rgba(255,255,255,.1)}}.hub-page .hub-race-course-filled{display:flex;flex-direction:column;gap:14px;width:100%;justify-content:center;flex:1}.hub-page .hub-race-course-name{font-family:Manrope,sans-serif;font-size:1.15rem;font-weight:900;color:#fff;line-height:1.15;letter-spacing:-.3px}.hub-page .hub-race-course-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.hub-page .hub-race-course-stat{display:flex;flex-direction:column;gap:4px;min-width:0}.hub-page .hub-race-course-stat .dash-widget-title{font-size:.62rem}.hub-page .hub-race-course-stat-val{font-family:JetBrains Mono,monospace;font-size:.95rem;font-weight:800;color:#fff;line-height:1.2}.hub-page .hub-race-course-stack{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:18px;width:100%;flex:1}.hub-page .hub-race-course-pressure{display:flex;flex-direction:column;gap:14px;width:100%;padding-top:16px;border-top:1px solid rgba(255,255,255,.06)}.hub-page .hub-race-course-pressure-head{display:flex;align-items:center}.hub-page .hub-race-course-pressure-title{min-height:0;gap:5px}.hub-page .hub-race-course-pressure-title .dash-widget-title{margin-bottom:0;font-size:.72rem;letter-spacing:1.2px;color:#999}.hub-page .hub-race-course-pressure-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px 20px;align-items:end;width:100%}.hub-page .hub-operate-pressure-card #hub-pressure-content,.hub-page #hub-pressure-card #hub-pressure-content{width:100%;min-height:4.5rem;gap:16px}.hub-page .hub-operate-pressure-card #hub-pressure-content>.hub-race-course-pressure-body,.hub-page #hub-pressure-card #hub-pressure-content>.hub-race-course-pressure-body{display:flex;flex-direction:column;align-items:stretch;gap:16px;flex:1;width:100%}.hub-page .hub-operate-pressure-card .hub-race-course-pressure-vals,.hub-page #hub-pressure-card .hub-race-course-pressure-vals,.hub-page .hub-operate-pressure-card .hub-race-course-pressure-meta,.hub-page #hub-pressure-card .hub-race-course-pressure-meta{width:100%}.hub-page .hub-operate-pressure-card .hub-operate-pressure-cta,.hub-page #hub-pressure-card .hub-operate-pressure-cta,.hub-page .nutrition-card .hub-nut-full-strategy,.hub-page #hub-nutrition-card .hub-nut-full-strategy{margin-top:auto;align-self:stretch;width:100%;box-sizing:border-box;padding:0 24px;font-size:.6rem;text-align:center;display:inline-flex;align-items:center;justify-content:center}.hub-page .hub-operate-pressure-card .hub-operate-pressure-cta,.hub-page #hub-pressure-card .hub-operate-pressure-cta{border-color:var(--swim, #00d2ff);color:var(--swim, #00d2ff)}.hub-page .nutrition-card .hub-nut-full-strategy,.hub-page #hub-nutrition-card .hub-nut-full-strategy{border-color:#10b981;color:#10b981}.hub-page .hub-operate-pressure-card .hub-race-course-pressure-num,.hub-page #hub-pressure-card .hub-race-course-pressure-num{font-family:JetBrains Mono,monospace;font-size:2.5rem;font-weight:900;color:#fff;line-height:1}.hub-page .hub-operate-pressure-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;width:100%;gap:8px;text-align:center}.hub-page .hub-operate-pressure-empty-icon{font-size:32px;color:#555;margin-top:4px}.hub-page .hub-race-course-pressure-meta{display:flex;flex-direction:column;gap:6px;min-width:0}.hub-page .hub-race-course-pressure-meta-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;font-family:JetBrains Mono,monospace;line-height:1.35}.hub-page .hub-race-course-pressure-meta-label{font-size:.62rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#666}.hub-page .hub-race-course-pressure-meta-value{font-size:.72rem;font-weight:800;letter-spacing:.04em;color:#aaa}.hub-page .hub-race-course-pressure-vals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-width:0}.hub-page .hub-race-course-pressure-val{display:flex;flex-direction:column;gap:6px;min-width:0}.hub-page .hub-race-course-pressure-num{font-family:JetBrains Mono,monospace;font-size:1.7rem;font-weight:900;color:#fff;line-height:1}.hub-page .hub-race-course-pressure-label{font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#888}.hub-page .hub-race-course-pressure--empty{align-items:flex-start}.hub-page .hub-race-course-pressure-hint{font-family:Manrope,sans-serif;font-size:.8rem;color:#888;line-height:1.45}.hub-page .hub-race-course-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.hub-page .hub-race-course-unlink{background:none;border:none;padding:0;margin:0;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.6rem;font-weight:800;letter-spacing:.04em;color:#666;text-transform:uppercase}.hub-page .hub-race-course-unlink:hover{color:#fff}.hub-page .hub-predictor-header{margin-bottom:16px;display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:16px;flex-wrap:wrap}.hub-page .hub-predictor-header-left{display:flex;align-items:center;gap:16px;flex-wrap:wrap;min-width:0}.hub-page .pred-mode-toggle{background:transparent;border-radius:0;padding:0;display:flex;align-items:center;gap:8px}.hub-page .pred-mode-toggle .pred-tab{width:auto;min-width:0;height:28px;padding:0 14px;border-radius:999px;font-size:.55rem;font-weight:800;letter-spacing:.5px;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.hub-page #predictor-selectors{display:flex;gap:12px;align-items:center}.hub-page .hub-predictor-selector{display:flex;align-items:center;background:#0006;border:1px solid rgba(255,255,255,.1);border-radius:999px;height:28px}.hub-page .hub-predictor-selector button{background:transparent;border:none;color:#888;cursor:pointer;padding:0 8px;display:flex;align-items:center;transition:color .2s}.hub-page .hub-predictor-selector button:hover{color:#fff}.hub-page .hub-predictor-selector button .material-symbols-outlined{font-size:16px}.hub-page .hub-predictor-selector-label{font-family:JetBrains Mono,monospace;font-size:.65rem;font-weight:800;color:#fff;width:70px;text-align:center;white-space:nowrap}.hub-widget-header-link--button{background:transparent;border:none;padding:0;cursor:pointer;font:inherit}.hub-page .hub-section-header{flex-direction:row!important;align-items:center!important;justify-content:space-between;margin-bottom:16px;padding-bottom:0;border:none;flex-wrap:nowrap}.hub-page .hub-section-header .hub-ghost-btn{padding:4px 12px;font-size:.6rem;margin:0}@media(max-width:1024px){.hub-page .hub-plan-pb-row{grid-template-columns:repeat(2,1fr)!important}.hub-page .plan-card,.hub-page .predictor-card,.hub-page .race-course-card,.hub-page .hub-operate-pressure-card,.hub-page .nutrition-card{grid-column:span 1!important}}@media(max-width:850px){.hub-page .hub-grid.grid-3-col,.hub-page .hub-grid.grid-4-col{grid-template-columns:1fr!important}.hub-page .plan-card,.hub-page .predictor-card,.hub-page .race-course-card,.hub-page .hub-operate-pressure-card,.hub-page .nutrition-card,.hub-page .race-profile-card,.hub-page .pb-card{grid-column:span 1!important}.hub-page .hub-plan-current-week-body{grid-template-columns:1fr 1fr;gap:14px 16px}.hub-page .hub-plan-pb-row{display:flex!important;flex-direction:column!important}.hub-page .plan-card{order:1}.hub-page .predictor-card{order:2}.hub-page .race-course-card,.hub-page .hub-operate-pressure-card{order:3}.hub-page .nutrition-card{order:4}.hub-page .race-profile-card{order:5}.hub-page .pb-card{order:6}.hub-page .hub-race-course-stats{grid-template-columns:1fr 1fr}.hub-page .maintenance-row{display:flex!important;flex-direction:column!important}.hub-page .health-card{order:1}.hub-page .bike-garage-card{order:2}.hub-page .shoe-rack-card{order:3}.hub-page .hub-header{margin-bottom:0!important}.hub-page .hub-title{font-size:1.5rem!important}.hub-page .hub-predictor-header{flex-direction:column!important;align-items:stretch!important;gap:16px!important;height:auto!important;flex-wrap:wrap!important;overflow-x:visible!important}.hub-page .hub-predictor-header-left{width:100%;gap:12px}.hub-page .pred-mode-toggle{flex:1 1 auto;min-width:0}.hub-page .pred-mode-toggle .pred-tab{flex:1 1 auto}.hub-page #predictor-selectors{width:auto;flex:0 0 auto;display:flex;flex-wrap:nowrap;justify-content:flex-start;gap:12px;margin-top:0}.hub-page #predictor-selectors>div{flex:0 0 auto;min-width:0;justify-content:space-between}.hub-page .hub-plan-stats.plan-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.hub-page .hub-plan-card-header.widget-section-header{align-items:flex-start}.hub-page .hub-plan-block-started-mount{flex:1 1 100%;order:3;margin-left:0;text-align:left}.hub-page .hub-plan-switcher-mount{order:2}}@media(max-width:319px){.hub-page .hub-plan-current-week-body{grid-template-columns:1fr;gap:14px}}.hub-page .hub-plan-card-header.widget-section-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap}.hub-page .hub-plan-card-header .widget-header-primary{width:auto;flex:0 1 auto;order:1}.hub-plan-block-started-mount{flex:0 1 auto;order:2;margin-left:auto;min-width:0}.hub-plan-block-started-mount:empty{display:none}.hub-plan-switcher-mount{flex:1 1 160px;min-width:0;max-width:280px;order:3}.hub-plan-switcher{display:flex;flex-direction:column;align-items:flex-end;gap:4px;width:100%}.hub-plan-switcher-label{font-size:.5rem;color:#555;font-family:JetBrains Mono,monospace;font-weight:800;letter-spacing:1px;text-transform:uppercase}.hub-plan-switcher-select{width:100%;background:#111;color:#fff;border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:8px 10px;font-family:JetBrains Mono,monospace;font-size:.62rem;cursor:pointer}.hub-plan-bike-course .course-cta-row,.hub-page .hub-race-course-card .course-cta-row,.hub-page .predictor-card .course-cta-row,.hub-page .hub-predictor-course-cta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.hub-page .hub-predictor-course-cta{margin-top:auto}.hub-plan-bike-course .course-cta-or,.hub-page .hub-race-course-card .course-cta-or,.hub-page .predictor-card .course-cta-or{color:#666;font-family:JetBrains Mono,monospace;font-size:.62rem;font-weight:800;letter-spacing:1px;text-transform:uppercase}.hub-plan-bike-course .course-cta-or[hidden],.hub-page .hub-race-course-card .course-cta-or[hidden],.hub-page .predictor-card .course-cta-or[hidden]{display:none}.hub-plan-bike-course .course-dropzone,.hub-plan-bike-course .course-library-btn,.hub-page .hub-race-course-card .course-dropzone,.hub-page .hub-race-course-card .course-library-btn,.hub-page .predictor-card .course-dropzone,.hub-page .predictor-card .course-library-btn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:none;border-radius:8px;padding:6px 8px;font-family:JetBrains Mono,monospace;font-size:.62rem;font-weight:800;letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:all .2s}.hub-plan-bike-course .course-dropzone,.hub-page .hub-race-course-card .course-dropzone,.hub-page .predictor-card .course-dropzone{color:var(--bike, #00ffc3)}.hub-plan-bike-course .course-dropzone:hover,.hub-page .hub-race-course-card .course-dropzone:hover,.hub-page .predictor-card .course-dropzone:hover{background:#00ffc31f}.hub-plan-bike-course .course-dropzone .material-symbols-outlined,.hub-page .hub-race-course-card .course-dropzone .material-symbols-outlined,.hub-page .predictor-card .course-dropzone .material-symbols-outlined{font-size:18px}.hub-plan-bike-course .course-library-btn,.hub-page .hub-race-course-card .course-library-btn,.hub-page .predictor-card .course-library-btn{color:var(--swim, #00d2ff)}.hub-plan-bike-course .course-library-btn:hover,.hub-page .hub-race-course-card .course-library-btn:hover,.hub-page .predictor-card .course-library-btn:hover{background:#00d2ff1f}.hub-plan-bike-course .course-library-btn .material-symbols-outlined,.hub-page .hub-race-course-card .course-library-btn .material-symbols-outlined,.hub-page .predictor-card .course-library-btn .material-symbols-outlined{font-size:18px}.hub-plan-bike-course .course-library-btn[hidden],.hub-page .hub-race-course-card .course-library-btn[hidden],.hub-page .predictor-card .course-library-btn[hidden],.hub-page .predictor-card .hub-plan-course-library-opt[hidden]{display:none}.hub-plan-bike-course-oneliner{font-size:.62rem;color:#666;font-family:JetBrains Mono,monospace;font-weight:800;letter-spacing:.04em}.hub-plan-bike-course-linked{font-size:.62rem;color:#666;font-family:JetBrains Mono,monospace;font-weight:800;letter-spacing:.04em;margin-bottom:2px}.hub-plan-bike-course-linked button{background:none;border:none;padding:0;margin:0;color:#666;font:inherit;letter-spacing:inherit;font-weight:800;cursor:pointer}.hub-plan-bike-course-linked .hub-plan-course-name{color:var(--bike, #00ffc3)}.hub-plan-bike-course-linked .hub-plan-course-unlink:hover{color:#aaa}
