.corridor-map {
  min-height: 470px;
  background:
    radial-gradient(circle at 28% 18%, oklch(99% 0.006 95 / 0.95), transparent 16rem),
    linear-gradient(145deg, var(--bd-bone-40), var(--bd-sea-180));
  isolation: isolate;
}

.corridor-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.corridor-paper { fill: oklch(96.8% 0.012 96); }
.corridor-sea { fill: oklch(84% 0.038 202 / 0.72); }
.corridor-land { fill: oklch(90.8% 0.025 116 / 0.94); stroke: oklch(74% 0.028 120 / 0.64); stroke-width: 1.4; }
.corridor-tn { fill: oklch(89% 0.032 86 / 0.96); }

.corridor-route {
  fill: none;
  stroke: var(--bd-gold-520);
  stroke-width: 4.2;
  stroke-linecap: round;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  filter: drop-shadow(0 0.35rem 0.65rem oklch(62% 0.095 76 / 0.22));
  animation: corridor-draw 5.8s var(--bd-ease) infinite;
}

.route-berlin { animation-delay: 0.42s; stroke-width: 3.4; opacity: 0.82; }
.route-glow { stroke: oklch(92% 0.04 82 / 0.78); stroke-width: 1.2; animation-delay: 0.18s; }

.corridor-nodes circle {
  fill: var(--bd-bone-40);
  stroke: var(--bd-gold-520);
  stroke-width: 5;
  transform-origin: center;
  animation: corridor-pulse 2.8s var(--bd-ease) infinite;
}

.corridor-nodes circle:nth-child(2) { animation-delay: 0.36s; }
.corridor-nodes circle:nth-child(3) { animation-delay: 0.72s; stroke: var(--bd-pine-700); }

.corridor-plane {
  fill: var(--bd-pine-820);
  filter: drop-shadow(0 0.55rem 0.8rem oklch(28% 0.03 150 / 0.2));
  transform-box: fill-box;
  transform-origin: center;
  offset-path: path("M278 154 C398 224 502 324 626 446");
  animation: corridor-plane 5.8s var(--bd-ease) infinite;
}

.corridor-map .label-paris { --x: 26%; --y: 20%; }
.corridor-map .label-berlin { --x: 42%; --y: 14%; }

@keyframes corridor-draw {
  0% { stroke-dashoffset: 1; opacity: 0.18; }
  18%, 66% { stroke-dashoffset: 0; opacity: 1; }
  100% { stroke-dashoffset: 0; opacity: 0.34; }
}

@keyframes corridor-pulse {
  0%, 100% { transform: scale(1); opacity: 0.82; }
  46% { transform: scale(1.28); opacity: 1; }
}

@keyframes corridor-plane {
  0% { offset-distance: 0%; opacity: 0; }
  16% { opacity: 1; }
  58% { offset-distance: 100%; opacity: 1; }
  72%, 100% { offset-distance: 100%; opacity: 0; }
}

@media (max-width: 860px) {
  .corridor-map .label-paris { --x: 34%; --y: 15%; }
  .corridor-map .label-berlin { --x: 55%; --y: 19%; }
}

@media (max-width: 520px) {
  .corridor-map { min-height: 540px; }
  .corridor-map .label-paris { --x: 38%; --y: 13%; }
  .corridor-map .label-berlin { --x: 58%; --y: 19%; }
}

@media (prefers-reduced-motion: reduce) {
  .corridor-route { stroke-dashoffset: 0; animation: none !important; }
  .corridor-nodes circle, .corridor-plane { animation: none !important; }
  .corridor-plane { opacity: 1; offset-distance: 58%; }
}
