/* All windows share the native, snap-scrolling airport rail. */
 .island-map .airport-label-bg,.island-map .airport-label,.island-map .airport-leader,
 .island-map .upcoming-airport text,.island-map .upcoming-airport path{visibility:hidden}
 .airport-carousel{position:absolute;left:0;right:0;bottom:0;z-index:5;display:block;--airport-card-width:134px}
 .airport-card-track{display:flex;align-items:flex-end;gap:10px;overflow-x:auto;overflow-y:hidden;padding:12px 16px 16px;scroll-padding-inline:16px;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;touch-action:pan-x pan-y;scrollbar-width:none;-webkit-overflow-scrolling:touch}
 .airport-card-track::-webkit-scrollbar{display:none}
 .airport-card-track::after{content:"";flex:0 0 max(0px,calc(100% - var(--airport-card-width) - 42px))}
 .airport-card{--card-scale:.86;flex:0 0 calc(var(--airport-card-width)*var(--card-scale));min-width:0;height:calc(64px*var(--card-scale));display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-content:center;align-items:center;gap:calc(5px*var(--card-scale)) calc(10px*var(--card-scale));padding:calc(10px*var(--card-scale));border:1px solid var(--label-edge);border-radius:calc(8px*var(--card-scale));background:var(--label-bg);color:var(--text);font:inherit;text-align:left;box-shadow:0 4px 12px var(--shadow);scroll-snap-align:start;scroll-snap-stop:always;transition:border-color .22s ease;cursor:pointer}
 .airport-card.is-current{--card-scale:1;border-color:var(--accent)}
 .airport-card-code{grid-row:2;grid-column:1;font-size:calc(10px*var(--card-scale));font-weight:500;letter-spacing:.08em;color:var(--label-code)}
 .airport-card strong{grid-row:1;grid-column:1/-1;font-size:calc(14px*var(--card-scale));line-height:1.4;font-weight:600;white-space:nowrap}
 .airport-card-action{grid-row:2;grid-column:2;display:flex;align-items:center;gap:calc(3px*var(--card-scale));font-size:calc(10px*var(--card-scale));white-space:nowrap;color:var(--accent)}
 a.airport-card:not(.is-current) .airport-card-action{visibility:hidden}
 .airport-card-action svg{width:calc(11px*var(--card-scale));height:calc(11px*var(--card-scale));fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
 .airport-card-upcoming{opacity:.6;filter:grayscale(1);box-shadow:none;transition:border-color .22s ease,opacity .22s ease}
 .airport-card-upcoming.is-current{opacity:.8;border-color:var(--muted)}
 .airport-card-upcoming .airport-card-action{color:var(--muted)}
 .island-map .home-clock{top:12px;bottom:auto}
 .island-map .map-scale{transform:translate(540px,685px)}
 .map-airport.is-card-current .airport-halo{fill:var(--halo-edge);stroke:var(--accent);stroke-width:2}
 .upcoming-airport.is-card-current circle{fill:var(--muted);stroke:var(--label-bg);stroke-width:3}
 .airport-map-marker{--marker-ink:var(--accent);position:absolute;inset:0;z-index:4;display:block;pointer-events:none}
 .airport-map-marker.is-upcoming{--marker-ink:var(--muted)}
 .airport-map-connector{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
 .airport-map-connector line{stroke:var(--marker-ink);stroke-width:1;stroke-linecap:round;vector-effect:non-scaling-stroke}
 .airport-map-radar{position:absolute;width:12px;height:12px;transform:translate(-50%,-50%)}
 .airport-map-radar::before,.airport-map-radar::after{content:"";position:absolute;inset:0;border:1px solid var(--marker-ink);border-radius:50%;animation:airport-radar 1.6s ease-out infinite}
 .airport-map-radar::after{animation-delay:-.8s}
 .airport-map-marker.is-upcoming .airport-map-radar::before,.airport-map-marker.is-upcoming .airport-map-radar::after{display:none;animation:none}
 .airport-map-marker.is-paused .airport-map-radar::before,.airport-map-marker.is-paused .airport-map-radar::after{animation-play-state:paused}
 .airport-map-tag{position:absolute;display:flex;align-items:center;gap:8px;max-width:calc(100% - 24px);padding:9px 12px;border:1px solid var(--marker-ink);border-radius:9px;background:var(--label-bg);color:var(--text);box-shadow:0 3px 12px var(--shadow);pointer-events:none;white-space:nowrap}
 .airport-map-marker.is-upcoming .airport-map-tag{color:var(--muted);filter:grayscale(1);opacity:.78;box-shadow:none}
 .airport-map-tag strong{font-size:13px;line-height:1.4;font-weight:650}
 .airport-map-tag>span{font-size:10px;letter-spacing:.08em;color:var(--label-code)}
 .map-hud .upcoming-trigger{display:none}
 html[data-home-transition]:not([data-home-transition="ready"]) :is(.airport-carousel,.airport-map-marker){opacity:0;visibility:hidden;pointer-events:none}
@media(min-width:1200px){.airport-carousel{right:398px}}
@media(min-width:768px){.island-section .map-hud{position:absolute;top:16px;left:16px;bottom:auto;width:min(300px,calc(100% - 32px));max-height:30%;box-sizing:border-box;margin:0;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--hud);overflow-y:auto;overscroll-behavior:contain}}
@media(min-width:1200px){.island-section .map-hud{top:20px;left:28px;width:270px;max-height:38%}}
@keyframes airport-radar{0%{transform:scale(.5);opacity:.65}80%{opacity:.08}100%{transform:scale(3.2);opacity:0}}
@media(prefers-reduced-motion:reduce){.airport-card{transition:none}.airport-map-radar::before{animation:none;transform:scale(1.4);opacity:.35}.airport-map-radar::after{display:none}}

/* User-supplied day/night artwork follows the snapped airport. */
.airport-photo-backdrop{position:absolute;left:0;right:0;bottom:0;height:30vh;overflow:hidden;pointer-events:none;mask-image:linear-gradient(to bottom,transparent 0%,#000 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 100%)}
.airport-photo-backdrop img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom;transform:translateY(28px);opacity:0;transition:opacity .24s ease}
.airport-photo-backdrop img.is-visible{opacity:.9}
.airport-photo-backdrop::after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(243,247,248,.5))}
.night .airport-photo-backdrop::after{background:linear-gradient(transparent,rgba(12,25,37,.65))}
.airport-card-track{position:relative;mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 36px),transparent 100%);-webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 36px),transparent 100%)}
@media(max-width:767px){
 .airport-card{background:rgba(245,250,250,.9);backdrop-filter:blur(10px)}
 .night .airport-card{background:rgba(17,37,49,.88)}
 .airport-card-upcoming{background:var(--label-bg)}
}
@media(min-width:768px){
 .airport-photo-backdrop{display:none}
 .airport-carousel{--airport-card-width:226px}
 .airport-card{position:relative;isolation:isolate;overflow:hidden;height:calc(148px*var(--card-scale));padding:calc(16px*var(--card-scale));border-radius:calc(12px*var(--card-scale));align-content:end;background:rgba(245,250,250,.86)}
 .night .airport-card{background:rgba(17,37,49,.86)}
 .airport-card[data-photo-day]::before{content:"";position:absolute;inset:0;z-index:-2;background-image:var(--airport-photo-day);background-size:cover;background-position:center bottom;opacity:.72}
 .night .airport-card[data-photo-day]::before{background-image:var(--airport-photo-night);opacity:.85}
 .airport-card[data-photo-day]::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(245,250,250,.08) 10%,rgba(245,250,250,.74) 63%,rgba(245,250,250,.98))}
 .night .airport-card[data-photo-day]::after{background:linear-gradient(180deg,rgba(10,24,34,.05) 10%,rgba(10,24,34,.64) 63%,rgba(10,24,34,.97))}
 .airport-card strong{font-size:calc(18px*var(--card-scale))}
 .airport-card-code,.airport-card-action{font-size:calc(12px*var(--card-scale))}
 .airport-card-upcoming{background:var(--label-bg)}
 .airport-card-upcoming::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:url('/static/brand/taiwan-airports-stacked-blue.svg?v=1') center 38%/82% auto no-repeat;opacity:.1}
 .night .airport-card-upcoming::before{background-image:url('/static/brand/taiwan-airports-stacked-white.svg?v=1')}
}
@media(min-width:1200px){.airport-carousel{--airport-card-width:244px}.airport-card{height:calc(160px*var(--card-scale))}}
@media(prefers-reduced-motion:reduce){.airport-photo-backdrop img{transition:none}}
/* Closed airports stay visibly grey even while their card is selected. */
.airport-card-upcoming{opacity:1;background:#e1e4e7;color:#77818a;border-color:#b8c0c5}
.airport-card-upcoming.is-current{opacity:1;background:#d4d9de;color:#626c75;border-color:#929da6}
.airport-card-upcoming :is(.airport-card-code,.airport-card-action){color:inherit}
.night .airport-card-upcoming{background:#192026;color:#7d878e;border-color:#343d44}
.night .airport-card-upcoming.is-current{background:#222b32;color:#929ca4;border-color:#59656e}

/* Keep pointer drags free of snap resistance and native link/image dragging. */
.airport-card-track{cursor:grab;user-select:none;-webkit-user-select:none}
.airport-card-track.is-dragging,.airport-card-track.is-wheeling{scroll-snap-type:none;scroll-behavior:auto}
.airport-card-track.is-dragging,.airport-card-track.is-dragging .airport-card{cursor:grabbing}
