/* ===== DEPO YÖNETİMİ (kullanıcı isteği 2026-09-09) =====
   İki sütun: solda bekleyenler sabit genişlikte ve yapışkan — sürüklerken
   listeyi kaybetmemek için; sağda depolar akışkan. */
.dy-duzen { display: grid; grid-template-columns: 320px 1fr; gap: var(--bosluk-3); align-items: start; }
.dy-bekleyen { position: sticky; top: var(--bosluk-3); max-height: calc(100vh - 140px); display: flex; flex-direction: column; }
/* BAŞLIK · ARAMA · SEKMELER EZİLMEZ. Esnek kapta varsayılan `flex-shrink: 1`
   yükseklik sınırına gelince ÜST öğeleri de sıkıştırıyor: arama kutusu
   eklenince sekme çubuğu yarı yükseklikte kaldı ve kesik göründü
   (kullanıcı bildirdi 2026-09-09). Kaydırma yalnız listeye ait. */
.dy-bekleyen > h2,
.dy-bekleyen > .dy-panel-arama,
.dy-bekleyen > .sekme-bar { flex: 0 0 auto; }
.dy-liste { flex: 1 1 auto; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 4px; }

/* Sürüklenebilir kalem: tutulacak bir şey gibi görünsün — kenarlık ve
   `grab` imleci, "bu satır taşınabilir" demenin en kısa yolu. */
.dy-kalem {
  display: grid; grid-template-columns: 1fr auto; gap: 2px 8px;
  padding: 6px 9px; background: var(--panel); border: 1px solid var(--line);
  border-radius: var(--radius); cursor: grab; font-size: var(--yazi-sm);
}
.dy-kalem:hover { border-color: var(--brand); background: var(--panel-2); }
.dy-kalem.suruklenen { opacity: .4; }
.dy-kod { font-weight: 700; }
.dy-adet { font-variant-numeric: tabular-nums; font-weight: 700; color: var(--brand); }
.dy-ad { grid-column: 1 / -1; color: var(--muted); font-size: var(--yazi-xs);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.dy-depolar { display: flex; flex-direction: column; gap: var(--bosluk-3); }
.dy-depo-bas { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.dy-depo-bas h2 { margin: 0; }
/* Uyuşmayan depo soluk — kısıt değil, yol gösterme. */
.dy-depo.uyusmaz { opacity: .35; }
.dy-tur-rozet { padding: 1px 8px; border-radius: 10px; font-size: var(--yazi-xs); font-weight: 700; border: 1px solid; }
.dy-tur-hammadde { color: #6b4a1e; background: #f7f0e4; border-color: #e0cfae; }
.dy-tur-sarf     { color: #2c5c3a; background: #e8f4ec; border-color: #bcdcc7; }
.dy-tur-stok     { color: #1e4f6b; background: #e7f1f7; border-color: #b9d6e6; }

/* Raflar ızgarada: depo bir şeklin karşılığı olsun, düz liste değil. */
.dy-raflar { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; margin-top: var(--bosluk-2); }
.dy-raf {
  min-height: 78px; padding: 8px; border-radius: var(--radius);
  background: var(--panel-2); border: 1px dashed var(--line-strong);
  transition: background .12s, border-color .12s;
}
/* Bırakma hedefi belirgin: sürüklerken nereye düşeceği tahmin edilmemeli. */
.dy-raf.uzerinde { background: var(--brand-soft); border-color: var(--brand); border-style: solid; }
.dy-raf-bas { display: flex; align-items: center; gap: 6px; font-size: var(--yazi-sm); margin-bottom: 5px; }
.dy-raf-bas .muted { margin-left: auto; }
.dy-raf-sil, .dy-cikar { border: 0; background: none; color: var(--muted); cursor: pointer; padding: 0 2px; line-height: 1; }
.dy-raf-sil:hover, .dy-cikar:hover { color: var(--red); }
.dy-raf-kalem { display: flex; flex-wrap: wrap; gap: 4px; }
.dy-etiket {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 6px; background: var(--panel); border: 1px solid var(--line);
  border-radius: var(--radius); font-size: var(--yazi-xs);
}
/* GÖZ KARTI (kullanıcı kararı 2026-09-09): kutunun içinde sınıf seçici ve
   bütün kalem etiketleri duruyordu; on beş gözlü rafta ekran okunmaz
   oluyordu. Kartta yalnız kimlik ve sayı var — gerisi tıklayınca açılan
   pencerede. */
.dy-raf-kart {
  min-height: 62px; display: flex; flex-direction: column; justify-content: space-between;
  border-style: solid; border-color: var(--line); cursor: pointer;
}
.dy-raf-kart:hover { border-color: var(--brand); background: var(--panel); }
.dy-raf-kart .dy-raf-bas { margin-bottom: 0; }
.dy-raf-alt { display: flex; align-items: center; gap: 6px; }
/* Dolu gözün sayısı vurgulu, boşunki soluk: hangi gözde mal var, ızgaraya
   bakar bakmaz görünmeli. */
.dy-raf-sayi { font-size: var(--yazi-xs); color: var(--muted); font-variant-numeric: tabular-nums; }
.dy-raf-dolu .dy-raf-sayi { color: var(--brand-dark); font-weight: 700; }
.dy-raf-dolu { background: var(--panel); }
/* Aramada eşleşmeyen göz soluyor — gizlenmiyor: ızgaranın şekli bozulmasın. */
.dy-raf-solgun { opacity: .25; }
.dy-raf-kart .dy-sinif-rozet { font-size: var(--yazi-xs); padding: 0 6px; }

.dy-raf-yeni { display: flex; align-items: center; border-style: dashed; background: none; }
.dy-raf-giris { width: 100%; border: 0; background: none; font: inherit; font-size: var(--yazi-sm); color: var(--ink); }
.dy-raf-giris:focus { outline: none; }
/* .dy-rafsiz kalktı (KDE-0063): kutunun kendisi kaldırıldı, kalemleri
   soldaki Yerleşmemiş listesine katıldı. */

@media (max-width: 900px) {
  .dy-duzen { grid-template-columns: 1fr; }
  .dy-bekleyen { position: static; max-height: 340px; }
}

/* Yerleşmemiş panelinin sekmeleri: dar sütuna sığması için küçük ve
   sarmalı — beş sekme yan yana 320px'e girmiyor. */
/* SEKMELER SARMALI — üçüncü sınıf kırpılıyordu (ölçüldü 2026-09-09:
   "Satın Alma yok" diye bildirilen 38 kalem aslında vardı, sekmesi dar
   sütunda taşıp görünmez olmuştu). `overflow-x: auto` temel kuraldan
   geliyor ve sarmayı boşa çıkarıyordu; burada iptal ediliyor. */
/* YAN DOLGU SIFIR: temel `.sekme-bar` kuralı iki yandan 26px yiyordu ve
   290px'lik panelde üçüncü sekme alt satıra düşüyordu (ölçüldü: sekmeler
   86+104+104 = 294px, kullanılabilir alan 290px). Dolgu kalkınca üçü de
   tek satıra sığıyor. `overflow-x: auto` da iptal — sarma varken kaydırma
   çubuğu üçüncü sekmeyi büsbütün gizliyordu. */
.dy-sekmeler { flex-wrap: wrap; gap: 2px; padding: 0; margin-bottom: var(--bosluk-2); overflow-x: visible; }
.dy-sekmeler .sekme { padding: 4px 6px; font-size: var(--yazi-xs); }

/* Yerleşmemiş listesinin kendi arama kutusu — kod ya da tanım. */
.dy-panel-arama {
  width: 100%; height: 30px; padding: 0 9px; margin-bottom: var(--bosluk-2);
  border: 1px solid var(--line-strong); border-radius: var(--radius);
  font: inherit; font-size: var(--yazi-sm); color: var(--ink); background: var(--panel);
}

/* ===== SINIF BAĞI ve RAF GRUBU ===== */
/* Sınıf kutuları başlıkta, küçük ve tek satırda: deponun kimliğinin
   parçası ama başlığın kendisi değil. */
.dy-sinif-sec { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-left: auto; }
.dy-sinif-tik {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 7px; border-radius: 10px; cursor: pointer;
  font-size: var(--yazi-xs); color: var(--muted);
  background: var(--panel-2); border: 1px solid var(--line);
}
/* Seçili sınıf belirgin: deponun ne kabul ettiği bir bakışta okunmalı. */
.dy-sinif-tik.acik { background: var(--brand-soft); border-color: var(--brand); color: var(--ink); font-weight: 700; }
.dy-sinif-tik input { margin: 0; }

.dg-sil { border: 0; background: none; color: var(--muted); cursor: pointer; padding: 0 2px; }
.dg-sil:hover { color: var(--red); }

/* ===== RAF OLUŞTUR PENCERESİ =====
   Ekranın içindeki "grup adı · sütun × sıra · oluştur" şeridinin yerine
   geçti (kullanıcı kararı 2026-09-09). Sayı kutuları ızgaranın ÜSTÜNDE ve
   SAĞINDA: hangisinin sütun hangisinin sıra olduğu yerinden okunuyor,
   etiketle anlatmak gerekmiyor. */
.ro { display: flex; flex-direction: column; gap: var(--bosluk-3); }
.ro-ust { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; }
.ro-alan { display: flex; flex-direction: column; gap: 4px; font-size: var(--yazi-sm); font-weight: 700; color: var(--muted); }
.ro-alan input, .ro-alan select {
  height: 30px; padding: 0 8px; border: 1px solid var(--line-strong);
  border-radius: var(--radius); font: inherit; font-weight: 400; color: var(--ink); background: var(--panel);
}
.ro-alan input { width: 170px; }
/* Onay kutusu ve sayaç DÜĞMEYLE AYNI YÜKSEKLİKTE. Çubuk `align-items:
   flex-end` ile hizalanıyor; düz bir <span> alt kenara oturuyor ve metni
   düğme yazısından yukarıda kalıyordu (kullanıcı bildirimi 2026-09-09:
   "8 göz yazısı kayık duruyor"). Aynı yükseklikte kutu + dikey ortalama,
   iki metnin merkezini üst üste getiriyor. */
.ro-tik, #roSayac { height: var(--row-h); display: inline-flex; align-items: center; gap: 6px; font-size: var(--yazi-sm); color: var(--muted); }
.ro-kip { align-self: flex-start; }

/* Izgara ortada, sayılar kenarlarında — üç hücreli bir yerleşim. */
/* `auto auto` yazılıydı: ızgara kolonu boş alanı yutuyor ve "sıra" kutusu
   pencerenin sağ ucuna kaçıyordu. `max-content` + `justify-content: start`
   ile sayı kutusu ızgaraya bitişik duruyor — hangi ölçüyü değiştirdiğin
   ancak yanında dururken okunuyor. */
/* TASARIM ALANI PENCEREDE ORTALI (kullanıcı kararı 2026-09-09): sola
   dayalıyken pencerenin sağ yarısı boş kalıyor, raf kenarda duruyordu.
   Bu karar GEÇERLİ; nasıl sağlandığı 2026-10-10'da değişti.

   ESKİSİ (artık yok): üç kolonlu ızgara — soldaki boş, ortadaki raf, sağdaki
   "sıra" kutusu. İki kolonla raf merkezden "sıra" kutusunun yarısı kadar
   kayıyordu (ölçülmüştü: sol boşluk 207px, sağ 295px), eşit yan kolonlar
   bunu düzeltiyordu. Ölçü kutuları yukarı tek satıra taşınınca o dengeleme
   gereksizleşti — aşağıdaki nota bakınız. */
/* TEK SÜTUN, ORTALI (P1 v2 §3.5). Eskiden üç kolonlu bir ızgaraydı: sol ve
   sağ kolonlar yalnız ölçü kutularını taşısın diye vardı, ızgara ortadaki
   kolona sıkışıyordu. Kutular yukarı tek satıra çıkınca o yapıya gerek
   kalmadı; ızgara artık kendi genişliğince ve ortalı. Pencere "olcu: oto"
   olduğu için sütun arttıkça pencere 1080 px'e kadar büyüyor, sonra ızgara
   kendi içinde kayıyor. */
.ro-tasarim { display: flex; flex-direction: column; align-items: center; gap: var(--bosluk-3); }
.ro-olcu { display: flex; align-items: center; gap: var(--bosluk-3); font-size: var(--yazi-sm); color: var(--muted); }
.ro-olcu label { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; }
.ro-serbest, .ro-izgara { align-self: center; }
.ro-izgara { display: grid; gap: 6px; }
.ro-olcu input {
  width: 62px; height: 30px; padding: 0 6px; text-align: center;
  border: 1px solid var(--line-strong); border-radius: var(--radius);
  font: inherit; font-variant-numeric: tabular-nums;
}
.ro-goz {
  position: relative; height: 46px; display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--line-strong); border-radius: var(--radius);
  background: var(--panel-2); font-size: var(--yazi-sm); font-weight: 700; color: var(--ink);
}

/* SERBEST YERLEŞİM — ızgara değil, satır satır (kullanıcı kararı 2026-09-09).
   Gerçek rafta bir gözlü kat ile iki gözlü kat aynı genişliktedir; tek gözlü
   katın gözü iki göz kadar yer kaplar. Izgara bütün satırlara aynı sütun
   çizgilerini dayattığı için bu yapılamıyordu.
   Satır genişliği SABİT, gözler `flex: 1` ile o genişliği eşit paylaşıyor. */
.ro-serbest { display: flex; flex-direction: column; gap: 6px; width: 420px; }
.ro-satir { display: flex; gap: 6px; }
.ro-satir .ro-goz { flex: 1 1 0; min-width: 0; }
/* Artı ESNEMİYOR: göz gibi genişleseydi, tek gözlü satırda kutu kadar yer
   kaplayıp yerleşimi yanlış gösterirdi. */
.ro-satir .ro-arti { flex: 0 0 46px; }
.ro-arti-satir { width: 100%; }
/* Çerçeve içinde ama açılmamış göz: yeri boş kalsın, ızgara kaymasın. */
.ro-bos { border-style: dotted; opacity: .3; background: none; }
.ro-sil {
  position: absolute; top: -7px; right: -7px; width: 18px; height: 18px; line-height: 1;
  border: 1px solid var(--line-strong); border-radius: 50%; background: var(--panel);
  color: var(--muted); font-size: var(--yazi-xs); cursor: pointer; padding: 0;
}
.ro-sil:hover { color: var(--red); border-color: var(--red); }
.ro-arti {
  height: 46px; min-width: 46px; border: 1px dashed var(--line-strong); border-radius: var(--radius);
  background: none; color: var(--muted); font-size: var(--yazi-baslik); cursor: pointer;
}
.ro-arti:hover { color: var(--brand); border-color: var(--brand); }

/* ===== GÖZ PENCERESİ ===== */
.dyp { display: flex; flex-direction: column; gap: var(--bosluk-3); }
.dyp-ust { display: flex; align-items: flex-end; gap: 10px; }
.dyp-alan { display: flex; flex-direction: column; gap: 4px; font-size: var(--yazi-sm); font-weight: 700; color: var(--muted); }
.dyp-alan select {
  height: 30px; padding: 0 8px; border: 1px solid var(--line-strong);
  border-radius: var(--radius); font: inherit; font-weight: 400; color: var(--ink); background: var(--panel);
}
.dyp-kalemler { display: flex; flex-direction: column; gap: 4px; }
.dyp-satir {
  display: grid; grid-template-columns: 150px minmax(0, 1fr) 60px auto;
  align-items: center; gap: 10px; padding: 5px 8px;
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel-2);
}
.dyp-kod { font-weight: 700; }
.dyp-ad { color: var(--muted); font-size: var(--yazi-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dyp-adet { text-align: right; font-variant-numeric: tabular-nums; }

/* ===== DEPO PLANI — kart ızgarası ===== */
.dy-kartlar { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--bosluk-3); }
.dy-kart {
  position: relative;
  display: block; text-align: left; width: 100%;
  /* Sağ dolgu geniş: eylem simgeleri sağ kenarda dikey duruyor, ad onların
     altına girmemeli. */
  padding: 14px 46px 14px 16px; background: var(--panel); border: 1px solid var(--line);
  border-radius: var(--radius); cursor: pointer; font: inherit; color: var(--ink);
}
/* EYLEM SİMGELERİ SAĞ KENARDA, YUKARIDAN AŞAĞIYA (kullanıcı kararı
   2026-09-09). Adın arkasına dizilince uzun adlarda alt satıra kaçıyor ve
   kartın hizası bozuluyordu. Rozet ve sayılar normal akışta, altta. */
.dy-kart-kod { font-weight: 700; }
.dy-kart-baslik { font-weight: 400; color: var(--muted); }
.dy-kart:hover { border-color: var(--brand); box-shadow: 0 1px 6px rgba(0,0,0,.06); }
.dy-kart-ad { font-size: var(--yazi-lg); font-weight: 700; margin-bottom: 6px; }
.dy-kart-sinif { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 10px; min-height: 20px; }
.dy-sinif-rozet {
  padding: 1px 8px; border-radius: 10px; font-size: var(--yazi-xs); font-weight: 700;
  color: #1e4f6b; background: #e7f1f7; border: 1px solid #b9d6e6;
}
.dy-kart-sayi { display: flex; flex-wrap: wrap; gap: 12px; font-size: var(--yazi-sm); color: var(--muted); }
.dy-kart-sayi b { color: var(--ink); font-variant-numeric: tabular-nums; }
.dy-kart-bekleyen b { color: var(--amber); }

/* YENİ DEPO KUTUSU — kartlarla aynı ebatta, ortasında büyük bir "+".
   Üstteki "Depo adı + Depo Ekle" çubuğunun yerine geçti (kullanıcı kararı
   2026-09-09): ekleme kartların arasında duruyor, yeni deponun nereye
   geleceği olduğu yerde görünüyor. Tıklanınca aynı kutu forma dönüşüyor. */
.dy-yeni {
  display: flex; align-items: center; justify-content: center;
  min-height: 104px; border-style: dashed; color: var(--muted);
}
.dy-yeni:hover { color: var(--brand); }
.dy-yeni-arti { font-size: var(--yazi-sayi); line-height: 1; }
.dy-yeni-form { display: flex; flex-direction: column; gap: 10px; cursor: default; }
.dy-yeni-form:hover { border-color: var(--line); box-shadow: none; }
.dy-yeni-alan { display: flex; flex-direction: column; gap: 4px; font-size: var(--yazi-sm); font-weight: 700; color: var(--muted); }
/* DOĞRUDAN ÇOCUK: `>` olmadan sınıf etiketlerinin onay kutuları da bu
   kuralı yer ve rozetler bozulur. */
.dy-yeni-alan > input {
  border: 1px solid var(--line); border-radius: var(--radius);
  padding: 6px 8px; font: inherit; font-weight: 400; color: var(--ink);
}
/* Sınıf etiketleri kartın içinde SOLDAN başlamalı: plan ekranındaki şerit
   `margin-left: auto` ile sağa yaslanıyor, kart içinde yeri o değil. */
.dy-yeni-form .dy-sinif-sec { margin-left: 0; }
.dy-yeni-dugmeler { display: flex; gap: 8px; margin-top: auto; }

/* Raf grubu ızgarası — deponun şekli görünsün. */
.dy-grup { margin-bottom: var(--bosluk-3); }
.dy-grup-bas { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
/* Grup satır satır — asimetrik yerleşim (kullanıcı kararı 2026-09-09).
   Tek ızgara bütün satırlara aynı sütun çizgilerini dayatıyordu; bir gözlü
   satırın gözü beş gözlük genişliğin beşte birine sıkışıyor, kalanı delik
   kalıyordu. Satır bazında esnek kutu: her satır aynı genişlikte, gözler
   o genişliği paylaşıyor. */
.dy-grup-satir { display: flex; gap: 8px; margin-bottom: 8px; }
.dy-grup-satir .dy-raf { flex: 1 1 0; min-width: 0; }
.dy-grup-izgara { display: grid; gap: 8px; }
/* Grupta tanımlı ama silinmiş göz: yeri boş kalsın, ızgara kaymasın. */
.dy-raf-yok { border-style: dotted; opacity: .35; }

/* Raf sınıfı: gözün altında küçük seçici. Sınıfı olan göz kenarlıkla
   ayrılıyor — hangi gözün ayrılmış olduğu bir bakışta okunsun. */
.dy-raf-sinif { width: 100%; height: 22px; margin-top: 4px; font-size: var(--yazi-xs);
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); color: var(--muted); }
.dy-raf-sinifli { border-style: solid; border-color: var(--line-strong); }
.dy-raf.uyusmaz { opacity: .3; }
.dg-sinif { height: 28px; border: 1px solid var(--line-strong); border-radius: var(--radius); font-size: var(--yazi-sm); }

/* Tek ürünlük göz: başlıkta küçük bir "1". Farklı bir kenarlık yerine
   sayı — göz zaten kenarlıklarla ayrılıyor, bir tane daha eklemek
   ızgarayı okunmaz yapardı. */
.dy-tek-im {
  display: inline-flex; align-items: center; justify-content: center;
  width: 15px; height: 15px; border-radius: 50%;
  background: var(--line-strong); color: var(--panel);
  font-size: var(--yazi-xs); font-weight: 700;
}
.dg-tek { display: inline-flex; align-items: center; gap: 6px; font-size: var(--yazi-sm); color: var(--muted); }

/* Depo kartındaki silme: adın yanında, soluk; kartın kendisi tıklanınca
   deponun sayfası açılıyor, bu ayrı bir eylem. */
.dy-kart-sil { float: right; color: var(--muted); font-weight: 400; cursor: pointer; padding: 0 2px; }
.dy-kart-sil:hover { color: var(--red); }

/* ==========================================================================
   RAF STOK LİSTESİ ve RAF ETİKETİ — YAZDIRMA (kullanıcı tasarımı 2026-09-09)

   Raf kartının yerine geçtiler. Ölçüler MİLİMETRE: kâğıda basılıyorlar,
   piksel burada bir şey ifade etmiyor. Renkler doğrudan yazılı, jetondan
   değil — `@media print` içinde jeton çözümü tarayıcıdan tarayıcıya
   değişebiliyor ve kâğıt sürprize gelmemeli.
   ========================================================================== */
.rl-kagit { width: 210mm; height: 297mm; background: #D9D9D9; padding: 2mm; box-sizing: border-box; }
.rl-cerceve {
  width: 100%; height: 100%; box-sizing: border-box; background: #fff;
  border: .3mm solid var(--brand); display: flex; flex-direction: column;
  font-family: 'Lato', 'Archivo', system-ui, sans-serif; color: #353535;
}
.rl-bas { padding: 6mm 8mm 5mm; border-bottom: .9mm solid var(--brand); }
.rl-baslik { font-weight: 800; font-size: 6mm; line-height: 1; letter-spacing: .02em; color: #284B63; }
.rl-altbaslik { font-weight: 600; font-size: 2.4mm; line-height: 1; letter-spacing: .16em; opacity: .7; margin-top: 1.4mm; }
.rl-kunyeler { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6mm; padding: 5mm 8mm; border-bottom: .25mm solid #D9D9D9; }
.rl-kunye { display: flex; flex-direction: column; gap: .8mm; }
.rl-et { font-weight: 600; font-size: 1.9mm; line-height: 1; letter-spacing: .16em; opacity: .7; }
.rl-dg { font-weight: 700; font-size: 3.4mm; line-height: 1; color: #284B63; }
.rl-govde { flex: 1; padding: 0 8mm; overflow: hidden; }

/* Beş sütun: göz · ürün no · ürün adı · adet · kontrol karesi. */
.rl-basliklar, .rl-satir {
  display: grid; grid-template-columns: 18mm 42mm 1fr 16mm 18mm; gap: 3mm;
}
.rl-basliklar { align-items: end; padding: 4mm 0 2mm; border-bottom: .5mm solid #353535; font-weight: 600; font-size: 2.1mm; line-height: 1; letter-spacing: .14em; opacity: .75; }
.rl-satir { align-items: baseline; padding: 2mm 0; border-bottom: .25mm solid #D9D9D9; font-weight: 400; font-size: 2.9mm; line-height: 1.2; }
.rl-goz { font-weight: 700; color: #284B63; }
.rl-no { font-weight: 600; }
.rl-adet { text-align: right; font-variant-numeric: tabular-nums; }
.rl-bos { font-style: normal; opacity: .45; letter-spacing: .1em; font-size: 2.4mm; }
/* Kontrol karesi kasten BOŞ — kalemle işaretlenecek. */
.rl-kutu { justify-self: center; width: 4.5mm; height: 4.5mm; border: .3mm solid #D9D9D9; }
.rl-kutu-bas { text-align: center; }
/* Satır ayracı: rafın katları kâğıtta da ayrı görünsün. */
.rl-ayrac { display: flex; align-items: center; gap: 3mm; padding: 3mm 0 1.5mm; font-weight: 700; font-size: 2.2mm; line-height: 1; letter-spacing: .16em; color: var(--brand); }
.rl-ayrac i { flex: 1; height: .25mm; background: #D9D9D9; }

.rl-alt { display: grid; grid-template-columns: 1fr 1fr auto; gap: 8mm; padding: 6mm 8mm 4mm; border-top: .25mm solid #D9D9D9; }
.rl-imza { display: flex; flex-direction: column; gap: 6mm; font-weight: 600; font-size: 2.1mm; line-height: 1; letter-spacing: .14em; opacity: .75; }
.rl-imza i { height: .25mm; background: #353535; }
.rl-toplam { text-align: right; font-weight: 600; font-size: 2.1mm; line-height: 1; letter-spacing: .14em; }
.rl-toplam b { display: block; margin-top: 2mm; font-weight: 800; font-size: 5mm; line-height: 1; color: #284B63; }
.rl-form { padding: 0 8mm 4mm; font-weight: 400; font-size: 2mm; line-height: 1; opacity: .55; }

/* --- RAF ETİKETİ — 70 × 35 mm --- */
.re-kagit { width: 70mm; height: 35mm; background: #D9D9D9; padding: 2mm; box-sizing: border-box; break-inside: avoid; }
.re-cerceve {
  width: 100%; height: 100%; box-sizing: border-box; background: #fff;
  border: .3mm solid var(--brand); display: grid; grid-template-columns: 1fr 19mm;
  gap: 2.5mm; padding: 3mm 3mm 3mm 3.5mm;
  font-family: 'Lato', 'Archivo', system-ui, sans-serif; color: #353535;
  /* ETİKET SABİT ÖLÇÜ — 35 mm'yi taşan içerik kırpılır (ölçüldü 2026-09-09:
     iki satıra sarmalanan ürün adı ve göz adresi çerçevenin ALTINA
     düşüyordu). Kırpma son savunma; asıl önlem adın iki satıra
     sınırlanması ve uzun kodun üç noktayla kesilmesi. */
  overflow: hidden;
}
.re-sol { display: flex; flex-direction: column; justify-content: center; gap: 1.3mm; min-width: 0; overflow: hidden; }
.re-alan { display: flex; flex-direction: column; gap: .8mm; min-width: 0; }
.re-et { font-weight: 600; font-size: 1.9mm; line-height: 1; letter-spacing: .16em; opacity: .7; }
.re-no { font-weight: 800; font-size: 4.4mm; line-height: 1; letter-spacing: -.01em; white-space: nowrap; color: #284B63; overflow: hidden; text-overflow: ellipsis; }
/* Ad EN FAZLA İKİ SATIR: "BAYRAK DİREĞİ KOMPLE" gibi iki kelimelik adlar
   zaten sarmalanıyor, üçüncü satır etiketi taşırıyor. */
.re-ad {
  font-weight: 600; font-size: 2.7mm; line-height: 1.1;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
  overflow: hidden;
}
.re-cizgi { height: .25mm; background: #D9D9D9; }
/* Göz adı etikette de var: etiket düşerse hangi göze ait olduğu bilinsin. */
.re-goz { font-weight: 700; font-size: 2.4mm; line-height: 1; letter-spacing: .12em; color: var(--brand); }
.re-qr { display: flex; align-items: center; justify-content: flex-end; }
.re-qr svg { width: 19mm; height: 19mm; }


