/* ===============================
   ROUTE MAP (harbour -> flight site)
=============================== */
.isv-route{
    --isv-red:#E63946; --isv-ink:#1a1a1a; --isv-gold:#F5B400;
    --isv-sea:#BFE0EF; --isv-land:#F3F1E4; --isv-land-line:#9AA77E; --isv-islet:#EAE8DA; --isv-muted:#5E5F5B;
    background-color:var(--isv-sea);
    background-image:linear-gradient(to bottom,rgba(191,224,239,0),#8FBFD6),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='18'%3E%3Cpath d='M0 9 q10 -6 20 0 t20 0' fill='none' stroke='%23AFD6E8' stroke-width='1.2'/%3E%3C/svg%3E");
    background-repeat:no-repeat,repeat;
    background-size:100% 60px,auto;
    background-position:bottom,0 0;
    padding:3rem 1rem;
    overflow:hidden;
}
.isv-route__inner{max-width:1180px;margin:0 auto}
.isv-route__svg{display:block;width:100%;height:auto;overflow:visible}
.isv-route .isv-lbl{font-family:'Sora',sans-serif;font-weight:700;fill:var(--isv-ink)}
.isv-route .isv-sub{font-family:'Outfit',sans-serif;font-weight:500;fill:var(--isv-muted)}
.isv-route .isv-lbl--white{fill:#fff}
.isv-route .isv-lbl--gold{fill:var(--isv-gold)}
.isv-route .isv-lbl--water{fill:#CFCBB4}
.isv-route .isv-lbl--water:not(.isv-zh){letter-spacing:.04em}
.isv-route .isv-sub--rose{fill:#FFE3E7}
.isv-route .isv-zh{font-family:"PingFang SC","Noto Sans SC","Microsoft YaHei",sans-serif;font-weight:700}

/* clickable pin + card */
.isv-route .isv-link{cursor:pointer;outline:none}
.isv-route .isv-card__body{transition:transform .25s ease,filter .25s ease;transform-box:fill-box;transform-origin:center}
.isv-route .isv-card:hover .isv-card__body,
.isv-route .isv-card:focus-visible .isv-card__body{transform:translateY(-4px);filter:brightness(1.06)}
.isv-route .isv-pin__ring{transition:transform .25s ease;transform-box:fill-box;transform-origin:center}
.isv-route .isv-pin:hover .isv-pin__ring{transform:scale(1.12)}
.isv-route .isv-link:focus-visible rect{stroke:var(--isv-ink);stroke-width:4}

/* road: drawn-in once visible, then dashes keep moving */
.isv-route .isv-road-reveal{stroke-dasharray:100 100;stroke-dashoffset:0}
.isv-route .isv-traveller{display:none}
@media (prefers-reduced-motion:no-preference){
    .isv-route.isv-js .isv-road-reveal{stroke-dashoffset:100}
    .isv-route.isv-play .isv-road-reveal{animation:isv-draw 2.4s ease-in-out forwards}
    .isv-route.isv-play .isv-road{animation:isv-dash 1.2s linear infinite}
    .isv-route.isv-moving .isv-traveller{display:inline}
    .isv-route .isv-pulse{transform-box:fill-box;transform-origin:center;animation:isv-pulse 2.2s ease-out infinite}
}
@keyframes isv-draw{to{stroke-dashoffset:0}}
@keyframes isv-dash{to{stroke-dashoffset:-30}}
@keyframes isv-pulse{0%{transform:scale(.8);opacity:.55}100%{transform:scale(1.35);opacity:0}}
@media (max-width:640px){.isv-route{padding:2rem 0}}
