/* EVRAN Servis — PANEL TASARIM SİSTEMİ (üç panelin TEK kaynağı)
 *
 * NEDEN TEK DOSYA: stil önce üç şablonun içinde ayrı ayrı duruyordu. Bir rengi
 * değiştirmek üç yeri güncellemek demekti ve birini unutmak işten değildi —
 * unutulan panel aylarca "biraz farklı" kalırdı. Artık tek kaynak.
 *
 * Şablonlar bunu `?v={{ surum }}` ile yükler: sürüm değişince tarayıcı
 * önbelleği kendiliğinden kırılır (bkz. DURUM 3.83).
 */

/* ===========================================================================
   EVRAN — Kurum (okul) Paneli
   ---------------------------------------------------------------------------
   TASARIM KARARI: bu bir "yönetim paneli şablonu" değil, bir OPERASYON KONSOLU.
   Sayfanın tek işi, sabah 07:45'te telefondaki endişeli veliye tek soruyu
   cevaplatmak: "Çocuğum bindi mi, servis nerede?" Her karar buna hizmet ediyor.

   PALET — ui-ux-pro-max mavi (#1E40AF) öneriyordu; BİLİNÇLİ OLARAK ALINMADI.
   Mobil uygulamanın kimliği siyah + amber olarak seçilmişti; panel de aynı
   kimliği taşımalı, yoksa ürünün iki yarısı iki ayrı ürün gibi görünür.
   Amber metin tonu #B45309 — beyaz üstünde 5.02 (ölçüldü, WCAG AA).

   TİPOGRAFİ — Inter, mobille AYNI (kendi sunucumuzdan, dış bağımlılık yok).
   Karakteri süslü bir başlık yüzünden değil, PRECİSİON'dan geliyor: sayısal
   her alanda tabular rakamlar, sıkı bir ölçek, dar satır aralığı. Zaman baskısı
   altında okunan bir araçta dekoratif başlık yazı tipi gürültüdür.

   İMZA ÖĞE: DURAK ŞERİDİ (.rota-serit). Bir servis hattı doğası gereği bir
   SIRA'dır; numaralandırma burada dekor değil, bilgi. Aracın nerede olduğunu
   tabloyu okumadan gösterir.
   =========================================================================== */

@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;
  src:url("/static/fonts/inter-latin-ext-400-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;
  src:url("/static/fonts/inter-latin-400-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;
  src:url("/static/fonts/inter-latin-ext-600-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;
  src:url("/static/fonts/inter-latin-600-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:swap;
  src:url("/static/fonts/inter-latin-ext-700-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:swap;
  src:url("/static/fonts/inter-latin-700-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  /* Yüzey — açık. Panel gündüz, aydınlık bir okul ofisinde okunuyor;
     koyu tema burada yanlış olurdu (mobil gece de kullanılıyor, o ayrı). */
  --zemin:#f4f5f7; --kart:#ffffff; --kart-2:#fafafa;
  --kenar:#e4e6ea; --kenar-koyu:#d0d3d9;
  /* Mürekkep — mobil paletin Primary'si */
  --ink:#121212; --ink-2:#3f3f46; --soluk:#5f5f68;
  /* Vurgu — mobil paletin Tertiary'si, beyaz üstünde okunur tonu */
  --vurgu:#b45309; --vurgu-parlak:#f59e0b; --vurgu-zemin:#fef6ec;
  /* Semantik */
  --ok:#15803d; --ok-zemin:#eaf6ee; --uyari:#b45309; --uyari-zemin:#fef3c7;
  --hata:#b91c1c; --hata-zemin:#fdeaea; --notr-zemin:#eef0f3;
  /* Ölçek */
  --r:10px; --r-s:7px; --r-pill:999px;
  --golge:0 1px 2px rgba(16,18,22,.06),0 1px 3px rgba(16,18,22,.04);
  --golge-2:0 4px 16px rgba(16,18,22,.08);
  --gecis:150ms cubic-bezier(.2,0,.2,1);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--zemin);color:var(--ink);
  font-family:"Inter",-apple-system,"Segoe UI",Roboto,system-ui,sans-serif;
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
/* Sayısal her yerde tabular: sütunlar kaymasın, göz aşağı tarayabilsin. */
table,.sayi,.rozet,.kpi-deger{font-variant-numeric:tabular-nums}

/* --- BAŞLIK: konsol şeridi ------------------------------------------------ */
header{background:var(--ink);color:#fff;padding:0 18px;height:56px;
  display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:30}
header h1{font-size:14px;margin:0;font-weight:600;letter-spacing:-.01em;
  display:flex;align-items:center;gap:9px}
header h1 .marka{width:8px;height:8px;border-radius:2px;background:var(--vurgu-parlak);
  box-shadow:0 0 0 3px rgba(245,158,11,.18)}
header .surum{font-size:11px;color:#a1a1aa;font-weight:500}
header .sag{margin-left:auto;display:flex;align-items:center;gap:10px}
header .rol{font-size:12px;color:#a1a1aa}
header .rol b{color:#fff;font-weight:600}

/* --- SEKMELER: hap düğmeler ---------------------------------------------- */
nav{background:var(--kart);border-bottom:1px solid var(--kenar);padding:8px 14px;
  display:flex;gap:4px;overflow-x:auto;position:sticky;top:56px;z-index:20}
nav button{background:none;border:none;border-radius:var(--r-pill);
  padding:8px 14px;min-height:38px;cursor:pointer;white-space:nowrap;
  font:inherit;font-size:13px;font-weight:500;color:var(--soluk);
  transition:background var(--gecis),color var(--gecis)}
nav button:hover{background:var(--notr-zemin);color:var(--ink)}
nav button.aktif{background:var(--ink);color:#fff}
nav button:focus-visible{outline:2px solid var(--vurgu);outline-offset:2px}

main{padding:16px 14px 40px;max-width:1180px;margin:0 auto}
.sekme{display:none}.sekme.goster{display:block}

/* --- KART ---------------------------------------------------------------- */
.kart{background:var(--kart);border:1px solid var(--kenar);border-radius:var(--r);
  padding:14px;margin-bottom:12px;box-shadow:var(--golge)}
.kart h2{margin:0 0 10px;font-size:13px;font-weight:600;letter-spacing:.01em;
  text-transform:uppercase;color:var(--soluk)}

/* --- İMZA: DURAK ŞERİDİ --------------------------------------------------
   Bir hat SIRA'dır; numaralandırma bilgi taşıyor, dekor değil. Aracın hangi
   durakları geçtiği tabloyu okumadan görülüyor. */
.rota-serit{display:flex;align-items:flex-start;gap:0;overflow-x:auto;padding:4px 0 2px}
.rs-durak{flex:1 1 0;min-width:96px;position:relative;text-align:center;padding-top:22px}
.rs-durak::before{content:"";position:absolute;top:9px;left:0;right:0;height:2px;
  background:var(--kenar-koyu)}
.rs-durak:first-child::before{left:50%}
.rs-durak:last-child::before{right:50%}
.rs-durak.gecildi::before{background:var(--vurgu)}
.rs-nokta{position:absolute;top:3px;left:50%;transform:translateX(-50%);
  width:14px;height:14px;border-radius:50%;background:var(--kart);
  border:2px solid var(--kenar-koyu);z-index:1}
.rs-durak.gecildi .rs-nokta{background:var(--vurgu);border-color:var(--vurgu)}
.rs-durak.simdi .rs-nokta{background:var(--vurgu-parlak);border-color:var(--vurgu);
  box-shadow:0 0 0 5px rgba(245,158,11,.22)}
.rs-ad{font-size:12px;font-weight:600;color:var(--ink-2);line-height:1.3;
  padding:0 4px;overflow-wrap:anywhere}
.rs-durak.simdi .rs-ad{color:var(--vurgu)}
.rs-saat{font-size:11px;color:var(--soluk);margin-top:1px}

/* --- KPI şeridi ----------------------------------------------------------- */
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(122px,1fr));gap:8px;margin-bottom:12px}
.kpi-kutu{background:var(--kart);border:1px solid var(--kenar);border-radius:var(--r);
  padding:11px 13px;box-shadow:var(--golge)}
.kpi-etiket{font-size:11px;color:var(--soluk);font-weight:500;letter-spacing:.02em;
  text-transform:uppercase}
.kpi-deger{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin-top:2px}
.kpi-kutu.vurgulu{border-color:var(--vurgu);background:var(--vurgu-zemin)}
.kpi-kutu.vurgulu .kpi-deger{color:var(--vurgu)}
.kpi-alt{font-size:11px;color:var(--soluk);margin-top:1px}

/* --- TABLO: yoğun, satır vurgulu ----------------------------------------- */
.tablo-kaydir{overflow-x:auto;-webkit-overflow-scrolling:touch;
  border:1px solid var(--kenar);border-radius:var(--r-s);background:var(--kart)}
table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:560px}
thead th{position:sticky;top:0;background:var(--kart-2);z-index:1;
  font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;
  color:var(--soluk);text-align:right;padding:9px 12px;border-bottom:1px solid var(--kenar)}
th:first-child,td:first-child{text-align:left}
tbody td{padding:9px 12px;border-bottom:1px solid var(--kenar);text-align:right;white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:background var(--gecis)}
tbody tr:hover{background:var(--kart-2)}

/* --- ROZETLER ------------------------------------------------------------- */
.rozet{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;
  border-radius:var(--r-pill);font-size:11.5px;font-weight:600;white-space:nowrap}
.rozet::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.bindi{background:var(--ok-zemin);color:var(--ok)}
.indi{background:var(--notr-zemin);color:var(--ink-2)}
.binmedi{background:var(--hata-zemin);color:var(--hata)}
/* Vaktiyle burada elle yazilmis bir gri vardi, cunku o zamanki --soluk (#71717a)
   bu zeminde 4.23 kaliyordu. --soluk artik koyulastirildi, ayrik ton gereksiz. */
.bekliyor{background:var(--notr-zemin);color:var(--soluk)}
.evrak-gecti{background:var(--hata-zemin);color:var(--hata)}
.evrak-yaklasiyor{background:var(--uyari-zemin);color:var(--uyari)}
.kvkk-yok{background:var(--hata-zemin);color:var(--hata)}
.kvkk-eski{background:var(--uyari-zemin);color:var(--uyari)}

/* --- UYUM ŞERİDİ (üç kez kuralı göstergesi) ------------------------------- */
/* RENK TEK SİNYAL DEĞİL: durum sözcüğü (`.uyum-durum`) her hâlde yazıyor. Renk
   körlüğünde ya da tek renk baskıda şerit anlamını KAYBETMEZ. */
.uyum-serit{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:9px 12px;border-radius:var(--r);border:1px solid var(--kenar);
  background:var(--notr-zemin);font-size:13px;line-height:1.45}
.uyum-serit .uyum-durum{font-weight:700;font-size:12px;letter-spacing:.02em;
  text-transform:uppercase;white-space:nowrap}
.uyum-serit .uyum-metin{color:var(--ink-2)}
.uyum-serit .uyum-metin b{color:var(--ink)}
.uyum-iyi{background:var(--ok-zemin);border-color:var(--ok)}
.uyum-iyi .uyum-durum{color:var(--ok)}
.uyum-dikkat{background:var(--uyari-zemin);border-color:var(--uyari)}
.uyum-dikkat .uyum-durum{color:var(--uyari)}
.uyum-kritik{background:var(--hata-zemin);border-color:var(--hata)}
.uyum-kritik .uyum-durum{color:var(--hata)}

/* --- GENEL GİZLEME ------------------------------------------------------- */
/* `.hidden` GENEL bir yardımcıydı ama TANIMI YOKTU: yalnız `.menu-rozet.hidden`
   vardı. `class="... hidden"` yazan her yeni bileşen SESSİZCE görünür kalıyordu —
   uyum şeridinde tam olarak bu oldu ve ancak sayfa açılınca fark edildi.
   `!important` BİLEREK: bileşen sınıfları kendi `display`ini kuruyor (`.uyum-serit`
   flex, `.kart` block). Aynı özgüllükte "sonra gelen kazanır" kuralına bırakmak,
   dosyanın SIRASINA bağlı görünmez bir hataya davetiye olurdu. */
.hidden{display:none !important}

/* Çizelgede belge rozetleri ALT ALTA. Yan yana dizilince sütun taşıyor ve tablo yatay
   kayıyordu — kâğıda basıldığında da satır sığmazdı. Denetime verilen bir çizelgede
   "sağa kaydır" diye bir şey yok. */
#cizelgeTablo .rozet { display: block; margin: 0 0 3px; width: fit-content; }

/* --- YAZDIRMA --------------------------------------------------------------- */
/* Çizelge denetime UZATILACAK bir kâğıt. Ekran süsü (menü, başlık çubuğu, düğmeler)
   kâğıtta yer kaplar ve resmî görünümü bozar; yazdırırken çıkarılıyor. Renkli zeminler
   de kaldırılıyor: siyah-beyaz yazıcıda gri blok olarak çıkıp okunmaz hâle geliyorlar —
   belge durumu METİN olarak zaten yazılı, renge muhtaç değil. */
@media print {
  header, #menu, .yazdirma-gizle, .sekme:not(.goster) { display: none !important; }
  body { background: #fff; color: #000; }
  .kart { border: none; box-shadow: none; padding: 0; }
  .tablo-kaydir { overflow: visible; }
  table { width: 100%; border-collapse: collapse; font-size: 11px; }
  th, td { border: 1px solid #999; padding: 4px 6px; color: #000; background: #fff; }
  .rozet, .evrak-gecti, .evrak-yaklasiyor { background: #fff !important; color: #000 !important;
    border: 1px solid #000; }
  a[href]::after { content: ""; }   /* URL'leri kâğıda basma */
}

/* --- FORM / DÜĞME --------------------------------------------------------- */
label{display:block;font-size:12px;color:var(--soluk);font-weight:500;margin:8px 0 4px}
input,select,textarea{width:100%;padding:9px 11px;border:1px solid var(--kenar-koyu);
  border-radius:var(--r-s);font:inherit;font-size:14px;min-height:40px;background:var(--kart);
  color:var(--ink);transition:border-color var(--gecis),box-shadow var(--gecis)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--vurgu);
  box-shadow:0 0 0 3px rgba(245,158,11,.16)}
button.eylem{background:var(--ink);color:#fff;border:none;padding:10px 16px;
  border-radius:var(--r-s);cursor:pointer;font:inherit;font-size:14px;font-weight:600;
  min-height:42px;transition:background var(--gecis)}
button.eylem:hover{background:#2a2a2a}
button.mini{padding:7px 12px;font:inherit;font-size:12.5px;font-weight:500;
  border-radius:var(--r-s);border:1px solid var(--kenar-koyu);background:var(--kart);
  color:var(--ink-2);cursor:pointer;min-height:36px;
  transition:background var(--gecis),border-color var(--gecis)}
button.mini:hover{background:var(--kart-2);border-color:var(--soluk)}
/* YIKICI EYLEM — hesap kapatma, davet iptali. Sınıf B/1'de KULLANILMIŞ ama hiç
   TANIMLANMAMIŞTI: "Kapat" düğmesi "Parola sıfırla"dan görsel olarak ayrılmıyordu.
   Renk TEK BAŞINA taşıyıcı değil (düğmenin metni zaten eylemi söylüyor ve onay
   ikinci adımda soruluyor); renk yalnız o metni ÖNCEDEN fark ettiriyor. */
button.mini.btn-tehlike{color:var(--hata);border-color:var(--hata-zemin)}
button.mini.btn-tehlike:hover{background:var(--hata-zemin);border-color:var(--hata)}
button:focus-visible,a:focus-visible{outline:2px solid var(--vurgu);outline-offset:2px}

.grid{display:grid;gap:10px}
@media(min-width:640px){.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:1fr 1fr 1fr}}
.satir{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.kucuk{font-size:12px;color:var(--soluk)}
.bos{color:var(--soluk);font-size:13px;padding:14px 2px}
#harita{height:min(58vh,430px);border-radius:var(--r-s);border:1px solid var(--kenar)}

/* --- BİLDİRİM ------------------------------------------------------------- */
#bildirimKutu{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:9999;
  display:flex;flex-direction:column;gap:6px;width:min(92vw,400px)}
.toast{background:var(--ink);color:#fff;padding:11px 14px;border-radius:var(--r-s);
  box-shadow:var(--golge-2);font-size:13.5px}
.toast.ok{background:var(--ok)}.toast.hata{background:var(--hata)}.toast.uyari{background:var(--uyari)}

/* --- GİRİŞ ---------------------------------------------------------------- */
#giris{position:fixed;inset:0;z-index:10000;background:var(--zemin);display:none;
  align-items:center;justify-content:center;padding:16px}
#girisForm{background:var(--kart);border:1px solid var(--kenar);border-radius:14px;
  padding:26px;width:min(380px,94vw);box-shadow:var(--golge-2)}
#girisForm h2{margin:0 0 4px;font-size:17px;font-weight:700;letter-spacing:-.02em}
#g_hata{color:var(--hata);font-size:12.5px;min-height:16px;margin:8px 0 0}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important;transition-duration:.001ms !important}
}

/* =====================================================================
   PANEL-ÖZEL BİLEŞENLER
   Yönetici (/) ve Şirket (/sirket) panellerinden taşındı. Buradalar çünkü
   ÜÇ panel de aynı görsel dili konuşmalı; ayrı dosyalarda tutmak, birini
   güncelleyip diğerini unutmayı garantiler (bu oturumda tam bu sınıftan
   birkaç hata çıktı).
   ===================================================================== */

/* Bakiye rozetleri — muhasebe. Renkler token'lardan türüyor, elle hex yok. */
.borc{background:var(--hata-zemin);color:var(--hata)}
.alacak{background:var(--ok-zemin);color:var(--ok)}
.sifir{background:var(--notr-zemin);color:var(--soluk)}
.uyari-rozet{background:var(--uyari-zemin);color:var(--uyari)}

/* Liste öğesi — kart içi tekil satır (yönetici paneli). */
.liste-oge{padding:11px 12px;border:1px solid var(--kenar);border-radius:var(--r-s);
  margin-bottom:8px;background:var(--kart);transition:background var(--gecis)}
.liste-oge:hover{background:var(--kart-2)}

/* İŞLENMİŞ SATIR — yoklaması alınmış öğrenci.
   OPAKLIKLA SOLDURULMUYOR. Eskiden `opacity:.55` uygulanıyordu; bu, metnin
   alfasını düşürdüğü için sınıf etiketini 2.40:1'e indiriyordu (ölçüldü) —
   yani şoför, az önce işlediği öğrencinin adını en zor okuyan kişi oluyordu.
   Bunun yerine ZEMİN değişiyor, metin okunur kalıyor.
   Durum yalnız renkle anlatılmıyor: sol şerit + onay işareti de var. */
.liste-oge.islenmis{background:var(--kart-2);border-color:var(--kenar-koyu);
  border-left:3px solid var(--vurgu);padding-left:9px}
.liste-oge.islenmis::after{content:"✓";margin-left:auto;padding-left:8px;
  color:var(--vurgu);font-weight:700;font-size:14px;flex:none}

/* ============================================ PASİFLERİ GÖSTER / GERİ AÇ (S.3)
   Altı `aktiflestir` ucu vardı, ARAYÜZÜ YOKTU — çünkü pasif kayıt hiçbir listede
   görünmüyordu, üzerine düğme konacak SATIR yoktu. Ürün her şeyi kapatabiliyor,
   hiçbirini geri açamıyordu. */

/* Anahtar. `label{display:block}` ve `input{width:100%}` GENEL kurallar; onay
   kutusu için ikisi de geçersizleniyor, yoksa kutu satırın tamamını kaplıyor.
   Dokunma hedefi küçük kutu DEĞİL, etiketin tamamı (44px) — mobil kuralıyla
   aynı hedefi tutturuyor, ölçüyü kutuya vermeden. */
.pasif-anahtar{display:inline-flex;align-items:center;gap:8px;min-height:44px;
  margin:0;cursor:pointer;user-select:none}
.pasif-anahtar input[type="checkbox"]{width:18px;height:18px;min-height:18px;
  flex:none;padding:0;margin:0;accent-color:var(--vurgu);cursor:pointer}

/* Pasif satır. İŞLENMİŞ SATIR ile AYNI kural: OPAKLIKLA SOLDURULMUYOR — metnin
   alfasını düşürmek kontrastı bozuyor (yukarıda ölçülmüş). Zemin + sol şerit
   değişiyor, metin okunur kalıyor. Durum yalnız renkle de anlatılmıyor: satırın
   sonundaki düğme "Pasifleştir" yerine "Geri aç" yazıyor. */
tr.pasif-satir > td{background:var(--kart-2)}
tr.pasif-satir > td:first-child{box-shadow:inset 3px 0 0 var(--soluk)}

/* TAKSİT DÖNEM BAŞLIĞI — bir öğrencinin birden çok dönemi olabiliyor ve her
   dönem AYRI bir plan. Başlık satırı grubu görsel olarak ayırıyor ki iki
   dönemin taksitleri tek liste sanılmasın (tam olarak bu karışıklık bir
   kusur üretmişti: silme düğmesi yanlış dönemi hedefliyordu). */
tr.taksit-donem > td{background:var(--kart-2);border-top:2px solid var(--kenar-koyu)}

/* Özet kutuları — şirket paneli muhasebe. KPI şeridiyle AYNI dili konuşuyor. */
.ozet-kutu{display:grid;gap:8px}
@media(min-width:640px){.ozet-kutu{grid-template-columns:repeat(3,1fr)}}
.ozet-oge{border:1px solid var(--kenar);border-radius:var(--r);padding:12px 13px;
  background:var(--kart);box-shadow:var(--golge)}

.not{font-size:12px;color:var(--soluk);margin-top:4px}

/* GİZLİLİK ALTBİLGİSİ — üç panelde de var. Sessiz ama ULAŞILABİLİR:
   yasal bir belgeyi göze sokmak gerekmiyor, ama saklamak da olmaz. */
.alt-gizlilik{text-align:center;padding:20px 16px 28px;font-size:12px}
.alt-gizlilik a{color:var(--soluk);text-decoration:none}
.alt-gizlilik a:hover{color:var(--vurgu);text-decoration:underline}

/* Bölüm başlığı — panel.html/sirket.html `.bolum` kullanmıyor ama h2 stili ortak. */
.kart h3{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--ink-2)}

/* =====================================================================
   DOKUNMATİK HEDEF BOYUTU
   Panel masaüstü için YOĞUN tasarlandı: 36-42px kontroller fareyle rahat,
   ekranda daha çok satır gösteriyor. Parmak fareden kalın — telefonda aynı
   yoğunluk ıskalamaya yol açar. Bu yüzden boyutu global büyütmüyoruz;
   yalnız işaretçisi KABA olan cihazlarda 44px'e çıkarıyoruz.
   Ölçülen (375px, düzeltmeden önce): sekme 38px, .mini 36px, giriş 40px.
   ===================================================================== */
@media (pointer: coarse) {
  nav button, button.eylem, button.mini,
  input, select, textarea { min-height: 44px; }
  nav button { padding: 10px 16px; }
  button.mini { padding: 10px 14px; }
}


/* --- RAPOR ÇUBUKLARI ------------------------------------------------------
   Grafik kütüphanesi YOK: iki hücrelik bir çubuk, genişliği yüzdeyle veriliyor.
   Dış bağımlılık eklemek panelin internetsiz çalışma kuralını (3.92) bozardı.
   Renk TEK gösterge değil: gelir üstte, gider altta — sıra da bilgi taşıyor. */
.rap-cubuk{display:flex;flex-direction:column;gap:3px;min-width:120px}
.rap-satir{height:9px;border-radius:999px;background:var(--notr-zemin);overflow:hidden}
.rap-dolgu{height:100%;border-radius:999px}
.rap-gelir .rap-dolgu{background:var(--ok)}
.rap-gider .rap-dolgu{background:var(--hata)}


/* --- SEKME ROZETİ ---------------------------------------------------------
   "Bekleyen iş var" bilgisi sekmeye TIKLAMADAN görünmeli; aksi hâlde onay
   ekranı, açmayı hatırlayana kadar boş bekler. Sayı taşır (nokta değil):
   3 ile 30 arasındaki fark, sabah işe nereden başlanacağını belirler. */
.menu-rozet{display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;margin-left:6px;border-radius:999px;
  background:var(--hata);color:#fff;font-size:11px;font-weight:700;line-height:1}
nav button.aktif .menu-rozet{background:var(--vurgu-parlak);color:var(--ink)}
.menu-rozet.hidden{display:none}

/* =======================================================================
   AÇILIŞ ANİMASYONUNDAN UYGULAMAYA DEVİR

   ⚠ TESLİM DOSYALARI (`evran-splash.css/.js`) DEĞİŞTİRİLMEDİ. Bu blok onları
   dışarıdan tamamlıyor; paket yeniden teslim edilirse üzerine yazılabilir ve
   buradaki davranış kaybolmaz.

   SORUN: teslimatta splash 0.34 sn'de soluyor ve altından uygulama OLDUĞU GİBİ
   çıkıyordu. Perde kalkıyor ama sahne zaten kurulu — göz bunu "kesme" olarak
   okuyor. Hele mobilde açık tema seçiliyse siyah splash'ten beyaz ekrana geçiş
   sert bir sıçrama oluyordu.

   ÇÖZÜM — ÖRTÜŞEN İKİ HAREKET, tek kesme yerine:
     · splash çıkışı 0.34 -> 0.52 sn ve yumuşak eğri,
     · uygulama AYNI ANDA 10px yükselerek beliriyor (kademeli: başlık, menü, içerik),
     · ikisi örtüştüğü için arada boş kare yok.
   ======================================================================= */

/* Splash çıkışı: teslimattaki .34s'i geçersizler. `!important` GEREKLİ —
   kaynak dosya sonra yükleniyor olabilir ve özgüllük aynı. */
.ev-splash { transition: opacity .52s cubic-bezier(.4, 0, .2, 1) !important; }

@keyframes ev-giris {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: none; }
}

/* ⛔ JS ÖLÜRSE SPLASH SONSUZA KALMASIN. `evran-splash.js` yüklenmezse ya da
   patlarsa `ev-splash--done` hiç eklenmez ve tam ekran bir katman bütün
   tıklamaları yutar — uygulama kullanılamaz hâle gelir. Bu CSS-only ağ 3.2 sn'de
   (animasyon 2.0 + pay) katmanı kendiliğinden kaldırıyor.
   `autohide="false"` demo hâli DIŞARIDA: orada son karenin kalması İSTENİYOR. */
.ev-splash:not([data-evran-splash-autohide="false"]) {
  animation: ev-splash-kurtar 0s linear 3.2s forwards;
}
@keyframes ev-splash-kurtar {
  to { opacity: 0; visibility: hidden; pointer-events: none; }
}

/* Uygulama girişi — `ortak.js` splash bitince `<body>`ye `ev-giris` ekliyor.
   ⚠ İÇERİK BAŞTAN GİZLENMİYOR: splash zaten `position:fixed; inset:0` ile üstünü
   tamamen örtüyor. Gizleseydik ve JS ölseydi ekran boş kalırdı; bu hâliyle ek
   kurallarımız SALT TOPLAYICI — hiçbir arıza senaryosunda içeriği yok etmiyor.

   ⚠ İKİ FARKLI İSKELET, İKİ SEÇİCİ AİLESİ. Bu blok önce yalnız
   `body > header/nav/main` yazıyordu; o, YÖNETİCİ panelinin yapısı. Şirket ve
   kurum panellerinde içerik `#giris` / `#uygulama` sarmalayıcılarının İÇİNDE,
   yani seçici HİÇBİR ŞEYE eşleşmiyordu: splash düzgün çalışıyor, sınıf
   ekleniyor ve sonra hiçbir şey animasyon yapmıyordu — tam da giderilmek
   istenen sert kesme. Canlıda ölçülerek yakalandı (`secici_eslesme: 0`). */

/* Giriş ekranı tek blok olarak gelir (tek bir kart, kademelenecek parçası yok). */
body.ev-giris > #giris { animation: ev-giris .5s cubic-bezier(.2, .8, .2, 1) both; }

/* Uygulama iskeleti kademeli: başlık, menü, içerik.
   İlk aile = şirket/kurum (sarmalayıcılı), ikinci aile = yönetici (düz). */
body.ev-giris > #uygulama > header,
body.ev-giris > header { animation: ev-giris .5s cubic-bezier(.2, .8, .2, 1) both; }
body.ev-giris > #uygulama > nav,
body.ev-giris > nav    { animation: ev-giris .5s cubic-bezier(.2, .8, .2, 1) .06s both; }
body.ev-giris > #uygulama > main,
body.ev-giris > main   { animation: ev-giris .5s cubic-bezier(.2, .8, .2, 1) .12s both; }

/* Hareket azaltma: giriş animasyonu YOK, içerik doğrudan görünür. Teslim
   dosyasının kendi `prefers-reduced-motion` bloğuyla aynı hattı tutuyor. */
@media (prefers-reduced-motion: reduce) {
  .ev-splash { transition: none !important; }
  body.ev-giris > #giris,
  body.ev-giris > #uygulama > header,
  body.ev-giris > #uygulama > nav,
  body.ev-giris > #uygulama > main,
  body.ev-giris > header,
  body.ev-giris > nav,
  body.ev-giris > main { animation: none !important; }
}
