/* Sayfalar arası doğal geçiş animasyonları (şu an yalnızca Chrome/Edge
   destekliyor — desteklemeyen tarayıcılarda hiçbir etkisi yok, sıradan
   sayfa yönlendirmesi olur; ilerici bir katman, bağımlılık değil).
   view-transition-name taşıyan öğeler (bkz. .auth-group/.acct) bu sayede
   giriş↔çıkış geçişinde gerçekten "birbirine dönüşüyor" gibi görünür. */
@view-transition{navigation:auto}

:root{
  --bg:#fbfbfa;
  --surface:#ffffff;
  --ink:#16181d;
  --ink-2:#3f444d;
  /* Metin renkleri WCAG AA (4.5:1) eşiğini geçecek şekilde seçildi.
     --bg üzerinde ölçülen kontrast: ink 16.6 · ink-2 9.5 · muted 5.7 · faint 4.8 */
  --muted:#5f656d;
  --faint:#6b7178;
  /* Yalnızca dekoratif kullanım (kenarlık, ayraç, ikon dolgusu) — metin taşımaz */
  --faint-deco:#a8adb4;
  --line:#ecedec;
  --line-2:#f5f5f4;

  --brand:#0e9d76;
  --brand-deep:#0a7d5e;
  --brand-tint:#effaf6;
  --brand-line:#cdeee2;
  /* Logodaki yeşil → camgöbeği geçişinin ikinci ucu */
  --brand-cyan:#2ec5dd;
  --brand-grad:linear-gradient(100deg,var(--brand) 0%,var(--brand-cyan) 100%);

  --warn:#e39b2a;
  --warn-tint:#fdf6e9;
  --warn-line:#f6e4c0;

  --bad:#e75d6d;
  --bad-tint:#fdf1f3;
  --bad-line:#f7d5da;

  --r-lg:24px;
  --r-md:18px;
  --r-sm:12px;

  --sh-1:0 1px 2px rgba(22,24,29,.04);
  --sh-2:0 1px 3px rgba(22,24,29,.04), 0 8px 24px -10px rgba(22,24,29,.10);
  --sh-3:0 2px 4px rgba(22,24,29,.04), 0 18px 40px -16px rgba(22,24,29,.14);
  --ease:cubic-bezier(.22,1,.36,1);

  /* "PirGEO Asistanı" moru — ÖNEMLİ (gerçek testle bulunan hata, 2026-08-15):
     bu değişkenler önceden yalnızca .ai-ask{} kuralında tanımlıydı. .bv-*
     ve .ai-answer-* sınıfları (.ai-ask'ın dışında, ör. AI Görünürlük
     panelindeki geçmiş tarama listesinde) yeniden kullanılınca değişkenler
     tanımsız kalıp arka plan/metin rengi tamamen boşa düşüyordu (bir buton
     görünmez oldu). Artık :root'ta GLOBAL — hangi bağlamda kullanılırsa
     kullanılsın çalışıyor. */
  --violet:#6152c9; --violet-deep:#4c3fa8; --violet-tint:#f3f1fd; --violet-line:#ddd7f7;
}

*{box-sizing:border-box;margin:0;padding:0}

/* ── Klavye odağı ──
   Fare kullanıcısını rahatsız etmeden klavye kullanıcısına net bir iz bırakır.
   :focus-visible sadece klavye/yardımcı teknoloji odağında devreye girer. */
:focus-visible{
  outline:2px solid var(--brand-deep);
  outline-offset:3px;
  border-radius:6px;
}
/* Koyu zeminli öğelerde yeşil okunmaz — beyaz halka daha güvenli */
.btn:focus-visible,.cta-link:focus-visible,.stepc-n:focus-visible{
  outline-color:var(--ink);
  box-shadow:0 0 0 5px rgba(255,255,255,.9);
}
/* Klavyeyle içeriğe atlama bağlantısı */
.skip{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--ink);color:#fff;padding:12px 20px;border-radius:0 0 12px 0;
  font-size:14px;font-weight:600;text-decoration:none;
}
.skip:focus{left:0}
/* overflow-x:clip — dekoratif blur lekeleri ve tam-genişlik bantları taşma
   yaratmasın diye. clip, hidden'ın aksine yeni bir kaydırma bağlamı kurmaz;
   desteklemeyen tarayıcılar için önce hidden yazılıyor. */
html{
  scroll-behavior:smooth;-webkit-text-size-adjust:100%;
  overflow-x:hidden;overflow-x:clip;
  /* Dikey kaydırma çubuğu için her zaman yer ayrılsın. Aksi hâlde, içeriği
     viewport'tan kısa olan bir sayfadan (ör. login.php) daha uzun bir sayfaya
     (ör. register.php) geçince kaydırma çubuğu belirip görünür genişliği
     ~15px daraltıyor, ortalanmış içerik (header dahil) bu yüzden sağa/sola
     "kayıyormuş" gibi görünüyordu. Kullanıcının bildirdiği kayma sorunu buydu. */
  scrollbar-gutter:stable;
}
body{
  /* Yatay taşma kırpması BURADA yapılır (gerçek kullanıcı geri bildirimiyle,
     2026-08-16). Dekoratif .blob'lar bilerek kenardan taşacak şekilde
     konumlanıyor (ör. right:-170px) ve kırpılmazsa sayfayı ekrandan geniş
     yapıp içeriği sağdan kestiriyordu. Kırpma .zone'a KONULMADI: orası
     .block.band::before'un 100vw'lik tam-genişlik bandını da keser ve
     sayfanın iki yanında sert bir "çerçeve" oluşturur (denendi, geri
     alındı). 'clip' bilinçli olarak 'hidden' yerine seçildi — hidden
     dikey ekseni de kaydırma bağlamına çevirip position:sticky başlığı
     ve hero'daki yukarı taşan radar motifini bozar. */
  overflow-x:clip;
  background:var(--bg);color:var(--ink);
  font-family:'Plus Jakarta Sans',ui-sans-serif,system-ui,sans-serif;
  font-size:16px;line-height:1.6;letter-spacing:-.005em;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;overflow-x:clip;
  position:relative;min-height:100vh;
}
/* Çok yumuşak arka plan ışığı */
body::before{
  content:'';position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(760px 420px at 50% -8%,rgba(14,157,118,.09),transparent 70%),
    radial-gradient(520px 320px at 88% 4%,rgba(120,160,255,.05),transparent 70%);
}
.wrap{position:relative;z-index:1}
.mono{font-family:'DM Mono',ui-monospace,monospace;font-feature-settings:'ss01'}

/* ── Header ──
   #hdr olarak kimlikle sınırlandı: bare `header{}` seçici, blog yazı
   sayfasındaki <header class="post-head"> gibi başka header öğelerini de
   yanlışlıkla yapışkan/bulanık yapıyordu. */
#hdr{
  position:sticky;top:0;z-index:60;
  background:rgba(251,251,250,.72);
  backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s,background .3s;
}
#hdr.stuck{border-bottom-color:var(--line)}
.bar{max-width:1280px;margin:0 auto;padding:20px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px}
/* Marka logosu */
.brand{display:flex;align-items:center;text-decoration:none;flex-shrink:0;padding:9px 0}
.brand img{height:30px;width:auto;display:block}
@media(max-width:640px){.brand img{height:25px}}
/* Metin yedeği (logo yüklenmezse kullanılabilir) */
.wordmark{
  font-size:21px;font-weight:700;letter-spacing:-.035em;
  color:var(--ink);text-decoration:none;line-height:1;
}
.wordmark span{color:var(--brand)}
.tagline{font-size:13.5px;color:var(--muted);font-weight:400}
@media(max-width:640px){.tagline{display:none}.bar{padding:18px 20px}}

main{max-width:1280px;margin:0 auto;padding:0 28px}
@media(max-width:640px){main{padding:0 20px}}

/* ── Hero ── */
.hero{padding:96px 0 40px;text-align:center;position:relative}
@media(max-width:640px){.hero{padding:64px 0 32px}}

/* Yumuşak radar motifi */
.radar{
  position:absolute;top:-120px;left:50%;transform:translateX(-50%);
  width:820px;height:820px;pointer-events:none;z-index:-1;
  mask-image:radial-gradient(circle,#000 25%,transparent 66%);
  -webkit-mask-image:radial-gradient(circle,#000 25%,transparent 66%);
}
.radar .ring{fill:none;stroke:rgba(14,157,118,.13);stroke-width:1}
.radar .ring.alt{stroke:rgba(22,24,29,.055)}
.radar .cross{stroke:rgba(22,24,29,.045);stroke-width:1}
.radar{opacity:.85;transition:opacity .6s var(--ease)}
/* Girişe odaklanınca radar hafifçe canlanır — arayüz tepki veriyor hissi */
.hero:focus-within .radar{opacity:1}
.radar .sweep{transform-origin:410px 410px;animation:turn 9s linear infinite}
/* Noktalar, süpürme tam üzerlerinden geçtiği anda yanar: her birinin gecikmesi
   merkeze göre açısal konumundan hesaplandı (9 sn = tam tur). */
.radar .plot{fill:var(--brand);opacity:0;animation:ping 9s linear infinite}
@keyframes turn{to{transform:rotate(360deg)}}
/* r (yarıçap) yerine transform:scale — SVG geometrisini her karede yeniden
   hesaplatmak yerine GPU'da bileştirilir. transform-origin her <circle>'ın
   kendi cx/cy'sine satır içinde ayarlanmıştır (bkz. index.php). */
@keyframes ping{
  0%{opacity:.8;transform:scale(1.8)}
  6%{opacity:.38;transform:scale(2.7)}
  13%{opacity:.14;transform:scale(3.3)}
  20%,100%{opacity:0;transform:scale(1)}
}
@media(max-width:640px){.radar{width:620px;top:-90px}}
.badge{
  display:inline-flex;align-items:center;gap:8px;
  padding:7px 15px 7px 11px;border-radius:99px;margin-bottom:28px;
  background:var(--surface);border:1px solid var(--line);
  font-size:13px;color:var(--ink-2);font-weight:500;box-shadow:var(--sh-1);
}
.badge b{
  width:6px;height:6px;border-radius:50%;background:var(--brand);
  box-shadow:0 0 0 3px var(--brand-tint);animation:breathe 2.6s ease-in-out infinite;
}
@keyframes breathe{0%,100%{opacity:.45;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}

.hero h1{
  font-size:clamp(2.35rem,5.6vw,3.9rem);font-weight:300;
  letter-spacing:-.042em;line-height:1.08;margin-bottom:22px;
}
.hero h1 b{font-weight:600;color:var(--brand-deep)}
.lede{color:var(--muted);max-width:520px;margin:0 auto 40px;font-size:17px;line-height:1.65}

/* ── Form ── */
.scan-form{
  max-width:520px;margin:0 auto;display:flex;gap:8px;padding:8px;
  background:var(--surface);border:1px solid var(--line);border-radius:99px;
  box-shadow:var(--sh-2);transition:box-shadow .35s var(--ease),border-color .35s;
}
.scan-form:focus-within{border-color:var(--brand-line);box-shadow:0 0 0 4px var(--brand-tint),var(--sh-2)}
.scan-form input{
  flex:1;min-width:0;border:0;outline:0;background:transparent;
  font-family:inherit;font-size:16px;color:var(--ink);padding:13px 20px;letter-spacing:-.01em;
}
.scan-form input::placeholder{color:var(--faint-deco)}
.btn{
  border:0;cursor:pointer;white-space:nowrap;font-family:inherit;
  font-weight:600;font-size:15px;padding:13px 26px;border-radius:99px;
  background:var(--ink);color:#fff;letter-spacing:-.01em;
  transition:transform .3s var(--ease),background .25s,box-shadow .3s;
}
.btn:hover{background:#000;transform:translateY(-1px);box-shadow:0 8px 20px -8px rgba(22,24,29,.5)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.45;cursor:wait;transform:none;box-shadow:none}
/* --brand üzerinde beyaz metin WCAG AA'yı geçemiyor (3.44:1); --brand-deep kullanılıyor */
.btn-brand{background:var(--brand-deep)}
.btn-brand:hover{background:#086a4f;box-shadow:0 8px 20px -8px rgba(14,157,118,.6)}
@media(max-width:520px){.scan-form{flex-direction:column;border-radius:22px}.btn{width:100%}}

.err{display:none;color:var(--bad);font-size:14px;margin-top:16px}
.err.on{display:block;animation:up .35s var(--ease) both}

.engines{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;margin-top:34px}
.engines span{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--muted);font-weight:500}
.engines i{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85;animation:breathe 3s ease-in-out infinite}

/* ── Yükleniyor ── */
.loading{display:none;padding:56px 0 96px}
.loading.on{display:block;animation:up .4s var(--ease) both}
.load-card{
  max-width:420px;margin:0 auto;padding:34px 30px;text-align:center;
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh-2);
}
/* Yükleme kartının üstündeki marka alanı: logo + arkasında nefes alan bir
   parıltı + üzerinden geçen bir "tarama" ışığı. "Taranıyor" hissini kelimeye
   değil doğrudan harekete bağlıyor. */
.load-brand{position:relative;width:132px;margin:2px auto 24px;overflow:hidden;border-radius:10px}
.load-logo{width:100%;height:auto;display:block;position:relative;z-index:1}
.load-glow{
  position:absolute;inset:-60% -30%;z-index:0;pointer-events:none;
  background:radial-gradient(closest-side, rgba(14,157,118,.22), transparent 72%);
  animation:loadGlow 2.6s ease-in-out infinite;
}
@keyframes loadGlow{0%,100%{opacity:.55;transform:scale(.9)}50%{opacity:1;transform:scale(1.06)}}
.load-sweep{
  position:absolute;top:0;bottom:0;left:-65%;width:45%;z-index:2;pointer-events:none;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.9) 45%, transparent 88%);
  mix-blend-mode:overlay;
  animation:loadSweep 2.4s cubic-bezier(.45,0,.2,1) infinite;
}
@keyframes loadSweep{0%,15%{left:-65%}70%,100%{left:120%}}
@media(prefers-reduced-motion:reduce){
  .load-glow,.load-sweep{animation:none}
  .load-glow{opacity:.7}
}

.load-ring{width:74px;height:74px;margin:0 auto 22px;position:relative}
.load-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.load-ring .t{fill:none;stroke:var(--line);stroke-width:5}
.load-ring .scan{transform-origin:37px 37px;animation:turn 2.4s linear infinite}
.load-ring .a{
  fill:none;stroke:var(--brand);stroke-width:5;stroke-linecap:round;
  stroke-dasharray:207;stroke-dashoffset:207;transition:stroke-dashoffset .6s var(--ease);
}
.load-pct{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:15px;font-weight:600;color:var(--ink);letter-spacing:-.02em;
}
.load-host{font-size:15px;font-weight:600;margin-bottom:4px;letter-spacing:-.02em}
.load-sub{font-size:13.5px;color:var(--muted);margin-bottom:24px}
.steps{display:flex;flex-direction:column;gap:2px;text-align:left}
.step{
  display:flex;align-items:center;gap:11px;padding:9px 4px;
  font-size:13.5px;color:var(--faint);transition:color .4s;
}
.step .tick{
  width:17px;height:17px;border-radius:50%;flex-shrink:0;position:relative;
  border:1.5px solid var(--line);transition:all .4s var(--ease);
}
.step.run{color:var(--ink-2)}
.step.run .tick{border-color:var(--brand);animation:spinDash 1s linear infinite}
.step.run .tick::after{
  content:'';position:absolute;inset:2px;border-radius:50%;background:var(--brand);
  animation:breathe 1.2s ease-in-out infinite;
}
.step.done{color:var(--ink-2)}
.step.done .tick{background:var(--brand);border-color:var(--brand);animation:none}
.step.done .tick::after{
  content:'';position:absolute;inset:0;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/11px no-repeat;
  animation:pop .35s var(--ease) both;
}
@keyframes spinDash{to{transform:rotate(360deg)}}
@keyframes pop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}

/* ── Sonuç ── */
.result{display:none;padding-bottom:110px}
.result.on{display:block}
.card{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh-2);
}

/* Skor paneli */
.verdict{
  display:grid;grid-template-columns:1fr 300px;gap:20px;padding:40px;align-items:center;
  margin-bottom:14px;position:relative;overflow:hidden;isolation:isolate;
}
@media(max-width:880px){.verdict{grid-template-columns:1fr;gap:30px;padding:32px 24px}}

/* Skor renginden yumuşak ışık + camgöbeği karşı ton */
.verdict::before{
  content:'';position:absolute;inset:0;z-index:-2;pointer-events:none;
  background:
    radial-gradient(560px 340px at 6% -18%,var(--vc-soft,rgba(14,157,118,.12)),transparent 62%),
    radial-gradient(460px 320px at 104% 118%,rgba(46,197,221,.10),transparent 64%);
}

/* ── Marka tonu ──
   Taranan sitenin kendi logosundan çıkarılan renk (bkz. Scanner::dominantColor)
   sağ üstten gelen çok hafif bir geçiş olarak eklenir. Rapor "herkese aynı
   şablon" hissi vermesin diye var; ama opaklık bilinçli olarak çok düşük:
   burada asıl anlatılması gereken şey SKOR, marka değil. Renk baskın olsaydı
   skorun yeşil/turuncu/kırmızı sinyaliyle yarışırdı.
   color-mix desteklenmiyorsa kural sessizce düşer, kart eski hâlinde kalır. */
/* Sert bir üst şerit yerine (ilk denemede öyleydi, "kaplama" gibi
   duruyordu) kartın İÇİNE doğru yumuşak bir ışık yansıması: köşeden gelen
   geniş bir parıltı + çapraz süzülen ince bir "sheen" katmanı. Kenarlarda
   görünür bir çizgi/kaplama yok, renk tamamen zeminin bir parçası gibi. */
.verdict.has-brand::before{
  background:
    radial-gradient(560px 340px at 6% -18%,var(--vc-soft,rgba(14,157,118,.12)),transparent 62%),
    radial-gradient(720px 460px at 102% -14%,color-mix(in srgb,var(--bc) 15%,transparent),transparent 68%),
    linear-gradient(118deg,transparent 38%,color-mix(in srgb,var(--bc) 6%,transparent) 58%,transparent 78%),
    radial-gradient(460px 320px at 104% 118%,color-mix(in srgb,var(--bc) 7%,transparent),transparent 64%);
}
/* Radar motifini hatırlatan çok soluk eşmerkezli halkalar (gauge'ın arkasında) */
.verdict::after{
  content:'';position:absolute;left:-30px;top:50%;transform:translateY(-50%);
  width:360px;height:360px;border-radius:50%;pointer-events:none;z-index:-1;
  background:repeating-radial-gradient(circle,transparent 0 34px,rgba(22,24,29,.03) 34px 35px);
  mask-image:radial-gradient(circle,#000 34%,transparent 70%);
  -webkit-mask-image:radial-gradient(circle,#000 34%,transparent 70%);
}
@media(max-width:880px){.verdict::after{left:50%;top:130px;transform:translate(-50%,-50%);width:300px;height:300px}}

/* Kadranın arkasında skor renginde yumuşak parıltı */
.gauge::before{
  content:'';position:absolute;inset:-14px;border-radius:50%;z-index:-1;
  background:radial-gradient(circle,var(--vc-soft,rgba(14,157,118,.14)),transparent 66%);
  filter:blur(14px);
}
.v-main{display:flex;align-items:center;gap:34px}
@media(max-width:560px){.v-main{flex-direction:column;text-align:center;gap:24px}}

.gauge{position:relative;width:150px;height:150px;flex-shrink:0}
.gauge svg{width:100%;height:100%;transform:rotate(-90deg)}
.gauge .t{fill:none;stroke:var(--line);stroke-width:8}
.gauge .a{fill:none;stroke-width:8;stroke-linecap:round;stroke-dasharray:408;stroke-dashoffset:408;transition:stroke-dashoffset 1.5s var(--ease)}
.gauge-val{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.gauge-num{font-size:52px;font-weight:300;letter-spacing:-.05em;line-height:1}
.gauge-max{font-size:12px;color:var(--faint);font-weight:500;margin-top:2px}

.v-text .host{
  display:inline-flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink-2);
  background:var(--surface);box-shadow:inset 0 0 0 1px var(--line),var(--sh-1);
  padding:6px 15px 6px 7px;border-radius:99px;margin-bottom:14px;
}
/* Firmanın kendi logosu — kare/ikon biçimliler */
.fav{
  width:28px;height:28px;border-radius:8px;object-fit:contain;background:#fff;
  flex-shrink:0;box-shadow:0 0 0 1px var(--line-2);padding:2px;
}
/* Yatay (wordmark) logolar kareye sıkışmasın — oranını koruyup genişlesin */
.fav.fav-wide{
  width:auto;max-width:130px;height:24px;border-radius:4px;
  box-shadow:none;background:transparent;padding:0;
}
@media(max-width:560px){.fav.fav-wide{max-width:104px;height:21px}}
.fav-ph{
  width:28px;height:28px;border-radius:8px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--brand-tint);color:var(--brand-deep);
  font-size:14px;font-weight:700;text-transform:uppercase;
}
/* Yükleme kartındaki site kimliği */
.load-id{display:flex;align-items:center;justify-content:center;gap:9px;margin-bottom:4px}
.load-id .fav,.load-id .fav-ph{width:22px;height:22px;border-radius:7px}
.v-text h2{font-size:27px;font-weight:600;letter-spacing:-.032em;line-height:1.22;margin-bottom:10px}
.v-text p{font-size:14px;color:var(--muted)}

/* Radar grafiği */
.spider{width:100%;max-width:260px;margin:0 auto;display:block}
.spider .web{fill:none;stroke:var(--line);stroke-width:1}
.spider .axis{stroke:var(--line);stroke-width:1}
.spider .shape{
  fill:rgba(14,157,118,.13);stroke:var(--brand);stroke-width:2;
  stroke-linejoin:round;transform-origin:110px 106px;
  transform:scale(.02);opacity:0;
  transition:transform 1.1s var(--ease) .3s,opacity .5s .3s;
}
.spider .shape.in{transform:scale(1);opacity:1}
.spider .pt{fill:var(--brand);opacity:0;transition:opacity .5s 1.05s}
.spider .pt.in{opacity:1}
.spider text{font-family:'Plus Jakarta Sans',sans-serif;font-size:10.5px;font-weight:500;fill:var(--muted)}

/* Uyarı bandı */
.alert{
  display:none;gap:15px;padding:20px 22px;margin-bottom:14px;align-items:flex-start;
  background:var(--bad-tint);border:1px solid var(--bad-line);border-radius:var(--r-md);
}
.alert.on{display:flex;animation:up .5s var(--ease) .15s both}
.alert .ic{
  flex-shrink:0;width:30px;height:30px;border-radius:9px;background:#fff;
  display:flex;align-items:center;justify-content:center;
  color:var(--bad);font-weight:700;font-size:16px;box-shadow:var(--sh-1);
}
.alert h4{font-size:15px;font-weight:600;margin-bottom:5px;letter-spacing:-.02em;color:#a83244}
.alert p{font-size:14px;color:var(--ink-2);line-height:1.6}

/* ── Özet istatistik kartları ── */
/* ── ÖLÇÜM KONSOLU (kullanıcı geri bildirimiyle 3. kez yeniden tasarlandı,
   2026-08-15): önceki sürüm her karta beş ayrı renk aracı yüklüyordu
   (renkli zemin + kalın sol şerit + köşe ışığı + alt çizgi + dolu rozet)
   ve toplamda oyuncaklı/dağınık duruyordu. Yeni yaklaşım tek bir bilinçli
   harekete yaslanıyor: dört kart, hava boşluklu ayrı kutular değil, TEK
   birleşik bir "ölçüm paneli"nin ince çizgilerle bölünmüş dört segmenti.
   Renk her segmentte yalnızca ÜÇ küçük yerde: üstteki 3px durum çizgisi,
   soluk zeminli ikon ve soluk zeminli hüküm etiketi. Rakam, ürünün
   radar/teşhis kimliğine uygun olarak MONO dizgiyle, bir "cihaz okuması"
   gibi. Amaç: premium bir enstrüman hissi — renk bağırmadan konuşsun. */
.stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-bottom:14px;
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh-1);overflow:hidden;
}
.stat{
  padding:18px 20px 16px;position:relative;display:flex;flex-direction:column;
  background:linear-gradient(180deg,color-mix(in srgb,var(--sc,var(--brand)) 6%,var(--surface)),var(--surface) 46%);
  transition:background .3s;
}
.stat:not(:first-child){border-left:1px solid var(--line)}
@media(max-width:760px){
  .stats{grid-template-columns:1fr 1fr}
  .stat:nth-child(odd){border-left:0}
  .stat:nth-child(n+3){border-top:1px solid var(--line)}
}
.stat:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--sc,var(--brand)) 11%,var(--surface)),var(--surface) 60%)}
/* Segmentin durum çizgisi: kartın "iyi/orta/kritik" hükmü, panelin üst
   kenarında ince ama net bir renk çizgisi olarak okunur. */
.stat::after{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:var(--sc,var(--brand));
}
.stat-k{
  font-size:11px;color:var(--faint);font-weight:700;margin-bottom:10px;
  letter-spacing:.07em;text-transform:uppercase;
  display:flex;align-items:center;gap:6px;
}
/* Rakam: cihaz okuması — mono dizgi, mürekkep rengine duruma göre yalnızca
   hafif bir ton karışıyor (tam renkli rakam panoyu yeniden bağırtıyordu). */
.stat-v{
  font-family:'DM Mono',ui-monospace,monospace;
  font-size:32px;font-weight:500;letter-spacing:-.03em;line-height:1;
  color:color-mix(in srgb,var(--sc,var(--ink)) 55%,var(--ink));
  display:flex;align-items:baseline;gap:4px;font-variant-numeric:tabular-nums;
}
.stat-v small{font-size:13px;font-weight:500;color:var(--faint);letter-spacing:0;font-family:inherit}
.stat-n{font-size:12.5px;color:var(--ink-2);margin-top:8px;line-height:1.45;font-weight:500}
/* İkon: soluk zeminli, durum renkli — dolu blok değil (renk bütçesi
   üst çizgi + hüküm etiketiyle paylaşılıyor). */
.stat-ic{
  width:30px;height:30px;border-radius:9px;margin-bottom:10px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  color:var(--sc,var(--brand));
  background:color-mix(in srgb,var(--sc,var(--brand)) 13%,transparent);
}
.stat-ic svg{width:16px;height:16px;stroke-width:2.2}

/* Hüküm etiketi: soluk zeminli, koyulaştırılmış durum renkli metin —
   dolu beyaz-üstü-renk versiyonu panodaki en gürültülü parçaydı. */
.stat-badge{
  position:absolute;top:16px;right:16px;z-index:1;
  font-size:10.5px;font-weight:700;letter-spacing:.02em;line-height:1;
  padding:5px 10px;border-radius:99px;white-space:nowrap;
  color:color-mix(in srgb,var(--sc,var(--brand)) 72%,var(--ink));
  background:color-mix(in srgb,var(--sc,var(--brand)) 12%,transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sc,var(--brand)) 28%,transparent);
}
/* Mini görselleştirmeler segmentin ALT kenarına yaslanır (flex column +
   margin-top:auto) — dört segmentin alt satırı hizalı durur, panel tek
   parça bir cihaz gibi okunur. */
.stat-dots,.stat-track,.spark,.stat-chips{margin-top:auto!important;padding-top:12px}
/* Kart 1 — dört motorun mini durum çubukları (daha kalın, daha okunur) */
.stat-dots{display:flex;gap:5px}
.stat-dots .sd{
  flex:1;height:6px;border-radius:99px;background:var(--bad-line);
  transition:background .3s;
}
.stat-dots .sd.on{background:var(--brand)}
/* Kart 4 — toplam madde içindeki tamamlanma oranı */
.stat-track{height:6px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:12px}
.stat-track-fill{
  height:100%;width:100%;border-radius:99px;background:var(--sc,var(--brand));
  transform:scaleX(0);transform-origin:left;transition:transform 1.1s var(--ease);
}
/* Mini sütun grafiği (başlık dağılımı) — daha yüksek ve dolu, "grafik"
   olduğu anlaşılsın diye; önceki hâli ince çizgiler gibi kayboluyordu. */
.spark{display:flex;align-items:flex-end;gap:5px;height:34px;margin-top:12px}
.spark i{
  flex:1;border-radius:4px 4px 0 0;min-height:4px;transform-origin:bottom;
  background:linear-gradient(180deg,var(--sc,var(--brand)),color-mix(in srgb,var(--sc,var(--brand)) 45%,transparent));
  opacity:.28;animation:grow .6s var(--ease) both;
}
.spark i.on{opacity:.9}
@keyframes grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.spark-x{display:flex;gap:5px;margin-top:6px}
.spark-x span{flex:1;text-align:center;font-size:10.5px;color:var(--faint);font-variant-numeric:tabular-nums}

/* ── Şema tipi çipleri ── */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.chip{
  font-size:12.5px;font-weight:500;padding:6px 13px;border-radius:99px;
  display:inline-flex;align-items:center;gap:6px;
}
.chip.has{background:var(--brand-tint);color:var(--brand-deep);box-shadow:inset 0 0 0 1px var(--brand-line)}
.chip.miss{color:var(--faint);border:1px dashed var(--line);background:transparent}
.chip.has::before{content:'✓';font-size:11px}
.chip.miss::before{content:'+';font-size:13px}

/* ── Kopyalanabilir kod kutusu ── */
.code{
  border-radius:var(--r-md);overflow:hidden;background:#171a20;
  box-shadow:0 2px 4px rgba(22,24,29,.06),0 16px 34px -18px rgba(22,24,29,.4);
}
.code-bar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.07);
}
.code-file{font-size:12.5px;color:#8d95a3;font-weight:500;display:flex;align-items:center;gap:8px}
.code-file b{width:7px;height:7px;border-radius:50%;background:#4fd6a8;flex-shrink:0}
.copy{
  border:0;cursor:pointer;font-family:inherit;font-size:12px;font-weight:600;
  padding:6px 13px;border-radius:8px;background:rgba(255,255,255,.09);color:#dfe4ec;
  transition:background .25s,color .25s;
}
.copy:hover{background:rgba(255,255,255,.16)}
.copy.done{background:rgba(79,214,168,.2);color:#7ff0c8}
.code pre{
  margin:0;padding:16px 18px;overflow-x:auto;
  font-family:'DM Mono',ui-monospace,monospace;font-size:12.5px;line-height:1.75;
  color:#c7ceda;white-space:pre;
}
.code .k{color:#7fd3f0}
.code .s{color:#a5e6a5}
.code .c{color:#6b7484;font-style:italic}
.code-note{font-size:13px;color:var(--muted);margin-top:10px}

/* Bölüm başlıkları */
.sec{margin:32px 0 14px;display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap}
.sec h3{font-size:20px;font-weight:600;letter-spacing:-.028em}
.sec span{font-size:13.5px;color:var(--faint)}

/* AI motor kartları */
.bots{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:820px){.bots{grid-template-columns:repeat(2,1fr)}}
@media(max-width:400px){.bots{grid-template-columns:1fr}}
.bot{
  padding:22px 20px;border-radius:var(--r-md);background:var(--surface);
  border:1px solid var(--line);box-shadow:var(--sh-1);position:relative;overflow:hidden;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease);
}
.bot:hover{transform:translateY(-3px);box-shadow:var(--sh-3)}
/* Motorun kurumsal renginden yumuşak esinti */
.bot.ok{
  background:linear-gradient(168deg,var(--e-soft) 0%,var(--surface) 62%);
  border-color:var(--e-line);
}
.bot.ok::before{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,transparent,var(--e),transparent);opacity:.55;
}
.bot.ok::after{
  content:'';position:absolute;top:-40px;right:-40px;width:120px;height:120px;
  border-radius:50%;background:var(--e);opacity:.05;pointer-events:none;
  transition:opacity .45s var(--ease),transform .45s var(--ease);
}
.bot.ok:hover::after{opacity:.09;transform:scale(1.15)}
.bot.no{background:linear-gradient(168deg,var(--bad-tint),var(--surface) 78%);border-color:var(--bad-line)}
.bot-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:15px}
.bot-name{font-size:16px;font-weight:600;letter-spacing:-.025em}
.bot-token{font-size:12px;color:var(--faint);margin-top:1px}

/* Motor simgesi — özgün geometrik glif, marka renginde */
.glyph{
  position:relative;z-index:1;
  width:38px;height:38px;border-radius:12px;flex-shrink:0;margin-bottom:14px;
  display:flex;align-items:center;justify-content:center;
  transition:transform .45s var(--ease),box-shadow .45s var(--ease);
}
.glyph svg{width:20px;height:20px}
.bot.ok .glyph{
  color:var(--e);
  background:linear-gradient(150deg,var(--e-mid),var(--e-soft));
  box-shadow:inset 0 0 0 1px var(--e-line);
}
.bot:hover .glyph{transform:scale(1.07) rotate(-5deg)}
.bot.ok:hover .glyph{box-shadow:inset 0 0 0 1px var(--e-line),0 6px 16px -6px var(--e-mid)}
.bot.no .glyph{color:var(--faint);background:#fff;box-shadow:inset 0 0 0 1px var(--bad-line)}

.bot-top,.pill{position:relative;z-index:1}
/* Kimlik (glyph, üst çizgi) motor rengindedir; durum (orb, pill) her zaman
   yeşil/kırmızı — ikisini aynı renk kanalına karıştırmamak netliği korur. */
.orb{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:6px}
.bot.ok .orb{background:var(--brand);box-shadow:0 0 0 4px var(--brand-tint);animation:breathe 2.8s ease-in-out infinite}
.bot.no .orb{background:var(--bad);box-shadow:0 0 0 4px var(--bad-tint)}
/* Durum rozeti (pill): motorun kendi kurumsal rengi yerine BİLİNÇLİ olarak
   tek ve tutarlı bir "iyi/kötü" renk dili kullanır (yeşil/kırmızı) + ikon.
   Neden: "Erişebiliyor" dört farklı motor renginde (turuncu, mavi, camgöbeği...)
   gösterilince, tek bakışta "bu iyi mi kötü mü" ayrımı belirsizleşiyordu —
   turuncu bir nokta çoğu arayüzde "uyarı" çağrışımı yapar. Motorun kendi rengi
   yalnızca glif ve üst çizgide (kimlik/dekor) kalmaya devam ediyor. */
.pill{
  display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;
  padding:6px 12px;border-radius:99px;letter-spacing:-.01em;
}
.pill svg{width:12px;height:12px;stroke-width:3.4;flex-shrink:0}
.bot.ok .pill{color:var(--brand-deep);background:var(--brand-tint);box-shadow:inset 0 0 0 1px var(--brand-line)}
/* --bad, --bad-tint zemininde küçük kalın metin için AA'yı (4.5:1) geçemiyor
   (3.08:1) — yalnızca bu rozette koyulaştırılmış bir kırmızı kullanılıyor. */
.bot.no .pill{color:#c23a4c;background:var(--bad-tint);box-shadow:inset 0 0 0 1px var(--bad-line)}

/* Rozetin altındaki tek satırlık gerekçe: engel hangi katmanda,
   ölçüm doğrulandı mı, kısmi engel var mı. */
.bot-why{
  display:block;margin-top:9px;font-size:11.5px;line-height:1.4;
  color:var(--faint);font-weight:500;
}
.bot-why.ok{color:var(--brand-deep)}
.bot-why.warn{color:#c23a4c}

/* ── Sentez baloncuğu ──
   Özet kartlarının altında, taramanın kendi verisinden türetilmiş tek
   cümlelik bulgu. Marka yeşilinden/kırmızısından/turuncusundan bilinçli
   olarak ayrı: logodaki camgöbeği-yeşil geçişinin camgöbeği ucu burada
   baskın renk — "durum" değil "senteze indirgenmiş bulgu" hissi versin diye. */
.insight{
  display:flex;gap:16px;align-items:flex-start;
  padding:20px 24px;border-radius:var(--r-lg);margin-bottom:14px;
  background:linear-gradient(155deg, rgba(46,197,221,.1), var(--surface) 55%);
  box-shadow:inset 0 0 0 1px rgba(46,197,221,.26), var(--sh-1);
}
.insight-ic{
  width:36px;height:36px;border-radius:11px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg, var(--brand-cyan), var(--brand));
  color:#fff;box-shadow:0 4px 14px -4px rgba(46,197,221,.55);
}
.insight-ic svg{width:18px;height:18px}
.insight-b{min-width:0}
.insight-tag{
  font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:#127c8f;display:block;margin-bottom:5px;
}
.insight-b h4{font-size:15.5px;font-weight:600;letter-spacing:-.022em;margin-bottom:5px;color:var(--ink);line-height:1.32}
.insight-b p{font-size:13.5px;color:var(--ink-2);line-height:1.6}
@media(max-width:520px){.insight{padding:17px 18px;gap:12px}}

/* ── "Yapay zeka sizi nasıl görüyor?" — gerçek model çağrısı ──
   Sitedeki TEK gerçek canlı model çağrısı burada oluyor; bu yüzden bilinçli
   olarak kendine has, "elektrikli/canlı" hissettiren yumuşak bir indigo
   tonu kullanılıyor — markanın yeşil/camgöbeğinden ve durum renklerinden
   (kırmızı/turuncu) ayrı, tek seferlik bir kimlik. Sahte bir "AI moru"
   değil: gerçekten bir modelin çalıştığı TEK yer burası olduğu için hak
   edilmiş bir ayrım. Işıltı ince ve nefes alır tarzda — parlak/gürültülü
   gradyan yok. */
.ai-ask{
  position:relative;padding:24px;border-radius:var(--r-lg);margin-bottom:14px;
  background:var(--surface);overflow:hidden;isolation:isolate;
  box-shadow:0 0 0 1px var(--violet-line), 0 1px 2px rgba(22,24,29,.04);
}
/* Sağ üstte çok soluk, nefes alan bir ışık — verdict kartındaki teknikle akraba */
.ai-ask::before{
  content:'';position:absolute;top:-70px;right:-60px;width:230px;height:230px;
  border-radius:50%;z-index:-1;pointer-events:none;
  background:radial-gradient(closest-side, rgba(97,82,201,.16), transparent 72%);
  animation:aiGlow 4.5s ease-in-out infinite;
}
@keyframes aiGlow{0%,100%{opacity:.65;transform:scale(.92)}50%{opacity:1;transform:scale(1.05)}}
.ai-ask-badge{
  display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;color:var(--violet-deep);
  background:var(--violet-tint);padding:5px 12px 5px 10px;border-radius:99px;
  box-shadow:inset 0 0 0 1px var(--violet-line);margin-bottom:12px;
}
.ai-ask-badge::before{
  content:'';width:6px;height:6px;border-radius:50%;background:var(--violet);
  box-shadow:0 0 0 3px var(--violet-tint);animation:breathe 2.4s ease-in-out infinite;
}
.ai-ask-head h3{font-size:16.5px;font-weight:600;letter-spacing:-.024em;margin-bottom:6px}
.ai-ask-head p{font-size:13.5px;color:var(--muted);line-height:1.6;max-width:56ch;margin-bottom:16px}
.ai-ask-btn{
  font-size:14px;padding:11px 22px;background:var(--violet);
  box-shadow:0 6px 18px -8px rgba(97,82,201,.55);
}
.ai-ask-btn:hover{background:var(--violet-deep);box-shadow:0 8px 22px -8px rgba(97,82,201,.65)}
.ai-ask.answered .ai-ask-head p{margin-bottom:0}

/* "Markanız yapay zekada geçiyor mu?" — bkz. scan.js brandVisCard() */
.bv-badge-pro::after{
  content:'PRO';margin-left:6px;padding:1px 6px;border-radius:99px;font-size:9px;
  background:var(--violet);color:#fff;letter-spacing:.04em;
}
.bv-result{margin-top:16px}
.bv-providers{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.bv-row-single{padding:14px 16px;border-radius:var(--r-md);background:var(--violet-tint)}
.bv-row-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.bv-provider{font-size:12.5px;font-weight:700;color:var(--violet-deep)}
.bv-live{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#0e9d76;background:rgba(14,157,118,.12);padding:2px 7px;border-radius:99px}
.bv-live.off{color:var(--faint);background:var(--line)}
.bv-single-pct{font-size:28px;font-weight:800;color:var(--violet-deep);letter-spacing:-.02em}
.bv-single-desc{font-size:12.5px;color:var(--ink-2);line-height:1.5;margin-top:4px}
.bv-model{color:var(--faint)}

/* Markanın CEVAP İÇİNDE geçtiği yerden alıntılar — kullanıcı isteği,
   2026-08-15: "sorularda ne gibi yerlerde geçtiğinden de alıntılar
   ekle". Yalnızca yüzdeyi göstermek yetersizdi, bağlam da isteniyordu. */
.bv-excerpts{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.bv-excerpt{
  position:relative;font-size:12px;font-style:italic;color:var(--ink-2);
  line-height:1.55;padding:7px 12px 7px 14px;border-radius:0 8px 8px 0;
  border-left:3px solid var(--violet);background:color-mix(in srgb, var(--surface) 60%, transparent);
}
.bv-note{margin-top:14px;font-size:11.5px;color:var(--faint);line-height:1.55;max-width:60ch}

.ai-ask-result{margin-top:18px;display:flex;flex-direction:column;gap:14px}
.ai-ask-block{
  padding:16px 18px;border-radius:var(--r-md);
  background:linear-gradient(155deg, rgba(97,82,201,.08), var(--surface) 60%);
  box-shadow:inset 0 0 0 1px var(--violet-line);
}
.ai-ask-block.dim{background:var(--line-2);box-shadow:none}
.ai-ask-label{
  font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--violet-deep);display:block;margin-bottom:7px;
}
.ai-ask-block.dim .ai-ask-label{color:var(--faint)}
/* white-space:pre-line — model artık çok paragraflı cevap veriyor (bkz.
   AiInsight prompt'u); satır sonları HTML'de kaybolmasın diye korunuyor. */
.ai-ask-summary,.ai-ask-own{font-size:14px;color:var(--ink-2);line-height:1.7;white-space:pre-line}
.ai-ask-err{color:var(--bad);font-size:13px;margin-top:12px}
.ai-ask-err[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.ai-ask::before{animation:none;opacity:.8}}

/* Öncelikli adımlar */
.acts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:820px){.acts{grid-template-columns:1fr}}
.act{
  padding:24px 22px;border-radius:var(--r-md);background:var(--surface);
  border:1px solid var(--line);box-shadow:var(--sh-1);position:relative;
}
.act.in:hover{transform:translateY(-3px);box-shadow:var(--sh-3)}
.act-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.act-n{
  width:24px;height:24px;border-radius:8px;background:var(--ink);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;flex-shrink:0;
}
.act-gain{font-size:12px;font-weight:600;color:var(--brand-deep);background:var(--brand-tint);padding:4px 10px;border-radius:99px}
.act h4{font-size:15px;font-weight:600;margin-bottom:8px;letter-spacing:-.022em;line-height:1.35}
.act p{font-size:13.5px;color:var(--muted);line-height:1.6}

/* Kategoriler */
.cats{display:flex;flex-direction:column;gap:10px}
.cat{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--sh-1);overflow:hidden;
}
.cat-head{
  width:100%;border:0;background:none;cursor:pointer;font-family:inherit;color:inherit;text-align:left;
  padding:15px 22px;display:flex;align-items:center;gap:18px;transition:background .25s;
}
.cat-head:hover{background:var(--line-2)}
.cat-name{font-size:15px;font-weight:600;letter-spacing:-.022em;width:190px;flex-shrink:0}
@media(max-width:680px){.cat-name{width:auto;flex:1}}
.cat-bar{display:block;flex:1;height:5px;border-radius:99px;background:var(--line);overflow:hidden;min-width:40px}
@media(max-width:680px){.cat-bar{display:none}}
/* width yerine transform:scaleX — layout yeniden hesaplaması gerektirmeden
   yalnızca GPU'da bileştirilir (compositor-only), animasyon boyunca akıcı kalır. */
.cat-fill{
  display:block;height:100%;width:100%;border-radius:99px;
  transform:scaleX(0);transform-origin:left;
  transition:transform 1.1s var(--ease);
}
.cat-score{font-size:13px;font-weight:600;color:var(--muted);min-width:50px;text-align:right;flex-shrink:0}
.chev{width:16px;height:16px;color:var(--faint-deco);flex-shrink:0;transition:transform .35s var(--ease)}
.chev.open{transform:rotate(180deg)}
.cat-body{
  display:grid;grid-template-rows:0fr;
  transition:grid-template-rows .45s var(--ease),opacity .3s;
  opacity:0;border-top:1px solid transparent;
}
.cat-body>div{overflow:hidden;min-height:0}
.cat-body.open{grid-template-rows:1fr;opacity:1;border-top-color:var(--line-2)}

.item{padding:14px 22px;display:flex;gap:13px;border-bottom:1px solid var(--line-2)}
.item:last-child{border-bottom:0}
.mk{
  width:19px;height:19px;border-radius:7px;flex-shrink:0;margin-top:2px;
  display:flex;align-items:center;justify-content:center;
}
.mk.ok{background:var(--brand-tint)}
.mk.no{background:var(--bad-tint)}
.mk svg{width:11px;height:11px;stroke-width:3.2}
.mk.ok svg{color:var(--brand)}
.mk.no svg{color:var(--bad)}
.it-b{flex:1;min-width:0}
.it-top{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.it-label{font-size:14.5px;font-weight:500;letter-spacing:-.015em}
.it-pts{font-size:12px;color:var(--faint);font-weight:500;flex-shrink:0}
.it-detail{font-size:13.5px;color:var(--muted);margin-top:3px}
.it-fix{
  display:none;font-size:13.5px;line-height:1.6;color:var(--ink-2);margin-top:11px;
  padding:12px 15px;border-radius:var(--r-sm);background:var(--brand-tint);
}
.it-fix.on{display:block}

/* CTA */
/* ═══════════════════════════════════════════
   Üyeliksiz ziyaretçiye gösterilen kilit kartı.
   Bilinçli olarak sahte "bulanık içerik" göstermiyor: olmayan veriyi
   varmış gibi sunmak yanıltıcı olur. Bunun yerine ne olduğunu ve kaç
   madde olduğunu açıkça yazan sakin bir kart.
   ═══════════════════════════════════════════ */
.locked{
  margin-top:34px;padding:38px 34px;border-radius:var(--r-lg);
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-1);
}
@media(max-width:560px){.locked{padding:28px 22px}}
.locked-ic{
  width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:var(--brand-tint);color:var(--brand-deep);margin-bottom:16px;
}
.locked-ic svg{width:20px;height:20px}
.locked h3{font-size:20px;font-weight:600;letter-spacing:-.028em;margin-bottom:8px;line-height:1.3}
.locked-lead{color:var(--muted);font-size:14.5px;line-height:1.62;margin-bottom:22px;max-width:60ch}
.locked-list{list-style:none;display:flex;flex-direction:column;gap:11px;margin-bottom:26px}
.locked-list li{
  position:relative;padding-left:26px;font-size:14px;color:var(--ink-2);line-height:1.55;
}
.locked-list li::before{
  content:'';position:absolute;left:0;top:7px;width:14px;height:14px;border-radius:4px;
  background:var(--brand-tint);box-shadow:inset 0 0 0 1px var(--brand-line);
}
.locked-cta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.locked-cta .btn{text-decoration:none;font-size:14.5px;padding:13px 26px}
.locked-note{font-size:12.5px;color:var(--faint);line-height:1.6;margin-top:18px;max-width:62ch}

.cta{
  margin-top:44px;padding:52px 40px;border-radius:var(--r-lg);text-align:center;
  background:linear-gradient(170deg,var(--brand-tint),var(--surface) 70%);
  border:1px solid var(--brand-line);box-shadow:var(--sh-2);
}
@media(max-width:560px){.cta{padding:40px 24px}}
.cta h3{font-size:26px;font-weight:600;letter-spacing:-.032em;margin-bottom:12px;line-height:1.22}
.cta p{color:var(--muted);max-width:440px;margin:0 auto 28px;font-size:15px}
.cta .btn{display:inline-block;text-decoration:none;font-size:15.5px;padding:15px 32px}
.cta .fine{font-size:13px;color:var(--faint);margin-top:16px}
.again{
  display:block;margin:24px auto 0;background:none;border:0;cursor:pointer;
  font-family:inherit;font-size:14px;color:var(--muted);font-weight:500;transition:color .25s;
}
.again:hover{color:var(--brand-deep)}

footer{border-top:1px solid var(--line);padding:32px 28px;text-align:center;font-size:13px;color:var(--faint)}

/* Kaydırınca beliren kartlar */
.rv{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.rv.in{opacity:1;transform:none}

/* Buton oku */
.btn .arw{display:inline-block;margin-left:7px;transition:transform .3s var(--ease)}
.btn:hover .arw{transform:translateX(4px)}

@keyframes up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .rv{opacity:1;transform:none}
}

/* ═══════════════════════════════════════════
   PirGEO Asistanı — hazır soru çipleri + modal
   Renk kimliği (indigo) bilinçli: sitedeki TEK gerçek model çağrısı
   burada, markanın yeşilinden ayrışması bunu görsel olarak da söylüyor.
   ═══════════════════════════════════════════ */
.ai-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.ai-chip{
  border:1px solid var(--violet-line);background:var(--surface);
  color:var(--violet-deep);font-family:inherit;font-size:13.5px;font-weight:500;
  padding:9px 15px;border-radius:99px;cursor:pointer;
  transition:background .2s,transform .25s var(--ease),box-shadow .25s;
}
.ai-chip:hover{background:var(--violet-tint);transform:translateY(-1px);box-shadow:var(--sh-1)}
.ai-chip:active{transform:translateY(0)}
.ai-chip-own{border-style:dashed;color:var(--muted)}
.ai-chip-own:hover{color:var(--violet-deep)}

/* ── Sayfa içi soru-cevap (2026-08-15: modaldan sayfa içine taşındı) ──
   Önceki sürüm .ai-chip tıklanınca `document.body`'e eklenen, position:fixed
   bir modal açıyordu — kullanıcı "çok kötü, bozuk geliyor" dedi. Kök neden
   yapısaldı: modal panel bağlamında (sabit sol kenar çubuklu) doğru
   hizalanması için ayrı bir `body:has(.app-side)` istisnası gerekiyordu —
   bağlama göre değişen, kırılgan bir modal. Artık backdrop/fixed-position
   YOK; soru formu ve cevaplar TAMAMEN kartın kendi akışı içinde. */
.ai-inline-form{
  display:flex;gap:8px;padding:6px;border-radius:99px;background:var(--line-2);
  margin-top:14px;
}
.ai-inline-form[hidden]{display:none}
.ai-inline-form:focus-within{box-shadow:0 0 0 3px var(--violet-tint)}
.ai-inline-input{
  flex:1;min-width:0;border:0;outline:0;background:transparent;
  font-family:inherit;font-size:14.5px;color:var(--ink);padding:10px 14px;
}
.ai-inline-form .btn{padding:10px 22px;font-size:14px}

.ai-inline-loading{display:flex;align-items:center;gap:11px;font-size:13.5px;color:var(--muted);margin-top:16px}
.ai-inline-loading[hidden]{display:none}
.ai-inline-err{color:var(--bad);font-size:13px;margin-top:12px}
.ai-inline-err[hidden]{display:none}

.ai-dots{display:inline-flex;gap:4px}
.ai-dots i{
  width:6px;height:6px;border-radius:50%;background:var(--violet);
  animation:aiDot 1.1s infinite ease-in-out;
}
.ai-dots i:nth-child(2){animation-delay:.16s}
.ai-dots i:nth-child(3){animation-delay:.32s}
@keyframes aiDot{0%,80%,100%{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.ai-dots i{animation:none;opacity:.6}}

/* Soru-cevap geçmişi — en yeni en üstte, sunucudan gelen kalıcı kayıtla
   birlikte (bkz. scan.js loadAiHistory()) doldurulur. */
.ai-thread{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.ai-thread-item{
  padding:16px 18px;border-radius:var(--r-md);background:var(--line-2);
  animation:up .35s var(--ease) both;
}
.ai-answer-q{
  font-size:13px;font-weight:600;color:var(--violet-deep);margin-bottom:12px;
  padding-bottom:10px;border-bottom:1px solid var(--violet-line);
}

/* ── Model cevabının biçimlendirilmiş hâli ──
   Model markdown benzeri metin döndürüyor (kalın vurgular, numaralı/madde
   listeleri). Düz metin olarak basmak okunaksızdı; scan.js içindeki
   sınırlı bir dönüştürücü bunları gerçek HTML'e çeviriyor. */
.ai-answer-text{font-size:14.5px;color:var(--ink-2);line-height:1.7}
.ai-answer-text p{margin-bottom:12px}
.ai-answer-text p:last-child{margin-bottom:0}
.ai-answer-text strong{font-weight:600;color:var(--ink)}
.ai-answer-text code{
  font-family:'DM Mono',ui-monospace,monospace;font-size:13px;
  background:var(--violet-tint);color:var(--violet-deep);
  padding:2px 6px;border-radius:6px;
}
.ai-answer-text ul,.ai-answer-text ol{margin:0 0 14px;padding:0;list-style:none;counter-reset:aistep}
.ai-answer-text li{
  position:relative;padding-left:30px;margin-bottom:10px;line-height:1.62;
}
.ai-answer-text li:last-child{margin-bottom:0}
/* Numaralı adım: sıra numarası kendi rozetinde */
.ai-answer-text ol > li::before{
  counter-increment:aistep;content:counter(aistep);
  position:absolute;left:0;top:1px;
  width:21px;height:21px;border-radius:7px;
  display:flex;align-items:center;justify-content:center;
  background:var(--violet-tint);color:var(--violet-deep);
  font-size:11.5px;font-weight:700;
}
/* Madde işaretli: sade nokta */
.ai-answer-text ul > li::before{
  content:'';position:absolute;left:8px;top:9px;
  width:5px;height:5px;border-radius:50%;background:var(--violet);
}
.ai-answer-text li strong:first-child{display:block;color:var(--ink);margin-bottom:2px}

/* Özet kart içi mini çipler (şema tipleri) — düz virgüllü metin yerine,
   "bunlar ayrı ayrı şeyler" bilgisini görsel olarak taşır. */
.stat-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px}
.stat-chips span{
  font-family:'DM Mono',ui-monospace,monospace;font-size:10.5px;
  padding:3px 7px;border-radius:6px;
  background:color-mix(in srgb,var(--sc,var(--brand)) 11%,transparent);
  color:var(--sc,var(--brand));white-space:nowrap;
}
.stat-chips span.more{background:var(--line-2);color:var(--faint)}

/* ═══════════════════════════════════════════
   Yazdırılabilir rapor
   Gerçek bir PDF kütüphanesi gerektirmez: tarayıcının kendi "Yazdır →
   PDF olarak kaydet" özelliğini kullanır. Panel kabuğu, pazarlama
   navigasyonu ve tıklanabilir/promosyon öğeleri gizlenir; skor,
   kategori kırılımı ve TÜM kontrol maddeleri (JS ile açık/kapalı
   durumundan bağımsız olarak) kağıtta kalır.
   ═══════════════════════════════════════════ */
.print-only{display:none}
@media print{
  @page{margin:14mm}

  /* Ekran kromu tamamen gider — kağıtta yalnızca rapor kalır. */
  #hdr,.site-footer,.skip,
  .app-side,.app-topbar,.app-foot,.app-side-backdrop,
  .no-print{display:none!important}

  /* Dekoratif ışık/blur katmanları yazdırmada hem anlamsız hem mürekkep
     israfı; ayrıca bazı tarayıcılarda garip bantlar olarak basılabiliyor. */
  body::before,.blob,.radar,.verdict::after{display:none!important}

  body,.app-main main,main{background:#fff!important;max-width:none!important}
  .wrap{position:static}

  /* İnteraktif/promosyon öğeleri: yazdırılan bir sayfada tıklanamazlar,
     yer kaplamaktan başka işe yaramazlar. */
  .ai-ask,.cta,.again,.locked-cta,.panel-scan-launcher,
  .apikey-actions,.apikey-reveal{display:none!important}

  /* Kategori maddeleri ekranda JS ile açılıp kapanıyor (accordion); kağıtta
     "kapalı" diye bir şey olmaz — hepsi her zaman açık basılır. */
  .cat-body{grid-template-rows:1fr!important;opacity:1!important;border-top-color:var(--line-2)!important}
  .cat{break-inside:avoid}
  .chev{display:none}

  /* Kartlar sayfa arasında ortadan bölünmesin. */
  .card,.stat,.verdict,.act,.insight,.locked{break-inside:avoid}
  .stats{grid-template-columns:repeat(2,1fr)!important;gap:10px}

  .print-only{display:block}
}

/* Rapor başlığı: yalnızca yazdırırken görünür. Ekran kromu (header/footer)
   gittiğinde sayfanın "kimsiz" görünmemesi için domain + tarih + marka. */
.print-head{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding-bottom:14px;margin-bottom:18px;border-bottom:1px solid var(--line);
}
.print-head .pw{font-size:15px;font-weight:700;letter-spacing:-.03em;color:var(--ink)}
.print-head .pw span{color:var(--brand)}
.print-head .pd{font-size:12px;color:var(--muted);text-align:right}

/* Yazdır düğmesi — sonuç araç çubuğu */
.result-toolbar{display:flex;justify-content:flex-end;margin-bottom:10px}
.print-btn{
  display:inline-flex;align-items:center;gap:7px;
  padding:9px 16px;border-radius:99px;border:1px solid var(--line);
  background:var(--surface);color:var(--ink-2);font-family:inherit;
  font-size:13px;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s;
}
.print-btn:hover{background:var(--line-2);border-color:var(--faint-deco)}
.print-btn svg{width:15px;height:15px;color:var(--faint)}
