/* ============================================================
   NOVIX AIR — SİNEMATİK MASKE GEÇİŞİ (transition.css)
   Tek kaynak: tüm sayfalarda aynı maske. Eşi: transition.js
   Konsept: AE tarzı TEK PARÇA maske süpürmesi (alt → üst → üstten çıkış)
   - Opaklık/fade YOK: yalnız GPU translateY + kavis scaleY.
   - Kapanışta öncü kenar kavislidir, varışta düzleşir;
     kalkışta alt kenar kavis bırakarak üstten çıkar.
   - Maske içindeki kuş amblemi hafif gecikmeli süzülür (atalet)
     ve kapanış sırasında stroke ile çizilir.
   - Alt sayfalarda maske CSS ile İLK BOYADAN ÖNCE kapalı gelir
     (beyaz flaş imkânsız); transition.js hazır olunca devam ettirir.
   - index.html data-entry="off": girişte devre dışı (splash var).
   ============================================================ */

/* i18n flaş perdesi body'yi gizlerken zemin beyaz kalmasın */
html { background: #05070b; }

#nx-veil {
  position: fixed; inset: 0; z-index: 105;
  visibility: visible; pointer-events: all;
}

/* ---------- maske: tek parça CAM panel (navbar diliyle aynı) ---------- */
#nx-veil .vmask {
  position: absolute; inset: 0;
  background: rgba(7, 9, 14, .9); /* backdrop-filter'sız tarayıcı yedeği */
  transform: translateY(0) translateZ(0); will-change: transform;
  display: grid; place-items: center;
}

/* kavisli uçlar: maskeyle birlikte hareket eder, scaleY ile şişer/düzleşir */
#nx-veil .vcap {
  position: absolute; left: -4vw; right: -4vw; height: 9vh;
  background: rgba(7, 9, 14, .9); will-change: transform;
}
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  #nx-veil .vmask, #nx-veil .vcap {
    background: rgba(7, 9, 14, .66);
    -webkit-backdrop-filter: blur(18px) saturate(150%);
    backdrop-filter: blur(18px) saturate(150%);
  }
}
#nx-veil .vcap-top {
  top: calc(-9vh + 1px);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  border-top: 1px solid rgba(163, 194, 238, .16); /* cam kenar çizgisi */
  transform-origin: 50% 100%; transform: scaleY(0);
}
#nx-veil .vcap-bot {
  bottom: calc(-9vh + 1px);
  border-radius: 0 0 50% 50% / 0 0 100% 100%;
  border-bottom: 1px solid rgba(163, 194, 238, .16);
  transform-origin: 50% 0%; transform: scaleY(0);
}

/* ---------- GİRİŞ: maske yukarı devam eder, üstten çıkar ---------- */
#nx-veil.lift {
  visibility: hidden; pointer-events: none;
  transition: visibility 0s linear .6s;
}
#nx-veil.lift .vmask {
  transform: translateY(-102%) translateZ(0);
  transition: transform .56s cubic-bezier(.64, .03, .22, 1);
}
/* çıkarken alt kenar kavis bırakır (iz) */
#nx-veil.lift .vcap-bot {
  transform: scaleY(1);
  transition: transform .34s cubic-bezier(.5, 0, .55, 1);
}
/* kuş maskenin çıkışına hafif geriden eşlik eder (atalet) */
#nx-veil.lift .vbird {
  transform: translateY(7vh);
  transition: transform .56s cubic-bezier(.6, .04, .22, 1);
}

/* ---------- ÇIKIŞ: maske alttan girer, ekranı örter ---------- */
#nx-veil.cover { visibility: visible; pointer-events: all; }
#nx-veil.cover .vmask { animation: nx-mask-in .52s cubic-bezier(.72, .04, .26, 1) both; }
@keyframes nx-mask-in {
  from { transform: translateY(102%) translateZ(0); }
  to   { transform: translateY(0) translateZ(0); }
}
/* öncü üst kenar: yol boyunca kavisli, varışta düzleşir */
#nx-veil.cover .vcap-top { animation: nx-cap-in .52s cubic-bezier(.72, .04, .26, 1) both; }
@keyframes nx-cap-in {
  0%   { transform: scaleY(1); }
  55%  { transform: scaleY(1); }
  100% { transform: scaleY(0); }
}
/* kuş içeride geriden gelir, merkeze oturur (atalet) */
#nx-veil.cover .vbird { animation: nx-bird-in .52s cubic-bezier(.5, .06, .16, 1) both; }
@keyframes nx-bird-in {
  from { transform: translateY(20vh); }
  to   { transform: translateY(0); }
}

/* bfcache/sigorta: animasyonsuz anında kaldırma */
#nx-veil.instant, #nx-veil.instant * { transition: none !important; animation: none !important; }

/* index.html: girişte görünmez, yalnız .cover ile devreye girer */
#nx-veil[data-entry="off"]:not(.cover) { visibility: hidden; pointer-events: none; }

/* ---------- kuş amblemi ---------- */
#nx-veil .vbird {
  width: clamp(84px, 10vw, 132px); height: auto; display: block; will-change: transform;
  filter: drop-shadow(0 8px 28px rgba(3, 6, 12, .55)); /* cam üstünde ayrışma */
}

/* varsayılan (giriş/bekleme hâli): çizilmiş ve dolu — çıkışta çizilen
   kuş yeni sayfada aynı konumda dolu hâlde sürer; tek sahne okunur */
#nx-veil .vbird path {
  stroke: #b9d3f2; stroke-width: 3.5;
  stroke-dasharray: 1; stroke-dashoffset: 0;
  fill: url(#nx-veil-grad); fill-opacity: 1;
}

/* kapanışta: maske yol alırken stroke uçtan uca çizilir, dolgu belirir;
   ~.5s'te bütünlenir — yönlenme anında kuş tam, giriş hâliyle örtüşür */
#nx-veil.cover .vbird path {
  animation: nx-veil-draw .42s cubic-bezier(.62, 0, .28, 1) .08s both;
}
@keyframes nx-veil-draw {
  0%   { stroke-dashoffset: 1; fill-opacity: 0; }
  62%  { stroke-dashoffset: 0; fill-opacity: 0; }
  100% { stroke-dashoffset: 0; fill-opacity: 1; }
}

/* NOT: prefers-reduced-motion kuralı BİLEREK yok — bu projede Windows
   "animasyon efektleri kapalı" kullanıcılarında sinematik geçişin
   iptal olmaması site kararıdır (bkz. 2026-07 animasyon revizyonu). */
