/* A decorative flight over the unchanged, full-frame photograph. */
.drone-flight-scene { position: relative; display: grid; grid-template-columns: inherit; gap: inherit; grid-column: 1 / -1; min-width: 0; isolation: isolate; }
.drone-flight-stage { position: relative; display: block; width: 100%; overflow: hidden; overflow: clip; border-radius: 12px; isolation: isolate; }
.drone-flight-stage:focus-visible { outline: 2px solid var(--clay); outline-offset: 4px; }
.drone-flight-stage > img { display: block; width: 100%; height: auto; border-radius: 0; }
.drone-flight-cloud-patch, .drone-flight-aircraft { display: none; position: absolute; pointer-events: none; user-select: none; }
.drone-flight-field { display: none; position: absolute; left: 0; top: 0; width: 0; height: 0; max-width: 100%; overflow: hidden; overflow: clip; z-index: 3; pointer-events: none; user-select: none; }
.drone-flight-field * { pointer-events: none; }
.drone-flight-cloud-patch { z-index: 1; left: 33.5%; top: 19%; width: 9%; aspect-ratio: 1; background-image: url('../images/systems/drone-norway-2025.jpg'); background-repeat: no-repeat; background-size: 1111.111111% 1111.111111%; background-position: 46.703297% 20.879121%; border-radius: 50%; -webkit-mask-image: radial-gradient(ellipse at center, #000 45%, rgba(0, 0, 0, .9) 55%, transparent 71%); mask-image: radial-gradient(ellipse at center, #000 45%, rgba(0, 0, 0, .9) 55%, transparent 71%); }
.drone-flight-aircraft { z-index: 2; inset: 0; animation: drone-flight-orbit 16s linear infinite; }
.drone-flight-body { position: absolute; top: 0; left: 0; display: block; width: var(--drone-body-width, 0px); overflow: visible; transform-origin: 50% 50%; animation: drone-flight-approach 16s linear infinite; filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .16)); }
.drone-flight-body > img { display: block; width: 100%; height: auto; border-radius: 0; }
.drone-flight-rotor { position: absolute; z-index: 1; top: var(--rotor-y, 50%); left: var(--rotor-x, 50%); display: block; width: var(--rotor-w, 24%); aspect-ratio: 1; transform: translate(-50%, -50%) scaleY(.3); transform-origin: center; }
.drone-flight-blades { position: relative; display: block; width: 100%; height: 100%; border-radius: 50%; background: radial-gradient(ellipse, rgba(72, 79, 82, .03) 35%, rgba(72, 79, 82, .13) 60%, transparent 72%); animation: drone-flight-rotor-spin 75ms linear infinite; }
.drone-flight-blades::before, .drone-flight-blades::after { position: absolute; top: 45%; left: 0; display: block; width: 100%; height: 10%; border-radius: 50%; background: linear-gradient(90deg, rgba(36, 43, 47, .12), rgba(45, 52, 55, .65) 25%, rgba(132, 140, 143, .82) 47%, rgba(132, 140, 143, .82) 53%, rgba(45, 52, 55, .65) 75%, rgba(36, 43, 47, .12)); content: ''; }
.drone-flight-blades::after { opacity: .3; transform: rotate(28deg); }
.drone-flight-rotor:nth-of-type(2n) .drone-flight-blades { animation-direction: reverse; animation-delay: -25ms; }
.drone-flight-stage.is-flight-enabled .drone-flight-cloud-patch, .drone-flight-scene.is-flight-enabled .drone-flight-field, .drone-flight-scene.is-flight-enabled .drone-flight-aircraft { display: block; }
.drone-flight-aircraft, .drone-flight-body, .drone-flight-blades { animation-play-state: paused; }
.drone-flight-scene.is-flight-running .drone-flight-aircraft, .drone-flight-scene.is-flight-running .drone-flight-body, .drone-flight-scene.is-flight-running .drone-flight-blades { animation-play-state: running; }
.drone-flight-scene.is-flight-running .drone-flight-aircraft, .drone-flight-scene.is-flight-running .drone-flight-body { will-change: transform; }
@keyframes drone-flight-orbit {
  0% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * 0 + var(--drone-x-sin) * 0), calc(var(--drone-origin-y) + var(--drone-y-cos) * 0 + var(--drone-y-sin) * 0)); }
  3.125% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.0192147 + var(--drone-x-sin) * 0.1950903), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.0192147 + var(--drone-y-sin) * 0.1950903)); }
  6.25% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.0761205 + var(--drone-x-sin) * 0.3826834), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.0761205 + var(--drone-y-sin) * 0.3826834)); }
  9.375% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.1685304 + var(--drone-x-sin) * 0.5555702), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.1685304 + var(--drone-y-sin) * 0.5555702)); }
  12.5% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.2928932 + var(--drone-x-sin) * 0.7071068), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.2928932 + var(--drone-y-sin) * 0.7071068)); }
  15.625% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.4444298 + var(--drone-x-sin) * 0.8314696), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.4444298 + var(--drone-y-sin) * 0.8314696)); }
  18.75% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.6173166 + var(--drone-x-sin) * 0.9238795), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.6173166 + var(--drone-y-sin) * 0.9238795)); }
  21.875% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.8049097 + var(--drone-x-sin) * 0.9807853), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.8049097 + var(--drone-y-sin) * 0.9807853)); }
  25% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1 + var(--drone-x-sin) * 1), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1 + var(--drone-y-sin) * 1)); }
  28.125% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.1950903 + var(--drone-x-sin) * 0.9807853), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.1950903 + var(--drone-y-sin) * 0.9807853)); }
  31.25% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.3826834 + var(--drone-x-sin) * 0.9238795), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.3826834 + var(--drone-y-sin) * 0.9238795)); }
  34.375% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.5555702 + var(--drone-x-sin) * 0.8314696), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.5555702 + var(--drone-y-sin) * 0.8314696)); }
  37.5% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.7071068 + var(--drone-x-sin) * 0.7071068), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.7071068 + var(--drone-y-sin) * 0.7071068)); }
  40.625% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.8314696 + var(--drone-x-sin) * 0.5555702), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.8314696 + var(--drone-y-sin) * 0.5555702)); }
  43.75% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.9238795 + var(--drone-x-sin) * 0.3826834), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.9238795 + var(--drone-y-sin) * 0.3826834)); }
  46.875% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.9807853 + var(--drone-x-sin) * 0.1950903), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.9807853 + var(--drone-y-sin) * 0.1950903)); }
  50% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -2 + var(--drone-x-sin) * 0), calc(var(--drone-origin-y) + var(--drone-y-cos) * -2 + var(--drone-y-sin) * 0)); }
  53.125% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.9807853 + var(--drone-x-sin) * -0.1950903), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.9807853 + var(--drone-y-sin) * -0.1950903)); }
  56.25% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.9238795 + var(--drone-x-sin) * -0.3826834), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.9238795 + var(--drone-y-sin) * -0.3826834)); }
  59.375% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.8314696 + var(--drone-x-sin) * -0.5555702), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.8314696 + var(--drone-y-sin) * -0.5555702)); }
  62.5% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.7071068 + var(--drone-x-sin) * -0.7071068), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.7071068 + var(--drone-y-sin) * -0.7071068)); }
  65.625% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.5555702 + var(--drone-x-sin) * -0.8314696), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.5555702 + var(--drone-y-sin) * -0.8314696)); }
  68.75% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.3826834 + var(--drone-x-sin) * -0.9238795), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.3826834 + var(--drone-y-sin) * -0.9238795)); }
  71.875% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1.1950903 + var(--drone-x-sin) * -0.9807853), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1.1950903 + var(--drone-y-sin) * -0.9807853)); }
  75% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -1 + var(--drone-x-sin) * -1), calc(var(--drone-origin-y) + var(--drone-y-cos) * -1 + var(--drone-y-sin) * -1)); }
  78.125% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.8049097 + var(--drone-x-sin) * -0.9807853), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.8049097 + var(--drone-y-sin) * -0.9807853)); }
  81.25% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.6173166 + var(--drone-x-sin) * -0.9238795), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.6173166 + var(--drone-y-sin) * -0.9238795)); }
  84.375% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.4444298 + var(--drone-x-sin) * -0.8314696), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.4444298 + var(--drone-y-sin) * -0.8314696)); }
  87.5% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.2928932 + var(--drone-x-sin) * -0.7071068), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.2928932 + var(--drone-y-sin) * -0.7071068)); }
  90.625% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.1685304 + var(--drone-x-sin) * -0.5555702), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.1685304 + var(--drone-y-sin) * -0.5555702)); }
  93.75% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.0761205 + var(--drone-x-sin) * -0.3826834), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.0761205 + var(--drone-y-sin) * -0.3826834)); }
  96.875% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * -0.0192147 + var(--drone-x-sin) * -0.1950903), calc(var(--drone-origin-y) + var(--drone-y-cos) * -0.0192147 + var(--drone-y-sin) * -0.1950903)); }
  100% { transform: translate(calc(var(--drone-origin-x) + var(--drone-x-cos) * 0 + var(--drone-x-sin) * 0), calc(var(--drone-origin-y) + var(--drone-y-cos) * 0 + var(--drone-y-sin) * 0)); }
}
@keyframes drone-flight-approach {
  0% { transform: translate(-50%, -50%) scale(0.224138) rotate(0.0000deg); }
  3.125% { transform: translate(-50%, -50%) scale(0.231592) rotate(1.5607deg); }
  6.25% { transform: translate(-50%, -50%) scale(0.253667) rotate(3.0615deg); }
  9.375% { transform: translate(-50%, -50%) scale(0.289516) rotate(4.4446deg); }
  12.5% { transform: translate(-50%, -50%) scale(0.337760) rotate(5.6569deg); }
  15.625% { transform: translate(-50%, -50%) scale(0.396546) rotate(6.6518deg); }
  18.75% { transform: translate(-50%, -50%) scale(0.463614) rotate(7.3910deg); }
  21.875% { transform: translate(-50%, -50%) scale(0.536387) rotate(7.8463deg); }
  25% { transform: translate(-50%, -50%) scale(0.612069) rotate(8.0000deg); }
  28.125% { transform: translate(-50%, -50%) scale(0.687751) rotate(7.8463deg); }
  31.25% { transform: translate(-50%, -50%) scale(0.760524) rotate(7.3910deg); }
  34.375% { transform: translate(-50%, -50%) scale(0.827592) rotate(6.6518deg); }
  37.5% { transform: translate(-50%, -50%) scale(0.886378) rotate(5.6569deg); }
  40.625% { transform: translate(-50%, -50%) scale(0.934622) rotate(4.4446deg); }
  43.75% { transform: translate(-50%, -50%) scale(0.970471) rotate(3.0615deg); }
  46.875% { transform: translate(-50%, -50%) scale(0.992546) rotate(1.5607deg); }
  50% { transform: translate(-50%, -50%) scale(1.000000) rotate(0.0000deg); }
  53.125% { transform: translate(-50%, -50%) scale(0.992546) rotate(-1.5607deg); }
  56.25% { transform: translate(-50%, -50%) scale(0.970471) rotate(-3.0615deg); }
  59.375% { transform: translate(-50%, -50%) scale(0.934622) rotate(-4.4446deg); }
  62.5% { transform: translate(-50%, -50%) scale(0.886378) rotate(-5.6569deg); }
  65.625% { transform: translate(-50%, -50%) scale(0.827592) rotate(-6.6518deg); }
  68.75% { transform: translate(-50%, -50%) scale(0.760524) rotate(-7.3910deg); }
  71.875% { transform: translate(-50%, -50%) scale(0.687751) rotate(-7.8463deg); }
  75% { transform: translate(-50%, -50%) scale(0.612069) rotate(-8.0000deg); }
  78.125% { transform: translate(-50%, -50%) scale(0.536387) rotate(-7.8463deg); }
  81.25% { transform: translate(-50%, -50%) scale(0.463614) rotate(-7.3910deg); }
  84.375% { transform: translate(-50%, -50%) scale(0.396546) rotate(-6.6518deg); }
  87.5% { transform: translate(-50%, -50%) scale(0.337760) rotate(-5.6569deg); }
  90.625% { transform: translate(-50%, -50%) scale(0.289516) rotate(-4.4446deg); }
  93.75% { transform: translate(-50%, -50%) scale(0.253667) rotate(-3.0615deg); }
  96.875% { transform: translate(-50%, -50%) scale(0.231592) rotate(-1.5607deg); }
  100% { transform: translate(-50%, -50%) scale(0.224138) rotate(-0.0000deg); }
}
@keyframes drone-flight-rotor-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .drone-flight-stage.is-flight-enabled .drone-flight-cloud-patch, .drone-flight-scene.is-flight-enabled .drone-flight-field { display: none; }
  .drone-flight-aircraft, .drone-flight-body, .drone-flight-blades { animation: none; }
}
