/* LC Panel — lightcollector.com.tr tasarım dili (taban.css "Apple Ajans" token'ları)
   Üst bant (koyu) insan onayıyla korundu; geri kalan yüzey site idiomuna çekildi:
   Inter, fayans kartlar (kenarlıksız #F5F5F7), hap butonlar, 800 sıkı başlıklar,
   kılcal çizgiler, amber vurgu. Kaynak: lightcollector/kaynak/stil/taban.css */

:root {
  --bg: #FFFFFF;
  --tile: #F5F5F7;
  --tile-2: #ECECEE;
  --ink: #1D1D1F;
  --ink-2: #6E6E73;
  --ink-3: #86868B;
  --dark-text: #F5F5F7;
  --hair: rgba(29, 29, 31, .10);
  --amber: #F9A72C;
  --amber-deep: #E88A0C;
  --amber-text: #B36A00;
  --yesil: #1e8449;
  --yesil-zemin: #e4f3ea;
  --kirmizi: #c0392b;
  --kirmizi-zemin: #fbe7e4;
  /* Trafik ışığının sarısı: amber ailesinden metin-güvenli ton (beyazda 4,9:1,
     zemininde .rozet.teklif ile aynı çift — parlak sarı 3:1'in altında kalırdı) */
  --sari: #B36A00;
  --sari-zemin: #FDF3E0;
  --r: 20px;
  --r-in: 12px;
  --r-pill: 980px;
  --t-micro: 150ms;
  --ease-out: cubic-bezier(.22, 1, .36, 1);
}
* { box-sizing: border-box; }
/* `hidden` özniteliği bir GİZLEME GARANTİSİ DEĞİL: yazarın yazdığı herhangi bir
   `display` bildirimi (ör. `button{display:inline-flex}`) UA'nın `[hidden]{display:none}`
   kuralını özgüllükte yener ve öğe görünmeye devam eder. Projede bir kez yazılır. */
[hidden] { display: none !important; }
body {
  margin: 0;
  background: var(--bg); color: var(--ink);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 15px; line-height: 1.5;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
::selection { background: rgba(249, 167, 44, .35); }
:focus-visible { outline: 2px solid var(--amber-text); outline-offset: 3px; border-radius: 4px; }
a { color: var(--ink); text-decoration: none; }
a:hover { color: var(--amber-text); }
main a { text-decoration: underline; text-decoration-color: var(--hair); text-underline-offset: 3px; }
main a:hover { text-decoration-color: var(--amber-text); }

/* ═══ Üst bant (korunan tasarım — koyu + amber aktif hap) ═══
   Faz 7 §1: 9 düz bağlantı ANLAMSAL GRUPLARA ayrıldı. Masaüstünde gruplar ince
   dikey çizgiyle ayrılır (grup ADLARI yazılmaz — ölçüm: dört etiket nav'ı ~250 px
   şişirip ikinci satıra taşırıyordu); mobil açılır menüde adlar görünür.
   Mobil menü SAF CSS'tir (gizli checkbox + :checked ~ nav): JS kapalıyken de,
   CSS hiç yüklenmezse de bütün bağlantılar erişilebilir kalır. */
.ustbar { background: var(--ink); color: #fff; position: sticky; top: 0; z-index: 50; }
.ustbar-ic { max-width: 1180px; margin: 0 auto; display: flex; align-items: center; gap: 12px 20px; padding: 12px 20px; flex-wrap: wrap; }
.marka { font-weight: 800; font-size: 18px; letter-spacing: .01em; color: #fff; text-decoration: none; flex: none; }
.marka span { color: var(--amber); }
.marka.buyuk { font-size: 25px; }

/* Klavye kullanıcısı için: sekmeye ilk basışta menüyü atlayıp içeriğe geçebilsin */
.atla-baglanti {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  background: var(--amber); color: var(--ink); font-weight: 700; font-size: 13.5px;
  padding: 10px 18px; border-radius: 0 0 var(--r-in) 0;
}
.atla-baglanti:focus { left: 0; }

.ustbar nav { display: flex; flex-wrap: wrap; gap: 4px 0; flex: 1 1 auto; min-width: 0; }
.menu-grup { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
/* Grup ayracı: kılcal dikey çizgi (ilk gruptan sonrakilerde) */
.menu-grup + .menu-grup {
  margin-left: 9px; padding-left: 9px;
  border-left: 1px solid rgba(255, 255, 255, .18);
}
.grup-etiket { display: none; }
.ustbar nav a {
  color: #d6d6d9; text-decoration: none; font-size: 13.5px; font-weight: 600;
  padding: 7px 13px; border-radius: var(--r-pill); white-space: nowrap;
  transition: color var(--t-micro) ease, background var(--t-micro) ease;
}
.ustbar nav a:hover { color: #fff; background: rgba(255, 255, 255, .10); }
/* Aktif sayfa: amber hap + amber halka. Renk tek başına taşımıyor —
   işaretleme tarafında aria-current="page" de var. */
.ustbar nav a.aktif {
  color: var(--ink); background: var(--amber); font-weight: 700;
  box-shadow: 0 0 0 3px rgba(249, 167, 44, .28);
}

/* Mobil menü anahtarı — masaüstünde tamamen kapalı (sekme sırasına da girmez) */
.menu-anahtar { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.menu-dugme { display: none; }
@media (min-width: 901px) { .menu-anahtar { display: none; } }

/* margin-left:auto — üst bar 1135 px altında iki satıra sardığında kullanıcı
   bloğu ikinci satırın SAĞINA yaslanır (sola düşüp kazara hizalanmış görünmesin). */
.kullanici { color: #98989d; font-size: 12.5px; font-weight: 500; display: flex; align-items: center; gap: 10px; flex: none; margin-left: auto; }
.kullanici a { color: var(--dark-text); text-decoration: none; }
.kullanici a:hover { color: var(--amber); }
/* Üst bardan tek hızlı eylem: kalem girmek (Defter hem gelir hem gider formunu taşır) */
.hizli-eylem {
  color: var(--amber) !important; border: 1px solid rgba(249, 167, 44, .5);
  border-radius: var(--r-pill); padding: 6px 14px; font-size: 13px; font-weight: 700;
  white-space: nowrap;
  transition: background var(--t-micro) ease, color var(--t-micro) ease;
}
.hizli-eylem:hover { background: var(--amber); color: var(--ink) !important; border-color: var(--amber); }

main { max-width: 1180px; margin: 0 auto; padding: 30px 20px 64px; }
h1 { font-size: 30px; font-weight: 800; letter-spacing: -.03em; line-height: 1.1; margin: 6px 0 22px; }
h2 { font-size: 16.5px; font-weight: 700; letter-spacing: -.01em; margin: 0 0 14px; }
h2 small { color: var(--ink-3); font-weight: 500; font-size: 12px; letter-spacing: 0; }
footer {
  text-align: center; padding: 28px 20px;
  font-size: 11px; font-weight: 500; letter-spacing: .14em; color: var(--ink-3);
  border-top: 1px solid var(--hair);
}

/* ═══ Fayans kartlar (kenarlıksız, site .work/.tile idiomu) ═══ */
.kart { background: var(--tile); border-radius: var(--r); padding: 22px 24px; margin-bottom: 18px; }
.iki-kolon { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
/* ÖLÇÜLEN HATA (2026-09-05, 390 px): ızgara/esnek kutu çocuğunun varsayılan
   `min-width: auto` değeri, içindeki tablonun min-genişliğini (620 px) kolona
   DAYATIYOR → `.tablo-kaydir` kaydırma kabı hiç devreye girmiyor ve SAYFANIN
   TAMAMI yana kayıyordu (belge 670 px / görüntü alanı 390 px = 280 px taşma).
   `min-width: 0` kolonu görüntü alanına kilitler, kaydırma tabloda kalır.
   (.karsilikli > section'da bu kural zaten vardı — eksik olan .iki-kolon'du.) */
.iki-kolon > * { min-width: 0; }
@media (max-width: 900px) { .iki-kolon { grid-template-columns: 1fr; } }

/* ═══ Sayı kartları (site .stat idiomu: ağır rakam + sakin etiket) ═══ */
.sayilar { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; margin-bottom: 18px; }
.sayi-kart {
  background: var(--tile); border-radius: var(--r); padding: 18px 20px 16px;
  text-decoration: none !important; display: flex; flex-direction: column; gap: 2px;
  transition: transform var(--t-micro) var(--ease-out), background var(--t-micro) ease;
}
a.sayi-kart:hover { transform: translateY(-2px); background: var(--tile-2); color: inherit; }
.sayi-kart .sayi {
  font-size: 27px; font-weight: 800; letter-spacing: -.03em; line-height: 1.15;
  font-variant-numeric: tabular-nums;
  /* Para rakami SATIR ORTASINDAN BOLUNMEZ (2026-09-02 QC: "15.000,00" alt satira
     "₺" biraktigi icin tutar iki parca goruluyordu). Sigmiyorsa yazi kuculur. */
  white-space: nowrap; font-size: clamp(19px, 1.9vw, 27px);
}
.sayi-kart .etiket { font-size: 12px; font-weight: 500; color: var(--ink-2); }
.sayi-kart.pozitif .sayi { color: var(--yesil); }
.sayi-kart.negatif .sayi { color: var(--kirmizi); }
/* Üç kutuluk para şeridi (Özet "bu ay"). Kırılım ÖLÇÜMLE: kutu içi alanın
   7 haneli tutarı ("1.250.000,00 ₺" ≈ 147 px @19 px) kırpmadan taşıması gerek —
   640 px'te üç sütun 160 px iç alan verir, altında tek sütuna düşer. */
.sayilar.uclu { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 640px) { .sayilar.uclu { grid-template-columns: 1fr; } }

/* ═══ Özet §2: bölüm başlığı · eylem şeridi · yıl satırı · mini kısayollar ═══
   Amaç: "bugün ne yapmalıyım" sorusu sayfanın en üstünde ve en büyük puntoda
   cevaplansın; kayıt ADETLERİ (müşteri/iş/eleman) en hafif ağırlığa insin. */
.serit-baslik { margin: 26px 0 12px; }
main > h1 + .serit-baslik { margin-top: 0; }
.serit-baslik small { margin-left: 2px; }

/* 3 kutu → 700 px'in altında TEK sütun. auto-fit denendi ama 470-700 px bandında
   2+1 veriyor ve üçüncü kutu yarım kalıyordu; açık kırılım daha okunur.
   700 px'te üç sütun: kutu 220 px, iç alan 180 px, 7 haneli tutar @20 px ≈ 154 px. */
.eylem-serit { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 14px; }
@media (max-width: 700px) { .eylem-serit { grid-template-columns: 1fr; } }
.eylem-kutu {
  display: flex; flex-direction: column; gap: 3px;
  background: var(--tile); border-radius: var(--r); padding: 16px 20px 15px;
  border-left: 4px solid var(--ink-3);
  color: var(--ink); text-decoration: none !important;
  transition: transform var(--t-micro) var(--ease-out), background var(--t-micro) ease;
}
a.eylem-kutu:hover { transform: translateY(-2px); background: var(--tile-2); color: var(--ink); }
/* Renk TEK BAŞINA anlam taşımaz: her kutuda durum ayrıca yazıyla söylenir
   ("… gecikti" / "Geciken tahsilat yok") ve başında adlandırılmış nokta durur. */
.eylem-kutu.acil  { border-left-color: var(--kirmizi); background: var(--kirmizi-zemin); }
.eylem-kutu.yakin { border-left-color: var(--sari);    background: var(--sari-zemin); }
.eylem-kutu.sakin { border-left-color: var(--yesil);   background: var(--tile); }
a.eylem-kutu.acil:hover  { background: #f7dcd8; }
a.eylem-kutu.yakin:hover { background: #fbebd2; }
.eylem-bas {
  font-size: 12.5px; font-weight: 700; color: var(--ink);
  display: flex; align-items: center; gap: 7px;
}
.eylem-tutar {
  font-size: clamp(20px, 2.2vw, 28px); font-weight: 800; letter-spacing: -.03em;
  line-height: 1.2; font-variant-numeric: tabular-nums; white-space: nowrap;
}
.eylem-kutu.acil  .eylem-tutar { color: var(--kirmizi); }
.eylem-kutu.yakin .eylem-tutar { color: var(--sari); }
.eylem-kutu.sakin .eylem-tutar { color: var(--ink-3); }
.eylem-alt { font-size: 12px; color: var(--ink-2); }
/* Renkli zeminde --ink-2 kontrastı 4,33:1'e düşüyordu (AA altı) → koyulaştırıldı */
.eylem-kutu.acil .eylem-alt, .eylem-kutu.yakin .eylem-alt { color: rgba(29, 29, 31, .74); }
.eylem-git {
  margin-top: 7px; font-size: 12.5px; font-weight: 700; color: var(--ink);
  text-decoration: underline; text-decoration-color: var(--amber-deep); text-underline-offset: 3px;
}

/* Yıl toplamı: üç ayrı büyük kart yerine TEK satır (üçüncü ağırlık) */
.ozet-satir {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 26px;
  background: var(--tile); border-radius: var(--r); padding: 14px 20px;
  margin-bottom: 12px; color: var(--ink); text-decoration: none !important;
  transition: background var(--t-micro) ease;
}
a.ozet-satir:hover { background: var(--tile-2); color: var(--ink); }
.ozet-satir .oz-baslik { font-weight: 700; font-size: 13px; letter-spacing: -.01em; }
.ozet-satir .oz-oge { display: flex; align-items: baseline; gap: 7px; font-size: 12px; color: var(--ink-2); }
/* 19 px + kalın = WCAG "büyük metin" → yeşil/kırmızı 3:1 eşiğine tabi (4,33:1 geçer);
   16 px'te aynı renkler AA altında kalıyordu. Punto bilerek 19'da. */
.ozet-satir .oz-oge b { font-size: 19px; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ozet-satir .gelir { color: var(--yesil); }
.ozet-satir .gider { color: var(--kirmizi); }
.ozet-satir .oz-git {
  margin-left: auto; font-size: 12.5px; font-weight: 700; color: var(--ink);
  text-decoration: underline; text-decoration-color: var(--amber-deep); text-underline-offset: 3px;
}

/* Kayıt adetleri: hap kısayollar (en hafif ağırlık) */
.mini-sayilar { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.mini-kart {
  display: inline-flex; align-items: baseline; gap: 7px;
  background: var(--tile); border-radius: var(--r-pill); padding: 9px 16px;
  font-size: 13px; color: var(--ink-2); text-decoration: none !important;
  transition: background var(--t-micro) ease;
}
.mini-kart:hover { background: var(--tile-2); color: var(--ink-2); }
.mini-kart b { font-size: 17px; font-weight: 800; color: var(--ink); font-variant-numeric: tabular-nums; }

/* Uzun hesap açıklaması: kart etiketlerini şişirmek yerine katlanır blok */
details.aciklama { margin: 0 0 18px; font-size: 12.5px; color: var(--ink-2); }
details.aciklama > summary {
  cursor: pointer; list-style: none; display: inline-block;
  color: var(--ink); font-weight: 600; padding: 5px 0;
}
details.aciklama > summary::-webkit-details-marker { display: none; }
details.aciklama > summary::before { content: "+ "; font-weight: 800; }
details.aciklama[open] > summary::before { content: "− "; }
details.aciklama > summary:hover { text-decoration: underline; text-decoration-color: var(--amber-deep); }
details.aciklama p { margin: 4px 0 0; line-height: 1.6; max-width: 78ch; }

/* ═══ Tablolar (kılcal çizgiler + eyebrow başlıklar) ═══ */
table { width: 100%; border-collapse: collapse; font-size: 14px; }
th {
  text-align: left; font-weight: 700; color: var(--ink-3);
  font-size: 11px; text-transform: uppercase; letter-spacing: .08em;
  padding: 6px 10px 8px; border-bottom: 1px solid var(--hair);
}
td { padding: 10px; border-bottom: 1px solid var(--hair); vertical-align: top; }
tr:last-child td { border-bottom: none; }
td small { color: var(--ink-3); }
.sag { text-align: right; font-variant-numeric: tabular-nums; }
/* ÖLÇÜLEN HATA (2026-09-05, 1280 px): "1.250.000,00 ₺" dar bir sütunda satır
   ortasından bölünüp ₺ alt satıra düşüyordu — tutar iki parça görünüyor.
   (.defter-tablo td.tutar'da bu kural vardı, sade `.sag` hücrelerinde yoktu.)
   Rozet metni de aynı sebeple bölünüyordu ("124 gün / gecikti").
   Blok hâlindeki erteleme izi sarma HAKKINI geri alır — o uzun bir cümledir. */
/* nowrap YALNIZ veri hücresinde. Başlık hücresi (th) bilerek DIŞARIDA:
   ölçümde `th.sag`'a nowrap vermek sütunları gereksiz genişletip 1024 px'te
   kârlılık, 834 px'te kârlılık+giderler+elemanlar+işler sayfalarında kap içi
   kesilme yaratıyordu (13/15 · 182 · 99 · 40 · 32 px). th'yi serbest bırakmak
   1024 px'teki kesilmeyi TAMAMEN, 834 px'tekini 4 sayfadan 2'ye indirdi ve
   hiçbir bedeli olmadı (bölünmüş para 0, bölünmüş rozet 0 aynen korundu).
   Bir başlığın iki satıra sarması ÇİRKİN, bir tutarın bölünmesi YANLIŞTIR. */
td.sag { white-space: nowrap; }
.vade-gecmis { white-space: normal; }
tr.pasif td { opacity: .45; }
.gecikme { color: var(--kirmizi); font-weight: 700; font-variant-numeric: tabular-nums; }

/* ═══ Rozetler (hap, site pill idiomu) ═══ */
.rozet {
  display: inline-block; font-size: 12px; font-weight: 600;
  padding: 3px 11px; border-radius: var(--r-pill); background: var(--tile-2); color: var(--ink-2);
  /* ÖLÇÜLEN HATA (2026-09-05, 390 px): hap rozet ikiye bölünüyordu ("+ / Gelir",
     "Teslim / edildi") — kutu 42 px, satır yüksekliği 18 px. `td.sag` hücrelerindeki
     rozetler nowrap'i hücreden MİRAS aldığı için sorun yalnız .sag OLMAYAN
     sütunlarda (Tür, Durum) görünüyordu; bu yüzden ilk turda gözden kaçtı.
     Hap biçimi bölünemez: kural rozetin KENDİSİNE yazılır. */
  white-space: nowrap;
}
.rozet.teklif { background: #FDF3E0; color: var(--amber-text); }
.rozet.onaylandi { background: #FBE8C7; color: var(--amber-text); }
.rozet.devam { background: var(--amber); color: var(--ink); font-weight: 700; }
.rozet.teslim { background: var(--yesil-zemin); color: var(--yesil); }
.rozet.kapandi { background: var(--tile-2); color: var(--ink-2); }
.rozet.iptal { background: var(--kirmizi-zemin); color: var(--kirmizi); }
/* Trafik ışığı rozetleri (vade_rozet). Renk tek başına anlam taşımaz —
   rozetin metni her zaman yazılıdır. */
.rozet.yesil { background: var(--yesil-zemin); color: var(--yesil); }
.rozet.sari { background: var(--sari-zemin); color: var(--sari); }
.rozet.kirmizi { background: var(--kirmizi-zemin); color: var(--kirmizi); }

/* ═══ Trafik ışığı: satır şeridi · nokta · açıklama şeridi ═══ */
/* NOT: `border-collapse: collapse` tablolarda box-shadow <tr> üzerinde BOYANMAZ
   (Chrome/Safari). Sınıf yine <tr>'ye yazılır, şerit ilk <td>'ye uygulanır. */
tr.satir-yesil > td:first-child { box-shadow: inset 3px 0 0 var(--yesil); }
tr.satir-sari > td:first-child { box-shadow: inset 3px 0 0 var(--sari); }
tr.satir-kirmizi > td:first-child { box-shadow: inset 3px 0 0 var(--kirmizi); }
tr.satir-yesil > td { background: rgba(30, 132, 73, .040); }
tr.satir-sari > td { background: rgba(179, 106, 0, .050); }
tr.satir-kirmizi > td { background: rgba(192, 57, 43, .045); }

.nokta {
  display: inline-block; flex: none;
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--ink-3); vertical-align: middle;
}
.nokta.yesil { background: var(--yesil); }
.nokta.sari { background: var(--sari); }
.nokta.kirmizi { background: var(--kirmizi); }

.renk-legend {
  display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center;
  font-size: 12px; font-weight: 500; color: var(--ink-2); margin: 0 0 16px;
}
.renk-legend .oge { display: inline-flex; align-items: center; gap: 7px; }

/* ═══ Defter tablosu ═══ */
.defter-tablo td.tutar { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.tutar.gelir { color: var(--yesil); }
.tutar.gider { color: var(--kirmizi); }
tr.toplam-satir > td {
  font-weight: 700; background: var(--tile-2);
  border-top: 3px double rgba(29, 29, 31, .28);
}
/* Toplam satırında sayının ne olduğunu söyleyen sakin etiket (Durum sütununda
   başıboş duran "Net" kelimesinin yerine — değerin yanında anlamlı) */
.ic-etiket {
  font-weight: 600; text-transform: uppercase; letter-spacing: .06em;
  font-size: 10px; color: var(--ink-3);
}

/* ═══ Yıl şeridi (12 aylık gezinme) ═══
   12 ay TEK BAKIŞTA görünmeli (Serdar'ın asıl isteği: "12 ayı Excel'deki gibi bir
   sayfada"). Bu yüzden yatay kaydırma YOK: ızgara 12 eşit sütun, dar ekranda 6 ve 4
   sütuna satır atlayarak düşer. `minmax(0, 1fr)` şart — `1fr`in min değeri `auto`dur
   ve içerik kutuyu şişirip taşmayı geri getirir. */
.serit-bas {
  display: flex; flex-wrap: wrap; gap: 4px 18px;
  align-items: baseline; justify-content: space-between;
  margin: 0 0 4px;
}
.serit-bas h2 { margin: 0; }
.yil-toplam {
  margin: 0; font-size: 12.5px; font-weight: 500; color: var(--ink-2);
  font-variant-numeric: tabular-nums;
}
.yil-toplam .e { color: var(--ink-3); font-weight: 600; }
.yil-toplam b { font-weight: 700; }
.yil-toplam .gelir { color: var(--yesil); }
.yil-toplam .gider { color: var(--kirmizi); }
.yil-toplam .notr { color: var(--ink-2); }

.serit-anahtar {
  margin: 0 0 8px; font-size: 11px; font-weight: 500; color: var(--ink-3);
  letter-spacing: .01em;
}
.serit-anahtar b { font-weight: 700; }
.serit-anahtar .gelir { color: var(--yesil); }
.serit-anahtar .gider { color: var(--kirmizi); }

.yil-seridi {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 6px; padding: 2px; margin: 0 0 2px;
}
/* Kutu zemini `--tile-2`: kart zemini zaten `--tile`, aynı tonda kalırsa kutular
   görünmez olur ve tıklanabilirlikleri kaybolur. Aktif ay beyaza çıkar.
   `overflow: hidden` BİLEREK YOK: kutuyu aşan bir tutar sessizce kırpılırsa
   ekranda YANLIŞ para yazar (1.250.000 → 1.250.00). Taşarsa görünsün, yalan söylemesin. */
.ay-kutu {
  min-width: 0;
  background: var(--tile-2); border: 1px solid transparent; border-radius: var(--r-in);
  padding: 7px 6px 8px;
  display: flex; flex-direction: column; gap: 1px;
  text-decoration: none !important; color: inherit;
  transition: background var(--t-micro) ease, transform var(--t-micro) var(--ease-out);
}
a.ay-kutu:hover { background: #fff; color: inherit; transform: translateY(-1px); }
.ay-kutu .ay-ad {
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--ink-3); margin-bottom: 3px;
}
/* Ölçüldü: 12 sütunda kutu EN FAZLA 85,2 px (kart 1140 px'te doyuyor). 11 px'te
   7 haneli en kötü durum ("1.250.000 ₺") 65 px — 71 px'lik iç alana sığıyor. */
.ay-kutu .deger {
  font-size: 11px; font-weight: 600; font-variant-numeric: tabular-nums;
  text-align: right; white-space: nowrap;
}
.ay-kutu .gelir { color: var(--yesil); }
.ay-kutu .gider { color: var(--kirmizi); }
.ay-kutu .notr { color: var(--ink-2); }
.ay-kutu .net { font-weight: 700; border-top: 1px solid var(--hair); margin-top: 3px; padding-top: 3px; }
/* Hareketsiz ay soluklaşır — dolu aylar kendiliğinden öne çıkar */
.ay-kutu.bos-ay .deger { color: var(--ink-3); font-weight: 500; }
.ay-kutu.aktif { background: #fff; border-color: var(--amber); box-shadow: 0 0 0 2px var(--amber); }
.ay-kutu.aktif .ay-ad { color: var(--amber-text); }

/* Dar ekranda kaydırma yerine SATIR ATLA: 12 ay yine tek bakışta.
   Kırılımlar tahminle değil ÖLÇÜMLE seçildi — her bandın en dar kutusu 7 haneli
   tutarı ("1.250.000 ₺") kırpmadan taşıyabilmeli:
     1121 px+ → 12 sütun (kutu ≥80,3 px · iç alan 68,3 px ≥ 65 px)
     721-1120 → 6 sütun  (kutu ≥99,8 px)
     521-720  → 4 sütun  (kutu ≥102,8 px)
     ≤520     → 3 sütun  (kutu ≥131 px)
   12 sütunu 900 px'e kadar zorlamak ölçümde kırpıyordu (860 px kartta kutu 61,8 px,
   iç alan 47,8 px — 6 haneli tutar bile sığmıyor), o yüzden geçiş yukarı taşındı. */
@media (max-width: 1120px) {
  .yil-seridi { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; }
  .ay-kutu { padding: 9px 10px 10px; }
  .ay-kutu .ay-ad { font-size: 10.5px; }
  .ay-kutu .deger { font-size: 12px; }
}
@media (max-width: 720px) {
  .yil-seridi { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .yil-seridi { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ═══ Hızlı ekleme formu (özet/defter içi kompakt satır) ═══ */
.hizli-ekle { display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: flex-end; }
.hizli-ekle label {
  display: flex; flex-direction: column; gap: 4px;
  flex: 1 1 132px; min-width: 0;
  font-size: 11.5px; font-weight: 600; color: var(--ink-2);
}
.hizli-ekle input, .hizli-ekle select { font-size: 13.5px; padding: 7px 10px; width: 100%; }
.hizli-ekle label.onay { flex: 0 0 auto; font-size: 13px !important; }
.hizli-ekle button { flex: 0 0 auto; padding: 8px 18px; font-size: 13.5px; }
.hizli-ekle .genis { flex: 1 1 100%; }

/* Geniş tablo sarmalayıcısı. `auto` içerik sığdığında görünmez —
   her genişlikte güvenle uygulanır, dar ekranda tabloya taban genişlik verilir. */
.tablo-kaydir { overflow-x: auto; }

/* ═══ Formlar ═══ */
form.izgara { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 13px 16px; }
form.izgara label, form.dikey label {
  display: flex; flex-direction: column; gap: 5px;
  font-size: 12px; font-weight: 600; color: var(--ink-2);
}
form.dikey { display: flex; flex-direction: column; gap: 13px; max-width: 380px; }
.genis { grid-column: 1 / -1; }
label.onay { flex-direction: row !important; align-items: center; gap: 8px; align-self: end; color: var(--ink) !important; font-weight: 500 !important; font-size: 14px !important; }
input, select, textarea {
  font: inherit; font-size: 14.5px; padding: 9px 13px;
  border: 1px solid var(--hair); border-radius: var(--r-in);
  background: #fff; color: var(--ink);
  transition: border-color var(--t-micro) ease;
}
input:hover, select:hover, textarea:hover { border-color: rgba(29, 29, 31, .22); }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--amber-text); outline-offset: 0; border-color: transparent; }
input[type="checkbox"] { accent-color: var(--amber-deep); width: 16px; height: 16px; }

/* ═══ Butonlar (site .pill idiomu: amber hap birincil) ═══ */
button {
  font: inherit; font-size: 14.5px; font-weight: 600;
  background: var(--amber); color: var(--ink);
  border: none; border-radius: var(--r-pill); padding: 10px 24px;
  cursor: pointer; justify-self: start;
  transition: background var(--t-micro) ease, transform var(--t-micro) ease;
}
button:hover { background: var(--amber-deep); transform: translateY(-1px); }
button:active { transform: translateY(0) scale(.98); }
button.ikincil { background: #fff; color: var(--ink); border: 1px solid var(--hair); }
button.ikincil:hover { background: var(--tile); border-color: rgba(29, 29, 31, .22); }
button.kucuk { padding: 4px 13px; font-size: 12.5px; }
.ikincil-baglanti { font-size: 13px; font-weight: 500; color: var(--ink-2); margin-left: 10px; }
form.satir { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 12px; }
form.filtre { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 16px; }
form.filtre select { max-width: 200px; background: #fff; }
form.filtre button { padding: 8px 18px; font-size: 13.5px; }
td form { display: inline; }

/* ═══ Mesajlar / notlar ═══ */
.mesaj { padding: 11px 16px; border-radius: var(--r-in); background: var(--tile); margin-bottom: 16px; font-size: 14px; font-weight: 500; }
.mesaj.tamam { background: var(--yesil-zemin); color: var(--yesil); }
.mesaj.hata { background: var(--kirmizi-zemin); color: var(--kirmizi); }
.bos { color: var(--ink-2); }
.dipnot { font-size: 12px; color: var(--ink-3); margin: 12px 0 0; line-height: 1.55; }
.faz-notu { color: var(--ink-3); font-size: 12px; text-align: center; margin-top: 8px; }
.kirinti { color: var(--ink-2); font-size: 13px; font-weight: 500; margin: -12px 0 18px; }
.kirinti a { color: var(--amber-text); }
code.gizli-anahtar {
  background: var(--tile); padding: 4px 10px; border-radius: 8px;
  font-size: 14px; letter-spacing: .07em;
}
ol { padding-left: 20px; } ol li { margin-bottom: 8px; }

/* ═══ Giriş sayfası (site .cta-band idiomu: sıcak koyu + amber ışık kütlesi) ═══ */
body.giris-sayfasi {
  display: grid; place-items: center; min-height: 100vh;
  background: #1A0F04; position: relative; overflow: hidden;
}
body.giris-sayfasi::before {
  content: ""; position: absolute; left: 50%; top: -220px;
  width: 1400px; height: 900px; margin-left: -700px;
  border-radius: 50%; opacity: .9; pointer-events: none;
  background:
    radial-gradient(46% 50% at 60% 46%, rgba(249, 167, 44, .55) 0%, rgba(249, 167, 44, 0) 72%),
    radial-gradient(36% 40% at 66% 40%, rgba(255, 205, 110, .35) 0%, rgba(255, 205, 110, 0) 70%),
    radial-gradient(62% 68% at 30% 62%, rgba(232, 138, 12, .35) 0%, rgba(232, 138, 12, 0) 78%);
}
.giris-kutu {
  position: relative; z-index: 1;
  background: var(--bg); border-radius: 28px; padding: 40px 36px;
  width: min(92vw, 384px);
  box-shadow: 0 24px 64px rgba(10, 6, 2, .45);
}
.giris-kutu .marka { color: var(--ink); }
.giris-kutu .alt-baslik { color: var(--ink-2); font-size: 13px; margin: 4px 0 22px; }
.giris-kutu form { display: flex; flex-direction: column; gap: 11px; }
.giris-kutu label { font-size: 12px; font-weight: 600; color: var(--ink-2); margin-bottom: -6px; }
.giris-kutu button { margin-top: 10px; justify-self: stretch; width: 100%; padding: 12px 24px; font-weight: 700; }

/* ═══ Dar ekran ═══ → dosyanın SONUNDAKİ "Faz 7 §3 MOBİL KATMAN" bloğuna taşındı
   (eşit özgüllükte kaynak sırası kazansın diye tek yerde toplandı). */

/* ═══ Hareket azaltma ═══ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ═══════════════════════════════════════════════════════════════════════
   Faz 6 (2026-09-02) — Serdar revize notları
   Ortak stiller: yıldız puanlama · hızlı gider · karşılıklı defter · grafikler
   ═══════════════════════════════════════════════════════════════════════ */

/* --- §8 Yıldız puanlama --------------------------------------------- */
.yildiz { letter-spacing: 1px; color: var(--amber-deep); white-space: nowrap; }
.yildiz .sonuk { color: var(--hair); }
.yildiz.bos { color: var(--ink-3); letter-spacing: 0; }
.yildiz-sayi { margin-left: 6px; font-size: 12px; color: var(--ink-2); font-variant-numeric: tabular-nums; }
.uzmanlik-agaci { margin: 0; padding: 0; list-style: none; }
.uzmanlik-agaci > li { padding: 6px 0; border-bottom: 1px solid var(--hair); }
.uzmanlik-agaci > li:last-child { border-bottom: 0; }
.uzmanlik-agaci .ana { display: flex; align-items: center; gap: 10px; font-weight: 600; }
.uzmanlik-agaci .ana .ad { flex: 1; min-width: 0; }
.uzmanlik-agaci .altlar { margin: 6px 0 2px 14px; padding: 0 0 0 12px; list-style: none;
  border-left: 2px solid var(--hair); }
.uzmanlik-agaci .altlar li { display: flex; align-items: center; gap: 10px;
  padding: 3px 0; font-size: 13px; font-weight: 400; color: var(--ink-2); }
.uzmanlik-agaci .altlar .ad { flex: 1; min-width: 0; }
/* Puan seçici (1-5 radyo) — yıldız görünümlü ama gerçek radio, klavyeyle gezilir */
.puan-sec { display: inline-flex; gap: 2px; }
.puan-sec input { position: absolute; opacity: 0; width: 0; height: 0; }
.puan-sec label { cursor: pointer; font-size: 17px; line-height: 1; color: var(--hair);
  padding: 0 1px; transition: color var(--t-micro) var(--ease-out); }
/* Dolu yıldızı PHP işaretler (.dolu). Buraya `input:checked ~ label` gibi kardeş
   kuralları KOYMA: özgüllüğü .dolu'dan yüksek çıkıp onu eziyordu — seçici 3/5
   yazarken ekranda 2 yıldız yanıyordu (2026-09-02 QC'de yakalandı). */
.puan-sec label.dolu { color: var(--amber-deep); }
.puan-sec:hover label.dolu { color: var(--amber); }
.puan-sec input:focus-visible + label { outline: 2px solid var(--amber); outline-offset: 2px; border-radius: 3px; }

/* --- §2 Hızlı gider çipleri ----------------------------------------- */
.hizli-gider { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 12px; }
.hizli-gider button, .hizli-gider .cip {
  appearance: none; border: 1px solid var(--hair); background: var(--tile);
  color: var(--ink); border-radius: var(--r-pill); padding: 7px 14px;
  font: inherit; font-size: 13px; cursor: pointer;
  transition: background var(--t-micro) var(--ease-out), border-color var(--t-micro) var(--ease-out);
}
.hizli-gider button:hover { background: var(--tile-2); border-color: var(--ink-3); }
.hizli-gider button[aria-pressed="true"] { background: var(--amber); border-color: var(--amber-deep); font-weight: 600; }
.hizli-gider .kdv-not { font-size: 11px; color: var(--ink-3); display: block; }

/* --- §3 Karşılıklı defter (gelir solda, gider sağda) ----------------- */
.karsilikli { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
.karsilikli > section { min-width: 0; }
.karsilikli h3 { margin: 0 0 8px; font-size: 14px; letter-spacing: .02em; text-transform: uppercase; color: var(--ink-2); }
.karsilikli .yon-gelir h3 { color: var(--yesil); }
.karsilikli .yon-gider h3 { color: var(--kirmizi); }
.karsilikli table { width: 100%; }
.karsilikli .toplam-satir td { border-top: 2px solid var(--ink); font-weight: 700; }
.karsilikli .bos { color: var(--ink-3); font-size: 13px; padding: 10px 0; }
.karsilikli-ozet { display: flex; flex-wrap: wrap; gap: 10px 26px; align-items: baseline;
  margin: 14px 0 0; padding-top: 12px; border-top: 2px solid var(--ink); }
.karsilikli-ozet .oge { font-size: 13px; color: var(--ink-2); }
.karsilikli-ozet .oge strong { display: block; font-size: 19px; color: var(--ink); font-variant-numeric: tabular-nums; }
.karsilikli-ozet .oge.negatif strong { color: var(--kirmizi); }
.karsilikli-ozet .oge.pozitif strong { color: var(--yesil); }
@media (max-width: 860px) { .karsilikli { grid-template-columns: 1fr; } }

/* --- §4 Ek vade ------------------------------------------------------ */
.ek-vade-form { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; }
.ek-vade-form input[type="date"] { min-width: 150px; }
.rozet.ertelendi { background: var(--sari-zemin); color: var(--sari); border: 1px solid currentColor; }
.vade-gecmis { font-size: 11px; color: var(--ink-3); display: block; }
/* Erteleme izi sarmalayıcısı (Özet). Rozet + iz KENDİ satırlarına iner; yoksa
   "2 kez ertelendi" rozeti "124 gün gecikti"nin yanına yapışıp (ikisi de nowrap,
   aralarında boşluk yok = satır kırma fırsatı yok) Gecikme sütununu 243 px'e
   şişiriyor ve tabloyu kabın dışına taşırıyordu. Ölçüm: 243 → 138 px. */
.vade-iz { display: block; margin-top: 5px; }
.vade-gecmis s { opacity: .7; }

/* --- §1/§5/§6 Grafikler --------------------------------------------- */
.grafik-kutu { margin: 6px 0 4px; }
.grafik-kutu svg { max-width: 100%; height: auto; display: block; }
.grafik-bos { color: var(--ink-3); font-size: 13px; padding: 18px 0; margin: 0; }
.g-eksen { font-size: 11px; fill: var(--ink-3); font-family: inherit; }
.g-deger { font-size: 11px; fill: var(--ink-2); font-family: inherit; font-weight: 600; }
.pasta-kutu { display: grid; grid-template-columns: auto 1fr; gap: 18px; align-items: center; }
.grafik-lejant { margin: 0; padding: 0; list-style: none; font-size: 13px; min-width: 0; }
.grafik-lejant li { display: flex; align-items: center; gap: 8px; padding: 4px 0;
  border-bottom: 1px solid var(--hair); }
.grafik-lejant li:last-child { border-bottom: 0; }
.grafik-lejant .nokta { width: 10px; height: 10px; border-radius: 3px; flex: none; }
.grafik-lejant .ad { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.grafik-lejant .deger { font-variant-numeric: tabular-nums; color: var(--ink); }
.grafik-lejant .oran { font-variant-numeric: tabular-nums; color: var(--ink-3); width: 52px; text-align: right; }
@media (max-width: 760px) { .pasta-kutu { grid-template-columns: 1fr; } }
.grafik-ikili { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
/* Aynı `min-width: auto` tuzağı: içerideki grafik kaydırıcısının svg'si
   `min-width: 900px` istiyor (stil-rapor.css) → kolon şişip sayfayı taşırırdı. */
.grafik-ikili > * { min-width: 0; }
@media (max-width: 900px) { .grafik-ikili { grid-template-columns: 1fr; } }

/* --- §5 Kârlılık yüzdesi rozetleri ---------------------------------- */
.kar-yuzde { font-variant-numeric: tabular-nums; font-weight: 600; }
.kar-yuzde.iyi { color: var(--yesil); }
.kar-yuzde.orta { color: var(--sari); }
.kar-yuzde.kotu { color: var(--kirmizi); }
/* Renk tek başına anlam taşımasın diye yüzdenin yanına daima sayı basılır. */

/* --- Faz 6 tamamlayıcı: ajanların kullandığı ama tanımsız kalan sınıflar ----
   (2026-09-02 QC'de yakalandı: defter görünüm sekmeleri stilsiz olduğu için
   ekranda "Karşılıklı: gelir | giderListe: tek akış..." diye BİRLEŞİK görünüyordu —
   php -l ve render testi bunu yakalamaz, yalnız ekran görüntüsü gösterdi.) */

/* §3 Defter görünüm sekmeleri (Karşılıklı / Liste) */
.gorunum-sekmeler { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 14px; }
.gorunum-sekmeler .sekme {
  display: inline-block; padding: 7px 15px; border-radius: var(--r-pill);
  border: 1px solid var(--hair); background: var(--tile); color: var(--ink-2);
  font-size: 13px; font-weight: 500; text-decoration: none; line-height: 1.3;
  transition: background var(--t-micro) var(--ease-out), color var(--t-micro) var(--ease-out);
}
.gorunum-sekmeler a.sekme:hover { background: var(--tile-2); color: var(--ink); }
.gorunum-sekmeler .sekme.aktif {
  background: var(--amber); border-color: var(--amber-deep); color: var(--ink); font-weight: 700;
}

/* §2 İş sayfası: dört kutuluk para şeridi (sayilar ızgarasının 4'lü kırılımı) */
.sayilar.dortlu { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) { .sayilar.dortlu { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .sayilar.dortlu { grid-template-columns: 1fr; } }

/* §4 Ek vade açılır bloğu */
details.ek-vade { margin-top: 6px; }
details.ek-vade > summary {
  cursor: pointer; font-size: 12px; color: var(--amber-text);
  list-style: none; display: inline-block; padding: 2px 0;
}
details.ek-vade > summary::-webkit-details-marker { display: none; }
details.ek-vade > summary::before { content: "+ "; font-weight: 700; }
details.ek-vade[open] > summary::before { content: "− "; }
details.ek-vade > summary:hover { color: var(--amber-deep); text-decoration: underline; }
details.ek-vade .ek-vade-form { margin-top: 8px; padding: 10px; background: var(--tile);
  border: 1px solid var(--hair); border-radius: var(--r-in); }

/* Özet sayfasındaki uyarı kartları (geciken tahsilat/ödeme) — vurgulu çerçeve */
.kart.uyari-kart { border: 1px solid var(--hair); }

/* §5 Kârlılık üç katman şeridi — 7 kutu. auto-fit ile 6+1 kırılıyor ve son kutu
   tek başına kalıyordu; sabit 4'lü ızgara 4+3 verir, ikinci sıra dengeli durur. */
.sayilar.katmanli { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1020px) { .sayilar.katmanli { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px)  { .sayilar.katmanli { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 460px)  { .sayilar.katmanli { grid-template-columns: 1fr; } }


/* ═════════════════════════════════════════════════════════════════════════
   Faz 7 §3 (2026-09-05) — MOBİL KATMAN
   Dosyanın SONUNDA duruyor: eşit özgüllükteki kurallarda kaynak sırası kazansın
   ve "mobilde ne oluyor?" sorusu tek yerden okunabilsin.

   KESİM NOKTASI MERDİVENİ (bu dosyanın sözleşmesi — yeni kural bunları kullanır):
     1120 px · dar masaüstü
      900 px · tablet — ana menü açılır menüye döner, iki kolon tek kolona iner
      720 px · telefon — tablolar kaydırma kabına girer, dokunma hedefleri 44 px
      520 px · dar telefon — en sıkı kırılımlar
   İçeriğe özel merdivenler (yıl şeridi 1121/721/521 · kârlılık 1020/760/460 ·
   karşılıklı 860 · pasta 760) ÖLÇÜLEREK seçilmişti — sayıları DEĞİŞTİRMEDİM,
   değiştirmek o ölçümleri geçersiz kılardı. Yenisini yazarken merdiveni kullan.
   ═════════════════════════════════════════════════════════════════════════ */

/* ── ≤900 px: ana menü açılır menüye döner (JS YOK) ─────────────────────── */
@media (max-width: 900px) {
  .ustbar-ic { gap: 10px 12px; }
  .kullanici { order: 2; margin-left: auto; }
  .menu-dugme { order: 3; }
  .ustbar nav { order: 4; }

  .menu-dugme {
    display: inline-flex; align-items: center; gap: 9px;
    min-height: 44px; padding: 8px 15px; border-radius: var(--r-pill);
    border: 1px solid rgba(255, 255, 255, .26); color: #fff;
    font-size: 13.5px; font-weight: 700; cursor: pointer; user-select: none;
  }
  .menu-ikon { display: block; position: relative; width: 16px; height: 2px; background: currentColor; }
  .menu-ikon::before, .menu-ikon::after {
    content: ""; position: absolute; left: 0; width: 16px; height: 2px; background: currentColor;
  }
  .menu-ikon::before { top: -5px; }
  .menu-ikon::after { top: 5px; }
  .menu-anahtar:checked ~ .menu-dugme { background: var(--amber); color: var(--ink); border-color: var(--amber); }
  /* Anahtar görsel olarak gizli ama odaklanabilir → odak halkasını düğme gösterir */
  .menu-anahtar:focus-visible ~ .menu-dugme { outline: 2px solid var(--amber); outline-offset: 3px; }

  /* Kapalı = nav yok · açık = kendi satırında tam genişlik.
     max-height + overflow: telefon YATAY tutulduğunda (390 px yükseklik) menü
     ekranı aşınca son bağlantılara ulaşılamıyordu — o tuzağa karşı. */
  .ustbar nav { display: none; }
  .menu-anahtar:checked ~ nav {
    display: flex; flex-direction: column; align-items: stretch;
    flex: 1 0 100%; gap: 10px; margin-top: 2px; padding-bottom: 4px;
    max-height: calc(100dvh - 84px); overflow-y: auto; overscroll-behavior: contain;
  }
  .menu-grup + .menu-grup {
    margin-left: 0; padding-left: 0; border-left: 0;
    padding-top: 10px; border-top: 1px solid rgba(255, 255, 255, .14);
  }
  /* Grup adı burada GÖRÜNÜR: dikey yer var, asıl faydayı mobilde veriyor */
  .grup-etiket {
    display: block; flex: 1 0 100%;
    font-size: 10.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    color: #9a9aa0; padding: 0 2px 3px;
  }
  .ustbar nav a { min-height: 44px; display: inline-flex; align-items: center; padding: 8px 15px; font-size: 15px; }
  .hizli-eylem { min-height: 44px; display: inline-flex; align-items: center; padding: 8px 16px; }

  /* — Dokunma hedefleri: 44 px —
     Eşik 720 DEĞİL 900: 768 px'lik tablet de dokunmatiktir ve ölçümde o bantta
     düğmeler 27-42 px kalıyordu (BUTTON:36 · .sekme:33 · .kucuk:27). */
  button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
  button.kucuk { min-height: 44px; padding: 8px 16px; font-size: 13.5px; }
  .gorunum-sekmeler .sekme, .hizli-gider button, .hizli-gider .cip,
  .mini-kart { min-height: 44px; display: inline-flex; align-items: center; }
  .puan-sec label { font-size: 22px; padding: 6px 3px; }
}

/* ── ≤720 px: telefon ───────────────────────────────────────────────────── */
@media (max-width: 720px) {
  main { padding: 22px 16px 52px; }
  h1 { font-size: 25px; }
  .renk-legend { gap: 5px 14px; }
  .ozet-satir .oz-git { margin-left: 0; }

  /* — Tablolar — */
  .tablo-kaydir { overflow-x: auto; -webkit-overflow-scrolling: touch; position: relative; }
  .tablo-kaydir > table { min-width: 620px; }
  /* .tablo-kaydir sarmalayıcısı OLMAYAN tablolar (işlem günlüğü, tekrarlayanlar,
     raporlar arşivi, kârlılık eleman tablosu) sayfanın tamamını yana taşırıyordu.
     Sarmalayıcı eklemek o dosyaların işi; CSS tarafında table'ın kendisini kaydırma
     kabına çevirip örtük <tbody>'ye taban genişlik vererek aynı davranış kuruluyor. */
  .kart > table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .kart > table > tbody { display: table; width: 100%; min-width: 620px; }

  /* İlk sütun YAPIŞKAN: yana kaydırırken satırın kimliği (müşteri/açıklama/tarih)
     ekranda kalır. Zemin ŞEFFAF OLAMAZ, altından içerik geçer. */
  .tablo-kaydir > table th:first-child,
  .tablo-kaydir > table td:first-child,
  .kart > table th:first-child,
  .kart > table td:first-child { position: sticky; left: 0; z-index: 1; background: var(--tile); }
  /* Renkli satırların rgba zemini yapışkan hücrede KATI karşılığıyla verilir
     (rgba zemin + --tile bindirmesinin hesaplanmış hâli). Bu üç kural yukarıdaki
     yapışkan kuralla AYNI ÖZGÜLLÜKTE (0,2,2) → sonra gelmek zorunda. */
  tr.satir-yesil   > td:first-child { background: #ECF0F0; }
  tr.satir-sari    > td:first-child { background: #F2EEEB; }
  tr.satir-kirmizi > td:first-child { background: #F3ECEE; }
  tr.toplam-satir  > td:first-child { background: var(--tile-2); }
  /* Yapışkan sütunun SAĞ KENARI: içerik altından kayarken sınır belli olsun.
     `box-shadow` tek özelliktir — renkli satırların `inset` şeridi burada TEKRAR
     yazılmazsa silinir (bu yüzden dört ayrı satır; kısaltmak şeridi kaybettirir). */
  .tablo-kaydir > table th:first-child,
  .tablo-kaydir > table td:first-child,
  .kart > table th:first-child,
  .kart > table td:first-child { box-shadow: 1px 0 0 var(--hair); }
  tr.satir-yesil   > td:first-child { box-shadow: inset 3px 0 0 var(--yesil),   1px 0 0 var(--hair); }
  tr.satir-sari    > td:first-child { box-shadow: inset 3px 0 0 var(--sari),    1px 0 0 var(--hair); }
  tr.satir-kirmizi > td:first-child { box-shadow: inset 3px 0 0 var(--kirmizi), 1px 0 0 var(--hair); }

  /* Dokunma hedefleri ≤900 px bloğunda (tablet de dokunmatik) — orada. */
  /* Tablo içi metin bağlantıları: satır yüksekliği arttı + dikey iç boşluk verildi.
     Alt çizgi `text-decoration` (border DEĞİL) olduğu için metni takip eder,
     kutunun altında başıboş çizgi bırakmaz. Ölçülen etkin hedef ≈ 41 px. */
  td { padding: 13px 10px; }
  td a { padding-block: 10px; margin-block: -10px; }

  /* — Form alanları: tam genişlik + 16 px (iOS odakta otomatik yakınlaştırma eşiği) — */
  input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  select, textarea { font-size: 16px; width: 100%; min-height: 44px; }
  input[type="file"] { font-size: 14px; width: 100%; }
  input[type="checkbox"] { width: 18px; height: 18px; min-height: 0; }
  /* Savunma: yıldız puanlamanın gizli radyoları büyütülmemeli */
  .puan-sec input { width: 0; height: 0; min-height: 0; }
  form.dikey { max-width: none; }
  .hizli-ekle label { flex: 1 1 150px; }

  /* Filtre şeridi: yan yana sıkışmak yerine iki sütunlu ızgara, düğme tam satır */
  form.filtre { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: stretch; }
  form.filtre select, form.filtre input { max-width: none; width: 100%; }
  form.filtre button { grid-column: 1 / -1; width: 100%; font-size: 15px; }
  form.filtre .ikincil-baglanti {
    grid-column: 1 / -1; margin-left: 0; min-height: 44px;
    display: inline-flex; align-items: center; justify-content: center;
  }
}

/* ── ≤520 px: dar telefon ───────────────────────────────────────────────── */
@media (max-width: 520px) {
  .ustbar-ic { padding: 10px 16px; }
  .kart { padding: 18px 16px; }
  .eylem-kutu { padding: 15px 16px 14px; }
  .ozet-satir { gap: 6px 18px; padding: 14px 16px; }
  .mini-sayilar { gap: 8px; }
  form.filtre { grid-template-columns: 1fr; }
  form.satir { align-items: stretch; }
}

/* ── HAZIR AMA UYKUDA: tablo → kart görünümü ──────────────────────────────
   Bu blok yalnız İKİ koşul birden sağlanınca devreye girer:
     (a) <table class="mobil-kart">  ve  (b) hücrelerde data-etiket="Sütun adı"
   İkisi de sayfa dosyalarında yazılır (gelirler / giderler / isler / defter /
   elemanlar / karlilik) ve o dosyalar bu turda BAŞKA ajanlardaydı → öznitelikler
   HENÜZ YOK, blok şu an hiçbir şeye dokunmuyor. Öznitelikler eklendiği gün yatay
   kaydırma yerine gerçek kart görünümü açılır. → İKİNCİ TUR İŞİ (rapora yazıldı).
   ─────────────────────────────────────────────────────────────────────── */
@media (max-width: 640px) {
  table.mobil-kart, table.mobil-kart > tbody { display: block; min-width: 0; overflow: visible; }
  table.mobil-kart > tbody > tr:has(> th) { display: none; }  /* başlık satırı */
  table.mobil-kart > tbody > tr {
    display: block; background: #fff; border: 1px solid var(--hair);
    border-radius: var(--r-in); padding: 4px 12px; margin-bottom: 10px;
  }
  table.mobil-kart > tbody > tr > td[data-etiket] {
    display: flex; gap: 12px; align-items: baseline; justify-content: space-between;
    padding: 8px 0; text-align: left; border-bottom: 1px solid var(--hair);
  }
  table.mobil-kart > tbody > tr > td[data-etiket]:last-child { border-bottom: 0; }
  table.mobil-kart > tbody > tr > td[data-etiket]::before {
    content: attr(data-etiket);
    flex: 0 0 38%; font-size: 11px; font-weight: 700; text-transform: uppercase;
    letter-spacing: .06em; color: var(--ink-3);
  }
  /* Kart kipinde yapışkan sütun ve renk şeridi anlamsız → geri alınır */
  table.mobil-kart > tbody > tr > td:first-child { position: static; background: none; box-shadow: none; }
  table.mobil-kart > tbody > tr.satir-kirmizi { border-left: 4px solid var(--kirmizi); }
  table.mobil-kart > tbody > tr.satir-sari { border-left: 4px solid var(--sari); }
  table.mobil-kart > tbody > tr.satir-yesil { border-left: 4px solid var(--yesil); }
}
