/* Kollektör oluşturucu — bağımsız uygulama */
.product-cart-buttons.nv-teklif-satir .nv-kfg-btn{display:flex;align-items:center;justify-content:center;width:100%;height:48px;border:1px solid #929627;color:#5f6116;background:#fff;border-radius:4px;font-weight:600}
.product-cart-buttons.nv-teklif-satir .nv-kfg-btn:hover{background:#f3f4e4}
/* konfigüratör */
.nv-kfg{margin:18px 0 26px;padding:20px;border:1px solid #e3e3df;border-radius:8px;background:#fff}
.nv-kfg .nv-kfg-ust{margin:0 0 6px;font-size:14px;line-height:1.7;color:#5f6156}
.nv-kfg-adim{display:flex;align-items:center;gap:10px;margin:22px 0 12px;font-size:17px;font-weight:700;color:#1d1d1b;border-bottom:1px solid #ecece7;padding-bottom:8px}
.nv-kfg-adim em{font-style:normal;font-weight:400;font-size:14px;color:#8a8c80}
.nv-kfg-adim span{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#929627;color:#fff;font-size:14px;font-weight:700;flex:0 0 26px}
.nv-kfg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px 16px}
.nv-kfg-grid label,.nv-kfg-not{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:#3f4137}
.nv-kfg-not{margin-top:14px}
.nv-kfg select,.nv-kfg input[type=number],.nv-kfg textarea{width:100%;padding:9px 10px;border:1px solid #d9d9d2;border-radius:4px;font-size:14px;font-weight:400;color:#1d1d1b;background:#fff;font-family:inherit}
.nv-kfg select:focus,.nv-kfg input:focus,.nv-kfg textarea:focus{outline:0;border-color:#929627;box-shadow:0 0 0 2px rgba(146,150,39,.15)}
.nv-kfg-tablo-kap{overflow-x:auto}
table.nv-kfg-brans{width:100%;border-collapse:collapse;font-size:13px}
table.nv-kfg-brans th{text-align:left;font-weight:600;color:#5f6156;padding:6px 8px;border-bottom:1px solid #ecece7;white-space:nowrap}
table.nv-kfg-brans td{padding:5px 8px;vertical-align:middle}
table.nv-kfg-brans td:nth-child(2){width:88px}
table.nv-kfg-brans td:nth-child(5){width:110px}
table.nv-kfg-brans td:last-child{width:40px;text-align:center}
.nv-kfg .b-sil{width:30px;height:30px;line-height:1;border:1px solid #e0cfcf;background:#fff;color:#a04141;border-radius:4px;cursor:pointer;font-size:13px;padding:0}
.nv-kfg .b-sil:hover{background:#fbf1f1;border-color:#c99}
.nv-kfg-arac{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px}
.nv-kfg-ekle{padding:9px 16px;border:1px dashed #929627;background:#fafaf5;color:#5f6116;border-radius:4px;font-size:13px;font-weight:600;cursor:pointer}
.nv-kfg-ekle:hover{background:#f3f4e4}
.nv-kfg-toplam{font-size:13px;color:#5f6156}
.nv-kfg-ops{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px 14px;border:0;padding:0;margin:0}
.nv-kfg-ops label{display:flex;align-items:center;gap:8px;font-size:13px;color:#3f4137;font-weight:400;cursor:pointer}
.nv-kfg-ops input{width:16px;height:16px;accent-color:#929627}
.nv-kfg-uyari p{margin:0 0 8px;padding:10px 14px;border-radius:4px;font-size:13px;line-height:1.6}
.nv-kfg-uyari .nv-kfg-dikkat{background:#fdf6ec;border-left:3px solid #d99a2b;color:#7a5a17}
.nv-kfg-uyari .nv-kfg-tamam{background:#f4f7ec;border-left:3px solid #7a9b3a;color:#4b6120}
.nv-kfg-ozet{background:#f7f7f3;border:1px solid #ecece7;border-radius:6px;padding:14px 16px}
.nv-kfg-metin{margin:0;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.75;color:#1d1d1b;background:none;border:0;padding:0}
.nv-kfg-btn{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.nv-kfg-btn>*{display:inline-flex;align-items:center;justify-content:center;height:46px;padding:0 20px;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none}
.nv-kfg-wa{background:#25d366;color:#fff;border:1px solid #25d366}
.nv-kfg-wa:hover{background:#1eb855;color:#fff}
.nv-kfg-kopya{background:#fff;border:1px solid #d9d9d2;color:#3f4137;font-family:inherit}
.nv-kfg-kopya:hover{background:#f7f7f3}
.nv-kfg-urun{background:#002850;color:#fff;border:1px solid #002850}
.nv-kfg-urun:hover{background:#013c74;color:#fff}
.nv-kfg-dip{margin:12px 0 0;font-size:12.5px;line-height:1.7;color:#8a8c80}
.nv-gizle{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.nv-kfg{padding:14px}
table.nv-kfg-brans thead{display:none}
table.nv-kfg-brans,table.nv-kfg-brans tbody,table.nv-kfg-brans tr,table.nv-kfg-brans td{display:block;width:100%}
table.nv-kfg-brans tr{border:1px solid #ecece7;border-radius:6px;padding:8px;margin-bottom:10px;position:relative}
table.nv-kfg-brans td{padding:4px 0;width:auto!important}
table.nv-kfg-brans td::before{content:attr(data-b);display:block;font-size:11px;font-weight:600;color:#8a8c80;margin-bottom:3px}
table.nv-kfg-brans td:last-child{position:absolute;top:6px;right:6px;width:auto!important;padding:0}
table.nv-kfg-brans td:last-child::before{display:none}
.nv-kfg-btn>*{width:100%}
/* oluşturucu: aşama yolu, çizim, seri ekleme */
.nv-kfg-yol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:16px 0 14px;padding:0;border-top:1px solid #ecece7;padding-top:16px}
.nv-kfg-yol li{flex:1 1 140px;padding:9px 12px;border:1px solid #e3e3df;border-radius:4px;background:#fafaf5;font-size:13px;font-weight:600;color:#8a8c80;cursor:pointer;text-align:center}
.nv-kfg-yol li.aktif{background:#929627;border-color:#929627;color:#fff}
.nv-kfg-yol li.gecti{background:#f3f4e4;border-color:#cdd19a;color:#5f6116}
.nv-kfg-sema{border:1px solid #e3e3df;border-radius:6px;background:#fff;padding:6px;overflow:hidden}
.nv-kfg-sema svg{display:block;width:100%;height:auto}
.nv-kfg-resim-btn{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}
.nv-kfg-resim-btn button{padding:8px 14px;border:1px solid #d9d9d2;background:#fff;color:#3f4137;border-radius:4px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}
.nv-kfg-resim-btn button:hover{background:#f7f7f3;border-color:#929627}
.nv-kfg-a{margin-bottom:6px}
.nv-kfg-gezin{display:flex;justify-content:space-between;gap:10px;margin-top:18px;padding-top:14px;border-top:1px solid #ecece7}
.nv-kfg-gezin button{padding:11px 22px;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;border:1px solid #d9d9d2;background:#fff;color:#3f4137}
.nv-kfg-gezin .nv-kfg-ileri{background:#929627;border-color:#929627;color:#fff;margin-left:auto}
.nv-kfg-gezin button:disabled{opacity:.45;cursor:default}
.nv-kfg-seri{border:1px solid #ecece7;border-radius:6px;background:#fafaf5;padding:12px 14px;margin-bottom:14px}
.nv-kfg-seri>strong{display:block;font-size:14px;margin-bottom:8px;color:#1d1d1b}
.nv-kfg-seri-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;align-items:end}
.nv-kfg-seri-grid label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:600;color:#3f4137}
.nv-kfg-seri-ekle{height:38px;padding:0 18px;border:1px solid #929627;background:#929627;color:#fff;border-radius:4px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}
.nv-kfg-seri-ekle:hover{background:#7d8121}
.nv-kfg-ipucu{margin:10px 0 0;font-size:12.5px;line-height:1.7;color:#8a8c80}
.nv-kfg-sira{margin:14px 0;padding:12px 16px;border-left:3px solid #002850;background:#f4f7fa;font-size:13.5px;line-height:1.7;border-radius:4px}
.nv-kfg-arac button{padding:8px 14px;border-radius:4px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}
.nv-kfg-sirala,.nv-kfg-temizle{border:1px solid #d9d9d2;background:#fff;color:#3f4137}
.nv-kfg-sirala:hover,.nv-kfg-temizle:hover{background:#f7f7f3}
.nv-kfg-yol li{flex:1 1 45%;font-size:12px;padding:7px 6px}
.nv-kfg-gezin button{flex:1}
/* 3B görünüm */
.nv-kfg-gorunum{display:flex;gap:8px;margin:10px 0}
.nv-kfg-gorunum button{padding:9px 18px;border:1px solid #d9d9d2;background:#fff;color:#5f6156;border-radius:4px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit}
.nv-kfg-gorunum button.aktif{background:#002850;border-color:#002850;color:#fff}
.nv-kfg-3b-tuval{position:relative;width:100%;height:620px;border:1px solid #e3e3df;border-radius:6px;background:#f2f4f6;overflow:hidden;touch-action:none;cursor:grab}
.nv-kfg-3b-tuval:active{cursor:grabbing}
.nv-kfg-3b-tuval canvas{display:block;width:100%;height:100%}
.nv-kfg-3b-tuval .nv-kfg-dikkat{margin:20px}
.nv-kfg-3b-yukleniyor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:13px;color:#8a8c80}
.nv-kfg-3b-arac{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0}
.nv-kfg-3b-arac button{padding:8px 14px;border:1px solid #d9d9d2;background:#fff;color:#3f4137;border-radius:4px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}
.nv-kfg-3b-arac button:hover{background:#f7f7f3;border-color:#929627}
.nv-kfg-gorunum button{flex:1;padding:9px 6px;font-size:12.5px}
.nv-hesap .nv-kfg-dikkat{background:#fdf6ec;border-left:3px solid #d99a2b;color:#7a5a17}
.nv-hesap .nv-kfg-tamam{background:#f4f7ec;border-left:3px solid #7a9b3a;color:#4b6120}

/* 2. sayfa (detay parça listesi) — ekranda çizimin hemen altında. */
.nv-kfg-sayfa2 { margin-top: 10px; border-top: 1px dashed #c8cfd6; padding-top: 10px; }

/* ── YAZDIRMA ──────────────────────────────────────────────────────────────
   Ctrl+P / tarayıcı "PDF olarak kaydet" doğrudan teknik resmi versin: arayüz
   gizlenir, her SVG tam bir A4 yatay sayfaya oturur.
   ⚠ `visibility` kullanılıyor, `display:none` değil: ata düğümleri gizleyip
   torunu göstermek yalnız böyle mümkün. */
/* ⚠ `html.nv-belge` = "?dosya=1" belge görünümü: gövde zaten yalnız sayfalardan
   oluşuyor, buradaki gizleme kuralları ONU DA yutuyordu (PDF bomboş çıkıyordu).
   O modda aşağıdaki kurallar devre dışı. */
@media print {
  @page { size: A4 landscape; margin: 0; }
  html, body { background: #fff !important; margin: 0; padding: 0; }
  html:not(.nv-belge) body * { visibility: hidden !important; }
  html:not(.nv-belge) .nv-kfg-sema, html:not(.nv-belge) .nv-kfg-sema * { visibility: visible !important; }
  html:not(.nv-belge) .nv-kfg-sema { position: absolute !important; left: 0; top: 0; width: 297mm; margin: 0; padding: 0; }
  .nv-kfg-sema svg { width: 297mm; height: 210mm; display: block; page-break-after: always; break-after: page; }
  .nv-kfg-sema svg:last-child { page-break-after: auto; break-after: auto; }
  .nv-kfg-sayfa2 { margin: 0 !important; border: 0 !important; padding: 0 !important; }
}

/* ── Teklif özeti · fiyat tablosu ─────────────────────────────────────────── */
.nv-kfg-fiyat { margin: 14px 0 6px; }
.nv-kfg-fiyat-t { width: 100%; border-collapse: collapse; font-size: 13px; }
.nv-kfg-fiyat-t th, .nv-kfg-fiyat-t td { border: 1px solid #d7dde3; padding: 5px 8px; text-align: left; }
.nv-kfg-fiyat-t th { background: #f2f5f7; font-weight: 600; }
.nv-kfg-fiyat-t td:last-child, .nv-kfg-fiyat-t th:last-child,
.nv-kfg-fiyat-t td:nth-child(3), .nv-kfg-fiyat-t td:nth-child(4) { text-align: right; white-space: nowrap; }
.nv-kfg-fiyat-satis td { background: #eef5ee; font-weight: 700; }
.nv-kfg-fiyat-mal td { background: #fdf3e6; font-weight: 700; }

/* ERP gönderim formu — teklif özeti altında açılır. */
.nv-kfg-erp-form { margin: 12px 0; padding: 12px 14px; border: 1px solid #d7dde3; border-radius: 6px; background: #fafcfd; }
.nv-kfg-erp-form[hidden] { display: none; }
.nv-kfg-erp-durum { margin: 8px 0 0; }

/* ── MÜŞTERİ GÖRÜNÜMÜ (?gorunum=musteri) ───────────────────────────────────
   Teklif linkinde iframe olarak açılır: müşteri çizimi görür, 3D'yi döndürür,
   ama HİÇBİR ŞEYİ DEĞİŞTİREMEZ.
   ⚠ Fiyat BU İFRAME'DE GÖSTERİLMEZ: tutarın tek doğru kaynağı teklif kaydıdır
     (ERP). Burada da hesaplanıp basılsaydı, kalem fiyatları güncellendiğinde
     müşteri aynı sayfada iki farklı rakam görebilirdi. */
.nv-kfg-musteri .nv-kfg-kayit,
.nv-kfg-musteri .nv-kfg-yol,
.nv-kfg-musteri .nv-kfg-a,
.nv-kfg-musteri .nv-kfg-gezin,
.nv-kfg-musteri .nv-kfg-fiyat,
.nv-kfg-musteri .nv-kfg-btn,
.nv-kfg-musteri .nv-kfg-erp-form,
.nv-kfg-musteri .nv-kfg-sayfa2 { display: none !important; }
.nv-kfg-musteri .nv-kfg-resim-btn .nv-kfg-svg,
.nv-kfg-musteri .nv-kfg-resim-btn .nv-kfg-png { display: none !important; }
.nv-kfg-musteri body { padding: 0; }

/* ═══ ZİYARETÇİ KAYDI KAPISI ═══════════════════════════════════════════════
   Kayıtsız ziyaretçide sihirbaz (.nv-kfg-a) ve adım şeridi gizlenir; demo
   kollektörün çizimi, 3D'si ve indirme düğmeleri AÇIK kalır.
   ⚠ Gizlenen yalnız DÜZENLEME: ziyaretçi ürünü görmeden formla karşılaşsaydı
   çoğu formu doldurmadan çıkardı. */
.nv-kfg-kilitli .nv-kfg-a,
.nv-kfg-kilitli .nv-kfg-yol,
.nv-kfg-kilitli .nv-kfg-kayit { display: none !important; }

.nv-kfg-kapi {
  margin: 18px 0 4px;
  border: 1px solid #d9dee3;
  border-radius: 12px;
  background: linear-gradient(180deg, #fbfcfd 0%, #f3f6f8 100%);
}
.nv-kfg-kapi-ic { padding: 22px 20px; max-width: 620px; margin: 0 auto; text-align: center; }
.nv-kfg-kapi h3 { margin: 0 0 8px; font-size: 17px; color: #1d1d1b; }
.nv-kfg-kapi p { margin: 0 0 14px; font-size: 14px; line-height: 1.55; color: #4a5560; }

.nv-kfg-kapi-form { text-align: left; margin-top: 14px; }
.nv-kfg-kapi-form label { display: block; font-size: 13px; color: #33404b; margin-bottom: 10px; }
.nv-kfg-kapi-form input[type="text"],
.nv-kfg-kapi-form input[type="tel"],
.nv-kfg-kapi-form input[type="email"] {
  display: block; width: 100%; margin-top: 4px; padding: 9px 11px;
  border: 1px solid #c6ced6; border-radius: 8px; font-size: 14px; background: #fff;
}
.nv-kfg-kapi-ikili { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 560px) { .nv-kfg-kapi-ikili { grid-template-columns: 1fr; } }
.nv-kfg-kapi-ipucu { font-size: 12px; color: #6b7681; margin: -2px 0 12px; }
.nv-kfg-zorunlu { color: #c0392b; }

.nv-kfg-kapi-onay { display: flex; gap: 9px; align-items: flex-start; font-size: 12.5px; line-height: 1.5; }
.nv-kfg-kapi-onay input { margin-top: 2px; flex: 0 0 auto; }
.nv-kfg-kapi-onay a { color: #1d6fa5; }

.nv-kfg-kapi-hata { min-height: 18px; margin: 8px 0 4px; font-size: 13px; color: #c0392b; }

/* ⚠ BAL KÜPÜ GÖRÜNMEZ AMA `display:none` DEĞİL: bazı botlar display:none
   alanları atlıyor. Ekran okuyucudan da aria-hidden ile saklanıyor. */
.nv-kfg-tuzak {
  position: absolute; left: -9999px; width: 1px; height: 1px;
  overflow: hidden; opacity: 0;
}

/* ═══ 3D ALANI YÜKSEKLİĞİ ═══════════════════════════════════════════════════
   Kullanıcı isteği 2026-09-22: alan aşağı doğru genişlesin, ürün tam ortada
   dönsün.
   ⚠ Daha önce dosyada başıboş bir `.nv-kfg-3b-tuval{height:300px}` kuralı
   vardı: bir medya sorgusunun İÇİNDE değildi ve üstteki 460px'i masaüstünde
   de eziyordu — yani mobil için yazılmış bir değer her yerde geçerliydi.
   Kaldırıldı; yükseklik artık ekran genişliğine göre.
   ⚠ Kamera sığdırması en-boy oranına bağlı (`sigdir3`), bu yüzden yükseklik
   değişince model kendiliğinden yeniden ortalanıyor. */
@media (max-width: 900px) { .nv-kfg-3b-tuval { height: 460px } }
@media (max-width: 560px) { .nv-kfg-3b-tuval { height: 380px } }
