/* ==========================================================================
   İşletme Takibi (BIZO) modülünün TEK stil kaynağı.
   Sayfa içine <style> bloğu EKLEMEYİN — procurement.css'te öğrenilen ders budur:
   28 ayrı .razor içinde dağılmış stil bloğu, bir gün birbirinden ayrışır.

   Yoğunluk tokenları procurement.css ile aynı ailedendir (satır 24px, hücre 11px);
   bu modül kendi görsel dilini kurmaz.
   ========================================================================== */

.biz-page {
  --biz-ink: #111827;
  --biz-muted: #6b7280;
  --biz-line: #d5dbe3;
  --biz-line-soft: #e8edf1;
  --biz-surface: #ffffff;
  --biz-surface-soft: #f4f7fa;
  --biz-accent: #2563eb;
  --biz-accent-wash: #eff6ff;
  --biz-radius: 4px;
}

/* ---------- başlık şeridi ---------- */
.biz-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}

.biz-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 7px 11px;
  background: var(--biz-surface-soft);
  border-bottom: 1px solid var(--biz-line);
}

/* ---------- KPI kartları ---------- */
.biz-kpi {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(155px, 1fr));
  gap: 8px;
}

.biz-kpi-c {
  background: var(--biz-surface);
  border: 1px solid var(--biz-line);
  border-radius: 5px;
  padding: 9px 11px;
  cursor: pointer;
  transition: border-color .12s, box-shadow .12s;
}

.biz-kpi-c:hover { border-color: var(--biz-accent); box-shadow: 0 1px 5px rgba(37, 99, 235, .15); }
.biz-kpi-c.biz-kpi-on { border-color: var(--biz-accent); box-shadow: 0 0 0 2px var(--biz-accent-wash); }

.biz-kpi-c span {
  display: block;
  font-size: 10px;
  color: var(--biz-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
}

.biz-kpi-c strong {
  display: block;
  font-size: 20px;
  font-variant-numeric: tabular-nums;
  margin-top: 1px;
  letter-spacing: -.02em;
}

.biz-kpi-c small { font-size: 10px; color: var(--biz-muted); }

.biz-kpi-late { background: #fff6f6; border-color: #f3c9c9; }
.biz-kpi-late strong { color: #b91c1c; }
.biz-kpi-crit { background: #fff9f2; border-color: #fed7aa; }
.biz-kpi-crit strong { color: #9a3412; }
.biz-kpi-warn { background: #fffbeb; border-color: #fde68a; }
.biz-kpi-warn strong { color: #92400e; }
.biz-kpi-info { background: #f6fdf8; border-color: #bbf7d0; }
.biz-kpi-info strong { color: #15803d; }

/* ---------- grid ---------- */
.biz-grid .rz-datatable-data td { font-size: 11.5px; }
.biz-grid .rz-column-title { font-size: 11.5px; font-weight: 600; }

.biz-code {
  font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
  font-size: 10.5px;
  background: #eef2f7;
  border: 1px solid #dde3ec;
  border-radius: 3px;
  padding: 0 4px;
  white-space: nowrap;
}

.biz-sub { font-size: 10.5px; color: var(--biz-muted); }

/* Evrak No girilmemiş evrakın sistem numarası (EV-123): elle girilmiş numarayla karışmasın
   diye soluk ve kesik çizgili. */
.biz-code.biz-code-sys { background: transparent; border-style: dashed; color: var(--biz-muted); }

/* ---------- bağlantıyla gelinen kayıt (BizRecordNo) ----------
   Panelden ya da uyarıdan gelinen satır önce belirgin yanar, sonra açık bir zeminde KALIR:
   kullanıcı listede gezinip döndüğünde hangi satıra geldiğini yine görür. Sol şerit renk
   ayırt edemeyen kullanıcı için de işarettir. Kenarlık yerine iç gölge: satır yüksekliği
   değişmez, tablo yerinden oynamaz. */
.biz-grid .rz-datatable-data tr[data-biz-focus] > td {
  background-color: #fffbeb;
  animation: biz-focus-flash 2.4s ease-out 1;
}
.biz-grid .rz-datatable-data tr[data-biz-focus] > td:first-child { box-shadow: inset 3px 0 0 #d97706; }

/* İzin takviminde panelden gelinen çakışma günü: sütun başlığı işaretlenir. Seçici, hafta
   sonu ve tatil sınıflarından (aşağıda) güçlüdür; o günler de işaretli görünür. */
.biz-cal thead th[data-biz-focus] {
  background: #fde68a;
  box-shadow: inset 0 -3px 0 #d97706;
}

.rz-card[data-biz-focus] {
  box-shadow: 0 0 0 2px #d97706;
  animation: biz-focus-flash 2.4s ease-out 1;
}

@keyframes biz-focus-flash {
  0%, 35% { background-color: #fde68a; }
  100%    { background-color: #fffbeb; }
}

.biz-empty { padding: 22px; text-align: center; color: var(--biz-muted); font-size: 12px; }

/* ---------- form ızgarası ---------- */
.biz-form {
  display: grid;
  grid-template-columns: 150px 1fr;
  gap: 9px 12px;
  align-items: center;
}

.biz-form > label {
  font-size: 11.5px;
  color: var(--biz-muted);
  text-align: right;
}

.biz-two { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }

/* ---------- gelişmiş süzgeç ızgarası ----------
   Süzgeçler üç sütuna dizilir: tek sütunda alt alta dizilen altı süzgeç, paneli
   tablodan daha uzun yapıyor ve sonucu ekrandan itiyordu. */
.biz-filters {
  display: grid;
  grid-template-columns: repeat(3, 130px minmax(0, 1fr));
  gap: 9px 12px;
  align-items: center;
}

.biz-filters > label {
  font-size: 11.5px;
  color: var(--biz-muted);
  text-align: right;
}

@media (max-width: 1400px) {
  .biz-filters { grid-template-columns: repeat(2, 130px minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  .biz-form { grid-template-columns: 1fr; }
  .biz-form > label { text-align: left; }
  .biz-two { grid-template-columns: 1fr; }
  .biz-filters { grid-template-columns: 1fr; }
  .biz-filters > label { text-align: left; }
}

/* ---------- arşiv ağacı ---------- */
.biz-split { display: grid; grid-template-columns: 380px minmax(0, 1fr); gap: 12px; align-items: start; }

@media (max-width: 1100px) { .biz-split { grid-template-columns: 1fr; } }

.biz-tree { max-height: calc(100vh - 260px); overflow: auto; padding: 6px 0; }

.biz-tnode {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  cursor: pointer;
  white-space: nowrap;
  font-size: 12px;
}

.biz-tnode:hover { background: var(--biz-accent-wash); }
.biz-tnode.on { background: #dbeafe; font-weight: 600; }
.biz-tico { width: 16px; text-align: center; }
.biz-tname { overflow: hidden; text-overflow: ellipsis; }
.biz-tlock { opacity: .7; }
.biz-tcap { margin-left: auto; font-size: 10px; color: var(--biz-muted); padding-left: 8px; }

/* ---------- ilerleme çubuğu ---------- */
.biz-progress {
  height: 6px;
  background: var(--biz-line-soft);
  border-radius: 999px;
  overflow: hidden;
  min-width: 80px;
}

.biz-progress i { display: block; height: 100%; background: var(--biz-accent); }
.biz-progress i.ok { background: #16a34a; }

/* ---------- izin takvimi ---------- */
/* Takvim büyüdükçe SAYFA uzamaz: personel eklendikçe kart içindeki alan kayar, ekranın boyu
   sabit kalır. Kaydırırken gün başlıkları ve personel kolonu yerinde durur — yoksa aşağıda
   kime, sağda hangi güne bakıldığı kaybolur. Sabitlenen hücrenin arkası saydam kalamaz
   (altındaki satırlar içinden geçer), bu yüzden ikisine de zemin verilir. */
.biz-calwrap { overflow: auto; max-height: 62vh; }

.biz-cal thead th { position: sticky; top: 0; z-index: 2; }

.biz-cal td.who { position: sticky; left: 0; z-index: 1; background: var(--biz-surface); }
.biz-cal th.who { position: sticky; left: 0; z-index: 3; background: var(--biz-surface-soft); }

/* Sürüklenebilir izin hücresi (D6): tutulabildiği imleçten anlaşılır. Onaylı izinde bu
   sınıf verilmez — tutulamayan hücrenin tutulabilir görünmesi yanlış söz vermek olurdu. */
.biz-cal td.mv { cursor: grab; }

.biz-cal { border-collapse: collapse; width: 100%; }

.biz-cal th,
.biz-cal td {
  border: 1px solid var(--biz-line-soft);
  font-size: 10px;
  text-align: center;
  height: 24px;
  padding: 0;
  min-width: 24px;
}

.biz-cal th { background: var(--biz-surface-soft); font-weight: 600; }

.biz-cal th.who,
.biz-cal td.who {
  text-align: left;
  padding: 2px 8px;
  width: 190px;
  min-width: 190px;
  white-space: nowrap;
  font-size: 12px;
  background: var(--biz-surface);
  position: sticky;
  left: 0;
  z-index: 1;
}

.biz-cal .we { background: #f1f4f8; color: #94a3b8; }
.biz-cal .hol { background: #fee2e2; color: #b91c1c; font-weight: 700; }
.biz-cal .half { background: #fef3c7; color: #92400e; font-weight: 700; }
.biz-cal td.lv { background: #bfdbfe; color: #1e3a8a; font-weight: 700; }
.biz-cal td.cf { outline: 2px solid #b91c1c; outline-offset: -2px; }

.biz-legend {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  font-size: 10.5px;
  color: var(--biz-muted);
  padding: 8px 11px;
}

.biz-legend i {
  display: inline-block;
  width: 11px;
  height: 11px;
  border-radius: 2px;
  vertical-align: -1px;
  margin-right: 4px;
}

/* ---------- görev / katılımcı seçimi ---------- */
.biz-duty-list,
.biz-attendees {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-height: 260px;
  overflow-y: auto;
}

.biz-duty {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  border: 1px solid var(--biz-line);
  border-radius: 999px;
  font-size: 11.5px;
  cursor: pointer;
  background: var(--biz-surface);
}

.biz-duty.on {
  background: #dbeafe;
  border-color: #bfdbfe;
  color: #1d4ed8;
  font-weight: 600;
}

/* ---------- Sistem Sağlığı (E1 · E3) ----------
   Kanal kartları yan yana dizilir, dar ekranda alt alta iner. Anahtar–değer ızgarası
   sabit etiket sütunu kullanır: değer uzadığında etiketler kaymaz. */
.biz-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 10px;
}

.biz-kv {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 5px 10px;
  align-items: baseline;
  font-size: 12px;
}

.biz-kv > span:nth-child(odd) { color: var(--biz-muted); font-size: 11px; }

/* Panelin üstündeki kanal şeridi. Yüklenirken de aynı yüksekliği kaplar: şerit dolduğunda
   altındaki kartlar aşağı itilmez. */
.biz-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  min-height: 34px;
  padding: 4px 11px;
  margin-bottom: 10px;
  background: var(--biz-surface);
  border: 1px solid var(--biz-line);
  border-radius: var(--biz-radius);
  font-size: 11.5px;
}

/* "Bu uyarı neden gelmedi?" adımları: sol çizgi üstünde renkli noktalar. Renk tek işaret
   değildir; adımın başlığı da durumu söyler. */
.biz-steps {
  list-style: none;
  margin: 0;
  padding: 0 0 0 14px;
  border-left: 2px solid var(--biz-line);
}

.biz-steps li { position: relative; padding: 3px 0 9px 10px; }

.biz-steps li::before {
  content: '';
  position: absolute;
  left: -21px;
  top: 7px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--biz-muted);
  border: 2px solid var(--biz-surface);
}

.biz-steps li.ok::before { background: #16a34a; }
.biz-steps li.warn::before { background: #d97706; }
.biz-steps li.bad::before { background: #dc2626; }
.biz-steps li.info::before { background: #2563eb; }
.biz-steps b { display: block; font-size: 12px; }
.biz-steps small { display: block; font-size: 11px; color: var(--biz-muted); }

/* Seçili kart satırı (Şirket ve Lokasyonlar, G1). Kenarlık yerine iç gölge: satır yüksekliği
   değişmez, liste yerinden oynamaz. */
.biz-grid .rz-datatable-data tr[data-biz-selected] > td { background-color: var(--biz-accent-wash); }
.biz-grid .rz-datatable-data tr[data-biz-selected] > td:first-child { box-shadow: inset 3px 0 0 var(--biz-accent); }

/* İşin yapılacağı yer (E21): ekran adı düğmedir; altında ne yapılacağı ve kanal. Kanal rozeti
   renkten başka metinle de ayrışır (renk tek işaret değil). */
.biz-route { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.biz-route-head { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.biz-route-place.rz-button { padding: 0 2px; font-weight: 600; white-space: normal; text-align: left; }
.biz-route-channel {
  display: inline-block;
  padding: 0 6px;
  border-radius: 9px;
  font-size: 10px;
  line-height: 16px;
  white-space: nowrap;
  border: 1px solid var(--biz-line);
  color: var(--biz-muted);
  background: var(--biz-surface-soft);
}
.biz-route-channel.app { color: #1d4ed8; border-color: #bfdbfe; background: #eff6ff; }
.biz-route-channel.field { color: #047857; border-color: #a7f3d0; background: #ecfdf5; }
.biz-route-channel.outside { color: #92400e; border-color: #fde68a; background: #fffbeb; }
.biz-route-action { font-size: 11px; color: var(--biz-muted); white-space: normal; line-height: 1.35; }

/* ---------- kurumsal takvim (G7) ----------
   Ay ızgarası sabit hücre yüksekliğiyle çizilir: kayıt sayısı değişse de ızgara yerinden
   oynamaz, sığmayan kayıt "+N" olarak yazar ve gün seçilince sağdaki listede görünür. */
.biz-split-wide { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 12px; align-items: start; }

@media (max-width: 1100px) { .biz-split-wide { grid-template-columns: 1fr; } }

.biz-month {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  border-top: 1px solid var(--biz-line);
  border-left: 1px solid var(--biz-line);
}

.biz-month .dh {
  background: var(--biz-surface-soft);
  font-size: 10.5px;
  font-weight: 650;
  color: var(--biz-muted);
  padding: 4px 6px;
  border-right: 1px solid var(--biz-line);
  border-bottom: 1px solid var(--biz-line);
}

.biz-month .d {
  height: 112px;
  border-right: 1px solid var(--biz-line);
  border-bottom: 1px solid var(--biz-line);
  padding: 3px 4px;
  overflow: hidden;
  background: var(--biz-surface);
  cursor: pointer;
  min-width: 0;
}

.biz-month .d.out { background: var(--biz-surface-soft); color: #9aa5b4; }
.biz-month .d.we { background: #f8fafc; }
.biz-month .d.hol { background: #fef2f2; }
.biz-month .d.half { background: #fffbeb; }
.biz-month .d.today { box-shadow: inset 0 0 0 2px var(--biz-accent); }
.biz-month .d.sel { box-shadow: inset 0 0 0 2px #d97706; }
.biz-month .d .n { display: flex; justify-content: space-between; font-size: 10.5px; font-weight: 650; line-height: 16px; }
.biz-month .d .hn { font-size: 9.5px; color: #b91c1c; line-height: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.biz-more { font-size: 10px; color: var(--biz-accent); font-weight: 600; }

.biz-ev {
  display: block;
  width: 100%;
  font: inherit;
  font-size: 10px;
  line-height: 17px;
  height: 17px;
  border: 0;
  border-radius: 2px;
  padding: 0 4px;
  margin-top: 2px;
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
}

.biz-ev.c-veh { background: #dbeafe; color: #1e40af; }
.biz-ev.c-prs { background: #dcfce7; color: #166534; }
.biz-ev.c-cmp { background: #ede9fe; color: #5b21b6; }
.biz-ev.c-con { background: #ffedd5; color: #9a3412; }
.biz-ev.c-fin { background: #fce7f3; color: #9d174d; }
.biz-ev.c-hse { background: #fef3c7; color: #92400e; }
.biz-ev.c-doc { background: #e2e8f0; color: #334155; }

/* Renk tek işaret değildir: öngörü kesik çerçeveyle, yapılan soluk ve üstü çiziliyle, gecikmiş sol
   şeritle ayrışır. */
.biz-ev.planned { background: var(--biz-surface); outline: 1px dashed currentColor; outline-offset: -1px; }
.biz-ev.done { opacity: .55; text-decoration: line-through; }
.biz-ev.late { box-shadow: inset 3px 0 0 #b91c1c; }
.biz-ev[data-biz-focus] { outline: 2px solid #d97706; outline-offset: -1px; animation: biz-focus-flash 2.4s ease-out 1; }

.biz-legend i.biz-ev { width: 11px; height: 11px; margin: 0 4px 0 0; padding: 0; cursor: default; }
.biz-legend i.biz-ev.planned { background: var(--biz-surface); color: #64748b; }
.biz-legend i.biz-ev.done { background: #94a3b8; }
.biz-legend i.biz-ev.late { background: #e2e8f0; }

.biz-chips { display: flex; flex-wrap: wrap; gap: 5px; }

.biz-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 1px 9px;
  border: 1px solid var(--biz-line);
  border-radius: 999px;
  font: inherit;
  font-size: 11px;
  line-height: 18px;
  color: var(--biz-muted);
  background: var(--biz-surface);
  cursor: pointer;
}

.biz-chip.on { color: var(--biz-ink); border-color: #94a3b8; background: #f1f5f9; font-weight: 600; }
.biz-chip:disabled { cursor: default; opacity: .55; }
.biz-chip i.biz-ev { width: 9px; height: 9px; margin: 0; padding: 0; display: inline-block; }

.biz-overdue { padding: 6px 11px 8px; border-bottom: 1px solid var(--biz-line); background: #fff6f6; font-size: 11.5px; }
.biz-overdue > b { display: block; color: #b91c1c; margin-bottom: 3px; }

.biz-overdue-row {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr);
  gap: 6px;
  width: 100%;
  padding: 2px 0;
  border: 0;
  background: none;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.biz-overdue-row:hover { text-decoration: underline; }
.biz-overdue-row[data-biz-focus] { outline: 2px solid #d97706; }

/* Takvim kuralı düzenleyicisi */
.biz-rule { display: flex; flex-direction: column; gap: 5px; }
.biz-rule-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.biz-rule-months { display: flex; flex-wrap: wrap; gap: 4px; }

/* ---------- uygulamadan kontrol (E10) ----------
   Soru kartları saha formunun masaüstü karşılığıdır; cevap seçimi soru kartının yüksekliğini
   değiştirmez, yalnız bloklayıcı olumsuz cevapta fotoğraf düğmesi aynı satıra eklenir. */
.biz-q { border: 1px solid var(--biz-line); border-radius: 6px; padding: 8px 10px; margin-bottom: 6px; background: var(--biz-surface); }
.biz-q-text { font-size: 12.5px; margin-bottom: 6px; }
.biz-q-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; min-height: 30px; }

.biz-upload {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border: 1px dashed #94a3b8;
  border-radius: 4px;
  font-size: 12px;
  cursor: pointer;
  background: var(--biz-surface-soft);
}

.biz-upload:hover { border-color: var(--biz-accent); color: var(--biz-accent); }

/* Atamadan sonra yönlendirme: düğme ve açıklaması yan yana, üç satır sabit. */
.biz-next { display: grid; grid-template-columns: 190px 1fr; gap: 8px 12px; align-items: center; margin-top: 12px; }
.biz-next .rz-button { justify-content: flex-start; }

/* ---------- etiket yazdırma (E11) ---------- */
.biz-label-layout { display: grid; grid-template-columns: 330px minmax(0, 1fr); gap: 14px; align-items: start; }
.biz-label-preview { width: 100%; height: 62vh; border: 1px solid var(--biz-line); border-radius: var(--biz-radius); background: #e2e8f0; }

@media (max-width: 900px) { .biz-label-layout { grid-template-columns: 1fr; } }

/* ---------- varlık giriş kapıları (E18) ---------- */
.biz-gates { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.biz-gate {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  padding: 8px 11px;
  background: var(--biz-surface);
  border: 1px solid var(--biz-line);
  border-radius: 5px;
  min-height: 86px;
}
.biz-gate .rz-badge, .biz-gate .rz-button { margin-top: auto; }

@media (max-width: 1100px) { .biz-gates { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- toplu araç girişi (E14) ---------- */
/* Pencere .biz-page dışında açılır; renkler yedek değerleriyle yazılır. */
.biz-bulk-steps { display: flex; gap: 6px; list-style: none; margin: 0 0 10px; padding: 0; counter-reset: step; }
.biz-bulk-steps li {
  flex: 1;
  counter-increment: step;
  padding: 5px 10px;
  font-size: 12px;
  color: var(--biz-muted, #6b7280);
  background: var(--biz-surface-soft, #f4f7fa);
  border: 1px solid var(--biz-line, #d5dbe3);
  border-radius: 4px;
}
.biz-bulk-steps li::before { content: counter(step) ". "; font-weight: 600; }
.biz-bulk-steps li.on { color: var(--biz-accent, #2563eb); border-color: var(--biz-accent, #2563eb); background: var(--biz-accent-wash, #eff6ff); }
.biz-bulk-steps li.done { color: #15803d; border-color: #86efac; background: #f0fdf4; }

/* Denetim rozeti sabit genişlikte: metin değişince satır ve kolon oynamaz. */
.biz-bulk-check { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.biz-row-bad > td { background: #fef2f2 !important; }
.biz-row-done > td { background: #f0fdf4 !important; }
.biz-row-muted > td { color: var(--biz-muted, #6b7280); }

.biz-sect { font-size: 12px; font-weight: 600; color: var(--biz-muted, #6b7280); text-transform: uppercase; letter-spacing: .03em; margin-bottom: 4px; }
.biz-chk { display: flex; align-items: center; gap: 6px; padding: 3px 0; }

/* ---------- zimmet formu (E7) ---------- */
/* Önizleme sabit yükseklikte: form değişince pencere oynamaz. */
.biz-form-preview { display: block; width: 100%; height: 60vh; border: 1px solid var(--biz-line, #d5dbe3); border-radius: 4px; background: #e2e8f0; }

/* ---------- arıza talepleri (G3) ---------- */
.biz-inline { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
/* Pano: kolonlar sabit genişlikte, kart eklenip çıktıkça pano yana kaymaz. */
.biz-kanban { display: grid; grid-template-columns: repeat(5, minmax(210px, 1fr)); gap: 10px; padding: 10px; overflow-x: auto; }
.biz-kcol { background: var(--biz-surface-soft, #f4f7fa); border: 1px solid var(--biz-line, #d5dbe3); border-radius: 6px; padding: 8px; min-height: 180px; }
.biz-kcol-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; font-size: 12.5px; }
.biz-kitem { background: var(--biz-surface, #fff); border: 1px solid var(--biz-line, #d5dbe3); border-radius: 5px; padding: 7px 9px; margin-bottom: 7px; cursor: pointer; }
.biz-kitem:hover { border-color: var(--biz-accent, #2563eb); }
.biz-kitem .t { font-weight: 600; font-size: 12.5px; margin-bottom: 2px; }
.biz-kitem .m { display: flex; flex-wrap: wrap; gap: 4px; margin: 5px 0 3px; }
.biz-kitem.late { border-left: 3px solid #dc2626; }
.biz-kitem.focus { box-shadow: 0 0 0 2px var(--biz-accent, #2563eb); }
.biz-kempty { text-align: center; padding: 10px 0; }

/* ---------- tesis ve abonelikler (G3) ---------- */
/* Son altı ayın tüketimi: sabit genişlikte küçük çubuklar, son ay koyu. */
.biz-spark { display: inline-flex; align-items: flex-end; gap: 2px; height: 22px; vertical-align: middle; }
.biz-spark i { display: block; width: 7px; background: #93c5fd; border-radius: 1px; }
.biz-spark i.last { background: var(--biz-accent, #2563eb); }

/* ---------- görev–belge matrisi (G5.1) ---------- */
/* Hücreler sabit genişlikte; ilk kolon ve başlık kayarken yerinde kalır. */
.biz-mx-wrap { overflow: auto; max-height: 560px; }
.biz-mx { border-collapse: separate; border-spacing: 0; table-layout: fixed; width: auto; }
.biz-mx th, .biz-mx td { border-right: 1px solid var(--biz-line, #d5dbe3); border-bottom: 1px solid var(--biz-line, #d5dbe3); height: 28px; text-align: center; padding: 0 4px; font-size: 11.5px; }
.biz-mx th { position: sticky; top: 0; background: var(--biz-surface-soft, #f4f7fa); z-index: 2; height: 74px; vertical-align: bottom; padding-bottom: 4px; width: 92px; white-space: normal; line-height: 1.2; font-weight: 600; }
.biz-mx th.who, .biz-mx td.who { width: 220px; text-align: left; position: sticky; left: 0; background: var(--biz-surface, #fff); z-index: 1; padding: 2px 8px; }
.biz-mx th.who { z-index: 3; background: var(--biz-surface-soft, #f4f7fa); }
.biz-mx td.ok { color: #15803d; font-weight: 700; cursor: pointer; }
.biz-mx td.soon { background: #fffbeb; color: #92400e; font-weight: 700; cursor: pointer; }
.biz-mx td.miss { background: #fee2e2; color: #b91c1c; font-weight: 700; cursor: pointer; }
.biz-mx td.pend { background: #eff6ff; color: #1d4ed8; cursor: pointer; }
.biz-mx td.na { color: #c0c8d2; }
.biz-mx-legend { display: inline-flex; gap: 10px; font-size: 11px; }
.biz-mx-legend .ok { color: #15803d; }
.biz-mx-legend .soon { color: #92400e; }
.biz-mx-legend .miss { color: #b91c1c; }
.biz-mx-legend .pend { color: #1d4ed8; }
.biz-mx-legend .na { color: #9aa4b2; }

/* ---------- giriş / çıkış şablonu (G5.2) ---------- */
.biz-steps { width: 100%; border-collapse: collapse; }
.biz-steps th, .biz-steps td { border-bottom: 1px solid var(--biz-line, #d5dbe3); padding: 3px 4px; font-size: 11.5px; vertical-align: middle; }
.biz-steps th { position: sticky; top: 0; background: var(--biz-surface-soft, #f4f7fa); text-align: left; font-weight: 600; z-index: 1; }
.biz-steps td.num { text-align: center; color: var(--biz-muted, #6b7280); }
