/* ==========================================================================
   yazdir.css - Tarayicidan yazdirma (Ctrl+P) stil dosyasi
   Limak Cimento Proje Yonetim Sistemi (PYS)  ·  v1.0.0

   Sunucu tarafi PDF (ReportLab) resmi/imzali cikti icindir. Bu dosya ise
   kullanicinin ekrandaki sayfayi hizlica kagida/PDF'e dokmesi icindir.
   Ikisi BIRBIRININ YEDEGI DEGILDIR; bu yuzden yazdirma ciktisinin ustune
   "Ekran ciktisidir" ibaresi basilir (bkz. .yazdir-ibare).

   base.html icinde:  <link rel="stylesheet" href="{{ url_for('static',
        filename='css/yazdir.css') }}" media="print">
   `media="print"` sayesinde ekran stiliyle CARPISMAZ ve ekranda hic yuklenmez.
   ========================================================================== */

/* --------------------------------------------------------------- 1) SAYFA */
/* A4 dikey varsayilan. Kenar bosluklari kurumsal evrak normu: 15mm/12mm. */
@page {
  size: A4 portrait;
  margin: 15mm 12mm 16mm 12mm;
}

/* Carsaf tablolar icin yatay sayfa. Kullanim:
   <body class="yazdir-yatay"> ya da yalnizca ilgili bolume .sayfa-yatay */
@page yatay {
  size: A4 landscape;
  margin: 12mm 10mm 14mm 10mm;
}
.sayfa-yatay { page: yatay; }

/* Ilk sayfada baslik blogu tam gorunsun diye ust bosluk biraz daha genis */
@page :first {
  margin-top: 18mm;
}

/* NOT: @page icindeki @top-center / @bottom-right marj kutulari ve
   `counter(page)` Chrome/Edge'de HENUZ CALISMAZ (yalniz Prince/WeasyPrint).
   Tarayici zaten kendi ustbilgi/altbilgisinde sayfa numarasi basar; sayfa
   numarasini CSS ile uretmeye CALISMA -- calismayan bir sey yazmis olursun.
   Numarali/imzali cikti gerekiyorsa sunucu tarafi PDF (ReportLab) kullanilir. */

/* --------------------------------------------------- 2) GENEL SIFIRLAMA */
@media print {

  /* 2.1 Koyu tema kagida ASLA basilmaz: siyah zemin hem okunmaz hem toner yer.
     Tema degiskenlerini acik palete geri cevirir. */
  :root,
  :root[data-tema="koyu"],
  html[data-tema="koyu"] body {
    --renk-zemin: #ffffff;
    --renk-yuzey: #ffffff;
    --renk-yuzey-2: #f5f7fa;
    --renk-metin: #111111;
    --renk-metin-soluk: #444444;
    --renk-cizgi: #999999;
    --renk-vurgu: #1b3a6b;
    color-scheme: light;
  }

  html, body {
    background: #ffffff !important;
    color: #111111 !important;
    /* Kagit boyutuna gore mm/pt kullan; ekran px'i yaziciya gore anlamsizdir */
    font-size: 9pt;
    line-height: 1.35;
    margin: 0;
    padding: 0;
    /* Turkce metin bolmesi: tarayicilarin tr sozlugu vardir, <html lang="tr">
       ile birlikte calisir. Tablo hucrelerinde kapatiyoruz (asagida). */
    hyphens: none;
  }

  /* 2.2 Arka plan renkleri/zebra kaybolmasin. `economy` varsayilani zemin
     dolgularini SILER -> zebra ve statu rozetleri beyaza doner.
     print-color-adjust Baseline (2025-05); eski Chrome/Edge icin -webkit- sart. */
  body, table, thead, tr, th, td, .rozet, .kpi, .rag {
    -webkit-print-color-adjust: exact;
            print-color-adjust: exact;
  }

  /* 2.3 Bagimsiz cizgi kalinliklari: 0.5pt altina inme, lazer yazici yutar */
  * { box-shadow: none !important; text-shadow: none !important; }
}

/* ------------------------------------------ 3) EKRANA AIT OGELERI GIZLE */
@media print {
  .yan-menu, .ust-cubuk, .alt-cubuk, .arac-cubugu,
  .filtre-paneli, .sayfalama, .bildirim-cani, .avatar-menu,
  .buton, button, .dugme, input[type="button"], input[type="submit"],
  .sekme-cubugu, .arama-kutusu, .yardim-baloncugu, .toast,
  .modal, .modal-arka, .kaydirma-yukari, nav, aside,
  [data-yazdirma="gizle"] {
    display: none !important;
  }

  /* Icerik alani tam genislige yayilsin (yan menu payi kalkti) */
  .icerik, main, .govde {
    margin: 0 !important;
    padding: 0 !important;
    width: auto !important;
    max-width: none !important;
    float: none !important;
  }

  /* Ekranda kaydirilan kutular kagitta kesilmesin */
  .kaydir, .tablo-sarmal, .asiri-akis {
    overflow: visible !important;
    height: auto !important;
    max-height: none !important;
  }
}

/* ------------------------------------------------ 4) YAZDIRMAYA OZEL BLOK */
@media print {
  /* Ekranda gizli, yalniz kagitta gorunen ustbilgi/altbilgi ve ibare */
  .yalniz-yazdirma { display: block !important; }

  .yazdir-baslik {
    border-bottom: 1.5pt solid #1b3a6b;
    margin-bottom: 6pt;
    padding-bottom: 4pt;
  }
  .yazdir-baslik h1 { font-size: 15pt; margin: 0; color: #1b3a6b; }
  .yazdir-baslik .alt { font-size: 8.5pt; color: #444; margin-top: 2pt; }

  /* FILTRE OZETI: raporun hangi suzgeclerle uretildigi. PDF'te oldugu gibi
     yazdirmada da ZORUNLU -- yoksa cikti yanlis yorumlanir. */
  .yazdir-filtre {
    background: #e8edf5;
    border: 0.5pt solid #b9c4d4;
    padding: 4pt 6pt;
    font-size: 7.5pt;
    margin-bottom: 6pt;
    columns: 3;
    column-gap: 10pt;
    break-inside: avoid;
  }
  .yazdir-filtre b { color: #1b3a6b; }

  .yazdir-ibare {
    font-size: 6.5pt;
    color: #666;
    border-top: 0.5pt solid #999;
    margin-top: 8pt;
    padding-top: 3pt;
  }
}

/* ----------------------------------------------------------- 5) TABLOLAR */
@media print {
  table {
    width: 100% !important;
    border-collapse: collapse;
    font-size: 7.5pt;
    /* Sayi sutunlarinda sekmeli rakam hizasi: rakamlar alt alta gelir */
    font-variant-numeric: tabular-nums;
  }

  /* Baslik satiri HER sayfada tekrarlansin. Bunun calismasi icin baslik
     satirlarinin gercek <thead> icinde olmasi ZORUNLUDUR; <tbody>'deki bir
     "baslik gibi gorunen" satir tekrarlanmaz.
     TUZAK: thead'e `position: sticky` verilmisse Chrome tekrarlamayi
     BOZAR -> yazdirmada sticky'yi kaldir. */
  thead { display: table-header-group; }
  tfoot { display: table-footer-group; }
  thead th { position: static !important; }

  th, td {
    border: 0.4pt solid #b9c4d4;
    padding: 2pt 3pt;
    vertical-align: top;
    hyphens: none;              /* proje kodlari tireyle bolunmesin */
    word-break: normal;
    overflow-wrap: anywhere;    /* cok uzun kelime hucreyi tasirmasin */
  }
  thead th {
    background: #1b3a6b !important;
    color: #ffffff !important;
    text-align: left;
    font-weight: 700;
  }

  /* Hizalama kurallari (Turk kurumsal rapor normu):
     sayi SAGA, tarih ORTAYA, metin SOLA */
  td.sayi, th.sayi { text-align: right;  font-variant-numeric: tabular-nums; }
  td.tarih, th.tarih { text-align: center; white-space: nowrap; }
  td.metin, th.metin { text-align: left; }

  /* Zebra: ekranda :nth-child kullaniliyorsa kagitta da korunur */
  tbody tr:nth-child(even) td { background: #f5f7fa !important; }

  /* Satir sayfa ortasinda ikiye BOLUNMESIN */
  tr, img, figure, .kart, .kpi, .imza-blok, .grafik {
    break-inside: avoid;
    page-break-inside: avoid;   /* eski Chrome/Edge icin */
  }

  /* Alt toplam satiri */
  tfoot td, tr.toplam td {
    background: #dee5ef !important;
    font-weight: 700;
    border-top: 0.8pt solid #1b3a6b;
  }

  /* Baslik ile tablosu ayri sayfaya dusmesin */
  h1, h2, h3, caption { break-after: avoid; page-break-after: avoid; }
  h2, h3 { break-before: auto; }

  /* Yeni sayfada baslamasi istenen bolum */
  .yeni-sayfa { break-before: page; page-break-before: always; }
}

/* -------------------------------------------------- 6) GRAFIK VE GORSEL */
@media print {
  svg, img { max-width: 100%; height: auto; }

  /* Kendi SVG grafiklerimiz: koyu temada beyaz olan metin/cizgiler kagitta
     kaybolur. Yazdirmada acik palete zorla (SVG icindeki degiskenler
     currentColor / CSS degiskeni uzerinden tanimlandigi icin calisir). */
  svg.grafik {
    --g-zemin: #ffffff;
    --g-metin: #111111;
    --g-cizgi: #999999;
    --g-vurgu: #1b3a6b;
  }
  svg.grafik text { fill: #111111 !important; }
  svg.grafik .eksen, svg.grafik .izgara { stroke: #999999 !important; }

  /* Gantt: yatay kaydirma yerine kagida sigmasi icin olceklenir */
  .gantt { overflow: visible !important; }
}

/* ------------------------------------------------------ 7) BAGLANTILAR */
@media print {
  a { color: #111111; text-decoration: none; }

  /* Dis baglantinin adresini yaninda goster (kagitta tiklanamaz).
     Ic baglantilarda (/ ile baslayan) ADRES BASILMAZ -- ic yol yapisini
     kagida dokmek gereksiz bilgi sizintisidir. */
  a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 6.5pt;
    color: #555;
    word-break: break-all;
  }
  a[href^="/"]::after, a[href^="#"]::after, a[href^="javascript"]::after {
    content: "";
  }
}

/* --------------------------------------------------------- 8) IMZA ALANI */
@media print {
  .imza-blok {
    display: table;
    width: 100%;
    margin-top: 12pt;
    table-layout: fixed;
  }
  .imza-blok .imza {
    display: table-cell;
    text-align: center;
    font-size: 8pt;
    padding: 0 6pt;
  }
  .imza-blok .imza .unvan { font-weight: 700; color: #444; font-size: 7.5pt; }
  .imza-blok .imza .cizgi {
    border-top: 0.5pt solid #999;
    margin-top: 26pt;
    padding-top: 3pt;
  }
}


/* ==========================================================================
   9) TASARIM SISTEMI SOZLUGU ILE UYUM   (static/css/temel.css v1.0.0)
   --------------------------------------------------------------------------
   Yukaridaki bolumler genel yazdirma kurallarini kurar. Bu bolum, uygulamanin
   sablonlarinda GERCEKTEN kullanilan sinif ve jeton adlarini baglar.
   Kaynak: _analiz/faz1/tasarim_demo.html (dogrulanmis bilesen katalogu).
   ========================================================================== */

/* A4 YATAY: proje listesi, Gantt ve detayli raporlar cok sutunludur; dikey
   sayfada sutunlar kesilir. Yukaridaki A4 portrait tanimini bilerek ezer.
   Tek sutunlu bir form/onay ciktisi gerekirse sayfaya .yazdirma-dikey
   sinifi verilir ve sunucu tarafi PDF (ReportLab) kullanilir. */
@page { size: A4 landscape; margin: 12mm 10mm 14mm; }
@page :first { margin-top: 16mm; }

@media print {

  /* 9.1 Tema jetonlari: koyu tema kagida ASLA basilmaz.
     Bu adlar temel.css icindeki gercek jetonlardir. */
  :root,
  :root[data-tema="koyu"],
  :root[data-tema="sistem"] {
    color-scheme: light;
    --renk-yuzey-1:#fff; --renk-yuzey-2:#fff; --renk-yuzey-3:#f2f2f2;
    --renk-yuzey-hover:#fff; --renk-yuzey-secili:#f2f2f2;
    --renk-yuzey-ters:#000; --renk-metin-ters:#fff;
    --renk-metin-1:#000; --renk-metin-2:#222; --renk-metin-3:#444;
    --renk-kenar:#999; --renk-kenar-guclu:#666;
    --renk-vurgu:#000; --renk-vurgu-guclu:#000;
    --renk-vurgu-zemin:#f2f2f2; --renk-vurgu-uzeri:#000;
    --renk-basari:#000; --renk-uyari:#000; --renk-hata:#000; --renk-bilgi:#000;
    --renk-notr:#000;
    --renk-basari-zemin:#fff; --renk-uyari-zemin:#fff;
    --renk-hata-zemin:#fff; --renk-bilgi-zemin:#fff; --renk-notr-zemin:#fff;
    --golge-1:none; --golge-2:none; --golge-3:none;
  }

  /* 9.2 Ekranda kalan, kagida basilmayan ogeler (demo sozlugu) */
  .ust-cubuk, .yan-menu, .bildirim-yuvasi, .bildirim-merkez, .sekmeler,
  .sayfalama, .btn, .acilir-menu, .sutun-yonetici, .icerige-atla,
  .tkv-btn, .cip-sil, .agac-btn, .takvim, .perde, .js-yok, .altbilgi,
  .yazdirma-yok, [hidden] {
    display: none !important;
  }

  /* 9.3 Yalniz kagitta gorunen kunye */
  .yazdirma-var { display: block !important; }
  .yazdirma-kunye {
    display: block !important;
    margin-bottom: 6mm; padding-bottom: 3mm;
    border-bottom: 1.5pt solid #000; font-size: 9pt;
  }
  /* Kunye basligi <h1> DEGILDIR (sayfanin tek h1'i icerikte kalir); gorsel
     olarak baslik gibi davranmasi icin bicim burada verilir. */
  .yazdirma-kunye h1,
  .yazdirma-kunye .yazdirma-kunye-ad { font-size: 15pt; font-weight: 700;
                                       margin: 0 0 2mm; }

  /* 9.4 Yerlesim: izgara/yapiskan kalkar, icerik tam genislige yayilir */
  .uygulama { display: block !important; }
  main { padding: 0 !important; }
  .kart, .tablo-kabi, .kpi {
    border: 1pt solid #999 !important; box-shadow: none !important;
    break-inside: avoid; page-break-inside: avoid;
  }
  .kart-basi, .kart-alt { background: #f2f2f2 !important; }

  /* 9.5 Tablolar: baslik her sayfada tekrar etsin, satir bolunmesin.
     `position: sticky` kalirsa Chrome thead tekrarini yapmaz - static'e alinir. */
  .tablo-kabi { overflow: visible !important; max-height: none !important;
                border: 0 !important; }
  .tablo { width: 100% !important; font-size: 9pt; }
  .tablo thead { display: table-header-group; }
  .tablo tfoot { display: table-footer-group; }
  .tablo thead th {
    position: static !important;
    background: #e8e8e8 !important; color: #000 !important;
    border-bottom: 1pt solid #000 !important;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  .tablo tr { break-inside: avoid; page-break-inside: avoid; }
  .tablo td, .tablo th { border-bottom: .5pt solid #bbb !important;
                         padding: 2mm 2.5mm; }
  .tablo-donuk td:first-child, .tablo-donuk th:first-child { position: static !important; }
  .tablo .islem { display: none !important; }

  /* 9.6 Rozet: renk yerine cerceve + metin (siyah-beyaz yazicida da okunur) */
  .rozet {
    border: .7pt solid #000 !important; background: #fff !important;
    color: #000 !important; font-weight: 600;
  }
  .rozet .nokta { border: .7pt solid #000; background: transparent !important; }

  /* 9.7 Agac girintisi kagitta da korunur (renkli sol seritler basilmaz) */
  .tablo tr[data-seviye="1"] td:first-child,
  .tablo tr[data-seviye="2"] td:first-child,
  .tablo tr[data-seviye="3"] td:first-child { box-shadow: none !important; }
  .tablo tr[data-seviye="1"] .agac::before { content: "- "; }
  .tablo tr[data-seviye="2"] .agac::before { content: "-- "; }
  .tablo tr[data-seviye="3"] .agac::before { content: "--- "; }

  /* 9.8 Diger */
  h1, h2, h3, h4 { break-after: avoid; page-break-after: avoid; }
  .sayfa-kes { break-before: page; page-break-before: always; }
  .grafik-lejant { break-inside: avoid; }
  .iskelet { display: none !important; }
  svg { max-width: 100% !important; }
}
