/* v204 interaction polish (preview only). Loaded last. Refines existing v8.3/v8.4
   hover and focus; adds press states; fills a few gaps. No layout, copy or image
   changes. Hover movement is limited to fine pointers. Transforms are not used
   for entrance or looping effects. */

:root{--ease-ui:cubic-bezier(.2,.7,.3,1);--brand-blue:#3d7cc9;--v204-red:#dd1433;--v204-red-hover:#c4122e;--v204-red-press:#b10f29}

/* ----- Buttons ----- */
.button,
.cookie-accept,
.cookie-reject,
.links.open .nav-demo{
  transition:transform .18s var(--ease-ui),background-color .18s var(--ease-ui),box-shadow .18s var(--ease-ui),border-color .18s var(--ease-ui),color .18s var(--ease-ui)
}
.button:active,
.cookie-accept:active,
.cookie-reject:active,
.links.open .nav-demo:active{transition-duration:.08s}

@media (hover:hover) and (pointer:fine){
  .button:hover{transform:translateY(-1px);background:var(--v204-red-hover);box-shadow:0 8px 18px #dd143330}
  .button.secondary:hover{background:var(--grey,#f3f5f7);border-color:var(--brand-blue);color:var(--navy,#102c50);box-shadow:0 8px 18px #102c5014}
  .home-hero .button.secondary:hover,
  .closing .closing-actions .button.secondary:hover{background:#ffffff14;border-color:#ffffffaa;color:#fff;box-shadow:none}
  .cookie-accept:hover,
  .links.open .nav-demo:hover{background:var(--v204-red-hover);box-shadow:0 6px 14px #dd143328;transform:translateY(-1px)}
  .cookie-reject:hover{background:var(--grey,#f3f5f7);border-color:var(--navy,#102c50)}
}

.button:active{transform:translateY(1px);background:var(--v204-red-press);box-shadow:0 2px 6px #dd143322}
.button.secondary:active{background:#e8ebef;border-color:var(--brand-blue);color:var(--navy,#102c50);box-shadow:0 1px 3px #102c5010}
.home-hero .button.secondary:active,
.closing .closing-actions .button.secondary:active{background:#ffffff1f;border-color:#ffffffaa;color:#fff;box-shadow:none}
.cookie-accept:active,
.links.open .nav-demo:active{transform:translateY(1px);background:var(--v204-red-press);box-shadow:0 2px 6px #dd143322}
.cookie-reject:active{background:#e8ebef}

/* Coarse pointers should not keep a hover lift after a tap */
@media (hover:none),(pointer:coarse){
  .button:hover,
  .cookie-accept:hover,
  .links.open .nav-demo:hover{transform:none;box-shadow:none}
  .button:hover{background:var(--red,var(--v204-red))}
  .button.secondary:hover{background:#fff;border-color:#d8e0e8;color:var(--navy,#102c50)}
  .home-hero .button.secondary:hover,
  .closing .closing-actions .button.secondary:hover{background:transparent;border-color:#ffffff55;color:#fff}
  .cookie-accept:hover,
  .links.open .nav-demo:hover{background:var(--v204-red)}
  .cookie-reject:hover{background:#fff;border-color:#16233a}
}

.button:focus-visible{outline:none;box-shadow:0 0 0 3px #fff,0 0 0 5px var(--brand-blue)}
.home-hero .button:focus-visible,
.closing .button:focus-visible,
.portal-panel .button:focus-visible{box-shadow:0 0 0 3px var(--navy,#102c50),0 0 0 5px #9cc3ee}
.links.open .nav-demo:focus-visible{outline:2px solid #9cc3ee;outline-offset:3px}

/* ----- Clickable cards ----- */
a.route-card,
.news-card,
.flow-image-link,
.click-card,
.v175-card{
  transition:transform .2s var(--ease-ui),box-shadow .2s var(--ease-ui),border-color .2s var(--ease-ui)
}

@media (hover:hover) and (pointer:fine){
  a.route-card:hover,
  .news-card:hover,
  .flow-image-link:hover,
  .click-card:hover,
  .v175-card:hover{transform:translateY(-3px)}
  a.route-card:hover,
  .news-card:hover,
  .flow-image-link:hover{border-color:var(--brand-blue);box-shadow:0 14px 34px #102c5016}
  .v175-card:hover{box-shadow:0 14px 40px #172d5014;border-top-color:var(--red,var(--v204-red))}
}

a.route-card:active,
.news-card:active,
.flow-image-link:active,
.click-card:active,
.v175-card:active{transform:translateY(-1px)}

@media (hover:none),(pointer:coarse){
  a.route-card:hover,
  .news-card:hover,
  .flow-image-link:hover,
  .click-card:hover,
  .v175-card:hover{transform:none}
}

.v175-card:focus-within{outline:2px solid var(--brand-blue);outline-offset:6px;border-radius:10px}

/* Support route list (already colour-changes the label) */
.sp-routes a{transition:background-color .18s var(--ease-ui)}
@media (hover:hover) and (pointer:fine){
  .sp-routes a:hover{background:#f7f9fc}
}
.sp-routes a:focus-visible{outline:2px solid var(--brand-blue);outline-offset:-2px}

/* ----- Nav, menu, in-page links ----- */
.menu{
  transition:background-color .18s var(--ease-ui),border-color .18s var(--ease-ui),color .18s var(--ease-ui)
}
@media (hover:hover) and (pointer:fine){
  .menu:hover{background:#ffffff14;border-color:#c6d7ec}
  .links>a:not(.nav-demo):hover,
  .nav-toggle:hover{color:#c6d7ec}
}
.menu:active{background:#ffffff1f}
.menu:focus-visible{outline:2px solid #9cc3ee;outline-offset:3px}

.hero-c-nav a,
.hero-c .hero-c-link{transition:color .18s var(--ease-ui)}
.hero-c-nav a:focus-visible,
.hero-c .hero-c-link:focus-visible{outline:2px solid var(--brand-blue);outline-offset:3px;border-radius:3px}

.page-404 .not-found-intro p a{transition:text-decoration-thickness .18s var(--ease-ui),color .18s var(--ease-ui)}
@media (hover:hover) and (pointer:fine){
  .page-404 .not-found-intro p a:hover{text-decoration-thickness:2px}
}

/* ----- Homepage FAQ (native details) ----- */
.faq summary{transition:color .18s var(--ease-ui),background-color .18s var(--ease-ui);border-radius:6px}
@media (hover:hover) and (pointer:fine){
  .faq summary:hover{background:#00000006}
}
.faq summary:focus-visible{outline:2px solid var(--brand-blue);outline-offset:3px}

/* ----- Reduced motion: no movement, colour and focus remain ----- */
@media (prefers-reduced-motion:reduce){
  .button,
  .cookie-accept,
  .cookie-reject,
  .links.open .nav-demo,
  a.route-card,
  .news-card,
  .flow-image-link,
  .click-card,
  .v175-card,
  .menu,
  .sp-routes a,
  .hero-c-nav a,
  .hero-c .hero-c-link,
  .faq summary,
  .page-404 .not-found-intro p a{
    transition:background-color .2s,border-color .2s,color .2s,box-shadow .2s,text-decoration-thickness .2s
  }
  .button:hover,
  .button:active,
  .button:focus-visible,
  .cookie-accept:hover,
  .cookie-accept:active,
  .cookie-reject:hover,
  .cookie-reject:active,
  .links.open .nav-demo:hover,
  .links.open .nav-demo:active,
  a.route-card:hover,
  a.route-card:active,
  .news-card:hover,
  .news-card:active,
  .flow-image-link:hover,
  .flow-image-link:active,
  .click-card:hover,
  .click-card:active,
  .v175-card:hover,
  .v175-card:active{
    transform:none!important
  }
}
