/* basbelasi v2 — site kabuğu ve bloklar. Renkler yalnız app.css tokenlarından.
   Masaüstü: üstte yapışkan çubuk (logo · menü · tema · oturum). Telefon (≤760px): menü alta sekme çubuğu olur;
   bağlantıların hepsi tek satırda durur, sığmayanlar parmakla yatay kaydırılır (kenarlar soluklaşır),
   "···" kaymayan kapıdır: alt menü, yönetici satırı ve oturum (giriş/panel/çıkış) çekmecede.
   #bb-kalici: sayfa değişse de yerinde kalan alan (ileride radyo çalar). */

/* Ölçüler (2026-10 tasarım turu, bugünkü basbelasi.com oranları biraz rahatlatılarak): içerik tek, ortalı, dar sütun
   (com 560 → 600) ve küçük yazı (com 13 → 14). Üst çubuk geniş kalır (menü sığsın). Panel ekranları bundan etkilenmez. */
/* kaydırma çubuğunun yeri hep ayrılır: uzun sayfada çubuk çıkınca ortalı sütun sola kaymasın (com'daki gibi) */
html:has(.site-body) { scrollbar-gutter: stable; background: var(--bb-bg); }
.site-body { --bb-content: 600px; --bb-ust: 1040px; font-size: 14px; min-height: 100dvh; display: flex; flex-direction: column; background: none; }
.st-atla { position: absolute; left: 12px; top: -48px; z-index: 100; padding: 8px 12px; background: var(--bb-gold); color: var(--bb-on-gold); border-radius: 6px; }
.st-atla:focus { top: 8px; }

/* ── sayfa zemini (panel › site ayarları › "sayfa arka planı") ────────────────
   data-bg: isilti_nokta · isilti · nokta · sade — site_layout.php yazar, CSS yalnız okur.
   İki katman (ışıltı / nokta dokusu) ikisi de position: fixed + pointer-events: none: tıklama,
   dokunma ve seçim yemez; gezinirken (app.js gövdeyi değiştirir) yerinde kalır.
   Katman z-index: -1 → :root'un zemininin ÜSTÜNDE, ama bütün içeriğin ALTINDA çizilir:
   yazı, kart, üst çubuk ve alt sekme çubuğu dokunulmaz. Gövdenin kendi dolgusu bu yüzden
   "none": asıl düz renk :root'ta durur, katmanların altında kalır.
   Renkler yalnız token: ışıltı --bb-gold-rgb'den, nokta dokusu --bb-text'ten türetilir. */
body.site-body::before, body.site-body::after { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; }
body.site-body::before {                       /* ışıltı: iki yumuşak altın leke, köşelerde */
  background:
    radial-gradient(1100px 560px at 12% -12%, rgba(var(--bb-gold-rgb), .30), transparent 62%),
    radial-gradient(820px 460px at 108% 108%, rgba(var(--bb-gold-rgb), .16), transparent 62%);
}
body.site-body::after {                        /* nokta dokusu: 22px ızgara, aşağı doğru sönümlenir */
  opacity: .7;
  background-image: radial-gradient(color-mix(in srgb, var(--bb-text) 16%, transparent) 1px, transparent 1.4px);
  background-size: 22px 22px;
  mask-image: linear-gradient(to bottom, #000 30%, transparent 72%);
  -webkit-mask-image: linear-gradient(to bottom, #000 30%, transparent 72%);
}
/* seçime göre katmanları kapat */
:root[data-bg="nokta"] body.site-body::before,
:root[data-bg="isilti"] body.site-body::after,
:root[data-bg="sade"] body.site-body::before,
:root[data-bg="sade"] body.site-body::after { display: none; }

/* ── üst çubuk ─────────────────────────────────────────────────────────── */
/* Menü, kapta GERÇEKTEN ortada durur: 1fr auto 1fr — iki kenar sütunu eşit
   olduğu için orta sütun, sağa tema/giriş eklenip çıkksa da kaymaz.
   Önceden flex + "menu flex:1" idi: menü kutusu araçlardan KALAN yerde
   ortalandığı için sağdaki her öğe onu yarısı kadar sola itiyordu (ölçüldü: 40px).
   minmax(0, auto): auto sütun içeriği kadar büyür, 1fr'leri sıfıra yıkamaz. */
.st-ust { position: sticky; top: 0; z-index: 30; display: grid; grid-template-columns: 1fr minmax(0, auto) 1fr;
          align-items: center; gap: 20px; min-height: 56px; padding: 0 max(16px, calc((100% - var(--bb-ust)) / 2));
          background: color-mix(in srgb, var(--bb-bg) 88%, transparent); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-bottom: 1px solid var(--bb-border); }
.st-logo { grid-column: 1; justify-self: start; display: inline-flex; align-items: center; gap: 8px; color: var(--bb-text-strong); font: 600 15px var(--bb-font-mono); letter-spacing: .02em; text-decoration: none; }
.st-logo:hover { color: var(--bb-gold); }
.bb-isaret { width: 28px; height: 28px; flex: none; }
/* justify-content flex-start: ortalamayı grid yapıyor, menü kendi kutusunda sola yaslı */
.st-menu { grid-column: 2; justify-self: center; display: flex; align-items: center; gap: 2px; min-width: 0; overflow: hidden; }   /* taşma → .st-sigmaz (app.js) */
/* Bağlantılar (2026-10): metin net (--bb-text, 500). Her bağlantının altında sayfanın modül renginde küçük nokta — blok
   başlıklarındaki .bb-nokta ailesi; üzerine gelince belirginleşir, bulunduğun sayfada 16px'lik çizgiye uzar, zemin o renkle
   hafifçe tonlanır. Nokta mutlak konumlu: bağlantı ölçüleri (33px yükseklik, dolgu, aralık) değişmez → üst çubuk zıplamaz,
   .st-sigmaz eşiği aynı kalır. Hareket azaltma tercihinde geçişler app.css'teki genel kuralla kapanır. */
:where(.st-menu a) { --renk: var(--bb-text-subtle); }   /* özgüllük sıfır: .renk-* (app.css) her zaman kazanır, bkz. .bb-grup */
.st-menu a { position: relative; padding: 6px 10px; border-radius: 6px; color: var(--bb-text); font-size: .95em; font-weight: 500;
             text-decoration: none; white-space: nowrap; transition: color .15s, background-color .15s; }
.st-menu a::after { content: ""; position: absolute; left: 50%; bottom: 2px; width: 5px; height: 5px; border-radius: 99px; pointer-events: none;
                    background: var(--renk); box-shadow: 0 0 6px color-mix(in srgb, var(--renk) 60%, transparent);
                    opacity: .35; transform: translateX(-50%) scale(.75); transition: width .15s, height .15s, opacity .15s, transform .15s; }
.st-menu a:hover { color: var(--bb-text-strong); background: color-mix(in srgb, var(--renk) 9%, transparent); }
.st-menu a:hover::after, .st-menu a:focus-visible::after { opacity: .95; transform: translateX(-50%) scale(1); }
.st-menu a[aria-current="page"] { color: var(--bb-text-strong); background: color-mix(in srgb, var(--renk) 11%, transparent); }
.st-menu a[aria-current="page"]::after { width: 16px; height: 3px; opacity: 1; transform: translateX(-50%); }
/* Modül rengi: site_layout.php bağlantıya sayfanın modül rengini .renk-* sınıfı olarak ekler (blok başlıklarıyla aynı aile).
   Altın modüller, modülsüz sayfalar ve harici linkler sınıfsız → nötr gri: üst menüde altın yok (2026-10 kararı). */
.st-araclar { grid-column: 3; justify-self: end; display: flex; align-items: center; gap: 6px; }
.st-oturum { padding: 6px 10px; color: var(--bb-text); font-size: .95em; font-weight: 500; text-decoration: none; border-radius: 6px; }
.st-oturum:hover { color: var(--bb-text-strong); background: color-mix(in srgb, var(--bb-text-subtle) 9%, transparent); }

/* sayfa geçişi sırasında ince altın çizgi (app.js ekler) */
.st-yukleniyor::after { content: ""; position: fixed; top: 0; left: 0; z-index: 60; height: 2px; width: 40%; background: var(--bb-gold); animation: st-yukle 1s ease-in-out infinite; }
@keyframes st-yukle { from { transform: translateX(-100%); } to { transform: translateX(260%); } }

/* ── içerik ────────────────────────────────────────────────────────────── */
.bb-kalici:empty { display: none; }

/* ── radyo mini bar (radyo.js, #bb-kalici içinde): radyo sayfası dışında, çalan istasyon varken; × ile gizlenir ──
   Bugünkü bb-radio-bar dili: göze batmayan ince şerit, altın oynat düğmesi; telefonda alt sekme çubuğunun üstünde. */
.rb { position: fixed; left: 50%; bottom: calc(12px + env(safe-area-inset-bottom)); transform: translateX(-50%); z-index: 45;
      display: flex; align-items: center; gap: 2px; max-width: min(440px, calc(100vw - 24px)); padding: 3px 4px 3px 6px;
      background: color-mix(in srgb, var(--bb-bg) 90%, transparent); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
      border: 1px solid var(--bb-border-2); border-radius: 99px; box-shadow: var(--bb-shadow-pop); font-size: 12px; }
.rb[hidden] { display: none; }
.rb button { flex: none; min-width: 32px; height: 32px; padding: 0 6px; background: none; border: 0; border-radius: 99px; color: var(--bb-text-dim);
             font: 12px var(--bb-font-mono); cursor: pointer; display: grid; place-items: center; }
.rb button:hover, .rb button:focus-visible { color: var(--bb-gold); background: var(--bb-accent-tint); }
.rb .rb-cal { color: var(--bb-gold); border: 1px solid color-mix(in srgb, var(--bb-gold) 45%, transparent); width: 32px; padding: 0; }
.rb .rb-cal .ic { width: 0; height: 0; border-style: solid; border-width: 5px 0 5px 8px; border-color: transparent transparent transparent currentColor; margin-left: 2px; }
.rb .rb-cal.caliyor .ic { width: 8px; height: 10px; border: 0; margin: 0; border-left: 2.5px solid currentColor; border-right: 2.5px solid currentColor; }
.rb.ipucu .rb-cal { animation: rb-dokun 1.4s ease-in-out infinite; }
@keyframes rb-dokun { 50% { opacity: .45; } }
.rb-ad { flex: 1 1 auto; min-width: 0; padding: 0 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--bb-text-muted); text-decoration: none; }
.rb.canli .rb-ad { color: var(--bb-text); }
.rb-ad:hover { color: var(--bb-gold); }
.rb-durum { flex: none; color: var(--bb-text-faint); font: 11px var(--bb-font-mono); }
.rb-durum:empty { display: none; }
.rb.ipucu .rb-durum { color: var(--bb-gold); }
.rb .rb-kapat { color: var(--bb-text-faint); }
.rb-menu { position: absolute; bottom: calc(100% + 8px); right: 0; width: min(280px, calc(100vw - 24px)); max-height: min(60vh, 420px); overflow-y: auto;
           padding: 6px; background: var(--bb-surface-3); border: 1px solid var(--bb-border-2); border-radius: 10px; box-shadow: var(--bb-shadow-pop); }
.rb-menu[hidden] { display: none; }
.rb-menu-baslik { margin: 2px 6px 4px; color: var(--bb-gold); font: 600 12px var(--bb-font-mono); }
.rb .rb-menu button { display: block; width: 100%; height: auto; min-height: 34px; padding: 6px 8px; border-radius: 6px; text-align: left;
                      color: var(--bb-text); font: 13px var(--bb-font-sans); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rb .rb-menu button[aria-current] { color: var(--bb-gold); }
.rb-menu-tum { display: block; padding: 8px; color: var(--bb-text-dim); font-size: 12px; text-decoration: none; }
.rb-menu-tum:hover { color: var(--bb-gold); }
html.rb-acik .st-ana { padding-bottom: 72px; }
.st-ana { width: 100%; max-width: calc(var(--bb-content) + 32px); margin: 0 auto; padding: 24px 16px 48px; flex: 1; outline: none; }
.st-onizleme { margin: 0 0 16px; padding: 8px 12px; border: 1px dashed var(--bb-gold); border-radius: 6px; color: var(--bb-text-muted); font-size: .92em; }
.st-duzenle { margin: 20px 0 0; font-size: .88em; text-align: right; }
.st-duzenle a { color: var(--bb-text-dim); }
.st-duzenle a:hover { color: var(--bb-gold); }

/* yalın düzen (karşılama): kabuk yok; içerik dar sütunda dikey ortalı, panel çerçevesi yok */
.st-ana[data-duzen="yalin"] { display: flex; flex-direction: column; justify-content: center; max-width: 452px; padding: 24px 16px; }
.st-ana[data-duzen="yalin"] > .st-icerik > :is(.blk, .blk-satir) { margin: 0; }

/* panel düzeni: bütün bloklar tek yüzen panelde (canlıdaki pro-player / pass / links reçetesi) */
.st-panel { padding: 18px; border: 1px solid var(--bb-panel-edge); border-radius: 16px;
            background: radial-gradient(120% 55% at 50% -6%, rgba(var(--bb-gold-rgb), 0.09), transparent 62%),
                        linear-gradient(180deg, var(--bb-panel-1) 0%, var(--bb-bg) 100%);
            box-shadow: inset 0 1px 0 var(--bb-white-tint), var(--bb-shadow-panel); }
/* tek çerçeve (com gibi): panelin içindeki bloklar ayrıca çerçevelenmez; birden çok blok ince çizgiyle ayrılır */
.st-panel > :is(.blk, .blk-satir) { padding: 0; border: 0; }
.st-panel > :is(.blk, .blk-satir) + :is(.blk, .blk-satir) { padding-top: 14px; border-top: 1px solid var(--bb-border); }
.st-panel > :is(.blk, .blk-satir):last-child, .st-panel > p:last-child { margin-bottom: 0; }

/* ── bloklar ───────────────────────────────────────────────────────────── */
.blk { margin: 0 0 14px; min-width: 0; }
.st-icerik:not(.st-panel) > .blk { margin-bottom: 24px; }
/* blok genişliği (Blocks::WIDTHS): arka arkaya gelen yarım / üçte bir bloklar SayfaCiz'de bir .blk-satir kutusuna girer
   ve yan yana durur (satırı paylarına göre doldururlar). Düz düzende kartlar arası boşluk; panel düzeninde aynı panelin
   içinde, araları ince dikey çizgi. Telefonda (≤760px) alt alta. */
.blk-satir { display: flex; align-items: stretch; gap: 12px; margin: 0 0 14px; }
.st-icerik:not(.st-panel) > .blk-satir { margin-bottom: 24px; }
.blk-satir > .blk { min-width: 0; margin: 0; }
.blk-satir > .gen-yarim { flex: 3 1 0; }
.blk-satir > .gen-ucte1 { flex: 2 1 0; }
.st-panel .blk-satir { gap: 14px; }
.st-panel .blk-satir > .blk + .blk { padding-left: 14px; border-left: 1px solid var(--bb-border); }
.blk-baslik { margin: 0 0 8px; color: var(--bb-gold); font-size: .95rem; font-weight: 600; letter-spacing: .01em; }
.blk-icerik p { margin: 0 0 .8em; }
.blk-icerik p:last-child { margin-bottom: 0; }

.kartlar { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.gor-tam .kartlar { grid-template-columns: 1fr; }
.gor-izgara2 .kartlar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gor-izgara3 .kartlar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gor-izgara4 .kartlar { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.gor-serit .kartlar { grid-auto-flow: column; grid-auto-columns: minmax(170px, 210px); overflow-x: auto; padding-bottom: 6px; scroll-snap-type: x proximity; scrollbar-width: thin; }
.gor-serit .kartlar li { scroll-snap-align: start; }
.kart { display: flex; flex-direction: column; gap: 1px; height: 100%; padding: 10px 12px; background: var(--bb-surface-3); border: 1px solid var(--bb-border-2); border-radius: var(--bb-radius); color: var(--bb-text); text-decoration: none; transition: border-color .15s, background-color .15s; }
.kart:hover { border-color: rgba(var(--bb-gold-rgb), .55); background: var(--bb-surface); color: var(--bb-text); }
.kart strong { color: var(--bb-text-strong); font-weight: 600; }
.kart span { color: var(--bb-text-muted); font-size: .88em; }
.kart small { margin-top: auto; padding-top: 4px; color: var(--bb-text-dim); font: 12px var(--bb-font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kart:hover small { color: var(--bb-gold); }

/* duyurular (blok ve site geneli aynı görünüm) */
.duyuru { margin: 0 0 16px; padding: 10px 14px; border: 1px solid var(--bb-border-2); border-left: 3px solid var(--bb-gold); background: var(--bb-accent-tint); border-radius: 0 var(--bb-radius) var(--bb-radius) 0; }
.blk .duyuru { margin: 0; }
.duyuru p { margin: 4px 0 0; }
.duyuru > strong { display: block; color: var(--bb-text-strong); }
.duyuru-uyari { border-left-color: var(--bb-warn); background: color-mix(in srgb, var(--bb-warn) 9%, transparent); }
.duyuru-onemli { border-left-color: var(--bb-bad); background: color-mix(in srgb, var(--bb-bad) 10%, transparent); }

/* ── hata sayfası (core/views/hata.php): pano kartı dili — başlık şeridinde "hata · 404", altında ileti + tek düğme ── */
.hata { margin: 0; }
.hata-govde { padding: 18px 16px 20px; }
.hata-ileti { margin: 0; color: var(--bb-text-strong); font: 600 1.25rem/1.35 var(--bb-font-sans); }
.hata-yol { margin: 6px 0 0; color: var(--bb-text-subtle); font: 12px var(--bb-font-mono); overflow-wrap: anywhere; }
.hata-eylem { margin: 18px 0 0; }

/* ── alt bilgi ─────────────────────────────────────────────────────────── */
.st-alt { padding: 20px 16px 28px; border-top: 1px solid var(--bb-border); color: var(--bb-text-dim); font-size: .88em; text-align: center; }
.st-alt nav { display: flex; gap: 4px 18px; flex-wrap: wrap; justify-content: center; margin-bottom: 10px; }
.st-alt a { color: var(--bb-text-muted); text-decoration: none; }
.st-alt a:hover { color: var(--bb-gold); }
.st-imza { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-family: var(--bb-font-mono); font-size: 12px; }
.st-imza .bb-isaret { width: 18px; height: 18px; opacity: .8; }

/* ── telefon: alt sekme çubuğu + çekmece ───────────────────────────────── */
.st-sekme, .st-cekmece { display: none; }

@media (max-width: 760px) {
  .rb { bottom: calc(var(--bb-nav-h) + env(safe-area-inset-bottom) + 8px); }
  .rb button { min-width: 38px; height: 38px; }
  .rb .rb-cal { width: 38px; }
  .st-ust { gap: 10px; min-height: 52px; padding-top: env(safe-area-inset-top); }
  .st-menu, .st-oturum, .st-cikis { display: none; }
  /* telefonda altbilgi yok: bağlantıları (alt menü, yönetici) zaten çekmecede; sabit sekme çubuğunun payını içerik taşır */
  .st-ana { padding: 16px 12px calc(var(--bb-nav-h) + env(safe-area-inset-bottom) + 24px); }
  html.rb-acik .st-ana { padding-bottom: calc(var(--bb-nav-h) + env(safe-area-inset-bottom) + 72px); }
  .st-panel { padding: 12px; border-radius: 12px; }
  .st-alt { display: none; }

  .st-sekme { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: flex; align-items: stretch; height: calc(var(--bb-nav-h) + env(safe-area-inset-bottom)); padding-bottom: env(safe-area-inset-bottom);
              background: color-mix(in srgb, var(--bb-bg) 94%, transparent); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-top: 1px solid var(--bb-border-2); box-shadow: 0 -2px 12px rgba(0, 0, 0, .25); }
  /* Ana sayfa bağlantılarının hepsi bu şeritte; 360px'e sığmadığı için parmakla yatay kayar (satır kendi hâlinde
     kaydırılır, sayfa yatay kaymaz). Kaydırılabilir olduğu kenarlarda soluklaşır (app.js: .kay-sol/.kay-sag). */
  .st-sekme-kaydir { --bb-kay-sol: 0px; --bb-kay-sag: 0px; position: relative; flex: 1 1 auto; min-width: 0; display: flex; padding: 0 4px;
                      overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; scrollbar-width: none;
                      -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--bb-kay-sol), #000 calc(100% - var(--bb-kay-sag)), transparent 100%);
                      mask-image: linear-gradient(to right, transparent 0, #000 var(--bb-kay-sol), #000 calc(100% - var(--bb-kay-sag)), transparent 100%); }
  .st-sekme-kaydir::-webkit-scrollbar { display: none; }
  .st-sekme-kaydir.kay-sol { --bb-kay-sol: 20px; }
  .st-sekme-kaydir.kay-sag { --bb-kay-sag: 20px; }
  .sekme { flex: 0 0 auto; min-width: 72px; display: grid; place-items: center; padding: 0 10px; scroll-snap-align: center; background: none; border: 0; border-radius: 0; color: var(--bb-nav-link); font: 500 13px var(--bb-font-sans); text-decoration: none; white-space: nowrap; position: relative; }
  .sekme:hover { background: none; color: var(--bb-gold); }
  .sekme[aria-current="page"] { color: var(--bb-gold); }
  .sekme[aria-current="page"]::before { content: ""; position: absolute; top: 0; left: 25%; right: 25%; height: 2px; background: var(--bb-gold); border-radius: 0 0 2px 2px; }
  /* kaymayan kapı: alt menü, yönetici satırı, oturum (giriş/panel/çıkış) */
  .sekme-daha { flex: 0 0 56px; min-width: 56px; font-size: 20px; letter-spacing: 1px; }
  .sekme-daha[aria-expanded="true"] { color: var(--bb-gold); }

  .st-cekmece:not([hidden]) { display: block; position: fixed; inset: 0; z-index: 35; background: var(--bb-scrim); }
  .st-cekmece-ic { position: absolute; left: 0; right: 0; bottom: calc(var(--bb-nav-h) + env(safe-area-inset-bottom)); max-height: 70dvh; overflow-y: auto; padding: 14px 16px 16px;
                   background: var(--bb-surface-3); border-top: 1px solid var(--bb-border-2); border-radius: 14px 14px 0 0; box-shadow: var(--bb-shadow-pop); animation: st-cekmece .18s ease-out; }
  @keyframes st-cekmece { from { transform: translateY(16px); opacity: 0; } }
  .st-cekmece-menu { display: grid; gap: 2px; margin-bottom: 10px; }
  .st-cekmece-menu a { padding: 10px 8px; border-radius: 6px; color: var(--bb-text); text-decoration: none; }
  .st-cekmece-menu a:hover, .st-cekmece-menu a[aria-current="page"] { color: var(--bb-gold); background: var(--bb-accent-tint); }
  .st-cekmece-menu.ikincil a { color: var(--bb-text-muted); font-size: .92em; padding: 8px; }
  .st-cekmece-alt { display: flex; justify-content: flex-end; align-items: center; gap: 10px; padding-top: 12px; border-top: 1px solid var(--bb-border-2); }
  .st-cekmece-alt .muted { margin-right: auto; font-size: .9em; }

  .gor-izgara3 .kartlar, .gor-izgara4 .kartlar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .blk-satir { display: block; }
  .blk-satir > .blk + .blk { margin-top: 24px; }
  .st-panel .blk-satir > .blk + .blk { margin-top: 14px; padding: 14px 0 0; border-left: 0; border-top: 1px solid var(--bb-border); }
}
@media (max-width: 420px) {
  .gor-izgara2 .kartlar, .gor-izgara3 .kartlar, .gor-izgara4 .kartlar { grid-template-columns: 1fr; }
}

/* Güvenlik ağı: geniş ekranda üst menü sığmazsa (tablet, çok uzun menü) app.js html'e .st-sigmaz koyar → menü telefondaki
   gibi alt sekme + çekmece olur; hiçbir öğe görünmez kalmaz (eskiden taşan öğeler gizli kaydırmada kayboluyordu).
   Kurallar yukarıdaki telefon bloğunun menü kısmıyla AYNI (biri değişirse öbürü de). */
html.st-sigmaz .rb { bottom: calc(var(--bb-nav-h) + env(safe-area-inset-bottom) + 8px); }
html.st-sigmaz .st-menu, html.st-sigmaz .st-oturum, html.st-sigmaz .st-cikis { display: none; }
html.st-sigmaz .st-alt { padding-bottom: calc(var(--bb-nav-h) + env(safe-area-inset-bottom) + 20px); }
html.st-sigmaz .st-sekme { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: flex; align-items: stretch; height: calc(var(--bb-nav-h) + env(safe-area-inset-bottom)); padding-bottom: env(safe-area-inset-bottom);
  background: color-mix(in srgb, var(--bb-bg) 94%, transparent); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-top: 1px solid var(--bb-border-2); box-shadow: 0 -2px 12px rgba(0, 0, 0, .25); }
html.st-sigmaz .st-sekme-kaydir { --bb-kay-sol: 0px; --bb-kay-sag: 0px; position: relative; flex: 1 1 auto; min-width: 0; display: flex; padding: 0 4px;
  overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; scrollbar-width: none;
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--bb-kay-sol), #000 calc(100% - var(--bb-kay-sag)), transparent 100%);
  mask-image: linear-gradient(to right, transparent 0, #000 var(--bb-kay-sol), #000 calc(100% - var(--bb-kay-sag)), transparent 100%); }
html.st-sigmaz .st-sekme-kaydir::-webkit-scrollbar { display: none; }
html.st-sigmaz .st-sekme-kaydir.kay-sol { --bb-kay-sol: 20px; }
html.st-sigmaz .st-sekme-kaydir.kay-sag { --bb-kay-sag: 20px; }
html.st-sigmaz .sekme { flex: 0 0 auto; min-width: 72px; display: grid; place-items: center; padding: 0 10px; scroll-snap-align: center; background: none; border: 0; border-radius: 0; color: var(--bb-nav-link); font: 500 13px var(--bb-font-sans); text-decoration: none; white-space: nowrap; position: relative; }
html.st-sigmaz .sekme:hover, html.st-sigmaz .sekme[aria-current="page"] { background: none; color: var(--bb-gold); }
html.st-sigmaz .sekme[aria-current="page"]::before { content: ""; position: absolute; top: 0; left: 25%; right: 25%; height: 2px; background: var(--bb-gold); border-radius: 0 0 2px 2px; }
html.st-sigmaz .sekme-daha { flex: 0 0 56px; min-width: 56px; font-size: 20px; letter-spacing: 1px; }
html.st-sigmaz .sekme-daha[aria-expanded="true"] { color: var(--bb-gold); }
html.st-sigmaz .st-cekmece:not([hidden]) { display: block; position: fixed; inset: 0; z-index: 35; background: var(--bb-scrim); }
html.st-sigmaz .st-cekmece-ic { position: absolute; left: 50%; transform: translateX(-50%); width: min(520px, 100%); bottom: calc(var(--bb-nav-h) + env(safe-area-inset-bottom)); max-height: 70dvh; overflow-y: auto; padding: 14px 16px 16px;
  background: var(--bb-surface-3); border: 1px solid var(--bb-border-2); border-bottom: 0; border-radius: 14px 14px 0 0; box-shadow: var(--bb-shadow-pop); }
html.st-sigmaz .st-cekmece-menu { display: grid; gap: 2px; margin-bottom: 10px; }
html.st-sigmaz .st-cekmece-menu a { padding: 10px 8px; border-radius: 6px; color: var(--bb-text); text-decoration: none; }
html.st-sigmaz .st-cekmece-menu a:hover, html.st-sigmaz .st-cekmece-menu a[aria-current="page"] { color: var(--bb-gold); background: var(--bb-accent-tint); }
html.st-sigmaz .st-cekmece-menu.ikincil a { color: var(--bb-text-muted); font-size: .92em; padding: 8px; }
html.st-sigmaz .st-cekmece-alt { display: flex; justify-content: flex-end; align-items: center; gap: 10px; padding-top: 12px; border-top: 1px solid var(--bb-border-2); }
html.st-sigmaz .st-cekmece-alt .muted { margin-right: auto; font-size: .9em; }

/* ── banner (core/views/_banner.php, bugünkü bb-banner-svg.inc): içerik sütununun başında; masaüstünde logonun yerini alır
   (kimlik bannerda), menü ortalanır. 2026-10: telefonda hiç gösterilmiyor — üst çubukta logo zaten var, banner ikinci bir
   marka olurdu; aç/kapa oku, "banner-acik" sınıfı ve tercih kaydı (app.js) kaldırıldı. ── */
.bb-banner { --bb-gold-2: color-mix(in srgb, var(--bb-gold) 78%, var(--bb-bg)); --bb-cat-red: var(--bb-bad); --bb-cat-yellow: var(--bb-gold-bright);
             --bb-text-bright: var(--bb-text-strong); --bb-text-fainter: var(--bb-text-faint); --bb-text-faintest: var(--bb-text-faint);
             --bb-accent-bright: var(--bb-ok); --bb-border-dim: var(--bb-border);
             position: relative; margin: -8px 0 14px; }   /* alt çizgi yok: banner çiziminin kendi çerçevesi var */
.bb-banner-bag { display: block; border-radius: 8px; }
.bb-banner-bag:focus-visible { outline: 2px solid var(--bb-gold); outline-offset: 2px; }
.bb-banner-svg { display: block; width: 100%; max-height: 120px; }
.bb-banner-main { font-family: var(--bb-font-sans); }
.bb-banner .bb-mono { font-family: var(--bb-font-mono); }
@media (min-width: 761px) {
  .banner-var .st-logo { display: none; }
  .banner-var .st-menu { justify-content: center; }
  html.st-sigmaz .banner-var .st-logo { display: inline-flex; }   /* menü alta inince üst çubuk boş kalmasın */
}
@media (max-width: 760px) {
  .bb-banner { display: none; }
}

/* altbilgi: yalnız yöneticinin gördüğü sayfalar (üst menüyü kalabalıklaştırmasın) */
.st-alt .st-yonetici { margin-top: -4px; font-size: .92em; }
.st-yonetici span { color: var(--bb-text-faint); font-family: var(--bb-font-mono); font-size: .9em; }

/* sayfa geçiş animasyonu (View Transitions destekleyen tarayıcılarda) */
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .16s; }

/* ── gruplu liste (core/Liste.php): renk tonlu başlık şeridi · nokta · başlık · n · öneksiz satırlar · "↓ devamı" ──
   2026-10: başlıkta "// " ve satır başında ">" öneki kalktı; başlık şeridi kategori rengiyle hafif tonlanır. */
.bb-gruplar { display: grid; gap: 10px; }
.gor-izgara3 .bb-gruplar { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; }
.gor-izgara2 .bb-gruplar { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
/* --renk varsayılanı :where() ile — özgüllüğü sıfır, böylece app.css'teki .renk-* (aynı özgüllük ama önce yüklenir)
   her zaman kazanır. Düz `.bb-grup { --renk: … }` yazılsaydı site.css sonra geldiği için rengi ezerdi. */
:where(.bb-grup) { --renk: var(--bb-gold); }
.bb-grup { min-width: 0; padding: 0; background: var(--bb-surface-3); border: 1px solid var(--bb-border-2); border-radius: var(--bb-radius); overflow: hidden; }
.bb-grup.tam-genislik { grid-column: 1 / -1; }
.bb-grup-baslik { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; color: var(--bb-text-strong); font: 600 12px var(--bb-font-sans); letter-spacing: .05em; text-transform: uppercase; }
.bb-grup > .bb-grup-baslik { margin: 0; padding: 8px 11px; background: linear-gradient(90deg, color-mix(in srgb, var(--renk) 10%, var(--bb-surface)), var(--bb-surface-3) 85%); border-bottom: 1px solid var(--bb-border-2); }
.bb-grup-baslik > span, .bb-grup-baslik .bb-grup-ac { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bb-nokta { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--renk); box-shadow: 0 0 7px color-mix(in srgb, var(--renk) 55%, transparent); }
.bb-grup-baslik small { margin-left: auto; padding: 1px 7px; background: var(--bb-surface-2); border: 1px solid var(--bb-border-2); border-radius: 99px; color: var(--bb-text-dim); font: 400 11px var(--bb-font-mono); letter-spacing: 0; text-transform: none; }
/* başlık tıklanınca kategori penceresi (Liste::grup $ac) — haberler, takvim */
.bb-grup-ac { padding: 0; background: none; border: 0; border-radius: 0; color: inherit; font: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer; text-align: left; }
.bb-grup-ac:hover, .bb-grup-ac:focus-visible { color: var(--bb-gold-hi, var(--bb-gold)); background: none; text-decoration: underline; text-underline-offset: 3px; }
.bb-grup-liste, .bb-grup > .fb-liste { list-style: none; margin: 0; padding: 4px 8px 6px; }
.bb-grup > p { margin: 0; padding: 6px 11px 8px; }
.bb-grup-kayit { border-bottom: 1px solid var(--bb-border); }
.bb-grup-kayit:last-child { border-bottom: 0; }
/* satır: bağlantı ya da düğme */
.bb-satir { display: flex; align-items: center; gap: 6px; width: 100%; min-height: 34px; padding: 4px 6px; background: none; border: 0; border-radius: 4px;
            color: var(--bb-text); font: 400 .95em var(--bb-font-sans); text-align: left; text-decoration: none; cursor: pointer; }
.bb-satir:hover { background: var(--bb-surface); color: var(--bb-text-strong); }
.bb-satir .on { flex: none; width: 12px; color: var(--bb-text-faint); font-family: var(--bb-font-mono); transition: transform .15s; }
.bb-satir .ad { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bb-dis { flex: none; color: var(--bb-text-faint); font-size: 11px; opacity: 0; transform: translateX(-2px); transition: opacity .15s, transform .15s, color .15s; }
.bb-satir:hover .bb-dis, .bb-satir:focus-visible .bb-dis { opacity: 1; transform: none; color: var(--bb-gold); }
.bb-grup-devam { display: flex; gap: 6px; padding: 2px 8px 8px; }
.bb-grup-devam button { padding: 3px 10px; background: transparent; color: var(--bb-text-dim); border: 1px solid var(--bb-border-2); border-radius: 6px; font: 500 12px var(--bb-font-mono); }
.bb-grup-devam button:hover { color: var(--bb-gold); border-color: var(--bb-gold); background: transparent; }
.bb-devam { flex: 1; }
/* arama bandı (Liste::aramaKutusu → links · haberler · radyo · yazilar): sitenin tek arama görünümü.
   Kartın içinde ama banner gibi kendi tam genişlik satırı — kutu, altında ince ayırıcı, sonra içerik.
   (2026-10: "81 link" / "136 haber" sayaç satırı kaldırıldı — yer kaplıyordu, bilgi gereksizdi.)
   Arama yalnız kendi sayfasının içeriğini süzer (app.js: bb2.listeSuz, .blk içindeki .bb-gruplar). */
.bb-liste-ara { margin: 0 0 14px; padding-bottom: 12px; border-bottom: 1px solid var(--bb-border); }
.bb-liste-ara input { width: 100%; }
.bb-liste-bos { padding: 16px; color: var(--bb-text-dim); text-align: center; font-family: var(--bb-font-mono); }
/* seçki (Liste::secki): tam genişlik, hepsi açık; satırlar iki sütun (soldan sağa), son satırın çizgisi yok.
   bb-secki-tek: tek sütun (linkler: ad + açıklama aynı satırda) */
.bb-secki .bb-grup-liste { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 14px; }
.bb-secki .bb-grup-kayit:nth-child(odd):nth-last-child(2) { border-bottom: 0; }
.bb-secki.bb-secki-tek .bb-grup-liste { grid-template-columns: minmax(0, 1fr); }
.bb-secki.bb-secki-tek .bb-grup-kayit:nth-child(odd):nth-last-child(2) { border-bottom: 1px solid var(--bb-border); }
.bb-satir .bb-aciklama { flex: 0 1 auto; max-width: 62%; min-width: 0; overflow: hidden; color: var(--bb-text-dim); font-size: .92em; text-overflow: ellipsis; white-space: nowrap; }
.bb-satir .bb-aciklama + .bb-dis { margin-left: 2px; }
/* kesilen açıklamanın tamamı (app.js: fareyle üzerinde bekleyince / klavye odağında; yalnız kesildiyse) */
.bb-ipucu { position: fixed; z-index: 50; max-width: min(360px, calc(100vw - 24px)); padding: 8px 11px; background: var(--bb-surface-2); border: 1px solid var(--bb-border-2);
            border-radius: 6px; box-shadow: var(--bb-shadow-pop); color: var(--bb-text); font: 400 13px/1.5 var(--bb-font-sans); overflow-wrap: anywhere; pointer-events: none;
            opacity: 0; transform: translateY(-3px); transition: opacity .12s, transform .12s; }
.bb-ipucu.ustte { transform: translateY(3px); }
.bb-ipucu p { margin: 0; }
.bb-ipucu-baslik { color: var(--bb-text-strong); font-weight: 500; }
.bb-ipucu-baslik + .bb-ipucu-metin { margin-top: 4px; color: var(--bb-text-muted); font-size: 12.5px; }
.bb-ipucu .bb-ipucu-meta { margin-top: 6px; color: var(--bb-text-faint); font: 11px var(--bb-font-mono); }
.bb-ipucu.acik { opacity: 1; transform: none; }
/* "↓ tüm … (+n)" (Liste::gruplar; haberlerdeki "tüm kategoriler" ile aynı dil); aramada kapalı gruplar da görünür */
.bb-gruplar.bb-kapali .bb-fazla { display: none; }
.bb-aramada .bb-gruplar.bb-kapali .bb-fazla { display: block; }
.bb-aramada .bb-tumu { display: none; }
.bb-tumu { margin: 10px 0 0; }
.bb-tumu button { width: 100%; padding: 7px 10px; background: transparent; color: var(--bb-text-dim); border: 1px solid var(--bb-border-2); border-radius: 6px; font: 500 12px var(--bb-font-mono); }
.bb-tumu button:hover { color: var(--bb-gold); border-color: var(--bb-gold); background: transparent; }
@media (max-width: 600px) {
  .bb-secki .bb-grup-liste { grid-template-columns: minmax(0, 1fr); }
  .bb-secki .bb-grup-kayit:nth-child(odd):nth-last-child(2) { border-bottom: 1px solid var(--bb-border); }
  .bb-satir .bb-aciklama { max-width: 50%; }
}
@media (max-width: 760px) {
  .gor-izgara3 .bb-gruplar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bb-satir { min-height: 40px; }
}
@media (max-width: 420px) {
  .gor-izgara3 .bb-gruplar, .gor-izgara2 .bb-gruplar { grid-template-columns: minmax(0, 1fr); }
}
