/* S-E Software — ortak stil
   Stil yonu: "Modern Dark (Cinema)" — saf siyah YOK, ortam isigi lekeleri,
   hairline kenarlik, cubic-bezier(.16,1,.3,1) yumusatma, vurgu arkasinda parlama. */

:root{
  --bg-deep:#07080C; --bg:#0B0D12; --elev:#12151E; --card:#161A25; --card-2:#1B2030;
  --line:rgba(255,255,255,.08); --line-2:rgba(255,255,255,.14);
  --fg:#EDEFF4; --muted:#98A0B4;
  /* --dim 4.5:1'i HICBIR zeminde gecmiyordu (eski #6B7488 -> 3.46-4.22).
     #828CA4 olculdu: card-2 4.81, card 5.16, scard 5.42, bg 5.77, footer 5.87.
     #7C86A0 KULLANMA -- card-2 uzerinde 4.46'da kaliyor. */
  --dim:#828CA4;
  /* Vurgu rengi MARKA LOGOSUNDAN cikarildi (assets/logo.png piksel sayimi):
     en doygun tonlar #48C0D8 / #30A8C0 / #3090C0 ailesi. Altin vurgu
     logonun camgobegiyle catistigi icin birakildi (7 Eyl 2026). */
  --acc:#3FC3DE; --acc-2:#7AE0F2; --acc-dim:#1D6E88;
  /* Vurgunun RGB'si: build_site.py'deki blok gradyanlari bunu kullanir. */
  --acc-rgb:63,195,222; --glow:rgba(var(--acc-rgb),.24);
  --on-acc:#04202A;
  /* Puan yildizi MARKA RENGINDEN bagimsiz altin kalir — App Store ve
     Play dahil her yerde yerlesik yaklasim bu; camgobegi yildiz
     "puan" olarak okunmaz. */
  --star:#F5B942;
  /* --warn eskiden --star ile ayni sariydi (dE76 8.5), --down ise --crimson ile
     BIREBIR ayniydi (dE 0.00): marka rozeti ile kesinti sinyali ayirt edilemiyordu.
     #F58A2A secildi (#F2994A DEGIL): doteranopide warn<->down ayrimi 22.6 -> 28.1. */
  /* --down #E5313F OLCULDU ve elendi: --bg 4.48, --card-2 3.74, durum seridi
     4.32 -- hicbiri 4.5:1'i gecmiyor. #FF6070 olculdu: 6.63 / 5.52 / 6.39,
     --crimson'dan dE 13.7, doteranopide warn<->down ayrimi 28.8 -> 38.6. */
  --crimson:#FF4655; --ok:#3FBF7F; --warn:#F58A2A; --down:#FF6070;
  --r:16px; --r-sm:11px; --r-lg:22px;
  --ease:cubic-bezier(.16,1,.3,1);
  --display:"Space Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --maxw:1140px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
body{
  margin:0;color:var(--fg);font-family:var(--body);line-height:1.6;
  -webkit-font-smoothing:antialiased;
  background:var(--bg);
  /* Dokunmatikte gri vurgu dikdortgeni yerine kendi :active durumumuz. */
  -webkit-tap-highlight-color:transparent;
}
/* background-attachment:fixed iOS Safari'de CALISMIYOR -- gradyan viewport'a
   degil belge boyuna yayiliyor, 7.800px'lik ana sayfada lekeler ilk ekranda
   kayboluyordu. Sabit konumlu ayri katman her tarayicida ayni davranir. */
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(48% 38% at 78% 8%, rgba(var(--acc-rgb),.11), transparent 68%),
    radial-gradient(42% 34% at 8% 22%, rgba(24,120,168,.14), transparent 70%),
    linear-gradient(180deg,#0D1017 0%,var(--bg) 42%,var(--bg-deep) 100%);
}
/* Ince doku. body::before ARKADA (z-index:-1), bu ONDE (z-index:1) olmak
   zorunda: dokunun isi zemin gradyanini degil, uzerindeki kart ve
   gorselleri kirmak. header z-index:30, yani serit dokunun ustunde kalir.
   opacity .04 -- daha yukarisi koyu zeminde gorunur gurultuye donuyor. */
body::after{
  content:"";position:fixed;inset:0;z-index:1;pointer-events:none;
  opacity:.04;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")
}
a{color:inherit}
a,button,summary{touch-action:manipulation}
.btn:active,.app:active,.scard:active,.flag:active,.soonlead:active{filter:brightness(.94)}
img{max-width:100%;display:block}
a:focus-visible,button:focus-visible,.shots:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
/* Once duz 22px YEDEK: env() desteklenmeyen tarayicida asagidaki
   padding-inline bildirimi tumuyle GECERSIZ sayilir ve yan bosluk kaybolurdu. */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 22px;
  padding-inline:max(22px,env(safe-area-inset-left)) max(22px,env(safe-area-inset-right))}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ── header ─────────────────────────────────────────── */
/* Saydamlik .72 DEGIL .88: header'in altindan gecen ekran goruntuleri
   parlak. .72'de bilesik zemin uzerinde --muted metin 3.11:1'e dusuyordu
   (nav a .92rem ve .langsw .8rem/600 -- ikisi de "buyuk metin" esigi
   altinda, yani 4.5:1 gerekli). blur() kurtarmiyor: genis beyaz alan
   blur sonrasi beyaz kalir. .88 olculdu -> 5.53:1. */
header{position:sticky;top:0;z-index:30;background:rgba(11,13,18,.88);
  backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line)}
/* -webkit- bicimi sorguya DAHIL: Safari oneksiz backdrop-filter'i ancak 18'de
   destekledi. Sadece oneksizi sorgulamak iOS Safari <18'i bu dala dusurup
   cam efektini birincil mobil hedefte yok ederdi. */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  header{background:rgba(11,13,18,.97)}
}
.hrow{display:flex;align-items:center;justify-content:space-between;height:62px;gap:16px}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-family:var(--display);
  font-weight:700;letter-spacing:.2px;white-space:nowrap}
/* 15. Lacivert disk header zemininden ayirt edilemiyordu (pikselin %92'si
   3:1 altinda). Camgobegi halka ayiriyor. filter:brightness EKLEME --
   markanin %9.8'ini kirpar; daire sart, kose alfalari 0. */
.brand img{width:28px;height:28px;border-radius:50%;flex:none;
  box-shadow:0 0 0 1px var(--acc-dim)}
nav{display:flex;gap:22px;font-size:.92rem}
nav a{color:var(--muted);text-decoration:none;white-space:nowrap;transition:color .2s var(--ease)}
nav a:hover{color:var(--fg)}
/* 'nav' DEGIL 'header nav': breadcrumb da <nav> etiketi kullaniyor ve
   cipsiz secici onu da gizliyordu (mobilde 32 sayfada geri donus yolu yok). */
@media (max-width:760px){header nav{display:none}}

/* ── durum seridi ───────────────────────────────────── */
.statusbar{border-bottom:1px solid var(--line);background:rgba(18,21,30,.6)}
.srow{display:flex;align-items:center;gap:11px;padding-block:10px;font-size:.88rem;flex-wrap:wrap}
/* Nokta ARTIK FLEX OGESI DEGIL -- .stxt icinde satir ici duruyor.
   Ayri flex ogesiyken <=604px'te metinden kopup tek basina bir satirda
   kaliyordu. position:relative KORUNDU (::after halesi ona bagli);
   margin-inline-end .srow'un gap:11px'inin yerini tutuyor. */
.sdot{display:inline-block;width:8px;height:8px;border-radius:50%;
  position:relative;margin-inline-end:11px}
.sdot::after{content:"";position:absolute;inset:-5px;border-radius:50%;opacity:.22;background:inherit}
.status.ok .sdot{background:var(--ok)} .status.warn .sdot{background:var(--warn)} .status.down .sdot{background:var(--down)}
.status.ok .stxt b{color:var(--ok)} .status.warn .stxt b{color:var(--warn)} .status.down .stxt b{color:var(--down)}
.stxt{color:var(--muted)} .stxt b{font-weight:600}
.slink{margin-left:auto;color:var(--dim);text-decoration:none;font-size:.84rem;white-space:nowrap}
.slink:hover{color:var(--fg)}

/* ── tipografi ──────────────────────────────────────── */
h1,h2,h3{font-family:var(--display);letter-spacing:-.02em;margin:0}
h1{font-weight:700;font-size:clamp(2.2rem,5.4vw,3.7rem);line-height:1.06}
h2{font-weight:700;font-size:clamp(1.45rem,3vw,2.05rem);line-height:1.15}
h3{font-weight:700;font-size:1.05rem}
/* Eski clamp(1rem,1.55vw,1.1rem) mobilde HEP alt sinirda kaliyordu:
   1.55vw'nin 16px'i asmasi icin 1032px genislik gerekiyordu. */
.lead{font-size:clamp(1.0625rem,1rem + 0.28vw,1.2rem);color:var(--muted);line-height:1.55}

/* ── butonlar ───────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;text-decoration:none;
  font-weight:600;font-size:.94rem;padding:12px 20px;border-radius:12px;border:1px solid transparent;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .2s var(--ease),border-color .2s var(--ease);
  cursor:pointer;min-height:44px}
@media (hover:hover){.btn:hover{transform:translateY(-2px)}}
.btn-p{background:linear-gradient(160deg,var(--acc-2),var(--acc));color:var(--on-acc);
  box-shadow:0 8px 26px -10px var(--glow)}
.btn-p:hover{box-shadow:0 14px 34px -10px var(--glow)}
.btn-s{border-color:var(--line-2);background:rgba(255,255,255,.04);color:var(--fg)}
.btn-s:hover{border-color:var(--acc-dim);background:rgba(255,255,255,.07)}

/* ── kartlar ────────────────────────────────────────── */
.card{background:linear-gradient(180deg,var(--card),rgba(22,26,37,.72));
  border:1px solid var(--line);border-radius:var(--r)}
.chip{font-size:.8rem;color:var(--fg);background:rgba(255,255,255,.05);
  border:1px solid var(--line);border-radius:9px;padding:6px 11px;display:inline-block}
.pill{font-size:.8rem;letter-spacing:.05em;text-transform:uppercase;
  border:1px solid var(--line-2);border-radius:999px;padding:4px 11px;display:inline-block;color:var(--dim)}
.pill.acc{color:var(--acc);border-color:var(--acc-dim)}
.pill.crimson{color:var(--crimson);border-color:rgba(255,70,85,.35)}
.star{color:var(--star)}

/* ── bolumler ───────────────────────────────────────── */
section{padding:76px 0}
.shead{margin-bottom:30px}
.shead p{color:var(--muted);margin:8px 0 0;max-width:58ch}

/* ── footer ─────────────────────────────────────────── */
footer{border-top:1px solid var(--line);padding:34px 0 46px;color:var(--dim);font-size:.87rem;
  background:rgba(7,8,12,.5)}
.frow{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap}
.frow a{color:var(--muted);text-decoration:none;margin-right:18px}
.frow a:hover{color:var(--fg)}

/* ── ekran goruntusu galerisi ───────────────────────── */
.shots{display:flex;gap:14px;overflow-x:auto;padding:4px 0 16px;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.shots::-webkit-scrollbar{height:8px}
.shots::-webkit-scrollbar-track{background:rgba(255,255,255,.04);border-radius:99px}
/* var(--line-2) = rgba(255,255,255,.14) -> track'e karsi 1.34:1; mobilde
   tek gorunur kaydirma ipucu pratikte gorunmuyordu. .34 de YETMIYOR (2.83),
   .42 olculdu -> 3.77:1. */
.shots::-webkit-scrollbar-thumb{background:rgba(255,255,255,.42);border-radius:99px}
/* 1.80 kart = garantili 29-41px kirpik; kullanici kaydirilabildigini GORUR.
   436px ustunde min() 210px'te sabitler, tablet/masaustu degismez. */
.shots img{flex:none;width:min(210px,calc((100% - 14px)/1.8));height:auto;border-radius:14px;
  border:1px solid var(--line);scroll-snap-align:start;background:var(--elev)}

/* ── breadcrumb ─────────────────────────────────────── */
/* 10. crumb artik <nav><ol><li> — ekran okuyucu "3 ogeli liste" diyor. */
.crumb{font-size:.85rem;color:var(--dim);padding-block:22px 0}
.crumb ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center}
.crumb li{display:flex;align-items:center}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--fg)}
.crumb span{margin:0 8px;opacity:.5}

/* ── dil degistirici ────────────────────────────────── */
.langsw{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:30px;
  padding:0 10px;border:1px solid var(--line-2);border-radius:9px;text-decoration:none;
  font-size:.8rem;font-weight:600;letter-spacing:.04em;color:var(--muted);
  background:rgba(255,255,255,.04);transition:color .2s var(--ease),border-color .2s var(--ease)}
.langsw:hover{color:var(--acc);border-color:var(--acc-dim)}

/* ── dokunma hedefleri (14) ──────────────────────────────
   Gorunumu bozmadan 44px hedef: padding ile buyutmek .langsw'in
   yuksekligini de degistiriyor (box-sizing:border-box + kenarlik). */
.langsw{position:relative}
.langsw::after{content:"";position:absolute;left:50%;top:50%;
  transform:translate(-50%,-50%);width:100%;min-width:44px;height:44px}
.brand{position:relative}
.brand::after{content:"";position:absolute;inset:-8px 0;min-height:44px}
.crumb a,.frow a{display:inline-flex;align-items:center;min-height:44px}
nav a{display:flex;align-items:center;min-height:44px}
.slink{position:relative}
.slink::after{content:"";position:absolute;inset:-11px 0;min-height:44px}

/* ── icerige atlama (21) ─────────────────────────────────
   scroll-margin-top ZORUNLU: header 62px sticky, onsuz baslik altta kalir. */
.skip{position:absolute;left:-9999px;top:auto}
.skip:focus{position:fixed;left:22px;top:8px;z-index:40;
  display:inline-flex;align-items:center;min-height:44px;padding:12px 18px;
  background:var(--acc);color:var(--on-acc);text-decoration:none;font-weight:600;
  border-radius:12px;box-shadow:0 10px 30px -8px var(--glow)}
#main,section[id]{scroll-margin-top:70px}

/* ── dar ekran tasmasi (24) ──────────────────────────────
   .btn'e overflow-wrap VERME: tum butonlarin min-content genisligini degistirir. */
.itable td{overflow-wrap:anywhere}
.btn{max-width:100%}
a[href^="mailto:"]{overflow-wrap:anywhere}
