/* ============================================================
   CoreV2 · Paket satiri — MODUL A: Izgara temeli (grid base)
   ------------------------------------------------------------
   Tek dogru kaynak. hosting.css / server.css / home.css icindeki
   mukerrer ".packs-slider-body--3v" izgara kurallari
   tools/css_dedupe.py ile temizlenir; olcu burada tanimlanir.

   Kapsam : .packs-slider-body--3v / .cv2-packs-row / .cv2-srv-row-*
   Yuklenme: paket listeleyen sayfalarda EN SONDA (asset-loader.php)
   ============================================================ */

:root {
  /* Kart olcu referansi; masaustunde satir her zaman dort sabit izdir. */
  --cv2-pack-slot-min: 224px;
  /* Promo kartinin sutun payi (kalan alan kart panelinde) */
  --cv2-promo-slot-fr: 0.95fr;
  --cv2-packs-panel-fr: 3.05fr;
  --cv2-packs-3v-gap: var(--cv2-card-grid-gap, 16px);
}

/* --- Ortak tasma/daralma korumasi (tum kirilimlar) --- */
.packs-slider-body--3v,
.cv2-packs-row,
.cv2-srv-row-with-promo,
.cv2-srv-row-no-promo {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.packs-slider-body--3v > *,
.cv2-packs-row > *,
.cv2-srv-row-with-promo > *,
.cv2-srv-row-no-promo > * {
  min-width: 0; /* grid ogesinin icerikle sismesini/daralmasini engeller */
  max-width: none;
  box-sizing: border-box;
}

/* --- MASAUSTU: 4 esit sutun --- */
@media (min-width: 1025px) {
  .packs-slider-body--3v,
  .cv2-packs-row,
  .cv2-srv-row-no-promo {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-auto-flow: row;
    grid-auto-rows: auto;
    gap: var(--cv2-packs-3v-gap);
    align-items: stretch;
  }

  /* Kart genisligi sabit 160px slot ile kisilmesin */
  .packs-slider-body--3v .pack-card-wrapper,
  .cv2-packs-row .pack-card-wrapper,
  .cv2-srv-row-with-promo .coreservercart-server-item,
  .cv2-srv-row-no-promo .coreservercart-server-item {
    width: 100%;
    max-width: none;
    min-width: 0;
    flex: 1 1 auto;
  }
}

/* --- TABLET: 2 sutun --- */
@media (min-width: 641px) and (max-width: 1024px) {
  .packs-slider-body--3v,
  .cv2-packs-row,
  .cv2-srv-row-with-promo,
  .cv2-srv-row-no-promo {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--cv2-packs-3v-gap);
  }
}

/* --- MOBIL: tek sutun --- */
@media (max-width: 640px) {
  .packs-slider-body--3v,
  .cv2-packs-row,
  .cv2-srv-row-with-promo,
  .cv2-srv-row-no-promo {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }
}

/* ============================================================
   CASCADE AGIRLIGI — kritik inline CSS'i (head-critical-styles-
   consolidated.css) gecmek icin zorunlu. Orada satir kapsayicisi
   "html body#home ... .cv2-packs-row" gibi yuksek ozgullukle
   tanimlaniyor; modul en sonda yuklense de esit ozgullukte
   olmadigi icin kazanamaz.
   Bu blok TEK dogru olcuyu kesinlestirir.
   ============================================================ */
@media (min-width: 1025px) {
  html body .packs-slider-body--3v,
  html body .cv2-packs-row,
  html body .cv2-srv-row-no-promo {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    grid-auto-flow: row !important;
    gap: var(--cv2-packs-3v-gap) !important;
    align-items: stretch !important;
  }
}

/* TABLET / MOBIL: satir kapsayicisina display DAYATILMAZ.
   Temanin kendi davranisi burada dogru: satir "block" kalir, kartlar
   ".packs-cards-track" icinde tablette 2 sutun, mobilde kaydirmali
   (flex slider) olarak dizilir. Buraya "display:grid!important"
   koymak sliderı bozar; olculer track uzerinden yonetilir. */
@media (min-width: 641px) and (max-width: 1024px) {
  html body .packs-slider-body--3v.cv2-packs-row .packs-cards-track,
  html body .cv2-srv-row-with-promo .coreservercart-server-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: var(--cv2-packs-3v-gap) !important;
  }
}

