/*
Theme Name: Bisasoft
Theme URI: https://bisasoft.com
Author: Bisasoft
Description: Musteri siteleri icin ANA TEMA. Tasarim icermez; SEO, hiz, KVKK uyumu ve guvenligi garanti eden dokuz katmandan olusur. Gorunum child theme'de yazilir. Once docs/00-anayasa.md okunur.
Version: 0.1.0
Requires at least: 6.5
Requires PHP: 8.1
License: GNU General Public License v2 or later
Text Domain: bisasoft
*/

/* ──────────────────────────────────────────────────────────
 * ANA TEMA STILI — YALNIZ YAPISAL.
 *
 * Buraya marka rengi, yazi tipi secimi, bolum tasarimi YAZILMAZ.
 * Onlar musteri temasinda (child) yasar. Burada yalniz her sitede ayni
 * olan yapisal duzeltmeler ve erisilebilirlik kurallari bulunur.
 * ────────────────────────────────────────────────────────── */

/*
 * KUTU MODELI — tema genelinde border-box.
 * Yoksa yan bosluklar genisligin ustune biniyor ve mobilde yatay tasma
 * oluyor (Ankara Dekor'da yasandi: sayfa saga kayiyor, dugmeler tasiyordu).
 */
*, *::before, *::after { box-sizing: border-box; }

/*
 * [hidden] KESIN KURAL.
 * `display:flex/grid` verilen bir ogeye `hidden` ozniteligi islemiyor;
 * JS dogru calissa bile menu/panel acik kaliyor (Ankara Dekor'da mobil menu
 * hic kapanmadi). Ozniteligi kesin kural haline getiriyoruz.
 */
[hidden] { display: none !important; }

/*
 * SAYFA ISKELETI — footer hep en altta.
 * Icerigi kisa sayfalarda footer ekranin ortasinda asili kaliyordu.
 */
.wp-site-blocks { display: flex; flex-direction: column; min-height: 100svh; }
.wp-site-blocks > main { flex: 1 0 auto; }

/*
 * UST SEVIYE BLOK ARALIGI.
 * WordPress `:where(.wp-site-blocks) > *` icin 24px bosluk basiyor; navbar ile
 * ilk bolum arasinda istenmeyen boslu(k olusuyor. Bolumler kendi nefes
 * araligini kendi yonetir.
 */
.wp-site-blocks > * { margin-block-start: 0; }

/*
 * STICKY BASLIK — sarmalayici sinirini kaldir.
 * `position:sticky` yalniz kendi ana ogesinin sinirlari icinde yapisir; sablon
 * parcasinin <header> sarmalayicisi ekrandan cikinca navbar da cikiyordu.
 */
header.wp-block-template-part { display: contents; }

/* Yalniz ekran okuyucu icin */
.bs-gizli {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

img { max-width: 100%; height: auto; }

/*
 * BAGLANTI ALT CIZGISI.
 * Tailwind'in preflight'ini bilincli olarak ALMIYORUZ (mevcut stilleri
 * ezerdi); bedeli, tarayici varsayilanlarinin sizmasi. En gorunuru buydu:
 * kart, cip ve dugme gibi TASARIM ogeleri alti cizili cikiyordu.
 * NOT: "icerik baglantilari alti cizili kalsin" diye
 * `.wp-block-post-content a { underline }` YAZMAYIN — sayfanin TAMAMI o
 * blogun icinde render ediliyor, kural her dugmeyi ve cipi de yakaliyor.
 * Metin icindeki baglanti icin ayri bir sinif kullanilir (`.bs-metin a`).
 */
a { text-decoration: none; }
.bs-metin a { text-decoration: underline; }


/* ══════════════════════════════════════════════════════════
 * KABUK TABAN STİLİ
 *
 * Ana tema kabuk işaretlemesini üretiyorsa TABAN STİLİNİ DE vermek
 * zorundadır. Yoksa her müşteri temasında menü, şerit, ikon boyutu
 * sıfırdan yazılır — şablonun varlık sebebine aykırı.
 *
 * Buradaki kurallar YAPISAL: yerleşim, ölçü, davranış. Renkler token'dan
 * gelir, müşteri teması ezer. Marka kimliği burada YOK.
 *
 * (120-0349 kurulurken ortaya çıktı: ikonlar boyutsuz kalınca ekranı
 * kapladı, kabuk dikey yığıldı.)
 * ══════════════════════════════════════════════════════════ */

/* ── İkonlar — boyut ZORUNLU ───────────────────────────────
 * Satır içi SVG'ye ölçü verilmezse kapsayıcısının tamamını kaplar.
 * Bu kural kabuğun en kritik satırı. */
.bs-ikon--kucuk { width: 0.85rem; height: 0.85rem; }
svg:not([width]):not([height]) { max-width: 100%; }


/* ── Navbar / çekmece ──────────────────────────────────────
 * Yerleşim ve ölçüler Tailwind'e taşındı (inc/kabuk.php).
 * Burada yalnız Tailwind ile ifade EDİLEMEYENLER kalır:
 * WordPress'in ürettiği sınıflar ve pseudo-element içerikleri.
 * ────────────────────────────────────────────────────────── */

/* Logo — çocuk tema ezer */
.bs-logo { height: 2rem; width: auto; display: block; }
@media (min-width: 1024px) { .bs-logo { height: 2.5rem; } }
.bs-logo--ters { filter: brightness(0) invert(1); }
.bs-logo-yazi { font-weight: 700; font-size: 1.05rem; }

/* Açılır menü işareti: `menu-item-has-children` WordPress'in kendi sınıfı,
   içerik ::after ile çiziliyor — ikisi de Tailwind'in kapsamı dışında. */
.bs-ust__menu .menu-item-has-children > a::after {
  content: ""; width: 0.4rem; height: 0.4rem; margin-left: 0.15rem;
  border-right: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor;
  transform: rotate(45deg) translateY(-1px); opacity: 0.5;
}

/*
 * Masaüstü menüde tıklamayla açılan grup başlığı (bkz. tema.js).
 * Görünürlük Tailwind'de `invisible opacity-0 group-hover:*` ile; bu kural
 * (0,2,1) tek sınıflı yardımcıyı yener, hover kuralına dokunmaz.
 */
.bs-ust__menu > li[data-acik="1"] > .sub-menu {
  visibility: visible;
  opacity: 1;
}

/* Çekmecede alt menüyü açan düğme: içeriği ::after ile değişiyor */
.bs-cekmece__ac {
  display: flex; align-items: center; justify-content: center;
  width: 2.5rem; height: 2.5rem; margin-left: auto; border: 0; background: none; cursor: pointer;
}
.bs-cekmece__ac::after { content: "+"; font-size: 1.35rem; line-height: 1; }
.bs-cekmece__ac[aria-expanded="true"]::after { content: "−"; }
.bs-cekmece__alt .bs-cagri, .bs-cekmece__alt a { width: 100%; }

/* Mobil "Ara" düğmesi — başlıkta hamburgerin yanında.
 * Dar ekranda logo + düğme + hamburger yan yana sığmalı: `bs-cagri`
 * tabanının 1.25rem yan boşluğu 320px'te taşırıyor. Yükseklik
 * DEĞİŞMİYOR (44px dokunma hedefi tabandan gelir). */
.bs-ust__ara { padding-inline: 0.9rem; font-size: 0.85rem; }

/* ── Alt bölüm ────────────────────────────────────────────
 * Yerleşim ve renkler Tailwind'e taşındı (inc/kabuk.php).
 * Burada yalnız WordPress'in ürettiği menü işaretlemesine dokunan
 * kural kalır. */
.bs-alt__yasal a { display: inline; }

/* ── Form ────────────────────────────────────────────────
 * Yerleşim Tailwind'e taşındı. Burada yalnız alan elemanlarının
 * taban görünümü kalır: <input>/<select>/<textarea> etiketlerine
 * doğrudan sınıf veremiyoruz (kimi alanı WordPress üretiyor). */
.bs-form input, .bs-form select, .bs-form textarea {
  width: 100%; padding: 0.8rem 0.9rem; border-radius: 0.65rem; font: inherit; font-weight: 400;
  border: 1px solid rgba(0,0,0,0.14); background: var(--wp--preset--color--beyaz, #fff);
}
.bs-form button { justify-self: start; border: 0; cursor: pointer; font-family: inherit; }

/* ── Çerez bandı ──────────────────────────────────────────
 * Yerleşim Tailwind'e taşındı; bağlantı rengi burada kalır
 * (metin CMS'ten geliyor, <a>'ya sınıf veremiyoruz). */
.bs-onay__metin a { color: var(--wp--preset--color--vurgu, #fff); }
