:root{
  --black:#1b1b1e;
  --sidebar-bg:#ffffff;
  --sidebar-border:#e4e7eb;
  --page-bg:#f3f4f6;
  --border:#e0e3e8;
  --blue:#2563af;
  --blue-light:#eaf1fb;
  --orange:#eda23a;
  --orange-dark:#d98c1f;
  --orange-light:#fbe9d0;
  --text:#232529;
  --text-muted:#767b85;
  --green:#2f9e5c;
  --green-light:#e1f3e7;
  --pink-bg:#fbe7ee;
  --pink-text:#c23b62;
  --red:#d64545;
  --red-light:#fbe4e6;
  --turquoise:#0f9b8e;
  --card-bg:#ffffff;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;height:100%;}
body{
  font-family:"Segoe UI",Arial,Helvetica,sans-serif;
  background:var(--page-bg);
  color:var(--text);
  font-size:13.5px;
}
.hidden{display:none !important;}
a{color:var(--blue);text-decoration:none;cursor:pointer;}
a:hover{text-decoration:underline;}
input,select,textarea,button{font-family:inherit;font-size:13.5px;}
input[type=text],input[type=number],input[type=date],input[type=email],input[type=password],input[type=tel],select,textarea{
  width:100%;padding:6px 8px;border:1px solid #ccd1d9;border-radius:3px;background:#fff;color:var(--text);
}
input:disabled{background:#f0f1f3;color:#9aa0a8;}
textarea{resize:vertical;min-height:54px;}
label{font-size:12.5px;color:#4b4f57;font-weight:600;display:block;margin-bottom:3px;}
.req{color:var(--red);}
.field{margin-bottom:12px;}
/* Kutucuklu (checkbox) çoklu seçim açılır kutusu — Sınıf/Sınıf Derecesi/Branş
   filtreleri için native <select> yerine kullanılır. */
.ms-dropdown{position:relative;}
.ms-dropdown-btn{width:100%;padding:6px 8px;border:1px solid #ccd1d9;border-radius:3px;background:#fff;color:var(--text);text-align:left;cursor:pointer;font-size:13.5px;white-space:normal;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;min-height:29px;}
.ms-dropdown-btn:hover{border-color:#9aa0a8;}
.ms-dropdown-btn.filter-active{background:var(--green-light)!important;}
.ms-dropdown-panel{position:absolute;top:100%;left:0;z-index:50;min-width:180px;max-height:260px;overflow-y:auto;background:#fff;border:1px solid #ccd1d9;border-radius:3px;box-shadow:0 4px 14px rgba(0,0,0,.15);margin-top:2px;padding:4px 0;}
.ms-dropdown-row{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:13px;font-weight:400;color:var(--text);cursor:pointer;margin-bottom:0;white-space:nowrap;}
.ms-dropdown-row:hover{background:#f4f5f7;}
.ms-dropdown-row input[type=checkbox]{width:auto;margin:0;}
/* Başlangıç / Öğrenciler ekranındaki Aktif/Pasif/Silinmiş özet kutucukları —
   3 boyutlu (parlak, gradyanlı, kabartma gölgeli) rozet simgeler + kart
   görünümü. Simge rozetleri emoji üzerine gradyan zemin + iç/dış gölge
   katmanlarıyla ("neumorphism"/glossy-icon tarzı) cam/kabartma hissi verir —
   harici bir ikon kütüphanesi eklemeden (buildless proje) elde edilir. */
.ogr-durum-ozet{display:flex;gap:14px;margin-bottom:18px;}
.ogr-durum-box{flex:1;min-width:170px;display:flex;align-items:center;gap:14px;border-radius:14px;padding:14px 18px;border:1px solid var(--border);background:linear-gradient(180deg,#ffffff,#f8f9fb);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;box-shadow:0 1px 2px rgba(20,20,30,.04);}
.ogr-durum-box:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(20,20,30,.10);}
.ogr-durum-icon{width:46px;height:46px;flex:0 0 46px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:23px;line-height:1;box-shadow:0 3px 8px rgba(0,0,0,.18),inset 0 1px 1px rgba(255,255,255,.55),inset 0 -3px 5px rgba(0,0,0,.12);}
.ogr-durum-val{font-size:26px;font-weight:800;line-height:1.15;}
.ogr-durum-label{font-size:11.5px;color:var(--text-muted);font-weight:600;margin-top:2px;}
.ogr-durum-aktif .ogr-durum-val{color:var(--green);}
.ogr-durum-pasif .ogr-durum-val{color:#6b7078;}
.ogr-durum-silinmis .ogr-durum-val{color:var(--red);}
.ogr-durum-aktif .ogr-durum-icon{background:linear-gradient(150deg,#6ee7a8,#16a34a);}
.ogr-durum-pasif .ogr-durum-icon{background:linear-gradient(150deg,#cbd5e1,#64748b);}
.ogr-durum-silinmis .ogr-durum-icon{background:linear-gradient(150deg,#fca5a5,#dc2626);}
body.dark-mode .ogr-durum-box{background:linear-gradient(180deg,#1f2128,#191b20);}
.row{display:flex;gap:14px;flex-wrap:wrap;}
.row > .field{flex:1;min-width:120px;}

/* ---------- LOGIN ---------- */
#loginScreen,.reset-screen{
  min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;
  background:linear-gradient(135deg,#4a0d0d 0%,#8b1a1a 55%,#c62222 100%);
}
.login-screen-logo{position:fixed;top:18px;left:18px;height:46px;width:46px;object-fit:contain;filter:drop-shadow(0 2px 6px rgba(0,0,0,.35));z-index:5;}
/* Sayfa yenilendiğinde oturum kontrolü tamamlanana kadar gösterilir — bu sayede
   giriş formu, arkada oturum geri yükleniyorken bir an görünüp kaybolmaz. */
#authCheckOverlay{display:flex;flex-direction:column;align-items:center;justify-content:center;}
.auth-check-spinner{width:30px;height:30px;border-radius:50%;border:3px solid rgba(255,255,255,.25);border-top-color:#fff;animation:authCheckSpin .8s linear infinite;}
@keyframes authCheckSpin{to{transform:rotate(360deg);}}
.login-clock{text-align:center;margin-top:14px;font-size:11.5px;color:var(--text-muted);}
.login-forgot-link{display:block;text-align:right;font-size:11.5px;color:var(--blue);cursor:pointer;margin:-6px 0 4px;}
.login-forgot-link:hover{text-decoration:underline;}
#loginChoiceCard{width:100%;align-self:stretch;min-height:100vh;display:flex;flex-direction:column;}
.login-card{
  width:360px;background:#fff;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.35);
  padding:34px 32px 26px;
}
.login-logo{font-size:24px;font-weight:700;color:var(--black);text-align:center;margin-bottom:2px;}
.login-logo span{color:var(--blue);}
.login-sub{text-align:center;color:var(--text-muted);font-size:12px;margin-bottom:22px;}
.login-card .field{margin-bottom:14px;}
.login-btn{
  width:100%;padding:10px;background:var(--blue);color:#fff;border:none;border-radius:4px;
  font-weight:600;font-size:14px;cursor:pointer;margin-top:6px;
}
.login-btn:hover{background:#1d4f8c;}
.login-error{background:#fdeaea;color:var(--red);padding:8px 10px;border-radius:4px;font-size:12.5px;margin-bottom:12px;display:none;}
.login-demo{
  margin-top:20px;padding-top:16px;border-top:1px solid #eee;font-size:11.5px;color:var(--text-muted);
}
.login-demo table{width:100%;border-collapse:collapse;}
.login-demo td{padding:3px 4px;}
.login-demo b{color:var(--text);}
.demo-fill{cursor:pointer;color:var(--blue);}

/* ---------- APP SHELL ---------- */
#topbar{
  background:#8b1a1a;color:#fff;padding:6px 18px;font-size:19px;font-weight:600;
  display:flex;align-items:center;justify-content:space-between;letter-spacing:.3px;gap:14px;flex-wrap:wrap;
}
#topbar .slash{color:rgba(255,255,255,.75);font-weight:400;font-size:15px;margin-left:6px;}
#topbar .topbar-logo{height:26px;width:26px;object-fit:contain;flex-shrink:0;}
.topbar-left{display:flex;align-items:center;gap:12px;flex:0 0 auto;}
.topbar-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap;flex:1 1 auto;min-width:0;}
.tb-icon-btn{
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:4px;
  padding:6px 10px;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;
  line-height:1;position:relative;white-space:nowrap;flex-shrink:0;
}
.tb-icon-btn:hover{background:rgba(255,255,255,.2);}
.tb-icon-btn:disabled{opacity:.35;cursor:not-allowed;}
.tb-icon-btn:disabled:hover{background:rgba(255,255,255,.08);}
.tb-select{
  width:auto;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:4px;
  padding:6px 8px;font-size:11.5px;font-weight:600;cursor:pointer;flex-shrink:0;
}
.tb-select option{color:#111;}
.tb-icon-btn-green{background:var(--green-light);border-color:var(--green-light);color:#1b7a43;}
.tb-icon-btn-green:hover{background:#cdeedb;}
.tb-icon-btn-green:disabled{opacity:.4;}
body.dark-mode .tb-icon-btn-green{color:#7fd8a5;}
body.dark-mode .tb-icon-btn-green:hover{background:#1f4430;}
.msg-badge{
  position:absolute;top:-6px;right:-6px;background:var(--red);color:#fff;border-radius:50%;
  min-width:15px;height:15px;padding:0 2px;font-size:9.5px;display:none;align-items:center;justify-content:center;font-weight:700;
}
.msg-badge.show{display:flex;}
#layout{display:flex;align-items:flex-start;min-height:calc(100vh - 46px);}
#sidebar{
  width:230px;flex:0 0 230px;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);
  min-height:calc(100vh - 46px);
}
#sidebar.collapsed{display:none;}
#layout.menu-right{flex-direction:row-reverse;}
#layout.menu-right #sidebar{border-right:none;border-left:1px solid var(--sidebar-border);}
#layout.menu-top{flex-direction:column;}
#layout.menu-top #sidebar{
  width:100%;flex:0 0 auto;min-height:0;border-right:none;border-bottom:1px solid var(--sidebar-border);
  display:flex;align-items:center;flex-wrap:wrap;padding:0 10px;position:relative;z-index:60;
}
#layout.menu-top #main{width:100%;}
#layout.menu-top .user-block{border-bottom:none;border-right:1px solid var(--sidebar-border);padding:8px 12px;}
#layout.menu-top .kurum-select-wrap{border-bottom:none;border-right:1px solid var(--sidebar-border);padding:8px 12px;}
#layout.menu-top .panel-tabs{border-bottom:none;border-right:1px solid var(--sidebar-border);}
#layout.menu-top .panel-tabs div{padding:8px 12px;}
#layout.menu-top #navMenu{display:flex;flex-wrap:wrap;padding:0;flex:1;}
#layout.menu-top .nav-group{position:relative;}
#layout.menu-top .nav-group-title{padding:12px 14px;}
#layout.menu-top .nav-item.top{padding:12px 14px;border-left:none;border-bottom:3px solid transparent;}
#layout.menu-top .nav-item.top.active{border-left:none;border-bottom:3px solid var(--blue);}
#layout.menu-top .nav-children{
  position:absolute;top:100%;left:0;background:#fff;border:1px solid var(--sidebar-border);
  box-shadow:0 12px 28px rgba(0,0,0,.18);min-width:220px;z-index:200;border-radius:0 0 4px 4px;
}
.user-block{padding:16px 16px 12px;border-bottom:1px solid var(--sidebar-border);display:flex;gap:10px;align-items:center;}
.avatar-box{width:40px;height:40px;background:var(--black);border-radius:3px;flex:0 0 40px;}
.user-name{font-weight:700;font-size:13px;}
.user-links{font-size:11.5px;color:var(--text-muted);}
.user-links a{font-size:11.5px;}
.kurum-select-wrap{padding:10px 14px;border-bottom:1px solid var(--sidebar-border);}
.kurum-select-wrap select{font-size:12.5px;padding:6px;font-weight:600;color:var(--blue);}
.panel-tabs{display:flex;border-bottom:1px solid var(--sidebar-border);}
.panel-tabs div{flex:1;text-align:center;padding:9px 0;font-size:12.5px;color:var(--text-muted);cursor:pointer;}
.panel-tabs div.active{color:var(--blue);font-weight:600;border-bottom:2px solid var(--blue);}
#navMenu{padding:6px 0;}
.nav-group-title{
  padding:10px 16px;font-size:12.8px;font-weight:600;color:#3a3d44;cursor:pointer;
  display:flex;align-items:center;justify-content:space-between;user-select:none;
}
.nav-group-title:hover{background:#f6f7f9;}
.nav-group-title .arrow{font-size:10px;color:#9aa0a8;transition:transform .15s;}
.nav-group-title.open .arrow{transform:rotate(90deg);}
.nav-children{display:none;}
.nav-children.open{display:block;}
.nav-item{
  padding:8px 34px 8px 30px;font-size:12.5px;color:#4b4f57;cursor:pointer;display:block;border-left:3px solid transparent;position:relative;
}
.nav-item:hover{background:#f6f7f9;}
.nav-item.active{color:var(--blue);font-weight:700;background:var(--blue-light);border-left:3px solid var(--blue);}
.nav-item.top{padding-left:16px;}
.nav-item.not-built{background:#f0f1f2;color:#9aa0a8;}
.nav-item.not-built:hover{background:#e7e8ea;}
.nav-item.not-built.active{background:#e7e8ea;color:var(--blue);}
/* "Yeni Sekmede Aç" — menü satırının sonunda, yalnızca satırın üzerine
   gelindiğinde (hover) görünen ok ikonu. Aynı anda birden fazla ekranı
   farklı sekmelerde açabilmek için (bkz. openNavItemInNewTab). */
.nav-item-newtab-btn{
  display:none;position:absolute;right:6px;top:50%;transform:translateY(-50%);
  width:26px;height:26px;align-items:center;justify-content:center;border-radius:50%;
  color:#5b6472;background:rgba(0,0,0,.07);border:1px solid rgba(0,0,0,.12);
}
.nav-item-newtab-btn svg{display:block;}
.nav-item:hover .nav-item-newtab-btn{display:flex;}
.nav-item-newtab-btn:hover{background:var(--blue);border-color:var(--blue);color:#fff;}
#layout.menu-top .nav-item-newtab-btn{display:none!important;}

/* ---------- SOL PANEL: kırmızı zemin, beyaz yazı ---------- */
#sidebar{background:#8b1a1a;color:#fff;}
#sidebar .user-block,#sidebar .kurum-select-wrap,#sidebar .panel-tabs{border-color:rgba(255,255,255,.25);}
#sidebar .avatar-box{background:rgba(255,255,255,.18);}
#sidebar .user-name{color:#fff;}
#sidebar .user-links{color:rgba(255,255,255,.75);}
#sidebar .user-links a{color:#fff;}
#sidebar .panel-tabs div{color:rgba(255,255,255,.7);}
#sidebar .panel-tabs div.active{color:#fff;border-bottom-color:#fff;}
#sidebar .nav-group-title{color:#fff;}
#sidebar .nav-group-title:hover{background:rgba(255,255,255,.12);}
#sidebar .nav-group-title .arrow{color:rgba(255,255,255,.7);}
/* Alt menüler (açılan öğe listesi): beyaz zemin, siyah yazı — ana menü
   başlıklarından (kırmızı zemin, beyaz yazı) görsel olarak ayrışsın diye. */
#sidebar .nav-children{background:#fff;}
#sidebar .nav-item{color:#232529;}
#sidebar .nav-item:hover{background:#f0f1f2;}
#sidebar .nav-item.active{color:#fff;font-weight:700;background:var(--turquoise);border-left-color:#fff;}
#sidebar .nav-item.not-built{background:#f0f1f2;color:#9aa0a8;}
#sidebar .nav-item.not-built:hover{background:#e7e8ea;}
#sidebar .nav-item.not-built.active{background:rgba(0,0,0,.26);color:#fff;}
#sidebar .nav-star{color:#ffd76b;}
#sidebar .nav-item-newtab-btn{color:rgba(35,37,41,.6);background:rgba(0,0,0,.06);border-color:rgba(0,0,0,.14);}
#sidebar .nav-item-newtab-btn:hover{background:#8b1a1a;border-color:#8b1a1a;color:#fff;}
#sidebar .nav-item.active .nav-item-newtab-btn{color:#fff;background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.4);}
#sidebar .nav-item.active .nav-item-newtab-btn:hover{background:rgba(255,255,255,.3);color:#fff;}
.nav-star{color:#f5b700;margin-left:6px;font-size:11px;}
/* Karanlık modda genel "select" kuralı (body.dark-mode select{background:#25...})
   sol paneldeki kurum seçim kutusunu da yakalayıp kırmızı zemin üzerinde
   uyumsuz koyu gri bir kutuya çeviriyordu — ID seçicisiyle burada geçersiz
   kılınıyor (ID her zaman sınıf tabanlı kurallardan daha yüksek önceliklidir). */
body.dark-mode #sidebar select{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.32);color:#fff;}
body.dark-mode #sidebar select option{color:#111;}

#main{flex:1;min-width:0;}
#breadcrumbBar{
  background:#eef0f3;border-bottom:1px solid var(--border);padding:5px 20px;font-size:12px;color:var(--text-muted);
  display:flex;justify-content:space-between;align-items:center;
}
#breadcrumbBar b{color:var(--text);font-weight:600;}
#pageContent{padding:20px;}

/* ---------- COMMON UI ---------- */
.page-title{font-size:20px;font-weight:600;margin:2px 0 8px;}
.page-title small{font-size:13px;color:var(--text-muted);font-weight:400;}
.toolbar{
  background:#fff;border:1px solid var(--border);border-radius:4px 4px 0 0;padding:6px 10px;
  display:flex;gap:8px;align-items:center;flex-wrap:wrap;
}
.btn{
  padding:7px 13px;border-radius:3px;border:1px solid #ccd1d9;background:#fff;color:var(--text);
  cursor:pointer;font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;gap:5px;
}
.btn:hover{background:#f4f5f7;}
.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue);}
.btn-primary:hover{background:#1d4f8c;}
.btn-turquoise{background:var(--turquoise);color:#fff;border-color:var(--turquoise);}
.btn-turquoise:hover{background:#0c7f74;}
.btn-orange{background:var(--orange);color:#fff;border-color:var(--orange);font-size:14px;padding:10px;width:100%;justify-content:center;}
.btn-orange:hover{background:var(--orange-dark);}
.btn-green{background:var(--green);color:#fff;border-color:var(--green);font-size:15px;padding:12px;width:100%;justify-content:center;font-weight:700;margin-top:4px;}
.btn-green:hover{background:#25824a;}
.btn-sm{padding:4px 9px;font-size:11.5px;}
.filter-panel{background:#fff;border:1px solid var(--border);border-top:none;padding:10px 14px 6px;}
.filter-panel .row{margin-bottom:6px;}
.filter-panel label{font-size:11.5px;color:var(--text-muted);font-weight:600;}
/* Aktif (varsayılan olmayan bir değere sahip) filtre alanları açık yeşil
   zeminle vurgulanır — bkz. js/02-ui-settings.js highlightFilterEl(). */
.filter-panel select.filter-active,
.filter-panel input.filter-active,
.filter-panel textarea.filter-active{background:var(--green-light)!important;}
.filter-actions{display:flex;justify-content:flex-end;padding:0 0 12px;}
.card{background:#fff;border:1px solid var(--border);border-radius:4px;padding:16px;margin-bottom:16px;}
.card-title{font-weight:700;font-size:13.5px;margin-bottom:12px;border-bottom:1px solid var(--border);padding-bottom:8px;}
.data-table{width:100%;border-collapse:collapse;background:#fff;}
.data-table th{
  text-align:left;background:#f7f8fa;border-bottom:1px solid var(--border);padding:8px 10px;font-size:11.5px;
  color:#565b64;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;
}
.data-table td{padding:8px 10px;border-bottom:1px solid #eef0f2;font-size:12.5px;white-space:nowrap;}
.data-table tbody tr:hover{background:#f8fafc;}
/* Ders Bazlı Sonuçlar tablosu: okunabilirlik için satır bazında beyaz/açık
   gri şeritleme ve Net (N) sütununu diğer sütunlardan ayıran vurgu. */
#dbsTable tbody tr:nth-child(even){background:var(--page-bg);}
#dbsTable tbody tr:nth-child(even):hover{background:#eef1f5;}
#dbsTable .dbs-net-col{background:var(--green-light);}
#dbsTable th.dbs-net-col{color:#1b7a43;}
body.dark-mode #dbsTable tbody tr:nth-child(even){background:#20222a;}
body.dark-mode #dbsTable .dbs-net-col{background:#173a29;}
body.dark-mode #dbsTable th.dbs-net-col{color:#6fd99a;}
/* "Konular" oku ile açılan konu satırları — ana (öğrenci+ders) satırın
   altına, farklı bir zeminle, girintili gösterilir. */
#dbsTable tbody tr.dbs-konu-row{background:#f4f6fb !important;}
#dbsTable tbody tr.dbs-konu-row:hover{background:#e9edf7 !important;}
#dbsTable tbody tr.dbs-konu-row td{font-style:italic;color:var(--text-muted);}
body.dark-mode #dbsTable tbody tr.dbs-konu-row{background:#23252e !important;}
body.dark-mode #dbsTable tbody tr.dbs-konu-row:hover{background:#292b36 !important;}
/* Sağa kaydırıldığında Ö.No/Ad Soyad/Sınıf/Ders/Konular sütunları sabit
   (sticky) kalır; dikey kaydırmada ise başlık satırları (yukarıdaki genel
   .table-wrap-scroll kuralıyla) zaten sabit kalıyor — köşe hücreler hem üstte
   hem solda sabit kalabilmesi için burada AYRICA left+yüksek z-index alır. */
#dbsTable{table-layout:fixed;}
#dbsTable .dbs-f{position:sticky;background-color:inherit;z-index:3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#dbsTable thead th.dbs-f{z-index:7;background-color:#f7f8fa;}
#dbsTable .dbs-f1{left:0;width:50px;}
#dbsTable .dbs-f2{left:50px;width:180px;}
#dbsTable .dbs-f3{left:230px;width:90px;}
#dbsTable .dbs-f4{left:320px;width:130px;}
#dbsTable .dbs-f5{left:450px;width:60px;box-shadow:2px 0 4px rgba(0,0,0,.06);}
/* table-layout:fixed altında sütun genişlikleri SADECE ilk header satırındaki
   hücrelerden belirlenir — bu yüzden genişlik, D/Y/N alt sütunlarına değil,
   onları kapsayan colspan=3 sınav grubu başlığına (toplam=3xtek sütun)
   veriliyor; tek tek D/Y/N hücrelerine ayrıca genişlik vermenin bir etkisi
   olmuyor (spec gereği yok sayılıyor), o yüzden orada tekrar tanımlanmıyor. */
#dbsTable .dbs-exam-group{width:114px;}
body.dark-mode #dbsTable thead th.dbs-f{background-color:#232529;}
/* Devamsızlık Ana Liste (çarşaf görünüm): No/Ad Soyad/Sınıf sütunları sağa
   kaydırıldığında sabit kalır (bkz. dbsTable'daki aynı yaklaşım), tarih
   sütunları dar ve ortalanmış; satıra tıklanabilir olduğu imleçle belli olur. */
#dalTable th.dal-count, #dalTable td.dal-count{width:90px;text-align:center;}
#dalTable tbody tr:nth-child(even){background:var(--page-bg);}
#dalTable tbody tr.dal-row{cursor:pointer;}
#dalTable tbody tr.dal-row:hover td{background:#eef1f5;}
#dalTable .dal-cell{font-weight:700;color:var(--blue);}
body.dark-mode #dalTable tbody tr:nth-child(even){background:#20222a;}
body.dark-mode #dalTable tbody tr.dal-row:hover td{background:#25272d;}
/* Öğrenci Bazında Sınav Özeti: çok sütunlu (her ders 5 alt sütun) olduğu
   için kompakt bir görünüm — küçük padding/font, başlıklarda satır kaydırma
   (nowrap yerine wrap; yoksa uzun ders/sınav adları tabloyu binlerce piksel
   genişletiyor) — ve sağa kaydırıldığında #/Sınav Adı/Tarih sütunları sabit
   kalır (bkz. #dbsTable'daki aynı .dbs-f yaklaşımı) ki öğrenci/sınav kimliği
   kaybolmasın. Ayrıca her ders/grup bloğunun (SS/D/Y/B/N) başlangıç-bitişinde
   ve SS sütununun iki yanında çizgi ile blok sınırları netleştirilir. */
#ooTable{table-layout:auto;}
#ooTable th, #ooTable td{padding:2px 4px;font-size:10px;line-height:1.25;letter-spacing:0;}
#ooTable th{white-space:normal;} /* başlıklarda satır kaydırma — yoksa uzun ders/sınav adları tabloyu binlerce piksel genişletiyor */
#ooTable td{white-space:nowrap;} /* gövde hücreleri tek satırda kalır, satırlar ikinci satıra kaymaz */
/* Satır takibini kolaylaştırmak için zebra deseni: tek satır beyaz, çift
   satır açık mavi — sabit (sticky) sütunlar bu rengi background-color:inherit
   ile satırdan devralır, bu yüzden AYRICA opak bir zemin rengine kavuşup
   şeffaflık (kaydırırken yazıların birbirine karışması) sorunu da çözülür. */
#ooTable tbody tr:nth-child(odd){background:var(--card-bg);}
#ooTable tbody tr:nth-child(even){background:var(--blue-light);}
#ooTable tbody tr.total-row{background:var(--page-bg);}
#ooTable .oo-f{position:sticky;background-color:inherit;z-index:3;}
#ooTable thead th.oo-f{z-index:7;background-color:#f7f8fa;}
#ooTable .oo-f-span{position:sticky;left:0;background-color:inherit;z-index:3;}
#ooTable .oo-f1{left:0;width:22px;min-width:22px;max-width:22px;}
#ooTable .oo-f2{left:22px;width:120px;min-width:120px;max-width:120px;text-align:left;overflow:hidden;text-overflow:ellipsis;}
#ooTable .oo-f3{left:142px;width:54px;min-width:54px;max-width:54px;box-shadow:2px 0 4px rgba(0,0,0,.08);}
body.dark-mode #ooTable thead th.oo-f{background-color:#232529;}
#ooTable .oo-ss, #ooTable .oo-blok{border-left:1.5px solid var(--text-muted);border-right:1.5px solid var(--text-muted);}
#ooTable .oo-end{border-right:1.5px solid var(--text-muted);}
/* Faturalar sayfası — öğrenci x ay matrisi, aynı sabit-sütun (sticky) deseni.
   KRİTİK: .data-table'ın genel border-collapse:collapse kuralı, tablo
   hücrelerinde position:sticky'nin çalışmasını engelliyor (bilinen bir
   tarayıcı kısıtı) — bu yüzden yalnızca bu tabloda separate'e çevrilir. */
/* Faturalar — kompakt üst kontrol çubuğu: başlık + özet rakamlar + filtreler
   tek satırda, sayfanın büyük çoğunluğunu asıl tabloya bırakır. */
.ft-cbar{display:flex;align-items:center;flex-wrap:nowrap;gap:8px 14px;background:#fff;border:1px solid var(--border);border-radius:8px;padding:8px 12px;margin-bottom:8px;overflow-x:auto;}
body.dark-mode .ft-cbar{background:#1c1e23;border-color:#31333a;}
.ft-cbar-title{font-size:15px;font-weight:700;white-space:nowrap;display:flex;align-items:center;gap:5px;flex:0 0 auto;}
.ft-cbar-hint{cursor:help;color:var(--text-muted);font-size:13px;border:1px solid var(--border);border-radius:50%;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;font-weight:400;flex:0 0 auto;}
.ft-cbar-stats{display:flex;gap:12px;flex:0 0 auto;}
.ft-stat{font-size:10.5px;color:var(--text-muted);white-space:nowrap;display:flex;flex-direction:column;line-height:1.3;}
.ft-stat b{font-size:13px;color:var(--text);font-weight:700;}
.ft-stat-green b{color:var(--green);}
.ft-stat-red b{color:var(--red);}
.ft-cbar-filters{display:flex;align-items:center;gap:8px;margin-left:auto;flex:0 0 auto;}
.ft-cbar-filters input[type=text]{padding:6px 10px;font-size:13px;border:1px solid var(--border);border-radius:5px;width:230px;background:var(--card-bg,#fff);color:var(--text);}
.ft-cbar-filters select{padding:5px 6px;font-size:11.5px;border:1px solid var(--border);border-radius:5px;background:var(--card-bg,#fff);color:var(--text);width:100px;}
.ft-cbar-filters select.filter-active{background:var(--green-light)!important;border-color:var(--green);}
.ft-cbar-check{display:flex;align-items:center;gap:4px;font-size:11px;white-space:nowrap;color:var(--text-muted);flex:0 0 auto;}
.ft-cbar-check input{margin:0;}
#faturaTable{border-collapse:separate;border-spacing:0;}
#faturaTable th{white-space:normal;}
#faturaTable td{white-space:nowrap;}
#faturaTable tbody tr.ft-grp-a{background:var(--card-bg);}
#faturaTable tbody tr.ft-grp-b{background:var(--blue-light);}
#faturaTable tbody tr.ft-fatura-row td{border-top:none;font-size:12px;}
#faturaTable .ft-f{position:sticky;background-color:inherit;z-index:3;}
#faturaTable thead th.ft-f{z-index:8;background-color:#f7f8fa;top:0;}
#faturaTable .ft-f1{left:0;width:72px;min-width:72px;max-width:72px;}
#faturaTable .ft-f2{left:72px;width:180px;min-width:180px;max-width:180px;text-align:left;overflow:hidden;text-overflow:ellipsis;}
#faturaTable .ft-f3{left:252px;width:130px;min-width:130px;max-width:130px;text-align:left;overflow:hidden;text-overflow:ellipsis;box-shadow:2px 0 4px rgba(0,0,0,.08);}
body.dark-mode #faturaTable thead th.ft-f{background-color:#232529;}
/* Dikey kaydırmada sabit kalması gereken, gerçek sütun başlıklarını taşıyan
   satır — üstündeki 3 özet satırı (ft-ozet-satir) BİLEREK sabitlenmiyor,
   sayfa aşağı kaydırılırken doğal biçimde kaybolup yerini başlığa bırakıyor. */
#faturaTable thead tr:last-child th:not(.ft-f){position:sticky;top:0;z-index:6;background:#f7f8fa;}
body.dark-mode #faturaTable thead tr:last-child th:not(.ft-f){background:#232529;}
#faturaTableWrap{overflow:auto;}
.ft-top-scroll-wrap{overflow-x:auto;overflow-y:hidden;height:14px;border:1px solid var(--border);border-bottom:none;background:#fff;}
.ft-top-scroll-inner{height:1px;}
body.dark-mode .ft-top-scroll-wrap{background:#1c1e23;border-color:#31333a;}
#faturaTable thead tr.ft-ozet-satir{background:#f7f8fa;}
body.dark-mode #faturaTable thead tr.ft-ozet-satir{background:#232529;}
.ft-ozet-label{text-align:right;font-weight:700;font-size:11px;color:var(--text-muted);padding-right:10px;white-space:nowrap;}
/* Sağa yatay kaydırmada da görünür kalsınlar diye özet satırı etiketleri
   (Taksit/Faturalanan/Eksik Toplamı) sola sabitlenir — kendi arka planını
   AÇIKÇA taşır (inherit değil), aksi halde altından kayan ay hücreleri
   görünür. */
#faturaTable thead tr.ft-ozet-satir .ft-ozet-label.ft-f{left:0;z-index:9;background:#f7f8fa;}
body.dark-mode #faturaTable thead tr.ft-ozet-satir .ft-ozet-label.ft-f{background:#232529;}
.ft-ozet-deger{text-align:right;font-weight:700;font-size:11px;white-space:nowrap;}
.ft-ozet-kirmizi{color:var(--red);}
.ft-ay-cell{cursor:pointer;text-align:right;font-weight:600;transition:filter .1s;}
.ft-ay-cell:hover{filter:brightness(0.94);}
.ft-ay-bilgi{text-align:right;color:var(--text-muted);cursor:default;}
.ft-ay-tahsil{text-align:right;color:var(--green);cursor:default;font-weight:600;background:var(--green-light);}
.ft-ay-ok{background:var(--green-light);color:var(--green);}
.ft-ay-eksik{background:var(--red-light);color:var(--red);}
.ft-ay-bos{color:#bbb;text-align:right;cursor:default;}
.ft-ay-bos-alt{background:transparent;}
.ft-alt-satir{color:var(--text-muted);font-style:italic;font-size:12px;}
#faturaTable tbody tr.ft-fatura-row td.ft-satir-baslik{color:var(--text);font-weight:700;font-size:14px;}
.ft-fatura-no{font-size:10px;font-weight:400;opacity:.85;}
/* Kırtasiye'den sonraki Toplam sütununu, kimlik/hizmet bölümünü aylık
   verilerden ayıran bir çizgiyle kapatır. */
.ft-toplam-end{border-right:2px solid var(--text-muted);}
.fatura-ay-secici{display:flex;flex-direction:column;gap:10px;max-height:240px;overflow-y:auto;border:1px solid var(--border);border-radius:6px;padding:10px;margin:8px 0;}
.fatura-ay-yil-label{font-size:11px;font-weight:700;color:var(--text-muted);margin-bottom:4px;text-transform:uppercase;}
.fatura-ay-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;}
.fatura-ay-chip{display:flex;align-items:center;justify-content:center;gap:4px;border:1px solid var(--border);border-radius:5px;padding:5px 4px;font-size:11px;cursor:pointer;}
.fatura-ay-chip.checked{background:var(--green-light);border-color:var(--green);color:var(--green);font-weight:700;}
.fatura-ay-chip.disabled{opacity:.5;cursor:not-allowed;background:var(--red-light);}
.fatura-ay-chip input{margin:0;}
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-top:none;background:#fff;}
.table-wrap-scroll{overflow:auto;}
.table-wrap-scroll .data-table thead th{position:sticky;top:0;z-index:5;}
.pill{padding:2px 9px;border-radius:20px;font-size:11px;font-weight:700;}
.pill-green{background:#e4f6ea;color:var(--green);}
.pill-gray{background:#eee;color:#777;}
.pill-red{background:#fbe4e6;color:var(--red);}
.pill-blue{background:#e3ecf9;color:var(--blue);}
.pill-orange{background:#fdf1de;color:var(--orange);}
.pill-pink{background:var(--pink-bg);color:var(--pink-text);}
.pill-durum-btn{border:none;cursor:pointer;font:inherit;}
/* Kanaat Notları (Rehberlik) — çok gizli belge kartı */
.kanaat-sheet{background:#fff;border:1px solid var(--border);border-radius:4px;padding:18px;margin-bottom:14px;}
.kanaat-header{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid var(--text);padding-bottom:10px;margin-bottom:16px;font-weight:700;}
.kanaat-badge{background:var(--red);color:#fff;padding:4px 12px;border-radius:4px;font-size:12px;font-weight:700;white-space:nowrap;}
.kanaat-radio-row{display:flex;flex-wrap:wrap;gap:16px;}
.badge-count{
  background:var(--red);color:#fff;border-radius:50%;font-size:9.5px;width:15px;height:15px;
  display:inline-flex;align-items:center;justify-content:center;position:relative;top:-6px;left:2px;
}
.section-grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;align-items:start;}
.section-grid2{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;align-items:start;}
@media(max-width:1100px){.section-grid3{grid-template-columns:1fr;}.section-grid2{grid-template-columns:1fr;}}
.tab-group{display:flex;border-bottom:1px solid var(--border);margin-bottom:0;flex-wrap:wrap;}
.tab-group div{padding:8px 14px;font-size:12.5px;cursor:pointer;color:var(--text-muted);border-bottom:2px solid transparent;font-weight:600;}
.tab-group div.active{color:var(--blue);border-bottom:2px solid var(--blue);}
.taksit-head{display:flex;justify-content:space-between;align-items:center;padding:10px 2px;font-size:12px;color:var(--text-muted);}
.taksit-head b{color:var(--text);}
.row-unpaid{background:var(--pink-bg);}
.row-unpaid td{color:var(--pink-text);}
.row-paid{background:#e5f7ec;}
.row-paid td{color:#1f7a44;}
.stat-block{border-right:1px solid var(--border);padding:0 22px 0 0;}
.stat-block:last-child{border-right:none;}
.stat-num{font-size:26px;font-weight:700;}
.stat-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;margin-top:2px;}
.stat-breakdown{display:flex;gap:14px;margin-top:10px;font-size:11px;color:var(--text-muted);}
.stat-breakdown b{display:block;color:var(--text);font-size:12px;}
.progress-bar{height:6px;background:#eee;border-radius:4px;margin-top:8px;overflow:hidden;}
.progress-bar div{height:100%;}
.toast{
  position:fixed;bottom:24px;right:24px;background:var(--black);color:#fff;padding:12px 18px;border-radius:5px;
  font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.3);z-index:999;opacity:0;transform:translateY(10px);transition:all .25s;
}
.toast.show{opacity:1;transform:translateY(0);}
.hint{font-size:11px;color:var(--text-muted);margin-top:4px;}

/* -------- Raporlar: şık tablo görünümü -------- */
.rapor-table{font-variant-numeric:tabular-nums;}
.rapor-table th.num, .rapor-table td.num{text-align:right;}
.rapor-table tbody tr:nth-child(odd){background:rgba(0,0,0,.015);}
body.dark-mode .rapor-table tbody tr:nth-child(odd){background:rgba(255,255,255,.02);}
.rapor-table tbody tr.total-row, .rapor-table tbody tr.total-row td{
  background:var(--blue-light);font-weight:700;border-top:2px solid var(--border);
}
body.dark-mode .rapor-table tbody tr.total-row, body.dark-mode .rapor-table tbody tr.total-row td{background:#1d2a3d;}
/* .rapor-table'ın zebra-şerit kuralı (yukarıda), .row-paid/.row-unpaid ile aynı
   özgüllükte (specificity) olduğundan sıradaki tanım kazanıyordu — bu iki satır,
   .rapor-table içindeki ödenen/ödenmemiş satırların doğru renklenmesini garanti eder. */
.rapor-table tbody tr.row-paid{background:#e5f7ec;}
.rapor-table tbody tr.row-paid td{color:#1f7a44;}
.rapor-table tbody tr.row-unpaid{background:var(--pink-bg);}
.rapor-table tbody tr.row-unpaid td{color:var(--pink-text);}
body.dark-mode .rapor-table tbody tr.row-paid{background:#173626;}
body.dark-mode .rapor-table tbody tr.row-paid td{color:#7fd8a5;}
body.dark-mode .rapor-table tbody tr.row-unpaid{background:#3a1c26;}
body.dark-mode .rapor-table tbody tr.row-unpaid td{color:#f0a9c0;}
.rapor-table thead th{position:sticky;top:0;}
.rapor-toplam-tikla{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;}
.rapor-toplam-tikla:hover{color:var(--blue);}
.ta-totals-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.ta-total-chip{flex:1;min-width:130px;background:var(--page-bg);border-radius:10px;padding:9px 12px;display:flex;flex-direction:column;gap:2px;}
.ta-total-chip span{font-size:9.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;}
.ta-total-chip b{font-size:14px;color:var(--text);}
.ta-total-chip-purple b{color:#8b5cf6;}
.ta-total-chip-pink b{color:var(--pink-text);}
.ta-hizmet-breakdown{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--text-muted);margin:-2px 0 12px;padding:8px 10px;background:var(--page-bg);border-radius:8px;}
.ta-hizmet-breakdown b{color:var(--text);}
.ta-hizmet-breakdown span{white-space:nowrap;}
.odeme-plani-grup-row td{background:#f3f4f6;font-weight:700;color:var(--text);font-size:12px;padding:8px 10px;}
body.dark-mode .odeme-plani-grup-row td{background:#202227;}
.rapor-grouped-row{cursor:pointer;}
.rapor-grouped-row:hover td{background:var(--blue-light);}
body.dark-mode .rapor-grouped-row:hover td{background:#1d2a3d;}

/* -------- Raporlar: Dashboard -------- */
.dash-hero-card{padding:18px 20px;}
.dash-hero-row{display:flex;flex-wrap:wrap;gap:0;}
.dash-hero-tile{flex:1;min-width:150px;border-right:1px solid var(--border);padding:0 18px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.dash-hero-tile:last-child{border-right:none;}
.dash-hero-tile:first-child{padding-left:0;}
.dash-hero-tile-main{min-width:0;}
.dash-hero-val{font-size:26px;font-weight:700;color:var(--text);}
.dash-hero-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;margin-top:2px;letter-spacing:.2px;}
.dash-hero-gauge-wrap{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;width:84px;}
.dash-hero-gauge-wrap .dash-gauge{width:84px;display:block;}
.dash-hero-gauge-pct{font-size:16px;font-weight:800;letter-spacing:.2px;margin-top:1px;}
.dash-kurum-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:1000px){.dash-kurum-grid{grid-template-columns:1fr;}}
.dash-kurum-card{
  background:var(--card-bg,#fff);border:1px solid var(--border);border-radius:14px;
  padding:20px;margin-bottom:16px;position:relative;overflow:hidden;
  box-shadow:0 1px 3px rgba(0,0,0,.05);transition:box-shadow .2s ease,transform .2s ease;
}
.dash-kurum-card::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--dk-color,var(--blue)),var(--dk-color-light,var(--blue-light)));
}
.dash-kurum-card:hover{box-shadow:0 10px 28px rgba(0,0,0,.09);transform:translateY(-2px);}
.dash-kurum-head{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.dash-kurum-icon{
  width:44px;height:44px;border-radius:12px;flex-shrink:0;font-size:21px;
  display:flex;align-items:center;justify-content:center;background:var(--dk-color-light,var(--blue-light));
}
.dash-kurum-title{font-weight:800;font-size:16px;letter-spacing:-.2px;color:var(--text);}
.dash-kurum-sub{font-size:11px;color:var(--text-muted);margin-top:1px;}
.dash-kpi-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:16px;}
.dash-kpi{display:flex;align-items:center;gap:8px;background:var(--page-bg);border-radius:10px;padding:9px 10px;}
.dash-kpi-icon{font-size:15px;line-height:1;flex-shrink:0;opacity:.85;}
.dash-kpi-val{font-size:17px;font-weight:800;color:var(--text);line-height:1.15;}
.dash-kpi-label{font-size:9.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;margin-top:1px;}
.dash-meter{margin-bottom:14px;}
.dash-meter-label{display:flex;justify-content:space-between;font-size:11px;color:var(--text-muted);margin-bottom:6px;}
.dash-meter-label b{color:var(--text);font-size:12.5px;}
.dash-meter-track{height:8px;border-radius:6px;background:var(--page-bg);overflow:hidden;}
.dash-meter-fill{height:100%;border-radius:6px;background:linear-gradient(90deg,var(--dk-color-light,var(--blue-light)),var(--dk-color,var(--blue)));transition:width .4s ease;}
.dash-mini-row{display:flex;gap:10px;}
.dash-mini-chip{flex:1;border-radius:10px;padding:0;display:flex;align-items:stretch;overflow:hidden;}
.dash-mini-chip-main{flex:0 0 66.6667%;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:9px 10px;border-right:1px solid rgba(0,0,0,.08);}
.dash-mini-chip-pct{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;padding:4px 6px;}
.dash-gauge{width:64px;height:auto;display:block;}
.dash-gauge-text{font-size:19px;font-weight:800;}
.dash-mini-chip span{font-size:9.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;}
.dash-mini-chip b{font-size:13px;white-space:nowrap;}
body.dark-mode .dash-mini-chip-main{border-right-color:rgba(255,255,255,.12);}
.dash-mini-chip-green{background:var(--green-light);}
.dash-mini-chip-green b{color:var(--green);}
body.dark-mode .dash-mini-chip-green{background:#173a29;}
body.dark-mode .dash-mini-chip-green b{color:#6fd99a;}
.dash-mini-chip-pink{background:var(--pink-bg);}
.dash-mini-chip-pink b{color:var(--pink-text);}
.dash-mini-chip-purple{background:#efe9fd;}
.dash-mini-chip-purple b{color:#7c4de0;}
body.dark-mode .dash-mini-chip-purple{background:#2a2140;}
body.dark-mode .dash-mini-chip-purple b{color:#b39ff5;}
.dash-compare-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:22px;}
@media(max-width:900px){.dash-compare-grid{grid-template-columns:1fr;}}
.dash-compare-title{font-size:11.5px;color:var(--text-muted);font-weight:700;margin-bottom:10px;text-transform:uppercase;letter-spacing:.2px;}
.dash-compare-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:12px;}
.dash-compare-name{width:38px;color:var(--text-muted);flex-shrink:0;}
.dash-compare-track{flex:1;height:14px;background:var(--page-bg);border-radius:0 3px 3px 0;overflow:hidden;}
.dash-compare-fill{height:100%;border-radius:0 3px 3px 0;transition:width .3s;}
.dash-compare-val{width:34px;text-align:right;color:var(--text);flex-shrink:0;}
.chart-legend{display:flex;gap:18px;margin-bottom:6px;font-size:11.5px;color:var(--text-muted);}
.chart-legend .legend-item{display:flex;align-items:center;gap:6px;}
.chart-legend .legend-item i{width:10px;height:10px;border-radius:2px;display:inline-block;}

.pwd-input-wrap{position:relative;}
.pwd-input-wrap input{padding-right:34px;}
.pwd-toggle-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:15px;padding:5px 6px;line-height:1;color:var(--text-muted);}
.pwd-toggle-btn:hover{color:var(--text);}
.checkbox-line{display:flex;align-items:center;gap:6px;font-weight:400;font-size:12.5px;color:var(--text);}
.checkbox-line input{width:auto;}
/* Hangi seçeneğe tıklandığı görsel olarak belli olsun diye: işaretli
   kutucuk satırının zemini açık yeşile döner (Mesajlar/Ödevler/SMS gibi
   kişi/seçenek seçim listelerinde ortak kullanılır). */
.checkbox-line:has(input:checked){background:var(--green-light);border-radius:4px;padding:2px 4px;margin:-2px -4px;}
.col-picker-row:has(input:checked){background:var(--green-light) !important;}
.data-table tbody tr:has(input[type=checkbox]:checked){background:var(--green-light) !important;}
.placeholder-box{
  background:#fff;border:1px dashed #c7cbd3;border-radius:6px;padding:40px 20px;text-align:center;color:var(--text-muted);
}
.placeholder-box b{display:block;color:var(--text);font-size:15px;margin-bottom:6px;}
.svc-row{display:grid;grid-template-columns:80px 70px 1fr;gap:8px;align-items:center;margin-bottom:8px;}
.svc-row span{font-size:12px;}
.student-card-box{background:#fff;border:1px solid var(--border);border-radius:4px;padding:16px;}
.student-card-box h3{margin:0 0 4px;font-size:16px;}
.student-card-box .meta{font-size:12px;color:var(--text-muted);line-height:1.9;margin-top:8px;}
.link-strong{font-weight:600;}
.role-badge{display:inline-block;background:var(--blue-light);color:var(--blue);font-size:10.5px;padding:2px 7px;border-radius:3px;font-weight:700;margin-left:6px;}

/* ---------- TARİH SEÇİCİ (mini takvim) ---------- */
.date-input-wrap{display:flex;gap:4px;}
.date-input-wrap input{flex:1;}
.date-btn{flex:0 0 auto;padding:6px 10px;border:1px solid #ccd1d9;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;line-height:1;}
.date-btn:hover{background:#f4f5f7;}
.date-btn:disabled{background:#f0f1f3;color:#bbb;cursor:not-allowed;}
.dp-popup{position:absolute;z-index:4500;background:#fff;border:1px solid #ccd1d9;border-radius:6px;box-shadow:0 12px 34px rgba(0,0,0,.2);padding:10px;width:232px;}
.dp-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-weight:700;font-size:12.5px;}
.dp-header button{background:none;border:none;cursor:pointer;font-size:15px;padding:2px 10px;color:var(--blue);border-radius:3px;}
.dp-header button:hover{background:var(--blue-light);}
.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;font-size:11.5px;text-align:center;}
.dp-grid .dow{color:#999;font-weight:700;padding:2px 0;}
.dp-grid .day{padding:5px 0;border-radius:4px;cursor:pointer;}
.dp-grid .day:hover{background:var(--blue-light);}
.dp-grid .day.muted{color:#ccc;cursor:default;}
.dp-grid .day.muted:hover{background:none;}
.dp-grid .day.selected{background:var(--blue);color:#fff;font-weight:700;}

/* ---------- MODAL (Sınıf formu vb.) ---------- */
.modal-overlay{position:fixed;inset:0;background:rgba(20,20,25,.45);z-index:3000;display:flex;align-items:center;justify-content:center;}
.modal-box{background:#fff;border-radius:8px;padding:22px;width:380px;max-width:92vw;max-height:88vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.3);}
.sidebar-backdrop{display:none;}
.sidebar-backdrop.show{display:block;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:140;}
.modal-box h3{margin:0 0 16px;font-size:16px;}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;}

/* ---------- PASİF DURUM ---------- */
.pasif-mode input[type=text],.pasif-mode input[type=number],.pasif-mode input[type=date],
.pasif-mode input[type=email],.pasif-mode input[type=tel],.pasif-mode select,.pasif-mode textarea{
  background:#e7e8ea;
}

/* ---------- ÖĞRENCİ DÜZENLE ARAÇ ÇUBUĞU ---------- */
.ogr-toolbar{background:#fff;border:1px solid var(--border);border-radius:4px;padding:8px 10px;display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.ogr-toolbar .btn:disabled{opacity:.45;cursor:not-allowed;}
.ogr-toolbar .btn:disabled:hover{background:#fff;}
.info-box{background:var(--blue-light);border:1px solid #cfe0f5;border-radius:4px;padding:9px 12px;font-size:12px;color:var(--text);margin-bottom:12px;}

/* ---------- SMS BAKİYE KUTUSU (Devamsızlık / Mesajlar sayfa üstü) ---------- */
.sms-kredi-box{display:flex;align-items:center;gap:28px;flex-wrap:wrap;background:var(--blue-light);border:1px solid #cfe0f5;border-radius:10px;padding:14px 20px;margin-bottom:14px;}
.sms-kredi-item{display:flex;flex-direction:column;}
.sms-kredi-item b{font-size:30px;font-weight:800;line-height:1.1;color:var(--text);}
.sms-kredi-item span{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;margin-top:3px;}
.sms-kredi-item.dusuk b{color:var(--red);}
body.dark-mode .sms-kredi-box{background:#1d2a3d;border-color:#2c3f57;}
.dogum-gunu-badge{display:inline-flex;align-items:center;justify-content:center;background:var(--red);color:#fff;border-radius:50%;min-width:20px;height:20px;padding:0 4px;font-size:11px;font-weight:700;margin-left:7px;vertical-align:middle;}

/* ---------- KAYAN TABLO BAŞLIĞI (dikey scroll'da başlıklar sabit kalır) ---------- */
.data-table.sticky-head thead th{position:sticky;top:0;z-index:2;}

/* ---------- SIRALANABİLİR TABLO BAŞLIKLARI (Başlangıç / Öğrenciler) ---------- */
.data-table th.sortable-th{cursor:pointer;user-select:none;position:relative;}
.data-table th.sortable-th:hover{background:#eef1f5;color:#2a2f38;}
body.dark-mode .data-table th.sortable-th:hover{background:#2a2d34;}
.data-table th.sortable-th.sorted{color:var(--blue);}
body.dark-mode .data-table th.sortable-th.sorted{color:#6fa8e8;}
.data-table th.sortable-th .sort-arrow{margin-left:3px;font-size:9px;opacity:.85;}

/* ---------- FOTOĞRAF ALANI (Öğrenci / Personel) ---------- */
.photo-thumb{
  position:relative;flex:0 0 auto;border:2px solid var(--border);background:var(--blue);
  display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer;
  color:#fff;transition:opacity .15s;
}
.photo-thumb:hover{opacity:.85;}
.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.photo-thumb .photo-thumb-icon{font-size:20px;line-height:1;}
.photo-thumb .photo-thumb-badge{
  position:absolute;bottom:0;right:0;left:0;background:rgba(0,0,0,.55);color:#fff;
  font-size:9px;text-align:center;padding:2px 0;letter-spacing:.2px;
}
.photo-preview-box{
  width:200px;height:200px;border-radius:8px;overflow:hidden;background:var(--page-bg);
  border:1px solid var(--border);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;
}
.photo-preview-box img{width:100%;height:100%;object-fit:cover;}
.photo-preview-empty{color:var(--text-muted);font-size:12px;text-align:center;padding:0 16px;}

/* ---------- GENİŞ MODAL / MATRİX (Personel, Devamsızlık) ---------- */
.modal-box.wide{width:680px;max-width:92vw;max-height:82vh;overflow:auto;}
.modal-box.fullscreen{width:90vw;height:94vh;max-width:1300px;max-height:94vh;overflow:auto;}
.sv-stat-chip{background:var(--green-light);border-radius:6px;padding:8px 16px;}
/* Çarşaf Liste: kompakt, çok sütunlu rapor tablosu — okunabilirlik için
   dar hücreler ve klasik "çarşaf liste" turkuaz zebra deseni. */
.carsaf-table th,.carsaf-table td{font-size:11px;padding:3px 5px;}
.carsaf-table tbody tr.carsaf-alt td{background:#d7f5f5;}
.carsaf-table td.center,.carsaf-table th.center{text-align:center;}
body.dark-mode .carsaf-table tbody tr.carsaf-alt td{background:#0f3a3a;}
.carsaf-table thead th{position:sticky;top:0;background:#f2f4f6;z-index:2;}
body.dark-mode .carsaf-table thead th{background:#232529;}
/* Sınav Karnesi: basılabilir tek öğrenci sonuç belgesi */
.karne-sheet{background:var(--card-bg,#fff);border:1px solid var(--border);border-radius:6px;padding:16px;}
.karne-header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid #333;padding-bottom:8px;flex-wrap:wrap;gap:6px;}
.karne-cols{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;align-items:start;}
.karne-ders-table th,.karne-ders-table td{font-size:11.5px;padding:4px 6px;}
.karne-chart-wrap{margin-top:14px;}
.karne-chart{display:flex;gap:8px;align-items:flex-end;height:110px;border-bottom:1px solid var(--border);padding:0 4px;overflow-x:auto;}
.karne-chart-col{display:flex;flex-direction:column;align-items:center;flex:0 0 auto;width:44px;}
.karne-chart-bars{display:flex;align-items:flex-end;gap:2px;height:90px;width:100%;}
.karne-bar{width:8px;border-radius:2px 2px 0 0;}
.karne-bar-ogr{background:#d9412f;}
.karne-bar-sinif{background:#2e9e5b;}
.karne-bar-kurum{background:#3b6fd4;}
.karne-bar-genel{background:#e0a02e;}
.karne-chart-label{font-size:9px;margin-top:4px;color:var(--text-muted,#777);text-align:center;line-height:1.1;}
.karne-chart-legend{display:flex;gap:12px;margin-top:8px;font-size:11px;flex-wrap:wrap;}
.karne-chart-legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:4px;vertical-align:middle;}
.karne-konu-baslik-ana{font-weight:700;font-size:12px;border-bottom:2px solid #333;padding-bottom:4px;margin-bottom:8px;}
.karne-konu-blok{margin-bottom:10px;}
.karne-konu-baslik{font-weight:600;font-size:11.5px;background:#eef1f4;padding:3px 6px;}
body.dark-mode .karne-konu-baslik{background:#232529;}
.karne-konu-table{width:100%;border-collapse:collapse;font-size:10.5px;}
.karne-konu-table th,.karne-konu-table td{border:1px solid var(--border);padding:2px 5px;}
.karne-konu-table th{background:#f7f8fa;text-align:left;}
body.dark-mode .karne-konu-table th{background:#1c1e23;}
.karne-konu-table td.num,.karne-konu-table th.num{text-align:right;}
@media(max-width:900px){ .karne-cols{grid-template-columns:1fr;} }
/* Karne: soru bazlı Cevap Anahtarı Karşılaştırması — her hücre bir soru,
   üstte soru no, altta öğrencinin işaretlediği harf; yanlış kırmızı, boş gri. */
.karne-cevap-blok{margin-top:14px;}
.karne-cevap-ders-blok{margin-bottom:10px;}
.karne-cevap-table{border-collapse:collapse;}
.karne-cevap-table td{border:1px solid var(--border);width:24px;text-align:center;font-size:9.5px;padding:2px 0;line-height:1.3;}
.karne-cevap-soru{background:#eaf6ec;color:#1b7a43;}
.karne-cevap-soru.karne-cevap-yanlis{background:#fdeaea;color:var(--red);font-weight:700;}
.karne-cevap-soru.karne-cevap-bos{background:#f0f1f2;color:var(--text-muted);}
.karne-cevap-soru.karne-cevap-yok{background:#f7f7f8;color:var(--text-muted);border-style:dashed;}
body.dark-mode .karne-cevap-soru{background:#173a29;color:#6fd99a;}
body.dark-mode .karne-cevap-soru.karne-cevap-yanlis{background:#3a1c1c;}
body.dark-mode .karne-cevap-soru.karne-cevap-bos{background:#232529;}
body.dark-mode .karne-cevap-soru.karne-cevap-yok{background:#1c1e21;}
/* Soru Frekans Analizi: her hücrede yüzde genişliğinde renkli bar + üstünde
   yüzde metni — 0% olan hücreler bar yerine "-" göstermek üzere JS'te atlanır. */
.sf-bar-wrap{position:relative;width:80px;height:16px;background:var(--page-bg);border-radius:3px;overflow:hidden;}
.sf-bar-fill{position:absolute;left:0;top:0;height:100%;border-radius:3px;}
.sf-bar-label{position:relative;z-index:1;display:block;text-align:center;font-size:10px;line-height:16px;font-weight:600;color:var(--text);}
body.dark-mode .sf-bar-wrap{background:#20222a;}
/* Soru Frekans Analizi: sayfa aşağı kaydırılırken filtre kutuları ve tablo
   başlığı en üstte sabit kalır (position:sticky) — tablo başlığının Y
   konumu, filtre kutusunun (ör. "Kopyala" butonu görünüp kaybolduğunda
   değişebilen) gerçek yüksekliğine göre JS ile ölçülüp --sf-toolbar-h'a
   yazılıyor (bkz. afterRenderSoruFrekans, js/24-page-sinavlar.js). "Konu"
   sütunu ise başlıktaki tutamaçtan sürüklenerek genişletilip daraltılabilir
   (--sf-konu-w, bkz. sfKonuResizeBaslat) — uzun kazanım metinleri için. */
#sfToolbar{position:sticky;top:0;z-index:10;background:var(--card-bg,#fff);padding-top:10px;padding-bottom:10px;margin-bottom:0;box-shadow:0 2px 4px rgba(0,0,0,.04);}
/* KRİTİK CSS kısıtı: .table-wrap{overflow-x:auto} (yatay kaydırma için,
   geniş tabloda gerekli) her tarayıcıda overflow-y'yi de zımnen kaydırılabilir
   hale getiriyor (bir eksen "visible" olmayınca diğeri "visible" kalamıyor —
   overflow-y'yi clip/visible/hidden ne yaparsak yapalım hep "auto"ya dönüyor,
   denendi). Bu da içindeki position:sticky başlığın SAYFAYA değil bu dar
   sarmalayıcıya göre "sabitlenmesine" yol açıp yanlış yerde donmasına neden
   oluyordu. Çözüm: yatay kaydırmayı KORUYUP tabloyu kendi sınırlı yükseklikte
   DİKEY kaydırma kutusuna alıyoruz (#dbsTable'daki .table-wrap-scroll ile
   aynı, kanıtlanmış teknik) — başlık artık SAYFAYA değil bu kutunun EN
   ÜSTÜNE (top:0) sabitleniyor, kutu da sabit araç çubuğunun hemen altından
   başlayıp kalan ekran yüksekliğini dolduruyor. */
.sf-table-wrap{max-height:calc(100vh - var(--sf-toolbar-h,64px) - 48px);overflow:auto;}
#sfTable thead th{position:sticky;top:0;z-index:5;background:#f7f8fa;}
body.dark-mode #sfTable thead th{background:#232529;}
/* table-layout:auto, canlı bir CSS değişkeni değişikliğinde sütun
   genişliğini yeniden hesaplamıyor (tarayıcılar ilk yerleşimde hesapladığı
   sütun genişliklerini önbelleğe alıyor) — bu yüzden "Konu" sütununun
   sürükleyerek gerçekten büyüyüp küçülebilmesi için tabloyu fixed yerleşime
   alıp diğer sütunlara da (içerikleriyle uyumlu) sabit genişlik veriyoruz;
   aynı teknik #dbsTable/#ooTable'da da kullanılıyor. */
#sfTable{table-layout:fixed;}
#sfTable th:nth-child(1), #sfTable td:nth-child(1){width:34px;}
#sfTable th:nth-child(2), #sfTable td:nth-child(2){width:44px;}
#sfTable th:nth-child(n+4), #sfTable td:nth-child(n+4){width:100px;}
#sfTable .sf-konu-col{width:var(--sf-konu-w,220px);min-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#sfTable th.sf-konu-col{overflow:visible;} /* position:sticky (üstteki #sfTable thead th kuralından) zaten konumlandırma bağlamı sağlıyor, tutamaç (position:absolute) buna göre yerleşiyor */
.sf-resize-handle{position:absolute;top:0;right:0;bottom:0;width:9px;cursor:col-resize;user-select:none;}
.sf-resize-handle::after{content:'';position:absolute;top:4px;bottom:4px;right:3px;width:2px;background:var(--border);border-radius:1px;}
.sf-resize-handle:hover::after, .sf-resize-handle:active::after{background:var(--blue);}
/* Sınav Karnesi: öğrenci arama kutusu açılır sonuç listesi */
.karne-arama-sonuc{position:absolute;top:100%;left:0;right:0;z-index:20;background:var(--card-bg,#fff);border:1px solid var(--border);border-top:none;border-radius:0 0 6px 6px;max-height:280px;overflow-y:auto;box-shadow:0 8px 20px rgba(0,0,0,.15);}
.karne-arama-satir{padding:7px 10px;cursor:pointer;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:1px;}
.karne-arama-satir:last-child{border-bottom:none;}
.karne-arama-satir:hover{background:var(--green-light);}
.karne-arama-satir .hint{font-size:11px;}
.matrix-table{width:100%;border-collapse:collapse;font-size:12px;}
.matrix-table th{text-align:left;padding:6px 8px;border-bottom:2px solid var(--border);background:#f7f8fa;font-size:11px;text-transform:uppercase;color:#565b64;}
.matrix-table td{padding:5px 8px;border-bottom:1px solid #eef0f2;}
.matrix-table td.chk{text-align:center;width:70px;}
.matrix-table tr.grp-row td{background:#f3f4f6;font-weight:700;color:var(--text-muted);font-size:11px;text-transform:uppercase;}
.notes-list{max-height:230px;overflow:auto;margin-bottom:14px;border:1px solid var(--border);border-radius:4px;}
.note-item{border-bottom:1px solid #eef0f2;padding:9px 12px;}
.note-item:last-child{border-bottom:none;}
.note-meta{font-size:11px;color:var(--text-muted);}
.note-meta b{color:var(--text);}
.note-text{font-size:12.5px;margin-top:3px;}

/* ---------- YAZDIRMA (A4 Dikey) ---------- */
@media print{
  .no-print, #topbar, #sidebar, #breadcrumbBar, #toast, #dpPopup, .modal-overlay{display:none !important;}
  #layout{display:block !important;}
  #main{width:100% !important;min-height:0 !important;}
  #pageContent{padding:0 !important;}
  body{font-size:10px;background:#fff;}
  .page-title{font-size:15px;margin-bottom:8px;}
  .section-grid3{display:grid !important;grid-template-columns:1fr 1fr 1fr !important;gap:8px !important;}
  .card{padding:8px !important;margin-bottom:8px !important;break-inside:avoid;box-shadow:none !important;border-color:#ccc !important;}
  .card-title{font-size:11px;padding-bottom:4px;margin-bottom:6px;}
  .field{margin-bottom:6px;}
  label{font-size:9.5px;margin-bottom:1px;}
  input,select,textarea{padding:2px 4px;font-size:9.5px;border-color:#999;}
  .date-btn{display:none !important;}
  @page{size:A4 portrait;margin:10mm;}
}
#exportPrintArea{display:none;}
@media print{
  body.export-print-mode #appShell,body.export-print-mode #loginScreen,body.export-print-mode #veliPortal{display:none !important;}
  body.export-print-mode #exportPrintArea{display:block !important;padding:24px;}
  #exportPrintArea table{width:100%;border-collapse:collapse;font-size:9px;}
  #exportPrintArea th,#exportPrintArea td{border:1px solid #999;padding:3px 5px;text-align:left;}
  #exportPrintArea h2{margin:0 0 10px;font-size:14px;}
  @page{size:A4 landscape;margin:10mm;}
}

/* ---------- ÖĞRENCİLER: SÜTUN SEÇİCİ ---------- */
.col-picker-list{max-height:340px;overflow-y:auto;border:1px solid var(--border);border-radius:4px;}
.col-picker-row{display:flex;align-items:center;gap:8px;padding:8px 10px;font-size:12.5px;border-bottom:1px solid var(--border);cursor:pointer;}
.col-picker-row:last-child{border-bottom:none;}
.col-picker-row:nth-child(odd){background:rgba(0,0,0,.015);}
.col-picker-row input{margin:0;}
body.dark-mode .col-picker-row:nth-child(odd){background:rgba(255,255,255,.02);}

/* ---------- FİNANSAL DURUM: MODERN ÖZET KARTLARI ---------- */
.fin-card-title-row{font-weight:700;font-size:13.5px;margin:4px 0 10px;color:var(--text);}
.fin-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px;}
.fin-card{
  background:var(--card-bg);border:1px solid var(--border);border-top:4px solid var(--blue);border-radius:10px;
  padding:16px 14px 14px;text-align:center;transition:box-shadow .15s ease,transform .15s ease;
}
.fin-card:hover{box-shadow:0 10px 26px rgba(20,20,30,.10);transform:translateY(-2px);}
body.dark-mode .fin-card:hover{box-shadow:0 10px 26px rgba(0,0,0,.45);}
.fin-card-hero{text-align:left;}
.fin-card-top{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:2px;}
.fin-card-hero .fin-card-top{justify-content:flex-start;}
.fin-card-icon{font-size:16px;line-height:1;}
.fin-card-label{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;font-weight:700;}
.fin-gauge-wrap{position:relative;display:flex;justify-content:center;margin:2px 0 0;}
.fin-gauge-value{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:19px;font-weight:800;color:var(--text);}
.fin-card-value{font-size:18px;font-weight:800;color:var(--text);margin-top:4px;}
.fin-card-hero .fin-card-value{font-size:27px;margin-top:8px;}
.fin-card-unit{font-size:11px;font-weight:600;color:var(--text-muted);margin-left:4px;}
.fin-card-breakdown{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);font-size:10px;color:var(--text-muted);}
.fin-card-hero .fin-card-breakdown{justify-content:flex-start;}
.fin-card-breakdown b{display:block;color:var(--text);font-size:12px;}

/* ---------- GİDERLER: GİDER TÜRLERİ / GİDER GİRİŞİ ---------- */
.gider-layout{display:grid;grid-template-columns:250px 1fr;gap:16px;align-items:start;}
@media(max-width:900px){.gider-layout{grid-template-columns:1fr;}}
.gider-turu-list{border:1px solid var(--border);border-radius:4px;overflow:hidden;}
.gider-turu-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;font-size:12.5px;border-bottom:1px solid var(--border);}
/* Ders Listesi: yalnızca bu sayfada 3 kolonlu, daha kompakt görünüm (Gider
   Türleri gibi aynı bileşeni kullanan diğer ekranlar etkilenmesin diye ayrı
   bir sınıfla kapsandı). CSS çoklu-sütun düzeni satırları yukarıdan aşağı
   doldurup soldan sağa sütuna geçiyor, sabit "7'şerli" bir sayı yazmaya
   gerek kalmadan ders sayısına göre kendiliğinden dengeleniyor. */
.ders-listesi-3col{column-count:3;column-gap:0;}
.ders-listesi-3col .gider-turu-row{break-inside:avoid;-webkit-column-break-inside:avoid;border-bottom:1px solid var(--border);}
@media(max-width:860px){
  .ders-listesi-3col{column-count:1;}
}
.ders-kategori-badge{font-size:10px;color:var(--text-muted);background:var(--page-bg);border:1px solid var(--border);border-radius:10px;padding:1px 6px;margin-left:4px;}
.gider-turu-row:last-child{border-bottom:none;}
.gider-turu-row:nth-child(odd){background:rgba(0,0,0,.015);}
body.dark-mode .gider-turu-row:nth-child(odd){background:rgba(255,255,255,.02);}
.gider-turu-actions{white-space:nowrap;flex-shrink:0;}
.gider-turu-actions a{font-size:12px;margin-left:8px;}

/* ---------- HAFTALIK DERS PROGRAMI ---------- */
.hp-week-range{font-size:12.5px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px;white-space:nowrap;}
.hp-table{table-layout:fixed;}
.hp-table th{text-align:center;}
.hp-saat-cell{width:112px;text-align:center;font-weight:600;background:#f7f8fa;white-space:normal;}
.hp-saat-time{display:block;font-weight:400;color:var(--text-muted);font-size:10.5px;}
.hp-ara-row td{background:#f7f8fa;color:var(--text-muted);}
.hp-ara-cell{text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:.3px;}
.hp-cell{height:60px;vertical-align:top;white-space:normal;cursor:pointer;padding:6px 8px;}
.hp-cell.hp-empty{color:#c7cbd3;font-size:18px;text-align:center;vertical-align:middle;}
.hp-cell.hp-empty:hover{background:var(--blue-light);}
.hp-cell.hp-filled{background:#fbfcfe;text-align:left;}
.hp-cell.hp-filled:hover{background:var(--blue-light);}
.hp-no{font-size:9.5px;color:var(--text-muted);font-weight:700;}
.hp-ders{font-weight:700;font-size:12px;}
.hp-ogretmen{font-size:11px;color:var(--text-muted);}
.hp-konu{font-size:10.5px;color:var(--text-muted);font-style:italic;margin-top:2px;}
tr.hp-now-row td.hp-saat-cell,tr.hp-now-row td.hp-ara-cell,tr.hp-now-row td.hp-cell{background:var(--green-light);}
body.dark-mode .hp-saat-cell,body.dark-mode .hp-ara-row td{background:#202227;}
body.dark-mode .hp-cell.hp-filled{background:#1c1e23;}
body.dark-mode tr.hp-now-row td.hp-saat-cell,body.dark-mode tr.hp-now-row td.hp-ara-cell,body.dark-mode tr.hp-now-row td.hp-cell{background:var(--green-light);}

/* ---------- LOGIN: ROL SEÇİMİ (Türk bayrağı temalı, üst/alt bölünmüş) ---------- */
.login-half{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;padding:40px 28px;text-align:center;
}
.login-half-top{background:#e30a17;color:#fff;}
.login-half-bottom{background:#fff;color:#e30a17;}
.login-flag-logo-img{width:108px;height:108px;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(0,0,0,.25));}
.login-flag-logo{font-size:26px;font-weight:800;}
.login-flag-logo span{opacity:.85;}
.login-flag-sub{font-size:12.5px;opacity:.92;max-width:280px;margin:-6px 0 4px;line-height:1.5;}
.login-flag-btn{
  width:100%;max-width:320px;display:flex;align-items:center;justify-content:center;gap:10px;
  padding:15px 18px;border-radius:10px;font-size:15px;font-weight:800;cursor:pointer;border:2px solid transparent;
}
.login-flag-btn-veli{background:#fff;color:#e30a17;}
.login-flag-btn-veli:hover{background:#ffe4e5;}
.login-flag-btn-ogretmen{background:#e30a17;color:#fff;border-color:#fff;}
.login-flag-btn-ogretmen:hover{background:#b80c14;}
.login-flag-btn-onkayit{
  width:100%;max-width:320px;margin-top:8px;padding:10px 16px;border-radius:10px;font-size:12.5px;font-weight:700;
  cursor:pointer;background:#fff;color:var(--turquoise);border:2px solid var(--turquoise);
  display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;
}
.login-flag-btn-onkayit:hover{background:#e6f6f4;}
.login-flag-kisayol-btn{
  width:100%;max-width:320px;padding:12px 18px;border-radius:10px;font-size:13.5px;font-weight:700;
  cursor:pointer;background:#fff;color:#e30a17;border:2px solid #e30a17;
}
.login-flag-kisayol-btn:hover{background:#fdeaea;}
.login-choice-icon{font-size:22px;line-height:1;}
.login-back-btn{display:inline-block;margin-bottom:12px;font-size:12.5px;font-weight:600;color:var(--blue);cursor:pointer;}
.login-flag-kvkk{
  margin-top:6px;max-width:320px;text-align:center;font-size:10.5px;line-height:1.6;color:#e30a17;opacity:.85;
}
.login-flag-kvkk b{display:block;font-size:11px;letter-spacing:.3px;margin-bottom:2px;}
.login-flag-copyright{margin-top:4px;font-size:10px;color:#e30a17;opacity:.6;}

/* ---------- GİRİŞ ALT ŞERİDİ + BİLGİ SAYFALARI ---------- */
.login-info-strip{
  margin-top:14px;padding-top:10px;border-top:1px solid rgba(139,26,26,.18);
  display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;width:100%;max-width:320px;
}
.login-info-btn{
  flex:1 1 auto;padding:10px 12px;border-radius:10px;font-size:12px;font-weight:700;
  cursor:pointer;background:#17a589;color:#fff;border:none;white-space:nowrap;text-align:center;
}
.login-info-btn:hover{background:#128a72;}
.info-screen{min-height:100vh;background:#f7f3ee;}
.info-topbar{display:flex;gap:10px;padding:12px 18px;background:#8b1a1a;position:sticky;top:0;z-index:5;}
.info-topbar .btn{background:#fff;color:#8b1a1a;border:none;font-weight:700;}
.info-topbar .btn:hover{background:#ffe4e5;}
.info-content{max-width:760px;margin:0 auto;padding:40px 24px 60px;}
.info-content h1{font-size:26px;color:#8b1a1a;margin:0 0 22px;text-align:center;font-style:italic;font-weight:800;}
.info-content p{font-size:15px;line-height:1.9;color:#2a2a2a;margin-bottom:16px;}
.info-content-image{text-align:center;padding:24px;}
.info-content-image img{max-width:100%;border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.15);}

/* ---------- EKRANI KİLİTLE ---------- */
.lock-overlay{position:fixed;inset:0;background:#000;z-index:9999;display:flex;align-items:center;justify-content:center;}
.lock-box{width:320px;background:#17181c;border-radius:10px;padding:32px 28px 26px;box-shadow:0 20px 60px rgba(0,0,0,.6);}
.lock-sub{text-align:center;color:#9aa0a8;font-size:12px;margin:4px 0 22px;letter-spacing:.3px;}
.lock-box .field label{color:#c7cbd3;font-weight:600;font-size:12px;margin-bottom:4px;display:block;}
.lock-box input[readonly]{opacity:.55;cursor:not-allowed;}

/* ---------- DUYURU POPUP (giriş sonrası açılış) ---------- */
.duyuru-popup-overlay{position:fixed;inset:0;background:rgba(20,20,25,.55);z-index:4000;display:flex;align-items:center;justify-content:center;padding:16px;}
.duyuru-popup-box{position:relative;background:#fff;border-radius:10px;padding:26px 22px 22px;width:440px;max-width:100%;max-height:86vh;overflow:auto;box-shadow:0 24px 64px rgba(0,0,0,.35);}
.duyuru-popup-close{position:absolute;top:10px;right:10px;width:28px;height:28px;border-radius:50%;border:none;background:#f0f1f3;color:#444;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;}
.duyuru-popup-close:hover{background:#e2e4e8;}
.duyuru-popup-title{font-size:17px;font-weight:700;margin:0 26px 10px 0;color:#8b1a1a;}
.duyuru-popup-metin{font-size:13px;line-height:1.6;white-space:pre-wrap;margin-bottom:10px;}
.duyuru-popup-img{max-width:100%;border-radius:8px;display:block;margin-top:4px;}
body.dark-mode .duyuru-popup-box{background:#1c1d22;color:#e7e9ec;}
body.dark-mode .duyuru-popup-close{background:#2b2d33;color:#e7e9ec;}

/* ---------- RESİM TAM EKRAN (LIGHTBOX) ---------- */
.img-fullscreen-overlay{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:5000;display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out;}
.img-fullscreen-overlay img{max-width:100%;max-height:100%;border-radius:6px;box-shadow:0 24px 64px rgba(0,0,0,.5);cursor:default;}
.img-fullscreen-close{position:fixed;top:16px;right:20px;width:38px;height:38px;border-radius:50%;border:none;background:rgba(255,255,255,.15);color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;}
.img-fullscreen-close:hover{background:rgba(255,255,255,.28);}
.dosya-metin-fullscreen{max-width:800px;max-height:100%;overflow:auto;background:#fff;color:#232529;padding:24px 28px;border-radius:6px;box-shadow:0 24px 64px rgba(0,0,0,.5);cursor:default;white-space:pre-wrap;word-break:break-word;font-family:'Courier New',monospace;font-size:13px;line-height:1.5;}

/* ---------- VELİ / ÖĞRENCİ PORTALI (mobil) ----------
   Modern, "glassmorphism + yumuşak gradyan + renkli 3B rozet ikon" tarzı:
   gradyanlı kahraman (hero) alanı üzerinde yarı saydam/blur'lu öğrenci
   kartı, her menü karosunun kendi renkli gradyan rozet ikonu (kabartma
   gölgeli), yuvarlatılmış köşeler ve yumuşak "yükselen kart" hover/aktif
   durumları. Harici bir tasarım kütüphanesi eklenmeden (buildless proje)
   tamamen CSS ile elde edilir. */
#veliPortal{min-height:100vh;background:linear-gradient(180deg,#eef2f7,#e4e9f0);max-width:480px;margin:0 auto;box-shadow:0 0 40px rgba(0,0,0,.08);}
#veliTopBar{
  background:linear-gradient(135deg,#1c1c20,#2a2a30);color:#fff;padding:14px 16px;font-size:16px;font-weight:700;
  display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20;
  box-shadow:0 2px 14px rgba(0,0,0,.18);
}
.veli-back-btn{background:rgba(255,255,255,.14);border:none;color:#fff;width:30px;height:30px;border-radius:50%;font-size:16px;cursor:pointer;line-height:1;transition:background .15s;}
.veli-back-btn:hover{background:rgba(255,255,255,.24);}
.veli-hero{background:linear-gradient(160deg,#5eead4,#38bdf8 55%,#818cf8);padding:22px 16px 30px;position:relative;overflow:hidden;}
.veli-hero::before{content:'';position:absolute;top:-46px;right:-36px;width:170px;height:170px;border-radius:50%;background:rgba(255,255,255,.14);}
.veli-hero::after{content:'';position:absolute;bottom:-70px;left:-34px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.09);}
.veli-hero-dots{display:flex;justify-content:center;gap:6px;margin-bottom:12px;position:relative;z-index:1;}
.veli-hero-dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.55);cursor:pointer;border:none;padding:0;transition:width .2s ease,border-radius .2s ease;}
.veli-hero-dot.active{background:#fff;width:18px;border-radius:4px;}
.veli-student-card{
  background:rgba(255,255,255,.88);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-radius:20px;padding:16px;display:flex;gap:14px;align-items:center;
  box-shadow:0 16px 32px rgba(15,50,80,.18);cursor:pointer;position:relative;z-index:1;
  border:1px solid rgba(255,255,255,.6);transition:transform .15s ease;
}
.veli-student-card:active{transform:scale(.985);}
.veli-student-photo{
  width:60px;height:60px;border-radius:16px;background:linear-gradient(150deg,#60a5fa,#2563af);flex:0 0 60px;overflow:hidden;
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;
  box-shadow:0 4px 10px rgba(37,99,175,.35),inset 0 1px 1px rgba(255,255,255,.4),inset 0 -3px 5px rgba(0,0,0,.15);
}
.veli-student-photo img{width:100%;height:100%;object-fit:cover;}
.veli-student-info{min-width:0;}
.veli-student-label{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;margin-bottom:1px;}
.veli-student-name{font-size:15.5px;font-weight:800;color:var(--text);margin-bottom:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.veli-menu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:22px 16px 8px;}
.veli-menu-tile{
  background:#fff;border:1px solid rgba(20,30,45,.05);border-radius:16px;padding:16px 6px 14px;display:flex;flex-direction:column;
  align-items:center;gap:9px;cursor:pointer;color:var(--text);box-shadow:0 2px 8px rgba(20,30,50,.06);
  transition:transform .15s ease,box-shadow .15s ease;
}
.veli-menu-tile:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(20,30,50,.12);}
.veli-menu-tile:active{transform:translateY(-1px);}
.veli-menu-tile-icon{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:21px;line-height:1;box-shadow:0 3px 8px rgba(0,0,0,.16),inset 0 1px 1px rgba(255,255,255,.5),inset 0 -3px 4px rgba(0,0,0,.12);}
.veli-menu-tile-label{font-size:11px;font-weight:700;text-align:center;line-height:1.25;color:var(--text);}
.veli-tile-blue .veli-menu-tile-icon{background:linear-gradient(150deg,#60a5fa,#2563eb);}
.veli-tile-orange .veli-menu-tile-icon{background:linear-gradient(150deg,#fdba74,#ea580c);}
.veli-tile-purple .veli-menu-tile-icon{background:linear-gradient(150deg,#c4b5fd,#7c3aed);}
.veli-tile-teal .veli-menu-tile-icon{background:linear-gradient(150deg,#5eead4,#0d9488);}
.veli-tile-pink .veli-menu-tile-icon{background:linear-gradient(150deg,#f9a8d4,#db2777);}
.veli-tile-green .veli-menu-tile-icon{background:linear-gradient(150deg,#86efac,#16a34a);}
.veli-tile-indigo .veli-menu-tile-icon{background:linear-gradient(150deg,#a5b4fc,#4338ca);}
.veli-tile-amber .veli-menu-tile-icon{background:linear-gradient(150deg,#fcd34d,#d97706);}
.veli-tile-emerald .veli-menu-tile-icon{background:linear-gradient(150deg,#6ee7b7,#059669);}
.veli-logout-wrap{padding:10px 16px 4px;}
.veli-logout-btn{
  width:100%;padding:14px;background:linear-gradient(135deg,#ef4444,#991b1b);color:#fff;border:none;border-radius:14px;
  font-size:14px;font-weight:800;letter-spacing:.3px;cursor:pointer;box-shadow:0 6px 16px rgba(153,27,27,.32);
  transition:transform .15s ease,box-shadow .15s ease;display:flex;align-items:center;justify-content:center;gap:7px;
}
.veli-logout-btn:hover{transform:translateY(-1px);box-shadow:0 9px 20px rgba(153,27,27,.4);}
.veli-logout-btn:active{transform:translateY(0);}
.veli-footer{padding:18px;text-align:center;font-size:10.5px;color:var(--text-muted);line-height:1.6;}
.veli-detail-box{background:#fff;margin:14px 16px;border-radius:10px;padding:14px;border:1px solid var(--border);}
.veli-detail-title{font-weight:800;font-size:14px;margin-bottom:10px;}
.veli-detail-empty{color:var(--text-muted);font-size:12.5px;text-align:center;padding:20px 10px;}
.veli-devam-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid #eef0f2;font-size:12.5px;}
.veli-devam-row:last-child{border-bottom:none;}
.veli-odeme-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #eef0f2;font-size:12.5px;}
.veli-odeme-row:last-child{border-bottom:none;}
.veli-hp-day{margin-bottom:12px;}
.veli-hp-day-title{font-weight:800;font-size:12.5px;margin-bottom:6px;color:var(--blue);}
.veli-hp-slot{display:flex;justify-content:space-between;font-size:12px;padding:6px 8px;background:#f7f8fa;border-radius:6px;margin-bottom:4px;}
.veli-list-wrap{padding:6px 16px 16px;display:flex;flex-direction:column;gap:10px;}

/* -- sekmeler (Devamsızlık) -- */
.veli-tabs{display:flex;gap:8px;padding:14px 16px 6px;overflow-x:auto;}
.veli-tab-btn{flex:0 0 auto;padding:8px 14px;border-radius:20px;border:none;background:#e3e5e8;color:var(--text);font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap;}
.veli-tab-btn.active{background:var(--black);color:#fff;}
.veli-devam-card{background:#fff;border-radius:10px;padding:12px 14px;border:1px solid var(--border);}
.veli-devam-card-title{font-weight:800;font-size:13.5px;margin-bottom:4px;}
.veli-devam-card-detay{font-size:11.5px;color:var(--text-muted);margin-bottom:6px;line-height:1.4;}
.veli-devam-card-date{font-size:11px;color:var(--text-muted);}

/* -- Ödev Takibi -- */
.veli-flag-tabs{display:flex;gap:10px;padding:14px 16px 4px;}
.veli-flag-tab-btn{flex:1;padding:11px 8px;border-radius:8px;border:2px solid #8b1a1a;background:#fff;color:#8b1a1a;font-weight:800;font-size:13px;cursor:pointer;}
.veli-flag-tab-btn.active{background:#8b1a1a;color:#fff;}
.veli-odev-card{background:#fff;border-radius:10px;padding:14px;border:1px solid var(--border);}
.veli-odev-ders{font-weight:800;font-size:13.5px;margin-bottom:2px;}
.veli-odev-konu{font-weight:700;font-size:12.5px;color:var(--blue);margin-bottom:6px;}
.veli-odev-aciklama{font-size:12px;color:var(--text);margin-bottom:8px;line-height:1.4;}
.veli-odev-meta{font-size:11.5px;color:var(--text-muted);margin-bottom:2px;}
.veli-dosya-card{background:#fff;border-radius:10px;padding:14px;border:1px solid var(--border);display:flex;align-items:center;gap:12px;cursor:pointer;margin-bottom:10px;}
.veli-dosya-card:last-child{margin-bottom:0;}
.veli-dosya-icon{font-size:22px;flex-shrink:0;}
.veli-dosya-ad{font-weight:800;font-size:13.5px;margin-bottom:2px;}
.veli-dosya-meta{font-size:11.5px;color:var(--text-muted);}
.veli-odev-meta b{color:var(--text);}

/* -- Sınav Sonuçları -- */
.veli-sinav-card{background:#fff;border-radius:10px;padding:12px 14px;border:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;}
.veli-sinav-ad{font-weight:800;font-size:12.5px;margin-bottom:6px;line-height:1.35;}
.veli-sinav-badges{display:flex;gap:6px;margin-bottom:6px;flex-wrap:wrap;}
.veli-badge{display:inline-block;padding:3px 8px;border-radius:5px;font-size:10px;font-weight:800;}
.veli-badge-blue{background:var(--blue);color:#fff;}
.veli-badge-red{background:var(--red);color:#fff;}
.veli-sinav-tarih{font-size:11px;color:var(--text-muted);}
.veli-sinav-chevron{font-size:22px;color:var(--text-muted);flex:0 0 auto;}

/* -- Tablolar (sınav detay / performans) -- */
.veli-table-wrap{overflow-x:auto;}
.veli-table{width:100%;border-collapse:collapse;font-size:11px;}
.veli-table th,.veli-table td{padding:6px 5px;text-align:center;border-bottom:1px solid #eef0f2;white-space:nowrap;}
.veli-table th{color:var(--text-muted);font-weight:700;font-size:10px;text-transform:uppercase;}
.veli-table-left{text-align:left !important;}
.veli-table-sorular td{font-weight:700;}
.veli-oc-dogru{background:var(--green-light);color:var(--green);}
.veli-oc-yanlis{background:var(--pink-bg);color:var(--red);}
.veli-table-wide th,.veli-table-wide td{padding:6px 4px;font-size:10.5px;}
.veli-table-total td{font-weight:800;border-top:2px solid var(--border);border-bottom:none;}
/* Konu adı uzunsa en fazla 2 satıra sığdırılır, gerisi kırpılır. */
.veli-konu-2satir{white-space:normal!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;max-width:150px;line-height:1.3;}

/* -- Sınavlar alt menüsü (3 seçenek: Sonuçlar / Genel Performans / Ders Analizi) -- */
.veli-menu-list{padding:10px 16px;display:flex;flex-direction:column;gap:10px;}
.veli-menu-list-row{background:#fff;border-radius:14px;padding:14px 16px;border:1px solid var(--border);display:flex;align-items:center;gap:12px;cursor:pointer;box-shadow:0 2px 8px rgba(20,30,50,.05);transition:transform .15s ease,box-shadow .15s ease;}
.veli-menu-list-row:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(20,30,50,.1);}
.veli-menu-list-icon{font-size:20px;width:38px;height:38px;border-radius:11px;background:var(--blue-light);display:flex;align-items:center;justify-content:center;flex:0 0 38px;}
.veli-menu-list-label{flex:1;font-weight:700;font-size:13.5px;color:var(--text);}
.veli-menu-list-chevron{color:var(--text-muted);font-size:18px;}
body.dark-mode .veli-menu-list-row{background:#1c1e23;border-color:#31333a;}
body.dark-mode .veli-menu-list-icon{background:#1d2a3d;}

/* -- Sınav Sonucu İnceleme: soru bazlı DC/ÖÇ karşılaştırma ızgarası -- */
.veli-cevap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:6px;}
.veli-cevap-soru{background:#f4f6f8;border-radius:6px;padding:5px 4px;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:9.5px;color:var(--text-muted);}
.veli-cevap-soru .veli-cevap-no{font-weight:800;font-size:10.5px;color:var(--text);}
.veli-cevap-soru .veli-cevap-dc{color:var(--green);}
.veli-cevap-soru .veli-cevap-oc{font-weight:700;}
.veli-cevap-yanlis{background:var(--pink-bg);}
.veli-cevap-yanlis .veli-cevap-oc{color:var(--red);}
.veli-cevap-bos{background:#eee;}
body.dark-mode .veli-cevap-soru{background:#232529;}
body.dark-mode .veli-cevap-bos{background:#2a2c31;}

/* -- Genel Performans: öğrenci başlık kartı -- */
.veli-perf-header{display:flex;align-items:center;gap:14px;}
.veli-perf-photo{width:56px;height:56px;border-radius:14px;background:linear-gradient(150deg,#60a5fa,#2563af);flex:0 0 56px;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;box-shadow:0 4px 10px rgba(37,99,175,.3);}
.veli-perf-photo img{width:100%;height:100%;object-fit:cover;}
.veli-perf-name{font-weight:800;font-size:15px;}
.veli-perf-meta{font-size:11.5px;color:var(--text-muted);margin-top:2px;}

/* -- Ders Analizi: ders sekmeleri + sınav(lar) seçici -- */
.veli-ders-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:10px;}
.veli-ders-tab{flex:0 0 auto;padding:8px 14px;border-radius:20px;border:1px solid var(--border);background:#fff;color:var(--text);font-weight:700;font-size:11.5px;cursor:pointer;white-space:nowrap;}
.veli-ders-tab.active{background:linear-gradient(135deg,#ef4444,#b91c1c);color:#fff;border-color:transparent;}
body.dark-mode .veli-ders-tab{background:#1c1e23;border-color:#31333a;}
.veli-sinav-secici{position:relative;}
.veli-sinav-secici-btn{width:100%;text-align:left;padding:9px 12px;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--text);font-weight:700;font-size:12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;}
body.dark-mode .veli-sinav-secici-btn{background:#1c1e23;border-color:#31333a;}
.veli-sinav-secici-panel{margin-top:6px;border:1px solid var(--border);border-radius:10px;background:#fff;max-height:220px;overflow-y:auto;padding:6px;}
body.dark-mode .veli-sinav-secici-panel{background:#1c1e23;border-color:#31333a;}
.veli-sinav-secici-row{display:flex;align-items:center;gap:8px;padding:7px 6px;font-size:11.5px;cursor:pointer;border-bottom:1px solid #f0f1f3;}
.veli-sinav-secici-row:last-child{border-bottom:none;}
body.dark-mode .veli-sinav-secici-row{border-color:#2b2d33;}

/* -- Genel Performans grafikleri -- */
.veli-chart-title-row{display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:12.5px;margin-bottom:10px;}
.veli-chart-ort{font-weight:700;font-size:11px;color:var(--text-muted);}
.veli-chart{display:flex;align-items:flex-end;gap:6px;overflow-x:auto;padding-bottom:4px;min-height:120px;}
.veli-chart-col{display:flex;flex-direction:column;align-items:center;gap:4px;flex:0 0 auto;min-width:28px;}
.veli-chart-value{font-size:10px;font-weight:800;color:var(--blue);}
.veli-chart-bar-wrap{height:92px;display:flex;align-items:flex-end;}
.veli-chart-bar{width:16px;background:linear-gradient(180deg,#8fd0f5,#bfe4fb);border-radius:3px 3px 0 0;}
.veli-chart-label{font-size:9.5px;color:var(--text-muted);font-weight:700;max-width:34px;text-align:center;line-height:1.15;}

body.dark-mode #veliPortal{background:linear-gradient(180deg,#111214,#15161a);}
body.dark-mode .veli-tab-btn{background:#25272d;color:#e7e9ee;}
body.dark-mode .veli-devam-card,body.dark-mode .veli-odev-card,body.dark-mode .veli-sinav-card,body.dark-mode .veli-dosya-card{background:#1c1e23;border-color:#31333a;}
body.dark-mode .veli-table th,body.dark-mode .veli-table td{border-color:#2b2d33;}
body.dark-mode .veli-flag-tab-btn{background:#1c1e23;}
body.dark-mode .veli-flag-tab-btn.active{background:#8b1a1a;}
body.dark-mode .veli-student-card{background:rgba(28,30,35,.9);border-color:rgba(255,255,255,.08);}
body.dark-mode .veli-menu-tile{background:#1c1e23;color:#e7e9ee;border-color:rgba(255,255,255,.06);}
body.dark-mode .veli-menu-tile:hover{box-shadow:0 10px 22px rgba(0,0,0,.35);}
body.dark-mode .veli-detail-box{background:#1c1e23;border-color:#31333a;}
body.dark-mode .veli-devam-row,body.dark-mode .veli-odeme-row{border-color:#2b2d33;}
body.dark-mode .veli-hp-slot{background:#25272d;}
@media(max-width:480px){
  .login-card{width:92vw;padding:26px 20px 22px;}
  .login-half{padding:28px 20px;gap:10px;}
  .login-flag-logo-img{width:86px;height:86px;}
  .login-flag-logo{font-size:22px;}
  #veliPortal{max-width:100%;box-shadow:none;}
}

/* ---------- KARANLIK MOD ---------- */
body.dark-mode{
  --page-bg:#15161a; --border:#31333a; --text:#e7e9ee; --text-muted:#9aa0ab;
  --sidebar-bg:#1c1e23; --sidebar-border:#31333a; --blue-light:#1d2a3d;
  --orange-light:#3a2c17; --green-light:#173626; --red-light:#3a1c1f; --card-bg:#1c1e23;
}
body.dark-mode .card, body.dark-mode .toolbar, body.dark-mode .ogr-toolbar, body.dark-mode .filter-panel,
body.dark-mode .table-wrap, body.dark-mode .data-table, body.dark-mode .modal-box, body.dark-mode .student-card-box,
body.dark-mode #breadcrumbBar, body.dark-mode .notes-list, body.dark-mode .dp-popup{
  background:#1c1e23;border-color:#31333a;
}
body.dark-mode .ogr-durum-box{border-color:#31333a;}
body.dark-mode .data-table th{background:#232529;color:#c7cbd3;}
body.dark-mode .data-table td{border-color:#2b2d33;}
body.dark-mode .data-table tbody tr:hover{background:#22242a;}
body.dark-mode input[type=text],body.dark-mode input[type=number],body.dark-mode input[type=date],
body.dark-mode input[type=email],body.dark-mode input[type=password],body.dark-mode input[type=tel],
body.dark-mode select,body.dark-mode textarea{
  background:#25272d;border-color:#3a3d45;color:#e7e9ee;
}
body.dark-mode input:disabled{background:#1c1e23;color:#6b7078;}
body.dark-mode .ms-dropdown-btn{background:#25272d;border-color:#3a3d45;color:#e7e9ee;}
body.dark-mode .ms-dropdown-panel{background:#25272d;border-color:#3a3d45;}
body.dark-mode .ms-dropdown-row{color:#e7e9ee;}
body.dark-mode .ms-dropdown-row:hover{background:#31333a;}
body.dark-mode .btn{background:#25272d;border-color:#3a3d45;color:#e7e9ee;}
body.dark-mode .btn:hover{background:#2d3038;}
body.dark-mode .placeholder-box{background:#1c1e23;border-color:#3a3d45;}
body.dark-mode .nav-item:hover, body.dark-mode .nav-group-title:hover{background:#25272d;}
body.dark-mode .nav-group-title{color:#dfe2e8;}
body.dark-mode .nav-item{color:#c7cbd3;}
body.dark-mode .nav-item.not-built{background:#202227;color:#6b7078;}
body.dark-mode .nav-item.not-built:hover{background:#25272d;}
body.dark-mode .nav-children{background:#1c1e23;}
body.dark-mode .nav-item-newtab-btn{color:#c7cbd3;background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);}
body.dark-mode .nav-item-newtab-btn:hover{background:var(--blue);border-color:var(--blue);color:#fff;}
body.dark-mode .pasif-mode input[type=text],body.dark-mode .pasif-mode input[type=number],
body.dark-mode .pasif-mode select,body.dark-mode .pasif-mode textarea{background:#111214;}
body.dark-mode .info-box{background:#1d2a3d;border-color:#2c3f57;}
body.dark-mode .matrix-table tr.grp-row td{background:#202227;}
body.dark-mode .matrix-table th{background:#232529;color:#c7cbd3;}
body.dark-mode .row-paid{background:#173626;}
body.dark-mode .row-paid td{color:#7fd8a5;}
body.dark-mode .row-unpaid{background:#3a1c26;}
body.dark-mode .row-unpaid td{color:#f0a9c0;}
body.dark-mode .user-block, body.dark-mode .kurum-select-wrap, body.dark-mode .panel-tabs{border-color:#31333a;}
body.dark-mode .note-item{border-color:#2b2d33;}

/* =========================================================================
   RESPONSIVE — Öğretmen/Yönetici (admin) paneli, telefon genişliği
   Veli/öğrenci portalı (#veliPortal) zaten mobil-öncelikli tasarlanmıştı;
   bu blok admin panelini (#appShell) telefon ekranlarında kullanılabilir
   hale getirir: sol menü sabit sütun yerine üzerine kapanan bir çekmeceye
   dönüşür (js/02-ui-settings.js: isMobileViewport/setSidebarOpen), üst bar
   sıkışır, sayfa içeriği kenar boşluklarını azaltır. Tablolar zaten
   .table-wrap{overflow-x:auto} sayesinde yatay kaydırılabiliyordu.
   ========================================================================= */
@media(max-width:860px){
  #topbar{padding:6px 10px;font-size:14px;gap:8px;}
  #topbar .topbar-logo{height:22px;width:22px;}
  .topbar-left{gap:8px;}
  .topbar-left > span{display:none;} /* "Toygun /CRM" yazısı — dar ekranda logo yeter */
  .tb-icon-btn{padding:5px 8px;font-size:11px;}
  .tb-select{font-size:10.5px;padding:5px 6px;}
  #btnGeri, #btnIleri{padding:5px 7px;}

  #layout{display:block;min-height:calc(100vh - 40px);}
  #sidebar{
    position:fixed;top:0;left:0;bottom:0;z-index:150;width:82vw;max-width:300px;
    box-shadow:8px 0 30px rgba(0,0,0,.35);transform:translateX(-100%);transition:transform .22s ease;
    overflow-y:auto;display:block;
  }
  #sidebar.collapsed{display:block;transform:translateX(-100%);}
  #sidebar:not(.collapsed){transform:translateX(0);}
  #layout.menu-right #sidebar{left:auto;right:0;box-shadow:-8px 0 30px rgba(0,0,0,.35);transform:translateX(100%);}
  #layout.menu-right #sidebar.collapsed{transform:translateX(100%);}
  #layout.menu-right #sidebar:not(.collapsed){transform:translateX(0);}
  /* "Menü: Üst" konumu zaten yatay/sarmalı bir şerittir — çekmeceye çevirmek yerine olduğu gibi bırakılır. */
  #layout.menu-top #sidebar{position:static;transform:none;width:100%;max-width:none;box-shadow:none;}

  #main{width:100%;}
  #pageContent{padding:12px;}
  #breadcrumbBar{padding:5px 12px;flex-wrap:wrap;gap:4px;}

  .page-title{font-size:17px;}
  .modal-box{padding:16px;}
  .modal-box.wide, .modal-box.fullscreen{width:96vw;max-width:96vw;}
}

/* =========================================================================
   MÜKERRER KAYIT UYARI POPUP'I — Ön Kayıt / Bursluluk formlarında (genel
   web formu + yönetici panelindeki manuel giriş) aynı ad soyad / TC no ile
   daha önce bir başvuru varsa gösterilir. Standalone bursluluk/index.html
   sayfası uygulamanın openModal() altyapısını kullanamadığından (o sayfada
   #modalOverlay yok) burada kendi overlay'ini kuruyor; yönetici tarafı ise
   aynı sınıfları openModal() içinde kullanır — böylece görünüm ikisinde de
   birebir aynı kalır.
   ========================================================================= */
.mukerrer-popup-overlay{position:fixed;inset:0;background:rgba(20,8,8,.6);display:flex;align-items:center;justify-content:center;z-index:9999;padding:16px;}
.mukerrer-popup-card{background:#fff;border-radius:16px;max-width:380px;width:100%;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.4);text-align:center;}
.mukerrer-popup-top{background:linear-gradient(160deg,#a3221f,#6e1414);padding:26px 20px 20px;}
.mukerrer-popup-logo{width:74px;height:74px;border-radius:50%;background:#fff;padding:8px;box-shadow:0 6px 18px rgba(0,0,0,.3);object-fit:contain;display:block;margin:0 auto;}
.mukerrer-popup-top h3{color:#fff;margin:12px 0 0;font-size:16px;font-weight:800;letter-spacing:.2px;}
.mukerrer-popup-body{padding:22px 22px 24px;}
.mukerrer-popup-body p{color:var(--text);font-size:13.5px;line-height:1.7;margin:0 0 20px;}
.mukerrer-popup-close{background:linear-gradient(160deg,#a3221f,#6e1414);color:#fff;border:none;padding:11px 32px;border-radius:24px;font-weight:700;font-size:13.5px;cursor:pointer;box-shadow:0 6px 16px rgba(139,26,26,.35);}
body.dark-mode .mukerrer-popup-card{background:#20242c;}
body.dark-mode .mukerrer-popup-body p{color:#cfd3da;}

/* =========================================================================
   PROGRAM OLUŞTURUCU — Şube & Öğretmen haftalık ders programı ızgarası
   ========================================================================= */
.po-tabs{display:flex;gap:8px;margin-bottom:12px;}
.po-grid-wrap{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start;}
.po-grid-card{flex:1 1 440px;min-width:320px;}
.po-panel-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:10px;}
.po-panel-actions{display:flex;gap:6px;flex-wrap:wrap;}
.po-conflict-legend{font-weight:400;font-size:11px;color:var(--red);margin-left:8px;}
/* Modern kart-hücre ızgarası: hücreler arasında boşluk bırakan
   border-collapse:separate + border-spacing sayesinde her hücre bağımsız
   yuvarlak köşeli bir "kart" gibi görünür (klasik çizgili tablo yerine). */
table.po-grid{table-layout:fixed;border-collapse:separate;border-spacing:0 6px;}
table.po-grid thead th{
  background:transparent;border:none;padding:0 10px 6px;
  font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:var(--text-muted);text-align:center;white-space:nowrap;
}
table.po-grid td.po-saat-col{
  width:88px;background:transparent;border:none;text-align:right;padding:6px 12px 6px 4px;
  white-space:nowrap;vertical-align:middle;
}
table.po-grid td.po-saat-col b{display:block;font-size:12px;color:var(--text);}
table.po-grid td.po-saat-col span{font-size:10.5px;}
td.po-cell{
  height:56px;vertical-align:middle;text-align:center;line-height:1.35;
  cursor:pointer;border-radius:10px;padding:6px 8px;
  box-shadow:0 1px 2px rgba(20,20,30,.05);
  transition:transform .12s ease, box-shadow .12s ease, filter .12s ease;
}
td.po-cell:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(20,20,30,.12);filter:brightness(0.98);}
.po-cell-ders{font-weight:700;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.po-cell-ogretmen{font-size:10.5px;font-weight:500;opacity:.78;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
td.po-cell-empty{color:var(--text-muted);background:var(--page-bg);box-shadow:none;}
td.po-cell-empty .po-add-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:50%;font-size:14px;font-weight:300;line-height:1;
  color:var(--text-muted);transition:background .15s ease,color .15s ease;
}
td.po-cell-empty:hover{transform:none;box-shadow:none;background:var(--blue-light);}
td.po-cell-empty:hover .po-add-icon{background:var(--blue);color:#fff;}
td.po-cell-bos{background:transparent;box-shadow:none;cursor:default;}
td.po-cell-conflict{background:var(--red-light);color:var(--red);font-size:11px;cursor:default;box-shadow:none;}
td.po-cell-conflict:hover{transform:none;box-shadow:none;}
body.dark-mode td.po-cell-empty{background:#1c1e23;}
body.dark-mode td.po-cell-empty:hover{background:#1d2a3d;}
body.dark-mode td.po-cell-bos{background:transparent;}
body.dark-mode td.po-cell{box-shadow:0 1px 2px rgba(0,0,0,.25);}
body.dark-mode td.po-cell:hover{box-shadow:0 6px 14px rgba(0,0,0,.4);}
.po-musait-list{display:flex;flex-wrap:wrap;gap:8px;}
.po-musait-chip{
  border:none;cursor:pointer;border-radius:10px;padding:8px 12px;text-align:left;
  min-width:118px;box-shadow:0 1px 2px rgba(20,20,30,.06);font-family:inherit;
  transition:transform .12s ease, box-shadow .12s ease;
}
.po-musait-chip:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(20,20,30,.14);}
.po-musait-chip b{display:block;font-size:12.5px;}
.po-musait-chip span{display:block;font-size:10.5px;opacity:.8;margin-top:2px;}
.po-mufredat-toplam{padding:8px 12px;background:var(--blue-light);color:var(--blue);border-radius:8px;font-size:13px;white-space:nowrap;}
body.dark-mode .po-mufredat-toplam{background:#1d2a3d;}
.po-kk-section-title{font-weight:800;font-size:15px;margin:18px 0 10px;}
.po-kk-section-title:first-of-type{margin-top:4px;}
.po-kk-section-title small{font-weight:400;color:var(--text-muted);}
.po-kk-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.po-kk-card{min-width:0;}
@media(max-width:900px){.po-kk-grid{grid-template-columns:1fr;}}
.po-liste-table tr.grp-row td{background:#f3f4f6;font-weight:700;color:var(--text-muted);font-size:11px;text-transform:uppercase;}
.po-liste-table tr.po-liste-row{cursor:pointer;}
.po-liste-table tr.po-liste-row:hover td{background:var(--blue-light);}
body.dark-mode .po-liste-table tr.grp-row td{background:#202227;}
body.dark-mode .po-liste-table tr.po-liste-row:hover td{background:#1d2a3d;}

/* ============== SATINALMA MODÜLÜ (js/36-page-satinalma.js) ============== */
.sa-kartlar{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0 12px;}
.sa-kart{flex:1;min-width:150px;background:var(--card-bg);border:1px solid var(--border);border-radius:6px;padding:10px 14px;cursor:pointer;}
.sa-kart:hover{border-color:var(--blue);}
.sa-kart.active{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue);}
.sa-kart b{display:block;font-size:22px;}
.sa-kart span{font-size:11px;color:var(--text-muted);text-transform:uppercase;}
.sa-sol-liste{max-height:70vh;overflow-y:auto;}
.sa-talep-item{padding:9px 12px;border-bottom:1px solid var(--border);cursor:pointer;font-size:12.5px;}
.sa-talep-item:hover{background:var(--page-bg);}
.sa-talep-item.active{background:var(--blue-light);box-shadow:inset 3px 0 0 var(--blue);}
.sa-kalem-ek{color:var(--text-muted);font-size:11px;}
.sa-karsilastirma th,.sa-karsilastirma td{border:1px solid var(--border);}
.sa-karsilastirma th.sa-tk-head{text-align:center;white-space:normal;min-width:170px;}
.data-table th.num,.data-table td.num{text-align:right;}
.sa-min{color:var(--green);font-weight:700;}
.sa-sel{background:var(--green-light)!important;}
.sa-yok{color:var(--text-muted);text-align:center;font-style:italic;}
.sa-kalem-form td{padding:5px 6px;}
.sa-kalem-form input,.sa-kalem-form select{padding:5px 6px;}
.sa-beden-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;margin-bottom:10px;}
.sa-toplam-kutu{margin:10px 0;padding:10px 14px;border:1px solid var(--border);border-radius:4px;background:var(--page-bg);display:flex;flex-wrap:wrap;gap:6px 22px;align-items:baseline;justify-content:flex-end;font-size:12.5px;}
.sa-gecmis{max-height:240px;overflow-y:auto;}
.sa-gecmis-item{font-size:12px;padding:5px 0;border-bottom:1px dashed var(--border);}
.sa-gecmis-not{color:var(--text-muted);font-size:11.5px;margin-top:2px;}
.sa-ilerleme{display:inline-block;width:70px;height:7px;background:var(--border);border-radius:4px;overflow:hidden;vertical-align:middle;margin-right:5px;}
.sa-ilerleme div{height:100%;background:var(--green);}
.data-table tr.sa-satir-secili td{background:var(--blue-light);}
body.dark-mode .sa-talep-item.active,body.dark-mode .data-table tr.sa-satir-secili td{background:#1d2a3d;}

.sa-popup-satir{padding:8px 10px;border:1px solid var(--border);border-radius:6px;margin-bottom:6px;cursor:pointer;font-size:12.5px;}
.sa-popup-satir:hover{border-color:var(--blue);background:var(--blue-light);}
.sa-popup-tutar{float:right;font-weight:700;color:var(--green);margin-left:8px;}
