/* ========================================================================
   aboqe — Dijital Ajans / Premium & Teknoloji Odaklı
   Global Stylesheet  |  Dark + Light Mode · Neon Blue/Green
   ------------------------------------------------------------------------
   TEMA NASIL ÇALIŞIR?
   Tüm renkler <html data-theme="dark|light"> üzerindeki değişkenlerden gelir.
   --c-* değişkenleri "R G B" üçlüleridir ve tailwind.config.js tarafından
   rgb(var(--c-x) / <alpha-value>) olarak okunur; böylece markuptaki
   bg-base-1, text-white, text-slate-400, border-white/10, text-neon-green
   gibi hazır sınıflar tek satır değiştirmeden iki temada da doğru çalışır.
   Temayı assets/js/theme.js ilk boyamadan önce uygular (flash yok).
   ======================================================================== */

:root, :root[data-theme="dark"] {
  color-scheme: dark;

  /* ---- Tailwind köprüsü (R G B üçlüleri) ---- */
  --c-base-0: 5 7 13;         /* en koyu zemin */
  --c-base-1: 10 14 23;       /* ana zemin */
  --c-base-2: 17 23 38;       /* kart zemini */
  --c-invert: 255 255 255;    /* Tailwind "white" → metin & ince katmanlar */
  --c-slate-200: 226 232 240;
  --c-slate-300: 203 213 225;
  --c-slate-400: 148 163 184;
  --c-slate-500: 100 116 139;
  --c-slate-600: 71 85 105;
  --c-neon-blue: 0 212 255;
  --c-neon-green: 0 255 157;
  --c-neon-blue2: 47 123 255;

  /* ---- Yüzeyler ---- */
  --bg-0: rgb(var(--c-base-0));
  --bg-1: rgb(var(--c-base-1));
  --bg-2: rgb(var(--c-base-2));
  --bg-footer: #070a12;
  --line: rgba(255, 255, 255, 0.07);
  --line-strong: rgba(255, 255, 255, 0.14);
  --glass-1: rgba(255, 255, 255, 0.05);
  --glass-2: rgba(255, 255, 255, 0.015);
  --glass-hover: rgba(255, 255, 255, 0.07);
  --grid-line: rgba(255, 255, 255, 0.035);
  --header-bg: rgba(8, 11, 20, 0.72);
  --media-veil: rgba(5, 7, 13, 0.9);   /* görsel üstü okunabilirlik perdesi */
  --media-filter: saturate(.85) brightness(.85);
  --shadow-card: 0 24px 60px rgba(0, 0, 0, 0.45);
  --aurora-opacity: .55;
  --aurora-1: rgba(0, 212, 255, 0.55);
  --aurora-2: rgba(0, 255, 157, 0.45);
  --logo-filter: drop-shadow(0 0 10px rgba(0, 212, 255, 0.5));
  --preloader-bg: radial-gradient(circle at 50% 42%, #0a1120, #05070d 72%);
  --preloader-logo-filter: drop-shadow(0 0 34px rgba(0, 212, 255, .55));

  /* ---- Marka renkleri ---- */
  --neon-blue: rgb(var(--c-neon-blue));      /* okunabilir vurgu (metin/ikon) */
  --neon-green: rgb(var(--c-neon-green));
  --neon-blue-2: rgb(var(--c-neon-blue2));
  --neon-green-2: #14e0a0;
  --brand-1: #00d4ff;        /* dolgu gradyanı (buton, çubuk, alt çizgi) */
  --brand-2: #00ff9d;
  --brand-ink: #001018;      /* dolgu gradyanı üzerindeki yazı */
  --grad-txt-1: #00d4ff;     /* gradyan METİN çifti (zemine göre koyulaşır) */
  --grad-txt-2: #00ff9d;
  --grad-soft-1: #cfe9ff;    /* .text-gradient-soft */
  --grad-soft-2: #bfffe6;

  --txt-0: #f4f7ff;
  --txt-1: #b7c0d8;
  --txt-2: #7d8aa8;

  --glow-blue: 0 0 40px rgba(0, 212, 255, 0.35);
  --glow-green: 0 0 40px rgba(0, 255, 157, 0.30);

  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
}

/* ========================================================================
   LIGHT MODE — aynı değişkenler, aydınlık değerler
   ======================================================================== */
:root[data-theme="light"] {
  color-scheme: light;

  --c-base-0: 255 255 255;
  --c-base-1: 244 246 251;
  --c-base-2: 255 255 255;
  --c-invert: 15 23 42;       /* "white" → koyu mürekkep + ince koyu katmanlar */
  --c-slate-200: 30 41 59;    /* slate rampası ters çevrildi */
  --c-slate-300: 51 65 85;
  --c-slate-400: 71 85 105;
  --c-slate-500: 100 116 139;
  --c-slate-600: 105 118 141;  /* en silik ton — beyaz üstünde yine de AA (4.6:1) */
  --c-neon-blue: 0 125 163;
  --c-neon-green: 3 121 90;
  --c-neon-blue2: 37 87 190;

  --bg-footer: #eef1f8;
  --line: rgba(15, 23, 42, 0.10);
  --line-strong: rgba(15, 23, 42, 0.18);
  --glass-1: rgba(255, 255, 255, 0.86);
  --glass-2: rgba(255, 255, 255, 0.60);
  --glass-hover: rgba(15, 23, 42, 0.05);
  --grid-line: rgba(15, 23, 42, 0.05);
  --header-bg: rgba(255, 255, 255, 0.80);
  --media-veil: rgba(255, 255, 255, 0.92);
  --media-filter: saturate(1) brightness(1);
  --shadow-card: 0 24px 60px rgba(15, 23, 42, 0.14);
  --aurora-opacity: .32;
  --aurora-1: rgba(0, 176, 224, 0.42);
  --aurora-2: rgba(0, 214, 156, 0.34);
  /* İnce kontur logo aydınlık zeminde silikleşir: koyulaştır + hafif halo ile
     çizgileri kalınlaştır (yoksa küçük boyutlarda neredeyse görünmez olur). */
  --logo-filter: brightness(.45) saturate(1.7) drop-shadow(0 0 1px rgba(6, 90, 110, .9));
  --preloader-bg: radial-gradient(circle at 50% 42%, #ffffff, #e7edf7 72%);
  --preloader-logo-filter: brightness(.52) saturate(1.5);

  --brand-1: #00a3cc;
  --brand-2: #00c187;
  --brand-ink: #001018;
  --grad-txt-1: #00749c;     /* küçük punto gradyan metinde de AA (≈4.9:1) */
  --grad-txt-2: #017d58;
  --grad-soft-1: #14405c;
  --grad-soft-2: #0f4d3c;

  --txt-0: #0f172a;
  --txt-1: #3d4a63;
  --txt-2: #6b7896;

  --glow-blue: 0 0 40px rgba(0, 163, 204, 0.22);
  --glow-green: 0 0 40px rgba(0, 193, 135, 0.20);
}

* { -webkit-font-smoothing: antialiased; }

html { scroll-behavior: smooth; overflow-x: clip; }

body {
  background: var(--bg-1);
  color: var(--txt-1);
  font-family: 'Inter', system-ui, sans-serif;
  overflow-x: clip;
  max-width: 100%;
  /* DİKKAT: buraya background-color/color geçişi EKLEMEYİN. Renkler CSS
     değişkeninden geliyor; yalnızca değişken değiştiğinde Chromium geçişi
     yeniden başlatmıyor ve zemin eski temada donup kalıyor. */
}

/* Dekoratif aurora asla yatay taşmaya yol açmasın */
.aurora { max-width: 100%; }

::selection { background: var(--brand-1); color: var(--brand-ink); }

h1, h2, h3, h4, .display { font-family: 'Space Grotesk', 'Inter', sans-serif; }

/* ---- Scrollbar ---- */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg-0); }
::-webkit-scrollbar-thumb {
  background: linear-gradient(var(--brand-1), var(--brand-2));
  border-radius: 20px;
  border: 2px solid var(--bg-0);
}

/* ========================================================================
   BACKGROUND FX
   ======================================================================== */
.bg-grid {
  background-image:
    linear-gradient(to right, var(--grid-line) 1px, transparent 1px),
    linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);
  background-size: 64px 64px;
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 40%, transparent 100%);
          mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 40%, transparent 100%);
}

.aurora {
  position: absolute;
  inset: -20%;
  z-index: 0;
  pointer-events: none;
  filter: blur(90px);
  opacity: var(--aurora-opacity);
}
.aurora::before, .aurora::after {
  content: "";
  position: absolute;
  border-radius: 50%;
}
.aurora::before {
  width: 45vw; height: 45vw;
  left: -5%; top: -10%;
  background: radial-gradient(circle, var(--aurora-1), transparent 65%);
  animation: drift1 18s var(--ease-in-out) infinite alternate;
}
.aurora::after {
  width: 40vw; height: 40vw;
  right: -5%; top: 5%;
  background: radial-gradient(circle, var(--aurora-2), transparent 65%);
  animation: drift2 22s var(--ease-in-out) infinite alternate;
}
@keyframes drift1 { to { transform: translate(12%, 14%) scale(1.15); } }
@keyframes drift2 { to { transform: translate(-14%, 10%) scale(1.1); } }

#particles-hero {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

/* ========================================================================
   TYPOGRAPHY UTILITIES
   ======================================================================== */
.text-gradient {
  background: linear-gradient(100deg, var(--grad-txt-1), var(--grad-txt-2));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.text-gradient-soft {
  background: linear-gradient(100deg, var(--grad-soft-1), var(--grad-soft-2));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  font-size: .72rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--neon-green);
  font-weight: 600;
}
.eyebrow::before {
  content: "";
  width: 26px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--neon-green));
}

/* ========================================================================
   BUTTONS
   ======================================================================== */
.btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .85rem 1.6rem;
  border-radius: 999px;
  font-weight: 600;
  font-size: .95rem;
  letter-spacing: .01em;
  transition: transform .35s var(--ease-out), box-shadow .35s var(--ease-out), background .35s;
  will-change: transform;
}
.btn i { font-size: 1.15rem; transition: transform .35s var(--ease-out); }
.btn:hover { transform: translateY(-3px); }
.btn:hover i { transform: translateX(3px); }

.btn-primary {
  color: var(--brand-ink);
  background: linear-gradient(100deg, var(--brand-1), var(--brand-2));
  box-shadow: 0 8px 30px rgb(var(--c-neon-blue) / 0.28);
}
.btn-primary:hover { box-shadow: 0 12px 42px rgb(var(--c-neon-green) / 0.42); }

.btn-ghost {
  color: var(--txt-0);
  background: var(--glass-2);
  border: 1px solid var(--line-strong);
  backdrop-filter: blur(6px);
}
.btn-ghost:hover { background: var(--glass-hover); border-color: var(--neon-blue); }

/* ========================================================================
   GLASS CARDS
   ======================================================================== */
.glass {
  background: linear-gradient(160deg, var(--glass-1), var(--glass-2));
  border: 1px solid var(--line);
  backdrop-filter: blur(14px);
  border-radius: 20px;
}

.card-hover {
  transition: transform .45s var(--ease-out), border-color .45s, box-shadow .45s;
  will-change: transform;
}
.card-hover:hover {
  transform: translateY(-8px);
  border-color: var(--line-strong);
  box-shadow: var(--shadow-card);
}

/* Gradient border on hover */
.glow-border {
  position: relative;
}
.glow-border::after {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(130deg, var(--brand-1), transparent 40%, transparent 60%, var(--brand-2));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  opacity: 0;
  transition: opacity .45s var(--ease-out);
  pointer-events: none;
}
.glow-border:hover::after { opacity: 1; }

/* Spotlight follow (JS sets --mx/--my) */
.spotlight {
  position: relative;
  overflow: hidden;
}
.spotlight::before {
  content: "";
  position: absolute;
  inset: 0;
  /* Kendi köşe yarıçapını taşısın ki kapsayıcıda overflow:hidden gerekmesin
     (overflow:hidden, 3D kartlarda transform-style:preserve-3d'yi düzleştirir). */
  border-radius: inherit;
  background: radial-gradient(320px circle at var(--mx, 50%) var(--my, 50%), rgb(var(--c-neon-blue) / 0.14), transparent 60%);
  opacity: 0;
  transition: opacity .4s;
  pointer-events: none;
}
.spotlight:hover::before { opacity: 1; }

/* ========================================================================
   HEADER / NAV
   ======================================================================== */
.site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 60;
  transition: background .5s var(--ease-out), border-color .5s, backdrop-filter .5s, padding .4s;
  border-bottom: 1px solid transparent;
}
.site-header.scrolled {
  background: var(--header-bg);
  backdrop-filter: blur(18px) saturate(140%);
  border-bottom: 1px solid var(--line);
}

.nav-link {
  position: relative;
  color: var(--txt-1);
  font-size: .93rem;
  font-weight: 500;
  padding: .35rem 0;
  transition: color .3s;
}
.nav-link::after {
  content: "";
  position: absolute;
  left: 0; bottom: -4px;
  height: 2px; width: 0;
  background: linear-gradient(90deg, var(--brand-1), var(--brand-2));
  transition: width .35s var(--ease-out);
  border-radius: 2px;
}
.nav-link:hover, .nav-link.active { color: var(--txt-0); }
.nav-link:hover::after, .nav-link.active::after { width: 100%; }

/* Mega menu */
.mega {
  transform-origin: top center;
}

/* Logo neon cyan bir kontur PNG'sidir; aydınlık zeminde okunmaz →
   light modda --logo-filter ile koyulaştırılır (bkz. LIGHT MODE bloğu). */
.logo-mark {
  filter: var(--logo-filter);
}

/* ========================================================================
   MARQUEE (trust bar)
   Şu an hiçbir sayfada kullanılmıyor (referans marquee'si grid'e dönüştü),
   yatay kayan bir şerit gerekirse hazır dursun diye korundu.
   ======================================================================== */
.marquee { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
.marquee__track { display: flex; width: max-content; animation: marquee 32s linear infinite; }
.marquee:hover .marquee__track { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(-50%); } }

/* ========================================================================
   REFERANS GRID (#referanslar)
   Kartlar varsayılan olarak SOLGUN durur; hover/focus'ta renklenir.
   Renk değişimi tek tek katmanlara verilir (kartın tamamına opacity/filter
   uygulanmaz) — yoksa gradyan kenarlık ve gölge de soluklaşırdı.
   ======================================================================== */
.ref-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .7rem;
  padding: 1.15rem 1.1rem 1.2rem;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: var(--glass-2);
  min-height: 118px;
  transition: transform .45s var(--ease-out), background .45s var(--ease-out),
              border-color .45s var(--ease-out), box-shadow .45s var(--ease-out);
  will-change: transform;
}
.ref-card:hover,
.ref-card:focus-visible {
  transform: translateY(-5px);
  background: var(--glass-1);
  border-color: transparent;
  box-shadow: var(--shadow-card);
}
/* Klavye odağında da renkli hâl görünsün (glow-border ::after) */
.ref-card.glow-border:focus-visible::after { opacity: 1; }

/* Marka adı — solgun mürekkep; üstündeki ::after kopyası gradyanla yumuşak
   geçiş yapar (doğrudan gradyan metne transition uygulanamıyor). */
.ref-card__name {
  position: relative;
  font-family: 'Space Grotesk', 'Inter', sans-serif;
  font-size: .98rem;
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.25;
  color: var(--txt-2);
  transition: color .4s var(--ease-out);
  word-break: break-word;
}
.ref-card__name::after {
  content: attr(data-name);
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, var(--grad-txt-1), var(--grad-txt-2));
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
  opacity: 0;
  transition: opacity .4s var(--ease-out);
  pointer-events: none;
}
.ref-card:hover .ref-card__name::after,
.ref-card:focus-visible .ref-card__name::after { opacity: 1; }

/* Hizmet etiketleri */
.ref-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
  margin-top: auto;
}
.ref-card__tags li {
  font-size: .655rem;
  line-height: 1.5;
  letter-spacing: .03em;
  padding: .18rem .5rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--txt-2);
  white-space: nowrap;
  transition: color .4s var(--ease-out), border-color .4s var(--ease-out), background .4s var(--ease-out);
}
.ref-card:hover .ref-card__tags li,
.ref-card:focus-visible .ref-card__tags li {
  color: var(--neon-green);
  border-color: rgb(var(--c-neon-green) / .38);
  background: rgb(var(--c-neon-green) / .08);
}

/* Sağ üst ok — yalnızca hover/focus'ta belirir */
.ref-card__arrow {
  position: absolute;
  top: .85rem; right: .9rem;
  font-size: .9rem;
  line-height: 1;
  color: var(--neon-blue);
  opacity: 0;
  transform: translate(-5px, 5px);
  transition: opacity .4s var(--ease-out), transform .4s var(--ease-out);
}
.ref-card:hover .ref-card__arrow,
.ref-card:focus-visible .ref-card__arrow { opacity: 1; transform: none; }

/* Son hücre: "Sıradaki siz olun" CTA — kesikli çerçeveyle ayrışır */
.ref-card--cta {
  border-style: dashed;
  border-color: var(--line-strong);
  background: transparent;
}
.ref-card--cta:hover,
.ref-card--cta:focus-visible { border-style: solid; }

/* ========================================================================
   LOGO CAROUSEL (#referanslar — anasayfa)
   Kesintisiz kayan şerit. Logolar solgun durur, hover'da renklenir.
   Şerit iki kez basılır; animasyon %50'de başa döner (dikişsiz döngü).
   ======================================================================== */
.logo-marquee {
  position: relative;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.logo-marquee__rail {
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}
.logo-marquee__rail::-webkit-scrollbar { display: none; }

.logo-marquee__track {
  display: flex;
  align-items: stretch;
  gap: 1rem;
  width: max-content;
  padding: .25rem 1.25rem;
  animation: logoMarquee 46s linear infinite;
}
@keyframes logoMarquee { to { transform: translateX(-50%); } }
/* Fareyle üzerine gelince veya kullanıcı elle kaydırınca akış durur */
.logo-marquee:hover .logo-marquee__track,
.logo-marquee__rail:focus-within .logo-marquee__track,
.logo-marquee.is-paused .logo-marquee__track { animation-play-state: paused; }

.logo-chip {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  width: 208px;
  height: 108px;
  padding: 1rem 1.2rem;
  border-radius: 18px;
  border: 1px solid var(--line);
  background: var(--glass-2);
  transition: transform .45s var(--ease-out), border-color .45s var(--ease-out),
              background .45s var(--ease-out), box-shadow .45s var(--ease-out);
}
.logo-chip:hover,
.logo-chip:focus-visible {
  transform: translateY(-6px);
  border-color: rgb(var(--c-neon-blue) / .45);
  background: var(--glass-1);
  box-shadow: var(--shadow-card), 0 0 34px rgb(var(--c-neon-blue) / .12);
}

/* Ham logo görselleri (renkli PNG) — solgun başlar, hover'da canlanır */
.logo-chip__img {
  max-width: 100%;
  max-height: 60px;
  width: auto;
  object-fit: contain;
  filter: grayscale(1) brightness(1.7) opacity(.42);
  transition: filter .45s var(--ease-out), transform .45s var(--ease-out);
}
.logo-chip:hover .logo-chip__img,
.logo-chip:focus-visible .logo-chip__img {
  filter: grayscale(0) brightness(1) opacity(1);
  transform: scale(1.04);
}
/* Aydınlık temada beyaza çekmek logoları yok ediyor → koyulaştırılır */
:root[data-theme="light"] .logo-chip__img { filter: grayscale(1) brightness(.75) opacity(.5); }
:root[data-theme="light"] .logo-chip:hover .logo-chip__img { filter: none; }

/* Küçük ikon + wordmark ikilisi */
.logo-chip__icon {
  width: 34px; height: 34px;
  flex-shrink: 0;
  object-fit: contain;
  border-radius: 9px;
  filter: grayscale(1) opacity(.45);
  transition: filter .45s var(--ease-out);
}
.logo-chip:hover .logo-chip__icon,
.logo-chip:focus-visible .logo-chip__icon { filter: none; }

/* Logo dosyası olmayan markalar için tipografik wordmark */
.logo-chip__word {
  display: flex;
  flex-direction: column;
  font-family: 'Space Grotesk', 'Inter', sans-serif;
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.15;
  color: var(--txt-2);
  text-align: left;
  transition: color .45s var(--ease-out);
}
.logo-chip__word em { font-style: normal; color: var(--neon-green); }
.logo-chip__word small {
  font-size: .58rem;
  font-weight: 500;
  letter-spacing: .16em;
  text-transform: uppercase;
  opacity: .75;
  margin-top: .2rem;
}
.logo-chip:hover .logo-chip__word,
.logo-chip:focus-visible .logo-chip__word { color: var(--txt-0); }

@media (prefers-reduced-motion: reduce) {
  .logo-marquee__track { animation: none; }
}

/* Referanslar sayfasındaki büyük varyant */
.ref-card--lg { min-height: 168px; padding: 1.5rem 1.45rem; gap: .9rem; }
.ref-card--lg .ref-card__name { font-size: 1.25rem; }
.ref-card--lg .ref-card__tags li { font-size: .7rem; padding: .22rem .6rem; }

/* ========================================================================
   VAKA KARTLARI (#başarı hikâyeleri carousel)
   Görsel yerine tipografik marka başlığı — sahte proje ekran görüntüsü yok.
   ======================================================================== */
.case-card { display: block; overflow: hidden; }
.case-card__head {
  position: relative;
  height: 172px;
  display: grid;
  place-items: center;
  background:
    radial-gradient(120% 120% at 20% 0%, rgb(var(--c-neon-blue) / .20), transparent 60%),
    radial-gradient(120% 120% at 90% 100%, rgb(var(--c-neon-green) / .18), transparent 60%),
    var(--bg-2);
  border-bottom: 1px solid var(--line);
  overflow: hidden;
}
.case-card__head::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, var(--grid-line) 1px, transparent 1px),
    linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);
  background-size: 28px 28px;
}
/* Sitenin küçük ekran görüntüsü — kartın üst bandını doldurur.
   Görsel yoksa (indirilemeyen site) alttaki gradyan + wordmark görünür. */
.case-card__shot {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  filter: saturate(.75) brightness(.62) contrast(1.05);
  transform: scale(1.02);
  transition: filter .6s var(--ease-out), transform .8s var(--ease-out);
}
.case-card:hover .case-card__shot,
.case-card:focus-visible .case-card__shot {
  filter: saturate(1.05) brightness(.9) contrast(1);
  transform: scale(1.09);
}

/* Görsel varken marka adı üstte küçük bir rozete döner */
.case-card__mark {
  position: relative;
  font-family: 'Space Grotesk', 'Inter', sans-serif;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -.02em;
  background: linear-gradient(100deg, var(--grad-txt-1), var(--grad-txt-2));
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
  transition: transform .5s var(--ease-out);
}
.case-card:hover .case-card__mark { transform: scale(1.06); }

/* Görsel varsa wordmark okunabilirlik rozetine dönüşür (gradyan metin
   fotoğraf üstünde kayboluyordu) */
.case-card__head:has(.case-card__shot) .case-card__mark {
  align-self: flex-end;
  justify-self: start;
  margin: 0 0 .8rem .9rem;
  font-size: .82rem;
  letter-spacing: .04em;
  text-transform: lowercase;
  padding: .3rem .7rem;
  border-radius: 999px;
  background: rgba(5, 7, 13, .72);
  border: 1px solid rgba(255, 255, 255, .14);
  backdrop-filter: blur(8px);
  -webkit-text-fill-color: currentColor;
  color: #eaf6ff;
}
.case-card__head:has(.case-card__shot) { place-items: stretch; }
.case-card__arrow {
  position: absolute;
  top: .85rem; right: .95rem;
  font-size: 1rem;
  color: var(--neon-blue);
  opacity: 0;
  transform: translate(-5px, 5px);
  transition: opacity .4s var(--ease-out), transform .4s var(--ease-out);
}
.case-card:hover .case-card__arrow,
.case-card:focus-visible .case-card__arrow { opacity: 1; transform: none; }

/* Yatay ray ok düğmeleri (vaka carousel'i / logo şeridi) */
.rail-btn {
  display: grid;
  place-items: center;
  width: 44px; height: 44px;
  border-radius: 999px;
  border: 1px solid var(--line-strong);
  background: var(--glass-2);
  color: var(--txt-0);
  cursor: pointer;
  transition: color .35s var(--ease-out), border-color .35s var(--ease-out),
              background .35s var(--ease-out), transform .35s var(--ease-out), opacity .3s;
}
.rail-btn:hover { color: var(--neon-green); border-color: var(--neon-green); background: var(--glass-hover); transform: translateY(-2px); }
.rail-btn[disabled] { opacity: .3; cursor: default; transform: none; }
.rail-btn[disabled]:hover { color: var(--txt-0); border-color: var(--line-strong); background: var(--glass-2); }

/* Scroll tepkisi: rayda kaydırıldıkça kartlar hafifçe ölçek/derinlik değiştirir.
   --rail-p, main.js tarafından her kart için 0..1 aralığında yazılır. */
[data-rail-parallax] > * {
  transition: transform .35s var(--ease-out), opacity .35s var(--ease-out);
}

/* ========================================================================
   KAPSAM MATRİSİ TABLOSU (hangi markaya hangi hizmet)
   ======================================================================== */
.scope-wrap { overflow-x: auto; }
.scope-table {
  width: 100%;
  min-width: 640px;
  border-collapse: collapse;
  font-size: .9rem;
}
.scope-table caption {
  caption-side: top;
  text-align: left;
  padding: 1.15rem 1.4rem .35rem;
  font-size: .72rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--txt-2);
}
.scope-table th,
.scope-table td { padding: .85rem 1.4rem; text-align: center; }
.scope-table thead th {
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--txt-2);
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.scope-table tbody th[scope="row"],
.scope-table thead th:first-child { text-align: left; }
.scope-table tbody th[scope="row"] {
  font-family: 'Space Grotesk', 'Inter', sans-serif;
  font-weight: 600;
  color: var(--txt-1);
  white-space: nowrap;
}
.scope-table tbody th a { transition: color .3s; }
.scope-table tbody th a:hover { color: var(--neon-blue); text-decoration: underline; }
.scope-table tbody tr { transition: background .35s var(--ease-out); }
.scope-table tbody tr:not(:last-child) th,
.scope-table tbody tr:not(:last-child) td { border-bottom: 1px solid var(--line); }
.scope-table tbody tr:hover { background: var(--glass-hover); }
.scope-table tbody tr:hover th[scope="row"] { color: var(--txt-0); }
.scope-table td .ph-check { color: var(--neon-green); font-size: 1.05rem; }
.scope-no { color: var(--txt-2); opacity: .45; }

/* Vaka kartı: üstlenilen iş kapsamı etiketleri */
.case-card__scope {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--line);
}
.case-card__scope li {
  font-size: .68rem;
  letter-spacing: .03em;
  padding: .22rem .6rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--txt-2);
  white-space: nowrap;
  transition: color .4s var(--ease-out), border-color .4s var(--ease-out), background .4s var(--ease-out);
}
.case-card:hover .case-card__scope li,
.case-card:focus-visible .case-card__scope li {
  color: var(--neon-green);
  border-color: rgb(var(--c-neon-green) / .38);
  background: rgb(var(--c-neon-green) / .08);
}

/* ========================================================================
   YER TUTUCU VERİ İŞARETİ
   Gerçek metrik/yorum gelene kadar uydurma veri yazılmaz; bu sınıf alanı
   gözle görülür şekilde "doldurulacak" olarak işaretler.
   ======================================================================== */
.data-todo {
  color: var(--neon-green);
  background: rgb(var(--c-neon-green) / .09);
  border: 1px dashed rgb(var(--c-neon-green) / .35);
  border-radius: 6px;
  padding: 0 .4em;
  font-size: .9em;
  font-weight: 600;
  display: inline-block;
}

/* Yorum kartındaki monogram rozet (sahte avatar fotoğrafı yerine) */
.testi-mono {
  display: grid;
  place-items: center;
  width: 44px; height: 44px;
  flex-shrink: 0;
  border-radius: 50%;
  border: 1px solid var(--line-strong);
  background: radial-gradient(circle at 30% 30%, rgb(var(--c-neon-blue) / .22), rgb(var(--c-neon-green) / .06));
  color: var(--neon-blue);
  font-family: 'Space Grotesk', 'Inter', sans-serif;
  font-weight: 700;
  font-size: .95rem;
  letter-spacing: -.02em;
}

/* ========================================================================
   SERVICE / FEATURE CARDS
   ======================================================================== */
.icon-badge {
  display: grid;
  place-items: center;
  width: 56px; height: 56px;
  border-radius: 16px;
  font-size: 1.6rem;
  color: var(--neon-blue);
  background: radial-gradient(circle at 30% 30%, rgb(var(--c-neon-blue) / 0.22), rgb(var(--c-neon-green) / 0.06));
  border: 1px solid var(--line-strong);
  transition: transform .5s var(--ease-out), color .4s;
}
.card-hover:hover .icon-badge { transform: rotate(-6deg) scale(1.08); color: var(--neon-green); }

/* ========================================================================
   GALLERY
   ======================================================================== */
.gallery-item {
  position: relative;
  overflow: hidden;
  border-radius: 18px;
  cursor: pointer;
}
.gallery-item img {
  transition: transform .8s var(--ease-out), filter .6s;
  filter: var(--media-filter);
}
.gallery-item:hover img { transform: scale(1.08); filter: saturate(1.1) brightness(1); }
.gallery-item__overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1.4rem;
  background: linear-gradient(to top, var(--media-veil) 5%, transparent 60%);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .5s var(--ease-out), transform .5s var(--ease-out);
}
.gallery-item:hover .gallery-item__overlay { opacity: 1; transform: translateY(0); }

/* Filtreleme geçişi */
.filter-hidden {
  opacity: 0;
  transform: scale(.9);
  pointer-events: none;
  position: absolute;
  visibility: hidden;
}

/* ========================================================================
   STATS COUNTER
   ======================================================================== */
.stat-value { font-variant-numeric: tabular-nums; }

/* ========================================================================
   TESTIMONIAL
   ======================================================================== */
.stars i { color: var(--neon-green); }

/* ========================================================================
   MARKER / PROCESS TIMELINE
   ======================================================================== */
.process-line {
  background: linear-gradient(180deg, var(--brand-1), var(--brand-2));
}

/* ========================================================================
   FOOTER
   ======================================================================== */
.footer-link {
  color: var(--txt-2);
  transition: color .3s, padding-left .3s;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.footer-link:hover { color: var(--neon-blue); padding-left: 4px; }

.social-btn {
  display: grid; place-items: center;
  width: 42px; height: 42px;
  border-radius: 12px;
  border: 1px solid var(--line);
  color: var(--txt-1);
  transition: all .35s var(--ease-out);
}
.social-btn:hover { color: var(--brand-ink); background: linear-gradient(120deg, var(--brand-1), var(--brand-2)); transform: translateY(-3px); box-shadow: var(--glow-blue); }

/* ========================================================================
   WHATSAPP FLOATING
   ======================================================================== */
.wa-fab {
  position: fixed;
  right: 22px; bottom: 22px;
  z-index: 70;
}
.wa-pulse::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 999px;
  background: #22c55e;
  animation: waPulse 2.4s var(--ease-out) infinite;
  z-index: -1;
}
@keyframes waPulse {
  0% { transform: scale(1); opacity: .55; }
  100% { transform: scale(1.9); opacity: 0; }
}

/* ========================================================================
   SCROLL REVEAL
   ======================================================================== */
[data-reveal] {
  opacity: 0;
  transform: translateY(38px);
  transition: opacity .9s var(--ease-out), transform .9s var(--ease-out);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}
[data-reveal].is-visible { opacity: 1; transform: none; }

[data-reveal="left"]  { transform: translateX(-46px); }
[data-reveal="right"] { transform: translateX(46px); }
[data-reveal="zoom"]  { transform: scale(.92); }
[data-reveal="left"].is-visible,
[data-reveal="right"].is-visible,
[data-reveal="zoom"].is-visible { transform: none; }

/* ========================================================================
   SLIDER (hero)
   ======================================================================== */
.hero-slide {
  transition: opacity 1.1s var(--ease-out);
}
.slide-dot {
  width: 34px; height: 4px;
  border-radius: 4px;
  background: var(--line-strong);
  transition: background .4s, width .4s;
  cursor: pointer;
}
.slide-dot.active { background: linear-gradient(90deg, var(--brand-1), var(--brand-2)); width: 54px; }

/* Ken Burns */
@keyframes kenburns { from { transform: scale(1); } to { transform: scale(1.14); } }
.kenburns { animation: kenburns 9s ease-out forwards; }

/* ========================================================================
   FLOATING ANIMATIONS
   ======================================================================== */
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
.float { animation: float 6s var(--ease-in-out) infinite; }

@keyframes shine { to { background-position: 200% center; } }
.shine {
  background: linear-gradient(90deg, var(--txt-2) 20%, var(--grad-txt-1) 40%, var(--grad-txt-2) 55%, var(--txt-2) 75%);
  background-size: 200% auto;
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shine 4s linear infinite;
}

/* Marquee vertical divider dot */
.dot-sep { width: 5px; height: 5px; border-radius: 50%; background: var(--brand-2); }

/* Accessible focus */
a:focus-visible, button:focus-visible {
  outline: 2px solid var(--neon-blue);
  outline-offset: 3px;
  border-radius: 6px;
}

/* ========================================================================
   LEGAL / PROSE PAGES
   ======================================================================== */
.legal h2 { color:var(--txt-0); font-family:'Space Grotesk','Inter',sans-serif; font-size:1.4rem; font-weight:700; margin:2.4rem 0 .9rem; scroll-margin-top:100px; }
.legal h2:first-child { margin-top:0; }
.legal h3 { color:var(--txt-0); font-weight:600; font-size:1.06rem; margin:1.6rem 0 .5rem; }
.legal p { color:var(--txt-1); line-height:1.8; margin-bottom:1rem; }
.legal ul { margin:0 0 1.1rem .2rem; padding-left:1.2rem; }
.legal li { color:var(--txt-1); line-height:1.75; margin-bottom:.55rem; list-style:disc; }
.legal a { color:var(--neon-blue); }
.legal a:hover { text-decoration:underline; }
.legal strong { color:var(--txt-0); font-weight:600; }
.legal .placeholder { color:var(--neon-green); background:rgb(var(--c-neon-green) / .08); padding:0 .35em; border-radius:5px; font-size:.92em; }
.toc-link { color:var(--txt-2); font-size:.86rem; padding:.35rem 0; display:block; transition:color .3s, padding-left .3s; border-left:2px solid transparent; padding-left:.9rem; margin-left:-2px; }
.toc-link:hover, .toc-link.active { color:var(--neon-blue); border-left-color:var(--neon-blue); }

/* ========================================================================
   PRELOADER — Ambigram giriş animasyonu (logo 2x saat yönü dönüş)
   ======================================================================== */
#preloader {
  position: fixed; inset: 0; z-index: 100;
  display: grid; place-items: center; gap: 1.9rem; grid-auto-rows: min-content;
  align-content: center;
  background: var(--preloader-bg);
  transition: opacity .6s var(--ease-out), visibility .6s;
  animation: preAuto 0s linear 5.4s forwards; /* JS devre dışıysa güvenlik ağı */
}
#preloader.is-done { opacity: 0; visibility: hidden; pointer-events: none; }
@keyframes preAuto { to { opacity: 0; visibility: hidden; pointer-events: none; } }

.preloader-logo {
  width: min(62vw, 280px);
  filter: var(--preloader-logo-filter);
  transform-origin: 50% 50%;
  animation: preSpin 3.7s cubic-bezier(.55, 0, .3, 1) forwards;
}
/* Saat yönünde 2 tam tur (720°) — ambigram her 180°'de yine "aboqe" okunur */
@keyframes preSpin {
  0%   { transform: rotate(0deg) scale(.8); opacity: 0; }
  9%   { opacity: 1; }
  100% { transform: rotate(720deg) scale(1); opacity: 1; }
}
/* Slogan — daktilo efekti (JS harf harf yazar). "HER AÇIDAN" büyük, "aboqe" küçük marka */
.preloader-cap {
  font-family: 'Space Grotesk', sans-serif;
  font-size: .82rem; letter-spacing: .28em;
  color: var(--txt-1);
  min-height: 1.2em; white-space: nowrap;
}
.preloader-cap b { color: var(--neon-green); font-weight: 600; letter-spacing: .1em; }
.preloader-cap::after {
  content: ''; display: inline-block; width: 2px; height: 1em;
  margin-left: 4px; background: var(--neon-green); vertical-align: -2px;
  visibility: hidden; animation: preCaret .8s step-end infinite;
}
.preloader-cap.typing::after, .preloader-cap.typed::after { visibility: visible; }
@keyframes preCaret { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
  .preloader-logo { animation: none; opacity: 1; transform: none; }
  #preloader { animation: preAuto 0s linear 2s forwards; }
}

/* ========================================================================
   FAQ (vanilla JS accordion)
   ======================================================================== */
.faq-q { width:100%; cursor:pointer; text-align:left; background:none; border:0; }
.faq-icon { transition: transform .35s var(--ease-out), color .3s, border-color .3s; }
.faq-item.is-open .faq-icon { transform: rotate(45deg); color: var(--neon-green); border-color: rgb(var(--c-neon-green) / .5); }
.faq-q:hover .faq-title { color:var(--txt-0); }
.faq-a { max-height:0; overflow:hidden; opacity:.4; transition: max-height .45s var(--ease-out), opacity .45s var(--ease-out); }
.faq-item.is-open .faq-a { max-height:500px; opacity:1; }

/* ========================================================================
   COOKIE CONSENT
   ======================================================================== */
.cc-toggle {
  -webkit-appearance:none; appearance:none;
  width:46px; height:26px; border-radius:999px;
  background:var(--line-strong); position:relative; cursor:pointer;
  transition:background .3s var(--ease-out); flex-shrink:0;
}
.cc-toggle:checked { background:linear-gradient(100deg, var(--brand-1), var(--brand-2)); }
.cc-toggle::after {
  content:""; position:absolute; top:3px; left:3px;
  width:20px; height:20px; border-radius:50%; background:#fff;
  box-shadow:0 1px 3px rgba(15,23,42,.3);  /* aydınlık temada açık rayda kaybolmasın */
  transition:transform .3s var(--ease-out);
}
.cc-toggle:checked::after { transform:translateX(20px); }
.cc-toggle:disabled { opacity:.55; cursor:not-allowed; }
#cookieBanner, #cookieModal { animation:ccFade .5s var(--ease-out); }
@keyframes ccFade { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:none; } }

/* ========================================================================
   TEMA DEĞİŞTİRİCİ (dark ⇄ light)
   Header'da (masaüstü + mobil) ve mobil menüde yer alır.
   ======================================================================== */
.theme-toggle {
  position: relative;
  display: grid;
  place-items: center;
  width: 42px; height: 42px;
  border-radius: 999px;
  border: 1px solid var(--line-strong);
  background: var(--glass-2);
  color: var(--txt-1);
  cursor: pointer;
  flex-shrink: 0;
  transition: color .35s var(--ease-out), border-color .35s var(--ease-out),
              background .35s var(--ease-out), transform .35s var(--ease-out);
}
.theme-toggle:hover {
  color: var(--neon-green);
  border-color: var(--neon-green);
  background: var(--glass-hover);
  transform: translateY(-2px);
}
/* İki ikon üst üste; aktif temaya göre biri döner-gelir, diğeri döner-gider */
.theme-toggle i {
  grid-area: 1 / 1;
  font-size: 1.25rem;
  transition: opacity .4s var(--ease-out), transform .5s var(--ease-out);
}
.theme-toggle .ph-sun      { opacity: 0; transform: rotate(-90deg) scale(.5); }
.theme-toggle .ph-moon-stars { opacity: 1; transform: none; }
:root[data-theme="light"] .theme-toggle .ph-sun        { opacity: 1; transform: none; }
:root[data-theme="light"] .theme-toggle .ph-moon-stars { opacity: 0; transform: rotate(90deg) scale(.5); }

/* Tema geçişi sırasında tüm animasyon/geçişler kapatılır — bkz. theme.js set() */
:root.theme-switching,
:root.theme-switching *,
:root.theme-switching *::before,
:root.theme-switching *::after {
  transition: none !important;
}

/* Galeri / proje filtre pilleri (eskiden sayfa içi <style> idi) */
.filter-btn.is-active {
  background: linear-gradient(100deg, var(--brand-1), var(--brand-2));
  color: var(--brand-ink);
  border-color: transparent;
  font-weight: 600;
}

/* Footer zemini — components.js'teki sabit renk yerine değişken */
.site-footer-bg { background: var(--bg-footer); }

/* ========================================================================
   LIGHT MODE — İSTİSNALAR
   Aşağıdakiler her iki temada da koyu/renkli zemin üzerinde durur, bu yüzden
   markuptaki text-white'ın koyu mürekkebe dönmesinden muaf tutulur.
   ======================================================================== */
:root[data-theme="light"] .wa-fab .text-white { color: #fff; }
:root[data-theme="light"] .wa-fab .border-\[\#111726\] { border-color: var(--bg-2); }

/* Markupta sabit yazılmış neon renkler (text-[#00ff9d] / text-[#00d4ff]) */
:root[data-theme="light"] .text-\[\#00ff9d\] { color: var(--neon-green); }
:root[data-theme="light"] .text-\[\#00d4ff\] { color: var(--neon-blue); }

/* Aydınlık zeminde ince cam kartlar biraz daha belirgin dursun */
:root[data-theme="light"] .glass { box-shadow: 0 1px 2px rgba(15, 23, 42, .04); }

/* Galeri kapak yazıları koyu görsellerin üstünde duruyor; aydınlık temada
   perde daha erken kapanmalı ki koyu mürekkep her zaman okunabilsin. */
:root[data-theme="light"] .gallery-item__overlay {
  background: linear-gradient(to top, #fff 24%, rgba(255, 255, 255, .88) 48%, transparent 80%);
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}
