body { font-family: system-ui, Segoe UI, Roboto, sans-serif; }
.kmp-header { display:flex; align-items:center; gap:1rem; padding:.6rem 1rem; border-bottom:1px solid var(--bs-border-color); }
.kmp-header h1 { font-size:1.1rem; margin:0; }
.kmp-filters { display:flex; gap:1rem; flex-wrap:wrap; align-items:end; padding:1rem; }
.erp-table { width:100%; border-collapse:collapse; font-size:.85rem; }
.erp-table th, .erp-table td { border:1px solid var(--bs-border-color); padding:.3rem .5rem; white-space:nowrap; }
.erp-table thead th { position:sticky; top:0; background:var(--bs-body-bg); z-index:1; }
.text-end { text-align:right; }

/* ---- Dashboard KPI kartları ---- */
.kmp-kpi-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(210px, 1fr)); gap:.9rem; padding:1rem; }
.kmp-kpi { position:relative; background:var(--bs-body-bg); border:1px solid var(--bs-border-color); border-radius:.75rem; padding:1rem 1.1rem; overflow:hidden; transition:transform .15s var(--kmp-ease,ease), box-shadow .15s; }
.kmp-kpi:hover { transform:translateY(-2px); box-shadow:0 .5rem 1.5rem rgba(0,0,0,.08); }
.kmp-kpi::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--kpi-accent, var(--bs-primary)); }
.kmp-kpi__label { font-size:.74rem; text-transform:uppercase; letter-spacing:.04em; color:var(--bs-secondary-color); }
.kmp-kpi__value { font-size:1.4rem; font-weight:700; line-height:1.2; margin-top:.25rem; font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
.kmp-kpi__sub { font-size:.78rem; color:var(--bs-secondary-color); margin-top:.15rem; }
.kmp-kpi__onceki { position:absolute; right:.7rem; bottom:.5rem; font-size:.68rem; color:var(--bs-secondary-color); opacity:.85; }
.kmp-kpi--ok { --kpi-accent:#16a34a; } .kmp-kpi--warn { --kpi-accent:#d97706; } .kmp-kpi--info { --kpi-accent:#0ea5e9; } .kmp-kpi--danger { --kpi-accent:#dc2626; }
.kmp-bar { height:8px; border-radius:6px; background:var(--bs-tertiary-bg); overflow:hidden; }
.kmp-bar > span { display:block; height:100%; background:var(--bs-primary); border-radius:6px; }
.kmp-panel { background:var(--bs-body-bg); border:1px solid var(--bs-border-color); border-radius:.75rem; padding:1rem 1.1rem; margin:0 1rem 1rem; }
.kmp-panel h6 { font-size:.8rem; text-transform:uppercase; letter-spacing:.04em; color:var(--bs-secondary-color); margin-bottom:.7rem; }

/* ---- Lookup modal (AdrKampus GenericLookup deseni) ---- */
.kmp-modal-backdrop { position:fixed; inset:0; background:rgba(15,18,25,.45); -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px); z-index:1080; }
.kmp-modal { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); width:min(720px,94vw); max-height:86vh; background:var(--bs-body-bg); border:1px solid var(--bs-border-color); border-radius:.75rem; box-shadow:0 1rem 3rem rgba(0,0,0,.32); z-index:1081; display:flex; flex-direction:column; }
/* Öğrenci Kartı modalı: transform KULLANMAZ (içindeki .kmp-modal alt-modalları viewport'a sabit kalsın). Alt-modallar (1080/1081) bunun üstünde çıkar. */
.kmp-cardmodal-backdrop { position:fixed; inset:0; z-index:1060; background:rgba(15,18,25,.45); -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px); }
/* transform KULLANMAZ (içindeki .kmp-modal alt-modallar viewport'a sabit kalsın); left+margin ile ortalanır, kmpModal ile sürükle/boyut. */
.kmp-cardmodal { position:fixed; top:2.5rem; left:50%; margin-left:calc(min(1100px,97vw) * -0.5); width:min(1100px,97vw); max-height:90vh; display:flex; flex-direction:column; background:var(--bs-body-bg); border:1px solid var(--bs-border-color); border-radius:.75rem; box-shadow:0 1rem 3rem rgba(0,0,0,.32); z-index:1061; }
.kmp-cardmodal-body { overflow:auto; flex:1 1 auto; }
/* Kompakt KPI şeridi: 5 KPI tek satır (Bakiye dahil) */
.kmp-kpi-strip { grid-template-columns:repeat(5, minmax(0,1fr)); gap:.55rem; padding:.7rem 1rem; }
.kmp-kpi-strip .kmp-kpi { padding:.55rem .7rem; border-radius:.55rem; }
.kmp-kpi-strip .kmp-kpi:hover { transform:none; box-shadow:none; }
.kmp-kpi-strip .kmp-kpi__value { font-size:1.15rem; margin-top:.1rem; }
.kmp-kpi-strip .kmp-kpi__label { font-size:.64rem; }
@media (max-width:860px){ .kmp-kpi-strip { grid-template-columns:repeat(2, minmax(0,1fr)); } }
.kmp-modal-head { display:flex; align-items:center; justify-content:space-between; padding:.7rem 1rem; border-bottom:1px solid var(--bs-border-color); font-weight:600; }
.kmp-modal-body { padding:1rem; overflow:auto; }
.kmp-modal-table { max-height:55vh; overflow:auto; border:1px solid var(--bs-border-color); border-radius:.4rem; }
.kmp-modal-table .erp-table tbody tr:hover { background:var(--bs-primary-bg-subtle); }
/* Tab pane grid-stack: tüm pane'ler aynı hücrede üst üste → kapsayıcı EN UZUN pane yüksekliğinde sabitlenir,
   sekme değişince modal zıplamaz. Pasif pane görünmez ama yerini korur (visibility:hidden). */
.kmp-tabstack { display:grid; }
.kmp-tabstack > * { grid-area:1 / 1; align-content:start; }
.kmp-tabstack > .kmp-tab-off { visibility:hidden; pointer-events:none; }
/* Öğrenci Kartı başlık bandı */
.kmp-ogr-header { position:relative; margin:0 1rem 1rem; padding:1.1rem 1.3rem; border-radius:.75rem; color:#fff; background:linear-gradient(135deg,#0b3a53,#0ea5e9); box-shadow:0 .4rem 1.2rem rgba(0,0,0,.14); }
.kmp-ogr-ad { font-size:1.55rem; font-weight:700; letter-spacing:-.01em; }
.kmp-ogr-chips { display:flex; gap:1.1rem; flex-wrap:wrap; margin-top:.4rem; font-size:.85rem; opacity:.94; }
.kmp-ogr-edit { position:absolute; right:1rem; top:1rem; }
.kmp-ctx-band { display:flex; gap:1.2rem; flex-wrap:wrap; padding:.55rem .8rem; margin-bottom:.9rem; border-radius:.5rem; background:var(--bs-tertiary-bg); font-size:.85rem; }
.kmp-ctx-band .kmp-ctx-label { color:var(--bs-secondary-color); margin-right:.25rem; font-size:.72rem; text-transform:uppercase; letter-spacing:.03em; }
/* İndirim chip'leri (Dönem Kaydı modalı inline indirim) */
.kmp-chips { display:flex; flex-wrap:wrap; gap:.4rem; }
.kmp-chip { display:inline-flex; align-items:center; gap:.35rem; padding:.2rem .55rem; border-radius:1rem; background:var(--bs-tertiary-bg); border:1px solid var(--bs-border-color); font-size:.8rem; }
.kmp-chip__x { border:0; background:transparent; color:var(--bs-secondary-color); font-size:1rem; line-height:1; padding:0; cursor:pointer; }
.kmp-chip__x:hover { color:var(--bs-danger); }
.kmp-modal-foot { padding:.7rem 1rem; border-top:1px solid var(--bs-border-color); display:flex; gap:.5rem; justify-content:flex-end; }
/* Denetim günlüğü modalı: Eski/Yeni JSON yan yana */
.kmp-modal--wide { width:min(960px,96vw); }
.kmp-jsoncols { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; }
.kmp-jsoncols pre { margin:0; padding:.5rem; max-height:46vh; overflow:auto; background:var(--bs-tertiary-bg); border:1px solid var(--bs-border-color); border-radius:.4rem; font-size:.78rem; white-space:pre-wrap; word-break:break-word; }
@media (max-width:640px){ .kmp-jsoncols { grid-template-columns:1fr; } }
.kmp-row-actions { white-space:nowrap; }
/* Aksiyon kolonu sağa sabit (tablo geniş olsa da düğmeler hep görünür) */
.kmp-actions-col { position:sticky; right:0; z-index:2; width:140px; white-space:nowrap; text-align:center; background:var(--bs-body-bg); box-shadow:-7px 0 7px -7px rgba(0,0,0,.22); }
thead .kmp-actions-col { z-index:3; }
/* table-layout:fixed'te width:1% kolonu ~7px'e düşürüyordu ve .kmp-grid-table td{overflow:hidden} düğmeleri kırpıyordu.
   Sabit genişlik (3-4 düğmeye yeter) + aksiyon kolonunda overflow:visible → düğmeler görünür. */
.kmp-grid-table td.kmp-actions-col { overflow:visible; }
.kmp-row-link:hover .kmp-actions-col { background:var(--bs-tertiary-bg); }

/* Yardım / Nasıl Çalışır */
.kmp-flow { display:flex; flex-wrap:wrap; align-items:stretch; gap:.4rem; }
.kmp-flow__step { flex:1 1 110px; min-width:110px; border:1px solid var(--bs-border-color); border-radius:.6rem; padding:.6rem .7rem; background:var(--bs-body-bg); }
.kmp-flow__step b { display:block; font-size:.92rem; }
.kmp-flow__step small { color:var(--bs-secondary-color); font-size:.72rem; }
.kmp-flow__n { display:inline-flex; align-items:center; justify-content:center; width:1.4rem; height:1.4rem; border-radius:50%; background:var(--bs-primary); color:#fff; font-size:.78rem; font-weight:700; margin-bottom:.3rem; }
.kmp-flow__arrow { align-self:center; color:var(--bs-secondary-color); font-size:1.2rem; padding:0 .1rem; }
.kmp-help h6 { font-size:.95rem; }
.kmp-help .kmp-kv { display:grid; grid-template-columns:180px 1fr; gap:.25rem .8rem; font-size:.9rem; }
.kmp-help .kmp-kv > div:nth-child(odd) { color:var(--bs-secondary-color); font-weight:500; }
@media (max-width:640px){ .kmp-help .kmp-kv { grid-template-columns:1fr; } .kmp-help .kmp-kv > div:nth-child(odd){ margin-top:.45rem; } }
.kmp-help-shot { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:1.1rem; }
.kmp-help-shot figure { margin:0; cursor:zoom-in; transition:transform .15s ease, box-shadow .15s ease; border-radius:.5rem; }
.kmp-help-shot figure:hover { transform:translateY(-2px); }
.kmp-help-shot figure:hover img { box-shadow:0 .6rem 1.6rem rgba(0,0,0,.20); border-color:var(--bs-primary); }
.kmp-help-shot img { display:block; width:100%; height:auto; border:1px solid var(--bs-border-color); border-radius:.5rem; box-shadow:0 .3rem 1rem rgba(0,0,0,.08); }
.kmp-help-shot figcaption { font-size:.82rem; color:var(--bs-secondary-color); margin-top:.45rem; line-height:1.35; }
.kmp-help-shot figcaption b { color:var(--bs-body-color); }

/* Lightbox: görsel büyütme overlay'i (Esc / arka plan / ✕ ile kapanır). */
.kmp-lightbox { position:fixed; inset:0; z-index:1090; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:1rem; padding:2.5rem 2rem; background:rgba(10,12,18,.85); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); cursor:zoom-out; outline:none; }
.kmp-lightbox img { max-width:95vw; max-height:80vh; cursor:default; border-radius:.5rem; box-shadow:0 1.2rem 3rem rgba(0,0,0,.55); }
.kmp-lightbox__cap { max-width:920px; color:#f1f3f6; font-size:.9rem; line-height:1.45; text-align:center; cursor:default; }
.kmp-lightbox__cap b { color:#fff; }
.kmp-lightbox__close { position:fixed; top:1rem; right:1.4rem; width:2.4rem; height:2.4rem; border:0; border-radius:50%;
  background:rgba(255,255,255,.14); color:#fff; font-size:1.3rem; line-height:1; cursor:pointer; }
.kmp-lightbox__close:hover { background:rgba(255,255,255,.28); }
@media (prefers-reduced-motion: reduce){ .kmp-help-shot figure { transition:none; } }

/* ---- Kayıt Sihirbazı ---- */
/* Sihirbaz yapışkan canlı özet: kimlik + ücretin son durumu (her adımda görünür) */
.kmp-wizard-summary { position:sticky; top:0; z-index:6; display:flex; flex-wrap:wrap; align-items:center; gap:.4rem 1rem; margin:-.25rem -.25rem 1rem; padding:.6rem .85rem; background:var(--bs-tertiary-bg); border:1px solid var(--bs-border-color); border-radius:.6rem; }
.kmp-wsum-id { font-size:.95rem; }
.kmp-wsum-id span { color:var(--bs-secondary-color); }
.kmp-wsum-fees { display:flex; flex-wrap:wrap; gap:.5rem; margin-left:auto; }
.kmp-wsum-fees > span { background:var(--bs-body-bg); border:1px solid var(--bs-border-color); border-radius:.4rem; padding:.2rem .6rem; font-size:.85rem; white-space:nowrap; }
.kmp-wsum-yillik { border-color:var(--bs-primary) !important; }
.kmp-wsum-yillik b { color:var(--bs-primary); }
.kmp-wsum-warn { background:var(--bs-warning-bg-subtle) !important; border-color:var(--bs-warning-border-subtle) !important; color:var(--bs-warning-text-emphasis); font-weight:600; }
@media (prefers-reduced-motion: reduce){ .kmp-wizard-summary { position:static; } }
.kmp-steps { list-style:none; display:flex; gap:.5rem; padding:0; margin:0 0 1.2rem; flex-wrap:wrap; }
.kmp-step { display:flex; align-items:center; gap:.45rem; padding:.4rem .85rem; border-radius:2rem; background:var(--bs-tertiary-bg); color:var(--bs-secondary-color); font-size:.85rem; }
.kmp-step__n { display:inline-flex; align-items:center; justify-content:center; width:1.5rem; height:1.5rem; border-radius:50%; background:var(--bs-secondary-bg); font-size:.78rem; font-weight:700; }
.kmp-step--active { background:var(--bs-primary-bg-subtle); color:var(--bs-primary); font-weight:600; }
.kmp-step--active .kmp-step__n { background:var(--bs-primary); color:#fff; }
.kmp-step--done { color:var(--bs-success); }
.kmp-step--done .kmp-step__n { background:var(--bs-success); color:#fff; }
.kmp-wizard-body { min-height:220px; }
.kmp-wizard-nav { display:flex; gap:.5rem; margin-top:1.2rem; padding-top:1rem; border-top:1px solid var(--bs-border-color); }
.kmp-wizard-inds { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:.5rem; }
.kmp-ind-pick { display:flex; align-items:center; gap:.5rem; padding:.5rem .7rem; border:1px solid var(--bs-border-color); border-radius:.5rem; cursor:pointer; font-size:.88rem; }
.kmp-ind-pick--on { border-color:var(--bs-primary); background:var(--bs-primary-bg-subtle); }
.kmp-ind-pick__rank { flex:0 0 1.15rem; height:1.15rem; border-radius:50%; background:var(--bs-primary); color:#fff; font-size:.7rem; font-weight:600; display:inline-flex; align-items:center; justify-content:center; }
.kmp-wizard-gecmis { margin:.5rem 0 0; padding:.45rem .7rem; border:1px solid var(--bs-border-color); border-radius:.5rem; background:var(--bs-tertiary-bg); font-size:.88rem; }
.kmp-wizard-gecmis .erp-table { font-size:.84rem; }
.kmp-ind-order__list { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:.3rem; }
.kmp-ind-order__item { display:flex; align-items:center; gap:.6rem; padding:.3rem .55rem; border:1px solid var(--bs-border-color); border-radius:.45rem; background:var(--bs-body-bg); font-size:.86rem; }
.kmp-ind-order__rank { flex:0 0 1.5rem; height:1.5rem; border-radius:50%; background:var(--bs-primary); color:#fff; font-size:.78rem; font-weight:600; display:flex; align-items:center; justify-content:center; }
.kmp-ind-order__name { flex:1 1 auto; }
.kmp-ind-order__btns { flex:0 0 auto; display:flex; gap:.2rem; }
.kmp-onay-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:1.5rem; }
.kmp-kv2 { display:grid; grid-template-columns:130px 1fr; gap:.2rem .7rem; font-size:.88rem; }
.kmp-kv2 > div:nth-child(odd){ color:var(--bs-secondary-color); }
.kmp-wizard-done { text-align:center; padding:2.5rem 1rem; }
.kmp-wizard-done__icon { width:3.2rem; height:3.2rem; margin:0 auto 1rem; border-radius:50%; background:var(--bs-success); color:#fff; font-size:1.8rem; display:flex; align-items:center; justify-content:center; }
@media (max-width:640px){ .kmp-steps .kmp-step__t { display:none; } }
.kmp-iconbtn { border:1px solid transparent; background:transparent; cursor:pointer; font-size:1rem; line-height:1; padding:.15rem .4rem; border-radius:.35rem; }
.kmp-iconbtn:hover { background:var(--bs-tertiary-bg); }
.kmp-iconbtn--danger:hover { background:var(--bs-danger-bg-subtle,#f8d7da); }
.kmp-modal-resize { position:absolute; right:3px; bottom:3px; width:16px; height:16px; cursor:nwse-resize; background:linear-gradient(135deg,transparent 50%,var(--bs-secondary-color) 50%,var(--bs-secondary-color) 60%,transparent 60%,transparent 70%,var(--bs-secondary-color) 70%,var(--bs-secondary-color) 80%,transparent 80%); opacity:.6; }

/* ---- KampusGrid (Outlook-tarzı gelişmiş grid) ---- */
.kmp-grid { padding:0 1rem 1rem; }
.kmp-grid-toolbar { display:flex; align-items:center; gap:.5rem; padding:.6rem 0; flex-wrap:wrap; }
.kmp-grid .dropdown { position:relative; }
.kmp-grid-pop { position:absolute; top:100%; left:0; z-index:30; min-width:200px; max-height:340px; overflow:auto; background:var(--bs-body-bg); border:1px solid var(--bs-border-color); border-radius:.5rem; box-shadow:0 .5rem 1.5rem rgba(0,0,0,.15); padding:.3rem; }
.kmp-grid-pop .dropdown-item { display:block; width:100%; text-align:left; border:0; background:transparent; padding:.3rem .6rem; border-radius:.35rem; cursor:pointer; }
.kmp-grid-pop .dropdown-item:hover { background:var(--bs-tertiary-bg); }
.kmp-grid-groupbar { display:flex; align-items:center; gap:.4rem; padding:.45rem .6rem; background:var(--bs-tertiary-bg); border:1px dashed var(--bs-border-color); border-radius:.5rem; margin-bottom:.5rem; flex-wrap:wrap; }
.kmp-group-chip { display:inline-flex; align-items:center; gap:.35rem; background:var(--bs-primary-bg-subtle); color:var(--bs-primary-text-emphasis); border-radius:20px; padding:.15rem .6rem; font-size:.82rem; cursor:grab; user-select:none; }
.kmp-group-chip:active { cursor:grabbing; }
.kmp-group-chip--dragging { opacity:.45; }
.kmp-group-chip button { border:0; background:transparent; cursor:pointer; color:inherit; line-height:1; }
.kmp-group-chip { position:relative; }
.kmp-group-chip__menu { font-size:.7rem; opacity:.75; padding:0 .1rem; }
.kmp-group-chip__menu:hover { opacity:1; }
.kmp-pill-pop { top:calc(100% + 4px); min-width:170px; white-space:nowrap; }
.kmp-section { font-size:.8rem; font-weight:600; letter-spacing:.02em; border-bottom:1px solid var(--bs-border-color); padding-bottom:.2rem; }
/* GENEL TOPLAM: gridin altında vurgulu, ekranda yapışkan (scroll'da görünür kalır). */
.kmp-grandtotal td { font-weight:700; background:var(--bs-secondary-bg); border-top:2px solid var(--bs-primary); position:sticky; bottom:0; z-index:2; }
/* Print'teki GENEL TOPLAM (tbody son satırı, her sayfada tekrarlanmaz) — yapışkan değil. */
.kmp-grandtotal-print td { font-weight:700; border-top:2px solid #000; }

/* ── Kompakt araç çubuğu: başlık + özet istatistik + toplanabilir filtre paneli ── */
.kmp-toolbar { padding:.8rem 1rem .25rem; }
.kmp-toolbar__main { display:flex; align-items:center; gap:.6rem 1rem; flex-wrap:wrap; }
.kmp-toolbar__title { margin:0; font-size:1.25rem; font-weight:700; letter-spacing:-.01em; }
.kmp-toolbar__toggle { margin-left:auto; display:inline-flex; align-items:center; gap:.4rem; border-radius:8px; white-space:nowrap; }
.kmp-toolbar__toggle.active { background:var(--bs-primary-bg-subtle); border-color:var(--bs-primary-border-subtle); color:var(--bs-primary-text-emphasis); }
/* Birincil kontrol satırı (Dönem/Düzey selektörleri + aksiyon düğmeleri) — toggle değil, hep görünür */
.kmp-toolbar__controls { display:flex; align-items:flex-end; gap:.5rem .7rem; flex-wrap:wrap; padding-top:.55rem; }
.kmp-toolbar__controls label.form-label { font-size:.72rem; text-transform:uppercase; letter-spacing:.02em; color:var(--bs-secondary-color); margin-bottom:.1rem; }
.kmp-toolbar__controls .form-select, .kmp-toolbar__controls .form-control { font-size:.88rem; }
/* Özet istatistik şeridi (her zaman görünür) */
.kmp-stats { display:flex; flex-wrap:wrap; gap:.15rem .35rem; }
.kmp-stat { display:flex; flex-direction:column; line-height:1.12; padding:.1rem .65rem; border-left:3px solid var(--bs-border-color); }
.kmp-stat__n { font-weight:700; font-size:.95rem; font-variant-numeric:tabular-nums; }
.kmp-stat__l { font-size:.66rem; text-transform:uppercase; letter-spacing:.03em; color:var(--bs-secondary-color); }
.kmp-stat--ok { border-left-color:#16a34a; } .kmp-stat--danger { border-left-color:#dc2626; }
/* Toplanabilir filtre paneli — 0fr→1fr grid ile yumuşak yükseklik animasyonu */
.kmp-filterpanel { display:grid; grid-template-rows:0fr; transition:grid-template-rows .25s var(--kmp-ease,cubic-bezier(.4,0,.2,1)); }
.kmp-filterpanel.kmp-open { grid-template-rows:1fr; }
.kmp-filterpanel > div { overflow:hidden; min-height:0; }
.kmp-filterpanel__grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(185px,1fr)); gap:.55rem .8rem; padding:.75rem 0 .35rem; align-items:end; }
.kmp-filterpanel__grid label { display:flex; flex-direction:column; gap:.2rem; font-size:.74rem; font-weight:500; color:var(--bs-secondary-color); margin:0; text-transform:uppercase; letter-spacing:.02em; }
.kmp-filterpanel__grid label.kmp-check { flex-direction:row; align-items:center; gap:.4rem; align-self:center; text-transform:none; letter-spacing:0; font-size:.85rem; color:var(--bs-body-color); }
.kmp-filterpanel__actions { display:flex; gap:.5rem; align-items:end; }
@media (prefers-reduced-motion: reduce){ .kmp-filterpanel { transition:none; } }
.kmp-grid-groupbar.kmp-drop-active { border-color:var(--bs-primary); border-style:solid; background:var(--bs-primary-bg-subtle); }
.kmp-grid-scroll { max-height:68vh; overflow:auto; }
/* Lookup (Öğrenci ara seç) gridi: SABİT yükseklik — filtrede satır sayısı değişince modal ZIPLAMAZ.
   Tek kaydırıcı (kmp-grid-scroll) kalan alanı doldurur; az kayıtta alt boşluk kalır (sorun değil). */
.kmp-lookup-grid { height:60vh; display:flex; flex-direction:column; overflow:hidden; }
.kmp-lookup-grid .kmp-grid { display:flex; flex-direction:column; flex:1 1 auto; min-height:0; padding-bottom:0; }
.kmp-lookup-grid .kmp-grid-scroll { flex:1 1 auto; min-height:0; max-height:none; }
.kmp-sortable { cursor:pointer; user-select:none; white-space:nowrap; }
.kmp-sortable:hover { background:var(--bs-tertiary-bg); }
.kmp-sort-ind { color:var(--bs-primary); font-size:.75rem; font-weight:700; }
.kmp-filter-row th { position:sticky; top:0; }
.kmp-group-row { cursor:pointer; background:var(--bs-tertiary-bg); }
.kmp-group-row:hover { background:var(--bs-primary-bg-subtle); }
.kmp-row-link { cursor:pointer; }
.kmp-row-link:hover td { background:var(--bs-primary-bg-subtle); }
.kmp-group-toggle { display:inline-flex; align-items:center; justify-content:center; width:1.5rem; height:1.5rem; margin-right:.25rem; border-radius:.35rem; font-size:.8rem; line-height:1; vertical-align:middle; transition:transform .12s ease, background .12s ease; }
.kmp-group-toggle--closed { color:#fff; background:var(--bs-danger); }      /* kapalı = kırmızı ▶ */
.kmp-group-toggle--open { color:#fff; background:var(--bs-success); }       /* açık = yeşil ▼ */
.kmp-group-row:hover .kmp-group-toggle { transform:scale(1.12); }
@media (prefers-reduced-motion: reduce){ .kmp-group-toggle { transition:none; } }
/* Sticky başlık: kolon başlığı (üst) + filtre satırı (hemen altında) kaydırınca sabit kalır */
.kmp-grid thead th { position:sticky; background:var(--bs-body-bg); z-index:3; }
.kmp-grid thead tr.kmp-head-row th { top:0; height:34px; box-shadow:inset 0 -1px 0 var(--bs-border-color); }
.kmp-grid thead tr.kmp-filter-row th { top:34px; z-index:2; box-shadow:inset 0 -1px 0 var(--bs-border-color); }
.kmp-grid-table { table-layout:fixed; }
.kmp-grid-table th { position:relative; }
.kmp-grid-table td { overflow:hidden; text-overflow:ellipsis; }
.kmp-col-resize { position:absolute; right:0; top:0; width:6px; height:100%; cursor:col-resize; user-select:none; }
.kmp-col-resize:hover { background:var(--bs-primary); opacity:.4; }

/* ---- Responsive kabuk (topbar + drawer sidebar + main) ---- */
:root { --kmp-sb-w: 250px; --kmp-topbar-h: 49px; --kmp-ease: cubic-bezier(.4,0,.2,1); }

.kmp-topbar { display:flex; align-items:center; gap:.6rem; padding:.5rem .9rem; min-height:var(--kmp-topbar-h); border-bottom:1px solid var(--bs-border-color); position:sticky; top:0; background:var(--bs-body-bg); z-index:1050; }
.kmp-title { font-size:1rem; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kmp-brand { display:flex; align-items:center; gap:.6rem; text-decoration:none; color:inherit; min-width:0; }
.kmp-brand__logo { flex:0 0 auto; display:block; width:auto; background:#fff; border-radius:5px; padding:2px 5px; box-shadow:0 0 0 1px rgba(0,0,0,.06); }
.kmp-brand__text { display:flex; flex-direction:column; line-height:1.15; min-width:0; }
.kmp-brand__name { font-size:.98rem; font-weight:700; color:var(--bs-emphasis-color); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kmp-brand__sub { font-size:.72rem; font-weight:500; color:var(--bs-secondary-color); white-space:nowrap; }
@media (max-width:575.98px) {
  .kmp-brand__name { font-size:.9rem; }
  .kmp-brand__sub { display:none; }
}
.kmp-body { display:flex; align-items:flex-start; position:relative; }
.kmp-main { flex:1 1 auto; min-width:0; padding:1rem; }
.kmp-log { background:var(--bs-tertiary-bg); border:1px solid var(--bs-border-color); border-radius:.4rem; padding:.6rem; font-size:.78rem; max-height:70vh; overflow:auto; white-space:pre-wrap; word-break:break-word; }

/* Animasyonlu hamburger (açıkken mobilde X'e döner) */
.kmp-burger { flex:0 0 auto; width:38px; height:34px; display:inline-flex; align-items:center; justify-content:center; padding:0; cursor:pointer; color:var(--bs-body-color); background:var(--bs-body-bg); border:1px solid var(--bs-border-color); border-radius:.5rem; transition:background .18s, border-color .18s; }
.kmp-burger:hover { background:var(--bs-tertiary-bg); }
.kmp-burger:focus-visible { outline:2px solid var(--bs-primary); outline-offset:2px; }
.kmp-burger span, .kmp-burger span::before, .kmp-burger span::after { display:block; width:18px; height:2px; background:currentColor; border-radius:2px; transition:transform .3s var(--kmp-ease), opacity .2s var(--kmp-ease); }
.kmp-burger span { position:relative; }
.kmp-burger span::before { content:""; position:absolute; left:0; top:-6px; }
.kmp-burger span::after { content:""; position:absolute; left:0; top:6px; }

/* Drawer panel */
.kmp-sidebar { flex:0 0 var(--kmp-sb-w); width:var(--kmp-sb-w); position:sticky; top:var(--kmp-topbar-h); height:calc(100vh - var(--kmp-topbar-h)); overflow:hidden; border-right:1px solid var(--bs-border-color); background:var(--bs-body-bg); transition:flex-basis .32s var(--kmp-ease), width .32s var(--kmp-ease), border-color .32s var(--kmp-ease); }
.kmp-sidebar__inner { width:var(--kmp-sb-w); height:100%; overflow-y:auto; overflow-x:hidden; padding-top:.4rem; transition:transform .32s var(--kmp-ease), opacity .32s var(--kmp-ease); }
.kmp-sidebar__head { display:none; align-items:center; justify-content:space-between; padding:.7rem .9rem; border-bottom:1px solid var(--bs-border-color); }
.kmp-sidebar__brand { font-weight:600; font-size:.95rem; }
.kmp-sidebar__close { border:none; background:transparent; color:var(--bs-secondary-color); font-size:1rem; line-height:1; cursor:pointer; padding:.25rem .45rem; border-radius:.4rem; transition:background .18s, color .18s; }
.kmp-sidebar__close:hover { background:var(--bs-tertiary-bg); color:var(--bs-body-color); }

/* Nav öğeleri — yuvar+ hover mikro-etkileşim + aktif accent çubuğu */
.kmp-sidebar .nav-link { position:relative; display:flex; align-items:center; gap:.5rem; margin:.1rem .5rem; padding:.45rem .7rem; border-radius:.5rem; color:var(--bs-body-color); font-size:.9rem; transition:background .18s var(--kmp-ease), color .18s var(--kmp-ease), transform .18s var(--kmp-ease); }
.kmp-sidebar .nav-link:hover { background:var(--bs-tertiary-bg); transform:translateX(2px); }
.kmp-sidebar .nav-link.active { background:var(--bs-primary-bg-subtle); color:var(--bs-primary-text-emphasis); font-weight:600; }
.kmp-sidebar .nav-link.active::before { content:""; position:absolute; left:-.5rem; top:.35rem; bottom:.35rem; width:3px; border-radius:0 3px 3px 0; background:var(--bs-primary); }
.kmp-navgroup { font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; color:var(--bs-secondary-color); padding:.7rem 1rem .2rem; }

/* Backdrop (scrim) — yalnız mobil overlay'de görünür */
.kmp-scrim { position:fixed; inset:var(--kmp-topbar-h) 0 0 0; background:rgba(15,18,25,.45); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); opacity:0; visibility:hidden; transition:opacity .3s var(--kmp-ease), visibility .3s var(--kmp-ease); z-index:1040; }

/* Masaüstü: collapse = push (panel daralır, içerik kayar, ana içerik akar) */
@media (min-width: 992px) {
  .kmp-scrim { display:none; }
  html[data-drawer="closed"] .kmp-sidebar { flex-basis:0; width:0; border-right-color:transparent; }
  html[data-drawer="closed"] .kmp-sidebar__inner { transform:translateX(-24px); opacity:0; }
}

/* Mobil: soldan kayan overlay drawer + scrim */
@media (max-width: 991.98px) {
  .kmp-sidebar { position:fixed; top:var(--kmp-topbar-h); left:0; height:calc(100vh - var(--kmp-topbar-h)); width:min(82vw, 300px); flex-basis:auto; z-index:1045; border-right:none; border-radius:0 .9rem .9rem 0; box-shadow:.5rem 0 2.5rem rgba(0,0,0,.28); transform:translateX(-105%); transition:transform .34s var(--kmp-ease); }
  .kmp-sidebar__inner { width:100%; transform:none; opacity:1; }
  .kmp-sidebar__head { display:flex; }
  html[data-drawer="open"] .kmp-sidebar { transform:translateX(0); }
  html[data-drawer="open"] .kmp-scrim { opacity:1; visibility:visible; }
  html[data-drawer="open"] body { overflow:hidden; }
  /* mobilde hamburger açıkken X */
  html[data-drawer="open"] .kmp-burger span { background:transparent; }
  html[data-drawer="open"] .kmp-burger span::before { transform:translateY(6px) rotate(45deg); }
  html[data-drawer="open"] .kmp-burger span::after { transform:translateY(-6px) rotate(-45deg); }
}

@media (prefers-reduced-motion: reduce) {
  .kmp-sidebar, .kmp-sidebar__inner, .kmp-scrim, .kmp-burger span, .kmp-burger span::before, .kmp-burger span::after, .kmp-sidebar .nav-link { transition:none !important; }
}

/* ---- Yazdırma (PDF print): sadece içerik ---- */
/* Onay diyaloğu (KampusConfirm) — ortalı, modern. */
.kmp-confirm { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); z-index:1090;
  width:min(440px,92vw); background:var(--bs-body-bg); border:1px solid var(--bs-border-color);
  border-radius:.75rem; box-shadow:0 1.5rem 3rem rgba(0,0,0,.35); overflow:hidden;
  animation:kmpConfirmIn .16s cubic-bezier(.4,0,.2,1); }
@keyframes kmpConfirmIn { from{opacity:0; transform:translate(-50%,-46%) scale(.97)} to{opacity:1; transform:translate(-50%,-50%) scale(1)} }
.kmp-confirm__head { display:flex; align-items:center; gap:.6rem; padding:1rem 1.25rem .5rem; font-weight:600; font-size:1.05rem; }
.kmp-confirm__icon { display:inline-flex; align-items:center; justify-content:center; width:2rem; height:2rem;
  border-radius:50%; background:var(--bs-primary-bg-subtle); color:var(--bs-primary); font-size:1.1rem; flex:0 0 auto; }
.kmp-confirm--danger .kmp-confirm__icon { background:var(--bs-danger-bg-subtle); color:var(--bs-danger); }
.kmp-confirm__body { padding:.25rem 1.25rem 1rem; color:var(--bs-secondary-color); line-height:1.5; }
.kmp-confirm__foot { display:flex; justify-content:flex-end; gap:.5rem; padding:.75rem 1.25rem; background:var(--bs-tertiary-bg); border-top:1px solid var(--bs-border-color); }
@media (prefers-reduced-motion: reduce) { .kmp-confirm { animation:none; } }

/* KampusGrid salt-yazdırma tablosu: ekranda gizli, yalnız baskıda görünür (Virtualize eksik basımını önler). */
.kmp-print-table { display:none; }
.kmp-print-baslik { caption-side:top; text-align:left; font-weight:600; padding:.25rem 0; color:#000; }
/* Yalnız baskıda görünen öğeler (ekran başlığı, sekme başlıkları). */
.kmp-print-only { display:none; }
.kmp-cardprint-head h4 { color:#000; margin:0; }
/* Yazdırma antedi (tüm dökümlerde ortak kurum kimliği — makbuz antetiyle aynı). Ekranda gizli. */
.kmp-print-antet { display:none; }
/* Grup toplam satırındaki Σ sembolü */
.kmp-sum-sym { font-weight:700; color:var(--bs-secondary-color); margin-right:.4rem; }

/* ── Sekmeli Çalışma Alanı ── */
.kmp-tabbar { display:flex; gap:.3rem; flex-wrap:wrap; padding:.4rem .75rem 0; border-bottom:1px solid var(--bs-border-color); background:var(--bs-tertiary-bg); }
.kmp-tab { display:flex; align-items:center; gap:.4rem; padding:.35rem .4rem .35rem .75rem; border:1px solid var(--bs-border-color); border-bottom:none;
  border-radius:.5rem .5rem 0 0; background:var(--bs-body-bg); cursor:pointer; font-size:.86rem; max-width:230px; transition:background .15s cubic-bezier(.4,0,.2,1); }
.kmp-tab:hover { background:var(--bs-secondary-bg); }
.kmp-tab--aktif { background:var(--bs-body-bg); border-top:2px solid var(--bs-primary); font-weight:600; }
.kmp-tab__t { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.kmp-tab__x { border:0; background:transparent; color:var(--bs-secondary-color); font-size:.7rem; line-height:1; padding:.15rem .3rem; border-radius:.3rem; }
.kmp-tab__x:hover { background:var(--bs-danger-bg-subtle); color:var(--bs-danger); }
/* Çalışma alanı sayfası: main padding'siz + tam yükseklik (üstte boşluk ve sayfa scrollbar'ı OLMAZ;
   dikey scroll her sekmenin kendi iframe'inde). Sidebar ile aynı yükseklik hesabı (--kmp-topbar-h).
   body overflow:hidden = DIŞ scrollbar kesin kapalı (1-2px hesap/yuvarlama taşması bile çubuk çizdiriyordu). */
body:has(.kmp-tabbar) { overflow:hidden; }
.kmp-main:has(> .kmp-tabbar) { padding:0 !important; display:flex; flex-direction:column; height:calc(100vh - var(--kmp-topbar-h) - 2px); overflow:hidden; }
.kmp-tab-icerik { flex:1 1 auto; min-height:0; }
.kmp-tab-frame { width:100%; height:100%; border:0; display:block; background:var(--bs-body-bg); }
/* iframe içinde (gömülü) chrome gizle — html.kmp-embedded App.razor head script'iyle paint'ten önce gelir. */
html.kmp-embedded .kmp-topbar, html.kmp-embedded .kmp-sidebar, html.kmp-embedded .kmp-scrim { display:none !important; }
html.kmp-embedded .kmp-main { padding-top:.4rem; }
html.kmp-embedded .kmp-body { display:block; }

@media print {
  /* Sayfa başlık/filtre şeritleri PDF'te gereksiz (dökümün kendi antedi + başlık satırı var). */
  .kmp-topbar, .kmp-sidebar, .kmp-scrim, .kmp-noprint, .kmp-toolbar, .kmp-filters, .kmp-stats { display:none !important; }
  .kmp-body { display:block; }
  .kmp-main { padding:0; }
  .erp-table { font-size:11px; }
  .erp-table th, .erp-table td { border-color:#ccc; }
  a[href]:after { content:""; }
  /* Sanal ekran tablosunu gizle, tam salt-yazdırma tablosunu göster */
  .kmp-grid-scroll { display:none !important; }
  .kmp-print-table { display:table !important; width:100%; }
  .kmp-print-table .kmp-group-row { background:#eee !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  /* Modal içinden tek grid yazdırılırken diğer grid'leri (ör. arka plandaki öğrenci listesi) gizle. */
  body.kmp-print-single .kmp-grid:not(.kmp-printing) { display:none !important; }
  /* Modal'ı baskıda normal akışa al: position:fixed + max-height kutusu mid-page'de kalıp içeriği kırpıyordu.
     Statik akış + tam genişlik → tablo sayfaya yayılır (yeniden konumlama yerine ölçekleme). */
  .kmp-cardmodal-backdrop, .kmp-modal-backdrop { display:none !important; }
  .kmp-cardmodal, .kmp-modal {
    position:static !important; transform:none !important; margin:0 !important; inset:auto !important;
    width:100% !important; max-width:100% !important; max-height:none !important; height:auto !important;
    box-shadow:none !important; border:0 !important; border-radius:0 !important; overflow:visible !important;
  }
  .kmp-cardmodal-body, .kmp-modal-body { overflow:visible !important; max-height:none !important; }
  .kmp-modal-resize, .kmp-modal-head .btn-close, .kmp-modal-foot { display:none !important; }
  /* Tarayıcı yazdırmada sayfa kenar boşlukları + genişliğe sığacak ölçek için tablo otomatik düzen. */
  .kmp-print-table { table-layout:auto !important; }

  /* ── Antet (kurum kimliği) — tüm dökümlerde üstte ── */
  .kmp-print-antet { display:flex !important; align-items:center; gap:.7rem; padding-bottom:.4rem; margin-bottom:.5rem; border-bottom:2px solid #333; }
  .kmp-print-antet__logo { height:44px; width:auto; }
  .kmp-print-antet__org { flex:1 1 auto; }
  .kmp-print-antet__name { font-weight:700; font-size:13px; color:#000; }
  .kmp-print-antet__sub { font-size:9.5px; color:#444; }
  .kmp-print-antet__meta { font-size:9.5px; color:#444; align-self:flex-start; }

  /* Tablolar kapsayıcı çerçevenin DIŞINA taşmasın: uzun hücreler kırılır, panel taşmayı keser. */
  .kmp-panel { overflow:hidden !important; }
  .kmp-print-table th, .kmp-print-table td { word-break:break-word; overflow-wrap:anywhere; }

  /* ── Öğrenci Kartı tam yazdırma: yalnız klon (#kmp-print-root) görünür, diğer her şey display:none → boş sayfa yok ── */
  .kmp-print-only { display:block !important; }
  body.kmp-print-card > *:not(#kmp-print-root) { display:none !important; }
  #kmp-print-root { display:block !important; padding:.2rem; }
  #kmp-print-root .kmp-noprint { display:none !important; }
  #kmp-print-root .kmp-ogr-header { display:none !important; }   /* gradient başlık yerine sade baskı başlığı */
  /* Kart sekmeleri baskıda alt alta (grid-stack çöz) ve İKİSİ de görünür. */
  #kmp-print-root .kmp-cardtabs { display:block !important; }
  #kmp-print-root .kmp-cardtabs > * { grid-area:auto !important; visibility:visible !important; }
  /* Grid: sanal ekran tablosunu gizle, tam salt-yazdırma tablosunu göster. */
  #kmp-print-root .kmp-grid-scroll { display:none !important; }
  #kmp-print-root .kmp-print-table { display:table !important; width:100%; }
  /* KPI şeridi tek satıra 5 kolon (dar kağıtta 2-kolona düşmesin). */
  #kmp-print-root .kmp-kpi-strip { grid-template-columns:repeat(5,1fr) !important; gap:.4rem; }
  #kmp-print-root .kmp-kpi { border:1px solid #ccc; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .kmp-cardprint-head { margin:.2rem 0 .6rem; }
}
@page { margin:1cm; }

/* Blazor hata çubuğu: App.razor'daki div MainLayout'un scoped CSS'iyle eşleşmediği için global gizleme şart. Hata olunca blazor.web.js inline display:block ile gösterir. */
#blazor-error-ui { display:none; position:fixed; bottom:0; left:0; width:100%; padding:.6rem 1.25rem; background:#b32121; color:#fff; box-shadow:0 -1px 2px rgba(0,0,0,.2); z-index:1000; }
#blazor-error-ui a, #blazor-error-ui .reload { color:#fff; text-decoration:underline; }
#blazor-error-ui .dismiss { cursor:pointer; position:absolute; right:.75rem; top:.5rem; }
