/* Tabler üzerine proje özel ince ayarlar */

/* Başlıktaki durum rozetleri başlık boyutunu almasın */
.page-title .badge {
  font-size: .75rem;
  font-weight: 600;
  vertical-align: middle;
  padding: .3em .6em;
}

.table td.text-end,
.table th.text-end,
.num {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* Uzun metinli hücreler sayı sütunlarını sıkıştırmasın */
.cell-wrap {
  white-space: normal;
  min-width: 12rem;
}

/* crispy-forms'un eklediği asteriski Tabler stiliyle uyumlu yap */
.asteriskField {
  color: var(--tblr-danger);
  margin-left: .15rem;
}

/* Etiketi olmayan onay kutularını yanındaki alanlarla aynı hizaya getir */
.form-check-row {
  min-height: calc(2.5rem + 1.5rem);
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  column-gap: 1.25rem;
  padding-bottom: 1.25rem;
}

.form-check-row .form-check {
  margin-bottom: .45rem;
}

/* Kart içindeki kategori ara toplam satırları */
.table .row-group td {
  background: var(--tblr-bg-surface-secondary);
  font-weight: 600;
}

/* Tanım listeleri: etiket/değer çiftleri */
.dl-compact dt {
  font-weight: normal;
  color: var(--tblr-secondary);
}

.dl-compact dd {
  margin-bottom: .5rem;
}

.htmx-request.htmx-indicator,
.htmx-request .htmx-indicator {
  display: inline-block;
}

.htmx-indicator {
  display: none;
}

/* Yeniden hesaplanırken önizlemeyi hafifçe soldur */
#preview.htmx-request,
.htmx-request #preview {
  opacity: .55;
  transition: opacity .15s;
}

@media (max-width: 767.98px) {
  .page-header .btn-list {
    flex-wrap: wrap;
  }

  .card-table td,
  .card-table th {
    padding-left: .75rem;
    padding-right: .75rem;
  }
}

/* Tam genişlikteki basit formlarda alanlar yan yana dizilsin */
.crud-grid {
  display: grid;
  grid-template-columns: 1fr;
  column-gap: 1.25rem;
}
.crud-grid > div:has(textarea),
.crud-grid > div:has(.form-check) {
  grid-column: 1 / -1;
}

@media (min-width: 768px) {
  .crud-grid.crud-grid-2 { grid-template-columns: repeat(2, 1fr); }
}
.crud-grid.crud-grid-fill { grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr)); }

/* Maliyet formu: canlı hesap paneli ekranda sabit, kendi içinde kayar */
@media (min-width: 1200px) {
  .estimate-side { position: sticky; top: 1rem; }
  .estimate-side #preview { max-height: calc(100vh - 11rem); overflow-y: auto; }
}

/* Kompakt form: maliyet hesabı gibi çok alanlı ekranlar */
.compact-form .mb-3 { margin-bottom: .5rem !important; }
.compact-form .form-label { font-size: .75rem; margin-bottom: .2rem; color: var(--tblr-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.compact-form .form-control,
.compact-form .form-select { padding-top: .3rem; padding-bottom: .3rem; font-size: .8125rem; }
.compact-form .form-check-row { min-height: calc(1.9rem + 1.1rem); padding-bottom: .5rem; }
.compact-form .form-check-row .form-check { margin-bottom: .35rem; }
.compact-form .invalid-feedback { font-size: .75rem; }
.form-section-title {
  display: flex;
  align-items: center;
  gap: .4rem;
  margin: 1rem 0 .5rem;
  padding-bottom: .35rem;
  border-bottom: 1px solid var(--tblr-border-color);
  font-size: .75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--tblr-secondary);
}
.form-section-title:first-child { margin-top: 0; }
.form-section-title .text-transform-none { text-transform: none; letter-spacing: 0; }
.compact-form .is-muted { opacity: .45; }
.compact-form [data-formset] .table th { font-size: .7rem; color: var(--tblr-secondary); padding-left: 0; }
.compact-form [data-formset] .table td { padding-left: 0; }

/* Maliyet: canlı hesap paneli ekranda sabit, kendi içinde kayar */
.estimate-side #preview .h2 { font-size: 1.15rem; }

/* --- Grafikler (templates/partials/charts) ------------------------------------
   Renkler dataviz referans paletinden; açık/koyu tema için ayrı seçilmiş adımlar.
   Seri rengi sabit sırayla atanır: 1 mavi, 2 turuncu. Sapma: mavi (altında) ↔ kırmızı (aşım). */
:root {
  --viz-s1: #2a78d6;
  --viz-s2: #eb6834;
  --viz-pos: #e34948;
  --viz-neg: #2a78d6;
  --viz-grid: #e1e0d9;
  --viz-base: #c3c2b7;
  --viz-track: rgba(11, 11, 11, .04);
}
[data-bs-theme="dark"] {
  --viz-s1: #3987e5;
  --viz-s2: #d95926;
  --viz-pos: #e66767;
  --viz-neg: #3987e5;
  --viz-grid: #2c2c2a;
  --viz-base: #383835;
  --viz-track: rgba(255, 255, 255, .05);
}
.viz-s1 { background: var(--viz-s1); }
.viz-s2 { background: var(--viz-s2); }

.viz-legend { display: flex; flex-wrap: wrap; gap: .25rem 1rem; margin-bottom: .75rem; font-size: .8125rem; color: var(--tblr-secondary); }
.viz-legend-item { display: inline-flex; align-items: center; gap: .4rem; }
.viz-swatch { width: .75rem; height: .75rem; border-radius: 3px; display: inline-block; }

/* Yatay çubuklar */
.viz-bars { display: grid; gap: .45rem; }
.viz-bar-row { display: grid; grid-template-columns: minmax(7rem, 28%) 1fr auto; align-items: center; gap: .75rem; font-size: .8125rem; }
.viz-bar-label { color: var(--tblr-body-color); }
.viz-bar-value { min-width: 5.5rem; text-align: right; }
.viz-bar-track { height: .75rem; background: var(--viz-track); border-radius: 4px; display: flex; overflow: hidden; }
.viz-bar { height: 100%; border-radius: 0 4px 4px 0; min-width: 2px; }
.viz-stack { gap: 2px; background: none; }
.viz-stack .viz-bar { border-radius: 0; }
.viz-stack .viz-bar:last-child { border-radius: 0 4px 4px 0; }
.viz-bar-row:hover .viz-bar { filter: brightness(1.1); }
.viz-bar-row:hover { background: var(--viz-track); border-radius: 4px; }

/* Dikey yığılmış sütunlar */
.viz-columns { display: grid; grid-template-columns: auto 1fr; gap: .5rem; }
.viz-axis { display: flex; flex-direction: column; justify-content: space-between; height: 12rem; font-size: .6875rem; color: var(--tblr-secondary); text-align: right; font-variant-numeric: tabular-nums; transform: translateY(-.4rem); }
.viz-plot { position: relative; display: flex; align-items: flex-end; gap: .5rem; height: 12rem; border-bottom: 1px solid var(--viz-base); }
.viz-grid { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: space-between; pointer-events: none; }
.viz-grid span { border-top: 1px solid var(--viz-grid); }
.viz-grid span:last-child { border-top: 0; }
.viz-col { position: relative; flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; max-width: 3.5rem; }
.viz-col-stack { width: 60%; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; gap: 2px; }
.viz-col-seg { width: 100%; min-height: 2px; }
.viz-col-stack .viz-col-seg:first-child { border-radius: 4px 4px 0 0; }
.viz-col-label { position: absolute; bottom: -1.4rem; font-size: .6875rem; color: var(--tblr-secondary); white-space: nowrap; }
.viz-col:hover { background: var(--viz-track); border-radius: 4px 4px 0 0; }
.viz-columns + .viz-spacer, .viz-columns { margin-bottom: 1.6rem; }

/* Sıfır merkezli küçük çubuk (tablo hücresi) */
.viz-div { display: flex; align-items: center; width: 8rem; height: .75rem; }
.viz-div-half { flex: 1; display: flex; height: 100%; }
.viz-div-mid { width: 1px; height: 1rem; background: var(--viz-base); }
.viz-div-bar { height: 100%; }
.viz-div-bar.viz-pos { background: var(--viz-pos); border-radius: 0 4px 4px 0; }
.viz-div-bar.viz-neg { background: var(--viz-neg); border-radius: 4px 0 0 4px; }
.viz-div-bar.is-clipped.viz-pos { border-right: 2px dashed var(--tblr-body-color); }
.viz-div-bar.is-clipped.viz-neg { border-left: 2px dashed var(--tblr-body-color); }

@media (max-width: 575.98px) {
  .viz-bar-row { grid-template-columns: 1fr auto; }
  .viz-bar-row .viz-bar-track { grid-column: 1 / -1; grid-row: 2; }
  .viz-col-label { display: none; }
}
.viz-pos-bg { background: var(--viz-pos); }
.viz-neg-bg { background: var(--viz-neg); }
.compact-form .insert-table td { min-width: 4.5rem; }
.compact-form .insert-table td:first-child { min-width: 11rem; }
.compact-form .insert-table td:nth-child(6) { min-width: 10rem; }
.form-section-title .btn { text-transform: none; letter-spacing: 0; font-weight: 500; }

/* Tanıtım sayfası */
.landing-hero { background: linear-gradient(180deg, var(--tblr-primary-lt, rgba(32,107,196,.06)) 0%, transparent 100%); }
.py-6 { padding-top: 4rem !important; padding-bottom: 4rem !important; }

/* Çerez bildirimi: sayfanın altında, içeriği kapatmadan */
.cookie-notice { position: fixed; inset-inline: 1rem; bottom: 1rem; z-index: 1080; max-width: 46rem; margin-inline: auto; }
.legal h3 { margin-top: 1.5rem; }
.cookie-notice-text { flex: 1 1 0; }
.legal-page { max-width: 54rem; }
.legal p, .legal li { line-height: 1.65; }
.auth-card .btn + p, .auth-card form + p { margin-top: 1rem; }
