:root{--color-bg: #edf3f6;--color-bg-deep: #071927;--color-surface: #ffffff;--color-surface-soft: #f7fafc;--color-text: #0e1f2d;--color-text-muted: #647483;--color-accent: #1168d8;--color-accent-strong: #0c48a0;--color-lime: #b9f24a;--color-coral: #ff6f5e;--color-violet: #6d5dfc;--color-border: #d6e1ea;--color-success: #168657;--color-warning: #b77716;--color-error: #c43333;--font-family-base: "Inter", "Segoe UI", Arial, sans-serif;--font-size-h1: 2.35rem;--font-size-h2: 1.35rem;--font-size-body: 1rem;--font-size-caption: .875rem;--line-height-base: 1.45;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--radius-sm: .375rem;--radius-md: .625rem;--radius-lg: .75rem;--shadow-card: 0 10px 30px rgba(14, 31, 45, .08);--shadow-card-lift: 0 16px 34px rgba(14, 31, 45, .16);--shadow-hero: 0 22px 60px rgba(7, 25, 39, .24)}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-family-base);font-size:var(--font-size-body);line-height:var(--line-height-base);background:var(--color-bg);color:var(--color-text)}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}.app-shell__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-shell__brand{font-size:var(--font-size-h2);font-weight:700}.app-shell__brand:hover,.app-shell__brand:focus-visible{color:var(--color-text);outline:none}.app-shell__nav{display:flex;align-items:center;gap:var(--space-2)}.app-shell__link{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-text-muted)}.app-shell__link--button{border:0;background:transparent;font:inherit;cursor:pointer}.app-shell__link:hover,.app-shell__link:focus-visible{color:var(--color-text);background:#eef2f6;outline:none}.app-shell__link--active,.app-shell__link--active:hover,.app-shell__link--active:focus-visible{color:var(--color-surface);background:var(--color-accent)}.app-shell__main{width:min(1080px,100%);margin:0 auto;padding:var(--space-6)}.app-shell__footer{margin-top:auto;padding:var(--space-3) var(--space-6);border-top:1px solid var(--color-border);background:var(--color-surface)}.app-shell__footer-versions{margin:0;text-align:center;font-size:var(--font-size-caption);color:var(--color-text-muted)}.app-shell__footer-sep{-webkit-user-select:none;user-select:none}.page{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-6)}.page__title{margin:0 0 var(--space-2);font-size:var(--font-size-h1)}.page__subtitle{margin:0;color:var(--color-text-muted)}.page__subtitle--error{color:var(--color-error)}.page--auth{max-width:32rem;margin:0 auto}.auth-form{margin-top:var(--space-5);display:grid;gap:var(--space-4)}.auth-form__field{display:grid;gap:var(--space-2)}.auth-form__label{color:var(--color-text-muted);font-size:var(--font-size-caption);font-weight:600}.auth-form__input{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-3);font:inherit;color:var(--color-text);background:var(--color-surface)}.auth-form__input:focus{border-color:var(--color-accent);outline:2px solid color-mix(in srgb,var(--color-accent) 22%,transparent)}.auth-form__captcha{min-height:4rem}.auth-form__links{margin:var(--space-5) 0 0;display:flex;flex-wrap:wrap;gap:var(--space-4)}.dashboard-grid{margin-top:var(--space-6);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.dashboard-card{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5);background:#fcfdff;transition:transform .15s ease,box-shadow .15s ease}.dashboard-card:hover,.dashboard-card:focus-within{transform:scale(1.02);box-shadow:var(--shadow-card-lift)}.dashboard-card--linked{padding:0}.dashboard-card__link-surface{display:flex;flex-direction:column;height:100%;padding:var(--space-5);border-radius:var(--radius-md);color:inherit;text-decoration:none;outline:none}.dashboard-card__link-surface:hover,.dashboard-card__link-surface:focus-visible{outline:none}.dashboard-card__title{margin:0 0 var(--space-3);font-size:var(--font-size-body);color:var(--color-text-muted)}.dashboard-card__value{margin:0;font-size:var(--font-size-h2);font-weight:700;color:var(--color-text)}.dashboard-card__meta{margin:var(--space-2) 0 0;color:var(--color-text)}.dashboard-card__hint,.dashboard-card__empty{margin:var(--space-2) 0 0;color:var(--color-text-muted);font-size:var(--font-size-caption)}.dashboard-section{margin-top:var(--space-6)}.dashboard-section__title{margin:0 0 var(--space-4);font-size:var(--font-size-h2)}.dashboard-section__intro{margin:calc(var(--space-2) * -1) 0 var(--space-4);max-width:42rem;color:var(--color-text-muted);font-size:var(--font-size-caption);line-height:1.5}.dashboard-grid--pr{margin-top:0}.comparison-table-wrapper{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fcfdff}.comparison-table{width:100%;border-collapse:collapse;min-width:720px}.comparison-table th,.comparison-table td{padding:var(--space-3);text-align:left;border-bottom:1px solid var(--color-border)}.comparison-table th{color:var(--color-text-muted);font-size:var(--font-size-caption);font-weight:600}.comparison-table tbody tr:last-child td{border-bottom:none}.race-lists{margin-top:var(--space-6);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.race-list-tabs{display:none}.race-list-tabs__btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2)}.race-list-tabs__count{min-width:1.75rem;border-radius:999px;padding:.1rem var(--space-2);background:var(--color-surface-soft);color:var(--color-text-muted);font-size:var(--font-size-caption);font-weight:700}.race-list{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5);background:#fcfdff}.race-list__title{margin:0 0 var(--space-4);font-size:var(--font-size-h2)}.race-list__items{margin:0;padding:0;list-style:none;display:grid;gap:var(--space-3)}.race-list__empty{margin:0;color:var(--color-text-muted)}.race-card{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-3);display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);background:var(--color-surface)}.race-card__title{margin:0;font-weight:600}.race-card__meta{margin:var(--space-2) 0 0;color:var(--color-text-muted);font-size:var(--font-size-caption)}.race-card__status{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:.2rem .5rem;font-size:var(--font-size-caption);font-weight:600}.race-card__status--planned{background:#edf3ff;color:var(--color-accent)}.race-card__status--completed{background:#ecf8f1;color:var(--color-success)}.race-card__status--registered{background:#fff4e0;color:#8a5a00}.race-card__status--needs-result{outline:1px solid var(--color-warning)}.race-card--action{padding:0;overflow:visible;transition:transform .15s ease,box-shadow .15s ease}.race-card--action:hover,.race-card--action:focus-within{transform:scale(1.02);box-shadow:var(--shadow-card-lift)}.race-card__link-surface{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);width:100%;padding:var(--space-3);border-radius:var(--radius-sm);color:inherit;text-decoration:none;outline:none}.race-card__link-surface:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.race-card__title-text{font-weight:600}.race-details-past-hint{margin:0 0 var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-warning);background:#fffaf0;color:var(--color-text);font-size:var(--font-size-caption)}.race-details-past-hint__link{color:var(--color-accent);font-weight:600;text-decoration:underline}.race-details-past-hint__link:hover,.race-details-past-hint__link:focus-visible{outline:none}.races-filter{margin-top:var(--space-5);display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:flex-end}.races-filter__field{display:flex;flex-direction:column;gap:var(--space-1);min-width:10rem}.races-filter__label{font-size:var(--font-size-caption);font-weight:600;color:var(--color-text-muted)}.races-filter__select{font:inherit;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.pace-chart{margin-top:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);background:#fcfdff}.pace-chart__svg{display:block;width:100%;max-width:560px;height:auto}.pace-chart__line{stroke:var(--color-accent);stroke-width:1.5;vector-effect:non-scaling-stroke}.pace-chart__caption{margin:var(--space-3) 0 0;font-size:var(--font-size-caption);color:var(--color-text-muted)}.pace-chart__empty{margin:var(--space-2) 0 0;color:var(--color-text-muted);font-size:var(--font-size-body)}.page-link{margin-top:var(--space-4);display:inline-flex;color:var(--color-accent);font-weight:600}.page-link:hover,.page-link:focus-visible{text-decoration:underline;outline:none}.race-details-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.race-details-grid{margin-top:var(--space-6);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.race-details-card{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5);background:#fcfdff}.race-details-card--notes{margin-top:var(--space-4)}.race-details-card__title{margin:0 0 var(--space-3);font-size:var(--font-size-body);color:var(--color-text-muted)}.race-details-card__empty,.race-details-card__notes{margin:0;color:var(--color-text-muted)}.race-details-meta{margin:0;display:grid;gap:var(--space-3)}.race-details-meta__item{display:grid;gap:var(--space-1)}.race-details-meta__key{color:var(--color-text-muted);font-size:var(--font-size-caption)}.race-details-meta__value{margin:0;font-weight:600;color:var(--color-text)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-4);border:1px solid transparent;border-radius:var(--radius-sm);font:inherit;font-weight:600;font-size:var(--font-size-caption);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,color .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--color-accent);color:var(--color-surface)}.btn--primary:hover:not(:disabled){background:#1766be}.btn--secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn--secondary:hover:not(:disabled){background:#eef2f6}.btn--danger{background:var(--color-error);color:var(--color-surface)}.btn--danger:hover:not(:disabled){background:#a82e2e}.confirm-banner{margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--color-error);border-radius:var(--radius-md);background:#fef2f2}.confirm-banner__text{margin:0 0 var(--space-3);font-weight:600;color:var(--color-error)}.confirm-banner__actions{display:flex;gap:var(--space-3)}.race-details-actions{margin-top:var(--space-4);display:flex;gap:var(--space-3)}.race-details-meta__link{color:var(--color-accent);word-break:break-all}.race-details-meta__link:hover{text-decoration:underline}.race-details-hero{position:relative;min-height:21rem;display:flex;align-items:flex-end;overflow:hidden;margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-6);padding:var(--space-8);border-radius:var(--radius-md) var(--radius-md) 0 0;background:var(--color-bg-deep);box-shadow:var(--shadow-hero)}.race-details-hero__image,.race-details-hero__shade{position:absolute;top:0;right:0;bottom:0;left:0}.race-details-hero__image{width:100%;height:100%;object-fit:cover}.race-details-hero__image--contain{padding:var(--space-5);object-fit:contain;background:radial-gradient(circle at 20% 10%,rgba(185,242,74,.22),transparent 18rem),linear-gradient(135deg,#1168d861,#071927f5),var(--color-bg-deep)}.race-details-hero__shade{background:linear-gradient(90deg,#071927eb,#07192794 48%,#0719272e),linear-gradient(0deg,rgba(7,25,39,.72),transparent 58%)}.race-details-hero__content{position:relative;z-index:1;width:min(42rem,100%)}.race-details-hero__back{display:inline-flex;width:fit-content;margin-bottom:var(--space-5);color:#ffffffd6;font-size:var(--font-size-caption);font-weight:800}.race-details-hero__back:hover,.race-details-hero__back:focus-visible{color:#fff;text-decoration:underline;outline:none}.race-details-hero__eyebrow{margin:0 0 var(--space-2);color:var(--color-lime);font-size:var(--font-size-caption);font-weight:900;letter-spacing:0;text-transform:uppercase}.race-details-hero .page__title{max-width:38rem;color:#fff}.race-details-hero .page__subtitle{color:#ffffffc7}.race-details-hero .race-card__status{width:fit-content;margin-top:var(--space-4);box-shadow:0 12px 24px #0719272e}.race-form{margin-top:var(--space-6)}.race-form__group{margin:0 0 var(--space-6);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fcfdff}.race-form__legend{font-size:var(--font-size-body);font-weight:700;color:var(--color-text);padding:0 var(--space-2)}.race-form__field{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-4)}.race-form__field:first-of-type{margin-top:var(--space-3)}.race-form__label{font-size:var(--font-size-caption);font-weight:600;color:var(--color-text-muted)}.race-form__input{font:inherit;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.race-form__input:focus{outline:2px solid var(--color-accent);outline-offset:-1px;border-color:var(--color-accent)}.race-form__input--textarea{resize:vertical;min-height:5rem}.race-form__time-picker{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-2)}.race-form__time-picker__unit{display:flex;flex-direction:column;gap:var(--space-1)}.race-form__time-picker__label{font-size:var(--font-size-caption);font-weight:600;color:var(--color-text-muted)}.race-form__time-picker__select{min-width:4.25rem}.race-form__time-picker__sep{color:var(--color-text-muted);font-weight:600;padding-bottom:var(--space-2)}.date-picker{position:relative;width:min(100%,22rem)}.date-picker__control{display:flex;align-items:stretch}.date-picker__input{min-width:0;border-top-right-radius:0;border-bottom-right-radius:0}.date-picker__toggle{width:3rem;border:1px solid var(--color-border);border-left:none;border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--color-bg-deep);color:#fff;font:inherit;font-weight:900;cursor:pointer}.date-picker__toggle:hover,.date-picker__toggle:focus-visible{background:var(--color-accent-strong);outline:none}.date-picker__popover{position:absolute;top:calc(100% + var(--space-2));left:0;z-index:12;width:min(20rem,calc(100vw - var(--space-8)));padding:var(--space-4);border:1px solid rgba(17,104,216,.2);border-radius:var(--radius-md);background:#fffffffa;box-shadow:var(--shadow-card-lift)}.date-picker__header{display:grid;grid-template-columns:2.25rem minmax(0,1fr) 2.25rem;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.date-picker__title{margin:0;color:var(--color-bg-deep);font-weight:900;text-align:center}.date-picker__nav{width:2.25rem;height:2.25rem;border:none;border-radius:var(--radius-sm);background:#1168d814;color:var(--color-accent);font:inherit;font-size:1.25rem;font-weight:900;cursor:pointer}.date-picker__nav:hover,.date-picker__nav:focus-visible{background:var(--color-lime);color:#071927;outline:none}.date-picker__weekdays,.date-picker__cells{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.date-picker__weekdays{margin-bottom:var(--space-1)}.date-picker__weekday{color:var(--color-text-muted);font-size:.72rem;font-weight:800;text-align:center}.date-picker__cell,.date-picker__day{min-height:2.25rem}.date-picker__day{border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font:inherit;font-size:var(--font-size-caption);font-weight:700;cursor:pointer}.date-picker__day:hover,.date-picker__day:focus-visible{background:#e8f1ff;border-color:#1168d833;outline:none}.date-picker__day--today{border-color:var(--color-accent)}.date-picker__day--selected{background:var(--color-lime);color:#071927}.race-form__actions{display:flex;gap:var(--space-3);align-items:center}.form-errors{margin:var(--space-3) 0 0;padding:var(--space-3) var(--space-5);border:1px solid var(--color-error);border-radius:var(--radius-sm);background:#fef2f2;color:var(--color-error);font-size:var(--font-size-caption)}.form-errors__item{margin:var(--space-1) 0}.races-view-toggle{display:inline-flex;margin-top:var(--space-5);padding:var(--space-1);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);gap:var(--space-1)}.races-view-toggle__btn{font:inherit;font-size:var(--font-size-caption);font-weight:600;padding:var(--space-2) var(--space-4);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);cursor:pointer}.races-view-toggle__btn:hover,.races-view-toggle__btn:focus-visible{color:var(--color-text);outline:none}.races-view-toggle__btn--active{background:#eef2f6;color:var(--color-text)}.races-cal-wrap{margin-top:var(--space-6)}.races-status{min-height:calc(var(--line-height-base) * var(--font-size-caption));margin-top:var(--space-4)}.races-status__message{margin:0;color:var(--color-text-muted);font-size:var(--font-size-caption)}.races-status__message--empty{visibility:hidden}.races-status__message--error{color:var(--color-danger)}.races-cal__filter-hint{margin-top:var(--space-3);color:var(--color-text-muted);font-size:var(--font-size-caption)}.races-cal__hint{margin:0 0 var(--space-4);color:var(--color-text-muted);font-size:var(--font-size-caption)}.races-cal__year{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-5)}.races-cal__month{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);background:var(--color-surface)}.races-cal__month--compact .races-cal__month-title{font-size:var(--font-size-caption)}.races-cal__month--compact .races-cal__weekday{font-size:.65rem}.races-cal__month--compact .races-cal__day-btn{font-size:var(--font-size-caption);min-height:1.65rem}.races-cal__month-title{margin:0 0 var(--space-2);font-size:var(--font-size-body);font-weight:600;color:var(--color-text)}.races-cal__month-title-button{display:inline-flex;align-items:center;padding:0;border:0;background:transparent;color:inherit;font:inherit;font-weight:inherit;cursor:pointer}.races-cal__month-title-button:hover,.races-cal__month-title-button:focus-visible{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px;outline:none}.races-cal__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-bottom:var(--space-1)}.races-cal__weekday{font-size:var(--font-size-caption);font-weight:600;color:var(--color-text-muted);text-align:center}.races-cal__cells{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.races-cal__cell{position:relative;min-height:2rem}.races-cal__cell--empty{min-height:0}.races-cal__cell--has-race .races-cal__day-btn{font-weight:700;color:var(--color-accent)}.races-cal__cell--past .races-cal__day-btn{color:var(--color-text-muted);background:#f0f2f4;border-color:#d8dde2}.races-cal__cell--open{z-index:2}.races-cal__day-btn{width:100%;height:100%;min-height:2rem;font:inherit;font-size:var(--font-size-caption);border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);cursor:pointer}.races-cal__day-btn:hover,.races-cal__day-btn:focus-visible{background:#eef2f6;border-color:var(--color-border);outline:none}.races-cal__cell--has-race .races-cal__day-btn:hover,.races-cal__cell--has-race .races-cal__day-btn:focus-visible{background:#e8f0fc;border-color:var(--color-accent)}.races-cal__cell--today .races-cal__day-btn,.races-cal__cell--today .races-cal__day-btn:hover,.races-cal__cell--today .races-cal__day-btn:focus-visible{border-color:var(--color-text)}.races-cal__popover{position:absolute;top:calc(100% + var(--space-1));left:50%;transform:translate(-50%);min-width:11rem;max-width:16rem;padding:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-card-lift);z-index:5}.races-cal__popover-list{margin:0 0 var(--space-2);padding:0;list-style:none}.races-cal__popover-item{margin:0 0 var(--space-1)}.races-cal__popover-link{color:var(--color-accent);font-weight:600;font-size:var(--font-size-caption);text-decoration:none}.races-cal__popover-link:hover,.races-cal__popover-link:focus-visible{text-decoration:underline;outline:none}.races-cal__popover-empty{margin:0 0 var(--space-2);font-size:var(--font-size-caption);color:var(--color-text-muted)}.races-cal__popover-add{width:100%;justify-content:center;text-align:center;font-size:var(--font-size-caption);padding:var(--space-2)}.races-cal__month-focus .races-cal__month{max-width:28rem;margin-top:var(--space-4)}.races-cal__month-nav{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.races-cal__month-nav-item{font:inherit;font-size:var(--font-size-caption);padding:var(--space-1) var(--space-2);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.races-cal__month-nav-item:hover,.races-cal__month-nav-item:focus-visible{outline:none;color:var(--color-text)}.races-cal__month-nav-item--active{font-weight:700;text-decoration:none;background:#eef2f6;color:var(--color-text)}.races-cal__month-nav-item--all{color:var(--color-text-muted)}.race-day__list{margin:var(--space-5) 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-3)}.race-day__item{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.race-day__link{font-weight:600;color:var(--color-accent);text-decoration:none}.race-day__link:hover,.race-day__link:focus-visible{text-decoration:underline;outline:none}.race-day__meta{font-size:var(--font-size-caption);color:var(--color-text-muted)}.race-day__actions{margin-top:var(--space-5)}body{background:radial-gradient(circle at 12% 8%,rgba(185,242,74,.24),transparent 24rem),radial-gradient(circle at 88% 0%,rgba(255,111,94,.16),transparent 22rem),linear-gradient(180deg,#f5f9fb 0%,var(--color-bg) 46%,#e8f0f4 100%)}.app-shell__header{position:sticky;top:0;z-index:10;background:#ffffffdb;box-shadow:0 1px #0e1f2d0f;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.app-shell__brand{color:var(--color-bg-deep)}.app-shell__brand:hover,.app-shell__brand:focus-visible{color:var(--color-accent)}.app-shell__link{font-size:var(--font-size-caption);font-weight:700;transition:background .15s ease,color .15s ease,transform .15s ease}.app-shell__link:hover,.app-shell__link:focus-visible{transform:translateY(-1px)}.app-shell__link--active,.app-shell__link--active:hover,.app-shell__link--active:focus-visible{color:#071927;background:var(--color-lime)}.app-shell__main{width:min(1180px,100%);padding:var(--space-8) var(--space-6)}.page{box-shadow:var(--shadow-card)}.page--dashboard,.page--races,.page--race-day{padding:0;border:none;background:transparent;box-shadow:none}.page__title{letter-spacing:0;line-height:1.08;color:var(--color-bg-deep)}.dashboard-hero,.races-hero,.race-day-hero{position:relative;overflow:hidden;border-radius:var(--radius-lg);box-shadow:var(--shadow-hero)}.dashboard-hero{min-height:24rem;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(18rem,.8fr);gap:var(--space-6);align-items:end;padding:var(--space-8);color:#fff;background:linear-gradient(90deg,#071927e6,#07192794 46%,#0719271a),url(/images/runner-hero.jpg) center / cover}.dashboard-hero--with-image{background:linear-gradient(90deg,#071927f0,#071927ad 48%,#07192733),var(--dashboard-hero-image) center / cover,url(/images/runner-hero.jpg) center / cover}.dashboard-hero__content,.dashboard-hero__panel{position:relative;z-index:1}.dashboard-hero__eyebrow,.races-hero__eyebrow,.race-day-hero__eyebrow{margin:0 0 var(--space-2);color:var(--color-lime);font-size:var(--font-size-caption);font-weight:800;letter-spacing:0;text-transform:uppercase}.dashboard-hero__title{margin:0;max-width:28rem;color:#fff;font-size:4.25rem;line-height:.95;letter-spacing:0}.dashboard-hero__text{max-width:33rem;margin:var(--space-4) 0 0;color:#ffffffd6;font-size:1.08rem}.dashboard-hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-6)}.dashboard-hero__secondary{color:#fff;background:#ffffff1f;border-color:#ffffff5c}.dashboard-hero__secondary:hover:not(:disabled){background:#fff3}.dashboard-hero__panel{padding:var(--space-5);border:1px solid rgba(255,255,255,.22);border-radius:var(--radius-md);background:#07192794;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.dashboard-hero__panel-label,.dashboard-hero__empty{margin:0;color:#ffffffb8;font-size:var(--font-size-caption);font-weight:700}.dashboard-hero__race-link{display:grid;gap:var(--space-2);margin-top:var(--space-2)}.dashboard-hero__race-title{font-size:1.45rem;font-weight:800;line-height:1.12}.dashboard-hero__race-meta,.dashboard-hero__race-countdown{color:#ffffffc7}.dashboard-hero__race-countdown{width:fit-content;padding:.25rem .6rem;border-radius:999px;color:#071927;background:var(--color-lime);font-size:var(--font-size-caption);font-weight:800}.dashboard-grid{gap:var(--space-5)}.dashboard-card,.race-list,.race-details-card,.race-form__group,.comparison-table-wrapper,.pace-chart,.races-cal__month,.race-day__item{border-color:#d6e1eaeb;background:#ffffffe6;box-shadow:var(--shadow-card)}.dashboard-card{position:relative;overflow:hidden}.dashboard-card:before{position:absolute;top:0;left:0;width:100%;height:.28rem;content:"";background:var(--color-accent)}.dashboard-card--accent-blue:before{background:var(--color-accent)}.dashboard-card--accent-coral:before{background:var(--color-coral)}.dashboard-card--accent-lime:before{background:var(--color-lime)}.dashboard-card--accent-violet:before{background:var(--color-violet)}.dashboard-card__title,.race-details-card__title,.race-form__label,.races-filter__label{color:#516372}.dashboard-card__value{font-size:2rem;line-height:1.1}.dashboard-card__progress{height:.55rem;margin-top:var(--space-4);overflow:hidden;border-radius:999px;background:#e6eef4}.dashboard-card__progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--color-lime),var(--color-violet))}.dashboard-section__title{color:var(--color-bg-deep)}.pace-chart{overflow:hidden;padding:var(--space-5);background:linear-gradient(135deg,#1168d814,#b9f24a29),#fff}.pace-chart__svg{max-width:100%}.pace-chart__grid-line{stroke:#0e1f2d1f;stroke-width:.8;vector-effect:non-scaling-stroke}.pace-chart__line{stroke-width:2.2}.pace-chart__dot{fill:#fff;stroke:var(--color-accent);stroke-width:1;vector-effect:non-scaling-stroke}.pace-chart__dot--last{fill:var(--color-lime);stroke:var(--color-bg-deep)}.pace-chart__stats{display:flex;flex-wrap:wrap;gap:var(--space-3)}.pace-chart__caption{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:#ffffffb8;color:var(--color-text)}.pace-chart__caption--best{color:#0e5d3d}.races-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(18rem,.58fr);gap:var(--space-6);align-items:end;min-height:18rem;padding:var(--space-8);background:linear-gradient(90deg,#071927e0,#0719277a,#07192714),url(/images/race-half.jpg) center / cover}.races-hero .page__title,.race-day-hero .page__title{color:#fff}.races-hero .page__subtitle,.race-day-hero .page__subtitle{color:#ffffffc2}.races-hero__filters{padding:var(--space-5);border:1px solid rgba(255,255,255,.22);border-radius:var(--radius-md);background:#ffffff24;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.races-hero__filters .races-filter{margin-top:0}.races-hero__filters .races-filter__label{color:#ffffffc7}.races-hero__filters .races-filter__select{border-color:#ffffff3d;background:#fffffff0}.races-view-toggle{border-color:#ffffff3d;background:#07192747}.races-view-toggle__btn{color:#ffffffc7}.races-view-toggle__btn:hover,.races-view-toggle__btn:focus-visible{color:#fff}.races-view-toggle__btn--active{color:#071927;background:var(--color-lime)}.race-list{padding:0;border:none;background:transparent;box-shadow:none}.race-list__title{color:var(--color-bg-deep)}.race-card--poster{overflow:hidden;padding:0;border-radius:var(--radius-md)}.race-card--poster .race-card__link-surface{display:grid;grid-template-columns:8.75rem minmax(0,1fr);gap:0;min-height:10rem;padding:0}.race-card__image-wrap{position:relative;min-height:100%;overflow:hidden;background:var(--color-bg-deep)}.race-card__image{width:100%;height:100%;min-height:10rem;display:block;object-fit:cover;transition:transform .22s ease}.race-card__image--contain{padding:var(--space-2);object-fit:contain;background:linear-gradient(135deg,#1168d83d,#b9f24a24),var(--color-bg-deep)}.race-card--poster:hover .race-card__image,.race-card--poster:focus-within .race-card__image{transform:scale(1.05)}.race-card--poster:hover .race-card__image--contain,.race-card--poster:focus-within .race-card__image--contain{transform:scale(1.02)}.race-card__date-badge{position:absolute;top:var(--space-2);left:var(--space-2);display:grid;min-width:3rem;padding:.25rem .45rem;border-radius:var(--radius-sm);color:#071927;background:#ffffffe6;text-align:center;font-weight:900;line-height:1.05;box-shadow:0 8px 18px #0719272e}.race-card__date-badge span:last-child{color:var(--color-text-muted);font-size:.68rem;text-transform:uppercase}.race-card__content{display:flex;min-width:0;flex-direction:column;justify-content:space-between;gap:var(--space-4);padding:var(--space-4)}.race-card__kicker,.race-day__kicker{margin:0 0 var(--space-1);color:var(--color-accent);font-size:.72rem;font-weight:900;letter-spacing:0;text-transform:uppercase}.race-card__title{line-height:1.18}.race-card__title-text{font-size:1.05rem;font-weight:800}.race-card__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.race-card__cta{color:var(--color-accent);font-size:var(--font-size-caption);font-weight:800}.race-card__status{border:1px solid transparent}.race-card__status--planned{background:#e8f1ff;color:var(--color-accent-strong)}.race-card__status--completed{background:#e7f8ef;color:var(--color-success)}.race-card__status--registered{background:#fff0da;color:#8a5100}.races-cal-wrap{padding:var(--space-5);border-radius:var(--radius-lg);background:#ffffffb8;box-shadow:var(--shadow-card)}.races-cal__hint,.races-cal__filter-hint{color:#516372}.races-cal__month{transition:transform .15s ease,box-shadow .15s ease}.races-cal__month:hover{transform:translateY(-2px);box-shadow:var(--shadow-card-lift)}.races-cal__month-title{color:var(--color-bg-deep);font-weight:800}.races-cal__month-title-button{border-radius:var(--radius-sm);transition:color .15s ease,text-decoration-color .15s ease}.races-cal__month-title-button:hover,.races-cal__month-title-button:focus-visible{color:var(--color-accent)}.races-cal__cell--has-race .races-cal__day-btn{color:#071927;background:linear-gradient(135deg,#b9f24ab3,#1168d824);border-color:#1168d82e}.races-cal__cell--past .races-cal__day-btn,.races-cal__cell--past.races-cal__cell--has-race .races-cal__day-btn{color:#6f7c87;background:#eef1f3;border-color:#d4dbe1}.races-cal__cell--has-race .races-cal__day-btn:hover,.races-cal__cell--has-race .races-cal__day-btn:focus-visible{background:var(--color-lime);border-color:var(--color-bg-deep)}.races-cal__cell--past .races-cal__day-btn:hover,.races-cal__cell--past .races-cal__day-btn:focus-visible,.races-cal__cell--past.races-cal__cell--has-race .races-cal__day-btn:hover,.races-cal__cell--past.races-cal__cell--has-race .races-cal__day-btn:focus-visible{color:#52616d;background:#e3e8ec;border-color:#aeb9c3}.races-cal__cell--today .races-cal__day-btn,.races-cal__cell--today.races-cal__cell--has-race .races-cal__day-btn,.races-cal__cell--today.races-cal__cell--past .races-cal__day-btn{border-color:#071927;box-shadow:inset 0 0 0 1px #071927}.races-cal__cell--today .races-cal__day-btn:hover,.races-cal__cell--today .races-cal__day-btn:focus-visible,.races-cal__cell--today.races-cal__cell--has-race .races-cal__day-btn:hover,.races-cal__cell--today.races-cal__cell--has-race .races-cal__day-btn:focus-visible{border-color:#071927;box-shadow:inset 0 0 0 1px #071927}.races-cal__popover{border-color:#1168d833;border-radius:var(--radius-md);box-shadow:var(--shadow-card-lift)}.races-cal__popover-link{color:var(--color-bg-deep)}.races-cal__month-nav-item{color:var(--color-accent);text-decoration:none;background:#1168d814}.races-cal__month-nav-item--active{background:var(--color-bg-deep);color:#fff}.race-day-hero{min-height:14rem;display:flex;flex-direction:column;justify-content:flex-end;padding:var(--space-8);background:linear-gradient(90deg,#071927e6,#07192780,#07192714),url(/images/race-short.jpg) center / cover}.race-day-hero .page-link{width:fit-content;margin:0 0 var(--space-5);color:#fff}.race-day__list{gap:var(--space-4)}.race-day__item{overflow:hidden;padding:0;border-radius:var(--radius-md)}.race-day__link{display:grid;grid-template-columns:11rem minmax(0,1fr);color:inherit;text-decoration:none}.race-day__link:hover,.race-day__link:focus-visible{text-decoration:none}.race-day__image{width:100%;height:100%;min-height:8.5rem;object-fit:cover}.race-day__image--contain{padding:var(--space-3);object-fit:contain;background:linear-gradient(135deg,#1168d838,#b9f24a29),var(--color-bg-deep)}.race-day__body{display:grid;gap:var(--space-2);align-content:center;padding:var(--space-4)}.race-day__title{color:var(--color-bg-deep);font-size:1.18rem;font-weight:800;line-height:1.18}.btn{box-shadow:0 8px 18px #0e1f2d14}.btn--primary{background:var(--color-lime);color:#071927}.btn--primary:hover:not(:disabled){background:#aee83c}.btn--secondary:hover:not(:disabled){background:#f2f6f9}.dashboard-hero .dashboard-hero__secondary:hover:not(:disabled){color:#fff;background:#fff3}@media (max-width: 900px){.dashboard-grid,.race-lists,.race-details-grid{grid-template-columns:1fr}.race-list-tabs{margin-top:var(--space-6);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-1);padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.race-list-tabs__btn{min-height:2.75rem;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font:inherit;font-weight:700;cursor:pointer}.race-list-tabs__btn:hover,.race-list-tabs__btn:focus-visible{color:var(--color-text);outline:none}.race-list-tabs__btn--active{background:var(--color-accent);color:var(--color-surface)}.race-list-tabs__btn--active .race-list-tabs__count{background:var(--color-surface);color:var(--color-accent)}.race-lists{margin-top:var(--space-4)}.race-lists--mobile-upcoming .race-list--completed,.race-lists--mobile-completed .race-list--upcoming{display:none}.races-cal__year{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-hero,.races-hero{grid-template-columns:1fr}.dashboard-hero{min-height:34rem;background-position:62% center}.races-hero{background-position:62% center}.race-details-header{flex-direction:column}.race-form__actions{flex-direction:column;align-items:stretch}}@media (max-width: 560px){.app-shell__header{align-items:flex-start;flex-direction:column}.app-shell__nav{width:100%;overflow-x:auto}.app-shell__main{padding:var(--space-4)}.dashboard-hero,.races-hero,.race-day-hero{padding:var(--space-5);border-radius:var(--radius-md)}.dashboard-hero__title{font-size:3rem}.race-card--poster .race-card__link-surface,.race-day__link{grid-template-columns:1fr}.race-card__image,.race-day__image{max-height:12rem}.races-cal__year{grid-template-columns:1fr}}
