.auth-button{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.8125rem;font-weight:500;color:var(--color-text);cursor:pointer;transition:all var(--transition)}@media(hover:hover){.auth-button:hover{background:var(--color-bg);border-color:var(--color-text-muted)}}.auth-button__google-icon{width:16px;height:16px}.auth-button__avatar{width:22px;height:22px;border-radius:50%}.auth-button__name{color:var(--color-text-secondary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sync-banner{position:fixed;top:0;left:0;right:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:0;pointer-events:none;animation:sync-banner-enter .5s cubic-bezier(.16,1,.3,1) forwards}.sync-banner--leaving{animation:sync-banner-exit .4s cubic-bezier(.4,0,1,1) forwards}@keyframes sync-banner-enter{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes sync-banner-exit{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}.sync-banner__card{pointer-events:auto;display:flex;align-items:center;gap:.65rem;width:100%;max-width:420px;margin:.6rem 1rem 0;padding:.65rem .75rem .65rem 0;border-radius:var(--radius);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-md),0 0 0 1px #fc4c020f;overflow:hidden;position:relative}.sync-banner__accent{width:4px;align-self:stretch;flex-shrink:0;border-radius:2px 0 0 2px}.sync-banner--success .sync-banner__accent{background:linear-gradient(180deg,#fc4c02,#e8440a)}.sync-banner--error .sync-banner__accent{background:linear-gradient(180deg,var(--color-red),#dc2626)}.sync-banner__icon{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:.85rem}.sync-banner--success .sync-banner__icon{background:#fc4c0214;color:#fc4c02}.sync-banner--error .sync-banner__icon{background:var(--color-red-light);color:var(--color-red)}.sync-banner__body{flex:1;min-width:0}.sync-banner__title{font-family:var(--font);font-size:.8rem;font-weight:600;color:var(--color-text);line-height:1.3}.sync-banner__subtitle{font-family:var(--font-mono);font-size:.65rem;color:var(--color-text-muted);line-height:1.3;margin-top:1px;letter-spacing:-.01em}.sync-banner__dismiss{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--color-text-muted);cursor:pointer;border-radius:4px;font-size:.75rem;transition:background .15s ease,color .15s ease;padding:0}.sync-banner__dismiss:hover{background:var(--color-border);color:var(--color-text-secondary)}.sync-banner__timer{position:absolute;bottom:0;left:0;height:2px;border-radius:0 0 0 var(--radius)}.sync-banner--success .sync-banner__timer{background:#fc4c024d}.sync-banner--error .sync-banner__timer{background:#ef44444d}.sync-banner__timer--running{animation:sync-banner-timer 5s linear forwards}@keyframes sync-banner-timer{0%{width:100%}to{width:0%}}[data-theme=dark] .sync-banner__card{background:#1e293bf2;border-color:#334155b3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 16px #0006,0 0 0 1px #fc4c0214}[data-theme=dark] .sync-banner--success .sync-banner__icon{background:#fc4c021f;color:#ff6a2f}[data-theme=dark] .sync-banner--error .sync-banner__icon{background:#f871711f;color:#f87171}[data-theme=dark] .sync-banner__dismiss:hover{background:#33415599;color:var(--color-text-secondary)}[data-theme=dark] .sync-banner--success .sync-banner__timer{background:#fc4c0240}[data-theme=dark] .sync-banner--error .sync-banner__timer{background:#f8717133}@media(max-width:480px){.sync-banner__card{max-width:none;margin:.4rem .5rem 0;border-radius:var(--radius-sm)}}.dropdown{position:relative;width:100%}.dropdown__trigger{display:flex;align-items:center;justify-content:space-between;width:100%;font-family:var(--font);font-size:1rem;font-weight:400;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.625rem .75rem;cursor:pointer;transition:border-color var(--transition),box-shadow var(--transition);text-align:left;gap:.5rem;line-height:1.5}@media(hover:hover){.dropdown__trigger:hover{border-color:var(--color-text-muted)}}.dropdown--open .dropdown__trigger,.dropdown__trigger:focus-visible{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}[data-theme=dark] .dropdown--open .dropdown__trigger,[data-theme=dark] .dropdown__trigger:focus-visible{box-shadow:0 0 0 3px #60a5fa33}.dropdown__value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown__value--placeholder{color:var(--color-text-muted)}.dropdown__chevron{flex-shrink:0;color:var(--color-text-muted);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.dropdown--open .dropdown__chevron{transform:rotate(180deg)}.dropdown__menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:150;list-style:none;margin:0;padding:4px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);max-height:240px;overflow-y:auto;overscroll-behavior:contain;animation:dropdown-enter .15s cubic-bezier(.22,1,.36,1)}@keyframes dropdown-enter{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.dropdown__menu::-webkit-scrollbar{width:6px}.dropdown__menu::-webkit-scrollbar-track{background:transparent}.dropdown__menu::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.dropdown__menu::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.dropdown__option{display:flex;align-items:center;justify-content:space-between;padding:.5rem .625rem;border-radius:6px;font-family:var(--font);font-size:.9375rem;color:var(--color-text);cursor:pointer;transition:background 80ms ease;-webkit-user-select:none;user-select:none;gap:.5rem}@media(hover:hover){.dropdown__option:hover{background:var(--color-primary-light)}}.dropdown__option--focused{background:var(--color-primary-light)}.dropdown__option--selected{font-weight:600;color:var(--color-primary)}.dropdown__option--disabled{color:var(--color-text-muted);cursor:default;pointer-events:none}.dropdown__check{flex-shrink:0;color:var(--color-primary)}.dropdown--small .dropdown__trigger{font-size:.8rem;font-weight:600;padding:.4rem .6rem;color:var(--color-text-secondary)}.dropdown--small .dropdown__menu{min-width:200px}.dropdown--small .dropdown__option{font-size:.8125rem;padding:.4375rem .5rem}@media(pointer:coarse){.dropdown__option{min-height:44px;padding:.625rem .75rem}.dropdown--small .dropdown__option{min-height:40px}}[data-theme=dark] .dropdown__menu{border-color:var(--color-border);box-shadow:0 8px 24px #00000080,0 0 0 1px #ffffff0a}[data-theme=dark] .dropdown__option--focused,[data-theme=dark] .dropdown__option:hover{background:#60a5fa1a}@media(prefers-reduced-motion:reduce){.dropdown__menu{animation:none}.dropdown__chevron{transition:none}}.input-form{max-width:520px;margin:0 auto;animation:fade-in .3s ease}.form-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:20px;padding:2rem;box-shadow:0 4px 24px #0000000d;position:relative;overflow:hidden}.form-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(to right,#3b82f6,#06b6d4,#8b5cf6);z-index:1}.form-card h2{font-size:1.375rem;font-weight:800;letter-spacing:-.02em;margin-bottom:1.5rem}.form-steps{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.75rem}.form-step-dot{width:8px;height:8px;border-radius:50%;background:var(--color-border);transition:all .3s cubic-bezier(.16,1,.3,1)}.form-step-dot.active{width:24px;border-radius:4px;background:linear-gradient(135deg,#3b82f6,#06b6d4)}.form-step-dot.done{background:var(--color-green)}.form-step-connector{width:24px;height:2px;background:var(--color-border);border-radius:1px}.form-group{margin-bottom:1.25rem}.form-row{display:flex;gap:1rem;align-items:flex-start}.form-row>*{flex:1;min-width:0}.toggle-group{display:inline-flex;border:1px solid var(--color-border);border-radius:999px;overflow:hidden;margin-bottom:.5rem;background:var(--color-bg);padding:3px;gap:2px}.toggle-group button{border-radius:999px;padding:.375rem .75rem;font-size:.8rem;background:transparent;color:var(--color-text-secondary);border:none;transition:all .2s ease}.toggle-group button.active{background:var(--color-primary);color:#fff;box-shadow:0 1px 4px #3b82f64d}.pace-preview{font-family:var(--font-mono);font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--color-text-muted);margin-top:.25rem}.vdot-preview{background:linear-gradient(135deg,var(--color-primary-light),rgba(6,182,212,.06));border:1px solid rgba(59,130,246,.15);border-radius:16px;padding:1.5rem;margin:1.5rem 0;animation:fade-in .3s ease}.vdot-preview h3{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--color-primary);margin-bottom:.75rem}.vdot-number{font-family:var(--font-mono);font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;background:linear-gradient(135deg,#2563eb,#0ea5e9);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.75rem}.pace-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.pace-grid--dual{grid-template-columns:1fr}.pace-item{display:flex;justify-content:space-between;font-size:.85rem}.pace-item .zone-name{color:var(--color-text-secondary)}.pace-item .zone-pace{font-family:var(--font-mono);font-weight:600;font-variant-numeric:tabular-nums}.current-fitness__toggle{display:flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer;color:var(--color-text-secondary)}.current-fitness__toggle input[type=checkbox]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-primary);cursor:pointer}.current-fitness__fields{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.5rem;align-items:center}.current-fitness__vdot{grid-column:1 / -1;justify-self:start;font-family:var(--font-mono);font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-primary);background:var(--color-primary-light);padding:.25rem .5rem;border-radius:var(--radius-sm);white-space:nowrap}.current-fitness__warning{grid-column:1 / -1;font-size:.8rem;color:var(--color-danger, #e53e3e)}.field-optional{font-weight:400;font-size:.75rem;color:var(--color-text-muted, #888);white-space:nowrap}.goal-mileage-label{display:flex;align-items:baseline;gap:.35rem}.suggest-btn{display:inline-flex;align-items:center;position:relative;font-family:var(--font);font-size:.7rem;font-weight:600;color:var(--color-primary);background:var(--color-primary-light);padding:.1rem .4rem;border-radius:999px;border:1px solid transparent;cursor:pointer;margin-left:auto;flex-shrink:0;transition:border-color .15s,background-color .15s;white-space:nowrap}@media(hover:hover){.suggest-btn:hover{border-color:var(--color-primary)}}.suggest-btn:active{border-color:var(--color-primary)}.suggest-btn--active{cursor:default;font-family:var(--font-mono);font-variant-numeric:tabular-nums}@media(hover:hover){.suggest-btn--active:hover{border-color:transparent}}.suggest-btn:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--color-text);color:var(--color-bg);font-size:.65rem;font-weight:400;line-height:1.3;padding:.3rem .45rem;border-radius:4px;white-space:normal;width:max-content;max-width:200px;text-align:center;pointer-events:none;opacity:0;transition:opacity .15s .1s;z-index:100}@media(hover:hover){.suggest-btn:hover:after{opacity:1}}.field-hint{display:block;font-size:.8rem;color:var(--color-text-secondary, #718096);margin-top:.25rem}.field-hint.error{color:var(--color-danger, #e53e3e)}.field-hint.warning{color:var(--color-warning, #d69e2e)}.ai-toggle{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;margin:1rem 0 0;background:var(--color-primary-light);border:1px solid var(--color-primary);border-radius:var(--radius);cursor:pointer;flex-wrap:wrap}.ai-toggle input[type=checkbox]{width:1rem;height:1rem;flex-shrink:0;margin-top:.125rem;accent-color:var(--color-primary);cursor:pointer}.ai-toggle__label{font-size:.9rem;font-weight:600;color:var(--color-primary)}.ai-toggle__desc{width:100%;font-size:.8rem;color:var(--color-text-secondary);padding-left:1.5rem}.form-actions{margin-top:1.5rem;display:flex;gap:.75rem}.form-actions .btn-primary{flex:1;border-radius:999px;background:linear-gradient(135deg,#2563eb,#0ea5e9);background-size:200% auto}@media(hover:hover){.form-actions .btn-primary:hover:not(:disabled){background-position:100% 50%}}.form-actions .btn-primary:active:not(:disabled){background-position:100% 50%}.form-actions .btn-secondary{border-radius:999px}.btn-cancel{display:inline-flex;align-items:center;gap:.25rem;background:transparent;border:none;color:var(--color-text-secondary);padding:.5rem .75rem;border-radius:999px;cursor:pointer;font-family:var(--font);font-size:.875rem;font-weight:500;transition:background-color .15s,color .15s}@media(hover:hover){.btn-cancel:hover{background:var(--color-bg);color:var(--color-text)}}.btn-cancel:active{background:var(--color-bg);color:var(--color-text)}.btn-cancel svg{flex-shrink:0}@media(max-width:768px){.form-card{padding:1.25rem}.form-row{flex-direction:column;gap:0;align-items:stretch}.vdot-preview{padding:1rem;margin:1rem 0}.vdot-preview h3{margin-bottom:.375rem}.vdot-number{font-size:1.5rem;margin-bottom:.5rem}.pace-grid{grid-template-columns:1fr}.pace-item{font-size:.8rem}.suggest-btn:after{left:0;transform:none;max-width:160px}}@media(hover:none){.suggest-btn:after{display:none}}@media(max-width:480px){.form-card{padding:1rem}}[data-theme=dark] .form-card{background:#1e293b99;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-color:#ffffff14;box-shadow:0 8px 32px #00000040}[data-theme=dark] .vdot-preview{background:linear-gradient(135deg,#3b82f614,#06b6d40a);border-color:#60a5fa33}[data-theme=dark] .current-fitness__warning,[data-theme=dark] .field-hint.error{color:#fca5a5}.loading-overlay{position:fixed;inset:0;background:#f8fafcf2;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fade-in .2s ease}.loading-content{text-align:center;animation:fade-in .3s ease}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 1.5rem}.loading-content h2{font-size:1.25rem;font-weight:600;margin-bottom:.5rem}.loading-content p{color:var(--color-text-secondary);font-size:.9rem}.loading-vdot{font-family:var(--font-mono);font-size:3rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-primary);animation:pulse-scale 1.5s ease-in-out infinite;margin:1rem 0}.loading-paces{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-top:1rem}.loading-pace-chip{background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.25rem .75rem;font-size:.8rem;color:var(--color-text-secondary)}.loading-pace-chip span{font-family:var(--font-mono);font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-text)}.loading-status-rotate{color:var(--color-text-secondary);font-size:.9rem;animation:status-fade 3.5s ease-in-out}@keyframes status-fade{0%{opacity:0;transform:translateY(4px)}10%{opacity:1;transform:translateY(0)}90%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}[data-theme=dark] .loading-overlay{background:#0f172af2}.plan-view{animation:fade-in .3s ease}.plan-toolbar{max-width:1200px;margin:0 auto;padding:1rem 1rem .5rem}.plan-header{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:.375rem;position:relative;z-index:50}.plan-header__left{display:inline-flex;align-items:center}.plan-header__right{display:flex;align-items:center;margin-left:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.1875rem}.plan-header__right .cal-controls{border:none;background:none;padding:0;border-radius:0}.plan-header__nav-mobile{display:none}.plan-chip{background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.375rem .875rem;font-size:.8rem;color:var(--color-text-secondary);box-shadow:var(--shadow-sm)}.plan-chip strong{color:var(--color-text);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.plan-info-dropdown{position:relative}.plan-header__info-mobile{display:none}.plan-info-panel{position:absolute;top:calc(100% + .5rem);right:0;z-index:20;background:linear-gradient(135deg,#6366f11f,#ec489914),color-mix(in srgb,var(--color-surface) 82%,transparent);border:1px solid rgba(139,92,246,.25);border-radius:var(--radius);box-shadow:0 4px 16px #8b5cf61f;padding:.5rem 0;min-width:220px;animation:fade-in .15s ease;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.plan-info-panel__row{display:flex;justify-content:space-between;align-items:center;padding:.4rem 1rem;font-size:.825rem;color:var(--color-text-secondary)}.plan-info-panel__row strong{color:var(--color-text);font-family:var(--font-mono);font-variant-numeric:tabular-nums}@keyframes gradient-pulse{0%{background-position:0% 50%;box-shadow:0 0 8px #8b5cf633}50%{background-position:100% 50%;box-shadow:0 0 20px #ec489959}to{background-position:0% 50%;box-shadow:0 0 8px #8b5cf633}}@keyframes card-enter{0%{opacity:0;transform:translateY(12px)}}.week-grid .day-card{animation:card-enter .3s ease-out backwards}.week-grid .day-card:nth-child(1){animation-delay:0ms}.week-grid .day-card:nth-child(2){animation-delay:50ms}.week-grid .day-card:nth-child(3){animation-delay:.1s}.week-grid .day-card:nth-child(4){animation-delay:.15s}.week-grid .day-card:nth-child(5){animation-delay:.2s}.week-grid .day-card:nth-child(6){animation-delay:.25s}.week-grid .day-card:nth-child(7){animation-delay:.3s}.month-view__week{opacity:0;transform:translateY(20px);position:relative;padding-left:12px}.month-view__week--revealed{animation:scroll-reveal .28s ease-out forwards;animation-delay:var(--reveal-delay, 0ms)}@keyframes scroll-reveal{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.day-card--zone-highlight{outline:2px solid var(--color-primary);outline-offset:2px;z-index:2;transition:outline-offset .2s ease,outline-color .2s ease}.day-card:not(.day-card--zone-highlight).day-card--zone-dimmed{opacity:.45;transition:opacity .2s ease}.paces-panel__row--hoverable{cursor:default;border-radius:var(--radius-sm);transition:background .15s ease}@media(hover:hover){.paces-panel__row--hoverable:hover{background:#8b5cf61a}}@media(prefers-reduced-motion:reduce){.week-grid .day-card{animation:none}.month-view__week{opacity:1;transform:none}.month-view__week--revealed,.day-card--today,.day-card__checkbox--checked{animation:none}}.phase-progress{display:flex;align-items:center;gap:.625rem;margin:0}.phase-progress__bar{flex:1;position:relative;height:5px;border-radius:3px;overflow:hidden}.phase-progress__track{display:flex;width:100%;height:100%}.phase-progress__seg{min-width:0}.phase-progress__seg--base{background:#10b981}.phase-progress__seg--build{background:#f97316}.phase-progress__seg--peak{background:#ef4444}.phase-progress__seg--taper{background:#eab308}.phase-progress__seg--race{background:#d97706}.phase-progress__overlay{position:absolute;top:0;bottom:0;right:0;background:var(--color-bg);opacity:.6;pointer-events:none}.phase-progress__label{font-family:var(--font-heading);font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;padding:.125rem .5rem;border-radius:999px;flex-shrink:0;transition:color .3s ease,background .3s ease}.phase-progress__label--base{color:#059669;background:#10b9811f}.phase-progress__label--build{color:#ea580c;background:#f973161f}.phase-progress__label--peak{color:#dc2626;background:#ef44441f}.phase-progress__label--taper{color:#ca8a04;background:#eab3081f}.phase-progress__label--race{color:#b45309;background:#d977061f}[data-theme=dark] .phase-progress__seg--base{background:#34d399}[data-theme=dark] .phase-progress__seg--build{background:#fb923c}[data-theme=dark] .phase-progress__seg--peak{background:#f87171}[data-theme=dark] .phase-progress__seg--taper{background:#fbbf24}[data-theme=dark] .phase-progress__seg--race{background:#f59e0b}[data-theme=dark] .phase-progress__overlay{opacity:.65}[data-theme=dark] .phase-progress__label--base{color:#6ee7b7;background:#34d39926}[data-theme=dark] .phase-progress__label--build{color:#fdba74;background:#fb923c26}[data-theme=dark] .phase-progress__label--peak{color:#fca5a5;background:#f8717126}[data-theme=dark] .phase-progress__label--taper{color:#fde68a;background:#fbbf2426}[data-theme=dark] .phase-progress__label--race{color:#fcd34d;background:#f59e0b26}@media(prefers-reduced-motion:reduce){.phase-progress__label{transition:none}}@media(max-width:480px){.phase-progress{padding:0 .25rem;gap:.375rem}.phase-progress__label{font-size:.5rem;padding:.0625rem .375rem}}.week-slide-container{position:relative;overflow:visible;padding:8px 0;margin:-8px 0}@keyframes week-slide-next{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes week-slide-prev{0%{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes week-exit-next{0%{transform:translateY(0);opacity:1}to{transform:translateY(-30px);opacity:0}}@keyframes week-exit-prev{0%{transform:translateY(0);opacity:1}to{transform:translateY(30px);opacity:0}}.week-grid.week-grid--slide-next{animation:week-slide-next .25s ease-out}.week-grid.week-grid--slide-prev{animation:week-slide-prev .25s ease-out}.week-grid.week-grid--exit-next{position:absolute;top:0;left:0;right:0;animation:week-exit-next .25s ease-out forwards;pointer-events:none}.week-grid.week-grid--exit-prev{position:absolute;top:0;left:0;right:0;animation:week-exit-prev .25s ease-out forwards;pointer-events:none}.week-grid.week-grid--slide-next .day-card,.week-grid.week-grid--slide-prev .day-card,.week-grid.week-grid--exit-next .day-card,.week-grid.week-grid--exit-prev .day-card{animation:none}@media(prefers-reduced-motion:reduce){.week-grid--slide-next,.week-grid--slide-prev,.week-grid--exit-next,.week-grid--exit-prev{animation:none}}.paces-dropdown{position:relative}.plan-header__paces-mobile{display:none}.paces-panel{position:absolute;top:calc(100% + .5rem);right:0;z-index:20;background:linear-gradient(135deg,#6366f11f,#ec489914),color-mix(in srgb,var(--color-surface) 82%,transparent);border:1px solid rgba(139,92,246,.25);border-radius:var(--radius);box-shadow:0 4px 16px #8b5cf61f;padding:.5rem 0;min-width:220px;animation:fade-in .15s ease;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.paces-panel__row{display:flex;justify-content:space-between;align-items:center;padding:.4rem 1rem;font-size:.825rem;color:var(--color-text-secondary)}.paces-panel__row strong{color:var(--color-text);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.paces-panel--dual{min-width:340px}.paces-panel--dual .paces-panel__headers{display:grid;grid-template-columns:1fr auto auto;gap:1rem;padding:.4rem 1rem;font-size:.75rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(139,92,246,.15)}.paces-panel--dual .paces-panel__row{display:grid;grid-template-columns:1fr auto auto;gap:1rem}.plan-actions .add-menu-dropdown{display:flex}.cal-controls{display:inline-flex;align-items:center;gap:.125rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.1875rem}.cal-controls__divider{width:1px;height:20px;background:var(--color-border);margin:0 .1875rem}.cal-controls__btn{width:34px;height:34px;border-radius:50%;border:none;background:transparent;color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .15s,color .15s;padding:0}.cal-controls__btn>svg{pointer-events:none}@media(hover:hover){.cal-controls__btn:hover:not(:disabled):not(.cal-controls__btn--active){background:var(--color-bg);color:var(--color-text)}}.cal-controls__btn:active:not(:disabled):not(.cal-controls__btn--active){background:var(--color-bg);color:var(--color-text)}.cal-controls__btn:disabled{opacity:.25;cursor:not-allowed}.cal-controls__btn--active{background:var(--color-primary);color:#fff}.week-nav{display:flex;align-items:center;justify-content:center;margin-bottom:.5rem}.week-nav__arrow--mobile{display:none}.week-nav-info{text-align:center;flex:1}.week-nav-info h3{font-size:1.1rem;font-weight:700;letter-spacing:-.02em}.week-nav-subtitle-row{display:inline-flex;align-items:center;gap:0;margin-top:.25rem}.week-nav-subtitle{display:inline-flex;align-items:center;gap:0;background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:.25rem .875rem;font-size:.8rem;color:var(--color-text-secondary)}.week-nav-subtitle__mileage{color:var(--color-primary);font-family:var(--font-mono);font-weight:600;font-variant-numeric:tabular-nums;margin-left:.5rem;padding-left:.5rem;border-left:1px solid var(--color-border)}.week-nav-badge{display:inline-block;font-size:.7rem;font-weight:600;padding:.125rem .5rem;border-radius:999px;margin-left:.5rem;vertical-align:middle}.week-nav-badge--recovery{background:var(--color-orange-light);color:var(--color-orange)}.week-nav-badge--taper{background:var(--color-green-light);color:var(--color-green)}.week-nav-badge--build{background:#dbeafe;color:#1e40af}.week-nav-badge--peak{background:#fef3c7;color:#92400e}.week-nav-badge--marathon{background:#fdf2f8;color:#be185d}.week-nav-badge--marathon-lr{background:#f0fdf4;color:#15803d}.week-nav-badge--race-week{background:#fce7f3;color:#9d174d}.week-grid{position:relative;display:grid;grid-template-columns:1fr;gap:.5rem}.week-grid .day-card{display:grid;grid-template-columns:5.5rem 1fr 14rem;grid-template-rows:auto;align-items:center;gap:0 .75rem;overflow:visible}.week-grid .day-card__rest-btn[data-tooltip]:after{left:0;transform:none;white-space:nowrap}.week-grid .day-card__header{grid-column:1;margin-bottom:0;align-items:center;gap:.375rem;white-space:nowrap}.week-grid .day-card__date{font-size:.75rem}.week-grid .day-card__sessions{grid-column:2;flex-direction:column;gap:0}.week-grid .day-card__footer{grid-column:3;margin-top:0;justify-content:flex-end}.week-grid .day-card__miles{white-space:nowrap;text-align:left}@media(max-width:600px){.week-grid .day-card{grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:.125rem .5rem}.week-grid .day-card__header{grid-column:1;grid-row:1;flex-direction:row;justify-content:flex-start}.week-grid .day-card__footer{grid-column:2;grid-row:1;align-self:center;margin-top:0}.week-grid .day-card__sessions{grid-column:1 / -1;grid-row:2;min-width:0}.week-grid{gap:.375rem}.week-grid .day-card__session--full{padding:.1875rem .375rem;gap:.0625rem}.week-grid .day-card__session--full+.day-card__session--full{margin-top:.125rem}.week-grid .day-card__session-breakdown{display:none}.week-grid .day-card__session-header{min-width:0;gap:.25rem}.week-grid .day-card__session-pace{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1 1 0;font-size:.7rem}.week-grid .day-card__session-miles{flex-shrink:0;font-size:.7rem}.week-grid .day-card__session-prefix{font-size:.7rem}.week-grid .zone-tag{font-size:.65rem;padding:0 .25rem;margin-right:.125rem}}.week-grid .day-card__race-label,.week-grid .day-card .firework{grid-column:1 / -1}@media(max-width:768px){.rest-confirm-overlay,.day-card--compact .day-card__session-detail{display:none}}.month-view{display:flex;flex-direction:column;gap:0}.month-view__section{margin-top:1.5rem}.month-view__section:first-child{margin-top:0}.month-view__month-title{font-size:1.1rem;font-weight:600;margin-bottom:.5rem}.month-view__day-headers{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.month-header{font-size:.75rem;font-weight:600;color:var(--color-text-muted);text-align:center;text-transform:uppercase;letter-spacing:.05em;padding-bottom:.5rem}.month-view__week{margin-bottom:.75rem}.month-view__week-label{position:relative;display:flex;align-items:center;gap:.25rem;padding:.25rem 0;margin-bottom:.25rem}.month-view__week-num{font-size:.75rem;font-weight:600;color:var(--color-text-muted);margin-right:.125rem}.month-view__week-mileage{font-family:var(--font-mono);font-size:.7rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-primary);background:var(--color-primary-light);padding:.0625rem .5rem;border-radius:999px}.month-view__week-grid{position:relative;display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:1fr;gap:.5rem}.month-view__phase-divider{display:flex;align-items:center;gap:.625rem;margin:.75rem 0 .375rem}.month-view__phase-divider-line{flex:1;height:1px;background:var(--color-border);opacity:.6}.month-view__phase-divider-label{font-family:var(--font-heading);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;padding:.125rem .625rem;border-radius:999px;border:1px solid transparent}.month-view__phase-divider--base .month-view__phase-divider-label{color:#059669;background:#10b98114;border-color:#10b98133}.month-view__phase-divider--build .month-view__phase-divider-label{color:#ea580c;background:#f9731614;border-color:#f9731633}.month-view__phase-divider--peak .month-view__phase-divider-label{color:#dc2626;background:#ef444414;border-color:#ef444433}.month-view__phase-divider--taper .month-view__phase-divider-label{color:#ca8a04;background:#eab30814;border-color:#eab30833}.month-view__phase-divider--race .month-view__phase-divider-label{color:#b45309;background:#d9770614;border-color:#d9770633}@media(max-width:480px){.month-view__phase-divider{margin:.25rem 0 .125rem}.month-view__phase-divider-label{font-size:.5rem;padding:.0625rem .375rem}}.day-card{position:relative;display:flex;flex-direction:column;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.625rem .875rem;cursor:pointer;overflow:hidden;transition:transform var(--transition),box-shadow var(--transition)}@media(hover:hover){.day-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}}.day-card:active:not(.day-card--off){box-shadow:var(--shadow-md)}.day-card--today{outline:2.5px solid var(--color-primary);outline-offset:-2.5px;animation:today-glow 2.5s ease-in-out infinite}@keyframes today-glow{0%,to{outline-width:2.5px;outline-offset:-2.5px}50%{outline-width:3.5px;outline-offset:-3.5px}}.day-card--double-threshold{background:linear-gradient(135deg,#3b82f6,#1e3a8a);border-color:transparent;background-size:100% 100%;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}.day-card--double-threshold .day-card__day,.day-card--double-threshold .day-card__date,.day-card--double-threshold .day-card__session,.day-card--double-threshold .day-card__miles{color:#fff}.day-card--double-threshold .zone-tag,.day-card--long-run .zone-tag,.day-card--workout .zone-tag,.day-card--vo2max .zone-tag,.day-card--hill .zone-tag,.day-card--tuneup .zone-tag,.day-card--speed .zone-tag,.day-card--marathon .zone-tag,.day-card--long-workout .zone-tag,.day-card--race-day .zone-tag{background:#00000073;color:#fff}.day-card--long-run{background:linear-gradient(135deg,#22c55e,#06b6d4);border-color:transparent;background-size:100% 100%;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}.day-card--long-run .day-card__day,.day-card--long-run .day-card__date,.day-card--long-run .day-card__session,.day-card--long-run .day-card__miles{color:#fff}.day-card--workout{background:linear-gradient(135deg,#60a5fa,#a78bfa);border-color:transparent;background-size:100% 100%;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}.day-card--workout .day-card__day,.day-card--workout .day-card__date,.day-card--workout .day-card__session,.day-card--workout .day-card__miles{color:#fff}.day-card--vo2max{background:linear-gradient(135deg,#166534,#db2777);border-color:transparent;background-size:100% 100%;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}.day-card--vo2max .day-card__day,.day-card--vo2max .day-card__date,.day-card--vo2max .day-card__session,.day-card--vo2max .day-card__miles{color:#fff}.day-card--hill{background:linear-gradient(135deg,#22c55e,#ca8a04);border-color:transparent;background-size:100% 100%;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}.day-card--hill .day-card__day,.day-card--hill .day-card__date,.day-card--hill .day-card__session,.day-card--hill .day-card__miles{color:#fff}.day-card--tuneup{background:linear-gradient(135deg,#8b5cf6,#ec4899);border-color:transparent;background-size:100% 100%;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}.day-card--tuneup .day-card__day,.day-card--tuneup .day-card__date,.day-card--tuneup .day-card__session,.day-card--tuneup .day-card__miles{color:#fff}.day-card--speed{background:linear-gradient(135deg,#b91c1c,#ef4444,#f87171);border-color:transparent;background-size:200% 200%;background-position:0% 50%;transition:transform var(--transition),box-shadow var(--transition),background-position .6s ease}@media(hover:hover){.day-card--speed:hover{background-position:100% 50%;animation:speed-gradient-sweep 2s ease-in-out infinite}}.day-card--speed .day-card__day,.day-card--speed .day-card__date,.day-card--speed .day-card__session,.day-card--speed .day-card__miles{color:#fff}.day-card--marathon{background:linear-gradient(135deg,#db2777,#ec4899,#6366f1);border-color:transparent;background-size:100% 100%;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}.day-card--marathon .day-card__day,.day-card--marathon .day-card__date,.day-card--marathon .day-card__session,.day-card--marathon .day-card__miles{color:#fff}.day-card--long-workout{background:linear-gradient(135deg,#22c55e,#0d9488,#3b82f6);border-color:transparent;background-size:100% 100%;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}.day-card--long-workout .day-card__day,.day-card--long-workout .day-card__date,.day-card--long-workout .day-card__session,.day-card--long-workout .day-card__miles{color:#fff}@media(hover:hover){.day-card--double-threshold:hover,.day-card--long-run:hover,.day-card--workout:hover,.day-card--vo2max:hover,.day-card--hill:hover,.day-card--tuneup:hover,.day-card--marathon:hover,.day-card--long-workout:hover{background-size:200% 200%;animation:gradient-shift 3s ease-in-out infinite,bg-pulse 2.5s ease-in-out infinite}.day-card--race-day:hover{animation:race-day-shimmer 2s ease-in-out infinite}}.day-card--double-threshold:active,.day-card--long-run:active,.day-card--workout:active,.day-card--vo2max:active,.day-card--hill:active,.day-card--tuneup:active,.day-card--marathon:active,.day-card--long-workout:active{filter:brightness(1.15)}.day-card--warning{outline:2px solid var(--color-red);outline-offset:-1px}.day-card--off{opacity:.5;cursor:default}@media(hover:hover){.day-card--off:hover{transform:none;box-shadow:none}}.day-card--race-day{background:linear-gradient(135deg,#d97706,#f59e0b,#fbbf24);background-size:200% 200%;border-color:transparent;overflow:hidden;animation:race-day-shimmer 4s ease-in-out infinite;box-shadow:0 0 12px #f59e0b4d}@media(hover:hover){.day-card--race-day:hover{transform:translateY(-3px);box-shadow:0 6px 20px #f59e0b66}}.day-card--race-day .day-card__day,.day-card--race-day .day-card__date,.day-card--race-day .day-card__session,.day-card--race-day .day-card__miles{color:#fff}.day-card__race-label{font-size:.85rem;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.1em;margin-bottom:.375rem;text-shadow:0 1px 3px rgba(0,0,0,.2)}.day-card--compact .day-card__race-label{font-size:.7rem;margin-bottom:.25rem}.firework{position:absolute;width:3px;height:3px;border-radius:50%;pointer-events:none;z-index:2;opacity:0}.firework--1{top:20%;left:20%;background:#fbbf24}.firework--2{top:30%;right:15%;background:#f472b6}.firework--3{bottom:25%;left:40%;background:#60a5fa}@media(hover:hover){.day-card--race-day:hover .firework--1{animation:firework-burst-1 1s ease-out infinite}.day-card--race-day:hover .firework--2{animation:firework-burst-2 1s ease-out .35s infinite}.day-card--race-day:hover .firework--3{animation:firework-burst-3 1s ease-out .7s infinite}}@keyframes race-day-shimmer{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes firework-burst-1{0%{opacity:1;box-shadow:0 0 2px 1px #fbbf24,0 0 #fb923c,0 0 #f87171,0 0 #c084fc,0 0 #60a5fa,0 0 #34d399,0 0 #fde68a,0 0 #fca5a5}20%{opacity:1}to{opacity:0;box-shadow:0 0 2px #fbbf2400,-14px -22px #fb923c,12px -20px #f87171,22px -2px #c084fc,14px 18px #60a5fa,-6px 22px #34d399,-20px 10px #fde68a,-18px -10px #fca5a5}}@keyframes firework-burst-2{0%{opacity:1;box-shadow:0 0 2px 1px #f472b6,0 0 #a78bfa,0 0 #38bdf8,0 0 #4ade80,0 0 #fbbf24,0 0 #f87171,0 0 #e879f9,0 0 #67e8f9}20%{opacity:1}to{opacity:0;box-shadow:0 0 2px #f472b600,16px -18px #a78bfa,22px 6px #38bdf8,8px 22px #4ade80,-12px 18px #fbbf24,-22px 0 #f87171,-16px -16px #e879f9,2px -24px #67e8f9}}@keyframes firework-burst-3{0%{opacity:1;box-shadow:0 0 2px 1px #60a5fa,0 0 #34d399,0 0 #fbbf24,0 0 #f472b6,0 0 #a78bfa,0 0 #fb923c,0 0 #38bdf8,0 0 #4ade80}20%{opacity:1}to{opacity:0;box-shadow:0 0 2px #60a5fa00,-18px -16px #34d399,10px -22px #fbbf24,24px 4px #f472b6,12px 20px #a78bfa,-8px 24px #fb923c,-24px 6px #38bdf8,-14px -14px #4ade80}}.modal-race-badge{display:inline-block;background:linear-gradient(135deg,#dc2626,#f59e0b);color:#fff;font-size:.8rem;font-weight:700;padding:.25rem .75rem;border-radius:999px;text-transform:uppercase;letter-spacing:.05em}.day-card__header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.5rem}.day-card__date-group{display:inline-flex;align-items:center;gap:.25rem}.day-card__edit-btn{background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:2px;line-height:0;opacity:0;transition:opacity .15s,color .15s;border-radius:3px;display:inline-flex;align-items:center;justify-content:center}@media(hover:hover){.day-card:hover .day-card__edit-btn{opacity:.6}.day-card__edit-btn:hover{opacity:1!important;color:var(--color-primary)}}.day-card__rest-btn{background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:2px;line-height:0;opacity:0;transition:opacity .15s,color .15s}@media(hover:hover){.day-card:hover .day-card__rest-btn{opacity:.6}.day-card__rest-btn:hover{opacity:1!important;color:#7c3aed}}.rest-confirm-overlay{position:relative;z-index:10;background:var(--color-surface);border:2px solid #7c3aed;border-radius:var(--radius);padding:1rem .75rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.625rem;animation:rest-confirm-in .2s ease-out;box-shadow:0 8px 24px #7c3aed26,var(--shadow-md)}@keyframes rest-confirm-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.rest-confirm__icon{color:#7c3aed;line-height:0}.rest-confirm__label{font-size:.8rem;font-weight:600;color:var(--color-text)}.rest-confirm__actions{display:flex;gap:.5rem;width:100%}.rest-confirm__cancel{flex:1;background:none;border:1px solid var(--color-border);color:var(--color-text-secondary);padding:.35rem .5rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.72rem;font-family:inherit;font-weight:500;transition:background .15s,border-color .15s}@media(hover:hover){.rest-confirm__cancel:hover{background:var(--color-bg);border-color:var(--color-text-muted)}}.rest-confirm__btn{flex:1;background:#7c3aed;border:none;color:#fff;padding:.35rem .5rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.72rem;font-family:inherit;font-weight:600;transition:filter .15s}@media(hover:hover){.rest-confirm__btn:hover{filter:brightness(1.12)}}.day-card__day{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary)}.day-card__date{font-size:.7rem;color:var(--color-text-muted)}.day-card__sessions{display:flex;flex-direction:column;gap:.25rem;flex:1}.day-card__session{font-size:.8rem;color:var(--color-text)}.day-card__session--full{display:flex;flex-direction:column;gap:.125rem;padding:.25rem .5rem;border-left:3px solid var(--color-border);border-radius:2px}.day-card__session--full+.day-card__session--full{margin-top:.125rem}.day-card__session-header{display:flex;align-items:baseline;gap:.375rem}.day-card__session-prefix{font-size:.75rem;font-weight:600;opacity:.7}.day-card__session-miles{font-family:var(--font-mono);font-size:.75rem;font-weight:600;opacity:.7;font-variant-numeric:tabular-nums;margin-left:auto}.day-card__session-pace{font-size:.75rem;color:var(--color-text-secondary)}.day-card__session-breakdown{font-size:.7rem;color:var(--color-text-muted)}.day-card__session--full.day-card__session--easy{border-left-color:#22c55e}.day-card__session--full.day-card__session--long{border-left-color:#10b981}.day-card__session--full.day-card__session--lt2,.day-card__session--full.day-card__session--threshold{border-left-color:#3b82f6}.day-card__session--full.day-card__session--lt1{border-left-color:#8b5cf6}.day-card__session--full.day-card__session--vo2max{border-left-color:#f59e0b}.day-card__session--full.day-card__session--hill{border-left-color:#84cc16}.day-card__session--full.day-card__session--speed{border-left-color:#ef4444}.day-card__session--full.day-card__session--tuneup{border-left-color:#8b5cf6}.day-card__session--full.day-card__session--marathon{border-left-color:#ec4899}.day-card__session--full.day-card__session--long-workout{border-left-color:#10b981}.day-card--double-threshold .day-card__session--full,.day-card--long-run .day-card__session--full,.day-card--workout .day-card__session--full,.day-card--vo2max .day-card__session--full,.day-card--hill .day-card__session--full,.day-card--tuneup .day-card__session--full,.day-card--speed .day-card__session--full,.day-card--marathon .day-card__session--full,.day-card--long-workout .day-card__session--full{border-left-color:#ffffff59}.day-card--double-threshold .day-card__session-pace,.day-card--double-threshold .day-card__session-breakdown,.day-card--double-threshold .day-card__session-miles,.day-card--double-threshold .day-card__session-prefix,.day-card--long-run .day-card__session-pace,.day-card--long-run .day-card__session-breakdown,.day-card--long-run .day-card__session-miles,.day-card--long-run .day-card__session-prefix,.day-card--workout .day-card__session-pace,.day-card--workout .day-card__session-breakdown,.day-card--workout .day-card__session-miles,.day-card--workout .day-card__session-prefix,.day-card--vo2max .day-card__session-pace,.day-card--vo2max .day-card__session-breakdown,.day-card--vo2max .day-card__session-miles,.day-card--vo2max .day-card__session-prefix,.day-card--hill .day-card__session-pace,.day-card--hill .day-card__session-breakdown,.day-card--hill .day-card__session-miles,.day-card--hill .day-card__session-prefix,.day-card--tuneup .day-card__session-pace,.day-card--tuneup .day-card__session-breakdown,.day-card--tuneup .day-card__session-miles,.day-card--tuneup .day-card__session-prefix,.day-card--speed .day-card__session-pace,.day-card--speed .day-card__session-breakdown,.day-card--speed .day-card__session-miles,.day-card--speed .day-card__session-prefix,.day-card--marathon .day-card__session-pace,.day-card--marathon .day-card__session-breakdown,.day-card--marathon .day-card__session-miles,.day-card--marathon .day-card__session-prefix,.day-card--long-workout .day-card__session-pace,.day-card--long-workout .day-card__session-breakdown,.day-card--long-workout .day-card__session-miles,.day-card--long-workout .day-card__session-prefix{color:#ffffffb3}.zone-tag{font-size:.7rem;font-weight:600;padding:.0625rem .375rem;border-radius:999px;display:inline-block;margin-right:.25rem}.zone-tag--easy{background:#22c55e26;color:#16a34a}.zone-tag--threshold,.zone-tag--lt2{background:#3b82f626;color:#2563eb}.zone-tag--lt1{background:#8b5cf626;color:#7c3aed}.zone-tag--interval{background:#f59e0b26;color:#d97706}.zone-tag--long{background:#10b98126;color:#059669}.zone-tag--hill{background:#84cc1626;color:#65a30d}.zone-tag--tuneup{background:#8b5cf626;color:#7c3aed}.zone-tag--speed{background:#ef444426;color:#dc2626}.zone-tag--marathon{background:#ec489926;color:#db2777}.zone-tag--long-workout{background:#10b98126;color:#059669}.zone-tag--strides{background:#a855f71f;color:#9333ea}.day-card__footer{display:flex;align-items:center;gap:.375rem;margin-top:.5rem}.day-card__checkbox{width:16px;height:16px;min-width:16px;border-radius:50%;border:1.5px solid var(--color-text-muted);background:transparent;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s;color:transparent;flex-shrink:0}@media(hover:hover){.day-card__checkbox:hover{border-color:#22c55e}}.day-card__checkbox--checked{background:#22c55e;border-color:#22c55e;color:#fff;animation:check-bounce .4s cubic-bezier(.34,1.56,.64,1)}@keyframes check-bounce{0%{transform:scale(.5)}50%{transform:scale(1.3)}to{transform:scale(1)}}.day-card--completed{opacity:.55}@media(hover:hover){.day-card--completed:hover{opacity:.75}}.day-card--completed .day-card__checkbox{opacity:1}.day-card--double-threshold .day-card__checkbox,.day-card--long-run .day-card__checkbox,.day-card--workout .day-card__checkbox,.day-card--vo2max .day-card__checkbox,.day-card--hill .day-card__checkbox,.day-card--tuneup .day-card__checkbox,.day-card--speed .day-card__checkbox,.day-card--marathon .day-card__checkbox,.day-card--long-workout .day-card__checkbox,.day-card--race-day .day-card__checkbox{border-color:#fff9}@media(hover:hover){.day-card--double-threshold .day-card__checkbox:hover,.day-card--long-run .day-card__checkbox:hover,.day-card--workout .day-card__checkbox:hover,.day-card--vo2max .day-card__checkbox:hover,.day-card--hill .day-card__checkbox:hover,.day-card--tuneup .day-card__checkbox:hover,.day-card--speed .day-card__checkbox:hover,.day-card--marathon .day-card__checkbox:hover,.day-card--long-workout .day-card__checkbox:hover,.day-card--race-day .day-card__checkbox:hover{border-color:#22c55e}}.day-card__miles{font-family:var(--font-mono);font-size:.85rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-text)}.day-card__miles-actual{font-weight:700}.day-card__miles-sep{opacity:.5;margin:0 .125rem}.day-card__miles-delta{font-size:.65rem;font-weight:700;padding:.0625rem .25rem;border-radius:999px;margin-left:.25rem;vertical-align:middle}.day-card__miles-delta--over{background:#22c55e26;color:#22c55e}.day-card__miles-delta--under{background:#ef444426;color:#ef4444}.day-card--double-threshold .day-card__miles-delta--over,.day-card--long-run .day-card__miles-delta--over,.day-card--workout .day-card__miles-delta--over,.day-card--vo2max .day-card__miles-delta--over,.day-card--hill .day-card__miles-delta--over,.day-card--tuneup .day-card__miles-delta--over,.day-card--speed .day-card__miles-delta--over,.day-card--marathon .day-card__miles-delta--over,.day-card--long-workout .day-card__miles-delta--over{background:#22c55e4d;color:#bbf7d0}.day-card--double-threshold .day-card__miles-delta--under,.day-card--long-run .day-card__miles-delta--under,.day-card--workout .day-card__miles-delta--under,.day-card--vo2max .day-card__miles-delta--under,.day-card--hill .day-card__miles-delta--under,.day-card--tuneup .day-card__miles-delta--under,.day-card--speed .day-card__miles-delta--under,.day-card--marathon .day-card__miles-delta--under,.day-card--long-workout .day-card__miles-delta--under{background:#ef44444d;color:#fecaca}.day-card--compact .day-card__miles-delta{font-size:.55rem;padding:0 .125rem;margin-left:.125rem}.day-card__miles--clickable{cursor:pointer}.day-card__particle{position:absolute;width:5px;height:5px;border-radius:50%;pointer-events:none;z-index:3;will-change:transform,opacity}.day-card__particle--compact{width:3px;height:3px}.day-card__particle--dt{background:#bed2ffe6;box-shadow:0 0 4px #bed2ff99}.day-card__particle--long{background:#c8ffe6e6;box-shadow:0 0 4px #c8ffe699}.day-card__particle--vo2{background:#ffc8dce6;box-shadow:0 0 4px #ffc8dc99}.day-card__particle--hill{background:#fff0c8e6;box-shadow:0 0 4px #fff0c899}.day-card__particle--speed{background:#ffd2aae6;box-shadow:0 0 4px #ffd2aa99}.day-card__particle--tuneup{background:#ffd2f0e6;box-shadow:0 0 4px #ffd2f099}.day-card__particle--marathon{background:#ffb4dce6;box-shadow:0 0 4px #ffb4dc99}.day-card__particle--race{background:#fff096f2;box-shadow:0 0 5px #fff096b3}.day-card__particle--workout{background:#c8e6ffe6;box-shadow:0 0 4px #c8e6ff99}.day-card__particle--easy{background:#94a3b880;box-shadow:0 0 3px #94a3b84d}.day-card--compact{padding:.5rem;min-height:80px}.day-card--compact .day-card__day{font-size:.65rem}.day-card--compact .day-card__session{font-size:.7rem}.day-card--compact .day-card__miles{font-size:.75rem}.day-card--compact .day-card__footer{gap:.25rem;margin-top:.375rem;white-space:nowrap}.day-card--compact .day-card__checkbox{width:14px;height:14px;min-width:14px}.mileage-warning{background:var(--color-red-light);border:1px solid var(--color-red);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;font-size:.85rem;color:#991b1b;display:flex;align-items:center;gap:.5rem}.mileage-warning strong{font-weight:600}.short-block-warning{background:#fef3c7;border:1px solid #f59e0b;border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;font-size:.85rem;color:#92400e;display:flex;align-items:center;gap:.5rem}.short-block-warning strong{font-weight:600}.modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;font-size:1.25rem;color:var(--color-text-muted);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%}@media(hover:hover){.modal-close:hover{background:var(--color-bg);color:var(--color-text)}}.modal-close:active{background:var(--color-bg);color:var(--color-text)}.modal-nav-wrapper{position:relative;max-width:480px;width:100%}.modal-nav-btn{position:absolute;top:50%;transform:translateY(-50%);background:none;border:none;color:#ffffff8c;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;z-index:2;padding:0;transition:color .15s,background .15s}@media(hover:hover){.modal-nav-btn:hover{color:#fff;background:#ffffff1a}}.modal-nav-btn:active{color:#fff;background:#ffffff1a}.modal-nav-btn--prev{left:-48px}.modal-nav-btn--next{right:-48px}@media(max-width:600px){.modal-nav-wrapper{max-width:100%;height:100%;overflow:hidden}.modal-nav-btn--prev{left:8px}.modal-nav-btn--next{right:8px}.modal-nav-btn{color:#ffffffb3;background:#00000040}@media(hover:hover){.modal-nav-btn:hover{background:#0006}}}.session-actions{margin-left:auto;display:inline-flex;align-items:center;align-self:center;gap:.25rem;flex-shrink:0}.session-edit-btn,.session-undo-btn,.session-check-btn{background:none;border:none;font-size:.95rem;line-height:1;padding:0;color:var(--color-text-muted);width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;opacity:.5;transition:opacity .15s,background .15s,color .15s}@media(hover:hover){.session-edit-btn:hover{opacity:1;background:var(--color-bg);color:var(--color-primary)}.session-undo-btn:hover{opacity:1;background:#fef2f2;color:#dc2626}}.session-check-btn{opacity:1;color:#16a34a}@media(hover:hover){.session-check-btn:hover{background:#f0fdf4;color:#15803d}}.session-delete-btn{background:none;border:none;font-size:.8rem;line-height:1;padding:0;color:var(--color-text-muted);width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;opacity:.5;transition:opacity .15s,background .15s,color .15s}@media(hover:hover){.session-delete-btn:hover{opacity:1;background:#fef2f2;color:#dc2626}}.session-confirm-delete-btn{background:#dc2626;border:none;color:#fff;font-size:.7rem;font-family:inherit;font-weight:600;padding:.2rem .5rem;border-radius:var(--radius);cursor:pointer;transition:background .15s}@media(hover:hover){.session-confirm-delete-btn:hover{background:#b91c1c}}.session-cancel-btn{background:none;border:none;font-size:.85rem;line-height:1;padding:0;color:var(--color-text-muted);width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;opacity:.5;transition:opacity .15s,background .15s}@media(hover:hover){.session-cancel-btn:hover{opacity:1;background:var(--color-bg)}}.rest-day-confirm{margin-top:.75rem;padding:.875rem;border:1.5px solid #7c3aed;border-radius:var(--radius);background:#faf5ff;display:flex;flex-direction:column;gap:.625rem;animation:rest-confirm-in .2s ease-out}.rest-day-confirm__header{display:flex;align-items:center;gap:.5rem;color:#7c3aed;font-size:.85rem;font-weight:600}.rest-day-confirm__actions{display:flex;gap:.5rem}.rest-day-confirm__cancel{flex:1;background:none;border:1px solid var(--color-border);color:var(--color-text-secondary);padding:.4rem .75rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.75rem;font-family:inherit;font-weight:500;transition:background .15s,border-color .15s}@media(hover:hover){.rest-day-confirm__cancel:hover{background:var(--color-bg);border-color:var(--color-text-muted)}}.rest-day-confirm__btn{flex:1;background:#7c3aed;border:none;color:#fff;padding:.4rem .75rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.75rem;font-family:inherit;font-weight:600;transition:filter .15s}@media(hover:hover){.rest-day-confirm__btn:hover{filter:brightness(1.12)}}.rest-day-confirm__btn--easy{background:#059669}@media(hover:hover){.rest-day-confirm__btn--easy:hover{filter:brightness(1.15)}}.week-nav-undo-btn{background:none;border:none;font-size:.75rem;line-height:1;color:var(--color-text-muted);width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;padding:0;margin-left:2px;transition:background .15s,color .15s}@media(hover:hover){.week-nav-undo-btn:hover{background:#fef2f2;color:#dc2626}}.week-nav-today-btn{display:inline-flex;align-items:center;padding:.25rem .75rem;border:1.5px solid var(--color-primary);border-radius:999px;background:var(--color-primary-light);color:var(--color-primary);font-family:var(--font-heading);font-size:.72rem;font-weight:700;letter-spacing:.01em;cursor:pointer;transition:background .15s ease,color .15s ease,transform .15s ease;animation:jump-today-enter .3s cubic-bezier(.34,1.56,.64,1) both}.week-nav-today-btn:hover{background:var(--color-primary);color:#fff;transform:translateY(-1px)}.week-nav-today-btn:active{transform:translateY(.5px);background:var(--color-primary);color:#fff}[data-theme=dark] .week-nav-today-btn{background:#3b82f61f;border-color:#3b82f666;color:#93bbfd}[data-theme=dark] .week-nav-today-btn:hover{background:var(--color-primary);color:#fff}@media(prefers-reduced-motion:reduce){.week-nav-today-btn{animation:none}}.month-view__week-undo{background:none;border:none;font-size:.7rem;color:var(--color-text-muted);width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;transition:background .15s,color .15s}@media(hover:hover){.month-view__week-undo:hover{background:#fef2f2;color:#dc2626}}.mileage-input{width:3ch;text-align:center;font-size:inherit;font-family:inherit;font-weight:600;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.125rem .25rem;background:var(--color-surface);color:var(--color-text);-moz-appearance:textfield;appearance:textfield}.mileage-input::-webkit-outer-spin-button,.mileage-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.mileage-input:focus{outline:none;border-color:transparent}.modal-content.modal-content--double-threshold{background:linear-gradient(135deg,#3b82f6,#8b5cf6);background-size:100% 100%;transition:background-size .3s ease,filter .3s ease}.modal-content.modal-content--long-run{background:linear-gradient(135deg,#22c55e,#06b6d4);background-size:100% 100%;transition:background-size .3s ease,filter .3s ease}.modal-content.modal-content--workout{background:linear-gradient(135deg,#60a5fa,#a78bfa);background-size:100% 100%;transition:background-size .3s ease,filter .3s ease}.modal-content.modal-content--vo2max{background:linear-gradient(135deg,#166534,#db2777);background-size:100% 100%;transition:background-size .3s ease,filter .3s ease}.modal-content.modal-content--hill{background:linear-gradient(135deg,#22c55e,#ca8a04);background-size:100% 100%;transition:background-size .3s ease,filter .3s ease}.modal-content.modal-content--speed{background:linear-gradient(135deg,#b91c1c,#ef4444,#f87171);background-size:200% 200%;background-position:0% 50%;transition:background-position .6s ease,filter .3s ease}.modal-content.modal-content--tuneup{background:linear-gradient(135deg,#8b5cf6,#ec4899);background-size:100% 100%;transition:background-size .3s ease,filter .3s ease}.modal-content.modal-content--marathon{background:linear-gradient(135deg,#db2777,#ec4899,#6366f1);background-size:100% 100%;transition:background-size .3s ease,filter .3s ease}.modal-content.modal-content--long-workout{background:linear-gradient(135deg,#22c55e,#0d9488,#3b82f6);background-size:100% 100%;transition:background-size .3s ease,filter .3s ease}.modal-content.modal-content--race-day{background:linear-gradient(135deg,#d97706,#f59e0b,#fbbf24);background-size:200% 200%;animation:race-day-shimmer 4s ease-in-out infinite}.modal-content--dark,.modal-content--workout{animation:scale-in .35s cubic-bezier(.34,1.56,.64,1)}.modal-content--double-threshold,.modal-content--long-run,.modal-content--workout,.modal-content--vo2max,.modal-content--hill,.modal-content--tuneup,.modal-content--speed,.modal-content--marathon,.modal-content--long-workout{transition:filter .6s ease,background-size .6s ease}@media(hover:hover){.modal-content--double-threshold:has(.modal-session:hover),.modal-content--long-run:has(.modal-session:hover),.modal-content--workout:has(.modal-session:hover),.modal-content--vo2max:has(.modal-session:hover),.modal-content--hill:has(.modal-session:hover),.modal-content--tuneup:has(.modal-session:hover),.modal-content--marathon:has(.modal-session:hover),.modal-content--long-workout:has(.modal-session:hover){background-size:200% 200%;filter:brightness(1.15)}.modal-content--speed:has(.modal-session:hover){background-size:200% 200%;filter:brightness(1.15)}.modal-content--race-day:has(.modal-session:hover){filter:brightness(1.15)}}.modal-content--dark{color:#fff}.modal-content--dark .modal-close{color:#ffffffb3}@media(hover:hover){.modal-content--dark .modal-close:hover{background:#ffffff26;color:#fff}}.modal-content--dark .modal-session{border-color:#fff3;background:#ffffff1f}.modal-content--dark .modal-session h4,.modal-content--dark .modal-session__pace{color:#fff}.modal-content--dark .modal-session__detail{color:#fffc}.modal-content--dark .modal-total{border-top-color:#fff3;color:#fff}.modal-content--dark .zone-tag{background:#00000073;color:#fff}.modal-content--dark .modal-revert-btn,.modal-content--dark .modal-rest-btn{border-color:#fff3;color:#fffc}@media(hover:hover){.modal-content--dark .modal-revert-btn:hover{background:#ffffff26;color:#fff;border-color:#fff6}.modal-content--dark .modal-rest-btn:hover{background:#a78bfa40;color:#c4b5fd;border-color:#a78bfa80}}.modal-content--dark .session-edit-btn,.modal-content--dark .session-delete-btn{color:#fff9}@media(hover:hover){.modal-content--dark .session-edit-btn:hover,.modal-content--dark .session-delete-btn:hover{opacity:1;background:#ffffff26;color:#fff}}.modal-content--dark .rest-day-confirm{background:#1e1b2e;border-color:#a78bfa80}.modal-content--dark .rest-day-confirm__header{color:#c4b5fd}.modal-content--dark .rest-day-confirm__cancel{border-color:#fff3;color:#fffc}@media(hover:hover){.modal-content--dark .rest-day-confirm__cancel:hover{background:#ffffff1a;border-color:#fff6}}.modal-content--dark .rest-day-confirm__btn{background:#7c3aed}@media(hover:hover){.modal-content--dark .rest-day-confirm__btn:hover{filter:brightness(1.2)}}.modal-content--dark .rest-day-confirm__btn--easy{background:#059669}@media(hover:hover){.modal-content--dark .rest-day-confirm__btn--easy:hover{filter:brightness(1.25)}}.modal-content--dark .session-check-btn{color:#a7f3d0}@media(hover:hover){.modal-content--dark .session-check-btn:hover{background:#ffffff26;color:#6ee7b7}}.modal-content--dark .day-modified-dot,.modal-content--dark .session-modified-dot{background:#fff}.modal-content--dark .mileage-stepper__field{background:#ffffff73;border-color:#ffffff8c}.modal-content--dark .mileage-stepper__btn{border-color:#fff3;color:#fff}@media(hover:hover){.modal-content--dark .mileage-stepper__btn:hover{background:#fff3}}.modal-content--dark .mileage-input{background:#ffffff26;border-color:#fff3;color:#fff}.modal-content--dark .redistribute-toggle{border-color:#ffffff40}.modal-content--dark .redistribute-toggle__btn{background:#ffffff14;border-color:#fff3;color:#ffffff8c}.modal-content--dark .redistribute-toggle__btn--active{background:#ffffff59;color:#fff;font-weight:600;border-color:#ffffff80}@media(hover:hover){.modal-content--dark .redistribute-toggle__btn:not(.redistribute-toggle__btn--active):hover{background:#ffffff2e;color:#fffc}}.modal-content--dark .mileage-warning,.modal-content--dark .low-mileage-dt-info{background:#ffffff26;border-color:#ffffff4d;color:#fff}.modal-content--dark .strides-note{color:#fffc}.modal-content--dark .btn-remove-race{border-color:#ffffff4d;color:#fff}@media(hover:hover){.modal-content--dark .btn-remove-race:hover{background:#ffffff26;border-color:#ffffff80}}.modal-content--dark .session-confirm-delete-btn{background:#ffffffe6;color:#dc2626}.modal-content--dark .session-cancel-btn{color:#fff9}@media(hover:hover){.modal-content--dark .session-cancel-btn:hover{background:#ffffff26;color:#fff}}.modal-header{margin-bottom:1.25rem}.modal-header .zone-tag{font-size:.85rem}.modal-header__title-row{display:flex;align-items:center;gap:.75rem}.modal-header h3{font-size:1.25rem;font-weight:600}.modal-header__date-link{cursor:pointer;border-radius:6px;padding:.1rem .4rem;margin:-.1rem -.4rem;transition:background-color .15s ease,color .15s ease}@media(hover:hover){.modal-header__date-link:hover{background-color:#ffffff1a;text-decoration:underline;text-underline-offset:3px}}.modal-revert-btn{display:inline-flex;align-items:center;gap:.35rem;background:none;border:1px solid var(--color-border);border-radius:var(--radius);padding:.25rem .6rem;font-size:.75rem;font-family:inherit;color:var(--color-text-muted);cursor:pointer;transition:background .15s,color .15s,border-color .15s}@media(hover:hover){.modal-revert-btn:hover{background:#fef2f2;color:#dc2626;border-color:#fecaca}}.modal-rest-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:1px solid var(--color-border);border-radius:50%;width:28px;height:28px;padding:0;color:var(--color-text-muted);cursor:pointer;transition:background .15s,color .15s,border-color .15s;line-height:0}@media(hover:hover){.modal-rest-btn:hover{background:#f5f3ff;color:#7c3aed;border-color:#c4b5fd}}.modal-adj-strip{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:-.5rem 0 .75rem;padding:.375rem .5rem;background:var(--color-surface, rgba(0, 0, 0, .03));border:1px solid var(--color-border);border-radius:var(--radius);font-size:.75rem;animation:session-enter .3s cubic-bezier(.34,1.56,.64,1) backwards}[data-theme=dark] .modal-adj-strip{background:#ffffff0a}.modal-content--dark .modal-adj-strip{border-color:#ffffff1f;background:#ffffff0f}.modal-adj-strip__location-group{display:flex;align-items:center;gap:.25rem;min-width:0}.modal-adj-strip__location{display:flex;align-items:center;gap:.3rem;color:var(--color-text-secondary, #666);min-width:0;background:none;border:none;padding:0;font:inherit;font-size:.75rem;cursor:pointer;border-radius:3px;transition:color .15s}.modal-adj-strip__location:hover{color:var(--color-text, #333)}.modal-content--dark .modal-adj-strip__location{color:#fff9}.modal-content--dark .modal-adj-strip__location:hover{color:#ffffffe6}.modal-adj-strip__location svg{flex-shrink:0;opacity:.5}.modal-adj-strip__location-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-adj-strip__search{display:flex;align-items:center;gap:.375rem;width:100%;position:relative}.modal-adj-strip__locate-btn{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;padding:0;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg, #fff);color:var(--color-text-secondary, #888);cursor:pointer;transition:all .15s}.modal-adj-strip__locate-btn:hover{border-color:var(--color-primary, #4a90d9);color:var(--color-primary, #4a90d9)}.modal-adj-strip__locate-btn--loading{opacity:.5;cursor:wait}@keyframes locate-pulse{0%,to{opacity:.5}50%{opacity:1}}.modal-adj-strip__locate-btn--loading svg{animation:locate-pulse 1s ease-in-out infinite}.modal-content--dark .modal-adj-strip__locate-btn{background:#ffffff14;border-color:#fff3;color:#ffffff80}.modal-content--dark .modal-adj-strip__locate-btn:hover{border-color:#ffffff80;color:#ffffffe6}.modal-adj-strip__search-input{flex:1;min-width:0;padding:.2rem .375rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg, #fff);color:var(--color-text, #333);font:inherit;font-size:.75rem;outline:none}.modal-adj-strip__search-input:focus{border-color:var(--color-primary, #4a90d9)}.modal-content--dark .modal-adj-strip__search-input{background:#ffffff14;border-color:#fff3;color:#ffffffe6}.modal-adj-strip__search-close{background:none;border:none;padding:.125rem;cursor:pointer;color:var(--color-text-secondary, #888);display:flex;align-items:center;flex-shrink:0}.modal-adj-strip__search-close:hover{color:var(--color-text, #333)}.modal-content--dark .modal-adj-strip__search-close{color:#ffffff80}.modal-content--dark .modal-adj-strip__search-close:hover{color:#ffffffe6}.modal-adj-strip__search-results{position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background:var(--color-bg, #fff);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 12px #0000001f;z-index:10;max-height:180px;overflow-y:auto}.modal-content--dark .modal-adj-strip__search-results{background:#1e1e1e;border-color:#ffffff26;box-shadow:0 4px 12px #0006}.modal-adj-strip__search-result{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;width:100%;padding:.4rem .5rem;border:none;background:none;font:inherit;font-size:.75rem;color:var(--color-text, #333);cursor:pointer;text-align:left}.modal-adj-strip__search-result:hover{background:var(--color-surface, rgba(0, 0, 0, .04))}.modal-content--dark .modal-adj-strip__search-result{color:#ffffffd9}.modal-content--dark .modal-adj-strip__search-result:hover{background:#ffffff14}.modal-adj-strip__search-result+.modal-adj-strip__search-result{border-top:1px solid var(--color-border)}.modal-content--dark .modal-adj-strip__search-result+.modal-adj-strip__search-result{border-top-color:#ffffff14}.modal-adj-strip__search-result-name{font-weight:500}.modal-adj-strip__search-result-region{color:var(--color-text-secondary, #888);font-size:.6875rem;white-space:nowrap}.modal-content--dark .modal-adj-strip__search-result-region{color:#ffffff73}.modal-adj-strip__search-loading{padding:.375rem .5rem;font-size:.6875rem;color:var(--color-text-secondary, #888);position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background:var(--color-bg, #fff);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 12px #0000001f;z-index:10}.modal-content--dark .modal-adj-strip__search-loading{background:#1e1e1e;border-color:#ffffff26;color:#ffffff80}.modal-adj-strip__clear{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:none;background:none;color:var(--color-text-secondary, #aaa);cursor:pointer;opacity:.5;transition:opacity .15s,color .15s}.modal-adj-strip__clear:hover{opacity:1;color:var(--color-text, #333)}.modal-content--dark .modal-adj-strip__clear{color:#ffffff59}.modal-content--dark .modal-adj-strip__clear:hover{color:#fffc}.modal-adj-strip__toggles{display:flex;gap:.375rem;flex-shrink:0}.modal-adj-strip__pill{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .5rem;border:1px solid var(--color-border);border-radius:999px;background:transparent;color:var(--color-text-secondary, #888);font-size:.6875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s ease;white-space:nowrap}.modal-adj-strip__pill:hover{border-color:var(--color-text-secondary, #999);color:var(--color-text, #333)}.modal-adj-strip__pill--on.modal-adj-strip__pill--heat{background:#dc32321f;border-color:#dc323266;color:#c53030}[data-theme=dark] .modal-adj-strip__pill--on.modal-adj-strip__pill--heat,.modal-content--dark .modal-adj-strip__pill--on.modal-adj-strip__pill--heat{background:#dc323233;border-color:#dc323280;color:#fc8181}.modal-adj-strip__pill--on.modal-adj-strip__pill--altitude{background:#2864dc1f;border-color:#2864dc66;color:#2b6cb0}[data-theme=dark] .modal-adj-strip__pill--on.modal-adj-strip__pill--altitude,.modal-content--dark .modal-adj-strip__pill--on.modal-adj-strip__pill--altitude{background:#2864dc33;border-color:#2864dc80;color:#63b3ed}.modal-content--dark .modal-adj-strip__pill{border-color:#ffffff26;color:#ffffff80}.modal-content--dark .modal-adj-strip__pill:hover{border-color:#ffffff4d;color:#fffc}.modal-adj-strip__pill svg{flex-shrink:0;opacity:.7}.modal-adj-strip__pill--on svg{opacity:1}@keyframes session-enter{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-session{border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;margin-bottom:.75rem;animation:session-enter .4s cubic-bezier(.34,1.56,.64,1) backwards}.modal-session:nth-child(1){animation-delay:.08s}.modal-session:nth-child(2){animation-delay:.16s}.modal-session:nth-child(3){animation-delay:.24s}.modal-session:nth-child(4){animation-delay:.32s}.modal-session__workout-detail{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s cubic-bezier(.34,1.56,.64,1)}.modal-session__workout-detail--collapsed{grid-template-rows:0fr}.modal-session__workout-inner{overflow:hidden}.modal-session__toggle{background:none;border:none;padding:0;margin-left:.25rem;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:inherit;opacity:.5;border-radius:50%;transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .15s,background .15s;flex-shrink:0}@media(hover:hover){.modal-session__toggle:hover{opacity:.8;background:#8080801f}}.modal-session__toggle--collapsed{transform:rotate(-90deg)}@keyframes swipe-hint-pulse{0%,to{opacity:0}50%{opacity:.6}}.modal-swipe-indicator{position:absolute;top:50%;transform:translateY(-50%);width:4px;height:60px;border-radius:2px;background:#fff6;pointer-events:none;opacity:0;transition:opacity .15s ease}.modal-swipe-indicator--left{left:4px}.modal-swipe-indicator--right{right:4px}.modal-swipe-indicator--active{opacity:1}@media(prefers-reduced-motion:reduce){.modal-session{animation:none}.modal-session__workout-detail,.modal-session__toggle{transition:none}}.modal-session .zone-tag{font-size:.85rem}.modal-session h4{font-size:.9rem;font-weight:600;margin:0;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;min-height:34px}.modal-session h4 .redistribute-toggle--inline,.modal-session h4 .redistribute-toggle--past{flex-basis:100%;margin-top:.125rem}.modal-session__miles-actual{font-weight:700}.modal-session__miles-sep{margin:0 .1rem;opacity:.5}.modal-session__detail{font-size:.85rem;color:var(--color-text-secondary);margin-bottom:.25rem;margin-top:.5rem}.modal-session__pace{font-family:var(--font-mono);font-size:.85rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-primary);margin-top:.5rem}.modal-session__heat-adj{display:flex;align-items:center;gap:.375rem;font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:#fff;margin-top:.25rem;padding:.25rem .5rem;background:#dc3232bf;border-radius:4px;width:fit-content;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}[data-theme=dark] .modal-session__heat-adj{background:#dc3232b3}.modal-session__heat-adj--altitude{color:#fff;background:#2864dcbf}[data-theme=dark] .modal-session__heat-adj--altitude{background:#2864dcb3}.modal-session__heat-adj--combined{color:#fff;background:#8a46dcbf}[data-theme=dark] .modal-session__heat-adj--combined{background:#8a46dcb3}.modal-session__heat-adj svg{flex-shrink:0;opacity:.9}.modal-session__heat-pct{opacity:.6;font-size:.6875rem}.modal-total{text-align:center;padding-top:.75rem;border-top:1px solid var(--color-border);font-family:var(--font-mono);font-size:1rem;font-weight:600;font-variant-numeric:tabular-nums}.dt-warning-badge{display:flex;align-items:flex-start;gap:.75rem;padding:.875rem 1rem;margin-bottom:1.5rem;border-radius:var(--radius);font-size:.84rem;line-height:1.5;font-weight:450;color:#92400e;background:linear-gradient(135deg,#fbbf241f,#f59e0b2e);border:1px solid rgba(245,158,11,.3);border-left:3px solid #f59e0b;box-shadow:0 1px 3px #f59e0b14,inset 0 1px #ffffff80;transition:box-shadow .3s ease,border-color .3s ease}@media(hover:hover){.dt-warning-badge:hover{box-shadow:0 2px 8px #f59e0b26,inset 0 1px #ffffff80;border-color:#f59e0b73}}.dt-warning-badge__icon{flex-shrink:0;color:#d97706;margin-top:1px}.dt-warning-badge__text strong{font-weight:650;color:#78350f}.dt-warning-badge__sub{display:block;margin-top:.2rem;opacity:.75;font-size:.8rem}[data-theme=dark] .dt-warning-badge{color:#fcd34d;background:linear-gradient(135deg,#fbbf2414,#f59e0b1f);border-color:#fbbf2433;border-left-color:#fbbf24;box-shadow:0 1px 3px #0000004d,inset 0 1px #fbbf240f}[data-theme=dark] .dt-warning-badge__text strong{color:#fde68a}[data-theme=dark] .dt-warning-badge__icon{color:#fbbf24}@media(hover:hover){[data-theme=dark] .dt-warning-badge:hover{box-shadow:0 2px 10px #fbbf241f,inset 0 1px #fbbf240f;border-color:#fbbf2459}}.low-mileage-dt-badge{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;margin-bottom:1rem;border-radius:var(--radius);font-size:.85rem;font-weight:500;color:#fff;background:linear-gradient(135deg,#8b5cf6,#ec4899);background-size:200% 200%;animation:low-mileage-dt-drift 4s ease-in-out infinite;box-shadow:0 1px 3px #8b5cf640;transition:box-shadow .3s ease,transform .3s ease;cursor:default}@media(hover:hover){.low-mileage-dt-badge:hover{animation:low-mileage-dt-pulse 1.5s ease-in-out infinite;box-shadow:0 4px 16px #ec489966;transform:scale(1.01)}}.low-mileage-dt-badge strong{font-weight:700}.low-mileage-dt-badge__icon{font-size:1.1rem;flex-shrink:0}@keyframes low-mileage-dt-drift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes low-mileage-dt-pulse{0%,to{background-position:0% 50%;transform:scale(1);box-shadow:0 4px 16px #ec489966}50%{background-position:100% 50%;transform:scale(1.02);box-shadow:0 6px 20px #8b5cf680}}.low-mileage-plan-badge{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;margin-bottom:1.5rem;border-radius:var(--radius);font-size:.85rem;font-weight:500;color:#f0fdf4;background:linear-gradient(135deg,#0d9488,#2563eb);background-size:200% 200%;animation:low-mileage-plan-drift 5s ease-in-out infinite;box-shadow:0 1px 4px #0d948840;transition:box-shadow .3s ease,transform .2s ease;cursor:default}@media(hover:hover){.low-mileage-plan-badge:hover{box-shadow:0 4px 14px #0d948859;transform:scale(1.005)}}.low-mileage-plan-badge strong{font-weight:700}.low-mileage-plan-badge__icon{flex-shrink:0;color:#bbf7d0}@keyframes low-mileage-plan-drift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.share-spinner{animation:share-spin .8s linear infinite}.shared-plan-badge{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;margin-bottom:1rem;border-radius:var(--radius);font-size:.85rem;font-weight:500;color:#f0fdfa;background:linear-gradient(135deg,#0d9488,#0284c7);background-size:200% 200%;animation:shared-badge-drift 4s ease-in-out infinite;box-shadow:0 1px 3px #0d948840;cursor:default}@media(hover:hover){.shared-plan-badge:hover{box-shadow:0 4px 16px #0284c759}}.shared-plan-badge strong{font-weight:700}.shared-plan-badge__icon{flex-shrink:0;display:flex;align-items:center}@keyframes shared-badge-drift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.coached-plan-badge{display:flex;align-items:center;gap:.625rem;padding:.625rem 1rem;margin-bottom:1rem;border-radius:var(--radius);font-size:.8125rem;font-weight:500;color:var(--color-purple);background:#8b5cf61a;border:1px solid rgba(139,92,246,.2);cursor:default}.coached-plan-badge strong{font-weight:700}.coached-plan-badge__icon{flex-shrink:0;display:flex;align-items:center}.low-mileage-dt-info{background:linear-gradient(135deg,#8b5cf61a,#ec48991a);border:1px solid rgba(139,92,246,.3);border-radius:var(--radius);padding:.75rem 1rem;font-size:.85rem;color:#7c3aed}.low-mileage-dt-info strong{font-weight:600}.strides-note{background:#fdf4ff;border:1px solid rgba(134,25,143,.25);border-radius:var(--radius);padding:.75rem 1rem;font-size:.85rem;color:#86198f}.strides-note strong{font-weight:600}@media(max-width:768px){.cal-controls__btn--refresh{display:none}.plan-header{gap:.5rem;justify-content:center}.plan-header__left{background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.1875rem}.plan-header__left .cal-controls{border:none;background:none;padding:0;border-radius:0}.plan-header__left .plan-actions:after{content:"";width:1px;height:20px;background:var(--color-border);margin:0 .1875rem;flex-shrink:0}.plan-header__left .plan-actions>.add-menu-dropdown~.cal-controls__divider{display:none}.plan-header__nav-mobile{display:contents}.plan-header__right,.cal-controls__btn--nav-arrow,.cal-controls__divider--nav{display:none}.week-nav__arrow--mobile{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;padding:0;flex-shrink:0;transition:color .15s}.week-nav__arrow--mobile:active:not(:disabled){color:var(--color-text);background:var(--color-bg)}.week-nav__arrow--mobile:disabled{opacity:.2;cursor:not-allowed}.plan-info-dropdown--desktop{display:none}.plan-header__info-mobile{display:contents}.paces-dropdown--desktop{display:none}.plan-header__paces-mobile{display:contents}.add-menu-dropdown .add-menu-panel{display:none}.plan-info-panel{position:fixed;inset:auto 0 0;border-radius:var(--radius) var(--radius) 0 0;min-width:unset}.month-view__week-grid,.month-view__day-headers{gap:.25rem}.day-card--compact{padding:.25rem;min-height:60px}.day-card--compact .day-card__header{margin-bottom:.25rem}.day-card--compact .day-card__date-month,.day-card--compact .day-card__edit-btn,.day-card--compact .day-card__rest-btn{display:none}.day-card--compact .day-card__session{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-card--compact .day-card__footer{gap:.125rem;margin-top:.25rem}.day-card--compact .day-card__checkbox{width:12px;height:12px;min-width:12px;min-height:12px}.modal-content{padding:1.25rem}.week-nav-info h3{font-size:.95rem}.cal-controls__btn{width:40px;height:40px}}.add-menu-dropdown{position:relative}.add-menu-panel{position:absolute;top:calc(100% + .375rem);left:0;z-index:50;background:linear-gradient(135deg,#6366f11f,#ec489914),color-mix(in srgb,var(--color-surface) 82%,transparent);border:1px solid rgba(139,92,246,.25);border-radius:var(--radius);box-shadow:0 4px 16px #8b5cf61f;padding:.25rem 0;min-width:180px;white-space:nowrap;animation:fade-in .1s ease;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.add-menu-panel__item{display:block;width:100%;text-align:left;padding:.5rem 1rem;font-size:.85rem;background:none;border:none;color:var(--color-text);cursor:pointer;font-family:inherit}@media(hover:hover){.add-menu-panel__item:hover{background:#8b5cf61a}}@media(max-width:480px){.plan-toolbar{padding-left:.375rem;padding-right:.375rem}.cal-controls__btn{width:30px;height:30px}.cal-controls__btn svg{width:14px;height:14px}.plan-header__left{max-width:100%}.week-nav-info h3{font-size:.85rem}.week-nav-subtitle{font-size:.7rem;padding:.2rem .625rem}.week-nav-badge{font-size:.6rem;padding:.1rem .375rem}.month-view__week-grid,.month-view__day-headers{gap:2px}.day-card--compact{padding:2px;min-height:48px;border-radius:var(--radius-sm)}.day-card--compact .day-card__header{margin-bottom:1px}.day-card--compact .day-card__day{font-size:.55rem}.day-card--compact .day-card__session{font-size:.6rem}.day-card--compact .zone-tag{font-size:.55rem;padding:0 .25rem;margin-right:.125rem}.day-card--compact .day-card__miles{font-size:.6rem}.day-card--compact .day-card__footer{margin-top:.125rem}.month-header{font-size:.6rem}.month-view__week-label{padding:.125rem 0}.month-view__week-num{font-size:.65rem}.month-view__week-mileage{font-size:.6rem}.modal-session{padding:.75rem}.mileage-stepper__btn{width:32px;height:32px;font-size:1rem}.mileage-stepper__field{height:32px}.paces-panel{position:fixed;inset:auto 0 0;z-index:200;border-radius:16px 16px 0 0;min-width:unset;max-height:50vh;overflow-y:auto;box-shadow:0 -4px 20px #00000026}.context-menu{left:0!important;right:0;bottom:0!important;top:auto!important;width:100%;border-radius:16px 16px 0 0;min-width:unset;box-shadow:0 -4px 20px #00000026;animation:slide-up .2s ease}.context-menu__item{padding:.875rem 1.25rem;font-size:1rem}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.plan-info-panel--sheet,.paces-panel--sheet,.add-menu-panel--sheet{display:none}@media(max-width:768px){.plan-info-panel--sheet{display:block;position:fixed;inset:auto 0 0;z-index:200;border-radius:16px 16px 0 0;min-width:unset;box-shadow:0 -4px 20px #00000026;animation:slide-up .2s ease}.paces-panel--sheet{display:block;position:fixed;inset:auto 0 0;z-index:200;border-radius:16px 16px 0 0;min-width:unset;max-height:50vh;overflow-y:auto;box-shadow:0 -4px 20px #00000026;animation:slide-up .2s ease}.add-menu-panel--sheet{display:block;position:fixed;inset:auto 0 0;z-index:200;border-radius:16px 16px 0 0;min-width:unset;box-shadow:0 -4px 20px #00000026;animation:slide-up .2s ease}.add-menu-panel--sheet .add-menu-panel__item{padding:.875rem 1.25rem;font-size:1rem}}@media(pointer:coarse){.day-card__edit-btn,.day-card__rest-btn{opacity:.6}.day-card__checkbox{width:20px;height:20px;min-width:20px;min-height:20px}.day-card__particle,.firework{display:none}@media(hover:hover){.day-card--double-threshold:hover,.day-card--long-run:hover,.day-card--workout:hover,.day-card--vo2max:hover,.day-card--hill:hover,.day-card--tuneup:hover,.day-card--marathon:hover,.day-card--long-workout:hover{animation:none;background-size:100% 100%}.day-card--speed:hover,.day-card--race-day:hover .firework--1,.day-card--race-day:hover .firework--2,.day-card--race-day:hover .firework--3{animation:none}}.session-edit-btn,.session-undo-btn,.session-check-btn,.session-delete-btn{width:36px;height:36px;min-height:36px;opacity:.7}[data-tooltip]:after{display:none}.modal-content.modal-content--double-threshold,.modal-content.modal-content--long-run,.modal-content.modal-content--workout,.modal-content.modal-content--vo2max,.modal-content.modal-content--hill,.modal-content.modal-content--tuneup,.modal-content.modal-content--marathon,.modal-content.modal-content--long-workout{background-size:200% 200%;animation:gradient-shift 3s ease-in-out infinite,bg-pulse 2.5s ease-in-out infinite}.modal-content.modal-content--speed{background-size:200% 200%;animation:speed-gradient-sweep 2s ease-in-out infinite}.week-grid--dragging{touch-action:none}.cal-controls__btn{width:40px;height:40px;min-height:40px}}.context-menu{position:fixed;z-index:300;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:.25rem 0;min-width:150px;animation:fade-in .1s ease}.context-menu__item{display:block;width:100%;text-align:left;padding:.5rem 1rem;font-size:.85rem;background:none;border:none;color:var(--color-text);cursor:pointer;font-family:inherit}@media(hover:hover){.context-menu__item:hover{background:var(--color-bg)}}.context-menu__item--danger{color:#dc2626}@media(hover:hover){.context-menu__item--danger:hover{background:#fef2f2}}.add-race-modal .modal-header{margin-bottom:1rem}.add-race-modal__form{display:flex;flex-direction:column;gap:1.25rem}.add-race-modal__group{display:flex;flex-direction:column;gap:.375rem}.add-race-modal__group>label{font-size:.8rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.add-race-modal__group input[type=date],.add-race-modal__group input[type=text],.add-race-modal__group select{width:100%;padding:.5rem .75rem;font-size:.9rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:inherit}.add-race-modal__hint{font-size:.8rem;color:var(--color-text-muted);font-style:italic;margin-top:.25rem}.add-race-modal__computed-time{display:inline-block;background:linear-gradient(135deg,#6366f126,#ec489926);padding:.375rem .75rem;border-radius:999px;font-size:.9rem;font-weight:600;color:var(--color-text);margin-top:.25rem}.add-race-modal__toggle{display:inline-flex;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.add-race-modal__toggle--full{display:flex;width:100%}.add-race-modal__toggle--full button{flex:1}.add-race-modal__toggle button{border-radius:0;padding:.375rem .75rem;font-size:.8rem;background:var(--color-surface);color:var(--color-text-secondary);border:none;border-right:1px solid var(--color-border);cursor:pointer;font-family:inherit}.add-race-modal__toggle button:last-child{border-right:none}.add-race-modal__toggle button.active{background:var(--color-primary);color:#fff}.add-race-modal__error{font-size:.85rem;color:#dc2626;font-weight:500}.add-race-modal__submit{width:100%;padding:.625rem;font-size:.9rem;font-weight:600;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;transition:background .15s}@media(hover:hover){.add-race-modal__submit:hover{background:var(--color-primary-hover)}}.day-card--additional-race{background:linear-gradient(135deg,#0891b2,#6366f1);border-color:transparent;background-size:100% 100%;overflow:hidden;transition:transform var(--transition),box-shadow var(--transition),background-size .3s ease}@media(hover:hover){.day-card--additional-race:hover{background-size:200% 200%;animation:gradient-shift 3s ease-in-out infinite,bg-pulse 2.5s ease-in-out infinite;box-shadow:0 4px 16px #6366f14d}}.day-card--additional-race .day-card__day,.day-card--additional-race .day-card__date,.day-card--additional-race .day-card__session,.day-card--additional-race .day-card__miles,.day-card--additional-race .day-card__race-label{color:#fff}.day-card--additional-race .zone-tag{background:#00000073;color:#fff}.mileage-stepper{display:inline-flex;align-items:center;gap:.375rem}.mileage-stepper__field{display:inline-flex;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;background:var(--color-surface);height:26px}.mileage-stepper__field:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.mileage-stepper__field .mileage-input{border:none;border-radius:0;padding:0;width:3ch;height:100%;line-height:1}.mileage-stepper__field .mileage-input:focus{outline:none;border-color:transparent;box-shadow:none}.mileage-stepper__btn{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;font-size:.8rem;font-weight:600;color:var(--color-text-muted);cursor:pointer;transition:background .15s,color .15s;padding:0;line-height:1}@media(hover:hover){.mileage-stepper__btn:hover:not(:disabled){background:var(--color-primary-light);color:var(--color-primary)}}.mileage-stepper__btn:disabled{opacity:.3;cursor:not-allowed}.session-modified-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#f59e0b;margin-left:.35rem;vertical-align:middle}.wc-edit-inline{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.wc-edit-inline .mileage-stepper__field{height:24px}.wc-edit-inline .mileage-stepper__btn{width:20px;height:20px;font-size:.75rem}.wc-value{display:inline-flex;align-items:center;justify-content:center;min-width:2.5ch;text-align:center;font-size:.8rem;font-weight:500;padding:0 .15rem}.wc-inline-text{font-size:.8rem;white-space:nowrap}.wc-edit-btn{background:none;border:none;font-size:.8rem;line-height:1;padding:0;color:var(--color-text-muted);width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);cursor:pointer;opacity:.6;margin-left:.375rem;vertical-align:middle}@media(hover:hover){.wc-edit-btn:hover{opacity:1;background:var(--color-bg);color:var(--color-primary)}}.modal-content--dark .wc-edit-btn{color:#fff9}@media(hover:hover){.modal-content--dark .wc-edit-btn:hover{opacity:1;background:#ffffff26;color:#fff}}.modal-content--dark .wc-value{color:#fff}.modal-content--dark .wc-inline-text{color:#ffffffb3}.wc-seg-label{font-weight:500;letter-spacing:.01em}.wc-edit-delta{font-size:.75rem;font-weight:600;padding:.1rem .3rem;border-radius:4px;white-space:nowrap;margin-left:.15rem}.wc-edit-delta--over{color:#059669;background:#0596691a}.wc-edit-delta--under{color:#dc2626;background:#dc26261a}.modal-content--dark .wc-edit-delta--over{color:#34d399;background:#34d3991f}.modal-content--dark .wc-edit-delta--under{color:#f87171;background:#f871711f}[data-theme=dark] .wc-edit-delta--over{color:#34d399;background:#34d3991f}[data-theme=dark] .wc-edit-delta--under{color:#f87171;background:#f871711f}.day-modified-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#f59e0b;margin-left:.4rem;vertical-align:middle}.redistribute-toggle{display:flex;border:1px solid var(--color-border);border-radius:var(--radius);margin-top:.75rem}.redistribute-toggle--inline{margin-top:0;height:26px}.redistribute-toggle--inline .redistribute-toggle__btn{padding:0 .5rem;font-size:.7rem;line-height:1}.redistribute-toggle--no-targets{font-size:.65rem;color:var(--color-text-muted);font-style:italic;padding:0 .5rem;display:flex;align-items:center;white-space:nowrap;border:1px solid var(--color-border);border-radius:var(--radius);height:26px;opacity:.7}.redistribute-toggle__btn{flex:1;padding:.375rem .75rem;font-size:.75rem;font-family:inherit;border:none;background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s}.redistribute-toggle__btn:first-child{border-right:1px solid var(--color-border);border-radius:var(--radius) 0 0 var(--radius)}.redistribute-toggle__btn:last-child{border-radius:0 var(--radius) var(--radius) 0}.redistribute-toggle__btn--active{background:var(--color-primary);color:#fff}@media(hover:hover){.redistribute-toggle__btn:not(.redistribute-toggle__btn--active):hover{background:var(--color-bg)}}.redistribute-toggle__btn--disabled{opacity:.4;cursor:not-allowed}.redistribute-toggle--past{flex-wrap:wrap;gap:0}.redistribute-toggle--past .redistribute-toggle__btn{border-right:1px solid var(--color-border);border-radius:0}.redistribute-toggle--past .redistribute-toggle__btn:first-child{border-radius:var(--radius) 0 0 var(--radius)}.redistribute-toggle--past .redistribute-toggle__btn:last-of-type{border-right:none;border-radius:0 var(--radius) var(--radius) 0}.redistribute-toggle__warning{width:100%;font-size:.65rem;color:var(--color-warning, #d97706);padding:.25rem .5rem 0;line-height:1.3}.day-card__rest-btn--disabled,.modal-rest-btn--disabled{opacity:.3;cursor:not-allowed;pointer-events:auto}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--color-text);color:var(--color-bg);font-size:.7rem;font-weight:400;line-height:1.3;padding:.35rem .5rem;border-radius:4px;white-space:normal;width:max-content;max-width:220px;text-align:center;pointer-events:none;opacity:0;transition:opacity .15s .15s;z-index:100}@media(hover:hover){[data-tooltip]:hover:after{opacity:1}}.modal-revert-btn[data-tooltip]:after,.modal-rest-btn[data-tooltip]:after,.cal-controls__btn[data-tooltip]:after,.modal-content .redistribute-toggle__btn[data-tooltip]:after{bottom:auto;top:calc(100% + 6px)}.cal-controls__btn:last-child[data-tooltip]:after,.modal-content .redistribute-toggle__btn:last-of-type[data-tooltip]:after{left:auto;right:0;transform:none}.modal-content .redistribute-toggle__btn:first-child[data-tooltip]:after{left:0;transform:none}.day-card__modified-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#f59e0b;margin-left:.25rem;vertical-align:1px}.day-card--vo2max .day-card__modified-dot,.day-card--race-day .day-card__modified-dot{background:#fff}.modal-additional-race-badge{display:inline-block;background:linear-gradient(135deg,#0891b2,#6366f1);color:#fff;font-size:.8rem;font-weight:700;padding:.25rem .75rem;border-radius:999px;text-transform:uppercase;letter-spacing:.05em}.btn-remove-race{display:block;width:100%;margin-top:1rem;padding:.5rem;font-size:.85rem;font-weight:600;background:none;border:1.5px solid #dc2626;border-radius:var(--radius-sm);color:#dc2626;cursor:pointer;font-family:inherit;transition:background .15s,color .15s}@media(hover:hover){.btn-remove-race:hover{background:#dc2626;color:#fff}}.week-grid--holding,.week-grid--dragging{-webkit-user-select:none;user-select:none;touch-action:none}.week-grid--dragging .day-card,.month-view__week-grid.week-grid--dragging .day-card{transition:transform .2s cubic-bezier(.2,0,0,1)}.day-card--dragging{position:fixed;z-index:1000;opacity:.92;transform:scale(1.04);box-shadow:0 16px 40px #0003;pointer-events:none;cursor:grabbing}.day-card.day-card--holding{transform:translateY(-4px) scale(1.02);box-shadow:0 8px 24px #0000001f;z-index:2;transition:transform .15s ease,box-shadow .15s ease;overflow:visible}.day-card--holding:after{content:"";position:absolute;inset:2px;border-radius:inherit;background:radial-gradient(ellipse at 50% 60%,rgba(59,130,246,.06) 0%,rgba(139,92,246,.03) 50%,transparent 80%);pointer-events:none;animation:hold-shimmer 1.2s ease-in-out infinite}@keyframes hold-shimmer{0%,to{opacity:.4}50%{opacity:1}}.day-card.day-card--drop-zone{background:repeating-linear-gradient(0deg,transparent,transparent 11px,rgba(59,130,246,.08) 11px,rgba(59,130,246,.08) 12px),repeating-linear-gradient(90deg,transparent,transparent 11px,rgba(59,130,246,.08) 11px,rgba(59,130,246,.08) 12px),#eff6ffd9;border-color:transparent;outline:2px dashed rgba(59,130,246,.35);outline-offset:-2px;box-shadow:inset 0 0 24px #3b82f60f;animation:drop-zone-pulse 1.5s ease-in-out infinite;overflow:visible}.day-card--drop-zone>*{opacity:0}@media(hover:hover){.day-card--drop-zone:hover,.day-card.day-card--drop-zone:hover{transform:none;box-shadow:inset 0 0 24px #3b82f60f}}.day-card--drop-zone:before{content:"";position:absolute;inset:-5px;border-radius:calc(var(--radius) + 5px);border:2px solid rgba(59,130,246,.2);animation:portal-ring 2s ease-in-out infinite;pointer-events:none}.day-card--drop-zone:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 50% 50%,rgba(59,130,246,.08) 0%,rgba(139,92,246,.04) 40%,transparent 70%);animation:portal-shimmer 2s ease-in-out infinite;pointer-events:none}@keyframes drop-zone-pulse{0%,to{outline-color:#3b82f640;box-shadow:inset 0 0 20px #3b82f60a}50%{outline-color:#3b82f680;box-shadow:inset 0 0 30px #3b82f61a,0 0 12px #3b82f60f}}@keyframes portal-ring{0%,to{transform:scale(1);opacity:.3;border-color:#3b82f633}50%{transform:scale(1.02);opacity:.8;border-color:#6366f166}}@keyframes portal-shimmer{0%,to{opacity:.4;transform:scale(.95)}50%{opacity:1;transform:scale(1.02)}}.adjacent-hard-warning{background:var(--color-red-light);border:1px solid var(--color-red);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;font-size:.85rem;color:#991b1b;display:flex;align-items:center;gap:.5rem}.adjacent-hard-warning--inline{position:absolute;right:0;top:50%;transform:translateY(-50%);padding:.125rem .625rem;margin:0;font-size:.7rem;border-radius:999px;white-space:nowrap}.hard-group-outline{position:absolute;inset:0;outline:2px solid var(--color-red);outline-offset:3px;border-radius:var(--radius);pointer-events:none;z-index:1}.day-card.day-card--drop-zone--warning{background:repeating-linear-gradient(0deg,transparent,transparent 11px,rgba(239,68,68,.08) 11px,rgba(239,68,68,.08) 12px),repeating-linear-gradient(90deg,transparent,transparent 11px,rgba(239,68,68,.08) 11px,rgba(239,68,68,.08) 12px),#fef2f2d9;outline-color:#ef444459;animation:drop-zone-pulse-warning 1.5s ease-in-out infinite}.day-card--drop-zone--warning:before{border-color:#ef444433;animation:portal-ring-warning 2s ease-in-out infinite}.day-card--drop-zone--warning:after{background:radial-gradient(ellipse at 50% 50%,rgba(239,68,68,.08) 0%,rgba(239,68,68,.04) 40%,transparent 70%)}@keyframes drop-zone-pulse-warning{0%,to{outline-color:#ef444440;box-shadow:inset 0 0 20px #ef44440a}50%{outline-color:#ef444480;box-shadow:inset 0 0 30px #ef44441a,0 0 12px #ef44440f}}@keyframes portal-ring-warning{0%,to{transform:scale(1);opacity:.3;border-color:#ef444433}50%{transform:scale(1.02);opacity:.8;border-color:#ef444466}}@media(min-width:769px){.week-grid .day-card:not(.day-card--off),.month-view__week-grid .day-card:not(.day-card--off){cursor:default}.week-grid--holding .day-card:not(.day-card--off),.month-view__week-grid.week-grid--holding .day-card:not(.day-card--off){cursor:grab}.week-grid--dragging .day-card:not(.day-card--off),.month-view__week-grid.week-grid--dragging .day-card:not(.day-card--off){cursor:grabbing}}.strava-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.375rem .75rem;border-radius:6px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);font-size:.75rem;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap}@media(hover:hover){.strava-btn:hover{border-color:#fc4c02;color:#fc4c02}.strava-btn--connect:hover{background:#fc4c0214}}.strava-btn--disconnect{color:var(--color-text-secondary)}@media(hover:hover){.strava-btn--disconnect:hover{color:#e74c3c;border-color:#e74c3c}}.strava-sync-status{display:flex;align-items:center;justify-content:center;gap:.375rem;color:var(--color-text-secondary);font-size:.675rem;font-weight:500;opacity:.7;padding:.125rem 0}.strava-sync__spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.day-card--off .day-card__footer{justify-content:flex-end;min-height:14px;padding:0 .25rem .25rem 0}.day-card__strava-icon{display:inline-flex;align-items:center;font-size:.65rem}.day-card__strava-icon--matched{color:#22c55e}.day-card__strava-icon--unmatched{color:#f59e0b}.day-card__checkbox--strava.day-card__checkbox--checked{border-color:#fc4c02;background:#fc4c02}.strava-actual{margin-top:.5rem;padding:.5rem .75rem;border-radius:6px;font-size:.8rem;border-left:3px solid}.strava-actual--matched{background:#f1fdf5;border-left-color:#22c55e}.strava-actual--unmatched{background:#fefaf2;border-left-color:#f59e0b}.strava-actual__header{display:flex;align-items:center;gap:.35rem;margin-bottom:.25rem}.strava-actual__label{font-weight:600;color:var(--color-text-secondary);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}.strava-actual__check{color:#22c55e;font-weight:700}.strava-actual__desc{margin:.15rem 0;color:var(--color-text)}.strava-actual__stats{margin:.15rem 0;color:var(--color-text-secondary);font-family:var(--font-mono);font-size:.75rem;font-variant-numeric:tabular-nums}.strava-actual__intervals-toggle{display:flex;align-items:center;gap:.3rem;margin:.15rem 0;padding:0;background:none;border:none;font-size:.8rem;color:var(--color-text);cursor:pointer;font-family:inherit;line-height:1.4;text-align:left}.strava-actual__intervals-toggle:hover{color:var(--color-text-secondary)}.strava-actual__intervals-chevron{flex-shrink:0;transition:transform .2s ease}.strava-actual__intervals-chevron--open{transform:rotate(90deg)}.strava-actual__intervals{margin:.25rem 0;padding:.3rem 0;font-size:.7rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.strava-actual__interval-row{display:grid;grid-template-columns:4.5rem 3rem 2.5rem 1fr;gap:.4rem;padding:.15rem 0;align-items:baseline;color:var(--color-text)}.strava-actual__interval-row--warmup{color:var(--color-text-secondary)}.strava-actual__interval-label{font-family:var(--font-sans, inherit);font-size:.6rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-tertiary, var(--color-text-secondary))}.strava-actual__interval-dist{text-align:right}.strava-actual__interval-time{text-align:right;color:var(--color-text-secondary)}.strava-actual__interval-pace{color:var(--color-text-secondary)}.strava-actual__effort-eq{display:inline-flex;align-items:center;gap:.3rem;margin:0;font-size:.7rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.strava-actual__effort-eq--heat{color:#c53030}.strava-actual__effort-eq--altitude{color:#2563eb}.strava-actual__effort-eq--combined{color:#7c3aed}.strava-actual__effort-eq svg{flex-shrink:0;opacity:.8}.strava-actual__effort-eq-pace{font-weight:600}.strava-actual__effort-eq-label{font-family:var(--font-sans, inherit);font-size:.6rem;text-transform:uppercase;letter-spacing:.03em;opacity:.65}.strava-actual__interval-adj{font-size:.65rem;margin-left:.3rem;opacity:.75}.strava-actual__interval-adj:before{content:"≈";margin-right:.1rem}.strava-actual__interval-adj--heat{color:#c53030}.strava-actual__interval-adj--altitude{color:#2563eb}.strava-actual__interval-adj--combined{color:#7c3aed}.strava-actual__link{display:flex;align-items:center;color:#fc4c02;font-size:.7rem;text-decoration:none;margin-top:.25rem}@media(hover:hover){.strava-actual__link:hover{text-decoration:underline}}.strava-actual--extra{background:#fc4c020a;border-left-color:#fc4c02}.strava-unmatched{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--color-border)}.strava-unmatched__title{font-size:.75rem;color:var(--color-text-secondary);margin-bottom:.5rem}.strava-unmatched .strava-actual+.strava-actual{margin-top:.5rem}.strava-actual__components{margin-top:.35rem;display:flex;flex-direction:column;gap:.3rem}.strava-actual__component{padding:.25rem 0;border-top:1px solid rgba(255,255,255,.06);display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem;font-size:.7rem}.strava-actual__component:first-child{border-top:none}.strava-actual__component-stats{font-weight:600;color:var(--color-text-primary)}.strava-actual__component-desc{color:var(--color-text-secondary)}.strava-actual__delta{display:inline-block;font-size:.65rem;font-weight:600;padding:.05rem .25rem;border-radius:4px;margin-left:.3rem;vertical-align:middle}.strava-actual__delta--over{color:#15803d;background:#22c55e59}.strava-actual__delta--under{color:#b45309;background:#f59e0b59}[data-theme=dark] .strava-actual__delta--over{color:#22c55e;background:#22c55e59}[data-theme=dark] .strava-actual__delta--under{color:#f59e0b;background:#f59e0b59}.modal-content--dark .strava-actual__delta--over{color:#fff;background:#22c55e73}.modal-content--dark .strava-actual__delta--under{color:#fff;background:#f59e0b73}[data-theme=dark] .zone-tag--easy{color:#4ade80}[data-theme=dark] .zone-tag--threshold,[data-theme=dark] .zone-tag--lt2{color:#60a5fa}[data-theme=dark] .zone-tag--lt1{color:#a78bfa}[data-theme=dark] .zone-tag--interval{color:#fbbf24}[data-theme=dark] .zone-tag--long{color:#34d399}[data-theme=dark] .zone-tag--hill{color:#a3e635}[data-theme=dark] .zone-tag--tuneup{color:#a78bfa}[data-theme=dark] .zone-tag--speed{color:#f87171}[data-theme=dark] .zone-tag--marathon{color:#f472b6}[data-theme=dark] .zone-tag--long-workout{color:#34d399}[data-theme=dark] .zone-tag--strides{color:#c084fc}[data-theme=dark] .week-nav-badge--build{background:#3b82f626;color:#93c5fd}[data-theme=dark] .week-nav-badge--peak{background:#f59e0b26;color:#fcd34d}[data-theme=dark] .week-nav-badge--marathon{background:#ec489926;color:#f9a8d4}[data-theme=dark] .week-nav-badge--marathon-lr{background:#22c55e26;color:#86efac}[data-theme=dark] .week-nav-badge--race-week{background:#ec489926;color:#f9a8d4}[data-theme=dark] .mileage-warning{background:#f871711a;border-color:#f871714d;color:#fca5a5}[data-theme=dark] .short-block-warning{background:#fbbf241a;border-color:#fbbf244d;color:#fde68a}[data-theme=dark] .adjacent-hard-warning{background:#f871711a;border-color:#f871714d;color:#fca5a5}[data-theme=dark] .adjacent-hard-warning--inline{background:#f8717126;color:#fca5a5}[data-theme=dark] .rest-confirm-overlay{background:var(--color-surface);border-color:#7c3aed;box-shadow:0 8px 24px #7c3aed33,var(--shadow-md)}[data-theme=dark] .rest-day-confirm{background:#7c3aed1a;border-color:#a78bfa4d}[data-theme=dark] .modal-content--dark .rest-day-confirm{background:#1e1b2e;border-color:#a78bfa80}@media(hover:hover){[data-theme=dark] .modal-close:hover{background:#ffffff14}}@media(hover:hover){[data-theme=dark] .session-edit-btn:hover{background:#60a5fa1f}[data-theme=dark] .session-undo-btn:hover{background:#f871711f;color:#fca5a5}[data-theme=dark] .session-check-btn:hover{background:#4ade801f}[data-theme=dark] .session-delete-btn:hover{background:#f871711f;color:#fca5a5}}[data-theme=dark] .session-confirm-delete-btn{background:#dc2626}@media(hover:hover){[data-theme=dark] .session-confirm-delete-btn:hover{background:#ef4444}}@media(hover:hover){[data-theme=dark] .modal-revert-btn:hover{background:#f871711f;border-color:#f871714d;color:#fca5a5}[data-theme=dark] .modal-rest-btn:hover{background:#7c3aed26;border-color:#a78bfa66;color:#c4b5fd}}[data-theme=dark] .strides-note{background:#86198f1a;border-color:#a855f740;color:#e879f9}[data-theme=dark] .low-mileage-dt-info{background:#8b5cf614;border-color:#8b5cf640;color:#c4b5fd}@media(hover:hover){[data-theme=dark] .context-menu__item:hover{background:#ffffff0d}}[data-theme=dark] .context-menu__item--danger{color:#fca5a5}@media(hover:hover){[data-theme=dark] .context-menu__item--danger:hover{background:#f871711f}}@media(hover:hover){[data-theme=dark] .add-menu-panel__item:hover{background:#ffffff0d}}@media(hover:hover){[data-theme=dark] .mileage-stepper__btn:hover:not(:disabled){background:#60a5fa26}}@media(hover:hover){[data-theme=dark] .week-nav-undo-btn:hover,[data-theme=dark] .month-view__week-undo:hover{background:#f871711f;color:#fca5a5}}@media(hover:hover){[data-theme=dark] .redistribute-toggle__btn:not(.redistribute-toggle__btn--active):hover{background:#ffffff0d}}[data-theme=dark] .redistribute-toggle__btn--disabled{opacity:.35}[data-theme=dark] .day-card.day-card--drop-zone{background:repeating-linear-gradient(0deg,transparent,transparent 11px,rgba(96,165,250,.06) 11px,rgba(96,165,250,.06) 12px),repeating-linear-gradient(90deg,transparent,transparent 11px,rgba(96,165,250,.06) 11px,rgba(96,165,250,.06) 12px),#0f172ad9;box-shadow:inset 0 0 24px #60a5fa0a}[data-theme=dark] .day-card.day-card--drop-zone--warning{background:repeating-linear-gradient(0deg,transparent,transparent 11px,rgba(248,113,113,.06) 11px,rgba(248,113,113,.06) 12px),repeating-linear-gradient(90deg,transparent,transparent 11px,rgba(248,113,113,.06) 11px,rgba(248,113,113,.06) 12px),#0f172ad9}.modal-content--dark .strava-actual--matched{background:#051e0fcc}.modal-content--dark .strava-actual--unmatched{background:#231905cc}[data-theme=dark] .strava-actual--matched{background:#0f1f15}[data-theme=dark] .strava-actual--unmatched{background:#1f1a0f}[data-theme=dark] .strava-actual--extra{background:#fc4c020f}[data-theme=dark] .strava-actual__effort-eq--heat{color:#ef5454}[data-theme=dark] .strava-actual__effort-eq--altitude{color:#60a5fa}[data-theme=dark] .strava-actual__effort-eq--combined{color:#a78bfa}[data-theme=dark] .strava-actual__interval-adj--heat{color:#ef5454}[data-theme=dark] .strava-actual__interval-adj--altitude{color:#60a5fa}[data-theme=dark] .strava-actual__interval-adj--combined{color:#a78bfa}@media(hover:hover){[data-theme=dark] .day-card:hover{box-shadow:0 4px 12px #0006,0 0 1px #ffffff0d}}@media(hover:hover){[data-theme=dark] .day-card--double-threshold:hover{box-shadow:0 6px 20px #3b82f659}[data-theme=dark] .day-card--long-run:hover{box-shadow:0 6px 20px #22c55e4d}[data-theme=dark] .day-card--workout:hover{box-shadow:0 6px 20px #a78bfa4d}[data-theme=dark] .day-card--vo2max:hover{box-shadow:0 6px 20px #db27774d}[data-theme=dark] .day-card--hill:hover{box-shadow:0 6px 20px #ca8a044d}[data-theme=dark] .day-card--tuneup:hover{box-shadow:0 6px 20px #ec48994d}[data-theme=dark] .day-card--speed:hover{box-shadow:0 6px 20px #ef444459}[data-theme=dark] .day-card--marathon:hover{box-shadow:0 6px 20px #ec48994d}[data-theme=dark] .day-card--long-workout:hover{box-shadow:0 6px 20px #0d94884d}[data-theme=dark] .day-card--race-day:hover{box-shadow:0 6px 20px #f59e0b66}[data-theme=dark] .day-card--additional-race:hover{box-shadow:0 6px 20px #6366f159}}@media(hover:hover){[data-theme=dark] .wc-edit-btn:hover{background:#60a5fa1f}}[data-theme=dark] .btn-remove-race{border-color:#f87171;color:#f87171}@media(hover:hover){[data-theme=dark] .btn-remove-race:hover{background:#ef4444;color:#fff}}[data-theme=dark] .hard-group-outline{outline-color:#f87171}[data-theme=dark] .add-race-modal__error{color:#fca5a5}[data-theme=dark] .month-view__phase-divider--base .month-view__phase-divider-label{color:#6ee7b7;background:#34d3991a;border-color:#34d39940}[data-theme=dark] .month-view__phase-divider--build .month-view__phase-divider-label{color:#fdba74;background:#fb923c1a;border-color:#fb923c40}[data-theme=dark] .month-view__phase-divider--peak .month-view__phase-divider-label{color:#fca5a5;background:#f871711a;border-color:#f8717140}[data-theme=dark] .month-view__phase-divider--taper .month-view__phase-divider-label{color:#fde68a;background:#fbbf241a;border-color:#fbbf2440}[data-theme=dark] .month-view__phase-divider--race .month-view__phase-divider-label{color:#fcd34d;background:#f59e0b1a;border-color:#f59e0b40}.jump-to-today{position:fixed;bottom:1.5rem;right:1.5rem;z-index:90;display:flex;align-items:center;gap:.375rem;padding:.5rem 1rem .5rem .75rem;border:none;border-radius:999px;background:var(--color-primary);color:#fff;font-family:var(--font-heading);font-size:.8rem;font-weight:700;letter-spacing:.02em;cursor:pointer;box-shadow:0 2px 8px #3b82f659,0 0 #3b82f600;animation:jump-today-enter .3s cubic-bezier(.34,1.56,.64,1) both;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.jump-to-today:hover{transform:translateY(-1px);background:var(--color-primary-hover);box-shadow:0 4px 14px #3b82f666,0 0 0 3px #3b82f61a}.jump-to-today:active{transform:translateY(.5px);box-shadow:0 1px 4px #3b82f64d,0 0 #3b82f600}.jump-to-today__arrow{display:inline-flex;font-size:.9rem;line-height:1;transition:transform .2s ease}.jump-to-today--up .jump-to-today__arrow{animation:arrow-bounce-up 1.4s ease-in-out infinite}.jump-to-today--down .jump-to-today__arrow{animation:arrow-bounce-down 1.4s ease-in-out infinite}.jump-to-today__label{line-height:1}@keyframes jump-today-enter{0%{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes arrow-bounce-up{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes arrow-bounce-down{0%,to{transform:translateY(0)}50%{transform:translateY(2px)}}@media(max-width:768px){.jump-to-today{bottom:1rem;right:1rem}}[data-theme=dark] .jump-to-today{box-shadow:0 2px 10px #3b82f64d,0 0 0 1px #3b82f626}[data-theme=dark] .jump-to-today:hover{box-shadow:0 4px 16px #3b82f666,0 0 0 3px #3b82f61f}@media(prefers-reduced-motion:reduce){.jump-to-today,.jump-to-today--up .jump-to-today__arrow,.jump-to-today--down .jump-to-today__arrow{animation:none}}.month-view-loading{display:flex;justify-content:center;align-items:center;padding:4rem 0}.month-view-loading .spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}@media(max-width:768px){.month-view__section{margin-top:1rem}.month-view__month-title{font-family:var(--font-heading);font-size:1.25rem;font-weight:500;letter-spacing:-.01em;color:var(--color-text);margin-bottom:.25rem}.month-view__week-grid{grid-auto-rows:auto;align-items:start;gap:.125rem}.month-view__week{margin-bottom:.25rem;background:var(--color-surface);border-radius:14px;padding:.375rem .25rem .25rem;border:none;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000005}.month-view__week:has(.day-card__miles-delta--footer){padding-bottom:1.75rem}.month-view__day-headers{gap:.125rem;margin-bottom:0}.month-header{font-size:.6rem;font-weight:500;padding-bottom:.125rem;opacity:.55;letter-spacing:.08em}.month-view__phase-divider{margin:.375rem 0 .125rem;gap:.5rem}.month-view__phase-divider-line{opacity:.35}.month-view__phase-divider-label{font-size:.55rem;letter-spacing:.12em;padding:.0625rem .5rem}.month-view__week-label{padding:.125rem .25rem;margin-bottom:.125rem;align-items:center;gap:.125rem}.month-view__week-num{font-size:.65rem;font-weight:500;opacity:.5}.month-view__week-mileage{font-size:.6rem;font-weight:600;padding:.0625rem .375rem;border-radius:999px}.month-view__week-undo{font-size:.65rem;width:14px;height:14px;opacity:.6;margin-left:-.25rem}.day-card--compact:not(.day-card--dragging){width:48px;height:48px;border-radius:50%;padding:0;min-height:unset;margin:14px auto 20px;display:flex;align-items:center;justify-content:center;overflow:visible;position:relative;border:none;transition:transform .15s ease,box-shadow .25s ease;box-shadow:0 1px 6px #0000001f,inset 0 0 0 1px #ffffff26}.day-card--compact:not(.day-card--off):not(.day-card--double-threshold):not(.day-card--long-run):not(.day-card--workout):not(.day-card--vo2max):not(.day-card--hill):not(.day-card--tuneup):not(.day-card--speed):not(.day-card--marathon):not(.day-card--long-workout):not(.day-card--race-day){background:linear-gradient(145deg,#6ee7b7,#34d399,#10b981);box-shadow:0 1px 6px #10b98140,inset 0 0 0 1px #ffffff2e}.day-card--compact.day-card--double-threshold{box-shadow:0 1px 8px #3b82f659,inset 0 0 0 1px #ffffff26}.day-card--compact.day-card--long-run{box-shadow:0 1px 8px #22c55e4d,inset 0 0 0 1px #ffffff26}.day-card--compact.day-card--workout{box-shadow:0 1px 8px #a78bfa4d,inset 0 0 0 1px #ffffff26}.day-card--compact.day-card--vo2max{box-shadow:0 1px 8px #db27774d,inset 0 0 0 1px #ffffff1f}.day-card--compact.day-card--hill{box-shadow:0 1px 8px #ca8a044d,inset 0 0 0 1px #ffffff26}.day-card--compact.day-card--speed{box-shadow:0 1px 8px #ef444459,inset 0 0 0 1px #ffffff1f}.day-card--compact.day-card--tuneup{box-shadow:0 1px 8px #8b5cf64d,inset 0 0 0 1px #ffffff26}.day-card--compact.day-card--marathon{box-shadow:0 1px 8px #ec48994d,inset 0 0 0 1px #ffffff1f}.day-card--compact.day-card--long-workout{box-shadow:0 1px 8px #0d94884d,inset 0 0 0 1px #ffffff26}.day-card--compact.day-card--race-day{box-shadow:0 1px 10px #f59e0b66,inset 0 0 0 1px #fff3}.day-card--compact .day-card__header{position:absolute;top:-14px;left:50%;transform:translate(-50%);margin:0;display:flex;align-items:center;justify-content:center}.day-card--compact .day-card__day,.day-card--compact .day-card__rest-btn{display:none}.day-card--compact .day-card__date-group{display:flex;align-items:center}.day-card--compact .day-card__date{font-size:.6rem;font-weight:600;color:var(--color-text-muted);line-height:1;font-variant-numeric:tabular-nums}.day-card--compact .day-card__date-month{display:none}.day-card--compact .day-card__sessions{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;overflow:visible}.day-card--compact .day-card__session{display:flex;align-items:center;justify-content:center;overflow:visible;white-space:nowrap}.day-card--compact .day-card__session:nth-child(n+2){display:none}.day-card--compact .day-card__session--strides{display:flex!important;position:absolute;bottom:-3px;left:-3px;width:18px;height:18px;box-sizing:border-box;align-items:center;justify-content:center;background:linear-gradient(135deg,#c084fc,#a855f7,#7c3aed);border-radius:50%;border:2px solid var(--color-bg);z-index:1;overflow:hidden;white-space:nowrap;box-shadow:0 1px 4px #a855f780,inset 0 1px #ffffff40}.day-card--compact .day-card__session--strides .zone-tag{all:unset;font-size:7px;font-weight:800;font-family:inherit;color:#fff;line-height:1;text-shadow:0 .5px 1px rgba(0,0,0,.3)}.day-card--compact .day-card__session-detail{display:none}.day-card--compact .zone-tag{font-size:.625rem;font-weight:700;padding:0;background:none!important;color:#fff;margin:0;line-height:1;letter-spacing:.03em;text-shadow:0 .5px 1px rgba(0,0,0,.15)}.day-card--compact .zone-tag--strides{font-size:.5rem}.day-card--compact.day-card--race-day .day-card__race-label{font-size:.5rem;margin:0;letter-spacing:.05em;line-height:1.2;text-align:center}.day-card--compact.day-card--race-day .day-card__sessions,.day-card--compact .firework{display:none}.day-card--compact .day-card__footer{position:absolute;top:calc(100% + 1px);left:50%;transform:translate(-50%);margin:0;display:grid;grid-template-columns:auto auto;justify-content:center;gap:1px 2px;white-space:nowrap}.day-card--compact .day-card__miles{font-size:.55rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.day-card--compact .day-card__checkbox{display:none}.day-card--compact .day-card__miles-delta--footer{grid-column:1 / -1;font-size:.5rem;padding:0 .125rem;text-align:center}.day-card--compact .day-card__strava-icon{font-size:0}.day-card--compact .day-card__strava-icon svg{width:8px;height:8px}.day-card--compact .day-card__particle{display:none}.day-card--compact.day-card--multi:before{content:"";position:absolute;top:2px;left:2px;width:8px;height:8px;border-radius:50%;background:#ffffffd9;border:1.5px solid rgba(0,0,0,.15);z-index:1}.day-card--compact.day-card--today{box-shadow:0 0 0 2.5px #fbbf24,0 0 12px #fbbf2459,inset 0 0 0 1px #ffffff26}.day-card--compact.day-card--completed{opacity:1}.day-card--compact.day-card--completed:after{content:"";position:absolute;top:-3px;right:-3px;width:14px;height:14px;background:#22c55e url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 8.5L6.5 12L13 4'/%3E%3C/svg%3E") center/8px no-repeat;border-radius:50%;border:2px solid var(--color-surface);z-index:1}.day-card--compact.day-card--off{background:transparent;border:none;outline:1.5px dashed var(--color-border);outline-offset:-1.5px;box-shadow:none}.day-card--compact.day-card--off .zone-tag{color:var(--color-text-muted);font-weight:500;opacity:.6;text-shadow:none}.day-card--compact.day-card--off .day-card__footer{padding:0;min-height:unset}.day-card--compact:hover{transform:none}.day-card--compact:active{transform:scale(.92);filter:brightness(1.12)}.hard-group-outline{outline:2px solid var(--color-red);outline-offset:0px;border-radius:999px;inset:14px 2px 22px}.day-card--compact.day-card--holding{transform:scale(.9);box-shadow:0 1px 4px #0003,inset 0 0 0 1px #ffffff26}.day-card--compact.day-card--holding:after{display:none}.day-card--compact.day-card--drop-zone:before,.day-card--compact.day-card--drop-zone:after{content:none}.day-card--compact.day-card--drop-zone .day-card__session--strides{display:none}.day-card--compact.day-card--dragging{border-radius:50%;padding:0;min-height:unset;overflow:visible;border:none;margin:0;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 28px #0000004d,0 2px 8px #00000026,inset 0 0 0 1px #fff3;transform:scale(1.15);pointer-events:none}}@media(max-width:480px){.day-card--compact:not(.day-card--dragging){width:42px;height:42px;margin:13px auto 20px}.day-card--compact .day-card__date{font-size:.5rem}.day-card--compact .day-card__header{top:-12px}.day-card--compact .zone-tag,.day-card--compact .day-card__miles{font-size:.55rem}.day-card--compact .day-card__footer{top:calc(100% + 1px)}.day-card--compact .day-card__strava-icon svg{width:7px;height:7px}.day-card--compact.day-card--multi:before{width:6px;height:6px;top:1px;left:1px;border-width:1px}.day-card--compact.day-card--completed:after{width:12px;height:12px;top:-2px;right:-2px;background-size:7px;border-width:1.5px}.day-card--compact .day-card__session--strides{width:14px;height:14px;bottom:-2px;left:-2px;border-width:1.5px}.day-card--compact .day-card__session--strides .zone-tag{font-size:5.5px}.day-card--compact .day-card__race-label{font-size:.4rem}.month-view__week{padding:.25rem .125rem .125rem}.month-view__week:has(.day-card__miles-delta--footer){padding-bottom:1.5rem}.month-view__month-title{font-size:1.1rem}}@media(max-width:768px){[data-theme=dark] .month-view__week{background:#ffffff08;box-shadow:0 1px 3px #0003,inset 0 1px #ffffff08}[data-theme=dark] .month-view__week-mileage{color:var(--color-text-muted)}[data-theme=dark] .day-card--compact:not(.day-card--off):not(.day-card--double-threshold):not(.day-card--long-run):not(.day-card--workout):not(.day-card--vo2max):not(.day-card--hill):not(.day-card--tuneup):not(.day-card--speed):not(.day-card--marathon):not(.day-card--long-workout):not(.day-card--race-day){background:linear-gradient(145deg,#059669,#047857,#065f46);box-shadow:0 1px 8px #05966959,inset 0 0 0 1px #ffffff14}[data-theme=dark] .day-card--compact.day-card--double-threshold{box-shadow:0 1px 12px #3b82f673,inset 0 0 0 1px #ffffff14}[data-theme=dark] .day-card--compact.day-card--speed{box-shadow:0 1px 12px #ef444473,inset 0 0 0 1px #ffffff14}[data-theme=dark] .day-card--compact.day-card--race-day{box-shadow:0 1px 12px #f59e0b80,inset 0 0 0 1px #ffffff1a}[data-theme=dark] .day-card--compact.day-card--off{background:transparent;outline-color:#ffffff1a;box-shadow:none}[data-theme=dark] .day-card--compact .day-card__miles{color:var(--color-text-muted)}[data-theme=dark] .day-card--compact.day-card--multi:before{background:#ffffffb3;border-color:#0006}[data-theme=dark] .day-card--compact.day-card--today{box-shadow:0 0 0 2.5px #fbbf24,0 0 16px #fbbf244d,inset 0 0 0 1px #ffffff14}[data-theme=dark] .day-card--compact.day-card--completed:after{border-color:var(--color-surface)}[data-theme=dark] .day-card--compact .day-card__session--strides{border-color:var(--color-surface)}}.hero{position:relative;display:flex;flex-direction:column;align-items:center;overflow:hidden;width:100vw;margin-left:calc(-50vw + 50%);margin-top:calc(-1 * (var(--header-height, 7.5rem) + 1rem));padding-top:calc(var(--header-height, 7.5rem) + 5rem);padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0;margin-bottom:-2rem;background:radial-gradient(circle,var(--color-dot-grid) 1px,transparent 1px) 0 0 / 24px 24px,var(--color-bg)}.hero~.app-footer{display:none}.hero__footer{position:relative;z-index:1;width:100%;padding:2rem 0 1rem;text-align:center}.hero__footer .app-footer__credit{font-size:.75rem;color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase;font-weight:500}.hero:before,.hero:after{content:"";position:absolute;border-radius:50%;filter:blur(120px);pointer-events:none;opacity:.08;will-change:transform}.hero:before{width:600px;height:600px;background:#3b82f6;top:-200px;right:-150px;animation:orb-float 20s ease-in-out infinite}.hero:after{width:500px;height:500px;background:#06b6d4;bottom:-180px;left:-120px;animation:orb-float 25s ease-in-out infinite reverse}.hero__content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;max-width:640px;min-height:calc(100vh - 8.5rem);min-height:calc(100dvh - 8.5rem)}.hero__title{font-family:var(--font-heading);font-size:3.5rem;font-weight:800;letter-spacing:-.04em;line-height:1.08;background:linear-gradient(135deg,#1e3a8a,#2563eb,#3b82f6,#0ea5e9,#06b6d4,#1e3a8a);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:hero-enter .7s cubic-bezier(.16,1,.3,1) both,gradient-shift 8s ease-in-out .7s infinite}.hero-vdot{display:flex;flex-direction:column;align-items:center;margin-top:2.5rem;animation:hero-enter .7s cubic-bezier(.16,1,.3,1) both;animation-delay:.1s}.hero-vdot__label{font-family:var(--font-heading);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:var(--color-text-muted)}.hero-vdot__number{position:relative;font-family:var(--font-mono);font-size:5rem;font-weight:600;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums;background:linear-gradient(135deg,#2563eb,#0ea5e9);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-vdot__number:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,.12),transparent 70%);z-index:-1;animation:pulse-glow 3s ease-in-out infinite}.hero-vdot__zones{display:flex;gap:.5rem;margin-top:1.25rem;flex-wrap:wrap;justify-content:center}.hero-vdot__zone{display:flex;flex-direction:column;align-items:center;padding:.5rem .875rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;position:relative;overflow:hidden;opacity:0;transform:translateY(12px) scale(.92);transition:opacity .4s ease,transform .4s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--i) * 80ms)}.hero-vdot__zone:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--zone-color)}.hero-vdot__zones--visible .hero-vdot__zone{opacity:1;transform:translateY(0) scale(1)}.hero-vdot__zone-name{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.hero-vdot__zone-pace{font-family:var(--font-mono);font-size:.9375rem;font-weight:500;color:var(--color-text);font-variant-numeric:tabular-nums;margin-top:.125rem}.hero--editing{padding-top:calc(var(--header-height, 7.5rem) + 1.5rem)}.hero__cta{position:relative;display:inline-flex;align-items:center;gap:.5rem;margin-top:2.5rem;padding:1rem 2.5rem;font-size:1.125rem;font-weight:700;font-family:var(--font-heading);color:#fff;background:linear-gradient(135deg,#1e3a8a,#2563eb 40%,#0ea5e9);background-size:200% auto;border:none;border-radius:999px;cursor:pointer;box-shadow:0 4px 20px #2563eb40;transition:all .3s cubic-bezier(.16,1,.3,1);animation:hero-enter .7s cubic-bezier(.16,1,.3,1) both;animation-delay:.2s;overflow:hidden}.hero__cta:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.15) 50%,transparent 60%);animation:shimmer 4s ease-in-out 1.2s infinite}@media(hover:hover){.hero__cta:hover{background-position:100% 50%;box-shadow:0 6px 30px #2563eb59,0 0 50px #06b6d41f;transform:translateY(-2px)}}.hero__cta:active{transform:translateY(0);box-shadow:0 2px 10px #2563eb4d}.hero__form-section{position:relative;z-index:1;width:100%;max-width:520px;scroll-margin-top:6rem;padding-bottom:4rem}.sign-in-strip{cursor:pointer;position:relative;overflow:hidden;background:linear-gradient(180deg,transparent,rgba(59,130,246,.03));animation:strip-enter .5s cubic-bezier(.16,1,.3,1) .3s both;transition:background .3s ease}.sign-in-strip:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,#3b82f6 20%,#06b6d4 50%,#3b82f6 80%,transparent 100%);background-size:200% 100%;animation:accent-sweep 4s ease-in-out infinite}.sign-in-strip:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(105deg,transparent 40%,rgba(59,130,246,.06) 50%,transparent 60%);animation:strip-shimmer 6s ease-in-out 1s infinite;pointer-events:none}.sign-in-strip__inner{max-width:1200px;margin:0 auto;padding:.5rem 1rem;display:flex;align-items:center;justify-content:center;gap:.5rem}.sign-in-strip__cloud{color:var(--color-primary);flex-shrink:0;opacity:.7;animation:cloud-bob 3s ease-in-out infinite;transition:opacity .3s ease,color .3s ease}.sign-in-strip__msg{font-size:.8125rem;color:var(--color-text-secondary);font-weight:500}.sign-in-strip__msg strong{color:var(--color-primary);font-weight:700;font-family:var(--font-heading)}.sign-in-strip__google{display:flex;align-items:center;justify-content:center;width:26px;height:26px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:50%;flex-shrink:0;transition:all .25s cubic-bezier(.16,1,.3,1);box-shadow:0 1px 3px #0000000f}@media(hover:hover){.sign-in-strip:hover{background:linear-gradient(180deg,transparent,rgba(59,130,246,.06))}.sign-in-strip:hover .sign-in-strip__google{border-color:var(--color-primary);box-shadow:0 2px 8px #3b82f633;transform:scale(1.1)}.sign-in-strip:hover .sign-in-strip__cloud{opacity:1;color:#0ea5e9}}@keyframes hero-enter{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes orb-float{0%,to{transform:translate(0)}33%{transform:translate(30px,-25px)}66%{transform:translate(-20px,15px)}}@keyframes pulse-glow{0%,to{opacity:1;transform:translate(-50%,-50%) scale(1)}50%{opacity:.5;transform:translate(-50%,-50%) scale(1.2)}}@keyframes shimmer{0%,to{left:-100%}50%{left:100%}}@keyframes strip-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes accent-sweep{0%,to{background-position:-100% 0}50%{background-position:100% 0}}@keyframes strip-shimmer{0%,to{left:-100%}50%{left:100%}}@keyframes cloud-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}[data-theme=dark] .hero:before,[data-theme=dark] .hero:after{opacity:.2}[data-theme=dark] .sign-in-strip{background:linear-gradient(180deg,transparent,rgba(59,130,246,.05))}[data-theme=dark] .sign-in-strip:before{background:linear-gradient(105deg,transparent 40%,rgba(59,130,246,.08) 50%,transparent 60%)}[data-theme=dark] .sign-in-strip__google{background:#1e293bcc;border-color:#ffffff1a}[data-theme=dark] .hero-vdot__zone{background:#1e293b99;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-color:#ffffff14}[data-theme=dark] .hero__cta{box-shadow:0 4px 24px #60a5fa33}@media(hover:hover){[data-theme=dark] .hero__cta:hover{box-shadow:0 6px 30px #60a5fa59,0 0 50px #06b6d41f}}@media(max-width:768px){.hero{padding-left:1rem;padding-right:1rem}.hero__title{font-size:2.5rem}.hero-vdot__number{font-size:4rem}.hero__cta{padding:.875rem 2rem;font-size:1.0625rem}}@media(max-width:480px){.sign-in-strip__inner{padding:.375rem .75rem;gap:.375rem}.sign-in-strip__msg{font-size:.75rem}.sign-in-strip__google{width:22px;height:22px}.sign-in-strip__google svg{width:12px;height:12px}.hero{padding-left:.75rem;padding-right:.75rem}.hero__title{font-size:2rem}.hero-vdot{margin-top:2rem}.hero-vdot__number{font-size:3.5rem}.hero-vdot__number:before{width:120px;height:120px}.hero-vdot__zone{padding:.375rem .625rem}.hero-vdot__zone-pace{font-size:.8125rem}.hero__cta{padding:.875rem 1.75rem;font-size:1rem}}@media(prefers-reduced-motion:reduce){.hero:before,.hero:after{animation:none!important}.hero__title,.hero-vdot,.hero__cta{animation:none!important;opacity:1;transform:none}.hero-vdot__number:before{animation:none}.hero-vdot__zone{opacity:1;transform:none;transition:none}.hero__cta:before{animation:none;display:none}.sign-in-strip,.sign-in-strip:after,.sign-in-strip:before,.sign-in-strip__cloud{animation:none!important}.sign-in-strip{opacity:1}.sign-in-strip:before{display:none}}.plans-page{animation:fade-in .3s ease}.plans-signin{text-align:center;padding:3rem 1rem}.plans-signin h2{font-size:1.5rem;font-weight:700;margin-bottom:.5rem}.plans-signin p{color:var(--color-text-secondary);margin-bottom:1.5rem}.plans-signin .btn-primary{display:inline-flex;align-items:center;gap:.5rem}.plans-signin__icon{flex-shrink:0}.plans-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.plans-header h2{font-size:1.5rem;font-weight:700}.plans-header__actions{display:flex;align-items:center;gap:.5rem}.plans-add-btn{width:40px;height:40px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:1.5rem;font-weight:300;display:flex;align-items:center;justify-content:center;line-height:1;padding:0 0 2px}.plans-add-btn--wide{width:auto;border-radius:var(--radius);padding:.5rem 1.25rem;font-size:1rem;font-weight:600;line-height:1.6}@media(hover:hover){.plans-add-btn:hover{background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}}.plans-sort{display:flex;align-items:center;gap:.625rem;margin-bottom:1.25rem}.plans-sort>span{font-size:.8125rem;color:var(--color-text-muted);font-weight:500}.plans-sort__pill{display:inline-flex;align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.1875rem;gap:.125rem}.plans-sort__btn{padding:.3rem .75rem;font-size:.75rem;font-weight:500;border-radius:999px;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition);white-space:nowrap}@media(hover:hover){.plans-sort__btn:hover:not(.plans-sort__btn--active){color:var(--color-text);background:var(--color-bg)}}.plans-sort__btn--active{background:var(--color-primary);color:#fff;font-weight:600}.plans-list{display:flex;flex-direction:column;gap:.625rem}.plan-card{display:flex;align-items:stretch;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;transition:all var(--transition);box-shadow:var(--shadow-sm);overflow:hidden;opacity:0;animation:plan-card-in .4s ease forwards;position:relative}.plan-card:before{content:"";position:absolute;top:0;left:0;bottom:0;width:3px;background:linear-gradient(to bottom,#3b82f6,#06b6d4);opacity:0;transition:opacity var(--transition)}@media(hover:hover){.plan-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.plan-card:hover:before{opacity:1}}@keyframes plan-card-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.plan-card__main{flex:1;min-width:0;padding:1rem 1.25rem}.plan-card__top-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.375rem}.plan-card__distance{font-family:var(--font-heading);font-size:1.125rem;font-weight:700;letter-spacing:-.02em}.plan-card__active-badge{display:inline-block;font-family:var(--font);font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--color-primary-light);color:var(--color-primary);padding:.1rem .45rem;border-radius:100px;vertical-align:middle}.plan-card__coach-badge{display:inline-block;font-family:var(--font);font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:#8b5cf61f;color:var(--color-purple);padding:.1rem .45rem;border-radius:100px;vertical-align:middle}.plan-card__goal-time{font-family:var(--font-mono);font-size:.8125rem;font-weight:500;color:var(--color-text-secondary);letter-spacing:-.01em}.plan-card__meta{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.375rem}.plan-card__chip{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;font-weight:500;color:var(--color-text-secondary);background:var(--color-bg);border:1px solid transparent;padding:.125rem .5rem;border-radius:999px;white-space:nowrap}.plan-card__chip strong{color:var(--color-text);font-weight:600}.plan-card__dates{display:flex;flex-wrap:wrap;gap:.5rem 1rem;font-size:.6875rem;color:var(--color-text-muted);letter-spacing:.01em}.plan-card__dates span{display:inline-flex;align-items:center;gap:.25rem}.plan-card__actions{display:flex;align-items:center;align-self:center;gap:.125rem;padding:.5rem .75rem .5rem .25rem;flex-shrink:0}.plan-card__action-btn{background:none;border:none;font-size:1.125rem;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--color-text-muted);cursor:pointer;transition:all var(--transition);padding:0}@media(hover:hover){.plan-card__action-btn:hover{background:var(--color-surface);color:var(--color-text)}.plan-card__action-btn--delete:hover{background:var(--color-red-light);color:var(--color-red)}.plan-card__action-btn--leave:hover{background:var(--color-orange-light);color:var(--color-orange)}}.plan-card--active{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary),var(--shadow-sm)}.plan-card--active:before{opacity:1}.plan-card__action-btn--star{color:var(--color-text-muted)}@media(hover:hover){.plan-card__action-btn--star:hover{color:var(--color-orange);background:var(--color-orange-light)}}.plan-card__action-btn--star-active{color:var(--color-orange)}@media(hover:hover){.plan-card__action-btn--star-active:hover{background:var(--color-orange-light)}}.plan-card__share-dropdown{position:relative}.plan-card__share-menu{position:absolute;right:0;top:100%;z-index:50;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:180px;padding:.25rem 0;animation:scale-in .15s ease}.plan-card__share-menu button{display:block;width:100%;text-align:left;padding:.5rem .875rem;font-size:.8125rem;color:var(--color-text);background:none;border:none;cursor:pointer;transition:background var(--transition);border-radius:0}@media(hover:hover){.plan-card__share-menu button:hover{background:var(--color-bg)}}.plan-card__action-btn .share-spinner{animation:share-spin .8s linear infinite}@keyframes share-spin{to{transform:rotate(360deg)}}.delete-modal{max-width:340px;text-align:center;padding:1.75rem 1.5rem 1.5rem}.delete-modal__icon{width:48px;height:48px;border-radius:50%;background:var(--color-red-light);display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;font-size:1.25rem;color:var(--color-red)}.delete-modal h3{font-family:var(--font-heading);font-size:1.0625rem;font-weight:700;letter-spacing:-.01em;margin-bottom:.5rem}.delete-modal p{color:var(--color-text-secondary);font-size:.875rem;line-height:1.5;margin-bottom:.25rem}.delete-modal__warning{color:var(--color-text-muted);font-size:.75rem;margin-bottom:1.25rem}.delete-modal__actions{display:flex;gap:.5rem}.delete-modal__actions .btn-secondary,.delete-modal__actions .btn-danger{flex:1;padding:.5rem 1rem;font-size:.8125rem;font-weight:600;border-radius:999px}.btn-danger{background:var(--color-red);color:#fff;padding:.5rem 1.25rem;font-weight:600;border-radius:var(--radius-sm)}@media(hover:hover){.btn-danger:hover{background:#dc2626}}@media(max-width:768px){.plan-card__main{padding:.875rem 1rem}.plan-card__distance{font-size:1rem}}@media(max-width:480px){.plan-card__main{padding:.75rem}.plan-card__actions{padding:.25rem .5rem .25rem 0;gap:0}.plan-card__action-btn{min-height:36px;min-width:36px;width:36px;height:36px;font-size:1rem}.plans-sort button{padding:.375rem .75rem;min-height:36px}.plan-card__meta{gap:.25rem}.plan-card__chip{font-size:.6875rem;padding:.0625rem .375rem}}@media(pointer:coarse){.plan-card__action-btn{min-height:38px;min-width:38px}}[data-theme=dark] .plan-card--active{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary),var(--shadow-sm)}[data-theme=dark] .plan-card__active-badge{background:#60a5fa1f;color:var(--color-primary)}[data-theme=dark] .plan-card__chip{background:#ffffff0d}[data-theme=dark] .plan-card__chip strong{color:var(--color-text)}@media(hover:hover){[data-theme=dark] .plan-card__action-btn:hover{background:#ffffff14}[data-theme=dark] .plan-card__action-btn--star:hover{background:#fbbf241f;color:#fbbf24}}[data-theme=dark] .plan-card__action-btn--star-active{color:#fbbf24}@media(hover:hover){[data-theme=dark] .plan-card__action-btn--star-active:hover{background:#fbbf241f}[data-theme=dark] .plan-card__action-btn--delete:hover{background:#f871711f;color:#fca5a5}[data-theme=dark] .plan-card__share-menu button:hover{background:#ffffff0d}}[data-theme=dark] .btn-danger{background:#dc2626}@media(hover:hover){[data-theme=dark] .btn-danger:hover{background:#ef4444}}[data-theme=dark] .delete-modal__warning{color:var(--color-text-muted)}[data-theme=dark] .delete-modal__icon{background:#f871711f;color:#fca5a5}.confetti-container{position:fixed;inset:0;z-index:1000;pointer-events:none;overflow:hidden}.confetti-particle{position:absolute;left:50%;top:35%;width:var(--size);height:var(--size);background:var(--color);border-radius:2px;opacity:0;animation:confetti-burst 1.8s cubic-bezier(.25,.46,.45,.94) var(--delay) forwards}@keyframes confetti-burst{0%{transform:translate(0) rotate(0) scale(1);opacity:1}70%{opacity:1}to{transform:translate(var(--dx),calc(var(--dy) + 250px)) rotate(var(--spin)) scale(.4);opacity:0}}@media(prefers-reduced-motion:reduce){.confetti-particle{animation:none}}.weather-prompt{margin:.5rem 0 .75rem;padding:.75rem 1rem;border:1px dashed var(--color-border);border-radius:var(--radius);animation:today-enter .4s cubic-bezier(.22,1,.36,1) both;animation-delay:.1s}.weather-prompt__text{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--color-text-muted);margin-bottom:.625rem}.weather-prompt__icon{flex-shrink:0;opacity:.6}.weather-prompt__actions{display:flex;gap:.5rem}.weather-prompt__btn{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.75rem;font-weight:600;border-radius:6px;cursor:pointer;transition:all .15s ease;border:none}.weather-prompt__btn--locate{background:var(--color-primary);color:#fff}@media(hover:hover){.weather-prompt__btn--locate:hover{background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}}.weather-prompt__btn--search{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}@media(hover:hover){.weather-prompt__btn--search:hover{border-color:var(--color-text-muted);background:var(--color-bg)}}.weather-prompt__spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:today-spin .6s linear infinite}.weather-prompt__denied{margin-top:.5rem;font-size:.7rem;color:var(--color-red);opacity:.8}.weather-location-search{margin:.5rem 0 .75rem;animation:today-enter .3s cubic-bezier(.22,1,.36,1) both}.weather-location-search__input-wrap{display:flex;gap:.375rem}.weather-location-search__input{flex:1;padding:.5rem .75rem;font-size:.8125rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:var(--font);transition:border-color .15s ease}.weather-location-search__input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}.weather-location-search__close{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;flex-shrink:0}@media(hover:hover){.weather-location-search__close:hover{color:var(--color-text);border-color:var(--color-text-muted)}}.weather-location-search__results{margin-top:.375rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;background:var(--color-surface);box-shadow:var(--shadow)}.weather-location-search__result{display:flex;align-items:baseline;gap:.5rem;width:100%;padding:.5rem .75rem;text-align:left;background:none;border:none;border-bottom:1px solid var(--color-border);color:var(--color-text);font-family:var(--font);cursor:pointer;transition:background .1s ease}.weather-location-search__result:last-child{border-bottom:none}@media(hover:hover){.weather-location-search__result:hover{background:var(--color-primary-light)}}.weather-location-search__result-name{font-size:.8125rem;font-weight:600}.weather-location-search__result-region{font-size:.7rem;color:var(--color-text-muted)}.weather-location-search__loading{padding:.5rem;font-size:.7rem;color:var(--color-text-muted);text-align:center}.weather-strip{margin:.375rem 0 .5rem;border-radius:var(--radius-sm);background:var(--color-surface);border:1px solid var(--color-border);overflow:visible;animation:today-enter .4s cubic-bezier(.22,1,.36,1) both;animation-delay:90ms;transition:box-shadow .2s ease,border-color .2s ease}@media(hover:hover){.weather-strip:hover{border-color:var(--color-text-muted);box-shadow:var(--shadow-sm)}}.weather-strip--loading{padding:.625rem .875rem}.weather-strip__skeleton{height:22px;border-radius:4px;background:linear-gradient(90deg,var(--color-border) 25%,transparent 50%,var(--color-border) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.weather-strip__unavailable{display:flex;align-items:center;gap:.5rem;padding:.5rem .875rem;font-size:.75rem;color:var(--color-text-muted);opacity:.7}.weather-strip__unavailable svg{flex-shrink:0;opacity:.5}.weather-strip__main{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem .875rem;background:none;border:none;font-family:var(--font);color:var(--color-text);transition:background .1s ease}.weather-strip__main--clickable{cursor:pointer}@media(hover:hover){.weather-strip__main--clickable:hover{background:#00000005}[data-theme=dark] .weather-strip__main--clickable:hover{background:#ffffff08}}.weather-strip__left{display:flex;align-items:center;gap:.5rem}.weather-strip__condition{font-size:.8125rem;font-weight:500;color:var(--color-text-secondary)}.weather-strip__right{display:flex;align-items:center;gap:.25rem}.weather-strip__high{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--color-text);letter-spacing:-.02em}.weather-strip__sep{font-size:.75rem;color:var(--color-text-muted);margin:0 .125rem}.weather-strip__low{font-family:var(--font-mono);font-size:.8125rem;font-weight:500;color:var(--color-text-muted);letter-spacing:-.02em}.weather-strip__chevron{margin-left:.375rem;color:var(--color-text-muted);transition:transform .2s cubic-bezier(.22,1,.36,1);flex-shrink:0}.weather-strip__chevron--open{transform:rotate(180deg)}.weather-icon--clear{color:#f59e0b}.weather-icon--partly-cloudy{color:#fbbf24}.weather-icon--cloudy,.weather-icon--fog{color:var(--color-text-muted)}.weather-icon--rain{color:#60a5fa}.weather-icon--freezing{color:#93c5fd}.weather-icon--snow{color:#94a3b8}.weather-icon--storm{color:#a78bfa}[data-theme=dark] .weather-icon--clear{color:#fbbf24}[data-theme=dark] .weather-icon--partly-cloudy{color:#fcd34d}[data-theme=dark] .weather-icon--rain{color:#93c5fd}[data-theme=dark] .weather-icon--freezing{color:#bfdbfe}[data-theme=dark] .weather-icon--snow{color:#cbd5e1}[data-theme=dark] .weather-icon--storm{color:#c4b5fd}.weather-strip__hourly-panel{border-top:1px solid var(--color-border);padding:.625rem .5rem .375rem;animation:weather-expand .25s cubic-bezier(.22,1,.36,1) both}@keyframes weather-expand{0%{opacity:0;max-height:0;padding-top:0;padding-bottom:0}to{opacity:1;max-height:200px;padding-top:.625rem;padding-bottom:.375rem}}.weather-hourly{display:flex;gap:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;padding-bottom:.25rem}.weather-hourly::-webkit-scrollbar{display:none}.weather-hourly__item{display:flex;flex-direction:column;align-items:center;gap:.125rem;min-width:36px;padding:0 .125rem;flex-shrink:0;transition:opacity .15s ease}.weather-hourly__item--past{opacity:.35}.weather-hourly__item--now{position:relative}.weather-hourly__temp{font-family:var(--font-mono);font-size:.625rem;font-weight:600;color:var(--color-text);letter-spacing:-.02em}.weather-hourly__bar-wrap{width:8px;display:flex;align-items:flex-end;justify-content:center;height:32px}.weather-hourly__bar{width:4px;border-radius:2px;background:var(--color-primary);opacity:.3;transition:height .2s ease}.weather-hourly__item--now .weather-hourly__bar{opacity:.7;width:5px}.weather-hourly__time{font-size:.5625rem;color:var(--color-text-muted);font-weight:500;letter-spacing:.01em}.weather-hourly__item--now .weather-hourly__time{color:var(--color-primary);font-weight:700}.weather-hourly__wind{display:flex;flex-direction:column;align-items:center;gap:0;margin-top:.125rem}.weather-hourly__wind-arrow{color:var(--color-text-muted);opacity:.7;flex-shrink:0}.weather-hourly__item--now .weather-hourly__wind-arrow{color:var(--color-primary);opacity:.9}.weather-hourly__wind-speed{font-family:var(--font-mono);font-size:.5rem;color:var(--color-text-muted);letter-spacing:-.02em;line-height:1}.weather-hourly__item--now .weather-hourly__wind-speed{color:var(--color-primary)}.weather-strip__footer{padding:0 .875rem .375rem}.weather-strip__location-row{display:flex;align-items:center;gap:.25rem}.weather-strip__locate-icon{color:var(--color-primary);opacity:.6;flex-shrink:0}.weather-strip__location-link{display:inline;background:none;border:none;font-family:var(--font);font-size:.625rem;color:var(--color-text-muted);cursor:pointer;padding:0;opacity:.7;transition:opacity .15s ease,color .15s ease;text-decoration:none}@media(hover:hover){.weather-strip__location-link:hover{opacity:1;color:var(--color-text-secondary);text-decoration:underline}}.weather-strip__refresh-btn{display:flex;align-items:center;justify-content:center;background:none;border:none;padding:2px;margin-left:.125rem;cursor:pointer;color:var(--color-text-muted);opacity:.5;transition:opacity .15s ease,color .15s ease;border-radius:3px}@media(hover:hover){.weather-strip__refresh-btn:hover{opacity:1;color:var(--color-text-secondary)}}.weather-strip__refresh-icon{display:block}.weather-strip__refresh-icon--spinning{animation:refresh-spin .8s linear infinite}@keyframes refresh-spin{to{transform:rotate(360deg)}}.weather-strip__settings{margin-top:.25rem;animation:today-enter .2s ease both}.weather-strip__settings-btn{font-size:.625rem;font-weight:600;color:var(--color-primary);background:none;border:none;padding:0;cursor:pointer;font-family:var(--font)}@media(hover:hover){.weather-strip__settings-btn:hover{text-decoration:underline}}.weather-strip__adjustments{display:flex;flex-direction:column}@media(min-width:600px){.weather-strip__adjustments{flex-direction:row;align-items:center;gap:.75rem}.weather-strip__adjustments>.weather-strip__heat-toggle{margin-top:.25rem}}.weather-strip__heat-toggle{display:inline-flex;align-items:center;gap:.3rem;margin-top:.25rem;padding:.2rem 0;font-family:var(--font);font-size:.625rem;font-weight:600;color:var(--color-text-muted);background:none;border:none;cursor:pointer;opacity:.6;transition:opacity .15s ease,color .15s ease}@media(hover:hover){.weather-strip__heat-toggle:hover{opacity:1;color:var(--color-text-secondary)}}.weather-strip__heat-toggle--on{opacity:1;color:var(--color-red, #ef4444)}.weather-strip__heat-toggle--on.weather-strip__heat-toggle--altitude{color:var(--color-primary)}@media(hover:hover){.weather-strip__heat-toggle--on:hover{color:var(--color-red, #ef4444);filter:brightness(1.15)}.weather-strip__heat-toggle--on.weather-strip__heat-toggle--altitude:hover{color:var(--color-primary-hover);filter:none}}.weather-strip__heat-row{display:flex;align-items:center;gap:.5rem;margin-top:.25rem}.weather-strip__heat-row .weather-strip__heat-toggle{margin-top:0}.weather-strip__heat-time{display:flex;align-items:center;gap:.15rem}.weather-strip__heat-time-icon{color:var(--color-text-muted);opacity:.5;flex-shrink:0}.weather-strip__heat-time-dropdown{width:auto}.weather-strip__heat-time-dropdown .dropdown__trigger{font-size:.5625rem;font-weight:600;padding:.1rem .25rem;color:var(--color-text-muted);background:none;border:none;gap:.15rem;box-shadow:none;line-height:1.2}.weather-strip__heat-time-dropdown .dropdown__trigger:hover{border:none}.weather-strip__heat-time-dropdown.dropdown--open .dropdown__trigger{border:none;box-shadow:none}.weather-strip__heat-time-dropdown .dropdown__chevron{width:8px;height:8px}.weather-strip__heat-time-dropdown .dropdown__menu{min-width:120px;width:auto;left:0;right:auto;max-height:200px;font-size:.75rem}.weather-strip__heat-time-dropdown .dropdown__option{font-size:.6875rem;padding:.3rem .5rem;min-height:0}@media(pointer:coarse){.weather-strip__heat-time-dropdown .dropdown__option{min-height:32px}}.weather-strip__heat-time-dropdown .dropdown__check{width:11px;height:11px}@media(max-width:480px){.weather-strip__main{padding:.5rem .75rem}.weather-strip__condition{font-size:.75rem}.weather-hourly__item{min-width:32px}}@media(prefers-reduced-motion:reduce){.weather-strip,.weather-prompt,.weather-location-search,.weather-strip__hourly-panel{animation:none}.weather-strip__chevron{transition:none}}.today-view{max-width:640px;margin:0 auto;padding:.25rem 1rem .75rem;position:relative;min-height:60vh}@media(max-width:480px){.today-view{margin-top:-1.5rem}}.today-view~.app-footer{margin-top:.5rem}.today-view--loading{display:flex;align-items:center;justify-content:center}.today-view__loader{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:today-spin .7s linear infinite}.today-view:before{content:"";position:fixed;inset:0;opacity:0;z-index:-1;pointer-events:none;transition:opacity .6s ease}.today-view--ambient-dt:before{background:linear-gradient(135deg,#3b82f6,#8b5cf6);opacity:.06}.today-view--ambient-long:before{background:linear-gradient(135deg,#22c55e,#06b6d4);opacity:.05}.today-view--ambient-long-workout:before{background:linear-gradient(135deg,#14b8a6,#3b82f6);opacity:.05}.today-view--ambient-vo2:before{background:linear-gradient(135deg,#166534,#ec4899);opacity:.05}.today-view--ambient-hill:before{background:linear-gradient(135deg,#22c55e,#eab308);opacity:.05}.today-view--ambient-speed:before{background:linear-gradient(135deg,#ef4444,#f97316,#dc2626);opacity:.05}.today-view--ambient-tuneup:before{background:linear-gradient(135deg,#8b5cf6,#ec4899);opacity:.05}.today-view--ambient-marathon:before{background:linear-gradient(135deg,#ec4899,#8b5cf6);opacity:.05}.today-view--ambient-race:before{background:linear-gradient(135deg,#f59e0b,#f97316,#eab308);opacity:.08}.today-view--ambient-easy:before{background:linear-gradient(135deg,#22c55e,#3b82f6);opacity:.03}.today-view--ambient-off:before{background:linear-gradient(135deg,#6366f1,#1e293b);opacity:.03}[data-theme=dark] .today-view--ambient-dt:before{opacity:.1}[data-theme=dark] .today-view--ambient-long:before{opacity:.08}[data-theme=dark] .today-view--ambient-long-workout:before{opacity:.08}[data-theme=dark] .today-view--ambient-vo2:before{opacity:.08}[data-theme=dark] .today-view--ambient-hill:before{opacity:.08}[data-theme=dark] .today-view--ambient-speed:before{opacity:.08}[data-theme=dark] .today-view--ambient-tuneup:before{opacity:.08}[data-theme=dark] .today-view--ambient-marathon:before{opacity:.08}[data-theme=dark] .today-view--ambient-race:before{opacity:.12}[data-theme=dark] .today-view--ambient-easy:before{opacity:.05}[data-theme=dark] .today-view--ambient-off:before{opacity:.05}.today-view__switcher{margin-bottom:1rem}.today-view__switcher-label{font-family:var(--font);font-size:.8rem;font-weight:600;color:var(--color-text-muted);display:flex;align-items:center;gap:.5rem}.today-view__switcher-date{font-weight:500;opacity:.6;margin-left:auto}.today-view__switcher-select{font-family:var(--font);font-size:.8rem;font-weight:600;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.4rem 2rem .4rem .6rem;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;transition:border-color var(--transition)}@media(hover:hover){.today-view__switcher-select:hover{border-color:var(--color-primary)}}.today-view__switcher-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f626}[data-theme=dark] .today-view__switcher-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}[data-theme=dark] .today-view__switcher-select:focus{box-shadow:0 0 0 3px #60a5fa26}@keyframes today-enter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes today-spin{to{transform:rotate(360deg)}}@keyframes today-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.today-view__header,.today-view__date,.today-view__type-badge,.today-view__session,.today-view__strides,.today-view__actions,.today-view__rest,.today-view__race,.today-view__empty,.today-view__day-nav{animation:today-enter .4s ease-out backwards}@media(prefers-reduced-motion:reduce){.today-view__header,.today-view__date,.today-view__type-badge,.today-view__session,.today-view__strides,.today-view__actions,.today-view__rest,.today-view__race,.today-view__empty,.today-view__day-nav,.today-view__loader{animation:none!important}}.today-view__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1.25rem;gap:1rem;animation-delay:0ms}.today-view__meta{display:flex;flex-direction:column;gap:.25rem}.today-view__phase{font-family:var(--font);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:.2rem .6rem;border-radius:100px;display:inline-flex;width:fit-content}.today-view__phase--base{background:#22c55e1f;color:#16a34a}.today-view__phase--build{background:#3b82f61f;color:#2563eb}.today-view__phase--peak{background:#8b5cf61f;color:#7c3aed}.today-view__phase--taper{background:#f59e0b1f;color:#d97706}.today-view__phase--race{background:#f59e0b26;color:#d97706}.today-view__phase--recovery{background:#22c55e1a;color:#16a34a}[data-theme=dark] .today-view__phase--base{background:#4ade801f;color:#4ade80}[data-theme=dark] .today-view__phase--build{background:#60a5fa1f;color:#60a5fa}[data-theme=dark] .today-view__phase--peak{background:#a78bfa1f;color:#a78bfa}[data-theme=dark] .today-view__phase--taper{background:#fbbf241f;color:#fbbf24}[data-theme=dark] .today-view__phase--race{background:#fbbf2426;color:#fbbf24}[data-theme=dark] .today-view__phase--recovery{background:#4ade801a;color:#4ade80}.today-view__week{font-family:var(--font);font-size:.8rem;color:var(--color-text-muted);font-weight:500}.today-view__countdown{text-align:right;display:flex;flex-direction:column;align-items:flex-end}.today-view__countdown-number{font-family:var(--font-mono);font-size:2.5rem;font-weight:800;line-height:1;letter-spacing:-.03em;color:var(--color-text)}.today-view__countdown-number--urgent{color:var(--color-orange);animation:today-pulse 2s ease-in-out infinite}.today-view__countdown-label{font-family:var(--font);font-size:.7rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:500;margin-top:.15rem}.today-view__date{font-family:var(--font-heading);font-size:1.75rem;font-weight:700;color:var(--color-text);margin-bottom:1rem;letter-spacing:-.02em;line-height:1.2;animation-delay:80ms}.today-view__weekly-progress{margin-bottom:1.25rem;padding:.625rem .875rem;border-radius:var(--radius-sm);background:var(--color-surface);border:1px solid var(--color-border)}.today-view__weekly-progress-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.375rem}.today-view__weekly-progress-label{font-family:var(--font);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.today-view__weekly-progress-numbers{font-family:var(--font-mono);font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.today-view__weekly-progress-done{color:var(--color-primary);transition:color .3s ease}.today-view__weekly-progress-sep{color:var(--color-text-muted);margin:0 .1rem}.today-view__weekly-progress-unit{color:var(--color-text-muted);font-size:.7rem;margin-left:.15rem}.today-view__weekly-progress-bar{height:4px;border-radius:2px;background:var(--color-border);overflow:hidden}.today-view__weekly-progress-fill{height:100%;border-radius:2px;background:var(--color-primary);min-width:0}.today-view__weekly-progress-fill--animated{transition:width .5s cubic-bezier(.4,0,.2,1)}.today-view__weekly-progress-fill--complete{background:var(--color-green)}.today-view__type-badge{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1.5rem;animation-delay:.16s}.today-view__type-badge-left{display:flex;align-items:baseline;gap:.75rem}.today-view__type-label{font-family:var(--font-heading);font-size:1rem;font-weight:600;color:var(--color-text)}.today-view__type-miles{display:flex;align-items:baseline;gap:.15rem;font-family:var(--font-mono);font-size:.85rem;color:var(--color-text-muted)}.today-view__type-miles-actual{font-weight:700;color:var(--color-text)}.today-view__type-miles-sep{opacity:.4;font-weight:500}.today-view__strava-cta{display:flex;align-items:center;gap:.5rem;width:100%;padding:.625rem .75rem;margin-bottom:1rem;border:1px dashed rgba(252,76,2,.35);border-radius:8px;background:#fc4c020f;color:#fc4c02;font-family:var(--font-body);font-size:.8rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.today-view__strava-cta:hover{background:#fc4c021f;border-color:#fc4c0280}.today-view__strava-cta svg{flex-shrink:0}.today-view__session{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;margin-bottom:1rem;box-shadow:var(--shadow-sm);position:relative}.today-view__session-time{font-family:var(--font-mono);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:var(--color-text-muted);margin-bottom:.75rem}.today-view__session-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.today-view__session-miles{display:inline-flex;align-items:baseline;gap:.15rem;font-family:var(--font-mono);font-size:.85rem;font-weight:600;color:var(--color-text-secondary)}.today-view__session-miles-actual{font-weight:700;color:var(--color-text)}.today-view__session-miles-sep{opacity:.4}.today-view__session-miles--editable{cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .5rem;border-radius:var(--radius);transition:background .15s ease,color .15s ease}@media(hover:hover){.today-view__session-miles--editable:hover{background:var(--color-primary-light, rgba(59, 130, 246, .08));color:var(--color-primary)}}.today-view__session-miles-edit-icon{opacity:.35;transition:opacity .15s ease;flex-shrink:0}@media(hover:hover){.today-view__session-miles--editable:hover .today-view__session-miles-edit-icon{opacity:.7}}.today-view__session--editing{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary),var(--shadow-sm)}.today-view__miles-edit{display:flex;align-items:center;gap:.5rem}.today-view__miles-stepper{display:inline-flex;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;height:32px;outline:none}.today-view__miles-stepper:focus-within{outline:none;box-shadow:none}.today-view__miles-stepper-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--color-text-secondary);font-size:1.1rem;font-weight:500;cursor:pointer;transition:background .12s ease,color .12s ease;padding:0;line-height:1}@media(hover:hover){.today-view__miles-stepper-btn:hover:not(:disabled){background:var(--color-primary-light, rgba(59, 130, 246, .08));color:var(--color-primary)}}.today-view__miles-stepper-btn:active:not(:disabled){background:var(--color-primary-light, rgba(59, 130, 246, .08));color:var(--color-primary)}.today-view__miles-stepper-btn:disabled{opacity:.3;cursor:not-allowed}.today-view__miles-input{width:3.5ch;text-align:center;border:none;border-left:1px solid var(--color-border);border-right:1px solid var(--color-border);background:transparent;font-family:var(--font-mono);font-size:.9rem;font-weight:600;color:var(--color-text);height:32px;padding:0;-moz-appearance:textfield}.today-view__miles-input::-webkit-outer-spin-button,.today-view__miles-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.today-view__miles-input:focus{outline:none;box-shadow:none}.today-view__miles-unit{font-family:var(--font-mono);font-size:.8rem;color:var(--color-text-muted);font-weight:500}.today-view__miles-delta{font-family:var(--font-mono);font-size:.7rem;font-weight:700;padding:.15rem .4rem;border-radius:999px}.today-view__miles-delta--less{background:#ef44441a;color:var(--color-red, #ef4444)}.today-view__miles-delta--more{background:#22c55e1a;color:var(--color-green, #22c55e)}.today-view__redistribute{display:flex;border:1px solid var(--color-border);border-radius:var(--radius);margin-top:.75rem;overflow:hidden}.today-view__redistribute--past{flex-wrap:wrap}.today-view__redistribute--no-targets{font-size:.7rem;color:var(--color-text-muted);border:none;padding:.25rem 0}.today-view__redistribute-btn{flex:1;padding:.35rem .5rem;font-size:.7rem;font-weight:500;background:transparent;border:none;border-right:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;transition:background .12s ease,color .12s ease;white-space:nowrap}.today-view__redistribute-btn:last-child{border-right:none}.today-view__redistribute-btn--active{background:var(--color-primary);color:#fff}@media(hover:hover){.today-view__redistribute-btn:not(.today-view__redistribute-btn--active):hover{background:var(--color-bg)}}.today-view__redistribute-btn:not(.today-view__redistribute-btn--active):active{background:var(--color-bg)}.today-view__redistribute-btn--disabled{opacity:.35;cursor:not-allowed}.today-view__edit-actions{display:flex;gap:.5rem;margin-top:.75rem}.today-view__edit-cancel{flex:1;padding:.5rem;font-size:.75rem;font-weight:500;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);cursor:pointer;transition:background .12s ease}@media(hover:hover){.today-view__edit-cancel:hover{background:var(--color-bg)}}.today-view__edit-cancel:active{background:var(--color-bg)}.today-view__edit-confirm{flex:1;padding:.5rem;font-size:.75rem;font-weight:600;background:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--radius);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.35rem;transition:opacity .12s ease}@media(hover:hover){.today-view__edit-confirm:hover{opacity:.9}}.today-view__edit-confirm:active{opacity:.9}[data-theme=dark] .today-view__session--editing{border-color:var(--color-primary);box-shadow:0 0 0 1px #3b82f666,var(--shadow-sm)}[data-theme=dark] .today-view__miles-stepper{border-color:#fff3}[data-theme=dark] .today-view__miles-stepper-btn{color:#ffffffb3}@media(hover:hover){[data-theme=dark] .today-view__miles-stepper-btn:hover:not(:disabled){background:#ffffff1a;color:#fff}}[data-theme=dark] .today-view__miles-input{border-color:#fff3;color:#fff}[data-theme=dark] .today-view__redistribute{border-color:#fff3}[data-theme=dark] .today-view__redistribute-btn{border-color:#fff3;color:#ffffff80}[data-theme=dark] .today-view__redistribute-btn--active{background:#ffffff4d;color:#fff}@media(hover:hover){[data-theme=dark] .today-view__redistribute-btn:not(.today-view__redistribute-btn--active):hover{background:#ffffff1a;color:#fffc}}[data-theme=dark] .today-view__edit-cancel{border-color:#fff3;color:#fff9}@media(hover:hover){[data-theme=dark] .today-view__edit-cancel:hover{background:#ffffff14}}.today-view__wc-edit{margin-top:.5rem}.today-view__wc-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:center}.today-view__wc-field{display:flex;align-items:center;gap:.35rem}.today-view__wc-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);min-width:3.5em}.today-view__wc-input{width:3.5ch;text-align:center;border:none;border-left:1px solid var(--color-border);border-right:1px solid var(--color-border);background:transparent;font-family:var(--font-mono);font-size:.85rem;font-weight:600;color:var(--color-text);height:32px;padding:0;-moz-appearance:textfield}.today-view__wc-input::-webkit-outer-spin-button,.today-view__wc-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.today-view__wc-input:focus{outline:none;box-shadow:none}.today-view__wc-separator{font-size:.85rem;font-weight:500;color:var(--color-text-muted)}.today-view__wc-workout-vol{font-family:var(--font-mono);font-size:.85rem;font-weight:600;color:var(--color-text-secondary)}.today-view__timeline--editable{cursor:pointer;position:relative;transition:opacity .15s ease}@media(hover:hover){.today-view__timeline--editable:hover{opacity:.85}}.today-view__timeline-edit-icon{position:absolute;right:6px;top:50%;transform:translateY(-50%);opacity:.35;color:var(--color-text-muted);transition:opacity .15s ease;pointer-events:none}@media(hover:hover){.today-view__timeline--editable:hover .today-view__timeline-edit-icon{opacity:.7}}[data-theme=dark] .today-view__wc-input{border-color:#fff3;color:#fff}.today-view__workout-hero{margin-bottom:1rem}.today-view__workout-desc{font-family:var(--font-mono);font-size:1.1rem;font-weight:600;color:var(--color-text);line-height:1.5;letter-spacing:-.01em}.today-view__heat-badge{display:flex;align-items:center;gap:.3rem;font-size:.6875rem;font-weight:600;color:var(--color-red, #ef4444);margin-bottom:.375rem;opacity:.8}.today-view__heat-badge--altitude{color:var(--color-blue, #3b82f6)}.today-view__heat-badge--combined{color:#a855f7}.today-view__heat-badge svg{flex-shrink:0}.heat-pace{text-decoration:underline dotted;text-decoration-color:var(--color-red, #ef4444);text-underline-offset:3px;text-decoration-thickness:1.5px;cursor:default;border-radius:2px;transition:background .1s;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}@media(hover:hover){.heat-pace:hover{background:#ef44441f}[data-theme=dark] .heat-pace:hover{background:#ef44442e}}.heat-pace--altitude{text-decoration-color:var(--color-blue, #3b82f6)}.heat-pace--altitude:hover{background:#3b82f61f}[data-theme=dark] .heat-pace--altitude:hover{background:#3b82f62e}.heat-pace--combined{text-decoration-color:#a855f7}.heat-pace--combined:hover{background:#a855f71f}[data-theme=dark] .heat-pace--combined:hover{background:#a855f72e}.heat-pace--pressed{background:#ef44441f}.heat-pace--pressed.heat-pace--altitude{background:#3b82f61f}.heat-pace--pressed.heat-pace--combined{background:#a855f71f}[data-theme=dark] .heat-pace--pressed{background:#ef44442e}[data-theme=dark] .heat-pace--pressed.heat-pace--altitude{background:#3b82f62e}[data-theme=dark] .heat-pace--pressed.heat-pace--combined{background:#a855f72e}.heat-pace--pressed[data-tooltip]:after{opacity:1}.heat-pace__touch-tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--color-text);color:var(--color-bg);font-size:.7rem;font-weight:400;line-height:1.3;padding:.35rem .5rem;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:100}.heat-pace[data-tooltip]:after{transition:opacity .1s 0s}.today-view__split{display:flex;align-items:baseline;gap:.5rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.today-view__split-value{font-family:var(--font-mono);font-size:1.4rem;font-weight:700;color:var(--color-text-secondary)}.today-view__split-label{font-family:var(--font);font-size:.8rem;color:var(--color-text-muted);font-weight:500}.today-view__easy-label{font-family:var(--font);font-size:.95rem;color:var(--color-text-secondary);margin-top:.25rem}.today-view__timeline{display:flex;border-radius:8px;height:52px;margin-top:.5rem;gap:2px}.today-view__timeline-seg{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:48px;padding:.25rem .4rem;overflow:hidden}.today-view__timeline-seg:first-child{border-radius:8px 0 0 8px}.today-view__timeline-seg:last-child{border-radius:0 8px 8px 0}.today-view__timeline-seg:first-child:last-child{border-radius:8px}.today-view__timeline-seg--warmup{background:var(--color-primary-light)}.today-view__timeline-seg--work{background:linear-gradient(135deg,var(--color-primary),#6366f1);color:#fff;position:relative;overflow:visible}.today-view__rep-ticks{position:absolute;inset:0;display:flex;border-radius:inherit}.today-view__rep-tick{height:100%;min-width:0}.today-view__rep-tick--rep{border-right:1px solid rgba(255,255,255,.2)}.today-view__rep-tick--group{border-right:2px solid rgba(255,255,255,.35)}.today-view__rep-tick[data-tooltip]{position:relative;pointer-events:auto;cursor:default}.today-view__rep-tick[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--color-text);color:var(--color-bg);font-family:var(--font-mono);font-size:.65rem;font-weight:500;line-height:1.4;padding:.35rem .55rem;border-radius:6px;white-space:pre-line;text-align:center;width:max-content;pointer-events:none;opacity:0;transition:opacity .12s .1s;z-index:10}.today-view__rep-tick[data-tooltip]:hover:after{opacity:1}.today-view__rep-tick:first-child[data-tooltip]:after{left:0;transform:none}.today-view__rep-tick:last-child[data-tooltip]:after{left:auto;right:0;transform:none}.today-view__timeline-seg--cooldown{background:var(--color-primary-light)}.today-view__timeline-miles{font-family:var(--font-mono);font-size:.75rem;font-weight:700;line-height:1.2;position:relative;z-index:1}.today-view__timeline-label{font-family:var(--font);font-size:.6rem;text-transform:uppercase;letter-spacing:.05em;opacity:.75;font-weight:500;position:relative;z-index:1}.today-view__timeline-seg--warmup .today-view__timeline-miles,.today-view__timeline-seg--warmup .today-view__timeline-label,.today-view__timeline-seg--cooldown .today-view__timeline-miles,.today-view__timeline-seg--cooldown .today-view__timeline-label{color:var(--color-text-secondary)}@media(max-width:480px){.today-view__timeline-seg--warmup .today-view__timeline-label,.today-view__timeline-seg--cooldown .today-view__timeline-label{display:none}}.today-view--ambient-dt .today-view__timeline-seg--work{background:linear-gradient(135deg,#3b82f6,#8b5cf6)}.today-view--ambient-long .today-view__timeline-seg--work,.today-view--ambient-long-workout .today-view__timeline-seg--work{background:linear-gradient(135deg,#22c55e,#06b6d4)}.today-view--ambient-vo2 .today-view__timeline-seg--work{background:linear-gradient(135deg,#166534,#ec4899)}.today-view--ambient-hill .today-view__timeline-seg--work{background:linear-gradient(135deg,#22c55e,#eab308)}.today-view--ambient-speed .today-view__timeline-seg--work{background:linear-gradient(135deg,#ef4444,#f97316)}.today-view--ambient-marathon .today-view__timeline-seg--work{background:linear-gradient(135deg,#ec4899,#8b5cf6)}.today-view__strides{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1rem;box-shadow:var(--shadow-sm)}.today-view__strides-label{font-family:var(--font);font-size:.85rem;color:var(--color-text-secondary)}.today-view__rest{text-align:center;padding:3rem 1rem;animation-delay:.16s}.today-view__rest-icon{color:var(--color-text-muted);margin-bottom:1rem;opacity:.6}.today-view__rest-title{font-family:var(--font-heading);font-size:2rem;font-weight:700;color:var(--color-text);margin-bottom:.5rem;letter-spacing:-.02em}.today-view__rest-subtitle{font-family:var(--font);font-size:1rem;color:var(--color-text-muted)}.today-view__race{text-align:center;padding:2.5rem 1rem;animation-delay:.16s}.today-view__race-title{font-family:var(--font-heading);font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--color-orange);margin-bottom:.75rem}.today-view__race-distance{font-family:var(--font-heading);font-size:2.5rem;font-weight:800;color:var(--color-text);letter-spacing:-.03em;margin-bottom:1.5rem}.today-view__race-goal{display:flex;flex-direction:column;align-items:center;gap:.25rem}.today-view__race-goal-label{font-family:var(--font);font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);font-weight:600}.today-view__race-goal-time{font-family:var(--font-mono);font-size:3rem;font-weight:800;color:var(--color-text);letter-spacing:-.03em;line-height:1}.today-view__empty{text-align:center;padding:3rem 1rem}.today-view__empty-icon{color:var(--color-text-muted);margin-bottom:1.25rem;opacity:.5}.today-view__empty-title{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;color:var(--color-text);margin-bottom:.5rem;letter-spacing:-.02em}.today-view__empty-subtitle{font-family:var(--font);font-size:1rem;color:var(--color-text-muted)}.today-view__day-nav{display:flex;gap:.5rem;margin-bottom:1.5rem;animation-delay:.32s}.today-view__day-nav-btn{flex:1;min-width:0;display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius-sm);background:var(--color-surface);border:1px dashed var(--color-border);position:relative;cursor:pointer;transition:all var(--transition);font-family:inherit}.today-view__day-nav-btn--today{border:2px solid var(--color-primary)}.today-view__day-nav-btn--yesterday,.today-view__day-nav-btn--tomorrow{border:1px solid var(--color-border)}@media(hover:hover){.today-view__day-nav-btn:hover{border-color:var(--color-primary);background:var(--color-primary-light)}}.today-view__day-nav-btn:active{transform:scale(.98);border-color:var(--color-primary);background:var(--color-primary-light)}.today-view__day-nav-btn:active .today-view__day-nav-arrow{color:var(--color-primary)}.today-view__day-nav-arrow{font-size:.85rem;color:var(--color-text-muted);flex-shrink:0;transition:color var(--transition)}@media(hover:hover){.today-view__day-nav-btn:hover .today-view__day-nav-arrow{color:var(--color-primary)}}.today-view__day-nav-weekday{font-family:var(--font);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);white-space:nowrap;flex-shrink:0}.today-view__day-nav-btn--today .today-view__day-nav-weekday{color:var(--color-primary)}.today-view__day-nav-date{font-family:var(--font-mono);font-size:.7rem;font-weight:500;color:var(--color-text-muted)}.today-view__day-nav-type{font-family:var(--font);font-size:.85rem;font-weight:600;color:var(--color-text-secondary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.today-view__day-nav-miles{font-family:var(--font-mono);font-size:.8rem;font-weight:600;color:var(--color-text-muted);white-space:nowrap;flex-shrink:0}.today-view__day-nav-tooltip{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:.5rem .75rem;min-width:150px;z-index:100;pointer-events:none}.today-view__day-nav-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--color-border)}@media(hover:hover){.today-view__day-nav-btn:hover .today-view__day-nav-tooltip{display:block}}.today-view__day-nav-tooltip.is-longpress-visible{display:block}.today-view__day-nav-tooltip-date{font-family:var(--font-mono);font-size:.65rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.3rem;display:none}.today-view__day-nav-tooltip-session{display:flex;flex-direction:column;gap:.1rem}.today-view__day-nav-tooltip-session+.today-view__day-nav-tooltip-session{margin-top:.4rem;padding-top:.4rem;border-top:1px solid var(--color-border)}.today-view__day-nav-tooltip-zone{font-family:var(--font);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary)}.today-view__day-nav-tooltip-miles{font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--color-text-secondary)}.today-view__day-nav-tooltip-desc{font-family:var(--font);font-size:.65rem;color:var(--color-text-muted);line-height:1.3}.today-view__back-to-today{display:inline-flex;align-items:center;gap:.3rem;background:none;border:none;font-family:var(--font);font-size:.75rem;font-weight:600;color:var(--color-primary);cursor:pointer;padding:0;margin-top:-.5rem;margin-bottom:.75rem;transition:opacity var(--transition)}@media(hover:hover){.today-view__back-to-today:hover{opacity:.7}}.today-view__back-to-today:active{opacity:.7}@media(hover:hover){.today-view__close-btn:hover{opacity:1}}.today-view__date-row{display:flex;align-items:center;justify-content:space-between}.today-view__date-row .today-view__date{animation:none}.today-view__close-btn{padding:.4rem;border:none;background:none;color:var(--color-text-muted);cursor:pointer;opacity:.5;transition:opacity .15s;flex-shrink:0}.today-view__close-btn:hover{opacity:1}.today-view__session-check{display:flex;align-items:center;gap:.5rem;margin-top:.75rem;padding:.5rem .75rem;border-radius:var(--radius-sm);border:1px dashed var(--color-border);background:transparent;color:var(--color-text-muted);font-family:var(--font);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s ease;width:100%}@media(hover:hover){.today-view__session-check:hover{border-color:var(--color-green);color:var(--color-green);background:#34d3990d}}.today-view__session-check:active{transform:scale(.98);border-color:var(--color-green);color:var(--color-green);background:#34d3990d}.today-view__session-check-icon{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;border:2px solid currentColor;flex-shrink:0;transition:all .25s cubic-bezier(.4,0,.2,1)}.today-view__session-check-icon svg{opacity:0;transform:scale(.4);transition:all .25s cubic-bezier(.34,1.56,.64,1)}@media(hover:hover){.today-view__session-check:hover .today-view__session-check-icon svg{opacity:.4;transform:scale(.75)}}.today-view__session-check--done{border-style:solid;border-color:var(--color-green);background:#34d39914;color:var(--color-green);animation:session-check-pop .35s cubic-bezier(.34,1.56,.64,1)}.today-view__session-check--done .today-view__session-check-icon{background:var(--color-green);border-color:var(--color-green)}.today-view__session-check--done .today-view__session-check-icon svg{opacity:1;transform:scale(1);stroke:#fff}@media(hover:hover){.today-view__session-check--done:hover{background:#34d3990a;border-color:var(--color-border);color:var(--color-text-muted)}.today-view__session-check--done:hover .today-view__session-check-icon{background:transparent;border-color:currentColor}.today-view__session-check--done:hover .today-view__session-check-icon svg{opacity:.4;stroke:currentColor}}@keyframes session-check-pop{0%{transform:scale(1)}40%{transform:scale(1.03)}to{transform:scale(1)}}.today-view__session--checked{transition:opacity .3s ease}.today-view--all-done .today-view__type-badge{border-color:var(--color-green);background:#34d39914}.today-view--all-done .today-view__type-label:after{content:" ✔"}.today-view__confetti{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:9999;display:none}.today-view__actions{display:flex;gap:.75rem;margin-top:.5rem}.today-view__btn{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.25rem;border-radius:var(--radius-sm);font-family:var(--font);font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);transition:all var(--transition)}@media(hover:hover){.today-view__btn:hover{border-color:var(--color-primary);color:var(--color-primary);box-shadow:var(--shadow-sm)}}.today-view__btn--bail-active{border-color:var(--color-border);color:var(--color-text-secondary)}@media(hover:hover){.today-view__btn--bail-active:hover{border-color:var(--color-purple);color:var(--color-purple);box-shadow:var(--shadow-sm)}}.today-view__btn--bail-disabled{border-color:var(--color-border);color:var(--color-text-muted);opacity:.5;cursor:not-allowed}.today-view__btn--primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}@media(hover:hover){.today-view__btn--primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:#fff;box-shadow:var(--shadow)}}.today-view__btn--calendar{flex:1;justify-content:center}.today-view .zone-tag{font-size:.7rem;font-weight:700;padding:.15rem .5rem;border-radius:100px;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.today-view__modal-backdrop{position:fixed;inset:0;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem;animation:today-fade-in .15s ease}@keyframes today-fade-in{0%{opacity:0}to{opacity:1}}.today-view__modal{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.75rem;max-width:380px;width:100%;box-shadow:var(--shadow-lg);animation:today-scale-in .2s cubic-bezier(.34,1.56,.64,1)}.today-view__modal--wide{max-width:560px}@keyframes today-scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.today-view__modal-back{display:inline-flex;align-items:center;gap:.35rem;background:none;border:none;font-family:var(--font);font-size:.75rem;font-weight:600;color:var(--color-text-muted);cursor:pointer;padding:.25rem 0;margin-bottom:.75rem;transition:color var(--transition)}@media(hover:hover){.today-view__modal-back:hover{color:var(--color-primary)}}.today-view__modal-title{font-family:var(--font-heading);font-size:1.15rem;font-weight:700;margin-bottom:.4rem}.today-view__modal-desc{font-size:.875rem;color:var(--color-text-secondary);margin-bottom:1.25rem}.today-view__modal-desc--muted{font-size:.8rem;font-style:italic;color:var(--color-text-muted);margin-bottom:.75rem}.today-view__modal-options{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.today-view__modal-option{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.85rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;transition:all var(--transition);text-align:left}.today-view__modal-option strong{font-family:var(--font);font-size:.875rem;font-weight:700;color:var(--color-text)}.today-view__modal-option span{font-size:.75rem;color:var(--color-text-muted)}@media(hover:hover){.today-view__modal-option--convert:hover,.today-view__modal-option--skip:hover,.today-view__modal-option--redistribute:hover{border-color:var(--color-primary);background:var(--color-primary-light)}.today-view__modal-option--off:hover,.today-view__modal-option--drop:hover{border-color:var(--color-orange);background:var(--color-orange-light)}.today-view__modal-option--move:hover{border-color:var(--color-purple);background:#8b5cf60f}}.today-view__modal-confirm{width:100%;padding:.65rem 1.25rem;border-radius:var(--radius-sm);border:none;background:var(--color-primary);color:#fff;font-family:var(--font);font-size:.85rem;font-weight:700;cursor:pointer;transition:all var(--transition);margin-bottom:.5rem}@media(hover:hover){.today-view__modal-confirm:hover{background:var(--color-primary-hover);box-shadow:var(--shadow-sm)}}.today-view__modal-cancel{width:100%;padding:.55rem;border:none;background:none;font-family:var(--font);font-size:.8rem;font-weight:600;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition)}@media(hover:hover){.today-view__modal-cancel:hover{background:var(--color-bg);color:var(--color-text-secondary)}}.today-view__modal-actions{display:flex;flex-direction:column;gap:0;margin-top:1.25rem}.today-view__skip-input-row{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}.today-view__skip-input-wrap{display:flex;align-items:center;gap:.4rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.5rem .75rem;transition:border-color var(--transition)}.today-view__skip-input-wrap:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61f}.today-view__skip-input{width:3.5rem;border:none;background:transparent;font-family:var(--font-mono);font-size:1.25rem;font-weight:700;color:var(--color-text);text-align:center;outline:none;-moz-appearance:textfield}.today-view__skip-input::-webkit-inner-spin-button,.today-view__skip-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.today-view__skip-unit{font-family:var(--font-mono);font-size:.85rem;color:var(--color-text-muted);font-weight:500}.today-view__skip-badge{font-family:var(--font-mono);font-size:.75rem;font-weight:700;padding:.2rem .5rem;border-radius:100px;white-space:nowrap}.today-view__skip-badge--less{background:#f59e0b1f;color:#d97706}.today-view__skip-badge--more{background:#22c55e1f;color:#16a34a}.mini-week{margin:.75rem 0}.mini-week__labels{display:grid;grid-template-columns:repeat(7,1fr);gap:.35rem;margin-bottom:.25rem}.mini-week__label{text-align:center;font-family:var(--font);font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.mini-week__grid{position:relative;display:grid;grid-template-columns:repeat(7,1fr);gap:.35rem}.mini-week__grid--dragging .mini-day{transition:transform .2s cubic-bezier(.2,0,0,1)}.mini-week__grid--holding{cursor:grab}.mini-day{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.45rem .25rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);cursor:grab;transition:all var(--transition);position:relative;min-height:52px;-webkit-user-select:none;user-select:none;touch-action:none}@media(hover:hover){.mini-day:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm)}}.mini-day__date{font-family:var(--font);font-size:.6rem;font-weight:600;color:var(--color-text-secondary);margin-bottom:.15rem;white-space:nowrap}.mini-day__miles{font-family:var(--font-mono);font-size:.7rem;font-weight:700;color:var(--color-text)}.mini-day__label{font-family:var(--font);font-size:.65rem;font-weight:500;color:var(--color-text-muted)}.mini-day--dt{background:linear-gradient(135deg,#3b82f6,#1e3a8a);border-color:transparent}.mini-day--dt .mini-day__date,.mini-day--dt .mini-day__miles{color:#fff}.mini-day--long{background:linear-gradient(135deg,#22c55e,#06b6d4);border-color:transparent}.mini-day--long .mini-day__date,.mini-day--long .mini-day__miles{color:#fff}.mini-day--long-workout{background:linear-gradient(135deg,#22c55e,#0d9488,#3b82f6);border-color:transparent}.mini-day--long-workout .mini-day__date,.mini-day--long-workout .mini-day__miles{color:#fff}.mini-day--vo2{background:linear-gradient(135deg,#166534,#db2777);border-color:transparent}.mini-day--vo2 .mini-day__date,.mini-day--vo2 .mini-day__miles{color:#fff}.mini-day--hill{background:linear-gradient(135deg,#22c55e,#ca8a04);border-color:transparent}.mini-day--hill .mini-day__date,.mini-day--hill .mini-day__miles{color:#fff}.mini-day--speed{background:linear-gradient(135deg,#b91c1c,#ef4444);border-color:transparent}.mini-day--speed .mini-day__date,.mini-day--speed .mini-day__miles{color:#fff}.mini-day--tuneup{background:linear-gradient(135deg,#8b5cf6,#ec4899);border-color:transparent}.mini-day--tuneup .mini-day__date,.mini-day--tuneup .mini-day__miles{color:#fff}.mini-day--marathon{background:linear-gradient(135deg,#db2777,#6366f1);border-color:transparent}.mini-day--marathon .mini-day__date,.mini-day--marathon .mini-day__miles{color:#fff}.mini-day--threshold{background:linear-gradient(135deg,#60a5fa,#a78bfa);border-color:transparent}.mini-day--threshold .mini-day__date,.mini-day--threshold .mini-day__miles{color:#fff}.mini-day--race{background:linear-gradient(135deg,#d97706,#f59e0b,#fbbf24);border-color:transparent}.mini-day--race .mini-day__date,.mini-day--race .mini-day__miles{color:#fff}.mini-day--off{opacity:.55}.mini-day--easy{background:var(--color-surface)}.mini-day--past{opacity:.45}@media(hover:hover){.mini-day--past:hover{opacity:.7}}.mini-day--current{outline:2px solid var(--color-primary);outline-offset:1px}.mini-day--floating{position:fixed;z-index:1000;opacity:.92;transform:scale(1.08);box-shadow:0 8px 24px #0003;cursor:grabbing;pointer-events:none}.mini-day.day-card--drop-zone{opacity:.3;border-style:dashed;border-color:var(--color-primary);background:var(--color-primary-light)}.mini-day.day-card--drop-zone--warning{border-color:var(--color-red);background:#ef444414}.mini-day.day-card--holding{transform:scale(1.04);box-shadow:var(--shadow-md)}.mini-week__hard-group{pointer-events:none;outline:2px solid var(--color-red);outline-offset:2px;border-radius:var(--radius-sm);z-index:1}.mini-week__status{min-height:2.5rem;display:flex;align-items:center;justify-content:center;margin-top:.5rem}.mini-week__error{padding:.5rem .75rem;border-radius:var(--radius-sm);background:#ef444414;border:1px solid rgba(239,68,68,.2);color:var(--color-red);font-size:.75rem;font-weight:600;text-align:center;width:100%}.mini-week__warning{padding:.5rem .75rem;border-radius:var(--radius-sm);background:#f59e0b14;border:1px solid rgba(245,158,11,.2);color:#d97706;font-size:.75rem;font-weight:600;text-align:center;width:100%}.mini-week__hint{font-size:.75rem;color:var(--color-text-muted);text-align:center}.today-view__modal-confirm--disabled{opacity:.4;cursor:not-allowed}@media(hover:hover){.today-view__modal-confirm--disabled:hover{background:var(--color-primary);box-shadow:none}}.mini-day__tooltip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:.5rem .65rem;min-width:130px;z-index:100;pointer-events:none}.mini-day__tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--color-border)}@media(hover:hover){.mini-day:hover .mini-day__tooltip{display:block}}.mini-day--floating .mini-day__tooltip,.mini-day.day-card--drop-zone .mini-day__tooltip{display:none!important}.mini-day__tooltip-session{display:flex;flex-direction:column;gap:.1rem}.mini-day__tooltip-session+.mini-day__tooltip-session{margin-top:.4rem;padding-top:.4rem;border-top:1px solid var(--color-border)}.mini-day__tooltip-zone{font-family:var(--font);font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary)}.mini-day__tooltip-miles{font-family:var(--font-mono);font-size:.65rem;font-weight:600;color:var(--color-text-secondary)}.mini-day__tooltip-desc{font-family:var(--font);font-size:.6rem;color:var(--color-text-muted);line-height:1.3}[data-theme=dark] .today-view__modal-backdrop{background:#0009}@media(hover:hover){[data-theme=dark] .today-view__modal-option--convert:hover,[data-theme=dark] .today-view__modal-option--skip:hover,[data-theme=dark] .today-view__modal-option--redistribute:hover{background:#60a5fa1a}[data-theme=dark] .today-view__modal-option--off:hover,[data-theme=dark] .today-view__modal-option--drop:hover{background:#fbbf241a}[data-theme=dark] .today-view__modal-option--move:hover{background:#a78bfa1a}}[data-theme=dark] .today-view__skip-badge--less{background:#fbbf241f;color:#fbbf24}[data-theme=dark] .today-view__skip-badge--more{background:#4ade801f;color:#4ade80}[data-theme=dark] .today-view__skip-input-wrap:focus-within{box-shadow:0 0 0 3px #60a5fa26}[data-theme=dark] .mini-day--off{opacity:.45}[data-theme=dark] .mini-day--easy{background:var(--color-surface)}[data-theme=dark] .mini-day.day-card--drop-zone{background:#60a5fa14}[data-theme=dark] .mini-day.day-card--drop-zone--warning{background:#f8717114}[data-theme=dark] .mini-week__error{background:#f871711a;border-color:#f8717133;color:#fca5a5}[data-theme=dark] .mini-week__warning{background:#fbbf241a;border-color:#fbbf2433;color:#fbbf24}@media(prefers-reduced-motion:reduce){.today-view__modal-backdrop,.today-view__modal,.today-view__session-check--done{animation:none!important}.today-view__confetti{display:none!important}}@media(max-width:480px){.today-view__modal--wide{max-width:100%;padding:1.25rem}.mini-day{padding:.35rem .15rem;min-height:44px}.mini-day__date{font-size:.5rem}.mini-day__miles{font-size:.6rem}.mini-week__label{font-size:.5rem}.mini-day__tooltip{display:none!important}}@media(max-width:480px){.today-view{padding:1rem .75rem 2rem}.today-view__countdown-number{font-size:2rem}.today-view__date{font-size:1.4rem}.today-view__split-value{font-size:1.1rem}.today-view__race-distance{font-size:2rem}.today-view__race-goal-time{font-size:2.5rem}.today-view__rest-title{font-size:1.6rem}.today-view__actions{flex-direction:column}.today-view__btn{justify-content:center}.today-view__day-nav-btn{flex-wrap:wrap;gap:.15rem .5rem;padding:.6rem .75rem;align-items:center}.today-view__day-nav-weekday{font-size:.7rem}.today-view__day-nav-miles{font-size:.7rem;margin-left:auto}.today-view__day-nav-type{font-size:.8rem}.today-view__day-nav-date{display:none}.today-view__day-nav-tooltip-date{display:block}}.today-view__modal .redistribute-toggle{display:flex;border:1px solid var(--color-border);border-radius:var(--radius);margin-top:.5rem;margin-bottom:.75rem}.today-view__modal .redistribute-toggle--past{flex-wrap:wrap}.today-view__modal .redistribute-toggle__btn{flex:1;padding:.5rem;font-size:.75rem;font-family:inherit;border:none;border-right:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s}.today-view__modal .redistribute-toggle__btn:first-child{border-radius:var(--radius) 0 0 var(--radius)}.today-view__modal .redistribute-toggle__btn:last-of-type{border-right:none;border-radius:0 var(--radius) var(--radius) 0}.today-view__modal .redistribute-toggle__btn--active{background:var(--color-primary);color:#fff}@media(hover:hover){.today-view__modal .redistribute-toggle__btn:not(.redistribute-toggle__btn--active):hover{background:var(--color-bg)}}.today-view__modal .redistribute-toggle__btn--disabled{opacity:.4;cursor:not-allowed}.today-view__modal .redistribute-toggle__warning{width:100%;font-size:.7rem;color:var(--color-warning, #d97706);padding:.25rem .5rem 0;line-height:1.3}.today-view__sync-status{display:flex;align-items:center;justify-content:center;gap:.35rem;color:var(--color-text-secondary);font-size:.65rem;font-weight:500;opacity:.7;padding:.125rem 0}.today-view__sync-spinner{animation:today-view-sync-spin 1s linear infinite}@keyframes today-view-sync-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.today-view__strava-actual{margin-top:.75rem;padding:.625rem .75rem;border-radius:8px;border-left:3px solid;font-size:.8rem}.today-view__strava-actual--matched{background:#f1fdf5;border-left-color:#22c55e}.today-view__strava-actual--unmatched{background:#fefaf2;border-left-color:#f59e0b}.today-view__strava-actual-header{display:flex;align-items:center;gap:.3rem;margin-bottom:.35rem}.today-view__strava-logo{color:#fc4c02;flex-shrink:0}.today-view__strava-actual-label{font-weight:600;font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary)}.today-view__strava-actual-check{color:#22c55e;font-weight:700;font-size:.75rem;margin-left:auto}.today-view__strava-actual-stats{display:flex;align-items:baseline;gap:.75rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.today-view__strava-actual-miles{display:flex;align-items:baseline;gap:.3rem;font-size:.95rem;font-weight:600;color:var(--color-text)}.today-view__strava-actual-delta{font-size:.7rem;font-weight:500;border-radius:3px;padding:.05rem .3rem}.today-view__strava-actual-delta--over{color:#22c55e;background:#22c55e1a}.today-view__strava-actual-delta--under{color:#f59e0b;background:#f59e0b1a}.today-view__strava-actual-pace{font-size:.8rem;color:var(--color-text-secondary)}.today-view__strava-actual-desc{margin:.3rem 0 0;font-size:.75rem;color:var(--color-text-secondary);line-height:1.4}.today-view__strava-intervals-toggle{display:flex;align-items:center;gap:.3rem;margin:.3rem 0 0;padding:0;background:none;border:none;font-size:.75rem;color:var(--color-text-secondary);cursor:pointer;font-family:inherit;line-height:1.4;text-align:left}.today-view__strava-intervals-toggle:hover{color:var(--color-text)}.today-view__strava-intervals-chevron{flex-shrink:0;transition:transform .2s ease}.today-view__strava-intervals-chevron--open{transform:rotate(90deg)}.today-view__strava-intervals{margin:.35rem 0 0;padding:.4rem 0;font-size:.7rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.today-view__strava-interval-row{display:grid;grid-template-columns:4.5rem 3rem 2.5rem 1fr;gap:.4rem;padding:.2rem 0;align-items:baseline;color:var(--color-text)}.today-view__strava-interval-row--warmup{color:var(--color-text-secondary)}.today-view__strava-interval-label{font-family:var(--font-sans, inherit);font-size:.65rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-tertiary, var(--color-text-secondary))}.today-view__strava-interval-dist{text-align:right}.today-view__strava-interval-time{text-align:right;color:var(--color-text-secondary)}.today-view__strava-interval-pace{color:var(--color-text-secondary)}.today-view__strava-actual-link{display:inline-flex;align-items:center;color:#fc4c02;font-size:.7rem;font-weight:500;text-decoration:none;margin-top:.35rem;transition:opacity .15s}.today-view__strava-actual-link:hover{text-decoration:underline}.today-view__strava-extra{padding:.75rem;border-radius:10px;background:#fc4c020a;border:1px solid rgba(252,76,2,.12);margin-bottom:1rem;animation:today-view-fadein .4s ease both}.today-view__strava-extra-header{display:flex;align-items:center;gap:.35rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#fc4c02;margin-bottom:.5rem}.today-view__strava-extra-item{padding:.5rem 0}.today-view__strava-extra-item+.today-view__strava-extra-item{border-top:1px solid rgba(252,76,2,.1)}.today-view__strava-extra-stats{display:flex;align-items:baseline;gap:.4rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.85rem;font-weight:600;color:var(--color-text)}.today-view__strava-extra-sep{color:var(--color-text-secondary);opacity:.5}.today-view__strava-extra-desc{margin:.2rem 0 0;font-size:.7rem;color:var(--color-text-secondary)}.today-view__strava-components{margin-top:.4rem;display:flex;flex-direction:column;gap:.35rem}.today-view__strava-component{padding:.35rem 0;border-top:1px solid rgba(255,255,255,.06)}.today-view__strava-component:first-child{border-top:none}.today-view__strava-component-stats{display:flex;align-items:baseline;gap:.4rem;font-size:.8rem;font-weight:600}.today-view__strava-component-sep{color:var(--color-text-secondary);font-weight:400}.today-view__strava-component-desc{margin:.15rem 0 0;font-size:.7rem;color:var(--color-text-secondary)}.today-view__strava-powered{display:flex;align-items:center;justify-content:center;gap:.3rem;margin-top:.75rem;padding-bottom:.5rem;font-size:.6rem;font-weight:500;letter-spacing:.03em;color:var(--color-text-secondary);opacity:.5;animation:today-view-fadein .4s ease both}.today-view__strava-powered svg{color:#fc4c02}[data-theme=dark] .today-view__strava-actual--matched{background:#0f1f15}[data-theme=dark] .today-view__strava-actual--unmatched{background:#1f1a0f}[data-theme=dark] .today-view__strava-actual-delta--over{background:#22c55e26}[data-theme=dark] .today-view__strava-actual-delta--under{background:#f59e0b26}[data-theme=dark] .today-view__strava-extra{background:#fc4c020f;border-color:#fc4c0226}@media(pointer:coarse){.today-view__btn{min-height:44px}@media(hover:hover){.today-view__day-nav-btn:hover .today-view__day-nav-tooltip{display:none}}.today-view__day-nav-tooltip.is-longpress-visible{display:block}}.today-view__activity-drag-handle{display:inline-flex;align-items:center;justify-content:center;cursor:grab;padding:.25rem;margin-right:.25rem;border-radius:4px;touch-action:none;user-select:none;-webkit-user-select:none;flex-shrink:0}.today-view__activity-drag-handle:hover{background:#0000000f}.today-view__activity-drag-handle:active{cursor:grabbing;background:#0000001a}[data-theme=dark] .today-view__activity-drag-handle:hover{background:#ffffff14}[data-theme=dark] .today-view__activity-drag-handle:active{background:#ffffff1f}.today-view__activity-drop-zone{display:none}.today-view__activity-drop-zone--active{display:flex;align-items:center;justify-content:center;margin-top:.5rem;padding:.75rem;border:2px dashed rgba(34,197,94,.4);border-radius:8px;background:#22c55e0d;color:#22c55e;font-size:.75rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;transition:background .15s,border-color .15s}.today-view__activity-drop-zone--active:hover{background:#22c55e1f;border-color:#22c55e}.today-view__strava-actual--dragging{opacity:.4;transform:scale(.97);transition:opacity .15s,transform .15s}.today-view__strava-extra--drop-target{border:2px dashed rgba(252,76,2,.4);background:#fc4c020a;min-height:48px;transition:border-color .15s,background .15s}.today-view__strava-extra--drop-target:hover{border-color:#fc4c02;background:#fc4c0214}.today-view__strava-extra-item-row{display:flex;align-items:center;gap:.25rem}.today-view__strava-extra-item--dragging{opacity:.4}.today-view__strava-actual+.today-view__strava-actual{margin-top:.375rem}.today-view__activity-ghost{position:fixed;z-index:9999;pointer-events:none;display:flex;align-items:center;gap:.35rem;padding:.5rem .75rem;border-radius:10px;background:var(--color-surface, #fff);border:1.5px solid rgba(252,76,2,.35);box-shadow:0 8px 24px #0000001f,0 2px 6px #0000000f,0 0 0 1px #fc4c0214;font-size:.8rem;transform:rotate(-1.5deg) scale(1.03);opacity:.95;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);will-change:left,top;transition:none}.today-view__activity-ghost .today-view__strava-logo{color:#fc4c02;flex-shrink:0}.today-view__activity-ghost-miles{font-weight:700;color:var(--color-text, #1a1a2e);white-space:nowrap}.today-view__activity-ghost-sep{color:var(--color-text-secondary, #888);opacity:.5}.today-view__activity-ghost-pace{color:var(--color-text-secondary, #666);white-space:nowrap}[data-theme=dark] .today-view__activity-ghost{background:var(--color-surface, #1e1e2e);border-color:#fc4c0273;box-shadow:0 8px 24px #0006,0 2px 6px #0003,0 0 0 1px #fc4c0226}[data-theme=dark] .today-view__activity-drop-zone--active{border-color:#22c55e80;background:#22c55e14}[data-theme=dark] .today-view__strava-extra--drop-target{border-color:#fc4c0280;background:#fc4c020f}.today-view--is-today:before{opacity:.09!important}[data-theme=dark] .today-view--is-today:before{opacity:.14!important}.today-view--is-today .today-view__date-row{position:relative;padding-left:.875rem}.today-view--is-today .today-view__date-row:before{content:"";position:absolute;left:0;top:.15rem;bottom:.15rem;width:3px;border-radius:2px;background:var(--color-primary);animation:today-bar-breathe 3s ease-in-out infinite}@keyframes today-bar-breathe{0%,to{opacity:.85}50%{opacity:.35}}.today-view--is-today .today-view__date:after{content:"Today";display:inline-block;font-family:var(--font);font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-primary);background:#3b82f614;padding:.15rem .45rem;border-radius:3px;margin-left:.6rem;vertical-align:middle;position:relative;top:-.15rem}[data-theme=dark] .today-view--is-today .today-view__date:after{background:#60a5fa1f}.today-view--is-today .today-view__countdown-label:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--color-primary);margin-right:.35rem;vertical-align:middle;position:relative;top:-.5px;animation:today-dot-pulse 2s ease-in-out infinite}@keyframes today-dot-pulse{0%,to{opacity:1;box-shadow:0 0 #3b82f666}50%{opacity:.6;box-shadow:0 0 0 4px #3b82f600}}[data-theme=dark] .today-view--is-today .today-view__countdown-label:before{background:#60a5fa}.today-view--is-today .today-view__session{border-color:#3b82f62e;box-shadow:var(--shadow-sm),0 0 0 1px #3b82f60f}[data-theme=dark] .today-view--is-today .today-view__session{border-color:#60a5fa2e;box-shadow:var(--shadow-sm),0 0 0 1px #60a5fa14}.today-view--is-today .today-view__weekly-progress{border-color:#3b82f626}[data-theme=dark] .today-view--is-today .today-view__weekly-progress{border-color:#60a5fa26}@media(prefers-reduced-motion:reduce){.today-view--is-today .today-view__date-row:before,.today-view--is-today .today-view__countdown-label:before{animation:none;opacity:.7}}.strava-health{display:flex;margin-top:.75rem;border-radius:var(--radius-sm);overflow:hidden;border:1px solid rgba(148,163,184,.2);box-shadow:inset 0 1px 3px #0000000a}[data-health=warn] .strava-health__accent{background:linear-gradient(180deg,#f59e0b,#d97706)}[data-health=err] .strava-health__accent{background:linear-gradient(180deg,#ef4444,#dc2626)}.strava-health__accent{width:3px;flex-shrink:0}.strava-health__content{flex:1;min-width:0;padding:.625rem .75rem}.strava-health__header{margin-bottom:.5rem}.strava-health__status-row{display:flex;align-items:center;gap:.4rem}.strava-health__beacon{width:6px;height:6px;border-radius:50%;flex-shrink:0}.strava-health__beacon--warn{background:#f59e0b;box-shadow:0 0 5px #f59e0b73;animation:beacon-pulse 2s ease-in-out infinite}.strava-health__beacon--err{background:#ef4444;box-shadow:0 0 5px #ef444473;animation:beacon-pulse 1.5s ease-in-out infinite}@keyframes beacon-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.strava-health__status-text{font-family:var(--font-mono);font-size:.625rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}[data-health=warn] .strava-health__status-text{color:#d97706}[data-health=err] .strava-health__status-text{color:#ef4444}.strava-health__events{display:flex;flex-direction:column;gap:1px;background:#94a3b81a;border-radius:4px;overflow:hidden;margin-bottom:.5rem}.strava-health__event{display:flex;align-items:center;gap:.375rem;padding:.25rem .4rem;background:var(--color-surface);font-family:var(--font-mono);font-size:.6rem;line-height:1.4}.strava-health__event--err{background:#ef44440a}.strava-health__dot{width:4px;height:4px;border-radius:50%;flex-shrink:0}.strava-health__dot--err{background:#ef4444}.strava-health__event-type{font-weight:600;font-size:.5625rem;letter-spacing:.03em;color:var(--color-text-muted);flex-shrink:0;width:2.75rem}.strava-health__event-msg{color:#dc2626;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strava-health__event-meta{display:flex;align-items:center;gap:.3rem;flex-shrink:0;color:var(--color-text-muted);font-size:.5625rem}.strava-health__event-time{opacity:.7}.strava-health__stats{display:flex;align-items:center;gap:.4rem;font-family:var(--font-mono);font-size:.5625rem;color:var(--color-text-muted)}.strava-health__stat-val{font-weight:700;color:var(--color-text-secondary)}.strava-health__stat--err,.strava-health__stat--err .strava-health__stat-val{color:#ef4444}.strava-health__stat-sep{width:2px;height:2px;border-radius:50%;background:var(--color-text-muted);opacity:.4}[data-theme=dark] .strava-health{border-color:#33415599;box-shadow:inset 0 1px 4px #0003}[data-theme=dark] .strava-health__events{background:#3341554d}[data-theme=dark] .strava-health__event{background:#1e293bb3}[data-theme=dark] .strava-health__event--err{background:#ef444414}[data-theme=dark] .strava-health__event-msg{color:#f87171}[data-theme=dark] .strava-health__stat-val{color:var(--color-text)}[data-theme=dark] .strava-health__stat--err,[data-theme=dark] .strava-health__stat--err .strava-health__stat-val{color:#f87171}[data-theme=dark] [data-health=warn] .strava-health__status-text{color:#fbbf24}[data-theme=dark] [data-health=err] .strava-health__status-text{color:#f87171}@media(max-width:480px){.strava-health__event-meta{display:none}}.settings-page{max-width:520px;margin:0 auto;animation:fade-in .3s ease}@media(max-width:480px){.settings-page{margin-top:0}}.settings-page__card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:0 1.75rem;box-shadow:var(--shadow)}.settings-page__header{display:flex;align-items:center;gap:.625rem;padding:1.25rem 0;border-bottom:1px solid var(--color-border)}.settings-page__back{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition);flex-shrink:0}.settings-page__back:hover{background:var(--color-bg);border-color:var(--color-text-muted);color:var(--color-text)}.settings-page__title{font-family:var(--font-heading);font-size:1.125rem;font-weight:700;letter-spacing:-.02em}.settings-section{padding:1.25rem 0}.settings-section+.settings-section{border-top:1px solid var(--color-border)}.settings-section__title{font-family:var(--font-heading);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:.875rem;display:flex;align-items:center;gap:.5rem}.settings-section__title svg{opacity:.6}.settings-section__desc{font-size:.8125rem;color:var(--color-text-secondary);margin:-.375rem 0 .875rem;line-height:1.4}.settings-connection{padding:.5rem 0}.settings-connection+.settings-connection{border-top:1px solid var(--color-border)}.settings-connection__row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.settings-connection__info{display:flex;align-items:center;gap:.75rem;min-width:0}.settings-connection__icon{flex-shrink:0}.settings-connection__info>div{display:flex;flex-direction:column;min-width:0}.settings-connection__label{font-size:.875rem;font-weight:600;color:var(--color-text)}.settings-connection__status{font-size:.75rem;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-connection__btn{flex-shrink:0;font-size:.75rem;font-weight:600;padding:.375rem .75rem;border-radius:6px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);transition:all var(--transition)}.settings-connection__btn--connect{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.settings-connection__btn--connect:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.settings-connection__btn--strava{background:#fc4c02;border-color:#fc4c02;color:#fff}.settings-connection__btn--strava:hover{background:#e04300;border-color:#e04300}.settings-connection__btn--disconnect{color:var(--color-text-muted)}.settings-connection__btn--disconnect:hover:not(:disabled){color:var(--color-red);border-color:var(--color-red);background:var(--color-red-light)}.settings-connection__sync-info{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0 0;font-size:.7rem;color:var(--color-text-muted)}.settings-connection__sync-time{font-size:.7rem}.settings-connection__sync-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .6rem;border-radius:5px;border:1px solid rgba(252,76,2,.3);background:none;color:#fc4c02;font-size:.7rem;font-family:inherit;font-weight:500;cursor:pointer;transition:all .15s}.settings-connection__sync-btn:hover{background:#fc4c0214}.settings-connection__sync-btn:disabled{opacity:.6;cursor:not-allowed}.settings-connection__sync-buttons{display:flex;gap:.4rem}.settings-connection__sync-btn--force{color:var(--color-text-secondary);border-color:var(--color-border)}.settings-connection__sync-btn--force:hover{background:#ffffff0a;color:var(--color-text-primary)}@keyframes settings-sync-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.settings-sync-spinner{animation:settings-sync-spin 1s linear infinite}.settings-theme-toggle{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.settings-theme-toggle__btn{flex:1;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.8125rem;font-weight:500;background:var(--color-surface);color:var(--color-text-secondary);border:none;border-radius:0;cursor:pointer;transition:all var(--transition)}.settings-theme-toggle__btn+.settings-theme-toggle__btn{border-left:1px solid var(--color-border)}.settings-theme-toggle__btn:hover:not(.settings-theme-toggle__btn--active){background:var(--color-bg)}.settings-theme-toggle__btn--active{background:var(--color-primary);color:#fff}.settings-theme-toggle__btn--active svg{stroke:#fff}.settings-units-group{display:flex;align-items:center;justify-content:space-between;gap:1rem}.settings-units-group+.settings-units-group{margin-top:.625rem}.settings-units-group__label{font-size:.8125rem;font-weight:500;color:var(--color-text-secondary);flex-shrink:0}.settings-units-group .settings-theme-toggle{flex:0 1 auto;min-width:0}.settings-location{margin-bottom:1rem}.settings-location__current{display:flex;align-items:center;gap:.625rem;padding:.75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.settings-location__pin{flex-shrink:0;color:var(--color-primary)}.settings-location__details{flex:1;min-width:0;display:flex;flex-direction:column}.settings-location__name{font-size:.875rem;font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-location__elevation{font-size:.75rem;color:var(--color-text-muted)}.settings-location__remove{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;border-radius:6px;color:var(--color-text-muted)}.settings-location__remove:hover{background:var(--color-red-light);color:var(--color-red)}.settings-location__change{margin-top:.5rem;background:none;border:none;font-size:.75rem;font-weight:500;color:var(--color-primary);padding:.25rem 0;cursor:pointer}.settings-location__change:hover{text-decoration:underline}.settings-location-search{display:flex;flex-direction:column;gap:.625rem}.settings-location-search__actions{display:flex;gap:.5rem}.settings-location-search__device{display:flex;align-items:center;gap:.375rem;font-size:.8125rem;font-weight:500;padding:.5rem .75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);transition:all var(--transition)}.settings-location-search__device:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.settings-location-search__cancel{font-size:.8125rem;font-weight:500;padding:.5rem .75rem;background:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted)}.settings-location-search__cancel:hover{color:var(--color-text-secondary);border-color:var(--color-text-muted)}.settings-location-search__denied{font-size:.75rem;color:var(--color-red)}.settings-location-search__input-wrap{position:relative}.settings-location-search__search-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--color-text-muted);pointer-events:none}.settings-location-search__input{padding-left:2.25rem!important;font-size:.875rem!important}.settings-location-search__results{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;max-height:200px;overflow-y:auto}.settings-location-search__result{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem .75rem;background:var(--color-surface);border:none;border-radius:0;text-align:left;cursor:pointer;transition:background var(--transition)}.settings-location-search__result:not(:last-child){border-bottom:1px solid var(--color-border)}.settings-location-search__result:hover{background:var(--color-primary-light)}.settings-location-search__result-name{font-size:.8125rem;font-weight:500;color:var(--color-text)}.settings-location-search__result-region{font-size:.75rem;color:var(--color-text-muted)}.settings-location-search__loading{font-size:.75rem;color:var(--color-text-muted);padding:.25rem 0}.settings-adjustments{display:flex;flex-direction:column;gap:.25rem;margin-top:1rem}.settings-adjustment{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.625rem 0;cursor:pointer;margin:0}.settings-adjustment__left{display:flex;align-items:center;gap:.625rem;min-width:0}.settings-adjustment__icon{flex-shrink:0;opacity:.7}.settings-adjustment__icon--heat{color:#ea580c}.settings-adjustment__icon--altitude{color:var(--color-primary)}.settings-adjustment__left>div{display:flex;flex-direction:column}.settings-adjustment__label{font-size:.8125rem;font-weight:600;color:var(--color-text)}.settings-adjustment__desc{font-size:.7rem;color:var(--color-text-muted);line-height:1.3}.settings-adjustment--sub{padding-left:1.75rem;border-top:none;padding-top:0;padding-bottom:.375rem}.settings-adjustment--sub .settings-adjustment__label{font-size:.75rem}.settings-adjustment--sub .settings-adjustment__desc{font-size:.625rem}.settings-adjustment--sub .settings-adjustment__icon{width:13px;height:13px}.settings-heat-hour-dropdown{width:68px;flex-shrink:0}.settings-heat-hour-dropdown .dropdown__trigger{font-size:.7rem;padding:.3rem .5rem}.settings-heat-hour-dropdown .dropdown__chevron{width:10px;height:10px}.settings-heat-hour-dropdown .dropdown__menu{left:auto;right:0;min-width:100px;max-height:150px}.settings-heat-hour-dropdown .dropdown__option{font-size:.75rem;padding:.35rem .5rem}@media(pointer:coarse){.settings-heat-hour-dropdown .dropdown__option{min-height:36px}}.settings-heat-hour-dropdown .dropdown__check{width:12px;height:12px}.settings-toggle{position:relative;flex-shrink:0;width:40px;height:22px;padding:0;background:var(--color-border);border:none;border-radius:11px;cursor:pointer;transition:background .2s ease}.settings-toggle--on{background:var(--color-primary)}.settings-toggle--on .settings-toggle__thumb{transform:translate(18px)}.settings-toggle--disabled{opacity:.4;cursor:not-allowed}.settings-toggle__thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.settings-spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@media(max-width:600px){.settings-page__card{padding:.5rem 1.25rem;border-radius:var(--radius)}}:root{--color-bg: #f8fafc;--color-dot-grid: rgba(148, 163, 184, .3);--color-surface: #ffffff;--color-text: #0f172a;--color-text-secondary: #475569;--color-text-muted: #94a3b8;--color-border: #e2e8f0;--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-primary-light: #dbeafe;--color-green: #22c55e;--color-green-light: #dcfce7;--color-red: #ef4444;--color-red-light: #fee2e2;--color-purple: #8b5cf6;--color-orange: #f59e0b;--color-orange-light: #fef3c7;--radius: 12px;--radius-sm: 8px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow: 0 1px 3px rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.06);--shadow-md: 0 4px 6px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.06);--shadow-lg: 0 10px 15px rgba(0,0,0,.1), 0 4px 6px rgba(0,0,0,.05);--font: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-heading: "Outfit", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--transition: .15s ease}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{font-family:var(--font);background:radial-gradient(circle,var(--color-dot-grid) 1px,transparent 1px) 0 0 / 24px 24px,var(--color-bg);color:var(--color-text);line-height:1.6;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}#root{min-height:100vh}.app{max-width:1200px;margin:0 auto;padding:calc(var(--header-height, 7.5rem) + 1rem) 1rem 2rem}.app-header{position:fixed;top:0;left:0;right:0;z-index:100;padding:1.75rem 0 .75rem;background:radial-gradient(circle,var(--color-dot-grid) 1px,transparent 1px) 0 0 / 24px 24px,var(--color-bg);transition:padding .35s cubic-bezier(.4,0,.2,1),background .35s cubic-bezier(.4,0,.2,1),box-shadow .35s cubic-bezier(.4,0,.2,1)}.app-header__inner{max-width:1200px;margin:0 auto;padding:0 1rem;display:flex;align-items:center;justify-content:center;position:relative}.app-header__brand{text-align:center;transition:text-align 0s .15s}.app-header__actions{position:absolute;right:1rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.5rem}.app-header__coach-link{padding:.3rem .6rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-purple);background:#8b5cf61a;border:1px solid rgba(139,92,246,.2);border-radius:999px;cursor:pointer;transition:all var(--transition)}@media(hover:hover){.app-header__coach-link:hover{background:#8b5cf633}}h1,h2,h3,h4{font-family:var(--font-heading)}.app-header h1{font-size:2rem;font-weight:800;letter-spacing:-.04em;line-height:1.2;background:linear-gradient(135deg,#1e3a8a,#2563eb,#3b82f6,#0ea5e9,#06b6d4,#1e3a8a);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:gradient-shift 8s ease-in-out infinite;transition:font-size .35s cubic-bezier(.4,0,.2,1)}.app-header__subtitle{color:var(--color-text-secondary);margin-top:.25rem;font-size:1rem;opacity:1;max-height:2rem;overflow:hidden;transition:opacity .25s ease,max-height .3s cubic-bezier(.4,0,.2,1),margin-top .3s cubic-bezier(.4,0,.2,1)}.app-header__breadcrumb{display:none;align-items:center;gap:.5rem;font-size:.8125rem;font-family:var(--font);color:var(--color-text-muted);white-space:nowrap;opacity:0;transition:opacity .3s ease .1s}.app-header__breadcrumb a{color:var(--color-text-secondary);text-decoration:none;font-weight:500;transition:color var(--transition)}@media(hover:hover){.app-header__breadcrumb a:hover{color:var(--color-primary)}}.breadcrumb-sep{color:var(--color-border);font-size:.875rem;-webkit-user-select:none;user-select:none}.breadcrumb-current{color:var(--color-text);font-weight:600}.app-header--compact{padding:.625rem 0;background:#f8fafcd1;backdrop-filter:blur(12px) saturate(180%);-webkit-backdrop-filter:blur(12px) saturate(180%);border-bottom:1px solid rgba(226,232,240,.5);box-shadow:0 1px 3px #0000000a,0 4px 12px #00000005}.app-header--compact:has(.plan-toolbar){padding-bottom:0;border-bottom:none;box-shadow:none}.app-header--compact .plan-toolbar{border-bottom:1px solid rgba(226,232,240,.5);box-shadow:0 1px 3px #0000000a,0 4px 12px #00000005}.app-header--compact:has(.sign-in-strip) .plan-toolbar{border-bottom:none;box-shadow:none}.app-header--compact .sign-in-strip{box-shadow:0 1px 3px #0000000a,0 4px 12px #00000005}[data-theme=dark] .app-header--compact .plan-toolbar{border-bottom-color:#33415580}.app-header--compact .app-header__inner{justify-content:flex-start;gap:1.5rem}.app-header--compact .app-header__brand{text-align:left;flex-shrink:0;transition-delay:0s}.app-header--compact h1{font-size:1.25rem}.app-header--compact .app-header__subtitle{opacity:0;max-height:0;margin-top:0;pointer-events:none}.app-header--compact .app-header__breadcrumb{display:flex;opacity:1;position:absolute;left:50%;transform:translate(-50%)}.app-loading{text-align:center;padding:3rem;color:var(--color-text-secondary);font-size:.9375rem}button{cursor:pointer;border:none;border-radius:var(--radius-sm);font-family:var(--font);font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all var(--transition)}button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button:active:not(:disabled){transform:scale(.97);transition-duration:75ms}.btn-primary{background:var(--color-primary);color:#fff;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;border-radius:var(--radius)}@media(hover:hover){.btn-primary:hover{background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}}.btn-primary:active:not(:disabled){background:var(--color-primary-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);padding:.5rem 1rem}@media(hover:hover){.btn-secondary:hover{background:var(--color-bg);border-color:var(--color-text-muted)}}.btn-secondary:active:not(:disabled){background:var(--color-bg);border-color:var(--color-text-muted)}.btn-secondary.active{background:var(--color-primary-light);color:var(--color-primary);border-color:var(--color-primary)}input,select,textarea{font-family:var(--font);font-size:1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.625rem .75rem;background:var(--color-surface);color:var(--color-text);transition:border-color var(--transition);width:100%;max-width:100%;-webkit-user-select:text;user-select:text}select{padding-right:2rem}input:focus,select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}label{display:block;font-size:.875rem;font-weight:500;color:var(--color-text-secondary);margin-bottom:.375rem}@keyframes gradient-shift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes pulse-opacity{0%,to{opacity:.8}50%{opacity:1}}@keyframes pulse-scale{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.92)}}@keyframes backdrop-in{0%{opacity:0;backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}to{opacity:1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}}@keyframes backdrop-out{0%{opacity:1}to{opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes bg-pulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.2)}}@keyframes speed-gradient-sweep{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.back-button{display:inline-flex;align-items:center;gap:.375rem;margin-bottom:1.5rem;background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);font-size:.9rem;font-weight:500;padding:.5rem 1rem;border-radius:var(--radius);cursor:pointer;transition:background .15s,border-color .15s}@media(hover:hover){.back-button:hover{background:var(--color-bg);border-color:var(--color-text-muted)}}.back-button:active{background:var(--color-bg);border-color:var(--color-text-muted)}.modal-backdrop{position:fixed;inset:0;background:#00000073;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem;animation:backdrop-in .3s cubic-bezier(.22,1,.36,1) forwards;overflow:hidden}.modal-backdrop--closing{animation:backdrop-out .2s ease forwards}.modal-content{background:var(--color-surface);border-radius:var(--radius-lg);padding:2rem;max-width:480px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-lg),0 0 80px #00000026;animation:scale-in .35s cubic-bezier(.34,1.56,.64,1);position:relative}.modal-backdrop--closing .modal-nav-wrapper,.modal-backdrop--closing .modal-content{animation:scale-out .2s ease forwards}body.modal-open .app-header,body.modal-open .app{transform:scale(.98);border-radius:12px;transition:transform .4s cubic-bezier(.34,1.56,.64,1),border-radius .4s ease,padding-top .15s ease}body:not(.modal-open) .app-header,body:not(.modal-open) .app{transition:transform .3s cubic-bezier(.22,1,.36,1),border-radius .3s ease,padding-top .15s ease}@media(prefers-reduced-motion:reduce){.modal-backdrop{animation:none;opacity:1}.modal-backdrop--closing,.modal-content,.modal-backdrop--closing .modal-nav-wrapper,.modal-backdrop--closing .modal-content{animation:none}body.modal-open .app-header,body.modal-open .app{transform:none;transition:none}}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem}.app-footer{margin-top:3rem;padding:1.25rem 0 .5rem;border-top:1px solid var(--color-border);text-align:center}.app-footer__credit{font-size:.75rem;color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase;font-weight:500}.theme-toggle{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition)}@media(hover:hover){.theme-toggle:hover{background:var(--color-bg);border-color:var(--color-text-muted);color:var(--color-text)}}.theme-toggle:active{background:var(--color-bg);border-color:var(--color-text-muted);color:var(--color-text)}.theme-toggle__icon{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}@media(hover:hover){.theme-toggle:hover .theme-toggle__icon{transform:rotate(15deg)}}.theme-toggle__icon--dark{transform:rotate(-20deg)}@media(hover:hover){.theme-toggle:hover .theme-toggle__icon--dark{transform:rotate(0)}}.settings-gear{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition)}.settings-gear:hover{background:var(--color-bg);border-color:var(--color-text-muted);color:var(--color-text)}.settings-gear:hover .settings-gear__icon{transform:rotate(45deg)}.settings-gear__icon{transition:transform .4s cubic-bezier(.34,1.56,.64,1)}[data-theme=dark]{--color-bg: #0f172a;--color-dot-grid: rgba(148, 163, 184, .06);--color-surface: #1e293b;--color-text: #f1f5f9;--color-text-secondary: #94a3b8;--color-text-muted: #64748b;--color-border: #334155;--color-primary: #60a5fa;--color-primary-hover: #3b82f6;--color-primary-light: rgba(96, 165, 250, .12);--color-green: #4ade80;--color-green-light: rgba(74, 222, 128, .12);--color-red: #f87171;--color-red-light: rgba(248, 113, 113, .12);--color-purple: #a78bfa;--color-orange: #fbbf24;--color-orange-light: rgba(251, 191, 36, .12);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 1px 3px rgba(0, 0, 0, .5), 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 6px rgba(0, 0, 0, .5), 0 2px 4px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .5), 0 4px 6px rgba(0, 0, 0, .4);color-scheme:dark}[data-theme=dark] .app-header--compact{background:#0f172ad1;border-bottom-color:#33415580;box-shadow:0 1px 3px #0000004d,0 4px 12px #00000026}[data-theme=dark] input:focus,[data-theme=dark] select:focus{box-shadow:0 0 0 3px #60a5fa33}[data-theme=dark] .modal-backdrop{background:#0009}@media(hover:hover){[data-theme=dark] .theme-toggle:hover{border-color:#fbbf2466;color:#fbbf24;box-shadow:0 0 12px #fbbf2426}}@media(prefers-reduced-motion:reduce){.app-header h1{animation:none}.app-header,.app-header h1,.app-header__subtitle,.app-header__brand,.app-header__breadcrumb{transition-duration:0s!important}}@media(max-width:768px){.app{padding:calc(var(--header-height, 7rem) + 1rem) .75rem 2rem}.app-header__inner{padding:0 .75rem}.app-header__breadcrumb,.app-header--compact .app-header__breadcrumb{display:none}.app-header h1{font-size:1.5rem}.app-header--compact h1{font-size:1.125rem}.strava-btn span,.auth-button__name,.auth-button>span:last-child{display:none}.strava-btn{padding:.375rem}.auth-button{padding:.4rem;gap:0}}@media(max-width:480px){.app{padding:calc(var(--header-height, 4rem) + 1rem) .5rem 2rem}.app-header{padding:.5rem 0;background:#f8fafcd1;backdrop-filter:blur(12px) saturate(180%);-webkit-backdrop-filter:blur(12px) saturate(180%);border-bottom:1px solid rgba(226,232,240,.5);box-shadow:0 1px 3px #0000000a,0 4px 12px #00000005}.app-header__inner{padding:0 .5rem;flex-direction:row;justify-content:space-between}.app-header h1{font-size:1.125rem}.app-header__subtitle,.app-header__breadcrumb{display:none}.app-header__actions{position:static;transform:none;margin-top:0;margin-left:auto}[data-theme=dark] .app-header{background:#0f172ad1;border-bottom-color:#33415580;box-shadow:0 1px 3px #0000004d,0 4px 12px #00000026}}@media(max-width:600px){.modal-backdrop{padding:0;background:var(--color-surface)}.modal-content{max-width:100%;max-height:100%;height:100%;border-radius:0;animation:none}[data-theme=dark] .modal-backdrop{background:var(--color-surface)}}@media(pointer:coarse){.btn-primary,.btn-secondary,.btn-danger,.form-actions button,.modal-actions button,.delete-modal__actions button,.add-race-modal__submit,.btn-remove-race{min-height:44px}}
