/* v4: continuous selection travel in horizontal and vertical menus. */
.sliding-menu{isolation:isolate}
.desktop-nav.sliding-menu,.map-tabs.sliding-menu,.modality-options.sliding-menu,#point-list.sliding-menu{position:relative}
.sliding-menu>.selection-slider{position:absolute;left:0;top:0;z-index:0;pointer-events:none;background:var(--blue);border-radius:999px;transition:transform .38s cubic-bezier(.22,.8,.25,1),width .38s cubic-bezier(.22,.8,.25,1),height .38s cubic-bezier(.22,.8,.25,1);will-change:transform}
.sliding-menu>a,.sliding-menu>button,.sliding-menu>label{position:relative;z-index:1}
.sliding-menu>a,.sliding-menu>button{background:transparent!important}
.desktop-nav.sliding-menu>a{border-color:transparent;transition:color .28s,scale .18s,box-shadow .18s}
.desktop-nav.sliding-menu .nav-qr:not(.active){box-shadow:inset 0 0 0 1px #bed0df}
.sliding-menu>a.active,.sliding-menu>button[aria-selected=true],.sliding-menu>button[aria-pressed=true]{color:white!important;border-color:transparent!important}
.modality-options{display:flex;gap:8px;align-items:center;max-width:100%}
.modality-options label>span,.modality-options input:checked+span{background:transparent!important;border-color:transparent;transition:color .28s,scale .18s}
.modality-options label>span{box-shadow:inset 0 0 0 1px var(--line)}
.modality-options input:checked+span{box-shadow:none;color:white!important}
.point-row{transition:color .28s,scale .18s,box-shadow .18s}
.point-row[aria-pressed=true] .point-number{background:transparent}
html[data-experience=mobile] .mobile-nav.sliding-menu>a{background:transparent!important}
html[data-experience=mobile] .modality-options{gap:6px}
/* Keep the shared capsule visible while it travels; hovering a menu item uses
   an outline, while stand-alone action buttons retain their inverse fill. */
@media(hover:hover) and (pointer:fine){
 .sliding-menu>a:hover,.sliding-menu>button:not(:disabled):hover,.sliding-menu>label:hover>span{background:transparent!important;color:var(--blue)!important;border-color:transparent!important;box-shadow:inset 0 0 0 1px #88a9c5;scale:1.025}
 .sliding-menu>a.active:hover,.sliding-menu>button[aria-selected=true]:not(:disabled):hover,.sliding-menu>button[aria-pressed=true]:not(:disabled):hover,.sliding-menu>label:hover input:checked+span{background:transparent!important;color:white!important;box-shadow:inset 0 0 0 1px #b3d4ec;border-color:transparent!important}
}
/* Avatar is an optional, same-origin photograph with a safe SVG fallback. */
.participant-dialog .person-avatar{--avatar-ring:#97aaba;position:relative;isolation:isolate;width:104px;height:104px;padding:5px;margin:23px 0 18px;border:3px solid var(--avatar-ring);border-radius:50%;background:white;box-shadow:0 5px 20px #1439560b;overflow:hidden;display:block}
.participant-dialog .person-avatar[data-gender=male]{--avatar-ring:#478bc6}
.participant-dialog .person-avatar[data-gender=female]{--avatar-ring:#dc87ad}
.avatar-fallback{display:grid;place-items:center;width:100%;height:100%;overflow:hidden;border-radius:50%;background:linear-gradient(145deg,#f1f6f9,#dce9f2);color:#294c68}
.avatar-fallback svg{width:100%;height:100%;display:block;fill:currentColor}
.person-avatar[data-gender=female] .avatar-fallback{background:linear-gradient(145deg,#fbf5f8,#f1e5ed);color:#6e5167}
.person-avatar .avatar-photo{position:absolute;inset:5px;width:calc(100% - 10px);height:calc(100% - 10px);border-radius:50%;object-fit:cover;opacity:0;transition:opacity .2s}
.person-avatar.has-photo .avatar-photo{opacity:1}
.person-avatar.has-photo .avatar-fallback{visibility:hidden}
.participant-dialog .participant-info .mode-tag{display:inline-flex;align-items:center;justify-content:center;padding:9px 14px;border-radius:999px;font-size:12px;line-height:1.4;font-weight:650;letter-spacing:.1px;color:#fff;background:linear-gradient(110deg,#082d56 0%,#245f97 28%,#0c395f 52%,#1c5986 75%,#082d56 100%);background-size:300% 100%;border:1px solid #386a96;box-shadow:0 4px 12px #0a3a6e15}
.participant-dialog[open] .participant-info .mode-tag{animation:modality-flow 6s ease-in-out infinite alternate}
@keyframes modality-flow{from{background-position:0% 50%}to{background-position:100% 50%}}
@media(prefers-reduced-motion:reduce){
 .sliding-menu>.selection-slider{transition:none!important}
 .participant-dialog[open] .participant-info .mode-tag{animation:none!important;background-position:50% 50%}
 .person-avatar .avatar-photo{transition:none}
}
/* Home distances: animated text, without changing the approved type or copy. */
.home-page .event-facts .distance-gradient{display:table;color:#8a631c}
.home-page .event-facts .distance-blue{color:#155b91}
@supports ((background-clip:text) or (-webkit-background-clip:text)){
 .home-page .event-facts .distance-gradient{background-image:linear-gradient(110deg,#765016 0%,#b27d22 23%,#dfb856 43%,#946319 62%,#d6ab49 82%,#765016 100%);background-size:300% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:distance-flow 5s ease-in-out infinite alternate}
 .home-page .event-facts .distance-blue{background-image:linear-gradient(110deg,#082f5c 0%,#1b6ba4 25%,#62add5 45%,#124c83 65%,#3789be 83%,#082f5c 100%);animation-delay:-2s}
 .distance-gradient>span{color:inherit;-webkit-text-fill-color:inherit}
}
@keyframes distance-flow{from{background-position:0% 50%}to{background-position:100% 50%}}
@media(prefers-reduced-motion:reduce){.home-page .event-facts .distance-gradient{animation:none;background-position:50% 50%}}
@media(forced-colors:active){.home-page .event-facts .distance-gradient{background:none;color:CanvasText;-webkit-text-fill-color:CanvasText}}

/* Results date and its route action share the institutional moving blues. */
.results-page .results-date{background-image:linear-gradient(125deg,#06274a 0%,#145186 30%,#246a9d 50%,#103f70 72%,#06274a 100%);background-size:300% 300%;animation:results-blue-flow 8s ease-in-out infinite alternate}
.results-page .results-message .button{background-image:linear-gradient(110deg,#082f5c 0%,#155384 30%,#246797 52%,#103f70 75%,#082f5c 100%);background-size:300% 200%;background-color:#103f70;color:white;border-color:#245e8d;animation:results-blue-flow 6s ease-in-out infinite alternate;animation-delay:-2s;box-shadow:0 5px 15px #103f7020}
@keyframes results-blue-flow{from{background-position:0% 30%}to{background-position:100% 70%}}
@media(hover:hover) and (pointer:fine){.results-page .results-message .button:hover{background:white!important;color:var(--blue)!important;border-color:var(--blue)!important}}
@media(prefers-reduced-motion:reduce){.results-page .results-date,.results-page .results-message .button{animation:none;background-position:50% 50%}}
@media(forced-colors:active){.results-page .results-date,.results-page .results-message .button{background:none;color:CanvasText;border:1px solid CanvasText;animation:none}.results-date-label,.results-date-year{color:CanvasText}}

/* Only the home route CTA outline is animated; its fill and copy stay intact. */
.hero .route-outline-motion{position:relative;border-color:#66b9ec}
@supports ((mask-composite:exclude) or (-webkit-mask-composite:xor)){
 .hero .route-outline-motion::before{content:'';position:absolute;inset:-1px;border-radius:inherit;padding:2px;pointer-events:none;background:linear-gradient(110deg,#0b4b8c 0%,#3d97d1 22%,#a4d9fb 44%,#247ebc 64%,#0b4b8c 82%,#a4d9fb 100%);background-size:300% 100%;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:route-outline-flow 4s ease-in-out infinite alternate}
}
@keyframes route-outline-flow{from{background-position:0% 50%}to{background-position:100% 50%}}
@media(prefers-reduced-motion:reduce){.hero .route-outline-motion::before{animation:none;background-position:50% 50%}}
@media(forced-colors:active){.hero .route-outline-motion::before{display:none}.hero .route-outline-motion{border-color:ButtonText}}
