: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;}

/* =========================================================================
   SINAV SONUÇLARI — DASHBOARD (js/37-sinav-dashboard.js)
   ========================================================================= */
.sv-card-title{font-weight:700;font-size:13.5px;margin-bottom:12px;color:var(--text);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;}
.sv-card-title small{font-weight:400;font-size:11px;color:var(--text-muted);}
.sv-kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:14px 0;}
.sv-kpi{display:flex;align-items:center;gap:14px;border-radius:14px;padding:14px 16px;border:1px solid var(--border);background:linear-gradient(180deg,#ffffff,#f8f9fb);box-shadow:0 1px 2px rgba(20,20,30,.04);min-width:0;}
.sv-kpi-icon{width:46px;height:46px;flex:0 0 46px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:22px;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);}
.sv-kpi-body{min-width:0;}
.sv-kpi-val{font-size:24px;font-weight:800;line-height:1.15;color:var(--text);}
.sv-kpi-label{font-size:11.5px;color:var(--text-muted);font-weight:600;margin-top:2px;}
.sv-kpi-sub{font-size:10.5px;color:var(--text-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sv-kpi-mavi .sv-kpi-icon{background:linear-gradient(150deg,#93c5fd,#2563eb);}
.sv-kpi-yesil .sv-kpi-icon{background:linear-gradient(150deg,#6ee7a8,#16a34a);}
.sv-kpi-turuncu .sv-kpi-icon{background:linear-gradient(150deg,#fcd34d,#d97706);}
.sv-kpi-mor .sv-kpi-icon{background:linear-gradient(150deg,#c4b5fd,#7c3aed);}
.sv-kpi-turkuaz .sv-kpi-icon{background:linear-gradient(150deg,#5eead4,#0f9b8e);}
.sv-kpi-pembe .sv-kpi-icon{background:linear-gradient(150deg,#f9a8d4,#db2777);}
.sv-kpi-mavi .sv-kpi-val{color:var(--blue);}
.sv-kpi-yesil .sv-kpi-val{color:var(--green);}
.sv-kpi-turuncu .sv-kpi-val{color:var(--orange-dark);}
.sv-kpi-mor .sv-kpi-val{color:#7c4de0;}
.sv-kpi-turkuaz .sv-kpi-val{color:var(--turquoise);}
.sv-kpi-pembe .sv-kpi-val{color:var(--pink-text);}
.sv-dash-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-bottom:16px;}
.sv-dash-grid > .card{margin-bottom:0;}
.sv-span-8{grid-column:span 8;}
.sv-span-4{grid-column:span 4;}
@media(max-width:1180px){ .sv-span-8{grid-column:span 12;} .sv-span-4{grid-column:span 6;} }
@media(max-width:760px){ .sv-span-4{grid-column:span 12;} }
.sv-scroll{max-height:290px;overflow-y:auto;padding-right:4px;}
.sv-bos{color:var(--text-muted);font-size:12px;text-align:center;padding:26px 0;}
.sv-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:9px;font-size:12px;}
.sv-bar-label{flex:0 0 128px;width:128px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sv-bar-track{flex:1;height:12px;border-radius:7px;background:var(--page-bg);position:relative;overflow:hidden;}
.sv-bar-fill{height:100%;border-radius:7px;transition:width .35s ease;}
.sv-bar-mark{position:absolute;top:0;bottom:0;width:3px;margin-left:-1px;background:var(--text);opacity:.75;border-radius:2px;}
.sv-bar-val{flex:0 0 46px;text-align:right;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;}
.sv-bar-val-wide{flex-basis:66px;font-weight:600;font-size:11px;}
.sv-stack{display:flex;overflow:hidden;}
.sv-stack-seg{height:100%;}
.sv-hist{display:flex;align-items:flex-end;gap:5px;height:170px;padding-top:6px;}
.sv-hist-col{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;text-align:center;}
.sv-hist-n{font-size:10.5px;font-weight:700;color:var(--text);min-height:14px;}
.sv-hist-bar{background:linear-gradient(180deg,#60a5fa,var(--blue));border-radius:5px 5px 0 0;min-height:0;transition:height .35s ease;}
.sv-hist-x{font-size:10px;color:var(--text-muted);margin-top:4px;}
.sv-hist-alt{font-size:10.5px;color:var(--text-muted);margin-top:8px;text-align:center;}
.sv-top-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:10px;cursor:pointer;transition:background .12s ease;}
.sv-top-row:hover{background:var(--page-bg);}
.sv-top-row + .sv-top-row{border-top:1px solid var(--border);}
.sv-top-sira{flex:0 0 28px;text-align:center;font-size:19px;font-weight:700;color:var(--text-muted);}
.sv-top-ad{flex:1;min-width:0;display:flex;flex-direction:column;}
.sv-top-ad b{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sv-top-ad span{font-size:10.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sv-top-net{flex:0 0 auto;font-size:16px;font-weight:800;color:var(--blue);font-variant-numeric:tabular-nums;}
.sv-detay-baslik{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.sv-detay-baslik h3{margin:0;}
.sv-detay-meta{font-size:12px;color:var(--text-muted);}
.sv-ogr-head{display:flex;align-items:center;gap:14px;margin-bottom:4px;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:var(--page-bg);flex-wrap:wrap;}
.sv-ogr-ad{font-weight:800;font-size:16px;}
.sv-detay-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;}
.sv-detay-grid > .card{margin-bottom:0;}
@media(max-width:900px){ .sv-detay-grid{grid-template-columns:1fr;} }
body.dark-mode .sv-kpi{background:linear-gradient(180deg,#1f2128,#191b20);border-color:#31333a;}
body.dark-mode .sv-ogr-head{background:#1c1e23;border-color:#31333a;}

/* ÖĞRENCİ BAZINDA SINAV ÖZETİ — DASHBOARD (js/38-ogrenci-ozet-dashboard.js) */
.sv-ogr-dash{margin-top:6px;}
.sv-donut-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center;padding:6px 0;}
.sv-donut{width:150px;height:150px;flex:0 0 150px;border-radius:50%;position:relative;display:flex;align-items:center;justify-content:center;}
.sv-donut-orta{width:98px;height:98px;border-radius:50%;background:var(--card-bg,#fff);display:flex;flex-direction:column;align-items:center;justify-content:center;}
.sv-donut-orta b{font-size:24px;font-weight:800;line-height:1.1;color:var(--text);}
.sv-donut-orta span{font-size:10.5px;color:var(--text-muted);}
.sv-donut-liste{flex:1;min-width:130px;font-size:12px;}
.sv-donut-satir{display:flex;align-items:center;gap:7px;padding:5px 0;}
.sv-donut-satir i{width:10px;height:10px;border-radius:3px;flex:0 0 10px;}
.sv-donut-satir span{flex:1;color:var(--text-muted);}
.sv-donut-satir b{font-variant-numeric:tabular-nums;}
.sv-donut-satir em{font-style:normal;color:var(--text-muted);font-size:11px;min-width:34px;text-align:right;}
.sv-donut-top{border-top:1px solid var(--border);margin-top:3px;padding-top:7px;}
.sv-bolum{border:1px solid var(--border);border-top:4px solid var(--bolum);border-radius:14px;padding:14px 16px;background:var(--card-bg,#fff);box-shadow:0 1px 2px rgba(20,20,30,.04);}
.sv-bolum-ust{display:flex;align-items:center;gap:8px;font-size:14px;}
.sv-bolum-ust b{flex:1;color:var(--bolum);}
.sv-bolum-ikon{font-size:20px;}
.sv-bolum-basari{font-weight:800;font-size:13px;padding:2px 9px;border-radius:12px;background:var(--page-bg);color:var(--text);}
.sv-bolum-net{margin:10px 0 8px;display:flex;align-items:baseline;gap:8px;}
.sv-bolum-net b{font-size:28px;font-weight:800;color:var(--bolum);line-height:1;}
.sv-bolum-net span{font-size:11px;color:var(--text-muted);}
.sv-bolum-bar{height:10px;}
.sv-bolum-say{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-top:10px;text-align:center;}
.sv-bolum-say span{display:block;font-size:10px;color:var(--text-muted);}
.sv-bolum-say b{font-size:14px;font-variant-numeric:tabular-nums;}
.sv-bolum-say .sv-d{color:var(--green);} .sv-bolum-say .sv-y{color:var(--red);} .sv-bolum-say .sv-b{color:#8a909b;}
.sv-bolum-fark{margin-top:10px;font-size:11px;padding:5px 8px;border-radius:8px;}
.sv-yukari{background:var(--green-light);color:var(--green);} .sv-asagi{background:#fdeceb;color:var(--red);}
.sv-sb{max-height:none;overflow-x:auto;}
.sv-sb-satir{display:grid;grid-template-columns:minmax(150px,1.5fr) repeat(var(--kolon),minmax(84px,1fr)) minmax(70px,.8fr);gap:10px;align-items:center;padding:8px 4px;font-size:12px;min-width:560px;}
.sv-sb-satir + .sv-sb-satir{border-top:1px solid var(--border);}
.sv-sb-baslik{font-weight:700;font-size:11.5px;color:var(--text-muted);}
.sv-sb-ad{display:flex;flex-direction:column;min-width:0;}
.sv-sb-ad b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sv-sb-ad span{font-size:10.5px;color:var(--text-muted);}
.sv-sb-hucre{display:flex;flex-direction:column;gap:4px;}
.sv-sb-hucre b{font-variant-numeric:tabular-nums;}
.sv-sb-hucre .sv-bar-track{flex:0 0 7px;height:7px;}
.sv-sb-yok{color:var(--text-muted);}
.sv-sb-ort{background:var(--page-bg);border-radius:8px;font-weight:700;}
body.dark-mode .sv-bolum{background:#1c1e23;border-color:#31333a;}
body.dark-mode .sv-donut-orta{background:#1c1e23;}
body.dark-mode .sv-asagi{background:#3a2022;}

/* Bölüm / ders kutucukları (Öğrenci Bazında Sınav Özeti + Sınav Karnesi) */
.sv-kpi-tek{grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:10px;}
.sv-kpi-tek .sv-kpi{padding:12px 12px;gap:10px;}
.sv-kpi-tek .sv-kpi-icon{width:38px;height:38px;flex-basis:38px;font-size:18px;border-radius:11px;}
.sv-kpi-tek .sv-kpi-val{font-size:21px;}
@media(max-width:1250px){ .sv-kpi-tek{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));} }
.sv-bolum-kolonlar{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;align-items:start;margin-bottom:6px;}
.sv-bolum-blok{display:flex;flex-direction:column;gap:10px;min-width:0;}
.sv-ders-kartlar{display:flex;flex-direction:column;gap:10px;padding-left:10px;border-left:3px solid var(--bolum);margin-left:6px;}
.sv-bolum-liste{display:flex;flex-direction:column;gap:18px;}
.sv-bolum-liste .sv-ders-kartlar{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));}
.sv-bolum-kucuk{border-top-width:3px;padding:10px 12px;border-radius:12px;}
.sv-bolum-kucuk .sv-bolum-ust{font-size:12.5px;}
.sv-bolum-kucuk .sv-bolum-net{margin:6px 0 6px;}
.sv-bolum-kucuk .sv-bolum-net b{font-size:21px;}
.sv-bolum-kucuk .sv-bolum-bar{height:8px;}
.sv-bolum-kucuk .sv-bolum-say{margin-top:8px;}
.sv-bolum-kucuk .sv-bolum-say b{font-size:12.5px;}
.sv-ort-satir{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;font-size:10.5px;}
.sv-ort-satir span{padding:3px 7px;border-radius:8px;white-space:nowrap;}
.sv-ort-iyi{background:var(--green-light);color:var(--green);}
.sv-ort-kotu{background:#fdeceb;color:var(--red);}
body.dark-mode .sv-ort-kotu{background:#3a2022;}

/* Sınav Karnesi ders tablosu — modern görünüm: ince çizgiler, her ana grup kendi renginde
   tüm sütunları (Genel Ort. dahil) kapsayan ince bir çerçeveyle çevrili; sayılar öne çıkar. */
.karne-ders-table{border-collapse:separate;border-spacing:0;}
.karne-ders-table thead th{background:transparent;color:var(--text-muted);font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;text-align:center;padding:8px 10px;border:none;border-bottom:1px solid var(--border);}
.karne-ders-table thead th:first-child,.karne-ders-table thead th:nth-child(2){text-align:left;}
.karne-ders-table td{font-size:13px;padding:8px 10px;border:none;border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent);}
.karne-ders-table td.num{text-align:center;font-variant-numeric:tabular-nums;color:var(--text);}
.karne-ders-table .kg-ders{color:var(--text-muted);font-weight:500;}
.karne-ders-table .kg-net{font-weight:800;font-size:14px;}
.karne-ders-table .kg-ort{color:var(--text-muted);}
.karne-ders-table .kg-basari{font-weight:700;}
.karne-ders-table .kg-iyi{color:var(--green);} .karne-ders-table .kg-orta{color:var(--orange-dark);} .karne-ders-table .kg-dusuk{color:var(--red);} .karne-ders-table .kg-yok{color:var(--text-muted);font-weight:500;}
/* grup çerçevesi (1px): üst çizgi ilk satırda, alt çizgi toplam satırında, sağ çizgi son sütunda, sol çizgi grup hücresinde */
.karne-ders-table tr.kg td{border-bottom-color:color-mix(in srgb,var(--bolum) 14%,transparent);}
.karne-ders-table tr.kg-ilk td{border-top:1px solid var(--bolum);}
.karne-ders-table tr.kg td:last-child{border-right:1px solid var(--bolum);}
.karne-ders-table tr.karne-grup-toplam td{font-weight:700;background:color-mix(in srgb,var(--bolum) 8%,transparent);border-bottom:1px solid var(--bolum);color:var(--text);}
.karne-ders-table tr.karne-grup-toplam .kg-ders{color:var(--bolum);font-weight:800;}
.karne-ders-table tr.karne-grup-toplam .kg-ort{color:var(--text);}
.karne-grup-ad{vertical-align:middle;text-align:left;font-weight:800;font-size:12.5px;white-space:nowrap;color:var(--bolum);background:color-mix(in srgb,var(--bolum) 8%,transparent);border-left:3px solid var(--bolum)!important;border-top:1px solid var(--bolum)!important;border-bottom:1px solid var(--bolum)!important;}
.kg-ikon{margin-right:7px;font-size:15px;}
.karne-ders-table tr.kg-ara td{padding:0;height:7px;border:none;}
.karne-ders-table tr.total-row td{font-weight:800;font-size:14px;background:var(--page-bg);border-top:2px solid var(--text);border-bottom:none;}
.karne-ders-table tr.total-row td.num{color:var(--text);}
.sv-kume-scroll{overflow-x:auto;}
.sv-kume-kart{margin-bottom:16px;}

/* Öğrenci Bazında Sınav Özeti — "Sınavlar" çoklu seçici (js/39-ozet-sinav-secici.js) */
.oo-sec-alan{position:relative;min-width:250px;max-width:340px;}
.oo-sec-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border:1px solid var(--border);border-radius:4px;background:var(--card-bg,#fff);color:var(--text);font-size:14px;cursor:pointer;text-align:left;}
.oo-sec-btn:hover{border-color:var(--blue);}
.oo-sec-ok{color:var(--text-muted);font-size:12px;}
.oo-sec-panel{display:none;position:absolute;top:100%;left:0;z-index:60;min-width:380px;max-height:400px;overflow-y:auto;margin-top:4px;padding:6px;background:var(--card-bg,#fff);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.2);}
.oo-sec-panel.open{display:block;}
.oo-sec-bolum{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);padding:9px 10px 4px;}
.oo-sec-bolum span{text-transform:none;letter-spacing:0;font-weight:400;}
.oo-sec-hizli,.oo-sec-satir{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;cursor:pointer;font-size:13.5px;}
.oo-sec-hizli{font-weight:600;}
.oo-sec-hizli:hover,.oo-sec-satir:hover{background:var(--page-bg);}
.oo-sec-nokta{width:14px;height:14px;border-radius:50%;border:2px solid var(--border);flex:0 0 14px;box-sizing:border-box;}
.oo-sec-hizli.aktif .oo-sec-nokta{border-color:var(--blue);background:radial-gradient(var(--blue) 0 45%,transparent 50%);}
.oo-sec-satir input{width:16px;height:16px;margin:0;flex:0 0 16px;cursor:pointer;}
.oo-sec-ad{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.oo-sec-tarih{color:var(--text-muted);font-size:12px;white-space:nowrap;}
body.dark-mode .oo-sec-btn,body.dark-mode .oo-sec-panel{background:#1c1e23;}

/* SINIF KARŞILAŞTIRMA — DASHBOARD (js/40-sinif-karsilastirma.js) */
.sk-toolbar{gap:14px;align-items:flex-end;padding:10px 12px;}
.sk-secenekler{background:var(--card-bg,#fff);border:1px solid var(--border);border-top:none;border-radius:0 0 4px 4px;padding:8px 12px 10px;display:flex;flex-direction:column;gap:8px;margin-bottom:14px;}
.sk-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.sk-chip-et{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);min-width:92px;}
.sk-chip{border:1px solid var(--border);background:var(--page-bg);color:var(--text);padding:6px 12px;border-radius:18px;font-size:12.5px;font-weight:600;cursor:pointer;transition:background .12s,border-color .12s;}
.sk-chip:hover{border-color:var(--blue);}
.sk-chip.aktif{background:var(--blue);border-color:var(--blue);color:#fff;}
.sk-kartlar{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin-bottom:16px;}
.sk-kart{border:1px solid var(--border);border-top:4px solid var(--renk);border-radius:14px;padding:12px 14px;background:var(--card-bg,#fff);box-shadow:0 1px 2px rgba(20,20,30,.04);}
.sk-kart-ust{display:flex;align-items:center;gap:8px;font-size:14px;}
.sk-kart-ust b{flex:1;color:var(--renk);}
.sk-kart-sira{font-size:18px;min-width:24px;text-align:center;color:var(--text-muted);font-weight:700;}
.sk-kart-ogr{font-size:11px;color:var(--text-muted);}
.sk-kart-net{display:flex;align-items:baseline;gap:8px;margin:8px 0 6px;}
.sk-kart-net b{font-size:26px;font-weight:800;color:var(--renk);line-height:1;}
.sk-kart-net span{font-size:11px;color:var(--text-muted);flex:1;}
.sk-kart-net em{font-style:normal;font-weight:800;font-size:13px;padding:2px 9px;border-radius:12px;background:var(--page-bg);}
.sk-kart-bar{height:8px;}
.sk-kart-satir{margin-top:8px;font-size:11.5px;padding:5px 8px;border-radius:8px;}
.sk-kart-satir span{float:right;font-weight:700;}
.sk-guclu{background:var(--green-light);color:var(--green);} .sk-zayif{background:#fdeceb;color:var(--red);}
body.dark-mode .sk-zayif{background:#3a2022;}
body.dark-mode .sk-kart,body.dark-mode .sk-secenekler{background:#1c1e23;border-color:#31333a;}
.sk-grafik-kart{margin-bottom:0;}
.sk-legend{margin-bottom:8px;}
.sk-scroll{overflow-x:auto;}
.sk-isi-not{font-size:11.5px;color:var(--text-muted);margin:0 0 10px;}
.sk-isi{min-width:620px;}
.sk-isi-satir{display:grid;grid-template-columns:minmax(160px,1.6fr) repeat(var(--kol),minmax(64px,1fr)) minmax(74px,1fr);gap:4px;align-items:stretch;margin-bottom:4px;}
.sk-isi-baslik{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);text-align:center;}
.sk-isi-baslik div:first-child{text-align:left;}
.sk-isi-ad{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13px;min-width:0;}
.sk-isi-ad i{width:10px;height:10px;border-radius:3px;flex:0 0 10px;}
.sk-isi-ad span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sk-isi-h{display:flex;align-items:center;justify-content:center;padding:11px 4px;border-radius:8px;font-size:13px;text-align:center;background:var(--page-bg);border:2px solid transparent;}
.sk-isi-h b{font-variant-numeric:tabular-nums;font-size:14px;}
.sk-isi-iyi{border-color:var(--green);}
.sk-isi-yok{color:var(--text-muted);}
.sk-isi-ort .sk-isi-h{background:transparent;border-top:1px solid var(--border);border-radius:0;}
.sk-isi-eniyi .sk-isi-h{background:transparent;font-size:11.5px;color:var(--text-muted);padding:4px;}
.sk-radar{padding:4px 0;}
.sk-sap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;}
.sk-sap-blok{border:1px solid var(--border);border-radius:12px;padding:10px 12px;}
.sk-sap-baslik{display:flex;justify-content:space-between;margin-bottom:8px;font-size:13px;}
.sk-sap-baslik span{font-size:11px;color:var(--text-muted);}
.sk-sap-satir{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:12px;}
.sk-sap-ad{flex:0 0 90px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sk-sap-iz{flex:1;height:14px;position:relative;background:var(--page-bg);border-radius:7px;overflow:hidden;}
.sk-sap-orta{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--text-muted);opacity:.6;}
.sk-sap-cubuk{position:absolute;top:2px;bottom:2px;border-radius:4px;}
.sk-sap-cubuk.poz{background:var(--green);} .sk-sap-cubuk.neg{background:var(--red);}
.sk-sap-satir b{flex:0 0 52px;text-align:right;font-variant-numeric:tabular-nums;}
.sk-yukari{color:var(--green);} .sk-asagi{color:var(--red);}
.sk-tm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px;}
.sk-tm-baslik{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:13px;}
.sk-tm-baslik i{width:10px;height:10px;border-radius:3px;}
.sk-tm-baslik span{margin-left:auto;font-size:11px;color:var(--text-muted);}
.sk-tm{position:relative;width:100%;aspect-ratio:100/62;background:var(--card-bg,#fff);}
.sk-tm-kutu{position:absolute;box-sizing:border-box;border:2px solid var(--card-bg,#fff);color:#fff;padding:5px 7px;overflow:hidden;display:flex;flex-direction:column;gap:1px;font-size:11px;line-height:1.25;}
.sk-tm-kutu b{font-size:12.5px;}
.sk-tm-kutu span{opacity:.95;}
body.dark-mode .sk-tm-kutu{border-color:#1c1e23;}

/* ÖĞRENCİ FARK ANALİZİ (js/41-ogrenci-fark-analizi.js) */
.fa-ust{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:14px 0 4px;font-size:16px;}
.fa-ust span{font-size:12px;color:var(--text-muted);}
.fa-ozet p{margin:0;line-height:1.7;font-size:13.5px;}
.fa-onc-satir{display:flex;align-items:center;gap:10px;padding:7px 4px;}
.fa-onc-satir + .fa-onc-satir{border-top:1px solid var(--border);}
.fa-onc-sira{flex:0 0 22px;height:22px;border-radius:50%;background:var(--page-bg);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;color:var(--text-muted);}
.fa-onc-ad{flex:1 1 46%;min-width:0;display:flex;flex-direction:column;}
.fa-onc-ad b{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fa-onc-ad span{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fa-onc-ad em{font-style:normal;font-weight:700;}
.fa-onc-bar{flex:1 1 30%;height:12px;}
.fa-onc-net{flex:0 0 48px;text-align:right;color:var(--orange-dark);font-variant-numeric:tabular-nums;}
.fa-bolumler{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;align-items:start;margin-bottom:6px;}
.fa-bolum{display:flex;flex-direction:column;gap:10px;}
.fa-bolum-baslik{font-weight:800;font-size:13px;color:var(--bolum);padding:0 2px;}
.fa-kart{border:1px solid var(--border);border-left:4px solid var(--bolum);border-radius:12px;padding:10px 12px;background:var(--card-bg,#fff);}
.fa-kart-ust{display:flex;align-items:center;gap:8px;font-size:13px;}
.fa-kart-ust b{flex:1;}
.fa-kart-oran{display:flex;align-items:baseline;gap:8px;margin:6px 0;}
.fa-kart-oran b{font-size:24px;font-weight:800;line-height:1;}
.fa-kart-oran span{font-size:11px;color:var(--text-muted);}
.fa-kart-bar{height:8px;}
.fa-kart-alt{display:flex;justify-content:space-between;gap:8px;margin-top:8px;font-size:11px;color:var(--text-muted);}
.fa-kart-alt em{font-style:normal;font-weight:700;}
.fa-rozet{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:10px;white-space:nowrap;}
.fa-r-guclu{background:var(--green-light);color:var(--green);}
.fa-r-orta{background:#e8f0fb;color:var(--blue);}
.fa-r-gelis{background:#fdf1de;color:var(--orange-dark);}
.fa-r-oncelik{background:#fdeceb;color:var(--red);}
.fa-r-bos{background:#eceef2;color:#5b616e;} .fa-r-yanlis{background:#fdeceb;color:var(--red);} .fa-r-karma{background:#fdf1de;color:var(--orange-dark);}
.fa-egilim{font-size:11px;font-weight:700;}
.fa-egilim.yukari{color:var(--green);} .fa-egilim.asagi{color:var(--red);} .fa-egilim.sabit{color:var(--text-muted);}
.fa-egilim-tablo{min-width:520px;}
.fa-et-satir{display:grid;grid-template-columns:minmax(110px,1.3fr) repeat(var(--kol),minmax(70px,1fr)) minmax(100px,1fr);gap:4px;align-items:center;margin-bottom:4px;}
.fa-et-baslik{font-size:11px;font-weight:700;color:var(--text-muted);text-align:center;}
.fa-et-baslik small{font-weight:400;}
.fa-et-baslik div:first-child{text-align:left;}
.fa-et-ad{font-weight:700;font-size:12.5px;}
.fa-et-h{padding:9px 4px;border-radius:8px;text-align:center;font-size:12.5px;}
.fa-et-yok{color:var(--text-muted);background:var(--page-bg);}
.fa-et-egilim{text-align:center;}
.fa-ders{border:1px solid var(--border);border-left:4px solid var(--bolum);border-radius:12px;margin-bottom:10px;background:var(--card-bg,#fff);}
.fa-ders summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;cursor:pointer;list-style:none;}
.fa-ders summary::-webkit-details-marker{display:none;}
.fa-ders summary::before{content:'▸';color:var(--text-muted);transition:transform .15s;}
.fa-ders[open] summary::before{transform:rotate(90deg);}
.fa-ders-ad{font-weight:800;font-size:14px;color:var(--bolum);}
.fa-ders-ozet{margin-left:auto;font-size:12px;color:var(--text-muted);}
.fa-ders-icerik{padding:0 14px 14px;}
.fa-yorum{line-height:1.7;font-size:13px;margin:0 0 10px;}
.fa-oneri{background:var(--page-bg);border-radius:10px;padding:10px 14px;margin-bottom:12px;font-size:12.5px;line-height:1.6;}
.fa-oneri ol{margin:6px 0 0;padding-left:20px;}
.fa-oneri li{margin-bottom:5px;}
.fa-oneri-baslik{font-weight:800;font-size:12.5px;}
.fa-oneri-iyi{color:var(--green);background:var(--green-light);font-weight:600;}
.fa-tablo th,.fa-tablo td{font-size:12px;padding:6px 8px;}
.fa-tablo td.num,.fa-tablo th.num{text-align:center;}
.fa-konu{max-width:420px;}
.fa-y{color:var(--red);} .fa-b{color:#7c828e;}
.fa-o-guclu{color:var(--green);} .fa-o-orta{color:var(--blue);} .fa-o-gelis{color:var(--orange-dark);} .fa-o-oncelik{color:var(--red);}
body.dark-mode .fa-kart,body.dark-mode .fa-ders{background:#1c1e23;border-color:#31333a;}
body.dark-mode .fa-r-oncelik,body.dark-mode .fa-r-yanlis{background:#3a2022;}

#svsWrap .oo-sec-panel{left:auto;right:0;}

/* DERS BAZLI SONUÇLAR — DASHBOARD (js/43-ders-bazli-dashboard.js) */
.dbs-isi-scroll{max-height:70vh;overflow:auto;}
.dbs-isi{min-width:760px;}
.dbs-isi .sk-isi-satir{grid-template-columns:minmax(190px,1.7fr) repeat(var(--kol),minmax(72px,1fr)) minmax(80px,1fr);}
.dbs-isi-baslik{position:sticky;top:0;z-index:3;background:var(--card-bg,#fff);padding:6px 0;box-shadow:0 1px 0 var(--border);}
.dbs-isi .dbs-ogr{position:sticky;left:0;z-index:2;background:var(--card-bg,#fff);}
.dbs-isi .dbs-isi-baslik .dbs-th:first-child{position:sticky;left:0;z-index:4;background:var(--card-bg,#fff);}
.dbs-th{cursor:pointer;user-select:none;}
.dbs-th:hover{color:var(--blue);}
.sk-ok{font-size:9px;color:var(--blue);}
.dbs-ogr{display:flex;flex-direction:column;justify-content:center;min-width:0;padding-right:6px;}
.dbs-ogr b{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dbs-ogr span{font-size:10.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dbs-grup{grid-column:1/-1;margin:10px 0 4px;padding:4px 8px;font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--blue);background:var(--page-bg);border-radius:6px;position:sticky;left:0;}
.dbs-h{flex-direction:column;gap:1px;padding:6px 4px;}
.dbs-h small{font-size:10px;color:var(--text-muted);}
.dbs-detay{margin-top:18px;}
.dbs-detay summary{cursor:pointer;font-weight:700;font-size:14px;list-style:none;}
.dbs-detay summary::-webkit-details-marker{display:none;}
.dbs-detay summary::before{content:'▸ ';color:var(--text-muted);}
.dbs-detay[open] summary::before{content:'▾ ';}
.dbs-detay summary small{font-weight:400;font-size:11px;color:var(--text-muted);}
body.dark-mode .dbs-isi-baslik,body.dark-mode .dbs-isi .dbs-ogr,body.dark-mode .dbs-isi .dbs-isi-baslik .dbs-th:first-child{background:#1c1e23;}

/* Sınıf Karşılaştırma — gruplu tablo + öğrenci sıralaması */
.sk-gt{min-width:620px;}
.sk-gt .sk-gt-sinif{text-align:center;border-top:3px solid var(--renk);color:var(--renk);padding-top:8px;font-size:11px;}
.sk-gt .sk-gt-sinif small{display:block;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text-muted);font-size:10px;}
.sk-gt td.sk-gt-en{color:var(--green);background:var(--green-light);border-radius:4px;}
.sk-ogr-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start;}
@media(max-width:1100px){ .sk-ogr-grid{grid-template-columns:1fr;} }
.sk-ogr-panel{border-top:4px solid var(--renk);margin-bottom:0;}
.sk-ogr-baslik{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:14px;}
.sk-ogr-baslik b{color:var(--renk);}
.sk-ogr-baslik > span:last-child{margin-left:auto;font-size:11px;color:var(--text-muted);}
.sk-ogr-tablo th,.sk-ogr-tablo td{font-size:12px;padding:6px 5px;white-space:nowrap;}
.sk-ogr-tablo th.num,.sk-ogr-tablo td.num{text-align:center;font-variant-numeric:tabular-nums;}
.sk-ogr-tablo thead th{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);}
.sk-ogr-sira{width:34px;text-align:center;font-weight:700;color:var(--text-muted);}
.sk-ogr-no{color:var(--text-muted);width:44px;}
.sk-ogr-ad{font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;}
.sk-ogr-top{min-width:84px;}
.sk-ogr-top b{font-size:13.5px;}

/* Sınıf içi öğrenci sıralaması: kutu ilk ~8 öğrenciyi gösterir, kalanlar dikey kaydırmayla (başlık sabit) */
.sk-ogr-kaydir{max-height:282px;overflow:auto;border-radius:6px;scrollbar-width:thin;}
.sk-ogr-kaydir::-webkit-scrollbar{width:9px;height:9px;}
.sk-ogr-kaydir::-webkit-scrollbar-thumb{background:var(--border);border-radius:6px;}
.sk-ogr-kaydir::-webkit-scrollbar-thumb:hover{background:var(--text-muted);}
.sk-ogr-tablo thead th{position:sticky;top:0;z-index:2;background:var(--card-bg,#fff);box-shadow:0 1px 0 var(--border);}
body.dark-mode .sk-ogr-tablo thead th{background:#1c1e23;}

/* Yasal metin bağlantıları (giriş ekranı altı; telefonda 2x2 olarak sarılır) — 2026-10-30 */
.yasal-linkler{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;max-width:340px;margin:8px auto 2px;font-size:12px;line-height:1.5;}
.yasal-linkler a{color:inherit;text-decoration:underline;text-underline-offset:2px;opacity:.9;padding:2px 0;}
.yasal-linkler a:hover{opacity:1;}
/* Veli aydınlatma/rıza formu indirme bağlantısı (ana sayfa altı) — 2026-10-30 */
.yasal-form{display:block;margin:8px auto 4px;max-width:340px;text-align:center;font-size:12px;font-weight:700;line-height:1.45;color:inherit;text-decoration:none;border:1px solid currentColor;border-radius:8px;padding:7px 10px;opacity:.92;}
.yasal-form:hover{opacity:1;background:rgba(127,127,127,.12);}

/* ---- Öğrenci Gözüyle Gör (js/60) ---- */
.ogr-goz-menu{position:fixed;z-index:99999;background:var(--card-bg,#fff);border:1px solid var(--border,#d8dce3);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.2);padding:4px;min-width:200px;}
.ogr-goz-menu button{display:block;width:100%;text-align:left;padding:9px 12px;border:0;background:transparent;border-radius:7px;font:inherit;font-size:14px;color:var(--text,#222);cursor:pointer;}
.ogr-goz-menu button:hover{background:rgba(139,26,26,.1);}
#ogrGozBant{position:fixed;top:0;left:0;right:0;z-index:9999;background:#8b1a1a;color:#fff;display:flex;align-items:center;justify-content:center;gap:14px;padding:7px 12px;font-size:13px;}
#ogrGozBant button{background:#fff;color:#8b1a1a;border:0;border-radius:6px;padding:4px 10px;font:inherit;font-weight:600;cursor:pointer;}
body.ogr-goz-aktif #veliPortal{padding-top:36px;}
