/* XyloFit tanıtım sitesi — ortak stil.
 *
 * Renkler mobil uygulamadaki AppTheme ile birebir aynı (lib/core/theme/
 * app_theme.dart). Kullanıcı mağazadan siteye ya da siteden uygulamaya
 * geçtiğinde aynı ürünün içinde olduğunu hissetmeli.
 *
 * İki tema var. Varsayılan koyu; açık tema <html data-theme="light"> ile
 * ya da (seçim yapılmamışsa) sistemin açık tema tercihiyle devreye girer.
 * Tema kararı ilk boyamadan önce her sayfanın <head>'indeki satır içi
 * betikte veriliyor; site.js yalnızca düğmeyi bağlar. Renk kullanan her
 * kural yalnızca aşağıdaki değişkenlere bakmalı — kurala doğrudan rgba
 * yazılırsa açık temada koyu leke olarak kalır.
 *
 * Yazı tipi bilerek sistem yığını: Google Fonts eklemek her ziyarette
 * Google'a istek atar, bunu gizlilik politikasında ayrıca beyan etmek
 * gerekirdi ve ilk boyamayı geciktirirdi.
 */

:root {
  --bg: #0A0A0F;
  --surface: #13131A;
  --surface-2: #1C1C26;
  --border: #2A2A38;
  --text: #FFFFFF;
  --dim: #9898A8;
  --hint: #55555F;

  --primary: #6C63FF;
  --primary-light: #9C95FF;
  --accent: #00D4AA;
  --danger: #FF4757;
  --warning: #FFA502;
  --success: #2ED573;

  /* Metin olarak kullanılan marka renkleri. Koyu zeminde vurgu renkleri
     olduğu gibi okunuyor; açık zeminde aynı tonlar soluk kalır, aşağıda
     koyultuluyor. Bağlantı, başlık gradyanı ve etiket bunları kullanır. */
  --link: var(--primary-light);
  --accent-text: var(--accent);
  --grad-text: linear-gradient(100deg, var(--primary-light) 10%, var(--accent) 70%);

  /* Yarı saydam yüzeyler. Koyu temada beyazın, açıkta siyahın soluk katmanı */
  --glass: rgba(255, 255, 255, .05);
  --glass-weak: rgba(255, 255, 255, .03);
  --glass-hover: rgba(255, 255, 255, .09);
  --border-strong: #3A3A4C;
  --card: rgba(19, 19, 26, .7);
  --card-hover: rgba(28, 28, 38, .8);
  --card-hover-border: #38384C;
  --card-soft: rgba(19, 19, 26, .6);
  --panel: rgba(19, 19, 26, .82);
  --panel-solid: rgba(19, 19, 26, .88);
  --header-bg: rgba(10, 10, 15, .78);
  --nav-bg: rgba(13, 13, 19, .97);
  --footer-bg: rgba(10, 10, 15, .6);

  /* Gölgeler: açık zeminde siyah gölge çamur gibi durur, hafifletiliyor */
  --shadow-strong: rgba(0, 0, 0, .6);
  --shadow: rgba(0, 0, 0, .45);
  --shadow-soft: rgba(0, 0, 0, .5);
  --aurora-opacity: .5;

  --grad: linear-gradient(135deg, var(--primary), var(--accent));
  --radius: 20px;
  --radius-sm: 12px;
  --maxw: 1140px;
  --header-h: 68px;

  --ease: cubic-bezier(.22, 1, .36, 1);
  --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

/* ------------------------------------------------------------ Açık tema
   Değerler AppTheme'in *Light sabitleriyle aynı. Aynı blok iki yerde:
   önce sistem tercihi (kullanıcı seçim yapmamışsa), sonra açık seçim. */
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) {
    --bg: #F8F9FD;
    --surface: #FFFFFF;
    --surface-2: #F0F2F8;
    --border: #E2E8F0;
    --text: #1A1A2E;
    --dim: #64748B;
    --hint: #9AA3B2;

    --link: #5B52E8;
    --accent-text: #00A383;
    --grad-text: linear-gradient(100deg, #5B52E8 10%, #00A383 70%);

    --glass: rgba(26, 26, 46, .05);
    --glass-weak: rgba(26, 26, 46, .03);
    --glass-hover: rgba(26, 26, 46, .09);
    --border-strong: #CBD3E1;
    --card: rgba(255, 255, 255, .78);
    --card-hover: rgba(255, 255, 255, .95);
    --card-hover-border: #CBD3E1;
    --card-soft: rgba(255, 255, 255, .7);
    --panel: rgba(255, 255, 255, .85);
    --panel-solid: rgba(255, 255, 255, .92);
    --header-bg: rgba(248, 249, 253, .82);
    --nav-bg: rgba(248, 249, 253, .97);
    --footer-bg: rgba(240, 242, 248, .7);

    --shadow-strong: rgba(26, 26, 46, .22);
    --shadow: rgba(26, 26, 46, .14);
    --shadow-soft: rgba(26, 26, 46, .16);
    --aurora-opacity: .32;
  }
}
:root[data-theme="light"] {
  --bg: #F8F9FD;
  --surface: #FFFFFF;
  --surface-2: #F0F2F8;
  --border: #E2E8F0;
  --text: #1A1A2E;
  --dim: #64748B;
  --hint: #9AA3B2;

  --link: #5B52E8;
  --accent-text: #00A383;
  --grad-text: linear-gradient(100deg, #5B52E8 10%, #00A383 70%);

  --glass: rgba(26, 26, 46, .05);
  --glass-weak: rgba(26, 26, 46, .03);
  --glass-hover: rgba(26, 26, 46, .09);
  --border-strong: #CBD3E1;
  --card: rgba(255, 255, 255, .78);
  --card-hover: rgba(255, 255, 255, .95);
  --card-hover-border: #CBD3E1;
  --card-soft: rgba(255, 255, 255, .7);
  --panel: rgba(255, 255, 255, .85);
  --panel-solid: rgba(255, 255, 255, .92);
  --header-bg: rgba(248, 249, 253, .82);
  --nav-bg: rgba(248, 249, 253, .97);
  --footer-bg: rgba(240, 242, 248, .7);

  --shadow-strong: rgba(26, 26, 46, .22);
  --shadow: rgba(26, 26, 46, .14);
  --shadow-soft: rgba(26, 26, 46, .16);
  --aurora-opacity: .32;
}

* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  /* Sabit başlık, bağlantıyla atlanan bölümün başlığını kesmesin */
  scroll-padding-top: calc(var(--header-h) + 16px);
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  color-scheme: dark;
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  transition: background .3s var(--ease), color .3s var(--ease);
}
/* Kaydırma çubuğu, <select> açılır listesi gibi tarayıcı çizimli parçalar
   temayı bilsin */
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) body { color-scheme: light; }
}
:root[data-theme="light"] body { color-scheme: light; }

/* height:auto şart. Görsellerde düzen kaymasını önlemek için width/height
   nitelikleri veriliyor; CSS yalnızca genişliği ezerse yükseklik nitelikteki
   piksel değerinde çakılı kalır ve görsel dikey olarak gerilir. Telefon
   ekranları bu yüzden iki katı uzun görünüyordu. */
img { max-width: 100%; height: auto; display: block; }
a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; }

/* Klavye kullanıcısı odağı görebilsin; fare tıklamasında halka çıkmasın */
:focus-visible {
  outline: 2px solid var(--link);
  outline-offset: 3px;
  border-radius: 6px;
}

.wrap {
  width: 100%;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 24px;
}

.skip-link {
  position: absolute; left: -9999px; top: 8px; z-index: 100;
  background: var(--primary); color: #fff; padding: 10px 16px; border-radius: 10px;
}
.skip-link:focus { left: 16px; }

/* ---------------------------------------------------------------- Aurora
   Sayfanın arkasında yavaşça sürüklenen renk lekeleri. position:fixed —
   kaydırırken yeniden boyanmasınlar diye; will-change ile GPU katmanında. */
.aurora {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}
.aurora span {
  position: absolute;
  border-radius: 50%;
  filter: blur(90px);
  opacity: var(--aurora-opacity);
  will-change: transform;
}
.aurora .a1 {
  width: 620px; height: 620px; top: -220px; left: -160px;
  background: radial-gradient(circle, rgba(108, 99, 255, .55), transparent 70%);
  animation: drift-a 26s var(--ease) infinite alternate;
}
.aurora .a2 {
  width: 540px; height: 540px; top: 18%; right: -200px;
  background: radial-gradient(circle, rgba(0, 212, 170, .42), transparent 70%);
  animation: drift-b 32s var(--ease) infinite alternate;
}
.aurora .a3 {
  width: 700px; height: 700px; bottom: -300px; left: 30%;
  background: radial-gradient(circle, rgba(156, 149, 255, .30), transparent 70%);
  animation: drift-c 38s var(--ease) infinite alternate;
}
@keyframes drift-a { to { transform: translate3d(120px, 90px, 0) scale(1.15); } }
@keyframes drift-b { to { transform: translate3d(-140px, 120px, 0) scale(1.2); } }
@keyframes drift-c { to { transform: translate3d(90px, -110px, 0) scale(1.1); } }

/* --------------------------------------------------------------- Başlık */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  height: var(--header-h);
  display: flex;
  align-items: center;
  border-bottom: 1px solid transparent;
  transition: background .3s var(--ease), border-color .3s var(--ease), backdrop-filter .3s;
}
.site-header.is-scrolled {
  background: var(--header-bg);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom-color: var(--border);
}
.site-header .wrap {
  display: flex;
  align-items: center;
  gap: 16px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
  font-size: 19px;
  letter-spacing: -.4px;
  color: var(--text);
  margin-right: auto;
}
.brand:hover { text-decoration: none; }
.brand img { width: 34px; height: 34px; border-radius: 10px; }

.nav {
  display: flex;
  align-items: center;
  gap: 4px;
}
.nav a {
  color: var(--dim);
  font-size: 14.5px;
  font-weight: 500;
  padding: 8px 12px;
  border-radius: 10px;
  transition: color .2s, background .2s;
}
.nav a:hover { color: var(--text); background: var(--glass); text-decoration: none; }

/* Dil seçici — üç dilli site için tek satırlık segment */
.lang {
  display: flex;
  gap: 2px;
  padding: 3px;
  background: var(--glass);
  border: 1px solid var(--border);
  border-radius: 999px;
}
.lang button {
  border: 0;
  background: transparent;
  color: var(--dim);
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 999px;
  cursor: pointer;
  transition: color .2s, background .2s;
}
.lang button:hover { color: var(--text); }
.lang button[aria-pressed="true"] { background: var(--grad); color: #fff; }

.nav-toggle {
  display: none;
  width: 40px; height: 40px;
  align-items: center; justify-content: center;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--glass);
  color: var(--text);
  cursor: pointer;
}
.nav-toggle svg { width: 20px; height: 20px; }

/* Tema düğmesi. İki ikon üst üste; geçerli temanın karşıtı görünür
   (koyu temada güneş "açık temaya geç" demek). */
.theme-toggle {
  display: inline-grid;
  place-items: center;
  width: 36px; height: 36px;
  flex: 0 0 auto;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--glass);
  color: var(--dim);
  cursor: pointer;
  transition: color .2s, background .2s, border-color .2s, transform .2s var(--ease);
}
.theme-toggle:hover { color: var(--text); background: var(--glass-hover); }
.theme-toggle:active { transform: scale(.94); }
.theme-toggle svg {
  grid-area: 1 / 1;
  width: 18px; height: 18px;
  transition: opacity .25s var(--ease), transform .35s var(--ease);
}
.theme-toggle .ico-moon { opacity: 0; transform: rotate(-60deg) scale(.6); }
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) .theme-toggle .ico-sun { opacity: 0; transform: rotate(60deg) scale(.6); }
  :root:not([data-theme="dark"]) .theme-toggle .ico-moon { opacity: 1; transform: none; }
}
:root[data-theme="light"] .theme-toggle .ico-sun { opacity: 0; transform: rotate(60deg) scale(.6); }
:root[data-theme="light"] .theme-toggle .ico-moon { opacity: 1; transform: none; }

/* -------------------------------------------------------------- Butonlar */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 13px 24px;
  border: 1px solid transparent;
  border-radius: 14px;
  font: inherit;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: transform .2s var(--ease), box-shadow .3s, background .2s, border-color .2s;
}
.btn:hover { text-decoration: none; }
.btn-primary {
  background: var(--grad);
  color: #fff;
  box-shadow: 0 8px 26px rgba(108, 99, 255, .32);
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(108, 99, 255, .45); }
.btn-ghost {
  background: var(--glass);
  border-color: var(--border);
  color: var(--text);
}
.btn-ghost:hover { background: var(--glass-hover); border-color: var(--border-strong); transform: translateY(-2px); }
.btn[disabled], .btn.is-loading { opacity: .6; pointer-events: none; }

/* --------------------------------------------------- Mağaza rozeti (indir)
   Google Play rozeti Google'ın resmî görseli (.badge-img); çerçeve ve
   dolgu görselin kendisinde, biz yalnızca yüksekliği veriyoruz. App Store
   rozeti iOS çıkana kadar bağlantı değil, durum göstergesi (.is-soon). */
.badges { display: flex; flex-wrap: wrap; gap: 12px; }
.badge {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 20px 11px 16px;
  min-width: 196px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  color: var(--text);
  position: relative;
  overflow: hidden;
  transition: border-color .25s, transform .25s var(--ease);
}
a.badge:hover { border-color: var(--primary); transform: translateY(-2px); text-decoration: none; }
.badge svg { width: 26px; height: 26px; flex: 0 0 auto; }
.badge-text { display: flex; flex-direction: column; line-height: 1.25; }
.badge-text small { font-size: 11px; color: var(--dim); text-transform: uppercase; letter-spacing: .6px; }
.badge-text strong { font-size: 15.5px; font-weight: 700; }
/* Resmî rozet: kendi çerçevesi var, bizimki kaldırılıyor. Yükseklik App
   Store yer tutucusuyla hizalı; marka kılavuzunun 40px alt sınırının üstünde. */
.badge.badge-img { padding: 0; min-width: 0; background: none; border: 0; border-radius: 10px; }
.badge.badge-img img { display: block; height: 56px; width: auto; }
a.badge.badge-img:hover { border-color: transparent; }
.badge.is-soon { opacity: .72; }
/* Yayına yaklaşan sürüm için üstten geçen ışık */
.badge.is-soon::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(105deg, transparent 40%, rgba(255, 255, 255, .07) 50%, transparent 60%);
  transform: translateX(-100%);
  animation: sheen 4.5s ease-in-out infinite;
}
@keyframes sheen { 0%, 65% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }

/* --------------------------------------------------------------- Bölümler */
section { position: relative; }
.section { padding: 96px 0; }
.section-head { max-width: 660px; margin: 0 auto 56px; text-align: center; }
.section-head.left { margin-left: 0; text-align: left; }

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  margin-bottom: 18px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--accent-text);
  background: rgba(0, 212, 170, .08);
  border: 1px solid rgba(0, 212, 170, .28);
  border-radius: 999px;
}

h1, h2, h3 { line-height: 1.15; letter-spacing: -.02em; margin: 0; }
h1 { font-size: clamp(38px, 6.4vw, 62px); font-weight: 800; }
h2 { font-size: clamp(28px, 4vw, 40px); font-weight: 700; }
h3 { font-size: 19px; font-weight: 650; }

.grad-text {
  background: var(--grad-text);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.lead { font-size: 17.5px; color: var(--dim); margin: 18px 0 0; }
.section-head .lead { margin-top: 14px; }

/* ------------------------------------------------------------------ Hero */
.hero { padding: 72px 0 40px; }
.hero .wrap {
  display: grid;
  grid-template-columns: 1fr minmax(300px, 420px);
  gap: 56px;
  align-items: center;
}
.hero-copy .badges { margin-top: 34px; }

.hero-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 28px;
  margin-top: 42px;
  padding-top: 28px;
  border-top: 1px solid var(--border);
}
.hero-stats div strong {
  display: block;
  font-size: 21px;
  font-weight: 750;
  letter-spacing: -.5px;
}
.hero-stats div span { font-size: 13.5px; color: var(--dim); }

/* --------------------------------------------------------- Telefon çerçeve */
.phone {
  position: relative;
  width: 100%;
  max-width: 300px;
  margin: 0 auto;
  padding: 10px;
  background: linear-gradient(160deg, #33334A, #16161F 55%);
  border-radius: 42px;
  box-shadow:
    0 40px 80px var(--shadow-strong),
    0 0 0 1px rgba(255, 255, 255, .06) inset;
}
.phone::before {
  /* çentik */
  content: '';
  position: absolute;
  top: 20px; left: 50%;
  transform: translateX(-50%);
  width: 92px; height: 22px;
  background: #0B0B11;
  border-radius: 999px;
  z-index: 2;
}
.phone img {
  width: 100%;
  border-radius: 33px;
  background: var(--surface);
}
.phone-glow {
  position: absolute;
  inset: -8%;
  z-index: -1;
  background: var(--grad);
  filter: blur(60px);
  opacity: .35;
  border-radius: 50%;
}
.hero .phone { animation: float 7s ease-in-out infinite; }
@keyframes float {
  50% { transform: translateY(-16px); }
}

/* ------------------------------------------------------------- Video */
/* 16:9 tanıtım videosu. aspect-ratio + width/height nitelikleri kapak
   yüklenmeden de yer ayırır, sayfa zıplamaz. Parlama telefonunkiyle aynı
   gradyan; çerçeve rengi değişkenlerden gelir, açık temada da çalışır. */
.video-section { padding-top: 40px; }
.video-frame {
  position: relative;
  max-width: 960px;
  margin: 0 auto;
  padding: 8px;
  background: linear-gradient(160deg, #33334A, #16161F 55%);
  border-radius: 28px;
  box-shadow:
    0 40px 80px var(--shadow-strong),
    0 0 0 1px rgba(255, 255, 255, .06) inset;
}
.video-frame video {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border-radius: 21px;
  background: #0B0B11;
  outline: none;
}
.video-frame video:focus-visible { box-shadow: 0 0 0 3px var(--primary); }
.video-glow {
  position: absolute;
  inset: -6% -4%;
  z-index: -1;
  background: var(--grad);
  filter: blur(70px);
  opacity: .28;
  border-radius: 50%;
}
.video-note {
  max-width: 660px;
  margin: 22px auto 0;
  text-align: center;
  font-size: 14px;
  color: var(--dim);
}

/* Telefonun kenarında süzülen cam rozetler */
.chip {
  position: absolute;
  z-index: 3;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: var(--panel);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: 0 12px 30px var(--shadow);
  white-space: nowrap;
}
.chip-icon {
  width: 30px; height: 30px;
  display: grid; place-items: center;
  border-radius: 9px;
  background: var(--grad);
  font-size: 15px;
}
.chip small { display: block; font-size: 11px; color: var(--dim); line-height: 1.3; }
.chip strong { font-size: 14px; font-weight: 700; }
.chip-1 { top: 31%; left: -14%; animation: float 6s ease-in-out infinite .6s; }
.chip-2 { bottom: 20%; right: -16%; animation: float 6.6s ease-in-out infinite 1.4s; }

/* -------------------------------------------------------------- Özellikler */
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: 20px;
}
/* Topluluk kartları özellik kartlarından uzun metin taşıyor; iki sütunda
   satır uzunluğu okunur kalıyor. Sütun sayısı auto-fit ile değil sabit
   veriliyor: dört kart varken auto-fit üç sütun üretip son kartı tek başına
   alt satıra düşürüyordu. */
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.card {
  position: relative;
  padding: 26px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  transition: transform .35s var(--ease), border-color .35s, background .35s;
}
.card:hover {
  transform: translateY(-6px);
  border-color: var(--card-hover-border);
  background: var(--card-hover);
}
.card h3 { margin-bottom: 8px; }
.card p { margin: 0; color: var(--dim); font-size: 15px; }

.icon-tile {
  width: 46px; height: 46px;
  display: grid; place-items: center;
  margin-bottom: 18px;
  border-radius: 14px;
  background: var(--grad);
  font-size: 22px;
  box-shadow: 0 8px 20px rgba(108, 99, 255, .28);
}
.icon-tile.alt { background: linear-gradient(135deg, var(--accent), #2ED573); box-shadow: 0 8px 20px rgba(0, 212, 170, .26); }
.icon-tile.warm { background: linear-gradient(135deg, var(--warning), var(--danger)); box-shadow: 0 8px 20px rgba(255, 165, 2, .24); }

/* --------------------------------------------------------------- Vitrin */
/* Yan telefonlar dar ekranda görüş alanının dışına taşıyor; bölüm yatayda
   kırpılmazsa sayfa sağa sola kayıyordu. clip, hidden'ın aksine kaydırma
   kabı oluşturmaz: aktif telefonun ışıması dikeyde serbest kalır. */
.clip-x { overflow-x: clip; }
@supports not (overflow: clip) { .clip-x { overflow-x: hidden; } }
/* 3D coverflow. Öğelerin transform/opacity/z-index değerleri sabit değil;
   site.js (initCoverflow) aktif indekse olan uzaklığa göre her öğeye
   yazar. Burada yalnızca sahne, çerçeve ölçüsü, geçiş süresi ve oklar var.
   --cf-w telefon genişliği; sahne yüksekliği ondan türetiliyor
   (540x1170 görsel + 2x10px çerçeve). */
.coverflow {
  --cf-w: 280px;
  --cf-dur: .75s;
  position: relative;
  padding: 0 64px;
}
.cf-stage {
  position: relative;
  height: calc((var(--cf-w) - 20px) * 1170 / 540 + 20px);
  perspective: 1400px;
  perspective-origin: 50% 45%;
  outline: none;
  touch-action: pan-y;
  user-select: none;
  -webkit-user-select: none;
}
.cf-stage:focus-visible::after {
  content: '';
  position: absolute;
  inset: -12px;
  border-radius: 28px;
  border: 2px solid var(--link);
  pointer-events: none;
}
/* Performans: geçişte yalnızca transform ve opacity animasyonlanır;
   ikisi de kompozitörde çalışır. box-shadow/filter geçişi her karede
   yeniden boyama demekti ve telefonlarda takılmaya yol açıyordu. Aktif
   ışıma ve yan karartma bu yüzden ayrı katmanlarda, opaklıkla açılıp
   kapanıyor. Gizli slottaki öğe geçiş bitince visibility ile kapanır ki
   katmanı rasterlenmesin (açılırken gecikme yok, kapanırken --cf-dur). */
.cf-item {
  position: absolute;
  top: 0;
  left: 50%;
  width: var(--cf-w);
  margin-left: calc(var(--cf-w) / -2);
  backface-visibility: hidden;
  will-change: transform, opacity;
  transition:
    transform var(--cf-dur) var(--ease),
    opacity var(--cf-dur) var(--ease),
    visibility 0s 0s;
  cursor: pointer;
}
.cf-item.is-active { cursor: default; }
.cf-item.is-hidden {
  pointer-events: none;
  visibility: hidden;
  transition-delay: 0s, 0s, var(--cf-dur);
}
.coverflow.is-static .cf-item,
.coverflow.is-static .cf-item::after,
.coverflow.is-static .cf-item .phone::after,
.coverflow.is-static .cf-item .plan::after { transition: none; }
.cf-item .phone {
  max-width: none;
  padding: 10px;
  border-radius: 38px;
  /* Sabit, tek gölge; geçişi yok */
  box-shadow:
    0 30px 60px var(--shadow-soft),
    0 0 0 1px rgba(255, 255, 255, .06) inset;
}
.cf-item .phone::before { width: 80px; height: 19px; top: 18px; }
.cf-item .phone img { border-radius: 29px; }
/* Yan telefon karartması: görsel üstünde opaklıkla açılan koyu katman */
.cf-item .phone::after {
  content: '';
  position: absolute;
  inset: 10px;
  border-radius: 29px;
  background: rgba(10, 10, 15, .28);
  opacity: 1;
  pointer-events: none;
  transition: opacity var(--cf-dur) var(--ease);
}
.cf-item.is-active .phone::after { opacity: 0; }
/* Aktif ışıma: kutu gölgesi sabit, görünürlüğü opaklıkla */
.cf-item::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 38px;
  box-shadow: 0 0 90px rgba(108, 99, 255, .32), 0 40px 90px var(--shadow);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--cf-dur) var(--ease);
}
.cf-item.is-active::after { opacity: 1; }

.cf-arrow {
  position: absolute;
  top: calc((var(--cf-w) - 20px) * 1170 / 540 / 2 + 10px);
  transform: translateY(-50%);
  z-index: 20;
  width: 48px; height: 48px;
  display: grid; place-items: center;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: var(--panel-solid);
  color: var(--text);
  cursor: pointer;
  transition: background .2s, border-color .2s, transform .2s var(--ease), box-shadow .2s;
}
.cf-arrow-prev { left: 0; }
.cf-arrow-next { right: 0; }
.cf-arrow svg { width: 20px; height: 20px; }
.cf-arrow:hover {
  background: rgba(108, 99, 255, .18);
  border-color: rgba(156, 149, 255, .55);
  transform: translateY(-50%) scale(1.06);
  box-shadow: 0 8px 26px rgba(108, 99, 255, .25);
}
.cf-arrow:active { transform: translateY(-50%) scale(.96); }
.cf-arrow:focus-visible {
  outline: none;
  border-color: var(--link);
  box-shadow: 0 0 0 4px rgba(108, 99, 255, .3);
}

/* Aktif ekranın başlığı: hepsi üst üste, yalnızca aktif görünür */
.cf-captions {
  position: relative;
  min-height: 84px;
  margin-top: 28px;
  text-align: center;
}
.cf-caption {
  position: absolute;
  inset: 0;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity .45s var(--ease), transform .45s var(--ease);
  pointer-events: none;
}
.cf-caption.is-active { opacity: 1; transform: none; pointer-events: auto; }
.cf-caption h3 { margin: 0 0 6px; font-size: 20px; }
.cf-caption p { margin: 0; font-size: 15px; color: var(--dim); }

.cf-dots { display: flex; justify-content: center; gap: 8px; margin-top: 8px; }
.cf-dots button {
  width: 8px; height: 8px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: var(--border);
  cursor: pointer;
  transition: width .35s var(--ease), background .35s;
}
.cf-dots button:hover { background: var(--hint); }
.cf-dots button.is-active { width: 26px; background: var(--grad); }
.cf-dots button:focus-visible { outline: 2px solid var(--link); outline-offset: 3px; }

/* Kart varyantı (planlar). Telefondan farkı: yükseklik görselden
   türetilemez, bu yüzden sahne grid ve bütün öğeler aynı hücrede; hücre en
   uzun karta uzar, kartlar da ona eşitlenir. Karartma ve ışıma katmanları
   .phone yerine .plan üstünde. Oklar sahnenin ortasında; altta yalnızca
   nokta satırı (8px + 8px boşluk) olduğundan yarısı kadar yukarı alınır. */
.coverflow-cards { --cf-w: 380px; }
.coverflow-cards .cf-stage { display: grid; height: auto; }
.coverflow-cards .cf-item {
  position: relative;
  grid-area: 1 / 1;
  top: auto; left: auto;
  margin-left: 0;
  justify-self: center;
}
.coverflow-cards .cf-item .plan { position: relative; height: 100%; }
.coverflow-cards .cf-item .plan::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius);
  background: rgba(10, 10, 15, .28);
  opacity: 1;
  pointer-events: none;
  transition: opacity var(--cf-dur) var(--ease);
}
.coverflow-cards .cf-item.is-active .plan::after { opacity: 0; }
.coverflow-cards .cf-item::after {
  border-radius: var(--radius);
  box-shadow: 0 0 70px rgba(108, 99, 255, .3), 0 30px 70px var(--shadow);
}
.coverflow-cards .cf-arrow { top: calc(50% - 8px); }

/* ---------------------------------------------------------------- Planlar */
.plan {
  display: flex;
  flex-direction: column;
  padding: 30px 26px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  transition: transform .35s var(--ease), border-color .35s;
}
.plan:hover { transform: translateY(-6px); }
.plan.is-featured {
  border-color: transparent;
  background:
    linear-gradient(var(--surface), var(--surface)) padding-box,
    var(--grad) border-box;
  border: 1px solid transparent;
  box-shadow: 0 20px 50px rgba(108, 99, 255, .18);
}
.plan-tag {
  align-self: flex-start;
  padding: 4px 12px;
  margin-bottom: 14px;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .5px;
  text-transform: uppercase;
  border-radius: 999px;
  background: var(--grad);
  color: #fff;
}
.plan h3 { font-size: 23px; }
.plan .plan-note { margin: 8px 0 20px; font-size: 14px; color: var(--dim); }
.plan ul { list-style: none; margin: 0; padding: 0; }
.plan li {
  position: relative;
  padding-left: 28px;
  margin-bottom: 11px;
  font-size: 14.5px;
  color: var(--dim);
}
.plan li::before {
  content: '';
  position: absolute; left: 0; top: 7px;
  width: 17px; height: 17px;
  border-radius: 50%;
  background: rgba(0, 212, 170, .14);
  border: 1px solid rgba(0, 212, 170, .5);
}
.plan li::after {
  content: '';
  position: absolute; left: 5.5px; top: 11px;
  width: 5px; height: 8px;
  border: solid var(--accent);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

/* -------------------------------------------------------------------- SSS */
.faq { max-width: 780px; margin: 0 auto; }
.faq details {
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--card-soft);
  margin-bottom: 12px;
  overflow: hidden;
  transition: border-color .25s;
}
.faq details[open] { border-color: rgba(108, 99, 255, .45); }
.faq summary {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 20px;
  font-weight: 600;
  font-size: 16px;
  cursor: pointer;
  list-style: none;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: '';
  margin-left: auto;
  flex: 0 0 auto;
  width: 9px; height: 9px;
  border: solid var(--dim);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg) translateY(-2px);
  transition: transform .25s var(--ease);
}
.faq details[open] summary::after { transform: rotate(-135deg) translateY(-2px); }
.faq .faq-body { padding: 0 20px 20px; color: var(--dim); font-size: 15px; }
.faq .faq-body p { margin: 0 0 10px; }
.faq .faq-body p:last-child { margin-bottom: 0; }

/* ----------------------------------------------------------------- Kartlar */
.note {
  padding: 22px 24px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--surface);
}
.note p { margin: 0; color: var(--dim); font-size: 14.5px; }
.note p + p { margin-top: 10px; }
.note strong { color: var(--text); }
.note.warn { border-color: rgba(255, 71, 87, .42); background: rgba(255, 71, 87, .07); }
.note.info { border-color: rgba(108, 99, 255, .42); background: rgba(108, 99, 255, .07); }
.note.ok { border-color: rgba(46, 213, 115, .42); background: rgba(46, 213, 115, .07); }
.note h3 { margin-bottom: 10px; }

/* --------------------------------------------------------------- CTA bandı */
.cta-band {
  position: relative;
  overflow: hidden;
  padding: 56px 48px;
  border-radius: 28px;
  border: 1px solid var(--border);
  background:
    radial-gradient(90% 140% at 12% 0%, rgba(108, 99, 255, .28), transparent 60%),
    radial-gradient(80% 130% at 90% 100%, rgba(0, 212, 170, .22), transparent 60%),
    var(--surface);
  text-align: center;
}
.cta-band .lead { margin: 14px auto 30px; max-width: 520px; }
.cta-band .btn-row { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

/* ----------------------------------------------------------------- Altbilgi */
.site-footer {
  margin-top: 40px;
  padding: 56px 0 40px;
  border-top: 1px solid var(--border);
  background: var(--footer-bg);
}
.footer-top {
  display: grid;
  grid-template-columns: 1.4fr repeat(2, 1fr);
  gap: 40px;
  margin-bottom: 40px;
}
.footer-top p { margin: 14px 0 0; color: var(--dim); font-size: 14.5px; max-width: 320px; }
.footer-col h4 { margin: 0 0 14px; font-size: 13px; text-transform: uppercase; letter-spacing: .7px; color: var(--hint); }
.footer-col a {
  display: block;
  margin-bottom: 9px;
  color: var(--dim);
  font-size: 14.5px;
  transition: color .2s;
}
.footer-col a:hover { color: var(--text); text-decoration: none; }
.footer-bottom {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
  justify-content: space-between;
  padding-top: 26px;
  border-top: 1px solid var(--border);
  color: var(--hint);
  font-size: 13.5px;
}

/* -------------------------------------------------------------------- Form */
.form { display: grid; gap: 18px; }
.field { display: grid; gap: 7px; }
.field label { font-size: 14px; font-weight: 600; }
.field .hint { font-size: 13px; color: var(--hint); }
.field input,
.field select,
.field textarea {
  width: 100%;
  padding: 13px 15px;
  font: inherit;
  font-size: 15px;
  color: var(--text);
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  transition: border-color .2s, box-shadow .2s;
}
.field textarea { min-height: 150px; resize: vertical; line-height: 1.6; }
.field select {
  appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--dim) 50%),
                    linear-gradient(135deg, var(--dim) 50%, transparent 50%);
  background-position: calc(100% - 20px) 22px, calc(100% - 14px) 22px;
  background-size: 6px 6px, 6px 6px;
  background-repeat: no-repeat;
  padding-right: 42px;
}
.field input:focus,
.field select:focus,
.field textarea:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(108, 99, 255, .18);
}
.field input::placeholder, .field textarea::placeholder { color: var(--hint); }
.field.has-error input,
.field.has-error select,
.field.has-error textarea { border-color: var(--danger); }
.field .error { font-size: 13px; color: var(--danger); display: none; }
.field.has-error .error { display: block; }

/* Seçenek grupları (radyo/onay kutusu). Beta formundaki platform, ilgi
   alanı ve onay alanları. Kutucuk yerine bütün etiket tıklanabilir yüzey;
   telefonda 16px'lik kutuya nişan almak gerekmesin. */
fieldset.field { border: 0; padding: 0; margin: 0; min-width: 0; }
fieldset.field legend { font-size: 14px; font-weight: 600; padding: 0; margin-bottom: 7px; }
.field label .optional { font-weight: 400; color: var(--hint); font-size: 12.5px; }
.choices { display: flex; flex-wrap: wrap; gap: 8px; }
.choice {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 10px 14px;
  font-size: 14.5px;
  font-weight: 500;
  color: var(--dim);
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: border-color .2s, color .2s, background .2s;
}
.choice:hover { border-color: var(--border-strong); color: var(--text); }
.choice input { accent-color: var(--primary); width: 16px; height: 16px; margin: 0; flex: 0 0 auto; }
.choice:has(input:checked) { border-color: var(--primary); color: var(--text); background: rgba(108, 99, 255, .1); }
.choice:has(input:focus-visible) { box-shadow: 0 0 0 3px rgba(108, 99, 255, .18); }
.choice-block { display: flex; align-items: flex-start; line-height: 1.5; }
.choice-block input { margin-top: 3px; }
.field.has-error .choice { border-color: var(--danger); }

/* Bot tuzağı: gerçek kullanıcı görmez, otomatik doldurucu doldurur.
   display:none bazı botlarca atlanıyor, bu yüzden erişilebilirlik ağacından
   çıkarılmadan ekran dışına alınıyor. */
.trap {
  position: absolute !important;
  left: -9999px;
  width: 1px; height: 1px;
  overflow: hidden;
}

.form-status { display: none; margin-bottom: 20px; }
.form-status.is-visible { display: block; }

.support-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(260px, .85fr);
  gap: 26px;
  align-items: start;
}
.support-side { display: grid; gap: 18px; }
.support-side .note h3 { font-size: 16px; }
.side-list { list-style: none; margin: 12px 0 0; padding: 0; }
.side-list li {
  position: relative;
  padding-left: 18px;
  margin-bottom: 10px;
  font-size: 14.5px;
  color: var(--dim);
}
.side-list li::before {
  content: '';
  position: absolute; left: 0; top: 9px;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--accent);
}

@media (max-width: 860px) {
  .support-grid { grid-template-columns: 1fr; }
}

/* ------------------------------------------------------- Hukuki sayfa metni */

/* Uzun hukuki metinler her dil için ayrı blok halinde sayfada duruyor; JS
   yalnızca birini gösteriyor. JS çalışmazsa Türkçe blok görünür kalır —
   Play'in istediği erişilebilir hukuki metin her koşulda ortada olsun. */
.lang-block { display: none; }
.lang-block[data-lang="tr"] { display: block; }
.lang-block.is-active { display: block; }
.lang-block.is-hidden { display: none; }

.legal { max-width: 800px; margin: 0 auto; padding: 56px 0 72px; }
.legal h1 { font-size: clamp(30px, 4.6vw, 40px); margin-bottom: 8px; }
.legal h2 { font-size: 21px; margin: 42px 0 12px; }
.legal h3 { font-size: 15.5px; margin: 26px 0 8px; color: var(--accent-text); }
.legal p, .legal li { color: var(--dim); font-size: 15.5px; }
.legal li { margin-bottom: 7px; }
.legal strong { color: var(--text); }
.legal .updated { color: var(--hint); font-size: 13.5px; margin: 0 0 20px; }
.legal .note { margin: 22px 0; }
.legal table {
  width: 100%;
  border-collapse: collapse;
  margin: 18px 0;
  font-size: 14.5px;
}
.legal th, .legal td {
  text-align: left;
  padding: 11px 14px;
  border-bottom: 1px solid var(--border);
  vertical-align: top;
}
.legal th { color: var(--text); font-weight: 600; background: var(--glass-weak); }
.legal td { color: var(--dim); }
.legal .table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.legal .steps { counter-reset: s; list-style: none; padding: 0; }
.legal .steps li {
  counter-increment: s;
  position: relative;
  padding-left: 38px;
  margin-bottom: 14px;
}
.legal .steps li::before {
  content: counter(s);
  position: absolute; left: 0; top: 2px;
  width: 24px; height: 24px;
  display: grid; place-items: center;
  border-radius: 50%;
  font-size: 12.5px; font-weight: 700;
  background: var(--grad);
  color: #fff;
}
.legal .toc {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin: 24px 0 8px; padding: 0; list-style: none;
}
.legal .toc a {
  display: inline-block;
  padding: 6px 13px;
  font-size: 13.5px;
  color: var(--dim);
  background: var(--glass);
  border: 1px solid var(--border);
  border-radius: 999px;
}
.legal .toc a:hover { color: var(--text); border-color: var(--primary); text-decoration: none; }

/* -------------------------------------------------------- Kaydırma animasyonu
   JS, görünür alana giren her .reveal öğesine .in ekler. JS çalışmazsa
   içerik gizli kalmasın diye .no-js gövdesinde animasyon devre dışı. */
.reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .7s var(--ease), transform .7s var(--ease);
}
.reveal.in { opacity: 1; transform: none; }
.no-js .reveal { opacity: 1; transform: none; }

/* Sayfa açılışında sıralı giriş */
.enter > * { animation: enter-up .8s var(--ease) both; }
.enter > *:nth-child(2) { animation-delay: .08s; }
.enter > *:nth-child(3) { animation-delay: .16s; }
.enter > *:nth-child(4) { animation-delay: .24s; }
.enter > *:nth-child(5) { animation-delay: .32s; }
@keyframes enter-up {
  from { opacity: 0; transform: translateY(22px); }
}

/* ------------------------------------------------------------------ Mobil */
@media (max-width: 900px) {
  .hero .wrap { grid-template-columns: 1fr; gap: 48px; }
  .hero-copy { text-align: center; }
  .hero-copy .badges, .hero-stats { justify-content: center; }
  .hero-copy .eyebrow { margin-inline: auto; }
  /* Coverflow: telefon küçülür, dıştaki iki öğe gizlenir (site.js
     is-hidden ile), oklar sahnenin üstüne biner */
  .coverflow { --cf-w: 220px; padding: 0 44px; }
  .cf-arrow { width: 42px; height: 42px; }
  .cf-item .phone { box-shadow: 0 18px 40px var(--shadow-soft), 0 0 0 1px rgba(255, 255, 255, .06) inset; }
  .cf-item::after { box-shadow: 0 0 50px rgba(108, 99, 255, .28); }
  .coverflow-cards { --cf-w: 320px; }
  .aurora .a1, .aurora .a2, .aurora .a3 { animation: none; }

  .footer-top { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 760px) {
  .section { padding: 68px 0; }
  .wrap { padding: 0 18px; }

  /* Menü, başlık altına açılan panele dönüşüyor */
  .nav-toggle { display: flex; }
  .nav {
    position: absolute;
    top: var(--header-h);
    left: 0; right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    padding: 14px 18px 20px;
    background: var(--nav-bg);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-bottom: 1px solid var(--border);
    transform: translateY(-12px);
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s var(--ease), transform .25s var(--ease), visibility .25s;
  }
  .nav.is-open { opacity: 1; visibility: visible; transform: none; }
  .nav a { padding: 12px 10px; font-size: 16px; }
  .nav .btn { margin-top: 10px; }
  .nav .lang { margin-top: 12px; align-self: flex-start; }
  /* Tema düğmesi başlıkta kalır; hamburger en sağa geçer */
  .nav-toggle { order: 2; }

  /* Dar ekranda iki sütun kartları okunmaz genişliğe düşürüyor */
  .grid-2 { grid-template-columns: 1fr; }

  .coverflow { --cf-w: min(210px, 58vw); padding: 0; }
  .coverflow-cards { --cf-w: min(320px, 78vw); }
  .cf-arrow-prev { left: 0; }
  .cf-arrow-next { right: 0; }
  .cf-caption h3 { font-size: 18px; }

  .chip-1 { left: -6px; }
  .chip-2 { right: -6px; }
  .cta-band { padding: 40px 24px; }
  .footer-top { grid-template-columns: 1fr; gap: 28px; }
  .hero-stats { gap: 22px; }
}

@media (max-width: 520px) {
  /* Hero telefonu dar ekranda görüş alanının çoğunu yiyordu; küçültülüyor
     ki başlık ve indirme rozetleri aynı ekranda kalsın. */
  .hero .phone { max-width: 250px; }
  .video-frame { padding: 5px; border-radius: 18px; }
  .video-frame video { border-radius: 14px; }
  .badge { flex: 1 1 100%; }
  /* Resmî rozet görseli esnemez; dar ekranda App Store yer tutucusuyla aynı hizada ortalansın */
  .badge.badge-img { justify-content: center; }
  .legal { padding: 36px 0 56px; }
}

/* Hareket hassasiyeti olan kullanıcı için tüm animasyonlar kapanır.
   Vestibüler rahatsızlığı olanlarda kayan zemin baş dönmesi yapabiliyor. */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
  .reveal { opacity: 1; transform: none; }
}
