﻿    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      overflow: hidden;
    }
    body.cursor-hidden,
    body.cursor-hidden * {
      cursor: none !important;
    }
    /* 珥덇린 濡쒕뵫 ?ㅻ쾭?덉씠 */
    #loading-overlay {
      position: fixed;
      inset: 0;
      background: url("../../images/loading.jpg") center center / cover no-repeat;
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 2000;
      pointer-events: all;
    }
    .startup-shell {
      display: flex;
      flex-direction: column;
      width: min(92vw, 700px);
      min-height: 390px;
      background: rgba(8, 13, 22, 0.76);
      border: 1px solid rgba(255,255,255,0.2);
      box-shadow: 0 18px 48px rgba(0,0,0,0.45);
      border-radius: 16px;
      padding: 20px;
      backdrop-filter: blur(8px);
    }
    #loading-overlay.startup-connecting .startup-shell {
      width: auto;
      min-height: 0;
      background: transparent;
      border: 0;
      box-shadow: none;
      border-radius: 0;
      padding: 0;
      backdrop-filter: none;
    }
    #loading-overlay.startup-connecting .startup-root {
      min-height: 0;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .startup-root {
      min-height: 350px;
      color: #fff;
      font-size: 15px;
    }
    .startup-header {
      display: flex;
      flex-direction: column;
      gap: 6px;
      margin-bottom: 18px;
    }
    .startup-title {
      font-size: 28px;
      font-weight: 800;
      letter-spacing: 0.2px;
    }
    .startup-subtitle {
      color: rgba(255,255,255,0.82);
      font-size: 14px;
      line-height: 1.4;
    }
    .startup-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 12px;
      margin: 12px 0 18px;
    }
    .startup-card {
      border: 1px solid rgba(255,255,255,0.24);
      border-radius: 12px;
      background: rgba(255,255,255,0.08);
      color: #fff;
      padding: 16px;
      text-align: left;
      cursor: pointer;
    }
    .startup-card:hover {
      border-color: rgba(255,255,255,0.55);
      background: rgba(255,255,255,0.14);
    }
    .startup-card-title {
      font-weight: 700;
      font-size: 18px;
      margin-bottom: 6px;
    }
    .startup-card-desc {
      color: rgba(255,255,255,0.84);
      font-size: 13px;
      line-height: 1.35;
    }
    .startup-field {
      display: flex;
      flex-direction: column;
      gap: 6px;
      margin-bottom: 12px;
    }
    .startup-field label {
      color: rgba(255,255,255,0.86);
      font-weight: 600;
      font-size: 13px;
    }
    .startup-field input,
    .startup-field select {
      width: 100%;
      box-sizing: border-box;
      padding: 9px 10px;
      border-radius: 8px;
      border: 1px solid rgba(255,255,255,0.36);
      background: rgba(8, 13, 22, 0.72);
      color: #fff;
      font-size: 14px;
      outline: none;
    }
    .startup-field input::placeholder {
      color: rgba(255,255,255,0.72);
    }
    .startup-field select option {
      color: #f1f4ff;
      background: #0b1119;
    }
    .startup-field select option:checked {
      color: #ffffff;
      background: #1a2940;
    }
    .startup-actions {
      display: flex;
      gap: 8px;
      margin-top: 8px;
      flex-wrap: wrap;
    }
    .startup-btn {
      padding: 9px 14px;
      border: 1px solid rgba(255,255,255,0.32);
      border-radius: 8px;
      background: rgba(255,255,255,0.16);
      color: #fff;
      font-weight: 700;
      cursor: pointer;
    }
    .startup-btn.primary {
      background: #fff;
      color: #111;
      border-color: #fff;
    }
    .startup-btn:disabled {
      opacity: 0.5;
      cursor: not-allowed;
    }
    .startup-flight-list {
      margin-top: 8px;
      max-height: 170px;
      overflow: auto;
      border: 1px solid rgba(255,255,255,0.24);
      border-radius: 8px;
      background: rgba(0,0,0,0.18);
    }
    .startup-flight-item {
      width: 100%;
      text-align: left;
      padding: 9px 10px;
      border: 0;
      border-bottom: 1px solid rgba(255,255,255,0.14);
      background: transparent;
      color: #fff;
      cursor: pointer;
      font-size: 13px;
    }
    .startup-flight-item:last-child {
      border-bottom: 0;
    }
    .startup-flight-item:hover,
    .startup-flight-item.active {
      background: rgba(255,255,255,0.18);
    }
    .startup-note {
      color: rgba(255,255,255,0.76);
      font-size: 12px;
      margin-top: 8px;
      line-height: 1.35;
    }
    .startup-loading-wrap {
      display: flex;
      align-items: center;
      justify-content: center;
      min-height: 150px;
    }
    .startup-loader {
      width: 46px;
      height: 46px;
      border-radius: 50%;
      border: 4px solid rgba(255,255,255,0.25);
      border-top-color: rgba(255,255,255,0.95);
      animation: spinLoader 0.9s linear infinite;
    }
    @keyframes spinLoader {
      from { transform: rotate(0deg); }
      to { transform: rotate(360deg); }
    }
    #map {
      width: 100%;
      height: 100%;
      background: #000;
      overflow: hidden;
      position: relative;
    }
    #map .cesium-widget,
    #map .cesium-widget canvas,
    #map .cesium-widget-container {
      position: absolute;
      inset: 0;
      z-index: 1;
    }
    #atmosphere-halo {
      position: absolute;
      left: 50%;
      top: 50%;
      width: 0;
      height: 0;
      border-radius: 50%;
      pointer-events: none;
      transform: translate(-50%, -50%);
      overflow: visible;
      mix-blend-mode: normal;
      filter: none;
      --earth-stop: 84%;
      --white1: 86%;
      --blue1: 88%;
      --blue2: 92%;
      --blue3: 97%;
      --blue4: 100%;
      background: radial-gradient(circle,
        rgba(0,0,0,0) 0%,
        rgba(0,0,0,0) calc(var(--earth-stop) - 0.6%),
        rgba(255,255,255,0.98) var(--earth-stop),
        rgba(255,255,255,0.88) var(--white1),
        rgba(20,70,255,0.98) var(--blue1),
        rgba(90,160,255,0.7) var(--blue2),
        rgba(190,235,255,0.3) var(--blue3),
        rgba(255,255,255,0.0) var(--blue4)
      );
      opacity: 1;
      box-shadow: 0 0 18px rgba(70,140,255,0.9), 0 0 70px rgba(70,140,255,0.55), 0 0 130px rgba(120,200,255,0.35);
      z-index: 40;
    }
    #cesium-overlay {
      position: absolute;
      inset: 0;
      z-index: 620;
      pointer-events: none;
    }
    .cesium-pane {
      position: absolute;
      inset: 0;
      pointer-events: none;
    }
    /* ?섎떒 ??*/
    #panel {
      position: absolute;
      left: 0;
      right: 0;
      bottom: 0;
      padding: 12px 24px 16px;
      background: rgba(180, 0, 0, 0.95); /* 鍮④컙 諛뺤뒪 */
      color: #fff;
      font-size: 17px;
      line-height: 1.5;
      z-index: 1000;
      pointer-events: none;
      box-shadow: 0 -4px 10px rgba(0,0,0,0.4);
    }
    #panel-inner {
      position: relative;
      overflow: hidden;
    }
    .line-title {
      font-weight: 700;
      font-size: 16px;
      margin-bottom: 4px;
      text-align: center;
    }

    /* ?뺣낫 洹몃━?? ?몃줈 以??뺣젹 + 2??*/
    .info-grid {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      column-gap: 28px;
      row-gap: 4px;
      max-width: 1100px;
      margin: 0 auto;
    }
    .info-item {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      text-align: center;
      white-space: nowrap;
      gap: 6px;
    }
    .info-item .label {
      font-weight: 500;
      opacity: 0.9;
      margin-right: 0;
      font-size: 17px;
      line-height: 1.15;
    }
    .info-item .value {
      font-weight: 700;
      font-size: 19px;
      line-height: 1.15;
    }

    .line-title {
      font-weight: 700;
      font-size: 19px;
      margin-bottom: 6px;
      text-align: center;
    }
    /* label/value sizes are defined above for the two-line layout */

    /* ?곷떒 吏꾪뻾 諛?*/
    #topbar {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 54px;
      background: rgba(255,255,255,0.9);
      backdrop-filter: blur(4px);
      box-shadow: 0 2px 6px rgba(0,0,0,0.2);
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 1200;
      pointer-events: auto;
    }
    .topbar-inner {
      width: 100%;
      display: flex;
      align-items: center;
      position: relative;
      padding: 0 12px;
      gap: 10px;
    }
    #preview-topbar {
      position: absolute;
      top: 54px;
      left: 50%;
      transform: translate(-50%, -10px);
      background: linear-gradient(180deg, rgba(205, 0, 0, 0.92), rgba(155, 0, 0, 0.92));
      color: #fff;
      padding: 14px 26px;
      border-radius: 6px;
      box-shadow: 0 2px 6px rgba(0,0,0,0.25);
      display: none;
      z-index: 1195;
      pointer-events: none;
      min-width: 400px;
      opacity: 0;
      transition: transform 0.25s ease, opacity 0.25s ease;
    }
    #preview-topbar.visible {
      display: block;
    }
    #preview-topbar.active {
      opacity: 1;
      transform: translate(-50%, 0);
    }
    .preview-topbar-inner {
      display: flex;
      flex-direction: column;
      gap: 6px;
      font-weight: 700;
      width: 100%;
    }
    .preview-topbar-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 18px;
    }
    .preview-topbar-row.route {
      height: 24px;
      padding: 0 8px;
      border-radius: 4px;
      border-bottom: 1px solid rgba(255,255,255,0.18);
      align-items: center;
    }
    .preview-topbar-row.metrics {
      justify-content: center;
      gap: 36px;
    }
    .preview-route {
      text-align: center;
      font-size: 13px;
      font-weight: 400;
      white-space: nowrap;
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 1;
      transform: translateY(-7px);
    }
    .preview-metric {
      display: flex;
      align-items: baseline;
      gap: 6px;
      white-space: nowrap;
      font-size: 15px;
    }
    .preview-label {
      font-weight: 600;
      opacity: 0.9;
    }
    .preview-value {
      font-weight: 800;
      font-size: 18px;
    }
    #preview-progress {
      position: absolute;
      left: 50%;
      bottom: 120px;
      transform: translate(-50%, 14px);
      opacity: 0;
      display: none;
      z-index: 1100;
      pointer-events: auto;
      transition: transform 0.25s ease, opacity 0.25s ease;
    }
    #preview-progress.visible {
      display: block;
    }
    #preview-progress.active {
      opacity: 1;
      transform: translate(-50%, 0);
    }
    .preview-progress-track {
      position: relative;
      width: clamp(260px, 44vw, 620px);
      height: 12px;
      border-radius: 0;
      background: rgba(28,28,28,0.78);
      border: 1px solid rgba(210,210,210,0.7);
      outline: 1px solid rgba(210,210,210,0.35);
      outline-offset: 1px;
      box-shadow: 0 2px 8px rgba(0,0,0,0.35);
      overflow: visible;
      cursor: pointer;
    }
    .preview-progress-fill {
      height: 100%;
      width: 0%;
      background: linear-gradient(90deg, #ff0000, #ff6a6a);
      transition: width 0.2s linear;
      border-radius: 0;
    }
    .preview-progress-handle {
      position: absolute;
      top: 50%;
      width: 12px;
      height: 24px;
      background: #ffd2d2;
      border: 1px solid rgba(80,80,80,0.85);
      box-shadow: 0 2px 8px rgba(0,0,0,0.5);
      transform: translate(-50%, -50%);
    }
    .topbar-eta {
      font-weight: 800;
      color: #111;
      font-size: 15px;
      white-space: nowrap;
    }
    .topbar-eta-pop {
      animation: topbarEtaPop 0.45s ease;
    }
    @keyframes topbarEtaPop {
      0% {
        transform: translateY(6px) scale(0.98);
        opacity: 0;
      }
      60% {
        opacity: 1;
      }
      100% {
        transform: translateY(0) scale(1);
        opacity: 1;
      }
    }
    .topbar-left {
      display: flex;
      align-items: center;
      gap: 12px;
      margin-right: auto;
    }
    .topbar-logo {
      height: 54px; /* ?곷떒諛??믪씠??留욎땄 */
      width: auto;
      object-fit: cover;
      border-radius: 0;
      box-shadow: none;
      margin-bottom: 10px; /* 濡쒓퀬 ?섎떒 ?щ갚 */
    }
    .topbar-flight {
      display: flex;
      align-items: center;
      gap: 12px; /* 濡쒓퀬/?몃챸 媛꾧꺽怨??숈씪?섍쾶 */
      line-height: 1.1;
      white-space: nowrap;
    }
    .topbar-flight-text {
      font-weight: 800;
      color: #666; /* 湲곗〈蹂대떎 議곌툑 ?고븳 ?뚯깋 */
      font-size: 16.5px; /* 10% ?뺣? */
      white-space: nowrap;
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    }
    #top-flight-route {
      font-weight: 400;
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    }
    #top-flight-number {
      position: relative;
      top: 1px;
    }
    .topbar-center {
      position: absolute;
      left: 0;
      right: 0;
      top: 50%;
      transform: translateY(-50%);
      display: flex;
      align-items: center;
      gap: 14px;
      justify-content: center;
      pointer-events: none; /* 以묒븰 ?곸뿭??踰꾪듉 ?대┃??留됱? ?딅룄濡?*/
    }
    .topbar-right {
      margin-left: auto;
      display: flex;
      align-items: center;
      gap: 8px;
      pointer-events: auto;
    }
    #topbar-close-dock {
      position: absolute;
      top: 63px;
      right: 12px;
      z-index: 1305;
      pointer-events: auto;
    }
    #return-home-btn {
      height: 30px;
      min-width: 88px;
      padding: 0 6px 0 6px;
      border: 1px solid rgba(0,0,0,0.52);
      border-radius: 4px;
      background: rgba(44,44,44,0.62);
      color: #fff;
      font-size: 12px;
      font-weight: 400;
      letter-spacing: 0.35px;
      text-transform: none;
      display: inline-flex;
      align-items: center;
      justify-content: space-between;
      gap: 4px;
      cursor: pointer;
      box-shadow: 0 2px 6px rgba(0,0,0,0.35);
    }
    #return-home-btn:hover {
      background: rgba(54,54,54,0.72);
    }
    .topbar-close-label {
      line-height: 1;
      margin-left: 0;
    }
    .topbar-close-icon {
      width: 16px;
      height: 16px;
      border-radius: 2px;
      background: rgba(191,16,16,0.72);
      color: #fff;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      font-size: 11px;
      font-weight: 800;
      line-height: 1;
      box-shadow: inset 0 0 0 1px rgba(255,255,255,0.16);
    }
    .follow-btn {
      width: 36px;
      height: 36px;
      border-radius: 10px;
      border: 1px solid rgba(0,0,0,0.2);
      background: rgba(255,255,255,0.85) !important;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      box-shadow: 0 2px 6px rgba(0,0,0,0.15);
      color: #111;
      transition: background 0.15s, color 0.15s, border-color 0.15s;
      overflow: visible;
    }
    .follow-btn:hover {
      background: rgba(255,255,255,0.95) !important;
    }
    .follow-btn:disabled {
      opacity: 0.4;
      cursor: not-allowed;
      pointer-events: none;
    }
    .follow-btn.active {
      background: #888 !important;
      color: #fff !important;
      border-color: rgba(0,0,0,0.35) !important;
    }
    .sound-btn {
      position: relative;
    }
    .sound-btn .slash {
      opacity: 0;
      transition: opacity 0.15s ease;
    }
    .sound-btn .waves {
      transition: opacity 0.15s ease;
    }
    .sound-btn.muted {
      background: #888 !important;
      color: #fff !important;
      border-color: rgba(0,0,0,0.35) !important;
    }
    .sound-btn.muted .slash {
      opacity: 1;
    }
    .sound-btn.muted .waves {
      opacity: 0.25;
    }
    #auto-zoom-toggle.active {
      background: #888 !important;
      color: #fff !important;
      border-color: rgba(0,0,0,0.35) !important;
    }
    .autozoom-icon {
      width: 20px;
      height: 20px;
      object-fit: contain;
      display: block;
      filter: none;
    }
    #auto-zoom-toggle.active .autozoom-icon {
      filter: brightness(0) invert(1);
    }
    #auto-zoom-toggle svg {
      overflow: visible;
    }
    .seatbelt-panel {
      pointer-events: none;
      display: flex;
      align-items: center;
      height: 36px; /* match topbar icon button height */
      margin-right: 6px;
    }
    .seatbelt-panel img {
      height: 40px;
      width: auto;
      object-fit: contain;
      display: block;
    }
    .prog-wrapper {
      position: relative;
      height: 14px;
      width: clamp(160px, 25%, 260px); /* 湲몄씠瑜??덈컲 ?섏??쇰줈 異뺤냼 */
      pointer-events: none;
    }
    .prog-track {
      position: absolute;
      top: 50%;
      left: 0;
      right: 0;
      height: 4px;
      background: #b0b0b0;
      transform: translateY(-50%);
      border-radius: 999px;
    }
    .prog-wrapper::before,
    .prog-wrapper::after {
      content: "";
      position: absolute;
      top: 50%;
      width: 10px;
      height: 10px;
      background: #111;
      border-radius: 50%;
      transform: translate(-50%, -50%);
    }
    .prog-wrapper::before {
      left: 0%;
    }
    .prog-wrapper::after {
      left: 100%;
    }
    .prog-fill {
      position: absolute;
      top: 50%;
      left: 0;
      height: 4px;
      background: #111;
      width: 0%;
      transform: translateY(-50%);
      border-radius: 999px;
      transition: width 0.4s ease-out;
    }
    .prog-plane {
      position: absolute;
      top: 50%;
      width: 36px;
      height: 36px;
      transform: translate(-50%, -50%);
      filter: drop-shadow(0 0 2px rgba(0,0,0,0.4));
      color: #111;
    }
    .prog-plane svg {
      transform: rotate(90deg);
    }

    .info-row {
      display: grid;
      grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr));
      column-gap: 28px;
      row-gap: 0;
      align-items: center;
      max-width: 1200px;
      margin: 0 auto;
    }
    .info-row.anim {
      will-change: transform, opacity;
      transition: transform 260ms ease-out, opacity 260ms ease-out;
    }

    /* Landing V/S popup */
    #landingvs-popup {
      position: fixed;
      left: 50%;
      top: 34%;
      transform: translate(-50%, -50%);
      width: 360px;
      max-width: calc(100vw - 80px);
      border: 6px solid #000;
      z-index: 2550;
      display: none;
      pointer-events: none;
      box-shadow: 0 10px 26px rgba(0,0,0,0.35);
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    }
    #landingvs-popup.visible {
      display: block;
    }
    .landingvs-titlebar {
      background: #000;
      color: #fff;
      font-size: 18px;
      font-weight: 600;
      padding: 10px 14px;
      line-height: 1;
    }
    .landingvs-body {
      background: #f2f2f2;
      color: #111;
      font-size: 28px;
      padding: 18px 14px 22px;
      border-top: 2px solid rgba(0,0,0,0.1);
      text-align: center;
      font-weight: 700;
      letter-spacing: 0.3px;
    }

    /* Custom city labels (../csv/worldcities.csv) */
    .city-label-marker {
      background: transparent !important;
      border: none !important;
      pointer-events: none !important;
    }
    .city-label-wrap {
      --dot: 8px;
      --font: 13px;
      transform: translate(0, -50%);
      transform-origin: 0 50%;
      display: inline-block;
      position: relative;
      padding-left: calc(var(--dot) / 2 + 8px);
      white-space: nowrap;
      pointer-events: none;
      user-select: none;
      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.45));
    }
    .city-dot {
      position: absolute;
      left: 0;
      top: 50%;
      transform: translate(-50%, -50%);
      width: var(--dot);
      height: var(--dot);
      border-radius: 50%;
      background: rgba(255,255,255,0.92);
      box-shadow: 0 0 0 1px rgba(0,0,0,0.35);
    }
    .city-name {
      font-size: var(--font);
      line-height: 1;
      color: rgba(255,255,255,0.92);
      font-weight: 400;
      text-shadow: 0 1px 2px rgba(0,0,0,0.85);
    }
    .city-capital .city-dot {
      background: rgba(255,40,40,0.98);
      border-radius: 2px;
      transform: none;
      box-shadow: 0 0 0 1px rgba(0,0,0,0.45);
    }
    .city-capital .city-name {
      color: rgba(255,230,230,0.98);
      font-weight: 700;
    }
    .city-small .city-name {
      font-weight: 300;
    }
    .city-airport-major .city-dot {
      background: rgba(255,40,40,0.98);
      border: 2px solid rgba(255,255,255,0.95);
      border-radius: 2px;
      box-shadow: 0 2px 6px rgba(0,0,0,0.25);
    }
    .city-airport-major .city-name {
      color: rgba(255,255,255,0.96);
      font-weight: 650;
    }
    .city-label-wrap.city-flydubai .city-dot {
      background: #6c3a00;
      border-radius: 0;
      border: none;
      box-shadow: none;
    }
    .city-label-wrap.city-capital.city-flydubai .city-dot,
    .city-label-wrap.city-airport-major.city-flydubai .city-dot {
      background: #6c3a00;
      border-radius: 0;
      border: none;
      box-shadow: none;
    }
    .city-flydubai .city-name {
      color: rgba(255,240,215,0.98);
      font-weight: 400;
    }
    .city-capital.city-flydubai .city-name {
      font-weight: 700;
    }

    /* Bearing indicator (top-left) */
    #bearing-indicator {
      position: absolute;
      top: 74px; /* topbar(54px) + extra gap for arrow */
      left: 12px;
      z-index: 1250;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 6px;
      pointer-events: none;
      user-select: none;
      cursor: default;
    }
    .bearing-circle {
      width: 38px;
      height: 38px;
      border: 2px solid #ff2b2b;
      border-radius: 50%;
      background: transparent;
      display: flex;
      align-items: center;
      justify-content: center;
      position: relative;
      box-shadow: 0 2px 10px rgba(0,0,0,0.25);
      transform: rotate(var(--bearing-rot, 0deg));
      transition: transform 0.15s linear;
    }
    .bearing-circle::before {
      content: "";
      position: absolute;
      top: -10px;
      left: 50%;
      transform: translateX(-50%);
      width: 0;
      height: 0;
      border-left: 7px solid transparent;
      border-right: 7px solid transparent;
      border-bottom: 11px solid #ff2b2b; /* north arrow */
      filter: drop-shadow(0 1px 2px rgba(0,0,0,0.35));
    }
    .bearing-n {
      color: #ff2b2b;
      font-weight: 900;
      font-size: 16px;
      line-height: 1;
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      text-shadow: 0 1px 2px rgba(0,0,0,0.55);
    }
    #zoom-debug {
      position: absolute;
      top: 122px;
      left: 12px;
      z-index: 1250;
      padding: 4px 8px;
      border-radius: 6px;
      background: rgba(0, 0, 0, 0.55);
      color: #fff;
      font-size: 13px;
      font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
      pointer-events: none;
      user-select: none;
      letter-spacing: 0.2px;
      display: none;
    }

    /* 異쒕룄李⑹? ?댄똻: ??湲??寃? ?ㅺ낸, 諛뺤뒪/?붿궡???쒓굅 */
    .dep-dest-tooltip {
      background: transparent;
      color: #fff;
      border: none;
      padding: 2px 6px;
      border-radius: 0;
      box-shadow: none;
      font-size: 19px; /* 25% ?뺣? */
      font-weight: 600;
      text-shadow:
        -1px -1px 0 #000,
        1px -1px 0 #000,
        -1px 1px 0 #000,
        1px 1px 0 #000,
        0 0 4px #000;
    }
    .dep-dest-tooltip.leaflet-tooltip-right::before,
    .leaflet-tooltip.dep-dest-tooltip.leaflet-tooltip-right::before {
      display: none;
    }
    .dep-dest-tooltip.leaflet-tooltip-left::before,
    .leaflet-tooltip.dep-dest-tooltip.leaflet-tooltip-left::before {
      display: none;
    }
    .dep-dest-tooltip.leaflet-tooltip-top::before,
    .leaflet-tooltip.dep-dest-tooltip.leaflet-tooltip-top::before {
      display: none;
    }
    .dep-dest-tooltip.leaflet-tooltip-bottom::before,
    .leaflet-tooltip.dep-dest-tooltip.leaflet-tooltip-bottom::before {
      display: none;
    }

    /* 異쒕컻/?꾩갑 ?꾩씠肄?(?뚯쟾?섎뒗 4諛⑺뼢 ?ш컖?? */
    .airport-marker {
      width: 26px;
      height: 26px;
      --ring-radius: 13px;
      --spoke-w: 4px;
      --spoke-h: 8px;
      --spoke-offset: -16px;
      position: relative;
      filter: drop-shadow(0 0 2px rgba(0,0,0,0.5));
      opacity: 0.8;
      animation: airportGlow 2.8s ease-in-out infinite;
    }
    .airport-marker .core-svg {
      position: absolute;
      inset: 3px;
      width: calc(100% - 6px);
      height: calc(100% - 6px);
      display: block;
      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.45));
    }
    .airport-marker .arcs {
      position: absolute;
      inset: -6px;
      border-radius: 50%;
      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.45));
      background: conic-gradient(
        from 0deg,
        currentColor 0 84deg,
        transparent 84deg 120deg,
        currentColor 120deg 204deg,
        transparent 204deg 240deg,
        currentColor 240deg 324deg,
        transparent 324deg 360deg
      );
      -webkit-mask: radial-gradient(closest-side, transparent 60%, #000 62%, #000 79%, transparent 81%);
      mask: radial-gradient(closest-side, transparent 60%, #000 62%, #000 79%, transparent 81%);
      animation: spin 10s linear infinite;
      transform-origin: center;
    }
    body.airport-anim-paused .airport-marker .arcs {
      animation-play-state: paused;
    }
    .airport-marker.dep { color: #B5E61D; }
    .airport-marker.dest { color: #FFFF00; }
    @keyframes spin {
      from { transform: rotate(0deg); }
      to { transform: rotate(360deg); }
    }
    @keyframes airportGlow {
      0%, 100% {
        filter: drop-shadow(0 0 3px rgba(0,0,0,0.5)) drop-shadow(0 0 14px rgba(181,230,29,0.7)) drop-shadow(0 0 28px rgba(181,230,29,0.45));
      }
      50% {
        filter: drop-shadow(0 0 3px rgba(0,0,0,0.5)) drop-shadow(0 0 22px rgba(181,230,29,0.95)) drop-shadow(0 0 40px rgba(181,230,29,0.65));
      }
    }

    .leaflet-marker-icon:not(.plane-marker) {
      transform: scale(1.5);
      transform-origin: center bottom;
    }

    /* 鍮꾪뻾湲?留덉빱???щ챸 諛곌꼍 + 以묒븰 ?뚯쟾 湲곗? ?좎? */
    .plane-marker {
      transform-origin: center center !important;
      background: transparent !important;
      border: none !important;
      box-shadow: none !important;
    }

    /* 鍮꾪뻾湲??꾩씠肄??대?吏瑜??ъ슜 */
    .plane-img {
      width: 47px;
      height: 47px;
      object-fit: contain;
      display: block;
      filter: drop-shadow(0 0 2px #000) drop-shadow(0 0 4px #000);
    }

    .explore-flight-dot {
      width: 12px;
      height: 12px;
      border-radius: 50%;
      background: rgba(240, 240, 255, 0.8);
      border: 1px solid rgba(20, 20, 20, 0.5);
      box-shadow: 0 0 0 2px rgba(255,255,255,0.15);
    }
    .explore-flight-dot.selected {
      width: 14px;
      height: 14px;
      background: #ffdf5a;
      border-color: rgba(0,0,0,0.7);
      box-shadow: 0 0 0 3px rgba(255,223,90,0.25);
    }

  


