
.moving-map{background:#06234a}
.map-visual{position:absolute;inset:0;overflow:hidden;background:#071e36}
.tile-layer{position:absolute;inset:0;transform-origin:0 0;will-change:transform}
.tile-layer img{position:absolute;width:256.5px;height:256.5px;max-width:none}
.night-shade{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;image-rendering:auto}
.route-overlay{position:absolute;inset:0;width:100%;height:100%;overflow:hidden;pointer-events:none;z-index:2}
.route-overlay path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.track-remaining{stroke:#fff279;stroke-width:3;stroke-dasharray:5 9;filter:drop-shadow(0 1px 1px #172b44)}
.track-flown{stroke:#f3433d;stroke-width:3}
.track-inferred{stroke:#f3433d;stroke-width:2.5;stroke-dasharray:2 5}
.track-heading{stroke:#70ff4a;stroke-width:2.5;filter:drop-shadow(0 0 2px #144f1d)}
.heading-dot{fill:#71f745;stroke:#d4ffbb;stroke-width:1.6;filter:drop-shadow(0 0 4px #5ae73c)}
.route-overlay #graticule path{stroke:#b3d5f3;stroke-width:1;stroke-dasharray:5 8;opacity:.4}
.map-aircraft{position:absolute;left:0;top:0;width:5.1cqw;height:5.65cqw;margin:-2.825cqw 0 0 -2.55cqw;filter:drop-shadow(0 1px 1px #06183388);will-change:transform;pointer-events:none;z-index:3}
.map-aircraft img,.map-aircraft svg{height:100%;width:100%;object-fit:contain;filter:grayscale(1) contrast(.45) brightness(2)}
.airport-labels,.world-clocks{position:absolute;inset:0;pointer-events:none;z-index:3}
.airport-label{position:absolute;white-space:nowrap;color:#fff498;font-size:1.5cqw;font-weight:bold;text-shadow:0 1px 3px #000}
.airport-label i{position:absolute;width:.65cqw;height:.65cqw;background:#fff498;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 .5cqw #000}
.airport-label span{position:absolute;left:.8cqw;bottom:.5cqw}
.airport-label.label-left span{left:auto;right:.8cqw}
.world-clock{position:absolute;transform:translate(-50%,-50%);color:white;background:#071329ec;border:1.5px solid #c1ccdf;border-radius:.7cqw;padding:.55cqw .7cqw;text-align:center;box-shadow:0 2px 4px #0008;font-size:1.25cqw;line-height:1.12;white-space:nowrap}
.world-clock span,.world-clock strong{display:block}
.world-clock strong{font-weight:600;font-variant-numeric:tabular-nums}
.map-close{position:absolute;top:1cqw;right:1.4cqw;background:#113b73e6;color:white;border:0;width:3.3cqw;height:3.6cqw;font-size:3.5cqw;line-height:1;z-index:6;cursor:pointer}
.map-close:hover{background:#087eb5}
.map-full{position:absolute;right:1.2cqw;bottom:1.2cqw;width:3.25cqw;height:3.15cqw;background:#0d2445e8;color:#fff;border:1px solid #ffffff18;border-radius:.2cqw;font-size:2.1cqw;cursor:pointer;z-index:5}
.map-full:hover{background:#24689a}
.map-status{position:absolute;top:1.3cqw;left:1.3cqw;padding:.5cqw .8cqw;font-size:1.1cqw;background:#071b3ddb;color:#fff;border-radius:.3cqw;max-width:82%;z-index:5}
.map-status:empty{display:none}
.attribution{position:absolute;bottom:.25cqw;right:1cqw;font-size:.65cqw;color:#d6dfe7;z-index:5}
#tileStatus{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:1.4cqw;background:#06101ddb;padding:.75cqw;border-radius:3px;pointer-events:none;z-index:4}
#tileStatus:empty{display:none}
.map-transition-overlay{position:absolute;inset:0;z-index:4;pointer-events:none;opacity:1;transition:opacity .96s ease-in-out;overflow:hidden}
.map-transition-overlay>.map-visual,.map-transition-overlay>.flight-information{opacity:1!important}
.flight-information{--info-label-width:19cqw;--info-value-gap:.8cqw;position:absolute;inset:0;color:#fff;padding:2.8cqw 7cqw 5.5cqw;background:linear-gradient(135deg,#0c4695df,#064cafbc),url('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/3/3/3') center/cover;text-shadow:0 1px 3px #19345a}
.info-heading{display:grid;grid-template-columns:var(--info-label-width) minmax(0,1fr);align-items:baseline;gap:var(--info-value-gap);font-size:2.4cqw;height:5cqw;margin:0 0 3cqw;white-space:nowrap}
.info-heading strong{font-size:4cqw;font-weight:500}
.info-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:4cqw;grid-template-rows:repeat(3,9.2cqw);row-gap:.25cqw}
.info-grid>div{display:grid;grid-template-columns:var(--info-label-width) max-content max-content;gap:var(--info-value-gap);align-items:center;min-width:0}
.info-grid span{font-size:2.05cqw;line-height:1.18;max-width:18cqw}
.info-grid strong{font-size:3.5cqw;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}
.info-grid small{font-size:1.9cqw;white-space:nowrap}
.arrival-button{position:absolute;bottom:1.4cqw;left:1cqw;display:flex;align-items:center;justify-content:space-between;width:18.3cqw;height:3.2cqw;padding:0 .9cqw;background:#0d2445ef;color:#fff;border:1px solid #ffffff1c;border-radius:.2cqw;cursor:pointer;font-size:1.12cqw;font-weight:bold;z-index:6;text-align:left}
.arrival-button:hover{background:#24689a}
.arrival-chevron{display:inline-block;font-size:1.25cqw;transition:transform .3s}
.arrival-button[aria-expanded="true"] .arrival-chevron{transform:rotate(180deg)}
.arrival-details{position:absolute;left:1cqw;bottom:5.1cqw;z-index:6;width:28cqw;padding:1.2cqw 1.35cqw;color:white;background:linear-gradient(145deg,#133e78f7,#092b55f9);border:1px solid #d4e2f355;box-shadow:0 7px 30px #00152f9c;border-radius:.25cqw;animation:arrival-enter .24s ease-out}
.arrival-details h2{font-size:1.35cqw;margin:0 0 1cqw;font-weight:600}
.arrival-summary{border-top:1px solid #ffffff30;border-bottom:1px solid #ffffff30;padding:1cqw 0;display:grid;gap:.25cqw}
.arrival-summary span,.arrival-row span{font-size:1.08cqw;color:#d6e5fc}
.arrival-summary strong{font-size:3.2cqw;font-weight:500;font-variant-numeric:tabular-nums}
.arrival-summary small{font-size:1.05cqw}
.arrival-row{display:flex;align-items:baseline;justify-content:space-between;gap:1cqw;padding:.7cqw 0;border-bottom:1px solid #ffffff1d}
.arrival-row strong{font-size:1.18cqw;font-weight:600;text-align:right}
@keyframes arrival-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(prefers-reduced-motion:reduce){.map-transition-overlay,.arrival-chevron{transition:none}.arrival-details{animation:none}}

/* Soft twilight treatment: land relief and oceans remain legible on night side. */
.track-flown,.track-inferred{stroke:#65f652;stroke-width:3;filter:drop-shadow(0 0 1px #155b18)}
.track-inferred{stroke-dasharray:none}
.track-heading{display:none}
.heading-dot{fill:#75fb49;stroke:#e5ffcc;stroke-width:1.5}
.arrival-details{left:1cqw;bottom:1.4cqw;width:22.6cqw;min-height:31.4cqw;padding:1.15cqw 1.2cqw 0;background:#74777b;box-shadow:0 3px 18px #0008;border:0;border-radius:.15cqw;color:#fff;text-shadow:0 1px 2px #0004;display:flex;flex-direction:column;z-index:7}
.arrival-details[hidden]{display:none}
.panel-stats{display:flex;flex-direction:column;gap:.28cqw;font-size:1.25cqw;font-weight:700;line-height:1.12}
.panel-stats>div{display:flex;justify-content:space-between;gap:.6cqw}
.panel-stats strong{font-weight:700;white-space:nowrap;text-align:right}
.panel-airports{margin:auto 0;display:grid;grid-template-columns:1fr 3.1cqw 1fr;align-items:center;gap:.4cqw;text-align:center}
.panel-airports>div{min-width:0;display:flex;flex-direction:column;align-items:center}
.panel-airports strong{font-size:2.25cqw;line-height:1.15}
.panel-airports span:not(.panel-aircraft){font-size:1.2cqw;line-height:1.08;overflow-wrap:anywhere}
.panel-aircraft{font-size:2.55cqw;transform:rotate(0deg)}
.panel-bottom{border-top:1px solid #ddd9;margin-top:auto;padding:1.1cqw .1cqw;display:flex;justify-content:space-between;font-size:1.3cqw;font-weight:bold}

/* Satellite imagery remains bright in daylight; canvas alone shades astronomical night. */
.tile-layer{filter:brightness(1.42) saturate(1.12) contrast(1.035)}
.night-shade{filter:none;mix-blend-mode:normal}
.panel-stats{display:grid;grid-template-columns:minmax(0,1fr);gap:.3cqw;font-size:1.2cqw}
.panel-stats>div{display:grid;grid-template-columns:minmax(0,1fr) max-content;column-gap:.7cqw;align-items:baseline}
.panel-stats span{text-align:left;white-space:nowrap}
.panel-stats strong{text-align:right;justify-self:end;font-variant-numeric:tabular-nums}
.panel-airports{grid-template-columns:minmax(0,1fr) 3.1cqw minmax(0,1fr)}
.panel-airports>div{width:100%}
.panel-airports small{font-size:.87cqw;letter-spacing:.09em;font-weight:600;opacity:.84;margin-bottom:.35cqw}
.panel-bottom{width:100%;border:0;border-top:1px solid #ddd9;background:transparent;color:#fff;cursor:pointer;text-align:left}
.panel-bottom:hover{background:#ffffff16}

/* Flight details: original white IFE airplane, not a colorful emoji. */
.panel-aircraft{display:grid;place-items:center;transform:none;color:#fff!important}
.panel-aircraft svg{display:block;width:3.15cqw;height:3.15cqw;transform:rotate(90deg);fill:#fff;stroke:#fff}
#panelClose{display:flex;align-items:center;justify-content:space-between;min-height:4.7cqw;position:relative;z-index:10}
#panelClose span:last-child{font-size:1.35cqw}
#panelClose:focus-visible{outline:3px solid #fff}

/* IFE city typography stays screen-sized as geography zooms beneath it. */
.city-labels{position:absolute;inset:0;pointer-events:none;z-index:2}
.city-label{position:absolute;left:0;top:0;color:#fff;font-size:1.3cqw;line-height:1.35;white-space:nowrap;text-shadow:0 1px 2px #152636,1px 0 2px #152636,-1px 0 2px #152636}
.city-label.capital{font-weight:700}
.city-label i{position:absolute;left:0;top:0;width:.48cqw;height:.48cqw;min-width:3px;min-height:3px;border-radius:50%;transform:translate(-50%,-50%);background:#fff6a1;box-shadow:0 0 3px #142d40,0 0 1px 1px #fff5b166}
.city-label span{position:absolute}

