.loading-spinner{display:inline-flex;align-items:center;justify-content:center}.loading-spinner__circle{border-radius:50%;border-style:solid;border-color:currentColor;border-top-color:transparent;animation:loading-spinner-spin .7s linear infinite}.loading-spinner--sm .loading-spinner__circle{width:16px;height:16px;border-width:2px}.loading-spinner--md .loading-spinner__circle{width:24px;height:24px;border-width:3px}.loading-spinner--lg .loading-spinner__circle{width:36px;height:36px;border-width:4px}@keyframes loading-spinner-spin{to{transform:rotate(360deg)}}body{margin:0;min-height:100vh;background:linear-gradient(180deg,var(--color-bg) 0%,var(--color-bg-alt) 30%,var(--color-bg-alt) 100%);color:var(--color-text)}#root{min-height:100vh}.app-shell{min-height:100vh;display:flex;flex-direction:column;padding:var(--pad-page-y, .85rem) var(--pad-page-x, clamp(.75rem, 2.5vw, 2rem)) 1.25rem;gap:var(--gap-block, .75rem)}.app-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;background:var(--color-surface);border-radius:1rem;padding:.65rem 3.25rem .65rem 1rem;box-shadow:var(--shadow-md),var(--shadow-sm);border:1px solid var(--color-border);position:relative}.brand{display:flex;align-items:flex-start;gap:.65rem;min-width:0}.brand>div{min-width:0}.brand-mark{width:3rem;height:3rem;border-radius:.75rem;background:#3f51b5;box-shadow:0 6px 16px #3f51b540}.brand-logo{width:2.5rem;height:2.5rem;border-radius:.6rem;object-fit:contain;background:var(--color-surface);box-shadow:var(--shadow-md);flex-shrink:0}.brand-overline{text-transform:uppercase;letter-spacing:.18em;font-size:.65rem;margin:0;color:var(--color-text-muted);line-height:1.2}.brand h1{margin:.08rem 0 0;font-size:clamp(1.05rem,2.4vw,1.5rem);font-weight:600;color:var(--color-text);line-height:1.2}.race-header-info{margin-top:.25rem}.race-header-name{margin:0;font-size:clamp(.9rem,2vw,1.15rem);font-weight:600;color:var(--color-text);line-height:1.25}.race-header-description{margin:.15rem 0 0;font-size:.82rem;color:var(--color-text-muted);line-height:1.35}.nav{display:flex;gap:.5rem;flex:1;align-items:center;flex-wrap:wrap}.nav-main{display:flex;gap:.5rem;align-items:center}.nav-race{display:flex;gap:.5rem;align-items:center;margin-left:auto}.nav-link{text-decoration:none;padding:.42rem .95rem;border-radius:999px;font-size:.875rem;font-weight:500;color:var(--color-text);background:var(--color-btn-secondary-bg);transition:all .2s ease}.nav-link:hover{background:var(--color-btn-secondary-hover)}.nav-link.active{background:var(--color-accent);color:#fff;box-shadow:0 6px 18px #0050ff40}.nav-link--secondary{padding:.38rem .75rem;font-size:.8rem;color:var(--color-text-muted)}.nav-link--secondary:hover{color:var(--color-text)}.nav-link--secondary.active{color:#fff}.share-race-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.38rem .75rem;border-radius:999px;font-size:.8rem;font-weight:500;color:var(--color-text-muted);background:var(--color-btn-secondary-bg);border:1px solid var(--color-btn-secondary-border);cursor:pointer;font-family:inherit;transition:background .2s ease,color .2s ease,border-color .2s ease}.share-race-btn:hover{background:var(--color-btn-secondary-hover);color:var(--color-text)}.share-race-btn__icon{width:1rem;height:1rem;flex-shrink:0}.share-race-btn__icon--check{color:#0e7a22;font-weight:700}.app-select{padding:.5rem 1.85rem .5rem .9rem;border-radius:999px;border:1px solid var(--color-btn-secondary-border);background:var(--color-btn-secondary-bg);color:var(--color-text);font-size:.85rem;font-weight:500;cursor:pointer;outline:none;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .65rem center}:root[data-theme=dark] .app-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E")}.app-select:hover{background-color:var(--color-btn-secondary-hover)}.app-select:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #0050ff26}.race-selector{max-width:220px}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid var(--color-btn-secondary-border);border-radius:999px;background:var(--color-btn-secondary-bg);color:var(--color-text);cursor:pointer;font-family:inherit;transition:background .2s ease,color .2s ease,border-color .2s ease}.theme-toggle:hover{background:var(--color-btn-secondary-hover)}.theme-toggle svg{flex-shrink:0;width:18px;height:18px}.settings-button{position:absolute;top:50%;right:.65rem;transform:translateY(-50%);width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;color:var(--color-text);background:var(--color-btn-secondary-bg);border:1px solid var(--color-btn-secondary-border);text-decoration:none;transition:background-color .15s ease,box-shadow .15s ease,transform .05s ease;z-index:50;pointer-events:auto;cursor:pointer}.settings-button .settings-glyph{font-size:.9rem;line-height:1}.settings-button:hover{background:var(--color-btn-secondary-hover);box-shadow:0 6px 18px #0050ff1f}.settings-button:active{transform:translateY(calc(-50% + 1px))}@media(max-width:768px){.app-header{padding-right:1.1rem}.settings-button{position:static;width:44px;min-width:44px;height:44px;min-height:44px;margin-left:auto;transform:none;order:3}}.app-content{flex:1;display:flex;min-height:0;min-width:0}.app-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.4rem;font-size:.85rem;color:var(--color-text-muted);padding:.4rem 0 .75rem}.status-banner{padding:.55rem .85rem;border-radius:.5rem;font-weight:500;font-size:.9rem}.status-banner--finished{background:var(--color-info-banner-finished-bg);color:var(--color-info-banner-finished-text)}.status-banner--archived{background:var(--color-info-banner-archived-bg);color:var(--color-info-banner-archived-text)}.status-banner--draft{background:var(--color-info-banner-draft-bg);color:var(--color-info-banner-draft-text)}.leaderboard-view .status-banner{margin-bottom:.75rem}.leaderboard-mode-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.leaderboard-mode-toggle{display:inline-flex;gap:0;padding:.25rem;background:var(--color-btn-secondary-bg);border:1px solid var(--color-btn-secondary-border);border-radius:999px;overflow:hidden}.leaderboard-mode-toggle__btn{padding:.5rem 1rem;font-size:.95rem;font-weight:600;font-family:inherit;color:var(--color-text-muted);background:transparent;border:none;border-radius:999px;cursor:pointer;transition:background .2s ease,color .2s ease}.leaderboard-mode-toggle__btn:hover{color:var(--color-text);background:var(--color-btn-secondary-hover)}.leaderboard-mode-toggle__btn--active{background:var(--color-accent);color:#fff;box-shadow:0 2px 8px #0050ff40}.leaderboard-mode-toggle__btn--active:hover{background:var(--color-accent-hover);color:#fff}.leaderboard-favorites-toggle{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:500;color:var(--color-text-muted);cursor:pointer;padding:.4rem .6rem;border-radius:.5rem;transition:background .15s,color .15s}.leaderboard-favorites-toggle:hover{color:var(--color-text);background:var(--color-btn-secondary-bg)}.leaderboard-favorites-toggle input{accent-color:var(--color-accent)}.card{background:var(--color-surface);border-radius:1.05rem;padding:var(--pad-card, 1.25rem);box-shadow:var(--shadow-lg);border:1px solid var(--color-border)}.card h2{margin-top:0;color:var(--color-text)}.muted{color:var(--color-text-subtle);font-size:.95rem}.section-header{display:flex;justify-content:space-between;gap:.75rem;flex-wrap:wrap;align-items:flex-start}.section-overline{text-transform:uppercase;letter-spacing:.35em;font-size:.75rem;margin:0 0 .3rem;color:var(--color-text-muted)}.leaderboard-table{margin-top:1.15rem;display:flex;flex-direction:column;gap:.65rem}.leaderboard-head,.leaderboard-row summary{display:grid;grid-template-columns:32px 60px 1.4fr 1.2fr .6fr;gap:1rem;align-items:center;padding:.55rem .85rem}.leaderboard-table.rider-mode .leaderboard-head,.leaderboard-table.rider-mode .leaderboard-row summary{grid-template-columns:32px 60px 1.2fr 1fr 1fr minmax(120px,max-content)}.leaderboard-table.team-mode .leaderboard-head,.leaderboard-table.team-mode .leaderboard-row summary{grid-template-columns:32px 60px 2fr 1.4fr minmax(120px,max-content)}.favorite-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;border-radius:.5rem;transition:color .15s ease,background .15s ease}.favorite-btn:hover{color:#f59e0b;background:#f59e0b1a}.favorite-btn svg{color:inherit}.favorite-btn--active{color:#f59e0b}.leaderboard-row .favorite-btn{background:transparent!important;border:none!important;padding:.25rem!important;color:var(--color-text-faint)!important}.leaderboard-row .favorite-btn svg{color:inherit!important}.leaderboard-row .favorite-btn:hover{background:#f59e0b1a!important;color:#f59e0b!important}.leaderboard-row .favorite-btn--active{color:#f59e0b!important}.leaderboard-row .favorite-btn--active svg{color:inherit!important}.leaderboard-row__fav-placeholder{display:block;width:28px;height:28px;flex-shrink:0}.leaderboard-head{font-size:.85rem;text-transform:uppercase;letter-spacing:.15em;color:var(--color-text-subtle);position:sticky;top:0;z-index:5;background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:.75rem}.leaderboard-row{border:1px solid var(--color-border);border-radius:1rem;background:var(--color-surface);overflow:hidden}.leaderboard-table .leaderboard-row:nth-child(2n):not(.leaderboard-row--podium-1):not(.leaderboard-row--podium-2):not(.leaderboard-row--podium-3){background:var(--color-surface-alt)}.admin-table .leaderboard-row{overflow:visible}.leaderboard-row summary{list-style:none;cursor:pointer}.leaderboard-row:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-md)}.leaderboard-row summary:hover{background:var(--color-surface-alt)}.leaderboard-row--podium-1{border-left:4px solid #f59e0b;background:linear-gradient(90deg,rgba(245,158,11,.06) 0%,var(--color-surface) 20%)}.leaderboard-row--podium-1 .rank-badge{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff;box-shadow:0 2px 8px #f59e0b59}.leaderboard-row--podium-2{border-left:4px solid #94a3b8;background:linear-gradient(90deg,rgba(148,163,184,.06) 0%,var(--color-surface) 20%)}.leaderboard-row--podium-2 .rank-badge{background:linear-gradient(135deg,#cbd5e1,#94a3b8);color:#fff;box-shadow:0 2px 8px #94a3b859}.leaderboard-row--podium-3{border-left:4px solid #b45309;background:linear-gradient(90deg,rgba(180,83,9,.06) 0%,var(--color-surface) 20%)}.leaderboard-row--podium-3 .rank-badge{background:linear-gradient(135deg,#d97706,#b45309);color:#fff;box-shadow:0 2px 8px #b4530959}.leaderboard-row--dnf{opacity:.6;border-left:4px solid var(--color-border)}.dnf-badge{display:inline-block;margin-left:.4rem;padding:.1rem .45rem;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:var(--color-danger, #ef4444);color:#fff;vertical-align:middle}.map-ranking__badge--dnf{background:var(--color-danger, #ef4444);color:#fff}.leaderboard-row summary::-webkit-details-marker{display:none}.leaderboard-row summary strong{display:block}.rider-cell{display:flex;flex-direction:column}.lb-mobile-cp{display:none}.lb-desktop-col{display:block}.rank-badge{width:2rem;height:2rem;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;background:var(--color-btn-secondary-bg);color:var(--color-text)}.refresh-indicator{display:inline-block;width:.7rem;height:.7rem;margin-left:.5rem;border-radius:50%;background:#00c2ff;box-shadow:0 0 #0052ff73;animation:refresh-pulse 1.2s ease-out infinite;vertical-align:middle}@keyframes refresh-pulse{0%{transform:scale(1);box-shadow:0 0 #0052ff73}70%{transform:scale(1.06);box-shadow:0 0 0 10px #0052ff00}to{transform:scale(1);box-shadow:0 0 #0052ff00}}.heartbeat-indicator{display:inline-block;width:.6rem;height:.6rem;margin-left:.5rem;border-radius:50%;background:#10b981;box-shadow:0 0 #10b98180;animation:heartbeat-pulse 1.4s ease-out infinite;vertical-align:middle}@keyframes heartbeat-pulse{0%{transform:scale(1);box-shadow:0 0 #10b98180}60%{transform:scale(1.08);box-shadow:0 0 0 10px #10b98100}to{transform:scale(1);box-shadow:0 0 #10b98100}}.time-chip{justify-self:flex-end;padding:.3rem .7rem;border-radius:999px;background:var(--color-accent-muted);font-weight:600;color:var(--color-accent-text)}.progress-timeline{margin:0;padding:.75rem 1.15rem 1.15rem;list-style:none;border-top:1px solid var(--color-border-muted);display:flex;flex-direction:column;gap:.6rem}.progress-timeline li{display:flex;justify-content:space-between;gap:1rem;border-left:3px solid var(--color-border-muted);padding-left:1rem}.timeline-meta{text-align:right;display:flex;flex-direction:column;gap:.15rem}.split-times{padding:0 1.15rem 1.15rem;border-top:1px solid var(--color-border-muted)}.split-times h4{margin:1rem 0 .5rem;font-size:.95rem;color:var(--color-text)}.split-times-table{width:100%;border-collapse:collapse;font-size:.9rem}.split-times-table th,.split-times-table td{padding:.35rem .5rem;text-align:left;border-bottom:1px solid var(--color-border-muted)}.split-times-table th{color:var(--color-text-faint);font-weight:600}.split-times-table td:last-child{text-align:right;font-variant-numeric:tabular-nums}.race-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.race-chip{display:inline-flex;flex-direction:column;gap:.15rem;padding:.45rem .75rem;border:1px solid var(--color-border-muted);border-radius:.85rem;background:var(--color-surface-alt);transition:border-color .2s ease,box-shadow .2s ease}.race-chip:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-sm)}.race-chip span{font-size:.75rem;color:var(--color-text-faint);letter-spacing:.06em;text-transform:uppercase}.race-chip strong{color:var(--color-text)}.race-chip.success{border-color:var(--color-success-border);background:var(--color-success-bg)}.race-chip.danger{border-color:var(--color-danger-border);background:var(--color-danger-bg)}.route-meta{display:flex;align-items:center;gap:.75rem;margin-top:.75rem;flex-wrap:var(--route-wrap, wrap)}.route-title{font-size:.85rem;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-faint)}.route-steps{display:flex;align-items:center;gap:.5rem;list-style:none;padding:0;margin:0;flex-wrap:wrap}.route-step{display:inline-flex;align-items:center;gap:.4rem}.route-dot{width:1.4rem;height:1.4rem;border-radius:999px;background:var(--color-accent-muted);color:var(--color-accent-text);display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}.route-name{font-weight:600}.route-sep{color:var(--color-text-faint);margin:0 .2rem}.error{color:var(--color-error);background:var(--color-error-bg);border-radius:.85rem;padding:.55rem .85rem}.info{color:var(--color-accent-text);background:var(--color-accent-muted);border-radius:.85rem;padding:.55rem .85rem}.checkin-form{display:flex;flex-direction:column;gap:.75rem;margin-top:.75rem}.checkin-form label{display:flex;flex-direction:column;font-weight:600;color:var(--color-text);gap:.5rem}.checkin-form input{border:1px solid var(--color-input-border);border-radius:.8rem;padding:var(--pad-input-y, .6rem) var(--pad-input-x, .85rem);font-size:1.05rem;background:var(--color-input-bg);transition:border-color .15s ease,box-shadow .15s ease,background-color .2s ease;color:var(--color-text)}.checkin-form input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #0050ff26;background:var(--color-input-bg)}.checkin-form input::placeholder{color:var(--color-text-faint)}.checkin-form textarea{border:1px solid var(--color-input-border);border-radius:.8rem;padding:var(--pad-input-y, .6rem) var(--pad-input-x, .85rem);font-size:1.05rem;font-family:inherit;line-height:1.4;background:var(--color-input-bg);color:var(--color-text);transition:border-color .15s ease,box-shadow .15s ease,background-color .2s ease;resize:vertical;min-height:3.25rem}.checkin-form textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #0050ff26;background:var(--color-input-bg)}.checkin-form textarea::placeholder{color:var(--color-text-faint)}.checkin-form select,.leaderboard-row input[type=text],.leaderboard-row input[type=password],.leaderboard-row select{border:1px solid var(--color-input-border);border-radius:.8rem;padding:var(--pad-input-y, .6rem) var(--pad-input-x, .85rem);font-size:1rem;background:var(--color-input-bg);transition:border-color .15s ease,box-shadow .15s ease,background-color .2s ease;color:var(--color-text)}.checkin-form select:focus,.leaderboard-row input[type=text]:focus,.leaderboard-row input[type=password]:focus,.leaderboard-row select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #0050ff26;background:var(--color-input-bg)}.leaderboard-row input::placeholder{color:var(--color-text-faint)}.leaderboard-row button{border-radius:.7rem;border:1px solid var(--color-accent-hover);background:var(--color-accent);padding:.45rem .75rem;cursor:pointer;transition:box-shadow .15s ease,transform .05s ease,background-color .15s ease;color:#fff}.leaderboard-row button:hover{box-shadow:0 6px 18px #0050ff40;background:var(--color-accent-hover)}.leaderboard-row button:active{transform:translateY(1px)}.admin-table .leaderboard-row button,.admin-table .leaderboard-row .nav-link{flex-shrink:0;white-space:nowrap}.admin-table .leaderboard-row>div[style*="display: flex"]{flex-wrap:wrap;min-width:0;gap:.5rem}.admin-table .leaderboard-row input{min-width:0}.admin-table{min-width:0;overflow-x:auto}.race-admin-list{margin-top:.75rem;display:flex;flex-direction:column;gap:.6rem}.race-admin-list__head{display:grid;grid-template-columns:2fr 1fr 1fr minmax(160px,auto);gap:1rem;padding:.55rem .85rem;font-size:.8rem;font-weight:600;color:var(--color-text-muted)}.race-admin-list__row{display:grid;grid-template-columns:2fr 1fr 1fr minmax(160px,auto);gap:1rem;padding:.55rem .85rem;align-items:center;background:var(--color-surface-muted);border:1px solid var(--color-border-muted);border-radius:.75rem}.race-admin-list__desc{font-size:.85rem;margin-top:.2rem}.race-admin-list__actions{display:flex;gap:.5rem;flex-wrap:wrap;min-width:0}.race-admin-list__actions .nav-link{padding:.35rem .6rem;white-space:nowrap}.race-admin-list__delete{padding:.35rem .6rem;border-radius:999px;font-weight:500;font-size:.9rem;color:#b91c1c;background:transparent;border:1px solid rgba(185,28,28,.4);cursor:pointer;font-family:inherit;white-space:nowrap;transition:background .15s,border-color .15s}.race-admin-list__delete:hover{background:#b91c1c14;border-color:#b91c1c}.checkin-result{margin-top:.75rem;border:1px solid var(--color-border-muted);border-radius:1.1rem;padding:1rem;background:var(--color-surface-muted)}.celebrate-overlay{position:fixed;inset:0;pointer-events:none;z-index:1200}.celebrate-burst{position:absolute;left:50%;top:30%;width:16rem;height:16rem;border-radius:999px;border:3px solid #00c2ff;transform:translate(-50%,-50%) scale(.4);opacity:.9;animation:celebrate-burst .8s ease-out forwards;box-shadow:0 0 0 6px #00c2ff14,0 0 0 16px #00c2ff0a}@keyframes celebrate-burst{60%{transform:translate(-50%,-50%) scale(1);opacity:.7}to{transform:translate(-50%,-50%) scale(1.15);opacity:0}}.confetti{position:absolute;top:-12px;width:8px;height:12px;border-radius:2px;animation:confetti-fall .9s ease-out forwards}.confetti:nth-child(3n){background:#0050ff}.confetti:nth-child(3n+1){background:#ffb020}.confetti:nth-child(3n+2){background:#10b981}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:.95}80%{opacity:.85}to{transform:translateY(60vh) rotate(360deg);opacity:0}}.checkin-result ul{list-style:none;padding:0;margin:1rem 0 1.5rem;display:flex;flex-direction:column;gap:.6rem}.checkin-result li{display:flex;justify-content:space-between;gap:1rem}.checkin-result span{color:var(--color-text-faint)}.checkin-result strong{color:var(--color-text)}.admin-cp-marker,.admin-cp-picker{background:none!important;border:none!important}@media(max-width:768px){.app-shell{padding:.5rem;padding-left:max(.5rem,env(safe-area-inset-left));padding-right:max(.5rem,env(safe-area-inset-right));padding-bottom:max(.5rem,env(safe-area-inset-bottom));gap:.5rem}.app-header{flex-direction:row;flex-wrap:wrap;align-items:center;width:100%;max-width:100%;padding:.5rem .65rem;gap:.45rem;border-radius:.85rem}.brand{gap:.5rem}.brand-logo{width:2rem;height:2rem;border-radius:.5rem}.brand-overline{font-size:.6rem;letter-spacing:.2em;margin:0}.brand h1{font-size:.85rem;margin-top:0;overflow-wrap:anywhere;line-height:1.2}.race-header-name{font-size:.9rem}.race-header-description{font-size:.8rem}.nav{flex-direction:column;gap:.5rem;order:2;width:100%}.nav-main{gap:.35rem;width:100%;display:flex}.nav-main .nav-link{flex:1;text-align:center;padding:.5rem .45rem;min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600}.nav-race{margin-left:0;gap:.35rem;width:100%;display:flex;align-items:center}.nav-race .race-selector{flex:1;min-width:0}.nav-link{flex:none}.nav-link--secondary,.share-race-btn{padding:.45rem .6rem;font-size:.78rem;flex-shrink:0}.app-select{padding:.45rem 2rem .45rem 1rem;font-size:.8rem}.race-selector{max-width:none}.settings-button{order:1}.section-header{flex-direction:column;align-items:stretch}.card{width:100%;max-width:100%;padding:.7rem;border-radius:.85rem}.app-footer{font-size:.75rem;padding:.25rem 0 .5rem}.leaderboard-table{gap:.4rem;margin-top:.75rem}.leaderboard-head,.leaderboard-row summary{grid-template-columns:28px 30px 1fr auto;gap:.4rem;padding:.5rem .65rem}.leaderboard-table.rider-mode .leaderboard-head,.leaderboard-table.rider-mode .leaderboard-row summary{grid-template-columns:28px 30px 1fr auto}.leaderboard-table.team-mode .leaderboard-head,.leaderboard-table.team-mode .leaderboard-row summary{grid-template-columns:28px 30px 1fr auto}.favorite-btn{width:24px;height:24px}.leaderboard-head{font-size:.7rem;padding:.4rem .65rem}.rank-badge{width:1.6rem;height:1.6rem;font-size:.8rem}.rider-cell strong{font-size:.85rem}.rider-cell .muted{font-size:.75rem}.time-chip{padding:.2rem .55rem;font-size:.8rem}.leaderboard-row{border-radius:.65rem}.lb-desktop-col{display:none!important}.lb-mobile-cp{display:block!important;font-size:.75rem}.leaderboard-head>:nth-child(n+3):not(:last-child){display:none}.progress-timeline{padding:.6rem .75rem .75rem;gap:.5rem}.split-times{padding:0 .75rem 1rem}.split-times-table{font-size:.85rem}.route-meta,.race-meta{display:none}.leaderboard-mode-row{margin-bottom:.75rem}.leaderboard-mode-toggle__btn{padding:.55rem 1rem;font-size:.9rem;min-height:44px}.leaderboard-view .section-header .muted{font-size:.8rem}.leaderboard-view .section-header h2{font-size:1.1rem}.leaderboard-view .section-overline{font-size:.65rem;margin-bottom:.15rem}.checkin-form input,.leaderboard-row input,input[type=text],input[type=password],input[type=number]{font-size:16px!important}.race-admin-list__head{display:none}.race-admin-list__row{display:flex;flex-direction:column;gap:.75rem;padding:1rem;padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right))}.race-admin-list__row>.app-select{width:100%;max-width:140px}.race-admin-list__row>.muted{font-size:.85rem}.race-admin-list__actions{display:flex;gap:.5rem;flex-wrap:nowrap;margin-top:.25rem;padding-top:.5rem;border-top:1px solid var(--color-border-muted)}.race-admin-list__actions .nav-link,.race-admin-list__delete{flex:1;min-width:0;min-height:44px;display:inline-flex;align-items:center;justify-content:center;text-align:center}}.admin-layout{display:flex;flex-direction:column;gap:1.1rem}.admin-card{margin-bottom:0}.admin-card__header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.admin-card__actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;flex-shrink:0}.admin-card__title-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.admin-status-select{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:500}.btn--start{background:#0e7a22;color:#fff;padding:.42rem 1rem;border-radius:.5rem;font-weight:600;border:none;cursor:pointer;transition:background .15s ease}.btn--start:hover{background:#0b6a1c}.admin-tabs{display:flex;gap:0;background:var(--color-bg-alt, #f0f0f0);border-radius:.5rem;padding:3px}.admin-tab{padding:.4rem 1rem;border:none;background:transparent;cursor:pointer;font-size:.9rem;font-weight:500;color:var(--color-text-subtle);border-radius:.4rem;transition:all .15s ease}.admin-tab:hover{color:var(--color-text)}.admin-tab--active{background:var(--color-surface, #fff);color:var(--color-primary, #2563eb);box-shadow:0 1px 3px #00000014}.admin-subsection{padding:.75rem 0;border-top:1px solid var(--color-border-muted, #e5e7eb)}.admin-subsection:first-of-type{border-top:none;padding-top:0}.admin-subsection h4{margin:0 0 .75rem;font-size:.95rem;font-weight:600;color:var(--color-text)}.admin-details{margin-top:.5rem}.admin-details summary{cursor:pointer;font-weight:600;font-size:.95rem;color:var(--color-primary, #2563eb);padding:.4rem 0;list-style:none;display:flex;align-items:center;gap:.5rem}.admin-details summary:before{content:"+";display:inline-flex;align-items:center;justify-content:center;width:1.4rem;height:1.4rem;border-radius:50%;background:var(--color-primary, #2563eb);color:#fff;font-size:1rem;font-weight:700;line-height:1;flex-shrink:0}.admin-details[open] summary:before{content:"−"}.admin-details summary::-webkit-details-marker{display:none}.csv-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.45rem;padding:1.15rem 1.5rem;border:2px dashed var(--color-border, #d1d5db);border-radius:.75rem;background:var(--color-bg-alt, #f9fafb);cursor:pointer;transition:border-color .15s ease,background .15s ease;text-align:center}.csv-dropzone:hover,.csv-dropzone--hover{border-color:var(--color-primary, #2563eb);background:#2563eb0a}.csv-dropzone--busy{opacity:.6;cursor:wait}.csv-dropzone__icon{color:var(--color-text-subtle, #6b7280)}.csv-dropzone__text{font-weight:500;font-size:.95rem;color:var(--color-text)}.csv-dropzone__hint{font-size:.85rem;color:var(--color-text-subtle, #6b7280)}.csv-dropzone__hint code{background:var(--color-bg, #fff);padding:.15rem .4rem;border-radius:4px;font-size:.8rem}.csv-result{margin-top:.75rem;padding:.55rem .85rem;background:var(--color-bg-alt, #f9fafb);border:1px solid var(--color-border, #e5e7eb);border-radius:.5rem;font-size:.9rem}.csv-result__errors{margin:.5rem 0 0;padding-left:1.2rem;font-size:.85rem}.csv-result__errors li{color:var(--color-danger, #dc2626)}.toast{position:fixed;top:.85rem;right:.85rem;padding:.55rem 1rem;border-radius:.5rem;box-shadow:0 8px 24px #00000040;border:1px solid rgba(255,255,255,.25);z-index:1000;font-weight:600;font-size:.95rem}.toast--success{background:#0e7a22;color:#fff}:root,:root[data-theme=light]{--color-bg: #f0f4fa;--color-bg-alt: #f7f9fc;--color-surface: #ffffff;--color-surface-alt: #fcfdff;--color-surface-muted: #f8fbff;--color-border: #e9eef6;--color-border-muted: #e0e7f3;--color-border-strong: #dce6f6;--color-text: #0c1b2a;--color-text-muted: #5b6a83;--color-text-subtle: #4b5563;--color-text-faint: #7f8ca5;--color-accent: #0050ff;--color-accent-hover: #0042d6;--color-accent-muted: #eef4ff;--color-accent-text: #0041c2;--color-input-bg: #ffffff;--color-input-border: #cfd8e3;--color-btn-secondary-bg: #eef2f7;--color-btn-secondary-hover: #e1e7f5;--color-btn-secondary-border: #e0e7f3;--color-error: #d14343;--color-error-bg: #fdecec;--color-success-border: #d1fae5;--color-success-bg: #ecfdf5;--color-danger-border: #fee2e2;--color-danger-bg: #fef2f2;--shadow-sm: 0 1px 3px rgba(12, 27, 42, .04);--shadow-md: 0 4px 20px rgba(12, 27, 42, .06);--shadow-lg: 0 8px 24px rgba(12, 27, 42, .06);--map-bg: #e8eef5;--map-surface: #ffffff;--map-surface-alt: #f1f5f9;--map-border: #cbd5e1;--map-text: #0f172a;--map-text-muted: #64748b;--map-accent: #2563eb;--color-info-banner-finished-bg: #fef3c7;--color-info-banner-finished-text: #92400e;--color-info-banner-archived-bg: #e0e7ff;--color-info-banner-archived-text: #3730a3;--color-info-banner-draft-bg: #f1f5f9;--color-info-banner-draft-text: #475569}:root[data-theme=dark]{--color-bg: #0f172a;--color-bg-alt: #1e293b;--color-surface: #1e293b;--color-surface-alt: #334155;--color-surface-muted: #0f172a;--color-border: #475569;--color-border-muted: #64748b;--color-border-strong: #64748b;--color-text: #f1f5f9;--color-text-muted: #cbd5e1;--color-text-subtle: #e2e8f0;--color-text-faint: #94a3b8;--color-accent: #60a5fa;--color-accent-hover: #38bdf8;--color-accent-muted: #1e3a5f;--color-accent-text: #93c5fd;--color-input-bg: #1e293b;--color-input-border: #64748b;--color-btn-secondary-bg: #334155;--color-btn-secondary-hover: #475569;--color-btn-secondary-border: #475569;--color-error: #fca5a5;--color-error-bg: #7f1d1d;--color-success-border: #166534;--color-success-bg: #14532d;--color-danger-border: #7f1d1d;--color-danger-bg: #7f1d1d;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 20px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .45);--map-bg: #0f172a;--map-surface: #1e293b;--map-surface-alt: #334155;--map-border: #475569;--map-text: #f1f5f9;--map-text-muted: #cbd5e1;--map-accent: #60a5fa;--color-info-banner-finished-bg: #78350f;--color-info-banner-finished-text: #fef3c7;--color-info-banner-archived-bg: #312e81;--color-info-banner-archived-text: #c7d2fe;--color-info-banner-draft-bg: #334155;--color-info-banner-draft-text: #e2e8f0}:root{font-family:Plus Jakarta Sans,Inter,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5;font-weight:400;color:var(--color-text);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--pad-page-y: .85rem;--pad-page-x: clamp(.75rem, 2.5vw, 2rem);--pad-card: 1.25rem;--pad-input-y: .6rem;--pad-input-x: .85rem;--gap-block: .75rem}*{box-sizing:border-box}@media(hover:none){button,a,[role=button],input[type=checkbox],input[type=radio],select,label{touch-action:manipulation}}a,button{-webkit-tap-highlight-color:rgba(0,80,255,.15)}body{margin:0;min-height:100vh;background:var(--color-bg)}a{color:inherit}button{border-radius:.85rem;border:1px solid var(--color-accent-hover);padding:.55rem 1rem;font-size:1rem;font-weight:600;font-family:inherit;cursor:pointer;background:var(--color-accent);color:#fff;box-shadow:0 6px 16px #0050ff33;transition:background-color .15s ease,box-shadow .15s ease,transform .05s ease}button:hover{background:var(--color-accent-hover);box-shadow:0 8px 20px #0042d640}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}button:active{transform:translateY(1px)}
