﻿/* RehaCRM ortak uygulama kabugu (UI.1 / UI.2 / UI.3 / UI.13 / UI.14).
   Butun sayfalar ayni ust cubuk, sol menu, breadcrumb ve sayfa basligini bu dosyadan alir.
   Renk, yaricap, golge ve bosluk degerleri yalniz buradaki token'lardan okunur. */

:root {
  --app-topbar-h: 60px;
  --app-nav-w: 256px;
  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --gap-page: clamp(16px, 2.6vw, 32px);
  --state-info: var(--accent-sky);
  --state-success: var(--accent-green);
  --state-warning: var(--accent-orange);
  --state-danger: var(--accent-rose);
  --state-neutral: var(--muted);
}

/* ---- Yerlesim ---------------------------------------------------------- */

body.app-managed {
  margin: 0;
  background: var(--canvas);
}

.app-shell {
  display: grid;
  grid-template-columns: var(--app-nav-w) minmax(0, 1fr);
  grid-template-rows: var(--app-topbar-h) minmax(0, 1fr);
  grid-template-areas: "topbar topbar" "sidebar main";
  min-height: 100vh;
}

.app-skip-link {
  position: fixed;
  top: 8px;
  left: 12px;
  z-index: 2000;
  padding: 9px 14px;
  color: var(--ink);
  background: #fff;
  border: 2px solid var(--brand);
  border-radius: var(--radius-sm);
  box-shadow: 0 8px 24px rgba(7,27,56, .18);
  transform: translateY(-150%);
  transition: transform .12s ease;
}
.app-skip-link:focus { color: var(--ink); transform: translateY(0); }

.app-topbar {
  grid-area: topbar;
  position: sticky;
  top: 0;
  z-index: 1030;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 clamp(12px, 2vw, 22px);
  color: #fff;
  /* UI.14 (13.10.2026): beyaz yazı taşıyan degrade --brand-dark’ta biter; --brand (#1d5fbf) beyazla 3,35:1, --brand-dark 5,2:1. */
  background: linear-gradient(112deg, var(--brand-deep), var(--brand-dark));
  box-shadow: 0 2px 12px rgba(7,31,67, .16);
}

.app-brand {
  font-weight: 800;
  font-size: 1.08rem;
  letter-spacing: -.03em;
  color: #fff;
  text-decoration: none;
}

.app-brand:hover, .app-brand:focus-visible { color: #fff; }
/* Kurum logosu (02.11.2026): koyu üst çubukta okunması için beyaz zeminli, yüksekliği sabit. */
.app-brand-logo { display: inline-flex; align-items: center; }
.app-brand-logo img { display: block; height: 34px; max-width: 170px; object-fit: contain; background: #fff; border-radius: 8px; padding: 3px 8px; }
.app-brand-logo:focus-visible { outline: 3px solid rgba(255, 255, 255, .6); outline-offset: 2px; border-radius: 10px; }
/* Ana Sayfa bağlantısı (27.10.2026 kullanıcı isteği): marka adının yanında, koyu üst çubukta açık zeminli hap. */
.app-anasayfa { display: inline-flex; align-items: center; gap: 6px; margin-left: 14px; padding: 4px 12px; border-radius: 999px;
  background: #fff4d6; color: #6b4500; font-size: .82rem; font-weight: 700; text-decoration: none; white-space: nowrap; }
.app-anasayfa:hover, .app-anasayfa:focus-visible { background: #ffe7a8; color: #4a3000; }
.app-anasayfa:focus-visible { outline: 3px solid rgba(255, 231, 168, .55); outline-offset: 2px; }
.app-anasayfa[aria-current="page"] { box-shadow: inset 0 0 0 2px #e0b347; }
@media (max-width: 575.98px) { .app-anasayfa { margin-left: 8px; padding: 4px 8px; } .app-anasayfa span { display: none; } }
.app-topbar-spacer { flex: 1 1 auto; }

.app-tenant-badge {
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding: .35rem .7rem;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 650;
  background: rgba(255, 255, 255, .16);
}

.app-topbar-link { color: #e3ebf6; text-decoration: none; font-weight: 650; font-size: .86rem; }
.app-topbar-link:hover, .app-topbar-link:focus-visible { color: #fff; text-decoration: underline; }

.app-user { display: flex; flex-direction: column; line-height: 1.15; font-size: .84rem; }
.app-user small { color: #bed0ea; font-size: .72rem; }
.app-logout { margin: 0; }

.app-nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  width: 38px;
  height: 34px;
  padding: 0 7px;
  border: 1px solid rgba(255, 255, 255, .3);
  border-radius: var(--radius-sm);
  background: transparent;
}

.app-nav-toggle span { display: block; height: 2px; border-radius: 2px; background: #fff; }

/* ---- Sol menu ---------------------------------------------------------- */

.app-sidebar {
  grid-area: sidebar;
  position: sticky;
  top: var(--app-topbar-h);
  align-self: start;
  max-height: calc(100vh - var(--app-topbar-h));
  overflow-y: auto;
  padding: 14px 12px 28px;
  background: var(--surface);
  border-right: 1px solid var(--line);
}

.app-nav-search { margin-bottom: 12px; }
.app-nav-search .form-control { min-height: 38px; background: #f8fafb; }
.app-nav-empty { margin: 14px 8px; color: var(--muted); font-size: .78rem; line-height: 1.45; }

.app-nav-group {
  margin: 16px 8px 6px;
  font-size: .7rem;
  font-weight: 750;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--muted);
}

.app-nav-module > summary {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: var(--radius-sm);
  color: #2e4256;
  font-weight: 700;
  font-size: .88rem;
  cursor: pointer;
  list-style: none;
}

.app-nav-module > summary::-webkit-details-marker { display: none; }
.app-nav-module > summary::after { content: "\203A"; margin-left: auto; font-size: 1.1rem; color: var(--muted); transform: rotate(90deg); transition: transform .15s ease; }
.app-nav-module[open] > summary::after { transform: rotate(-90deg); }
.app-nav-module > summary:hover, .app-nav-module > summary:focus-visible { background: var(--brand-soft); color: var(--brand-dark); }
.app-nav-children { padding-left: 12px; border-left: 1px solid var(--line); margin: 2px 0 6px 20px; }
/* Modül içindeki alt başlık (MEBBİS/BKDS İşlemleri › MEBBİS, BKDS); bağlantı değil, yalnız bölücü. */
.app-nav-altbaslik { margin: 10px 0 2px; padding: 0 10px; font-size: .68rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.app-nav-altbaslik:first-child { margin-top: 4px; }
/* MEBBİS/BKDS işlem sekmeleri (IslemSekmeleri) ve MEBBİS Ders İşlemleri alt sekmeleri. */
.nav-pills-sm .nav-link { padding: .3rem .75rem; font-size: .85rem; }

.app-nav-icon {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 8px;
  background: var(--brand-soft);
  color: var(--brand-dark);
  font-size: .68rem;
  font-weight: 800;
}

.app-nav-link {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  margin: 2px 0;
  border-radius: var(--radius-sm);
  color: #4a5d6d;
  font-size: .86rem;
  font-weight: 650;
  text-decoration: none;
}

.app-nav-link-top { font-size: .88rem; font-weight: 700; color: #2e4256; }
.app-nav-link:hover, .app-nav-link:focus-visible { background: var(--brand-soft); color: var(--brand-dark); }
.app-nav-link.active { background: var(--brand-soft); color: var(--brand-dark); box-shadow: inset 3px 0 0 var(--brand); }
.app-nav-backdrop { display: none; }

/* ---- Icerik alani ------------------------------------------------------ */

.app-main {
  grid-area: main;
  min-width: 0;
  padding: 18px var(--gap-page) 56px;
}
.page-body,.section-card,.page-body .row>[class*="col-"] { min-width:0; }
.page-body .table-responsive { display:block; width:100%; max-width:100%; overflow-x:auto; }
@media (max-width:700px) { body.app-managed { overflow-x:hidden; }.page-body>.row { margin-left:0; margin-right:0; }.page-body>.row>[class*="col-"] { padding-left:0; padding-right:0; } }

/* Breadcrumb, gorunur sayfa basligi ve birincil aksiyonlar ayni kompakt baglam
   satirinda kalir. Bu duzen liste ekranlarinda konumu ve ana gorevi belirginlestirir. */
.app-crumbbar {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 14px;
  min-height: 52px;
  margin: 0 0 16px;
}
.app-page-context { display: grid; gap: 5px; min-width: 0; }
.app-page-title { margin: 0; color: var(--ink); font-size: clamp(1.2rem, 1.7vw, 1.55rem); line-height: 1.2; letter-spacing: -.025em; }
/* 23.10.2026 kullanıcı isteği: üst bölge sıkıştırıldı, çalışma alanına yer kalsın. Geri, iz yolu ve başlık tek satırdır;
   başlık iz yolunun son halkasının yerine geçer (aynı metin iki kez yazılmaz). */
.app-main { padding-top: 10px; }
.app-crumbbar { align-items: center; min-height: 0; margin-bottom: 10px; }
.app-page-context { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.app-page-context:has(.app-page-title) .app-breadcrumb .breadcrumb-item.active { display: none; }
.app-page-context:has(.app-breadcrumb) .app-page-title { font-size: 1.15rem; }
.app-page-context:has(.app-breadcrumb) .app-page-title::before { content: "›"; margin-right: .4rem; color: var(--muted); font-weight: 400; }
.app-modul-serit { margin-bottom: 8px; }
.app-modul-serit a { padding-top: 6px; padding-bottom: 6px; }
.app-breadcrumb { margin: 0 0 14px; }
.app-crumbbar .app-breadcrumb { margin: 0; }
.page-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin-left: auto; }
.page-actions .btn { display: inline-flex; align-items: center; gap: .4rem; }
.page-actions > form { margin: 0; }
.app-breadcrumb .breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .25rem .1rem;
  margin: 0;
  padding: 0;
  background: none;
  font-size: .78rem;
}
.app-breadcrumb .breadcrumb-item + .breadcrumb-item::before { content: "\203A"; color: var(--muted); }
.app-breadcrumb a { color: var(--brand-dark); text-decoration: none; }
.app-breadcrumb a:hover, .app-breadcrumb a:focus-visible { text-decoration: underline; }
.app-breadcrumb .breadcrumb-item.active { color: var(--ink); font-weight: 700; }
/* Detay sayfalarinda iz yolunun solundaki "Geri" dugmesi (AppShell.AppendBreadcrumb, MenuCatalog.GeriDugmesiAlir). */
.app-crumbline { display: flex; align-items: center; flex-wrap: wrap; gap: .25rem .6rem; min-width: 0; }
.app-crumbline .app-breadcrumb { min-width: 0; }
.app-geri { display: inline-flex; align-items: center; gap: .3rem; flex: 0 0 auto; min-height: 32px; padding: .2rem .65rem; font-size: .8rem; font-weight: 650; line-height: 1.2; }
.app-geri span { font-size: 1.05rem; line-height: 1; }
.app-geri:focus-visible { outline: 3px solid var(--brand-dark); outline-offset: 2px; }

.page-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  padding: 20px 24px;
  margin-bottom: 20px;
  color: #fff;
  border-radius: var(--radius-lg);
  background: linear-gradient(125deg, var(--brand-deep), var(--brand-dark));
  box-shadow: 0 16px 38px rgba(9,42,92, .18);
}

.page-eyebrow { font-size: .72rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; color: #eef2f8; }
.page-title { margin: .3rem 0 .35rem; font-size: clamp(1.45rem, 2.4vw, 2rem); }
.page-lead { max-width: 720px; margin: 0; color: #e3ebf6; font-size: .92rem; line-height: 1.55; }

.page-body > h2:first-child, .page-body > h3:first-child { margin-top: 0; }
.page-body > .card, .page-body > .table-responsive, .page-body > .row { margin-bottom: 18px; }

/* Kabuk disinda kalan eski kenar bosluk yamalarini devre disi birakir. */
body.app-managed .page-body > h1,
body.app-managed .page-body > h2,
body.app-managed .page-body > h3,
body.app-managed .page-body > p,
body.app-managed .page-body > form,
body.app-managed .page-body > table,
body.app-managed .page-body > .table-responsive,
body.app-managed .page-body > article { margin-left: 0; margin-right: 0; }

/* ---- Responsive (UI.14) ------------------------------------------------ */

@media (max-width: 1100px) {
  .app-shell { grid-template-columns: minmax(0, 1fr); grid-template-areas: "topbar" "main"; }
  .app-nav-toggle { display: flex; }
  .app-tenant-badge { display: none; }
  .app-sidebar {
    position: fixed;
    top: var(--app-topbar-h);
    left: 0;
    bottom: 0;
    z-index: 1040;
    width: min(86vw, var(--app-nav-w));
    max-height: none;
    transform: translateX(-102%);
    transition: transform .18s ease;
    box-shadow: 0 18px 44px rgba(7,27,56, .2);
  }
  .app-shell.app-nav-open .app-sidebar { transform: translateX(0); }
  .app-shell.app-nav-open .app-nav-backdrop {
    display: block;
    position: fixed;
    inset: var(--app-topbar-h) 0 0 0;
    z-index: 1035;
    background: rgba(8,24,47, .42);
  }
}

@media (max-width: 700px) {
  .app-user, .app-topbar-link { display: none; }
  .page-head { flex-direction: column; align-items: flex-start; padding: 18px; }
  .app-main { padding-top: 14px; }
  .app-crumbbar { align-items: stretch; gap: 10px; }
  .app-page-context, .page-actions { width: 100%; }
  .page-actions { margin-left: 0; }
  .page-actions .btn { min-height: 40px; }
}

/* ---- Kurum rolleri ve eylem izin matrisi (KP.9) ----------------------- */

.role-card-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.role-card { --role-color:var(--brand); --role-soft:var(--brand-soft); display:grid; grid-template-columns:42px minmax(0,1fr) auto; align-items:center; gap:12px; min-height:104px; padding:14px; border:1px solid var(--line); border-top:3px solid var(--role-color); border-radius:var(--radius-md); background:#fff; }
.role-card-icon { display:grid; place-items:center; width:42px; height:42px; border-radius:12px; color:var(--role-color); background:var(--role-soft); font-weight:850; }
.role-card h3 { margin:0; font-size:.9rem; }.role-card p { margin:.25rem 0 0; color:var(--muted); font-size:.7rem; line-height:1.4; }
.role-card-count { display:grid; justify-items:end; color:var(--muted); font-size:.66rem; white-space:nowrap; }.role-card-count strong { color:var(--role-color); font-size:1.35rem; line-height:1; }
/* P2.3 (09.10.2026) yetki sablonlari */
.role-card-sablon { display:block; margin-top:.3rem; color:var(--role-color); font-size:.68rem; font-weight:650; }
.sablon-icerik { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:12px; margin-top:.75rem; }
.sablon-icerik-kart { padding:12px; border:1px solid var(--line); border-radius:var(--radius-md); background:#fff; }
.sablon-liste { max-height:220px; overflow-y:auto; margin:.25rem 0 .75rem; padding-left:1.1rem; }
.sablon-onizleme { padding:12px; border:1px solid var(--line); border-radius:var(--radius-md); background:var(--brand-soft,#e9f1fd); }
/* P2.4 (09.10.2026) kritik yetki onayi */
.kritik-onay { border-left:4px solid #b9465a; }
.kritik-onay-liste { max-height:200px; overflow-y:auto; padding-left:1.1rem; }
.role-card-violet { --role-color:#7255c4; --role-soft:#f0ecfb; }.role-card-sky { --role-color:#287fbc; --role-soft:#e7f3fb; }.role-card-green { --role-color:#16835a; --role-soft:#e7f7ef; }.role-card-orange { --role-color:#b56b17; --role-soft:#fff2df; }.role-card-rose { --role-color:#b9465a; --role-soft:#fcebee; }
.permission-matrix { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:0; padding:12px; border:1px solid var(--line); border-radius:var(--radius-sm); }
.permission-matrix legend { float:none; width:auto; margin:0 0 4px; padding:0; color:var(--muted); font-size:.72rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.permission-choice { position:relative; }.permission-choice input { position:absolute; inset:0; opacity:0; }.permission-choice span { display:flex; justify-content:center; padding:.55rem .65rem; border:1px solid var(--line); border-radius:9px; color:var(--muted); background:#fff; font-size:.76rem; font-weight:700; cursor:pointer; }
.permission-choice input:checked + span { color:var(--brand-dark); border-color:var(--brand); background:var(--brand-soft); }.permission-choice input:focus-visible + span { outline:3px solid rgba(29,95,191,.25); outline-offset:2px; }.permission-choice-view { grid-column:1/-1; }
.permission-state { display:inline-flex; padding:.22rem .42rem; border-radius:999px; font-size:.64rem; font-weight:750; white-space:nowrap; }.permission-allow { color:#0c704b; background:#e7f7ef; }.permission-deny { color:#9d2f43; background:#fcebee; }.permission-inherit { color:#5b6873; background:#edf1f4; }
.permission-summary-table th,.permission-summary-table td { white-space:nowrap; }
@media (max-width:1100px) { .role-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px) { .role-card-grid { grid-template-columns:1fr; }.role-card { grid-template-columns:38px minmax(0,1fr) auto; }.permission-matrix { grid-template-columns:1fr; }.permission-choice-view { grid-column:auto; } }

@media print {
  /* 20.10.2026: abonelik/deneme bandı resmî çıktıya girmez. */
  .app-topbar, .app-sidebar, .app-crumbbar, .app-breadcrumb, .app-nav-backdrop, .app-status-bar { display: none !important; }
  .app-shell { display: block; }
  .page-head { color: var(--ink); background: none; box-shadow: none; padding: 0 0 12px; }
  .page-eyebrow, .page-lead { color: var(--muted); }
}

/* ---- Durum rozetleri (UI.5) -------------------------------------------- */

.status-pill-muted { color: #3b4c5c; background: #eaf0f3; border: 1px solid #d9e2e8; }
.status-pill-warning { color: #6b4405; background: #fdf1e0; border: 1px solid #f6dfbc; }
.status-pill-danger { color: #7a2531; background: #fce7ea; border: 1px solid #f5ccd3; }
.status-pill-info { color: #173a6b; background: var(--brand-soft); border: 1px solid #bed0ea; }

/* ---- Temel icerik katmani ----------------------------------------------
   Henuz ortak form/liste bilesenlerine gecirilmemis sayfalarin ciplak
   isaretlemesi de ayni tasarim dilini alir (P1.1 / P1.7 gecisine kadar).
   Bootstrap sinifi tasiyan isaretlemeye dokunulmaz. */

.page-body > h2, .page-body > h3 {
  margin: 26px 0 12px;
  font-size: 1.12rem;
  font-weight: 750;
  color: var(--ink);
}

.page-body > h2:first-child, .page-body > h3:first-child { margin-top: 0; }

.page-body > form:not([class]),
.page-body > table:not([class]),
.page-body > ul:not([class]),
.page-body > ol:not([class]) {
  padding: 18px;
  margin: 0 0 16px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow);
}

.page-body > form:not([class]) {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-end;
}

.page-body input:not([class]):not([type="hidden"]),
.page-body select:not([class]),
.page-body textarea:not([class]) {
  min-height: 40px;
  min-width: 170px;
  flex: 1 1 170px;
  padding: .45rem .7rem;
  color: var(--ink);
  background: var(--surface);
  border: 1px solid #d5dfe6;
  border-radius: var(--radius-sm);
  font: inherit;
  font-size: .88rem;
}

.page-body textarea:not([class]) { min-height: 90px; flex-basis: 100%; }

.page-body input:not([class]):focus,
.page-body select:not([class]):focus,
.page-body textarea:not([class]):focus {
  outline: 0;
  border-color: #7aa7ef;
  box-shadow: 0 0 0 .2rem rgba(29,95,191, .16);
}

.page-body button:not([class]) {
  min-height: 40px;
  padding: .45rem 1.1rem;
  color: #fff;
  background: var(--brand-dark);
  border: 1px solid var(--brand);
  border-radius: var(--radius-sm);
  font: inherit;
  font-size: .88rem;
  font-weight: 650;
}

.page-body button:not([class]):hover { background: var(--brand-dark); border-color: var(--brand-dark); }
.page-body button:not([class]):focus-visible { outline: 3px solid rgba(29,95,191, .3); outline-offset: 2px; }

.page-body > table:not([class]) { width: 100%; padding: 0; border-collapse: collapse; overflow: hidden; }
.page-body > table:not([class]) th,
.page-body > table:not([class]) td { padding: .74rem .9rem; text-align: left; border-bottom: 1px solid #edf0f5; }

.page-body > table:not([class]) th {
  background: #f8f9fc;
  color: #697286;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .035em;
  text-transform: uppercase;
  white-space: nowrap;
}

.page-body > table:not([class]) tr:last-child td { border-bottom: 0; }
.page-body > ul:not([class]), .page-body > ol:not([class]) { padding-left: 34px; }
.page-body > ul:not([class]) li, .page-body > ol:not([class]) li { padding: .3rem 0; }

/* ---- Ikonlar ve Edisify kabuk ayrintilari ------------------------------ */

.app-icon { width: 18px; height: 18px; flex: 0 0 auto; }
.app-icon-sm { width: 15px; height: 15px; }
.app-icon-lg { width: 22px; height: 22px; }

.app-nav-link .app-icon, .app-nav-module > summary .app-icon { opacity: .9; }

/* Modul basligi: aktifken Edisify'deki dolu teal hap gorunumu */
.app-nav-module[open] > summary, .app-nav-module > summary.active { color: #fff; background: var(--brand-dark); }
.app-nav-module[open] > summary .app-nav-icon, .app-nav-module > summary.active .app-nav-icon { color: #fff; background: rgba(255, 255, 255, .18); }
.app-nav-module[open] > summary::after { color: rgba(255, 255, 255, .8); }
.app-nav-module[open] > summary:hover { color: #fff; background: var(--brand-dark); }

.app-nav-link.active::before {
  content: "";
  width: 6px;
  height: 6px;
  margin-left: auto;
  border-radius: 50%;
  background: currentColor;
  order: 9;
}

/* Ust cubuk: durum rozetleri, bildirim zili, kullanici hapi (genel arama 23.10.2026 kaldirildi) */

.app-status-badge {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  height: 34px;
  padding: 0 .75rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, .16);
  color: #fff;
  font-size: .74rem;
  font-weight: 750;
  letter-spacing: .02em;
  white-space: nowrap;
}
.app-status-badge small { font-weight: 650; }
.app-status-badge-on { background: var(--accent-green); }
.app-status-badge-off { background: #b4233b; } /* Bağlı değil: metinle birlikte kırmızı durum; beyaz yazıyla erişilebilir kontrast. */

.app-bell { position: relative; display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; color: #fff; background: rgba(255, 255, 255, .16); }
.app-bell:hover, .app-bell:focus-visible { color: #fff; background: rgba(255, 255, 255, .26); }
.app-bell span {
  position: absolute;
  top: -3px;
  right: -3px;
  min-width: 17px;
  height: 17px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--accent-rose);
  color: #fff;
  font-size: .64rem;
  font-weight: 800;
  line-height: 17px;
  text-align: center;
}

.app-user { flex-direction: row; align-items: center; gap: .5rem; }
.app-avatar {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .2);
  font-size: .74rem;
  font-weight: 800;
  letter-spacing: .02em;
}
.app-user-text { display: flex; flex-direction: column; line-height: 1.15; }
.app-user-text strong { font-size: .82rem; }
.app-user-text small { color: #eef2f8; font-size: .7rem; }

/* Abonelik/deneme durum bandi (UI.3) */
.app-status-bar {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  margin-bottom: 16px;
  border: 1px solid #f6dfbc;
  border-radius: var(--radius-md);
  background: #fffaf0;
}
.app-status-bar .app-status-icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; color: #fff; background: var(--accent-orange); }
.app-status-bar strong { display: block; font-size: .92rem; }
.app-status-bar span { color: var(--muted); font-size: .84rem; }
.app-status-bar .app-status-cta { margin-left: auto; }
.app-status-bar-danger { border-color: #f5ccd3; background: #fff6f7; }
.app-status-bar-danger .app-status-icon { background: var(--accent-rose); }

/* Sayfa basligi eylem yuvasi */
.page-head-actions { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.page-head-actions .btn { display: inline-flex; align-items: center; gap: .4rem; }

@media (max-width: 1100px) { .app-status-badge { display: none; } }
@media (max-width: 700px) { .app-user-text { display: none; } .app-status-bar { flex-wrap: wrap; } .app-status-bar .app-status-cta { margin-left: 0; width: 100%; } }

/* ---- Ortak liste kurallari (P1.3 / P1.5 / UI.4) ------------------------ */

.list-shell { overflow: visible; }
.list-shell .dt-container { padding: 0; }
.list-shell .dt-layout-table { overflow-x: auto; }
.list-shell .dt-layout-row { margin: 0; padding: 12px 16px; }
.list-shell .dt-layout-row.dt-layout-table { padding: 0; }
.list-shell table.dataTable { margin: 0 !important; }
.list-shell table.dataTable thead th { position: relative; padding-right: 2.4rem; background: #fff; color: #4f5965; font-size: .78rem; letter-spacing: 0; text-transform: none; }

.list-summary-dashboard { display: grid; grid-template-columns: repeat(auto-fit,minmax(160px,1fr)); gap: 12px; margin: 0 0 16px; }
/* Sayfa aciklamasi ile sayac kartlari arasinda nefes payi (Siniflar, Unvanlar gibi aciklamali listeler). */
.page-body > p + .list-summary-dashboard, .page-body > div:has(> p) + .list-summary-dashboard { margin-top: 14px; }
.list-summary-card { display: grid; align-content: center; gap: 4px; padding: 10px 14px; text-align: left; color: var(--ink); border: 1px solid var(--line); border-radius: 14px; background: #fff; box-shadow: 0 7px 22px rgba(12,55,70,.045); transition: border-color .15s ease,box-shadow .15s ease,transform .15s ease; }
.list-summary-card:hover,.list-summary-card:focus-visible { border-color: #99c9ff; box-shadow: 0 10px 25px rgba(21,112,239,.09); transform: translateY(-1px); }
.list-summary-card:focus-visible { outline: 3px solid rgba(21,112,239,.18); outline-offset: 2px; }
.list-summary-card.is-selected { border-color: #1570ef; background: #f3f7ff; box-shadow: 0 10px 27px rgba(21,112,239,.1); }
.list-summary-card span { overflow: hidden; color: #344054; font-size: .76rem; font-weight: 750; white-space: nowrap; text-overflow: ellipsis; }
.list-summary-card strong { color: #1570ef; font-size: 1.25rem; line-height: 1.1; }
/* Aciklama gorunmez; ekran okuyucuya ve title ile fareye kalir. Kart iki satirdir. */
.list-summary-card { position: relative; }
.list-summary-card small { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
.list-scroll-hint { display: none; margin: 0; padding: 8px 16px; color: #516174; background: #f8fafc; border-bottom: 1px solid var(--line); font-size: .72rem; }

.list-active-filters { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--line); background: #f8fafc; }
.list-active-filters[hidden] { display: none; }
.list-active-filters > strong { margin-right: 2px; color: #697586; font-size: .75rem; }
.list-filter-chip { padding: .35rem .68rem; color: #1567d3; border: 1px solid #b9d5ff; border-radius: 999px; background: #edf5ff; font-size: .72rem; font-weight: 650; }
.list-filter-chip:hover { background: #dfeeff; }
.list-filter-clear { margin-left: 2px; border-radius: 999px; font-size: .7rem; }

.list-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; padding: 12px 16px; border-bottom: 1px solid var(--line); background: #fff; }
/* Arac cubugu dar icerikte alt satira gecer; dugme ve etiket metni kendi icinde kirilmaz,
   arama kutusu kabi tasirip ikinci yatay kaydirma cubugu uretmez. */
.list-toolbar .btn, .list-search { white-space: nowrap; }
.list-toolbar-tools { display: flex; align-items: center; gap: 4px; }
.list-tool-status { align-self: center; font-size: 12px; color: var(--danger, #c0392b); }
.list-tool-status:empty { display: none; }
.list-tool-button,.list-columns > summary { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 38px; min-height: 38px; color: #425466; border-color: #d9e1e7; background: #fff; }
.list-tool-label,.list-columns > summary span { font-size: .75rem; font-weight: 650; }
.list-columns { position: relative; }
.list-columns > summary { gap: .35rem; list-style: none; white-space: nowrap; }
.list-columns > summary::-webkit-details-marker { display: none; }
.list-columns-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 1060; display: grid; min-width: 210px; padding: 8px; border: 1px solid var(--line); border-radius: 10px; background: #fff; box-shadow: 0 14px 34px rgba(12,55,70,.16); }
.list-columns-menu label { display: flex; align-items: center; gap: .55rem; margin: 0; padding: .45rem .55rem; border-radius: 7px; font-size: .76rem; font-weight: 550; }
.list-columns-menu label:hover { background: #f5f8fa; }
/* P3.1 — Sütunlar menüsünde sıra düğmeleri (ColReorder) */
.list-column-row { display: flex; align-items: center; gap: 2px; }
.list-column-row label { flex: 1 1 auto; }
.list-column-move { flex: 0 0 auto; width: 30px; height: 30px; border: 0; border-radius: 7px; background: transparent; color: #4a5d6c; font-size: 1.05rem; line-height: 1; }
.list-column-move:hover:not(:disabled), .list-column-move:focus-visible { background: #f5f8fa; color: var(--primary, #0d3570); }
.list-column-move:disabled { opacity: .3; }
/* P3.1 (154) — "Görünümler" menüsü */
.list-views-menu { min-width: 280px; gap: 8px; }
.list-views-list { display: grid; gap: 2px; max-height: 240px; overflow-y: auto; }
.list-view-row { display: flex; align-items: center; gap: 4px; }
.list-view-apply { flex: 1 1 auto; display: flex; align-items: center; flex-wrap: wrap; gap: 6px; min-height: 36px; padding: .4rem .55rem; border: 0; border-radius: 7px; background: transparent; color: inherit; font-size: .78rem; font-weight: 600; text-align: left; }
.list-view-apply:hover, .list-view-apply:focus-visible { background: #f5f8fa; }
.list-view-badge { padding: 1px 6px; border-radius: 999px; background: #eef3f6; color: #4a5d6c; font-size: .66rem; font-weight: 650; }
.list-view-badge.is-default { background: #e3f4ef; color: #0d3570; }
.list-view-icon { flex: 0 0 auto; width: 32px; height: 32px; border: 0; border-radius: 7px; background: transparent; color: #4a5d6c; font-size: 1rem; line-height: 1; }
.list-view-icon:hover, .list-view-icon:focus-visible { background: #f5f8fa; }
.list-view-icon.is-danger:hover { background: #fdecec; color: #b42318; }
.list-views-form { display: grid; gap: 4px; padding-top: 8px; border-top: 1px solid var(--line); }
.list-views-status:empty { display: none; }
.list-length { display: flex; align-items: center; gap: 7px; margin: 0; color: #344054; font-size: .76rem; font-weight: 550; white-space: nowrap; }
.list-length .form-select { width: 70px; min-height: 38px; }
.list-active-toggle { display: flex; align-items: center; gap: 7px; margin: 0 0 0 auto; padding: 7px 11px; color: #516174; border: 1px solid #d9e3ec; border-radius: 10px; font-size: .76rem; font-weight: 550; white-space: nowrap; }
.list-active-toggle .form-check-input { position: absolute; opacity: 0; }
.list-durum-filter { gap: 9px; }
.list-durum-filter .form-select { width: auto; min-width: 11rem; font-size: .76rem; }
.list-toggle-visual { position: relative; width: 36px; height: 20px; border-radius: 999px; background: #d9e4f0; transition: background .15s ease; }
.list-toggle-visual::after { position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.18); content:""; transition: transform .15s ease; }
.list-active-toggle input:checked + .list-toggle-visual { background: #1570ef; }
.list-active-toggle input:checked + .list-toggle-visual::after { transform: translateX(16px); }
.list-active-toggle input:focus-visible + .list-toggle-visual { outline: 3px solid rgba(21,112,239,.22); outline-offset: 2px; }
.list-search { display: flex; align-items: center; gap: 8px; margin: 0; color: #344054; font-size: .76rem; font-weight: 550; }
.list-search .form-control { width: min(260px,24vw); min-width: 160px; min-height: 38px; }

.has-column-filter .dt-column-header { padding-right: 4px; }
/* 02.11.2026: süzgeç simgesi (sağda, mutlak konumlu) her listede başlık yazısının üstüne binmesin; boşluk yalnız
   .list-shell içinde veriliyordu, sade/araç çubuksuz listelerde yazı simgenin altına giriyordu. */
table.dataTable > thead > tr > th.has-column-filter { position: relative; padding-right: 2.4rem !important; }
/* Sıralama okları başlık yazısının hemen yanında durur (tarih/sayı sütununda ok hücrenin öbür ucuna kaçıp önceki
   sütunun süzgeç simgesine yapışıyordu). */
table.dataTable thead > tr > th div.dt-column-header { justify-content: flex-start; }
table.dataTable thead > tr > th div.dt-column-header span.dt-column-title { flex-grow: 0; }
.column-filter-trigger { position: absolute; top: 50%; right: 9px; z-index: 2; display: grid; place-items: center; width: 25px; height: 25px; padding: 0; color: #a0aab5; border: 0; border-radius: 6px; background: transparent; transform: translateY(-50%); }
.column-filter-trigger svg { width: 15px; height: 15px; }
.column-filter-trigger:hover,.column-filter-trigger:focus-visible,.column-filter-trigger.is-active { color: #1570ef; background: #eaf3ff; }
.column-filter-trigger:focus-visible { outline: 2px solid rgba(21,112,239,.3); }
.column-filter-popover { position: absolute; top: calc(100% + 6px); left: 4px; z-index: 1070; width: 292px; padding: 12px; color: var(--ink); border: 1px solid #d9e1e7; border-radius: 12px; background: #fff; box-shadow: 0 16px 38px rgba(12,55,70,.18); text-align: left; }
.column-filter-popover[hidden] { display: none; }
/* Masaustunde acilan filtre kutusu tablonun kaydirma kabina kirpilmasin diye ekrana sabitlenir (app-tables.js placePanel). */
.column-filter-popover.is-floating { position: fixed; max-height: calc(100vh - 16px); overflow-y: auto; }
.column-filter-heading { display: block; margin-bottom: 9px; font-size: .78rem; }
.column-filter { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.column-filter-text,.column-filter-range,.column-filter-choice { display: flex; flex-direction: column; gap: 7px; }
.column-filter .form-control,.column-filter .form-select,.column-filter .btn { min-height: 34px; font-size: .75rem; font-weight: 500; text-transform: none; letter-spacing: 0; }
.column-filter-choice-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.column-filter-options { max-height: 210px; margin: 1px -12px 0; padding: 4px 12px; overflow-y: auto; border-top: 1px solid #edf1f4; border-bottom: 1px solid #edf1f4; }
.column-filter-options .form-check { margin: 0; padding: .4rem 0 .4rem 1.65rem; }
.column-filter-options .form-check-label { margin: 0; color: #344054; font-size: .76rem; font-weight: 550; text-transform: none; letter-spacing: 0; }
.column-filter-footer { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 11px; padding-top: 10px; border-top: 1px solid var(--line); }

.list-shell .dt-processing { display: flex !important; align-items: center; justify-content: center; gap: 10px; width: 170px; min-height: 52px; margin: -26px 0 0 -85px; color: var(--ink); border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.96); box-shadow: 0 16px 38px rgba(12,55,70,.16); font-size: .8rem; font-weight: 700; }
.list-shell .dt-processing[style*="display: none"] { display: none !important; }
.list-shell .dt-processing::before { width: 20px; height: 20px; border: 3px solid #bbc9df; border-top-color: var(--brand); border-radius: 50%; content:""; animation: reha-spin .7s linear infinite; }
.list-shell .dt-processing > div { display: none !important; }

@media (max-width: 900px) { .list-toolbar { flex-wrap: wrap; } .list-active-toggle { margin-left: 0; } .list-search { width: 100%; margin-left: 0; } .list-search .form-control { width: 100%; } }
@media (max-width: 600px) {
  .list-summary-dashboard { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
  .list-summary-card { min-width: 0; padding: 9px 12px; }
  .list-toolbar { gap: 10px; padding: 12px; }
  .list-toolbar-tools { width: 100%; flex-wrap: wrap; }
  .list-length,.list-active-toggle { width: 100%; }
  .list-active-toggle { justify-content: space-between; }
  .list-durum-filter .form-select { flex: 1 1 auto; min-width: 0; }
  .list-scroll-hint { display: block; }
  .list-shell .dt-layout-table th:first-child,.list-shell .dt-layout-table td:first-child { position: sticky; left: 0; z-index: 2; background: #fff; box-shadow: 1px 0 0 var(--line); }
  .list-shell .dt-layout-table thead th:first-child { z-index: 3; }
  .column-filter-popover { position: fixed; top: 50%; left: 50%; width: min(92vw,320px); transform: translate(-50%,-50%); }
}

@media (prefers-reduced-motion: reduce) { .app-skip-link { transition: none; } }

/* K7 / K9 - zorunlu alan rozeti, karakter kumesi uyarisi ve uzunluk siniri geri bildirimi. */
.zorunlu-rozet { margin-left: .4rem; padding: .05rem .4rem; border-radius: 999px; background: #fdecef; color: #b42318; font-size: .68rem; font-weight: 600; letter-spacing: .02em; vertical-align: middle; }
.charset-hint { margin-top: .25rem; font-size: .75rem; }
.form-control.is-near-limit { border-color: var(--accent-orange, #f79009); }
.form-control.is-at-limit { border-color: #b42318; }

/* Islem sutunu her zaman en solda ve sabit genislikte durur. */
.table thead th:first-child, .table tbody td:first-child { white-space: nowrap; }
.table .row-actions { display: flex; gap: .35rem; }
.table .row-actions .btn { display: inline-flex; align-items: center; gap: .3rem; padding: .22rem .55rem; font-size: .78rem; }

/* ---- KP.6 Yil takvimi -------------------------------------------------- */

.takvim-yil { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 14px; }
.takvim-ay { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 10px; background: #fff; }
.takvim-ay-baslik { margin: 0 0 8px; font-size: .82rem; font-weight: 600; letter-spacing: .02em; }
.takvim-gunler { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.takvim-gun { display: flex; align-items: center; justify-content: center; min-height: 22px; border-radius: 5px; font-size: .7rem; color: var(--muted); }
.takvim-gun.tatil { font-weight: 600; color: #fff; }
.takvim-gun.tatil-resmi { background: #b42318; }
.takvim-gun.tatil-kurum { background: var(--accent-sky, #1570ef); }
.takvim-gun.tatil-idari { background: #7a5af8; }
.takvim-lejant { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin: 0 .25rem 0 .75rem; vertical-align: middle; }
.takvim-lejant.tatil-resmi { background: #b42318; }
.takvim-lejant.tatil-kurum { background: var(--accent-sky, #1570ef); }
.takvim-lejant.tatil-idari { background: #7a5af8; }
/* Okul tatili (116): kurum açık, yalnız okul saati kuralı kalkar; açık tonla ayrılır. */
.takvim-gun.tatil-okul { background: #1d5fbf; }
.takvim-lejant.tatil-okul { background: #1d5fbf; }

@media (max-width: 520px) { .takvim-yil { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); } }

/* ---- Gonderim kilidi ve spin animasyonu (UI.10) ----------------------- */

.btn-spinner {
  display: inline-block;
  width: 13px;
  height: 13px;
  margin-right: .45rem;
  vertical-align: -2px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: reha-spin .7s linear infinite;
}

.btn.is-busy { cursor: progress; opacity: .78; }

@keyframes reha-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .btn-spinner { animation-duration: 2s; } }

/* ---- Kurum paneli bilesenleri (Edisify paritesi) ----------------------- */

/* Kurum Ayarlari sayfalari (KA.UI): kurum kimligi ayri bir hero yerine kabuk
   basliginin altindaki profil kartinda durur; logo islemleri ayni kartta. */
.kurum-profil { display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; align-items: center; gap: 1rem 1.25rem; }
.kurum-profil-logo { display: grid; place-items: center; width: 72px; height: 72px; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: var(--brand-soft); color: var(--brand-dark); font-size: 1.35rem; font-weight: 800; }
.kurum-profil-logo img { width: 100%; height: 100%; padding: 6px; object-fit: contain; background: #fff; }
.kurum-profil-rozetler { display: flex; flex-wrap: wrap; gap: .4rem; }
.kurum-profil-rozetler .status-pill { gap: .3rem; }
.kurum-profil-ad { margin: .4rem 0 0; color: var(--ink); font-size: 1.12rem; font-weight: 750; line-height: 1.3; word-break: break-word; }
.kurum-profil-logo-islem { display: grid; justify-items: end; gap: .35rem; }
.kurum-profil-logo-islem form { display: flex; align-items: center; gap: .5rem; margin: 0; }
.kurum-profil-logo-islem label:focus-within { outline: 3px solid rgba(29,95,191, .3); outline-offset: 2px; }

.metric-card {
  display: flex;
  align-items: center;
  gap: 12px;
  height: 100%;
  padding: 12px 14px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow);
}

.metric-card strong { display: block; font-size: 1.35rem; line-height: 1.1; color: var(--ink); }
.metric-card span { display: block; color: var(--muted); font-size: .72rem; font-weight: 750; letter-spacing: .06em; }

.metric-icon { display: grid; place-items: center; width: 36px; height: 36px; flex: 0 0 auto; border-radius: 10px; color: #fff; }
.metric-icon-teal { background: var(--brand); }
.metric-icon-violet { background: var(--accent-violet); }
.metric-icon-green { background: var(--accent-green); }
.metric-icon-orange { background: var(--accent-orange); }
.metric-icon-sky { background: var(--accent-sky); }
.metric-icon-rose { background: var(--accent-rose); }

.info-card .card-header {
  display: flex;
  align-items: center;
  gap: .55rem;
  background: var(--surface);
  border-bottom: 1px solid var(--line);
  color: var(--ink);
  font-weight: 750;
  font-size: .95rem;
}
.info-card .card-header .app-icon { color: var(--brand); }

.info-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 13px;
  margin-bottom: 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: #fbfcfd;
}
.info-row:last-child { margin-bottom: 0; }
.info-row span { display: block; color: var(--muted); font-size: .68rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.info-row strong { display: block; margin-top: .1rem; font-size: .92rem; word-break: break-word; }
.info-row .info-row-empty { color: var(--muted); font-weight: 500; }

.info-row-icon { display: grid; place-items: center; width: 34px; height: 34px; flex: 0 0 auto; border-radius: 50%; }
.info-row-icon-teal { color: var(--brand-dark); background: var(--brand-soft); }
.info-row-icon-violet { color: #5a3fae; background: #f1ecfd; }
.info-row-icon-green { color: #0a7a50; background: #e6f7ef; }
.info-row-icon-orange { color: #a35d10; background: #fdf1e0; }
.info-row-icon-sky { color: #1e6ca6; background: #e6f2fb; }
.info-row-icon-rose { color: #a33a4c; background: #fcebee; }

.gun-cipleri { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.gun-cip {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .55rem .85rem;
  border-radius: var(--radius-sm);
  font-size: .82rem;
  font-weight: 700;
}
.gun-cip i { width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.gun-cip-acik { color: var(--brand-dark); background: var(--brand-soft); border: 1px solid #bed0ea; }
.gun-cip-kapali { color: var(--muted); background: #f2f5f7; border: 1px solid var(--line); }

.mesai-ozet {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid #bed0ea;
  border-radius: var(--radius-md);
  background: var(--brand-soft);
}
.mesai-ozet > div:last-child { margin-left: auto; }
.mesai-ozet span { display: block; color: var(--brand-dark); font-size: .68rem; font-weight: 750; letter-spacing: .06em; }
.mesai-ozet strong { display: block; font-size: 1.15rem; color: var(--ink); }

.form-section-title { display: flex; align-items: center; gap: .45rem; font-size: .9rem; font-weight: 750; color: var(--brand-dark); }
.form-section-title .app-icon { color: var(--brand); }

/* UI.10 — uzun formun konu kartları (fieldset + legend) ve doğrulama özeti. */
.form-bolum { min-width: 0; margin: 0 0 1rem; padding: 1rem 1.1rem 1.15rem; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.form-bolum:last-child { margin-bottom: 0; }
.form-bolum > legend.form-section-title { float: none; width: auto; margin: 0 0 .75rem; padding: 0; font-size: .9rem; line-height: 1.3; }
.form-bolum > p.small { margin-top: -.25rem; }
.modal-body .form-bolum { background: transparent; }
/* Doğrulama sonrası yalnız hatalı alan boyanır; zorunlu olmayan geçerli alana yeşil onay basılmaz. */
.was-validated .form-control:valid:not([required]), .was-validated .form-select:valid:not([required]) { border-color: var(--bs-border-color); }
.was-validated .form-control:valid:not([required]):focus, .was-validated .form-select:valid:not([required]):focus { border-color: #7aa7ef; box-shadow: 0 0 0 .2rem rgba(29,95,191, .16); }
.was-validated .form-control:valid:not([required]) { padding-right: .75rem; background-image: none; }
.was-validated .form-select:valid:not([required]):not([multiple]):not([size]) { --bs-form-select-bg-icon: none; padding-right: 2.25rem; }
.form-ozet ul { padding-left: 1.1rem; }
.form-ozet a { color: inherit; text-decoration: underline; }
.form-ozet:focus-visible { outline: 3px solid var(--accent-rose); outline-offset: 2px; }
@media (max-width: 575.98px) { .form-bolum { padding: .85rem .8rem 1rem; } }

@media (max-width: 760px) {
  .kurum-profil { grid-template-columns: 56px minmax(0, 1fr); }
  .kurum-profil-logo { width: 56px; height: 56px; }
  .kurum-profil-logo-islem { grid-column: 1 / -1; justify-items: start; }
  .mesai-ozet { flex-wrap: wrap; }
  .mesai-ozet > div:last-child { margin-left: 0; text-align: left !important; }
}

/* ---- Ayar formu bilesenleri ------------------------------------------- */

.note-panel {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 14px 16px;
  margin-bottom: 18px;
  border: 1px solid #bed0ea;
  border-radius: var(--radius-md);
  background: var(--brand-soft);
}
.note-panel-icon { display: grid; place-items: center; width: 30px; height: 30px; flex: 0 0 auto; border-radius: 50%; color: #fff; background: var(--accent-sky); }
.note-panel p { font-size: .88rem; line-height: 1.55; }

.setting-block { padding: 18px; margin-bottom: 16px; border: 1px solid var(--line); border-radius: var(--radius-md); }
.setting-block legend { display: flex; align-items: center; gap: 12px; float: none; width: auto; margin-bottom: 14px; padding: 0; font-size: 1rem; }
.setting-block legend strong { display: block; font-size: .98rem; }
.setting-block legend small { display: block; color: var(--muted); font-size: .8rem; }

.gun-secim { display: flex; flex-wrap: wrap; gap: 10px; }
/* Yarim genislikli sutunda gunler esit hucreli izgaraya oturur (Calisma Saatleri). */
.gun-secim-izgara { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); }
.gun-secim-izgara .gun-secim-cip span { min-width: 0; }
.gun-secim-cip { position: relative; }
.gun-secim-cip input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.gun-secim-cip span {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  min-width: 118px;
  padding: .75rem .9rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  color: var(--muted);
  font-size: .85rem;
  font-weight: 700;
  background: #fff;
}
.gun-secim-cip span::after { content: ""; width: 15px; height: 15px; border: 1px solid #cbd6dd; border-radius: 50%; }
.gun-secim-cip input:checked + span { color: var(--brand-dark); border-color: var(--brand); background: var(--brand-soft); }
.gun-secim-cip input:checked + span::after {
  border-color: var(--brand);
  background: var(--brand) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E") center/11px no-repeat;
}
.gun-secim-cip input:focus-visible + span { outline: 3px solid rgba(29,95,191, .3); outline-offset: 2px; }

.badge-required {
  display: inline-block;
  padding: .1rem .4rem;
  border-radius: 999px;
  background: #fcebee;
  color: #a33a4c;
  font-size: .64rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: lowercase;
  vertical-align: 1px;
}

.form-label .app-icon { color: var(--brand); vertical-align: -2px; margin-right: .2rem; }

.info-card-header { display: flex; align-items: center; gap: .55rem; background: var(--surface); border-bottom: 1px solid var(--line); color: var(--ink); font-weight: 750; font-size: .95rem; }
.info-card-header .app-icon { color: var(--brand); }
.paket-karti { border-top: 3px solid var(--brand); }

/* ---- Bolum karti basligi (KA.UI) ----------------------------------------
   Ayar sayfalarinda her bolum ayni anatomiyi kullanir: section-card >
   section-card-head (ikonlu baslik, kisa aciklama, sag ucta durum veya bolum
   aksiyonu). Tablo iceren bolumler section-card-flush ile kenara yaslanir. */
.page-body > .section-card { margin-bottom: 18px; }
.section-card-head { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: .75rem 1rem; margin-bottom: 1rem; }
.section-card-head > :first-child { flex: 1 1 260px; min-width: 0; }
.section-card-title { display: flex; align-items: center; gap: .5rem; margin: 0; color: var(--ink); font-size: 1rem; font-weight: 750; line-height: 1.3; }
.section-card-title .app-icon { flex: 0 0 auto; color: var(--brand); }
.section-card-desc { margin: .3rem 0 0; color: var(--muted); font-size: .84rem; line-height: 1.5; }
.section-card-tools { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; }
.section-card-tools > form { margin: 0; }
.section-card-tools .btn { display: inline-flex; align-items: center; gap: .35rem; }
.section-card-flush { padding: 0 !important; }
.section-card-flush > .section-card-head { margin: 0; padding: 16px 18px; border-bottom: 1px solid var(--line); }
.section-card-flush > .section-card-body { padding: 16px 18px; }
.section-card-flush > .empty-state { padding: 24px 18px; }
.section-card-flush > form > .table-responsive > .table > :not(caption) > * > :first-child,
.section-card-flush > .table-responsive > .table > :not(caption) > * > :first-child { padding-left: 18px; }
.section-card-footer { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.section-card-footer .btn { display: inline-flex; align-items: center; gap: .35rem; }
.section-card-note { margin: 1rem 0 0; color: var(--muted); font-size: .82rem; line-height: 1.55; }
/* Uzun kataloglar (ornegin 80+ modul) sayfayi uzatmaz; liste kendi icinde kayar. */
.catalog-list-scroll { max-height: 26rem; overflow-y: auto; padding-right: .25rem; border-radius: 12px; }
.catalog-list-scroll:focus-visible { outline: 3px solid rgba(29,95,191, .3); outline-offset: 2px; }

/* ---- Bootstrap köprüsü -------------------------------------------------
   Bootstrap'in kendi mavi `primary` degerleri Edisify paletine baglanir, boylece
   btn-outline-primary, text-primary, form-check, link ve odak halkalari da ayni
   tasarim dilini kullanir. Tek kaynak yine RehaCRM token'laridir. */

:root {
  --bs-primary: var(--brand-dark);
  --bs-primary-rgb: 10, 122, 114;
  --bs-link-color: var(--brand-dark);
  --bs-link-color-rgb: 10, 122, 114;
  --bs-link-hover-color: var(--brand-deep);
  --bs-border-radius: var(--radius-sm);
  --bs-body-color: var(--ink);
}

.btn-outline-primary {
  --bs-btn-color: var(--brand-dark);
  --bs-btn-border-color: var(--brand);
  --bs-btn-hover-bg: var(--brand);
  --bs-btn-hover-border-color: var(--brand);
  --bs-btn-active-bg: var(--brand-dark);
  --bs-btn-active-border-color: var(--brand-dark);
}

.text-primary { color: var(--brand-dark) !important; }
.bg-primary { background-color: var(--brand) !important; }
.border-primary { border-color: var(--brand) !important; }
.link-primary { color: var(--brand-dark) !important; }
.form-check-input:checked { background-color: var(--brand); border-color: var(--brand); }
.form-check-input:focus { border-color: #7aa7ef; box-shadow: 0 0 0 .2rem rgba(29,95,191, .16); }
.nav-tabs .nav-link.active { color: var(--brand-dark); border-bottom-color: var(--brand); }
.page-link { color: var(--brand-dark); }
.page-item.active .page-link { background-color: var(--brand); border-color: var(--brand); }
.dt-container .dt-paging .dt-paging-button.current { background: var(--brand) !important; border-color: var(--brand) !important; color: #fff !important; }
.progress-bar { background-color: var(--brand); }
.spinner-border, .spinner-grow { color: var(--brand); }

/* ---- Ortak sayfa ikonu + kurum dashboard'u --------------------------- */

.page-head-icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  flex: 0 0 48px;
  align-self: center;
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 14px;
  color: #fff;
  background: rgba(255,255,255,.14);
}
.page-head-icon .app-icon { width: 24px; height: 24px; }
.page-head-main { display:flex; align-items:center; gap:14px; min-width:0; }

/* 03.10.2026 — pano sıkılaştırıldı: karşılama bandı kaldırıldı, göstergeler tek sıra kompakt kartlar. */
.section-eyebrow { color: var(--brand-dark); font-size: .68rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }

.dashboard-section-head,.dashboard-panel-head,.dashboard-panel-title { display: flex; align-items: center; }
.dashboard-section-head { justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.dashboard-section-head h2 { margin: 0; font-size: 1rem; }
.dashboard-panel-head h2 { margin: .1rem 0 0; font-size: 1rem; }
.dashboard-updated { display: inline-flex; align-items: center; gap: .35rem; color: var(--muted); font-size: .76rem; font-weight: 650; }
.app-icon-xs { width: 14px; height: 14px; }

.dashboard-stat-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(170px,1fr)); gap: 12px; }
.dashboard-stat {
  display: grid;
  grid-template-columns: 32px auto minmax(0,1fr);
  grid-template-areas: "icon label label" "icon value hint";
  align-items: center;
  column-gap: 10px;
  row-gap: 2px;
  padding: 10px 12px;
  color: var(--ink);
  text-decoration: none;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--surface);
  transition: transform .15s ease,border-color .15s ease,box-shadow .15s ease;
}
.dashboard-stat:hover,.dashboard-stat:focus-visible { color: var(--ink); box-shadow: 0 6px 16px rgba(12,55,70,.07); border-color: color-mix(in srgb,var(--stat-color) 45%,#dce5ea); }
.dashboard-stat:focus-visible { outline: 3px solid rgba(29,95,191,.28); outline-offset: 2px; }
.dashboard-stat-icon,.panel-icon,.quick-icon,.feed-icon { display: grid; place-items: center; border-radius: 10px; }
.dashboard-stat-icon { grid-area: icon; width: 32px; height: 32px; color: var(--stat-color); background: var(--stat-soft); }
.dashboard-stat-icon .app-icon { width: 18px; height: 18px; }
.dashboard-stat-copy { display: contents; }
/* Iki satir: ustte etiket, altta deger ve aciklama yan yana; uzun aciklama tek satirda kisalir (tam metni title'da). */
.dashboard-stat-copy small,.dashboard-stat-copy em { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.dashboard-stat-copy small { grid-area: label; color: var(--muted); font-size: .76rem; font-weight: 700; line-height: 1.2; }
.dashboard-stat-copy strong { grid-area: value; color: var(--stat-color); font-size: 1.3rem; line-height: 1.1; }
.dashboard-stat-copy em { grid-area: hint; color: var(--muted); font-size: .7rem; font-style: normal; line-height: 1.2; }
.dashboard-stat-komut .dashboard-stat-copy strong { font-size: 1rem; white-space: nowrap; }
.dashboard-stat-teal { --stat-color:#0c4294; --stat-soft:#e5ecf7; }
.dashboard-stat-sky { --stat-color:#287fbc; --stat-soft:#e7f3fb; }
.dashboard-stat-violet { --stat-color:#7255c4; --stat-soft:#f0ecfb; }
.dashboard-stat-orange { --stat-color:#b56b17; --stat-soft:#fff2df; }
.dashboard-stat-green { --stat-color:#16835a; --stat-soft:#e7f7ef; }
.dashboard-stat-rose { --stat-color:#b9465a; --stat-soft:#fcebee; }

.dashboard-panel { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); box-shadow: var(--shadow); }
.dashboard-panel-head { justify-content: space-between; gap: 12px; min-height: 58px; padding: 10px 16px; border-bottom: 1px solid var(--line); }
.dashboard-panel-title { gap: 11px; min-width: 0; }
.panel-icon { width: 34px; height: 34px; flex: 0 0 34px; }
.panel-icon .app-icon { width: 17px; height: 17px; }
.panel-icon-teal,.quick-icon-teal { color: var(--brand-dark); background: var(--brand-soft); }
.panel-icon-violet,.quick-icon-violet { color: #6648b8; background: #f0ecfb; }
.panel-icon-orange,.quick-icon-orange,.feed-icon-orange { color: #a86113; background: #fff1df; }
.panel-icon-sky,.quick-icon-sky,.feed-icon-sky { color: #2477b2; background: #e7f3fb; }
.quick-icon-green { color: #117851; background: #e7f7ef; }

/* 28.09.2026 — planlamada grup dersi secimi: ogrenci kartinda kutu, secililer rozet olarak. */
.plan-ogrenci-kutu { flex: 0 0 auto; margin: 0 6px 0 0; }
.plan-grup-secim {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin-top: 8px; padding: 8px 10px;
  border: 1px solid var(--brand); border-radius: var(--radius-md);
  background: var(--brand-soft); font-size: .8rem; font-weight: 600;
}
.plan-grup-liste { display: flex; flex-wrap: wrap; gap: 6px; }
.plan-grup-rozet {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px; border-radius: 999px;
  background: var(--brand-soft); color: var(--brand-dark);
  font-size: .78rem; font-weight: 650;
}
.plan-grup-rozet-cikar {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; margin: -2px -5px -2px 0; padding: 0;
  border: 0; border-radius: 50%;
  background: transparent; color: var(--brand-dark);
  font-size: 1rem; line-height: 1; cursor: pointer;
}
.plan-grup-rozet-cikar:hover { background: #fde7e7; color: #b42318; }
.plan-grup-rozet-cikar:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }

/* 096 — kullanıcıya özel kısayol seçimi; betik gerektirmeyen <details> düzenleyicisi. */
.quick-note { margin: 0; padding: 10px 18px; font-size: .8rem; color: var(--muted); }
.quick-note.is-ok { color: #117851; }
.quick-note.is-error { color: #b42318; }
.quick-edit { border-top: 1px solid var(--line); }
.quick-edit > summary { padding: 11px 18px; font-size: .8rem; font-weight: 700; color: var(--brand-dark); cursor: pointer; list-style: none; }
.quick-edit > summary::-webkit-details-marker { display: none; }
.quick-edit > summary::before { content: "＋ "; font-weight: 800; }
.quick-edit[open] > summary::before { content: "− "; }
.quick-edit > summary:focus-visible { outline: 2px solid var(--brand); outline-offset: -2px; }
.quick-edit-form { padding: 0 18px 16px; }
.quick-edit-form fieldset { border: 0; margin: 0; padding: 0; display: grid; gap: 7px; }
.quick-edit-form .form-check-label { font-size: .82rem; }
.quick-edit-form .form-check-label small { display: block; font-size: .72rem; }
.dashboard-head-link { font-size: .78rem; font-weight: 750; text-decoration: none; white-space: nowrap; }

.dashboard-timeline { padding: 5px 18px; }
.dashboard-lesson { display: grid; grid-template-columns: 50px 12px minmax(0,1fr) auto; align-items: center; gap: 12px; min-height: 56px; padding: 7px 0; border-bottom: 1px solid #edf1f4; }
.dashboard-lesson:last-child { border-bottom: 0; }
.dashboard-lesson time { display: grid; color: var(--muted); font-size: .68rem; }
.dashboard-lesson time strong { color: var(--ink); font-size: .9rem; }
.dashboard-lesson-dot { width: 9px; height: 9px; border: 2px solid #fff; border-radius: 50%; background: var(--brand); box-shadow: 0 0 0 2px #bccde7; }
.dashboard-lesson-main { min-width: 0; }
.dashboard-lesson-main h3 { margin: 0; overflow: hidden; font-size: .9rem; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-lesson-main p { display: flex; align-items: center; gap: .3rem; margin: .25rem 0 0; overflow: hidden; color: var(--muted); font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-panel .status-pill { padding: .35rem .55rem; font-size: .68rem; }
.dashboard-panel .status-pill-success { color:#0c704b; background:#e7f7ef; border:1px solid #c3ead8; }
.dashboard-panel .status-pill-secondary { color:#4e5c68; background:#edf1f4; border:1px solid #dce4e9; }

.dashboard-actions { padding: 5px 16px; }
.dashboard-actions a { display: grid; grid-template-columns: 34px minmax(0,1fr) auto; align-items: center; gap: 10px; padding: 8px 2px; color: var(--ink); text-decoration: none; border-bottom: 1px solid #edf1f4; }
.dashboard-actions a:last-child { border-bottom: 0; }
.dashboard-actions a:hover strong,.dashboard-actions a:focus-visible strong { color: var(--brand-dark); }
.dashboard-actions a:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 8px; }
.quick-icon { width: 34px; height: 34px; }
.quick-icon .app-icon { width: 18px; height: 18px; }
.dashboard-actions strong,.dashboard-actions small { display: block; }
.dashboard-actions strong { font-size: .84rem; }
.dashboard-actions small { margin-top: .15rem; color: var(--muted); font-size: .69rem; }
.dashboard-actions b { color: var(--brand); font-weight: 600; }

.dashboard-feed { padding: 4px 17px; }
.dashboard-feed article { position: relative; display: grid; grid-template-columns: 34px minmax(0,1fr) auto; align-items: center; gap: 10px; min-height: 56px; padding: 7px 0; border-bottom: 1px solid #edf1f4; }
.dashboard-feed article:last-child { border-bottom: 0; }
/* 19.10.2026: takip listesindeki uyarı tıklanınca ilgili sayfayı açar (stretched-link). */
.dashboard-feed article:has(.stretched-link):hover { background: var(--brand-soft); }
.dashboard-feed h3 .stretched-link:focus-visible { outline: 3px solid rgba(29,95,191,.35); outline-offset: 2px; }
.dashboard-feed article.is-unread::before { position: absolute; left: -17px; width: 3px; height: 28px; border-radius: 0 3px 3px 0; background: var(--brand); content:""; }
.feed-icon { width: 34px; height: 34px; }
.feed-icon .app-icon { width: 17px; height: 17px; }
.dashboard-feed h3 { margin: 0; overflow: hidden; font-size: .83rem; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-feed p { margin: .2rem 0 0; overflow: hidden; color: var(--muted); font-size: .7rem; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-feed time { color: var(--muted); font-size: .68rem; font-weight: 700; white-space: nowrap; }

.dashboard-empty { display: grid; justify-items: center; padding: 24px 16px; text-align: center; }
.dashboard-empty > span { display: grid; place-items: center; width: 40px; height: 40px; margin-bottom: 8px; color: var(--brand-dark); border-radius: 50%; background: var(--brand-soft); }
.dashboard-empty h3 { margin: 0; font-size: .92rem; }
.dashboard-empty p { max-width: 380px; margin: .35rem 0 .8rem; color: var(--muted); font-size: .76rem; }
.dashboard-empty-sm { min-height: 150px; align-content: center; }

@media (max-width: 700px) {
  .page-head-icon { width: 42px; height: 42px; flex-basis: 42px; }
  .page-head-main { align-items:flex-start; }
  .dashboard-section-head { align-items: flex-start; flex-direction: column; gap: 2px; }
  .dashboard-stat-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
  .dashboard-stat { grid-template-columns: 28px auto minmax(0,1fr); column-gap: 8px; padding: 9px 10px; }
  .dashboard-stat-icon { width: 28px; height: 28px; }
  .dashboard-stat-icon .app-icon { width: 15px; height: 15px; }
  .dashboard-stat-copy strong { font-size: 1.2rem; }
  .dashboard-panel-head { align-items: flex-start; flex-wrap: wrap; }
  .dashboard-panel-head .btn,.dashboard-head-link { white-space: nowrap; }
  .dashboard-lesson { grid-template-columns: 46px 10px minmax(0,1fr); }
  .dashboard-lesson > .status-pill { grid-column: 3; justify-self: start; }
}

/* PKT karti ilerleme cubugu: inline style yerine %10 adimli genislik siniflari. */
.pkt-bar-0 { width: 0%; }
.pkt-bar-10 { width: 10%; }
.pkt-bar-20 { width: 20%; }
.pkt-bar-30 { width: 30%; }
.pkt-bar-40 { width: 40%; }
.pkt-bar-50 { width: 50%; }
.pkt-bar-60 { width: 60%; }
.pkt-bar-70 { width: 70%; }
.pkt-bar-80 { width: 80%; }
.pkt-bar-90 { width: 90%; }
.pkt-bar-100 { width: 100%; }

/* PKT yardim duzeyi satiri (126): not alani dar ekranda en az 8rem kalir, dugmeler alta iner. */
.pkt-duzey-form { flex-wrap: wrap; }
.pkt-duzey-form .pkt-not { flex: 1 1 8rem; min-width: 8rem; }

/* ---- Ders programi izgarasi (UI.8) -------------------------------------- */
/* Haftalik katlanabilir bolumler, gun kartlari ve yatay tasma kontrolu. */
.ders-ozet .ders-sayac { font-size: 1.05rem; }
.ders-ozet .ders-ara { flex: 0 1 320px; }

.ders-filtreler { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
.ders-filtre {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: #fff;
  color: var(--ink);
  font-weight: 650;
  font-size: .88rem;
  text-decoration: none;
}
.ders-filtre:hover, .ders-filtre:focus-visible { border-color: var(--brand); color: var(--brand-dark); }
.ders-filtre.active { border-color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand); color: var(--brand-dark); }
.ders-filtre .metric-icon { width: 34px; height: 34px; font-size: .82rem; }

.ders-hafta {
  margin-bottom: 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: #fff;
}
.ders-hafta > summary {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: 12px 16px;
  cursor: pointer;
  list-style: none;
}
.ders-hafta > summary::-webkit-details-marker { display: none; }
.ders-hafta > summary::before { content: "›"; transform: rotate(90deg); color: var(--muted); }
.ders-hafta:not([open]) > summary::before { transform: none; }
.ders-hafta-baslik { font-weight: 750; }

.ders-karti {
  display: block;
  margin-bottom: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm, 8px);
  background: #fff;
  color: var(--ink);
  text-decoration: none;
}
.ders-karti:hover, .ders-karti:focus-visible { border-color: var(--brand); color: var(--ink); }
.ders-karti-ad { font-weight: 700; margin-top: .25rem; }


/* Ders programi izgarasi: solda ogrenci paneli, sagda gun x seans tablosu. */
.plan-duzen { display: flex; align-items: flex-start; gap: 16px; }
.plan-izgara-alani { flex: 1 1 auto; min-width: 0; }
.plan-ogrenci-paneli {
  flex: 0 0 280px;
  width: 280px;
  position: sticky;
  top: 16px;
  padding: 12px;
  max-height: calc(100vh - 32px);
  display: flex;
  flex-direction: column;
}
.plan-ogrenci-listesi { overflow-y: auto; flex: 1 1 auto; margin: 0 -4px; padding: 0 4px; }
.plan-ogrenci {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: .5rem;
  row-gap: 4px;
  padding: 7px 10px;
  margin-bottom: 6px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm, 8px);
  background: #fff;
  cursor: grab;
}
.plan-ogrenci:hover, .plan-ogrenci:focus-visible { border-color: var(--brand); }
.plan-ogrenci-suruklenen { opacity: .5; cursor: grabbing; }
.plan-ogrenci-ad { flex: 1 1 auto; min-width: 0; font-weight: 650; font-size: .82rem; line-height: 1.2; }
.plan-ogrenci-no { margin-left: auto; color: var(--muted); font-size: .75rem; }
/* Kalan seans haklari adin altinda, tur basina ayri cip (02.10.2026). Tek hapta
   "B:7 · G:4 · BT:10 · GT:42" dar panelde kiriliyor ve okunmuyordu. Satir, onay kutusunun
   genisligi kadar iceriden baslar; boylece cipler adla hizalanir. */
.plan-ogrenci-kota {
  flex: 1 0 100%;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding-left: calc(1em + .5rem);
  color: var(--muted);
  font-size: .72rem;
  line-height: 1.2;
}
.plan-kota-cip {
  display: inline-flex;
  align-items: baseline;
  gap: 3px;
  padding: 1px 6px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--brand-dark);
  background: var(--brand-soft);
  font-size: .72rem;
  font-weight: 700;
  white-space: nowrap;
}
.plan-kota-tur { color: var(--muted); font-weight: 600; font-size: .66rem; }
.plan-kota-cip-bitti { color: var(--muted); background: #fff; }
/* 30.10.2026: "Dersi bitenleri gösterme" kutusu (Rehberli öğrenci adımı). */
.plan-adim-bitti { margin: 6px 0 8px; font-size: .82rem; }
/* 30.10.2026: Ders Programı üst çubuğu sığmayınca eylemler kırpılmaz; eylem grubu kendi satırına sağa yaslı iner. */
.planlama-baslik-satiri .plan-arac-cubugu { flex-wrap: wrap; }
.planlama-baslik-satiri .plan-arac-cubugu > .plan-arac-eylemler { flex: 1 1 auto; flex-wrap: wrap; justify-content: flex-end; }
.planlama-baslik-satiri .plan-arac-cubugu .btn-sm, .plan-grup-yonet { white-space: nowrap; }
/* 30.10.2026: Ders Programı ay seçicisi (ay adına tıklanınca yıl + ay paneli). */
.plan-ay-secici { display: inline-flex; height: 100%; }
.plan-ay-ad-dugme { border: 0; background: transparent; font-weight: 700; color: inherit; border-radius: 8px; cursor: pointer; }
.plan-ay-ad-dugme:hover, .plan-ay-ad-dugme[aria-expanded="true"] { background: var(--brand-soft); color: var(--brand-dark); }
.plan-ay-ad-dugme:focus-visible { outline: 3px solid rgba(29,95,191,.3); outline-offset: 1px; }
.plan-ay-panel { width: 248px; padding: 8px; }
.plan-ay-panel-yil { display: flex; align-items: center; justify-content: space-between; height: 34px; margin-bottom: 6px; }
.plan-ay-panel-yil .plan-ay-ok { border: 0; background: transparent; }
.plan-ay-panel-yil .plan-ay-ok:disabled { opacity: .35; cursor: default; }
.plan-ay-panel-aylar { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.plan-ay-panel-aylar[hidden] { display: none; }
.plan-ay-panel-ay { display: block; padding: 7px 0; text-align: center; border-radius: 8px; color: var(--ink, #1f2d33); text-decoration: none; font-size: .85rem; }
.plan-ay-panel-ay:hover, .plan-ay-panel-ay:focus-visible { background: var(--brand-soft); color: var(--brand-dark); }
.plan-ay-panel-ay.bugun { box-shadow: inset 0 0 0 1px var(--brand); }
.plan-ay-panel-ay.aktif { background: var(--brand); color: #fff; font-weight: 700; }
/* 30.10.2026: normal ve telafi hakkının hepsi yazılmış (ay kotası dolu) öğrenci listede kırmızıdır. */
.plan-ogrenci.plan-kota-dolu, .plan-adim-oge.plan-kota-dolu { border-color: #f1aeb5; background: #fdecee; }
.plan-ogrenci.plan-kota-dolu .plan-ogrenci-ad, .plan-adim-oge.plan-kota-dolu .plan-adim-oge-ad { color: #b02a37; }
.plan-kota-dolu .plan-kota-cip { color: #b02a37; border-color: #f1aeb5; background: #fff; }

.ders-hafta-arac { display: flex; gap: .5rem; padding: 0 16px 8px; }
.ders-hafta > summary .plan-tam-ekran-dugme { flex: 0 0 auto; }
.ders-izgara { width: max-content; table-layout: fixed; border-collapse: collapse; font-size: .82rem; }
.ders-izgara th, .ders-izgara td { border: 1px solid var(--line); vertical-align: top; }
.ders-izgara thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 6px 8px;
  background: var(--panel, #f7f8fa);
  color: var(--muted);
  font-weight: 700;
  text-align: center;
  white-space: nowrap;
}
.ders-izgara-saat { position: sticky; left: 0; z-index: 2; width: 74px; min-width: 74px; padding: 6px 8px; background: var(--panel, #f7f8fa); text-align: center; white-space: nowrap; }
.ders-izgara thead .ders-izgara-saat { z-index: 3; }
.ders-izgara-saat span { display: block; color: var(--muted); font-size: .7rem; font-weight: 500; }
.ders-izgara-gunbas { width: 210px; min-width: 210px; max-width: 210px; padding: 6px 8px; background: var(--panel, #f7f8fa); text-align: center; }
.ders-izgara-gunbas strong { display: block; text-transform: capitalize; }
.ders-izgara-hucre { width: 210px; min-width: 210px; max-width: 210px; padding: 4px; }
.ders-izgara-gunbas.ders-izgara-bugun { border-top: 3px solid var(--brand); }
/* UI.14 (13.10.2026): soluklaştırma opacity ile değil zeminle yapılır; opacity yazı kontrastını 4,5 altına düşürüyordu. */
.ders-izgara-hedef { background: rgba(13, 110, 253, .08); outline: 2px dashed var(--brand); outline-offset: -2px; }
.ders-izgara-ekle {
  width: 100%;
  padding: 2px 0;
  border: 1px dashed var(--line);
  border-radius: var(--radius-sm, 8px);
  background: transparent;
  color: var(--muted);
  line-height: 1.2;
}
.ders-izgara-hucre:hover .ders-izgara-ekle, .ders-izgara-ekle:focus-visible { border-color: var(--brand); color: var(--brand); }

.izgara-ders {
  display: block;
  margin-bottom: 4px;
  padding: 5px 7px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--muted);
  border-radius: var(--radius-sm, 8px);
  background: #fff;
  color: var(--ink);
  text-decoration: none;
}
.izgara-ders:hover, .izgara-ders:focus-visible { border-color: var(--brand); color: var(--ink); }
.izgara-ders-ad { display: block; font-weight: 650; line-height: 1.2; }
.izgara-ders-alt { display: block; color: var(--muted); font-size: .72rem; line-height: 1.2; }
/* Klasik şablonun ders taslakları (17.10.2026): Rehberli'deki taslak görünümü; kaydedilene kadar
   yalnız tarayıcıda durur. Kurala takılan taslak kırmızı çerçeve ve nedeniyle kalır. */
.plan-taslak-kart {
  display: block;
  width: 100%;
  margin-bottom: 4px;
  padding: 4px 7px;
  border: 1px solid var(--brand-deep);
  border-radius: var(--radius-sm, 8px);
  background: var(--brand-deep);
  color: #fff;
  font: inherit;
  font-size: .74rem;
  line-height: 1.2;
  text-align: left;
  cursor: pointer;
}
.plan-taslak-kart:hover { filter: brightness(1.08); }
.plan-taslak-kart:focus-visible { outline: 3px solid rgba(29,95,191, .4); outline-offset: 2px; }
.plan-taslak-kart .izgara-ders-ad { overflow-wrap: anywhere; }
.plan-taslak-kart .izgara-ders-alt { color: rgba(255, 255, 255, .85); overflow-wrap: anywhere; }
.plan-taslak-kart .plan-adim-rozet { margin-top: 3px; }
.plan-taslak-kart.is-hatali { border: 2px solid var(--state-danger); background: #fff; color: var(--ink); }
.plan-taslak-kart.is-hatali .izgara-ders-alt { color: var(--muted); }
.plan-taslak-kart.is-hatali .plan-adim-rozet { background: var(--state-danger); }
/* Uzun neden ve derslik adı sütunu genişletmesin: genişlik hücreden gelir (width 0 + min-width). */
.plan-taslak-kart .izgara-ders-alt,
.plan-taslak-neden { width: 0; min-width: 100%; }
.plan-taslak-neden {
  display: -webkit-box;
  margin-top: 3px;
  overflow: hidden;
  color: #8a1c2c;
  font-size: .68rem;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
.plan-taslak-not { color: var(--muted); font-size: .8rem; }
/* Kaydedilmemiş taslak varken ekranın altında sabit durur; sayfa sonu çubuğun altında kalmasın. */
.plan-taslak-cubugu {
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 1030;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  max-width: calc(100vw - 32px);
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--brand-deep);
  border-radius: var(--radius-sm, 8px);
  background: #fff;
  box-shadow: 0 6px 24px rgba(15, 23, 42, .18);
}
.plan-taslak-cubugu[hidden] { display: none; }
.plan-taslak-durum { margin: 0; color: var(--ink); font-size: .85rem; font-weight: 600; }
.plan-taslak-durum small { display: block; color: var(--muted); font-weight: 400; }
.plan-taslak-eylem { display: flex; flex-wrap: wrap; gap: 6px; }
body.plan-taslak-acik { padding-bottom: 96px; }
@media (max-width: 575.98px) {
  .plan-taslak-cubugu { right: 8px; bottom: 8px; left: 8px; max-width: none; }
  .plan-taslak-eylem { width: 100%; }
  .plan-taslak-eylem .btn { flex: 1 1 auto; }
  body.plan-taslak-acik { padding-bottom: 150px; }
}
/* Silme taslağı (23.10.2026): × kartı silinecek işaretler; ikisi birlikte açıkken silme çubuğu taslağın üstünde durur. */
.plan-sil-cubugu { border-left-color: var(--danger, #dc3545); }
body.plan-sil-acik { padding-bottom: 96px; }
/* 23.10.2026: taslak olarak silinen kart ızgaradan kalkar; sunucunun silemediği kart kırmızı çerçeveyle kalır. */
.plan-ders-kap.is-silinecek:not(.is-silinemedi) { display: none !important; }
.plan-ders-kap.is-silinemedi { outline: 2px solid var(--danger, #dc3545); outline-offset: 1px; border-radius: 6px; }
.plan-ders-kap.is-silinemedi .plan-ders-sil { opacity: 1; visibility: visible; background: var(--danger, #dc3545); color: #fff; }
@media (max-width: 575.98px) {

  body.plan-taslak-acik.plan-sil-acik .plan-sil-cubugu { bottom: 150px; }
  body.plan-sil-acik { padding-bottom: 150px; }
}
@media (min-width: 576px) {
  /* Taslak ve silme çubuğu birlikte açıkken üst üste binmez: silme çubuğu taslağın üstüne çıkar. */
  body.plan-taslak-acik.plan-sil-acik .plan-sil-cubugu { bottom: 96px; }
  body.plan-taslak-acik.plan-sil-acik { padding-bottom: 180px; }
}
/* Ders programı süzgeci (23.10.2026): eğitmen / öğrenci / derslik her zaman açık. */
/* 23.10.2026: süzgeç tek sıkı satırdır (etiket kutunun solunda); çalışma alanına yer kalır. */
.plan-suzgec { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: 8px 12px !important; margin-bottom: 10px !important; }
.plan-suzgec-alan { display: flex; align-items: center; gap: 6px; flex: 1 1 200px; min-width: 0; }
.plan-suzgec-alan .form-label { margin: 0; font-size: .8rem; font-weight: 600; white-space: nowrap; }
.plan-suzgec-alan .form-select { min-width: 0; }
.plan-suzgec-bos { margin-bottom: 10px; padding-top: 4px !important; padding-bottom: 4px !important; font-size: .85rem; }
.plan-suzgec-gorunum { display: flex; flex-wrap: wrap; gap: 6px; }
.plan-suzgec-gorunum .ders-filtre { padding: 6px 12px; font-size: .82rem; }
.plan-suzgec-eylem { display: flex; gap: 6px; }
.izgara-ders-tamamlandi { border-left-color: var(--success, #198754); }
.izgara-ders-devamsiz { border-left-color: var(--danger, #dc3545); }
.izgara-ders-iptal { border-left-color: var(--line); background: var(--panel, #f7f8fa); }
.izgara-ders-iptal .izgara-ders-ad { text-decoration: line-through; }

@media (max-width: 1100px) {
  .plan-duzen { flex-direction: column; }
  .plan-ogrenci-paneli { position: static; width: 100%; flex-basis: auto; max-height: 260px; }
  .plan-izgara-alani { width: 100%; max-width: 100%; }
  .ders-hafta { max-width: 100%; overflow: hidden; }
}

/* Izgara tam ekrani (Klasik, Rehberli, Gunluk Program; Scripts/tam-ekran.js): kap sabit katmanda ekrani kaplar. z-index ust
   cubugun (1030) ustunde, Bootstrap modal arka planinin (1050) ve sag tik menusunun altindadir. */
.plan-tam-ekran-dugme { display: inline-flex; align-items: center; justify-content: center; min-width: 34px; padding-inline: 7px; }
.plan-tam-ekran-dugme .app-icon { width: 18px; height: 18px; }
.plan-tam-ekran-kapat, .plan-tam-ekran .plan-tam-ekran-ac { display: none; }
.plan-tam-ekran .plan-tam-ekran-kapat { display: inline-block; }
[data-tam-ekran-kap].plan-tam-ekran { position: fixed; inset: 0; z-index: 1045; margin: 0 !important; padding: 12px 16px; overflow: auto !important; overscroll-behavior: contain; border-radius: 0; background: var(--canvas); }
.gun-tam-ekran-kap.plan-tam-ekran { padding: 0; background: var(--surface, #fff); }
.gun-tam-ekran-kap.plan-tam-ekran .gun-sar { max-height: calc(100dvh - 48px); }
body.plan-tam-ekran-acik { overflow: hidden; }
/* .section-card yüksekliği %100dür; tam ekran katmanında kartlar içerik kadar kalır (Rehberli üst kartı). */
.plan-rehberli-kap.plan-tam-ekran .section-card { height: auto; }
@media (min-width: 1101px) {
  .plan-tam-ekran .plan-ogrenci-paneli { top: 0; max-height: calc(100vh - 24px); }
}

.plan-kota { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.plan-kota-baslik { color: var(--muted); font-size: .8rem; }
.plan-kota-rozet {
  padding: 1px 8px;
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 650;
}
.plan-kota-dolu { border-color: var(--danger, #dc3545); color: var(--danger, #dc3545); }

/* ------------------------------------------------- MB.7: adim adim MEBBIS cekimi */
.mebbis-akis { border: 1px solid var(--line); border-radius: var(--radius-md); padding: 14px; background: var(--card, #fff); }
.mebbis-akis-ust { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 12px; margin-bottom: 12px; }
.mebbis-akis-ilerleme {
  margin-left: auto;
  padding: 4px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--muted);
  font-size: .82rem;
  white-space: nowrap;
}
.mebbis-adimlar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.mebbis-adim {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-left-width: 3px;
  border-radius: var(--radius-sm);
  background: var(--panel, #f7f8fa);
}
.mebbis-adim-success { border-left-color: var(--accent-green); }
.mebbis-adim-warning { border-left-color: var(--accent-orange); }
.mebbis-adim-danger { border-left-color: var(--accent-rose); }
.mebbis-adim-info { border-left-color: var(--accent-sky); }
.mebbis-adim-secondary { border-left-color: var(--muted); }
.mebbis-adim-ust { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mebbis-adim-no {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--brand-dark);
  color: #fff;
  font-size: .74rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.mebbis-adim-ad { margin: 0; font-size: .88rem; font-weight: 700; }
.mebbis-adim-ust .status-pill { margin-left: auto; }
.mebbis-adim-aciklama { margin: 0; font-size: .8rem; color: var(--muted); }
.mebbis-adim-ekran { margin: 0; font-size: .78rem; line-height: 1.4; }
.mebbis-adim-ekran-etiket {
  display: inline-block;
  margin-right: 5px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--brand-soft, #e6effc);
  color: var(--brand-dark);
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
}
.mebbis-adim-eylem { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: auto; padding-top: 4px; }
.mebbis-adim-uyari {
  margin: 0;
  padding: 6px 8px;
  border: 1px solid var(--accent-orange);
  border-radius: var(--radius-sm);
  color: var(--accent-orange);
  font-size: .78rem;
}

/* ---------------------------------------------------------------- PL: sablon secici */
.plan-sablon { display: inline-flex; border: 1px solid var(--line); border-radius: 999px; padding: 2px; }
.plan-sablon-dugme {
  padding: 4px 14px;
  border-radius: 999px;
  font-size: .85rem;
  font-weight: 650;
  color: var(--muted);
  text-decoration: none;
}
.plan-sablon-dugme:hover { color: var(--brand-dark); }
.plan-sablon-dugme.aktif { background: var(--brand-dark); color: #fff; }

/* Kayıt sonucu uzun ızgaranın üstünde kaybolmaz; postback sonrası ortak betik buraya odaklanır. */
.planlama-sonuc {
  position: sticky;
  top: 8px;
  z-index: 30;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: 6px 12px;
  border-width: 2px;
  box-shadow: 0 10px 28px rgba(24, 43, 54, .16);
}
.planlama-sonuc-baslik { white-space: nowrap; }
.planlama-sonuc:focus-visible { outline: 3px solid rgba(29,95,191, .32); outline-offset: 2px; }

/* ------------------------------------------------- PL: adim adim planlama sablonu */
.plan-adim-ay { display: flex; align-items: center; gap: 8px; }
.plan-adim-ay-ust { padding-right: 4px; white-space: nowrap; }
.plan-adim-durum {
  display: none;
  flex: 1 1 100%;
  margin: 0;
  padding: 6px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--muted);
  font-size: .86rem;
}
.plan-adim-durum.hazir { border-color: var(--accent-green); color: var(--accent-green); font-weight: 650; }
.plan-adim-durum.uyari { display: block; border-color: var(--accent-rose); color: var(--accent-rose); font-weight: 650; }
#adimKaydet.yukleniyor { opacity: .7; }

/* Alti dar sutun. Listeler panel icinde acildigi icin serit kucuk kalir; panel
   en cok 15 satir gosterir ve kaydirir. */
.plan-adim-seritler {
  --plan-adim-satir: 34px; /* oge yuksekligi + araliginin toplami; 15 satir ~510px */
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}
.plan-adim-sutun { position: relative; min-width: 0; }

/* Kapali haldeki tek satir: numara, ad, sayac ve secilen deger. */
.plan-adim-tetik {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 4px 6px;
  width: 100%;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: #fff;
  color: var(--ink);
  text-align: left;
  line-height: 1.2;
}
.plan-adim-sutun:hover .plan-adim-tetik,
.plan-adim-sutun.acik .plan-adim-tetik { border-color: var(--brand); }
.plan-adim-tetik:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.plan-adim-no {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--brand-dark);
  color: #fff;
  font-size: .68rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.plan-adim-ad { font-size: .8rem; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.plan-adim-sayac {
  padding: 0 6px;
  border-radius: 999px;
  background: var(--panel, #f7f8fa);
  color: var(--muted);
  font-size: .7rem;
  font-weight: 650;
}
.plan-adim-secili {
  grid-column: 1 / -1;
  font-size: .72rem;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.plan-adim-secili-var .plan-adim-secili { color: var(--brand-dark); font-weight: 650; }
.plan-adim-kilit .plan-adim-no { background: var(--muted); }
.plan-adim-kilit .plan-adim-tetik { opacity: .6; }

/* Asagi dogru acilan liste paneli. */
.plan-adim-panel {
  display: none;
  position: absolute;
  z-index: 30;
  top: calc(100% + 4px);
  left: 0;
  min-width: 260px;
  max-width: 340px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--card, #fff);
  box-shadow: var(--shadow, 0 10px 30px rgba(12, 55, 70, .07));
}
.plan-adim-sutun:hover .plan-adim-panel,
.plan-adim-sutun:focus-within .plan-adim-panel,
.plan-adim-sutun.acik .plan-adim-panel { display: block; }
.plan-adim-kilit .plan-adim-panel { display: none !important; }
/* Sag kenardaki sutunlarin paneli disari tasmasin. */
.plan-adim-sutun:nth-child(n+5) .plan-adim-panel { left: auto; right: 0; }
.plan-adim-ara { margin-bottom: 6px; }
.plan-adim-liste {
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow-y: auto;
  /* Istenen 15 satir; ekran kisaysa panel pencereden tasmasin diye ustteki serit ve
     izgaraya yer birakilir — o durumda daha az satir gosterilir ve liste kaydirilir. */
  max-height: min(calc(15 * (var(--plan-adim-satir) + 2px)), calc(100vh - 330px));
}
/* Ortak betik (Scripts/app.js) sinifsiz her butona `btn btn-primary` ekler; renk ve
   zemin bu yuzden acikca yazilir, aksi halde yazi beyaz zeminde beyaz kalir. Ayni
   desen `.plan-harf` icin de kullaniliyor. */
.plan-adim-oge {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  padding: 2px 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: #fff;
  color: var(--ink);
  line-height: 1.25;
  text-align: left;
}
.plan-adim-oge:hover:not(:disabled) { border-color: var(--brand); }
/* Bootstrap'in `.btn:disabled` kurali tek sinifli kurallari yendigi icin kilitli
   adimin ogeleri mavi doluyordu; ayni ozgullukte acikca geri alinir. */
.plan-adim-oge:disabled { background: #fff; color: var(--ink); border-color: var(--line); }
.plan-adim-oge.secili { border-color: var(--brand); background: var(--brand-dark); color: #fff; }
.plan-adim-oge.secili .plan-adim-oge-alt { color: rgba(255, 255, 255, .85); }
.plan-adim-oge-ad { font-size: .78rem; font-weight: 650; line-height: 1.25; }
.plan-adim-oge-alt { font-size: .68rem; color: var(--muted); line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.plan-adim-oge.plan-adim-uyari:not(.secili) .plan-adim-oge-alt { color: color-mix(in srgb, var(--state-warning) 65%, #000); font-weight: 600; }
.plan-adim-oge.plan-adim-uyari.secili { box-shadow: inset 0 0 0 2px var(--state-warning); }
/* Cok secimli adim (ogrenci): grup dersi icin birden cok ogrenci isaretlenebildiginden
   ogenin solunda onay kutusu gorunur. Kutu yalniz isarettir; secim yine ogeye tiklayarak
   yapilir, bu yuzden ayri bir odak hedefi olusturmaz. */
.plan-adim-liste-cok .plan-adim-oge { position: relative; padding-left: 26px; }
.plan-adim-liste-cok .plan-adim-oge::before {
  content: "";
  position: absolute;
  left: 7px;
  top: 50%;
  width: 13px;
  height: 13px;
  margin-top: -7px;
  border: 1px solid var(--line);
  border-radius: 3px;
  background: #fff;
}
.plan-adim-liste-cok .plan-adim-oge.secili::before {
  border-color: #fff;
  background: #fff;
}
.plan-adim-liste-cok .plan-adim-oge.secili::after {
  content: "";
  position: absolute;
  left: 11px;
  top: 50%;
  width: 4px;
  height: 8px;
  margin-top: -6px;
  border: solid var(--brand);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

.plan-adim-ipucu { margin: 6px 0 4px; font-size: .72rem; color: var(--muted); }
.plan-adim-bos, .plan-adim-kilit-not { margin: 6px 0 0; font-size: .74rem; color: var(--muted); }
.plan-adim-kilit-not { display: none; }

/* Lejant: izgaradaki renklerin sozlugu. */
.plan-adim-lejant {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin: 0 0 10px;
  font-size: .76rem;
  color: var(--muted);
}
.plan-adim-nokta { width: 9px; height: 9px; border-radius: 50%; display: inline-block; margin-right: 2px; }
.plan-adim-nokta-egitimci { background: var(--accent-green); }
.plan-adim-nokta-ogrenci { background: var(--accent-rose); }
.plan-adim-nokta-taslak { background: var(--brand-deep); }
.plan-adim-nokta-dolu { background: var(--accent-orange); }
.plan-adim-nokta-gecmis { background: var(--muted); }

.plan-adim-hafta-secim { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.plan-adim-hafta-dugme {
  padding: 4px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  color: var(--ink);
  font-size: .8rem;
  font-weight: 650;
}
.plan-adim-hafta-dugme.aktif { border-color: var(--brand); background: var(--brand-dark); color: #fff; }
.plan-adim-hafta-dugme.aktif .text-secondary { color: rgba(255, 255, 255, .85) !important; }

.plan-adim-izgara { width: max-content; table-layout: fixed; border-collapse: collapse; font-size: .8rem; }
.plan-adim-izgara th, .plan-adim-izgara td { border: 1px solid var(--line); vertical-align: top; }
.plan-adim-izgara thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 6px 8px;
  background: var(--panel, #f7f8fa);
  text-align: center;
}
.plan-adim-gun { display: block; font-weight: 700; }
.plan-adim-tarih { display: block; color: var(--muted); font-size: .72rem; }
.plan-adim-saat { position: sticky; left: 0; z-index: 2; width: 74px; min-width: 74px; padding: 4px 8px; text-align: center; background: var(--panel, #f7f8fa); font-size: .76rem; white-space: nowrap; }
.plan-adim-izgara thead .plan-adim-saat { z-index: 3; }
.plan-adim-saat span { display: block; color: var(--muted); font-size: .68rem; font-weight: 500; }
.plan-adim-hucre { width: 210px; min-width: 210px; max-width: 210px; height: 42px; padding: 3px; cursor: pointer; }
.plan-adim-hucre:hover { background: rgba(29,95,191, .08); }
/* Gecmis gune ders yazilabilir (110); hucre yalniz soluk gorunur, tiklanabilir kalir. */
.plan-adim-gecmis { background: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(0, 0, 0, .03) 5px, rgba(0, 0, 0, .03) 10px); }
.plan-adim-dolu { cursor: not-allowed; box-shadow: inset 0 0 0 2px var(--accent-orange); }
.plan-adim-ders, .plan-adim-taslak {
  display: block;
  width: 100%;
  margin-bottom: 2px;
  padding: 3px 6px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel, #f7f8fa);
  color: var(--ink);
  font-size: .74rem;
  text-align: left;
  text-decoration: none;
}
.plan-adim-ders-ad { display: block; font-weight: 650; }
.plan-adim-ders-alt { display: block; color: var(--muted); font-size: .7rem; }
.plan-grup-ders-karti {
  width: 100%;
  font: inherit;
  text-align: left;
  cursor: pointer;
  color: #14532d;
  background: color-mix(in srgb, var(--state-success) 13%, #fff);
  border-color: color-mix(in srgb, var(--state-success) 46%, #fff);
}
.plan-grup-ders-karti:hover,
.plan-grup-ders-karti:focus-visible {
  color: #14532d;
  background: color-mix(in srgb, var(--state-success) 20%, #fff);
  border-color: var(--state-success);
}
.plan-grup-ders-karti:disabled { cursor: default; opacity: 1; }
.plan-grup-ders-karti .plan-adim-ders-alt,
.plan-grup-ders-karti .izgara-ders-alt { overflow-wrap: anywhere; white-space: normal; }
.plan-grup-ders-karti { cursor: default; }
.plan-grup-ders-ac { display: block; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; }
.plan-grup-ders-ac:not(:disabled) { cursor: pointer; }
.plan-grup-ders-ac:focus-visible { outline: 3px solid rgba(29,95,191,.32); outline-offset: 2px; border-radius: 4px; }
.plan-grup-uyeler-inline { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 3px; }
.plan-grup-uye-inline { display: inline-flex; align-items: center; min-width: 0; max-width: 100%; min-height: 24px; padding: 2px 6px; border: 1px solid rgba(20,83,45,.18); border-radius: 999px; background: rgba(255,255,255,.66); color: #14532d; font: inherit; font-size: .68rem; line-height: 1.1; }
.plan-grup-uye-inline > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.plan-grup-uye-inline:not(:disabled) { cursor: pointer; }
.plan-grup-uye-inline:focus-visible { outline: 3px solid rgba(29,95,191,.32); outline-offset: 1px; }
.plan-grup-uye-cikar-x { display: none; margin-left: 4px; color: #a12a3c; font-size: .9rem; font-weight: 800; line-height: 1; }
.plan-grup-uye-inline.is-remove-ready { border-color: #e795a2; background: #fff; color: #7b2231; }
.plan-grup-uye-inline.is-remove-ready .plan-grup-uye-cikar-x { display: inline; }
.plan-adim-sutun-seans .plan-adim-panel { width: min(520px, calc(100vw - 32px)); }
.plan-seans-secimler { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.plan-seans-bolum { display: grid; align-content: start; gap: 4px; min-width: 0; padding: 7px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--panel, #f7f8fa); }
.plan-seans-baslik { margin-bottom: 2px; color: var(--muted); font-size: .68rem; font-weight: 750; letter-spacing: .03em; text-transform: uppercase; }
.plan-telafi-ust { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 10px 0 6px; font-size: .78rem; }
.plan-telafi-ust .btn { min-height: 30px; padding: 2px 5px; font-size: .72rem; }
.plan-telafi-ogrenciler { display: grid; gap: 6px; max-height: 290px; overflow: auto; }
.plan-telafi-ogrenci { display: grid; grid-template-columns: auto minmax(100px, .8fr) minmax(180px, 1.4fr); align-items: center; gap: 7px; padding: 6px 7px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff; }
.plan-telafi-ogrenci > span { min-width: 0; font-size: .74rem; font-weight: 650; }
.plan-telafi-ogrenci small { display: block; color: var(--muted); font-size: .66rem; }
.plan-telafi-ogrenci .form-select { min-width: 0; }
@media (max-width: 575.98px) {
  .plan-seans-secimler { grid-template-columns: 1fr; }
  .plan-telafi-ogrenci { grid-template-columns: auto minmax(0, 1fr); }
  .plan-telafi-ogrenci .form-select { grid-column: 1 / -1; }
}
.plan-adim-ders-egitimci { border-color: var(--accent-green); background: var(--accent-green); color: #fff; }
.plan-adim-ders-ogrenci { border-color: var(--accent-rose); background: var(--accent-rose); color: #fff; }
.plan-adim-ders-egitimci .plan-adim-ders-alt, .plan-adim-ders-ogrenci .plan-adim-ders-alt { color: rgba(255, 255, 255, .85); }
.plan-adim-taslak { border-color: var(--brand-deep); background: var(--brand-deep); color: #fff; position: relative; }
.plan-adim-taslak .plan-adim-ders-alt { color: rgba(255, 255, 255, .85); }
.plan-adim-rozet {
  display: inline-block;
  margin-top: 2px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--accent-orange);
  color: #fff;
  font-size: .62rem;
  font-weight: 700;
}
/* Bos saatin gorunur daveti: secim tamamlanmadan ve dolu/gecmis hucrede gizlenir. */
.plan-adim-ekle {
  display: block;
  width: 100%;
  padding: 1px 0;
  border: 1px dashed var(--line);
  border-radius: var(--radius-sm);
  background: #fff;
  color: var(--brand);
  font-size: .82rem;
  font-weight: 700;
  line-height: 1.2;
}
.plan-adim-hucre:hover .plan-adim-ekle { border-color: var(--brand); background: var(--brand-soft, #e6effc); }

/* Secim tamamlanmadan izgara tiklanabilir gorunmesin. */
.plan-adim:not(.plan-adim-hazir) .plan-adim-hucre { cursor: default; }
.plan-adim:not(.plan-adim-hazir) .plan-adim-hucre:hover { background: none; }
.plan-adim:not(.plan-adim-hazir) .plan-adim-ekle,
.plan-adim-dolu .plan-adim-ekle,
.plan-adim-gecmis .plan-adim-ekle { opacity: .55; }

/* Resmi / kurum tatili (04.10.2026): hucre pasif, ders eklenemez; gun basliginda tatil adi. */
.plan-tatil { background: repeating-linear-gradient(135deg, var(--panel, #f7f8fa), var(--panel, #f7f8fa) 6px, rgba(220, 53, 69, .07) 6px, rgba(220, 53, 69, .07) 12px); cursor: not-allowed; }
.modul-tavan-giris { max-width: 9rem; }
.plan-tek-kisi { display: inline-block; padding: 0 5px; border-radius: 999px; font-size: .68rem; font-weight: 700; line-height: 1.5; color: #664d03; background: #fff3cd; }
/* MEBBİS'e aktarılamayan ders (05.10.2026): neden ipucunda, ayrıntı MEBBİS Kaydı ekranında. */
.plan-mebbis-hata { display: inline-block; margin-left: 4px; padding: 0 5px; border-radius: 999px; font-size: .62rem; font-weight: 700; line-height: 1.5; color: #fff; background: #b42318; vertical-align: middle; cursor: help; }
.plan-mebbis-hata.is-belirsiz { color: #664d03; background: #ffe08a; }

/* Sıkı ızgara (17.10.2026 kullanıcı kararı): satır ~95 px'ten ~40 px'e iner; günün bütün seansları
   kaydırmadan görünür. Kart tek satırdır (öğrenci adı); eğitimci/modül satırı görsel olarak gizlenir
   ama ekran okuyucuda ve kartın ipucunda kalır. Rehberli'de dolu hücreye hücrenin kendisine tıklanarak
   eklenir, "+" yalnız boş hücrede durur; Klasik'te "+" tek ekleme yolu olduğu için incelir ama kalır. */
/* Ortak tablo betiği ızgaraya `.table` ekliyor; site.css'teki `.table > :not(caption) > * > *` iç boşluğu
   (0,82rem) burada ızgaraya bağlı seçicilerle ezilir. */
.plan-adim-izgara .plan-adim-hucre { height: auto; padding: 2px; }
.plan-adim-izgara .plan-adim-saat { padding: 2px 6px; line-height: 1.15; }
.plan-adim-izgara thead th { padding: 4px 6px; }
.ders-izgara .ders-izgara-hucre { padding: 2px 3px; }
.ders-izgara .ders-izgara-saat,
.ders-izgara .ders-izgara-gunbas { padding: 4px 8px; line-height: 1.2; }
.ders-izgara thead th { padding: 4px 6px; }
.plan-adim-izgara .plan-adim-ders:not(.plan-grup-ders-karti),
.plan-adim-izgara .plan-adim-taslak,
.ders-izgara .ders-izgara-hucre[data-seans] .izgara-ders:not(.plan-grup-ders-karti),
.ders-izgara .plan-taslak-kart {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 4px;
  /* Ad uzun olsa da sütunu genişletmez: genişlik hücreden gelir, taşan ad üç noktayla kısalır. */
  width: 0;
  min-width: 100%;
  min-height: 28px;
  margin-bottom: 0;
  padding-top: 2px;
  padding-bottom: 2px;
  padding-left: 6px;
  line-height: 1.2;
}
/* Öğrencinin adı soyadı tam görünsün (22.10.2026 kullanıcı isteği): sütun 140 px, sığmayan ad ikinci satıra
   sarar; iki satırı da aşan çok uzun ad üç noktayla kısalır (tam adı kartın ipucunda). */
.plan-adim-izgara .plan-adim-ders-ad,
.ders-izgara-hucre[data-seans] .izgara-ders-ad {
  display: -webkit-box;
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  white-space: normal;
  overflow-wrap: anywhere;
}
.plan-adim-izgara .plan-adim-ders:not(.plan-grup-ders-karti) .plan-adim-ders-alt,
.plan-adim-izgara .plan-adim-taslak .plan-adim-ders-alt,
.ders-izgara-hucre[data-seans] .izgara-ders:not(.plan-grup-ders-karti) .izgara-ders-alt,
.ders-izgara .plan-taslak-kart .izgara-ders-alt {
  position: absolute;
  width: 1px;
  height: 1px;
  min-width: 0;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.plan-adim-izgara .plan-adim-taslak .plan-adim-rozet,
.ders-izgara .plan-taslak-kart .plan-adim-rozet { flex: none; margin: 0; }
/* Yazılamayan taslağın nedeni görünür kalır: kart bu durumda ikinci satıra kırılır. */
.ders-izgara .plan-taslak-kart.is-hatali { flex-wrap: wrap; }
.ders-izgara .plan-taslak-kart.is-hatali .plan-taslak-neden { flex: 1 0 100%; }
.plan-adim-izgara .plan-adim-ekle,
.ders-izgara .ders-izgara-ekle { min-height: 22px; padding: 0; font-size: .78rem; line-height: 20px; }
.plan-adim-hucre:has(.plan-ders-kap:not([hidden]), .plan-adim-taslak) .plan-adim-ekle { display: none; }
/* Eğitimci süzgeci notu (18.10.2026): lejantta, gizlenen ders sayısıyla. */
.plan-adim-suzgec { padding: 1px 8px; border-radius: 999px; background: var(--brand-soft, #e6effc); color: var(--brand-dark); font-weight: 600; }
.plan-adim-suzgec[hidden] { display: none; }
/* Aynı saatte birden çok ders üst üste durur; aradaki boşluk ve sil düğmesi (24 px hedef) karta sığar. */
.plan-adim-izgara .plan-ders-kap + .plan-ders-kap,
.ders-izgara .plan-ders-kap + .plan-ders-kap,
.plan-adim-izgara .plan-adim-taslak + .plan-adim-taslak,
.ders-izgara .plan-taslak-kart + .plan-taslak-kart { margin-top: 2px; }
.plan-adim-izgara .plan-ders-sil,
.ders-izgara .plan-ders-sil { top: 2px; right: 2px; }
.ders-izgara .plan-ders-kap + .ders-izgara-ekle,
.ders-izgara .plan-taslak-kart + .ders-izgara-ekle { margin-top: 2px; }
.mebbis-hata-isaret { display: inline-flex; align-items: center; justify-content: center; width: 1.1em; height: 1.1em; margin-left: 2px; border-radius: 50%; font-size: .7rem; font-weight: 700; color: #fff; background: #b42318; }
.mebbis-hata-not { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; max-width: 360px; white-space: normal; }
.plan-tatil-etiket { display: inline-block; max-width: 100%; margin-top: 2px; padding: 1px 6px; overflow: hidden; border-radius: 999px; color: #842029; background: #f8d7da; font-size: .72rem; font-weight: 600; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }

@media (max-width: 992px) {
  .plan-adim-seritler { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .plan-adim-panel { min-width: 220px; }
}

.plan-grup-uye-listesi {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}
.plan-grup-uye {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm, 8px);
  background: #fff;
  cursor: pointer;
}
.plan-grup-uye:hover { border-color: var(--brand); background: var(--brand-soft, #e6effc); }
.plan-grup-uye > span { display: grid; min-width: 0; }
.plan-grup-uye strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .84rem; }
.plan-grup-uye small { color: var(--muted); font-size: .72rem; }

@media (max-width: 575.98px) {
  .planlama-sonuc { grid-template-columns: 1fr; }
  .planlama-sonuc-baslik { white-space: normal; }
  .plan-grup-uye-listesi { grid-template-columns: 1fr; }
}

/* Izgarada su anki seans: bugunun satirinda gecerli saat sutunu isaretlenir. */
.ders-izgara-simdi { box-shadow: inset 3px 0 0 var(--danger, #dc3545); }

/* Planlama modali: alanlar ustte, hedef/davranis paneli altta (kurum karari 27.09.2026).
   Once sagda dar bir sutundu; uzun hedef listesi orada okunmuyordu. */
.plan-modal-duzen { display: flex; flex-direction: column; gap: 16px; align-items: stretch; }
.plan-modal-sol { flex: 1 1 auto; min-width: 0; }
.plan-modal-sag {
  flex: 0 0 auto;
  width: 100%;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--surface-soft, #f7f9fb);
}
.plan-hedef-baslik {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .5rem;
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
}
.plan-hedef-liste { flex: 1 1 auto; max-height: 420px; overflow-y: auto; padding: 8px 12px; }
.plan-hedef-bolum {
  margin: 10px 0 4px;
  color: var(--muted);
  font-size: .72rem;
  font-weight: 750;
  text-transform: uppercase;
  letter-spacing: .02em;
}
.plan-hedef-bolum:first-child { margin-top: 0; }
.plan-hedef {
  display: flex;
  align-items: flex-start;
  gap: .5rem;
  padding: 5px 6px;
  border-radius: var(--radius-sm, 8px);
  cursor: pointer;
}
.plan-hedef:hover { background: #fff; }
.plan-hedef-ad { flex: 1 1 auto; font-size: .82rem; line-height: 1.25; }
.plan-hedef-davranis {
  flex: 0 0 auto;
  min-width: 22px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--line);
  color: var(--muted);
  font-size: .72rem;
  text-align: center;
}
.plan-davranis-kabi { margin: 0 0 6px 26px; }
.plan-davranis {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .5rem;
  padding: 2px 0;
  color: var(--muted);
  font-size: .76rem;
  line-height: 1.25;
}
.plan-davranis-bos { padding: 2px 0; color: var(--muted); font-size: .76rem; }
/* 099 — davranış artık seçilebilir; kutu satırın başında, ad ortada esner. */
.plan-davranis { cursor: pointer; }
.plan-davranis .form-check-input { flex: 0 0 auto; margin: 0; }
.plan-davranis .form-check-input:disabled { opacity: .35; }
.plan-davranis-ad { flex: 1 1 auto; min-width: 0; }
.plan-davranis:has(.form-check-input:checked) { color: var(--text, #1c2b33); font-weight: 600; }
.plan-davranis-sonuc {
  flex: 0 0 auto;
  width: 18px;
  text-align: center;
  border-radius: 999px;
  background: var(--line);
  font-weight: 750;
}
.plan-davranis-arti { background: rgba(25, 135, 84, .15); color: var(--success, #198754); }
.plan-davranis-eksi { background: rgba(220, 53, 69, .15); color: var(--danger, #dc3545); }

.plan-hedef-alt { padding: 8px 12px; border-top: 1px solid var(--line); color: var(--muted); font-size: .78rem; }

@media (max-width: 991px) {
  .plan-modal-duzen { flex-direction: column; }
  .plan-modal-sag { width: 100%; flex-basis: auto; }
}

/* Ders kontrol tablosu: ogrenci satirinda yatay kayan ders kartlari. */
.ders-kontrol-no { width: 48px; }
.ders-kontrol-ogrenci { width: 260px; min-width: 200px; }
.ders-kontrol-liste { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin; }
.ders-kontrol-karti { flex: 0 0 210px; min-width: 210px; margin-bottom: 0; }
@media (max-width: 700px) { .ders-kontrol-ogrenci { width: auto; } .ders-kontrol-karti { flex-basis: 70vw; min-width: 70vw; } }

/* Ders defteri ozeti: gunluk sutunlar ve yazdirilabilir ders kartlari. */
.defter-gun { margin-bottom: 18px; break-inside: avoid; }
.defter-gun-baslik { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; padding-bottom: 6px; margin-bottom: 8px; border-bottom: 1px solid var(--line); }
.defter-kartlar { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.defter-karti { padding: 10px; border: 1px solid var(--line); border-radius: var(--radius-sm, 8px); background: #fff; break-inside: avoid; }
@media print {
  .defter-kartlar { grid-template-columns: repeat(3, 1fr); }
  .defter-karti { border-color: #bbb; }
}

/* Haftalik program izgarasi: gun x seans onay kutulari. */
.program-izgara { max-height: 320px; overflow: auto; border: 1px solid var(--line); border-radius: var(--radius-sm, 8px); }
.program-izgara th { position: sticky; top: 0; background: #fff; z-index: 1; font-size: .78rem; }
.program-izgara tbody th { position: static; font-weight: 600; font-size: .78rem; }
.program-izgara td { padding: .25rem; }

/* ---- UI.17 Menüyü daralt / genişlet (masaüstü) ------------------------- */
.app-nav-daralt { display: flex; align-items: center; gap: 8px; width: 100%; min-height: 40px; margin: 0 0 10px; padding: 7px 10px; border: 1px solid #bed0ea; border-radius: 999px; background: var(--brand-dark); color: #fff; font-size: .82rem; font-weight: 750; }
.app-nav-daralt:hover { background: var(--brand-dark); }
.app-nav-daralt:focus-visible { outline: 3px solid rgba(29,95,191, .35); outline-offset: 2px; }
.app-nav-daralt-ok { display: inline-block; width: 18px; text-align: center; font-size: 1rem; line-height: 1; transition: transform .15s ease; }
.app-nav-sabitle-ikon { display: none; flex: 0 0 auto; width: 18px; height: 18px; }
@media (min-width: 1101px) {
  .app-shell.app-nav-dar { grid-template-columns: 76px minmax(0, 1fr); }
  .app-nav-dar .app-sidebar { z-index: 1020; width: 76px; padding: 12px 10px 28px; overflow-x: hidden; transition: width .16s ease, box-shadow .16s ease; }
  .app-nav-dar:not(.app-nav-gecici) .app-nav-metin, .app-nav-dar:not(.app-nav-gecici) .app-nav-search, .app-nav-dar:not(.app-nav-gecici) .app-nav-module > summary::after, .app-nav-dar:not(.app-nav-gecici) .app-nav-children { display: none; }
  .app-nav-dar:not(.app-nav-gecici) .app-nav-daralt { justify-content: center; padding: 7px 0; }
  .app-nav-dar .app-nav-daralt-ok { transform: rotate(180deg); }
  .app-nav-dar:not(.app-nav-gecici) .app-nav-group { height: 1px; margin: 12px 6px; background: var(--line); }
  .app-nav-dar:not(.app-nav-gecici) .app-nav-module > summary, .app-nav-dar:not(.app-nav-gecici) .app-nav-link-top { justify-content: center; padding: 8px 0; }
  .app-nav-dar:not(.app-nav-gecici) .app-nav-link.active::before { display: none; }
  /* UI.17b — sabitlenmemiş menü üzerine gelince içeriğin üstünde açılır; ızgara sütunu 76px kalır. */
  .app-nav-dar.app-nav-gecici .app-sidebar { width: var(--app-nav-w); padding: 14px 12px 28px; box-shadow: 10px 0 30px rgba(12, 55, 70, .16); }
  .app-nav-dar.app-nav-gecici .app-nav-daralt-ok { display: none; }
  .app-nav-dar.app-nav-gecici .app-nav-sabitle-ikon { display: inline-block; }
}
@media (max-width: 1100px) { .app-nav-daralt { display: none; } }
@media (prefers-reduced-motion: reduce) { .app-nav-daralt-ok, .app-nav-dar .app-sidebar { transition: none; } }
/* Eski site.css `aside a` kuralı üst düzey menü bağlantısını blok yapıyordu; ikon ve metin yan yana kalır. */
.app-sidebar .app-nav-link { display: flex; }
/* UI.16 — üst çubuktaki MEBBİS menüsü */
.app-integration-menus{display:flex;align-items:center;gap:8px}
.app-mebbis{position:relative}.app-mebbis>summary{cursor:pointer;list-style:none}.app-mebbis>summary::-webkit-details-marker{display:none}
.app-mebbis-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:1080;width:min(340px,calc(100vw - 24px));background:#fff;color:var(--ink,#16323c);border:1px solid var(--line,#dfe6ea);border-radius:12px;box-shadow:0 14px 34px rgba(15,40,50,.2);padding:8px}
.app-mebbis-baslik{margin:4px 8px 8px;font-size:.78rem;color:var(--muted,#5b6b73)}
.app-mebbis-grup{display:block;padding:6px 8px 4px;font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted,#5b6b73)}
.app-mebbis-satir{display:grid;gap:1px;min-height:44px;padding:6px 8px;border-radius:8px;text-decoration:none;color:inherit}
.app-mebbis-satir strong{font-size:.9rem}.app-mebbis-satir span{font-size:.78rem;color:var(--muted,#5b6b73)}
.app-mebbis-satir:hover,.app-mebbis-satir:focus-visible{background:var(--brand-soft,#e9f1fd);outline:none}
@media (max-width:575.98px){.app-mebbis-panel{position:fixed;left:12px;right:12px;width:auto}}
.app-mebbis-satir{width:100%;border:0;background:none;text-align:left;font:inherit;cursor:pointer}
.app-mebbis-satir[disabled]{opacity:.5;cursor:default}
.app-mebbis-uyari{display:grid;gap:2px;margin:0 4px 8px;padding:8px 10px;border-radius:10px;background:#fff6e5;color:#8a5a00;font-size:.78rem}
.app-mebbis-uyari strong{font-size:.82rem}
.app-mebbis-durum{margin:6px 8px 0;font-size:.78rem;color:var(--muted,#5b6b73);min-height:1em}.app-mebbis-durum.is-hata{color:#b42318}
.app-mebbis-alt{margin:8px 8px 2px;font-size:.74rem;color:var(--muted,#5b6b73);border-top:1px solid var(--line,#dfe6ea);padding-top:8px}
/* UI.16 (09.10.2026) — sunucu MEBBIS oturumu rozeti. Rozet dar ekranda da gorunur (diger durum rozetleri gizlenir). */
.app-status-badge-is{background:#b45309}
.app-mebbis>summary:focus-visible{outline:3px solid rgba(255,255,255,.6);outline-offset:2px}
@media (max-width:1100px){.app-mebbis>.app-status-badge{display:inline-flex;padding:0 .6rem}}
@media (max-width:575.98px){.app-integration-menus{gap:5px}.app-mebbis>.app-status-badge{height:32px;padding:0 .5rem;font-size:.68rem}}
@media (max-width:575.98px){.app-mebbis-panel{top:56px;max-height:calc(100vh - 68px);overflow-y:auto;overscroll-behavior:contain}}
.app-mebbis-oturum{margin:4px 8px 8px;font-size:.82rem}
.app-mebbis-oturum span{display:block;margin-top:2px;font-size:.76rem;color:var(--muted,#5b6b73)}
.app-mebbis-baglan{margin:0 8px 6px}
/* Rozetten açılan MEBBİS / BKDS bağlanma penceresi (03.11.2026). */
.app-baglanti-cerceve{display:block;width:100%;height:min(70vh,640px);border:0;background:var(--surface,#fff)}
.app-mebbis-isler{min-height:1.5em}
.app-mebbis-isler .app-mebbis-durum{margin:2px 8px 6px}

/* ---- UI.11 Satir islem menusu (RowActions) ---------------------------- */

.row-actions-menu { display: inline-block; }
.row-actions-toggle { display: inline-grid; place-items: center; width: 34px; height: 34px; padding: 0; color: var(--muted); border: 1px solid var(--line); border-radius: 50%; background: #fff; line-height: 1; }
.row-actions-toggle:hover, .row-actions-toggle[aria-expanded="true"] { color: var(--brand-dark); border-color: var(--brand); background: #f1f5fa; }
.row-actions-toggle:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.row-actions-toggle .row-actions-icon { width: 18px; height: 18px; stroke-width: 3.4; }
.row-actions-toggle.is-busy .row-actions-icon { display: none; }
.row-actions-toggle .btn-spinner { margin-right: 0; }
/* Eski isaretlemede kalan etiket gizlenir (sunucu derlenene kadar ve onbellekteki satirlar icin). */
.row-actions-toggle .row-actions-label { display: none; }
.row-actions-dropdown { min-width: 180px; padding: 6px; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 16px 38px rgba(12,55,70,.16); font-size: .82rem; z-index: 1080; }
.row-actions-dropdown .dropdown-item { display: flex; align-items: center; gap: .55rem; width: 100%; min-height: 36px; padding: .4rem .65rem; border-radius: 8px; color: var(--ink); font-weight: 550; text-align: left; }
.row-actions-dropdown .dropdown-item:hover, .row-actions-dropdown .dropdown-item:focus-visible { color: var(--brand-dark); background: #eef2f8; }
.row-actions-dropdown .dropdown-item.text-danger { color: #b42318 !important; }
.row-actions-dropdown .dropdown-item.text-danger:hover, .row-actions-dropdown .dropdown-item.text-danger:focus-visible { background: #fef3f2; }
.row-actions-dropdown .dropdown-item .app-icon { flex: 0 0 auto; opacity: .8; }
.row-actions-dropdown .row-action-form, .row-actions .row-action-form { margin: 0; }
.row-actions .row-action-form { display: inline; }
.row-actions-dropdown .dropdown-divider { margin: 4px 2px; }
.table td.row-actions-open { position: relative; z-index: 6; }
.list-shell .dt-layout-table td.row-actions-open:first-child { z-index: 6; }
@media (max-width: 600px) { .row-actions-toggle { width: 40px; height: 40px; } }

/* ---- K5 Liste bekleme ortusu ve sayac yukleniyor durumu ---------------- */

.is-table-loading { position: relative; min-height: 120px; }
.is-table-loading table { opacity: .45; transition: opacity .15s; }
.table-loading-overlay { position: absolute; inset: 0; z-index: 4; display: flex; align-items: flex-start; justify-content: center; padding-top: min(72px, 25%); background: rgba(255,255,255,.35); cursor: progress; }
.is-table-loading > .table-loading-overlay, div.dt-container div.dt-layout-table.is-table-loading > div.table-loading-overlay { display: flex !important; width: auto; max-width: none; margin: 0; padding-left: 0; padding-right: 0; }
.table-loading-box { position: sticky; top: 96px; display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 18px; color: var(--ink); border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.97); box-shadow: 0 16px 38px rgba(12,55,70,.16); font-size: .8rem; font-weight: 700; }
.table-loading-box::before { width: 20px; height: 20px; border: 3px solid #bbc9df; border-top-color: var(--brand); border-radius: 50%; content: ""; animation: reha-spin .7s linear infinite; }
.list-summary-card.is-loading strong { color: transparent; position: relative; }
.list-summary-card.is-loading strong::after { position: absolute; left: 0; top: 50%; width: 18px; height: 18px; margin-top: -9px; border: 3px solid #bbc9df; border-top-color: var(--brand); border-radius: 50%; content: ""; animation: reha-spin .7s linear infinite; }
@media (prefers-reduced-motion: reduce) { .table-loading-box::before, .list-summary-card.is-loading strong::after { animation-duration: 2s; } .is-table-loading table { transition: none; } }

/* ---- UI.18 Ortak tarih secici (reha_shared/js/app-datepicker.js) ------- */
input[type="date"]:not([data-native-picker="true"]),
input[type="month"]:not([data-native-picker="true"]) {
  padding-right: 2.25rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23647588' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15.5' rx='2.5'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .7rem center;
  background-size: 1.05rem;
  cursor: pointer;
}
input[type="date"]:not([data-native-picker="true"])::-webkit-calendar-picker-indicator,
input[type="month"]:not([data-native-picker="true"])::-webkit-calendar-picker-indicator { display: none; }
input[type="date"].form-control-sm, input[type="month"].form-control-sm { padding-right: 2rem; background-position: right .55rem center; background-size: .95rem; }
input[type="date"]:disabled, input[type="month"]:disabled, input[type="date"][readonly], input[type="month"][readonly] { cursor: default; }
input[type="date"][aria-expanded="true"], input[type="month"][aria-expanded="true"] { border-color: #7aa7ef; box-shadow: 0 0 0 .2rem rgba(29,95,191,.16); }

.reha-dp {
  position: fixed; z-index: 1090; width: 296px; max-width: calc(100vw - 16px); padding: 12px;
  color: var(--ink); border: 1px solid #d9e1e7; border-radius: var(--radius-md); background: #fff;
  box-shadow: 0 18px 42px rgba(12,55,70,.2); font-size: .85rem; user-select: none;
}
.reha-dp[hidden] { display: none; }
.reha-dp-head { display: grid; grid-template-columns: 34px minmax(0,1fr) 34px; align-items: center; gap: 4px; margin-bottom: 8px; }
.reha-dp-nav, .reha-dp-title { height: 34px; border: 0; border-radius: 9px; color: var(--ink); background: transparent; font-weight: 750; }
.reha-dp-nav { font-size: 1.2rem; line-height: 1; color: var(--muted); }
.reha-dp-title { font-size: .92rem; }
.reha-dp-nav:hover, .reha-dp-title:not(:disabled):hover { color: var(--brand-dark); background: var(--brand-soft); }
.reha-dp-title:disabled { opacity: 1; cursor: default; }
.reha-dp-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.reha-dp-months { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; padding: 4px 0; }
.reha-dp-dow { display: grid; place-items: center; height: 28px; color: var(--muted); font-size: .7rem; font-weight: 800; letter-spacing: .03em; }
.reha-dp-day, .reha-dp-cell {
  display: grid; place-items: center; border: 0; border-radius: 9px; color: var(--ink); background: transparent;
  font-weight: 600; font-variant-numeric: tabular-nums; transition: background-color .12s ease, color .12s ease;
}
.reha-dp-day { height: 36px; }
.reha-dp-cell { height: 46px; font-size: .84rem; }
.reha-dp-day.is-weekend { color: #8a5560; }
.reha-dp-day.is-outside { color: #aab6c1; }
.reha-dp-day:hover:not(:disabled), .reha-dp-cell:hover:not(:disabled) { color: var(--brand-dark); background: var(--brand-soft); }
.reha-dp-day.is-today, .reha-dp-cell.is-today { box-shadow: inset 0 0 0 1.5px var(--brand); color: var(--brand-dark); font-weight: 800; }
.reha-dp-day.is-selected, .reha-dp-cell.is-selected,
.reha-dp-day.is-selected:hover, .reha-dp-cell.is-selected:hover { color: #fff; background: var(--brand-dark); box-shadow: none; }
.reha-dp-day:disabled, .reha-dp-cell:disabled { color: #c9d2da; background: transparent; text-decoration: line-through; cursor: not-allowed; }
.reha-dp button:focus-visible { outline: 3px solid rgba(29,95,191,.35); outline-offset: 1px; position: relative; z-index: 1; }
.reha-dp-foot { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.reha-dp-foot .btn-link { color: var(--muted); text-decoration: none; padding-left: 4px; }
.reha-dp-foot .btn-link:hover { color: var(--accent-rose); }
.reha-dp-foot [data-dp="bugun"]:only-child, .reha-dp-foot [hidden] + [data-dp="bugun"] { margin-left: auto; }
@media (pointer: coarse) { .reha-dp-day { height: 40px; } }
@media (prefers-reduced-motion: reduce) { .reha-dp-day, .reha-dp-cell { transition: none; } }

/* ---- Planlama "Ders planla" penceresi: bolumlu form ------------------- */
.plan-mod-secimi { display: flex; width: 100%; max-width: 420px; }
.plan-form-bolumler { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.plan-form-sutun { display: grid; gap: 16px; align-content: start; min-width: 0; }
.plan-form-bolum { min-width: 0; margin: 0; padding: 14px 16px 16px; border: 1px solid var(--line); border-radius: var(--radius-md); background: #fff; }
.plan-form-bolum-baslik { float: none; display: flex; align-items: center; gap: 8px; width: auto; margin: 0 0 12px; padding: 0; color: var(--ink); font-size: .92rem; font-weight: 750; }
.plan-form-bolum-no { display: grid; place-items: center; flex: 0 0 24px; width: 24px; height: 24px; border-radius: 50%; color: var(--brand-dark); background: var(--brand-soft); font-size: .74rem; font-weight: 800; }
.plan-form-bolum #modTekrar { margin-top: 12px; }
.plan-form-bolum .form-label { margin-bottom: 4px; }
.plan-form-not { margin: 14px 0 0; padding-top: 10px; border-top: 1px dashed var(--line); color: var(--muted); font-size: .78rem; line-height: 1.45; }
.plan-form-uyarilar { display: grid; gap: 8px; }
/* En kalabalik form: genis ekranda pencere 1120px ve bolumler iki sutun; daha darda
   genel modal-xl genisligi (860px) ve bolumler alt alta. */
@media (min-width: 1200px) {
  .modal-dialog.plan-ders-modal { --bs-modal-width: 1120px; }
  .plan-form-bolumler { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
}
/* Haftalik program kipinde gun/seans izgarasi tam genislik ister: bolumler alt alta. */
.plan-form-bolumler:has(#modTekrar:not([hidden])) { grid-template-columns: minmax(0, 1fr); }
.plan-slot-tablo th[scope="row"] { white-space: nowrap; }
/* Nitelik gizliyken (haftalik kip, duzenleme) program alani satiri tek basina doldurur. */
.plan-form-bolum .row > .col-sm-6:has(+ #zorunluAlan[hidden]) { width: 100%; }
/* Ders penceresi kaydırmadan sığar (17.10.2026 kullanıcı kararı): Hedef/Davranış sağ sütunda "Zaman ve
   yer"in altında, bölüm boşlukları ve yardım metinleri daraltıldı; davranış listesi kendi içinde kayar. */
.plan-ders-modal .modal-header { padding: 10px 16px; }
.plan-ders-modal .modal-body { padding: 12px 16px; }
.plan-ders-modal .modal-footer { padding: 8px 16px; }
.plan-ders-modal .plan-mod-secimi { margin-bottom: 10px !important; }
.plan-ders-modal .plan-mod-secimi .btn { padding: 4px 12px; font-size: .86rem; }
.plan-ders-modal .plan-form-bolumler,
.plan-ders-modal .plan-form-sutun { gap: 10px; }
.plan-ders-modal .plan-form-bolum { padding: 8px 12px 10px; }
.plan-ders-modal .plan-form-bolum-baslik { margin-bottom: 6px; font-size: .88rem; }
.plan-ders-modal .plan-form-bolum .row { --bs-gutter-y: .5rem; --bs-gutter-x: .75rem; }
.plan-ders-modal .plan-form-bolum .form-label { margin-bottom: 2px; font-size: .84rem; }
.plan-ders-modal .form-text { margin-top: 2px; font-size: .74rem; line-height: 1.3; }
.plan-ders-modal .form-select,
.plan-ders-modal .form-control { padding-top: 5px; padding-bottom: 5px; }
.plan-ders-modal .plan-form-uyarilar:not(:has(.alert:not(.d-none))) { display: none; }
.plan-ders-modal .plan-hedef-baslik { padding: 6px 12px; }
.plan-ders-modal .plan-hedef-secim { padding: 6px 12px 0; }
.plan-ders-modal .plan-hedef-liste { max-height: min(240px, 32vh); padding: 6px 12px; }
.plan-ders-modal .plan-hedef-alt { padding: 6px 12px; }
/* 30.10.2026 kullanıcı isteği: tek ders penceresi geniş ekranda kaydırmasız üç sütundur — 1 Öğrenci/eğitimci/program,
   2 Zaman ve yer, 3 Ders içeriği + Hedef/Davranış (sağda boydan boya); uyarılar 1–2 altında. Haftalık program kipi
   (gün × seans ızgarası) eskisi gibi tek sütundur. */
@media (min-width: 1200px) {
  .modal-dialog.plan-ders-modal { --bs-modal-width: min(1560px, 96vw); }
  .plan-form-bolumler:not(:has(#modTekrar:not([hidden]))) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .plan-form-bolumler:not(:has(#modTekrar:not([hidden]))) > .plan-form-sutun:first-child { display: contents; }
  .plan-form-bolumler:not(:has(#modTekrar:not([hidden]))) > .plan-form-sutun:first-child > fieldset.plan-form-bolum:nth-of-type(1) { grid-column: 1; grid-row: 1; }
  .plan-form-bolumler:not(:has(#modTekrar:not([hidden]))) > .plan-form-sutun:first-child > fieldset.plan-form-bolum:nth-of-type(2) { grid-column: 2; grid-row: 1; }
  .plan-form-bolumler:not(:has(#modTekrar:not([hidden]))) > .plan-form-sutun:first-child > .plan-form-uyarilar { grid-column: 1 / 3; grid-row: 2; }
  .plan-form-bolumler:not(:has(#modTekrar:not([hidden]))) > .plan-form-sutun:last-child { grid-column: 3; grid-row: 1 / span 2; }
  .plan-form-bolumler:not(:has(#modTekrar:not([hidden]))) .plan-hedef-liste { max-height: min(420px, 50vh); }
}
/* P2.2 (10.10.2026) menünün altındaki "Menüyü düzenle" bağlantısı */
.app-nav-duzenle { display: flex; align-items: center; gap: 8px; margin: 14px 0 0; padding: 10px; border-top: 1px solid var(--line); color: var(--muted); font-size: .8rem; font-weight: 650; text-decoration: none; }
.app-nav-duzenle:hover, .app-nav-duzenle:focus-visible { color: var(--brand-dark); background: var(--brand-soft); border-radius: var(--radius-sm); }
@media (min-width: 1101px) { .app-nav-dar:not(.app-nav-gecici) .app-nav-duzenle { justify-content: center; padding: 10px 0; } }
/* UI.5 (10.10.2026) durum gorunumleri: durum sayfasi ve liste bos / sonuc yok / hata */
.durum-karti { max-width: 560px; margin: 32px auto; padding: 32px 24px; text-align: center; height: auto; }
.durum-ikon { display: inline-grid; place-items: center; width: 56px; height: 56px; margin-bottom: 12px; border-radius: 50%; background: var(--brand-soft); color: var(--brand-dark); }
.durum-ikon .app-icon { width: 26px; height: 26px; }
.durum-karti[data-durum="hata"] .durum-ikon { background: #fdecea; color: #b42318; }
.liste-durum { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 28px 12px; color: var(--muted); text-align: center; white-space: normal; }
.liste-durum strong { color: var(--ink, #172b3f); font-size: .95rem; }
.liste-durum .btn { margin-top: 6px; }
.liste-durum-ikon { display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--brand-soft); color: var(--brand-dark); font-size: 1.1rem; font-weight: 800; }
.liste-durum-hata .liste-durum-ikon { background: #fdecea; color: #b42318; }
/* UI.7 (10.10.2026) kisi hucresi: bas harf avatari, ikincil satir, bitis uyarisi */
.kisi-hucre { display: flex; align-items: center; gap: 10px; min-width: 180px; }
.kisi-avatar { display: inline-grid; flex: 0 0 auto; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--brand-soft); color: var(--brand-dark); font-size: .74rem; font-weight: 800; letter-spacing: .02em; }
.kisi-metin { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.kisi-metin small { color: var(--muted); font-size: .74rem; }
/* 02.11.2026: ad kaydın kartını açar (satırda ⋮ menüsü yok) */
.kisi-ad-dugme { padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.kisi-ad-dugme:hover strong, .kisi-ad-dugme:focus-visible strong { color: var(--brand-dark); text-decoration: underline; text-underline-offset: 2px; }
.kisi-ad-dugme:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 4px; }
.kisi-rozet { align-self: flex-start; margin-top: 3px; padding: 1px 8px; border-radius: 999px; font-size: .7rem; font-weight: 700; white-space: nowrap; }
.kisi-rozet-uyari { background: #fff4d6; color: #8a5a00; }
.kisi-rozet-tehlike { background: #fdecea; color: #b42318; }

/* UI.14 (11.10.2026) — kontrast: birincil düğme ve bağlantı metni AA (4.5:1) için markanın koyu tonunu kullanır;
   marka rengi (#1d5fbf) süs, çizgi ve ikon için kalır. Ölçüm scripts/ui-kontrast-denetimi.js. */
.btn-primary { --bs-btn-bg: var(--brand-dark); --bs-btn-border-color: var(--brand-dark); --bs-btn-hover-bg: var(--brand-deep); --bs-btn-hover-border-color: var(--brand-deep); --bs-btn-active-bg: var(--brand-deep); --bs-btn-active-border-color: var(--brand-deep); --bs-btn-disabled-bg: var(--brand-dark); --bs-btn-disabled-border-color: var(--brand-dark); }
.page-item.active .page-link { background-color: var(--brand-dark); border-color: var(--brand-dark); }
/* UI.14 — tam ekran pencere telefonda kenar boşluğu almaz (ui-enhancements.css'teki .6rem, 100vw genişlikle yatay taşma yapıyordu). */
.modal-dialog.modal-fullscreen { margin: 0; }
@media (max-width: 575.98px) { .modal-dialog.modal-fullscreen-sm-down { margin: 0; } }
@media (max-width: 767.98px) { .modal-dialog.modal-fullscreen-md-down { margin: 0; } }
@media (max-width: 991.98px) { .modal-dialog.modal-fullscreen-lg-down { margin: 0; } }
/* UI.14 — kalan kontrast düzeltmeleri: metrik kartının ikon harfi, Bootstrap ikincil/tehlike metni. */
.metric-card .metric-icon { display: grid; color: #fff; font-size: .95rem; letter-spacing: 0; }
.btn-outline-secondary { --bs-btn-color: #5c636a; --bs-btn-border-color: #5c636a; --bs-btn-hover-bg: #5c636a; --bs-btn-hover-border-color: #5c636a; }
.text-danger { --bs-danger-rgb: 176, 42, 55; }
.btn-outline-danger { --bs-btn-color: #b02a37; --bs-btn-border-color: #b02a37; --bs-btn-hover-bg: #b02a37; --bs-btn-hover-border-color: #b02a37; --bs-btn-active-bg: #8f2230; --bs-btn-active-border-color: #8f2230; }
.btn-outline-primary { --bs-btn-disabled-color: var(--brand-dark); --bs-btn-disabled-border-color: var(--brand); }
/* Rol kartındaki küçük şablon etiketi rol renginin koyu tonunda yazılır (açık tonlar beyazda 4.5:1'in altında). */
.role-card-sablon { color: color-mix(in srgb, var(--role-color) 72%, #000); }

/* Rehberli taslak taşıma ve haftalık program (19.10.2026). Taslak kartı sürüklenir; ⇄ taşıma
   penceresini açar (klavye/dokunmatik), × kaldırır. Düğmeler 24 px dokunma hedefidir. */
.plan-adim-durum.bilgi { display: block; border-color: var(--brand); color: var(--brand-dark); font-weight: 650; }
/* Uyarı ve bilgi ızgarayı kaydırmasın (sürüklerken hedef hücre yerinden oynamasın) ve sayfa
   aşağı kaydırılmışken de görünsün: ekranın altında sabit bildirim olarak çıkar. */
.plan-adim-durum.uyari,
.plan-adim-durum.bilgi {
  position: fixed;
  z-index: 1070;
  bottom: 16px;
  left: 50%;
  width: max-content;
  max-width: min(760px, calc(100vw - 32px));
  transform: translateX(-50%);
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(15, 23, 42, .18);
}
.plan-adim-izgara .plan-adim-taslak { padding-right: 2px; cursor: grab; }
.plan-adim-izgara .plan-adim-taslak:active { cursor: grabbing; }
.plan-taslak-tasi,
.plan-taslak-kaldir {
  display: grid;
  flex: none;
  place-items: center;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .55);
  border-radius: 6px;
  background: transparent;
  color: #fff;
  font-size: .85rem;
  line-height: 1;
}
.plan-taslak-tasi:hover,
.plan-taslak-kaldir:hover { background: rgba(255, 255, 255, .2); }
.plan-taslak-tasi:focus-visible,
.plan-taslak-kaldir:focus-visible { outline: 2px solid #fff; outline-offset: 1px; box-shadow: 0 0 0 4px var(--brand-deep); }
.plan-taslak-tasi.is-busy { opacity: .7; }
.plan-ah-hedefler { max-height: 280px; overflow-y: auto; padding: 6px 8px; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.plan-ah-hedef { display: flex; gap: 8px; align-items: flex-start; margin: 0; padding: 4px 0; padding-left: 0; }
.plan-ah-hedef .form-check-input { flex: none; margin: 2px 0 0; float: none; }
.plan-ah-hedef + .plan-ah-hedef { border-top: 1px solid var(--line); }
/* Kayıtta yazılamayan taslak kırmızı kalır; neden kartın başlığında ve ekran okuyucu metnindedir. */
.plan-adim-izgara .plan-adim-taslak.is-hatali { border-color: #b42318; background: #b42318; }
/* Telafi hakkı öğrenci başına (19.10.2026); hakkı olmayan öğrenci uyarı renginde. */
.plan-telafi-haklari { margin: 4px 0 0; padding: 0; list-style: none; font-size: .76rem; }
.plan-telafi-haklari[hidden] { display: none; }
.plan-telafi-hak { display: flex; flex-wrap: wrap; justify-content: space-between; column-gap: 8px; padding: 2px 6px; border-radius: 6px; }
.plan-telafi-hak + .plan-telafi-hak { margin-top: 2px; }
.plan-telafi-hak-ad { flex: 1 1 7rem; min-width: 0; overflow-wrap: anywhere; }
/* 02.11.2026: dar telafi kutusunda değer alta iner, kutudan taşmaz. */
.plan-telafi-hak-deger { flex: 0 1 auto; min-width: 0; font-weight: 650; color: var(--brand-dark); }
.plan-telafi-hak.is-yok { background: #fdecea; }
.plan-telafi-hak.is-yok .plan-telafi-hak-deger { color: #b42318; }
/* Haftalık akordeon (19.10.2026; Klasik ve Rehberli ortak). Başlıkta haftanın özeti, gövdede gün
   satırı × seans sütunu; gün toplamları (B/G/T) yatay kaydırmada sağda sabit kalır. */
.ders-hafta > summary { flex-wrap: wrap; }
.ders-hafta > summary:focus-visible { outline: 3px solid var(--brand); outline-offset: -3px; border-radius: var(--radius-md); }
.plan-hafta-ozet { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; margin-left: auto; font-size: .8rem; color: var(--ink); }
.plan-ozet-oge { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.plan-ozet-nokta { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); }
.plan-ozet-normal .plan-ozet-nokta { background: var(--brand); }
.plan-ozet-telafi .plan-ozet-nokta { background: var(--accent-orange, #c2410c); }
.plan-ozet-grup .plan-ozet-nokta { background: var(--accent-violet, #6d28d9); }
.plan-ozet-ayrac { color: var(--line); }
.plan-ozet-toplam { display: inline-grid; place-items: center; min-width: 28px; height: 24px; padding: 0 8px; border-radius: 999px; background: var(--brand-dark); color: #fff; font-weight: 750; }
.plan-ozet-taslak { padding: 1px 8px; border-radius: 999px; background: var(--brand-soft, #e6effc); color: var(--brand-dark); font-weight: 650; }
.plan-ozet-taslak[hidden] { display: none; }
/* Günün seans özeti (23.10.2026): tarihin yanındaki simge; balon Bootstrap tooltip (planlama-ortak.js). */
.plan-gun-tarih { display: inline-flex; align-items: center; gap: 4px; }
.plan-gun-bilgi { display: inline-flex; align-items: center; gap: 2px; padding: 0 4px; border: 1px solid transparent; border-radius: 999px; background: var(--brand-soft, #e6effc); color: var(--brand-dark); font-size: .68rem; font-weight: 750; line-height: 1.5; cursor: help; }
.plan-gun-bilgi .app-icon { width: 13px; height: 13px; }
.plan-gun-bilgi:hover, .plan-gun-bilgi:focus-visible { border-color: var(--brand); }
.plan-gun-bilgi:focus-visible { outline: 2px solid var(--brand-dark); outline-offset: 1px; }
.tooltip.plan-gun-balon .tooltip-inner { max-width: 260px; text-align: left; }
.plan-gun-kapali-bant { padding: 8px 12px; background: repeating-linear-gradient(45deg, #f1f3f5, #f1f3f5 6px, #e9ecef 6px, #e9ecef 12px); color: var(--muted); font-weight: 650; vertical-align: middle !important; }
.plan-gun-kapali > th { color: var(--muted); }
/* Rehberli ızgara: günler üstte, seans saatleri solda sabit sütundadır. */
.plan-gun-izgara .plan-adim-gunbas { width: 210px; min-width: 210px; max-width: 210px; padding: 4px 8px; background: var(--panel, #f7f8fa); text-align: center; line-height: 1.2; }
.plan-gun-izgara .plan-adim-gun { display: block; font-weight: 700; text-transform: capitalize; }
.plan-gun-izgara thead th { white-space: nowrap; }
.plan-gun-izgara .plan-adim-bugun-satir { border-top: 3px solid var(--brand); }
.plan-adim .ders-hafta > .table-responsive { padding: 0 8px 8px; }
/* Evde eğitim paneli (19.10.2026): Evde Eğitim ekranının gömülü kipi çerçevede açılır. */
.plan-evde-cerceve { display: block; width: 100%; min-height: 240px; border: 0; border-radius: var(--radius-sm); background: #fff; }

/* Bas harf suzgeci (app-tables.js buildHarfSuzgeci): liste arac cubugunun altinda. */
.list-alfabe{padding:.25rem .75rem .5rem;margin:0}
.list-toolbar .list-alfabe{flex:1 1 320px;min-width:0;padding:0}
.list-toolbar .plan-harf{min-width:22px;padding:0 2px}
.plan-harf.plan-harf-aktif:hover:not(:disabled){background:var(--brand-dark,#1d5fbf);color:#fff}

/* ---- Kutucuk menü görünümü (23.10.2026, Lila ana ekranı gibi) ----
   Sol menü çizilmez (.app-menu-kutucuk); Genel Bakış'ta her modül bir kutucuktur (AppShell.ModulKutucuklari),
   modül sayfalarında modülün sayfa şeridi (.app-modul-serit) gezinmeyi sağlar. Masaüstü 7, dar masaüstü 6, tablet 4, telefon 3 sütun. */
.hizli-erisim { margin-bottom: 18px; }
.hizli-erisim .dashboard-section-head { flex-direction: row; align-items: center; }
.hizli-erisim-izgara { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.hizli-erisim-izgara > li { min-width: 0; }
.hizli-erisim-kutu {
  display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 8px;
  height: 100%; min-height: 104px; padding: 14px 8px 12px;
  color: var(--ink); text-align: center; text-decoration: none;
  border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface);
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.hizli-erisim-kutu:hover { color: var(--ink); border-color: color-mix(in srgb, var(--brand) 45%, var(--line)); box-shadow: 0 6px 16px rgba(12,55,70,.08); transform: translateY(-1px); }
.hizli-erisim-kutu:focus-visible { outline: 3px solid rgba(29,95,191,.35); outline-offset: 2px; border-color: var(--brand); }
.hizli-erisim-ikon { display: inline-grid; place-items: center; width: 48px; height: 48px; flex: 0 0 48px; border-radius: 14px; color: var(--brand-dark); background: var(--brand-soft); }
.hizli-erisim-ikon .app-icon { width: 24px; height: 24px; }
.hizli-erisim-ad { max-width: 100%; font-size: .8rem; font-weight: 650; line-height: 1.25; overflow-wrap: anywhere; hyphens: auto; }
@media (max-width: 1280px) { .hizli-erisim-izgara { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
@media (max-width: 1100px) { .hizli-erisim-izgara { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 575.98px) {
  .hizli-erisim-izgara { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .hizli-erisim-kutu { min-height: 92px; padding: 10px 4px; gap: 6px; }
  .hizli-erisim-ikon { width: 40px; height: 40px; flex-basis: 40px; border-radius: 12px; }
  .hizli-erisim-ikon .app-icon { width: 20px; height: 20px; }
  .hizli-erisim-ad { font-size: .74rem; }
}
@media (prefers-reduced-motion: reduce) { .hizli-erisim-kutu { transition: none; } .hizli-erisim-kutu:hover { transform: none; } }
@media print { .hizli-erisim { display: none; } }
.app-shell.app-menu-kutucuk { grid-template-columns: minmax(0, 1fr); grid-template-areas: "topbar" "main"; }
.app-modul-serit { margin: 0 0 14px; border-bottom: 1px solid var(--line); overflow-x: auto; scrollbar-width: thin; }
.app-modul-serit ul { display: flex; gap: 4px; margin: 0; padding: 0; list-style: none; }
.app-modul-serit li { flex: 0 0 auto; }
.app-modul-serit a { display: block; padding: 8px 12px; color: var(--muted); font-size: .84rem; font-weight: 650; white-space: nowrap; text-decoration: none; border-bottom: 3px solid transparent; border-radius: var(--radius-sm) var(--radius-sm) 0 0; }
.app-modul-serit a:hover { color: var(--brand-dark); background: var(--brand-soft); }
.app-modul-serit a:focus-visible { outline: 3px solid rgba(29,95,191,.35); outline-offset: -3px; }
.app-modul-serit a.active { color: var(--brand-dark); border-bottom-color: var(--brand); }
@media print { .app-modul-serit { display: none; } }

/* ---- Günlük Program'ın gömülü ders penceresi (23.10.2026) ---------------------------------- */
/* Üst sayfa: Ders Programı'nın ders penceresi çerçevede, sayfanın üstünde açılır. */
.gunluk-ders-penceresi { position: fixed; inset: 0; z-index: 1065; }
.gunluk-ders-penceresi[hidden] { display: none; }
.gunluk-ders-penceresi iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: transparent; color-scheme: normal; }
.gunluk-ders-penceresi.is-yukleniyor { background: rgba(15, 23, 42, .45); }
.gunluk-ders-yukleniyor { display: none; position: absolute; top: 40%; left: 50%; transform: translate(-50%, -50%); padding: 10px 16px; border-radius: 8px; background: #fff; box-shadow: 0 6px 24px rgba(15, 23, 42, .18); font-size: .9rem; }
.gunluk-ders-penceresi.is-yukleniyor .gunluk-ders-yukleniyor { display: block; }
.gunluk-ders-penceresi.is-yukleniyor iframe { visibility: hidden; }
.gunluk-ders-kapat { position: absolute; top: 10px; right: 12px; z-index: 2; padding: 8px; border-radius: 50%; background-color: #fff; opacity: .9; box-shadow: 0 2px 8px rgba(15, 23, 42, .2); }
body.gunluk-pencere-acik { overflow: hidden; }
/* Çerçevenin içi (Planlama.aspx?gomulu=1&donus=gunluk): yalnız ders penceresi görünür, zemin saydamdır. */
html:has(#planGomuluIsaret), html:has(#planGomuluIsaret) body { background: transparent !important; }
main.app-gomulu:has(> #planGomuluIsaret) > :not(.modal):not(script):not(form.d-none) { display: none !important; }
/* Sade liste araç çubuğu (23.10.2026, data-toolbar="sade"): arama solda, yanında "Filtreler". */
.list-toolbar-sade { justify-content: flex-start; }
.list-toolbar-sade .list-search { margin: 0; }

/* Liste araç çubuğu (27.10.2026 kullanıcı isteği): arama solda, Filtreler / Görünümler / sayfa uzunluğu
   ortada, Yazdır ve CSV en sağda. "Kayıtlar" seçimi kalktı (özet kartları aynı işi görür). */
.list-toolbar-export { display: flex; align-items: center; gap: 6px; margin-left: auto; }
.list-summary-link strong { color: var(--brand-dark); }

/* Sıkı yoğunluk (27.10.2026 kullanıcı isteği: ekrana daha çok şey sığsın). rem tabanı 14 px olur; Bootstrap ve
   kabuğun rem ölçüleri birlikte küçülür, px ölçülü ortak öğeler ayrıca sıkıştırılır. Telefonda (<576 px)
   dokunma hedefleri için taban 16 px kalır. */
@media (min-width: 576px) {
  html { font-size: 14px; }
  .table > :not(caption) > * > * { padding: .5rem .65rem; }
  .list-toolbar { gap: 8px 12px; padding: 8px 12px; }
  .list-tool-button, .list-columns > summary { min-width: 32px; min-height: 32px; }
  .list-length .form-select, .list-search .form-control { min-height: 32px; }
  .list-summary-dashboard { gap: 10px; margin-bottom: 12px; }
  .list-summary-card { padding: 7px 12px; border-radius: 12px; }
  .list-summary-card strong { font-size: 1.15rem; }
  .kisi-hucre { gap: 8px; }
  .kisi-avatar { width: 28px; height: 28px; }
  .app-main { padding-top: 10px; padding-bottom: 40px; }
}
@media (max-width: 900px) { .list-toolbar-export { margin-left: 0; } }

/* Sayfa bağlamı üst çubukta (27.10.2026 kullanıcı isteği): Geri, iz yolu ve sayfa başlığı "Ana Sayfa"nın yanında, koyu
   zeminde açık renkle tek satırdır. Dar ekranda önce iz yolu, telefonda başlık gizlenir (Geri kalır). */
.app-topbar .app-page-context { flex: 0 1 auto; flex-wrap: nowrap; min-width: 0; gap: 4px 8px; overflow: hidden; }
.app-topbar .app-crumbline { flex-wrap: nowrap; }
.app-topbar .app-geri { min-height: 28px; padding: .1rem .55rem; color: #fff; border-color: rgba(255, 255, 255, .55); background: transparent; }
.app-topbar .app-geri:hover, .app-topbar .app-geri:focus-visible { color: #fff; background: rgba(255, 255, 255, .16); border-color: #fff; }
.app-topbar .app-geri:focus-visible { outline-color: #fff; }
.app-topbar .app-breadcrumb .breadcrumb { flex-wrap: nowrap; white-space: nowrap; }
.app-topbar .app-breadcrumb a { color: #d5e1f3; }
.app-topbar .app-breadcrumb a:hover, .app-topbar .app-breadcrumb a:focus-visible { color: #fff; }
.app-topbar .app-breadcrumb .breadcrumb-item + .breadcrumb-item::before { color: rgba(255, 255, 255, .6); }
.app-topbar .app-page-context .app-page-title { overflow: hidden; color: #fff; font-size: 1.05rem; white-space: nowrap; text-overflow: ellipsis; }
.app-topbar .app-page-context .app-page-title::before { color: rgba(255, 255, 255, .6); }
.app-crumbbar:has(> .page-actions:only-child) { justify-content: flex-end; }
@media (max-width: 991.98px) {
  .app-topbar .app-breadcrumb { display: none; }
  .app-topbar .app-page-context .app-page-title::before { display: none; }
}
@media (max-width: 575.98px) { .app-topbar .app-page-title { display: none; } }

/* Ders kartında tür işareti (27.10.2026): zorunlu ders Z rozeti, telafi (T). */
.plan-tur-isaret { margin-left: 2px; font-weight: 800; white-space: nowrap; }
.plan-tur-zorunlu { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; color: #664d03; background: #fff3cd; font-size: .68rem; line-height: 1; vertical-align: middle; }
/* İz yolu üst çubukta sayfa başlığıyla aynı yazı karakterindedir (27.10.2026 kullanıcı isteği: "Planlama" de "Ders Programı" gibi). */
.app-topbar .app-breadcrumb { margin: 0; }
.app-topbar .app-breadcrumb .breadcrumb { font-size: 1.05rem; font-weight: 800; letter-spacing: -.025em; line-height: 1.2; }
.app-topbar .app-breadcrumb a { color: #fff; }
.app-topbar .app-breadcrumb a:hover, .app-topbar .app-breadcrumb a:focus-visible { color: #fff; text-decoration: underline; }
.app-topbar .app-page-context .app-page-title { font-weight: 800; letter-spacing: -.025em; }
/* 30.10.2026: MEBBİS'ten Çek › "Farkları incele" alan farkı listesi (solda kutucuk, RehaCRM / MEBBİS değeri). */
.mebbis-alan-fark { margin: 12px 0; }
.mebbis-alan-fark-arac { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.mebbis-alan-fark-tablo { max-height: 480px; overflow: auto; border: 1px solid var(--line); border-radius: 10px; }
.mebbis-alan-fark-tablo thead th { position: sticky; top: 0; z-index: 1; background: #f8fafb; }
.mebbis-alan-fark-tablo td:first-child, .mebbis-alan-fark-tablo th:first-child { width: 36px; }
.mebbis-rapor-karsilastirma { margin: 12px 0; padding-bottom: 8px; border-bottom: 1px solid var(--line); }

/* Ortak baskı: bütün tablo hücrelerinin satır ve sütun sınırları görünür. */
@media print {
  table { border-collapse: collapse !important; }
  table th, table td { border: 1px solid #333 !important; }
  thead { display: table-header-group; }
  tr { break-inside: avoid; page-break-inside: avoid; }
}

/* Personel kartı: uzun formu masaüstünde ekrana sığdıran sıkı modal düzeni. */
.personel-kart-modal { --bs-modal-width: 1060px; }
.personel-kart-modal .modal-header { padding: 10px 16px; }
.personel-kart-modal .modal-body { padding: 12px 16px; }
.personel-kart-modal .modal-footer { padding: 8px 16px; }
.personel-kart-modal .form-bolum { margin-bottom: 10px; padding: 9px 12px 11px; }
.personel-kart-modal .form-bolum:last-child { margin-bottom: 0; }
.personel-kart-modal .form-section-title { margin-bottom: 5px; font-size: .92rem; }
.personel-kart-modal .form-bolum > .small { margin-bottom: 6px; }
.personel-kart-modal .row { --bs-gutter-x: 12px; --bs-gutter-y: 7px; }
.personel-kart-modal .form-label { margin-bottom: 3px; font-size: .8rem; }
.personel-kart-modal .form-control,
.personel-kart-modal .form-select { min-height: 36px; padding-top: 5px; padding-bottom: 5px; }
.personel-kart-modal .form-text { margin-top: 3px; font-size: .72rem; line-height: 1.25; }
.personel-kart-izin { margin-bottom: 10px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px; background: #f8f9fb; }
.personel-kart-izin h3 { margin-bottom: 5px; }
.personel-kart-izin [data-izin-status] { margin-bottom: 5px !important; }
.personel-kart-izin dl { row-gap: 4px; margin-bottom: 5px !important; }
.personel-kart-izin dt { font-size: .72rem !important; }
.personel-kart-izin dd { margin-bottom: 0; line-height: 1.2; }
@media (max-width: 767.98px) {
  .personel-kart-modal { margin: 8px; }
  .personel-kart-modal .modal-header,
  .personel-kart-modal .modal-body,
  .personel-kart-modal .modal-footer { padding-right: 12px; padding-left: 12px; }
}

/* 01.11.2026: suren MEBBIS isinin yuzdesi (rozet paneli) ve MEBBIS sayfalarindaki suren is bandi. */
.app-mebbis-cubuk{display:block;height:6px;margin-top:3px;border-radius:3px;background:var(--line,#dfe7ea);overflow:hidden}.app-mebbis-cubuk>span{display:block;height:100%;background:var(--brand,#0c3879);transition:width .4s}
.mebbis-is-bandi{margin:0 0 12px;padding:8px 12px;border:1px solid #f0c27a;border-radius:10px;background:#fff8ec}.mebbis-is-bandi-baslik{margin:0 0 4px;font-size:.8rem;font-weight:600;color:#7a4b00}.mebbis-is-bandi .app-mebbis-satir{min-height:0;padding:4px 0}.mebbis-is-bandi .app-mebbis-satir:hover{background:transparent}
@media print{.mebbis-is-bandi{display:none!important}}

/* ---- Koyu teal görünüm (04.11.2026): düz yüzey, küçük köşe, sıkı alan. ---------------- */
.app-topbar { background: var(--brand-deep); }
.section-card, .card, .card.table-responsive, .list-summary-card, .modal-content { box-shadow: none; }
.section-card, .card, .card.table-responsive { border: 1px solid var(--line); border-radius: 10px; }
.list-summary-card { border-radius: 8px; }
.list-summary-card:hover, .list-summary-card:focus-visible, .list-summary-card.is-selected { box-shadow: none; transform: none; }
.modal-content { border-radius: 10px; }
.btn { border-radius: 6px; }
.form-control, .form-select { border-radius: 6px; }
.form-control:not(textarea):not(.form-control-sm):not([type="file"]), .form-select:not(.form-select-sm) { min-height: 36px; }
.status-pill { padding: .1rem .45rem; border-radius: 4px; font-size: .74rem; }
.status-pill-success::before { content: "✓" / ""; margin-right: .25rem; }
.status-pill-warning::before { content: "!" / ""; margin-right: .25rem; font-weight: 700; }
.status-pill-danger::before { content: "✕" / ""; margin-right: .25rem; }
.table { font-variant-numeric: tabular-nums; }
.app-nav-link { border-radius: 6px; }
@media (pointer: coarse) {
  .form-control:not(textarea):not(.form-control-sm):not([type="file"]), .form-select:not(.form-select-sm), .btn { min-height: 44px; }
}

/* ---- Dönem Kapama üst şeridi (05.11.2026): tek satır, yapışkan; adımın sayfası altında tam sayfa. ---------- */
.dk-serit { position: sticky; top: var(--app-topbar-h); z-index: 1020; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 6px 16px; background: var(--surface); border-bottom: 1px solid var(--line); }
.dk-serit-donem .form-control { width: 10rem; }
.dk-serit-adimlar { display: flex; flex: 1 1 auto; flex-wrap: wrap; align-items: center; gap: 4px; margin: 0; padding: 0; list-style: none; }
.dk-serit-adim { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 2px 10px 2px 2px; border: 1px solid var(--line); border-radius: 16px; background: var(--surface); color: var(--ink); text-decoration: none; }
.dk-serit-isaret { display: inline-flex; flex: none; align-items: center; justify-content: center; width: 24px; height: 24px; border: 1.5px solid var(--line); border-radius: 50%; background: var(--surface); font-size: .74rem; font-weight: 700; }
a.dk-serit-adim:hover .dk-serit-isaret, a.dk-serit-adim:focus-visible .dk-serit-isaret { border-color: var(--brand); }
.dk-serit-adim:focus-visible { outline: 3px solid var(--brand-soft); outline-offset: 1px; }
.dk-serit-adim.is-tamam .dk-serit-isaret { border-color: var(--brand); background: var(--brand); color: #fff; }
.dk-serit-adim.is-eksik .dk-serit-isaret { border-color: #c98a00; }
.dk-serit-adim.is-kilitli { opacity: .5; cursor: not-allowed; }
a.dk-serit-adim:hover { border-color: var(--brand); color: var(--ink); }
.dk-serit-adim.is-tamam { border-color: var(--brand-soft); background: var(--brand-soft); }
.dk-serit-adim.is-secili { border-color: var(--brand); background: var(--brand); color: #fff; font-weight: 600; }
a.dk-serit-adim.is-secili:hover { color: #fff; }
.dk-serit-adim.is-secili .dk-serit-isaret { color: var(--brand); }
.dk-serit-adim.is-secili .dk-serit-isaret { border-color: var(--brand); }
.dk-serit-ad { font-size: .78rem; white-space: nowrap; }
.dk-serit-gezinme { display: flex; gap: 6px; margin-left: auto; }
@media (max-width: 767.98px) { .dk-serit { position: static; } .dk-serit-ad { white-space: normal; } }

.app-topbar > .app-bell { flex: none; }
/* Telefonda üst çubuk (05.11.2026 kullanıcı isteği): düğmeler ekrana sığar. Rozette durum yazısı yerine işaret (✓ ! ✕) kalır;
   tam durum aria-label'da ve açılan pencerededir. Yan menülü görünümde Menü Düzeni bağlantısı menünün altındadır, burada gizlenir. */
@media (max-width: 575.98px) {
  .app-topbar { gap: 6px; padding: 0 8px; }
  .app-topbar > .app-nav-toggle, .app-topbar > .app-bell, .app-topbar > .app-integration-menus, .app-topbar > .app-logout, .app-topbar > .app-platform-baglanti { flex: none; }
  .app-topbar .app-page-context, .app-topbar .app-brand-logo { display: none; }
  .app-anasayfa { margin-left: 0; }
  .app-nav-toggle ~ a.app-logout { display: none; }
  .app-mebbis > .app-status-badge { gap: 3px; white-space: nowrap; }
  .app-mebbis > .app-status-badge small { display: none; }
  .app-mebbis > .app-status-badge::after { font-weight: 800; }
  .app-mebbis > .app-status-badge-on::after { content: "✓"; }
  .app-mebbis > .app-status-badge-is::after { content: "!"; }
  .app-mebbis > .app-status-badge-off::after { content: "✕"; }
}
@media (max-width: 575.98px) and (pointer: coarse) {
  .app-topbar .app-bell, .app-topbar .app-logout .btn, .app-topbar a.app-logout, .app-topbar .app-platform-baglanti, .app-anasayfa { min-width: 36px; min-height: 44px; }
  .app-anasayfa { justify-content: center; }
  .app-mebbis > .app-status-badge { height: 44px; }
}

/* Üst çubuk: BKDS canlı takip düğmesi (07.11.2026); telefonda üst çubuğa sığmadığı için Canlı Takip sekmesinden açılır. */
a.app-bkds-canli{background:#fff;color:#173a6b;text-decoration:none;cursor:pointer}
a.app-bkds-canli:hover{background:#e9f1fd;color:#173a6b}
a.app-bkds-canli:focus-visible{outline:3px solid rgba(255,255,255,.6);outline-offset:2px}
@media (max-width:575.98px){a.app-bkds-canli{display:none}}

/* Genel Bakış yerleşimi (08.11.2026, 09.11.2026 kullanıcı isteği). Kutucuk görünümünde 1200 px üstünde iki bağımsız sütun:
   solda modüller 3'erli + Hızlı işlemler, sağda Kurum göstergeleri + Yaklaşan uyarılar + Son bildirimler. Sütun kapları
   (gd-sol, gd-sag) başka durumda display:contents'tir; içerikleri ızgaranın doğrudan öğesi gibi dizilir ve sol menü
   görünümünde eski sıra korunur (göstergeler ve bugünün akışı kısayollardan önce). */
.genel-duzen { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; align-items: start; }
.genel-duzen .hizli-erisim { margin-bottom: 0; }
.gd-sutun { display: contents; }
.genel-duzen .gd-kutu { order: -2; }
.genel-duzen .gd-gosterge, .genel-duzen .gd-bugun { order: -1; }
@media (min-width: 992px) {
  .genel-duzen { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .genel-duzen .gd-genis, .genel-duzen .gd-kutu { grid-column: 1 / -1; }
}
/* 10.11.2026 kullanıcı isteği ("daha düzenli olsun"): sütunlar boyca dengesizdi. Kutucuk görünümünde 1200 px üstünde
   üç sıra: göstergeler tam genişlik; modüller ile Yaklaşan uyarılar yan yana ve aynı boyda (uyarılar içeride kayar);
   Hızlı işlemler tam genişlikte yan yana kartlar. */
@media (min-width: 1200px) {
  .genel-duzen.kutulu { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); grid-template-areas: "gos gos" "kutu takip" "kisa kisa"; }
  .genel-duzen.kutulu > .gd-sutun > * { order: 0; grid-column: auto; }
  .genel-duzen.kutulu .gd-gosterge { grid-area: gos; }
  .genel-duzen.kutulu .gd-kutu { grid-area: kutu; }
  .genel-duzen.kutulu .gd-takip { grid-area: takip; align-self: stretch; position: relative; min-height: 0; }
  .genel-duzen.kutulu .gd-takip > .dashboard-panel { position: absolute; inset: 0; display: flex; flex-direction: column; }
  .genel-duzen.kutulu .gd-takip .dashboard-feed { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
  .genel-duzen.kutulu .gd-kisa { grid-area: kisa; }
  .genel-duzen.kutulu .gd-sutun > :not(.gd-gosterge):not(.gd-kutu):not(.gd-takip):not(.gd-kisa) { grid-column: 1 / -1; }
  .genel-duzen.kutulu .hizli-erisim-izgara { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .genel-duzen.kutulu .gd-kisa .dashboard-actions { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 0 1.25rem; }
  .genel-duzen.kutulu .gd-kisa .dashboard-actions a:last-child { border-bottom: 1px solid #edf1f4; }
  .genel-duzen.kutulu .gd-kisa .dashboard-actions > .quick-note { grid-column: 1 / -1; }
}

/* 232 (11.11.2026): kutucuklu çoklu eğitimci seçimi; uzun liste menünün içinde kayar. */
.coklu-secim { min-width: 0; }
.coklu-secim > .form-select { display: block; width: 100%; }
.coklu-secim-menu { max-height: 18rem; overflow-y: auto; min-width: 14rem; }
.coklu-secim-menu .form-check { white-space: nowrap; margin-bottom: .15rem; }

/* 11.11.2026: Günlük Program › "BRY'de tara" aday kareleri (Scripts/gunluk-bry-tara.js). */
.bry-tara-adaylar { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .5rem; }
.bry-tara-aday { display: flex; flex-direction: column; padding: 0; border: 2px solid var(--line, #d6deea); border-radius: 8px; background: var(--surface, #fff); overflow: hidden; text-align: left; cursor: pointer; }
.bry-tara-aday img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: #e9eef5; }
.bry-tara-aday:focus-visible { outline: 3px solid var(--brand, #1D5FBF); outline-offset: 2px; }
.bry-tara-aday.is-secili { border-color: var(--brand, #1D5FBF); box-shadow: 0 0 0 2px var(--brand, #1D5FBF); }
.bry-tara-bilgi { display: flex; justify-content: space-between; align-items: center; padding: .25rem .4rem; font-size: .8rem; }
.bry-tara-puan { border-radius: 4px; padding: 0 .3rem; color: #fff; }
.bry-tara-puan.is-yuksek { background: #1f7a3d; }
.bry-tara-puan.is-orta { background: #9a6200; }
.bry-tara-puan.is-dusuk { background: #b42318; }
.bry-tara-gorsel-yok { display: flex; align-items: center; justify-content: center; aspect-ratio: 4 / 3; font-size: .8rem; color: var(--muted, #5b6b80); background: #e9eef5; }
.bry-tara-buyuk .bry-tara-cizim { position: relative; display: inline-block; max-width: 100%; line-height: 0; }
.bry-tara-buyuk .bry-tara-cizim img { display: block; max-width: 100%; max-height: 62vh; width: auto; height: auto; border-radius: 6px; }
.bry-tara-buyuk .bry-tara-cizim canvas { position: absolute; inset: 0; width: 100%; height: 100%; cursor: crosshair; touch-action: none; }
.bry-tara-buyuk { text-align: center; }
.bry-tara-buyuk > .d-flex { text-align: left; }
