/* GH Muhasebe Panel — arayüz stilleri
   Dışarıdan hiçbir şey yüklenmez: panelin kimin kullandığı üçüncü taraf
   sunuculara sızmasın diye. Yazı tipi de kendi sunucumuzda duruyor. */

/* ------------------------------------------------------------------
   Yazı tipi — GH Panel Sans

   Instrument Sans (SIL OFL, 2022 Instrument Sans Project Authors).
   Panelde eksik kalan 66 işaret Inter'den (SIL OFL, 2020 Inter Project
   Authors) alınıp eklendi; en önemlisi ₺ — Instrument Sans'ta yok ve
   panel bütün tutarları onunla yazıyor, eklenmeseydi her tutardaki
   simge yedek yazı tipinden çizilirdi.

   Değiştirilmiş bir yazı tipini özgün adıyla dağıtmamak için aile adı
   GH Panel Sans yapıldı. İki lisans metni de pakette.

   Tek dosya, 400'den 700'e bütün kalınlıklar (değişken yazı tipi).
   font-display: swap — dosya gelene kadar yazılar sistem yazı tipiyle
   görünüyor, boş ekran beklenmiyor.
   ------------------------------------------------------------------ */
@font-face {
  font-family: "GH Panel Sans";
  src: url("GHPanelSans.woff") format("woff");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

:root {
  /* faz28 — renk paleti logodan çıkıyor.

     Eski palet sıcak kâğıt (#f6f6f3) + lacivert (#23215c) üzerineydi.
     Yenisi logonun kendi mavisi (#0153a7) ve onun etrafında serinleyen
     bir gri ailesi. Değişken adları aynı kaldı: iki bin satırlık stil
     dosyası bu adlara bağlı, hepsi tek yerden döndü.

     Kehribar (#e08b3e) siteden geliyor ve ekrandaki tek sıcak renk —
     dikkat çekmesi gereken tek şeye ayrıldı. */

  --kagit:    #f2f5f9;   /* sayfa zemini */
  --yuzey:    #ffffff;   /* kart, tablo, çubuk */
  --murekkep: #15202c;   /* ana yazı */
  --soluk:    #6b7787;   /* ikincil yazı */
  --lacivert: #0153a7;   /* ana vurgu — logonun mavisi */
  --cizgi:    #e3e9f1;   /* kenarlık */
  --uyari:    #b42318;
  --onay:     #0f7a45;

  /* faz28'de eklenenler */
  --yuzey-2:  #f7f9fc;   /* tablo başlığı, sönük zemin */
  --cizgi-2:  #eef2f7;   /* daha silik ayırıcı */
  --ikincil:  #4d5b6b;   /* yazının ikinci kademesi */
  --mavi-a:   #e8f1fb;   /* mavinin açık zemini */
  --kehribar: #e08b3e;
  --kehribar-a: #fdf1e3;

  /* Gölgeler: üç kademe, hepsi aynı aileden */
  --g1: 0 1px 2px rgba(16, 24, 34, .06);
  --g2: 0 1px 3px rgba(16, 24, 34, .08), 0 12px 32px -14px rgba(16, 24, 34, .22);
  --g3: 0 2px 8px rgba(16, 24, 34, .10), 0 32px 64px -24px rgba(16, 24, 34, .35);

  --kose:   9px;   /* kart köşesi */
  --kose-s: 7px;   /* düğme, alan köşesi */

  --yan-g: 222px;  /* kenar çubuğu genişliği */

  --olcu: clamp(0.95rem, 0.9rem + 0.2vw, 1rem);
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--kagit);
  color: var(--murekkep);
  /* Yedek zinciri duruyor: yazı tipi dosyası bir sebeple yüklenemezse
     panel eski görünümüne düşer, okunmaz hale gelmez. */
  font-family: "GH Panel Sans", ui-sans-serif, system-ui, -apple-system,
               "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: var(--olcu);
  line-height: 1.55;
}

/* Tutarlar ve numaralar hizalı dursun */
.sayi, td.sayi, input[inputmode="numeric"] {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

/* ---------- Giriş ekranı ---------- */

.giris-sayfa {
  min-height: 100dvh;
  display: grid;
  grid-template-rows: 1fr auto;
  padding: 2rem 1.5rem;
}

.giris-kutu {
  width: 100%;
  max-width: 23rem;
  margin: 12vh auto 0;
  /* Defter kenar çizgisi — panelin tek süsü */
  border-left: 3px solid var(--lacivert);
  padding-left: 1.75rem;
}

.kurum {
  margin: 0;
  font-size: 1.35rem;
  font-weight: 650;
  letter-spacing: -0.015em;
  color: var(--lacivert);
}

.kurum span {
  display: block;
  font-size: 0.8rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  color: var(--soluk);
  margin-top: 0.1rem;
}

.giris-kutu h2 {
  margin: 2.25rem 0 0.35rem;
  font-size: 1rem;
  font-weight: 600;
}

.aciklama {
  margin: 0 0 1.5rem;
  color: var(--soluk);
  font-size: 0.9rem;
  max-width: 34ch;
}

/* ---------- Form ---------- */

label {
  display: block;
  margin-bottom: 0.3rem;
  font-size: 0.85rem;
  color: var(--soluk);
}

input[type="text"],
input[type="email"],
input[type="password"] {
  width: 100%;
  padding: 0.6rem 0.7rem;
  margin-bottom: 1.1rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  color: inherit;
  font: inherit;
}

input:focus-visible,
button:focus-visible,
a:focus-visible {
  outline: 2px solid var(--lacivert);
  outline-offset: 2px;
}

.kod-alani {
  letter-spacing: 0.4em;
  font-size: 1.25rem;
  text-align: center;
}

button {
  width: 100%;
  padding: 0.65rem 1rem;
  border: 1px solid var(--lacivert);
  border-radius: 2px;
  background: var(--lacivert);
  color: #fff;
  font: inherit;
  font-weight: 550;
  cursor: pointer;
}

button:hover { background: #191749; }

/* ---------- Uyarılar ---------- */

.mesaj {
  margin-bottom: 1.25rem;
  padding: 0.6rem 0.75rem;
  border-left: 3px solid var(--soluk);
  background: var(--yuzey);
  font-size: 0.88rem;
}

.mesaj.hata  { border-left-color: var(--uyari); color: var(--uyari); }
.mesaj.bilgi { border-left-color: var(--lacivert); }
.mesaj.iyi   { border-left-color: var(--onay); color: var(--onay); }

.dipnot {
  margin: 2.5rem auto 0;
  max-width: 23rem;
  color: var(--soluk);
  font-size: 0.78rem;
}

/* ---------- Panel iç sayfaları ---------- */

.ust {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: baseline;
  justify-content: space-between;
  padding: 1rem 1.5rem;
  background: var(--yuzey);
  border-bottom: 1px solid var(--cizgi);
}

.ust .kurum { font-size: 1.05rem; }

.kim {
  font-size: 0.85rem;
  color: var(--soluk);
}

.kim a { color: var(--lacivert); }

main {
  max-width: 60rem;
  margin: 0 auto;
  padding: 2rem 1.5rem 4rem;
}

main h1 {
  font-size: 1.3rem;
  font-weight: 650;
  letter-spacing: -0.015em;
  margin: 0 0 0.5rem;
}

.kutu {
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  padding: 1.25rem 1.5rem;
  margin-top: 1.5rem;
}

.kutu h2 { margin-top: 0; font-size: 1rem; }

.anahtar {
  display: block;
  margin: 0.75rem 0;
  padding: 0.75rem;
  background: var(--kagit);
  border: 1px solid var(--cizgi);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.95rem;
  letter-spacing: 0.08em;
  word-break: break-all;
}

dl.ozet { margin: 0; }
dl.ozet dt { font-size: 0.82rem; color: var(--soluk); margin-top: 0.85rem; }
dl.ozet dd { margin: 0.1rem 0 0; }

/* ===================================================================
   Faz 2 — gezinme, tablolar, süzgeç
   =================================================================== */

/* Menü kuralları aşağıda, "Renkli menü" bölümünde. */

main.genis { max-width: 76rem; }

.geri { margin: 0 0 0.75rem; font-size: 0.85rem; }
.geri a { color: var(--soluk); }

/* ---------- Süzgeç ---------- */

.suzgec {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  align-items: flex-end;
  margin: 1.25rem 0 0.75rem;
  padding: 1rem 1.25rem;
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
}

.suzgec .alan { flex: 0 1 11rem; }
.suzgec .alan.buyuk { flex: 1 1 18rem; }
.suzgec .alan.dugme { flex: 0 0 auto; }

.suzgec input,
.suzgec select {
  width: 100%;
  margin-bottom: 0;
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--kagit);
  color: inherit;
  font: inherit;
}

.suzgec button { width: auto; padding: 0.5rem 1.4rem; }

.sonuc-bilgi { margin: 0 0 1rem; font-size: 0.85rem; color: var(--soluk); }
.sonuc-bilgi a { color: var(--lacivert); }

/* ---------- Tablo ---------- */

.tablo-sar { overflow-x: auto; border: 1px solid var(--cizgi); background: var(--yuzey); }

table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }

th, td {
  padding: 0.55rem 0.85rem;
  text-align: left;
  border-bottom: 1px solid var(--cizgi);
  vertical-align: top;
}

thead th {
  font-weight: 550;
  font-size: 0.8rem;
  color: var(--soluk);
  background: var(--kagit);
  position: sticky;
  top: 0;
}

tbody tr:last-child td { border-bottom: none; }
tbody tr:hover { background: #fbfbf8; }

td a { color: var(--lacivert); }

.sag { text-align: right; }
table.dar { font-size: 0.88rem; }
.kutu table { border-top: 1px solid var(--cizgi); margin-top: 0.5rem; }

/* ---------- Rozet ---------- */

.rozet {
  display: inline-block;
  padding: 0.05rem 0.4rem;
  margin-right: 0.25rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--kagit);
  font-size: 0.72rem;
  color: var(--soluk);
  white-space: nowrap;
}

.rozet.uyari { border-color: var(--uyari); color: var(--uyari); }
.rozet.iyi   { border-color: var(--onay);  color: var(--onay); }

/* ---------- Diğer ---------- */

.ikili {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr));
  gap: 1.5rem;
}
.ikili .kutu { margin-top: 1.5rem; }

.buyuk-sayi { font-size: 1.7rem; font-weight: 600; line-height: 1.2; }
.vurgu { font-weight: 600; color: var(--uyari); }
.soluk { color: var(--soluk); }
.kucuk { font-size: 0.82rem; }

.sayfalama {
  display: flex;
  gap: 1.25rem;
  align-items: baseline;
  margin-top: 1rem;
  font-size: 0.88rem;
}
.sayfalama a { color: var(--lacivert); }
.sayfalama span { color: var(--soluk); }

.onay { display: flex; gap: 0.5rem; align-items: baseline; margin-bottom: 1.1rem; }
.onay input { width: auto; margin: 0; }

input[type="file"] {
  width: 100%;
  margin-bottom: 1.1rem;
  padding: 0.5rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--kagit);
  font: inherit;
}

select {
  width: 100%;
  padding: 0.6rem 0.7rem;
  margin-bottom: 1.1rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  color: inherit;
  font: inherit;
}

button.ikincil {
  width: auto;
  padding: 0.45rem 1.1rem;
  background: transparent;
  color: var(--lacivert);
}
button.ikincil:hover { background: var(--kagit); }

.satir-form { margin-top: 0.75rem; }

main ul { padding-left: 1.1rem; }
main li { margin-bottom: 0.35rem; }

/* ===================================================================
   Faz 3 — ödeme takibi ve kullanıcı yönetimi
   =================================================================== */

.donem-serit {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 1.25rem 0 0.5rem;
}

.donem-bag {
  padding: 0.3rem 0.7rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  color: var(--soluk);
  text-decoration: none;
  font-size: 0.85rem;
  white-space: nowrap;
}

.donem-bag:hover { color: var(--murekkep); }

.donem-bag.secili {
  border-color: var(--lacivert);
  background: var(--lacivert);
  color: #fff;
}

/* Dönem / toplam şeridi */
.ozet-serit {
  display: flex;
  flex-wrap: wrap;
  gap: 1.75rem;
  padding: 0.7rem 1.1rem;
  margin-bottom: 0.9rem;
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  font-size: 0.88rem;
  color: var(--soluk);
}

.ozet-serit strong { color: var(--murekkep); font-weight: 600; }

/* Ödeme tablosu */
.orta { text-align: center; }

.mukellef-hucre {
  border-right: 1px solid var(--cizgi);
  font-weight: 500;
  background: #fcfcfa;
}

tr.grup-basi td { border-top: 1px solid var(--cizgi); }

td input[type="checkbox"] {
  width: 1.1rem;
  height: 1.1rem;
  margin: 0;
  accent-color: var(--lacivert);
  cursor: pointer;
}

/* Kaydetme şeridi.
   Ekranın altına YAPIŞTIRMIYORUZ. Bu sayfalardaki tablolar kendi kaydırma
   alanında duruyor ve ekrana sığıyor; yapışık bir şerit tablonun üstüne
   biniyor. Şerit tablonun hemen altında, akışın içinde duruyor.

   Yapışık davranış isteyen bir ekran olursa ona "yapisik" sınıfı eklenir. */
.kaydet-serit {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: center;
  margin-top: -1px;
  padding: 0.85rem 1.1rem;
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  border-top: 2px solid var(--lacivert);
}

.kaydet-serit.yapisik {
  position: sticky;
  bottom: 0;
  margin-top: 0;
}

.kaydet-serit button { width: auto; padding: 0.55rem 1.6rem; }

/* Kullanıcı tablosu */
tr.pasif td { color: var(--soluk); background: #fafaf7; }

.islem-hucre { white-space: nowrap; }
.satir-ici { display: inline-block; margin: 0 0.25rem 0 0; }
.kucuk-dugme { padding: 0.25rem 0.6rem; font-size: 0.8rem; }

.suzgec .onay { margin-bottom: 0; font-size: 0.85rem; }
.suzgec .onay input { width: auto; }

/* ===================================================================
   Faz 4 — beyanname ızgarası
   Renkler Excel dosyasındaki satır renklerinden alındı.
   =================================================================== */

main.tam { max-width: none; padding: 1.5rem 1.25rem 6rem; }

.baslik-satiri {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: center;
  justify-content: space-between;
}

.baslik-satiri h1 { margin: 0; }

/* ---------- Müşavir seçici ---------- */

.musavir-secici { display: flex; border: 1px solid var(--cizgi); border-radius: 2px; }

.musavir-secici a {
  padding: 0.4rem 1.1rem;
  color: var(--soluk);
  text-decoration: none;
  font-size: 0.88rem;
  background: var(--yuzey);
  border-right: 1px solid var(--cizgi);
}

.musavir-secici a:last-child { border-right: none; }
.musavir-secici a:hover { color: var(--murekkep); }
.musavir-secici a.secili { background: var(--lacivert); color: #fff; font-weight: 550; }

/* ---------- Grup şeridi ---------- */

.grup-serit {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0.6rem 0 0.75rem;
}

.grup-bag {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.28rem 0.7rem 0.28rem 0.5rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  color: var(--murekkep);
  text-decoration: none;
  font-size: 0.84rem;
}

.grup-bag::before {
  content: "";
  width: 0.85rem;
  height: 0.85rem;
  border: 1px solid rgba(0, 0, 0, 0.2);
  background: var(--isaret, transparent);
}

.grup-bag.hepsi::before,
.grup-bag.anahtar::before { display: none; }
.grup-bag:hover { border-color: var(--soluk); }
.grup-bag.secili { border-color: var(--lacivert); box-shadow: inset 0 0 0 1px var(--lacivert); }
.grup-bag .adet { color: var(--soluk); font-variant-numeric: tabular-nums; }

/* ---------- Arama satırı ---------- */

.ara-satiri {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  align-items: center;
  margin-bottom: 0.75rem;
}

.ara-satiri input[type="search"] {
  flex: 0 1 22rem;
  margin: 0;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  font: inherit;
}

.ara-satiri button { width: auto; padding: 0.45rem 1.2rem; }
.ara-satiri .temizle { color: var(--soluk); font-size: 0.85rem; }
.ara-satiri .sayac { margin-left: auto; color: var(--soluk); font-size: 0.85rem; }

/* ---------- Izgara ---------- */

.izgara-sar {
  overflow: auto;
  max-height: calc(100dvh - 15rem);
  border: 1px solid var(--cizgi);
  background: var(--yuzey);
}

table.izgara {
  border-collapse: separate;
  border-spacing: 0;
  font-size: 0.85rem;
  width: max-content;
  min-width: 100%;
}

table.izgara th,
table.izgara td {
  padding: 0;
  border-bottom: 1px solid var(--cizgi);
  border-right: 1px solid var(--cizgi);
}

table.izgara thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  padding: 0.5rem 0.6rem;
  background: var(--kagit);
  border-bottom: 1px solid var(--soluk);
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--murekkep);
  text-align: center;
  white-space: nowrap;
}

.tur-basligi { min-width: 6.6rem; }

/* Mükellef sütunu yatay kaydırmada sabit kalır */
.sabit-sutun {
  position: sticky;
  left: 0;
  z-index: 2;
  min-width: 17rem;
  max-width: 22rem;
  text-align: left;
  background: var(--yuzey);
}

thead .sabit-sutun { z-index: 4; background: var(--kagit); }

.ad-hucre {
  padding: 0.35rem 0.6rem 0.35rem 0.85rem;
  font-weight: 500;
  border-left: 5px solid var(--isaret, transparent);
  background: var(--satir, var(--yuzey));
}

/* Sabit sütun beyaz kalmasın: grup rengi ad hücresine de uygulanır. */
.sabit-sutun.ad-hucre { background: var(--satir, var(--yuzey)); }

/* Ünvan tek satırda kalsın: sarınca satır yüksekliği artıyor ve
   ızgaradaki hizalama bozuluyor. Sığmayan uzun ad üç noktayla kesilir,
   tamamı ipucu olarak görünür. */
.ad-hucre a {
  display: block;
  color: var(--murekkep);
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ad-hucre a:hover { text-decoration: underline; }

.ad-hucre .alt-bilgi {
  display: block;
  font-size: 0.72rem;
  font-weight: 400;
  color: var(--soluk);
}

/* Satırın kendisi grubun açık tonuyla boyanır */
table.izgara tbody tr { background: var(--satir, transparent); }
table.izgara tbody tr:hover .ad-hucre { filter: brightness(0.97); }

/* ---------- Durum hücreleri ---------- */

td.hucre { padding: 0; text-align: center; }

.hucre-secim {
  width: 100%;
  margin: 0;
  padding: 0.42rem 0.3rem;
  border: none;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 0.82rem;
  text-align: center;
  text-align-last: center;
  cursor: pointer;
  appearance: none;
}

.hucre-secim:focus-visible { outline: 2px solid var(--lacivert); outline-offset: -2px; }

/* Durum renkleri aşağıda, Faz 10 bölümünde. */

/* Kaydetme geri bildirimi */
td.kaydediliyor { box-shadow: inset 0 0 0 2px var(--soluk); }
td.kaydedildi   { box-shadow: inset 0 0 0 2px var(--onay); }
td.kayit-hatasi { box-shadow: inset 0 0 0 2px var(--uyari); }

.iyi-yazi  { color: var(--onay); }
.hata-yazisi { color: var(--uyari); font-weight: 550; }

/* Kayıt durumu bildirimi (faz45s): ekranın ortasında, yarı saydam.
   Tıklamayı engellemez (pointer-events: none); bilgi verip kendiliğinden kaybolur. */
.kayit-kutu {
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 60;
  transform: translate(-50%, -50%) scale(0.97);
  width: max-content;
  max-width: min(26rem, calc(100vw - 2rem));
  padding: 0.75rem 1.2rem;
  border: 1px solid var(--cizgi);
  border-radius: 8px;
  background: color-mix(in srgb, var(--yuzey) 82%, transparent);
  color: var(--murekkep);
  font-size: 1rem;
  text-align: center;
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.14);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s, transform 0.2s;
}
.kayit-kutu.gorunur { opacity: 0.92; transform: translate(-50%, -50%) scale(1); }
.kayit-kutu.bekle { color: var(--soluk); }
.kayit-kutu.iyi   { color: var(--onay); font-weight: 550; }
.kayit-kutu.hata  { color: var(--uyari); font-weight: 550; border-color: var(--uyari); }
/* Başarı şeridi kayıt kutusuna taşındıysa üstte tekrar etmesin (faz45u) */
.kayit-tasindi { display: none !important; }

/* Anında kaydetme açıkken yedek düğme geri planda durur */
.kaydet-serit.otomatik button {
  background: transparent;
  color: var(--soluk);
  border-color: var(--cizgi);
}
.kaydet-serit.otomatik button:hover { color: var(--murekkep); background: var(--kagit); }

/* ---------- Dar ekran ---------- */

@media (max-width: 700px) {
  .sabit-sutun { min-width: 11rem; }
  .izgara-sar { max-height: calc(100dvh - 18rem); }
  .ara-satiri input[type="search"] { flex: 1 1 100%; }
}

/* Izgaradaki grup seçici — mükellef adının altında, sessiz durur */
.grup-secim {
  margin: 0.1rem 0 0;
  padding: 0.05rem 0.15rem;
  width: auto;
  max-width: 11rem;
  border: 1px solid transparent;
  border-radius: 2px;
  background: transparent;
  color: var(--soluk);
  font: inherit;
  font-size: 0.7rem;
  cursor: pointer;
}

.grup-secim:hover  { border-color: var(--cizgi); background: var(--yuzey); }
.grup-secim:focus-visible { outline: 2px solid var(--lacivert); outline-offset: 1px; }

/* ---------- Düzeltme: kaydetme şeridi ızgaranın üstüne binmesin ----------
   Izgaranın kendi kaydırma alanı var ve ekrana sığıyor; şeridin ekranın
   altına yapışmasına gerek yok. Ödeme ekranında yapışık kalmaya devam eder,
   orada tablonun kendi kaydırması yok. */



/* Izgara yüksekliği: üstteki şeritler + alttaki kaydetme çubuğu payı */
.izgara-sar { max-height: calc(100dvh - 19rem); }

main.tam { padding-bottom: 2rem; }

@media (max-width: 700px) {
  .izgara-sar { max-height: calc(100dvh - 22rem); }
}

/* ===================================================================
   Faz 5 — grup renkleri, renkli menü, düzenleme ekranları
   =================================================================== */

/* ---------- Grup renkleri ----------
   Renkler artık HTML'e gömülü style ile değil, sınıfla veriliyor.
   Panelin içerik güvenliği kuralı satır içi stile izin vermiyor;
   sınıf hem kuralı bozmuyor hem tek yerden değişiyor. */

.g-sirket      { --satir: #fffde0; --isaret: #ffff99; }
.g-sahis1      { --satir: #e8f0f9; --isaret: #8db4e2; }
.g-sahis2      { --satir: #ffeaea; --isaret: #ff8181; }
.g-danismanlik { --satir: #fff3d6; --isaret: #ffc000; }
.g-gayrifaal   { --satir: #f4f4f4; --isaret: #d9d9d9; }
.g-kapanan     { --satir: #eaeaea; --isaret: #999999; }
.g-yok         { --satir: transparent; --isaret: transparent; }

/* Hover artık rengi ezmiyor, sadece hafifçe koyulaştırıyor */
table.izgara tbody tr:hover .ad-hucre { filter: brightness(0.96); }
table.izgara tbody tr:hover { background: var(--satir, transparent); }

/* ---------- Gruplandırılmış görünüm ---------- */

tr.grup-basligi th {
  position: sticky;
  left: 0;
  padding: 0.45rem 0.85rem;
  text-align: left;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  background: var(--satir, var(--kagit));
  border-top: 2px solid var(--isaret, var(--cizgi));
  border-bottom: 1px solid var(--cizgi);
}

tr.grup-basligi .grup-nokta {
  display: inline-block;
  width: 0.8rem;
  height: 0.8rem;
  margin-right: 0.45rem;
  vertical-align: -1px;
  border: 1px solid rgba(0, 0, 0, 0.2);
  background: var(--isaret, transparent);
}

tr.grup-basligi .adet {
  margin-left: 0.5rem;
  color: var(--soluk);
  font-weight: 400;
  font-variant-numeric: tabular-nums;
}

/* Gruplandır anahtarı */
.grup-bag.anahtar {
  margin-left: auto;
  border-style: dashed;
  color: var(--soluk);
}
.grup-bag.anahtar.secili {
  border-style: solid;
  border-color: var(--lacivert);
  background: var(--lacivert);
  color: #fff;
}

/* ---------- Renkli menü ---------- */

.menu {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0.7rem 1.5rem;
  background: var(--yuzey);
  border-bottom: 1px solid var(--cizgi);
}

.menu-dugme {
  --ton: var(--lacivert);
  display: inline-block;
  padding: 0.45rem 1.1rem;
  border: 1px solid var(--ton);
  border-radius: 3px;
  background: var(--yuzey);
  color: var(--ton);
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 550;
  line-height: 1.3;
}

.menu-dugme:hover { background: var(--gecis, rgba(0, 0, 0, 0.04)); }

.menu-dugme.secili {
  background: var(--ton);
  color: #fff;
  box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.18);
}

.m-ozet      { --ton: #23215c; --gecis: #eceaf6; }
.m-beyanname { --ton: #1c6b53; --gecis: #e4f2ec; }
.m-odeme     { --ton: #9a5b12; --gecis: #fbeedb; }
.m-mukellef  { --ton: #1e5f8f; --gecis: #e5eff7; }
.m-aktarim   { --ton: #6b3fa0; --gecis: #f0e9f8; }
.m-kullanici { --ton: #8a2f3f; --gecis: #f8e8ea; }

/* ---------- Düzenleme ekranları ---------- */

.ikili-alan {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 0 1.25rem;
}

textarea {
  width: 100%;
  margin-bottom: 1.1rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  color: inherit;
  font: inherit;
  resize: vertical;
}

.buyuk-ad { margin: 0.25rem 0; font-size: 1.15rem; font-weight: 600; }

.yan-bag {
  color: var(--lacivert);
  font-size: 0.88rem;
  text-decoration: none;
  border-bottom: 1px solid currentColor;
}
.yan-bag:hover { color: var(--murekkep); }

button.tehlike {
  background: var(--uyari);
  border-color: var(--uyari);
}
button.tehlike:hover { background: #7d2323; }

.birlestir-onizleme td:last-child,
.birlestir-onizleme th:last-child {
  background: #f4f8f5;
  font-weight: 550;
}

.kaydet-serit .yan-bag { margin-left: 0.5rem; }

/* Mükellef listesi: grup sütunu ve düzenle bağlantısı */
.baslik-eylem { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; }

.grup-hucre { white-space: nowrap; font-size: 0.85rem; color: var(--soluk); }
.grup-hucre .grup-nokta {
  display: inline-block;
  width: 0.75rem;
  height: 0.75rem;
  margin-right: 0.35rem;
  vertical-align: -1px;
  border: 1px solid rgba(0, 0, 0, 0.2);
  background: var(--isaret, transparent);
}

.duzenle-bag {
  margin-left: 0.5rem;
  font-size: 0.75rem;
  color: var(--soluk);
  text-decoration: none;
  border-bottom: 1px dotted currentColor;
}
.duzenle-bag:hover { color: var(--lacivert); }

/* Liste tablosunda da grup rengi */
.tablo-sar tbody tr { background: var(--satir, transparent); }
.tablo-sar tbody tr:hover { background: var(--satir, #fbfbf8); filter: brightness(0.97); }

/* ===================================================================
   Faz 6 — ödeme bildirimi
   =================================================================== */

.m-bildirim { --ton: #0f6a72; --gecis: #e2f1f2; }
/* Ücret bildirimi ödeme bildiriminin komşusu; tonu da yakın
   dursun ama ayırt edilsin (faz32a). */
.m-makbuz   { --ton: #5a3f8f; --gecis: #ece6f6; }

/* Mesaj metni kutusu (listede) */
.mesaj-kutu summary {
  cursor: pointer;
  font-size: 0.82rem;
  color: var(--lacivert);
}
.mesaj-kutu textarea {
  width: 26rem;
  max-width: 100%;
  margin: 0.5rem 0 0.35rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.78rem;
  line-height: 1.45;
}


/* ---------- Ödeme bildirimi çıktısı ----------
   Düzen, ofisin kullandığı Excel formunun aynısı. */

.yazdir-sayfa { background: #e9e9e4; }

.yazdir-cubuk {
  position: sticky; top: 0; z-index: 5;
  padding: 0.7rem 1.25rem;
  background: var(--lacivert); color: #fff; font-size: 0.86rem;
}

.bld {
  --mavi:   #1f1b6b;
  --sari:   #ffff00;
  --turuncu:#ffc000;
  --krem:   #fdeada;
  --bmavi:  #9dc3e6;

  width: 21cm;
  max-width: 100%;
  margin: 1.25rem auto;
  padding: 1.1cm 1.3cm;
  background: #fff;
  border: 1px solid var(--cizgi);
  color: #000;
  font-size: 9.5pt;
}

/* Antet */
.bld-antet {
  display: flex; align-items: center; gap: 0.8cm;
  padding: 0.25cm 0 0.3cm;
  border-top: 1.5pt solid #000;
  border-bottom: 1.5pt solid #000;
}

.bld-logo { width: 2.6cm; height: auto; flex: none; }
.bld-kimlik { flex: 1; text-align: center; }

.bld-kurum {
  margin: 0;
  font-size: 27pt; font-weight: 800; letter-spacing: 0.04em;
  line-height: 1.05; color: var(--mavi);
}
.bld-unvan {
  margin: 0.06cm 0 0.14cm;
  font-size: 10pt; font-weight: 700; color: var(--mavi);
}
.bld-adres { margin: 0; font-size: 7.6pt; font-weight: 700; line-height: 1.5; }

/* Şeritler */
.bld-serit {
  display: flex; justify-content: space-between; align-items: center;
  gap: 0.6cm;
  padding: 0.13cm 0.3cm;
  font-weight: 700;
}

.bld-mukellef {
  margin-top: 0.35cm;
  background: var(--turuncu);
  color: var(--mavi);
  font-size: 12.5pt;
}

.bld-baslik {
  margin-top: 0.22cm;
  background: var(--sari);
  color: var(--mavi);
  justify-content: flex-start;
  font-size: 11.5pt;
}
.bld-baslik .aralikli { letter-spacing: 0.06em; }
.bld-baslik .bld-donem { font-size: 12pt; }

.bld-toplam {
  margin-top: 0.18cm;
  background: var(--krem);
  color: var(--mavi);
  justify-content: flex-end;
  gap: 2.2cm;
  font-size: 12pt;
}

.bld-banka-baslik {
  margin-top: 0.35cm;
  background: var(--bmavi);
  color: var(--mavi);
  justify-content: center;
  border-top: 1pt dotted #000;
  border-bottom: 1pt dotted #000;
  font-size: 10.5pt;
  letter-spacing: 0.04em;
}

/* Tablo */
.bld-tablo {
  width: 100%;
  margin-top: 0.4cm;
  border-collapse: collapse;
  font-size: 9.5pt;
}
.bld-tablo thead th {
  padding: 0 0.2cm 0.1cm;
  border-bottom: 1.2pt solid #000;
  font-weight: 700;
}
.bld-tablo td { padding: 0.115cm 0.2cm; }
.bld-tablo tbody tr:nth-child(even) { background: #fafafa; }

.bld-tablo .s-tur   { width: 22%; text-align: left; }
.bld-tablo .s-donem { width: 40%; text-align: center; }
.bld-tablo .s-vade  { width: 18%; text-align: center; font-variant-numeric: tabular-nums; }
.bld-tablo .s-tutar { width: 20%; text-align: right;  font-variant-numeric: tabular-nums; }
.bld-tablo td.s-tutar.bos { color: #000; }

/* Banka */
.bld-hesaplar {
  display: grid; grid-template-columns: 1fr 1fr;
  text-align: center;
  padding-top: 0.18cm;
  border-bottom: 1.2pt solid #000;
  padding-bottom: 0.2cm;
}
.bld-hesap p { margin: 0; font-size: 8.6pt; font-weight: 700; line-height: 1.55; }
.bld-hesap .iban { font-variant-numeric: tabular-nums; }

/* ---------- Müşavirlik ücreti bildirimi (faz32a) ----------
   Düzen e-serbest meslek makbuzunun aynısı; belgenin adı farklı.
   Makbuzun kendi tipografisi sade: çizgili bloklar, gri başlık
   hücreleri, kırmızı banka satırları. */

.mkb {
  --mkb-cizgi: #000;
  --mkb-gri:   #e8e8ec;
  --mkb-kirmizi: #c00000;

  width: 21cm;
  max-width: 100%;
  margin: 1.25rem auto;
  padding: 1.1cm 1.3cm;
  background: #fff;
  border: 1px solid var(--cizgi);
  color: #000;
  font-size: 9pt;
  line-height: 1.45;
}

/* Antet: solda ofis, ortada belgenin adı, sağda logo */
.mkb-antet {
  display: grid;
  grid-template-columns: 7.5cm 1fr 5cm;
  align-items: center;
  gap: 0.6cm;
}

.mkb-ofis {
  padding: 0.16cm 0;
  border-top: 1.5pt solid var(--mkb-cizgi);
  border-bottom: 1.5pt solid var(--mkb-cizgi);
}
.mkb-ofis p { margin: 0; font-size: 7.8pt; line-height: 1.5; }
.mkb-ofis-ad { font-weight: 700; }

.mkb-orta-baslik { text-align: center; }
.mkb-belge-ad {
  margin: 0;
  font-size: 12.5pt; font-weight: 700; color: #1f1b6b;
}

.mkb-logo { width: 4.2cm; height: auto; justify-self: end; }

/* SAYIN bloğu ve künye kutusu yan yana */
.mkb-govde {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 1cm;
  margin-top: 1.1cm;
}

.mkb-sayin {
  flex: 0 1 10.5cm;
  padding: 0.16cm 0;
  border-top: 1.5pt solid var(--mkb-cizgi);
  border-bottom: 1.5pt solid var(--mkb-cizgi);
}
.mkb-sayin p { margin: 0; font-size: 8.2pt; line-height: 1.55; }
.mkb-sayin-basi { font-weight: 700; }
.mkb-sayin-ad   { font-weight: 700; }

.mkb-kunye {
  width: auto;                 /* genel table kuralını geçersiz kılar */
  flex: none;
  border-collapse: collapse;
  font-size: 8.2pt;
  align-self: flex-end;
}
.mkb-kunye th,
.mkb-kunye td {
  padding: 0.09cm 0.22cm;
  border: 0.8pt solid #9a9aa2;
}
.mkb-kunye th {
  background: var(--mkb-gri);
  text-align: right; font-weight: 700; white-space: nowrap;
}
.mkb-kunye td { text-align: right; font-variant-numeric: tabular-nums; }
/* Belge numarası uzun; künye kutusu ona göre genişlesin. */
.mkb-kunye td.mkb-belge-no { letter-spacing: 0.01em; white-space: nowrap; }

/* Ücret tablosu */
.mkb-tablo {
  width: 100%;
  margin-top: 0.9cm;
  border-collapse: collapse;
  font-size: 8.4pt;
}
.mkb-tablo th,
.mkb-tablo td {
  padding: 0.12cm 0.18cm;
  border: 0.8pt solid #9a9aa2;
}
.mkb-tablo thead th {
  background: var(--mkb-gri);
  text-align: center; font-weight: 700; line-height: 1.25;
}
.mkb-tablo td { font-variant-numeric: tabular-nums; }

.mkb-tablo .s-no     { width: 1.4cm; text-align: center; }
.mkb-tablo .s-ad     { text-align: left; }
.mkb-tablo .s-brut   { width: 2.6cm; text-align: center; }
.mkb-tablo .s-oran   { width: 1.9cm; text-align: center; }
.mkb-tablo .s-net    { width: 2.1cm; text-align: center; }
.mkb-tablo .s-tahsil { width: 2.2cm; text-align: right; }

/* Sağ alt özet. width:auto şart: panelin genel "table { width:100% }"
   kuralı bu tabloyu sayfa boyunca yayıyordu. */
.mkb-ozet {
  width: auto;
  margin: 0.8cm 0 0 auto;
  border-collapse: collapse;
  font-size: 8.4pt;
}
.mkb-ozet th,
.mkb-ozet td {
  padding: 0.1cm 0.25cm;
  border: 0.8pt solid #9a9aa2;
}
.mkb-ozet th {
  background: var(--mkb-gri);
  text-align: right; font-weight: 700; white-space: nowrap;
}
.mkb-ozet td {
  text-align: right; white-space: nowrap;
  font-variant-numeric: tabular-nums;
  min-width: 2.8cm;
}
.mkb-ozet-son th, .mkb-ozet-son td { font-weight: 700; }

/* Tabloların ALT ÇİZGİSİ.
   Panelin genel "tbody tr:last-child td { border-bottom: none }" kuralı
   ekran tablolarında doğru ama bu belgede son satırın alt çizgisini
   siliyordu — çerçeve açık kalıyordu (faz32d). Seçici burada daha
   ağır olduğu için çizgi geri geliyor. */
.mkb-tablo tbody tr:last-child td,
.mkb-ozet  tbody tr:last-child td,
.mkb-ozet  tbody tr:last-child th,
.mkb-kunye tbody tr:last-child td,
.mkb-kunye tbody tr:last-child th {
  border-bottom: 0.8pt solid #9a9aa2;
}

/* Not ve banka kutusu */
.mkb-alt {
  margin-top: 0.9cm;
  padding: 0.35cm 0.45cm;
  border: 0.8pt solid #9a9aa2;
}
.mkb-not { margin: 0 0 0.6cm; font-size: 8.4pt; }

.mkb-banka-baslik {
  margin: 0 0 0.25cm;
  font-size: 8.6pt; font-weight: 700; color: var(--mkb-kirmizi);
}
.mkb-hesap {
  margin: 0 0 0.05cm 0.5cm;
  font-size: 8.4pt; font-weight: 700;
}
/* İki hesap arasına nefes payı: makbuzda da ayrık duruyorlar. */
.mkb-hesap.mkb-hesap-ad + .mkb-hesap { margin-bottom: 0; }
.mkb-hesap-ad ~ .mkb-hesap-ad { margin-top: 0.3cm; }
.mkb-iban { color: var(--mkb-kirmizi); font-variant-numeric: tabular-nums; }

/* Kopyalama bildirimi (faz32m): başarı ya da hata düğmenin yanında
   yazıyor. Eskiden yalnız bir saniyelik ✕ vardı ve sebep ipucunda
   kalıyordu — kullanıcı "hiçbir şey olmadı" diye görüyordu. */
.kopya-not {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.72rem;
  color: var(--soluk);
  white-space: normal;
  text-align: right;
}
.kopya-not.hata { color: #a3232f; font-weight: 600; }

/* Açılan numara seçilebilir dursun. */
.on-deger.acik { user-select: all; font-variant-numeric: tabular-nums; }

/* ---------- Tahakkuk: ödeme ve kalan sütunları (faz32j) ---------- */

table.tahakkuk th.th-odeme,
table.tahakkuk td.td-odeme { width: 8rem; min-width: 8rem; }
table.tahakkuk th.th-kalan,
table.tahakkuk td.td-kalan { width: 8.5rem; min-width: 8.5rem; }

/* Kalan hesaplanan sütun: girilmediği belli olsun diye zemini
   toplam sütunuyla aynı tonda, yazısı biraz daha ağır. */
table.tahakkuk td.td-kalan {
  background: var(--yuzey-2, #f4f5f8);
  font-weight: 600;
  white-space: nowrap;
}
table.tahakkuk th.th-kalan { background: var(--yuzey-2, #f4f5f8); }

/* Fazla ödeme: kalan eksiye düşmüş. Kırmızı değil, çünkü hata değil —
   müşteri fazla yatırmış, sonraki aya alacak olarak geçmiyor. */
table.tahakkuk td.td-kalan.eksi { color: #0f6a72; }

/* Ödeme girilmemiş satır: sonraki aya KALAN değil, o ayın BAKİYE'si
   devrediyor (faz32n). Rakam yine kalan — devredecek tutar hücrenin
   ipucunda. Kesik alt çizgi "burada bir şart var" demek. */
table.tahakkuk td.td-kalan.devir-bakiye {
  color: var(--soluk);
  font-weight: 500;
  text-decoration: underline dotted var(--cizgi);
  text-underline-offset: 3px;
  cursor: help;
}

/* ---------- Ücret ızgarası (faz32c) ----------
   Satırda mükellef, solda aylık ücret ve ay deseni, on iki ay sütunu,
   sağda yıllık toplam. Her ay hücresinde tutarın yanında iki küçük
   işaret: T (tahakkuk kesildi), S (SMM kesildi).

   Sütunlar dar tutuldu ki yılın tamamı tek bakışta görünsün —
   Excel'deki düzenin aynısı. */

table.ucret-izgara .sabit-sutun { min-width: 12rem; width: 12rem; max-width: 12rem; }

table.ucret-izgara th.uc-ucret-bas,
table.ucret-izgara td.uc-ucret-hucre { width: 4.8rem; min-width: 4.8rem; }

table.ucret-izgara th.uc-desen-bas,
table.ucret-izgara td.uc-desen-hucre { width: 6.2rem; min-width: 6.2rem; }

table.ucret-izgara td.uc-ay,
table.ucret-izgara th.uc-ay { width: 5.6rem; min-width: 5.6rem; }

table.ucret-izgara td.uc-toplam,
table.ucret-izgara th.uc-toplam { width: 5.6rem; min-width: 5.6rem; }

table.ucret-izgara .tur-basligi { min-width: 0; font-size: 0.72rem; letter-spacing: 0; }
table.ucret-izgara .uc-satir-toplam { font-size: 0.78rem; font-weight: 600; }

/* Seçili ay sütunu: çıktının ve kesim süzgecinin baktığı ay.
   Zemin boyamak yerine kenar çizgisi: sade/renkli ve açık/koyu
   temaların hepsinde aynı okunuyor, satır renklerini de bozmuyor. */
table.ucret-izgara .uc-secili {
  box-shadow: inset 2px 0 0 var(--lacivert), inset -2px 0 0 var(--lacivert);
}
table.ucret-izgara thead tr:first-child .uc-secili {
  box-shadow: inset 2px 0 0 var(--lacivert), inset -2px 0 0 var(--lacivert),
              inset 0 -3px 0 var(--lacivert);
}

/* ---- Ay toplamı satırı: başlığın altında yapışkan ---- */
table.ucret-izgara thead tr:first-child th { height: 2.3rem; }

table.ucret-izgara thead tr.uc-ust-toplam th,
table.ucret-izgara thead tr.uc-ust-toplam td {
  position: sticky;
  top: 2.3rem;
  z-index: 3;
  padding: 0.25rem 0.45rem;
  background: var(--kagit);
  border-bottom: 2px solid var(--cizgi);
  font-size: 0.78rem;
  font-weight: 650;
  white-space: nowrap;
}
table.ucret-izgara thead tr.uc-ust-toplam th.sabit-sutun {
  left: 0; z-index: 5; text-align: left; font-weight: 600;
}

/* ---- Mükellef hücresi ---- */
.uc-sec { display: flex; gap: 0.4rem; align-items: baseline; min-width: 0; }
.uc-sec input[type="checkbox"] { margin: 0; flex: none; }
.uc-sec a { flex: 1 1 auto; min-width: 0; }

/* ---- Aylık ücret, desen, uygula ---- */
table.ucret-izgara input.uc-aylik,
table.ucret-izgara input.uc-tutar {
  width: 100%; margin: 0; padding: 0.22rem 0.35rem;
  border: 1px solid transparent; border-radius: 2px;
  background: transparent;
  font: inherit; font-size: 0.82rem; text-align: right;
  font-variant-numeric: tabular-nums;
}
table.ucret-izgara input.uc-aylik:focus,
table.ucret-izgara input.uc-tutar:focus {
  border-color: var(--lacivert); background: var(--yuzey); outline: none;
}
table.ucret-izgara input.uc-aylik { font-weight: 600; }

table.ucret-izgara td.uc-desen-hucre { padding: 0.15rem 0.2rem; }
table.ucret-izgara select.uc-desen {
  width: calc(100% - 1.5rem); margin: 0; padding: 0.15rem 0.2rem;
  border: 1px solid var(--cizgi); border-radius: 2px;
  font: inherit; font-size: 0.72rem;
}
.uc-uygula {
  width: 1.3rem; padding: 0.15rem 0; margin-left: 0.15rem;
  border: 1px solid var(--cizgi); border-radius: 2px;
  background: var(--kagit); color: var(--lacivert);
  font-size: 0.78rem; line-height: 1; cursor: pointer;
}
.uc-uygula:hover { background: var(--lacivert); color: #fff; }

/* Deseni yeni uygulanmış satır bir anlığına belli olsun: kaydetmeden
   önce hangi satırları değiştirdiğini görüyorsun. */
table.ucret-izgara tr.uc-yayildi .uc-aylik { background: #fff8d8; }

/* ---- Kesim işaretleri ---- */
table.ucret-izgara td.uc-ay { padding: 0.1rem 0.2rem; }

.uc-isaretler {
  display: flex; gap: 0.15rem; justify-content: flex-end;
  margin-top: 0.1rem;
}
.uc-im {
  width: 1.15rem; height: 0.95rem; padding: 0;
  border: 1px solid var(--cizgi); border-radius: 2px;
  background: var(--kagit); color: var(--soluk);
  font-size: 0.6rem; font-weight: 700; line-height: 1;
  cursor: pointer;
}
.uc-im:hover { border-color: var(--lacivert); color: var(--murekkep); }
.uc-im[disabled] { opacity: 0.5; cursor: progress; }

/* Tahakkuk kesildi: sarı. SMM kesildi: yeşil. İkisi ayrı işaret,
   ikisi birden açık olabilir. */
.uc-im-t.acik { background: #ffd966; border-color: #c9a227; color: #4a3800; }
.uc-im-s.acik { background: #93c47d; border-color: #5a8a45; color: #12300a; }
.uc-im-hata  { border-color: #a3232f; color: #a3232f; }

/* Hücrenin tamamı boyanıyor: uzaktan bakınca ayın ne kadarının
   kesildiği tek bakışta görünsün. SMM kesildiyse tahakkuk da
   kesilmiştir, o yüzden yeşil turuncuyu örtüyor — sıralama önemli.

   Bu bir DURUM rengi, grup rengi değil: sade kipte de duruyor,
   yoksa kimin kesildiği görünmez olurdu. */
table.ucret-izgara td.uc-ay.uc-t,
:root:not([data-hucre="renkli"]) table.ucret-izgara td.uc-ay.uc-t {
  background: #ffe9a8;
}
table.ucret-izgara td.uc-ay.uc-s,
:root:not([data-hucre="renkli"]) table.ucret-izgara td.uc-ay.uc-s {
  background: #c3e3b2;
}

/* K (kesilmeyecek): mükellef o ay kapalı. Gri ve çapraz tarama —
   "burada iş yok" demenin yolu; boş hücreyle karışmasın diye tarama.
   Kesim renklerinin üstüne gelir: kapalı ayda belge kesilmez. */
table.ucret-izgara td.uc-ay.uc-k,
:root:not([data-hucre="renkli"]) table.ucret-izgara td.uc-ay.uc-k {
  background: repeating-linear-gradient(
    45deg, #e4e4e6 0 4px, #f2f2f4 4px 8px);
}
table.ucret-izgara td.uc-ay.uc-k input.uc-tutar {
  color: #8a8a90; cursor: not-allowed;
}
.uc-im-k.acik { background: #8a8a90; border-color: #5f5f66; color: #fff; }

/* Boyalı hücrede yazı her temada okunur kalsın. */
table.ucret-izgara td.uc-ay.uc-t input.uc-tutar,
table.ucret-izgara td.uc-ay.uc-s input.uc-tutar { color: #1a1a1a; }
table.ucret-izgara td.uc-ay.uc-t input.uc-tutar:focus,
table.ucret-izgara td.uc-ay.uc-s input.uc-tutar:focus { background: #fff; }

/* ---- Şeritler ---- */
.ucret-serit,
.ucret-yazdir { display: flex; flex-wrap: wrap; gap: 0.5rem 0.9rem; align-items: center; }
.ucret-serit label,
.ucret-yazdir label { margin: 0; font-size: 0.85rem; color: var(--soluk); }
.ucret-serit select,
.ucret-yazdir select { width: auto; margin: 0; padding: 0.3rem 0.5rem; }
.ucret-yazdir input[type="text"] { width: 18rem; margin: 0; padding: 0.3rem 0.5rem; }
.ucret-yazdir button { width: auto; padding: 0.4rem 1.2rem; }

/* Yazdırma */
@page { size: A4 portrait; margin: 0; }

@media print {
  .yazdir-cubuk { display: none; }
  .yazdir-sayfa { background: #fff; }
  .bld {
    width: auto; margin: 0; border: none;
    padding: 0.9cm 1.2cm;
    page-break-after: always; break-after: page;
  }
  .bld:last-child { page-break-after: auto; break-after: auto; }
  .mkb {
    width: auto; margin: 0; border: none;
    padding: 1cm 1.2cm;
    page-break-after: always; break-after: page;
  }
  .mkb:last-child { page-break-after: auto; break-after: auto; }
  .mkb-tablo tr, .mkb-ozet, .mkb-alt {
    page-break-inside: avoid; break-inside: avoid;
  }
  .mkb-kunye th, .mkb-tablo thead th, .mkb-ozet th {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .bld-tablo tr { page-break-inside: avoid; break-inside: avoid; }
  /* Renkli şeritler baskıda kaybolmasın */
  .bld-serit, .bld-tablo tbody tr:nth-child(even) {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
}

/* ---------- Tahakkuk girişi ---------- */

.m-tahakkuk { --ton: #7a4a1e; --gecis: #f6ece2; }

.donem-ac { display: inline-block; margin-left: auto; }
.donem-ac button { width: auto; }

/* Sütun genişliği 99.999.999,99 (8 hane + 2 ondalık) sığacak kadar.
   Daha dar tutup yatay kaydırma olmadan daha çok vergi türü göstermek
   için hem tutar hem başlık puntosu küçültüldü. */
table.tahakkuk .tur-basligi {
  font-size: 0.66rem;
  letter-spacing: -0.01em;
  white-space: normal;
  line-height: 1.15;
}
/* En uzun ünvan 25 karakter (TASF HAL AGA KAFE LTD ŞTİ); büyük harfli
   Türkçe metin geniş olduğu için 15rem gerekiyor. */
table.tahakkuk .sabit-sutun { min-width: 15rem; width: 15rem; }

/* Tutar sütunlarının genişliği: her sütun kendi içindeki en uzun tutara
   göre. Sayfa her sütuna tg-w6 ... tg-w14 sınıflarından birini veriyor.

   Eskiden ölçü tabloya veriliyordu ve bütün sütunlar onu paylaşıyordu;
   tek bir büyük rakam on üç sütunu birden şişiriyordu.

   Alt sınır 5rem: başlıklar sığsın. Başlık yazısı zaten sarabiliyor. */
table.tahakkuk .tg-w6,
table.tahakkuk .tg-w7,
table.tahakkuk .tg-w8,
table.tahakkuk .tg-w9  { min-width: 5rem;   width: 5rem; }
table.tahakkuk .tg-w10 { min-width: 5.5rem; width: 5.5rem; }
table.tahakkuk .tg-w11 { min-width: 6rem;   width: 6rem; }
table.tahakkuk .tg-w12 { min-width: 6.5rem; width: 6.5rem; }
table.tahakkuk .tg-w13 { min-width: 7rem;   width: 7rem; }
table.tahakkuk .tg-w14 { min-width: 7.5rem; width: 7.5rem; }
table.tahakkuk { table-layout: fixed; }

td.tutar-hucre { padding: 0; }

td.tutar-hucre input {
  width: 100%;
  margin: 0;
  padding: 0.22rem 0.35rem;
  border: none;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 0.76rem;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

td.tutar-hucre input:focus {
  outline: 2px solid var(--lacivert);
  outline-offset: -2px;
  background: #fffdf0;
}

td.tutar-hucre.odenmis { background: #eef6f0; }
td.tutar-hucre.odenmis input { color: var(--onay); cursor: not-allowed; }

.satir-toplam {
  font-size: 0.76rem;
  background: #f7f7f3;
  font-weight: 600;
  border-left: 1px solid var(--soluk);
}

/* Tehlikeli işlem kutusu */
/* EDM hesap aktarımındaki sütun harfleri (faz33c). Altı küçük kutu;
   etiketi solunda, kendisi iki karakterlik. Tek tek alt alta dizilince
   form gereksiz uzuyordu. */
.aktar-sutun { margin: 0.9rem 0; }
.aktar-sutun-izgara {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: 0.2rem 1rem;
  align-items: center;
}
.aktar-sutun-izgara label { margin: 0; justify-self: start; }
.aktar-sutun-izgara input {
  width: 4rem;
  text-align: center;
  text-transform: uppercase;
  margin: 0;
}

/* Fatura kaynağı seçici (faz33b). Dönem ve yön sekmeleriyle aynı
   görünüm; başındaki küçük etiket hangi seçim olduğunu söylüyor,
   araç çubuğunda üç ayrı sekme grubu yan yana durunca karışmasın. */
.donem-gezinme.fatura-kaynak { gap: 0.35rem; }
.donem-gezinme.fatura-kaynak > .soluk { margin-right: 0.15rem; }

.tehlike-kutu { border-color: var(--uyari); border-left-width: 4px; }
.tehlike-kutu h2 { color: var(--uyari); }

/* Katlanır tehlike kutusu (faz33a). Başlığı tıklanabilir olduğunu
   belli etsin, düğme de satırı baştan sona kaplamasın — genel
   button kuralı width:100% veriyor. */
.tehlike-kutu > summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--uyari);
}
.tehlike-kutu > summary::marker { color: var(--uyari); }
.tehlike-kutu[open] > summary { margin-bottom: 0.6rem; }
.tehlike-kutu button.tehlike { width: auto; }
.tehlike-kutu .onay { margin: 0.4rem 0 0.7rem; }

/* Bildirim listesinde başlıktaki toplu seçim */
.tumu-sec { display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer; }
.tumu-sec input { width: 1rem; height: 1rem; margin: 0; accent-color: var(--lacivert); }

/* Bu dönemde beyanı olmayan sütun */
td.tutar-hucre.beyan-yok {
  background: #f0f0ee;
  color: #b0b0b4;
  text-align: center;
  font-size: 0.8rem;
}
th.tur-basligi.pasif-sutun { color: #a8a8ae; font-weight: 400; }

/* ===================================================================
   Faz 9 — derli toplu başlık, yükümlülükler, kapalı hücreler
   =================================================================== */

.m-yukumluluk { --ton: #3f5c1e; --gecis: #eaf0e2; }

/* Tek satırlık üst şerit: başlık, dönem, müşavir, arama, sayaç */
.ust-serit {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 1rem;
  align-items: center;
  margin-bottom: 0.55rem;
}

.ust-serit h1 { margin: 0; font-size: 1.15rem; }

.donem-kutu { display: inline-flex; align-items: center; gap: 0.4rem; }

.donem-secim {
  width: auto;
  margin: 0;
  padding: 0.35rem 0.6rem;
  border: 1px solid var(--lacivert);
  border-radius: 2px;
  background: var(--yuzey);
  color: var(--lacivert);
  font: inherit;
  font-size: 0.86rem;
  font-weight: 600;
}

.mini-ara { display: flex; gap: 0.4rem; align-items: center; }
.mini-ara input[type="search"] {
  width: 12rem; margin: 0; padding: 0.35rem 0.55rem;
  border: 1px solid var(--cizgi); border-radius: 2px; font: inherit; font-size: 0.86rem;
}
.mini-ara select {
  width: auto; margin: 0; padding: 0.35rem 0.5rem;
  border: 1px solid var(--cizgi); border-radius: 2px; font: inherit; font-size: 0.86rem;
}
.mini-ara button { width: auto; padding: 0.35rem 0.9rem; font-size: 0.86rem; }

.ust-serit .musavir-secici a { padding: 0.32rem 0.85rem; font-size: 0.84rem; }
.ust-serit .sayac { margin-left: auto; color: var(--soluk); font-size: 0.85rem; }

/* Grup şeridi daha sıkışık */
.grup-serit.sik { margin: 0 0 0.6rem; gap: 0.3rem; }
.grup-serit.sik .grup-bag { padding: 0.22rem 0.6rem 0.22rem 0.42rem; font-size: 0.8rem; }
.grup-serit.sik .grup-bag::before { width: 0.7rem; height: 0.7rem; }

/* Izgara daha çok yer alsın */
.izgara-sar { max-height: calc(100dvh - 13rem); }

/* Yükümlülüğü olmayan veya bu dönem beyanı olmayan hücre */
td.hucre.kapali {
  background: #f4f4f2;
  color: #b6b6bb;
  text-align: center;
  font-size: 0.9rem;
  cursor: default;
}

/* ---------- Yükümlülük ekranı ---------- */

.toplu-kutu summary { cursor: pointer; }
.toplu-form { margin-top: 0.9rem; }

.tur-kutulari {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
  gap: 0.2rem 1rem;
  margin: 0.6rem 0 0.9rem;
}
.tur-kutulari .onay { margin-bottom: 0; font-size: 0.88rem; }
.toplu-form button { width: auto; padding: 0.5rem 1.6rem; }

/* ---------- Arızi ödeme girişi ---------- */

/* Alanlar tek satırda, alt kenarlarından hizalı. Ekle düğmesi de
   kutuların hizasında duruyor ve kutular kadar yüksek. */
.arizi-form {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.35rem 0.8rem;
}

.arizi-alan {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  margin: 0;
}
.arizi-alan > span { font-size: 0.78rem; color: var(--soluk); line-height: 1.3; }
/* Genel input kuralında margin-bottom: 1.1rem var. O boşluk etiketin
   alt kenarını görünen kutunun altına indiriyordu; flex-end düğmeyi o
   görünmez kenara hizalayınca düğme aşağıda kalmış gibi duruyordu. */
.arizi-alan select,
.arizi-alan input {
  margin: 0;
  padding: 0.38rem 0.5rem;
  width: auto;
}
.arizi-alan:nth-of-type(1) select { min-width: 16rem; }
.arizi-alan:nth-of-type(2) input  { min-width: 12rem; }
.arizi-alan:nth-of-type(3) input  { min-width: 7rem; text-align: right; }

.arizi-form button {
  align-self: flex-end;
  width: auto;
  margin: 0;
  padding: 0.38rem 1.2rem;
  font-size: 0.88rem;
  line-height: 1.35;
}

table.yukumluluk .tur-basligi { min-width: 5.6rem; }
table.yukumluluk .sabit-sutun { min-width: 16rem; }

td.yuk-hucre {
  padding: 0.3rem 0.35rem;
  text-align: center;
  vertical-align: middle;
}
td.yuk-hucre.isaretli { background: #eaf3ec; }

.yuk-kutu input { width: 1.05rem; height: 1.05rem; margin: 0; accent-color: var(--onay); }

.periyot-secim {
  width: auto;
  margin: 0.2rem 0 0;
  padding: 0.05rem 0.15rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  font: inherit;
  font-size: 0.68rem;
}

.periyot-sabit { display: block; margin-top: 0.15rem; font-size: 0.66rem; color: var(--soluk); }

/* Kaydetme şeridi: tahakkuk ve yükümlülük ekranlarında da binmesin */


/* ===================================================================
   Faz 10 — durum renkleri, sütun süzgeci
   Renkler ofisin Excel dosyasındaki hücre renklerinden alındı.
   =================================================================== */

/* Dokunulmamış ama açık hücre: beyaz ve boş */
td.hucre.d-bos { background: var(--yuzey); }
td.hucre.d-bos .hucre-secim { color: #c2c2c8; }

/* Yükümlülüğü yok ama düzenlenebilir (yalnız KDV 2) */
td.hucre.d-kapali-acik { background: #f4f4f2; }
td.hucre.d-kapali-acik .hucre-secim { color: #9a9aa0; }

/* Durum renkleri — beyaz yazı gerekenler ayrıca işaretli */
td.d-sistem         { background: #7030a0; color: #fff; }
td.d-aktarildi      { background: #ffff33; }
td.d-bos-evrak      { background: #a6a6a6; color: #fff; }
td.d-hazir          { background: #d9d9d9; }
td.d-geldi          { background: #e5b8b8; }
td.d-dizildi        { background: #f2ab48; }
td.d-islendi        { background: #ee2f22; color: #fff; }
td.d-kontrol        { background: #6a92d4; color: #fff; }
td.d-onay           { background: #17693a; color: #fff; }
td.d-kalfa          { background: #47ad55; color: #fff; }
/* Koyu turuncu. Dizildi de turuncu (#f2ab48) ama açık ve yazısı siyah;
   bu koyu ve yazısı beyaz, yan yana karışmıyorlar. */
td.d-beyan-gonderildi { background: #c55a11; color: #fff; }
td.d-bordro         { background: #9ed7f5; }
td.d-odeme-bekliyor { background: #ee2f22; color: #fff; }
td.d-mizan          { background: #8a5a1e; color: #fff; }
td.d-sistemde       { background: #ffff33; }
td.d-kdv2-var       { background: #8b2f38; color: #fff; }
/* KDV 2 ödemesi bekliyor (faz32u). Bordo — Sistem ile renkleri
   takas edildi: bekleyen satır bordoyla daha çok göze çarpıyor,
   Sistem mora geçti. İkisi aynı sütunda ama artık karışmıyor. */
td.d-kdv2-odeme     { background: #8b2f38; color: #fff; }
td.d-gonderildi     { background: #17693a; color: #fff; }
td.d-mahsup         { background: #ddd0f5; }

/* Açılır menü hücrenin rengini devralsın */
td.hucre .hucre-secim { color: inherit; font-weight: 600; }
td.hucre.d-bos .hucre-secim,
td.hucre.d-kapali-acik .hucre-secim { font-weight: 400; }

/* ---------- Sütun süzgeci ---------- */

.sutun-suzgec { position: relative; }

.sutun-suzgec summary {
  cursor: pointer;
  list-style: none;
  padding: 0 0.7rem 0 0;
  white-space: nowrap;
}
.sutun-suzgec summary::-webkit-details-marker { display: none; }
.sutun-suzgec summary::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 0;
  width: 0;
  height: 0;
  margin-top: -1px;
  border: 4px solid transparent;
  border-top-color: var(--soluk);
}
.sutun-suzgec[open] summary::after { border-top-color: var(--lacivert); }

th.tur-basligi.suzuluyor { background: #e6ecf6; }
th.tur-basligi.suzuluyor .sutun-suzgec summary { color: var(--lacivert); }
th.tur-basligi.suzuluyor .sutun-suzgec summary::after { border-top-color: var(--lacivert); }

.suzgec-kutu {
  position: absolute;
  z-index: 8;
  top: 100%;
  left: 0;
  min-width: 12rem;
  margin-top: 0.3rem;
  padding: 0.6rem 0.7rem;
  background: var(--yuzey);
  border: 1px solid var(--soluk);
  border-radius: 3px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.16);
  text-align: left;
  font-weight: 400;
}

.suzgec-kutu .onay {
  margin-bottom: 0.25rem;
  font-size: 0.82rem;
  white-space: nowrap;
}
.suzgec-kutu .onay input { width: 0.95rem; height: 0.95rem; }

.suzgec-renk {
  display: inline-block;
  width: 0.8rem;
  height: 0.8rem;
  border: 1px solid rgba(0, 0, 0, 0.2);
  vertical-align: -1px;
}
/* Renk kutucukları durum sınıflarının arka planını kullanır */
.suzgec-renk.d-sistem         { background: #7030a0; }
.suzgec-renk.d-aktarildi      { background: #ffff33; }
.suzgec-renk.d-bos-evrak      { background: #a6a6a6; }
.suzgec-renk.d-hazir          { background: #d9d9d9; }
.suzgec-renk.d-geldi          { background: #e5b8b8; }
.suzgec-renk.d-dizildi        { background: #f2ab48; }
.suzgec-renk.d-islendi        { background: #ee2f22; }
.suzgec-renk.d-kontrol        { background: #6a92d4; }
.suzgec-renk.d-onay           { background: #17693a; }
.suzgec-renk.d-kalfa          { background: #47ad55; }
.suzgec-renk.d-bordro         { background: #9ed7f5; }
.suzgec-renk.d-odeme-bekliyor { background: #ee2f22; }
.suzgec-renk.d-mizan          { background: #8a5a1e; }
.suzgec-renk.d-sistemde       { background: #ffff33; }
.suzgec-renk.d-kdv2-var       { background: #8b2f38; }
.suzgec-renk.d-kdv2-odeme     { background: #8b2f38; }
.suzgec-renk.d-gonderildi     { background: #17693a; }
.suzgec-renk.d-beyan-gonderildi { background: #c55a11; }
.suzgec-renk.d-mahsup         { background: #ddd0f5; }

/* İki boş hâlin kutucukları: beyaz olan sorumlu ama işlem yok,
   gri olan hücrenin kapalı olduğu — sorumluluk yok. */
.suzgec-renk.d-bos            { background: var(--yuzey); }
.suzgec-renk.d-kapali         { background: #f4f4f2; }

.suzgec-dugmeler {
  display: flex;
  gap: 0.6rem;
  align-items: center;
  margin-top: 0.5rem;
  padding-top: 0.45rem;
  border-top: 1px solid var(--cizgi);
}
.suzgec-dugmeler button { width: auto; padding: 0.28rem 0.9rem; font-size: 0.8rem; }

/* Süzgeç kutusundaki bağ görünümlü düğmeler (Temizle). Düğme olmaları
   gerekiyor — iş yapan şey JavaScript, bağ değil — ama gözde bağ gibi
   dursunlar ki Süz düğmesiyle karışmasınlar. */
.suzgec-dugmeler .sz-bag {
  width: auto;
  margin: 0;
  padding: 0;
  background: none;
  border: 0;
  border-bottom: 1px solid currentColor;
  border-radius: 0;
  box-shadow: none;
  font: inherit;
  font-size: 0.85rem;
  color: var(--lacivert);
  cursor: pointer;
}
.suzgec-dugmeler .sz-bag:hover { color: var(--murekkep); }

/* Tümünü seç satırı listenin başında, altındakilerden çizgiyle ayrı */
.suzgec-kutu .onay.sz-hepsi {
  margin-bottom: 0.45rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--cizgi);
  font-weight: 600;
}

.grup-bag.suzgec-temizle { border-color: var(--lacivert); color: var(--lacivert); }

/* Süzgeç kutusu açıkken başlık satırının üstünde kalsın */
table.izgara thead th { overflow: visible; }
.izgara-sar { overflow: auto; }

/* Sütun süzgeci formları görünmez, yalnız alanları taşırlar */
.gizli-form { display: none; }

/* Üst şeritteki grup menüsü ve anahtarlar */
.grup-secim-menu {
  width: auto;
  max-width: 14rem;
  margin: 0;
  padding: 0.35rem 0.6rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  font: inherit;
  font-size: 0.86rem;
}

.ust-anahtar {
  padding: 0.3rem 0.8rem;
  border: 1px dashed var(--cizgi);
  border-radius: 2px;
  color: var(--soluk);
  text-decoration: none;
  font-size: 0.82rem;
  white-space: nowrap;
}
.ust-anahtar:hover { color: var(--murekkep); border-color: var(--soluk); }
.ust-anahtar.secili {
  border-style: solid;
  border-color: var(--lacivert);
  background: var(--lacivert);
  color: #fff;
}
.ust-anahtar.suzgec-etkin {
  border-style: solid;
  border-color: var(--uyari);
  color: var(--uyari);
}

/* Grup şeridi kalktığı için ızgara daha uzun */
.izgara-sar { max-height: calc(100dvh - 10rem); }

/* ---------- Başlık bandındaki araç çubuğu ---------- */

/* Kullanıcı bloğu sağ üstte kalsın: araçlar iki satıra sardığında
   aşağı düşüp boşluk bırakıyordu. Araçlar kendi içinde sarıyor. */
.ust {
  flex-wrap: nowrap;
  align-items: flex-start;
  gap: 0.6rem 1.25rem;
  padding: 0.6rem 1.5rem;
}
.kurum      { flex: none; }
.ust-araclar { min-width: 0; align-content: flex-start; }
.kim-blok   { flex: none; }

@media (max-width: 60rem) {
  .ust { flex-wrap: wrap; }
}

.ust-araclar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.75rem;
  align-items: center;
  flex: 1 1 auto;
}

.ust-araclar .sayac {
  color: var(--soluk);
  font-size: 0.82rem;
  white-space: nowrap;
}

.ust-araclar .musavir-secici a { padding: 0.28rem 0.75rem; font-size: 0.82rem; }
.ust-araclar .mini-ara input[type="search"] { width: 10rem; }
.ust-araclar .donem-kutu { gap: 0.35rem; }
.ust-araclar .donem-secim,
.ust-araclar .grup-secim-menu { font-size: 0.82rem; padding: 0.28rem 0.5rem; }

/* Sayfa başlığı kalktığı için ızgara daha da uzun */
main.tam { padding-top: 0.9rem; }
.izgara-sar { max-height: calc(100dvh - 7rem); }

@media (max-width: 1100px) {
  .ust-araclar { order: 3; flex-basis: 100%; }
}

/* ---------- Kalfa takibi ---------- */

/* Kalfa: programın kendi yeşili. Logodaki ton (#4caf50) beyaz üzerinde
   yazı olarak okunmuyor, o yüzden yazı için bir tık koyusu kullanılıyor;
   seçili haldeki dolgu logo rengine yakın duruyor. */
.m-kalfa { --ton: #3d8f43; --gecis: #e7f4e8; }
.menu-dugme.m-kalfa.secili { background: #4caf50; border-color: #4caf50; }

table.kalfa .sabit-sutun { min-width: 18rem; }
table.kalfa .tur-basligi { min-width: 9rem; }
table.kalfa .tur-basligi.genis { min-width: 15rem; }

td.tarih-hucre,
td.metin-hucre { padding: 0; }

td.tarih-hucre input,
td.metin-hucre input {
  width: 100%;
  margin: 0;
  padding: 0.35rem 0.5rem;
  border: none;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 0.84rem;
}
td.tarih-hucre input { font-variant-numeric: tabular-nums; }

td.tarih-hucre input:focus,
td.metin-hucre input:focus {
  outline: 2px solid var(--lacivert);
  outline-offset: -2px;
  background: #fffdf0;
}

/* Gönderilmiş ama geri dönmemiş satır */
/* Kalfa satırının hali sol şeritten okunur; satır yüksekliği artmasın
   diye yazı eklemiyoruz, renk yetiyor. Başlıkta durum süzgeci var. */
tr.gonderilecek   .ad-hucre { box-shadow: inset 3px 0 0 #9a5b12; }
tr.donus-bekliyor .ad-hucre { box-shadow: inset 3px 0 0 var(--uyari); }
tr.kalfa-tamam    .ad-hucre { box-shadow: inset 3px 0 0 var(--onay); }

/* Kalfa takibinde e-arşiv durumu menüsü */
td.durum-hucre { padding: 0; }

td.durum-hucre .earsiv-secim {
  width: 100%;
  margin: 0;
  padding: 0.38rem 0.5rem;
  border: none;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 0.84rem;
  font-weight: 600;
  cursor: pointer;
}
td.durum-hucre .earsiv-secim:focus-visible {
  outline: 2px solid var(--lacivert);
  outline-offset: -2px;
}

td.durum-hucre.e-bos      { background: var(--yuzey); }
td.durum-hucre.e-bos      .earsiv-secim { color: #c2c2c8; font-weight: 400; }
td.durum-hucre.e-yok      { background: #ececed; color: #6a6a72; }
td.durum-hucre.e-yuklendi { background: #c5ecc9; color: #17693a; }
td.durum-hucre.e-eski     { background: #fff3cd; color: #7a5a10; }

/* Sağ üstte kullanıcı bloğu ve müşavir menüsü */
.kim-blok {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.25rem;
  margin-left: auto;
}
.kim-blok .kim { margin: 0; }

.musavir-menu {
  width: auto;
  margin: 0;
  padding: 0.22rem 0.5rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  color: var(--murekkep);
  font: inherit;
  font-size: 0.8rem;
}
.musavir-menu:hover { border-color: var(--soluk); }

/* ---------- Satır yüksekliği ----------
   Müşavir adı satırlardan kalktı; altındaki ikinci satır için ayrılan
   yer de gitsin. Ekranda daha çok mükellef görünsün. */

table.izgara .ad-hucre {
  padding: 0.2rem 0.6rem 0.2rem 0.85rem;
  line-height: 1.3;
}

/* Alt bilgi yalnız gerçekten içeriği olan yerlerde yer kaplasın
   (yükümlülükler ekranında grup adı duruyor). */
table.izgara .ad-hucre .alt-bilgi:empty { display: none; }

table.izgara td.hucre .hucre-secim { padding: 0.24rem 0.3rem; }
table.izgara td.tutar-hucre input   { padding: 0.22rem 0.4rem; }
table.izgara td.tarih-hucre input,
table.izgara td.metin-hucre input   { padding: 0.22rem 0.5rem; }
table.izgara td.durum-hucre .earsiv-secim { padding: 0.24rem 0.5rem; }
table.izgara td.yuk-hucre { padding: 0.18rem 0.35rem; }
table.izgara td.hucre.kapali { padding: 0.24rem 0.3rem; }

table.izgara thead th { padding: 0.35rem 0.5rem; }
tr.grup-basligi th { padding: 0.3rem 0.85rem; }

/* Izgara alanı da uzasın */
.izgara-sar { max-height: calc(100dvh - 6rem); }

/* Kalfa durum süzgeci */
.durum-suzgec { display: inline-flex; gap: 0.3rem; align-items: center; }
.durum-suzgec .rakam {
  margin-left: 0.3rem;
  font-variant-numeric: tabular-nums;
  opacity: 0.75;
}
.ust-anahtar.d-gonderilecek         { border-color: #9a5b12; color: #9a5b12; }
.ust-anahtar.d-gonderilecek.secili  { background: #9a5b12; border-color: #9a5b12; color: #fff; }
.ust-anahtar.d-bekleyen             { border-color: var(--uyari); color: var(--uyari); }
.ust-anahtar.d-bekleyen.secili      { background: var(--uyari); border-color: var(--uyari); color: #fff; }
.ust-anahtar.d-tamam                { border-color: var(--onay); color: var(--onay); }
.ust-anahtar.d-tamam.secili         { background: var(--onay); border-color: var(--onay); color: #fff; }

/* Dışa aktar düğmesi */
.ust-anahtar.disa-aktar {
  border-style: solid;
  border-color: var(--onay);
  color: var(--onay);
}
.ust-anahtar.disa-aktar:hover { background: #eaf3ec; color: var(--onay); }

/* Mükellef sütunundaki arama kutusu */
.suzgec-kutu.ara-kutu { min-width: 15rem; }

.ara-kutu .ara-etiket {
  display: block;
  margin-bottom: 0.3rem;
  font-size: 0.78rem;
  color: var(--soluk);
}

.ara-kutu input[type="search"] {
  width: 100%;
  margin: 0;
  padding: 0.4rem 0.55rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  font: inherit;
  font-size: 0.86rem;
}

th.sabit-sutun.suzuluyor { background: #e6ecf6; }
th.sabit-sutun .sutun-suzgec summary { padding-right: 1rem; }

/* ===================================================================
   Raporlar
   =================================================================== */

.rapor-izgara {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(22rem, 1fr));
  gap: 1.25rem;
  margin-top: 1rem;
}

.kutu.rapor { margin-top: 0; }
.kutu.rapor h2 { margin: 0 0 0.15rem; font-size: 1rem; }
.rapor.genis-rapor { grid-column: 1 / -1; }

.rapor-not {
  margin: 0 0 0.9rem;
  font-size: 0.82rem;
  color: var(--soluk);
}
.rapor-not a { color: var(--lacivert); }

.rapor-govde {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem;
  align-items: center;
}

svg.pasta {
  width: 9.5rem;
  height: 9.5rem;
  flex: none;
}

.pasta-aciklama {
  flex: 1 1 11rem;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.84rem;
}

.pasta-aciklama li {
  display: grid;
  grid-template-columns: 0.9rem 1fr auto auto;
  gap: 0.5rem;
  align-items: center;
  padding: 0.15rem 0;
  border-bottom: 1px solid var(--cizgi);
}
.pasta-aciklama li:last-child { border-bottom: none; }
.pasta-aciklama li.sifir { color: #b0b0b6; }

.pasta-aciklama .nokta { width: 0.9rem; height: 0.9rem; display: block; }
.pasta-aciklama .ad { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pasta-aciklama .sayi { font-variant-numeric: tabular-nums; font-weight: 600; }
.pasta-aciklama .yuzde {
  font-variant-numeric: tabular-nums;
  color: var(--soluk);
  min-width: 2.6rem;
  text-align: right;
}

/* ---------- Dönem dışı kalemler şeridi (faz32x) ----------
   Tahakkuk ekranının üstünde: bu ayda beyanı olmayan kalemler.
   Kapalı açılıyor, özeti tek satır; açınca adlar ve silme düğmesi. */

.mesaj.donem-disi { display: block; }
.mesaj.donem-disi summary { cursor: pointer; }
.mesaj.donem-disi[open] summary { margin-bottom: 0.6rem; }

.donem-disi-liste {
  margin: 0 0 0.6rem;
  padding: 0;
  list-style: none;
  font-size: 0.85rem;
  max-height: 14rem;
  overflow-y: auto;
}

.donem-disi-liste li {
  display: flex;
  flex-wrap: wrap;
  gap: 0.2rem 0.75rem;
  align-items: baseline;
  padding: 0.22rem 0;
  border-bottom: 1px solid var(--cizgi);
}
.donem-disi-liste li:last-child { border-bottom: none; }

.donem-disi-liste a { flex: 1 1 14rem; color: var(--lacivert); }
.donem-disi-liste .tur { color: var(--soluk); min-width: 7rem; }
.donem-disi-liste .tutar {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  margin-left: auto;
}

.donem-disi-form { margin: 0; }
.donem-disi-form button { width: auto; }

/* ---------- Kısmi gönderilenler listesi (faz32w) ----------
   Pastanın altında, kartın içinde. Uzun olursa kendi içinde kayıyor:
   bir kart büyüyüp ızgaranın satır yüksekliğini bozmasın. */

.rapor-eksik {
  margin-top: 0.9rem;
  padding-top: 0.7rem;
  border-top: 1px solid var(--cizgi);
}

.rapor-eksik-baslik {
  margin: 0 0 0.35rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--soluk);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.rapor-eksik ul {
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.84rem;
  max-height: 11rem;
  overflow-y: auto;
}

.rapor-eksik li {
  display: flex;
  flex-wrap: wrap;
  gap: 0.15rem 0.5rem;
  align-items: baseline;
  padding: 0.22rem 0;
  border-bottom: 1px solid var(--cizgi);
}
.rapor-eksik li:last-child { border-bottom: none; }

.rapor-eksik a { color: var(--lacivert); flex: 1 1 9rem; }

.rapor-eksik .eksik {
  font-size: 0.76rem;
  color: #9a5b12;
  white-space: nowrap;
}

@media print {
  .menu, .ust-araclar { display: none; }
  .rapor-izgara { grid-template-columns: 1fr 1fr; }
  .kutu.rapor { break-inside: avoid; }
}

/* ---------- Ödeme durumu hücreleri ---------- */

th.odeme-basligi { min-width: 8.5rem; }

td.odeme-hucre { padding: 0; text-align: center; }

td.odeme-hucre .odeme-secim {
  width: 100%;
  margin: 0;
  padding: 0.26rem 0.4rem;
  border: none;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 0.82rem;
  font-weight: 600;
  text-align: center;
  text-align-last: center;
  cursor: pointer;
}
td.odeme-hucre .odeme-secim:focus-visible {
  outline: 2px solid var(--lacivert);
  outline-offset: -2px;
}

td.odeme-hucre.o-bekliyor   { background: var(--yuzey); }
td.odeme-hucre.o-bekliyor   .odeme-secim { color: #a8a8ae; font-weight: 400; }
td.odeme-hucre.o-odendi     { background: #c5ecc9; color: #17693a; }
td.odeme-hucre.o-kendisi    { background: #d7e6f7; color: #1e5f8f; }
td.odeme-hucre.o-odemeyecek { background: #ececed; color: #6a6a72; }

th.suzuluyor { background: #e6ecf6; }

/* Vadesi geçmiş ve ödenmemiş kalem */
td.vade-gecti { color: var(--uyari); font-weight: 600; }

/* Dönem gezinmesi: önceki · mevcut · sonraki */
.donem-gezinme { display: inline-flex; gap: 0.3rem; align-items: center; }

.donem-dugme {
  display: inline-block;
  padding: 0.3rem 0.8rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  color: var(--murekkep);
  text-decoration: none;
  font-size: 0.84rem;
  white-space: nowrap;
  width: auto;
}
.donem-dugme:hover { border-color: var(--lacivert); color: var(--lacivert); }

.donem-dugme.simdi {
  border-color: var(--lacivert);
  background: var(--lacivert);
  color: #fff;
  font-weight: 600;
}
.donem-dugme.yok { color: #c0c0c6; border-style: dashed; cursor: default; }
.donem-dugme.yok:hover { border-color: var(--cizgi); color: #c0c0c6; }

.donem-dugme.ac { border-color: var(--onay); color: var(--onay); }
.donem-dugme.ac:hover { background: #eaf3ec; }

.donem-gezinme .donem-ac { display: inline; margin: 0; }

/* ---------- Bildirim sütunu ---------- */

td.hucre.bildirim-hucre { padding: 0; position: relative; }
td.d-kismi { background: #f7d9a8; color: #7a4a10; }
.suzgec-renk.d-kismi { background: #e0952e; }

.bildirim-secim summary {
  cursor: pointer;
  list-style: none;
  padding: 0.24rem 0.4rem;
  font-size: 0.78rem;
  font-weight: 600;
  white-space: nowrap;
}
.bildirim-secim summary::-webkit-details-marker { display: none; }

.bildirim-kutu {
  position: absolute;
  z-index: 9;
  top: 100%;
  right: 0;
  min-width: 12rem;
  padding: 0.55rem 0.7rem;
  background: var(--yuzey);
  border: 1px solid var(--soluk);
  border-radius: 3px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.16);
  text-align: left;
  font-weight: 400;
  color: var(--murekkep);
}
.bildirim-kutu .onay { margin-bottom: 0.2rem; font-size: 0.82rem; white-space: nowrap; }
.bildirim-kutu .onay input { width: 0.95rem; height: 0.95rem; }
.bildirim-kutu .onay.ayrac {
  margin-top: 0.4rem;
  padding-top: 0.4rem;
  border-top: 1px solid var(--cizgi);
}

/* Kullanıcı listesinde rol değiştirme */
td.rol-hucre .rol-form {
  display: flex;
  gap: 0.35rem;
  align-items: center;
  flex-wrap: wrap;
}
td.rol-hucre select {
  width: auto;
  margin: 0;
  padding: 0.24rem 0.4rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  font: inherit;
  font-size: 0.82rem;
}
td.rol-hucre .kod-kutu {
  width: 5.5rem;
  margin: 0;
  padding: 0.24rem 0.4rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  font: inherit;
  font-size: 0.82rem;
}

/* Bildirim kutusundaki düğmeler */
.bildirim-dugmeler {
  display: flex;
  gap: 0.5rem;
  margin-top: 0.6rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--cizgi);
}
.bildirim-dugmeler button {
  width: auto;
  padding: 0.3rem 0.9rem;
  font-size: 0.8rem;
}

/* Menü çubuğunun en sağındaki kaydet düğmesi */
/* Tahakkuk ekranındaki arızi ödeme düğmesi. margin-left:auto ile
   sekmelerden ayrılıp kaydet düğmesinin yanına, sağ uca gidiyor. */
.menu-dugme.m-arizi {
  --ton: var(--onay);
  margin-left: auto;
  align-self: center;
  padding: 0.26rem 0.7rem;
  font-size: 0.74rem;
}
.menu-dugme.m-arizi.acik { background: var(--ton); color: #fff; }

/* Kaydet düğmesi arızi düğmesinden sonra geliyorsa itilmesine gerek yok. */
.m-arizi + .menu-kaydet { margin-left: 0.5rem; }

.menu-kaydet {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  width: auto;
  margin-left: auto;
  padding: 0.26rem 0.7rem;
  border: 1px solid var(--lacivert);
  border-radius: 3px;
  background: var(--lacivert);
  color: #fff;
  font: inherit;
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  cursor: pointer;
}
.menu-kaydet:hover { background: #2c2a6e; }

svg.disket { width: 0.82rem; height: 0.82rem; flex: none; }

/* Tablonun altındaki açıklama, kutu değil düz yazı */
.kaydet-not {
  margin: 0.5rem 0 0;
  font-size: 0.8rem;
  color: var(--soluk);
}
.kaydet-not .yan-bag { margin-left: 0.5rem; }

/* Başlık bandındaki "yeni kayıt" bağlantısı */
.ust-anahtar.yeni {
  border-style: solid;
  border-color: var(--lacivert);
  color: var(--lacivert);
  font-weight: 600;
}
.ust-anahtar.yeni:hover { background: var(--gecis, #eef0f7); }

/* ---------- Genel ayarlar menüsü ----------
   Açılınca menü çubuğunun altına ikinci bir satır olarak açılıyor;
   üstteki içeriği örtmüyor. Başka bir sekmeye tıklayınca sayfa
   yenilendiği için kendiliğinden kapanıyor. */

/* details'ı akıştan çıkarıyoruz: başlık ve kutu doğrudan menünün
   öğeleri oluyor, böylece kutu tam satır kaplayabiliyor. */
/* ---------- Genel ayarlar ----------
   Düğme menü çubuğunda, açılan liste menünün altında ayrı bir satır.
   Satır akışın içinde: üstteki içeriği örtmüyor, tabloyu aşağı itiyor. */

.menu-dugme.m-ayar { --ton: #4a4a52; --gecis: #eeeeef; }
.menu-dugme.m-ayar { cursor: pointer; font: inherit; font-weight: 600; }
.menu-dugme.m-ayar::after {
  content: "";
  display: inline-block;
  margin-left: 0.45rem;
  border: 4px solid transparent;
  border-top-color: currentColor;
  vertical-align: 1px;
}
.menu-dugme.m-ayar.acik::after { transform: rotate(180deg); vertical-align: 4px; }

.menu-dugme.m-ayar.secili { background: #4a4a52; border-color: #4a4a52; color: #fff; }

/* İkinci satır: menüyle aynı hizada, aynı boyda düğmeler */
/* ---------- Menü altı açılır liste ----------

   Alt menü, kendisini açan düğmenin tam altında duruyor ve sağa doğru
   uzuyor. Konumu .menu-grup sarmalı veriyor; başka bir sekmeye alt menü
   gerekirse düğmeyi ve listeyi aynı sarmala koymak yetiyor.

   Akıştan çıktığı için altındaki içeriği aşağı itmiyor: ızgaranın
   yüksekliği menü açılıp kapanırken oynamıyor. */

.menu-grup { position: relative; display: inline-flex; }

.alt-menu {
  position: absolute;
  top: calc(100% + 0.4rem);
  left: 0;
  z-index: 40;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  width: max-content;
  max-width: calc(100vw - 3rem);
  padding: 0.6rem 0.7rem;
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  border-radius: 4px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.13);
}
.alt-menu[hidden] { display: none; }


/* Kullanıcı satırındaki müşavir kodu menüsü */
select.kod-kutu {
  width: auto;
  margin: 0;
  padding: 0.28rem 0.45rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  background: var(--yuzey);
  font: inherit;
  font-size: 0.84rem;
}

/* ---------- E-Defter ---------- */

.m-edefter { --ton: #1d5c6e; --gecis: #e3eff2; }
.m-edm     { --ton: #6e4a1d; --gecis: #f2ece3; }
.m-edmfatura { --ton: #8a3d5f; --gecis: #f6e9ef; }

table.edefter .sabit-sutun { min-width: 18rem; width: 18rem; }
table.edefter .ed-adim     { min-width: 7rem;  width: 7rem; }
table.edefter .ed-ay       { min-width: 4.6rem; width: 4.6rem; }
table.edefter .ed-tarih    { min-width: 6.2rem; width: 6.2rem; }
table.edefter .tur-basligi { font-size: 0.7rem; }
table.edefter { table-layout: fixed; }

/* İşaretli hücreler renkleniyor: mizan kum, kontrol mavi, gönderim yeşil */
td.hucre.ed-mizan      { background: #f6e8cf; }
td.hucre.ed-kontrol    { background: #dbe8f8; }
td.hucre.ed-gonderildi { background: #cdeed2; }

/* Kutu hücrenin tamamını kaplasın; tıklamak kolay olsun */
.onay-hucre {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 1.8rem;
  margin: 0;
  cursor: pointer;
}
.onay-hucre input { width: 1.05rem; height: 1.05rem; margin: 0; cursor: pointer; }

/* Gönderim tarihi kendi sütununda */
td.gonderim-tarihi {
  font-size: 0.75rem;
  color: #17693a;
  font-variant-numeric: tabular-nums;
}
td.gonderim-tarihi:not(.ed-gonderildi) { color: var(--soluk); }

/* Kullanıcı satırında ad soyad ve e-posta düzenleme */
.kimlik-form { flex-wrap: wrap; }
.kimlik-form input[type="text"],
.kimlik-form input[type="email"] {
  width: auto;
  margin: 0;
  padding: 0.28rem 0.45rem;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
  font: inherit;
  font-size: 0.86rem;
}
.kimlik-form .ad-kutu     { min-width: 11rem; }
.kimlik-form .eposta-kutu { min-width: 15rem; }

/* Giriş ekranındaki "bu bilgisayarı hatırla" kutusu */
.hatirla-kutu {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0.9rem 0 0.3rem;
  cursor: pointer;
}
.hatirla-kutu input { width: 1.05rem; height: 1.05rem; margin: 0; }

/* ==================== KDV kontrol ==================== */

.m-kdv { --ton: #7a3b12; --gecis: #f7ebe1; }

/* Durum rozetleri. Renk tek basina anlam tasimiyor; rozetin icinde
   durumun adi da yazili, renk yalniz gozu yonlendiriyor. */
.rozet.kd-kirmizi { border-color: #a32b2b; color: #a32b2b; }
.rozet.kd-sari    { border-color: #8a6b0f; color: #8a6b0f; }
.rozet.kd-turuncu { border-color: #9a5b12; color: #9a5b12; }
.rozet.kd-yesil   { border-color: #1c6b53; color: #1c6b53; }
.rozet.kd-mavi    { border-color: #1e5f8f; color: #1e5f8f; }
.rozet.kd-gri     { border-color: #6b6b6b; color: #6b6b6b; }
.rozet.kd-mor     { border-color: #6b3f8f; color: #6b3f8f; }

/* Sorunsuz satirlar yesil zeminli: goz dogrudan sorunlulara gitsin.
   Fis notr gri, sahsi harcama mor. */

/* Ayni evragin ikinci ve sonraki kalemleri: ilk dort sutunun alt cizgisi
   silik, boylece kalemler tek blok gibi gorunuyor. */

/* Sifirdan farkli sayilari one cikarir. */
.kd-vurgu { font-weight: 600; color: #a32b2b; }

/* Evrak numarasi ve hesap kodu: tek aralikli. */
.kdv-evrak {
  font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
  font-size: 0.76rem;
  letter-spacing: 0;
  white-space: nowrap;
}

/* Sutunlar icerige gore genisliyor; tablo sigmazsa sarmalayici kayiyor.
   Baslik satiri table.izgara kuralindan yapiskan geliyor. */
table.kdv-ozet,
table.kdv-detay {
  width: max-content;
  min-width: 100%;
  table-layout: auto;
  font-size: 0.78rem;
}

table.kdv-ozet th,  table.kdv-ozet td,
table.kdv-detay th, table.kdv-detay td {
  padding: 0.25rem 0.5rem;
  white-space: nowrap;
}

table.kdv-ozet thead th,
table.kdv-detay thead th { font-size: 0.72rem; padding: 0.35rem 0.5rem; }

/* Unvan tabloyu tek basina iki katina cikarabiliyor; orada kirpiyoruz. */
table.kdv-ozet  td.ad-hucre,
table.kdv-detay td.ad-hucre {
  max-width: 26rem;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Suzgec acik olan sutun basligi belirgin olsun */
table.kdv-detay thead th.suzuluyor { background: #e6ecf6; }
table.kdv-detay thead th.suzuluyor .sutun-suzgec summary { color: var(--lacivert); }

/* Hesap listeleri uzun olabiliyor: kutu kendi icinde kaysin */
.suzgec-kutu.kd-uzun-kutu {
  max-height: 22rem;
  overflow-y: auto;
  min-width: 20rem;
}

/* Siralanabilir sutun basliklari */
.kd-sirala {
  color: inherit;
  text-decoration: none;
  white-space: nowrap;
}
.kd-sirala:hover { text-decoration: underline; }
.kd-sirala.secili { font-weight: 700; }

/* Suzgecli sutunlarda siralama oku basligin yanina geliyor */
table.kdv-detay thead th .sutun-suzgec { display: inline-block; }
table.kdv-detay thead th .kd-sirala:empty { display: none; }

/* Fis / sahsi isaretleme dugmesi. Genel button kurali tam genislik
   veriyor, onu eziyoruz. */
.kd-form { margin: 0; }
.kd-dugme {
  width: auto;
  padding: 0.05rem 0.45rem;
  font-size: 0.72rem;
  border-radius: 2px;
  white-space: nowrap;
}

/* Toplam satiri: tablonun altinda, kalin ve ust cizgili. Kaydirirken
   gorunur kalsin diye yapiskan. */
tr.kd-toplam > td {
  position: sticky;
  bottom: 0;
  z-index: 2;
  background: var(--kagit);
  border-top: 2px solid var(--lacivert);
  font-weight: 600;
}

/* Suzgec formlari gorunmez, yalniz alanlari tasirlar */
.kd-gizli-form { display: none; }

/* Islem sutunu: iki secenek yan yana, dar ekranda alt alta. */
.kd-islem-kutu {
  display: flex;
  gap: 0.25rem;
  flex-wrap: wrap;
  justify-content: center;
}
.kd-dugme.kd-geri { border-color: var(--soluk); color: var(--soluk); }

/* Az satir varken suzgec kutusu tablo kabinin disina tasip kirpiliyordu.
   Kaba en az yukseklik veriyoruz ki kutu icine sigsin. */
.kdv-sar { min-height: 26rem; }

/* Kutunun icindeki Kapat dugmesi bag gibi gorunsun */
.suzgec-dugmeler .kd-kapat {
  width: auto;
  margin: 0;
  padding: 0;
  background: none;
  border: 0;
  font: inherit;
  cursor: pointer;
}

/* Capa ile donulen satir yapiskan basligin altinda kalmasin, ve kisa
   sure vurgulansin ki goz nerede kaldigini bulsun. */
table.kdv-detay tbody tr[id] { scroll-margin-top: 4rem; }
table.kdv-detay tbody tr[id]:target > td { box-shadow: inset 0 0 0 2px var(--lacivert); }

/* ---------- Açılır listedeki seçenek renkleri ----------

   Liste düz beyaz geliyordu; hangi durumun hangi renk olduğu ancak
   seçtikten sonra görülüyordu.

   Hücredeki tam doygun renkler listede kullanılmadı. İki sebep: açılan
   liste alttaki satırların üstüne bindiği için renk bloğu olarak durunca
   ızgarayla karışıyor, ve seçenekler yazı rengini hücreden devralıyor —
   hücre beyaz yazılı olunca açık zeminli seçeneklerde yazı kayboluyordu.
   Listede soluk ton, yazı her zaman koyu. Hücre tam renginde kalıyor.

   Seçenek renklerini Chrome, Edge ve Firefox çiziyor; Safari yok sayıyor,
   orada liste düz görünür — işlev değişmez. */

.hucre-secim option {
  background: var(--yuzey);
  color: var(--murekkep);
  font-weight: 500;
}

.hucre-secim option.d-bos              { background: #ffffff; color: var(--murekkep); }
.hucre-secim option.d-kapali-acik      { background: #f4f4f2; color: var(--murekkep); }
.hucre-secim option.d-sistem           { background: #ece2f5; color: var(--murekkep); }
.hucre-secim option.d-aktarildi        { background: #fdfdd2; color: var(--murekkep); }
.hucre-secim option.d-bos-evrak        { background: #ededed; color: var(--murekkep); }
.hucre-secim option.d-hazir            { background: #f5f5f5; color: var(--murekkep); }
.hucre-secim option.d-geldi            { background: #f9efef; color: var(--murekkep); }
.hucre-secim option.d-dizildi          { background: #fdeeda; color: var(--murekkep); }
.hucre-secim option.d-islendi          { background: #fcdedb; color: var(--murekkep); }
.hucre-secim option.d-kontrol          { background: #e8eff9; color: var(--murekkep); }
.hucre-secim option.d-onay             { background: #dceae2; color: var(--murekkep); }
.hucre-secim option.d-kalfa            { background: #e3f3e5; color: var(--murekkep); }
.hucre-secim option.d-beyan-gonderildi { background: #f8e6d8; color: var(--murekkep); }
.hucre-secim option.d-bordro           { background: #ecf7fd; color: var(--murekkep); }
.hucre-secim option.d-odeme-bekliyor   { background: #fcdedb; color: var(--murekkep); }
.hucre-secim option.d-mizan            { background: #eee6dc; color: var(--murekkep); }
.hucre-secim option.d-sistemde         { background: #fdfdd2; color: var(--murekkep); }
.hucre-secim option.d-kdv2-var         { background: #f0dfe1; color: var(--murekkep); }
.hucre-secim option.d-kdv2-odeme       { background: #f0dfe1; color: var(--murekkep); }
.hucre-secim option.d-gonderildi       { background: #dceae2; color: var(--murekkep); }
.hucre-secim option.d-mahsup           { background: #f6f2fd; color: var(--murekkep); }

/* Taslak uyarısındaki düğme. Genel button kuralı width:100% verdiği için
   satırın altında koyu bir blok gibi çıkıyordu. */
.mesaj .taslak-at {
  width: auto;
  margin-left: 0.5rem;
  padding: 0.15rem 0.7rem;
  font-size: 0.8rem;
  vertical-align: baseline;
}

/* E-defter: anında kaydedilen kutular. Beyanname hücreleriyle aynı
   geri bildirim — kaydederken soluk, kaydedilince kısa bir yeşil çerçeve. */
td.hucre.kaydediliyor .onay-hucre { opacity: 0.45; }
td.hucre.kaydedildi   { box-shadow: inset 0 0 0 2px var(--onay); }
td.hucre.kayit-hatasi { box-shadow: inset 0 0 0 2px var(--uyari); }

/* Baslik satiri kesin olarak yapisik kalsin. Genel kural zaten var ama
   KDV tablolari genis ve yatay kaydiriliyor; z-index ve zemin burada
   acikca veriliyor ki govde satirlari basligin ustune binmesin. */
table.kdv-ozet thead th,
table.kdv-detay thead th {
  position: sticky;
  top: 0;
  z-index: 4;
  background: var(--kagit);
}

/* Hesap adi sutunlari tabloyu sisirmesin */
table.kdv-detay td.ad-hucre { max-width: 20rem; }

/* Toplam satiri basligin altinda kalsin */
tr.kd-toplam > td { z-index: 2; }

/* ---- Satir renkleri ----
   Onceki tonlar cok soluktu, ekranda ayirt edilmiyordu. Bunlar belirgin
   ama okumayi zorlastirmayacak kadar acik. Renk tek basina anlam
   tasimiyor: durum sutununda rozet de yazili. */

tr.kd-satir-tamam   > td { background: #cdeedd; }   /* tamam */
tr.kd-satir-sorunlu > td { background: #fbd6d6; }   /* islenmemis, faturasiz, tutar farki */
tr.kd-satir-numara  > td { background: #fdf0b8; }   /* numara hatasi suphesi */
tr.kd-satir-fis     > td { background: #e6e6e2; }   /* elle girilmis fis */
tr.kd-satir-sahsi   > td { background: #e8dff5; }   /* sahsi harcama */


/* Rozetler de zeminle uyumlu kalsin */
.rozet.kd-sari { border-color: #8a6b0f; color: #7a5c08; background: #fffbe8; }

/* ---- Evrak blogu ----
   Cok oranli ya da tevkifatli faturada birden cok kalem satiri cikiyor.
   Evrak duzeyindeki hucreler (durum, evrak no, tarih, unvan, tutarlar)
   rowspan ile birlesiyor: hem satir eksik gorunmuyor hem iki satirin tek
   fatura oldugu goz onunde.

   Birlesik hucreler ustte hizali dursun, uzun listede goz kaymasin. */
table.kdv-detay tbody td[rowspan] { vertical-align: top; }

/* Her evragin ilk satirinda belirgin ust cizgi: fatura sinirlari belli
   olsun. Kalem satirlari arasindaki cizgi ise silik. */
table.kdv-detay tbody tr.kd-ilk > td { border-top: 2px solid var(--cizgi); }
table.kdv-detay tbody tr.kd-devam > td { border-top: 1px dotted var(--cizgi); }

/* Tevkifatli fatura uyarisi. Renk beyanname ekranindaki "KDV2 var"
   hucresiyle ayni (#8b2f38): iki ekran arasinda bag kurulsun. */
.kd-kdv2-uyari {
  display: block;
  margin-top: 0.3rem;
  padding: 0.15rem 0.45rem;
  border-radius: 2px;
  background: #8b2f38;
  color: #fff;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  white-space: normal;
}

/* KDV 2 uyarisi: beyanname ekranindaki "KDV2 var" hucresiyle ayni renk.
   Iki ekran arasinda bag kurulsun diye ozellikle o ton secildi. */
.kd-kdv2-uyari {
  display: block;
  margin-top: 0.3rem;
  padding: 0.15rem 0.45rem;
  border-radius: 2px;
  background: #8b2f38;
  color: #fff;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  white-space: normal;
}

/* ---- Izgara cizgileri ----
   Onceki cizgiler hem kalin hem soluktu; hucre sinirlari secilmiyordu.
   Daha ince ama daha koyu: goz hucreleri ayirt ediyor, tablo agirlasmiyor. */
table.izgara td,
table.izgara th {
  border-color: #b9b9c2;
}
table.kdv-ozet td,  table.kdv-ozet th,
table.kdv-detay td, table.kdv-detay th {
  border: 1px solid #b9b9c2;
}

/* KDV 2 onerisi: o mukellefte bu donem tevkifatli alis var, hucre bos.
   Kesikli cerceve "henuz isaretlenmedi, bakman gerek" demek; dolu renk
   kullanmiyoruz ki gercekten isaretlenmis hucrelerle karismasin. */
td.hucre.d-kdv2-oneri {
  background: #fff0f1;
  box-shadow: inset 0 0 0 2px #8b2f38;
  position: relative;
}
td.hucre.d-kdv2-oneri::after {
  content: "KDV 2?";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #8b2f38;
  font-size: 0.62rem;
  font-weight: 700;
  pointer-events: none;
}

/* Suzgec kutusu olan sutunlarda siralama baglantisi yalniz ok:
   "sirala" yazisi tabloyu gereksiz genisletiyordu. */
.kd-sirala.yalniz-ok {
  margin-left: 0.25rem;
  font-size: 0.8rem;
  opacity: 0.55;
  text-decoration: none;
}
.kd-sirala.yalniz-ok:hover { opacity: 1; }
.kd-sirala.yalniz-ok.secili { opacity: 1; font-weight: 700; }

/* Islem sutunu durumun hemen saginda; dar ve ortali dursun */
table.kdv-detay th.kd-islem,
table.kdv-detay td.kd-islem { white-space: nowrap; text-align: center; }

/* KDV 2 onerisi kutusu: beyanname ekraninin ustunde, onay bekleyen liste */
.kdv2-oneri-kutu {
  border-left: 4px solid #8b2f38;
  background: #fff6f7;
  margin-bottom: 0.9rem;
}
.kdv2-oneri-baslik { margin: 0 0 0.5rem; }
.kdv2-oneri-liste {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 1.25rem;
  margin-bottom: 0.7rem;
}
.kdv2-oneri-liste .onay { margin: 0; }
.kdv2-oneri-dugmeler {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.kdv2-oneri-dugmeler button { width: auto; margin: 0; }

/* Uyarinin icindeki ay bilgisi: hangi beyanname sekmesine bakilacak */
.kd-kdv2-ay {
  display: block;
  font-weight: 500;
  opacity: 0.85;
  font-size: 0.64rem;
}

/* ---- KDV mizani ---- */

table.kdv-mizan { width: max-content; min-width: 100%; font-size: 0.82rem; }
table.kdv-mizan td, table.kdv-mizan th { padding: 0.25rem 0.6rem; white-space: nowrap; }

/* Hesap agaci: ana hesap kalin, alt hesaplar girintili ve soluk.
   Zirve mizanindaki gorunumun aynisi. */
tr.mz-seviye-0 > td { font-weight: 700; background: #eef0f4; }
tr.mz-seviye-1 > td { font-weight: 600; background: #f7f8fa; }
tr.mz-seviye-1 > td:first-child { padding-left: 1.6rem; }
tr.mz-seviye-2 > td:first-child { padding-left: 3rem; }
tr.mz-seviye-3 > td:first-child { padding-left: 4.4rem; }

/* Kontrol ozeti: mizanin ustunde, asil bakilacak rakamlar */
.mizan-ozet {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem 2.5rem;
  margin-bottom: 0.9rem;
}
.mizan-ozet-kutu { display: flex; flex-direction: column; gap: 0.15rem; }
.mizan-ozet-kutu strong { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.mizan-ozet-kutu.mizan-odenecek strong { color: #a32b2b; }

/* Devreden tutar alani: ozet kutularinin arasinda, ayni hizada */
.mizan-devir-form { margin: 0; }
.mizan-devir-satir { display: flex; gap: 0.35rem; align-items: center; }
.mizan-devir-satir input {
  width: 9rem;
  margin: 0;
  padding: 0.2rem 0.45rem;
  text-align: right;
  font-variant-numeric: tabular-nums;
  border: 1px solid var(--cizgi);
  border-radius: 2px;
}
.mizan-devir-satir button {
  width: auto;
  margin: 0;
  padding: 0.2rem 0.6rem;
  font-size: 0.78rem;
}

/* ---- Oran karsilastirmasi ----
   Mizanin kendisi Zirve'yi tekrarliyor; asil kontrol bu tabloda. Defter
   ve fatura yan yana, farkli olan satir kirmizi zeminli. */
.oran-kutu { margin-bottom: 1rem; }
.oran-baslik { margin: 0 0 0.6rem; font-size: 0.95rem; }
table.kdv-oran { width: max-content; min-width: 100%; font-size: 0.84rem; }
table.kdv-oran td, table.kdv-oran th { padding: 0.3rem 0.8rem; white-space: nowrap; }
table.kdv-oran tbody tr.oran-sorunlu > td { background: #fbd6d6; }
table.kdv-oran tfoot tr > td { border-top: 2px solid var(--lacivert); font-weight: 600; }

/* ---------- Süzgeç kutusu her zaman kullanılabilir olsun ----------

   Izgara kabı (.izgara-sar / .kdv-sar) yatay kaydırma için overflow
   taşıyor; bu da içindeki açılır süzgeç kutusunu kırpıyor. Süzgeçten
   sonra ekranda az satır kalınca kap kısalıyor, kutunun altı — yani Süz
   düğmesi — kesiliyordu. Kullanıcı seçimi değiştiremiyordu.

   Üç kademeli çözüm:

     1. Kutunun kendi boyu sınırlı ve içi kayıyor; uzun listeler (KDV'nin
        on üç durumu gibi) kabı aşmıyor.
     2. Düğme satırı kutunun altına yapışık duruyor, liste kayarken bile
        görünüyor.
     3. Izgara kabına alt sınır: iki satır kalsa bile kutu sığacak kadar
        yer kalıyor.

   Üçünden biri yetmiyor: yalnız (1) olsa kap yine de kutudan kısa
   olabilirdi, yalnız (3) olsa uzun listeler taşardı. */

.suzgec-kutu {
  max-height: 20rem;
  overflow-y: auto;
  /* Kutunun içinde kaydırma bitince sayfa kaymasın */
  overscroll-behavior: contain;
}

/* Tümünü seç de yapışık: uzun listede kaydırırken kaybolmasın */
.suzgec-kutu .onay.sz-hepsi {
  position: sticky;
  top: -0.6rem;
  z-index: 1;
  margin-top: -0.6rem;
  padding-top: 0.6rem;
  background: var(--yuzey);
}

.suzgec-kutu .suzgec-dugmeler {
  position: sticky;
  bottom: -0.6rem;
  /* Kutunun alt iç boşluğunu kapatıyor ki altından liste sızmasın */
  margin-bottom: -0.6rem;
  padding-bottom: 0.6rem;
  background: var(--yuzey);
}

/* Süzgeç sonrası az satır kalınca kap kısalmasın */
.izgara-sar { min-height: 24rem; }

@media (max-width: 700px) {
  /* Dar ekranda alt sınır ızgarayı gereksiz uzatıyor */
  .izgara-sar { min-height: 0; }
}

/* ===================================================================
   Faz 28a — yeni kabuk

   Üstteki yatay menü şeridi gitti, yerine sol kenar çubuğu geldi.
   Bu bölüm dosyanın sonunda duruyor: üstteki kuralları bilerek eziyor,
   böylece iki bin satırlık mevcut stil sökülmeden yeni kabuk üstüne
   oturuyor. Ekranların kendi bileşenleri sonraki paketlerde elden
   geçecek; buradaki tazeleme hepsini birden toparlıyor.
   =================================================================== */

/* -------------------------------------------------------------------
   1. Kenar çubuğu görünümleri

   Üçü de logonun mavisinden çıkıyor, farklı derinlikte. Seçim
   kullanıcıda: tema.js tercihi <html data-yan="..."> olarak uyguluyor.
   Öntanımlı "derin"; data-yan hiç yoksa da derin çalışsın diye
   :root da aynı değerleri taşıyor.
   ------------------------------------------------------------------- */

:root,
:root[data-yan="derin"] {
  --yan-zemin: #06284c;
  --yan-kat:
      radial-gradient(120% 70% at 12% -6%, rgba(94, 168, 240, .38), transparent 62%),
      radial-gradient(90% 55% at 105% 108%, rgba(1, 83, 167, .55), transparent 70%),
      linear-gradient(176deg, #0a3d78 0%, #06284c 52%, #041d3a 100%);
  --yan-yazi:   #b9cee6;
  --yan-parlak: #ffffff;
  --yan-soluk:  #7794b4;
  --yan-kenar:  rgba(255, 255, 255, .10);
  --yan-ust:    rgba(255, 255, 255, .08);
  --yan-secili: rgba(255, 255, 255, .13);
  --yan-rozet:  rgba(255, 255, 255, .12);
  --yan-isik:   rgba(255, 255, 255, .16);
  --yan-logo:   #ffffff;
}

:root[data-yan="gece"] {
  --yan-zemin: #080e18;
  --yan-kat:
      radial-gradient(130% 60% at 0% 0%, rgba(1, 83, 167, .42), transparent 58%),
      radial-gradient(80% 40% at 100% 100%, rgba(1, 83, 167, .22), transparent 72%),
      linear-gradient(180deg, #0c1523 0%, #080e18 100%);
  --yan-yazi:   #9fb3c9;
  --yan-parlak: #ffffff;
  --yan-soluk:  #65788e;
  --yan-kenar:  rgba(255, 255, 255, .09);
  --yan-ust:    rgba(255, 255, 255, .06);
  --yan-secili: #0153a7;
  --yan-rozet:  rgba(255, 255, 255, .10);
  --yan-isik:   rgba(255, 255, 255, .14);
  --yan-logo:   #ffffff;
}

:root[data-yan="kagit"] {
  --yan-zemin: #eef2f8;
  --yan-kat:   linear-gradient(180deg, #f6f9fd 0%, #e9eff7 100%);
  --yan-yazi:   #44536a;
  --yan-parlak: #0e2033;
  --yan-soluk:  #8494a8;
  --yan-kenar:  rgba(14, 32, 51, .10);
  --yan-ust:    rgba(1, 83, 167, .07);
  --yan-secili: #0153a7;
  --yan-rozet:  rgba(1, 83, 167, .10);
  --yan-isik:   rgba(255, 255, 255, .9);
  --yan-logo:   #0153a7;
}

/* -------------------------------------------------------------------
   2. Yerleşim

   Izgarayı body'nin kendisi kuruyor. Sarmalayıcı bir div kullanılsaydı
   on sekiz sayfanın sonuna birer kapatma etiketi eklemek gerekirdi;
   sayfalar <main> ile başlayıp </main></body> ile bitiyor ve öyle
   kalabilsin diye ızgara body'de.
   ------------------------------------------------------------------- */

body.panel {
  display: grid;
  grid-template-columns: var(--yan-g) minmax(0, 1fr);
  grid-template-rows: auto 1fr;
  min-height: 100vh;
  background: var(--kagit);
}

body.panel > .yan  { grid-column: 1; grid-row: 1 / -1; }
body.panel > .arac { grid-column: 2; grid-row: 1; }
body.panel > main  { grid-column: 2; grid-row: 2; }

/* -------------------------------------------------------------------
   3. Kenar çubuğu
   ------------------------------------------------------------------- */

.yan {
  background-color: var(--yan-zemin);
  background-image: var(--yan-kat);
  color: var(--yan-yazi);
  border-right: 1px solid var(--yan-kenar);
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 0 10px calc(11px + env(safe-area-inset-bottom, 0px));
  /* Menü kendi ölçüsünü taşıyor: gövde yazısı clamp() ile 15-16px
     arasında değişiyor, menü onunla büyüyüp orantısını kaybetmesin. */
  font-size: 14px;
  position: sticky;
  top: 0;
  align-self: start;
  height: 100vh;
  /* Bölümler açıldıkça menü taşabilir; kendi içinde kaysın. */
  overflow-y: auto;
  overscroll-behavior: contain;
}

.yan::-webkit-scrollbar { width: 8px; }
.yan::-webkit-scrollbar-thumb { background: var(--yan-ust); border-radius: 20px; }
.yan::-webkit-scrollbar-track { background: transparent; }

/* --- Logo ---
   Görsel olarak değil maske olarak duruyor: tek dosya (logo.png)
   bulunduğu zemine göre renk alıyor — koyu menüde beyaz, açık menüde
   kendi mavisi. İkinci bir logo dosyası taşımaya gerek kalmıyor. */
.yan-logo {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  padding: 20px 8px 15px;
  margin: 0 -10px 8px;
  border-bottom: 1px solid var(--yan-kenar);
  text-decoration: none;
  position: relative;
}

.yan-logo::after {
  content: "";
  position: absolute;
  left: 22%; right: 22%; bottom: -1px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--yan-isik), transparent);
}

.yan-logo .mark {
  width: 70px;
  height: 56px;
  background: var(--yan-logo);
  -webkit-mask: url("logo.png") center / contain no-repeat;
          mask: url("logo.png") center / contain no-repeat;
}

.yan-logo b {
  color: var(--yan-soluk);
  font-size: 9.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  padding-left: 0.22em;
}

/* --- Akordiyon bölümler ---
   Menü büyüdükçe kenar çubuğu uzuyor; bölümler katlanabilir olunca
   kullanıcı ilgilenmediğini kapatıyor ve yeni modül eklemek sorun
   olmaktan çıkıyor. */
.yan-grup { border: 0; }

.yan-grup > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--yan-soluk);
  padding: 14px 9px 7px;
  user-select: none;
}

.yan-grup > summary::-webkit-details-marker { display: none; }
.yan-grup > summary:hover { color: var(--yan-yazi); }

/* Ok CSS'le çiziliyor: yazı tipine ve işletim sistemine göre değişen
   bir karakter yerine her yerde aynı görünen bir üçgen. */
.yan-grup > summary .ok {
  width: 0; height: 0;
  border-left: 4px solid currentColor;
  border-top: 3px solid transparent;
  border-bottom: 3px solid transparent;
  transition: transform .16s ease;
}

.yan-grup[open] > summary .ok { transform: rotate(90deg); }

@media (prefers-reduced-motion: reduce) {
  .yan-grup > summary .ok { transition: none; }
}

.yan-oge {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 9px;
  color: var(--yan-yazi);
  text-decoration: none;
  font-size: 13px;
  /* Düzenleme ekranlarındaki .yan-bag alt çizgisi buraya sızmasın. */
  border: 0;
  position: relative;
  transition: background-color .13s ease, color .13s ease;
}

.yan-oge .nk {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  opacity: .35;
  flex: none;
}

.yan-oge:hover { background: var(--yan-ust); color: var(--yan-parlak); }
.yan-oge:focus-visible { outline: 2px solid var(--yan-parlak); outline-offset: 1px; }

/* Seçili satır: cam gibi bir dolgu, üstünde bir tel kalınlığında ışık
   çizgisi, solda kehribar bir kulp. Kehribar ekrandaki tek sıcak
   renk olduğu için göz doğrudan oraya gidiyor. */
.yan-oge.secili {
  background: var(--yan-secili);
  color: var(--yan-parlak);
  font-weight: 550;
  box-shadow: inset 0 1px 0 var(--yan-isik);
}

.yan-oge.secili::before {
  content: "";
  position: absolute;
  left: -6px; top: 7px; bottom: 7px;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: var(--kehribar);
  box-shadow: 0 0 10px rgba(224, 139, 62, .7);
}

.yan-oge.secili .nk { background: var(--kehribar); opacity: 1; }

/* Bekleyen iş sayısı. ust.php $menu_sayaclari'nı doldurmazsa hiç
   çizilmiyor — boş rozet yer kaplamasın. */
.yan-oge .rk {
  margin-left: auto;
  font-size: 11px;
  background: var(--yan-rozet);
  color: var(--yan-yazi);
  border-radius: 20px;
  padding: 1px 7px;
  font-variant-numeric: tabular-nums;
}

.yan-oge.secili .rk { background: var(--yan-isik); color: var(--yan-parlak); }

/* Bölüm kapalıyken toplamı başlıkta duruyor; açıkken satırların kendi
   rozetleri var, tekrar olmasın. */
.yan-grup > summary .toplam {
  margin-left: auto;
  font-size: 10.5px;
  letter-spacing: 0;
  background: var(--yan-rozet);
  color: var(--yan-yazi);
  border-radius: 20px;
  padding: 0 7px;
  font-variant-numeric: tabular-nums;
}

.yan-grup[open] > summary .toplam { display: none; }

/* --- Görünüm seçici --- */
.yan-gorunum {
  margin-top: auto;
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 10px 9px 8px;
  border-top: 1px solid var(--yan-kenar);
}

.yan-gorunum span {
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--yan-soluk);
  margin-right: auto;
}

.yan-gorunum button {
  width: 18px;
  height: 18px;
  border-radius: 5px;
  padding: 0;
  cursor: pointer;
  border: 1px solid var(--yan-kenar);
}

.yan-gorunum button[data-y="derin"] { background: linear-gradient(160deg, #0a3d78, #041d3a); }
.yan-gorunum button[data-y="gece"]  { background: linear-gradient(160deg, #16243a, #080e18); }
.yan-gorunum button[data-y="kagit"] { background: linear-gradient(160deg, #f6f9fd, #dde6f2); }

.yan-gorunum button[aria-pressed="true"] {
  outline: 2px solid var(--kehribar);
  outline-offset: 1px;
  border-color: transparent;
}

/* --- Kullanıcı kutusu --- */
.yan-kim {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 10px;
  border-radius: 11px;
  background: var(--yan-ust);
  border: 1px solid var(--yan-kenar);
}

.yan-kim .av {
  width: 28px;
  height: 28px;
  flex: none;
  border-radius: 50%;
  background: linear-gradient(140deg, #0f6fce, #b9722f);
  color: #fff;
  display: grid;
  place-items: center;
  font-size: 11px;
  font-weight: 700;
}

.yan-kim > div {
  min-width: 0;
  font-size: 12.5px;
  color: var(--yan-parlak);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.yan-kim small {
  display: block;
  font-size: 11px;
  color: var(--yan-soluk);
}

.yan-kim .cik {
  margin-left: auto;
  flex: none;
  color: var(--yan-soluk);
  text-decoration: none;
  font-size: 15px;
  line-height: 1;
  padding: 3px;
  border-radius: 5px;
}

.yan-kim .cik:hover { color: var(--yan-parlak); background: var(--yan-ust); }

/* -------------------------------------------------------------------
   4. Araç çubuğu

   Eski .ust ve .menu şeritlerinin ikisinin işini tek satırda yapıyor:
   sayfa başlığı, sayfanın kendi araçları, müşavir seçici, kaydet.
   Ekranın üstünden yaklaşık dört satır yüksekliğinde yer kazandı.
   ------------------------------------------------------------------- */

.arac {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.9rem;
  padding: 0.55rem 1.1rem;
  background: var(--yuzey);
  border-bottom: 1px solid var(--cizgi);
  position: sticky;
  top: env(safe-area-inset-top, 0px);
  z-index: 30;
}

.arac h1 {
  margin: 0;
  font-size: 1.02rem;
  font-weight: 650;
  letter-spacing: -0.015em;
  white-space: nowrap;
}

.arac .ust-araclar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.7rem;
  align-items: center;
  flex: 1 1 auto;
  min-width: 0;
}

.arac .musavir-menu { margin-left: auto; }
.arac .menu-kaydet { margin-left: auto; }
.arac .musavir-menu + .menu-kaydet { margin-left: 0; }

/* Eski kabuğun kalıntıları: bu iki şerit artık çizilmiyor. */
body.panel > .ust,
body.panel > .menu { display: none; }

/* Sayfa içi üst şerit artık başlığı tekrar etmiyor. */
body.panel .ust-serit h1 { font-size: 1rem; }

/* -------------------------------------------------------------------
   5. İçerik alanı
   ------------------------------------------------------------------- */

/* main bir ızgara hücresi. Eski kuraldaki margin:0 auto tek başına
   kaldığında hücreyi germiyor, içeriğe göre daralıyordu (geniş
   ekranda ızgara sola sıkışıyordu). width:100% ile hücreyi dolduruyor,
   max-width'i olan sayfalar yine ortalanıyor. */
body.panel > main {
  width: 100%;
  margin-inline: auto;
  padding: 1.1rem 1.25rem 3rem;
}
body.panel > main.tam { padding: 0.9rem 1.1rem 2rem; }

.perde {
  position: fixed;
  inset: 0;
  z-index: 50;
  background: rgba(8, 20, 34, .45);
  opacity: 0;
  transition: opacity .22s ease;
}

.perde.acik { opacity: 1; }

.menu-dug { display: none; }

/* -------------------------------------------------------------------
   6. Ortak bileşen tazeleme

   Bunlar bütün ekranlarda kullanılıyor; köşeleri ve kenarlıkları tek
   yerden yumuşatmak on sekiz sayfayı birden toparlıyor.
   ------------------------------------------------------------------- */

.kutu {
  border-radius: var(--kose);
  box-shadow: var(--g1);
  border-color: var(--cizgi);
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="date"],
select,
textarea {
  border-radius: var(--kose-s);
}

input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="search"]:focus,
input[type="number"]:focus,
input[type="date"]:focus,
select:focus,
textarea:focus {
  outline: 2px solid var(--lacivert);
  outline-offset: -1px;
  border-color: var(--lacivert);
}

button, .dugme { border-radius: var(--kose-s); }

.rozet { border-radius: 20px; }

/* Menü düğmesi görünümlü öğeler sayfa içinde de kullanılıyor
   (dönem gezinmesi, dışa aktar gibi); onlar kalıyor, yalnız köşeleri
   ve seçili hali yeni palete uyuyor. */
.menu-dugme { border-radius: var(--kose-s); }
.menu-dugme.secili { box-shadow: none; }

.menu-kaydet { border-radius: var(--kose-s); box-shadow: var(--g1); }

.musavir-menu {
  border-radius: var(--kose-s);
  padding: 0.3rem 0.55rem;
  font-size: 0.82rem;
}

.musavir-secici { border-radius: var(--kose-s); overflow: hidden; }

/* Tablo başlığı: sütun adları biraz daha sessiz, gövdeden ayrı. */
table.izgara th,
.kutu table th {
  background: var(--yuzey-2);
}

/* -------------------------------------------------------------------
   7. Dar ekran

   Menü akıştan çıkıp soldan açılan bir çekmeceye dönüşüyor; akordiyon
   bölümler olduğu gibi kalıyor. Eskisi gibi yatay bir şeride
   dönüşseydi bölüm başlıkları gizlenirdi ve menü büyüdükçe daha da
   kullanılmaz hale gelirdi.
   ------------------------------------------------------------------- */

@media (max-width: 60rem) {
  body.panel {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto 1fr;
  }

  body.panel > .arac { grid-column: 1; grid-row: 1; }
  body.panel > main  { grid-column: 1; grid-row: 2; }

  body.panel > .yan {
    position: fixed;
    top: 0; bottom: 0; left: 0;
    width: 268px;
    max-width: 86vw;
    height: auto;
    /* align-self: stretch ŞART. Temel .yan kuralında align-self: start
       var; konumlandırılmış bir kutuda top ve bottom birlikte verilip
       height: auto kalınca yüksekliği hizalama özelliği belirliyor ve
       start, çekmeceyi içeriği kadar kısa bırakıyor — menü ekranın
       ortasında bitiyor. stretch, üstten alta uzamasını sağlıyor. */
    align-self: stretch;
    z-index: 60;
    transform: translateX(-100%);
    transition: transform .22s ease;
    padding-top: env(safe-area-inset-top, 0px);
    box-shadow: var(--g3);
  }

  body.panel > .yan.acik { transform: none; }

  @media (prefers-reduced-motion: reduce) {
    body.panel > .yan { transition: none; }
  }

  .menu-dug {
    display: inline-flex;
    align-items: center;
    /* width: auto — panelin temel button kuralı width:100% veriyor,
       olmazsa hamburger araç çubuğunun tamamını kaplıyor. */
    width: auto;
    gap: 0.5rem;
    border: 1px solid var(--cizgi);
    background: var(--yuzey-2);
    border-radius: var(--kose-s);
    padding: 0.35rem 0.5rem;
    cursor: pointer;
    color: var(--murekkep);
    flex: none;
  }

  .menu-dug .cizgi {
    width: 0.95rem;
    height: 0.62rem;
    position: relative;
    display: block;
    border-top: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
  }

  .menu-dug .cizgi::after {
    content: "";
    position: absolute;
    left: 0; right: 0; top: 0.2rem;
    border-top: 2px solid currentColor;
  }

  .menu-dug .mark {
    width: 1.5rem;
    height: 1.2rem;
    background: var(--lacivert);
    -webkit-mask: url("logo.png") center / contain no-repeat;
            mask: url("logo.png") center / contain no-repeat;
  }

  .arac { padding: 0.45rem 0.8rem; gap: 0.4rem 0.6rem; }
  .arac h1 { font-size: 0.95rem; }
  .arac .musavir-menu, .arac .menu-kaydet { margin-left: 0; }

  body.panel > main { padding: 0.9rem 0.8rem 2.5rem; }
  body.panel > main.tam { padding: 0.7rem 0.7rem 2rem; }
}

/* -------------------------------------------------------------------
   Kurulum uyarısı

   Yalnız yöneticiye ve yalnız yazı tipi gerçekten yüklenememişse
   çıkıyor (bkz. tema.js). Doğru kurulumda hiç çizilmiyor.
   ------------------------------------------------------------------- */
.yt-uyari {
  position: fixed;
  left: 50%;
  bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
  transform: translateX(-50%);
  z-index: 70;
  max-width: min(46rem, calc(100vw - 2rem));
  display: flex;
  align-items: flex-start;
  gap: 0.9rem;
  padding: 0.7rem 0.9rem;
  border-radius: var(--kose);
  border: 1px solid color-mix(in srgb, var(--uyari) 35%, transparent);
  background: #fff6f5;
  color: #7a2318;
  font-size: 0.84rem;
  line-height: 1.5;
  box-shadow: var(--g2);
}

.yt-uyari > span { flex: 1 1 auto; min-width: 0; }

.yt-uyari code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.95em;
  background: rgba(122, 35, 24, .08);
  border-radius: 4px;
  padding: 0 0.25em;
}

.yt-uyari button {
  flex: none;
  margin-left: auto;
  width: auto;
  padding: 0.25rem 0.7rem;
  font-size: 0.8rem;
  background: var(--uyari);
  border-color: var(--uyari);
  color: #fff;
}

/* ===================================================================
   Faz 28b — Beyanname ekranı
   =================================================================== */

/* -------------------------------------------------------------------
   Durum şeridi

   Izgaranın üstünde, seçili sütunun durum dökümü. Her çip aynı zamanda
   bir süzgeç kısayolu: eskiden aynı işi yapmak için sütun başlığındaki
   süzgeç kutusunu açıp kutucuk işaretlemek gerekiyordu.

   Renk noktası hücrelerdeki durum renklerinin aynısı (.d-* sınıfları),
   böylece çiple ızgara arasındaki bağ göz kararı kuruluyor.
   ------------------------------------------------------------------- */

.durum-serit {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 0.7rem;
  padding: 0.5rem 0.65rem;
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  box-shadow: var(--g1);
}

.durum-serit .serit-sutun,
.durum-serit .serit-ad {
  flex: none;
  width: auto;
  margin: 0;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--murekkep);
}

.durum-serit .serit-sutun {
  padding: 0.28rem 0.5rem;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey-2);
  font-family: inherit;
}

.durum-serit .serit-sutun:hover { border-color: var(--lacivert); }

.serit-cipler {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
  min-width: 0;
}

.serit-cip {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.24rem 0.6rem;
  border: 1px solid var(--cizgi);
  border-radius: 20px;
  background: var(--yuzey);
  color: var(--ikincil);
  text-decoration: none;
  font-size: 0.8rem;
  white-space: nowrap;
  line-height: 1.5;
}

.serit-cip b {
  font-weight: 650;
  color: var(--murekkep);
  font-variant-numeric: tabular-nums;
}

.serit-cip:hover { border-color: var(--lacivert); color: var(--murekkep); }

/* Seçili çip: dolgu değil çerçeve. Dolu maviye boyansaydı içindeki
   durum renkleriyle çakışırdı. */
.serit-cip.secili {
  border-color: var(--lacivert);
  background: var(--mavi-a);
  color: var(--murekkep);
  font-weight: 550;
}

.serit-cip.secili b { color: var(--lacivert); }

.serit-cip.tumu { color: var(--soluk); }
.serit-cip.tumu.secili { color: var(--murekkep); }

/* Durum rengi noktası. Süzgeç kutusundaki kutucukla AYNI sınıfı
   kullanıyor (.suzgec-renk) — renk tablosu tek yerde kalsın, biri
   değişince ikisi birden değişsin. Burada yalnız biçimi yuvarlatılıyor.

   Not: .d-kismi'nin kutucuk rengi eksikti; Bildirim sütununun süzgeç
   kutusunda da saydam görünüyordu. Hücre rengiyle aynı tona alındı. */
.suzgec-renk.d-kismi { background: #f7d9a8; }

.serit-cip .suzgec-renk {
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 50%;
  vertical-align: baseline;
  border-color: rgba(0, 0, 0, .12);
}

/* -------------------------------------------------------------------
   Izgara yüksekliği — sayıyla değil, artan yerle

   Eski yöntem calc(100dvh - N rem) idi: üstteki şeritlerin yüksekliği
   elle tahmin ediliyordu ve her yeni şeritte o sayı yeniden ayarlanmak
   zorundaydı. Durum şeridi bir ya da iki satır sarabildiği için tahmin
   tutmuyor.

   Bunun yerine main dikey bir flex kutusu: üstteki her şey kendi
   yerini alıyor, ızgara geri kalanı dolduruyor. Kaç şerit olduğunun,
   çiplerin kaç satır sardığının önemi kalmıyor.

   Yalnız .izgara-ekran taşıyan sayfalarda geçerli; diğer main.tam
   ekranları eski davranışını sürdürüyor. */
/* Gövdenin yüksekliği KESİN olmalı.

   İlk denememde body'de min-height: 100vh vardı ve ızgara satırı
   içeriğe göre uzuyordu: 132 mükellefte ızgara 3861 piksele çıkıp
   sayfayı kaydırıyor, kendi iç kaydırmasını ve yapışkan başlık
   satırını kaybediyordu. Sekiz satırlık denemede görünmedi, gerçek
   veriyle ölçünce çıktı.

   height ile satır kesinleşiyor, main'e sınırlı bir yükseklik düşüyor
   ve ızgara artan yeri doldurup içeride kayıyor.

   Yalnız kendini ızgara sayfası ilan eden sayfalarda geçerli: uzun
   form sayfalarının normal sayfa kaydırması bozulmasın. */
body.panel.izgara-sayfa {
  height: 100vh;
  overflow: hidden;
}

body.panel > main.izgara-ekran {
  display: flex;
  flex-direction: column;
  /* min-height: 0 — flex çocuğunun içeriğinden küçülebilmesi için
     şart; olmazsa ızgara yine içeriği kadar uzuyor. */
  min-height: 0;
  overflow: hidden;
}

/* Izgaranın formu düzenden çekiliyor ki .izgara-sar doğrudan main'in
   esnek çocuğu olsun ve artan yeri kaplasın.

   .toplu-form HARİÇ (faz32z): makbuz ekranında ızgaranın üstünde iki
   form daha var — ay/kesim şeridi ve yazdırma şeridi. display:contents
   onların da kutusunu kaldırınca içlerindeki etiket, açılır menü ve
   düğme main'in ayrı ayrı çocukları oluyor, her biri tam genişlikte
   alt alta diziliyordu. O formların kendi kutusu duruyor. */
body.panel > main.izgara-ekran > form:not(.toplu-form) { display: contents; }

body.panel > main.izgara-ekran .izgara-sar {
  flex: 1 1 auto;
  min-height: 14rem;
  max-height: none;
}

/* faz28f — Tahakkuk'ta iki ızgara aynı anda görünebiliyor: üstte
   arızi ödemeler listesi, altta asıl tahakkuk ızgarası. İkisi de
   artan yeri paylaşırsa ikisi de yarım kalıyor.

   Çözüm ters kuruldu: asıl ızgarayı işaretlemek yerine YAN olanı
   işaretledik. Böylece :has() gerekmiyor — onu desteklemeyen bir
   tarayıcıda kural tümden düşer ve iki ızgara yine yeri paylaşırdı.
   Bu haliyle her tarayıcıda çalışıyor, hatta kural hiç uygulanmasa
   bile sonuç bugünküne eşit. */
body.panel > main.izgara-ekran .izgara-sar.yan-izgara {
  flex: none;
  max-height: 18rem;
}

@media (max-width: 60rem) {
  .durum-serit { gap: 0.5rem; padding: 0.45rem 0.55rem; }
  .serit-cipler { gap: 0.3rem; }
  .serit-cip { font-size: 0.76rem; padding: 0.2rem 0.5rem; }
}

/* Izgara artık bir kart: yuvarlak köşe, tek bir kenarlık, hafif gölge.
   Sayfadaki diğer kutularla (durum şeridi, .kutu) aynı dili konuşuyor.
   overflow zaten auto olduğu için köşeler içeriği de kırpıyor. */
body.panel > main.izgara-ekran .izgara-sar {
  border-radius: var(--kose);
  box-shadow: var(--g1);
}

/* ===================================================================
   Faz 28c — KDV Kontrol
   =================================================================== */

/* KDV ekranındaki çipler renk noktası yerine rozet taşıyor: durum
   adları orada zaten rozetle yazılıyor ("Deftere işlenmemiş",
   "Tutar farklı"), aynı dili konuşsunlar. Rozet çipin içinde
   küçülüyor. */
.serit-cip .rozet {
  font-size: 0.75rem;
  padding: 0.05rem 0.45rem;
  line-height: 1.45;
}

/* Bağlantı olmayan çip (özet ekranı: o tabloda duruma göre süzgeç
   yok) tıklanabilir görünmesin. */
span.serit-cip { cursor: default; }
span.serit-cip:hover { border-color: var(--cizgi); }

/* KDV ızgarası da beyanname ızgarası gibi artan yeri doldursun. */
body.panel > main.izgara-ekran .kdv-sar { max-height: none; }

/* ===================================================================
   Faz 28d — Tahakkuk, Bildirim, Ödemeler
   =================================================================== */

/* Ödeme durumlarının kutucuk renkleri. Hücre renkleri td.odeme-hucre
   üzerinden geliyordu ve kutucuk için karşılığı yoktu; şerit için
   burada tanımlanıyor, hücredekiyle aynı tonlar. */
.suzgec-renk.o-bekliyor   { background: var(--yuzey); }
.suzgec-renk.o-odendi     { background: #c5ecc9; }
.suzgec-renk.o-kendisi    { background: #d7e6f7; }
.suzgec-renk.o-odemeyecek { background: #ececed; }

/* Tahakkuk ızgarası da artan yeri doldursun. */
body.panel > main.izgara-ekran .izgara-sar { min-height: 12rem; }

/* ===================================================================
   Faz 28e — EDM Fatura
   =================================================================== */

/* Fatura notu. Kapalıyken tek satır, taşarsa üç nokta — satır
   yüksekliği notun uzunluğuna göre oynamasın. */
.edm-not { margin-top: 0.15rem; }

.edm-not > summary {
  cursor: pointer;
  color: var(--soluk);
  font-size: 0.78rem;
  list-style: none;
  max-width: 24rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.edm-not > summary::-webkit-details-marker { display: none; }

/* Açılabileceği belli olsun: solda küçük bir üçgen. */
.edm-not > summary::before {
  content: "";
  display: inline-block;
  width: 0; height: 0;
  margin-right: 0.35rem;
  border-left: 4px solid currentColor;
  border-top: 3px solid transparent;
  border-bottom: 3px solid transparent;
  vertical-align: 1px;
}

.edm-not[open] > summary { white-space: normal; color: var(--ikincil); }
.edm-not[open] > summary::before { transform: rotate(90deg); }

.edm-not p {
  margin: 0.3rem 0 0;
  font-size: 0.78rem;
  max-width: 28rem;
}

/* Kalıp satırlar: Mersis, IBAN, sicil, mevzuat cümlesi. Duruyorlar ama
   göz onlara takılmasın. */
.edm-not p.kalip {
  font-size: 0.72rem;
  line-height: 1.45;
  padding-top: 0.25rem;
  border-top: 1px dashed var(--cizgi);
}

/* ===================================================================
   Faz 28g — geniş tablolarda menü kendiliğinden çekiliyor
   =================================================================== */

/* Beyanname, KDV Kontrol, Tahakkuk gibi ekranlarda tablo zaten yatay
   kaydırıyor; sol menünün kalıcı olarak 222 piksel yemesi anlamsız.
   Bu sayfalarda menü GENİŞ EKRANDA DA çekmeceye dönüşüyor: kapalı
   başlıyor, üstteki hamburgerle açılıyor, bağlantıya basınca ya da
   perdeye dokununca kapanıyor.

   Kural dar ekran bloğundakinin aynısı, sadece medya sorgusu yok —
   bu sayfalarda her genişlikte geçerli. Bilerek çoğaltıldı: tek bir
   sınıfa indirip JavaScript'le eklemek, betik yüklenmediğinde dar
   ekranda menünün içeriği kapatmasına yol açardı.

   Menüyü kalıcı istemek isteyen kullanıcı için kenar çubuğundaki
   raptiye var; seçim tarayıcıda saklanıyor (aşağıda). */

body.panel.izgara-sayfa {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto 1fr;
}

body.panel.izgara-sayfa > .arac { grid-column: 1; grid-row: 1; }
body.panel.izgara-sayfa > main  { grid-column: 1; grid-row: 2; }

body.panel.izgara-sayfa > .yan {
  position: fixed;
  top: 0; bottom: 0; left: 0;
  width: 268px;
  max-width: 86vw;
  height: auto;
  /* Dar ekran bloğundaki notun aynısı: align-self olmadan çekmece
     içeriği kadar kısa kalıyor. */
  align-self: stretch;
  z-index: 60;
  transform: translateX(-100%);
  transition: transform .22s ease;
  padding-top: env(safe-area-inset-top, 0px);
  box-shadow: var(--g3);
}

body.panel.izgara-sayfa > .yan.acik { transform: none; }

@media (prefers-reduced-motion: reduce) {
  body.panel.izgara-sayfa > .yan { transition: none; }
}

body.panel .menu-dug {
  display: inline-flex;
  align-items: center;
  width: auto;          /* bkz. dar ekran bloğundaki aynı not */
  gap: 0.5rem;
  border: 1px solid var(--cizgi);
  background: var(--yuzey-2);
  border-radius: var(--kose-s);
  padding: 0.35rem 0.5rem;
  cursor: pointer;
  color: var(--murekkep);
  flex: none;
}

body.panel .menu-dug .cizgi {
  width: 0.95rem;
  height: 0.62rem;
  position: relative;
  display: block;
  border-top: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
}

body.panel .menu-dug .cizgi::after {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0.2rem;
  border-top: 2px solid currentColor;
}

body.panel .menu-dug .mark {
  width: 1.5rem;
  height: 1.2rem;
  background: var(--lacivert);
  -webkit-mask: url("logo.png") center / contain no-repeat;
          mask: url("logo.png") center / contain no-repeat;
}

/* -------------------------------------------------------------------
   Raptiye — menüyü açık tutma

   Kullanıcı menüyü sürekli açık isterse raptiyeye basıyor; geniş
   ekranda menü yine sabit sütun oluyor. Tercih tarayıcıda saklanıyor
   ve <html data-menu="sabit"> olarak sayfa çizilmeden uygulanıyor —
   açılışta menünün bir görünüp kaybolması olmasın diye.

   Dar ekranda raptiye çalışmıyor: orada menü zaten içeriğin üstünü
   kapatacağı için sabitlemek doğru değil.
   ------------------------------------------------------------------- */

@media (min-width: 60.0625rem) {
  :root[data-menu="sabit"] body.panel.izgara-sayfa {
    grid-template-columns: var(--yan-g) minmax(0, 1fr);
  }

  :root[data-menu="sabit"] body.panel.izgara-sayfa > .arac,
  :root[data-menu="sabit"] body.panel.izgara-sayfa > main { grid-column: 2; }

  :root[data-menu="sabit"] body.panel.izgara-sayfa > .yan {
    position: sticky;
    top: 0;
    height: 100vh;
    width: auto;
    max-width: none;
    transform: none;
    box-shadow: none;
    grid-column: 1;
    grid-row: 1 / -1;
  }

  :root[data-menu="sabit"] body.panel .menu-dug { display: none; }
}

.yan-raptiye {
  position: absolute;
  top: 0.5rem;
  right: 0.35rem;
  width: 1.5rem;
  height: 1.5rem;
  padding: 0;
  display: grid;
  place-items: center;
  border: 0;
  background: none;
  color: var(--yan-soluk);
  cursor: pointer;
  border-radius: 6px;
  font-size: 0.8rem;
  line-height: 1;
}

.yan-raptiye:hover { color: var(--yan-parlak); background: var(--yan-ust); }
.yan-raptiye[aria-pressed="true"] { color: var(--kehribar); }

/* Raptiye yalnız çekmece moduna girebilen sayfalarda ve yalnız geniş
   ekranda anlamlı. */
.yan-raptiye { display: none; }

@media (min-width: 60.0625rem) {
  body.panel.izgara-sayfa .yan-raptiye { display: grid; }
}

/* ===================================================================
   Faz 28h — sütun göster/gizle ve sayfaya sığan ızgara
   =================================================================== */

.sutun-serit {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 0.7rem;
  padding: 0.45rem 0.65rem;
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  box-shadow: var(--g1);
}

.sutun-serit .serit-ad {
  flex: none;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--murekkep);
}

.sutun-cip {
  display: inline-flex;
  align-items: center;
  padding: 0.22rem 0.65rem;
  border: 1px solid var(--lacivert);
  border-radius: 20px;
  background: var(--lacivert);
  color: #fff;
  text-decoration: none;
  font-size: 0.79rem;
  font-weight: 550;
  white-space: nowrap;
  line-height: 1.5;
}

.sutun-cip:hover { filter: brightness(1.12); }

/* Gizli sütun: renk TEK BAŞINA anlam taşımasın diye üstü de çizili.
   Renk körlüğünde ya da tek renkli çıktıda da hangisinin kapalı
   olduğu okunuyor. */
.sutun-cip.kapali {
  background: var(--yuzey);
  border-color: var(--cizgi);
  color: var(--soluk);
  font-weight: 400;
  text-decoration: line-through;
  text-decoration-thickness: 1px;
}

.sutun-cip.kapali:hover { border-color: var(--lacivert); color: var(--murekkep); }

.sutun-cip.hepsi {
  background: none;
  border-style: dashed;
  border-color: var(--soluk);
  color: var(--ikincil);
  font-weight: 400;
  text-decoration: none;
}

.sutun-uyari {
  font-size: 0.78rem;
  color: var(--uyari);
  margin-left: auto;
}

.sutun-uyari a { color: var(--uyari); }

/* -------------------------------------------------------------------
   Izgara sayfaya sığıyor

   Tablo eskiden içeriği kadar genişleyip yatay kayıyordu. Sütun
   gizleme eklenince asıl kazanç ortaya çıkmıyordu: iki sütunu
   gizlesen de tablo aynı genişlikte kalıp yine kayıyordu.

   table-layout: fixed ile sütunlar artan yeri paylaşıyor — sütun
   gizledikçe kalanlar genişliyor, yatay kaydırma kalkıyor.

   Mükellef sütununa sabit bir genişlik veriliyor (ünvanlar uzun),
   kalanlar eşit bölüşüyor.
   ------------------------------------------------------------------- */

body.panel > main.izgara-ekran table.izgara {
  width: 100%;
  table-layout: fixed;
}

body.panel > main.izgara-ekran table.izgara th.sabit-sutun,
body.panel > main.izgara-ekran table.izgara td.sabit-sutun {
  width: 22rem;
}

/* Dar pencerede mükellef sütunu da küçülsün, yoksa durum sütunlarına
   yer kalmıyor. */
@media (max-width: 75rem) {
  body.panel > main.izgara-ekran table.izgara th.sabit-sutun,
  body.panel > main.izgara-ekran table.izgara td.sabit-sutun {
    width: 16rem;
  }
}

/* Hücre içeriği taşmasın: durum adları uzun ("BEYANNAME GÖNDERİLDİ"),
   sütun daraldığında kesiliyor ve tamamı title'da duruyor. */
body.panel > main.izgara-ekran td.hucre .hucre-secim {
  max-width: 100%;
}

body.panel > main.izgara-ekran th.tur-basligi > .sutun-suzgec > summary {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ===================================================================
   Faz 28i — ızgara hücreleri maketteki gibi

   Eski görünümde hücrenin tamamı durum rengiyle doluydu. Maket bunu
   beyaz satır + küçük renk noktası + düz yazıya çeviriyor: ekran çok
   daha sakin, mükellef adları ve rakamlar öne çıkıyor.

   Eski hâli KALDIRILMADI. Dolu renk bir işe yarıyordu: 132 satırda
   gözle "hangi hücre kırmızı" taraması yapmayı kolaylaştırıyor.
   Noktayla o tarama zayıflıyor. Kim hangisinde hızlıysa onu seçsin
   diye ikisi de duruyor; seçim tarayıcıda saklanıyor ve sayfa
   çizilmeden uygulanıyor.

     varsayılan            -> sade (maket)
     data-hucre="renkli"   -> eski dolu renkli hücreler
   =================================================================== */

/* --- Sade hücre --- */

/* Hücrenin dikey hizası: ızgarada hücreler vertical-align:top
   alıyordu (mükellef sütunundaki iki satırlık ad için doğru), ama
   durum hücresinde açılır liste 28 piksel, hücre ise mükellef adı
   yüzünden 42 piksel — yazı yukarıda kalıp ortadaki noktayla 6,5
   piksel kayıyordu.

   Açılır liste artık hücreyi dolduruyor: yazı da nokta da hücrenin
   ortasında, üstelik tıklama alanı hücrenin tamamı oldu.

   Not: bu hizalama RENKLİ görünümde de geçerli — orada da yazı
   yukarıda duruyordu, dolu renk sakladığı için göze çarpmıyordu. */
table.izgara td.hucre { vertical-align: middle; }
table.izgara td.hucre .hucre-secim { height: 100%; }

:root:not([data-hucre="renkli"]) table.izgara td.hucre {
  position: relative;
  background: var(--yuzey);
  color: var(--murekkep);
}

/* Nokta hücrenin solunda; yazı ona yer açsın diye sola hizalı ve
   içeriden boşluklu. */
:root:not([data-hucre="renkli"]) table.izgara td.hucre::before {
  content: "";
  position: absolute;
  left: 0.6rem;
  top: 50%;
  transform: translateY(-50%);
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: var(--nk, transparent);
  border: 1px solid var(--nk-kenar, rgba(0, 0, 0, .18));
}

:root:not([data-hucre="renkli"]) table.izgara td.hucre .hucre-secim {
  color: var(--murekkep);
  text-align: left;
  text-align-last: left;
  padding-left: 1.5rem;
}

/* Kapalı hücre (—): sorumluluk yok. Noktası da boş. */
:root:not([data-hucre="renkli"]) table.izgara td.hucre.kapali {
  background: var(--yuzey-2);
  color: var(--soluk);
  text-align: left;
  padding-left: 1.5rem;
}

/* Durum noktalarının renkleri — süzgeç kutucuklarıyla aynı tonlar. */
:root:not([data-hucre="renkli"]) td.hucre.d-sistem           { --nk: #7030a0; }
:root:not([data-hucre="renkli"]) td.hucre.d-aktarildi        { --nk: #ffff33; }
:root:not([data-hucre="renkli"]) td.hucre.d-bos-evrak        { --nk: #a6a6a6; }
:root:not([data-hucre="renkli"]) td.hucre.d-hazir            { --nk: #d9d9d9; }
:root:not([data-hucre="renkli"]) td.hucre.d-geldi            { --nk: #e5b8b8; }
:root:not([data-hucre="renkli"]) td.hucre.d-dizildi          { --nk: #f2ab48; }
:root:not([data-hucre="renkli"]) td.hucre.d-islendi          { --nk: #ee2f22; }
:root:not([data-hucre="renkli"]) td.hucre.d-kontrol          { --nk: #6a92d4; }
:root:not([data-hucre="renkli"]) td.hucre.d-onay             { --nk: #17693a; }
:root:not([data-hucre="renkli"]) td.hucre.d-kalfa            { --nk: #47ad55; }
:root:not([data-hucre="renkli"]) td.hucre.d-bordro           { --nk: #9ed7f5; }
:root:not([data-hucre="renkli"]) td.hucre.d-odeme-bekliyor   { --nk: #ee2f22; }
:root:not([data-hucre="renkli"]) td.hucre.d-mizan            { --nk: #8a5a1e; }
:root:not([data-hucre="renkli"]) td.hucre.d-sistemde         { --nk: #ffff33; }
:root:not([data-hucre="renkli"]) td.hucre.d-kdv2-var         { --nk: #8b2f38; }
:root:not([data-hucre="renkli"]) td.hucre.d-kdv2-odeme       { --nk: #8b2f38; }
:root:not([data-hucre="renkli"]) td.hucre.d-gonderildi       { --nk: #17693a; }
:root:not([data-hucre="renkli"]) td.hucre.d-beyan-gonderildi { --nk: #c55a11; }
:root:not([data-hucre="renkli"]) td.hucre.d-kismi            { --nk: #f2ab48; }
:root:not([data-hucre="renkli"]) td.hucre.d-mahsup           { --nk: #ddd0f5; }

/* İki boş hâl: nokta içi boş, yalnız çerçevesi var. */
:root:not([data-hucre="renkli"]) td.hucre.d-bos,
:root:not([data-hucre="renkli"]) td.hucre.kapali,
:root:not([data-hucre="renkli"]) td.hucre.d-kapali-acik {
  --nk: transparent;
  --nk-kenar: var(--cizgi);
}

/* Satır ayırıcıları inceldi: dolu renk kalkınca kalın çizgiler
   gereksiz yere gürültü yapıyordu. Dikey çizgiler de sadece
   sütunları ayıracak kadar. */
:root:not([data-hucre="renkli"]) table.izgara td,
:root:not([data-hucre="renkli"]) table.izgara th {
  border-color: var(--cizgi-2);
}

:root:not([data-hucre="renkli"]) table.izgara tbody tr:hover td {
  background: var(--yuzey-2);
}

:root:not([data-hucre="renkli"]) table.izgara tbody tr:hover td.hucre.kapali {
  background: var(--yuzey-2);
}

/* KDV 2 önerisi işareti dolu renkte hücre kenarından okunuyordu;
   sade görünümde nokta kehribar oluyor. */
:root:not([data-hucre="renkli"]) td.hucre.d-kdv2-oneri { --nk: var(--kehribar); }

/* --- Hücre görünümü seçici --- */

.hucre-secici {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin-left: auto;
}

.hucre-secici span {
  font-size: 0.75rem;
  color: var(--soluk);
}

.hucre-secici button {
  width: auto;
  padding: 0.18rem 0.6rem;
  font-size: 0.75rem;
  border-radius: 20px;
  border: 1px solid var(--cizgi);
  background: var(--yuzey);
  color: var(--ikincil);
  cursor: pointer;
}

.hucre-secici button[aria-pressed="true"] {
  border-color: var(--lacivert);
  background: var(--mavi-a);
  color: var(--murekkep);
  font-weight: 550;
}

/* ===================================================================
   Faz 28k — tasarım dili denetimi

   Yeni kabuk on sekiz sayfaya birden geldi ama sayfaların İÇİ eski
   dilde kalmıştı: satırın tamamını kaplayan doygun zeminler, tablo
   hücrelerinde onlarca dolu mavi düğme, eski paletten kalma hover
   renkleri, köşesiz kutular.

   Bu bölüm onları tek yerden topluyor. Sayfaların HTML'ine yine
   dokunulmadı — kural olarak eski sınıf adlarının üstüne yazıyor.
   =================================================================== */

/* -------------------------------------------------------------------
   1. Ölü palet

   Panel eski lacivertten (#23215c) logonun mavisine (#0153a7) döndü
   ama üç hover rengi eski aileden kalmıştı: düğmeye basılı tutunca
   mavi mora atlıyordu. Sabit renk yerine kendi rengini koyulaştırıyor.
   ------------------------------------------------------------------- */
button:hover { background: var(--lacivert); filter: brightness(1.12); }
button:active { filter: brightness(0.94); }
.menu-kaydet:hover { background: var(--lacivert); filter: brightness(1.12); }
button.tehlike:hover { background: var(--uyari); filter: brightness(1.12); }

/* Satır vurgusu sıcak kremdi (#fbfbf8), paletin geri kalanı soğuk. */
tbody tr:hover { background: var(--yuzey-2); }
.tablo-sar tbody tr:hover { background: var(--yuzey-2); }

/* -------------------------------------------------------------------
   2. Tablo içindeki küçük düğmeler

   Temel button kuralı dolu mavi. Sayfa başlığındaki tek bir "Kaydet"
   için doğru; ama Kullanıcılar ekranında her satırda, KDV Kontrol'de
   her evrakta bir tane var — ekran mavi lekeyle doluyordu.

   Bunlar ikincil eylem: sade çerçeve, üstüne gelince maviye dönüyor.
   Formun asıl düğmesi (Süz, Ara, Ekle, Kaydet) dolu kalıyor.
   ------------------------------------------------------------------- */
.kucuk-dugme,
.kd-dugme,
.sz-bag,
.kd-kapat {
  background: var(--yuzey);
  color: var(--ikincil);
  border: 1px solid var(--cizgi);
  font-weight: 500;
  box-shadow: none;
}

.kucuk-dugme:hover,
.kd-dugme:hover,
.sz-bag:hover,
.kd-kapat:hover {
  background: var(--mavi-a);
  border-color: var(--lacivert);
  color: var(--murekkep);
  filter: none;
}

.kd-dugme.kd-geri { color: var(--soluk); }

/* -------------------------------------------------------------------
   3. Satır ve hücre dolguları

   Faz 28i ızgara hücrelerini "beyaz satır + küçük renk noktası"na
   çevirdi ve seçimi kullanıcıya bıraktı (Sade / Renkli). O iş yalnız
   beyanname ızgarasına uygulanmıştı; aynı dolu renkler E-Defter,
   Kalfa, Ödemeler, Yükümlülükler, Tahakkuk ve KDV Kontrol'de duruyordu.

   Hepsi aynı anahtara bağlandı: SADE'de ince bir renk şeridi, RENKLİ'de
   eski dolu hâli. Renk kodlarına dokunulmadı — yalnız ne kadar yer
   kapladıkları değişti.
   ------------------------------------------------------------------- */

/* Sade: dolu zemin yerine hücrenin solunda 3 piksellik renk şeridi. */
:root:not([data-hucre="renkli"]) td.durum-hucre,
:root:not([data-hucre="renkli"]) td.odeme-hucre,
:root:not([data-hucre="renkli"]) td.yuk-hucre,
:root:not([data-hucre="renkli"]) td.hucre.ed-mizan,
:root:not([data-hucre="renkli"]) td.hucre.ed-kontrol,
:root:not([data-hucre="renkli"]) td.hucre.ed-gonderildi {
  background: var(--yuzey);
  box-shadow: inset 3px 0 0 var(--nk, transparent);
}

:root:not([data-hucre="renkli"]) td.durum-hucre.e-yok        { --nk: #b9b9c2; }
:root:not([data-hucre="renkli"]) td.durum-hucre.e-yuklendi   { --nk: #17693a; }
:root:not([data-hucre="renkli"]) td.durum-hucre.e-eski       { --nk: #b8860b; }
:root:not([data-hucre="renkli"]) td.odeme-hucre.o-odendi     { --nk: #17693a; }
:root:not([data-hucre="renkli"]) td.odeme-hucre.o-kendisi    { --nk: #6a92d4; }
:root:not([data-hucre="renkli"]) td.odeme-hucre.o-odemeyecek { --nk: #b9b9c2; }
:root:not([data-hucre="renkli"]) td.yuk-hucre.isaretli       { --nk: #17693a; }
:root:not([data-hucre="renkli"]) td.hucre.ed-mizan           { --nk: #b8860b; }
:root:not([data-hucre="renkli"]) td.hucre.ed-kontrol         { --nk: #6a92d4; }
:root:not([data-hucre="renkli"]) td.hucre.ed-gonderildi      { --nk: #17693a; }

/* Tahakkuk: ödenmiş kalem kilitli — dolu yeşil yerine sessiz zemin. */
:root:not([data-hucre="renkli"]) td.tutar-hucre.odenmis {
  background: var(--yuzey-2);
  box-shadow: inset 3px 0 0 #17693a;
}

/* KDV Kontrol satır durumları. Beş ayrı doygun satır zemini vardı;
   sade hâlde ilk hücrenin solunda şerit kalıyor, satır beyaz. */
:root:not([data-hucre="renkli"]) tr.kd-satir-tamam   > td,
:root:not([data-hucre="renkli"]) tr.kd-satir-sorunlu > td,
:root:not([data-hucre="renkli"]) tr.kd-satir-numara  > td,
:root:not([data-hucre="renkli"]) tr.kd-satir-fis     > td,
:root:not([data-hucre="renkli"]) tr.kd-satir-sahsi   > td { background: var(--yuzey); }

:root:not([data-hucre="renkli"]) tr.kd-satir-tamam   > td:first-child { box-shadow: inset 3px 0 0 #17693a; }
:root:not([data-hucre="renkli"]) tr.kd-satir-sorunlu > td:first-child { box-shadow: inset 3px 0 0 #b42318; }
:root:not([data-hucre="renkli"]) tr.kd-satir-numara  > td:first-child { box-shadow: inset 3px 0 0 #d9a520; }
:root:not([data-hucre="renkli"]) tr.kd-satir-fis     > td:first-child { box-shadow: inset 3px 0 0 #9a9aa2; }
:root:not([data-hucre="renkli"]) tr.kd-satir-sahsi   > td:first-child { box-shadow: inset 3px 0 0 #7c5cc4; }

/* KDV mizanı: seviye zeminleri ve sorunlu oran satırı. */
:root:not([data-hucre="renkli"]) tr.mz-seviye-0 > td { background: var(--yuzey-2); }
:root:not([data-hucre="renkli"]) tr.mz-seviye-1 > td { background: var(--yuzey); }
:root:not([data-hucre="renkli"]) table.kdv-oran tr.oran-sorunlu > td {
  background: var(--yuzey);
  box-shadow: inset 3px 0 0 #b42318;
}

/* Grup renkleri: mükellef listesinde satırın TAMAMI sarı/pembe/turuncu
   doluyordu. Beyanname ızgarasında aynı renk yalnız mükellef adı
   sütununda duruyor (sabit-sutun.ad-hucre) ve ekran çok daha sakin.
   Liste ekranlarını da ona eşitliyoruz: grup rengi ilk sütunda kalıyor,
   satırın geri kalanı beyaz. */
:root:not([data-hucre="renkli"]) .tablo-sar tbody tr { background: var(--yuzey); }
:root:not([data-hucre="renkli"]) .tablo-sar tbody tr > td:first-child,
:root:not([data-hucre="renkli"]) .tablo-sar tbody tr > th:first-child {
  background: var(--satir, var(--yuzey));
}

/* Pasif kullanıcı satırı ve mükellef sütunu: sıcak kremden çıktı. */
tr.pasif td { background: var(--yuzey-2); }
.mukellef-hucre { background: var(--yuzey-2); }
.birlestir-onizleme td:last-child { background: var(--yuzey-2); }

/* -------------------------------------------------------------------
   4. Eski süzgeç kutusu ve açma anahtarları

   .suzgec köşesiz gri bir kutuydu, .ust-anahtar seçilince dolu renkle
   boyanıyordu. İkisi de yeni şerit diline çekildi: kart görünümlü kap,
   çerçeveli çip.
   ------------------------------------------------------------------- */
.suzgec {
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  box-shadow: var(--g1);
}

.ust-anahtar {
  border-radius: 20px;
  border: 1px solid var(--cizgi);
  background: var(--yuzey);
  color: var(--ikincil);
  font-weight: 500;
}

.ust-anahtar:hover { border-color: var(--lacivert); color: var(--murekkep); background: var(--yuzey); }

/* Seçili çip: dolgu değil çerçeve — faz28b'de konan kural. */
.ust-anahtar.secili,
.ust-anahtar.d-gonderilecek.secili,
.ust-anahtar.yeni.secili {
  background: var(--mavi-a);
  border-color: var(--lacivert);
  color: var(--murekkep);
  font-weight: 600;
}

.ust-anahtar.disa-aktar:hover { background: var(--yuzey-2); }

/* Dönem gezinmesi */
.donem-dugme.yok { color: var(--soluk); }
.donem-dugme.ac:hover { background: var(--mavi-a); }

/* Menü düğmesi görünümündeki öğelerin sabit kurum renkleri kalktı:
   menü sol kenara taşındığında anlamlarını yitirmişlerdi. */
.menu-dugme.secili,
.menu-dugme.m-kalfa.secili,
.menu-dugme.m-ayar.secili,
.menu-dugme.m-arizi.acik {
  background: var(--mavi-a);
  border-color: var(--lacivert);
  color: var(--murekkep);
}

/* -------------------------------------------------------------------
   5. Mesajlar ve kaydet şeridi
   ------------------------------------------------------------------- */
.mesaj {
  border: 1px solid var(--cizgi);
  border-left-width: 3px;
  border-radius: var(--kose-s);
  box-shadow: var(--g1);
  padding: 0.55rem 0.8rem;
}
.mesaj.hata  { border-left-color: var(--uyari); background: #fdecea; color: #8e1d13; }
.mesaj.iyi   { border-left-color: var(--onay);  background: #e9f5ee; color: #0f5c36; }
.mesaj.bilgi { border-left-color: var(--lacivert); background: var(--mavi-a); color: var(--murekkep); }

.kaydet-serit {
  border-top: 1px solid var(--cizgi);
  background: var(--yuzey);
  border-radius: var(--kose);
  box-shadow: var(--g1);
}

/* KDV 2 uyarısı: dolu bordo bloktu, ekranın en gürültülü parçasıydı. */
.kd-kdv2-uyari {
  background: #fdecea;
  color: #8e1d13;
  border-left: 3px solid #8b2f38;
}
.kd-kdv2-uyari .kd-kdv2-ay { color: #8e1d13; }

/* -------------------------------------------------------------------
   6. Köşe kalıntıları

   Faz 28a bütün alanların köşesini yumuşatmıştı; daha özel yazılmış
   birkaç kural 2 pikselde kalmıştı.
   ------------------------------------------------------------------- */
.kod-kutu,
td.rol-hucre select,
input[type="file"],
textarea { border-radius: var(--kose-s); }

/* -------------------------------------------------------------------
   7. KDV Kontrol ızgarası — taşma

   Bu tablo table-layout:auto ve width:max-content ile yazılmıştı:
   sütunlar içeriğe göre genişler, sığmazsa kap yatay kaydırır.

   Faz 28b ızgara sayfalarına "table-layout: fixed; width: 100%"
   getirdi ve seçicisi daha özel olduğu için bu tabloyu da yakaladı.
   Sabit yerleşimde sütunlar eşit bölünüyor, hücrelerde white-space:
   nowrap olduğu için uzun evrak numaraları komşu sütunun üstüne
   taşıyordu — ekran görüntüsündeki "BRS2026000004938" ile tarihin
   iç içe geçmesi bu.

   Geri alıyoruz ama eskisine değil: width:100% + min-width:max-content.
   Sütunlar sığıyorsa tablo sayfayı dolduruyor, kaydırma çubuğu
   çıkmıyor; sığmıyorsa kap kaydırıyor ve hiçbir hücre kırpılmıyor.
   Sütun şeridinden birkaç sütun kapatınca ilk duruma geçiyor.
   ------------------------------------------------------------------- */
body.panel > main.izgara-ekran table.izgara.kdv-detay {
  table-layout: auto;
  width: 100%;
  min-width: max-content;
}

/* Özet tablosu on sütun; her zaman sığıyor, min-width istemiyor. */
body.panel > main.izgara-ekran table.izgara.kdv-ozet {
  table-layout: auto;
  width: 100%;
}

/* -------------------------------------------------------------------
   8. Sütun şeridi ekleri

   Kilitli sütun: kapatılamaz, tıklanamaz. Önünde bir nokta var ki
   "kapalı" ile karışmasın.
   ------------------------------------------------------------------- */
.sutun-cip.kilit {
  background: var(--yuzey-2);
  border-color: var(--cizgi);
  color: var(--ikincil);
  cursor: default;
  font-weight: 550;
}
.sutun-cip.kilit::before {
  content: "•";
  margin-right: 0.3rem;
  color: var(--soluk);
}

.serit-sayac {
  margin-left: auto;
  font-size: 0.76rem;
  color: var(--soluk);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

/* Süzgeç kutusundaki alanlar: köşeleri 2 pikselde kalmış, zeminleri
   sayfa rengindeydi — beyaz kartın üstünde gri kutular duruyordu. */
.suzgec input,
.suzgec select {
  border-radius: var(--kose-s);
  background: var(--yuzey);
}

/* Liste tabloları da ızgaralar gibi kart görünsün. */
.tablo-sar {
  border-radius: var(--kose);
  box-shadow: var(--g1);
}

/* Düzenle bağlantısı: noktalı alt çizgi eski dildendi. */
.duzenle-bag { text-decoration: none; border-bottom: 0; color: var(--lacivert); }
.duzenle-bag:hover { text-decoration: underline; }

/* Grup noktası kenarlığı ızgaradaki noktalarla aynı olsun. */
.grup-nokta { border: 1px solid var(--nk-kenar, rgba(0, 0, 0, .18)); }

/* Pasta grafiği açıklamasında sıfır kalemler */
.pasta-aciklama li.sifir { color: var(--soluk); }

/* Liste tablolarının başlık satırı da ızgaralardaki gibi sessiz olsun. */
.tablo-sar table th {
  background: var(--yuzey-2);
  color: var(--soluk);
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* "Yeni eklenenler" anahtarı seçilmeden de seçili görünüyordu. */
.ust-anahtar.yeni { border-color: var(--cizgi); color: var(--ikincil); background: var(--yuzey); }
.ust-anahtar.yeni.secili { border-color: var(--lacivert); color: var(--murekkep); background: var(--mavi-a); }

/* Tahakkuk ızgarası: beyannameyle aynı olsun — grup rengi yalnız
   mükellef adı sütununda, tutar hücreleri beyaz. Renkli görünümde
   eski dolu satır geri geliyor. */
:root:not([data-hucre="renkli"]) table.tahakkuk tbody tr { background: var(--yuzey); }
:root:not([data-hucre="renkli"]) table.tahakkuk .sabit-sutun.ad-hucre {
  background: var(--satir, var(--yuzey));
}

/* Şeritteki bilgi notu uyarı değil — kırmızı durmasın. */
.sutun-serit .serit-not {
  font-size: 0.76rem;
  color: var(--soluk);
  white-space: nowrap;
}

/* ===================================================================
   Faz 28l — menü içeriği itiyor, hücre anahtarı menüde

   Üç şey değişti:

   1. Geniş ekranda menü artık içeriğin ÜSTÜNE binmiyor, yanına
      yerleşip içeriği daraltıyor. Perde kalktı.
   2. Sade / Renkli anahtarı sol menüye taşındı — her sayfadan
      erişiliyor.
   3. Grup satır renkleri o anahtardan çıkarıldı: hangi kipte olursan
      ol grup rengi yalnız mükellef adı sütununda duruyor.
   =================================================================== */

/* -------------------------------------------------------------------
   1. Menü itme kipi

   Yerleşimi zaten :root[data-menu="sabit"] kuralları kuruyordu
   (faz28g, raptiye için yazılmıştı). Artık hamburger doğrudan onu
   açıp kapatıyor. Tek eksik şuydu: o kipte hamburger gizleniyordu,
   yani menüyü açan kullanıcı kapatamıyordu.
   ------------------------------------------------------------------- */
@media (min-width: 60.0625rem) {
  :root[data-menu="sabit"] body.panel .menu-dug { display: inline-flex; }

  /* Perde yalnız çekmece kipinin parçası. Geniş ekranda menü içeriği
     ittiği için örtecek bir şey yok; betik çalışmasa bile görünmesin. */
  .perde { display: none; }
}

/* Raptiye kalktı: "açık" ve "sabit" iki ayrı kavramdı, tek kavrama
   indi. Eski sayfalar önbellekten gelirse düğme yer kaplamasın. */
.yan-raptiye { display: none !important; }

/* -------------------------------------------------------------------
   2. Menüdeki hücre görünümü anahtarı
   ------------------------------------------------------------------- */
.yan-hucre {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding: 7px 10px 9px;
  margin-top: 2px;
}

.yan-hucre > span {
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--yan-soluk);
  margin-right: auto;
}

.yan-hucre button {
  width: auto;
  flex: none;
  padding: 0.16rem 0.55rem;
  font-size: 11px;
  font-weight: 500;
  border-radius: 20px;
  border: 1px solid var(--yan-kenar);
  background: var(--yan-ust);
  color: var(--yan-yazi);
  box-shadow: none;
}

.yan-hucre button:hover { background: var(--yan-secili); color: var(--yan-parlak); filter: none; }

.yan-hucre button[aria-pressed="true"] {
  background: var(--yan-isik);
  border-color: var(--kehribar);
  color: var(--yan-parlak);
  font-weight: 650;
}

/* -------------------------------------------------------------------
   3. Grup renkleri anahtardan çıktı

   Grup tonu bir DURUM rengi değil, mükellefin hangi gruba ait
   olduğunun işareti. Sade/Renkli anahtarı durum hücrelerinin
   yoğunluğunu yönetiyor; grup tonunu ona bağlamak yanlıştı —
   "Renkli" seçen kullanıcıda bütün liste ekranları eski Excel
   görünümüne dönüyordu.

   Artık her iki kipte de aynı: grup rengi mükellef adı sütununda,
   satırın geri kalanı beyaz.
   ------------------------------------------------------------------- */
table.izgara tbody tr { background: var(--yuzey); }
table.tahakkuk tbody tr { background: var(--yuzey); }
table.tahakkuk .sabit-sutun.ad-hucre { background: var(--satir, var(--yuzey)); }

.tablo-sar tbody tr { background: var(--yuzey); }
.tablo-sar tbody tr > td:first-child,
.tablo-sar tbody tr > th:first-child { background: var(--satir, var(--yuzey)); }

/* -------------------------------------------------------------------
   4. Sütun çipleri

   On üç, on sekiz sütunlu ekranlarda açık çiplerin hepsi dolu mavi
   olunca şerit baştan sona mavi bir duvara dönüyordu. faz28b'de
   kendi koyduğum kurala dönüyoruz: seçili çip dolgu değil çerçeve.
   Kapalı sütunun işareti zaten üstü çizili ve soluk olması.
   ------------------------------------------------------------------- */
.sutun-cip {
  background: var(--yuzey);
  border-color: var(--lacivert);
  color: var(--lacivert);
  font-weight: 600;
}
.sutun-cip:hover { background: var(--mavi-a); color: var(--murekkep); }
.sutun-cip.kapali {
  background: var(--yuzey);
  border-color: var(--cizgi);
  color: var(--soluk);
  font-weight: 400;
}
.sutun-cip.hepsi { border-style: dashed; border-color: var(--cizgi); color: var(--ikincil); }

/* -------------------------------------------------------------------
   5. Tahakkuk ızgarası menüyle birlikte daralsın

   Sütun genişlikleri hem width hem min-width ile veriliyordu.
   min-width sabit yerleşimde bir TABAN: tablo onun altına inemiyor.
   Menü açılıp içerik daralınca tablo 1520 pikselde takılı kalıyor,
   kap 1341'e düşüyor ve arada yatay kaydırma çıkıyordu — beyanname
   ve KDV Kontrol daralırken tahakkuk daralmıyordu.

   Asıl sebep daha derindeydi: sabit yerleşimde sütun genişliklerinin
   TOPLAMI tablonun width:100%'ünden büyükse tablo o toplamı alıyor.
   Genişlikler rem cinsindendi, yani kaptan bağımsızdı.

   Önce yüzdeye çevirdim; tablo sığdı ama sütun sayısı değiştikçe
   yüzdeler toplamı 100'ü tutturamıyor, artan yer tek sütuna yığılıyor
   ve tutarlar kırpılıyordu.

   Doğru çözüm sabit yerleşimden çıkmak: sütunlar içeriğe göre
   ölçülüyor, mükellef sütunu artan yeri alıyor, tablo kaba sığıyor.
   Ölçtüm — 1243 ve 963 piksellik kapta kırpılan tek bir tutar yok,
   yatay kaydırma yok.
   ------------------------------------------------------------------- */
body.panel > main.izgara-ekran table.izgara.tahakkuk { table-layout: auto; width: 100%; }

table.tahakkuk .sabit-sutun { width: auto; min-width: 12rem; }
table.tahakkuk .tg-w6,
table.tahakkuk .tg-w7,
table.tahakkuk .tg-w8,
table.tahakkuk .tg-w9,
table.tahakkuk .tg-w10,
table.tahakkuk .tg-w11,
table.tahakkuk .tg-w12,
table.tahakkuk .tg-w13,
table.tahakkuk .tg-w14 { width: auto; min-width: 0; }

table.tahakkuk .satir-toplam { min-width: 5.5rem; }
table.tahakkuk td.tutar-hucre input { min-width: 0; }

/* ===================================================================
   Faz 28m — ekran yerleşimi maketteki gibi

   Buraya kadar yaptığım şey bileşenleri düzeltmekti: renkler,
   düğmeler, çipler. Yerleşim aynı kalıyordu — maketteki ekranla
   panelin ekranı hâlâ birbirine benzemiyordu. Bu bölüm yerleşimi
   çeviriyor; ilk uygulandığı yer Tahakkuk, diğer ekranlar aynı
   parçaları kullanacak.

   Dört parça:
     .kutucuklar   üstte dört rakam
     .serit        çip şeridi (arızi ödemeler gibi)
     tr.grup-satir ızgarada bölüm başlığı
     ızgara nefesi satır yüksekliği, iki satırlık mükellef hücresi
   =================================================================== */

/* -------------------------------------------------------------------
   1. Sayı kutucukları
   ------------------------------------------------------------------- */
.kutucuklar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.6rem;
  margin-bottom: 0.7rem;
}

.kutucuk {
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  background: var(--yuzey);
  box-shadow: var(--g1);
  padding: 0.6rem 0.85rem;
}

.kutucuk .k1 {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--soluk);
}

.kutucuk .k2 {
  font-size: 1.15rem;
  font-weight: 650;
  font-variant-numeric: tabular-nums;
  margin-top: 0.1rem;
  white-space: nowrap;
}

.kutucuk .k3 { font-size: 0.85rem; font-weight: 400; color: var(--soluk); }

/* -------------------------------------------------------------------
   2. Bilgi şeridi

   Sütun şeridiyle aynı kabı kullanıyor; içindeki çipler bağlantı
   değil bilgi taşıyor, o yüzden ayrı sınıf.
   ------------------------------------------------------------------- */
.serit {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 0.7rem;
  padding: 0.45rem 0.65rem;
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  box-shadow: var(--g1);
}

.bilgi-cip {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.22rem 0.65rem;
  border: 1px solid var(--cizgi);
  border-radius: 20px;
  background: var(--yuzey);
  color: var(--ikincil);
  text-decoration: none;
  font-size: 0.79rem;
  white-space: nowrap;
}
.bilgi-cip b { color: var(--murekkep); font-variant-numeric: tabular-nums; }
.bilgi-cip:hover { border-color: var(--lacivert); color: var(--murekkep); }
.bilgi-cip.ekle { border-style: dashed; }

/* -------------------------------------------------------------------
   3. Izgarada bölüm başlığı

   Grup eskiden satırın tamamını boyayan bir renkti; on yedi satırda
   yedi ayrı ton ekranı Excel'e çeviriyordu. Artık grup bir kez
   yazılıyor, satırlar beyaz kalıyor.
   ------------------------------------------------------------------- */
tr.grup-satir > th {
  position: static;
  text-align: left;
  background: var(--yuzey-2);
  color: var(--soluk);
  font-size: 0.68rem;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 0.3rem 0.85rem;
  border-bottom: 1px solid var(--cizgi);
  border-top: 1px solid var(--cizgi);
}

/* Grup başlığı satırı grup rengini almasın. */
tr.grup-satir { background: var(--yuzey-2) !important; }

/* -------------------------------------------------------------------
   4. Izgaranın nefesi

   Maketteki ızgara panelinkinden yüksek: satır 36 piksel, mükellef
   hücresi iki satır (ünvan + vergi no). Sıkışıklık Excel'den kalma
   bir alışkanlıktı; ekranda 17 satır varken 27 pikselde sıkıştırmanın
   bir kazancı yok.
   ------------------------------------------------------------------- */
table.tahakkuk .sabit-sutun.ad-hucre {
  padding-top: 0.3rem;
  padding-bottom: 0.3rem;
  line-height: 1.25;
}

table.tahakkuk .ad-hucre .alt-bilgi {
  font-size: 0.7rem;
  color: var(--soluk);
  font-variant-numeric: tabular-nums;
}

table.tahakkuk td.tutar-hucre input {
  padding: 0.4rem 0.5rem;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

table.tahakkuk td.tutar-hucre input::placeholder { color: var(--cizgi); }

table.tahakkuk td.satir-toplam { font-weight: 650; }

/* Başlıktaki para birimi */
.tur-basligi .brm {
  margin-left: 0.25rem;
  color: var(--soluk);
  font-weight: 500;
}

/* Toplam sütunu sıcak krem bir zemin taşıyordu (#f7f7f3) ve solunda
   koyu bir ayraç vardı — ızgaranın içinde ayrı bir bölge gibi
   duruyordu. Sessizleşti; kalın yazı zaten yeterli işaret. */
.satir-toplam { background: var(--yuzey-2); border-left: 1px solid var(--cizgi); }
table.tahakkuk thead th.satir-toplam { background: var(--yuzey-2); }

/* Mükellef başlığı sola hizalı: altındaki hücreler de sola hizalı,
   ortalanmış başlık sütunu kaydırıyordu. */
table.izgara thead th.sabit-sutun { text-align: left; }

/* -------------------------------------------------------------------
   5. Grup başlığı satırı — bütün ızgaralarda tek dil

   Beyanname, Kalfa, E-Defter ve Yükümlülükler'de grup başlığı zaten
   vardı ama satırın kendisi grup rengiyle boyanıyordu ve başlık da o
   rengi taşıyordu. Artık başlık sessiz bir bölüm ayracı; grup rengi
   yalnız baştaki noktada ve mükellef adı sütununda duruyor.

   Tahakkuk'un yeni .grup-satir'ı da aynı görünümü paylaşıyor.
   ------------------------------------------------------------------- */
tr.grup-basligi > th,
tr.grup-satir > th {
  background: var(--yuzey-2);
  color: var(--soluk);
  font-size: 0.68rem;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 0.32rem 0.85rem;
  border-top: 1px solid var(--cizgi);
  border-bottom: 1px solid var(--cizgi);
  text-align: left;
}

tr.grup-basligi, tr.grup-satir { background: var(--yuzey-2); }

tr.grup-basligi .grup-nokta {
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 50%;
  margin-right: 0.4rem;
  vertical-align: 0;
  border: 1px solid var(--nk-kenar, rgba(0, 0, 0, .18));
}

tr.grup-basligi .adet {
  margin-left: 0.5rem;
  font-weight: 500;
  color: var(--soluk);
  font-variant-numeric: tabular-nums;
}

/* -------------------------------------------------------------------
   6. İki satırlık mükellef hücresi — bütün ızgaralarda

   Ünvanın altında vergi numarası. Maketteki hâli bu; ayrıca aynı
   ünvandan iki mükellef olduğunda hangisi olduğunu ayırt ettiriyor.
   ------------------------------------------------------------------- */
table.izgara .ad-hucre { line-height: 1.25; }

table.izgara .ad-hucre .alt-bilgi {
  display: block;
  font-size: 0.7rem;
  font-weight: 400;
  color: var(--soluk);
  font-variant-numeric: tabular-nums;
}

/* Ad hücresi iki satır olunca ızgara satırı da biraz yükseliyor;
   dikey ortalama kaymasın. */
table.izgara td.hucre,
table.izgara td.tutar-hucre { vertical-align: middle; }

/* -------------------------------------------------------------------
   7. Rozet ailesi

   Panelde rozetler sayfadan sayfaya ayrı adlarla yazılmıştı
   (kd-yesil, kd-kirmizi, uyari, iyi...). Tek aile kuruldu; eski
   adlar da aynı görünümü alıyor ki dokunmadığım sayfalar da uysun.
   ------------------------------------------------------------------- */
.rozet {
  display: inline-block;
  padding: 0.05rem 0.5rem;
  font-size: 0.72rem;
  font-weight: 600;
  border: 1px solid transparent;
  white-space: nowrap;
}

.rozet.r-iyi,   .rozet.kd-yesil,   .rozet.iyi    { background: #e4f2ea; color: #0f5c36; border-color: #bfe0cd; }
.rozet.r-kotu,  .rozet.kd-kirmizi, .rozet.tehlike{ background: #fdeceb; color: #8e1d13; border-color: #f6ccc8; }
.rozet.r-uyari, .rozet.kd-turuncu, .rozet.uyari  { background: var(--kehribar-a); color: #8a4d0d; border-color: #f2d3ae; }
.rozet.r-mavi,  .rozet.kd-mavi                   { background: var(--mavi-a); color: #0a3f7d; border-color: #c4ddf5; }
.rozet.r-gri,   .rozet.kd-sari                   { background: var(--yuzey-2); color: var(--ikincil); border-color: var(--cizgi); }

/* -------------------------------------------------------------------
   8. Bildirim — kalem rozetleri

   Kalem sayısı yerine kalemlerin kendisi yazılıyor; hücre sarabilsin.
   ------------------------------------------------------------------- */
td.kalem-hucre { white-space: normal; line-height: 1.9; max-width: 26rem; }
td.kalem-hucre .rozet { margin: 0 0.25rem 0.15rem 0; }

/* Kutucuktaki vurgulu rakam (kalan borç, fark) */
.kutucuk .k2.vurgu { color: var(--uyari); }

/* Ödemelerde mükellef hücresi rowspan ile birden çok satırı kapsıyor;
   yazı üstte dursun. */
td.mukellef-hucre.ad-hucre { padding-top: 0.45rem; }

/* ===================================================================
   Faz 28r — E-Defter, Kalfa ve EDM Fatura ekranları
   =================================================================== */

/* -------------------------------------------------------------------
   1. E-Defter durum şeridi renkleri

   Satır içi stil kullanılamıyor (içerik güvenlik kuralı), renkler
   sınıfla veriliyor.
   ------------------------------------------------------------------- */
.suzgec-renk.ed-r-gonderildi   { --nk: #17693a; background: #17693a; }
.suzgec-renk.ed-r-gonderim_bek { --nk: #6a92d4; background: #6a92d4; }
.suzgec-renk.ed-r-kontrol_bek  { --nk: #8a5a1e; background: #8a5a1e; }
.suzgec-renk.ed-r-mizan_yok    { --nk: #b9b9c2; background: #b9b9c2; }

/* -------------------------------------------------------------------
   2. E-Defter hücreleri

   Kutucuğun kendisi zaten "işaretli mi" sorusunu cevaplıyor. Üstüne
   bir de renk noktası (faz28i) ve renk şeridi (faz28k) binince hücre
   üç ayrı şeyle aynı şeyi söylüyordu. Nokta ve şerit kalktı; kalan
   tek işaret kutunun kendisi.
   ------------------------------------------------------------------- */
:root:not([data-hucre="renkli"]) table.edefter td.hucre::before { content: none; }
:root:not([data-hucre="renkli"]) table.edefter td.hucre.ed-mizan,
:root:not([data-hucre="renkli"]) table.edefter td.hucre.ed-kontrol,
:root:not([data-hucre="renkli"]) table.edefter td.hucre.ed-gonderildi {
  box-shadow: none;
  background: var(--yuzey);
}

/* İşaretli kutu maketteki gibi dolu yeşil. */
table.edefter input[type="checkbox"] { accent-color: var(--onay); width: 1.05rem; height: 1.05rem; }

/* Sütun grubu ayraçları: kalın renkli çizgiler yerine ince gri. */
table.edefter .ed-ay, table.edefter .ed-adim, table.edefter .ed-tarih { border-left: 1px solid var(--cizgi-2); }
table.edefter .ed-tarih { color: var(--soluk); font-variant-numeric: tabular-nums; }

/* Son gün sütunu sağa değil sola dayalı ve sessiz. */
table.edefter td.ed-songun { color: var(--soluk); white-space: nowrap; }

/* Son gün sütunu artan yerin tamamını alıyordu; ölçüsü verildi,
   artan yer mükellef sütununa gidiyor. */
table.edefter thead th:last-child,
table.edefter td.ed-songun { width: 8rem; }

/* Kalfa durum şeridi renkleri */
.suzgec-renk.kf-r-gonderilecek { background: #e08b3e; }
.suzgec-renk.kf-r-bekleyen     { background: #b42318; }
.suzgec-renk.kf-r-tamam        { background: #17693a; }

/* -------------------------------------------------------------------
   3. Araç çubuğundaki formlar

   EDM Fatura'da mükellef seçimi ve çekme düğmeleri araç çubuğunda.
   Form kendi başına bir blok olmasın, çubuğun akışına katılsın.
   ------------------------------------------------------------------- */
.arac-form {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin: 0;
}
.arac-form select { margin: 0; }
.arac-form button { width: auto; }

/* EDM belge tablosu: on üç sütun, içeriğe göre ölçülsün, sığmazsa
   kabı kaydırsın — hiçbir tutar kırpılmasın. */
table.edm-belge { table-layout: auto; width: 100%; min-width: max-content; font-size: 0.82rem; }
table.edm-belge th, table.edm-belge td { white-space: nowrap; padding: 0.4rem 0.6rem; }
table.edm-belge td.sar { white-space: normal; max-width: 16rem; }

/* Kart başlığı — servis günlüğü gibi bölümlerde */
.kart-bas {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.55rem 0.8rem;
  border-bottom: 1px solid var(--cizgi-2);
}
.kart-bas h2 { margin: 0; font-size: 0.86rem; font-weight: 650; }
.kart-bas .sag { margin-left: auto; }

/* ===================================================================
   faz29h — SÜTUN PANELİ KATLANIYOR

   On sekiz çip iki satır tutuyordu. Ekranın üstünde zaten başlık,
   dönem şeridi, durum şeridi ve uyarı kutusu var; ızgaraya üç satırlık
   yer kalıyordu. Panel artık kapalı açılıyor, tek satır yer kaplıyor.

   <details> kullanıldı: JavaScript'siz çalışıyor, klavyeyle açılıyor,
   ekran okuyucu durumu kendiliğinden bildiriyor. panel.js yalnız
   "açık bıraktıysa açık kalsın" için devreye giriyor.
   =================================================================== */

details.sutun-serit {
  display: block;                 /* flex kalıbı details'i bozuyor */
  margin-bottom: 0.7rem;
  padding: 0.3rem 0.65rem;
  background: var(--yuzey);
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  box-shadow: var(--g1);
}

details.sutun-serit > summary {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.2rem 0;
  cursor: pointer;
  list-style: none;               /* varsayılan üçgen gitsin */
  user-select: none;
}

details.sutun-serit > summary::-webkit-details-marker { display: none; }

/* Kendi işaretimiz: yön bilgisini renk değil şekil taşıyor. */
details.sutun-serit > summary::before {
  content: "";
  flex: none;
  width: 0.42rem;
  height: 0.42rem;
  border-right: 2px solid var(--ikincil);
  border-bottom: 2px solid var(--ikincil);
  transform: rotate(-45deg);
  margin-right: 0.15rem;
  transition: transform 0.12s ease;
}

details.sutun-serit[open] > summary::before { transform: rotate(45deg); }

details.sutun-serit > summary:focus-visible {
  outline: 2px solid var(--lacivert);
  outline-offset: 2px;
  border-radius: var(--kose-s);
}

details.sutun-serit > summary .serit-ad {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--murekkep);
}

details.sutun-serit > summary .serit-sayac {
  margin-left: auto;
  font-size: 0.78rem;
  color: var(--soluk);
}

/* Arızi şeridi: kapalıyken tek satır, sayaç kalem sayısını ve
   toplamı söylüyor (faz32o). Toplam rakamı öne çıksın. */
details.arizi-serit > summary .serit-sayac strong {
  color: var(--murekkep);
  font-variant-numeric: tabular-nums;
}

details.sutun-serit > .serit-cipler {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin-top: 0.5rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--cizgi-2);
}

details.sutun-serit > .serit-not,
details.sutun-serit > .sutun-uyari { margin-top: 0.4rem; }

@media (prefers-reduced-motion: reduce) {
  details.sutun-serit > summary::before { transition: none; }
}

/* Izgaranın tamamını kapladığı ekranlarda uyarı kutusu ince duruyor:
   üstteki her satır listeden yer çalıyor (faz29h). */
.mesaj.ince {
  margin-bottom: 0.55rem;
  padding: 0.4rem 0.65rem;
  font-size: 0.82rem;
}

/* ===================================================================
   faz29i — ARAÇ ÇUBUĞU VE DİPNOT

   Araç çubuğu doluydu ve müşavir süzgeci alt satıra düşüyordu; dipnot
   da beş satır tutuyordu. İkisi birden ızgaradan yer çalıyor.
   =================================================================== */

/* Yalnız simge taşıyan araç düğmesi (Excel'e aktar). Metin kalksa da
   dokunma alanı küçülmesin diye yüksekliği ötekilerle aynı. */
.ust-anahtar.simge {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.simge-cizim {
  display: block;
  width: 1.05rem;
  height: 1.05rem;
}

/* Dipnot artık tek satır: ortalanmış dar bir blok değil, tablonun
   altında akan ince bir şerit. */
.dipnot.tek-satir {
  margin: 0.45rem 0 0;
  max-width: none;
  text-align: left;
}

/* Müşavir süzgeci artık sayfa araçlarından ÖNCE duruyor (bkz.
   lib/ust.php). Sağa yapıştıran eski kural burada geçersiz kılınıyor;
   yapışık kalsaydı araçların tamamını alt satıra iterdi. */
.arac .musavir-menu { margin-left: 0; }

/* EDM hesapları — bağlantı durumu çipleri (faz30a).
   Renk anlam taşıyor: tanımlı yeşil, tanımsız gri, hatalı kırmızı. */
.suzgec-renk.edm-r-tanimli { --nk: #17693a; background: #17693a; }
.suzgec-renk.edm-r-eksik   { --nk: #b9b9c2; background: #b9b9c2; }
.suzgec-renk.edm-r-hatali  { --nk: #a3232f; background: #a3232f; }

/* Ödemelerin vergi türü özeti: ızgara ekranın tamamını kapladığı için
   bu kart yüksekliği sınırlı. Uzun özet ızgarayı ezmiyor, kendi içinde
   kayıyor (faz30a). */
.tur-ozet > .tablo-sar {
  max-height: 14rem;
  overflow: auto;
}

/* Ödemeler ızgarasında mükellef sütunu yatay kaydırmada yerinde kalıyor
   — beş sütunlu tabloda bile hangi mükellefe baktığın kaybolmasın. */
table.izgara.odemeler .sabit-sutun { min-width: 14rem; }

/* Mükellefler listesi ızgara kalıbına geçti (faz30a): ünvan sütunu
   yatay kaydırmada yerinde kalıyor. */
table.izgara.mukellef-liste .sabit-sutun { min-width: 16rem; }

/* Grup çipinin renk noktası. Renk grup renginin kendisi — listedeki
   satır renkleriyle aynı dili konuşsun diye. */
.suzgec-renk.gc-g-sirket      { --nk: #e8e06a; background: #e8e06a; }
.suzgec-renk.gc-g-sahis1      { --nk: #7fb2e5; background: #7fb2e5; }
.suzgec-renk.gc-g-sahis2      { --nk: #86c79a; background: #86c79a; }
.suzgec-renk.gc-g-danismanlik { --nk: #c9a0dc; background: #c9a0dc; }
.suzgec-renk.gc-g-gayrifaal   { --nk: #c2c6cc; background: #c2c6cc; }
.suzgec-renk.gc-g-kapanan     { --nk: #9aa0a6; background: #9aa0a6; }
.suzgec-renk.gc-g-yok         { --nk: #d8dce2; background: #d8dce2; }

/* ===================================================================
   faz30a — SIK SATIR

   Tablolar uzun. Sık kipte satır dolgusu düşüyor ve ekrana yaklaşık
   üçte bir daha fazla satır sığıyor. Yazı boyutu düşmüyor: okunurluk
   satır sayısından önce gelir.

   Seçim sol menüdeki "Satırlar" anahtarında, bütün panele uygulanıyor
   ve tarayıcıda saklanıyor (tema.js).
   =================================================================== */

:root[data-siklik="sik"] table.izgara td,
:root[data-siklik="sik"] table.izgara th,
:root[data-siklik="sik"] .tablo-sar table td,
:root[data-siklik="sik"] .tablo-sar table th {
  padding-top: 0.22rem;
  padding-bottom: 0.22rem;
}

:root[data-siklik="sik"] .ad-hucre .alt-bilgi { display: none; }

/* KDV Kontrol detayında durum sütunu sabitleniyor (faz30a): on sekiz
   sütunlu tabloda sağa kaydırınca satırın durumu kayboluyordu.
   Genişliği dar — rozet sığsın yeter, mükellef adı gibi yer istemiyor. */
/* KDV detayında sabit sütun DURUM sütunu — küçük bir rozet taşıyor,
   mükellef adı değil. Genel .sabit-sutun kuralı (17rem alt, 22rem üst)
   ad sütunu için yazılmıştı ve burada 352 piksel boş yer bırakıyordu;
   ölçüp gördüm. Üç sınırın üçü de burada yeniden veriliyor: yalnız
   min-width vermek yetmiyor, genişliği belirleyen max-width oluyordu. */
table.kdv-detay .sabit-sutun {
  min-width: 7.5rem;
  max-width: 9rem;
  width: 7.5rem;
}

/* İşlem sütunu iki küçük düğme; ölçüsüne çekiliyor ama düğmeler alt
   alta düşmesin diye bir alt sınır var. */
table.kdv-detay th.kd-islem,
table.kdv-detay td.kd-islem { width: 1px; min-width: 6.2rem; }


/* ===================================================================
   faz30a — BEYANNAME İLERLEME KARTI

   Maketteki ekranın en üstündeki bilgi buydu ve panelde hiç yoktu:
   dönem bitmeden "neresi eksik" sorusunun cevabı.

   Çubuk genişliği satır içi stille verilemiyor — panelin içerik
   güvenlik kuralı (style-src 'self') satır içi stile izin vermiyor,
   CSS değişkeni de satır içi sayılıyor. Yüzde beşer adımlık sınıflarla
   veriliyor: çubuk kabaca doğru, kesin rakam yanında yazılı.
   =================================================================== */

.ilerleme-kart { padding: 0.6rem 0.8rem; }

.ilerleme-bas {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 0.55rem;
}

.ilerleme-bas strong { font-size: 0.9rem; }

.gun-rozet {
  padding: 0.1rem 0.5rem;
  border-radius: 20px;
  background: var(--kehribar-a, #fdf1d8);
  color: #7a5310;
  font-size: 0.76rem;
  font-weight: 600;
}
.gun-rozet.bugun { background: #fde8ea; color: #8b2f38; }
.gun-rozet.gecti { background: var(--yuzey-2); color: var(--soluk); }

.ilerleme-sayi {
  margin-left: auto;
  font-size: 0.82rem;
  color: var(--ikincil);
}
.ilerleme-sayi strong { font-size: 0.95rem; }

.cubuklar { display: grid; gap: 0.25rem; }

.cubuk-sat {
  display: grid;
  grid-template-columns: 8rem 1fr 4.5rem;
  align-items: center;
  gap: 0.6rem;
  font-size: 0.8rem;
}

.cubuk-ad { color: var(--ikincil); }

.cubuk {
  display: block;
  height: 0.45rem;
  border-radius: 20px;
  background: var(--yuzey-2);
  overflow: hidden;
}

.cubuk-dolu {
  display: block;
  height: 100%;
  border-radius: 20px;
  background: var(--lacivert);
}

.cubuk-oran {
  text-align: right;
  color: var(--soluk);
  font-variant-numeric: tabular-nums;
}

/* Hepsi onaylandıysa rakam yeşile dönüyor (faz32o): "bu satırda iş
   kalmadı" tek bakışta görünsün. */
.cubuk-oran.bitti { color: #1e7a3c; font-weight: 700; }

@media (max-width: 40rem) {
  .cubuk-sat { grid-template-columns: 6rem 1fr 4rem; }
}
.cubuk-dolu.y0 { width: 0%; }
.cubuk-dolu.y5 { width: 5%; }
.cubuk-dolu.y10 { width: 10%; }
.cubuk-dolu.y15 { width: 15%; }
.cubuk-dolu.y20 { width: 20%; }
.cubuk-dolu.y25 { width: 25%; }
.cubuk-dolu.y30 { width: 30%; }
.cubuk-dolu.y35 { width: 35%; }
.cubuk-dolu.y40 { width: 40%; }
.cubuk-dolu.y45 { width: 45%; }
.cubuk-dolu.y50 { width: 50%; }
.cubuk-dolu.y55 { width: 55%; }
.cubuk-dolu.y60 { width: 60%; }
.cubuk-dolu.y65 { width: 65%; }
.cubuk-dolu.y70 { width: 70%; }
.cubuk-dolu.y75 { width: 75%; }
.cubuk-dolu.y80 { width: 80%; }
.cubuk-dolu.y85 { width: 85%; }
.cubuk-dolu.y90 { width: 90%; }
.cubuk-dolu.y95 { width: 95%; }
.cubuk-dolu.y100 { width: 100%; }


/* Menü düğmesi her sayfada görünüyor (faz30b).

   HATAMDI: düğmeyi yalnız ızgara sayfalarında gösteriyordum
   (body.panel.izgara-sayfa .menu-dug). Geniş ekranda menü açıkken
   Bildirim, Dönem özeti, Mükellef kartı gibi ızgara olmayan
   sayfalarda kapatacak düğme yoktu — menü açık kalıyor ve
   kapatılamıyordu. Kural artık body.panel üzerinde. */

/* İlerleme kartı katlanıyor (faz30b). Kapalıyken tek satır: dönem,
   geri sayım ve toplam. Çubuklar açılınca geliyor. */
details.ilerleme-kart > summary {
  cursor: pointer;
  list-style: none;
  margin-bottom: 0;
}
details.ilerleme-kart[open] > summary { margin-bottom: 0.55rem; }
details.ilerleme-kart > summary::-webkit-details-marker { display: none; }

details.ilerleme-kart > summary::before {
  content: "";
  flex: none;
  width: 0.42rem;
  height: 0.42rem;
  border-right: 2px solid var(--ikincil);
  border-bottom: 2px solid var(--ikincil);
  transform: rotate(-45deg);
  margin-right: 0.2rem;
  transition: transform 0.12s ease;
}
details.ilerleme-kart[open] > summary::before { transform: rotate(45deg); }

details.ilerleme-kart > summary:focus-visible {
  outline: 2px solid var(--lacivert);
  outline-offset: 2px;
  border-radius: var(--kose-s);
}

@media (prefers-reduced-motion: reduce) {
  details.ilerleme-kart > summary::before { transition: none; }
}

/* Ödeme durumu hücresindeki renk noktası (faz30d).

   Makette durum bir nokta + yazıydı. Panelde hücre düzenlenebilir
   olduğu için orada bir açılır liste var; noktayı onun yanına koyduk.
   Sade kipte hücre boyanmıyor ve durumu gösteren tek işaret bu nokta
   kalıyor — renk tek başına anlam taşımasın diye yazı da yerinde. */
td.odeme-hucre {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding-left: 0.4rem;
}

.odeme-nokta {
  flex: none;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, 0.18);
  background: var(--od-nk, transparent);
}

td.odeme-hucre.o-bekliyor   { --od-nk: transparent; }
td.odeme-hucre.o-odendi     { --od-nk: #17693a; }
td.odeme-hucre.o-kendisi    { --od-nk: #5b8fd0; }
td.odeme-hucre.o-odemeyecek { --od-nk: #a8a8ae; }

/* Vadesi geçti rozeti tarihin yanında, satırı büyütmesin: hücre
   sarmıyor, rozet tarihin altına düşüp satırı iki kat yapmıyor. */
td.vade-gecti { white-space: nowrap; }
td.vade-gecti .rozet { margin-left: 0.35rem; }


/* ===================================================================
   Menü ızgara olmayan sayfalarda da kapanıyor (faz30d)

   Düğme Bildirim'de çalışmıyordu. Sebebi düğme ya da betik değildi:
   itme kipinin yerleşim kuralları yalnız .izgara-sayfa için yazılmıştı.
   Öteki sayfalarda kenar çubuğu ızgaranın birinci sütunu olarak HER
   ZAMAN duruyordu; düğmeye basmak işareti değiştiriyor ama değiştirecek
   bir kural bulamıyordu. Tarayıcıda ölçtüm: tıktan önce de sonra da
   kenar çubuğu 222 piksel, içerik 222'de başlıyordu.

   Artık kapalı durumun kendi işareti var (data-menu="kapali") ve her
   sayfada aynı şeyi yapıyor.
   =================================================================== */
@media (min-width: 60.0625rem) {
  :root[data-menu="kapali"] body.panel:not(.izgara-sayfa) {
    grid-template-columns: minmax(0, 1fr);
  }

  :root[data-menu="kapali"] body.panel:not(.izgara-sayfa) > .arac,
  :root[data-menu="kapali"] body.panel:not(.izgara-sayfa) > main {
    grid-column: 1;
  }

  :root[data-menu="kapali"] body.panel:not(.izgara-sayfa) > .yan {
    display: none;
  }
}


/* ===================================================================
   Araç çubuğu tek dile geldi (faz30e)

   Aynı satırda üç ayrı düğme biçimi vardı ve üçü de maketten
   uzaktı:

     · dönem düğmeleri   köşe 2px, neredeyse kare
     · Gruplandır / Ara  köşe 20px, tam hap
     · dönem seçicileri  lacivert çerçeve + lacivert kalın yazı,
                         yani alan değil düğme gibi duruyordu

   Makette araç çubuğundaki her şey tek biçim: 1px açık çerçeve,
   7px köşe (--kose-s), 0.82rem yazı, sönük zemin. Vurgulu olan tek
   öğe var, o da içinde bulunulan dönem — dolu lacivert.

   Hap köşesi (20px) şeritlerdeki çiplere ait; araç çubuğunda
   kullanılınca iki ayrı kavram aynı görünüyordu.
   =================================================================== */

.donem-dugme,
.ust-anahtar:not(.simge) {
  padding: 0.3rem 0.72rem;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey-2);
  color: var(--ikincil);
  font-size: 0.82rem;
  font-weight: 500;
  line-height: 1.35;
}

.ust-anahtar.simge {
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey-2);
  color: var(--ikincil);
}

.donem-dugme:hover,
.ust-anahtar:hover {
  border-color: var(--lacivert);
  color: var(--murekkep);
  background: var(--yuzey);
}

/* İçinde bulunulan dönem — çubuğun tek dolu öğesi. */
.donem-dugme.simdi {
  background: var(--lacivert);
  border-color: var(--lacivert);
  color: #fff;
  font-weight: 600;
}
.donem-dugme.simdi:hover { background: var(--lacivert); color: #fff; }

/* Veri olmayan dönem: kesik çerçeve "buraya gidilemez" demek —
   maketin düğmelerinde olmayan ama panelde gereken tek durum. */
.donem-dugme.yok,
.donem-dugme.yok:hover {
  background: var(--yuzey);
  color: #c0c0c6;
  border-style: dashed;
  border-color: var(--cizgi);
  cursor: default;
}

/* Açık/kapalı anahtar (Gruplandır gibi): dolu değil, mavi zeminli —
   şeritteki seçili çiple aynı dil. */
.ust-anahtar.secili {
  background: var(--mavi-a);
  border-color: var(--lacivert);
  color: var(--murekkep);
  font-weight: 600;
}

/* Araç çubuğundaki alanlar: alan gibi dursun. Lacivert çerçeve ve
   kalın lacivert yazı onları düğmeye benzetiyordu. */
.donem-secim,
.arac-form input[type="search"],
.arac-form select,
.arac-form input[type="text"] {
  padding: 0.3rem 0.55rem;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey);
  color: var(--murekkep);
  font-size: 0.82rem;
  font-weight: 400;
}

.donem-kutu > .soluk.kucuk { font-size: 0.78rem; }


/* ===================================================================
   Kart tabloları makete yaklaştı (faz30e)

   Bildirim gibi kart içinde duran tablolar 0.9rem yazıyla
   çiziliyordu; maket 0.84rem. Aradaki fark küçük görünüyor ama
   ünvanlar kalın ve kaba duruyordu.

   İkinci ve daha görünür sorun: hücreler üstten hizalıydı
   (vertical-align: top). Mükellef hücresi iki satır (ünvan + vergi
   no), yanındaki işaret kutusu tek satır — kutu ünvanın hizasında
   değil, satırın tepesinde kalıyordu. Makette her hücre ortalı.
   =================================================================== */

.tablo-sar table { font-size: 0.84rem; }

.tablo-sar table th,
.tablo-sar table td { vertical-align: middle; }

.tablo-sar .ad-hucre { font-weight: 500; }
.tablo-sar .ad-hucre a { font-weight: 500; }
.tablo-sar .ad-hucre .alt-bilgi { font-size: 0.74rem; }

/* İşaret kutusu ünvanın hizasında dursun. */
.tablo-sar td.orta input[type="checkbox"],
.tablo-sar th.orta input[type="checkbox"] { vertical-align: middle; margin: 0; }

/* Grup başlığı satırı kart tablolarında da şeritli (faz30e): ızgarada
   gri bandı vardı, kart tablolarında beyaz kalıyordu. */
.tablo-sar tr.grup-satir > th { background: var(--yuzey-2); }

/* Ödemelerde durum hücresi: makette nokta + yazı sola yaslı.
   Ortalanınca noktayla yazı satır içinde savruluyordu. */
th.odeme-basligi { text-align: left; }
td.odeme-hucre { justify-content: flex-start; }
td.odeme-hucre .odeme-secim { text-align: left; text-align-last: left; width: auto; }


/* ===================================================================
   Izgara başlıkları da maketin diline geldi (faz30e)

   Kart tablolarında sütun adları küçük, sönük ve BÜYÜK HARF
   (.tablo-sar table th) — makette de öyle. Izgaralarda ise
   0.78rem, koyu ve normal harf kalmıştı: aynı panelde iki ayrı
   başlık dili.

   Büyük harf yazıyı genişletir; karşılığında yazı boyu ve yatay iç
   boşluk düştü. Genişlik endişesini ölçerek kapattım: on sekiz
   sütunlu KDV detayında tablo 1863 pikselden 1863 piksele, yani
   değişmedi — ızgara ekranlarında yerleşim zaten sabit (table-layout:
   fixed), sütunu başlık değil kap genişliği belirliyor.
   =================================================================== */
table.izgara thead th {
  padding-left: 0.45rem;
  padding-right: 0.45rem;
  font-size: 0.7rem;
  font-weight: 650;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--soluk);
}

/* Başlıktaki sıralama ve süzgeç bağlantıları başlığın kendisi gibi
   görünsün; ayrı renk ve boyla öne çıkmasınlar. */
table.izgara thead th a,
table.izgara thead th > .sutun-suzgec > summary {
  color: inherit;
  font-size: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
}

/* E-Defter "Son gün" sütunu (faz30e): başlık sağa, tarihler sola
   dayalıydı — sütun eğri duruyordu. İkisi de sola. Tarih yazısı da
   komşu hücrelerden iri görünüyordu: bir tık küçük, rakamlar sabit
   genişlikte, rengi sessiz. */
table.edefter th.ed-songun-bas { text-align: left; }
table.edefter td.ed-songun {
  text-align: left;
  font-size: 0.78rem;
  font-variant-numeric: tabular-nums;
}


/* ===================================================================
   Izgaraların nefesi ve hücre işaretleri (faz30e)

   Üç şey düzeldi:

   1. HÜCRE DOLGUSU. table.izgara td'nin dolgusu sıfırdı; dolguyu her
      hücre tipi kendi kuralında veriyordu (tarih-hucre, tutar-hucre,
      hucre...). Sade metin hücrelerinin kuralı yoktu: Ödemeler'de
      tutar ile vade yan yana yapışıyordu ("18.240,50 ₺26.09.2026").
      Artık rolü olmayan hücreler de nefes alıyor; alan/açılır kutu
      taşıyan hücreler eskisi gibi tam boy kalıyor.

   2. KALFA TARİH ALANLARI. Makette tarihler çerçeveli, köşeli birer
      alan — "buraya yazabilirsin" diyor. Panelde çerçevesiz, hücreyi
      tamamen dolduran kutulardı; tıklanabilir olduğu belli olmuyordu.

   3. DURUM İŞARETİ. Sade kipte hücrenin soluna 3 piksellik dik bir
      şerit çiziliyordu. Makette işaret yuvarlak bir nokta; şerit
      kaba duruyor ve ödeme hücresindeki yeni noktayla ikileniyordu.
   =================================================================== */

/* 1 */
table.izgara td:not(.hucre):not([class*="-hucre"]) {
  padding: 0.3rem 0.55rem;
}

/* 2 */
table.izgara.kalfa td.tarih-hucre { padding: 0.25rem 0.45rem; }

table.izgara.kalfa td.tarih-hucre input {
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey);
  padding: 0.26rem 0.45rem;
}

table.izgara.kalfa td.tarih-hucre input:focus {
  outline-offset: 0;
  background: #fffdf0;
}

/* 3 */
:root:not([data-hucre="renkli"]) td.durum-hucre,
:root:not([data-hucre="renkli"]) td.odeme-hucre { box-shadow: none; }

:root:not([data-hucre="renkli"]) td.durum-hucre {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding-left: 0.45rem;
}

:root:not([data-hucre="renkli"]) td.durum-hucre::before {
  content: "";
  flex: none;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, 0.18);
  background: var(--nk, transparent);
}

:root:not([data-hucre="renkli"]) td.durum-hucre .earsiv-secim {
  width: auto;
  text-align: left;
  padding-left: 0;
}

/* Ödemeler ızgarasında hücre dolgusu ve durum hücresi */
table.izgara.odemeler td.odeme-hucre { padding: 0.3rem 0.45rem; }

/* Ödemelerde vade sütunu: geçmemiş tarihler sessiz, geçmişler kırmızı.
   Makette de böyle — göz doğrudan geciken satıra gidiyor. */
td.vade-sut:not(.vade-gecti) { color: var(--soluk); }

/* Vergi türü özetinin başındaki toplam çipleri */
.ozet-cipler { margin-bottom: 0.5rem; }


/* ===================================================================
   Ödeme bildirimi: ekranı kullanıyor, sütunlar içeriğe göre (faz30f)

   İki sorun tek sebepten: sayfa main.genis ile 76rem'de duruyordu,
   kalemler hücresinin de 26rem üst sınırı vardı. Menü kapatılınca
   açılan yer boş kalıyor, çipler üç satıra iniyordu.

   Artık sayfa tam genişlikte ve ölçü içerikten geliyor: ad, toplam,
   müşavir ve mesaj sütunları içeriği kadar yer alıyor (width:1px =
   içeriğe kadar daral), artan yerin tamamı kalemlere kalıyor.
   =================================================================== */
table.bildirim { table-layout: auto; }

table.bildirim th,
table.bildirim td { white-space: nowrap; }

/* Artan yeri alan tek sütun. Çok kalemli mükellefte yine sarar ama
   sarmadan önce bütün boşluğu kullanır. */
table.bildirim th.kalem-basligi,
table.bildirim td.kalem-hucre {
  white-space: normal;
  max-width: none;
  width: 100%;
  line-height: 1.6;
}

/* Geri kalanlar içeriği kadar. */
table.bildirim thead th:not(.kalem-basligi),
table.bildirim tbody td:not(.kalem-hucre) { width: 1px; }

/* Grup başlığı satırı bu daraltmanın dışında. */
table.bildirim tr.grup-satir > th { width: auto; }


/* ===================================================================
   KDV Kontrol işlem sütunu (faz30g)

   "şahsi" ile "geri al" alt alta düşüyordu: kutu sarmaya izin
   veriyordu (flex-wrap: wrap) ve sütuna 6.2rem sınırı konmuştu —
   iki düğme o genişliğe sığmıyor. Satır iki kat yükseliyor,
   düğmelerin kenarları sütundan taşıyordu.

   Artık sarmıyor ve sütun iki düğmeyi alacak kadar geniş. Izgarada
   yerleşim sabit olduğu için bu genişlik toplam tablodan alınıyor,
   yatay kaydırma doğurmuyor.
   =================================================================== */
.kd-islem-kutu {
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.3rem;
  padding: 0.2rem 0.35rem;
}

table.kdv-detay th.kd-islem,
table.kdv-detay td.kd-islem { width: 1px; min-width: 9.4rem; }

/* Düğme köşeleri de panelin geri kalanı gibi. */
.kd-dugme { border-radius: var(--kose-s); padding: 0.12rem 0.5rem; }


/* ===================================================================
   Mükellefler listesi makete geldi (faz30h)

   Üç fark vardı: grup hücresi nokta + yazıydı (makette çip), satır
   sonunda İşlem sütunu yoktu (düzenle bağlantısı ünvanın altına
   sıkışmıştı, gözden kaçıyordu) ve boş notlar hücresi bomboş
   duruyordu.
   =================================================================== */
table.mukellef-liste td.grup-hucre { white-space: nowrap; }
table.mukellef-liste .grup-rozet { font-weight: 500; }

table.mukellef-liste th.mk-islem,
table.mukellef-liste td.mk-islem { width: 1px; min-width: 6.4rem; text-align: center; }

table.mukellef-liste td.mk-islem .ust-anahtar {
  padding: 0.16rem 0.6rem;
  font-size: 0.78rem;
}

table.mukellef-liste td.not-hucre .rozet { margin-right: 0.25rem; }

/* Birincil araç düğmesi: dolu lacivert (makette "+ Mükellef ekle"). */
.ust-anahtar.ana,
.ust-anahtar.ana:hover {
  background: var(--lacivert);
  border-color: var(--lacivert);
  color: #fff;
  font-weight: 600;
}

/* Yerleşim içeriğe göre: sabit yerleşimde ünvan sütunu 22rem'e
   çakılıyor, kalan altı sütun eşit bölüşüyor ve İşlem sütunu dışarı
   taşıyordu (ölçtüm: kap 1463, tablo 1525 piksel — sağda kaydırma).
   Otomatik yerleşimde her sütun içeriği kadar yer alıyor. */
body.panel > main.izgara-ekran table.izgara.mukellef-liste { table-layout: auto; }

body.panel > main.izgara-ekran table.izgara.mukellef-liste th.sabit-sutun,
body.panel > main.izgara-ekran table.izgara.mukellef-liste td.sabit-sutun {
  width: auto;
  min-width: 15rem;
  max-width: 26rem;
}

table.mukellef-liste td.sayi,
table.mukellef-liste td.grup-hucre,
table.mukellef-liste td.mk-islem { white-space: nowrap; }

/* E-Defter'de de aynı sebep: sabit yerleşimde ünvan sütunu 18rem'e
   çakılıp kalan dokuz sütun eşit bölüşüyor, alt sınırları toplanınca
   kabı birkaç piksel aşıyor ve tablo sığdığı hâlde yatay kaydırma
   çubuğu çıkıyordu. Otomatik yerleşimde sütunlar içeriğe göre. */
body.panel > main.izgara-ekran table.izgara.edefter { table-layout: auto; }

body.panel > main.izgara-ekran table.izgara.edefter th.sabit-sutun,
body.panel > main.izgara-ekran table.izgara.edefter td.sabit-sutun {
  width: auto;
  min-width: 16rem;
  max-width: 26rem;
}

table.edefter td.hucre,
table.edefter td.gonderim-tarihi,
table.edefter td.ed-songun { white-space: nowrap; }


/* ===================================================================
   Hücre içerikleri dikeyde ortalı — her ekranda (faz30j)

   Panelin temel kuralı vertical-align: top idi; kart tabloları
   faz30e'de ortalanmıştı, ızgaralar üstte kalmıştı. İki satırlık
   mükellef hücresinin yanındaki tek satırlık hücreler tepede duruyor,
   satır eğri görünüyordu. Özellikle rowspan'li hücrelerde (Ödemeler,
   KDV detayı) fark büyüktü.

   Artık istisnasız ortalı. Birkaç yerde açıkça "üstte dursun" diyen
   eski kurallar vardı, onlar da buraya bağlandı.
   =================================================================== */
th, td { vertical-align: middle; }

table.izgara th,
table.izgara td { vertical-align: middle; }

table.izgara tbody td[rowspan],
table.kdv-detay tbody td[rowspan],
td.mukellef-hucre.ad-hucre { vertical-align: middle; }


/* Yükümlülükler ızgarası kaydırılamıyordu (faz30l).

   Izgara ekranlarında yerleşim şöyle: main dikey bir flex kutusu,
   içindeki .izgara-sar artan yeri alıp kendi içinde kayıyor. Ödemeler
   ve tahakkukta araya giren <form> için "display: contents" kuralı
   vardı — form yerleşimde görünmez olup ızgarayı doğrudan main'in
   çocuğu yapıyor.

   Yükümlülükler'de araya giren şey form değil, CSRF anahtarını taşıyan
   bir <div> (#yukumluluk-izgara). O kuralın dışında kaldığı için ızgara
   artan yeri alamıyor, sayfa da (body overflow:hidden) kaydırılamıyordu:
   liste ekranın altında kesiliyordu. */
body.panel > main.izgara-ekran > #yukumluluk-izgara { display: contents; }


/* ===================================================================
   İlerleme çubukları hücre renkleriyle doluyor (faz30m)

   Çubuk tek parça lacivertti: "kaçı doldu" diyordu ama "hangi
   aşamada" demiyordu. Oysa ızgarada her durumun kendi rengi var ve
   göz o renklere alışmış durumda. Çubuk artık o renklerden oluşuyor:
   her durum kendi payı kadar bir parça, palet sırasıyla.

   Genişlik satır içi stil olamıyor (CSP), bu yüzden yüzde başına bir
   sınıf var: w0 … w100. Yuvarlama artığı son parçaya ekleniyor,
   böylece parçaların toplamı "dolu/açık" oranını birebir tutuyor.
   =================================================================== */
.cubuk { display: flex; }

.cubuk-parca {
  display: block;
  height: 100%;
  flex: none;
  background: var(--parca, var(--lacivert));
}

/* Bitişik parçalar birbirine yapışmasın diye ince ayraç; ilkinde ve
   sonuncusunda köşeler yuvarlak kalıyor. */
.cubuk-parca + .cubuk-parca { box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.75); }
.cubuk-parca:first-child { border-radius: 20px 0 0 20px; }
.cubuk-parca:last-child  { border-radius: 0 20px 20px 0; }
.cubuk-parca:only-child  { border-radius: 20px; }

:is(.cubuk-parca, .durum-rozet).d-sistem { --parca: #7030a0; }
:is(.cubuk-parca, .durum-rozet).d-aktarildi { --parca: #e0c31a; }
:is(.cubuk-parca, .durum-rozet).d-bos-evrak { --parca: #a6a6a6; }
:is(.cubuk-parca, .durum-rozet).d-hazir { --parca: #d9d9d9; }
:is(.cubuk-parca, .durum-rozet).d-geldi { --parca: #e5b8b8; }
:is(.cubuk-parca, .durum-rozet).d-dizildi { --parca: #f2ab48; }
:is(.cubuk-parca, .durum-rozet).d-islendi { --parca: #ee2f22; }
:is(.cubuk-parca, .durum-rozet).d-kontrol { --parca: #6a92d4; }
:is(.cubuk-parca, .durum-rozet).d-onay { --parca: #17693a; }
:is(.cubuk-parca, .durum-rozet).d-kalfa { --parca: #47ad55; }
:is(.cubuk-parca, .durum-rozet).d-bordro { --parca: #9ed7f5; }
:is(.cubuk-parca, .durum-rozet).d-odeme-bekliyor { --parca: #ee2f22; }
:is(.cubuk-parca, .durum-rozet).d-mizan { --parca: #8a5a1e; }
:is(.cubuk-parca, .durum-rozet).d-sistemde { --parca: #e0c31a; }
:is(.cubuk-parca, .durum-rozet).d-kdv2-var { --parca: #8b2f38; }
:is(.cubuk-parca, .durum-rozet).d-kdv2-odeme { --parca: #8b2f38; }
:is(.cubuk-parca, .durum-rozet).d-gonderildi { --parca: #17693a; }
:is(.cubuk-parca, .durum-rozet).d-beyan-gonderildi { --parca: #c55a11; }
:is(.cubuk-parca, .durum-rozet).d-mahsup { --parca: #ddd0f5; }
:is(.cubuk-parca, .durum-rozet).d-diger { --parca: #c0c0c6; }

/* Yüzdelik genişlikler — satır içi stil yerine sınıfla. */
.cubuk-parca.w0 { width: 0%; }
.cubuk-parca.w1 { width: 1%; }
.cubuk-parca.w2 { width: 2%; }
.cubuk-parca.w3 { width: 3%; }
.cubuk-parca.w4 { width: 4%; }
.cubuk-parca.w5 { width: 5%; }
.cubuk-parca.w6 { width: 6%; }
.cubuk-parca.w7 { width: 7%; }
.cubuk-parca.w8 { width: 8%; }
.cubuk-parca.w9 { width: 9%; }
.cubuk-parca.w10 { width: 10%; }
.cubuk-parca.w11 { width: 11%; }
.cubuk-parca.w12 { width: 12%; }
.cubuk-parca.w13 { width: 13%; }
.cubuk-parca.w14 { width: 14%; }
.cubuk-parca.w15 { width: 15%; }
.cubuk-parca.w16 { width: 16%; }
.cubuk-parca.w17 { width: 17%; }
.cubuk-parca.w18 { width: 18%; }
.cubuk-parca.w19 { width: 19%; }
.cubuk-parca.w20 { width: 20%; }
.cubuk-parca.w21 { width: 21%; }
.cubuk-parca.w22 { width: 22%; }
.cubuk-parca.w23 { width: 23%; }
.cubuk-parca.w24 { width: 24%; }
.cubuk-parca.w25 { width: 25%; }
.cubuk-parca.w26 { width: 26%; }
.cubuk-parca.w27 { width: 27%; }
.cubuk-parca.w28 { width: 28%; }
.cubuk-parca.w29 { width: 29%; }
.cubuk-parca.w30 { width: 30%; }
.cubuk-parca.w31 { width: 31%; }
.cubuk-parca.w32 { width: 32%; }
.cubuk-parca.w33 { width: 33%; }
.cubuk-parca.w34 { width: 34%; }
.cubuk-parca.w35 { width: 35%; }
.cubuk-parca.w36 { width: 36%; }
.cubuk-parca.w37 { width: 37%; }
.cubuk-parca.w38 { width: 38%; }
.cubuk-parca.w39 { width: 39%; }
.cubuk-parca.w40 { width: 40%; }
.cubuk-parca.w41 { width: 41%; }
.cubuk-parca.w42 { width: 42%; }
.cubuk-parca.w43 { width: 43%; }
.cubuk-parca.w44 { width: 44%; }
.cubuk-parca.w45 { width: 45%; }
.cubuk-parca.w46 { width: 46%; }
.cubuk-parca.w47 { width: 47%; }
.cubuk-parca.w48 { width: 48%; }
.cubuk-parca.w49 { width: 49%; }
.cubuk-parca.w50 { width: 50%; }
.cubuk-parca.w51 { width: 51%; }
.cubuk-parca.w52 { width: 52%; }
.cubuk-parca.w53 { width: 53%; }
.cubuk-parca.w54 { width: 54%; }
.cubuk-parca.w55 { width: 55%; }
.cubuk-parca.w56 { width: 56%; }
.cubuk-parca.w57 { width: 57%; }
.cubuk-parca.w58 { width: 58%; }
.cubuk-parca.w59 { width: 59%; }
.cubuk-parca.w60 { width: 60%; }
.cubuk-parca.w61 { width: 61%; }
.cubuk-parca.w62 { width: 62%; }
.cubuk-parca.w63 { width: 63%; }
.cubuk-parca.w64 { width: 64%; }
.cubuk-parca.w65 { width: 65%; }
.cubuk-parca.w66 { width: 66%; }
.cubuk-parca.w67 { width: 67%; }
.cubuk-parca.w68 { width: 68%; }
.cubuk-parca.w69 { width: 69%; }
.cubuk-parca.w70 { width: 70%; }
.cubuk-parca.w71 { width: 71%; }
.cubuk-parca.w72 { width: 72%; }
.cubuk-parca.w73 { width: 73%; }
.cubuk-parca.w74 { width: 74%; }
.cubuk-parca.w75 { width: 75%; }
.cubuk-parca.w76 { width: 76%; }
.cubuk-parca.w77 { width: 77%; }
.cubuk-parca.w78 { width: 78%; }
.cubuk-parca.w79 { width: 79%; }
.cubuk-parca.w80 { width: 80%; }
.cubuk-parca.w81 { width: 81%; }
.cubuk-parca.w82 { width: 82%; }
.cubuk-parca.w83 { width: 83%; }
.cubuk-parca.w84 { width: 84%; }
.cubuk-parca.w85 { width: 85%; }
.cubuk-parca.w86 { width: 86%; }
.cubuk-parca.w87 { width: 87%; }
.cubuk-parca.w88 { width: 88%; }
.cubuk-parca.w89 { width: 89%; }
.cubuk-parca.w90 { width: 90%; }
.cubuk-parca.w91 { width: 91%; }
.cubuk-parca.w92 { width: 92%; }
.cubuk-parca.w93 { width: 93%; }
.cubuk-parca.w94 { width: 94%; }
.cubuk-parca.w95 { width: 95%; }
.cubuk-parca.w96 { width: 96%; }
.cubuk-parca.w97 { width: 97%; }
.cubuk-parca.w98 { width: 98%; }
.cubuk-parca.w99 { width: 99%; }
.cubuk-parca.w100 { width: 100%; }

/* Tür başına vade sütunu: çubuk satırı dört sütuna çıktı. */
.cubuk-sat { grid-template-columns: 8rem 1fr 4.5rem 9rem; }
.cubuk-vade {
  text-align: right;
  color: var(--soluk);
  font-size: 0.76rem;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.cubuk-vade.gecti { color: var(--uyari); font-weight: 600; }
.gun-rozet.tamam { background: #e7f3ea; color: #17693a; }

@media (max-width: 60rem) {
  .cubuk-sat { grid-template-columns: 6rem 1fr 3.6rem 7rem; }
}



/* ===================================================================
   Renkli kipte de çizgiler sade kiptekiyle aynı (faz30n)

   İki kipin kenarlıkları farklıydı ve fark ölçülebilir: ekran
   görüntüsünden piksel okudum —

     sade kip    ayırıcı çizgi #eef2f7 (silik)
     renkli kip  ayırıcı çizgi #b9b9c2 (koyu gri)

   Sade kip için yazılmış "çizgiler incelsin" kuralı yalnız o kipe
   bağlıydı; renkli kipte eski koyu çizgiler duruyordu. Dolgu renkle
   birleşince ekran ızgara olmaktan çıkıp renk bloklarına dönüyordu.

   Artık çizgi her iki kipte de aynı: renkli kipte DEĞİŞEN TEK ŞEY
   hücrenin içindeki renk. Bütün ızgara ekranlarında geçerli.
   =================================================================== */
table.izgara td,
table.izgara th { border-color: var(--cizgi-2); }


/* Sütun çipleri: açık sütun DOLU lacivert + beyaz yazı, kapalı sütun
   beyaz zemin + lacivert yazı (faz30n).

   İki değişiklik birden:

   1. faz28b'de çipler dolgudan çerçeveye çevrilmişti ("on sekiz
      sütunda hepsi dolu olunca mavi duvar oluyor" diye). Kullanımda
      tersi çıktı: açık sütunun dolu olması bakışta anlaşılıyor.
   2. Kapalı çipin üstü çiziliydi; gerekçesi "renk tek başına anlam
      taşımasın"dı. Dolu / boş ayrımı zaten renkten bağımsız bir
      işaret — tek renkli çıktıda da, renk körlüğünde de okunuyor.
      Üstü çizili yazı silik ve okunaksız duruyordu.

   Kilitli ve "hepsini göster" çipleri kuralın dışında: onlar bir
   sütunun açık/kapalı durumunu göstermiyor. */
.sutun-cip:not(.kilit):not(.hepsi):not(.kapali) {
  background: var(--lacivert);
  border-color: var(--lacivert);
  color: #fff;
  font-weight: 550;
}

.sutun-cip:not(.kilit):not(.hepsi):not(.kapali):hover {
  background: var(--lacivert);
  color: #fff;
  filter: brightness(1.12);
}

.sutun-cip.kapali {
  background: var(--yuzey);
  border-color: var(--lacivert);
  color: var(--lacivert);
  font-weight: 550;
  text-decoration: none;
}

.sutun-cip.kapali:hover {
  background: var(--mavi-a);
  border-color: var(--lacivert);
  color: var(--lacivert);
}


/* ===================================================================
   Tahakkukta sütun genişlikleri (faz30o)

   KDV sütunu tutarı kesiyordu ("10.79" — aslı 10.796,41), mükellef
   sütununda ise bir sürü boşluk duruyordu.

   Sebep: tablo otomatik yerleşime alınırken (faz28n) tutar
   sütunlarının alt sınırları da sıfırlanmıştı (min-width: 0). Tutar
   hücresinin içinde bir <input> var; input sıfıra kadar ezilebildiği
   için tarayıcı artan yeri ünvan sütununa veriyor, rakamı kırpıyordu.

   Doğrusu: otomatik yerleşim KALIYOR (sabit yerleşim eski
   kırpılmaların sebebiydi), ama her tutar sütununun kendi rakam
   uzunluğuna göre bir ALT SINIRI var — sayfa zaten tg-w6 … tg-w14
   sınıflarıyla söylüyor. Ünvan sütununun üst sınırı var, artan yer
   önce rakamlara gidiyor.
   =================================================================== */
body.panel > main.izgara-ekran table.izgara.tahakkuk th.sabit-sutun,
body.panel > main.izgara-ekran table.izgara.tahakkuk td.sabit-sutun {
  width: auto;
  min-width: 11rem;
  max-width: 17rem;
}

table.tahakkuk .tg-w6,
table.tahakkuk .tg-w7,
table.tahakkuk .tg-w8,
table.tahakkuk .tg-w9  { width: auto; min-width: 5rem; }
table.tahakkuk .tg-w10 { width: auto; min-width: 5.6rem; }
table.tahakkuk .tg-w11 { width: auto; min-width: 6.1rem; }
table.tahakkuk .tg-w12 { width: auto; min-width: 6.6rem; }
table.tahakkuk .tg-w13 { width: auto; min-width: 7.1rem; }
table.tahakkuk .tg-w14 { width: auto; min-width: 7.6rem; }

/* Toplam sütunu: "118.864,27 ₺" tek satırda kalsın, alt satıra
   düşünce satır iki kat oluyordu. */
table.tahakkuk .satir-toplam {
  min-width: 7.2rem;
  white-space: nowrap;
}

/* Rakam alanı hücreyi doldursun; ezilip kırpılmasın. */
table.tahakkuk td.tutar-hucre input { width: 100%; min-width: 0; }


/* ===================================================================
   İşaret kutusu mükellefin grup rengiyle (faz30p)

   Grup bilgisi ya satırı boyayarak ya ayrı bir sütunla veriliyordu;
   ikisi de ekranda fazladan renk demek. İşaret kutusunun içi zaten
   boş duruyordu — grubu oraya koyduk: kutu işaretlenince mükellefin
   grup rengiyle doluyor.

   Renkler şeritteki grup çipleriyle aynı (gc-g-*), yani göz bir
   yerden öğrendiğini ötekinde tanıyor. Kutunun tik rengini tarayıcı
   zemine göre kendi seçiyor; açık renkte siyah, koyuda beyaz.
   =================================================================== */
input[type="checkbox"].grup-kutu { accent-color: var(--grup-nk, var(--lacivert)); }

input[type="checkbox"].grup-kutu.g-sirket      { --grup-nk: #e8e06a; }
input[type="checkbox"].grup-kutu.g-sahis1      { --grup-nk: #7fb2e5; }
input[type="checkbox"].grup-kutu.g-sahis2      { --grup-nk: #86c79a; }
input[type="checkbox"].grup-kutu.g-danismanlik { --grup-nk: #c9a0dc; }
input[type="checkbox"].grup-kutu.g-gayrifaal   { --grup-nk: #c2c6cc; }
input[type="checkbox"].grup-kutu.g-kapanan     { --grup-nk: #9aa0a6; }
input[type="checkbox"].grup-kutu.g-yok         { --grup-nk: #d8dce2; }

/* İşaretsizken de grubu göstersin: çerçevesi grup renginde. */
input[type="checkbox"].grup-kutu:not(:checked) {
  outline: 2px solid var(--grup-nk, var(--cizgi));
  outline-offset: -2px;
  border-radius: 3px;
}


/* ===================================================================
   BÜTÜN IZGARALAR İÇERİĞE GÖRE ÖLÇÜLÜYOR (faz30q)

   Tahakkukta tek tek düzelttiğim şey aslında panelin tamamının
   sorunuydu: ızgara ekranlarında yerleşim SABİTTİ
   (table-layout: fixed) ve mükellef sütununa 22rem veriliyordu.
   Sabit yerleşimde bir sütuna verilen genişlik ötekilerden kısılıyor;
   sonuç, ünvan sütunu yarı boş dururken tutarların ve durumların
   sıkışması oldu.

   Artık ölçü içerikten geliyor:

     · ünvan sütunu ihtiyacı kadar (en az 11rem, en çok 22rem),
     · rakam ve durum sütunlarının kendi alt sınırları var, altına
       inip kırpılmıyorlar,
     · artan yer, ihtiyacı olan sütuna gidiyor.

   Alan/açılır kutu taşıyan hücrelere alt sınır şart: içlerindeki
   <input> ve <select> sıfıra kadar ezilebiliyor, tarayıcı da o
   sütunu söndürüp yeri başkasına veriyordu (tahakkukta KDV sütununun
   "10.79" diye kırpılmasının sebebi buydu).

   KDV Kontrol detayı bunun dışında: on sekiz sütunu ve uzun hesap
   adlarıyla içerik ölçüsüne bırakılırsa tablo kabı taşırıyor. Orada
   sabit yerleşim bilerek kalıyor (faz30a'da ölçülüp ayarlanmıştı).
   =================================================================== */
body.panel > main.izgara-ekran table.izgara { table-layout: auto; }

body.panel > main.izgara-ekran table.izgara.kdv-detay,
body.panel > main.izgara-ekran table.izgara.kdv-ozet { table-layout: fixed; }

body.panel > main.izgara-ekran table.izgara th.sabit-sutun,
body.panel > main.izgara-ekran table.izgara td.sabit-sutun {
  width: auto;
  min-width: 11rem;
  max-width: 22rem;
}

/* KDV Kontrol'de eski ölçüler duruyor (sabit yerleşim). */
body.panel > main.izgara-ekran table.izgara.kdv-detay th.sabit-sutun,
body.panel > main.izgara-ekran table.izgara.kdv-detay td.sabit-sutun {
  width: 7.5rem;
  min-width: 7.5rem;
  max-width: 9rem;
}

/* İçinde alan ya da açılır kutu olan hücrelerin alt sınırları. */
table.izgara td.hucre        { min-width: 5.4rem; }
table.izgara td.durum-hucre  { min-width: 8.5rem; }
table.izgara td.odeme-hucre  { min-width: 8.5rem; }
table.izgara td.yuk-hucre    { min-width: 4.2rem; }
table.izgara td.tarih-hucre  { min-width: 7.4rem; }
table.izgara td.metin-hucre  { min-width: 8rem; }
table.izgara td.tutar-hucre  { min-width: 5rem; }

/* Başlığı sütundan geniş olan türlerde başlık sarabiliyor; alt sınırı
   başlık değil içerik belirlesin diye başlıklara ayrıca dokunmuyoruz. */

/* Dar pencerede yeri önce ünvan sütunu bırakıyor: ünvan kısalınca
   ellipsis çıkıyor, rakam ve durum kırpılmıyor. */
@media (max-width: 105rem) {
  body.panel > main.izgara-ekran table.izgara th.sabit-sutun,
  body.panel > main.izgara-ekran table.izgara td.sabit-sutun { max-width: 16rem; }
}

@media (max-width: 85rem) {
  body.panel > main.izgara-ekran table.izgara th.sabit-sutun,
  body.panel > main.izgara-ekran table.izgara td.sabit-sutun {
    min-width: 9.5rem;
    max-width: 13rem;
  }
}


/* ===================================================================
   Ödemeler: ünvan hücresi işe yarıyor (faz30q)

   Hücre rowspan'li ve geniş; içinde yalnız ad ile vergi no duruyor,
   kalanı boşluktu. O boşluğa bu ekranın en çok sorulan iki rakamı ve
   bir kısayol kondu:

     · mükellefin bu dönemdeki toplamı
     · daha ödenmemiş kısmı (kalan)
     · "hepsi ödendi" — açık kalemleri tek tıkla işaretler

   Düğme kaydetmiyor; Kaydet'e basılana kadar geri alınabilir.
   =================================================================== */
td.mukellef-hucre .mk-ozet {
  display: flex;
  flex-wrap: wrap;
  gap: 0 0.45rem;
  margin-top: 0.15rem;
  font-size: 0.74rem;
  font-variant-numeric: tabular-nums;
}

.mk-ozet .mk-toplam { color: var(--ikincil); font-weight: 600; }
.mk-ozet .mk-kalan  { color: var(--uyari); font-weight: 600; }
.mk-ozet .mk-tamam  { color: var(--onay); }

button.mk-hepsi {
  width: auto;
  margin-top: 0.3rem;
  padding: 0.1rem 0.5rem;
  border: 1px dashed var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey);
  color: var(--ikincil);
  font: inherit;
  font-size: 0.72rem;
  cursor: pointer;
}

button.mk-hepsi:hover {
  border-style: solid;
  border-color: var(--onay);
  color: var(--onay);
}

button.mk-hepsi:disabled {
  border-style: solid;
  border-color: var(--onay);
  color: var(--onay);
  cursor: default;
}

/* Ünvan hücresi artık üç satır taşıyor: rowspan'li hücrede içerik
   üstte dursun, ilk kalemin hizasında başlasın. */
td.mukellef-hucre.ad-hucre { vertical-align: top; padding-top: 0.5rem; }


/* ===================================================================
   Izgara ekranlarında bloklar arası boşluk (faz30q)

   Araç çubuğu ile ilk kart arasında 38 piksel gri bant vardı: 14
   piksel main dolgusu + 24 piksel kartın kendi üst boşluğu. Kart ile
   ızgara arasında ise HİÇ boşluk yoktu — ikisi birbirine yapışıyordu.
   Yani boşluk hem fazlaydı hem dengesiz.

   Artık boşluğu tek yer veriyor: main'in kendi aralığı. Bloklar kendi
   üst/alt boşluklarını bırakıyor, aralarında da altlarında da aynı
   ölçü kalıyor.
   =================================================================== */
body.panel > main.izgara-ekran {
  padding-top: 0.55rem;
  gap: 0.55rem;
}

body.panel > main.izgara-ekran > *,
body.panel > main.izgara-ekran > form > * {
  margin-top: 0;
  margin-bottom: 0;
}


/* ===================================================================
   Dönem okları ve Excel düğmesi (faz30s)

   Önceki/sonraki ay düğmeleri ay adını uzun uzun yazıyordu
   ("‹ Ağustos 2026"), üç düğme araç çubuğunun yarısını yiyordu. Artık
   yalnız ok; ay adı üzerine gelince çıkıyor. Ortadaki dolu düğme
   içinde bulunulan dönemi yazmaya devam ediyor — asıl bilgi o.

   Excel düğmesi de kendi rengini aldı: Excel yeşili, üzerine gelince
   "Excel'e aktar" yazıyor (başlık zaten title'da).
   =================================================================== */
.donem-dugme.ok {
  padding: 0.3rem 0.62rem;
  font-size: 0.95rem;
  line-height: 1.1;
  color: var(--ikincil);
}

.donem-dugme.ok.yok {
  color: #c0c0c6;
  border-style: dashed;
  cursor: default;
}

.ust-anahtar.simge {
  border-color: #1d6f42;
  color: #1d6f42;
  background: var(--yuzey);
}

.ust-anahtar.simge:hover {
  background: #1d6f42;
  border-color: #1d6f42;
  color: #fff;
}

/* Grup başlığı yatay kaydırmada yerinde kalıyor (faz30s).

   Satırın hücresi zaten yapışkandı ama hücre tablo kadar geniş: kutu
   yerinde duruyor, İÇİNDEKİ YAZI kaydırmayla sola kayıp ekrandan
   çıkıyordu. Yapışkan olması gereken yazının kendisiymiş. */
tr.grup-satir > th > .yapisik,
tr.grup-basligi > th > .yapisik {
  position: sticky;
  left: 0.85rem;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

/* Tahakkukta mükellef hücresi renkli kipte grup rengiyle, sade kipte
   beyaz (faz30s). Satır artık grup sınıfını taşıyor. */
:root[data-hucre="renkli"] table.tahakkuk .sabit-sutun.ad-hucre {
  background: var(--satir, var(--yuzey));
}
:root:not([data-hucre="renkli"]) table.tahakkuk .sabit-sutun.ad-hucre {
  background: var(--yuzey);
}

/* ===================================================================
   KDV Kontrol detayında işlem sütunu (faz30s)

   Sütun 1 piksele inip düğmeleri yan sütunların üstüne taşırıyordu —
   ekran görüntüsünde fiş no hücresinin içinde duruyorlardı.

   Sebep: bu tablo SABİT yerleşimli ve orada min-width çalışmıyor;
   sütunun genişliğini yalnız width belirliyor. width: 1px yazılıydı,
   yani "içeriğe göre daral" — sabit yerleşimde bunun karşılığı
   1 piksel. Açıkça ölçü veriliyor. */
body.panel > main.izgara-ekran table.izgara.kdv-detay th.kd-islem,
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-islem {
  width: 9.4rem;
  min-width: 9.4rem;
  max-width: 9.4rem;
}

/* Sabit yerleşimli KDV detayında hücreler sütunun dışına taşmasın:
   uzun evrak no ve hesap adları yan sütunun üstüne biniyordu. Başlık
   satırı hariç — oradaki süzgeç kutularının taşması gerekiyor. */
body.panel > main.izgara-ekran table.izgara.kdv-detay tbody td {
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Ödeme durumunun rengi seçimde de görünsün (faz30s): sade kipte
   hücre boyanmadığı için yazının rengi tek işaret. */
td.odeme-hucre.o-odendi     .odeme-secim { color: #17693a; }
td.odeme-hucre.o-kendisi    .odeme-secim { color: #1e5f8f; }
td.odeme-hucre.o-odemeyecek .odeme-secim { color: #6a6a72; }

/* İlerleme kartı başlığındaki vade şeridi (faz30s). */
.vade-serit {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  min-width: 0;
}

.vade-cip {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.1rem 0.5rem;
  border: 1px solid var(--cizgi);
  border-radius: 20px;
  background: var(--yuzey);
  color: var(--ikincil);
  font-size: 0.72rem;
  white-space: nowrap;
}

.vade-cip b { font-weight: 600; color: var(--murekkep); font-variant-numeric: tabular-nums; }
.vade-cip.yakin { border-color: var(--lacivert); background: var(--mavi-a); }
.vade-cip.gecti { border-color: var(--uyari); color: var(--uyari); }
.vade-cip.gecti b { color: var(--uyari); }


/* ===================================================================
   faz30t — HARF DÜĞMESİ, GRUP MENÜSÜ

   "Gruplandır" yazısı araç çubuğunda on iki karakter yer tutuyordu ve
   her ekranda tekrarlanıyordu. Yerine tek harf: G. Kare görünümlü,
   ötekilerle aynı yükseklikte, üzerine gelince ne olduğunu yazıyor.
   =================================================================== */

.ust-anahtar.harf {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.85rem;
  padding-left: 0.4rem;
  padding-right: 0.4rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* Grup açılır menüsü de müşavir menüsüyle aynı dilde olsun: köşeleri
   keskin kalmıştı, araç çubuğundaki tek köşeli öğeydi. */
.grup-secim-menu {
  padding: 0.3rem 0.55rem;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey);
  color: var(--murekkep);
  font-size: 0.82rem;
  font-weight: 400;
}
.grup-secim-menu:hover { border-color: var(--soluk); }

.ust-araclar .grup-secim-menu { padding: 0.3rem 0.55rem; font-size: 0.82rem; }


/* -------------------------------------------------------------------
   faz30t — dipnotlar sayfaya yayılsın

   .dipnot giriş ekranındaki ortalanmış küçük not için yazılmıştı:
   23rem genişlik, üstünde 2.5rem boşluk. Aynı sınıf KDV kontrol ve
   mizan ekranlarında da kullanılınca üç satırlık bir açıklama altı
   satıra çıkıyor, iki dipnotun arası da avuç içi kadar boşluk oluyordu.
   Panel içinde dipnot tablonun altında akan bir şerit: tam genişlik,
   ince boşluk. Giriş ekranı eski haliyle kalıyor.
   ------------------------------------------------------------------- */

body.panel .dipnot {
  max-width: none;
  margin: 0.6rem 0 0;
  text-align: left;
  line-height: 1.45;
}

body.panel .dipnot + .dipnot { margin-top: 0.35rem; }


/* -------------------------------------------------------------------
   faz30u — sekmedeki marka işareti

   "Hesap bakiyeleri" verinin nereden geldiğini söylemiyordu; sekme
   artık "Zirve Mizan" ve başında küçük bir işaret taşıyor. Köke
   zirve.png konursa gerçek logo, yoksa nötr bir Z rozeti.
   ------------------------------------------------------------------- */

.marka-simge {
  display: inline-block;
  width: 0.95rem;
  height: 0.95rem;
  margin-right: 0.35rem;
  object-fit: contain;
  vertical-align: -0.15rem;
}

.marka-rozet {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1rem;
  height: 1rem;
  margin-right: 0.35rem;
  border-radius: 3px;
  background: var(--lacivert);
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1;
  vertical-align: -0.15rem;
}

.serit-cip.secili .marka-rozet { background: var(--lacivert); }

/* Çipler zaten gap ile boşluk veriyor; işaret kendi boşluğunu eklemesin. */
.serit-cip .marka-rozet,
.serit-cip .marka-simge { margin-right: 0; }


/* ===================================================================
   faz30x — KDV KONTROL: AYRINTI SATIRI, ESNEK SÜTUNLAR

   İki sorun birlikte çözülüyor:

   1) Sütun kapatınca kalanlar genişlemiyordu. Sebep sabit yerleşim
      (table-layout: fixed): orada sütun genişliğini içerik değil
      yazılı ölçü belirliyor, gizlenen sütunun yeri de kalanlara
      dağılmıyordu. Faz30a'da sabit yerleşim, on sekiz sütun kabı
      taşırmasın diye konmuştu; artık sütunların yarısı varsayılan
      olarak kapalı geldiği için o gerekçe kalktı.

   2) Kapatılan sütunun içeriği kayboluyordu. Artık satırın sonundaki
      ⋯ düğmesi o evrağın gizli alanlarını satırın altında açıyor.
   =================================================================== */

body.panel > main.izgara-ekran table.izgara.kdv-detay {
  table-layout: auto;
  width: max-content;
  min-width: 100%;
}

/* Sabit ölçüler kalktı: sütunlar içeriğine göre yer alsın. Ünvan ve
   hesap adı hâlâ sınırlı — onlar tek başına tabloyu iki katına
   çıkarabiliyor. */
/* Durum sütunu gereğinden genişti: içinde tek bir rozet var ("Fiş",
   "Tamam", "Faturada yok"). Kazanılan yer ünvana ve hesap adına
   gidiyor — onlar üç noktayla kesiliyordu. */
body.panel > main.izgara-ekran table.izgara.kdv-detay th.sabit-sutun,
body.panel > main.izgara-ekran table.izgara.kdv-detay td.sabit-sutun {
  width: auto;
  min-width: 4.6rem;
  max-width: 7rem;
  padding-left: 0.45rem;
  padding-right: 0.45rem;
}

body.panel > main.izgara-ekran table.izgara.kdv-detay th.kd-islem,
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-islem {
  width: auto;
  min-width: 8.6rem;
  max-width: none;
}

body.panel > main.izgara-ekran table.izgara.kdv-detay td.ad-hucre {
  max-width: 17rem;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---------- Izgara üstü şerit: ayrıntı ve toplu işaret ---------- */

.izgara-ust-serit > * { flex: none; width: auto; }

.izgara-ust-serit {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.75rem;
  margin: 0 0 0.35rem;
}

.izgara-ust-serit .toplu-form {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0;
}

/* Toplu işaret düğmeleri: yüzlerce satırı değiştiriyorlar, düğme gibi
   değil uyarı gibi dursunlar. */
.toplu-form button.ust-anahtar {
  border-color: var(--uyari);
  color: var(--uyari);
  background: var(--yuzey);
  cursor: pointer;
}
.toplu-form button.ust-anahtar:hover {
  background: var(--uyari);
  border-color: var(--uyari);
  color: #fff;
}

#ayrinti-hepsi { cursor: pointer; }

/* ---------- Satır sonundaki ayrıntı düğmesi ---------- */

table.kdv-detay th.kd-ayrinti-dug,
table.kdv-detay td.kd-ayrinti-dug {
  width: 2rem;
  min-width: 2rem;
  text-align: center;
  padding-left: 0.2rem;
  padding-right: 0.2rem;
}

.ayrinti-ac {
  display: inline-block;
  min-width: 1.5rem;
  line-height: 1.1;
  letter-spacing: 0.08em;
  text-decoration: none;
  text-align: center;
}
.ayrinti-ac.acik {
  background: var(--mavi-a);
  border-color: var(--lacivert);
  color: var(--murekkep);
}

/* ---------- Satırın altındaki ayrıntı kutusu ---------- */

/* Ayrıntı satırı önce CSS ile kapalı; :target ile (JavaScript'siz de)
   ya da .acik sınıfıyla (panel.js) açılıyor. */
table.kdv-detay tr.kd-ayrinti-satir { display: none; }

table.kdv-detay tr.kd-ayrinti-satir:target,
table.kdv-detay tr.kd-ayrinti-satir.acik { display: table-row; }

table.kdv-detay tr.kd-ayrinti-satir > td {
  padding: 0.35rem 0.85rem 0.5rem;
  background: var(--yuzey-2);
  white-space: normal;
}

.ayrinti-kutu {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

.ayrinti-grup {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 1.1rem;
}

/* ---------- E-belgenin içeriği (faz33f) ----------
   Defter kalemlerinin altında, ince bir çizgiyle ayrılmış küçük bir
   blok. Faturanın kendisi burada: özet, oran dökümü, kalemler.
   "Deftere işlenmemiş" satırda yukarısı boş kalıyor, bakılacak yer
   burası oluyor. */

.ayrinti-ebelge {
  margin-top: 0.45rem;
  padding-top: 0.4rem;
  border-top: 1px dashed var(--cizgi);
}
.ayrinti-ebelge .ayrinti-ad { color: var(--lacivert); }

table.ebelge-kalem {
  width: auto;
  min-width: min(42rem, 100%);
  margin: 0.4rem 0 0.1rem;
  border-collapse: collapse;
  font-size: 0.74rem;
}
table.ebelge-kalem th,
table.ebelge-kalem td {
  padding: 0.18rem 0.6rem 0.18rem 0;
  border-bottom: 1px solid var(--cizgi);
  text-align: left;
  vertical-align: top;
}
table.ebelge-kalem th {
  color: var(--soluk);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  font-size: 0.68rem;
}
table.ebelge-kalem td.sag,
table.ebelge-kalem th.sag { text-align: right; padding-right: 0; padding-left: 0.6rem; }
table.ebelge-kalem tr:last-child td { border-bottom: none; }
table.ebelge-kalem .sayi { font-variant-numeric: tabular-nums; }

.ayrinti-alan {
  display: inline-flex;
  align-items: baseline;
  gap: 0.3rem;
  font-size: 0.74rem;
}

.ayrinti-ad {
  color: var(--soluk);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 0.67rem;
}

.ayrinti-deger {
  color: var(--murekkep);
  font-weight: 550;
  font-variant-numeric: tabular-nums;
}

/* Tarayıcıların çoğu td/tr için hidden'ı display:table-cell ile
   eziyor; ızgaralarda sütun gizleme buna dayanıyor. */
table.izgara td[hidden],
table.izgara th[hidden],
table.izgara tr[hidden] { display: none; }


/* -------------------------------------------------------------------
   faz30z — ödemelerde kendiliğinden kayıt

   Alt satır artık üç parça taşıyor: durum yazısı, açıklama ve
   JavaScript kapalıyken görünen yedek Kaydet düğmesi.
   ------------------------------------------------------------------- */

.kaydet-not {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.8rem;
}

/* hidden özniteliği düğmelerde de kesin çalışsın: panel.js kendiliğinden
   kayıt devreye girince yedek düğmeyi böyle gizliyor. */
.kaydet-not button[hidden] { display: none; }

#odeme-durum-yazi:empty { display: none; }

/* Kaydediliyor / kaydedildi işareti ödeme hücresinde de görünsün:
   hücre zaten renkli, çerçeve içeriden çiziliyor. */
td.odeme-hucre.kaydediliyor { box-shadow: inset 0 0 0 2px var(--soluk); }
td.odeme-hucre.kaydedildi   { box-shadow: inset 0 0 0 2px var(--onay); }
td.odeme-hucre.kayit-hatasi { box-shadow: inset 0 0 0 2px var(--uyari); }


/* -------------------------------------------------------------------
   faz31a — sade kipte "yükümlülüğü yok" hücresi

   Renkli kipte bütün hücreler boyalı olduğu için soluk gri kapalı
   hücre kendiliğinden ayrılıyordu. Sade kipte her şey beyaz zeminde;
   oradaki gri fark edilmiyor, KDV 2 yükümlülüğü olmayan mükellef ile
   yükümlü olup henüz işaretlenmemiş olan aynı görünüyordu — ikisi
   bambaşka şey.

   Çözüm çizgi: hücre ince çapraz taramayla doluyor. Tarama "burada
   yapılacak iş yok" demek, boş hücre ise "yapılacak ama henüz
   yapılmadı". Renk görmeyen göz de ayırt ediyor, yazdırmada da çıkıyor.
   ------------------------------------------------------------------- */

:root:not([data-hucre="renkli"]) table.izgara td.hucre.kapali,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-kapali-acik,
:root:not([data-hucre="renkli"]) table.izgara tbody tr:hover td.hucre.kapali,
:root:not([data-hucre="renkli"]) table.izgara tbody tr:hover td.hucre.d-kapali-acik {
  background-color: var(--yuzey-2);
  background-image: repeating-linear-gradient(
      135deg,
      transparent 0 5px,
      #d7dbe3 5px 6px);
}

/* Renkli kipte de tarama olsun — orada zaten gri ama aynı dili
   konuşsunlar; renk körü için de ikinci işaret oluyor. */
:root[data-hucre="renkli"] table.izgara td.hucre.kapali,
:root[data-hucre="renkli"] table.izgara td.hucre.d-kapali-acik {
  background-image: repeating-linear-gradient(
      135deg,
      transparent 0 5px,
      #dcdcd8 5px 6px);
}

/* KDV 2'nin kendine özgü hâli: mükellef KDV 2'den sorumlu DEĞİL ama
   hücre yine de yazılabiliyor (tevkifatlı bir alış çıkarsa beyan
   gerekiyor — yükümlülük listesine bakmadan işaretlenebilsin diye).
   O yüzden bu hücre "kapalı" değil, sınıfı d-kapali-acik.

   Tarama bu hücrede de var — sorumlu olmadığımızı söylüyor — ama
   BAŞKA HİÇBİR ŞEY DEĞİŞMİYOR: kutu yine açılıyor, seçim yine
   yapılıyor. Bir şey seçildiği anda sınıf gerçek duruma dönüyor ve
   tarama kalkıyor, yani dolu hücre normal görünüyor. */


/* ===================================================================
   faz31d — EDM FATURA EKRANI IZGARAYA GEÇTİ

   Ekran main.genis içindeydi: 76rem'de duruyor, geniş ekranda sağında
   solunda boşluk kalıyordu. Artık panelin öteki ızgara ekranlarıyla
   aynı kalıpta — sayfayı dolduruyor, tablo kendi içinde kayıyor.

   Satır altı ayrıntı kutusu da KDV Kontrol'den buraya taşındı; o yüzden
   kuralları tabloya özel olmaktan çıkarıp ortaklaştırıyoruz.
   =================================================================== */

body.panel > main.izgara-ekran table.izgara.edm-belge {
  table-layout: auto;
  width: max-content;
  min-width: 100%;
}

/* Uzun unvan ve kalem adı tabloyu tek başına iki katına çıkarabiliyor. */
body.panel > main.izgara-ekran table.izgara.edm-belge td.ad-hucre {
  max-width: 22rem;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---------- Ayrıntı satırı: artık iki ekranda ortak ---------- */

table.izgara th.kd-ayrinti-dug,
table.izgara td.kd-ayrinti-dug {
  width: 2rem;
  min-width: 2rem;
  text-align: center;
  padding-left: 0.2rem;
  padding-right: 0.2rem;
}

table.izgara tr.kd-ayrinti-satir { display: none; }

table.izgara tr.kd-ayrinti-satir:target,
table.izgara tr.kd-ayrinti-satir.acik { display: table-row; }

table.izgara tr.kd-ayrinti-satir > td {
  padding: 0.35rem 0.85rem 0.5rem;
  background: var(--yuzey-2);
  white-space: normal;
}


/* faz31d — oran süzgeci kutusu */
.suzgec-kutu label.onay .sayi {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  min-width: 3.2rem;
  display: inline-block;
}

#oran-disi-sec[disabled] { opacity: 0.55; cursor: default; }


/* -------------------------------------------------------------------
   faz31d — ödemelerde ödeme numarası sütunu

   Vergi türüne göre değişen tek sütun: SGK'da sicil, Bağkur'da TC
   kimlik, vergilerde vergi numarası. Etiket küçük ve soluk, numara
   okunaklı; yanında kopyala düğmesi.
   ------------------------------------------------------------------- */

td.odeme-no {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

td.odeme-no .on-etiket {
  display: block;
  color: var(--soluk);
  font-size: 0.66rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  line-height: 1.2;
}

td.odeme-no .on-deger {
  font-weight: 600;
  color: var(--murekkep);
}

button.kopyala {
  width: auto;
  margin: 0 0 0 0.3rem;
  padding: 0.05rem 0.3rem;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey);
  color: var(--ikincil);
  font-size: 0.78rem;
  line-height: 1.2;
  cursor: pointer;
}

button.kopyala:hover { border-color: var(--lacivert); color: var(--murekkep); }
button.kopyala.kopyalandi { border-color: var(--onay); color: var(--onay); }
button.kopyala.kopya-hatasi { border-color: var(--uyari); color: var(--uyari); }

/* Şifreli numara: maske soluk, kısa süre açıldığında vurgulu. */
td.odeme-no .on-deger.maskeli { color: var(--ikincil); letter-spacing: 0.02em; }
td.odeme-no .on-deger.acik { color: var(--murekkep); background: var(--mavi-a); border-radius: 3px; padding: 0 0.2rem; }


/* ===================================================================
   faz31g — BİNEK ARAÇ İŞARETİ VE HARF DÜĞMELERİ

   İşlem sütununa dördüncü bir düğme sığsın diye düğmeler tek harfe
   indi: F fiş, Ş şahsi, B binek, ↺ geri al, K kontrol edildi. Ne
   oldukları üzerine gelince yazıyor.
   =================================================================== */

.kd-dugme.kd-harf {
  min-width: 1.6rem;
  padding-left: 0.32rem;
  padding-right: 0.32rem;
  font-weight: 600;
  text-align: center;
}

/* İşlem sütunu harflerle daraldı; kalan yer ünvana gitsin. */
body.panel > main.izgara-ekran table.izgara.kdv-detay th.kd-islem,
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-islem {
  min-width: 6.2rem;
}

/* Binek işaretli satır: kendi rengi. Fiş grisi ve şahsi moru gibi
   "burada bir kural var, hata yok" demek. */
tr.kd-satir-binek > td { background: #e2eef0; }

:root:not([data-hucre="renkli"]) tr.kd-satir-binek > td { background: var(--yuzey); }
:root:not([data-hucre="renkli"]) tr.kd-satir-binek > td:first-child {
  box-shadow: inset 3px 0 0 #2f7d8a;
}

.rozet.kd-binek { background: #2f7d8a; color: #fff; }


/* -------------------------------------------------------------------
   faz31h — sonraki döneme devreden KDV

   Özette yalnız ödenecek vardı; hesap eksiye düşünce sıfırlanıp rakam
   kayboluyordu. Oysa o rakam beyannameye yazılacak ve gelecek ay bu
   ekrana "önceki dönemden devir" diye geri girecek.

   İkisi birden dolu olmuyor. Dolu olan kendi rengiyle öne çıkıyor,
   sıfır olan soluk duruyor — hangisinin geçerli olduğu bir bakışta
   belli olsun, iki kırmızı rakam yan yana durup göz karıştırmasın.
   ------------------------------------------------------------------- */

.mizan-ozet-kutu.mizan-odenecek.dolu strong { color: #a32b2b; }
.mizan-ozet-kutu.mizan-odenecek.bos strong  { color: var(--soluk); font-weight: 500; }

.mizan-ozet-kutu.mizan-devreden.dolu strong { color: #1d5f8a; }
.mizan-ozet-kutu.mizan-devreden.bos  strong { color: var(--soluk); font-weight: 500; }


/* -------------------------------------------------------------------
   faz31i — şeritte sütun seçimi: iki düğme + kalanlar menüde

   Gün içinde neredeyse hep KDV ile MUHTASAR'a bakılıyor; ikisi için de
   menü açıp seçmek gerekiyordu. İkisi düğme oldu, kalanlar menüde
   kaldı. Seçili olan dolu lacivert — menüden bir sütun seçiliyse menü
   de öyle görünüyor, hangisine bakıldığı her durumda belli.
   ------------------------------------------------------------------- */

.serit-sutun-secim {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  flex: none;
}

.durum-serit .serit-sutun-dugme {
  flex: none;
  padding: 0.28rem 0.7rem;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey-2);
  color: var(--ikincil);
  font-size: 0.82rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.durum-serit .serit-sutun-dugme:hover {
  border-color: var(--lacivert);
  color: var(--murekkep);
  background: var(--yuzey);
}

.durum-serit .serit-sutun-dugme.secili,
.durum-serit .serit-sutun-dugme.secili:hover,
.durum-serit .serit-sutun.secili {
  background: var(--lacivert);
  border-color: var(--lacivert);
  color: #fff;
}


/* -------------------------------------------------------------------
   faz31k — arızi ödeme satırları düzenlenebilir

   Yanlış yazılan kalemi silip yeniden eklemek gerekiyordu. Artık
   açıklama, tutar ve vade hücrenin içinde. Alanlar hücreyi doldursun,
   satır yüksekliği ızgaranın ötekilerinden ayrılmasın.
   ------------------------------------------------------------------- */

table.arizi-izgara td.ar-duzen { padding: 0.15rem 0.35rem; }

table.arizi-izgara td.ar-duzen input {
  width: 100%;
  min-width: 6rem;
  margin: 0;
  padding: 0.22rem 0.4rem;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-s);
  background: var(--yuzey);
  color: var(--murekkep);
  font: inherit;
  font-size: 0.82rem;
}

table.arizi-izgara td.ar-duzen input.sayi {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

table.arizi-izgara td.ar-duzen input[type="date"] { min-width: 8.5rem; }

table.arizi-izgara td.ar-duzen input:focus {
  border-color: var(--lacivert);
  outline: 2px solid var(--mavi-a);
  outline-offset: -1px;
}


/* -------------------------------------------------------------------
   faz31n — geçen aydan aktarılmış tutar

   Dönem açılınca geçen ayın bütün tahakkuk satırları ve ödenmemiş
   arızi kalemleri yeni aya taşınıyor. Rakamlar geçen ayın rakamları:
   güncellenmeden gönderilirse müşteriye yanlış tutar gider.

   O yüzden aktarılan hücre köşesinden işaretli duruyor. İşaret
   kaydedilince kalkıyor — yani "bu rakama baktım" demek oluyor.
   Renk değil çizim: sade kipte de, renk görmeyen gözde de belli.
   ------------------------------------------------------------------- */

td.tutar-hucre.aktarilmis { position: relative; }

td.tutar-hucre.aktarilmis::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  border-width: 0 0.45rem 0.45rem 0;
  border-style: solid;
  border-color: transparent var(--kehribar, #c8871b) transparent transparent;
  pointer-events: none;
}

td.tutar-hucre.aktarilmis input { background: #fffaf0; }

table.arizi-izgara tr.ar-aktarilmis > th,
table.arizi-izgara tr.ar-aktarilmis > td { background: #fffaf0; }


/* -------------------------------------------------------------------
   faz31o — oturum kapandı şeridi

   Oturum düştüğünde sayfa ekranda kalıyor ve kullanıcı fark etmeden
   yazmaya devam ediyordu. Şerit sayfanın en üstünde, kırmızı ve
   kaçırılmayacak yerde; altındaki içerik soluklaşıyor ki "burası
   artık canlı değil" belli olsun.
   ------------------------------------------------------------------- */

/* Sabit konum, ızgara değil: body panelde bir CSS ızgarası ve şerit
   ızgara hücresine düşünce menü sütununa sıkışıyordu. */
.oturum-serit {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 200;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.25rem 0.9rem;
  padding: 0.6rem 1.25rem;
  background: #a3232f;
  color: #fff;
  font-size: 0.9rem;
  font-weight: 550;
  text-align: center;
}

.oturum-serit a {
  color: #fff;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* Şerit sabit durduğu için sayfanın üstünden o kadar yer açılıyor. */
body.oturum-kapandi { padding-top: 2.9rem; }

body.oturum-kapandi > main,
body.oturum-kapandi > .arac { opacity: 0.55; }


/* ===================================================================
   faz34a — CARİ MUTABAKAT

   İki ayrı yüz var:

     .mut-*   panelin içi. Her cari bir kart: üstte kim ve ne kadar,
              altta üç sütun — iletişim, mesaj, durum. Izgara değil
              kart, çünkü her satırda doldurulacak dört alan ve
              okunacak bir metin var; tabloya sıkıştırınca hiçbiri
              okunmuyordu.

     .onay-*  karşı tarafın gördüğü sayfa. Panel kabuğu yok, menü yok;
              tek kutu, telefonda okunacak kadar büyük punto. Giriş
              ekranıyla aynı mantık: dışa açık sayfa kendi gövde
              sınıfını kullanıyor.
   =================================================================== */

/* Menüdeki rengi: kontrol bölümünün diğer girişlerinden ayrı dursun
   ama aynı aileden. */
.m-mutabakat { --ton: #4a3d8f; --gecis: #ebe9f4; }


/* ---------- Durum şeridi ---------- */

.mut-serit {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin: 0 0 0.9rem;
}

.mut-cip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.3rem 0.65rem;
  border: 1px solid var(--cizgi, #d6d3cc);
  border-radius: 999px;
  background: var(--kart, #fff);
  color: inherit;
  font-size: 0.82rem;
  font-weight: 500;
  text-decoration: none;
}

.mut-cip:hover { border-color: var(--ton, #666); }

.mut-cip.secili {
  border-color: var(--ton, #333);
  background: var(--gecis, #eee);
  font-weight: 650;
}

.mut-sayi {
  min-width: 1.4rem;
  padding: 0 0.25rem;
  border-radius: 999px;
  background: var(--gecis, #eee);
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.mut-cip.secili .mut-sayi { background: var(--kart, #fff); }

/* Toplam şeridin sağ ucunda: sayaçlarla aynı hizada ama onlardan
   ayrı — süzgeç değil, bilgi. */
.mut-toplam {
  margin-left: auto;
  font-size: 0.82rem;
  font-variant-numeric: tabular-nums;
}


/* ---------- Mükellef listesi (faz34k) ---------- */

table.mut-mukellef td.ad-hucre { max-width: 26rem; }

.mut-ad { font-weight: 600; color: inherit; text-decoration: none; }
.mut-ad:hover { text-decoration: underline; }

/* Bakiyesi gelmemiş mükellef sönük duruyor ama GİZLENMİYOR: eksik
   olanı görmek listenin asıl işi. */
table.mut-mukellef tr.mut-veri-yok td { opacity: 0.6; }

table.mut-mukellef td .rozet { margin-right: 0.2rem; }


/* ---------- Cari ızgarası ---------- */

table.mut-izgara td.ad-hucre {
  max-width: 24rem;
  overflow: hidden;
  text-overflow: ellipsis;
}

.mut-bakiye { font-variant-numeric: tabular-nums; white-space: nowrap; }

.mut-bakiye small {
  margin-left: 0.2rem;
  font-size: 0.7rem;
  font-weight: 500;
  opacity: 0.7;
}

.mut-bakiye.borc   { color: #a3232f; }
.mut-bakiye.alacak { color: #2f6ea3; }

/* Cevaplanmış satır sönük: iş bitti, gözü yormasın. */
table.mut-izgara tr.mut-cevapli td { opacity: 0.75; }

.mut-wa {
  display: flex;
  flex-wrap: wrap;
  gap: 0.2rem;
  align-items: center;
}


/* ---------- Durum şeridi ---------- */

.mut-serit {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin: 0 0 0.6rem;
}

.mut-cip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.25rem 0.6rem;
  border: 1px solid var(--cizgi, #d6d3cc);
  border-radius: 999px;
  background: var(--kart, #fff);
  color: inherit;
  font-size: 0.8rem;
  font-weight: 500;
  text-decoration: none;
}

.mut-cip:hover { border-color: var(--ton, #666); }

.mut-cip.secili {
  border-color: var(--ton, #333);
  background: var(--gecis, #eee);
  font-weight: 650;
}

.mut-sayi {
  min-width: 1.3rem;
  padding: 0 0.2rem;
  border-radius: 999px;
  background: var(--gecis, #eee);
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.mut-cip.secili .mut-sayi { background: var(--kart, #fff); }

/* Durum renkleri tek yerde; çipin solunda küçük bir nokta. */
.mut-cip.r-gri   { --ton: #8c8780; }
.mut-cip.r-mavi  { --ton: #2f6ea3; }
.mut-cip.r-iyi   { --ton: #3d8f43; }
.mut-cip.r-kotu  { --ton: #a3232f; }

.mut-cip.r-gri::before, .mut-cip.r-mavi::before,
.mut-cip.r-iyi::before, .mut-cip.r-kotu::before {
  content: "";
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: var(--ton);
}

.mut-toplam {
  margin-left: auto;
  font-size: 0.8rem;
  font-variant-numeric: tabular-nums;
}


/* ---------- Ayrıntı kutusu: üç sütun ---------- */

.mut-ayrinti {
  display: grid;
  grid-template-columns: minmax(18rem, 1fr) minmax(19rem, 1.2fr) minmax(10rem, 0.7fr);
  gap: 0.9rem;
  align-items: start;
  /* Kutunun tamamı bir punto küçük: burası ızgaranın içinde açılan bir
     ek alan, ana ızgarayla aynı puntoda olması gerekmiyor. */
  font-size: 0.76rem;
}

@media (max-width: 72rem) {
  .mut-ayrinti { grid-template-columns: 1fr; }
}


/* ---------- İletişim ----------
   İKİ SÜTUN, ETİKET ÜSTE HİZALI. İlk sürümde etiket sütunu dikeyde
   ortalanıyordu: "Telefon" üç numaranın ortasında asılı kalıyor,
   hiçbir kutunun karşısına denk gelmiyordu. */

.mut-il {
  display: grid;
  grid-template-columns: 4.1rem 1fr;
  align-items: start;
  gap: 0.25rem 0.4rem;
}

.mut-il > label,
.mut-il > .mut-il-baslik {
  padding-top: 0.2rem;
  font-size: 0.72rem;
  color: var(--soluk-renk, #6b6660);
  white-space: nowrap;
}

/* TEK KUTULUK SATIRLAR (Yetkili, Not).

   Sağda 1,1 rem'lik boş bir sütun var — iletişim satırlarındaki
   yıldızın yeri. Olmayınca bu kutular numara kutusundan daha uzun
   bitiyor ve blok yamuk görünüyordu. */
.mut-il-tek {
  display: grid;
  grid-template-columns: 1fr 1.1rem;
  gap: 0.2rem;
  min-width: 0;
}

/* MARGIN SIFIRLANIYOR.

   Panelin taban kuralı (stil.css 149) input[type="text"] ve
   benzerlerine 1,1 rem alt boşluk veriyor — giriş formlarında alt
   alta duran kutular için doğru. Burada kutular YAN YANA ve o boşluk
   ızgara satırını 25px yerine 42px yapıyor, kutuyu yukarı itiyordu:
   "ANIL ACAR" kutusu numaranın karşısına denk gelmiyordu. Sebebi
   buydu; iki turdur hizayı yanlış yerde arıyordum.

   type="tel" ve type="email" o kurala girmediği için yalnız ad
   kutusu kayıyordu — bu yüzden gözle "bir kutu bozuk" gibi
   görünüyordu. */
.mut-il input,
.mut-il-satir input,
.mut-durum input,
.mut-itiraz input {
  margin: 0;
}

.mut-il input {
  min-width: 0;
  padding: 0.15rem 0.3rem;
  border: 1px solid var(--cizgi, #d6d3cc);
  border-radius: 3px;
  background: var(--zemin, #fff);
  font: inherit;
  font-size: 0.74rem;
  color: inherit;
}

.mut-il input:focus { border-color: var(--ton, #666); }

.mut-il-liste {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}

/* Etiket · değer · yıldız. Üç sütun da SABİT hizada, satırdan satıra
   kaymıyor. */
.mut-il-satir {
  display: grid;
  grid-template-columns: 6.4rem 1fr 1.1rem;
  align-items: center;
  gap: 0.2rem;
}

.mut-il-satir input {
  min-width: 0;
  padding: 0.15rem 0.3rem;
  border: 1px solid var(--cizgi, #d6d3cc);
  border-radius: 3px;
  background: var(--zemin, #fff);
  font: inherit;
  font-size: 0.74rem;
  color: inherit;
}

/* Ad soyad kutusu bir tık daha küçük: "GÖKHAN YILDIZ" sığmıyor,
   ortasından kesiliyordu. */
.mut-il-satir input.mut-il-etiket { font-size: 0.7rem; }

.mut-il-satir input:focus { border-color: var(--ton, #666); }

/* Birincil işareti. Radyo gizli, yıldız onun yerine basılıyor:
   yuvarlak düğme satırda yer kaplıyor ve "zorunlu seçim" gibi
   duruyordu. */
.mut-il-bir {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.2rem;
  height: 1.2rem;
  border-radius: 3px;
  font-size: 0.85rem;
  color: var(--cizgi, #ccc8c1);
  cursor: pointer;
  user-select: none;
}

.mut-il-bir input { position: absolute; opacity: 0; width: 0; height: 0; }
.mut-il-bir:hover { color: var(--soluk-renk, #6b6660); }
.mut-il-bir:has(input:checked) { color: #c8871b; }

.mut-il-bir:focus-within {
  outline: 2px solid var(--ton, #666);
  outline-offset: 1px;
}


/* ---------- Mesaj ---------- */

.mut-mesaj { display: flex; flex-direction: column; gap: 0.25rem; }

.mut-mesaj > label {
  font-size: 0.72rem;
  color: var(--soluk-renk, #6b6660);
}

.mut-metin {
  width: 100%;
  box-sizing: border-box;
  /* min-height şart: esnek sütunun içinde rows="8" tutmuyor, kutu
     büzülüp metnin son satırlarını kesiyor. */
  min-height: 11rem;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--cizgi, #d6d3cc);
  border-radius: 3px;
  background: var(--gecis-zemin, #faf9f6);
  font: inherit;
  font-size: 0.73rem;
  line-height: 1.45;
  color: inherit;
  resize: vertical;
}

.mut-eylem { display: flex; flex-wrap: wrap; gap: 0.3rem; }


/* ---------- Düğmeler ---------- */

.mut-dug {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* Panelin temel kuralı button { width: 100% } (stil.css 175) ve her
     bağlam bunu kendi için geri alıyor. */
  width: auto;
  padding: 0.2rem 0.5rem;
  border: 1px solid var(--cizgi, #d6d3cc);
  border-radius: 3px;
  background: var(--kart, #fff);
  font: inherit;
  font-size: 0.73rem;
  font-weight: 550;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
}

.mut-dug:hover { border-color: #888; }

.mut-dug.wa    { border-color: #1f8b4c; color: #1f8b4c; }
.mut-dug.wa.birincil { font-weight: 700; }
.mut-dug.iyi   { border-color: #3d8f43; color: #2d6b32; }
.mut-dug.kotu  { border-color: #a3232f; color: #8d1d27; }
.mut-dug.geri  { color: var(--soluk-renk, #6b6660); }

.mut-dug.kapali {
  border-style: dashed;
  color: var(--soluk-renk, #6b6660);
  cursor: default;
}

.mut-dug.ekle {
  /* align-self, justify-self DEĞİL: liste bir flex sütunu, orada
     genişliği sınırlayan özellik align-self. justify-self hiçbir şey
     yapmıyordu ve düğme satır boyunca uzuyordu.
     Sol kenarı numara sütununun altına hizalı. */
  align-self: flex-start;
  margin-left: calc(6.4rem + 0.2rem);
  padding: 0.05rem 0.35rem;
  border-style: dashed;
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--soluk-renk, #6b6660);
}

.mut-dug.kopyalandi { border-color: #3d8f43; color: #2d6b32; }


/* ---------- Durum sütunu ---------- */

.mut-durum {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.25rem;
  font-size: 0.76rem;
}

.mut-durum .mut-dug { width: 100%; }

.mut-durum input {
  width: 100%;
  box-sizing: border-box;
  padding: 0.15rem 0.3rem;
  border: 1px solid var(--cizgi, #d6d3cc);
  border-radius: 3px;
  background: var(--zemin, #fff);
  font: inherit;
  font-size: 0.74rem;
  color: inherit;
}

.mut-cevap, .mut-cevap-tutar { margin: 0; font-size: 0.76rem; }
.mut-cevap-tutar { font-variant-numeric: tabular-nums; }

.mut-cevap-not {
  margin: 0;
  padding: 0.3rem 0.45rem;
  border-left: 2px solid var(--cizgi, #d6d3cc);
  background: var(--gecis-zemin, #faf9f6);
  font-size: 0.76rem;
  line-height: 1.4;
}

/* İtiraz alanları katlanmış: cevapların çoğu "mutabıkız" ve her
   satırda iki boş kutu beklemek sütunu gereksiz uzatıyordu. */
.mut-itiraz { width: 100%; }

.mut-itiraz > summary {
  padding: 0.15rem 0;
  font-size: 0.76rem;
  color: var(--soluk-renk, #6b6660);
  cursor: pointer;
  list-style: none;
}

.mut-itiraz > summary::before { content: "+ "; }
.mut-itiraz[open] > summary::before { content: "− "; }
.mut-itiraz > summary::-webkit-details-marker { display: none; }

.mut-itiraz[open] {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding-top: 0.25rem;
  border-top: 1px dashed var(--cizgi, #d6d3cc);
}

/* Yalnız ekran okuyucular için. */
.gorunmez {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}


/* ===================================================================
   ONAY SAYFASI — dışa açık

   Panelin dışındaki tek sayfa. Menü yok, araç çubuğu yok. Karşı taraf
   büyük olasılıkla telefondan açıyor ve muhasebeci değil: tek soru,
   iki düğme, bir isim alanı.
   =================================================================== */

body.onay-sayfa {
  margin: 0;
  padding: 1.5rem 1rem 3rem;
  background: #f4f2ee;
  color: #221f1b;
  font-family: "GH Panel Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size: 1rem;
  line-height: 1.5;
}

main.onay-kutu {
  max-width: 34rem;
  margin: 0 auto;
  padding: 1.5rem 1.4rem 1.75rem;
  border: 1px solid #ddd9d2;
  border-radius: 10px;
  background: #fff;
}

.onay-antet { margin: 0 0 1.25rem; }

.onay-antet h1 {
  margin: 0;
  font-size: 1.3rem;
  font-weight: 650;
  letter-spacing: -0.01em;
}

.onay-gonderen {
  margin: 0.25rem 0 0;
  font-size: 0.95rem;
  color: #6b6660;
}

/* Özet: asıl bilgi. Etiket solda küçük, değer sağda büyük. */
.onay-ozet {
  margin: 0 0 1.4rem;
  padding: 1rem 1.1rem;
  border: 1px solid #e6e3dd;
  border-radius: 8px;
  background: #faf9f6;
}

.onay-ozet dl {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.45rem 1rem;
  margin: 0;
}

.onay-ozet dt {
  font-size: 0.85rem;
  color: #6b6660;
}

.onay-ozet dd {
  margin: 0;
  font-weight: 600;
  text-align: right;
}

.onay-tutar {
  font-size: 1.35rem;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  line-height: 1.2;
}

.onay-yon {
  display: block;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: #6b6660;
}

.onay-not {
  margin: 0.9rem 0 0;
  padding-top: 0.8rem;
  border-top: 1px solid #e6e3dd;
  font-size: 0.88rem;
  color: #4a4642;
}

/* Form */
.onay-form { display: flex; flex-direction: column; gap: 0.45rem; }

.onay-form > label {
  margin-top: 0.5rem;
  font-size: 0.88rem;
  font-weight: 550;
}

.onay-form input[type="text"],
.onay-form textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 0.55rem 0.65rem;
  border: 1px solid #ccc8c1;
  border-radius: 6px;
  background: #fff;
  font: inherit;
  color: inherit;
}

.onay-form input[type="text"]:focus,
.onay-form textarea:focus {
  border-color: #4a3d8f;
  outline: 2px solid rgba(74, 61, 143, 0.18);
  outline-offset: 1px;
}

.onay-gerek {
  font-size: 0.75rem;
  font-weight: 500;
  color: #a3232f;
}

.onay-secim {
  margin: 0 0 0.5rem;
  padding: 0;
  border: 0;
}

.onay-secim legend {
  padding: 0;
  margin-bottom: 0.5rem;
  font-size: 0.95rem;
  font-weight: 600;
}

/* İki büyük seçenek. Telefonda parmakla basılacak kadar geniş. */
.onay-secenek {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  margin-bottom: 0.4rem;
  padding: 0.7rem 0.8rem;
  border: 1px solid #ccc8c1;
  border-radius: 8px;
  cursor: pointer;
}

.onay-secenek small { color: #6b6660; }

.onay-secenek input { margin-top: 0.25rem; }

.onay-secenek.iyi:has(input:checked) {
  border-color: #3d8f43;
  background: #f0f7f0;
}

.onay-secenek.kotu:has(input:checked) {
  border-color: #a3232f;
  background: #fbf0f1;
}

/* :has() desteklemeyen tarayıcıda odak yine görünsün. */
.onay-secenek:focus-within { border-color: #4a3d8f; }

.onay-gonder {
  margin-top: 0.9rem;
  padding: 0.7rem 1rem;
  border: 0;
  border-radius: 6px;
  background: #4a3d8f;
  font: inherit;
  font-size: 1rem;
  font-weight: 600;
  color: #fff;
  cursor: pointer;
}

.onay-gonder:hover { background: #3d3277; }

/* Verilmiş cevap */
.onay-verilen {
  padding: 1rem 1.1rem;
  border: 1px solid #e6e3dd;
  border-radius: 8px;
  background: #faf9f6;
}

.onay-verilen h2 {
  margin: 0 0 0.5rem;
  font-size: 1rem;
  font-weight: 650;
}

.onay-verilen p { margin: 0 0 0.45rem; }

.onay-verilen-durum { font-weight: 600; }
.onay-verilen-durum.iyi  { color: #2d6b32; }
.onay-verilen-durum.kotu { color: #8d1d27; }

.onay-verilen-not {
  padding: 0.5rem 0.65rem;
  border-left: 2px solid #ddd9d2;
  background: #fff;
  font-size: 0.9rem;
}

.onay-alt {
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px solid #e6e3dd;
}

.onay-alt p { margin: 0 0 0.2rem; }

/* Onay sayfası panelin tema seçicisini kullanmıyor (dışa açık, tercih
   saklanmıyor) ama telefonun koyu kipinde bembeyaz patlamasın. */
@media (prefers-color-scheme: dark) {
  body.onay-sayfa { background: #1a1816; color: #ece9e3; }
  main.onay-kutu  { border-color: #3a3631; background: #221f1c; }
  .onay-ozet, .onay-verilen { border-color: #3a3631; background: #1c1a17; }
  .onay-gonderen, .onay-ozet dt, .onay-yon, .onay-secenek small { color: #9b958d; }
  .onay-not { border-top-color: #3a3631; color: #c9c4bc; }
  .onay-form input[type="text"], .onay-form textarea {
    border-color: #4a453f; background: #15130f; color: inherit;
  }
  .onay-secenek { border-color: #4a453f; }
  .onay-secenek.iyi:has(input:checked)  { border-color: #4e9b54; background: #1b2a1c; }
  .onay-secenek.kotu:has(input:checked) { border-color: #b8313d; background: #2a1b1d; }
  .onay-verilen-not { border-left-color: #4a453f; background: #221f1c; }
  .onay-alt { border-top-color: #3a3631; }
}


/* ===================================================================
   CARİ KİŞİ AKTARIMI (faz34n)

   Mutabakat numaralarını Excel'den alan ekran. Üç kutu: indir,
   nasıl doldurulur, yükle.
   =================================================================== */

/* İndirme formu tek satır: mükellef seçimi ve düğme yan yana.
   Alt alta dizilince üç satırlık bir form için sayfa gereksiz
   uzuyordu. Panelde "button { width: 100% }" temel kuralı var
   (bkz. satır 175), düğmenin genişliği burada geri alınıyor. */
.kisi-indir {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.8rem;
  align-items: center;
  margin: 0.8rem 0 0.4rem;
}
.kisi-indir label  { margin: 0; white-space: nowrap; }
.kisi-indir select { width: auto; min-width: 14rem; max-width: 100%; margin: 0; }
.kisi-indir button { width: auto; }

/* Kurallar listesi. Her madde bir davranışı anlatıyor; ilk cümlesi
   kalın, gerisi açıklama. Sık okunacak bir metin değil — bir kez
   okunup unutulacak, o yüzden sıkışık değil. */
.kisi-kural {
  margin: 0.6rem 0 0;
  padding-left: 1.1rem;
  font-size: 0.88rem;
  line-height: 1.5;
}
.kisi-kural li { margin-bottom: 0.5rem; }
.kisi-kural li:last-child { margin-bottom: 0; }
.kisi-kural code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.85em;
  padding: 0.05rem 0.25rem;
  background: var(--yuzey-2);
  border-radius: 2px;
}

/* Değişiklik listesi. "Ne" sütunu uzun metin taşıyor, kırpılmıyor:
   hangi numaranın kimden kime geçtiği tam okunmalı. */
.kisi-izgara { font-size: 0.82rem; }
.kisi-izgara td { vertical-align: top; }
.kisi-izgara .ad-hucre {
  max-width: 16rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.kisi-izgara td:last-child { white-space: normal; line-height: 1.45; }
.kisi-izgara .rozet { margin-right: 0.3rem; }

/* Hatalı satır soluk: listede göz önce yapılacak işe gitsin. */
.kisi-hata td { opacity: 0.72; }

/* Bu ekranın açıklamaları uzun. Panelin temel .aciklama kuralı
   34ch'te kesiyor (satır 136) — çoğu ekranda bir iki cümle olduğu
   için doğru, burada beş satırlık dar bir kuleye çeviriyordu. */
.kisi-sayfa .aciklama { max-width: 68ch; }

/* Değişiklik listesi süzgeçli bir ızgara değil, sonuç dökümü: üç
   satır çıkınca kabın 24rem (satır 3143) boyunda durması altında
   kocaman bir boşluk bırakıyordu. */
.kisi-sayfa .izgara-sar { min-height: 0; max-height: calc(100dvh - 8rem); }


/* ===================================================================
   KÖPRÜ EKRANI (faz35a)

   Düğmeye basan kişinin sorusu "oldu mu?" — ekranın tamamı o soruya
   cevap verecek şekilde dizildi: önce ajanın nabzı, sonra düğmeler,
   sonra ne olduğu.
   =================================================================== */

/* Menü rengi. Köprü KDV ile mutabakatın arasında duran bir iş; ikisinin
   arasında bir ton. */
.m-kopru { --ton: #1f6b7a; --gecis: #e4f0f2; }

/* Nabız kutusu. Bağlıyken yeşil bir kenar, değilken kırmızı: ekrana
   bakan kişi okumadan önce renkten anlasın. */
.kopru-durum { border-left: 4px solid var(--onay); }
.kopru-durum.sessiz { border-left-color: var(--uyari); }

.kopru-nabiz {
  display: flex;
  flex-wrap: wrap;
  gap: 0.2rem 0.55rem;
  align-items: baseline;
  margin: 0.5rem 0;
}

/* Küçük yuvarlak ışık. Rozetin yanında duruyor; rozet yazıyı,
   ışık rengi veriyor — biri okunmadan önce öteki görünüyor. */
.kopru-isik {
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 50%;
  flex: 0 0 auto;
  align-self: center;
}
.kopru-isik.acik   { background: var(--onay); }
.kopru-isik.kapali { background: var(--uyari); }

/* Meşgul: ajan köprüyü çalıştırıyor, yoklama göndermiyor (faz35o).
   Yanıp sönüyor ki "donmuş" değil "çalışıyor" okunsun. */
.kopru-isik.mesgul {
  background: var(--lacivert);
  animation: kopru-nabiz 1.4s ease-in-out infinite;
}

@keyframes kopru-nabiz {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.35; }
}

@media (prefers-reduced-motion: reduce) {
  .kopru-isik.mesgul { animation: none; }
}

/* Çalıştırma satırları: ad solda, dönem ve düğme sağda. Üç tür alt
   alta aynı hizada dursun diye ad esneyen sütun.

   Panelin taban kuralı button { width: 100% } (satır 175) — burada
   geri alınıyor, yoksa her düğme kendi satırını kaplıyor. */
.kopru-calistir {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.8rem;
  align-items: center;
  padding: 0.6rem 0;
  border-top: 1px solid var(--cizgi-2);
}
.kopru-calistir:first-of-type { border-top: 0; }

.kopru-tur {
  flex: 1 1 18rem;
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 0;
}
.kopru-calistir select { width: auto; min-width: 11rem; margin: 0; }
.kopru-calistir button { width: auto; }

/* İptal düğmesi ızgaranın içinde: satırı uzatmasın. */
.kopru-iptal { display: inline; }
.kopru-iptal button { width: auto; }

/* IZGARA KUTUYA SIĞIYOR, taşmıyor.

   table.izgara taban kuralı width: max-content (satır ~630): kolon
   sayısı çok olan ekranlarda doğru, yatayda kaydırılıyor. Burada
   yanlıştı — "Sonuç" sütunu uzun cümle taşıyor ve tablo kutunun
   sağından taşıp kesiliyordu, sonucu okumak için yatay kaydırmak
   gerekiyordu. Oysa okunması gereken asıl şey o sütun. */
/* ÖZGÜLLÜK: taban kural "table.izgara" (0,1,1), yalnız ".kopru-izgara"
   (0,1,0) onu yenemiyordu — tablo yine max-content kalıyor ve kutudan
   taşıyordu. Element adı eklenince eşitleniyor ve sonra gelen kazanıyor. */
table.izgara.kopru-izgara { width: 100%; }
.kopru-izgara { font-size: 0.82rem; }
.kopru-izgara td { vertical-align: top; }
.kopru-izgara .kopru-sonuc { white-space: normal; line-height: 1.45; }

/* Öteki sütunlar içeriği kadar, tek satır. Sonuç sütununa width: 100%
   VERMİYORUZ: table-layout auto'da bir hücreye yüzde genişlik vermek
   tabloyu kaba sığdırmak yerine ŞİŞİRİYOR — 968 piksellik kutuda 1385
   piksellik tablo çıkıyordu. Kalan genişliği tarayıcı zaten sonuç
   sütununa veriyor, çünkü sarabilen tek sütun o. */
.kopru-izgara th:not(:nth-child(7)), .kopru-izgara td:not(:nth-child(7)) {
  white-space: nowrap;
}
.kopru-izgara .kopru-sonuc { overflow-wrap: anywhere; }

/* Henüz bitmemiş iş: satır hafifçe vurgulu, göz oraya gitsin. */
.kopru-acik td { background: var(--mavi-a); }

/* Açıklamalar bu ekranda uzun — taban .aciklama 34ch'te kesiyor. */
.kopru-sayfa .aciklama { max-width: 68ch; }
.kopru-sayfa .izgara-sar { min-height: 0; max-height: calc(100dvh - 8rem); }

/* Koyu kip kuralı YOK, bilerek: panelin gövdesi tek renkte: tema.js'in
   seçtiği şey kenar çubuğunun rengi (data-yan), sayfanın değil. Buraya
   bir prefers-color-scheme bloğu koymak, telefonu koyu kipte olan
   kullanıcıda açık renkli tablonun ortasına koyu bir satır koyardı. */

/* Köprü ekranında "Son işler" başlığı ve temizleme düğmesi aynı
   satırda (faz35j). Düğme başlığın sağına yaslanıyor; panelin taban
   kuralı button { width: 100% } burada geri alınıyor. */
.kopru-baslik {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  align-items: baseline;
  justify-content: space-between;
}
.kopru-baslik h2 { margin: 0; }
.kopru-temizle { margin: 0; }
.kopru-temizle button { width: auto; }

/* ---------- BOM taraması (faz35n, geçici ekran) ----------

   Panelin temel kuralları burada iki yerde yolu kesiyor:
   .aciklama 34ch ile sınırlı (bu sayfadaki açıklama uzun) ve
   button width:100% (tek düğme sayfayı boydan boya geçmesin). */

.aciklama.bom-genis { max-width: 68ch; }

.bom-liste {
  margin: 0 0 1.5rem;
  padding-left: 1.2rem;
  font-size: 0.9rem;
  line-height: 1.7;
}

.bom-form { margin: 0 0 1rem; }
.bom-form button { width: auto; }

/* Köprü: firma süzgeci kutusu (faz35p). Panelin taban kuralı
   input'a width:100% veriyor; satırın tamamını kaplamasın. */
.kopru-calistir .kopru-firma {
  width: auto;
  min-width: 9rem;
  max-width: 13rem;
  margin: 0;
}

/* Yenileme geri sayımı: ajanın nabzının hemen altında. */
.kopru-yenileme { margin: 0.4rem 0 0; }

/* ---------- Mutabakat: firma özeti sütunu (faz35q) ----------

   Mükellef listesinin son sütunu. İçinde hem durum rozeti, hem
   açılma izi, hem de gönderim düğmesi var; alt alta diziliyor
   çünkü yan yana koyacak genişlik yok.

   Düğme panelin taban kuralını (button { width:100% }) kendi
   için geri alıyor, yoksa hücreyi boydan boya kaplıyor. */

.mut-firma-hucre { min-width: 12rem; }

.mut-firma {
  display: flex;
  flex-direction: column;
  align-items: start;
  gap: 0.25rem;
}

.mut-firma-iz { line-height: 1.35; }

.mut-firma-gonder { margin: 0; }
.mut-firma-gonder button { width: auto; }


/* ===================================================================
   FİRMA MUTABAKAT ÖZETİ — ESKİ ADRESTEN AÇILIRSA (faz35q)

   Sayfa normalde mutabakat.ghmuhasebe.com.tr'den açılıyor ve
   oradaki küçük mutabakat.css'i kullanıyor. Ama alt alan adı
   ayarlı değilse bağlantı panelin kökündeki mutabakat_onay.php'ye
   düşüyor; o yol da çalışır olmalı.

   Bu yüzden aynı kurallar burada da duruyor — onay sayfasının
   kuralları için faz34i'de verilen kararın aynısı. İki yerde
   durması hoş değil ama alternatifi, dışa açık sayfaya panelin
   260 KB'lık stilini indirtmek ya da yedek yolun biçimsiz
   açılması.
   =================================================================== */

/* ===================================================================
   FİRMA MUTABAKAT ÖZETİ — mükellefin kendi sayfası (faz35q)

   Karşı taraf sayfasından iki farkı var:

     1. Tek cari değil, defterin tamamı. Dar kutu yetmiyor —
        34rem yerine 54rem.
     2. Telefonda doldurulacak. Her cari bir "kart"; tablo DEĞİL,
        çünkü yedi sütunlu bir tablo 400 piksellik ekranda
        okunmuyor. Kart geniş ekranda iki sütuna açılıyor.
   =================================================================== */

main.firma-kutu {
  max-width: 54rem;
  margin: 0 auto;
  padding: 1.5rem 1.4rem 1.75rem;
  border: 1px solid #ddd9d2;
  border-radius: 10px;
  background: #fffdfa;
}

/* ---------- Kapı: son dört hane ---------- */

.firma-giris-not { margin: 0 0 1rem; }

.firma-giris {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 0.6rem;
  margin: 0 0 1rem;
}

.firma-giris label {
  display: block;
  width: 100%;
  margin: 0 0 0.2rem;
  font-size: 0.85rem;
  font-weight: 600;
}

.firma-giris input {
  width: 7rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid #ccc7bf;
  border-radius: 6px;
  background: #fff;
  font: inherit;
  font-size: 1.3rem;
  letter-spacing: 0.3em;
  text-align: center;
}

.firma-giris button {
  padding: 0.65rem 1.4rem;
  border: 0;
  border-radius: 6px;
  background: #221f4a;
  color: #fff;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}

/* ---------- Antet ---------- */

.firma-antet { margin: 0 0 1.25rem; }
.firma-antet h1 { margin: 0 0 0.2rem; font-size: 1.35rem; }
.firma-unvan { margin: 0; font-weight: 600; }
.firma-tarih { margin: 0.15rem 0 0; color: #6f6a62; font-size: 0.9rem; }

/* ---------- Yönerge ---------- */

.firma-yonerge {
  margin: 0 0 1.25rem;
  padding: 0.9rem 1rem;
  border: 1px solid #e6e3dd;
  border-radius: 8px;
  background: #faf8f4;
}

.firma-yonerge h2 { margin: 0 0 0.5rem; font-size: 1rem; }
.firma-yonerge ol { margin: 0 0 0.75rem; padding-left: 1.2rem; }
.firma-yonerge li { margin: 0 0 0.3rem; }

.firma-sorumluluk-not {
  margin: 0;
  padding-top: 0.6rem;
  border-top: 1px solid #e6e3dd;
  color: #6f6a62;
  font-size: 0.85rem;
}

.firma-sayfa-bilgi {
  margin: 0 0 1rem;
  color: #6f6a62;
  font-size: 0.85rem;
}

/* ---------- Gruplar ---------- */

.firma-grup { margin: 0 0 1.5rem; }

.firma-grup h2 {
  margin: 0 0 0.15rem;
  font-size: 0.95rem;
  letter-spacing: 0.08em;
}

.firma-grup-not {
  margin: 0 0 0.75rem;
  color: #6f6a62;
  font-size: 0.85rem;
}

/* ---------- Cari satırı ----------

   Önce her cari beş alanlı bir kart idi; 101 carili bir firmada
   sayfa okunamaz hâle geldi. Artık satır tek sıra: kutu, ünvan,
   tutar. Ayrıntı <details> ile açılıyor — JavaScript yok, çünkü
   bu sayfa tanımadığımız telefonlarda açılıyor. */

.firma-satir {
  border-bottom: 1px solid #ece9e3;
}

.firma-satir:last-child { border-bottom: 0; }

.firma-sira {
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
  padding: 0.5rem 0.2rem;
}

/* SINIF ADI "firma-kutu" DEĞİL (faz35t).

   Öyleydi ve sayfayı bozdu: <main> etiketinin sınıfı da
   "firma-kutu". Onay kutusuna yazdığım width:1.25rem sayfanın
   KENDİSİNE uygulandı, bütün içerik 20 piksellik bir sütuna
   sıkıştı.

   Ders: sayfanın kabuğu ile içindeki küçük bir parça aynı adı
   taşımamalı. "kutu" iki ayrı şeyin adıydı — biri sayfa kutusu,
   biri onay kutusu.

   Dokunma hedefi bilerek büyük: telefonda küçük kareyi
   ıskalamak en can sıkıcı şey. */
.firma-onay {
  flex: 0 0 auto;
  width: 1.25rem;
  height: 1.25rem;
  margin: 0;
  align-self: center;
  accent-color: #1f6b3a;
}

.firma-kilit-im {
  flex: 0 0 auto;
  width: 1.25rem;
  align-self: center;
  color: #3d8f43;
  text-align: center;
}

/* Ünvan etiketin kendisi: satırın her yerine basınca kutu
   işaretleniyor, küçük kareyi hedeflemek gerekmiyor. */
.firma-sira-ad {
  flex: 1 1 auto;
  min-width: 0;
  cursor: pointer;
  line-height: 1.35;
}

.firma-cari-unvan { font-weight: 600; }

.firma-rozet {
  margin-left: 0.4rem;
  color: #6f6a62;
  font-size: 0.78rem;
  white-space: nowrap;
}

.firma-rozet.kotu { color: #a3232f; }

.firma-cari-tutar {
  flex: 0 0 auto;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.firma-yon {
  margin-left: 0.3rem;
  color: #6f6a62;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.06em;
}

.firma-satir.kilitli .firma-sira { opacity: 0.65; }

/* ---------- Ayrıntı ---------- */

.firma-ayrinti {
  margin: 0 0 0.6rem 1.85rem;
  font-size: 0.92rem;
}

.firma-ayrinti > summary {
  display: inline-block;
  padding: 0.2rem 0;
  color: #0153a7;
  cursor: pointer;
  font-size: 0.85rem;
}

.firma-ayrinti > summary:hover { text-decoration: underline; }

.firma-ayrinti[open] > summary { margin-bottom: 0.5rem; font-weight: 600; }

/* ---------- Ayrıntı panelindeki alanlar ----------

   faz35s'de kart düzeni kaldırılırken bu kurallar yanlışlıkla
   silindi; kutular biçimsiz kaldı. Geri kondu.

   Geniş ekranda etiket solda, kutu sağda; telefonda alt alta.
   Kutular tam genişlik: dar ekranda yarım kutu kullanılmıyor. */

.firma-alanlar {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.15rem 0.8rem;
  padding: 0.6rem 0.7rem;
  border-left: 2px solid #e0ddd6;
  background: #faf8f4;
}

@media (min-width: 42rem) {
  .firma-alanlar { grid-template-columns: 11rem 1fr; align-items: center; }
  .firma-alanlar label { margin: 0; }
}

.firma-alanlar label {
  margin: 0.4rem 0 0.1rem;
  font-size: 0.85rem;
  font-weight: 600;
}

.firma-alanlar input[type="text"] {
  width: 100%;
  box-sizing: border-box;
  padding: 0.5rem 0.6rem;
  border: 1px solid #ccc7bf;
  border-radius: 6px;
  background: #fff;
  font: inherit;
  font-size: 0.95rem;
}

.firma-degil-kutu {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  grid-column: 1 / -1;
  margin: 0 0 0.4rem;
  font-weight: 600;
  cursor: pointer;
}

.firma-tek-sefer { margin: 0.5rem 0 0; }
.firma-tek-sefer-ust {
  margin: 0.75rem 0 0;
  padding-top: 0.6rem;
  border-top: 1px solid #e6e3dd;
  font-size: 0.88rem;
}

/* ---------- Firmanın kendi gönderimi ---------- */

.firma-wa {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.6rem;
  margin: 0.7rem 0 0;
  padding-top: 0.6rem;
  border-top: 1px solid #efede8;
}

.firma-wa-dugme {
  padding: 0.45rem 0.85rem;
  border: 1px solid #1f8a4c;
  border-radius: 6px;
  background: #e9f6ed;
  color: #14683a;
  font: inherit;
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
}

.firma-wa-dugme:hover { background: #d9efe0; }

/* ---------- Düğmeler ---------- */

/* .firma-dugmeler'in asıl tanımı aşağıda, "Sabit kaydetme
   şeridi" bölümünde (faz35s). Buradaki eski tanım kaldırıldı:
   aynı seçiciyi iki yerde tanımlamak, hangisinin kazandığını
   kaynak sırasına bağlı kılıyor. */

.firma-dugmeler button {
  padding: 0.65rem 1.3rem;
  border: 0;
  border-radius: 6px;
  background: #221f4a;
  color: #fff;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}

.firma-dugmeler button.ikincil {
  border: 1px solid #ccc7bf;
  background: #fff;
  color: #221f1b;
}

/* ---------- Bitirme ---------- */

.firma-bitir {
  padding: 1rem 1.1rem;
  border: 1px solid #e0ddd6;
  border-radius: 8px;
  background: #faf8f4;
}

.firma-bitir h2 { margin: 0 0 0.6rem; font-size: 1rem; }

.firma-sorumluluk {
  margin: 0 0 0.8rem;
  padding: 0.7rem 0.8rem;
  border-left: 3px solid #c9a227;
  background: #fff;
  font-size: 0.92rem;
}

.firma-onay-kutu {
  display: flex;
  align-items: start;
  gap: 0.5rem;
  margin: 0 0 0.9rem;
  font-size: 0.92rem;
  cursor: pointer;
}

.firma-bitir label[for="ad"] {
  display: block;
  margin: 0 0 0.2rem;
  font-size: 0.85rem;
  font-weight: 600;
}

.firma-bitir input[type="text"] {
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 0.8rem;
  padding: 0.55rem 0.7rem;
  border: 1px solid #ccc7bf;
  border-radius: 6px;
  background: #fff;
  font: inherit;
}

.firma-gonder {
  width: 100%;
  padding: 0.75rem 1rem;
  border: 0;
  border-radius: 6px;
  background: #1f6b3a;
  color: #fff;
  font: inherit;
  font-size: 1.02rem;
  font-weight: 600;
  cursor: pointer;
}

.firma-gonder:hover { background: #185730; }

/* ---------- Koyu kip ---------- */

@media (prefers-color-scheme: dark) {
  main.firma-kutu { border-color: #3a3631; background: #221f1c; }

  .firma-tarih, .firma-grup-not, .firma-sayfa-bilgi,
  .firma-yon, .firma-kilit-not, .firma-sorumluluk-not { color: #9b958d; }

  .firma-yonerge, .firma-bitir { border-color: #3a3631; background: #1c1a17; }
  .firma-sorumluluk-not { border-top-color: #3a3631; }

    .firma-satir { border-bottom-color: #302c28; }
  .firma-alanlar { border-left-color: #3a3631; background: #15130f; }
  .firma-tek-sefer-ust { border-top-color: #3a3631; }
  .firma-ayrinti > summary { color: #7fb3ec; }

  .firma-giris input, .firma-alanlar input,
  .firma-bitir input[type="text"] {
    border-color: #4a453f; background: #15130f; color: inherit;
  }

  .firma-sorumluluk { background: #221f1c; }

  .firma-wa { border-top-color: #3a3631; }
  .firma-wa-dugme { border-color: #2f7f52; background: #15251b; color: #8fd6a8; }
  .firma-wa-dugme:hover { background: #1b3124; }

  .firma-dugmeler button.ikincil {
    border-color: #4a453f; background: #1c1a17; color: #ece9e3;
  }
}

/* ---------- Toplu işaretleme şeridi (faz35s) ----------

   Bu şeridi BETİK ekliyor; HTML'de yok. Betik çalışmazsa ölü
   düğme kalmasın diye. */

.firma-toplu {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 1rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid #e6e3dd;
  border-radius: 8px;
  background: #faf8f4;
}

.firma-toplu-dugme {
  padding: 0.4rem 0.8rem;
  border: 1px solid #ccc7bf;
  border-radius: 6px;
  background: #fff;
  font: inherit;
  font-size: 0.85rem;
  cursor: pointer;
}

.firma-toplu-dugme:hover { background: #f1efe9; }

.firma-toplu-sayi {
  margin-left: auto;
  color: #6f6a62;
  font-size: 0.85rem;
  font-variant-numeric: tabular-nums;
}

/* ---------- Sabit kaydetme şeridi ----------

   Yüz satırlık listede "Kaydet" düğmesini aramak için en alta
   inmek gerekiyordu. Artık ekranın altında sabit. */

.firma-dugmeler {
  position: sticky;
  bottom: 0;
  z-index: 5;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin: 1.25rem 0;
  padding: 0.7rem;
  border: 1px solid #ddd9d2;
  border-radius: 8px;
  background: #fffdfa;
  box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.06);
}

.firma-durum {
  margin-left: auto;
  font-size: 0.85rem;
  color: #6f6a62;
}

.firma-durum.iyi      { color: #1f6b3a; font-weight: 600; }
.firma-durum.kotu     { color: #a3232f; font-weight: 600; }
.firma-durum.bekliyor { color: #8a6d0d; }

@media (prefers-color-scheme: dark) {
  .firma-toplu { border-color: #3a3631; background: #1c1a17; }
  .firma-toplu-dugme {
    border-color: #4a453f; background: #15130f; color: #ece9e3;
  }
  .firma-toplu-dugme:hover { background: #1f1c18; }
  .firma-toplu-sayi, .firma-durum { color: #9b958d; }
  .firma-dugmeler {
    border-color: #3a3631; background: #221f1c;
    box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.4);
  }
  .firma-durum.iyi      { color: #7fd09b; }
  .firma-durum.kotu     { color: #e98a92; }
  .firma-durum.bekliyor { color: #d9b556; }
}

/* ---------- Firmanın kendi gönderdiği mutabakat (faz35u) ----------

   Yönlendirme yerine sayfanın üstünde duran sonuç kutusu. Üç parça
   bir arada: düğme, adres, mesaj metni. WhatsApp açılmazsa link
   kopyalanıp elle gönderilebilsin diye — bu iş tek bir yola bağlı
   kalmamalı. */

.firma-wa-sonuc {
  margin: 0 0 1.25rem;
  padding: 0.9rem 1rem 1rem;
  border: 1px solid #bfe0cd;
  border-radius: 8px;
  background: #f3faf5;
}

.firma-wa-sonuc h2 { margin: 0 0 0.7rem; font-size: 1rem; }

.firma-wa-ac {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.8rem;
  margin: 0 0 0.8rem;
}

.firma-wa-baglanti {
  display: inline-block;
  padding: 0.6rem 1.2rem;
  border-radius: 6px;
  background: #1f6b3a;
  color: #fff;
  font-weight: 600;
  text-decoration: none;
}

.firma-wa-baglanti:hover { background: #185730; }

.firma-wa-sonuc label {
  display: block;
  margin: 0.5rem 0 0.2rem;
  font-size: 0.85rem;
  font-weight: 600;
}

.firma-wa-kopya {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 0.5rem 0.6rem;
  border: 1px solid #ccc7bf;
  border-radius: 6px;
  background: #fff;
  font: inherit;
  font-size: 0.88rem;
}

textarea.firma-wa-kopya { line-height: 1.5; resize: vertical; }

@media (prefers-color-scheme: dark) {
  .firma-wa-sonuc { border-color: #2f7f52; background: #15251b; }
  .firma-wa-kopya { border-color: #4a453f; background: #15130f; color: inherit; }
}

/* ---------- Mutabakat: firmaya gönderim sonucu (faz35r) ----------

   NOT: Bu bölüm faz35t'de yanlışlıkla silinmişti. Sebebi, CSS'i
   "şu işaretten dosya sonuna kadar değiştir" diye düzenlemem;
   oysa o işaretten sonra başka bir pakette eklenmiş kurallar
   duruyordu. Dosya sonuna ekleme yapılan bir dosyada "sondan
   kes" güvenli değil.

   İlk sürüm doğrudan wa.me'ye yönlendiriyordu ve boş sayfa verdi.
   Artık sonuç listenin üstünde duruyor: düğme, bağlantı ve mesajın
   tam metni. WhatsApp açılmazsa link kopyalanıp elle gönderilsin
   diye üçü birden. */

.mut-wa-sonuc { margin: 0 0 1.25rem; }

.mut-wa-sonuc h2 { margin: 0 0 0.75rem; }

.mut-wa-dugmeler {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.8rem;
  margin: 0 0 1rem;
}

/* Bağlantı ama düğme gibi: tıklanacak yer belli olsun. */
.mut-wa-dugmeler .dugme-benzeri {
  display: inline-block;
  padding: 0.55rem 1.1rem;
  border: 1px solid #1f8a4c;
  border-radius: var(--kose-s, 6px);
  background: #e9f6ed;
  color: #14683a;
  font-size: 0.92rem;
  font-weight: 600;
  text-decoration: none;
}

.mut-wa-dugmeler .dugme-benzeri:hover { background: #d9efe0; }

/* SMS: ikinci yol, bu yüzden sakin renk (faz35w). WhatsApp'ı
   olmayan numaraya ulaşmanın tek yolu. */
.mut-wa-dugmeler .dugme-benzeri.ikincil {
  border-color: var(--cizgi, #ccc7bf);
  background: var(--kart, #fff);
  color: inherit;
}

.mut-wa-dugmeler .dugme-benzeri.ikincil:hover {
  background: var(--yuzey-2, #f1efe9);
}

.mut-wa-sonuc label {
  display: block;
  margin: 0.6rem 0 0.2rem;
  font-size: 0.85rem;
  font-weight: 600;
}

/* Kopyalanacak alanlar: tam genişlik, tek hamlede seçilsin. */
.mut-wa-kopya {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  font-family: inherit;
  font-size: 0.88rem;
}

textarea.mut-wa-kopya { line-height: 1.5; resize: vertical; }

@media (prefers-color-scheme: dark) {
  .mut-wa-dugmeler .dugme-benzeri {
    border-color: #2f7f52; background: #15251b; color: #8fd6a8;
  }
  .mut-wa-dugmeler .dugme-benzeri:hover { background: #1b3124; }
}

/* SMS bağlantısı — ikinci yol (faz35w).

   WhatsApp yalnız WhatsApp'ı OLAN numaraya gidiyor. Olmayan
   numarada "bu numara WhatsApp kullanmıyor" diyor ve orada
   duruyor; bizim aşabileceğimiz bir şey değil. SMS her telefona
   gidiyor, o yüzden yanında duruyor — ama ikinci yol olduğu için
   sakin renkte. */

.firma-sms-baglanti {
  display: inline-block;
  padding: 0.6rem 1.2rem;
  border: 1px solid #ccc7bf;
  border-radius: 6px;
  background: #fff;
  color: #221f1b;
  font-weight: 600;
  text-decoration: none;
}

.firma-sms-baglanti:hover { background: #f1efe9; }

.firma-wa-not { margin: 0 0 0.8rem; }

@media (prefers-color-scheme: dark) {
  .firma-sms-baglanti {
    border-color: #4a453f; background: #1c1a17; color: #ece9e3;
  }
  .firma-sms-baglanti:hover { background: #221f1c; }
}

/* Kopyalama satırı (faz35x): kutu + "Kopyala" düğmesi yan yana.
   Düğmeyi betik ekliyor; betik yoksa kutu tek başına kalıyor ve
   elle seçilip kopyalanabiliyor. */

.firma-kopya-satir {
  display: flex;
  gap: 0.4rem;
  align-items: stretch;
}

.firma-kopya-satir > .firma-wa-kopya { flex: 1 1 auto; min-width: 0; }

.firma-kopyala {
  flex: 0 0 auto;
  padding: 0.5rem 0.8rem;
  border: 1px solid #ccc7bf;
  border-radius: 6px;
  background: #fff;
  font: inherit;
  font-size: 0.85rem;
  white-space: nowrap;
  cursor: pointer;
}

.firma-kopyala:hover { background: #f1efe9; }

@media (prefers-color-scheme: dark) {
  .firma-kopyala {
    border-color: #4a453f; background: #1c1a17; color: #ece9e3;
  }
  .firma-kopyala:hover { background: #221f1c; }
}

/* Kopyalama satırı (faz35x): kutu + "Kopyala" düğmesi yan yana.
   Düğmeyi betik ekliyor; betik yoksa kutu tek başına kalıyor ve
   elle seçilip kopyalanabiliyor. */

.mut-kopya-satir {
  display: flex;
  gap: 0.4rem;
  align-items: stretch;
}

.mut-kopya-satir > .mut-wa-kopya { flex: 1 1 auto; min-width: 0; }

/* Panelin taban kuralı button { width:100% } — burada geri
   alınıyor, yoksa düğme satırı boydan boya kaplıyor. */
.mut-kopyala {
  flex: 0 0 auto;
  width: auto;
  margin: 0;
  padding: 0.45rem 0.8rem;
  font-size: 0.85rem;
  white-space: nowrap;
}

.mut-kopyala.oldu { background: #1f6b3a; }

/* ---------- Mutabakat: firma beyanı ve silme (faz35y) ----------

   Firmanın kendi beyanı karşı tarafın cevabından ayrı dursun:
   ikisi aynı satırda görünürse "bu tutarı kim söyledi" sorusu
   yine cevapsız kalır. */

.mut-firma-beyan {
  margin: 0 0 0.7rem;
  padding: 0.6rem 0.7rem;
  border-left: 3px solid var(--lacivert, #0153a7);
  background: var(--yuzey-2, #f6f5f1);
  font-size: 0.9rem;
}

.mut-firma-beyan p { margin: 0 0 0.45rem; }
.mut-firma-beyan p:last-child { margin-bottom: 0; }

/* Panelin taban kuralı button { width:100% } — geri alınıyor. */
.mut-beyan-sil { width: auto; }

/* Sıfırlama kapalı başlıyor: yanlışlıkla basılacak bir düğme
   değil, firmanın yazılı beyanını silen bir işlem. */
.mut-sifirla { margin: 0.2rem 0 0; font-size: 0.8rem; }

.mut-sifirla > summary {
  color: var(--soluk, #6f6a62);
  cursor: pointer;
}

.mut-sifirla > summary:hover { text-decoration: underline; }

.mut-sifirla form {
  margin: 0.4rem 0 0;
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--cizgi, #ddd9d2);
  border-radius: var(--kose-s, 6px);
  background: var(--kart, #fff);
}

.mut-sifirla-kutu {
  display: flex;
  align-items: start;
  gap: 0.4rem;
  margin: 0 0 0.5rem;
  cursor: pointer;
}

.mut-sifirla button { width: auto; }

/* Mutabakat mektubu bağlantısı (faz35z). */
.mut-mektup {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.6rem;
  margin: 0 0 0.8rem;
}

/* ---------- Firma beyanı: nereden geldiği belli olsun (faz35z) ----

   Üç ayrı tutar aynı ekranda duruyor ve üçü aynı şey değil:
   ızgaradaki bakiye OFİSİN defteri, "karşı taraf" satırı KARŞI
   TARAFIN cevabı, bu satır MÜKELLEF FİRMANIN kendi beyanı.
   E-defter sorumluluğu hangisinin ne olduğuna bağlı; karışırsa
   yanlış rakam onaylanır. */

.mut-firma-im {
  display: inline-block;
  margin-top: 0.15rem;
  padding: 0.05rem 0.4rem;
  border: 1px solid #c9a227;
  border-radius: 999px;
  background: #fdf6e3;
  color: #7a5c06;
  white-space: nowrap;
}

/* Firmanın girdiği numara: ofisinkinden ayrılsın. */
.mut-dug.wa.firmadan {
  border-color: #c9a227;
  color: #7a5c06;
}

/* Beyanı silinmiş numara: silinmedi ama güvenilmez. Aramadan
   önce görülsün diye kırmızı. */
.mut-dug.wa.supheli {
  border-color: #a3232f;
  color: #a3232f;
  text-decoration: line-through;
}

@media (prefers-color-scheme: dark) {
  .mut-firma-im { border-color: #a8861f; background: #2a2413; color: #e0c468; }
  .mut-dug.wa.firmadan { border-color: #a8861f; color: #e0c468; }
  .mut-dug.wa.supheli  { border-color: #c9545e; color: #e98a92; }
}

/* ---------- Üç tutar sütunu (faz35z) ----------

   Bakiye | Firma beyanı | Karşı taraftan gelen. Üçü yan yana
   durunca fark bakışta görünüyor; tek hücreye sıkıştırıldığında
   hangi rakamın kime ait olduğu okunmuyordu. */

.mut-firma-sutun, .mut-karsi-sutun {
  min-width: 8rem;
  font-variant-numeric: tabular-nums;
}

/* Rozetler sayı sütununda: sağa yaslı hizayı bozmasınlar. */
.mut-firma-sutun .rozet, .mut-karsi-sutun .rozet { white-space: nowrap; }


/* ===================================================================
   E-POSTA EKRANI (faz36b)

   Bu ekranın tek sorusu "mesaj gitti mi". Üstte ayarın durumu,
   ortada sayılar, altta tek tek satırlar — yukarıdan aşağı
   genelden ayrıntıya.
   =================================================================== */

/* Menü rengi. Ayarlar bölümünde zaten mavi (mükellefler), zeytin
   (yükümlülükler), mor (içe aktarım) ve bordo (kullanıcılar) var;
   eksik olan ton petrol. */
.m-eposta { --ton: #116b76; --gecis: #e1f0f1; }

/* Panelin taban kuralı .aciklama'yı 34ch'te kesiyor (satır 136).
   Buradaki açıklamalar Yandex'in uygulama şifresini ve günlük
   sınırın neden düşük tutulduğunu anlatıyor; dar kulede
   okunmuyor. */
.eposta-sayfa .aciklama { max-width: 64ch; }

/* ---------- Ayar listesi ----------

   dt/dd çiftleri iki sütun: etiketler solda aynı hizada, değerler
   sağda. Tablo değil çünkü satırların arasında bir ilişki yok —
   her biri ayrı bir ayar. */
.eposta-ayar {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.35rem 1rem;
  margin: 0.6rem 0 0;
  align-items: baseline;
}

.eposta-ayar dt {
  color: var(--soluk);
  font-size: 0.86rem;
}

.eposta-ayar dd {
  margin: 0;
  /* Uzun bir adres kabı taşırmasın. */
  overflow-wrap: anywhere;
}

/* Telefon genişliğinde iki sütun sığmıyor: etiket üstte, değer
   altta. */
@media (max-width: 560px) {
  .eposta-ayar { grid-template-columns: 1fr; gap: 0 0; }
  .eposta-ayar dt { margin-top: 0.6rem; }
}

/* ---------- Sayılar ----------

   Dört sayı yan yana. "Kalan kota" burada çünkü asıl merak edilen
   o: bugün daha kaç mesaj gönderebiliriz. */
.eposta-sayilar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 2.2rem;
  margin: 0.4rem 0 1rem;
}

.eposta-sayi {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  margin: 0;
}

.eposta-buyuk {
  font-size: 1.6rem;
  line-height: 1.1;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

/* Kota bittiğinde ve hata varken kırmızı. Yalnız bu iki durumda:
   dört sayı birden renkliyse hiçbiri dikkat çekmiyor. */
.eposta-dolu { color: var(--uyari); }

/* ---------- Düğmeler ----------

   Taban kural button { width: 100% } (satır 175) burada geri
   alınıyor, yoksa üç düğme üç satır kaplıyor. */
.eposta-islemler {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.7rem;
  align-items: center;
  margin-bottom: 0.6rem;
}
.eposta-islemler form { margin: 0; }
.eposta-islemler button { width: auto; }

/* Kapalı düğme: ayar yoksa ya da sıra boşsa basmanın anlamı yok.
   Gizlemek yerine sönükleştiriliyor — düğmenin orada olduğunu
   bilmek, nerede olduğunu aramaktan iyi. */
.eposta-islemler button[disabled],
.eposta-deneme button[disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ---------- Deneme kutusu ---------- */
.eposta-deneme {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.7rem;
  align-items: center;
  margin: 0.6rem 0 0;
}
.eposta-deneme label { color: var(--soluk); font-size: 0.86rem; }
/* type seçici: formdaki gizli csrf alanları da "input" — kural
   onlara da uyuyordu. Zararsızdı ama yanlış. */
.eposta-deneme input[type="email"] { flex: 1 1 18rem; min-width: 0; }
.eposta-deneme button { width: auto; }

/* ---------- Sunucu yazışması ----------

   Teşhis dökümü. Kapalı duruyor: hata yokken kimse okumuyor,
   hata varken tek bakılacak yer burası. */
.eposta-konusma summary {
  cursor: pointer;
  font-weight: 600;
}

.eposta-dokum {
  margin: 0.6rem 0 0.3rem;
  padding: 0.7rem 0.8rem;
  background: var(--yuzey-2);
  border: 1px solid var(--cizgi-2);
  border-radius: var(--kose-s);
  font-size: 0.82rem;
  line-height: 1.45;
  /* SMTP dökümünde satırlar kısa ama tek tek önemli: sarmak
     yerine kaydırılıyor, satır numaraları karışmasın. */
  overflow-x: auto;
  white-space: pre;
}

/* ---------- Liste ----------

   Sütun sayısı az tutuldu: tür ve iki ayrı zaman sütunu tabloyu
   kabından taşırıyordu ve en çok bakılacak şey — sunucunun
   söylediği hata cümlesi — yatay kaydırmanın arkasında kalıyordu. */
.eposta-izgara .eposta-alici { max-width: 26rem; }
.eposta-izgara .eposta-konu  { max-width: 20rem; }

/* Hata, alıcının altında kendi satırında. Kesilmiyor: sebep
   neredeyse her zaman o cümlede yazılı. */
.eposta-izgara .eposta-hata {
  display: block;
  margin-top: 0.15rem;
  color: var(--uyari);
  font-size: 0.8rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

/* Zaman ve ne olduğu alt alta: "07.10 14:22 / gönderildi". */
.eposta-izgara .eposta-zaman { white-space: nowrap; }
.eposta-izgara .eposta-zaman-not {
  display: block;
  font-size: 0.74rem;
  opacity: 0.8;
}

.eposta-izgara .eposta-iptal { margin: 0; }
.eposta-izgara .eposta-iptal button { width: auto; }

/* Liste üç satırda da kalabiliyor: kabın asgari boyu burada
   gereksiz boşluk bırakıyor (kisi-sayfa ile aynı sebep). */
.eposta-sayfa .izgara-sar { min-height: 0; }

/* Koyu kip kuralı YOK, köprü ekranıyla aynı sebeple (satır 8326):
   panelin gövdesi tek renkte, koyu/açık seçimi tema.js'in
   kenar çubuğu tercihi. Buraya bir prefers-color-scheme bloğu
   koymak, telefonu koyu kipte olan kullanıcıda açık renkli
   tablonun ortasına koyu bir satır koyardı. */


/* ---- SMTP bağlantı teşhisi (faz36d, geçici ekran) ---- */

.smtp-dene-aciklama { max-width: 64ch; }
.smtp-dene-form { margin: 0.8rem 0 0; }
.smtp-dene-form button { width: auto; }

.smtp-dene-izgara .smtp-dene-yer { display: block; }
.smtp-dene-izgara .smtp-dene-not { max-width: 28rem; overflow-wrap: anywhere; }
.smtp-dene-izgara .smtp-dene-hata { color: var(--uyari); font-size: 0.82rem; }

/* Hosting firmasına gönderilecek metin: olduğu gibi seçilip
   kopyalanacak, o yüzden sarmıyor. */
.smtp-dene-kod {
  margin: 0.6rem 0;
  padding: 0.8rem 0.9rem;
  background: var(--yuzey-2);
  border: 1px solid var(--cizgi-2);
  border-radius: var(--kose-s);
  font-size: 0.84rem;
  line-height: 1.5;
  overflow-x: auto;
  white-space: pre;
}


/* ---- E-posta kanalı (faz36e) ----

   WhatsApp düğmesiyle aynı dil, başka renk: WA yeşil, e-posta
   panelin lacivertinde. İkisi yan yana duruyor ve bir bakışta
   hangi kanal olduğu anlaşılmalı. */

.mut-dug.ep { border-color: #2f5ea8; color: #24497f; }
.mut-dug.ep.birincil { font-weight: 700; }

/* Firmanın girdiği adres: ofisinkinden ayrılsın (telefonlarda
   olduğu gibi). Beyanı silinmişse kırmızı ve üstü çizili —
   göndermeden önce görülsün. */
.mut-dug.ep.firmadan { border-color: #c9a227; color: #7a5c06; }
.mut-dug.ep.supheli {
  border-color: #a3232f;
  color: #a3232f;
  text-decoration: line-through;
}

/* Gönderim izi: mesaj kutusunun altında tek satır. */
.mut-ep-iz {
  display: flex;
  flex-wrap: wrap;
  gap: 0.2rem 0.45rem;
  align-items: baseline;
  margin: 0.45rem 0 0;
  overflow-wrap: anywhere;
}


/* ---- Karşı tarafın yüklediği ekstre (faz36h) ----

   Cevap kutusunun içinde, cevap notunun altında. Ayrı bir blok
   çünkü ayrı bir şey: biri karşı tarafın yazdığı, öteki
   gönderdiği. */

.mut-ek {
  margin-top: 0.6rem;
  padding-top: 0.5rem;
  border-top: 1px dashed var(--cizgi-2);
}

.mut-ek-baslik {
  display: block;
  font-size: 0.74rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--soluk);
  margin-bottom: 0.3rem;
}

.mut-ek-satir {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.5rem;
  align-items: baseline;
  margin: 0 0 0.3rem;
}
.mut-ek-satir:last-child { margin-bottom: 0; }

/* Dosya adı uzun olabiliyor; kesilmiyor, sarıyor. */
.mut-ek-ad { overflow-wrap: anywhere; }

/* İndirme düğmesi: WhatsApp yeşili ve e-posta lacivertinden ayrı
   dursun diye mor. Üçü yan yana gelmiyor ama aynı dilde. */
.mut-dug.ek { border-color: #6b3fa0; color: #55318a; }


/* ---- Ekstre yükleme (faz36h) ----

   "Mutabık değiliz" seçilince beliriyor. Sayfadaki diğer
   alanlardan ayrı dursun diye hafif bir kutu içinde: isteğe
   bağlı olduğu bir bakışta anlaşılsın, zorunlu bir adım gibi
   durmasın. */

.onay-ekstre {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin-top: 0.7rem;
  padding: 0.75rem 0.85rem;
  background: #f7f6f3;
  border: 1px solid #e6e3dd;
  border-radius: 8px;
}

.onay-ekstre > label { margin-top: 0; font-size: 0.88rem; font-weight: 550; }

/* Dosya seçicinin kendi düğmesi tarayıcıdan geliyor; yalnız
   taşmasını engelliyoruz. Telefonda dosya adı uzun olabiliyor. */
.onay-ekstre input[type="file"] {
  width: 100%;
  box-sizing: border-box;
  font: inherit;
  font-size: 0.9rem;
}

.onay-ekstre p { margin: 0; }

/* hidden özniteliği: betik yüklenmezse alan açık kalıyor. Panelin
   taban kuralları [hidden] etiketini bazı yerlerde eziyor, burada
   kesinleştiriyoruz. */
.onay-ekstre[hidden] { display: none; }


/* ---- Ekstre yükleme teşhisi (faz36k, geçici ekran) ---- */

.ekd-aciklama { max-width: 64ch; }
.ekd-izgara .ekd-deger { max-width: 21rem; overflow-wrap: anywhere; }
.ekd-izgara .ekd-not   { max-width: 20rem; }

/* BOM taramasında "<?php ile başlamayan" dosyaların ilk baytları. */
.bom-izgara .bom-bayt { font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; }


/* ---- Mutabakat deneme temizliği (faz36l) ----

   Tablo sekiz sütunlu ve iki sütunu uzun metin (ünvan, e-posta
   adresi). Taban genişliklerinde satırlar sarıyor ve hangi kutunun
   hangi satıra ait olduğu kayboluyor; sütunlara sınır konuyor. */

.mtem-sayfa .aciklama { max-width: 72ch; }

.mtem-tablo { width: 100%; }

.mtem-sec { width: 2.4rem; text-align: center; }
.mtem-sec input { width: auto; margin: 0; }

.mtem-mukellef { max-width: 13rem; overflow-wrap: anywhere; }
.mtem-adres    { max-width: 17rem; overflow-wrap: anywhere; }

/* Ofis adresine gitmiş satır: önceden işaretli geliyor, bunu
   satırın kendisi de söylesin. Renk değil zemin tonu — tabloda
   dört ayrı rozet rengi zaten var.

   prefers-color-scheme bloğu YOK: panelin gövdesi koyu kipi
   desteklemiyor (yalnız kenar çubuğunun üç görünümü var). Buraya
   koyu bir ton koymak, işletim sistemi koyu olan kullanıcıda açık
   zeminli tablonun ortasında kahverengi bir satır bırakırdı. */
.mtem-tablo tr.mtem-bizim > td { background: #fff8e6; }

.mtem-sayfa .tehlike-kutu .onay { max-width: 72ch; }


/* ---- BOM tarayıcı: elle kırpma sütunu (faz36m) ---- */

.bom-izgara .bom-sec { width: 3rem; text-align: center; }
.bom-izgara .bom-sec input { width: auto; margin: 0; }

#bom-elle-form button { width: auto; }


/* ---- BOM tarayıcı: config.php sağlık raporu (faz36n) ---- */

.bom-rapor {
  display: grid;
  grid-template-columns: 11rem 1fr;
  gap: 0.35rem 1rem;
  margin: 0 0 1.2rem;
  align-items: baseline;
}

.bom-rapor dt { color: var(--soluk); font-size: 0.9rem; }
.bom-rapor dd { margin: 0; }
.bom-rapor .bom-bayt { margin-left: 0.4rem; }
.bom-rapor ul { margin: 0.3rem 0 0; padding-left: 1.1rem; }

.bom-alt { margin: 1.4rem 0 0.4rem; font-size: 0.95rem; }

/* Dar ekranda alt alta: iki sütun 400 pikselde sığmıyor. */
@media (max-width: 640px) {
  .bom-rapor { grid-template-columns: 1fr; gap: 0.15rem; }
  .bom-rapor dt { margin-top: 0.6rem; }
}


/* ---- Firma özeti kapsamı (faz36p) ----

   Mükellef satırındaki gönder formu artık iki parçalı: kapsam
   seçimi + düğme. Hücre dar olduğu için alt alta diziliyor. */

.mut-kapsam { display: block; margin: 0 0 0.3rem; }
.mut-kapsam select {
  width: 100%;
  margin: 0.1rem 0 0;
  padding: 0.3rem 0.4rem;
  font-size: 0.85rem;
}

/* Hazırlanan bağlantının kapsamı — dar kapsamla üretilmiş bir
   bağlantıyı "hepsi gitti" sanmak eksik mutabakat demek. */
.mut-wa-kapsam {
  margin: 0 0 0.8rem;
  padding: 0.4rem 0.7rem;
  border-left: 3px solid var(--lacivert);
  background: var(--kagit);
  font-size: 0.9rem;
}

/* ---- Cari seçme ekranı ---- */

.mut-sec-kutu .aciklama { max-width: 70ch; }

.mut-sec-baslik { margin: 1.1rem 0 0.3rem; font-size: 0.95rem; }

.mut-sec-tumu {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0;
  cursor: pointer;
}
.mut-sec-tumu input { width: auto; margin: 0; }

.mut-sec-tablo { width: 100%; }
.mut-sec-kutucuk { width: 2.4rem; text-align: center; }
.mut-sec-kutucuk input { width: auto; margin: 0; }

/* KUTU EKRANA SIĞIYOR, LİSTE KENDİ İÇİNDE KAYIYOR (faz36q).

   Bu sayfa sabit yükseklikli ızgara düzeninde: body 100vh ve
   overflow:hidden. 34 carilik bir listede düğme ekranın dışında
   kalıyor ve ulaşılamıyordu. Kutu main'in esnek çocuğu olarak
   artan yeri kaplıyor, liste içeride kayıyor, düğme şeridi
   altta sabit duruyor. */
.mut-sec-kutu {
  display: flex;
  flex-direction: column;
  /* min-height: 0 — flex çocuğunun içeriğinden küçülebilmesi için
     şart; olmazsa kutu yine içeriği kadar uzar (aynı ders
     .izgara-ekran kuralında da yazılı). */
  min-height: 0;
  flex: 1 1 auto;
  overflow: hidden;
}

.mut-sec-kutu > form {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
}

.mut-sec-liste {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding-right: 0.3rem;
}

.mut-sec-serit {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex: 0 0 auto;
  margin-top: 0.8rem;
  padding-top: 0.8rem;
  border-top: 1px solid var(--cizgi);
  background: var(--yuzey);
}
.mut-sec-serit button { width: auto; }
.mut-sec-sayac { font-size: 0.9rem; color: var(--soluk); }
.mut-sec-vazgec { font-size: 0.9rem; margin-left: auto; }
.mut-sec-not { margin: 0.5rem 0 0; }


/* ===================================================================
   E-DEFTER KONTROLÜ (faz37a)

   edefter_kontrol.php. Liste ekranı panelin ızgarasını kullanıyor;
   buradakiler yalnız ayrıntı tablolarının ters hücresi, bölüm
   başlıkları ve ayar formu.
   =================================================================== */

.edk-ekran .edk-bolum { margin: 0 0 1.2rem; }
.edk-ekran .edk-bolum > h2 {
  display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;
}
.edk-ekran .edk-bolum > .aciklama { margin: 0.2rem 0 0.6rem; }
.edk-kaynak { margin: 0 0 0.8rem; }

/* Ayrıntı tabloları sayfanın içinde akıyor (ızgara ekranı değil);
   geniş tablo yatayda kendi kutusunda kaysın. */
.edk-tablo-sar { overflow-x: auto; }
table.edk-tablo { width: 100%; }
table.edk-tablo td { vertical-align: top; }
table.edk-tablo td.edk-ters {
  background: #fdeceb; color: #8e1d13; font-weight: 600;
}
table.edk-tablo tr.edk-toplam td { font-weight: 600; border-bottom-width: 2px; }
.edk-kod { font-variant-numeric: tabular-nums; white-space: nowrap; }
td.edk-yon { white-space: nowrap; color: var(--soluk); }

.edk-secim { margin: 0 0 0.6rem; font-size: 0.9rem; }
.edk-secim a.secili { font-weight: 700; text-decoration: none; color: inherit; }

.edk-gunler { margin-top: 0.2rem; font-size: 0.82rem; }
.edk-gunler > summary { cursor: pointer; color: var(--soluk); }
.edk-gunler > span { display: inline-block; margin: 0.1rem 0.8rem 0 0; white-space: nowrap; }

table.edk-liste tr.edk-veri-yok td { color: var(--soluk); }

.edk-ayar-alan { margin: 0 0 0.9rem; }
.edk-ayar-alan label { display: flex; gap: 0.4rem; align-items: center; font-weight: 600; margin-bottom: 0.25rem; }
.edk-ayar-alan input[type="text"] { width: 100%; max-width: 30rem; }
.edk-ayar-alan p { margin: 0.25rem 0 0; }
.edk-varsayilan { display: block; }
.edk-ayar button.edk-kaydet { width: auto; }
table.edk-tablo td.edk-ters-cari { background: #fff7db; color: #7a5c08; }
.edk-ornek { padding: 0 0.3rem; border-radius: 3px; }
.edk-ornek.edk-ters { background: #fdeceb; color: #8e1d13; font-weight: 600; }
.edk-ornek.edk-ters-cari { background: #fff7db; color: #7a5c08; }
ul.edk-bulgu { margin: 0 0 0.8rem; padding-left: 1.2rem; }
ul.edk-bulgu li { margin: 0.15rem 0; }


/* ===================================================================
   E-DEFTER KONTROL RAPORU — yazdırma / PDF (faz37b)

   edefter_kontrol_yazdir.php. A4 dikey; düzeltilecekler kırmızı,
   bilgi sarı, temiz yeşil. Renklerin PDF'te çıkması için yazdırma
   penceresinde "Arka plan grafikleri" açık olmalı; print-color-adjust
   bunu tarayıcıya da söylüyor.
   =================================================================== */

.edr {
  width: 21cm; max-width: 100%;
  margin: 1.25rem auto; padding: 1.2cm 1.4cm;
  background: #fff; color: #1d2430;
  font-size: 10pt; line-height: 1.4;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.edr-antet { display: flex; gap: 0.8rem; align-items: center; border-bottom: 2px solid #1f3a5f; padding-bottom: 0.5rem; }
.edr-logo { height: 1.4cm; width: auto; }
.edr-kurum { margin: 0; font-weight: 700; font-size: 12pt; }
.edr-alt { margin: 0; color: #5b6676; }
.edr-tarih { margin-left: auto; text-align: right; font-size: 9pt; color: #5b6676; }
.edr-baslik { margin: 0.8rem 0 0.6rem; font-size: 15pt; letter-spacing: 0.04em; color: #1f3a5f; }
.edr-baslik span { display: block; font-size: 10.5pt; letter-spacing: 0; color: #5b6676; font-weight: 600; }
.edr h2 { font-size: 11.5pt; margin: 1rem 0 0.35rem; color: #1f3a5f; border-bottom: 1px solid #d5dbe4; padding-bottom: 0.15rem; }
.edr h2 small { font-weight: 400; color: #5b6676; }
.edr h3 { font-size: 10.5pt; margin: 0.7rem 0 0.25rem; }
.edr-bolum { break-inside: auto; }

.edr table { width: 100%; border-collapse: collapse; }
.edr th, .edr td { padding: 0.18rem 0.4rem; border: 1px solid #d5dbe4; vertical-align: top; text-align: left; }
.edr thead th { background: #eef2f7; font-size: 8.5pt; text-transform: uppercase; letter-spacing: 0.03em; }
.edr td.sag, .edr th.sag { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.edr tr { break-inside: avoid; }

.edr-kimlik th { width: 14%; background: #f6f8fb; font-weight: 600; }
.edr-ozet th { width: 22%; }
.edr-ozet td.sag { width: 12%; font-weight: 700; }

.edr .edr-kirmizi td, .edr .edr-kirmizi th, .edr-ornek.edr-kirmizi { background: #fdeceb; color: #8e1d13; }
.edr .edr-sari td, .edr .edr-sari th, .edr-ornek.edr-sari, .edr-not.edr-sari { background: #fff7db; color: #6b4f06; }
.edr .edr-yesil td, .edr .edr-yesil th { background: #e9f5ee; color: #0f5c36; }
.edr .edr-gri td { color: #8a94a3; }
.edr td.edr-hucre-kirmizi { background: #fdeceb; color: #8e1d13; font-weight: 700; }
.edr .edr-toplam td { font-weight: 700; border-bottom: 2px solid #1f3a5f; }
.edr-yazi-kirmizi { color: #8e1d13; }
.edr-ornek { padding: 0 0.25rem; border-radius: 2px; }

.edr-kod { white-space: nowrap; font-variant-numeric: tabular-nums; }
.edr-aciklama { color: #5b6676; font-size: 9pt; margin: 0.15rem 0 0.4rem; }
.edr-temiz { margin: 0.2rem 0; padding: 0.3rem 0.5rem; background: #e9f5ee; color: #0f5c36; }
.edr-not { padding: 0.35rem 0.5rem; }
.edr-ozet-sayi { margin: 0.2rem 0 0.6rem; }
.edr-liste td { font-size: 9pt; }

.edr-imza { display: flex; gap: 1.5rem; margin-top: 1.6rem; }
.edr-imza div { flex: 1; font-size: 9pt; color: #5b6676; }
.edr-imza span { display: block; height: 1.3cm; border-bottom: 1px solid #1d2430; }
.edr-dipnot { margin-top: 1rem; font-size: 8pt; color: #8a94a3; border-top: 1px solid #d5dbe4; padding-top: 0.3rem; }

@media print {
  .edr { width: auto; margin: 0; padding: 1cm 1.2cm; }
  .edr h2 { break-after: avoid; }
}

/* ---- E-defter ek kontroller (faz37c) ---- */
.edk-ek { border-left: 3px solid var(--cizgi); padding: 0.4rem 0 0.4rem 0.8rem; margin: 0.8rem 0; }
.edk-ek-k { border-left-color: #c0392b; }
.edk-ek-u { border-left-color: #d98a2b; }
.edk-ek h3 { font-size: 0.95rem; margin: 0 0 0.3rem; }
.edk-ek p { margin: 0 0 0.4rem; }
.edk-kural-liste { margin: 0.4rem 0 0; padding-left: 1.1rem; }
.edk-kural-liste li { margin: 0.25rem 0; }
.edr-ek { margin: 0.5rem 0 0.8rem; padding-left: 0.5rem; border-left: 2px solid #d5dbe4; break-inside: avoid; }
.edr-ek.edr-ek-k { border-left-color: #c0392b; }
.edr-ek.edr-ek-u { border-left-color: #d98a2b; }
.edr-ek h3 { font-size: 10pt; margin: 0 0 0.15rem; }
.edr-ek p { margin: 0 0 0.25rem; }

/* ===================================================================
   SIKI GÖRÜNÜM — EDM Hesapları ve E-Defter Kontrol (faz38a)

   Harun (10 Ekim): yazılar büyük, açıklamalar dar sütunda altı satıra
   yayılıyor, hücreler hizasız, düğmeler alt alta. Bu iki ekranda yazı
   boyu küçüldü, tek yazı tipi (tek aralıklı VKN/kod yok), açıklamalar
   tam genişlik, satır içi düğmeler küçük ve yan yana.
   =================================================================== */

/* ---------- EDM Hesapları ---------- */
.edm-hesap-sayfa .mesaj { font-size: 0.78rem; padding: 0.45rem 0.7rem; margin-bottom: 0.6rem; }
.edm-hesap-sayfa .durum-serit,
.edm-hesap-sayfa .izg-serit { font-size: 0.78rem; }

table.izgara.edm-hesap { font-size: 0.78rem; }
table.izgara.edm-hesap thead th { font-size: 0.66rem; padding: 0.4rem 0.5rem; letter-spacing: 0.03em; }
table.izgara.edm-hesap td {
  padding: 0.28rem 0.5rem;
  vertical-align: middle;
  font-size: 0.78rem;
}
table.izgara.edm-hesap td.ad-hucre {
  font-weight: 500;
  max-width: 17rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
table.izgara.edm-hesap td.edm-vkn { white-space: nowrap; color: var(--ikincil); }

/* Alanlar: panelin taban input kuralındaki alt boşluk (1.1rem) hücrede
   alanı yukarı itiyordu — VKN ile aynı hizaya bu yüzden gelmiyordu. */
table.izgara.edm-hesap input[type="text"],
table.izgara.edm-hesap input[type="password"],
table.izgara.edm-hesap select {
  margin: 0;
  padding: 0.22rem 0.45rem;
  height: 1.75rem;
  font: inherit;
  font-size: 0.78rem;
  border-radius: 6px;
}
table.izgara.edm-hesap input[type="text"],
table.izgara.edm-hesap input[type="password"] { min-width: 9.5rem; }
table.izgara.edm-hesap select { width: auto; min-width: 5.2rem; padding-right: 1.4rem; }
table.izgara.edm-hesap td input[type="checkbox"] { margin: 0; vertical-align: middle; }
table.izgara.edm-hesap .rozet { font-size: 0.68rem; }

/* Satır düğmeleri: küçük, yan yana, araç çubuğundaki çiplerin dilinde */
table.izgara.edm-hesap td.edm-islem { width: 1px; white-space: nowrap; }
.edm-dugmeler { display: flex; gap: 0.3rem; align-items: center; }
button.edm-d {
  width: auto;
  padding: 0.18rem 0.7rem;
  font: inherit;
  font-size: 0.72rem;
  font-weight: 550;
  line-height: 1.35;
  border-radius: 20px;
  border: 1px solid var(--cizgi);
  background: var(--yuzey);
  color: var(--ikincil);
}
button.edm-d:hover { border-color: var(--lacivert); color: var(--murekkep); background: var(--yuzey); }
button.edm-d.edm-d-ana { background: var(--lacivert); border-color: var(--lacivert); color: #fff; }
button.edm-d.edm-d-ana:hover { background: #014386; color: #fff; }
button.edm-d.edm-d-sil { color: var(--uyari); border-color: transparent; background: transparent; padding-left: 0.45rem; padding-right: 0.45rem; }
button.edm-d.edm-d-sil:hover { border-color: var(--uyari); background: #fdeceb; color: var(--uyari); }

/* ---------- E-Defter Kontrol ---------- */
.edk-ekran { font-size: 0.82rem; }
.edk-ekran .kutu { padding: 0.8rem 1rem; }
.edk-ekran .edk-bolum { margin: 0 0 0.8rem; }
.edk-ekran .kutu > h2,
.edk-ekran .edk-bolum > h2 { font-size: 0.92rem; margin: 0 0 0.2rem; }
.edk-ekran .aciklama,
.edk-ekran .edk-bolum > .aciklama {
  max-width: none;
  font-size: 0.76rem;
  line-height: 1.45;
  margin: 0 0 0.5rem;
}
.edk-ekran .rozet { font-size: 0.68rem; }
.edk-ekran .mesaj { font-size: 0.76rem; padding: 0.4rem 0.65rem; margin-bottom: 0.5rem; }
.edk-ekran .edk-kaynak { font-size: 0.72rem; margin: 0 0 0.5rem; }

.edk-ekran table.edk-tablo { font-size: 0.76rem; }
.edk-ekran table.edk-tablo thead th { font-size: 0.64rem; padding: 0.35rem 0.55rem; }
.edk-ekran table.edk-tablo td { padding: 0.26rem 0.55rem; vertical-align: middle; }
.edk-ekran .edk-kod { font-family: inherit; }

/* Çeyrek sonu düzeltilecekler tablosu (eskiden madde listesi) */
.edk-duzelt { margin: 0 0 0.6rem; }
.edk-duzelt table.edk-tablo td:first-child { width: 1px; white-space: nowrap; font-weight: 600; }
.edk-duzelt table.edk-tablo td:nth-child(3) { width: 1px; white-space: nowrap; }
.edk-duzelt table.edk-tablo td:nth-child(4) { width: 1px; white-space: nowrap; }

/* Ana / alt hesap — yalnız tersler / bütün mizan: küçük çip grubu */
.edk-ekran .edk-secim { font-size: 0.72rem; margin: 0.2rem 0 0.45rem; display: flex; flex-wrap: wrap; gap: 0.25rem; align-items: center; color: var(--soluk); }
.edk-ekran .edk-secim a {
  padding: 0.08rem 0.6rem; border: 1px solid var(--cizgi); border-radius: 20px;
  color: var(--ikincil); text-decoration: none; background: var(--yuzey);
}
.edk-ekran .edk-secim a:hover { border-color: var(--lacivert); color: var(--murekkep); }
.edk-ekran .edk-secim a.secili { background: var(--mavi-a); border-color: var(--lacivert); color: var(--murekkep); font-weight: 600; }

.edk-ekran .edk-ek { margin: 0.55rem 0; padding: 0.15rem 0 0.15rem 0.7rem; }
.edk-ekran .edk-ek h3 { font-size: 0.8rem; margin: 0 0 0.15rem; }
.edk-ekran .edk-ek p { font-size: 0.76rem; margin: 0 0 0.3rem; color: var(--ikincil); }
.edk-ekran .edk-kural-liste { font-size: 0.76rem; }
.edk-ekran .edk-ayar-alan label { font-size: 0.78rem; }
.edk-ekran .edk-ayar-alan input[type="text"] { font-size: 0.8rem; padding: 0.3rem 0.5rem; margin-bottom: 0; }
.edk-ekran .edk-ayar-alan p { font-size: 0.72rem; }
.edk-ekran .edk-secim .edk-ara { width: 0.8rem; }
/* Durum hücreleri tek satır: rozet + kısa bilgi; uzun hata metni ipucunda */
table.izgara.edm-hesap td.kucuk { white-space: nowrap; }
table.izgara.edm-hesap td.kucuk .rozet { margin-right: 0.25rem; }
table.izgara.edm-hesap .edm-kisa {
  display: inline-block; max-width: 9rem; vertical-align: bottom;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
table.izgara.edm-hesap input[type="text"],
table.izgara.edm-hesap input[type="password"] { min-width: 8.5rem; }
table.izgara.edm-hesap td.ad-hucre { max-width: 15rem; }
/* E-defter gün içi: "günler" aç-kapa hesap adının yanında, satırı uzatmasın */
.edk-ekran .edk-gunler { display: inline; margin: 0 0 0 0.4rem; font-size: 0.7rem; }
.edk-ekran .edk-gunler > summary { display: inline; }
.edk-ekran .edk-gunler[open] > span:first-of-type { margin-left: 0; }
.edk-ekran .edk-gunler[open] { display: block; margin: 0.15rem 0 0; }
table.izgara.edm-hesap td { padding: 0.28rem 0.4rem; }
table.izgara.edm-hesap thead th { padding: 0.4rem 0.4rem; }
table.izgara.edm-hesap input[type="text"],
table.izgara.edm-hesap input[type="password"] { min-width: 0; width: 8.2rem; }
table.izgara.edm-hesap select { min-width: 0; width: 4.9rem; }
table.izgara.edm-hesap td.ad-hucre { max-width: 13.5rem; min-width: 0; }
table.izgara.edm-hesap input[type="text"],
table.izgara.edm-hesap input[type="password"] { width: 7.6rem; }
table.izgara.edm-hesap select { width: 5.5rem; padding-right: 0.3rem; }
table.izgara.edm-hesap td.ad-hucre { max-width: 12.5rem; }
table.izgara.edm-hesap td input[type="checkbox"] { width: 0.95rem; height: 0.95rem; }
.edk-ekran .edk-ayar button.edk-kaydet { padding: 0.32rem 1.1rem; font-size: 0.78rem; border-radius: 20px; }
.edk-ekran .edk-ayar-alan { margin: 0 0 0.6rem; }
.edk-ekran .edk-ayar-alan input[type="text"] { max-width: 24rem; height: 1.8rem; }
.edk-ekran .edk-kural-liste { list-style: none; padding-left: 0; }
.edk-ekran .edk-kural-liste li { margin: 0.18rem 0; }
.edk-ekran .edk-kural-liste .rozet { display: inline-block; min-width: 5.4rem; text-align: center; margin-right: 0.35rem; }

/* ---------- Cari Mutabakat — mükellef listesi (faz38c) ----------
   Müşavir sütunu kalktı (üstte süzgeç var; ad hücresinin ipucunda).
   Firma özeti üç sütuna bölündü: durum + iz, kapsam, düğme. Satırlar
   tek satır; yazılar EDM / E-Defter ekranlarıyla aynı boyda. */
table.izgara.mut-mukellef { font-size: 0.78rem; }
table.izgara.mut-mukellef thead th { font-size: 0.66rem; padding: 0.4rem 0.5rem; }
table.izgara.mut-mukellef td { padding: 0.28rem 0.5rem; vertical-align: middle; white-space: nowrap; }
table.izgara.mut-mukellef td.ad-hucre { max-width: 17rem; overflow: hidden; text-overflow: ellipsis; }
table.izgara.mut-mukellef .mut-ad { font-weight: 550; }
table.izgara.mut-mukellef .rozet { font-size: 0.68rem; }
table.izgara.mut-mukellef td.mut-ldurum { width: 1px; }
table.izgara.mut-mukellef td.mut-firma-hucre { min-width: 0; }
table.izgara.mut-mukellef .mut-firma-iz {
  display: inline-block; max-width: 15rem; vertical-align: bottom; margin-left: 0.25rem;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
table.izgara.mut-mukellef td.mut-kapsam-hucre { width: 1px; }
table.izgara.mut-mukellef td.mut-kapsam-hucre select {
  width: auto; min-width: 8.5rem; margin: 0; height: 1.75rem;
  padding: 0.18rem 0.4rem; font: inherit; font-size: 0.76rem; border-radius: 6px;
}
table.izgara.mut-mukellef td.mut-islem-hucre { width: 1px; }
.mut-islem { display: flex; gap: 0.35rem; align-items: center; }
.mut-islem .mut-firma-gonder { margin: 0; }
button.mut-d {
  width: auto; padding: 0.18rem 0.7rem; font: inherit; font-size: 0.72rem; font-weight: 550;
  line-height: 1.35; border-radius: 20px; border: 1px solid var(--cizgi);
  background: var(--yuzey); color: var(--ikincil); white-space: nowrap;
}
button.mut-d:hover { border-color: var(--lacivert); color: var(--murekkep); background: var(--yuzey); }
button.mut-d.mut-d-ana { background: var(--lacivert); border-color: var(--lacivert); color: #fff; }
button.mut-d.mut-d-ana:hover { background: #014386; color: #fff; }
button.mut-d.mut-d-sil { color: var(--uyari); border-color: var(--uyari); background: transparent; }
table.izgara.mut-mukellef .mut-sifirla { margin: 0; font-size: 0.7rem; }
table.izgara.mut-mukellef .mut-sifirla > summary { color: var(--soluk); }
table.izgara.mut-mukellef .mut-sifirla[open] { white-space: normal; }
table.izgara.mut-mukellef .mut-sifirla form { margin-top: 0.3rem; }
table.izgara.mut-mukellef td.mut-ldurum { width: auto; min-width: 7rem; }
table.izgara.mut-mukellef td.mut-ldurum .rozet { display: inline-block; white-space: nowrap; }
table.izgara.mut-mukellef td.mut-islem-hucre { width: auto; padding-right: 0.8rem; }
table.izgara.mut-mukellef td.mut-firma-hucre { width: 100%; }
table.izgara.mut-mukellef td.mut-ldurum .rozet { display: inline-flex; width: auto; margin: 0 0.15rem 0 0; }
table.izgara.mut-mukellef td.mut-firma-hucre { width: auto; }
table.izgara.mut-mukellef td.mut-ldurum { min-width: 0; }
table.izgara.mut-mukellef td.mut-kapsam-hucre select { min-width: 0; width: 7.8rem; }
table.izgara.mut-mukellef .mut-firma-iz { max-width: 13rem; }

/* ===================================================================
   TEK YAZI TİPİ (faz38c)

   Harun (10 Ekim): "burda bile fontlar aynı değil". Evrak/hesap
   numaraları (.kdv-evrak — köprü dönem sütunu, KDV, EDM...), kod
   parçaları ve anahtar kutusu tek aralıklı (daktilo) yazıyla
   çıkıyordu. Panelin bütün ekranlarında tek yazı tipi: GH Panel Sans.
   Sayılar hizalı kalsın diye tabular rakam. Bayt dökümü (.bom-bayt)
   ve hata çıktısı (pre) teknik kaldı.
   =================================================================== */
.kdv-evrak,
.anahtar,
.mesaj-kutu textarea,
.yt-uyari code,
.kisi-kural code,
code, kbd, samp, tt {
  font-family: inherit;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  letter-spacing: 0;
}
.kdv-evrak { font-size: inherit; }
table.izgara.mut-mukellef .mut-firma-iz { max-width: 10rem; }
table.izgara.mut-mukellef td.ad-hucre { max-width: 15rem; }

/* ===================================================================
   MODERN HÜCRE (faz38d) — "Sade"nin yerine

   Harun (10 Ekim): renkli görünüm durumları bir bakışta ayırt
   ettiriyor, ama kaba; sade görünüm ise rengi tek noktaya indirdiği
   için taranamıyor. Modern: hücrenin içinde, durumun kendi renginin
   açık tonuyla dolu yuvarlak bir etiket + koyu tonda yazı + renk
   noktası. Renkler Renkli görünümdekilerin AYNISI (--nk), yalnız
   tonlanmış. Seçim anahtarı yine "Hücreler: Modern / Renkli"; içeride
   değer hâlâ 'sade' (kayıtlı tercihler bozulmasın).
   =================================================================== */
:root:not([data-hucre="renkli"]) table.izgara td.hucre { padding: 0; }
:root:not([data-hucre="renkli"]) table.izgara td.hucre .hucre-secim {
  display: block;
  width: calc(100% - 0.5rem);
  height: calc(100% - 0.4rem);
  min-height: 1.6rem;
  margin: 0.2rem 0.25rem;
  padding: 0.18rem 0.5rem 0.18rem 1.35rem;
  border-radius: 6px;
  font-size: 0.74rem;
  font-weight: 600;
  letter-spacing: 0.005em;
  background: color-mix(in srgb, var(--nk, transparent) 17%, var(--yuzey));
  color: color-mix(in srgb, var(--nk, var(--murekkep)) 62%, #0b0f14);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--nk, transparent) 28%, transparent);
}
:root:not([data-hucre="renkli"]) table.izgara td.hucre::before {
  left: 0.75rem;
  width: 0.42rem;
  height: 0.42rem;
  border: none;
  z-index: 1;
  pointer-events: none;
}
/* Boş ve yükümlülüksüz hücre: etiket yok, yalnız ince çerçeveli nokta */
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-bos .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-kapali-acik .hucre-secim {
  background: transparent; box-shadow: none; color: var(--soluk); font-weight: 400;
}
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-bos::before,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-kapali-acik::before {
  border: 1px solid var(--cizgi); width: 0.4rem; height: 0.4rem;
}
:root:not([data-hucre="renkli"]) table.izgara tbody tr:hover td.hucre .hucre-secim {
  background: color-mix(in srgb, var(--nk, transparent) 24%, var(--yuzey-2));
}
/* Açık renkli durumlar (sarı, gri, açık mavi, lila) beyaza yakın
   kalmasın: biraz daha dolu */
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-aktarildi .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-sistemde .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-hazir .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-bordro .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-mahsup .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-geldi .hucre-secim {
  background: color-mix(in srgb, var(--nk) 38%, var(--yuzey));
  color: color-mix(in srgb, var(--nk) 35%, #0b0f14);
}

/* --- Beyanname ızgarası: sütun genişlikleri ---
   faz43k–43l (Harun): ünvan kısalmasın; ünvan dışındaki bütün sütunlar eşit.
   Genişlik colgroup'tan: mükellef sütunu --by-ad, durum sütunları
   (100% − --by-ad) / --by-n. Hücre kurallarındaki genişlikler kapalı. */
/* faz30q bütün ızgaraları içerik ölçüsüne (auto) almıştı; burada sabit
   yerleşim şart, yoksa "Kontrol Edildi" gibi uzun durumlar kendi sütununu
   büyütüyor. Ünvan genişliği (--by-ad) beyanname.php'de en uzun ünvandan. */
body.panel > main.izgara-ekran table.izgara.beyanname-izgara { table-layout: fixed; width: 100%; --by-ad: 20rem; }
table.izgara.beyanname-izgara col.by-col-ad { width: var(--by-ad); }
table.izgara.beyanname-izgara col.by-col-tur { width: calc((100% - var(--by-ad)) / var(--by-n, 5)); }
table.izgara.beyanname-izgara th.sabit-sutun .sutun-suzgec summary,
table.izgara.beyanname-izgara th.sabit-sutun .by-ad { overflow: hidden; }
body.panel > main.izgara-ekran table.izgara.beyanname-izgara th.sabit-sutun,
body.panel > main.izgara-ekran table.izgara.beyanname-izgara td.sabit-sutun,
table.izgara.beyanname-izgara th.tur-basligi,
table.izgara.beyanname-izgara td.hucre { width: auto; min-width: 0; max-width: none; }
table.izgara.beyanname-izgara td.hucre .hucre-secim { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* --- Mükellef adları: daha ince ve küçük (bütün ızgaralar) --- */
table.izgara td.ad-hucre,
table.izgara td.ad-hucre a {
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--murekkep);
}
table.izgara td.ad-hucre .alt-bilgi { font-size: 0.66rem; letter-spacing: 0.02em; }
table.izgara.beyanname-izgara td.ad-hucre,
table.izgara.tahakkuk td.ad-hucre { padding-top: 0.28rem; padding-bottom: 0.28rem; }
/* Ödemeler ve Makbuz (ücret) ızgaraları da aynı ad boyunda (faz38d).
   Makbuzda ad hücresi <th>; ödemelerde ad + toplam/kalan özeti var. */
table.izgara th.ad-hucre,
table.izgara th.ad-hucre a,
table.izgara th.ad-hucre label {
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.01em;
}
table.izgara th.ad-hucre a { color: var(--murekkep); }
table.izgara th.ad-hucre .alt-bilgi { font-size: 0.66rem; letter-spacing: 0.02em; }
table.izgara.odemeler td.mukellef-hucre .mk-ozet { font-size: 0.72rem; }

/* ===================================================================
   MODERN HÜCRE — DOLU RENK (faz38f)

   Harun (10 Ekim): açık tonlu etiket algıyı zayıflattı; "KDV'si bitmiş
   firmanın hücresinin komple yeşil olması güzel bir algı yaratıyordu"
   ve ünvan sütunundaki grup renkleri de kalsın. Modern artık Renkli'nin
   dolu rengini kullanıyor; farkı yuvarlak köşeli, araları açık bloklar
   ve küçük, düzgün yazı. Ünvan sütunu grup zeminini koruyor (faz38d'deki
   beyaz zemin + şerit denemesi geri alındı).
   =================================================================== */
:root:not([data-hucre="renkli"]) table.izgara td.hucre .hucre-secim {
  background: var(--nk, transparent);
  color: #fff;
  box-shadow: none;
  padding-left: 0.6rem;
  text-align: center;
  text-align-last: center;
  font-weight: 600;
}
:root:not([data-hucre="renkli"]) table.izgara td.hucre::before { display: none; }
/* Açık renkli durumlar: koyu yazı (Renkli'deki gibi) */
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-aktarildi .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-sistemde .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-hazir .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-bordro .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-mahsup .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-geldi .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-dizildi .hucre-secim {
  background: var(--nk);
  color: #1d2430;
}
/* Boş hücre: blok yok, yalnız soluk yazı */
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-bos .hucre-secim,
:root:not([data-hucre="renkli"]) table.izgara td.hucre.d-kapali-acik .hucre-secim {
  background: transparent; color: var(--soluk); font-weight: 400;
}
:root:not([data-hucre="renkli"]) table.izgara tbody tr:hover td.hucre .hucre-secim { filter: brightness(0.95); }
:root:not([data-hucre="renkli"]) table.izgara tbody tr:hover td.hucre.d-bos .hucre-secim { filter: none; }

/* Müşavirlik ücreti üst şeritleri (faz38f) — Harun: "Mali müşavirlik
   hizmet bedeli kutusu ve yanındaki düğme saçma sapan büyük". Kutu,
   düğme ve aynı şeritteki Ay / Kesim durumu seçimleri küçüldü; tablo
   olduğu gibi. */
.ucret-serit, .ucret-yazdir { gap: 0.35rem 0.6rem; }
.ucret-serit label, .ucret-yazdir label { font-size: 0.72rem; }
.ucret-serit select, .ucret-yazdir select,
.ucret-yazdir input[type="text"] {
  height: 1.75rem; padding: 0.12rem 0.5rem; font-size: 0.76rem; border-radius: 6px;
}
.ucret-yazdir input[type="text"] { width: 15rem; }
.ucret-yazdir button {
  padding: 0.22rem 0.9rem; font-size: 0.74rem; border-radius: 20px; line-height: 1.35;
}
.ucret-yazdir .soluk.kucuk { font-size: 0.68rem; }

/* Modern: ünvan hücresi durum blokları gibi (faz38f) — BÜTÜN
   sayfalarda (Harun: "bütün sayfalarda ünvanlarda aynı tasarımı
   koruyalım"). Grubu olan satırda grubun renginde, grubu olmayan
   listelerde (Mutabakat, EDM, E-Defter, KDV özeti...) panelin mavisinin
   açık tonunda yuvarlak blok. Hücre kenarlığı zemin renginde: bloklar
   arasında ince boşluk. Hesap adı / karşı taraf gibi veri sütunları
   (KDV ayrıntı, mizan, EDM belge, e-defter ayrıntı) hariç. */
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody .ad-hucre {
  background: color-mix(in srgb, var(--lacivert) 9%, #fff);
  background-clip: padding-box;
  border: 0.18rem solid var(--yuzey);
  border-radius: 9px;
  padding: 0.22rem 0.6rem;
}
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr:is(.g-sirket, .g-sahis1, .g-sahis2, .g-danismanlik, .g-gayrifaal, .g-kapanan) > .ad-hucre {
  background: color-mix(in srgb, var(--isaret, var(--satir)) 55%, #fff);
}
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody .ad-hucre a,
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody .ad-hucre .mut-ad {
  font-weight: 600;
  color: #1d2430;
}
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody .ad-hucre .alt-bilgi {
  color: color-mix(in srgb, #1d2430 60%, transparent);
}
/* Satırın geri kalanı beyaz: renk ünvan bloğunda ve durum bloklarında */
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr:is(.g-sirket, .g-sahis1, .g-sahis2, .g-danismanlik, .g-gayrifaal, .g-kapanan) { background: var(--yuzey); }
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr:hover > .ad-hucre { filter: brightness(0.96); }

/* Müşavirlik ücreti: süzgeç ile yazdırma tek satırda (faz38f) */
.ucret-ust { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 1.2rem; }
.ucret-ust > form { margin: 0; }
.ucret-yazdir input[type="text"] { width: 13.5rem; font-size: 0.68rem; letter-spacing: 0.02em; }
.ucret-yazdir .soluk.kucuk { font-size: 0.64rem; max-width: 22rem; line-height: 1.3; }
/* Uzun açıklama satırı taşırıyordu: düğmenin ipucunda (title) */
.ucret-ust .ucret-yazdir .soluk.kucuk { display: none; }

/* KDV Kontrol — kullanıcı notu (faz38f) */
td.kd-not-hucre { white-space: normal; }
.kd-not { display: block; margin: 0 0 0.15rem; }
.kd-not > summary { list-style: none; cursor: pointer; display: flex; gap: 0.3rem; align-items: baseline; }
.kd-not > summary::-webkit-details-marker { display: none; }
.kd-not-metin {
  color: #1d2430; font-weight: 550; background: #fff7db; border-radius: 4px;
  padding: 0 0.3rem;
}
.kd-not-kalem { color: var(--soluk); font-size: 0.72rem; opacity: 0.55; }
.kd-not > summary:hover .kd-not-kalem { opacity: 1; color: var(--lacivert); }
.kd-not-form { display: flex; gap: 0.3rem; align-items: flex-end; margin: 0.25rem 0 0.2rem; }
.kd-not-form textarea {
  width: 16rem; min-height: 2.2rem; margin: 0; padding: 0.25rem 0.4rem;
  font: inherit; font-size: 0.74rem; border: 1px solid var(--cizgi); border-radius: 6px;
}
.kd-not-form button.kd-not-kaydet {
  width: auto; padding: 0.18rem 0.7rem; font-size: 0.72rem; border-radius: 20px; line-height: 1.35;
}

/* E-Defter → E-Defter Kontrol geçişleri (faz38f): şeritte belirgin
   turuncu düğme; mizanı hazır firmanın adının yanında küçük rozet. */
.durum-serit .ed-kontrol-git {
  margin-left: auto;
  padding: 0.28rem 0.9rem;
  border-radius: 20px;
  background: #e8590c;
  color: #fff;
  font-size: 0.78rem;
  font-weight: 650;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: 0 1px 2px rgb(0 0 0 / 0.15);
}
.durum-serit .ed-kontrol-git:hover { background: #c94a06; color: #fff; }
.ad-hucre a.ed-kontrol-rozet {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0 0.45rem;
  border-radius: 20px;
  background: #e8590c;
  color: #fff !important;
  font-size: 0.62rem;
  font-weight: 650;
  line-height: 1.5;
  text-decoration: none;
  vertical-align: middle;
}
.ad-hucre a.ed-kontrol-rozet:hover { background: #c94a06; }
.ad-hucre a.ed-kontrol-rozet { float: right; margin: 0.08rem 0 0 0.4rem; }

/* Tahakkuk — arızi ödemeleri geçen aydan getir (faz38f) */
.arizi-getir-form { margin: 0.3rem 0 0.4rem; }
.arizi-getir-form button.arizi-getir {
  width: auto; padding: 0.22rem 0.9rem; font-size: 0.74rem; border-radius: 20px;
  line-height: 1.35; background: #e8590c; border-color: #e8590c; color: #fff; font-weight: 600;
}
.arizi-getir-form button.arizi-getir:hover { background: #c94a06; border-color: #c94a06; }

/* KDV Kontrol — satırın tamamı durum renginde (faz38g)
   Harun: "tamam olanların komple satırı yeşil olsun, ayırt etmesi çok
   daha kolay; aynı şekilde faturalarda eşleşenlerde". Modern görünümde
   de (Renkli'deki gibi) satır zemini durum renginde; sol şerit kalıyor.
   Hem mükellef özet listesi hem fatura/defter ayrıntısı. */
:root:not([data-hucre="renkli"]) tr.kd-satir-tamam   > td { background: #d3f0df; }
:root:not([data-hucre="renkli"]) tr.kd-satir-sorunlu > td { background: #fbdcdc; }
:root:not([data-hucre="renkli"]) tr.kd-satir-numara  > td { background: #fdf2c2; }
:root:not([data-hucre="renkli"]) tr.kd-satir-fis     > td { background: #ebebe7; }
:root:not([data-hucre="renkli"]) tr.kd-satir-sahsi   > td { background: #ece4f7; }
:root:not([data-hucre="renkli"]) tr.kd-satir-binek   > td { background: #e2eef0; }
:root:not([data-hucre="renkli"]) tr:is(.kd-satir-tamam, .kd-satir-sorunlu, .kd-satir-numara,
  .kd-satir-fis, .kd-satir-sahsi, .kd-satir-binek):hover > td { filter: brightness(0.97); }
/* Tamam satırında ünvan bloğu da yeşil: satır baştan sona yeşil okunsun */
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr.kd-satir-tamam > .ad-hucre {
  background: #a9e2c2;
}
/* Şirketlerin ünvan bloğu (faz38g): açık sarı soluk kalıyordu, bir ton
   koyulaştı. Grup başlığındaki nokta da aynı tonda. */
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr.g-sirket > .ad-hucre {
  background: #fcef9f;
}
:root:not([data-hucre="renkli"]) tr.grup-basligi.g-sirket .grup-nokta { background: #f5e06a; }
/* Müşavirlik grubu tatlı bir yeşil (faz38g) — eskiden satırda turuncu,
   süzgeç çipinde mor duruyordu; artık her yerde aynı yeşil. Durum
   bloklarındaki Onaylandı (koyu yeşil) ve Kalfa (canlı yeşil) ile
   karışmasın diye açık, nane tonunda. */
.g-danismanlik { --satir: #e8f6ec; --isaret: #86d39c; }
.suzgec-renk.gc-g-danismanlik { --nk: #86d39c; background: #86d39c; }
input[type="checkbox"].grup-kutu.g-danismanlik { --grup-nk: #86d39c; }
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr.g-danismanlik > .ad-hucre {
  background: #c9ecd3;
}

/* KDV Kontrol özet listesi (faz38h): ünvan sütunu kalan bütün yeri
   alıyor; sayı sütunları dar ve eşit, iki KDV tutarı sütunu tutar
   sığacak kadar. Otomatik yerleşim + sabit genişlikli sayı sütunları:
   artan yer genişliği verilmemiş tek sütuna (ünvan) gidiyor. */
body.panel > main.izgara-ekran table.izgara.kdv-ozet { table-layout: auto; width: 100%; }
body.panel > main.izgara-ekran table.izgara.kdv-ozet thead th:nth-child(n+2):nth-child(-n+7) { width: 4.8rem; min-width: 4.8rem; }
body.panel > main.izgara-ekran table.izgara.kdv-ozet thead th:nth-child(8),
body.panel > main.izgara-ekran table.izgara.kdv-ozet thead th:nth-child(9) { width: 8.6rem; min-width: 8.6rem; }
body.panel > main.izgara-ekran table.izgara.kdv-ozet thead th:nth-child(10) { width: 5.6rem; min-width: 5.6rem; }
body.panel > main.izgara-ekran table.izgara.kdv-ozet td.ad-hucre { max-width: none; min-width: 16rem; }
body.panel > main.izgara-ekran table.izgara.kdv-ozet thead th:nth-child(n+2) {
  white-space: normal; line-height: 1.15; font-size: 0.64rem; padding-left: 0.3rem; padding-right: 0.3rem;
}
body.panel > main.izgara-ekran table.izgara.kdv-ozet td.ad-hucre { min-width: 14rem; }
/* Ünvan kalan yeri alsın, sığmayan uzun ad üç noktayla kesilsin
   (genişlik içerikten gelmesin; dar ekranda tablo taşmıyor). */
body.panel > main.izgara-ekran table.izgara.kdv-ozet td.ad-hucre,
body.panel > main.izgara-ekran table.izgara.kdv-ozet th.ad-hucre { width: 100%; max-width: 0; min-width: 10rem; }
body.panel > main.izgara-ekran table.izgara.kdv-ozet td.ad-hucre a,
body.panel > main.izgara-ekran table.izgara.kdv-ozet td.ad-hucre .alt-bilgi {
  display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}


/* =====================================================================
   faz38h — MODERN SOL MENÜ

   Noktaların yerine her modülün kendi simgesi; simge yuvarlak köşeli
   küçük bir karonun içinde. Seçili satırda karo kehribar, satır cam
   dolgulu — soldaki parlayan kulp kalktı, işi karo görüyor. Bölüm
   başlıkları ince, oku sağda. Alttaki üç ayar (görünüm, hücreler,
   satırlar) tek bir kartta, düğmeler bitişik (segment) anahtar.

   Simgeler stil.css'in içinde data: adresiyle (CSP img-src data:
   izin veriyor); ayrı dosya, dış kaynak yok. Maske olduğu için
   rengini zeminden alıyor: üç görünümde de doğru renk.
   ===================================================================== */

.yan-oge.m-beyanname { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h4'/%3E%3C/svg%3E"); }
.yan-oge.m-tahakkuk { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3h12v18l-3-2-3 2-3-2-3 2z'/%3E%3Cpath d='M9 8h6M9 12h6M9 16h3'/%3E%3C/svg%3E"); }
.yan-oge.m-bildirim { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 16v-5a6 6 0 0 1 12 0v5l1.5 2h-15z'/%3E%3Cpath d='M10 21h4'/%3E%3C/svg%3E"); }
.yan-oge.m-odeme { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5.5' width='18' height='13' rx='2'/%3E%3Cpath d='M3 10h18M7 15h3'/%3E%3C/svg%3E"); }
.yan-oge.m-makbuz { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7a2 2 0 0 1 2-2h11v4'/%3E%3Cpath d='M4 7v11a2 2 0 0 0 2 2h14V9H6a2 2 0 0 1-2-2z'/%3E%3Ccircle cx='16' cy='14.5' r='1.2'/%3E%3C/svg%3E"); }
.yan-oge.m-kdv { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18.5 5.5l-13 13'/%3E%3Ccircle cx='7.5' cy='7.5' r='2.5'/%3E%3Ccircle cx='16.5' cy='16.5' r='2.5'/%3E%3C/svg%3E"); }
.yan-oge.m-edefter { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 18.5V5.5A2.5 2.5 0 0 1 6.5 3H20v15H6.5A2.5 2.5 0 0 0 4 20.5 0.5 0.5 0 0 0 6.5 21H20'/%3E%3Cpath d='M9 8h6'/%3E%3C/svg%3E"); }
.yan-oge.m-kalfa { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 6h10M10 12h10M10 18h10'/%3E%3Cpath d='M3.5 6l1.3 1.3L7.5 4.6M3.5 12l1.3 1.3 2.7-2.7M3.5 18l1.3 1.3 2.7-2.7'/%3E%3C/svg%3E"); }
.yan-oge.m-mutabakat { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 4L3 8l4 4'/%3E%3Cpath d='M3 8h14'/%3E%3Cpath d='M17 12l4 4-4 4'/%3E%3Cpath d='M21 16H7'/%3E%3C/svg%3E"); }
.yan-oge.m-kopru { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 18h19'/%3E%3Cpath d='M5 18v-5.5M19 18v-5.5M12 18v-7'/%3E%3Cpath d='M2.5 11c3.5-4.5 15.5-4.5 19 0'/%3E%3C/svg%3E"); }
.yan-oge.m-edmfatura { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v11'/%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3Cpath d='M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2'/%3E%3C/svg%3E"); }
.yan-oge.m-edm { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='15' r='4'/%3E%3Cpath d='M11 12l9-9M17 6l3 3M14 9l2 2'/%3E%3C/svg%3E"); }
.yan-oge.m-ozet { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h16'/%3E%3Cpath d='M7 16v-5M12 16V6M17 16v-8'/%3E%3C/svg%3E"); }
.yan-oge.m-mukellef { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='11' height='18' rx='1.5'/%3E%3Cpath d='M15 9h4a1 1 0 0 1 1 1v11h-5M8 7h3M8 11h3M8 15h3'/%3E%3C/svg%3E"); }
.yan-oge.m-yukumluluk { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3Cpath d='M9 15l2 2 4-4'/%3E%3C/svg%3E"); }
.yan-oge.m-aktarim { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V3'/%3E%3Cpath d='M7 8l5-5 5 5'/%3E%3Cpath d='M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2'/%3E%3C/svg%3E"); }
.yan-oge.m-kullanici { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M3 20c0-3.3 2.7-6 6-6s6 2.7 6 6'/%3E%3Cpath d='M16 4.5a3.5 3.5 0 0 1 0 7M18 14.5c1.8.7 3 2.6 3 5.5'/%3E%3C/svg%3E"); }
.yan-oge.m-eposta { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E"); }

.yan { padding-left: 9px; padding-right: 9px; gap: 0; }

.yan-logo { padding: 16px 8px 12px; margin-bottom: 4px; }
.yan-logo .mark { width: 60px; height: 46px; }

/* --- Bölüm başlıkları --- */
.yan-grup > summary {
  padding: 13px 8px 6px 10px;
  font-size: 9px;
  font-weight: 650;
  letter-spacing: 0.14em;
  border-radius: 7px;
}
.yan-grup > summary .ok {
  order: 3;
  margin-left: auto;
  width: 6px; height: 6px;
  border: 0;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  opacity: .7;
}
.yan-grup[open] > summary .ok { transform: rotate(45deg); }
.yan-grup > summary .toplam { order: 2; }
.yan-grup > summary .toplam ~ .ok { margin-left: 6px; }

/* --- Satırlar --- */
.yan-oge {
  gap: 10px;
  padding: 4px 9px 4px 5px;
  margin: 1px 0;
  border-radius: 10px;
  font-size: 12.5px;
  border: 1px solid transparent;
}

.yan-oge .nk {
  width: 26px; height: 26px;
  border-radius: 8px;
  opacity: 1;
  background: var(--yan-ust);
  display: grid;
  place-items: center;
  transition: background-color .13s ease;
}
.yan-oge .nk::before {
  content: "";
  width: 15px; height: 15px;
  background: currentColor;
  opacity: .9;
  -webkit-mask: var(--ik, none) center / contain no-repeat;
          mask: var(--ik, none) center / contain no-repeat;
}

.yan-oge:hover .nk { background: var(--yan-secili); }

.yan-oge.secili {
  background: var(--yan-secili);
  border-color: var(--yan-kenar);
  box-shadow: inset 0 1px 0 var(--yan-isik), 0 4px 14px rgba(0, 0, 0, .18);
  font-weight: 600;
}
.yan-oge.secili::before { display: none; }
.yan-oge.secili .nk {
  background: linear-gradient(140deg, #f0a35a, var(--kehribar));
  box-shadow: 0 2px 8px rgba(224, 139, 62, .45);
  color: #fff;
}
.yan-oge.secili .nk::before { opacity: 1; }

:root[data-yan="kagit"] .yan-oge.secili { box-shadow: 0 4px 12px rgba(1, 83, 167, .25); }
:root[data-yan="kagit"] .yan-oge:hover:not(.secili) .nk { background: rgba(1, 83, 167, .12); }

/* --- Alttaki ayar kartı ---
   Üç satır (görünüm, hücreler, satırlar) tek kart gibi duruyor:
   ilki üst köşeleri, sonuncusu alt köşeleri yuvarlıyor. */
.yan-gorunum,
.yan-hucre {
  background: var(--yan-ust);
  margin: 0;
  padding: 7px 10px;
  border: 1px solid var(--yan-kenar);
}
.yan-gorunum {
  margin-top: auto;
  border-radius: 12px 12px 0 0;
  border-bottom: 0;
  padding-top: 10px;
}
.yan-hucre { border-top: 0; border-bottom: 0; }
#siklik-secici {
  border-bottom: 1px solid var(--yan-kenar);
  border-radius: 0 0 12px 12px;
  padding-bottom: 10px;
  margin-bottom: 8px;
}
.yan-gorunum span, .yan-hucre > span { font-size: 9px; font-weight: 650; letter-spacing: 0.12em; }

.yan-gorunum button { width: 20px; height: 20px; border-radius: 6px; }

/* Segment anahtar: iki düğme bitişik, ortak bir ray içinde. */
.yan-hucre { gap: 0; }
.yan-hucre button {
  padding: 0.2rem 0.6rem;
  font-size: 10.5px;
  border-radius: 0;
  background: rgba(0, 0, 0, .14);
  border: 1px solid var(--yan-kenar);
}
.yan-hucre > span + button { border-radius: 8px 0 0 8px; border-right: 0; }
.yan-hucre button:last-child { border-radius: 0 8px 8px 0; }
.yan-hucre button[aria-pressed="true"] {
  background: linear-gradient(140deg, #f0a35a, var(--kehribar));
  border-color: transparent;
  color: #fff;
}
:root[data-yan="kagit"] .yan-hucre button { background: rgba(255, 255, 255, .7); }
:root[data-yan="kagit"] .yan-hucre button[aria-pressed="true"] {
  background: linear-gradient(140deg, #f0a35a, var(--kehribar)); color: #fff;
}

/* --- Kullanıcı kutusu --- */
.yan-kim { border-radius: 12px; padding: 8px 9px; }
.yan-kim .av { width: 30px; height: 30px; border-radius: 9px; }
:root[data-yan="kagit"] .yan-oge.secili { color: #fff; }

/* =====================================================================
   faz38h — ÜNVAN BLOĞU DÜĞME GİBİ

   Harun: "üzerine gelince altı çizili şekilde aktif olduğunu belli
   etmeyelim; koyulaşan bir düğme, yazı koyudan açığa dönsün — şirketin
   sarısı çok koyu bir turuncu olup yazı beyaza dönsün gibi". Bütün
   sayfalarda, bağlantısı olan ünvan bloğunda: fare üstüne gelince blok
   grubun koyu tonuna dönüyor, yazı beyaz. Alt çizgi hiçbir görünümde
   yok. Bağlantısız ünvan (KDV ayrıntısındaki karşı taraf gibi) olduğu
   gibi kalıyor. Bloğun boş kısmına tıklamak da bağlantıyı açıyor
   (panel.js, "ünvan bloğu").
   ===================================================================== */
.ad-hucre a:hover, .mut-ad:hover { text-decoration: none; }

tr              { --ad-koyu: #0153a7; }
tr.g-sirket      { --ad-koyu: #c4620e; }
tr.g-sahis1      { --ad-koyu: #2c66a8; }
tr.g-sahis2      { --ad-koyu: #c0393b; }
tr.g-danismanlik { --ad-koyu: #23894c; }
tr.g-gayrifaal   { --ad-koyu: #6f747c; }
tr.g-kapanan     { --ad-koyu: #4b4f56; }
tr.kd-satir-tamam { --ad-koyu: #17793f; }

:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr > .ad-hucre:has(a) {
  cursor: pointer;
  transition: background-color .14s ease, box-shadow .14s ease;
}
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr > .ad-hucre:has(a):hover {
  background: var(--ad-koyu);
  filter: none;
  box-shadow: 0 3px 10px color-mix(in srgb, var(--ad-koyu) 35%, transparent);
}
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr > .ad-hucre:has(a):hover :is(a, .mut-ad, label) {
  color: #fff;
}
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr > .ad-hucre:has(a):hover .alt-bilgi {
  color: rgb(255 255 255 / 0.8);
}
/* Turuncu "kontrol ›" rozeti koyu turuncu zeminde kaybolmasın */
:root:not([data-hucre="renkli"]) tbody tr > .ad-hucre:has(a):hover a.ed-kontrol-rozet {
  background: #fff; color: #c4620e !important;
}
/* Renkli görünüm: blok yok; alt çizgi yerine yazı lacivertleşiyor */
:root[data-hucre="renkli"] .ad-hucre a:hover { color: var(--lacivert); }

@media (prefers-reduced-motion: reduce) {
  :root:not([data-hucre="renkli"]) tbody tr > .ad-hucre:has(a) { transition: none; }
}

/* Ödeme bildirimi — WhatsApp'a resim (faz38h) */
td.gonder-hucre { white-space: nowrap; }
td.gonder-hucre .mesaj-kutu { display: inline-block; margin-left: 0.5rem; vertical-align: middle; }
td.gonder-hucre .mesaj-kutu summary { font-size: 0.72rem; }
td.gonder-hucre .mesaj-kutu[open] { display: block; margin: 0.35rem 0 0; }
button.wa-dug {
  width: auto;
  display: inline-flex; align-items: center; gap: 0.35rem;
  padding: 0.24rem 0.8rem 0.24rem 0.6rem;
  border: 0; border-radius: 20px;
  background: #1fa855; color: #fff;
  font: inherit; font-size: 0.74rem; font-weight: 650; line-height: 1.35;
  cursor: pointer; vertical-align: middle;
  box-shadow: 0 1px 2px rgb(0 0 0 / 0.15);
  transition: background-color .14s ease;
}
button.wa-dug::before {
  content: ""; width: 0.95rem; height: 0.95rem; background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.2l-.3-.2-3 .8.8-2.9-.2-.3A8.2 8.2 0 1 1 12 20.2zm4.5-6.1c-.2-.1-1.5-.7-1.7-.8-.2-.1-.4-.1-.6.1l-.8 1c-.1.2-.3.2-.5.1a6.7 6.7 0 0 1-3.3-2.9c-.2-.4.2-.4.7-1.3.1-.2 0-.3 0-.4l-.8-1.8c-.2-.5-.4-.4-.6-.4h-.5c-.2 0-.4.1-.6.3-.2.2-.8.8-.8 2s.8 2.3.9 2.5c.1.2 1.6 2.5 4 3.5 1.5.6 2.1.7 2.8.6.5-.1 1.5-.6 1.7-1.2.2-.6.2-1.1.2-1.2-.1-.1-.3-.2-.5-.3z'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.2l-.3-.2-3 .8.8-2.9-.2-.3A8.2 8.2 0 1 1 12 20.2zm4.5-6.1c-.2-.1-1.5-.7-1.7-.8-.2-.1-.4-.1-.6.1l-.8 1c-.1.2-.3.2-.5.1a6.7 6.7 0 0 1-3.3-2.9c-.2-.4.2-.4.7-1.3.1-.2 0-.3 0-.4l-.8-1.8c-.2-.5-.4-.4-.6-.4h-.5c-.2 0-.4.1-.6.3-.2.2-.8.8-.8 2s.8 2.3.9 2.5c.1.2 1.6 2.5 4 3.5 1.5.6 2.1.7 2.8.6.5-.1 1.5-.6 1.7-1.2.2-.6.2-1.1.2-1.2-.1-.1-.3-.2-.5-.3z'/%3E%3C/svg%3E") center / contain no-repeat;
}
button.wa-dug:hover { background: #148040; }
/* Telefonu kayıtlı değil: soluk yeşil, yine çalışıyor (kişi seçtiriyor) */
button.wa-dug.telsiz { background: #cfe9d9; color: #23573a; box-shadow: none; }
button.wa-dug.telsiz:hover { background: #a9d9bc; }
button.wa-dug.calisiyor { opacity: 0.6; cursor: progress; }
button.wa-dug.gonderildi::after { content: "✓"; font-weight: 800; }
a.wa-ac { margin-left: 0.4rem; font-size: 0.72rem; font-weight: 650; color: #148040; }
.wa-bilgi {
  position: fixed; left: 50%; bottom: 1.2rem; z-index: 50;
  transform: translate(-50%, 1rem); opacity: 0; pointer-events: none;
  max-width: min(92vw, 34rem);
  padding: 0.6rem 1rem; border-radius: 12px;
  background: #143d27; color: #fff; font-size: 0.82rem; font-weight: 550;
  box-shadow: 0 8px 24px rgb(0 0 0 / 0.25);
  transition: opacity .18s ease, transform .18s ease;
}
.wa-bilgi.acik { opacity: 1; transform: translate(-50%, 0); }
.wa-bilgi.hata { background: #8a1f1f; }

/* Beyanname — Bildirim sütunu da blok (faz38h). Harun: "burası renkliydi,
   düğme mantığını burada da kuralım". Öteki durum hücreleriyle aynı
   geometri ve renk (--nk): Gönderildi koyu yeşil + beyaz, Kısmi turuncu,
   Mahsup lila; boş (—) blok değil, soluk. */
:root:not([data-hucre="renkli"]) table.izgara td.hucre.bildirim-hucre { background: var(--yuzey); }
:root:not([data-hucre="renkli"]) table.izgara td.hucre.bildirim-hucre .bildirim-secim summary {
  display: flex; align-items: center; justify-content: center;
  min-height: 1.6rem;
  margin: 0.2rem 0.25rem;
  padding: 0.18rem 0.5rem;
  border-radius: 6px;
  font-size: 0.74rem;
  font-weight: 600;
  background: var(--nk, transparent);
  color: #fff;
  transition: filter .12s ease;
}
:root:not([data-hucre="renkli"]) table.izgara td.hucre.bildirim-hucre:is(.d-kismi, .d-mahsup) .bildirim-secim summary {
  color: #1d2430;
}
:root:not([data-hucre="renkli"]) table.izgara td.hucre.bildirim-hucre.d-bos .bildirim-secim summary {
  background: transparent; color: var(--soluk); font-weight: 400;
}
:root:not([data-hucre="renkli"]) table.izgara td.hucre.bildirim-hucre .bildirim-secim summary:hover { filter: brightness(0.9); }
:root:not([data-hucre="renkli"]) table.izgara td.hucre.bildirim-hucre.d-bos .bildirim-secim summary:hover {
  filter: none; background: var(--yuzey-2); color: var(--murekkep);
}


/* =====================================================================
   faz39a — MUHTASAR KONTROL
   ===================================================================== */
.m-muhtasar { --ton: #5b3a8a; --gecis: #efe8f7; }
.yan-oge.m-muhtasar { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4.5' width='18' height='15' rx='2'/%3E%3Ccircle cx='9' cy='10.5' r='2.2'/%3E%3Cpath d='M5.6 16.5c.6-1.7 1.9-2.6 3.4-2.6s2.8.9 3.4 2.6M14.5 9.5h4M14.5 13.5h4'/%3E%3C/svg%3E"); }

/* Özet listesi: KDV özetiyle aynı yerleşim — ünvan geniş, sayılar dar */
body.panel > main.izgara-ekran table.izgara.mh-ozet { table-layout: auto; width: 100%; }
body.panel > main.izgara-ekran table.izgara.mh-ozet thead th:nth-child(n+2) {
  white-space: normal; line-height: 1.15; font-size: 0.64rem;
  padding-left: 0.3rem; padding-right: 0.3rem;
}
body.panel > main.izgara-ekran table.izgara.mh-ozet thead th:nth-child(n+2):nth-child(-n+6) { width: 4.2rem; min-width: 4.2rem; }
body.panel > main.izgara-ekran table.izgara.mh-ozet thead th:nth-child(n+7):nth-child(-n+11) { width: 6.6rem; min-width: 6.6rem; }
body.panel > main.izgara-ekran table.izgara.mh-ozet thead th:nth-child(12) { width: 9rem; min-width: 9rem; }
body.panel > main.izgara-ekran table.izgara.mh-ozet thead th:nth-child(13) { width: 7rem; min-width: 7rem; }
body.panel > main.izgara-ekran table.izgara.mh-ozet td.ad-hucre,
body.panel > main.izgara-ekran table.izgara.mh-ozet th.ad-hucre { width: 100%; max-width: 0; min-width: 10rem; }
body.panel > main.izgara-ekran table.izgara.mh-ozet td.ad-hucre a,
body.panel > main.izgara-ekran table.izgara.mh-ozet td.ad-hucre .alt-bilgi {
  display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
table.mh-ozet td { font-size: 0.76rem; }
table.mh-ozet td.mh-kira-hucre { white-space: nowrap; font-size: 0.72rem; }
.mh-kira-uyari { color: #a3420b; font-weight: 650; }
.mh-not { margin: 0.5rem 0.2rem; line-height: 1.45; }

/* Ayrıntı */
.mh-bolum { margin-top: 0.9rem; }
.mh-bolum h2 { font-size: 0.92rem; margin: 0 0 0.5rem; }
table.mh-tablo { width: 100%; border-collapse: collapse; font-size: 0.76rem; }
table.mh-tablo th, table.mh-tablo td { padding: 0.28rem 0.5rem; border-bottom: 1px solid var(--cizgi); text-align: left; }
table.mh-tablo th.sag, table.mh-tablo td.sag { text-align: right; }
table.mh-tablo thead th { font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--soluk); font-weight: 650; }
table.mh-tablo tfoot th { font-weight: 650; background: var(--yuzey-2); }
table.mh-tablo tr.mh-grup th {
  background: color-mix(in srgb, var(--lacivert) 8%, var(--yuzey));
  font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--lacivert);
}
table.mh-tablo tr.mh-grup .adet { margin-left: 0.6rem; text-transform: none; letter-spacing: 0; color: var(--soluk); font-weight: 500; }
table.mh-tablo tr.mh-eksik td:nth-child(5) { color: #a3420b; }
table.mh-tablo tr.mh-dis td, table.mh-tablo tr.mh-dis th { color: var(--soluk); }
.mh-karsilastir {
  display: flex; flex-wrap: wrap; gap: 0.3rem 0.8rem; align-items: baseline;
  margin: 0 0 0.6rem; padding: 0.5rem 0.7rem; border-radius: 10px;
  background: var(--yuzey-2); font-size: 0.78rem;
}
.mh-karsilastir .mh-fark { color: #b3261e; }
.mh-karsilastir .mh-tamam { color: #17693a; }
.mh-seri { white-space: nowrap; }
.mh-ay {
  display: inline-block; min-width: 1.35rem; margin-right: 2px; padding: 0 0.15rem;
  border-radius: 4px; background: var(--yuzey-2); color: var(--soluk);
  font-size: 0.62rem; text-align: center;
}
.mh-ay.degisti { background: #f2ab48; color: #1d2430; font-weight: 700; }
table.mh-tablo tr.mh-kira-geciken > td { background: #fdf2c2; }
.mh-muhsgk { margin: 0.6rem 0 0; padding: 0.45rem 0.7rem; border-radius: 10px; background: var(--yuzey-2); font-size: 0.76rem; line-height: 1.5; }
.mh-muhsgk span { margin-right: 0.5rem; }
.mh-muhsgk.fark { background: #fdf2c2; }
:root .tablo-sar table.mh-tablo tbody tr.mh-kira-geciken > td { background: #fdf2c2; }
:root:not([data-hucre="renkli"]) .tablo-sar table.mh-tablo tbody tr > td:first-child { box-shadow: none; }
/* Muhtasar — şubeler (faz39b) */
.mh-kaynaklar { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0 0 0.6rem; }
.mh-kaynak { padding: 0.25rem 0.7rem; border-radius: 20px; background: color-mix(in srgb, var(--lacivert) 9%, var(--yuzey)); font-size: 0.74rem; }
.mh-kaynak.bos { background: #fbdcdc; color: #8a1f1f; font-weight: 600; }
table.mh-tablo tr.mh-grup .mh-sube { margin-right: 0.5rem; padding: 0.05rem 0.5rem; border-radius: 6px; background: var(--lacivert); color: #fff; letter-spacing: 0.02em; }
.mh-sube-kucuk { display: block; font-size: 0.62rem; color: var(--soluk); }
/* Muhtasar — üç aylık (faz39b) */
.mh-uc { font-weight: 700; color: #5b3a8a; }
table.mh-tablo tr.mh-grup .mh-ay-etiket { margin-right: 0.5rem; padding: 0.05rem 0.5rem; border-radius: 6px; background: #5b3a8a; color: #fff; }
table.mh-tablo tr.mh-kira-bitti > td { color: var(--soluk); }
table.mh-tablo tr.mh-ters > td { background: #fff4e0; } table.mh-tablo tr.mh-ters td.sag { color: #a3420b; }
:root .tablo-sar table.mh-tablo tbody tr.mh-ters > td { background: #fff4e0; }


/* =====================================================================
   faz40a — GEÇİCİ VERGİ
   ===================================================================== */
.m-gecici { --ton: #1f6b4a; --gecis: #e3f2ea; }
.yan-oge.m-gecici { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h16'/%3E%3Cpath d='M6 16l4-5 3 3 5-7'/%3E%3Cpath d='M15 7h3v3'/%3E%3C/svg%3E"); }

.gv-yesil { color: #17693a; }
.gv-kirmizi { color: #b3261e; }

/* Özet: kâr yeşil, zarar kırmızı (satır ve ünvan bloğu) */
:root:not([data-hucre="renkli"]) table.izgara.gv-ozet tbody tr.gv-kar > td { background: #d3f0df; }
:root:not([data-hucre="renkli"]) table.izgara.gv-ozet tbody tr.gv-zarar > td { background: #fbdcdc; }
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr.gv-kar > .ad-hucre { background: #a9e2c2; }
:root:not([data-hucre="renkli"]) :is(table.izgara, .tablo-sar table):not(.kdv-detay, .kdv-mizan, .kdv-oran, .edm-belge, .edk-tablo) tbody tr.gv-zarar > .ad-hucre { background: #f5b9b5; }
tr.gv-kar   { --ad-koyu: #17793f; }
tr.gv-zarar { --ad-koyu: #a32a22; }
table.izgara.gv-ozet tr.gv-kar .gv-kar-hucre { color: #0f5a2e; }
table.izgara.gv-ozet tr.gv-zarar .gv-kar-hucre { color: #8a1f1f; }
body.panel > main.izgara-ekran table.izgara.gv-ozet { table-layout: auto; width: 100%; }
body.panel > main.izgara-ekran table.izgara.gv-ozet td.ad-hucre { width: 100%; max-width: 0; min-width: 12rem; }
body.panel > main.izgara-ekran table.izgara.gv-ozet td.ad-hucre a,
body.panel > main.izgara-ekran table.izgara.gv-ozet td.ad-hucre .alt-bilgi { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.panel > main.izgara-ekran table.izgara.gv-ozet thead th:nth-child(n+2):nth-child(-n+4) { width: 10rem; min-width: 10rem; }
table.izgara.gv-ozet td { font-size: 0.8rem; }

/* Ayrıntı: solda girdiler, sağda rapor önizlemesi */
.gv-duzen { display: grid; grid-template-columns: minmax(17rem, 21rem) minmax(0, 1fr); gap: 1rem; align-items: start; }
@media (max-width: 1000px) { .gv-duzen { grid-template-columns: 1fr; } }
.gv-girdi { position: sticky; top: 0.6rem; display: flex; flex-direction: column; gap: 0.55rem; }
.gv-girdi h2 { margin: 0; font-size: 0.92rem; }
.gv-0stok { display: flex; justify-content: space-between; align-items: baseline; padding: 0.55rem 0.7rem; border-radius: 10px; background: var(--yuzey-2); font-size: 0.78rem; }
.gv-0stok strong { font-size: 1.05rem; }
.gv-mod { border: 0; margin: 0; padding: 0; display: flex; gap: 0.3rem; }
.gv-mod legend { font-size: 0.68rem; color: var(--soluk); margin-bottom: 0.25rem; text-transform: uppercase; letter-spacing: 0.06em; }
.gv-mod label { flex: 1; display: flex; gap: 0.35rem; align-items: center; padding: 0.35rem 0.55rem; border: 1px solid var(--cizgi); border-radius: 8px; font-size: 0.76rem; cursor: pointer; }
.gv-mod label:has(input:checked) { border-color: var(--lacivert); background: color-mix(in srgb, var(--lacivert) 8%, var(--yuzey)); font-weight: 600; }
.gv-alan { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.72rem; color: var(--soluk); }
.gv-alan small { font-size: 0.66rem; }
.gv-alan input { width: 100%; margin: 0; padding: 0.35rem 0.55rem; font: inherit; font-size: 0.86rem; text-align: right; color: var(--murekkep); font-variant-numeric: tabular-nums; border: 1px solid var(--cizgi); border-radius: 8px; }
.gv-alan.hesaplanan input { background: var(--yuzey-2); color: #0f5a2e; font-weight: 700; border-style: dashed; }
.gv-iki { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }
.gv-dugmeler { display: flex; gap: 0.4rem; margin-top: 0.2rem; }
.gv-dugmeler button { width: auto; flex: 1; padding: 0.4rem 0.8rem; font-size: 0.78rem; border-radius: 20px; }
.gv-dugmeler button.gv-yazdir { background: #e8590c; border-color: #e8590c; color: #fff; }

/* --- Rapor kartı (ekran + yazdırma) --- */
.gvr {
  --gvr-mavi: #0e3a6e; --gvr-acik: #eef3fa; --gvr-cizgi: #dfe6ef;
  max-width: 19cm; margin: 0 auto; padding: 1.1cm 1.2cm 0.9cm;
  background: #fff; color: #18222f; border-radius: 14px;
  box-shadow: 0 8px 28px rgb(14 58 110 / 0.10); font-size: 10pt;
}
.gvr-antet { display: flex; align-items: center; gap: 0.8cm; padding-bottom: 0.45cm; border-bottom: 2px solid var(--gvr-mavi); }
.gvr-logo { width: 2.2cm; height: auto; }
.gvr-kurum { display: flex; flex-direction: column; gap: 2px; }
.gvr-kurum strong { font-size: 17pt; letter-spacing: 0.04em; color: var(--gvr-mavi); }
.gvr-kurum span { font-size: 9pt; font-weight: 600; color: var(--gvr-mavi); }
.gvr-kurum small { font-size: 7.5pt; color: #5b6878; }
.gvr-baslik { margin: 0.6cm 0 0.45cm; text-align: center; }
/* faz43v: ortalı başlık — ünvan üstte, dönem lacivert bantta */
.gvr-bant { display: block; margin: 0.18cm auto 0; padding: 0.22cm 0.5cm; border-radius: 8px; background: var(--gvr-mavi); color: #fff;
  font-size: 12.5pt; font-weight: 800; letter-spacing: 0.08em; text-align: center; }
.gvr-etiket { display: inline-block; padding: 2px 10px; border-radius: 20px; background: var(--gvr-mavi); color: #fff; font-size: 7.5pt; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.gvr-baslik h1 { margin: 0; font-size: 15pt; color: #0b1c30; letter-spacing: 0.01em; }
.gvr-baslik p { margin: 0; font-size: 9.5pt; color: #5b6878; }
.gvr-blok { margin-top: 0.35cm; }
.gvr-blok h2 { margin: 0 0 0.12cm; font-size: 8pt; text-transform: uppercase; letter-spacing: 0.1em; color: #7a8796; }
.gvr table { width: 100%; border-collapse: collapse; }
.gvr th, .gvr td { padding: 0.13cm 0.25cm; border-bottom: 1px solid var(--gvr-cizgi); font-weight: 400; text-align: left; }
.gvr td { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.gvr tr.ara th, .gvr tr.ara td { font-weight: 700; background: var(--gvr-acik); }
.gvr tr.sonuc th, .gvr tr.sonuc td { font-weight: 800; font-size: 11pt; border-bottom: 0; }
.gvr tr.sonuc.kar th, .gvr tr.sonuc.kar td { background: #e3f5ea; color: #0f5a2e; }
.gvr tr.sonuc.zarar th, .gvr tr.sonuc.zarar td { background: #fde7e5; color: #8a1f1f; }
.gvr-oran { display: inline-block; margin-left: 0.15cm; padding: 0 6px; border-radius: 10px; background: var(--gvr-acik); color: var(--gvr-mavi); font-size: 8pt; font-weight: 700; }
.gvr-oran:empty { display: none; }
.gvr-odenecek { display: flex; justify-content: space-between; align-items: center; margin: 0.3cm 0 0.15cm; padding: 0.3cm 0.4cm; border-radius: 10px; background: #fff4cf; border: 1px solid #f2d36b; }
.gvr-odenecek span { font-weight: 700; color: #6b4a00; }
.gvr-odenecek strong { font-size: 15pt; color: #3d2b00; font-variant-numeric: tabular-nums; }
.gvr table.gvr-alt tr.toplam th, .gvr table.gvr-alt tr.toplam td { background: var(--gvr-mavi); color: #fff; font-weight: 800; border-bottom: 0; }
.gvr-ayak { display: flex; justify-content: space-between; margin-top: 0.45cm; padding-top: 0.25cm; border-top: 1px solid var(--gvr-cizgi); font-size: 9pt; color: #5b6878; }
.gvr-ayak strong { color: #0b1c30; }
.gvr-not { margin: 0.25cm 0 0; font-size: 7.5pt; color: #8a95a3; }
.gvr [hidden] { display: none; }

body.gv-yazdir-sayfa { background: #eef2f7; }
body.gv-yazdir-sayfa .gvr { margin: 1rem auto; }
@media print {
  body.gv-yazdir-sayfa { background: #fff; }
  body.gv-yazdir-sayfa .gvr { margin: 0 auto; box-shadow: none; border-radius: 0; padding: 0.4cm 0.6cm; }
  .gvr tr.ara th, .gvr tr.ara td, .gvr tr.sonuc th, .gvr tr.sonuc td, .gvr-odenecek, .gvr-etiket, .gvr-bant,
  .gvr table.gvr-alt tr.toplam th, .gvr table.gvr-alt tr.toplam td, .gvr-oran {
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
}

/* ==========================================================
   faz40b — İŞLETME DEFTERİ (muhtasar + geçici vergi)
   ========================================================== */
.mh-isl {
  display: inline-block; margin-right: 4px; padding: 0 6px; border-radius: 999px;
  font-size: 10.5px; font-weight: 600; line-height: 16px; vertical-align: 1px;
  background: #ece6f5; color: #5b3a8a;
}
td:has(> .mh-isl) { white-space: nowrap; }
.mh-bordro-kayit { margin: 8px 0 12px; padding: 10px 12px; border-radius: 10px; font-size: 13px; line-height: 1.7; }
.mh-bordro-kayit.var { background: #e3f4ea; color: #1d5b38; }
.mh-bordro-kayit.yok { background: #fbe3e3; color: #8a1f1f; }
.mh-bordro-kayit .mh-kaynak { margin-left: 6px; }
/* İşletme hesap özeti: SMM'nin alt kalemleri girintili, soluk */
.gvr tr.alt th { padding-left: 22px; font-weight: 400; color: #5a6478; }
.gvr tr.alt td { color: #5a6478; }

/* ==========================================================
   faz41a — BANKA KONTROLÜ
   ========================================================== */
.m-banka { --ton: #1d4f8a; --gecis: #e4edf8; }
.yan-oge.m-banka { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9.5 12 4l9 5.5'/%3E%3Cpath d='M4.5 10v8M9.5 10v8M14.5 10v8M19.5 10v8'/%3E%3Cpath d='M3 20h18'/%3E%3C/svg%3E"); }
.bk-yesil { color: #0f6b3a; }
.bk-kirmizi { color: #a3241a; font-weight: 700; }
.bk-tablo td { vertical-align: top; }
.bk-satir > td { border-bottom: 0; }
.bk-islem > td { padding-top: 0 !important; padding-bottom: 8px !important; font-size: 12px; }
.bk-islem > td > * { display: inline-block; vertical-align: top; margin-right: 14px; }
.bk-gri > td { color: var(--ikincil); }
.bk-gri .rozet { opacity: .8; }
.bk-dvz { display: inline-block; padding: 0 6px; border-radius: 999px; font-size: 10.5px; font-weight: 700; line-height: 16px;
          background: #e7eef9; color: #1d4f8a; vertical-align: 1px; }
.bk-ekstre { white-space: nowrap; font-size: 12px; }
.bk-eksik { font-size: 11.5px; color: #8a4d0d; font-weight: 600; }
.bk-ac > summary { cursor: pointer; color: #1d4f8a; font-weight: 600; list-style: none; padding: 2px 10px; border-radius: 999px;
                   background: color-mix(in srgb, #1d4f8a 9%, var(--yuzey)); display: inline-block; }
.bk-ac > summary::-webkit-details-marker { display: none; }
.bk-ac[open] { display: block !important; margin: 6px 0 4px; padding: 10px 12px; border-radius: 10px;
               background: color-mix(in srgb, #1d4f8a 5%, var(--yuzey)); }
.bk-form { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-end; margin: 8px 0 4px; }
.bk-form label { display: flex; flex-direction: column; gap: 2px; font-size: 11.5px; color: var(--ikincil); }
.bk-form input[type=text], .bk-form input[type=date] { min-width: 140px; }
.bk-form button { border-radius: 999px; }
.bk-form .bk-sil { background: #fdeceb; color: #8e1d13; border-color: #f6ccc8; }
.bk-ekstre-duzen + .bk-ekstre-duzen { border-top: 1px dashed var(--cizgi); margin-top: 6px; }
.bk-takip { margin: 0; }
.bk-baglanti { background: var(--yuzey-2); border: 1px solid var(--cizgi); border-radius: 999px; padding: 1px 10px; color: var(--ikincil); font-size: 11.5px; cursor: pointer; }
.bk-baglanti:hover { background: #5a6478; border-color: #5a6478; color: #fff; }
.bk-talep-serit { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin: 0 0 14px; }
.bk-talep-serit form { margin: 0; }
.bk-wa-dugme { border-radius: 999px; background: #1f8a4c; border-color: #1f8a4c; color: #fff; font-weight: 600; }
.bk-wa-dugme:hover { background: #146b39; border-color: #146b39; }
.bk-talep-bilgi { font-size: 12.5px; color: var(--ikincil); }
.bk-firma { display: inline-block; padding: 0 6px; border-radius: 999px; font-size: 10.5px; font-weight: 700; line-height: 16px;
            background: #e4f2ea; color: #0f5c36; vertical-align: 1px; }

/* faz41b: banka işlemleri satırın sonunda; form alttaki satırda açılır */
.bk-satir > td { border-bottom: 1px solid var(--cizgi); vertical-align: middle; }
.bk-islem-hucre { white-space: nowrap; text-align: right; }
.bk-islem-hucre > * { display: inline-block; vertical-align: middle; margin-left: 6px; }
.bk-islem-hucre .bk-takip { margin: 0 0 0 6px; }
.bk-ac[open] > summary { background: #1d4f8a; color: #fff; }
.bk-form-satir, .bk-panel { display: none; }
.bk-satir:has(.bk-ac[open]) + .bk-form-satir { display: table-row; }
.bk-satir:has(.bk-ac-yukle[open]) + .bk-form-satir .bk-panel-yukle,
.bk-satir:has(.bk-ac-ekstre[open]) + .bk-form-satir .bk-panel-ekstre { display: block; }
.bk-form-satir > td { padding: 4px 12px 12px !important; background: color-mix(in srgb, #1d4f8a 5%, var(--yuzey)); }
.bk-panel + .bk-panel { border-top: 1px dashed var(--cizgi); margin-top: 8px; padding-top: 4px; }
.bk-islem-hucre .bk-ac[open] { display: inline-block !important; margin: 0 0 0 6px; padding: 0; background: none; }
.bk-tablo td.sayi, .bk-tablo td.sag { white-space: nowrap; }
.bk-tablo td:nth-child(2) { min-width: 140px; }
.bk-islem-hucre { padding-left: 4px !important; }
.bk-islem-hucre .bk-ac > summary, .bk-islem-hucre .bk-baglanti { font-size: 11.5px; padding: 1px 9px; }
.bk-islem-hucre > * { margin-left: 4px; }
.bk-form > button { width: auto !important; flex: 0 0 auto; padding: 6px 18px; }
.bk-form label { flex: 0 1 auto; }
.bk-tablo th, .bk-tablo td { padding-left: 6px !important; padding-right: 6px !important; }

/* faz42a: Zirve'ye fatura aktarımı */
.m-faturaaktar { --ton: #6b3f8f; --gecis: #f1eaf7; }
.yan-oge.m-faturaaktar { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3h9l4 4v14H6z'/%3E%3Cpath d='M14 3v5h5'/%3E%3Cpath d='M9 14h7'/%3E%3Cpath d='M13 11l3 3-3 3'/%3E%3C/svg%3E"); }
.fa-serit { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 0 0 14px; }
.fa-serit form { margin: 0; }
.fa-dugme { width: auto !important; border-radius: 999px; padding: 6px 18px; font-weight: 600; }
.fa-dugme.fa-aktar { background: #1f8a4c; border-color: #1f8a4c; color: #fff; }
.fa-dugme.fa-aktar:hover { background: #146b39; border-color: #146b39; }
.fa-dugme[disabled] { opacity: .5; cursor: default; }
.fa-tablo td { vertical-align: top; }
.fa-tablo td.sayi, .fa-tablo td.sag { white-space: nowrap; }
.fa-tablo th, .fa-tablo td { padding-left: 6px !important; padding-right: 6px !important; }
.fa-unvan { min-width: 180px; max-width: 280px; }
.fa-fis { min-width: 190px; }
.fa-fis-satir { display: flex; justify-content: space-between; gap: 10px; font-size: 11.5px; line-height: 17px; white-space: nowrap; }
.fa-fis-satir .fa-kod { font-variant-numeric: tabular-nums; }
.fa-fis-satir.fa-a .fa-kod { padding-left: 14px; }
.fa-fis-satir .fa-tutar { color: var(--ikincil); font-variant-numeric: tabular-nums; }
.fa-neden { display: block; font-size: 11px; color: #8a4d0d; max-width: 220px; line-height: 1.3; margin-top: 2px; }
.fa-atla > td, .fa-zirvede > td, .fa-kilitli > td, .fa-kapsam > td { color: var(--ikincil); }
.fa-aktarildi .fa-fis-satir .fa-kod { color: #0f6b3a; }
.fa-ogren span { display: flex; align-items: center; gap: 6px; flex-direction: row; color: var(--metin, inherit); }
.fa-ogren input { width: auto; margin: 0; }
.fa-sonuc { max-width: 380px; }
.fa-pilot { margin-top: 18px; }
.fa-pilot .bk-form select { min-width: 220px; }
.mh-tablo .bk-takip .bk-baglanti, .fa-tablo .bk-baglanti { width: auto !important; }
table.izgara.fa-ozet .rozet { font-size: 0.68rem; }
.izgara-sar.fa-ozet-sar { min-height: 0; height: auto; flex: 0 0 auto; }
/* faz42b: XML yükleme, yapay zekâ önerisi */
.fa-dugme.fa-yz { background: #6b3f8f; border-color: #6b3f8f; color: #fff; }
.fa-dugme.fa-yz:hover { background: #4f2c6b; border-color: #4f2c6b; }
.fa-xml-ac > summary { padding: 6px 16px; }
.fa-xml { display: inline-block; margin-left: 4px; padding: 0 6px; border-radius: 999px; font-size: 10px; font-weight: 700;
          line-height: 15px; background: #f1eaf7; color: #6b3f8f; vertical-align: 1px; }
.fa-yz-gerekce { display: block; font-size: 11px; color: #4f2c6b; max-width: 240px; line-height: 1.3; margin-top: 2px; font-style: italic; }
.fa-onayla { background: #e4f2ea !important; color: #0f5c36 !important; border-color: #bfe0cd !important; font-weight: 600; }
.fa-onayla:hover { background: #0f6b3a !important; color: #fff !important; border-color: #0f6b3a !important; }
/* faz42c: fotoğraftan belge */
.fa-xml.fa-foto { background: #fff3e0; color: #8a4d0d; }
.fa-foto-bag { font-size: 11px; color: #1d4f8a; }
.fa-foto-bekleyen { margin-bottom: 14px; }
.fa-foto-bekleyen h2 { margin-bottom: 6px; }
.fa-foto-liste { list-style: none; margin: 8px 0 0; padding: 0; }
.fa-foto-liste li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 12.5px; padding: 3px 0; border-bottom: 1px dashed var(--cizgi); }
.fa-foto-liste li .fa-neden { display: inline; max-width: none; }
.fa-duzelt label { min-width: 0; }
.fa-duzelt input[type=text] { min-width: 90px; width: 110px; }
.fa-duzelt input.fa-kisa { width: 56px; min-width: 56px; }
.fa-duzelt input[name=unvan] { width: 220px; }

/* =====================================================================
   faz42d — Tam ekran + Zirve Aktarım tek fatura ekranı
   ===================================================================== */

/* Tam ekran düğmesi: araç çubuğunun sağ ucunda, küçük. */
.tam-dug {
  margin-left: auto; width: 30px; height: 30px; padding: 0;
  display: inline-grid; place-items: center;
  background: var(--yuzey-2); border: 1px solid var(--cizgi); border-radius: 999px;
  color: var(--ikincil); cursor: pointer;
}
.tam-dug svg { width: 14px; height: 14px; }
.tam-dug:hover, .tam-dug[aria-pressed="true"] { background: #5a6478; border-color: #5a6478; color: #fff; }
.arac .musavir-menu ~ .tam-dug, .arac .ust-araclar ~ .tam-dug { margin-left: 0; }

/* Tam ekran: kenar menü, perde, hamburger ve başlık gizli; sayfa tek sütun. */
:root[data-tam="1"] body.panel { grid-template-columns: minmax(0, 1fr) !important; }
:root[data-tam="1"] body.panel > .yan,
:root[data-tam="1"] body.panel > .perde,
:root[data-tam="1"] .menu-dug,
:root[data-tam="1"] .arac h1 { display: none !important; }
:root[data-tam="1"] body.panel > .arac,
:root[data-tam="1"] body.panel > main { grid-column: 1 / -1 !important; }
:root[data-tam="1"] .arac { padding: 0.3rem 0.8rem; }
:root[data-tam="1"] main.tam { padding: 0.6rem 0.8rem 1.5rem; }

/* Listede faturayı açan bağlantı ve düğme */
.fa-ac { color: inherit; text-decoration: none; font-weight: 600; }
.fa-ac:hover { color: var(--lacivert); text-decoration: underline; }
.fa-ac-dug { text-decoration: none; background: var(--mavi-a) !important; color: var(--lacivert) !important; border-color: #c9dcf2 !important; font-weight: 600; }
.fa-ac-dug:hover { background: var(--lacivert) !important; color: #fff !important; border-color: var(--lacivert) !important; }

/* ---------- Tek fatura ekranı ---------- */
.fd {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 430px;
  gap: 14px;
  align-items: start;
  font-size: 13px;
}
.fd [hidden] { display: none !important; }
.fd kbd {
  font: inherit; font-size: 10px; padding: 0 4px; margin-left: 4px;
  border: 1px solid currentColor; border-radius: 4px; opacity: .65;
}

/* Sol: fatura kâğıdı */
.fd-belge { min-width: 0; display: grid; gap: 12px; }
.fd-foto {
  background: var(--yuzey); border: 1px solid var(--cizgi); border-radius: var(--kose);
  padding: 8px; text-align: center;
}
.fd-foto img { max-width: 100%; max-height: 78vh; object-fit: contain; display: block; margin: 0 auto; }
.fd-foto iframe { width: 100%; height: 78vh; border: 0; display: block; }
.fd-kagit {
  background: var(--yuzey); border: 1px solid var(--cizgi); border-radius: var(--kose);
  box-shadow: var(--g1); padding: 16px 18px;
}
.fd-ust {
  display: grid; grid-template-columns: 1fr auto 1fr; gap: 14px;
  padding-bottom: 12px; border-bottom: 1px solid var(--cizgi); margin-bottom: 10px;
}
.fd-taraf { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.fd-taraf:last-child { text-align: right; }
.fd-taraf strong { font-size: 13.5px; line-height: 1.3; }
.fd-etiket { font-size: 10.5px; text-transform: uppercase; letter-spacing: .06em; color: var(--soluk); font-weight: 600; }
.fd-vkn { font-size: 12px; color: var(--ikincil); font-variant-numeric: tabular-nums; }
.fd-kunye { text-align: center; }
.fd-tur { display: inline-block; font-weight: 700; color: var(--lacivert); margin-bottom: 4px; }
.fd-kunye table { border-collapse: collapse; font-size: 12px; margin: 0 auto; }
.fd-kunye th { text-align: left; color: var(--soluk); font-weight: 500; padding: 1px 10px 1px 0; }
.fd-kunye td { text-align: left; padding: 1px 0; }

.fd-kalem { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.fd-kalem th {
  text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .05em;
  color: var(--soluk); font-weight: 600; padding: 5px 6px; border-bottom: 1px solid var(--cizgi);
  background: var(--yuzey-2);
}
.fd-kalem td { padding: 5px 6px; border-bottom: 1px solid var(--cizgi-2); vertical-align: top; }
.fd-kalem .sag, .fd-kalem th.sag { text-align: right; white-space: nowrap; }
.fd-kalem-acik { display: block; font-size: 11.5px; color: var(--soluk); }
.fd-bos { margin: 6px 0; }

.fd-alt { display: grid; grid-template-columns: 1fr auto; gap: 18px; margin-top: 12px; }
.fd-not p { margin: 2px 0 0; font-size: 12px; color: var(--ikincil); white-space: pre-line; }
.fd-toplam { border-collapse: collapse; font-size: 12.5px; min-width: 230px; }
.fd-toplam th { text-align: left; font-weight: 500; color: var(--ikincil); padding: 2px 14px 2px 0; }
.fd-toplam td { text-align: right; padding: 2px 0; }
.fd-toplam .fd-odenecek th, .fd-toplam .fd-odenecek td {
  font-weight: 700; color: var(--murekkep); border-top: 1px solid var(--cizgi); padding-top: 5px;
}
.fd-orjinal { margin: 12px 0 0; font-size: 12px; }
.fd-orjinal a { color: var(--lacivert); }

/* Sağ: fiş */
.fd-fis {
  position: sticky; top: 56px;
  max-height: calc(100vh - 70px); overflow: auto;
  background: var(--yuzey); border: 1px solid var(--cizgi); border-radius: var(--kose);
  box-shadow: var(--g1); padding: 12px 14px;
  display: grid; gap: 10px;
}
:root[data-tam="1"] .fd-fis { top: 46px; max-height: calc(100vh - 56px); }
.fd-durum { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.fd-kaynak { font-size: 11.5px; color: var(--soluk); }
.fd-sira { margin-left: auto; font-size: 11.5px; color: var(--soluk); font-variant-numeric: tabular-nums; }
.fd-neden {
  margin: 0; padding: 6px 9px; border-radius: var(--kose-s);
  background: var(--kehribar-a); color: #8a4d0d; font-size: 12px; line-height: 1.35;
}
.fd-form { display: grid; gap: 10px; margin: 0; }
.fd-grup { border: 1px solid var(--cizgi); border-radius: var(--kose-s); padding: 6px 9px 8px; margin: 0; min-width: 0; }
.fd-grup legend { font-size: 11.5px; font-weight: 650; color: var(--ikincil); padding: 0 4px; }
.fd-ba {
  display: inline-block; font-size: 10px; font-weight: 700; color: var(--lacivert);
  border: 1px solid #c9dcf2; border-radius: 999px; padding: 0 5px; margin-left: 2px;
}
.fd-satir { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px; align-items: start; padding: 3px 0; }
.fd-hesap { display: flex; flex-direction: column; min-width: 0; }
.fd .fd-hesap input { width: 100% !important; font-size: 12.5px; padding: 4px 7px; font-variant-numeric: tabular-nums; }
.fd-ad { font-size: 11px; color: var(--soluk); line-height: 1.25; margin-top: 1px; min-height: 1em;
         overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fd-ad.fd-yok { color: var(--uyari); }
.fd-msat { grid-template-columns: minmax(0, 1fr) 112px 24px; }
.fd .fd-tutar { width: 112px !important; min-width: 0; text-align: right; font-size: 12.5px; padding: 4px 7px; font-variant-numeric: tabular-nums; }
.fd-sil {
  width: 24px; height: 26px; padding: 0; border-radius: 999px; line-height: 1;
  background: transparent; border: 1px solid var(--cizgi); color: var(--soluk); cursor: pointer;
}
.fd-sil:hover { background: var(--uyari); border-color: var(--uyari); color: #fff; }
.fd-oran { font-size: 11.5px; color: var(--ikincil); padding-top: 5px; }
.fd-sabit { padding-top: 5px; text-align: right; min-width: 90px; font-variant-numeric: tabular-nums; }
.fd-matrah-alt { display: flex; align-items: center; gap: 8px; margin-top: 4px; font-size: 12px; }
.fd-ekle[disabled] { opacity: .4; cursor: default; }
.fd-top { margin-left: auto; color: var(--ikincil); }
.fd-kalan { font-size: 11.5px; }
.fd-kalan.fd-eksik { color: var(--uyari); font-weight: 600; }
.fd-kalan.fd-tamam { color: var(--onay); }
.fd-titre { animation: fd-titre .5s; }
@keyframes fd-titre { 25% { transform: translateX(-3px); } 75% { transform: translateX(3px); } }
.fd-ipucu { margin: 3px 0 0; font-size: 11px; color: var(--soluk); }
.fd-kutu { display: flex; gap: 7px; align-items: center; font-size: 12px; color: var(--ikincil); }
.fd-kutu input { width: auto; margin: 0; }
.fd-kaydet {
  width: 100%; border-radius: 999px; padding: 8px 16px; font-weight: 650;
  background: #1f8a4c; border: 1px solid #1f8a4c; color: #fff; cursor: pointer;
}
.fd-kaydet:hover { background: #146b39; border-color: #146b39; }
.fd-dugmeler { display: flex; flex-wrap: wrap; gap: 6px; align-items: flex-start; }
.fd-dugmeler form { margin: 0; }
.fd-duzelt { flex-basis: 100%; }
.fd-duzelt > summary { display: inline-block; list-style: none; }
.fd-duzelt > summary::-webkit-details-marker { display: none; }
.fd-duzelt[open] > form { margin-top: 8px; }
.fd-gezin {
  display: flex; justify-content: space-between; gap: 6px;
  padding-top: 8px; border-top: 1px solid var(--cizgi);
}
.fd-gezin a { text-decoration: none; }

@media (max-width: 1100px) {
  .fd { grid-template-columns: minmax(0, 1fr); }
  .fd-fis { position: static; max-height: none; }
  .fd-ust { grid-template-columns: 1fr; }
  .fd-taraf:last-child { text-align: left; }
  .fd-kunye { text-align: left; }
  .fd-kunye table { margin: 0; }
}

/* =====================================================================
   faz42e — E-defter kontrol: yapay zekâ incelemesi
   ===================================================================== */
.edk-yz-form { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 6px 0 10px; }
.edk-yz-ozet {
  margin: 6px 0 10px; padding: 8px 10px; font-size: 13px; line-height: 1.45;
  background: var(--yuzey-2); border-left: 3px solid #7b6bb7; border-radius: 6px;
}
.edk-yz-gerekce { display: block; margin-top: 2px; }
.edk-yz .edk-tablo td { vertical-align: top; }

/* =====================================================================
   faz42f — Zirve Aktarım süzgeç kutucukları
   ===================================================================== */
a.kutucuk.fa-suz { text-decoration: none; color: inherit; cursor: pointer; transition: border-color .12s, box-shadow .12s; }
a.kutucuk.fa-suz:hover { border-color: #9fb6d6; box-shadow: var(--g1); }
a.kutucuk.fa-suz.secili { border-color: var(--lacivert); box-shadow: inset 0 0 0 1px var(--lacivert); background: var(--mavi-a); }
.fa-suz-not { margin: -4px 0 8px; }

/* faz42f — tek fatura ekranı: gerçek görüntü / kalemler sekmesi */
.fd-belge > .fd-sek { position: absolute; opacity: 0; pointer-events: none; }
.fd-sekme-bar { display: flex; align-items: center; gap: 6px; margin-bottom: -4px; }
.fd-sekme-bar label {
  cursor: pointer; padding: 5px 14px; border-radius: 999px; font-size: 12.5px; font-weight: 600;
  background: var(--yuzey-2); border: 1px solid var(--cizgi); color: var(--ikincil);
}
.fd-sekme-bar label:hover { background: #5a6478; border-color: #5a6478; color: #fff; }
#fd-s1:checked ~ .fd-sekme-bar label[for="fd-s1"],
#fd-s2:checked ~ .fd-sekme-bar label[for="fd-s2"] { background: var(--lacivert); border-color: var(--lacivert); color: #fff; }
#fd-s1:focus-visible ~ .fd-sekme-bar label[for="fd-s1"],
#fd-s2:focus-visible ~ .fd-sekme-bar label[for="fd-s2"] { outline: 2px solid var(--lacivert); outline-offset: 2px; }
.fd-yeni-sekme { margin-left: auto; font-size: 12px; color: var(--soluk); text-decoration: none; }
.fd-yeni-sekme:hover { color: var(--lacivert); text-decoration: underline; }
#fd-s1:checked ~ .fd-kagit { display: none; }
#fd-s2:checked ~ .fd-gercek { display: none; }
.fd-gercek {
  background: #fff; border: 1px solid var(--cizgi); border-radius: var(--kose); overflow: hidden;
  box-shadow: var(--g1);
}
.fd-gercek iframe { display: block; width: 100%; height: calc(100vh - 150px); min-height: 520px; border: 0; background: #fff; }
:root[data-tam="1"] .fd-gercek iframe { height: calc(100vh - 110px); }
.tam-ipucu {
  position: fixed; top: 14px; left: 50%; transform: translateX(-50%); z-index: 9999;
  max-width: 560px; padding: 10px 16px; border-radius: 999px; cursor: pointer;
  background: #1f2a44; color: #fff; font-size: 13px; box-shadow: 0 6px 24px rgba(0,0,0,.25);
}

/* faz42f — aktarılan faturada Zirve'ye yazılan fiş */
.fd-yazilan { border-top: 1px solid var(--cizgi); margin-top: 10px; padding-top: 10px; }
.fd-yazilan h3 { font-size: 13px; margin: 0 0 6px; }
.fd-kunye2 { display: grid; gap: 2px; margin: 0 0 8px; font-size: 12px; }
.fd-kunye2 div { display: flex; gap: 8px; }
.fd-kunye2 dt { color: var(--soluk); min-width: 82px; }
.fd-kunye2 dd { margin: 0; }
.fd-yaz-tablo { width: 100%; border-collapse: collapse; font-size: 12px; margin-bottom: 8px; }
.fd-yaz-tablo th { text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--soluk); font-weight: 600; padding: 4px 6px; border-bottom: 1px solid var(--cizgi); }
.fd-yaz-tablo td { padding: 4px 6px; border-bottom: 1px solid var(--cizgi-2); vertical-align: top; }
.fd-yaz-tablo tfoot th, .fd-yaz-tablo tfoot td { border-bottom: 0; font-weight: 700; color: inherit; }
.fd-yaz-tablo .sag { text-align: right; white-space: nowrap; }
.fd-zirve { font-size: 12px; margin: 4px 0 0; padding: 6px 8px; border-radius: 6px; }
.fd-zirve-iyi { background: #e6f4ec; color: #146b39; }
.fd-zirve-kotu { background: #fbe9e7; color: #9b2c1f; font-weight: 600; }
.fa-zirve-iyi { color: #146b39 !important; }
.fd-kod { font-weight: 600; font-variant-numeric: tabular-nums; }

/* faz42h — fatura görüntüsü: yakınlaştırma / Sığdır */
.fd-olcek { display: inline-flex; align-items: center; gap: 4px; margin-left: 8px; }
.fd-olcek button {
  min-width: 28px; height: 26px; padding: 0 9px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--cizgi); background: var(--yuzey-2); color: var(--ikincil); font: inherit; font-size: 12.5px; font-weight: 600;
}
.fd-olcek button:hover { background: #5a6478; border-color: #5a6478; color: #fff; }
.fd-olcek button.secili { background: var(--lacivert); border-color: var(--lacivert); color: #fff; }
.fd-olcek-deger { min-width: 44px; text-align: center; font-size: 12px; color: var(--soluk); font-variant-numeric: tabular-nums; }
#fd-s2:checked ~ .fd-sekme-bar .fd-olcek { display: none; }
.fd-olcek button { flex: none; width: auto !important; white-space: nowrap; }
.fd-sekme-bar { flex-wrap: wrap; row-gap: 6px; }
.fd-ham pre { max-height: 260px; overflow: auto; font-size: 11px; line-height: 1.4; background: var(--yuzey-2); border: 1px solid var(--cizgi); border-radius: 6px; padding: 8px; white-space: pre-wrap; word-break: break-word; }

/* faz42l: uzun işlemde bekleme göstergesi (fatura.js, form[data-bekle]) */
.fa-bekle { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center;
  background: rgba(21, 32, 44, .38); backdrop-filter: blur(1.5px); padding: 16px; }
.fa-bekle-kutu { width: min(460px, 100%); background: var(--yuzey); color: var(--murekkep); border-radius: 14px;
  padding: 22px 24px 18px; box-shadow: 0 18px 50px rgba(0, 0, 0, .25); }
.fa-bekle-baslik { font-weight: 700; font-size: 15px; }
.fa-bekle-asama { color: var(--soluk); font-size: 13px; margin: 4px 0 14px; min-height: 1.3em; }
.fa-bekle-cubuk { height: 10px; border-radius: 99px; background: var(--cizgi); overflow: hidden; position: relative; }
.fa-bekle-cubuk span { display: block; height: 100%; width: 0; border-radius: inherit; transition: width .25s linear;
  background: repeating-linear-gradient(45deg, var(--lacivert) 0 10px, #2f78c4 10px 20px); background-size: 28px 28px;
  animation: fa-bekle-akis 0.9s linear infinite; }
@keyframes fa-bekle-akis { from { background-position: 0 0; } to { background-position: 28px 0; } }
.fa-bekle-alt { display: flex; justify-content: space-between; gap: 12px; margin-top: 10px; font-size: 12px; color: var(--soluk); }
.fa-bekle-sure { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--ikincil); }
@media (prefers-reduced-motion: reduce) { .fa-bekle-cubuk span { animation: none; } }
.bk-baglanti.fa-iptal { color: var(--uyari); }

/* faz42m: Zirve Aktarım listesinde fiş satırları ⋯ ile satırın altında */
table.fa-tablo th.fa-ayrinti-dug, table.fa-tablo td.fa-ayrinti-dug { width: 2rem; text-align: center; padding-left: .2rem; padding-right: .2rem; }
table.fa-tablo tr.fa-ayrinti-satir { display: none; }
table.fa-tablo tr.fa-ayrinti-satir:target, table.fa-tablo tr.fa-ayrinti-satir.acik { display: table-row; }
table.fa-tablo tr.fa-ayrinti-satir > td { background: var(--yuzey-2); padding: 6px 14px 10px; }
table.fa-fis-tablo { border-collapse: collapse; font-size: 12.5px; min-width: 420px; }
table.fa-fis-tablo th { text-align: left; font-weight: 600; color: var(--soluk); padding: 2px 10px 2px 0; border-bottom: 1px solid var(--cizgi); }
table.fa-fis-tablo td { padding: 2px 10px 2px 0; }
details.fa-kural-ac > summary { cursor: pointer; list-style: none; }
details.fa-kural-ac > summary::-webkit-details-marker { display: none; }
details.fa-kural-ac > summary h2 { display: inline; margin: 0; }
details.fa-kural-ac[open] > summary { margin-bottom: 10px; }
table.fa-tablo table.fa-fis-tablo { width: auto; } table.fa-fis-tablo td.sag, table.fa-fis-tablo th.sag { padding-left: 24px; }
.m-yz { --ton: #6b3f8f; --gecis: #f1e9f7; }
.yan-oge.m-yz { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l1.8 4.7L18.5 9.5l-4.7 1.8L12 16l-1.8-4.7L5.5 9.5l4.7-1.8z'/%3E%3Cpath d='M18 15l.8 2.2L21 18l-2.2.8L18 21l-.8-2.2L15 18l2.2-.8z'/%3E%3C/svg%3E"); }
.fa-kredi { margin-left: auto; white-space: nowrap; } .fa-kredi-az strong { color: var(--uyari); }
.fd-sek-kbd { font-size: 11px; color: var(--soluk); border: 1px solid var(--cizgi); border-radius: 4px; padding: 1px 5px; align-self: center; }
.fa-yukle-baslik { margin: 6px 0 10px; font-size: 13px; line-height: 1.45; max-width: 900px; }
/* faz42o: binek araç */
.fd-binek { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 0 0 12px; padding: 8px 10px; border: 1px solid var(--cizgi); border-radius: 10px; background: var(--yuzey-2); }
.fd-binek-baslik { font-weight: 600; font-size: 13px; margin-right: 4px; }
.fd-binek-sec { display: inline-flex; align-items: center; gap: 6px; margin: 0; }
.fd-binek .bk-baglanti.secili { background: var(--lacivert); color: #fff; border-color: var(--lacivert); }
.fd-binek .fd-ipucu { flex-basis: 100%; margin: 4px 0 0; }
.fa-binek-rozet { color: #6e4a1d; }
.fa-binek-form label { min-width: 0; }
.fa-binek-plaka input { min-width: 260px; }
.fa-binek-ad { display: block; font-size: 11px; color: var(--soluk); margin-top: 2px; font-weight: 400; }
/* faz42o: ⋯ ayrıntıda fiş + fatura içeriği + küçük görüntü */
.fa-ayr-ic { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-start; }
.fa-ayr-belge { flex: 1 1 420px; min-width: 300px; max-width: 720px; }
table.fa-kalem-tablo { width: 100%; }
table.fa-kalem-tablo td:first-child { max-width: 300px; }
table.fa-kalem-tablo tfoot td, table.fa-kalem-tablo tfoot th { border-top: 1px solid var(--cizgi); padding-top: 3px; }
.fa-ayr-gor { display: block; flex: 0 0 auto; border: 1px solid var(--cizgi); border-radius: 8px; overflow: hidden; background: #fff; }
.fa-ayr-gor img { display: block; width: 300px; max-height: 420px; object-fit: contain; }
.fa-ayr-cerceve { display: block; width: 328px; height: 440px; overflow: hidden; position: relative; }
.fa-ayr-cerceve iframe { width: 820px; height: 1100px; border: 0; transform: scale(.4); transform-origin: 0 0; pointer-events: none; }
/* faz42o: fotoğraf / PDF önizleme penceresi */
.fa-onizle { position: fixed; inset: 0; z-index: 9998; background: rgba(15, 22, 34, .62); display: flex; align-items: center; justify-content: center; padding: 24px; }
.fa-onizle-kutu { background: var(--yuzey); border-radius: 12px; box-shadow: 0 20px 60px rgba(0,0,0,.35); display: flex; flex-direction: column; max-width: min(1100px, 100%); max-height: 100%; overflow: hidden; }
.fa-onizle-bar { display: flex; align-items: center; gap: 12px; padding: 8px 10px 8px 16px; border-bottom: 1px solid var(--cizgi); font-weight: 600; font-size: 13px; }
.fa-onizle-bar span { flex: 1; }
.fa-onizle-kapat { border: 0; background: var(--yuzey-2); width: 30px; height: 30px; border-radius: 50%; font-size: 20px; line-height: 1; cursor: pointer; color: var(--murekkep); }
.fa-onizle-kapat:hover { background: var(--cizgi); }
img.fa-onizle-ic { display: block; max-width: min(1100px, 92vw); max-height: calc(100vh - 110px); object-fit: contain; cursor: zoom-in; overflow: auto; }
img.fa-onizle-ic.tam { max-width: none; max-height: none; cursor: zoom-out; }
.fa-onizle-kutu:has(img.tam) { overflow: auto; }
iframe.fa-onizle-ic { width: min(1000px, 92vw); height: calc(100vh - 110px); border: 0; }
body.fa-onizle-acik { overflow: hidden; }
.bk-baglanti.fa-foto-bag { margin-left: 4px; font-size: 12px; }
a.fa-gor-bag { cursor: pointer; text-decoration: none; }
a.fa-gor-bag:hover { filter: brightness(.93); text-decoration: underline; }
iframe.fa-onizle-ic.fa-onizle-fatura { width: min(1000px, 92vw); background: #fff; }
.fa-binek-uyari, .fd-binek-uyari { color: #9a5b00; font-weight: 600; }
.fd-binek-uyari { font-size: 12px; flex-basis: 100%; }
table.fd-binek-fis { flex-basis: 100%; width: 100%; margin-top: 4px; font-size: 12.5px; background: var(--yuzey); border-radius: 8px; }
table.fd-binek-fis th, table.fd-binek-fis td { padding: 3px 8px; }
table.fd-binek-fis tr.fd-binek-yeni td { background: #fff6e5; }
/* faz42p: red / iptal */
.fa-bekle-rozet { color: #5a4fb0; }
.kutucuk.fa-sonra { border-color: var(--uyari); background: #fdeceb; }
.kutucuk.fa-sonra .k1 { color: var(--uyari); }

/* faz42q: çok fişli fotoğraf — solda tamamı (fiş çerçeveli), sağda kırpılmış fiş */
.fa-onizle-ikili { display: flex; gap: 12px; padding: 12px; overflow: auto; max-height: calc(100vh - 110px); align-items: flex-start; }
.fa-onizle-kutu:has(.fa-onizle-ikili) { width: min(1400px, 96vw); }
.fa-onizle-sol { position: relative; flex: 0 1 auto; max-width: 55%; min-width: 0; line-height: 0; overflow: hidden; }
img.fa-onizle-ic.fa-onizle-tum { max-width: 100%; max-height: calc(100vh - 140px); width: auto; cursor: default; }
.fa-onizle-cerceve { position: absolute; border: 3px solid #e8590c; border-radius: 4px; box-shadow: 0 0 0 9999px rgba(0,0,0,.35); pointer-events: none; }
.fa-onizle-sag { flex: 1 1 45%; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.fa-onizle-sag canvas { width: 100%; height: auto; max-height: calc(100vh - 170px); object-fit: contain; object-position: left top; border-radius: 6px; align-self: flex-start; }
.fa-onizle-not { font-size: 12px; color: var(--soluk); }
@media (max-width: 760px) { .fa-onizle-ikili { flex-direction: column; } }

/* faz42q: binek seçimi (radyo) + canlı fiş + ek satırlar */
.fd-binek-sec input[type="radio"] { position: absolute; opacity: 0; pointer-events: none; }
.fd-binek-sec .bk-baglanti { cursor: pointer; }
.fd-binek-sec input:checked + .bk-baglanti { background: var(--lacivert); color: #fff; border-color: var(--lacivert); }
.fd-binek-sec input:focus-visible + .bk-baglanti { outline: 2px solid var(--lacivert); outline-offset: 2px; }
.fd-zfis { border: 1px solid var(--cizgi); border-radius: 10px; padding: 8px 10px; background: var(--yuzey-2); }
.fd-zfis-bas { display: flex; align-items: baseline; gap: 8px; font-size: 13px; margin-bottom: 4px; }
.fd-zfis .fd-ipucu { margin: 6px 0 0; color: #9a3412; }
.fd-ek .fd-satir { grid-template-columns: minmax(0, 1fr) auto auto auto; }
.fd-ek-yon { font-size: 12.5px; padding: 4px 6px; border: 1px solid var(--cizgi); border-radius: 6px; background: var(--yuzey); color: var(--murekkep); }
.fd-ek .fd-ek-ekle { margin-top: 4px; }

/* faz42q: binek araç ayarları — derli toplu */
.fa-binek-form { display: block; }
.fa-bk-izgara { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(360px, 1.6fr) minmax(220px, 1fr); gap: 14px; margin-bottom: 12px; align-items: stretch; }
.fa-bk-grup { margin: 0; padding: 10px 14px 12px; border: 1px solid var(--cizgi); border-radius: 10px; background: var(--yuzey-2); display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.fa-bk-grup legend { padding: 0 6px; font-size: 12px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: var(--soluk); }
.fa-bk-grup > label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; margin: 0; }
.fa-bk-grup input[type="text"], .fa-bk-grup select { width: 100%; box-sizing: border-box; height: 38px; margin: 0; }
.fa-bk-kodlar { display: grid; grid-template-columns: auto minmax(0, 1fr) minmax(0, 1fr); gap: 6px 10px; align-items: start; }
.fa-bk-kodlar legend { grid-column: 1 / -1; }
.fa-bk-sut { font-size: 12px; color: var(--soluk); font-weight: 600; }
.fa-bk-sat { font-size: 13px; padding-top: 9px; white-space: nowrap; }
.fa-bk-kod { display: flex; flex-direction: column; gap: 2px; margin: 0; min-width: 0; }
.fa-bk-kod input { font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.fa-bk-kod .fa-binek-ad { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fa-bk-genis { grid-column: 2 / -1; }
@media (max-width: 1100px) { .fa-bk-izgara { grid-template-columns: 1fr; } }

/* faz43a: Zirve Aktarım ayarları (genel) */
.fa-ayar-tablo { max-width: 720px; }
.fa-ayar-tablo input { width: 100%; max-width: 240px; box-sizing: border-box; }
.fa-ayar-tablo tr.fa-ayar-bu th, .fa-ayar-tablo tr.fa-ayar-bu td { background: var(--yuzey-2); }
.fa-ayar-form { flex-direction: column; align-items: flex-start; }
.fa-ayar-form .tablo-sar { width: 100%; max-width: 720px; }
.fa-bk-bilgi { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; padding: 6px 0; border-bottom: 1px dashed var(--cizgi); }
.fa-bk-bilgi strong { font-variant-numeric: tabular-nums; }
.fa-tasindi { color: #1d4ed8; font-weight: 600; font-size: 11.5px; }

/* faz43a: bekleme göstergesi kapatılamaz; "Arka planda devam et" ile en üstte ince çizgi */
.fa-bekle { z-index: 2147483000; }
.fa-bekle-dugmeler { display: flex; justify-content: flex-end; margin-top: 14px; }
.fa-bekle-arka { border: 1px solid var(--cizgi); background: var(--yuzey-2); color: var(--murekkep); border-radius: 99px; padding: 6px 14px; font-size: 13px; cursor: pointer; }
.fa-bekle-arka:hover { background: var(--cizgi); }
.fa-bekle-mini { display: none; }
.fa-bekle.arka { inset: 0 0 auto 0; height: 4px; padding: 0; background: transparent; backdrop-filter: none; display: block; pointer-events: none; }
.fa-bekle.arka .fa-bekle-kutu { position: absolute; inset: 0; width: auto; height: 4px; padding: 0; border-radius: 0; box-shadow: none; background: transparent; }
.fa-bekle.arka .fa-bekle-baslik, .fa-bekle.arka .fa-bekle-asama, .fa-bekle.arka .fa-bekle-alt, .fa-bekle.arka .fa-bekle-dugmeler { display: none; }
.fa-bekle.arka .fa-bekle-cubuk { height: 4px; border-radius: 0; background: rgba(0, 0, 0, .06); }
.fa-bekle.arka .fa-bekle-cubuk span { border-radius: 0; }
.fa-bekle.arka .fa-bekle-mini { display: block; position: fixed; top: 8px; right: 64px; left: auto; width: auto; min-width: 0; max-width: 60vw; height: auto; margin: 0; pointer-events: auto; border: 0; border-radius: 99px;
  padding: 3px 10px; font-size: 11.5px; font-weight: 600; background: var(--lacivert); color: #fff; cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,.18); font-variant-numeric: tabular-nums; }
.fa-gecmis-rozet { margin-left: 6px; font-size: 11px; text-decoration: none; white-space: nowrap; }

/* faz43c: toplu işlem */
table.fa-tablo th.fa-sec, table.fa-tablo td.fa-sec { width: 1.8rem; text-align: center; padding-left: .3rem; padding-right: .2rem; }
table.fa-tablo td.fa-sec input, table.fa-tablo th.fa-sec input { width: 16px; height: 16px; cursor: pointer; }
table.fa-tablo tr.fa-secili > td { background: color-mix(in srgb, var(--lacivert) 8%, var(--yuzey)); }
.fa-toplu { position: sticky; top: 56px; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px 12px; margin: 0 0 8px;
  background: var(--yuzey); border: 1px solid var(--lacivert); border-radius: 10px; box-shadow: 0 6px 18px rgba(0,0,0,.08); }
.fa-toplu[hidden] { display: none; }
.fa-toplu-say { margin-right: 6px; font-size: 13px; }
.fa-toplu button { width: auto; flex: 0 0 auto; margin: 0; }

/* faz43e: detayda çok belgeli fotoğraftan yalnız bu belge */
.fd-kirp { display: flex; justify-content: center; background: #2b2b2b; border-radius: 8px; padding: 8px; }
.fd-kirp canvas { max-width: 100%; max-height: calc(100vh - 220px); width: auto; height: auto; border-radius: 4px; background: #fff; }
.fd-kirp-not { margin: 6px 0 0; text-align: center; }
.fd-kirp-bul { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; margin-top: 8px; }
.fd-kirp-bul button { width: auto; }

/* faz43f: banka hareket karşılaştırması — ikiye bölünmüş ekran */
.bkh-bol{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}
@media (max-width:1100px){.bkh-bol{grid-template-columns:1fr}}
.bkh-bol .kutu h3{margin:0 0 .5rem}
.bkh-tablo td{vertical-align:top}
.bkh-ac{max-width:22rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bkh-ac .mh-sube-kucuk{white-space:normal}
.bkh-yok td{background:rgba(220,120,0,.07)}
.bkh-oneri{color:#8a4b00}
.bkh-link{display:block;text-decoration:none}
.bkh-link:hover{text-decoration:underline}

/* faz43f: kutucuklar süzgeç; beyanname → kontrol bağlantıları */
a.kutucuk-suz{text-decoration:none;color:inherit;cursor:pointer;display:block}
a.kutucuk-suz:hover{box-shadow:0 0 0 2px rgba(60,90,200,.25)}
a.kutucuk-suz.secili{box-shadow:0 0 0 2px #3451b2}
.mh-onay{color:#1d7a3a;font-weight:600}
/* faz43j: ünvanın yanında K / M düğmeleri; ".ad-hucre a {display:block}" burada geçersiz. */
.by-ad{display:flex;align-items:center;gap:.35rem;min-width:0}
table.izgara th.ad-hucre .by-ad>a,.ad-hucre .by-ad>a{flex:1 1 auto;min-width:0}
.by-kontrol{display:inline-flex;gap:.2rem;flex:0 0 auto}
table.izgara th.ad-hucre .by-kontrol a,table.izgara td.ad-hucre .by-kontrol a,.ad-hucre .by-kontrol a{
  display:inline-block;height:1.15rem;line-height:1.15rem;padding:0 .3rem;text-align:center;border-radius:4px;
  font-size:.58rem;font-weight:600;letter-spacing:.02em;color:#4b5563;background:rgba(0,0,0,.07);text-decoration:none;overflow:visible;white-space:nowrap}
table.izgara th.ad-hucre .by-kontrol a:hover,table.izgara td.ad-hucre .by-kontrol a:hover,.ad-hucre .by-kontrol a:hover{background:#3451b2;color:#fff;text-decoration:none}

/* faz43h: firma bazında ekstre işleme düğmesi */
.bk-oto-form{display:inline;margin-right:.6rem}
.bk-oto-form button.bk-baglanti{padding:0;border:0;background:none;cursor:pointer}

/* faz43i: banka karşılaştırma — süzgeç çipleri, kırmızı fark satırı, hesap kutusu */
.bkh-arac{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin:.4rem 0 .8rem}
.bkh-ic{display:inline-flex;gap:.4rem;margin:0}
.bkh-chips{display:inline-flex;flex-wrap:wrap;gap:.35rem}
.bkh-chip{display:inline-block;padding:.2rem .6rem;border-radius:999px;border:1px solid rgba(0,0,0,.15);font-size:.78rem;text-decoration:none;color:inherit}
.bkh-chip b{margin-left:.2rem}
.bkh-chip.secili{background:#3451b2;color:#fff;border-color:#3451b2}
.bkh-chip.kirmizi:not(.secili){border-color:#c0392b;color:#c0392b}
.bkh-chip.turuncu:not(.secili){border-color:#c87800;color:#8a4b00}
.bkh-fark td{background:rgba(192,57,43,.10)}
.bkh-fark .bkh-yz-fark{color:#c0392b;font-weight:700}
.bkh-sirada td,.bkh-yazildi td{background:rgba(52,81,178,.06)}
.bkh-hesap{width:9.5rem;font-variant-numeric:tabular-nums;font-size:.8rem;padding:.15rem .3rem}
.bkh-kaydet-serit{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;margin:.6rem 0 0}

/* faz43n: bölünmüş ekran ikincil düğme ("Yeniden sor") */
.bkh-ic button.bkh-ikinci{background:var(--yuzey-2,#eef1f6);color:var(--murekkep);border:1px solid var(--cizgi,#cfd4de);font-weight:500}
.bkh-ic button.bkh-ikinci:hover{background:var(--cizgi,#dfe3ea)}

/* faz43o: satırdan kural öğretme */
.bkh-ogret{display:inline-flex;align-items:center;gap:.2rem;font-size:.66rem;color:var(--soluk);cursor:pointer;margin-left:.3rem;white-space:nowrap}
.bkh-ogret input{margin:0}
.bkh-ogret-satir{display:none}
tr:has(.bkh-ogret-ac:checked) + .bkh-ogret-satir{display:table-row}
.bkh-ogret-satir td{background:rgba(52,81,178,.06);padding:.4rem .6rem}
.bkh-ogret-kutu{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .8rem}
.bkh-ogret-alan{display:flex;flex-direction:column;gap:.1rem;font-size:.68rem;color:var(--soluk)}
.bkh-ogret-alan input,.bkh-ogret-alan select{font-size:.8rem;padding:.2rem .35rem}
.bkh-ogret-neden{flex:1 1 16rem}.bkh-ogret-neden input{width:100%}
.bkh-ogret-genel{font-size:.74rem;white-space:nowrap}
.bkh-gizli-form{display:none}
.bkh-kurallar{margin:.8rem 0}.bkh-kurallar summary{cursor:pointer;font-weight:600}
.bkh-yz-kural{color:#1d7a3a;font-weight:600}

/* faz43p/q: muhtemel virmanlar düğmesi */
.bk-talep-serit a.bkh-virman-dug{display:inline-flex;align-items:center;gap:.45rem;padding:.6rem 1.15rem .6rem 1rem;border-radius:999px;
  border:1px solid var(--lacivert);background:#fff;color:var(--lacivert);font-weight:600;font-size:14px;line-height:1.25;text-decoration:none;
  box-shadow:0 1px 2px rgba(1,83,167,.12);transition:background .15s,color .15s,box-shadow .15s}
.bk-talep-serit a.bkh-virman-dug:hover{background:var(--lacivert);color:#fff;box-shadow:0 2px 6px rgba(1,83,167,.28)}
.bk-talep-serit a.bkh-virman-dug.var{background:var(--lacivert);color:#fff}
.bk-talep-serit a.bkh-virman-dug.var:hover{background:#013f80;border-color:#013f80}
.bkh-virman-ikon{font-size:1.1em;line-height:1}
.bkh-virman-say{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;height:1.4em;padding:0 .35em;border-radius:999px;
  background:#fff;color:var(--lacivert);font-size:.85em;font-weight:700}
.bk-talep-serit a.bkh-virman-dug:not(.var) .bkh-virman-say{background:#e4f2ea;color:#0f5c36}
.bk-talep-serit a.bkh-virman-dug:not(.var):hover .bkh-virman-say{background:#fff;color:var(--lacivert)}
.bkh-virman td{vertical-align:top}

/* faz43p: sayfa geçişi ince çizgisi + etiket */
.fa-bekle.gecis .fa-bekle-gecis-etiket{position:fixed;top:6px;right:12px;font-size:11px;color:#fff;background:rgba(21,32,44,.82);padding:3px 9px;border-radius:999px;pointer-events:none}
.fa-bekle.arka.gecis{height:4px}

/* faz43r: Zirve kayıtlarına yapay zekâ görüşü + "YZ'ninkini al" düzeltmesi */
.bkh-bol.tek{grid-template-columns:1fr}
.bkh-bol.tek .bkh-sol{display:none}
.bkh-bol.tek .bkh-ac{max-width:34rem}
.bkh-ztablo .bkh-yz{min-width:12rem}
.bkh-yz-neden{display:block;font-size:.72rem;line-height:1.3;color:var(--ikincil,#5b6472);margin:.15rem 0 .25rem;white-space:normal;max-width:24rem}
.bkh-al{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .55rem;border-radius:999px;border:1px solid #c0392b;
  color:#c0392b;font-size:.74rem;font-weight:600;cursor:pointer;background:#fff;user-select:none}
.bkh-al input{margin:0;width:auto;accent-color:#c0392b}
.bkh-al:hover{background:#fdf0ee}
tr.bkh-alinacak td{background:rgba(29,122,58,.10)}
tr.bkh-alinacak .bkh-al{border-color:#1d7a3a;color:#1d7a3a;background:#e9f6ee}
tr.bkh-alinacak .bkh-al input{accent-color:#1d7a3a}
.bkh-eski{text-decoration:line-through;text-decoration-color:rgba(192,57,43,.6);font-weight:500}
.bkh-duz-bilgi{display:inline-block;margin-left:.3rem}
.bkh-duz td{background:rgba(29,122,58,.05)}
.bkh-al-hepsi{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem}
.bkh-al-hepsi input{width:auto;margin:0}
#bkh-duz-dug{width:auto}
#bkh-duz-dug:disabled{opacity:.45;cursor:not-allowed}

/* faz43u: "Fiş kalsın" — fişteki hesap doğru (Zirve'ye yazılmaz, panel öğrenir) */
.bkh-secenek{display:inline-flex;flex-wrap:wrap;gap:.3rem}
.bkh-al.bkh-kal{border-color:#5b6472;color:#3d4450}
.bkh-al.bkh-kal input{accent-color:#3d4450}
.bkh-al.bkh-kal:hover{background:#f1f3f6}
tr.bkh-kalacak td{background:rgba(91,100,114,.10)}
tr.bkh-kalacak .bkh-al.bkh-kal{border-color:#1d7a3a;color:#1d7a3a;background:#e9f6ee}

/* faz43v: içerikten kalem çıkar */
.fd-cikar{margin:.6rem 0;padding:.5rem .7rem;border:1px solid var(--cizgi,#d8dde6);border-radius:8px;background:var(--yuzey,#fff)}
.fd-cikar summary{cursor:pointer;display:flex;gap:.6rem;align-items:baseline;list-style:none}
.fd-cikar summary::-webkit-details-marker{display:none}
.fd-cikar summary::before{content:'▸';color:var(--ikincil,#5b6472)}
.fd-cikar[open] summary::before{content:'▾'}
.fd-cikar-tablo{width:100%;border-collapse:collapse;margin:.4rem 0;font-size:.8rem}
.fd-cikar-tablo td{padding:.2rem .3rem;border-bottom:1px solid var(--cizgi,#eceff3)}
.fd-cikar-sec{display:flex;gap:.4rem;align-items:flex-start;cursor:pointer}
.fd-cikar-sec input{width:auto;margin:.15rem 0 0}
.fd-cikar-sec input:checked + span{text-decoration:line-through;color:#c0392b}
.fa-kismi-rozet{display:inline-block;margin-left:.3rem;padding:0 .4rem;border-radius:999px;background:#fdeceb;color:#8e1d13;font-weight:600}

/* faz43v: e-defter yapay zekâ — öğret */
.edk-yz-acik td{opacity:.62;background:rgba(29,122,58,.05)}
.edk-ogret summary{cursor:pointer;color:var(--lacivert);font-size:.78rem;font-weight:600;list-style:none;white-space:nowrap}
.edk-ogret summary::-webkit-details-marker{display:none}
.edk-ogret[open] summary{margin-bottom:.35rem}
.edk-ogret-form{display:grid;grid-template-columns:1fr 1fr;gap:.3rem .5rem;min-width:22rem;font-size:.78rem}
.edk-ogret-form label{display:flex;flex-direction:column;gap:.1rem}
.edk-ogret-form input[type=text]{font-size:.8rem;padding:.2rem .35rem}
.edk-ogret-genis{grid-column:1 / -1}
.edk-ogret-kutu{flex-direction:row !important;align-items:center;gap:.3rem !important}
.edk-ogret-kutu input{width:auto;margin:0}
.edk-ogret-form button{width:auto;justify-self:end;padding:.3rem .9rem}
.edk-ogret-neden{color:#1d7a3a}
.edk-ogret-liste{margin-top:.8rem}
.edk-ogret-liste summary{cursor:pointer;font-weight:600}
.edk-ogret-sil{margin:0}

/* faz43w: Zirve Aktarım — "Zirve'den oku" köprüde sürerken canlı gösterge (fatura.js) */
.fa-okuma { display: flex; align-items: center; gap: 14px; margin: 0 0 12px; padding: 12px 16px;
  border: 1px solid #b8cbe6; border-left: 4px solid var(--lacivert); border-radius: 10px; background: var(--mavi-a); }
.fa-okuma-donen { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%;
  border: 3px solid #c9d8ee; border-top-color: var(--lacivert); animation: fa-okuma-don .8s linear infinite; }
@keyframes fa-okuma-don { to { transform: rotate(360deg); } }
.fa-okuma-govde { flex: 1 1 auto; min-width: 0; }
.fa-okuma-govde > div:first-child { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.fa-okuma-sure { font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--lacivert); }
.fa-okuma-cubuk { height: 6px; margin: 8px 0 6px; border-radius: 99px; background: #d6e2f3; overflow: hidden; position: relative; }
.fa-okuma-cubuk span { position: absolute; top: 0; bottom: 0; width: 35%; border-radius: inherit;
  background: var(--lacivert); animation: fa-okuma-kay 1.4s ease-in-out infinite; }
@keyframes fa-okuma-kay { from { left: -35%; } to { left: 100%; } }
.fa-okuma.tamam { border-color: #a6d3b4; border-left-color: var(--onay); background: #edf8f0; }
.fa-okuma.tamam .fa-okuma-donen { animation: none; border-color: var(--onay); }
.fa-okuma.tamam .fa-okuma-cubuk span { animation: none; left: 0; width: 100%; background: var(--onay); }
.fa-okuma.hata { border-color: #e7b4ae; border-left-color: var(--uyari); background: #fdf0ee; }
.fa-okuma.hata .fa-okuma-donen, .fa-okuma.hata .fa-okuma-cubuk { display: none; }
@media (prefers-reduced-motion: reduce) { .fa-okuma-donen, .fa-okuma-cubuk span { animation-duration: 3s; } }

/* faz43w: Muhtasar — beyanname PDF'i elle yükleme */
.mhb-serit { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0 0 10px; }
.mhb-form { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0; }
.mhb-form button { width: auto; }
.mhb-sec { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border: 1px dashed var(--lacivert);
  border-radius: var(--kose-s); background: var(--mavi-a); cursor: pointer; font-size: 13px; }
.mhb-sec input[type=file] { font-size: 12px; max-width: 260px; }
.mhb-eslesmeyen { margin: 0 0 12px; border-left: 4px solid var(--kehribar); }
.mhb-eslesmeyen h2 { font-size: 15px; margin: 0 0 4px; }
.mhb-eslesmeyen td { vertical-align: middle; }
.mhb-ata { display: flex; gap: 6px; align-items: center; margin: 0; }
.mhb-ata select { max-width: 340px; }
.mhb-ata button { width: auto; }
.mhb-hucre { white-space: nowrap; }
.mhb-hucre a { text-decoration: none; font-weight: 600; }
.mhb-dosya { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 4px 0; }
.mhb-dosya form { margin: 0; }
.mhb-gor { margin: 6px 0 10px; }
.mhb-gor summary { cursor: pointer; color: var(--lacivert); font-size: 13px; }
.mhb-onizle { display: block; width: 100%; height: 80vh; border: 1px solid var(--cizgi); border-radius: var(--kose-s); background: #fff; margin-top: 6px; }
.mhb-tek .mhb-form { margin-top: 8px; }
.mhb-eslesmeyen .adet, .mhb-tek h2 .adet { display: inline-block; min-width: 20px; padding: 0 7px; margin-left: 6px; border-radius: 99px;
  background: var(--mavi-a); color: var(--lacivert); font-size: 12px; text-align: center; vertical-align: middle; }
.mhb-eslesmeyen .adet { background: var(--kehribar-a); color: #8a4b12; }
.mhb-eslesmeyen form button, .mhb-dosya form button { width: auto; }
.mhb-serit .fa-dugme, .mhb-tek .fa-dugme { padding: 6px 14px; font-size: 13px; }

/* faz43x: beyanname türü düğmeleri (Muhtasar listesi / mükellef ekranı) */
.mhb-cip { display: inline-block; margin: 1px 3px 1px 0; padding: 1px 7px; border-radius: 99px; font-size: 11px; font-weight: 700;
  line-height: 18px; text-decoration: none; border: 1px solid transparent; white-space: nowrap; }
a.mhb-cip:hover { filter: brightness(.95); text-decoration: none; }
.mhb-muhtasar { background: var(--mavi-a); color: var(--lacivert); border-color: #c9d8ee; }
.mhb-muh_tahakkuk { background: #eef0ff; color: #3b3f9a; border-color: #d3d6f5; }
.mhb-sgk { background: #e9f6ee; color: var(--onay); border-color: #c4e5d0; }
.mhb-hizmet { background: var(--kehribar-a); color: #8a4b12; border-color: #f2d7b8; }
.mhb-diger { background: var(--yuzey-2); color: var(--ikincil); border-color: var(--cizgi); }

/* faz43y: beyanname satırı ve görüntüleyici */
.mhb-tek .mhb-dosya { gap: 8px; padding: 5px 0; border-bottom: 1px solid var(--cizgi-2); }
.mhb-tek .mhb-dosya:last-of-type { border-bottom: 0; }
a.mhb-cip { cursor: pointer; }
.mhb-tek .mhb-cip { min-width: 108px; text-align: center; font-size: 12px; padding: 3px 10px; }
.mhb-cip.secili { box-shadow: 0 0 0 2px currentColor inset; }
.mhb-ad { font-size: 13px; color: var(--ikincil); font-variant-numeric: tabular-nums; letter-spacing: .01em; }
.mhb-onay { font-size: 11px; }
.mhb-gorunum { margin: 12px 0 10px; border: 1px solid var(--cizgi); border-radius: var(--kose); overflow: hidden; background: var(--yuzey-2); }
.mhb-gorunum[hidden] { display: none; }
.mhb-gor-ust { display: flex; align-items: center; gap: 14px; padding: 8px 12px; border-bottom: 1px solid var(--cizgi); background: var(--yuzey); }
.mhb-gor-baslik { flex: 1 1 auto; font-size: 13px; }
.mhb-gor-ust a { font-size: 12px; color: var(--lacivert); text-decoration: none; }
.mhb-gorunum .mhb-onizle { border: 0; border-radius: 0; margin: 0; height: 82vh; }
.mhb-gorunum { scroll-margin-top: 72px; }

/* faz43y: beyanname / SGK — Zirve karşılaştırması */
.mhb-kars { margin: 6px 0 14px; padding: 10px 12px; border-radius: var(--kose); border: 1px solid var(--cizgi); border-left: 4px solid var(--onay); background: #f3faf6; }
.mhb-kars.fark { border-left-color: var(--uyari); background: #fdf3f2; }
.mhb-kars-baslik { margin-bottom: 6px; font-size: 13px; }
.mhb-kars-tablo { width: auto; min-width: 560px; background: var(--yuzey); }
.mhb-kars-tablo td, .mhb-kars-tablo th { padding: 4px 12px; }
.mhb-kars-uyari td { background: #fde8e6; }
.mhb-ok { color: var(--onay); font-weight: 700; }
.mhb-durum { display: inline-block; margin-left: 2px; padding: 1px 7px; border-radius: 99px; font-size: 11px; font-weight: 700; line-height: 18px; }
.mhb-durum.tamam { color: var(--onay); background: #e9f6ee; }
.mhb-durum.fark { color: #fff; background: var(--uyari); }
.mhb-kars.bilgi { border-left-color: var(--lacivert); background: var(--mavi-a); }
.mhb-kisi { margin: 10px 0 4px; }
.mhb-kisi summary { cursor: pointer; font-size: 13px; color: var(--lacivert); margin-bottom: 6px; }
.mhb-kisi-tablo { background: var(--yuzey); }
.mhb-kisi-tablo td, .mhb-kisi-tablo th { padding: 4px 10px; }
.mhb-hucre-fark { background: #fbd5d1 !important; }
.mhb-z { color: var(--soluk); text-decoration: line-through; margin-right: 4px; }
.mhb-g { font-weight: 700; color: var(--uyari); }

/* ===================================================================
   faz45g — Asistan menü simgesi (ekran stilleri asistan.css'te)
   =================================================================== */
.m-asistan { --ton: #0153a7; --gecis: #e8f1fb; }
.yan-oge.m-asistan { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5h16v11H9l-5 4z'/%3E%3Cpath d='M12 7.5l.9 2.1 2.1.9-2.1.9-.9 2.1-.9-2.1-2.1-.9 2.1-.9z'/%3E%3C/svg%3E"); }
.ast-serit a { font-weight: 600; }
/* faz45g: üst çubuğun altındaki şeritler (Asistan "listene iş ekledi", GİB kod bekliyor).
   body.panel ızgarasında kendi satırları yoktu; şerit kenar çubuğunun altına düşüyordu. */
body.panel:has(> .panel-serit) { grid-template-rows: auto auto 1fr; }
body.panel > .panel-serit { grid-column: 2; grid-row: 2; margin: 0.6rem 1.1rem 0; align-self: start; }
body.panel > .panel-serit ~ .panel-serit { grid-row: 3; }
body.panel:has(> .panel-serit) > main { grid-row: 3; }
body.panel:has(> .panel-serit ~ .panel-serit) { grid-template-rows: auto auto auto 1fr; }
body.panel:has(> .panel-serit ~ .panel-serit) > main { grid-row: 4; }
@media (max-width: 60rem) {
  body.panel > .panel-serit { grid-column: 1; }
}
body.panel.izgara-sayfa > .panel-serit { grid-column: 1; }
@media (min-width: 60.0625rem) {
  :root[data-menu="sabit"] body.panel.izgara-sayfa > .panel-serit { grid-column: 2; }
}

/* ---- faz45x: canlı görüntü — başkasının değiştirdiği hücre ----
   Hücre kısa süre mavi çerçeveyle yanıp söner; kim değiştirdiyse küçük
   bir etikette görünür. Tıklamayı engellemez. */
@keyframes canli-yanip {
  0%   { box-shadow: inset 0 0 0 2px var(--lacivert); }
  70%  { box-shadow: inset 0 0 0 2px var(--lacivert); }
  100% { box-shadow: inset 0 0 0 2px transparent; }
}
td.canli-degisti { animation: canli-yanip 4s ease-out 1; position: relative; }
td.canli-degisti[data-canli-kim]::after {
  content: attr(data-canli-kim);
  position: absolute; left: 2px; top: -1.1em; z-index: 5;
  font-size: 0.68rem; line-height: 1.3; white-space: nowrap;
  padding: 0 0.35em; border-radius: 3px;
  background: var(--lacivert); color: #fff;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  td.canli-degisti { animation: none; box-shadow: inset 0 0 0 2px var(--lacivert); }
}

/* faz46b — Giriş Kayıtları */
.gk-suz .gk-kutu { flex-direction: row; align-items: center; gap: 6px; font-size: 13px; color: var(--murekkep); padding-bottom: 6px; }
.gk-tablo td { vertical-align: middle; }
.gk-tablo .gk-zaman { white-space: nowrap; }
.gk-tablo tr.gk-hata td { background: #fdf3f2; }
/* faz46b — fatura ekranı: demirbaş sınırı tablosu */
.fd-demirbas { border: 1px solid #e9d6b9; border-radius: 10px; padding: 8px 10px; background: #fffaf2; margin: 8px 0; }
.fd-demirbas .fd-yaz-tablo { width: 100%; margin-top: 6px; }
.fd-demirbas .fd-ipucu { margin: 6px 0 0; }
/* faz46b — fatura ekranı: şahıs firmasında ev / işyeri aboneliği */
.fd-abone { border: 1px solid var(--cizgi); border-radius: 10px; padding: 8px 10px; background: var(--yuzey-2); margin: 8px 0; }
.fd-abone.fd-abone-sor { border-color: #e9bd86; background: #fff7ec; }
.fd-abone .fd-ipucu { margin: 4px 0 6px; }
.fd-abone-dugme { display: flex; flex-wrap: wrap; gap: 8px; }
.fd-abone-dugme form { margin: 0; }

/* faz46d — KDV Kontrol: KDV'siz evrak (KDV'si 0, deftere eşleşemez) ayrı renk */
.rozet.kd-kdvsiz { background: #e0f2f1; color: #0f5f5a; border-color: #a7d9d4; }
tr.kd-satir-kdvsiz > td,
:root:not([data-hucre="renkli"]) tr.kd-satir-kdvsiz > td { background: #e6f4f3; }
:root:not([data-hucre="renkli"]) tr.kd-satir-kdvsiz > td:first-child { box-shadow: inset 3px 0 0 #2a9d8f; }
tr.kd-satir-kdvsiz:hover > td { filter: brightness(0.97); }

/* faz46f — KDV Kontrol: tevkifatlı alış (defter yalnız indirilecek kısım) */
tr.kd-satir-tevkifat > td,
:root:not([data-hucre="renkli"]) tr.kd-satir-tevkifat > td { background: #eaf1fb; }
:root:not([data-hucre="renkli"]) tr.kd-satir-tevkifat > td:first-child { box-shadow: inset 3px 0 0 #0153a7; }
.kd-tevk-uyari { color: #9a4a0b; font-weight: 600; }

/* -------------------------------------------------------------------
   faz46k — GİB tahakkuku: Tahakkuk ızgarasında işaretler
   tka-gib    : kutu GİB tahakkukundan yazıldı (sol üst mavi üçgen)
   tka-farkli : elle yazılmış tutar GİB tahakkukuyla tutmuyor (kırmızı çerçeve)
   ------------------------------------------------------------------- */
td.tutar-hucre.tka-gib, td.tutar-hucre.tka-farkli { position: relative; }
td.tutar-hucre.tka-gib::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  border-width: 0.45rem 0.45rem 0 0;
  border-style: solid;
  border-color: var(--lacivert) transparent transparent transparent;
  pointer-events: none;
}
td.tutar-hucre.tka-farkli input { background: #fdecea; box-shadow: inset 0 0 0 1.5px var(--uyari); }

/* -------------------------------------------------------------------
   faz46k — Tahakkuklar ekranı (tahakkuk_arsiv.php)
   ------------------------------------------------------------------- */
.tka-suzgec { display: flex; flex-wrap: wrap; gap: .5rem .75rem; align-items: end; margin-bottom: 1rem; }
.tka-suzgec label { display: flex; flex-direction: column; font-size: .85rem; color: var(--soluk); gap: .2rem; }
.tka-tablo { width: 100%; border-collapse: collapse; }
.tka-tablo th, .tka-tablo td { padding: .5rem .6rem; border-bottom: 1px solid var(--cizgi-2); vertical-align: top; text-align: left; }
.tka-tablo thead th { background: var(--yuzey-2); font-size: .85rem; color: var(--ikincil); position: sticky; top: 0; }
.tka-tablo td.sayi { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tka-belgeler { display: flex; flex-wrap: wrap; gap: .3rem; }
.tka-belgeler a { display: inline-block; padding: .15rem .5rem; border: 1px solid var(--cizgi); border-radius: 999px; font-size: .82rem; text-decoration: none; color: var(--lacivert); background: var(--mavi-a); }
.tka-belgeler a:hover { background: var(--lacivert); color: #fff; }
.tka-kutu-durum { font-size: .85rem; }
.tka-kutu-durum .rozet { margin-right: .25rem; }
.tka-not { color: var(--soluk); font-size: .8rem; display: block; margin-top: .2rem; }
.tka-grup-muk { font-weight: 600; }
.tka-grup-muk small { display: block; color: var(--soluk); font-weight: 400; }
@media (max-width: 760px) {
  .tka-tablo thead { display: none; }
  .tka-tablo tr { display: block; border-bottom: 1px solid var(--cizgi); padding: .4rem 0; }
  .tka-tablo td { display: block; border: 0; padding: .2rem .4rem; }
  .tka-tablo td.sayi { text-align: left; }
}

/* faz46l — Tahakkuklar ızgarası (satır mükellef / ay, sütun beyanname türü) */
.tka-suzgec button { width: auto; align-self: end; }
.tka-izgara { border-collapse: separate; border-spacing: 0; width: 100%; font-size: .9rem; }
.tka-izgara th, .tka-izgara td { border-bottom: 1px solid var(--cizgi-2); border-right: 1px solid var(--cizgi-2); padding: .4rem .5rem; vertical-align: top; text-align: left; }
.tka-izgara thead th { background: var(--yuzey-2); color: var(--ikincil); font-size: .8rem; position: sticky; top: 0; z-index: 2; white-space: nowrap; }
.tka-izgara .tka-ilk { position: sticky; left: 0; background: var(--yuzey); z-index: 1; min-width: 14rem; max-width: 22rem; font-weight: 600; }
.tka-izgara thead .tka-ilk { z-index: 3; background: var(--yuzey-2); }
.tka-izgara .tka-ilk small { display: block; color: var(--soluk); font-weight: 400; }
.tka-izgara td.tka-hucre { min-width: 8.5rem; }
.tka-izgara .tka-belgeler { gap: .2rem; }
.tka-izgara .tka-belgeler a { padding: .05rem .4rem; font-size: .78rem; }
.tka-tutar { font-variant-numeric: tabular-nums; margin-top: .2rem; white-space: nowrap; }
.tka-tutar small { color: var(--soluk); }
table.tka-izgara .tka-c-tamam   { background: #eaf6ef; }
table.tka-izgara .tka-c-farkli  { background: #fdeceb; box-shadow: inset 3px 0 0 var(--uyari); }
table.tka-izgara .tka-c-bekliyor{ background: var(--kehribar-a); }
table.tka-izgara .tka-c-eski    { background: var(--yuzey-2); }
.tka-lejant { margin: 0 0 .6rem; }
.tka-l { display: inline-block; padding: 0 .45rem; border-radius: 4px; border: 1px solid var(--cizgi); margin-right: .25rem; }

/* faz46n/o — Tahakkuklar: sade, sıkı ızgara (tür başlığı + Beyanname / Tahakkuk / SGK alt sütunları) */
.izgara-sar:has(> table.tka-ozet) { display: inline-block; max-width: 100%; }
table.tka-ozet { font-size: 12px; width: auto; }
table.tka-ozet th, table.tka-ozet td { padding: 5px 8px; }
table.tka-ozet thead th { font-size: 10.5px; letter-spacing: .02em; white-space: nowrap; text-align: center; }
table.tka-ozet thead th.tka-tur { font-size: 11.5px; color: var(--murekkep); background: var(--yuzey-2); border-bottom: 1px solid var(--cizgi); }
table.tka-ozet .tka-k-ilk { border-left: 1px solid var(--cizgi); }
table.tka-ozet td.tka-k { white-space: nowrap; text-align: right; min-width: 5.5rem; }
table.tka-ozet td.tka-k.tka-k-ilk { text-align: center; min-width: 4.5rem; }
table.tka-ozet td.ad-hucre { min-width: 13rem; max-width: 16rem; }
table.tka-ozet td.ad-hucre a { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
table.tka-ozet td.tka-top { white-space: nowrap; font-weight: 700; border-left: 1px solid var(--cizgi); }
table.tka-ozet tbody tr:not(.kd-satir-tamam):not(.grup-basligi):hover td { background: var(--mavi-a); }
a.tka-pdf { display: inline-block; font-size: 10px; font-weight: 700; line-height: 16px; padding: 0 6px; border-radius: 4px;
  color: var(--lacivert); background: var(--mavi-a); border: 1px solid #c9d8ee; text-decoration: none; margin: 0 1px; }
a.tka-pdf:hover { background: var(--lacivert); color: #fff; }
a.tka-pdf.tka-h { color: #8a4b12; background: var(--kehribar-a); border-color: #f2d7b8; }
a.tka-tutar-bag { white-space: nowrap; font-variant-numeric: tabular-nums; color: inherit; text-decoration: none; }
a.tka-tutar-bag::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; margin-right: 5px; vertical-align: middle; background: var(--cizgi); }
a.tka-tutar-bag:hover { text-decoration: underline; color: var(--lacivert); }
td.tka-c-tamam a.tka-tutar-bag::before { background: var(--onay); }
td.tka-c-farkli a.tka-tutar-bag { color: var(--uyari); font-weight: 700; }
td.tka-c-farkli a.tka-tutar-bag::before { background: var(--uyari); }
td.tka-c-bekliyor a.tka-tutar-bag::before { background: var(--kehribar); }
/* faz46q: hücre boyanmaz (yalnız nokta); satır rengi kd-satir-tamam'dan gelir. */
table.tka-ozet td.tka-k + td.tka-k a.tka-pdf.tka-h { margin-left: 4px; }
td.tka-wa { white-space: nowrap; }
td.tka-wa form { display: inline; margin: 0; }
td.tka-wa .alt-bilgi { display: block; font-size: 10px; }
.tka-wa-dug { font: inherit; font-size: 10.5px; font-weight: 700; padding: 1px 9px; border-radius: 99px; border: 1px solid #b8e0c7; background: #e9f6ee; color: #0f6b3b; cursor: pointer; width: auto; }
.tka-wa-dug:hover { background: #25d366; color: #fff; border-color: #25d366; }
.tka-wa-dug.gonderildi { background: var(--yuzey-2); color: var(--ikincil); border-color: var(--cizgi); }
.tka-wa-kutu { max-width: 42rem; }
a.dugme.tka-wa-ac { display: inline-block; background: #25d366; color: #fff; padding: .5rem 1.1rem; border-radius: var(--kose-s); font-weight: 700; text-decoration: none; }
.tka-wa-alan { display: flex; flex-direction: column; gap: .25rem; margin-top: .8rem; font-size: .85rem; color: var(--soluk); }
.tka-wa-alan input, .tka-wa-alan textarea { font: inherit; color: var(--murekkep); }
.tka-wa-icerik { display: flex; flex-wrap: wrap; gap: .4rem 1rem; align-items: center; margin: .6rem 0; font-size: .9rem; }
.tka-wa-icerik button { width: auto; }

/* faz46o — Tahakkuklar ayrıntı satırı */
table.tka-ozet thead th.tka-k { text-align: right; }
table.tka-ozet td.tka-k { text-align: right; }
.tka-ayr-grup { padding: .25rem 0; border-bottom: 1px dashed var(--cizgi); align-items: baseline; }
.tka-ayr-grup:last-child { border-bottom: 0; }
.tka-ayr-not { font-size: .7rem; color: var(--soluk); }
.tka-ayr-not.uyari { color: #8a4d0d; }

/* faz46r — Gönderim: bilgi kalemleri, numara seçimi, müşteri kartı telefonları */
.tka-bilgi { color: var(--ikincil); font-variant-numeric: tabular-nums; }
table.tka-ozet td.ad-hucre a.alt-bilgi { display: block; font-weight: 400; }
.tka-wa-numaralar { display: flex; flex-wrap: wrap; gap: .5rem; margin: .8rem 0; }
.tka-wa-numaralar a.dugme.tka-wa-ac small { display: block; font-weight: 400; font-size: .75rem; opacity: .9; }
.tka-wa-numaralar a.dugme.tka-wa-ac.ikincil { background: var(--yuzey-2); color: var(--ikincil); border: 1px solid var(--cizgi); }
.tka-wa-yeni summary { cursor: pointer; color: var(--lacivert); font-weight: 600; margin: .3rem 0; }
.mk-tel-liste { list-style: none; margin: 0 0 .7rem; padding: 0; }
.mk-tel-liste li { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .8rem; padding: .35rem 0; border-bottom: 1px solid var(--cizgi-2); }
.mk-tel-no { font-weight: 700; font-variant-numeric: tabular-nums; min-width: 9rem; }
.mk-tel-kime { flex: 1 1 10rem; }
.mk-tel-sil { margin: 0; }
.mk-tel-ekle input[type=tel] { flex: 0 1 11rem; }
.mk-tel-ekle input[type=text] { flex: 1 1 14rem; }
.bld-wa-alt .wa-dug.wa-ikinci { margin-left: .3rem; }
.bld-tel-form input[name=kime] { min-width: 14rem; }

/* faz46r — Tahakkuk sekmeleri (Tutarlar / Gönderim) */
.tka-sekmeler { display: inline-flex; border: 1px solid var(--cizgi); border-radius: 8px; overflow: hidden; margin-right: .4rem; }
.tka-sekmeler a { padding: .3rem .8rem; font-size: .85rem; font-weight: 600; color: var(--ikincil); text-decoration: none; background: var(--yuzey); }
.tka-sekmeler a + a { border-left: 1px solid var(--cizgi); }
.tka-sekmeler a.secili { background: var(--lacivert); color: #fff; }
.tka-sekmeler a:not(.secili):hover { background: var(--mavi-a); color: var(--lacivert); }

/* faz46s: Ayarlar › Banka hesaplarımız */
.oh-tablo { max-width: 980px; }
.oh-tablo input[type="text"] { width: 100%; box-sizing: border-box; }
.oh-tablo input.oh-sira { width: 3.2rem; }
.oh-tablo input.oh-iban { min-width: 17rem; font-variant-numeric: tabular-nums; }
.oh-tablo tr.oh-yeni td { background: var(--yuzey-2); }

/* -------------------------------------------------------------------
   faz46u — Tahakkuklar: ↺ tahakkuk tutarına dön, SGK desteği, kalem seçimi
   ------------------------------------------------------------------- */
button.tka-geri {
  width: auto; font: inherit; font-size: 11px; line-height: 1; padding: 1px 4px; margin-left: 3px;
  border: 1px solid #f0b8b2; border-radius: 4px; background: #fff; color: var(--uyari); cursor: pointer; vertical-align: middle;
}
button.tka-geri:hover { background: var(--uyari); color: #fff; border-color: var(--uyari); }
button.tka-geri:disabled { opacity: .5; cursor: wait; }
td.tutar-hucre.tka-farkli button.tka-geri,
td.tutar-hucre.tka-tesvik button.tka-geri { position: absolute; right: 2px; top: 50%; transform: translateY(-50%); margin: 0; }
td.tutar-hucre.tka-tesvik { position: relative; }
td.tutar-hucre.tka-tesvik input { background: #eaf6ef; box-shadow: inset 0 0 0 1.5px #7cc39a; }
td.tutar-hucre.tka-tesvik button.tka-geri { color: #0f6b3b; border-color: #b8e0c7; }
td.tka-c-tesvik a.tka-tutar-bag::before { background: #7cc39a; }
.tka-wa-kalemler { display: flex; flex-wrap: wrap; gap: .35rem .9rem; align-items: center; margin: .6rem 0; padding: .5rem .6rem;
  border: 1px solid var(--cizgi); border-radius: var(--kose-s); background: var(--yuzey-2); font-size: .85rem; }
.tka-wa-kalemler .tka-wa-kb { flex-basis: 100%; font-weight: 600; color: var(--ikincil); font-size: .8rem; }
.tka-wa-kalemler label { display: inline-flex; gap: .3rem; align-items: center; white-space: nowrap; }
.tka-wa-kalemler button { width: auto; }
.tka-wa-sec-top { margin-left: auto; }
.tka-wa-numaralar a.dugme.tka-wa-ac.gonderildi { box-shadow: inset 0 0 0 2px rgba(0,0,0,.18); }
/* Tutarlar: ↺ hücrenin sağ üst köşesinde küçük rozet (dar sütunda tutarın üstüne binmesin). */
table.tahakkuk td.tutar-hucre button.tka-geri { top: 1px; right: 1px; transform: none; font-size: 9px; padding: 0 3px; line-height: 12px; z-index: 1; }
/* faz46u — SGK işveren sistemi: mükellef kartı kutusu ve "SGK'ya gir" penceresi (sgk-giris.js) */


.mk-sgkg-satir { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .8rem; padding: .35rem 0; border-bottom: 1px solid var(--cizgi); }
.mk-sgkg-ad { font-weight: 600; }
.mk-sgkg-duzen { margin-left: auto; }
.mk-sgkg-ekle { margin-top: .6rem; }
.mk-gib-liste { max-height: 16rem; overflow-y: auto; margin-top: .3rem; }
a.tka-sgk-gir { margin-left: 4px; font-size: 10px; font-weight: 600; text-decoration: none; padding: 0 4px; border: 1px solid #a9c6ea;
  border-radius: 4px; color: #1f5fae; background: #eef4fc; vertical-align: middle; white-space: nowrap; }
a.tka-sgk-gir:hover { background: #1f5fae; color: #fff; }
.sgkg-adres { display: flex; gap: .5rem; align-items: center; margin: .6rem 0; font-size: .9rem; }
.sgkg-adres input { max-width: 380px; }
.sgkg-perde { position: fixed; inset: 0; z-index: 1000; background: rgba(15, 23, 42, .35); display: flex; justify-content: flex-end; align-items: flex-start; padding: 70px 24px 24px; }
.sgkg-pencere { width: min(420px, 100%); max-height: calc(100vh - 100px); overflow: auto; background: var(--yuzey, #fff); color: inherit;
  border-radius: var(--kose, 10px); box-shadow: 0 12px 40px rgba(0,0,0,.25); padding: .9rem 1rem; }
.sgkg-bas { display: flex; align-items: baseline; gap: .5rem; margin-bottom: .6rem; }
.sgkg-unvan { color: var(--ikincil); font-size: .85rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
.sgkg-kapat { width: auto; background: none; border: 0; font-size: 1.4rem; line-height: 1; cursor: pointer; color: var(--ikincil); padding: 0 .2rem; }
.sgkg-kayit { border: 1px solid var(--cizgi); border-radius: var(--kose-s, 6px); padding: .5rem .6rem; margin-bottom: .6rem; }
.sgkg-kayit-ad { font-weight: 600; font-size: .85rem; margin-bottom: .3rem; }
.sgkg-satir { display: grid; grid-template-columns: 7.5rem 1fr auto auto; gap: .4rem; align-items: center; padding: .25rem 0; }
.sgkg-etiket { font-size: .8rem; color: var(--ikincil); }
.sgkg-deger { font-size: .9rem; overflow-wrap: anywhere; user-select: all; }
.sgkg-satir button { width: auto; font-size: .78rem; padding: .2rem .5rem; }
.sgkg-satir button.sgkg-goz { background: transparent; color: var(--metin, #1e293b); border: 1px solid var(--cizgi); }
.sgkg-satir button.sgkg-goz:hover { background: var(--yuzey-2); color: var(--metin, #1e293b); }
.sgkg-kopyala.oldu { background: #0f6b3b; border-color: #0f6b3b; color: #fff; }
.sgkg-alt { display: flex; flex-direction: column; gap: .3rem; font-size: .8rem; margin-top: .4rem; }
.sgkg-gizli-alan { position: fixed; left: -9999px; top: 0; opacity: 0; }
@media (max-width: 600px) { .sgkg-perde { padding: 12px; align-items: flex-end; } .sgkg-satir { grid-template-columns: 1fr auto auto; } .sgkg-etiket { grid-column: 1 / -1; } }
.sgkg-tutar { border-top: 1px solid var(--cizgi); margin-top: .7rem; padding-top: .6rem; }
.sgkg-tutar-bilgi { font-size: .8rem; margin-bottom: .25rem; }
.sgkg-tutar-satir { display: flex; gap: .4rem; align-items: center; margin: .4rem 0; flex-wrap: wrap; }
.sgkg-tutar-satir input { flex: 1; min-width: 8rem; }
.sgkg-tutar-satir button { width: auto; font-size: .8rem; padding: .3rem .6rem; }
.sgkg-tutar-not { font-size: .75rem; }
a.tka-sgk-gir.bilgisiz { opacity: .55; }
/* faz46x — Tahakkuklar › Gönderim tek ekran: belgesiz kalem kutuları ve arızi şeridi */
table.tka-ozet td.tka-ek { padding: 0 4px; position: relative; vertical-align: middle; }
table.tka-ozet td.tka-ek input.th-alan::placeholder { color: var(--soluk, #9aa3ae); opacity: .7; }
table.tka-ozet td.tka-ek input.th-alan { width: 100%; min-width: 5.5rem; box-sizing: border-box; text-align: right; font: inherit; font-size: inherit; color: inherit; height: 1.7rem; line-height: 1.7rem; margin: 0;
  padding: 0 5px; border: 1px solid transparent; background: transparent; font-variant-numeric: tabular-nums; }
table.tka-ozet td.tka-ek input.th-alan:hover { border-color: var(--cizgi); }
table.tka-ozet td.tka-ek input.th-alan:focus { border-color: var(--lacivert); background: var(--yuzey); outline: none; }
table.tka-ozet td.tka-ek.odenmis input { color: var(--ikincil); }
table.tka-ozet td.tka-ek.aktarilmis::before { content: ""; position: absolute; top: 0; left: 0; border-top: 6px solid #e0a020; border-right: 6px solid transparent; }
table.tka-ozet td.tka-ek.kaydediliyor input { background: #fff8e1; }
table.tka-ozet td.tka-ek.kaydedildi input { background: #eaf6ef; }
table.tka-ozet td.tka-ek.kayit-hatasi input { background: #fdecea; }
table.tka-ozet th.tka-ek-bas { white-space: nowrap; }
.tka-arizi-form { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin: .5rem .6rem .3rem; }
.tka-arizi-form select { max-width: 16rem; }
.tka-arizi-form input[type=text] { width: 12rem; }
.tka-arizi-form input[name=tutar] { width: 7rem; }
.tka-arizi-form button { width: auto; }
.tka-arizi-getir { margin: 0 .6rem .5rem; }
.tka-arizi-getir button { width: auto; }
/* faz46x (Harun: "hizalama sorunu var, mükellef seçme kutusundaki yazı çirkin"): araç çubuğundaki müşavir kutusuyla aynı */
form.tka-muk-sec { display: inline-flex; align-items: center; margin: 0; }
form.tka-muk-sec select.tka-muk-secim { max-width: 15rem; height: auto; font-size: .82rem; line-height: 1.4; }
/* faz46x (Harun 15:00): kalem kutuları ⋯ ayrıntısında */
.tka-ek-grup { align-items: center; }
.tka-ek-grup label.tka-ek-kutu { display: inline-flex; align-items: center; gap: .35rem; position: relative; margin: 0; cursor: text; }
.tka-ek-grup label.tka-ek-kutu input.th-alan { width: 7.5rem; height: 1.6rem; margin: 0; padding: 0 6px; text-align: right; font: inherit; font-size: .82rem;
  border: 1px solid var(--cizgi); border-radius: var(--kose-s, 6px); background: var(--yuzey); font-variant-numeric: tabular-nums; }
.tka-ek-grup label.tka-ek-kutu input.th-alan:focus { border-color: var(--lacivert); outline: none; }
.tka-ek-grup label.tka-ek-kutu input.th-alan::placeholder { color: var(--soluk, #9aa3ae); opacity: .7; }
.tka-ek-grup label.tka-ek-kutu.odenmis input { color: var(--ikincil); background: var(--yuzey-2); }
.tka-ek-grup label.tka-ek-kutu.aktarilmis input { border-color: #e0a020; }
.tka-ek-grup label.tka-ek-kutu.kaydediliyor input { background: #fff8e1; }
.tka-ek-grup label.tka-ek-kutu.kaydedildi input { background: #eaf6ef; border-color: #7cc39a; }
.tka-ek-grup label.tka-ek-kutu.kayit-hatasi input { background: #fdecea; border-color: #e57373; }
/* faz46x (Harun 15:01): ⋯ ayrıntısı iki küçük tablo — kalemler ve belgeler alt alta */
.tka-ayr-tablolar { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: flex-start; padding: .6rem .8rem .8rem; }
table.tka-ozet table.tka-ayr-tablo { border-collapse: collapse; font-size: .8rem; background: var(--yuzey); border: 1px solid var(--cizgi);
  border-radius: var(--kose-s, 6px); overflow: hidden; min-width: 22rem; width: auto; table-layout: auto; margin: 0; }
table.tka-ozet table.tka-ayr-tablo caption { text-align: left; font-size: .72rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
  color: var(--ikincil); padding: 0 0 .3rem 2px; }
table.tka-ozet table.tka-ayr-tablo th, table.tka-ozet table.tka-ayr-tablo td { padding: .28rem .65rem; position: static; height: auto; width: auto; min-width: 0; background-clip: padding-box; border-bottom: 1px solid var(--cizgi); text-align: left; white-space: nowrap; }
table.tka-ozet table.tka-ayr-tablo thead th { font-size: .7rem; font-weight: 600; color: var(--ikincil); background: var(--yuzey-2); text-transform: uppercase; letter-spacing: .03em; }
table.tka-ozet table.tka-ayr-tablo .sag { text-align: right; }
table.tka-ozet table.tka-ayr-tablo tbody tr:last-child td { border-bottom: 0; }
table.tka-ozet table.tka-ayr-tablo tfoot th { border-top: 1px solid var(--cizgi); border-bottom: 0; font-weight: 700; background: var(--yuzey-2); }
table.tka-ozet table.tka-ayr-tablo tr.tka-ayr-ilk td { border-top: 1px solid var(--cizgi); }
table.tka-ozet table.tka-ayr-tablo td.tka-ayr-not { white-space: normal; color: var(--ikincil); max-width: 22rem; }
table.tka-ozet table.tka-ayr-tablo td.tka-ayr-not .uyari { color: var(--uyari); }
table.tka-ozet table.tka-ayr-tablo a.tka-pdf { margin-right: .35rem; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu { padding: .15rem .4rem; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu input.th-alan { width: 8rem; height: 1.55rem; margin: 0; padding: 0 6px; text-align: right; font: inherit;
  border: 1px solid var(--cizgi); border-radius: var(--kose-s, 6px); background: var(--yuzey); font-variant-numeric: tabular-nums; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu input.th-alan:focus { border-color: var(--lacivert); outline: none; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu input.th-alan::placeholder { color: var(--soluk, #9aa3ae); opacity: .7; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu.odenmis input { color: var(--ikincil); background: var(--yuzey-2); }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu.aktarilmis input { border-color: #e0a020; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu.kaydediliyor input { background: #fff8e1; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu.kaydedildi input { background: #eaf6ef; border-color: #7cc39a; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu.kayit-hatasi input { background: #fdecea; border-color: #e57373; }
table.tka-ozet .ayrinti-kutu.tka-ayr-tablolar { display: flex; flex-direction: row; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: flex-start; }
/* faz46x (Harun 15:09: "bu tablodaki yazılar daha küçük, genel tablo anlayışına uygun"): ayrıntı tabloları sıkı, küçük yazı */
table.tka-ozet table.tka-ayr-tablo { font-size: .74rem; min-width: 0; }
table.tka-ozet table.tka-ayr-tablo caption { font-size: .64rem; padding-bottom: .2rem; }
table.tka-ozet table.tka-ayr-tablo th, table.tka-ozet table.tka-ayr-tablo td { padding: .16rem .55rem; line-height: 1.35; font-size: .74rem; font-weight: 400; }
table.tka-ozet table.tka-ayr-tablo thead th { font-size: .62rem; font-weight: 600; padding: .22rem .55rem; }
table.tka-ozet table.tka-ayr-tablo tfoot th { font-size: .74rem; font-weight: 700; }
table.tka-ozet table.tka-ayr-tablo td.sayi, table.tka-ozet table.tka-ayr-tablo .sayi { font-variant-numeric: tabular-nums; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu { padding: .08rem .35rem; }
table.tka-ozet table.tka-ayr-tablo td.tka-ek-kutu input.th-alan { width: 6.5rem; height: 1.3rem; font-size: .74rem; padding: 0 5px; }
table.tka-ozet table.tka-ayr-tablo a.tka-pdf { font-size: .62rem; padding: 0 4px; }
table.tka-ozet table.tka-ayr-tablo td.tka-ayr-not { font-size: .68rem; }
table.tka-ozet table.tka-ayr-tablo .soluk { color: var(--ikincil); }
/* faz46x — arızi satırları ayrıntı tablosunda ve önceki aydan aktarma penceresi */
table.tka-ozet table.tka-ayr-tablo tr.tka-arz input, table.tka-ozet table.tka-ayr-tablo tr.tka-arz-yeni input {
  height: 1.3rem; margin: 0; padding: 0 5px; font: inherit; font-size: .74rem; border: 1px solid var(--cizgi);
  border-radius: var(--kose-s, 6px); background: var(--yuzey); width: auto; }
table.tka-ozet table.tka-ayr-tablo .arz-aciklama { width: 10rem; }
table.tka-ozet table.tka-ayr-tablo .arz-vade { width: 7.4rem; }
table.tka-ozet table.tka-ayr-tablo .arz-tutar { width: 6.5rem; text-align: right; font-variant-numeric: tabular-nums; }
table.tka-ozet table.tka-ayr-tablo tr.tka-arz input[readonly] { background: var(--yuzey-2); color: var(--ikincil); }
table.tka-ozet table.tka-ayr-tablo tr.tka-arz.aktarilmis .arz-tutar { border-color: #e0a020; }
table.tka-ozet table.tka-ayr-tablo button.arz-sil { width: auto; margin-left: 3px; padding: 0 5px; line-height: 1.2; font-size: .8rem;
  border: 1px solid transparent; background: transparent; color: var(--ikincil); cursor: pointer; }
table.tka-ozet table.tka-ayr-tablo button.arz-sil:hover { color: var(--uyari); border-color: #f0b8b2; }
table.tka-ozet table.tka-ayr-tablo button.arz-ekle { width: auto; margin-left: 3px; padding: 0 .5rem; font-size: .7rem; line-height: 1.3rem; height: 1.3rem; }
table.tka-ozet table.tka-ayr-tablo tr.tka-arz-arac td { padding: .25rem .55rem; background: var(--yuzey); }
table.tka-ozet table.tka-ayr-tablo tr.tka-arz-arac button { width: auto; font-size: .68rem; padding: .1rem .5rem; margin-right: .3rem;
  background: transparent; color: var(--lacivert); border: 1px dashed var(--cizgi); border-radius: var(--kose-s, 6px); cursor: pointer; }
table.tka-ozet table.tka-ayr-tablo tr.tka-arz-arac button:hover:not(:disabled) { border-color: var(--lacivert); }
table.tka-ozet table.tka-ayr-tablo tr.tka-arz-arac button:disabled { color: var(--ikincil); opacity: .6; cursor: default; }
.tka-arz-liste { display: flex; flex-direction: column; gap: .25rem; margin: .3rem 0 .7rem; }
.tka-arz-secim { display: grid; grid-template-columns: auto 1fr auto auto; gap: .55rem; align-items: center; font-size: .82rem;
  padding: .3rem .4rem; border: 1px solid var(--cizgi); border-radius: var(--kose-s, 6px); }
.tka-arz-secim input { width: auto; margin: 0; }
.tka-arz-secim .kucuk { grid-column: 2 / -1; }
.tka-arz-tutar { font-variant-numeric: tabular-nums; font-weight: 600; text-align: right; }
.tka-arz-alt { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.tka-arz-alt button { width: auto; font-size: .8rem; padding: .3rem .7rem; }

/* faz46y — Ödemeler: Tahakkuklar anlayışında tek satır (hücrede tutar + renk noktası, tıklayınca menü) */
table.od-ozet td.od-k { padding: 0 3px; }
table.od-ozet button.od-hucre { width: 100%; display: inline-flex; align-items: center; justify-content: flex-end; gap: 5px; font: inherit; font-size: inherit;
  color: inherit; background: transparent; border: 1px solid transparent; border-radius: var(--kose-s, 6px); padding: 3px 5px; margin: 0; cursor: pointer;
  white-space: nowrap; font-variant-numeric: tabular-nums; line-height: 1.3; font-weight: 400; }
table.od-ozet button.od-hucre:hover, table.od-ozet td.od-k.od-secili button.od-hucre { border-color: var(--cizgi); background: var(--yuzey); }
table.od-ozet .od-nokta, .od-menu .od-nokta { display: inline-block; width: 7px; height: 7px; border-radius: 50%; flex: 0 0 7px; background: #c9ccd3; }
table.od-ozet td.o-odendi .od-nokta, .od-menu .o-odendi .od-nokta { background: var(--onay, #17693a); }
table.od-ozet td.o-kendisi .od-nokta, .od-menu .o-kendisi .od-nokta { background: #4f7fd0; }
table.od-ozet td.o-kismen .od-nokta { background: linear-gradient(90deg, var(--onay, #17693a) 50%, #c9ccd3 50%); }
table.od-ozet td.o-odemeyecek .od-nokta, .od-menu .o-odemeyecek .od-nokta { background: transparent; box-shadow: inset 0 0 0 1.5px #9a9aa2; }
table.od-ozet td.o-odemeyecek button.od-hucre { color: var(--ikincil); text-decoration: line-through; text-decoration-color: #b9b9c2; }
table.od-ozet td.od-k.od-gecti button.od-hucre { color: var(--uyari); }
table.od-ozet td.od-kalan { white-space: nowrap; font-weight: 600; }
table.od-ozet td.od-durum { white-space: nowrap; }
table.od-ozet td.od-hepsi-hucre { white-space: nowrap; padding-left: 0; }
table.od-ozet button.od-hepsi { width: auto; font: inherit; font-size: 10.5px; font-weight: 600; padding: 1px 8px; border-radius: 99px;
  border: 1px solid #b8e0c7; background: #e9f6ee; color: #0f6b3b; cursor: pointer; }
table.od-ozet button.od-hepsi:hover { background: #0f6b3b; color: #fff; border-color: #0f6b3b; }
table.od-ozet tr.kd-satir-tamam td.od-kalan { color: var(--ikincil); }
/* ayrıntı tablosu: durum sütunu sola yaslı, yazılı */
table.od-ozet table.od-ayr-tablo td.od-k { padding: .05rem .3rem; }
table.od-ozet table.od-ayr-tablo button.od-hucre-yazi { justify-content: flex-start; font-size: .74rem; padding: 1px 5px; width: auto; }
table.od-ozet table.od-ayr-tablo td.od-gecti { color: var(--uyari); }
table.od-ozet table.od-ayr-tablo .od-gecti-yazi { font-size: .62rem; font-weight: 600; text-transform: uppercase; margin-left: 3px; }
table.od-ozet table.od-ayr-tablo td.odeme-no .on-etiket { font-size: .62rem; color: var(--ikincil); text-transform: uppercase; }
table.od-ozet table.od-ayr-tablo td.odeme-no button.kopyala { width: auto; padding: 0 4px; font-size: .74rem; line-height: 1.2; margin-left: 2px; }
/* hücre menüsü */
.od-menu { position: absolute; z-index: 60; display: flex; flex-direction: column; min-width: 9.5rem; padding: 4px; background: var(--yuzey);
  border: 1px solid var(--cizgi); border-radius: var(--kose-s, 6px); box-shadow: 0 6px 18px rgba(20, 30, 50, .14); }
.od-menu[hidden] { display: none; }
.od-menu button.od-menu-dug { display: flex; align-items: center; gap: 7px; width: 100%; text-align: left; font: inherit; font-size: .8rem; font-weight: 400;
  color: var(--murekkep); background: transparent; border: 0; border-radius: 4px; padding: 5px 8px; cursor: pointer; }
.od-menu button.od-menu-dug:hover, .od-menu button.od-menu-dug:focus { background: var(--mavi-a); outline: none; }
.od-menu button.od-menu-dug.o-odemeyecek { color: var(--ikincil); font-size: .74rem; border-top: 1px solid var(--cizgi); border-radius: 0 0 4px 4px; margin-top: 2px; }
table.od-ozet table.od-ayr-tablo td.odeme-no .on-etiket, table.od-ozet table.od-ayr-tablo td.odeme-no .on-deger { display: inline; margin: 0 3px 0 0; }
table.od-ozet thead th.ad-hucre { text-align: left; }
/* faz47d (Harun: "sağa dayayalım, ötekilerden ayrı bir düğme"): Bildirim gönderilmemiş çipi şeridin sağ ucunda */
.durum-serit .serit-cipler:has(> .bgn-cip) { flex: 1 1 auto; }
.durum-serit .serit-cip.bgn-cip { margin-left: auto; }

/* ===================================================================
   faz47s — SIKI TASARIM (Harun, 25 Ekim 2026: "kocaman kocaman kutular,
   sağ taraf bomboş, sayfa aşağı sarkıyor… biraz kibar şık olmalı")

   Tek yerden bütün ekranlar: açıklama kutu genişliğinde ve kısa; alan,
   düğme ve kutu ölçüleri küçüldü; düğme satırı doldurmuyor. Formu
   yan yana dizmek için .form-satir (+ .alan) kalıbı.
   =================================================================== */
.aciklama { max-width: none; margin: 0.15rem 0 0.8rem; font-size: 0.85rem; line-height: 1.45; }
.kutu { padding: 0.9rem 1.1rem; margin-top: 1rem; }
.kutu h2 { font-size: 0.95rem; margin: 0 0 0.3rem; }
.ikili { gap: 1rem; }
.ikili .kutu { margin-top: 1rem; }
label { font-size: 0.8rem; margin-bottom: 0.2rem; }

input[type="text"], input[type="email"], input[type="password"], input[type="search"],
input[type="number"], input[type="date"], input[type="month"], select, textarea {
  padding: 0.4rem 0.55rem; font-size: 0.9rem; margin-bottom: 0.7rem;
}
input[type="file"] { padding: 0.35rem; font-size: 0.85rem; margin-bottom: 0.7rem; }

button { width: auto; padding: 0.42rem 0.95rem; font-size: 0.88rem; }
button.ikincil { padding: 0.36rem 0.85rem; }
.kucuk-dugme, button.kucuk-dugme { padding: 0.22rem 0.55rem; font-size: 0.78rem; }
.giris-kutu button { width: 100%; padding: 0.6rem 1rem; font-size: 0.95rem; }

/* Yan yana form: etiketli alanlar tek satırda, dar ekranda alta kayar. */
.form-satir { display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; align-items: flex-end; }
.form-satir .alan { display: flex; flex-direction: column; flex: 1 1 10rem; min-width: 0; }
.form-satir .alan.dar { flex: 0 1 8rem; }
.form-satir .alan input, .form-satir .alan select { margin-bottom: 0; }
.form-satir > button { flex: 0 0 auto; }
.form-not { margin: 0.5rem 0 0; font-size: 0.78rem; color: var(--soluk); }
.kutu-bas { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.25rem 1rem; }
.kutu-bas h2 { margin: 0; }
.kutu-bas .aciklama { margin: 0; }
/* faz47s: alanlar ve seçim kutuları aynı boyda (yan yana dizilince etiketler aynı hizada). */
input[type="text"], input[type="email"], input[type="password"], input[type="search"],
input[type="number"], input[type="date"], input[type="month"], select { height: var(--boy); line-height: 1.2; }
.form-satir > button { height: var(--boy); padding-block: 0; }
/* faz47s: kutunun içinde alt alta duran tek başına alanlar ekranı boydan boya kaplamasın
   (tablo / ızgara içindeki kutular etkilenmez — yalnız formun doğrudan çocukları). */
.kutu > form > input[type="text"], .kutu > form > input[type="email"], .kutu > form > input[type="password"],
.kutu > form > input[type="number"], .kutu > form > input[type="date"], .kutu > form > input[type="search"],
.kutu > form > select, .kutu > form > input[type="file"], .kutu > form > textarea { max-width: 34rem; }
.kutu > form > textarea { max-width: 48rem; }

/* faz47s: dosya seçme kutusu her ekranda aynı (Harun 25 Ekim: "bir XML yükleme koyacağız, her yere aynı butonu
   koyalım; dışarıdan bir sayfa yükletiyormuşuz gibi durmasın"). Tarayıcının kendi düğmesi panelin ikincil düğmesine
   benzetildi; yazısı tarayıcının dilinde ("Dosya Seç"). */
input[type="file"] {
  width: 100%; max-width: 34rem; box-sizing: border-box;
  padding: 0.25rem; font-size: 0.85rem; color: var(--soluk);
  border: 1px dashed var(--cizgi); border-radius: var(--kose-s); background: var(--yuzey-2);
}
input[type="file"]::file-selector-button {
  margin-right: 0.6rem; padding: 0.3rem 0.85rem;
  border: 1px solid var(--lacivert); border-radius: var(--kose-s);
  background: var(--yuzey); color: var(--lacivert); font: inherit; font-weight: 550; cursor: pointer;
}
input[type="file"]::file-selector-button:hover { background: var(--mavi-a); }
input[type="file"]:focus-visible { outline: 2px solid var(--lacivert); outline-offset: 2px; }

/* ===================================================================
   faz47s — HİZALAMA STANDARDI (Harun, 25 Ekim 2026: "hizalama çok önemli;
   butonlar yazının üstünde altında görünmesin")

   İki boy var, başka boy yok:
     --boy       içerikteki alan, seçim kutusu ve yanındaki düğme (2.15rem)
     --boy-arac  sayfa başındaki araç çubuğu: seçim, arama, çip, düğme (1.875rem)
   Aynı satırdaki alan + düğme aynı boyda ve aynı orta çizgide durur;
   alanın alt boşluğu (margin) düğmeyi aşağı itmesin diye sıfırlanır.
   =================================================================== */
:root { --boy: 2.15rem; --boy-arac: 1.875rem; }

/* 1) Alan ile düğme yan yana (aynı kapta kardeş): eşit boy, orta hizada. */
:is(input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]), select, .tarih-alan, .alan, label)
  ~ :is(button, a.dugme):not(.kucuk-dugme):not(.kopyala):not(.arac *),
:is(button, a.dugme):not(.kucuk-dugme):not(.kopyala):not(.arac *):has(~ :is(input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), select, .tarih-alan)) {
  height: var(--boy); padding-top: 0; padding-bottom: 0; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; line-height: 1.2;
}
/* Boşluk sıfırlama yalnız hemen yanındaki için (+): alt alta formda alanlar arası boşluk kalır. */
:is(input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), select):has(+ :is(button, a.dugme)),
:is(button, a.dugme) + :is(input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), select),
label:has(+ :is(button, a.dugme)) > :is(input:not([type="checkbox"]):not([type="radio"]), select),
.tarih-alan:has(+ :is(button, a.dugme)) { margin-bottom: 0; vertical-align: middle; }
label:has(+ :is(button, a.dugme)):has(> :is(input:not([type="checkbox"]):not([type="radio"]), select)) { margin-bottom: 0; }

/* Dosya kutusu + Yükle: düğme kutunun boyunda. */
input[type="file"] { height: var(--boy); vertical-align: middle; }
input[type="file"]::file-selector-button { height: calc(var(--boy) - 0.6rem); padding-block: 0; }
input[type="file"]:has(+ button) { margin-bottom: 0; }

/* Satır içi küçük formlar (tablo satırındaki Kaydet / Sil vb.): içindekiler ortada. */
.satir-ici { display: inline-flex; align-items: center; gap: 0.35rem; vertical-align: middle; }
.satir-ici > :is(input, select) { margin: 0; }
td > :is(button, a.dugme, form, input, select, .rozet) { vertical-align: middle; }
td :is(input:not([type="checkbox"]):not([type="radio"]), select):has(+ :is(button, a.dugme)) { margin: 0; }

/* Onay kutusu + yazısı: kutu yazının orta çizgisinde, düğmeyle aynı satırda kayık durmasın. */
/* (Seçicinin ağırlığı sıfır: sayfaların kendi onay listesi düzeni — alt alta, yan yana — bozulmaz.) */
:where(input[type="checkbox"], input[type="radio"]) { vertical-align: middle; }
:where(label:has(> input[type="checkbox"], > input[type="radio"])) { align-items: center; }
.rozet { vertical-align: middle; }

/* Yuvarlak (hap) düğme yok — her yerde aynı köşe. */
.bk-form button { border-radius: var(--kose-s); }

/* 2) Araç çubuğu: bütün öğeler aynı boy, aynı orta çizgi. */
.arac :is(select, input[type="text"], input[type="search"], button, a.ust-anahtar, a.donem-dugme, .kd-kaynak-secenek, .tarih-alan) {
  height: var(--boy-arac); box-sizing: border-box; margin-top: 0; margin-bottom: 0;
  padding-top: 0; padding-bottom: 0; vertical-align: middle;
}
.arac :is(button, a.ust-anahtar, a.donem-dugme, .kd-kaynak-secenek) {
  display: inline-flex; align-items: center; justify-content: center; line-height: 1;
}
.arac .tarih-alan input { height: auto; }

/* Küçük boy (tablo satırı): satırdaki alan, seçim kutusu ve küçük düğme aynı boyda. */
:root { --boy-k: 1.8rem; }
.kucuk-dugme, button.kucuk-dugme {
  height: var(--boy-k); padding-top: 0; padding-bottom: 0; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; line-height: 1;
}
td :is(input[type="text"], input[type="email"], input[type="number"], input[type="date"], input[type="search"], select) {
  height: var(--boy-k); padding-top: 0; padding-bottom: 0; font-size: 0.85rem; vertical-align: middle;
}
td :is(input, select) ~ :is(button, a.dugme):not(.kucuk-dugme) { height: var(--boy-k); font-size: 0.82rem; }

/* Kutudaki standart düğmeler (sınıfsız / ikincil / tehlike) tek boy — yan yana iki ayrı formda bile aynı. */
.kutu button:is(:not([class]), .ikincil, .tehlike):not(td *):not(.kucuk-dugme) {
  height: var(--boy); padding-top: 0; padding-bottom: 0; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; line-height: 1.2;
}
.giris-kutu button { height: auto; }
/* Süzgeç kutusunun altı: Süz / Ara / Temizle / Kapat aynı boyda. */
.suzgec-dugmeler > :is(button, a) {
  height: var(--boy-k); padding-top: 0; padding-bottom: 0; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; line-height: 1;
}
.arac label { white-space: nowrap; margin-bottom: 0; }

/* Yan yana dizilen form kalıpları (flex satır): içlerindeki alanların alt boşluğu sıfır — yoksa yalnız düğmenin
   hemen yanındaki alan hizaya girer, öteki alanlar yukarıda kalır (Harun 25 Ekim 22:32, Yapay zekâ modeli kutusu). */
:is(.bk-form, .form-satir, .kd-not-form, .edk-yz-form, .edk-ogret-form, .mhb-form, .tka-arizi-form, .kd-xml-yukle, .kd-temizle, .arac-form)
  :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, label, .tarih-alan) { margin-bottom: 0; }
/* Etiketi üstte duran alanlar alttan hizalanır (etiket yazısı bir ya da iki satır olsa da kutular aynı çizgide). */
:is(.bk-form, .form-satir, .kd-not-form, .edk-yz-form, .edk-ogret-form, .mhb-form, .tka-arizi-form, .kd-xml-yukle, .kd-temizle):has(> label > :is(input, select)) { align-items: flex-end; }
:is(.kd-xml-yukle, .kd-temizle) > :is(span, p) { align-self: center; }

/* faz47t: giriş ekranında cihaz onayı bekleme yazısı */
.co-durum { margin: 0.8rem 0; padding: 0.6rem 0.8rem; border: 1px solid var(--cizgi); border-radius: var(--kose-s); background: var(--yuzey-2); font-size: 0.9rem; }
.co-durum.iyi { border-color: #bfe0cd; background: #e4f2ea; color: #0f5c36; }
.co-durum.hata { border-color: #f6ccc8; background: #fdeceb; color: #8e1d13; }
.co-tablo tr.co-bekliyor td { background: var(--kehribar-a); }

/* faz47u (Harun 25 Ekim 23:58: "sütun başlıklarını ortalayalım … tarihi de, fotolar yüklendi'yi de, hepsini ortalayalım").
   Ödemeler / Tahakkuklar özet ızgarasında başlıklar (Mükellef hariç) ortada; Kalfa'da tarih kutuları ve e-arşiv durumu
   hücrenin ortasında, kutu içeriği kadar geniş. */
table.izgara.tka-ozet > thead > tr > th:not(.ad-hucre):not(.sabit-sutun) { text-align: center; }
table.izgara.kalfa td.tarih-hucre { text-align: center; }
table.izgara.kalfa td.tarih-hucre input[type="date"] { width: auto; display: inline-block; text-align: center; margin: 0; }
table.izgara.kalfa td.durum-hucre { justify-content: center; text-align: center; }
table.izgara.kalfa td.durum-hucre .earsiv-secim { width: auto; }
/* faz47u (Harun 25 Ekim 23:59): Zirve Aktarım firma listesinde Mod ve Son okuma hücreleri ortada. */
table.izgara.fa-ozet td.fa-son-okuma, table.izgara.fa-ozet td.fa-mod { text-align: center; }
/* faz47u (Harun 26 Ekim 00:00: "sayıları da ortalayalım ve tüm sütunlar eşit genişlikte dağıtılsın"): Mükellef sütunu sabit,
   kalan sütunlar eşit genişlikte; başlık ve sayılar ortada. */
table.izgara.fa-ozet { table-layout: fixed; width: 100%; min-width: 56rem; }
table.izgara.fa-ozet th.ad-hucre { width: 26%; }
table.izgara.fa-ozet thead th:not(.ad-hucre), table.izgara.fa-ozet td.sag { text-align: center; }
table.izgara.fa-ozet td.ad-hucre { overflow: hidden; text-overflow: ellipsis; }
/* faz47u (Harun 26 Ekim 00:01: "bu butonları ortalayalım"): ızgarada hücrede tek başına duran durum rozeti
   (tamam / N evrak / Ödenmedi …) her tabloda hücrenin ortasında. */
table.izgara > tbody > tr > td:has(> .rozet:only-child) { text-align: center; }

/* faz47u (Harun 26 Ekim 00:02: "bu kutular ekranın çözünürlüğüne göre daraltılıp eşit dağıtılarak sayfaya sığdırılamaz
   mı"): özet kutucukları tek satırda, eşit genişlikte; ekran daraldıkça hepsi birlikte daralır. Ancak bir kutu 7.5rem'den
   dar kalacaksa (telefon) alt satıra geçer. Uzun başlık iki satıra bölünür, kutu taşmaz. */
.kutucuklar { display: flex; flex-wrap: wrap; }
.kutucuklar > .kutucuk { flex: 1 1 0; min-width: 7.5rem; box-sizing: border-box; }
.kutucuklar > .kutucuk .k1 { white-space: normal; overflow-wrap: anywhere; line-height: 1.25; }
.kutucuklar > .kutucuk .k2 { overflow: hidden; text-overflow: ellipsis; }
/* Başlığı iki satıra bölünen kutuda rakam aşağı kaymasın: rakamlar bütün kutularda aynı çizgide (altta). */
.kutucuklar > .kutucuk { display: flex; flex-direction: column; }
.kutucuklar > .kutucuk .k2 { margin-top: auto; padding-top: 0.1rem; }
/* faz47u (Harun 26 Ekim 00:03: "bu kutuların içi de tüm sayfalarda ortalansın"): başlık ve rakam kutunun ortasında. */
.kutucuk { text-align: center; }
.kutucuklar > .kutucuk { align-items: center; }

/* faz47u (Harun 26 Ekim 00:07: "bunlar tüm sayfalarda uygulansın"): bütün ızgaralarda sütun başlıkları ve sayılar
   ortada (Mükellef / ad sütunu solda kalır). Sütun şeridi (lib/izgara.php) katlanmıyor, başlıksız. */
table.izgara > thead > tr > th:not(.ad-hucre):not(.sabit-sutun) { text-align: center; }
table.izgara > tbody > tr > :is(td.sayi, td.sag), table.izgara > tfoot > tr > :is(td, th).sag { text-align: center; }
div.sutun-serit { display: block; padding: 0.45rem 0.65rem; }
div.sutun-serit > .serit-cipler { display: flex; flex-wrap: wrap; gap: 0.3rem; }
div.sutun-serit > .serit-not, div.sutun-serit > .sutun-uyari { margin-top: 0.4rem; }
/* faz47u (Harun 26 Ekim 00:09, E-Defter Kontrol "Veri" sütunu): ızgaralarda mükellef / ad sütunu dışındaki bütün hücreler
   ortada (tarih, müşavir, tür …). Uzun not / açıklama hücreleri solda kalır. */
/* Yalnız ızgaranın kendi hücreleri (>) — satır altında açılan ayrıntı tabloları (Tahakkuklar › Ödeme kalemleri / Belgeler
   gibi) kendi düzeninde kalır (Harun 26 Ekim 00:46: "burasını istemedim"). */
table.izgara > tbody > tr > td:not(.ad-hucre):not(.sabit-sutun):not(.not):not(.not-hucre):not([colspan]) { text-align: center; }
table.izgara > tbody > tr > :is(th.ad-hucre, th.sabit-sutun) { text-align: left; }
/* faz47u (Harun 26 Ekim 00:10): Mutabakat listesinde Firmaya gönder / sıfırla düğmeleri hücrenin ortasında; hap köşe
   yerine panelin ortak köşesi. */
table.izgara .mut-islem { justify-content: center; }
button.mut-d { border-radius: var(--kose-s); }
.edk-ekran .edk-ayar button.edk-kaydet, .gv-dugmeler button { border-radius: var(--kose-s); }

/* ===================================================================
   faz47w — DÜĞME STANDARDI (Harun, 26 Ekim 00:43: "bu iki sayfadaki XML yükle aynı mı? ilk sayfadaki butonlar
   şık mı? tasarımda standart olacaktık")

   Sayfaların kendi icat ettiği düğmeler tek kalıba indirildi. Üç düğme var, başkası yok:
     ana      lacivert dolu      (bir eylem çubuğunda bir tane: Aktar, Kaydet, Başlat)
     ikincil  lacivert çerçeveli (öteki eylemler; "… yükle" açılır panelleri dahil)
     küçük    tablo satırındaki düğme (--boy-k)
   Hap köşe, gölge, yeşil / mor / turuncu düğme yok. Tek istisna WhatsApp: tanınsın diye yeşil, ama aynı biçimde.
   "html body" öneki: sayfa CSS'leri (fatura-ek.css, asistan.css …) stil.css'ten sonra yüklendiği için ağırlık.
   =================================================================== */
html body :is(.fa-dugme, a.fa-dugme, .fa-form-alt button, .ast-ekle-alt button, .gv-dugmeler button,
              .edk-ekran .edk-ayar button.edk-kaydet, .gib-ana-dugme, .arizi-getir-form button.arizi-getir) {
  height: var(--boy); padding: 0 0.95rem; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem;
  border: 1px solid var(--lacivert); border-radius: var(--kose-s); box-shadow: none; filter: none; transform: none;
  font: inherit; font-size: 0.88rem; font-weight: 550; line-height: 1.2; text-decoration: none; white-space: nowrap;
  width: auto; flex: 0 0 auto; margin: 0;
}
/* ana */
html body :is(.fa-dugme.fa-aktar, .fa-form-alt button, .ast-ekle-alt button, .edk-ekran .edk-ayar button.edk-kaydet,
              .gib-ana-dugme, .gv-dugmeler button.gv-yazdir, .arizi-getir-form button.arizi-getir) {
  background: var(--lacivert); color: #fff;
}
html body :is(.fa-dugme.fa-aktar, .fa-form-alt button, .ast-ekle-alt button, .edk-ekran .edk-ayar button.edk-kaydet,
              .gib-ana-dugme, .gv-dugmeler button.gv-yazdir, .arizi-getir-form button.arizi-getir):hover:not([disabled]) {
  background: var(--lacivert); filter: brightness(1.12); color: #fff;
}
/* ikincil */
html body :is(.fa-dugme:not(.fa-aktar), a.fa-dugme.fa-oku-dugme, .gv-dugmeler button:not(.gv-yazdir)) {
  background: var(--yuzey); color: var(--lacivert);
}
html body :is(.fa-dugme:not(.fa-aktar), a.fa-dugme.fa-oku-dugme, .gv-dugmeler button:not(.gv-yazdir)):hover:not([disabled]) {
  background: var(--mavi-a); color: var(--lacivert); filter: none;
}
html body :is(.fa-dugme, button)[disabled] { opacity: 0.45; cursor: default; }

/* küçük (tablo satırı) */
html body :is(button.muavin-ac, button.tka-elle-ac, button.tka-elle-sil, table.od-ozet button.od-hepsi, button.mut-d, button.edm-d) {
  height: var(--boy-k); padding: 0 0.55rem; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--kose-s); font: inherit; font-size: 0.78rem; font-weight: 500; line-height: 1; width: auto; vertical-align: middle;
}
html body table.od-ozet button.od-hepsi { background: var(--yuzey); color: var(--ikincil); border: 1px solid var(--cizgi); }
html body table.od-ozet button.od-hepsi:hover { background: var(--mavi-a); color: var(--lacivert); border-color: var(--lacivert); }

/* WhatsApp: tek görünüm (yeşil çerçeve / dolu), panelin köşesi ve boyu */
html body :is(.tka-wa-dug, button.wa-dug, .bk-wa-dugme, .firma-wa-dugme, a.dugme.tka-wa-ac, .bld-wa-alt button.wa-paylas) {
  border-radius: var(--kose-s); box-shadow: none; font-weight: 600; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; gap: 0.3rem; line-height: 1; width: auto;
}
html body .tka-wa-dug { height: var(--boy-k); padding: 0 0.6rem; font-size: 0.78rem; }

/* "… yükle" açılır panelleri: her sayfada aynı — ikincil düğme görünümlü başlık, açılınca altta panel.
   (KDV › XML · PDF · Resim yükle, Zirve Aktarım › Fotoğraf / PDF yükle, XML yükle, Banka › ekstre yükle …) */
html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir) > summary {
  display: inline-flex; align-items: center; gap: 0.4rem; width: max-content;
  height: var(--boy); padding: 0 0.85rem; box-sizing: border-box;
  border: 1px solid var(--lacivert); border-radius: var(--kose-s); background: var(--yuzey); color: var(--lacivert);
  font-size: 0.88rem; font-weight: 550; list-style: none; cursor: pointer; user-select: none;
}
html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir) > summary::-webkit-details-marker { display: none; }
html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir) > summary::before {
  content: ""; width: 0.38rem; height: 0.38rem; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
  transform: rotate(-45deg); margin-right: 0.1rem;
}
html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir)[open] > summary { background: var(--mavi-a); color: var(--lacivert); }
html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir)[open] > summary::before { transform: rotate(45deg); }
html body .bk-islem-hucre details.bk-ac > summary { height: var(--boy-k); padding: 0 0.55rem; font-size: 0.78rem; font-weight: 500; }
/* Açılan panel: başlık düğmesinin altında ince çerçeveli kutu (KDV'deki .kd-araclar-ic ile aynı) */
html body details.fa-xml-ac[open] { padding: 0; background: none; border: 0; margin: 0.2rem 0; }
.yukle-ic { display: flex; flex-direction: column; gap: 0.6rem; padding: 0.6rem 0.7rem; margin-top: 0.3rem;
  border: 1px solid var(--cizgi); border-radius: var(--kose-s); background: var(--yuzey); font-size: 0.85rem; }
.yukle-ic > p { margin: 0; }
.yukle-ic .bk-form { margin: 0; }
.yukle-ic .bk-form label { font-size: 0.8rem; color: var(--soluk); }

/* ===================================================================
   faz47w — TEK BİLEŞEN (Harun, 26 Ekim 00:57: "bir yazı kutucuğunu değiştirdiğimizde tüm kutucuklar, yazı
   karakterini değiştirdiğimizde tüm sayfalar, tarih seçme kutusu değiştiğinde her yerdeki tarih kutuları,
   XML / Excel düğmesi değiştiğinde her yerdeki düğmeler değişecek")

   Yeni ekran yalnız bu parçalarla kurulur; sayfaya özel düğme / alan / açılır sınıfı icat edilmez.
     yazı      :root --yazi (body)                       — tek yazı karakteri
     alan      input (text, tel, e-posta, şifre, sayı, tarih, ay, arama, url), select, textarea — sınıfsız
     tarih     .tarih-alan (tarih.css)                    — her yerde aynı
     düğme     button / a.dugme = ana · .ikincil · .kucuk-dugme (satır içi)
     açılır    details.acilir > summary (ikincil düğme görünümü) + içerik .acilir-ic
     kutu      .kutu > .kutu-bas (h2 + .aciklama solda, .kutu-eylem sağda)
     form      .form-satir (alanlar + ana düğme aynı satırda)
     özet      dl.ozet (etiket solda, değer sağda)
   =================================================================== */
:root { --yazi: "GH Panel Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; }
body { font-family: var(--yazi); }
:where(input, select, textarea, button) { font-family: inherit; }

/* Alan: tel ve url, metin kutusuyla birebir aynı (Telefonlar'daki kutu farklı görünüyordu). */
input[type="tel"], input[type="url"] {
  width: 100%; height: var(--boy); padding: 0.4rem 0.55rem; margin-bottom: 0.7rem; box-sizing: border-box; line-height: 1.2;
  border: 1px solid var(--cizgi); border-radius: var(--kose-s); background: var(--yuzey); color: inherit; font: inherit; font-size: 0.9rem;
}
input[type="tel"]:focus, input[type="url"]:focus { outline: 2px solid var(--lacivert); outline-offset: -1px; border-color: var(--lacivert); }
td :is(input[type="tel"], input[type="password"]) { height: var(--boy-k); padding-top: 0; padding-bottom: 0; font-size: 0.85rem; }

/* Düğme: bağlantı da olsa aynı düğme (a.dugme). */
a.dugme {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem;
  height: var(--boy); padding: 0 0.95rem; box-sizing: border-box; vertical-align: middle;
  border: 1px solid var(--lacivert); border-radius: var(--kose-s); background: var(--lacivert); color: #fff;
  font-size: 0.88rem; font-weight: 550; line-height: 1.2; text-decoration: none; white-space: nowrap;
}
a.dugme:hover { filter: brightness(1.12); color: #fff; }
:is(a.dugme, button).ikincil { background: var(--yuzey); color: var(--lacivert); border-color: var(--lacivert); }
:is(a.dugme, button).ikincil:hover:not([disabled]) { background: var(--mavi-a); color: var(--lacivert); filter: none; }
a.dugme.kucuk-dugme { height: var(--boy-k); padding: 0 0.55rem; font-size: 0.78rem; font-weight: 500; }
a.dugme[aria-disabled="true"] { opacity: 0.45; pointer-events: none; }

/* Açılır: içerik paneli (.yukle-ic ile aynı), küçük boy satır içinde. */
.acilir-ic { display: flex; flex-direction: column; gap: 0.6rem; padding: 0.6rem 0.7rem; margin-top: 0.3rem;
  border: 1px solid var(--cizgi); border-radius: var(--kose-s); background: var(--yuzey); font-size: 0.85rem; }
.acilir-ic > p { margin: 0; }
html body details.acilir.kucuk > summary { height: var(--boy-k); padding: 0 0.55rem; font-size: 0.78rem; font-weight: 500; }

/* Kutu başlığı: başlık + açıklama solda, eylem düğmeleri sağda aynı satırda. */
.kutu-bas:has(> .kutu-eylem) { align-items: center; margin-bottom: 0.4rem; }
.kutu-bas-sol { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.kutu-eylem { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-left: auto; }
.kutu-eylem form { margin: 0; }
.kutu-eylem > :is(button, a.dugme, form > button) { height: var(--boy); padding-top: 0; padding-bottom: 0; }

/* Form satırı: alanlar esner, düğmeler (.form-dugmeler) son sırada yan yana — alta sarkmaz. */
.form-satir > .form-dugmeler { display: flex; gap: 0.5rem; align-items: center; flex: 0 0 auto; }
.acilir-ic.form-satir { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.form-satir > :is(input, select) { margin: 0; }
.form-satir > input { flex: 1 1 9rem; width: auto; min-width: 0; }
.form-satir > input.dar { flex: 0 1 10rem; }

/* Özet: etiket solda, değer sağda — alt alta uzayan liste yok. */
dl.ozet { display: grid; grid-template-columns: max-content 1fr; gap: 0.35rem 1.25rem; align-items: baseline; margin: 0.3rem 0 0; }
dl.ozet dt { margin: 0; font-size: 0.82rem; color: var(--soluk); }
dl.ozet dd { margin: 0; }

@media (max-width: 640px) {
  .kutu-eylem { margin-left: 0; width: 100%; }
  .kutu-eylem > :is(button, a.dugme, form) { flex: 1 1 auto; }
  .kutu-eylem form > button { width: 100%; }
}
/* Tutar hücresi bölünmez ("6.000,00" ile "₺" ayrı satıra düşmesin). */
td.sayi { white-space: nowrap; }

/* faz47w — SIK TABLO (TEK BİLEŞEN): kutu içinde az yer kaplayan liste (mükellef kartı, özet tabloları).
   Satır --boy-k yüksekliğinde, yazı küçük. Yeni ekranda "kocaman tablo" yerine bu kullanılır. */
table.sik { font-size: 0.82rem; margin-top: 0.4rem; }
table.sik :is(th, td) { padding: 0.28rem 0.5rem; height: var(--boy-k); box-sizing: border-box; }
table.sik th { font-size: 0.72rem; }
table.sik .rozet { font-size: 0.7rem; }
/* Özet satırı yan yana (Toplam · Ödenen · Kalan) */
dl.ozet.mk-tk-ozet { grid-template-columns: repeat(3, max-content max-content); gap: 0.2rem 0.6rem; }
dl.ozet.mk-tk-ozet dd { margin-right: 1rem; }
.mk-tk-eski { margin-top: 0.5rem; }
@media (max-width: 640px) { dl.ozet.mk-tk-ozet { grid-template-columns: max-content 1fr; } }
dl.ozet.mk-tk-ozet dd { font-size: 0.92rem; }

/* ===================================================================
   faz47w — ÖLÇÜ ANAHTARLARI (Harun, 26 Ekim 01:06: "tüm sitede butonlar hâlâ çok büyük")
   Bütün düğme / alan boyu ve düğme yazısı buradaki dört değerden gelir; bir yerde değişir, her yerde değişir.
   =================================================================== */
:root {
  --boy: 1.9rem;         /* içerik: alan, seçim kutusu, düğme */
  --boy-arac: 1.75rem;   /* sayfa başı araç çubuğu */
  --boy-k: 1.55rem;      /* tablo satırı: küçük düğme, satır içi alan */
  --dugme-yazi: 0.8rem;  /* düğme yazısı */
  --dugme-ic: 0.7rem;    /* düğmenin yan iç boşluğu */
  --alan-yazi: 0.85rem;  /* alan yazısı */
}
button, a.dugme, html body :is(.fa-dugme, a.fa-dugme, .fa-form-alt button, .ast-ekle-alt button, .gv-dugmeler button,
  .edk-ekran .edk-ayar button.edk-kaydet, .gib-ana-dugme, .arizi-getir-form button.arizi-getir),
html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir) > summary {
  font-size: var(--dugme-yazi); padding-left: var(--dugme-ic); padding-right: var(--dugme-ic);
}
button.ikincil, .kutu button:is(:not([class]), .ikincil, .tehlike):not(td *):not(.kucuk-dugme) {
  font-size: var(--dugme-yazi); padding-left: var(--dugme-ic); padding-right: var(--dugme-ic);
}
.kucuk-dugme, button.kucuk-dugme, a.dugme.kucuk-dugme, html body details.acilir.kucuk > summary { font-size: 0.74rem; padding-left: 0.5rem; padding-right: 0.5rem; }
input[type="text"], input[type="email"], input[type="password"], input[type="search"], input[type="number"],
input[type="date"], input[type="month"], input[type="tel"], input[type="url"], select { font-size: var(--alan-yazi); }
.giris-kutu button { font-size: 0.9rem; }
.mk-tel-duzen { margin-left: auto; }
.mk-tel-kime { flex: 1 1 10rem; }
.mk-kunye-duzen { margin-top: 0.5rem; }
.mk-kunye-duzen .acilir-ic > input.mk-kny-adres, .mk-kunye-duzen .acilir-ic > input.mk-kny-faaliyet { flex: 1 1 100%; }
.mk-gb-bolum { padding: 0.4rem 0 0.6rem; border-bottom: 1px solid var(--cizgi); }
.mk-gb-bolum:last-of-type { border-bottom: 0; }
.mk-gb-bas { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 1rem; }
.mk-gb-bas h3 { margin: 0; font-size: 0.86rem; font-weight: 650; }
.mk-gb-bolum .mk-sgkg-ekle { margin-top: 0.4rem; }
.mk-gb-bas > .kutu-eylem { margin-left: auto; }
.mk-gb-bas > details.mk-sgkg-ekle { margin-top: 0; }
.mk-sgkg-ad { font-size: 0.86rem; }
.ydk-arsiv-tur select { width: auto; min-width: 9rem; margin: 0; }

/* ===================================================================
   faz47x — AÇILIR = SÜZÜLEN PANEL, YAZI BOYU (Harun, 26 Ekim 01:46: "XML'e tıklayınca menü aşağı doğru zıplıyor;
   o açılır ok muhabbetini hiçbir yerde sevmedim; Ekle deyince saçma sapan bir text kutusu beliriyor;
   tüm panelin yazı karakterleri çok büyük")

   · Bütün ölçüler rem: kök yazı boyu tek yerden (html 14px) — her şey birlikte küçülür.
   · Açılır düğmelerde ok yok. Açılan içerik sayfayı aşağı itmez: düğmenin altında, içeriğin üstünde süzülen
     gölgeli kutu (sağa taşacaksa sağa hizalanır). Dışarı tıklayınca ya da Esc ile kapanır, aynı anda bir tane açık
     (panel.js). Tablo hücresindeki açılırlar yerinde açılır (kaydırma kutusu kesmesin).
   =================================================================== */
/* faz48b (Harun 26 Ekim 10:21: "dün MacBook Air'de çok iyi görünüyordu, ofiste büyük ekranda her şey çok küçük — açılan ekrana
   göre adapte edemez miyiz"): kök yazı boyu ekran genişliğine göre — 1536 px'e kadar 14 px (MacBook ölçüsü), daha geniş
   ekranda orantılı büyür (1920 ≈ 15.7, 2560 ≈ 18.6), en çok 19 px. Bütün rem ölçüler (düğme, kutu, boşluk) birlikte büyür.
   Görünüm › Yazı (Küçük / Otomatik / Büyük) cihaz başına bir kat ekler (tema.js, data-yazi). */
:root { --yazi-kat: 1; }
:root[data-yazi="kucuk"] { --yazi-kat: 0.9; }
:root[data-yazi="buyuk"] { --yazi-kat: 1.12; }
html { font-size: calc(clamp(14px, calc(14px + (100vw - 1536px) * 0.0045), 19px) * var(--yazi-kat)); }
:root { --olcu: 1rem; }

html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir) > summary::before { content: none; display: none; }
html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir)[open] > summary { background: var(--mavi-a); }

:is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir):not(td *) { position: relative; }
:is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir):not(td *)[open] > :not(summary) {
  position: absolute; z-index: 70; top: calc(100% + 0.35rem); left: 0; right: auto;
  width: max-content; min-width: 18rem; max-width: min(40rem, calc(100vw - 2rem));
  margin: 0; padding: 0.8rem 0.9rem; box-sizing: border-box;
  background: var(--yuzey); border: 1px solid var(--cizgi); border-radius: var(--kose);
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.16), 0 2px 6px rgba(15, 23, 42, 0.08);
}
:is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir):not(td *).sag[open] > :not(summary) { left: auto; right: 0; }
/* İçerideki form: alanlar iki sütun, düğmeler sağ altta. */
:is(details.acilir, details.fa-xml-ac):not(td *)[open] > form.form-satir { width: min(34rem, calc(100vw - 2rem)); }
:is(details.acilir, details.fa-xml-ac):not(td *)[open] > form.form-satir > input { flex: 1 1 calc(50% - 0.5rem); }
:is(details.acilir, details.fa-xml-ac):not(td *)[open] > form.form-satir > .form-dugmeler { flex: 1 1 100%; justify-content: flex-end; }
.mk-kunye-duzen .acilir-ic > input.mk-kny-adres, .mk-kunye-duzen .acilir-ic > input.mk-kny-faaliyet { flex-basis: 100%; }
/* Panel kutusunun eski iç çerçevesi (yukle-ic / acilir-ic) süzülen kutuda tekrar etmesin. */
:is(details.acilir, details.fa-xml-ac):not(td *)[open] > :is(.acilir-ic, .yukle-ic) { margin-top: 0; }
/* faz47x — Giriş bilgileri: her kayıt tek satır (sistem adı | kayıt | düğmeler). */
.mk-gb-bolum { padding: 0; }
.mk-gb-satir { display: grid; grid-template-columns: 15rem minmax(0, 1fr) auto; align-items: center; gap: 0.4rem 1rem; padding: 0.4rem 0; }
.mk-gb-satir + .mk-gb-satir { padding-top: 0; }
.mk-gb-satir h3 { margin: 0; font-size: 0.86rem; font-weight: 650; }
.mk-gb-kayit { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.2rem 0.6rem; min-width: 0; }
.mk-gb-eylem { display: flex; align-items: center; justify-content: flex-end; gap: 0.4rem; }
.mk-gb-eylem form[hidden] { display: none; }
@media (max-width: 640px) {
  .mk-gb-satir { grid-template-columns: 1fr; }
  .mk-gb-eylem { justify-content: flex-start; flex-wrap: wrap; }
}
/* faz47y (Harun 01:56 "XML yine aşağıya zıpladı"): eski kural (.bk-ac[open] display:block, .fa-xml-ac[open] order:9) açılınca
   düğmeyi yeni satıra atıyordu. İçeriği olan, hücre dışındaki açılır yerinde kalır; içerik süzülür. */
html body :is(details.bk-ac, details.fa-xml-ac, details.kd-araclar, details.acilir):not(td *):has(> :not(summary))[open] {
  display: inline-block !important; margin: 0; padding: 0; background: none; border: 0; border-radius: 0; flex-basis: auto; order: 0;
}

/* ===================================================================
   faz47y — AÇILIR STANDARDI: HİÇBİR YERDE OK YOK (Harun, 26 Ekim 01:57: "GİB İndirme'deki açılır ok menü yine kalmış;
   bir yerde değiştiyse her yerde değişecek dedik")
   Bütün <details> başlıkları tek kurala bağlı: tarayıcının üçgeni ve sayfaların kendi ▸ / ⌄ / döndürülen ok
   işaretleri kapalı. Açılır düğme = details.acilir (ikincil düğme görünümü, süzülen kutu); bölüm katlama = başlık yazısı
   (üzerine gelince lacivert). Yeni ekranda başka açılır işareti yazılmaz.
   =================================================================== */
summary { list-style: none; cursor: pointer; }
summary::-webkit-details-marker { display: none; }
summary::marker { content: ""; }
html body :is(.edm-not, details.ilerleme-kart, details.sutun-serit, details.ast-acilir) > summary::before,
html body .fd-cikar summary::before { content: none; display: none; }
:where(details:not(.acilir):not(.bk-ac):not(.fa-xml-ac):not(.kd-araclar)) > summary:hover { color: var(--lacivert); }
/* Kutu / açılır içindeki ızgara içerik kadar uzar (tam ekran ızgaranın 24rem alt sınırı burada boşluk bırakıyordu). */
:is(.kutu, details) .izgara-sar { min-height: 0; height: auto; }

/* faz47y (Harun 26 Ekim 02:00: "EBRU SERGÜL ve NİLÜFER yazısındaki font panel geneline uygun mu? biraz daha toparla"):
   kart içi değerler tablo hücreleriyle aynı boy — özet değerleri, telefon numarası / kime ait, giriş kaydı. */
dl.ozet dd, dl.ozet.mk-tk-ozet dd { font-size: 0.88rem; font-weight: 500; }
dl.ozet dt { font-size: 0.8rem; }
.mk-tel-liste li { padding: 0.25rem 0; }
.mk-tel-no { font-size: 0.88rem; font-weight: 600; min-width: 8rem; }
.mk-tel-kime { font-size: 0.85rem; }
.mk-gb-satir h3, .mk-sgkg-ad { font-size: 0.85rem; }
.mk-gb-eylem details { margin: 0 !important; }

/* faz47y — DURUM ROZETİ: Beyannameler ızgarasındaki durum renkleri küçük rozet olarak (mükellef kartı vb.).
   Renk tek yerden: .cubuk-parca ile aynı --parca değişkeni (ilerleme çubuğu). */
.durum-rozet { display: inline-block; padding: 0.08rem 0.5rem; border-radius: var(--kose-s); background: var(--parca, var(--soluk));
  color: #fff; font-size: 0.72rem; font-weight: 600; line-height: 1.4; white-space: nowrap; vertical-align: middle; }
.durum-rozet:is(.d-hazir, .d-geldi, .d-bordro, .d-mahsup, .d-aktarildi, .d-sistemde, .d-dizildi, .d-diger, .d-bos-evrak) { color: #1f2937; }
.mk-beyan-liste { list-style: none; margin: 0.3rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.4rem 1.4rem; }
.mk-beyan-liste li { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.85rem; }
.mk-beyan-tur { font-weight: 600; }
.mk-gb-kimlik { display: inline-flex; align-items: center; gap: 0.3rem; margin-right: 0.8rem; font-size: 0.85rem; }
/* faz48b: Görünüm kutusunun son satırı artık Yazı */
html body #siklik-secici { border-bottom: 0; border-radius: 0; padding-bottom: 0; margin-bottom: 0; }
html body #yazi-secici { border-bottom: 1px solid var(--yan-kenar); border-radius: 0 0 12px 12px; padding-bottom: 10px; margin-bottom: 8px; }

/* faz48b — Kenar menü de ekranla büyüsün. Menü kendi ölçüsünü px ile taşıyor (14px, bilerek); geniş ekranda gövde yazısıyla
   aynı oranda büyütülür (zoom). Basamaklar kök yazı boyu formülüyle aynı: 14 + (genişlik − 1536) × 0.0045 px → oran / 14. */
:root { --yan-olcek: 1; }
@media (min-width: 1700px) { :root { --yan-olcek: 1.05; } }
@media (min-width: 1900px) { :root { --yan-olcek: 1.12; } }
@media (min-width: 2100px) { :root { --yan-olcek: 1.18; } }
@media (min-width: 2300px) { :root { --yan-olcek: 1.25; } }
@media (min-width: 2500px) { :root { --yan-olcek: 1.31; } }
@media (min-width: 2640px) { :root { --yan-olcek: 1.35; } }
:root { --yan-z: calc(var(--yan-olcek) * var(--yazi-kat)); --yan-g: calc(222px * var(--yan-z)); }
html body.panel > .yan { zoom: var(--yan-z); height: calc(100vh / var(--yan-z)) !important; }
@media (max-width: 900px) { html body.panel > .yan { zoom: 1; } }

/* faz48d — Ödemeler: takip dışı (ödemesini bize göndermeyen) satır soluk; Takibe al / Çıkar satırın kendi hücresinde. */
table.od-ozet tr.od-takip-disi > td:not(.od-hepsi-hucre) { opacity: .5; }
table.od-ozet td.od-hepsi-hucre .kucuk-dugme + .kucuk-dugme,
table.od-ozet td.od-hepsi-hucre .od-hepsi + .kucuk-dugme { margin-left: 4px; }

/* faz48e — Ödemeler: ödenen hücre nokta yerine Beyannameler'deki gibi dolu renk (Harun 26 Ekim 15:52: "daha görünür").
   Renkler Beyannameler'in durum paletinden: Ödendi = Onaylandı yeşili, Kendisi ödedi = kontrol mavisi. Kısmen = açık yeşil.
   Hem satırdaki tutar hücresi hem ⋯ ayrıntısındaki kalem durumu (tek bileşen). */
table.od-ozet td.od-k:is(.o-odendi, .o-kendisi, .o-kismen) .od-nokta { display: none; }
table.od-ozet td.od-k.o-odendi button.od-hucre  { background: #17693a; color: #fff; font-weight: 600; border-color: transparent; }
table.od-ozet td.od-k.o-kendisi button.od-hucre { background: #6a92d4; color: #fff; font-weight: 600; border-color: transparent; }
table.od-ozet td.od-k.o-kismen button.od-hucre  { background: #c5ecc9; color: #17693a; font-weight: 600; border-color: transparent; }
table.od-ozet td.od-k.o-odemeyecek button.od-hucre { background: #ececed; border-color: transparent; }
table.od-ozet td.od-k:is(.o-odendi, .o-kendisi, .o-kismen, .o-odemeyecek) button.od-hucre:hover,
table.od-ozet td.od-k.od-secili:is(.o-odendi, .o-kendisi, .o-kismen, .o-odemeyecek) button.od-hucre { filter: brightness(.93); border-color: transparent; }
table.od-ozet td.od-k.o-odendi.od-gecti button.od-hucre,
table.od-ozet td.od-k.o-kendisi.od-gecti button.od-hucre { color: #fff; }

/* faz48h — SIRALANABİLİR TABLO başlığı (tek bileşen, panel.js): tıklanabilir; sıralı sütun lacivert + küçük yön işareti. */
table.siralanabilir thead th[data-sirala] { cursor: pointer; user-select: none; }
table.siralanabilir thead th[data-sirala]:hover { color: var(--lacivert); }
table.siralanabilir thead th[data-yon] { color: var(--lacivert); }
table.siralanabilir thead th[data-yon="azalan"]::after { content: " ↓"; font-weight: 700; }
table.siralanabilir thead th[data-yon="artan"]::after { content: " ↑"; font-weight: 700; }

/* faz48k — Ödemeler alt toplam satırı: ızgaranın altında yapışık, kalın rakam, ince üst çizgi. */
table.od-ozet tfoot tr.od-toplam > * { position: sticky; bottom: 0; z-index: 2; background: var(--yuzey-2, #f4f6f9);
  border-top: 2px solid var(--cizgi); font-weight: 700; white-space: nowrap; padding-top: 6px; padding-bottom: 6px; }
table.od-ozet tfoot tr.od-toplam th.ad-hucre { text-align: left; font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; }
table.od-ozet tfoot tr.od-toplam th.ad-hucre .soluk { text-transform: none; letter-spacing: 0; font-weight: 400; }
table.od-ozet tfoot tr.od-toplam td.tka-k { padding-right: 8px; }

/* faz48x: KDV Kontrol "Belgeyi aç" bağlantısı düğme görünümünde (kd-dugme). */
a.kd-dugme {
  display: inline-block;
  text-decoration: none;
  line-height: 1.6;
  margin: 0 0.3rem;
}

/* faz48y: Bankalar tablosunda "Ekstre iste · gg.aa–gg.aa" (bakiye tutmuyor satırı). */
.bk-st-iste { margin: 0.25rem 0 0; }
.bk-st-iste button { width: auto; }

/* faz48y: Banka › Ekstre isteği WhatsApp seçenekleri (numara / Kişi seç / Paylaş / + Telefon ekle). */
.bk-wa-secenek { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.bk-wa-secenek .kucuk-dugme { width: auto; }
.bk-wa-secenek .bld-tel summary { cursor: pointer; font-size: 0.85rem; color: var(--ikincil); list-style: none; }
.bk-wa-secenek .bld-tel summary::-webkit-details-marker { display: none; }
.bk-tel-form { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.4rem; align-items: center; }
.bk-tel-form input { width: 11rem; margin: 0; }
.bk-tel-form input[name=kime] { min-width: 14rem; }
.bk-tel-form button { width: auto; }

/* faz49c / faz49d: KDV Kontrol Not sütunu — ekrana göre genişlik, TEK satır, kalem (✎) ile not yan yana, sola dayalı;
   kesilen hücre (Not, Satıcı, hesap adı …) tıklanınca tamamı süzülen kutuda (kdv-not.js). Evrak numarası belgeyi açar. */
/* faz49e (Harun: "not daha da kısalarak alttaki çubuğu yok edebilir; gerekirse not büyür"): sabit genişlik yok — boş notta
   sütun kalem kadar, yazılı notta en çok clamp(8rem, 14vw, 24rem); tablo ekrana sığsın, yatay çubuk çıkmasın. */
table.kdv-detay td.kd-not-hucre { text-align: left; white-space: nowrap; }
table.kdv-detay th.kd-not-bas { width: 1%; }
table.kdv-detay td.kd-not-hucre .kd-not { display: inline; margin: 0; }
table.kdv-detay td.kd-not-hucre .kd-not > summary { display: inline-flex; vertical-align: middle; }
.kd-not-ic {
  display: inline-block; vertical-align: middle; max-width: clamp(8rem, 14vw, 24rem);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.kd-not-ic:empty { display: none; }
table.kdv-detay td.kd-kesik { cursor: pointer; }
table.kdv-detay td.kd-kesik:hover { color: var(--lacivert); }
.kd-not-acik {
  position: absolute; z-index: 9990; max-width: min(36rem, calc(100vw - 16px));
  background: var(--yuzey); border: 1px solid var(--cizgi); border-radius: 6px; box-shadow: 0 8px 28px rgba(0, 0, 0, .18);
  padding: 0.5rem 0.7rem; font-size: 0.8rem; line-height: 1.45; color: var(--murekkep); white-space: normal;
}
a.kd-evrak-bag { color: inherit; text-decoration: none; }
a.kd-evrak-bag:hover { color: var(--lacivert); text-decoration: underline; }
/* faz49e (Harun: "alttaki çubuk çıkmasın; çözünürlük müsaade ediyorsa sütunlar ihtiyacı kadar açılsın"): satıcı ve hesap
   adları ekrana göre — dar ekranda 9rem, geniş ekranda 22rem'e kadar; kesilen ad tıklanınca tamamı (kdv-not.js). */
body.panel > main.izgara-ekran table.izgara.kdv-detay td.ad-hucre { max-width: clamp(9rem, 15vw, 22rem); }
/* faz49f (Harun: "hâlâ altta sağ-sol çubuk çıkıyor, ekrana sığmıyor"): tablo ekran genişliğinde; ad sütunları (satıcı, hesap
   adları) ve Not kalan yeri paylaşır, sığmayan "…" ile kesilir (tıklayınca tamamı — kdv-not.js). max-width: 0 + yüzde
   genişlik, tablonun içeriğe göre büyümesini engelleyen bilinen yol. Çok sütun açılırsa sayılar sığmazsa çubuk yine çıkar. */
body.panel > main.izgara-ekran table.izgara.kdv-detay { width: 100%; min-width: 0; }
body.panel > main.izgara-ekran table.izgara.kdv-detay td.ad-hucre { max-width: 0; width: 18%; min-width: 6rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-not-hucre { max-width: 0; width: 12%; min-width: 2.5rem; overflow: hidden; }
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-not-hucre .kd-not-ic { max-width: calc(100% - 1.4rem); }
/* faz49f: kalem (✎) ile not aynı satırda — details satır içi olamadığı için sola yüzdürülür; not kalan genişliği alır. */
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-not-hucre .kd-not { display: block; float: left; margin: 0 0.3rem 0 0; }
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-not-hucre .kd-not[open] { float: none; }
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-not-hucre .kd-not-ic { display: block; max-width: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.panel > main.izgara-ekran table.izgara.kdv-detay td.ad-hucre { width: 16%; }
body.panel > main.izgara-ekran table.izgara.kdv-detay td.kd-not-hucre { width: 16%; }

/* =====================================================================
   faz49g — EKRAN DÜZENİ (Harun 27 Ekim: "şu düzen çok önemli"):
   1. satır her ekranda ortak (menü · geri/ileri · başlık · müşavir),
   2. satır kullanım ayarları (dönem, yön, kaynak, Sütunlar, ?, sayaç, tam ekran — .ust-araclar),
   3. satır yalnız o ekrana özel eylem düğmeleri (sayfanın kendisinde).
   Sayfa 2. satıra yer koymak isterse [data-ust-ayar] işaretli öğe panel.js ile buraya taşınır.
   ===================================================================== */
.arac .ust-araclar { order: 3; flex-basis: 100%; }
.arac .ust-araclar > .sayac { margin-left: auto; }
.arac .ust-araclar > .tam-dug { margin-left: auto; }
.arac .ust-araclar > .sayac ~ .tam-dug { margin-left: 0; }

/* =====================================================================
   faz49i — BAŞLIK SATIRI BAĞLAMI: firma seçici (lib/firma_secici.php) + dönem.
   Açılır menü (arama + son kullanılanlar + bu ekrandaki firmalar), yanında "Tüm firmalar".
   ===================================================================== */
.arac .firma-secici { display: inline-flex; align-items: center; gap: 0.35rem; }
.arac .baslik-donem { display: inline-flex; align-items: center; }
html body .arac .firma-secici details.fs-kutu > summary.fs-dug {
  height: var(--boy-arac); max-width: 22rem; padding: 0 0.6rem; gap: 0.4rem; display: inline-flex; align-items: center;
  border: 1px solid var(--cizgi); background: var(--yuzey); color: var(--ikincil); font-size: 0.84rem; font-weight: 500; border-radius: var(--kose-s);
}
html body .arac .firma-secici details.fs-kutu > summary.fs-dug.dolu { background: var(--mavi-a); border-color: #bcd3ee; color: var(--lacivert); font-weight: 650; }
.firma-secici .fs-ik { width: 15px; height: 15px; flex: none; }
.firma-secici .fs-secili { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.firma-secici .fs-tum {
  display: inline-flex; align-items: center; height: var(--boy-arac); padding: 0 0.7rem; border: 1px solid var(--cizgi);
  border-radius: var(--kose-s); background: var(--yuzey); color: var(--ikincil); font-size: 0.82rem; text-decoration: none; white-space: nowrap;
}
.firma-secici .fs-tum:hover { background: var(--mavi-a); color: var(--lacivert); }
.firma-secici .fs-tum.secili { background: var(--mavi-a); border-color: #bcd3ee; color: var(--lacivert); font-weight: 600; }
.firma-secici .fs-ic { width: min(24rem, calc(100vw - 2rem)); padding: 0; text-align: left; }
.firma-secici .fs-ara { padding: 0.5rem 0.55rem; border-bottom: 1px solid var(--cizgi); }
.firma-secici .fs-ara input { width: 100%; margin: 0; }
.firma-secici .fs-liste { max-height: min(60vh, 26rem); overflow-y: auto; padding-bottom: 0.25rem; }
.firma-secici .fs-bas { padding: 0.5rem 0.8rem 0.2rem; font-size: 0.64rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--soluk); }
.firma-secici .fs-oge { display: flex; justify-content: space-between; gap: 0.6rem; padding: 0.42rem 0.8rem; color: var(--murekkep); text-decoration: none; font-size: 0.82rem; }
.firma-secici .fs-oge:hover { background: var(--mavi-a); color: var(--lacivert); }
.firma-secici .fs-oge.secili { background: var(--mavi-a); color: var(--lacivert); font-weight: 600; }
.firma-secici .fs-ad { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.firma-secici .fs-alt { color: var(--soluk); font-size: 0.72rem; flex: none; }
.firma-secici .fs-bos { padding: 0.5rem 0.8rem; color: var(--soluk); font-size: 0.8rem; }
.firma-secici .fs-oge[hidden], .firma-secici .fs-bas[hidden], .firma-secici .fs-bos[hidden] { display: none; }

/* =====================================================================
   faz49k — İŞLEM ÇUBUĞU (3. satır) — Harun 27 Ekim 22:26: "3. satır butonları sürekli kullanılacak, özellikli olmalı,
   her sayfada tutarlı olmalı; YZ ile Oku her sayfada aynı tasarımda ama havalı; bazıları önemli olduğu için renkli
   (Temizle gibi); 3. sıra daha görünür olmalı."
   Kullanım: kap .islem-cubugu; düğme .islem-dugme + tür: .i-yukle (XML / PDF / Resim / Yevmiye Ekle), .i-yz (YZ ile Oku),
   .i-kopru (Köprü), .i-tablo (Mizan), .i-indir (indirme), .i-ayrinti, .i-excel (yalnız simge), .i-uyari (toplu işaret),
   .i-tehlike (Dönemi Temizle). Simge türden gelir (ayrıca .ik-xml / .ik-pdf / .ik-resim / .ik-tablo verilebilir).
   Aynı tür her ekranda aynı renk ve simge.
   ===================================================================== */
.islem-cubugu {
  display: flex; flex-wrap: wrap; align-items: center; gap: 0.45rem 0.5rem;
  padding: 0.5rem 0.65rem; margin: 0 0 0.55rem;
  background: var(--yuzey); border: 1px solid var(--cizgi); border-radius: var(--kose);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 2px 8px rgba(16, 24, 40, .04);
}
html body .islem-cubugu .islem-dugme.islem-dugme,
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme {
  display: inline-flex; align-items: center; gap: 0.4rem; width: auto; height: 2rem; margin: 0; padding: 0 0.8rem;
  box-sizing: border-box; border: 1px solid var(--cizgi); border-radius: 8px; background: var(--yuzey);
  color: var(--murekkep); font: inherit; font-size: 0.8rem; font-weight: 600; line-height: 1; letter-spacing: .005em;
  text-decoration: none; white-space: nowrap; cursor: pointer; box-shadow: none;
  transition: background .12s, border-color .12s, color .12s, box-shadow .12s, transform .06s;
}
html body .islem-cubugu .islem-dugme.islem-dugme:hover,
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme:hover { border-color: #b9c8db; background: #f6f9fd; }
html body .islem-cubugu .islem-dugme.islem-dugme:active { transform: translateY(1px); }
.islem-dugme::before {
  content: ""; flex: none; width: 15px; height: 15px; background: currentColor;
  -webkit-mask: var(--ik) center / contain no-repeat; mask: var(--ik) center / contain no-repeat;
}
.islem-dugme:not([class*="i-"]):not([class*="ik-"])::before { content: none; }
.islem-dugme.ik-xml { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4.5 1.8 8 5 11.5M11 4.5 14.2 8 11 11.5M9.3 2.8 6.7 13.2'/%3E%3C/svg%3E"); }
.islem-dugme.ik-pdf { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 1.5h6l3 3v10h-9z'/%3E%3Cpath d='M9.5 1.5v3h3M5.5 9h5M5.5 11.5h3.5'/%3E%3C/svg%3E"); }
.islem-dugme.ik-resim { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1.5' y='2.5' width='13' height='11' rx='1.5'/%3E%3Ccircle cx='5.5' cy='6.3' r='1.3'/%3E%3Cpath d='M2 12.5l3.8-3.8 2.9 2.9 2-2 3.3 3.3'/%3E%3C/svg%3E"); }
.islem-dugme.ik-tablo { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1.5' y='2.5' width='13' height='11' rx='1.5'/%3E%3Cpath d='M1.5 6.2h13M6.2 6.2v7.3M10.6 6.2v7.3'/%3E%3C/svg%3E"); }
.islem-dugme.ik-yz { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.2 1.8l1.3 3.6 3.6 1.3-3.6 1.3-1.3 3.6-1.3-3.6L2.3 6.7l3.6-1.3z'/%3E%3Cpath d='M12.5 9.8l.6 1.6 1.6.6-1.6.6-.6 1.6-.6-1.6-1.6-.6 1.6-.6z'/%3E%3C/svg%3E"); }
.islem-dugme.ik-kopru { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13.4 6.2A5.6 5.6 0 0 0 3 4.6M2.6 9.8A5.6 5.6 0 0 0 13 11.4'/%3E%3Cpath d='M3 1.8v2.8h2.8M13 14.2v-2.8h-2.8'/%3E%3C/svg%3E"); }
.islem-dugme.ik-indir { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v8.2M4.6 6.9 8 10.3l3.4-3.4M2.5 13.5h11'/%3E%3C/svg%3E"); }
.islem-dugme.ik-ayrinti { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 4h12M2 8h12M2 12h12'/%3E%3C/svg%3E"); }
.islem-dugme.ik-excel { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 1.5h6l3 3v10h-9z'/%3E%3Cpath d='M9.5 1.5v3h3M5.8 7.6l4.4 4.4M10.2 7.6l-4.4 4.4'/%3E%3C/svg%3E"); }
.islem-dugme.ik-sil { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 4h11M6 4V2.5h4V4M4 4l.7 9.5h6.6L12 4M6.6 6.6v4.6M9.4 6.6v4.6'/%3E%3C/svg%3E"); }
.islem-dugme.ik-isaret { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 8.3 6.2 12 13.5 4.5'/%3E%3C/svg%3E"); }

/* Türler — renk ve varsayılan simge */
.islem-dugme.i-yukle:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 13.5V5.3M4.6 8.6 8 5.2l3.4 3.4M2.5 2.5h11'/%3E%3C/svg%3E"); }
html body .islem-cubugu .islem-dugme.islem-dugme.i-yukle { background: #eef5ff; border-color: #c6dbf6; color: #0b4f99; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-yukle:hover { background: #e1edfd; border-color: #9fc1ec; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-yz {
  background: linear-gradient(135deg, #6a4cff 0%, #3d6bff 55%, #1f8fff 100%); border-color: transparent; color: #fff;
  box-shadow: 0 2px 10px rgba(77, 92, 255, .35);
}
html body .islem-cubugu .islem-dugme.islem-dugme.i-yz:hover { box-shadow: 0 3px 14px rgba(77, 92, 255, .5); filter: brightness(1.06); }
html body .islem-cubugu .islem-dugme.islem-dugme.i-kopru { background: #e9f7f5; border-color: #b7e3dc; color: #0f6f66; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-kopru:hover { background: #dcf2ee; border-color: #8fd2c7; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-uyari { background: #fff7e8; border-color: #f3d9a4; color: #8a5300; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-uyari:hover { background: #ffefd2; border-color: #e9bf6a; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-excel { width: 2rem; padding: 0; justify-content: center; color: #1d6f42; background: #edf7f0; border-color: #c4e3cf; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-excel > svg { display: none; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-tehlike,
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-tehlike { background: #fdeeee; border-color: #f2b8b5; color: #b42318; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-tehlike:hover,
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-tehlike:hover,
html body .islem-cubugu.islem-cubugu details.acilir[open] > summary.islem-dugme.i-tehlike { background: #b42318; border-color: #b42318; color: #fff; }
.islem-dugme .kd-sayi, .islem-dugme .is-sayi {
  display: inline-block; min-width: 1.1rem; padding: 0 0.32rem; border-radius: 0.6rem; background: #d64545; color: #fff;
  font-size: 0.66rem; line-height: 1.1rem; text-align: center; font-weight: 700;
}
.islem-dugme.i-yz .kd-sayi, .islem-dugme.i-yz .is-sayi { background: rgba(255, 255, 255, .28); }
.islem-cubugu .is-ayrac { width: 1px; align-self: stretch; margin: 0.15rem 0.1rem; background: var(--cizgi); }
.islem-dugme.i-yz:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.2 1.8l1.3 3.6 3.6 1.3-3.6 1.3-1.3 3.6-1.3-3.6L2.3 6.7l3.6-1.3z'/%3E%3Cpath d='M12.5 9.8l.6 1.6 1.6.6-1.6.6-.6 1.6-.6-1.6-1.6-.6 1.6-.6z'/%3E%3C/svg%3E"); }
.islem-dugme.i-kopru:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13.4 6.2A5.6 5.6 0 0 0 3 4.6M2.6 9.8A5.6 5.6 0 0 0 13 11.4'/%3E%3Cpath d='M3 1.8v2.8h2.8M13 14.2v-2.8h-2.8'/%3E%3C/svg%3E"); }
.islem-dugme.i-indir:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v8.2M4.6 6.9 8 10.3l3.4-3.4M2.5 13.5h11'/%3E%3C/svg%3E"); }
.islem-dugme.i-ayrinti:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 4h12M2 8h12M2 12h12'/%3E%3C/svg%3E"); }
.islem-dugme.i-excel:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 1.5h6l3 3v10h-9z'/%3E%3Cpath d='M9.5 1.5v3h3M5.8 7.6l4.4 4.4M10.2 7.6l-4.4 4.4'/%3E%3C/svg%3E"); }
.islem-dugme.i-tehlike:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 4h11M6 4V2.5h4V4M4 4l.7 9.5h6.6L12 4M6.6 6.6v4.6M9.4 6.6v4.6'/%3E%3C/svg%3E"); }
.islem-dugme.i-tablo:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1.5' y='2.5' width='13' height='11' rx='1.5'/%3E%3Cpath d='M1.5 6.2h13M6.2 6.2v7.3M10.6 6.2v7.3'/%3E%3C/svg%3E"); }
.islem-dugme.i-uyari:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 8.3 6.2 12 13.5 4.5'/%3E%3C/svg%3E"); }
/* faz49k: açılır başlığı olan işlem düğmesinde de simge (genel "summary::before yok" kuralını aşar); biraz daha sıkı ölçü. */
html body .islem-cubugu.islem-cubugu details > summary.islem-dugme::before {
  content: ""; display: block; flex: none; width: 15px; height: 15px; background: currentColor; transform: none;
  -webkit-mask: var(--ik) center / contain no-repeat; mask: var(--ik) center / contain no-repeat;
}
html body .islem-cubugu .islem-dugme.islem-dugme,
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme { padding: 0 0.68rem; gap: 0.35rem; font-size: 0.79rem; }
/* faz49k (Harun 22:35: "biraz daha büyük olmalı ama çok değil, az daha görünür"). */
html body .islem-cubugu .islem-dugme.islem-dugme,
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme { height: 2.25rem; padding: 0 0.8rem; gap: 0.4rem; font-size: 0.85rem; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-excel { width: 2.25rem; padding: 0; }
.islem-dugme::before, html body .islem-cubugu.islem-cubugu details > summary.islem-dugme::before { width: 16px; height: 16px; }
.islem-cubugu { padding: 0.55rem 0.7rem; gap: 0.5rem 0.55rem; }
.islem-cubugu > .is-sag { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.55rem; margin-left: auto; }
.islem-cubugu > .is-sag > form, .islem-cubugu > .is-sag > details { margin: 0; }
.islem-cubugu > .is-sag > form { display: inline-flex; gap: 0.55rem; }

/* faz49l — İŞLEM ÇUBUĞU ÇÖZÜNÜRLÜĞE UYAR (Harun 22:42: "sığdıramamışsın; çözünürlüğe göre adapte olabilen bir panel istiyorum,
   tüm sayfalarda"). Çubuk tek satıra sığmazsa panel.js sırayla sıkıştırır: s1 daha sıkı ölçü · s2 ikincil düğmeler (Mizan, Köprü,
   indirme, ayrıntılar) yalnız simge · s3 YZ ve Dönemi Temizle dışındakiler yalnız simge · s4 hepsi yalnız simge. Simgede yazı
   üzerine gelince görünür (title). Geniş ekranda yazılar tam. */
html body .islem-cubugu.s1 .islem-dugme.islem-dugme,
html body .islem-cubugu.islem-cubugu.s1 details.acilir > summary.islem-dugme { padding: 0 0.55rem; gap: 0.3rem; font-size: 0.8rem; }
.islem-cubugu.s1 { gap: 0.4rem 0.4rem; }
.islem-cubugu.s1 > .is-sag { gap: 0.4rem; }
html body .islem-cubugu:is(.s2, .s3, .s4) .islem-dugme.islem-dugme:is(.i-tablo, .i-kopru, .i-indir, .i-ayrinti, .i-yazdir),
html body .islem-cubugu:is(.s3, .s4) .islem-dugme.islem-dugme:not(.i-yz):not(.i-tehlike):not(.i-ana),
html body .islem-cubugu.s4 .islem-dugme.islem-dugme,
html body .islem-cubugu.islem-cubugu.s4 details.acilir > summary.islem-dugme {
  font-size: 0; gap: 0.25rem; padding: 0 0.55rem; min-width: 2.25rem; justify-content: center;
}
.islem-cubugu .islem-dugme :is(.kd-sayi, .is-sayi) { font-size: 0.66rem; }
/* faz49l — Excel her kademede yalnız simge; Hepsi Fiş / Hepsi Şahsi simgede de ayırt edilsin (Tasarım Sistemi: IslemDugmesi). */
html body .islem-cubugu.islem-cubugu .islem-dugme.islem-dugme.i-excel { font-size: 0; padding: 0; width: 2.25rem; min-width: 2.25rem; }
.islem-dugme.ik-fis { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 1.5h9v13l-1.5-1-1.5 1-1.5-1-1.5 1-1.5-1-1.5 1z'/%3E%3Cpath d='M6 5h4M6 7.8h4M6 10.6h2.5'/%3E%3C/svg%3E"); }
.islem-dugme.ik-sahis { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='5.2' r='2.7'/%3E%3Cpath d='M2.8 14c.6-2.9 2.7-4.4 5.2-4.4s4.6 1.5 5.2 4.4'/%3E%3C/svg%3E"); }

/* faz49l — GÖRÜNÜM SATIRI (2. satır) da çözünürlüğe uyar: tek satıra sığana kadar panel.js s1…s4 ekler.
   s1 sıkı aralık, "Fatura" etiketi gizli · s2 sayaç ve şerit adı gizli (bilgi title'da) · s3 durum çiplerinde yalnız renk
   noktası + sayı · s4 düğmeler de sıkı. Tam Ekran hep satırın sonunda kalır. */
.arac .ust-araclar { flex-wrap: wrap; }
.arac .ust-araclar:is(.s1, .s2, .s3, .s4) { gap: 0.3rem 0.35rem; }
.arac .ust-araclar:is(.s1, .s2, .s3, .s4) .kd-kaynak-ad { display: none; }
.arac .ust-araclar:is(.s2, .s3, .s4) > .sayac,
.arac .ust-araclar:is(.s2, .s3, .s4) .serit-ad { display: none; }
.arac .ust-araclar:is(.s2, .s3, .s4) > .tam-dug { margin-left: auto; }
html body .arac .ust-araclar:is(.s3, .s4) .serit-cip .rozet { font-size: 0; width: 0.62rem; height: 0.62rem; min-width: 0; padding: 0; border-radius: 50%; vertical-align: middle; }
html body .arac .ust-araclar:is(.s3, .s4) .serit-cip { padding-left: 0.45rem; padding-right: 0.45rem; gap: 0.25rem; }
html body .arac .ust-araclar.s4 .donem-dugme { padding-left: 0.45rem; padding-right: 0.45rem; }

/* faz49l — İşlem çubuğuna dört yeni tür (bütün ekranlara geçişte gerekenler):
   .i-ana (ekranın asıl işi: Zirve'ye Aktar, Listeyi Çek — dolu lacivert), .i-ekle (+ Mükellef Ekle, İş Ekle),
   .i-yazdir (Yazdır), .i-gonder (WhatsApp / mesaj gönderme — yeşil). */
.islem-dugme.i-ana:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 8h10.5M8.8 4.2 12.6 8l-3.8 3.8M14 3v10'/%3E%3C/svg%3E"); }
.islem-dugme.i-ekle:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round'%3E%3Cpath d='M8 3v10M3 8h10'/%3E%3C/svg%3E"); }
.islem-dugme.i-yazdir:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 6V1.8h7V6M4.5 11.5h-2a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v3.5a1 1 0 0 1-1 1h-2'/%3E%3Cpath d='M4.5 9.5h7v4.7h-7z'/%3E%3C/svg%3E"); }
.islem-dugme.i-gonder:not([class*='ik-']) { --ik: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 1.5 7 9M14.5 1.5 10 14.5 7 9 1.5 6z'/%3E%3C/svg%3E"); }
html body .islem-cubugu .islem-dugme.islem-dugme.i-ana { background: var(--lacivert); border-color: var(--lacivert); color: #fff; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-ana:hover { background: #014386; border-color: #014386; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-ana :is(.kd-sayi, .is-sayi) { background: rgba(255, 255, 255, .25); }
html body .islem-cubugu .islem-dugme.islem-dugme.i-ekle { color: var(--lacivert); border-color: #bcd3ee; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-gonder { background: #e9f8ef; border-color: #b9e4c9; color: #11743d; }
html body .islem-cubugu .islem-dugme.islem-dugme.i-gonder:hover { background: #dcf3e5; }
/* İşlem çubuğunda düz bilgi yazısı (hedef dönem, seçim sayısı) */
.islem-cubugu .is-bilgi { font-size: 0.8rem; color: var(--soluk); white-space: nowrap; }
.islem-cubugu.s2 .is-bilgi, .islem-cubugu.s3 .is-bilgi, .islem-cubugu.s4 .is-bilgi { display: none; }

/* faz49l — KALFA hücreleri (Ödemeler gibi): düğme + gizli alan. Tek tık menü, çift tık hızlı değer (kalfa-hucre.js). */
table.kf-tablo td.kf-k { padding-top: 2px; padding-bottom: 2px; }
table.kf-tablo td.kf-dar { width: 1%; text-align: center; }
table.kf-tablo button.kf-hucre { display: inline-flex; align-items: center; gap: 6px; width: auto; min-width: 7.5rem; height: auto; margin: 0;
  padding: 3px 8px; font: inherit; font-size: inherit; font-weight: 400; color: var(--murekkep); background: transparent;
  border: 1px solid transparent; border-radius: var(--kose-s); cursor: pointer; white-space: nowrap; font-variant-numeric: tabular-nums; line-height: 1.3; }
table.kf-tablo td.kf-dar button.kf-hucre { min-width: 3.4rem; justify-content: center; color: var(--soluk); }
table.kf-tablo button.kf-hucre:hover, table.kf-tablo td.kf-secili button.kf-hucre { border-color: var(--cizgi); background: var(--yuzey); }
table.kf-tablo button.kf-tarih.bos { color: var(--soluk); }
table.kf-tablo button.kf-bayrak.acik { color: var(--lacivert); background: var(--mavi-a); border-color: #bcd3ee; font-weight: 600; }
table.kf-tablo .od-nokta, .od-menu.kf-menu .od-nokta { display: inline-block; width: 7px; height: 7px; border-radius: 50%; flex: 0 0 7px; background: #c9ccd3; }
table.kf-tablo .k-yuklendi .od-nokta, .od-menu.kf-menu .k-yuklendi .od-nokta { background: var(--onay); }
table.kf-tablo .k-yok .od-nokta, .od-menu.kf-menu .k-yok .od-nokta { background: var(--kehribar); }
table.kf-tablo .k-eski .od-nokta, .od-menu.kf-menu .k-eski .od-nokta { background: #8a8a90; }
table.kf-tablo .k-bos .kf-ad { color: var(--soluk); }
table.kf-tablo td.kaydedildi button.kf-hucre { background: #e9f6ef; border-color: #bfe3cd; }
table.kf-tablo td.kayit-hatasi button.kf-hucre { background: #fdeeee; border-color: #f2b8b5; }
.od-menu button.od-menu-dug { justify-content: flex-start; }
.od-menu.kf-menu input[type=date] { margin: 4px; height: var(--boy-k); }
/* Bilgi notları (?) kutusu — her ekranda */
.kd-bilgi .acilir-ic ul { margin: 0; padding-left: 1rem; font-size: .82rem; max-width: 30rem; display: grid; gap: .3rem; }
/* faz49l — Görünüm satırındaki durum şeridi her ekranda çerçevesiz (KDV'deki kural ortak oldu). */
.ust-araclar > .durum-serit { margin: 0; padding: 0; border: 0; background: none; box-shadow: none; }
.ust-araclar > .durum-serit .serit-ad { display: none; }
html body .ust-araclar > .durum-serit .serit-cip { height: var(--boy-arac); box-sizing: border-box; }
html body .od-menu.kf-menu button.od-menu-dug { justify-content: flex-start !important; text-align: left; }
.islem-cubugu .kd-temizle-ac > .acilir-ic { width: min(26rem, calc(100vw - 2rem)); padding: 0.6rem 0.8rem; text-align: left; font-size: 0.82rem; }
.islem-cubugu .kd-temizle-ac > .acilir-ic form { display: flex; flex-wrap: wrap; gap: 0.45rem; align-items: center; }
.islem-cubugu .kd-temizle-ac > .acilir-ic button { width: auto; }
.islem-cubugu .kd-temizle-ac > .acilir-ic p { margin: 0 0 0.45rem; }

/* =====================================================================
   faz49m — BÜTÜN EKRANLAR YENİ DÜZENE (Harun 27 Ekim 23:32 demoyu onayladı): ortak parçalar.
   ===================================================================== */
/* Görünüm satırında arama kutusu, seçim, onay kutusu */
.arac .ust-araclar input.ust-ara, .arac .ust-araclar input[type="search"] { width: 13rem; height: var(--boy-arac); margin: 0; }
.arac .ust-araclar select { height: var(--boy-arac); width: auto; margin: 0; }
.arac .ust-araclar .ust-onay { display: inline-flex; align-items: center; gap: .35rem; margin: 0; font-size: .8rem; color: var(--ikincil); white-space: nowrap; }
.arac .ust-araclar form { display: inline-flex; align-items: center; gap: .35rem; margin: 0; }
.arac .ust-araclar > .rozet { align-self: center; }
/* İşlem çubuğunda alan / seçim / form */
.islem-cubugu .is-alan, .islem-cubugu input[type="text"], .islem-cubugu input[type="search"] { height: 2.25rem; margin: 0; width: 14rem; }
.islem-cubugu select { height: 2.25rem; margin: 0; width: auto; }
.islem-cubugu > form, .islem-cubugu > .is-sag > form, .islem-cubugu form.is-form { display: inline-flex; align-items: center; gap: .5rem; margin: 0; }
.islem-cubugu > details, .islem-cubugu > .is-sag > details { margin: 0; }
/* İşlem çubuğundaki açılır (yükleme formu vb.) içeriği */
.islem-cubugu details.acilir > .acilir-ic, .islem-cubugu details.acilir > div:not(.acilir-ic) { text-align: left; font-size: .82rem; }
/* İçerik: kutular arası */
main.izgara-ekran > .kutu, main.izgara-ekran > div > .kutu { margin: 0 0 .7rem; }
main.izgara-ekran > .kutucuklar { margin: 0 0 .7rem; }
/* faz49m: işlem çubuğunda açık / seçili anahtar düğme (Ödemeler: Takip Dışı) */
html body .islem-cubugu .islem-dugme.islem-dugme:is(.secili, [aria-pressed="true"]) { box-shadow: inset 0 0 0 1.5px currentColor; font-weight: 700; }
/* faz49m: açılır başlığı olan işlem düğmesi de türünün rengini alsın (genel summary kuralı rengi eziyordu). */
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-yukle { background: #eef5ff; border-color: #c6dbf6; color: #0b4f99; }
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-kopru { background: #e9f7f5; border-color: #b7e3dc; color: #0f6f66; }
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-uyari { background: #fff7e8; border-color: #f3d9a4; color: #8a5300; }
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-gonder { background: #e9f8ef; border-color: #b9e4c9; color: #11743d; }
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-ekle { color: var(--lacivert); border-color: #bcd3ee; }
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-ana { background: var(--lacivert); border-color: var(--lacivert); color: #fff; }
html body .islem-cubugu.islem-cubugu details.acilir > summary.islem-dugme.i-yz { background: linear-gradient(135deg, #6a4cff 0%, #3d6bff 55%, #1f8fff 100%); border-color: transparent; color: #fff; box-shadow: 0 2px 10px rgba(77, 92, 255, .35); }
html body .islem-cubugu.islem-cubugu details.acilir[open] > summary.islem-dugme:not(.i-tehlike) { filter: brightness(0.96); }

/* faz49n — Beyannameler: durum şeridi (KDV / MUHTASAR / Diğer Sütunlar + çipler) işlem çubuğunun başında
   (Harun 28 Ekim 00:07: "en çok kullandığımız bölüm, 3. satır yeri"). Çubuğun boyunda, çerçevesiz. */
.islem-cubugu > .durum-serit { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 0.45rem; margin: 0; padding: 0;
  border: 0; background: none; box-shadow: none; }
.islem-cubugu > .durum-serit .serit-cipler { display: inline-flex; flex-wrap: wrap; gap: 0.4rem; }
html body .islem-cubugu > .durum-serit :is(.serit-cip, .serit-sutun-dugme, select.serit-sutun) { height: 2.25rem; box-sizing: border-box; font-size: 0.85rem; }
html body .islem-cubugu > .durum-serit .serit-sutun-dugme { display: inline-flex; align-items: center; padding: 0 0.85rem; font-weight: 650; }
.islem-cubugu > .durum-serit .serit-sutun-secim { display: inline-flex; gap: 0.4rem; align-items: center; margin-right: 0.3rem; }
/* Dar ekranda çipler yazısız (yalnız renk + sayı) — İşlem çubuğu kademeleri */
html body .islem-cubugu:is(.s3, .s4) > .durum-serit .serit-cip:not(.tumu) { font-size: 0; gap: 0.3rem; }
html body .islem-cubugu:is(.s3, .s4) > .durum-serit .serit-cip b { font-size: 0.85rem; }

/* =====================================================================
   faz49n — ÇİPLER DİKDÖRTGEN (Harun 28 Ekim 00:12: "elips butonları hiç beğenmedim, iç içe elips saçma duruyor, sıkışık;
   kenarları hafif yuvarlatılmış dikdörtgen ve kare olmalı; satırlar arasında çok az bir boşluk olmalı").
   · Durum / süzgeç çipi: hafif yuvarlak dikdörtgen (--kose-s), içindeki durum adı balon değil — renkli küçük kare + yazı.
   · Sayı rozetleri (düğme üstündeki 12, 59): kare köşeli.
   · Satırlar (başlık / görünüm / işlem çubuğu) arasında biraz nefes.
   ===================================================================== */
html body .serit-cip, html body .ust-araclar .cip, html body .durum-serit .serit-cip { border-radius: var(--kose-s); padding-left: 0.6rem; padding-right: 0.6rem; gap: 0.4rem; }
html body .serit-cip .rozet {
  display: inline-flex; align-items: center; gap: 0.35rem; padding: 0; margin: 0; border: 0; border-radius: 0;
  background: none !important; box-shadow: none !important; font-size: inherit; font-weight: 550; line-height: inherit;
}
/* Durumun rengi: rozetin kendi yazı rengi (her ekranın rozet sınıfı ne ise) — küçük kare + aynı renkte yazı. */
html body .serit-cip .rozet::before { content: ""; width: 0.6rem; height: 0.6rem; border-radius: 2px; flex: none; background: currentColor; }
html body .serit-cip .suzgec-renk { border-radius: 2px; }
html body .serit-cip.secili { border-color: var(--lacivert); background: var(--mavi-a); color: var(--lacivert); }
/* Dar ekranda yalnız renk karesi + sayı */
html body .arac .ust-araclar:is(.s3, .s4) .serit-cip .rozet { font-size: 0; width: auto; height: auto; border-radius: 0; }
html body .arac .ust-araclar:is(.s3, .s4) .serit-cip .rozet::before { width: 0.62rem; height: 0.62rem; }
/* Sayı rozetleri kare */
html body .islem-dugme :is(.kd-sayi, .is-sayi), html body .islem-dugme .sayi-rozet { border-radius: 4px; }
/* Satırlar arası */
.arac { row-gap: 0.6rem; }
.arac .ust-araclar { padding-top: 0.15rem; }
main.izgara-ekran > .islem-cubugu:first-child, main > .islem-cubugu:first-child { margin-top: 0.45rem; }
/* Tablodaki durum etiketleri de elips değil hafif yuvarlak dikdörtgen (aynı dil). */
html body .rozet:not(.serit-cip .rozet) { border-radius: 5px; }
html body :is(.cip, .sutun-cip, .tarih-cip) { border-radius: var(--kose-s); }
/* faz49n — Ekrana özel yön düğmeleri (KDV Alış / Satış, Zirve Aktarım ve EDM Gelen / Giden) işlem çubuğunun başında. */
html body .islem-cubugu > nav.donem-gezinme { height: 2.25rem; }
html body .islem-cubugu > nav.donem-gezinme .donem-dugme { height: 2.25rem; padding: 0 0.85rem; font-size: 0.85rem; font-weight: 650; display: inline-flex; align-items: center; }
/* faz49n — "?" bilgi notları her ekranda başlık satırının sağ üst köşesinde (panel.js taşır). */
.arac > details.kd-bilgi.soru-ust { order: 2; margin-left: auto; }
html body .arac > details.kd-bilgi.soru-ust > summary { height: var(--boy-arac); min-width: var(--boy-arac); justify-content: center; padding: 0 0.45rem; font-weight: 700; }
.arac > details.kd-bilgi.soru-ust > :not(summary) { text-align: left; }
