/*
Theme Name: Jewels - Jewelry and Accessories Store Website Template
Author: Templates Jungle
Author URI: https://templatesjungle.com/
Description: Jewels is specially designed product packaged for Jewelry and Accessories Store Website Template
Version: 1.1
*/

/*--------------------------------------------------------------
This is main CSS file that contains custom style rules used in this template
--------------------------------------------------------------*/

/*------------------------------------*\
    Table of contents
\*------------------------------------*/

/*------------------------------------------------

CSS STRUCTURE:

    
/*--------------------------------------------------------------
/** 1. VARIABLES
--------------------------------------------------------------*/
/* Profesyonel font çifti: Playfair Display (başlık) + Jost (metin) */
@import url("https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Jost:ital,wght@0,300;0,400;0,500;0,600;1,400&family=Petit+Formal+Script&family=Cormorant+Garamond:ital,wght@1,300;0,600&family=Bodoni+Moda:opsz,wght@6..96,700&family=Cinzel:wght@400&family=Italiana&family=Marcellus&family=Gilda+Display&family=Antic+Didone&display=swap");

/*==============================================================
  SUELLE TASARIM SİSTEMİ — "Sessiz Lüks"
  Tek kaynak: renk, boşluk, tipografi ve yarıçap burada tanımlanır.
  Kural: hiçbir bileşende çıplak hex/px yazılmaz, token kullanılır.
==============================================================*/
:root {
  /* --- Nötr rampa (sıcak krem tabanlı) --- */
  --n-0:   #ffffff;   /* kart zemini */
  --n-25:  #fdfcfa;   /* sayfa zemini */
  --n-50:  #f8f5f0;   /* yumuşak bölüm zemini */
  --n-100: #f1ece4;   /* krem blok */
  --n-200: #e4dcd0;   /* kenarlık */
  --n-300: #cfc4b4;   /* ayraç */
  --n-400: #a89c89;   /* sadece iri metin */
  --n-500: #8a7e6c;   /* ikincil metin — beyazda 4.6:1 */
  --n-600: #6b6152;
  --n-700: #4a4237;
  --n-800: #2e2a23;
  --n-900: #23201a;   /* ana metin / mürekkep */

  /* --- Şampanya altını: takının kendi rengi, arayüzde ölçülü kullanılır --- */
  --gold-100: #f3e9dc;
  --gold-200: #e4d3bc;
  --gold-300: #d4bb99;
  --gold-400: #c5a47e;  /* marka altını (logo/motif) */
  --gold-500: #b08d63;  /* etkileşim */
  --gold-600: #8f6e48;  /* metin üstünde okunur altın — beyazda 4.7:1 */
  --gold-700: #6e5333;

  /* --- Anlamsal --- */
  --renk-metin:        var(--n-900);
  --renk-metin-ikincil:var(--n-500);
  --renk-zemin:        var(--n-25);
  --renk-zemin-yumusak:var(--n-50);
  --renk-kenarlik:     var(--n-200);
  --renk-aksan:        var(--gold-600);
  --renk-aksan-parlak: var(--gold-400);

  /* --- Boşluk: 8px tabanlı --- */
  --sp-1: 0.25rem;  /*  4 */
  --sp-2: 0.5rem;   /*  8 */
  --sp-3: 0.75rem;  /* 12 */
  --sp-4: 1rem;     /* 16 */
  --sp-5: 1.5rem;   /* 24 */
  --sp-6: 2rem;     /* 32 */
  --sp-7: 3rem;     /* 48 */
  --sp-8: 4rem;     /* 64 */
  --sp-9: 6rem;     /* 96 */
  --sp-10: 8rem;    /* 128 */
  /* Bölüm nefesi: mobilde 56px, masaüstünde 96px — tek eğri */
  --bolum-bosluk: clamp(3.5rem, 6vw, 6rem);

  /* --- Tipografi: 1.25 modüler ölçek, taban 16px --- */
  --fs-xs:   0.8rem;    /* 12.8 */
  --fs-sm:   0.875rem;  /* 14   */
  --fs-base: 1rem;      /* 16   */
  --fs-md:   1.125rem;  /* 18   */
  --fs-lg:   1.25rem;   /* 20   */
  --fs-xl:   1.5625rem; /* 25   */
  --fs-2xl:  1.9531rem; /* 31.25*/
  --fs-3xl:  2.4414rem; /* 39   */
  --fs-4xl:  3.0518rem; /* 48.8 */
  /* Akışkan başlıklar */
  --fs-baslik-1: clamp(2.4414rem, 1.6rem + 3.4vw, 3.8147rem); /* 39 → 61 */
  --fs-baslik-2: clamp(1.9531rem, 1.4rem + 2.2vw, 3.0518rem); /* 31 → 49 */
  --fs-baslik-3: clamp(1.5625rem, 1.25rem + 1.2vw, 1.9531rem);/* 25 → 31 */

  --lh-sikisik: 1.15;   /* iri başlıklar */
  --lh-baslik:  1.25;
  --lh-govde:   1.65;
  --olcu-metin: 68ch;   /* okunabilir satır uzunluğu üst sınırı */

  /* --- Yarıçap: butonlar hap, yüzeyler neredeyse keskin --- */
  --r-yuzey: 4px;
  --r-panel: 10px;
  --r-hap:   999px;

  /* --- Gölge: sessiz, sıcak --- */
  --sh-1: 0 1px 2px rgba(35, 32, 26, .04), 0 2px 8px rgba(35, 32, 26, .04);
  --sh-2: 0 6px 24px rgba(35, 32, 26, .07);
  --sh-3: 0 18px 48px rgba(35, 32, 26, .12);

  --gecis: 220ms cubic-bezier(.2, .6, .3, 1);

  /* --- Bootstrap köprüsü: şablonun eski değişkenleri yeni palete bağlandı --- */
  --accent-color: var(--n-900);
  --bs-gray-100: var(--n-50);
  --bs-gray-200: var(--n-200);
  --bs-primary: #8f6e48;
  --bs-secondary: #f1ece4;
  --bs-primary-rgb: 143, 110, 72;
  --bs-body-bg-rgb: 253, 252, 250;
  --bs-light: #fff;
  --bs-dark: #23201a;
  --bs-dark-rgb: 35, 32, 26;
  --navbar-color-color: var(--n-900);
  --swiper-theme-color: #8f6e48 !important;
  --swiper-pagination-color: #8f6e48 !important;
}

/* on mobile devices below 600px
 */
@media screen and (max-width: 600px) {
  :root {
    --header-height: 100px;
    --header-height-min: 80px;
  }
}

/* Fonts */
:root {
  --body-font: "Jost", -apple-system, "Segoe UI", sans-serif;
  --heading-font: "Playfair Display", Georgia, serif;
  /* El yazısı — hero'daki gazete kupürü yazıları için */
  /* Hero sözleri için BEŞ AYRI aile — hiçbiri diğerine benzemesin */
  --yz-elyazi: "Petit Formal Script", cursive;
  --yz-garamond: "Cormorant Garamond", Georgia, serif;
  --yz-manset: "Bodoni Moda", "Playfair Display", serif;
  --yz-versal: "Cinzel", "Playfair Display", serif;
  --yz-grotesk: "Jost", -apple-system, sans-serif;
  --yz-italiana: "Italiana", Georgia, serif;
  --yz-marcellus: "Marcellus", Georgia, serif;
  --yz-gilda: "Gilda Display", Georgia, serif;
  --yz-didone: "Antic Didone", Georgia, serif;
}

body {
  letter-spacing: 0.01em;
}
h1, h2, h3, h4, h5, h6 {
  letter-spacing: 0.01em;
}

/*----------------------------------------------*/
/* 1 GENERAL TYPOGRAPHY */
/*----------------------------------------------*/

/* 1.1 General Styles
/*----------------------------------------------*/
*,
*::before,
*::after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

html {
  box-sizing: border-box;
}

body {
  font-family: var(--body-font);
  font-size: 16px;
  font-weight: 300;
  line-height: 1.6;
  color: var(--accent-color);
  margin: 0;
}

ul.inner-list li {
  font-size: 1.2em;
}

strong {
  font-weight: bold;
}

a {
  color: var(--bs-dark);
  text-decoration: none;
  transition: 0.3s color ease-out;
}

a:hover {
  text-decoration: none;
  color: var(--bs-primary);
}

.form-control:focus,
.accordion-button:focus {
  box-shadow: none;
}

/*------------ Background Color -----------*/
.bg-secondary {
  background: var(--bs-secondary) !important;
}

.bg-dark {
  background: var(--bs-dark) !important;
}

.bg-light {
  background: var(--bs-light) !important;
}

.bg-gray-1 {
  background-color: var(--bs-gray-100) !important;
}

/* - Section Padding
--------------------------------------------------------------*/
.padding-small {
  padding-top: 2em;
  padding-bottom: 2em;
}

.padding-medium {
  padding-top: 4em;
  padding-bottom: 4em;
}

.padding-large {
  padding-top: 10em;
  padding-bottom: 10em;
}

/* - Section margin
--------------------------------------------------------------*/
.margin-small {
  margin-top: 3em;
  margin-bottom: 3em;
}

.margin-medium {
  margin-top: 5em;
  margin-bottom: 5em;
}

.margin-large {
  margin-top: 7em;
  margin-bottom: 7em;
}

@media only screen and (max-width: 768px) {

  .margin-small,
  .margin-medium,
  .margin-large {
    margin-top: 5em;
    margin-bottom: 5em;
  }
}

/* - Section Title
--------------------------------------------------------------*/
h1,
h2,
h3,
h4,
h5 {
  font-family: var(--heading-font);
}

/* - Section width
--------------------------------------------------------------*/
/* Tam genişlik: geniş ekranlarda kenarlarda beyaz boşluk kalmasın */
.container-fluid {
  max-width: 100%;
  padding-left: 2rem;
  padding-right: 2rem;
}

/* - Marka vurguları (logo / taş motifi)
--------------------------------------------------------------*/
/* Hero slaytlarında slogan üstünde logo */
.hero-brand {
  height: 36px;
  width: auto;
  display: block;
  margin-bottom: 16px;
  opacity: 0.95;
}
/* Hero görselinin üzerinde logo beyaz görünür */
body.has-hero #billboard .banner-content .hero-brand {
  filter: brightness(0) invert(1);
}
/* Ana sayfa Hakkımızda bölümü ortalanmıştır */
.display-header.text-center .hero-brand {
  margin-left: auto;
  margin-right: auto;
}

/* İç sayfa başlıklarının üstünde marka nilüferi (Sepet, Mağaza, İletişim...).
   Önceden şablondan gelen genel bir elmas/taş ikonu vardı; markaya ait
   olmadığı için kaldırıldı, yerine kendi lotusumuz kondu.
   (Abonelik bölümündeki ikizi de bölümle birlikte silindi.) */
.hero-content h1.display-1::before {
  content: "";
  display: block;
  width: 46px;
  height: 31px;
  margin-bottom: 12px;
  background-image: url("images/marka/suelle-lotus.svg");
  background-size: contain;
  background-repeat: no-repeat;
  opacity: .85;
}
.hero-content.text-center h1.display-1::before { margin-inline: auto; }

/* - Mağaza ürün kartları
--------------------------------------------------------------*/
.product-grid .product-item .image-holder {
  overflow: hidden;
  border-radius: 12px;
  background: #f4f0e9;
}
.product-grid .product-item .image-holder > a > img.product-image,
.product-grid .product-item .image-holder > a > img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  transition: transform 0.45s ease;
  display: block;
}
.product-grid .product-item:hover .image-holder img {
  transform: scale(1.045);
}
.product-grid .product-item h5,
.product-grid .product-item .card-title {
  font-family: var(--heading-font);
  font-size: 20px;
  margin-top: 14px;
  letter-spacing: 0.01em;
}
.product-grid .product-item h5 a {
  color: #211d18;
  text-decoration: none;
}
.product-grid .product-item h5 a:hover {
  color: var(--bs-primary);
}
.product-grid .product-item span {
  font-variant-numeric: tabular-nums;
  font-weight: 500;
  color: #6b5b42;
}

/* Sıralama kutusu */
.sort-by select#input-sort {
  border: 1.5px solid #e2d8c8;
  border-radius: 9px;
  background-color: #fff;
  padding: 9px 36px 9px 14px;
  font-size: 14.5px;
  color: #4a453d;
  cursor: pointer;
}
.sort-by select#input-sort:focus {
  outline: none;
  border-color: #c5a47e;
  box-shadow: 0 0 0 3px rgba(197, 164, 126, 0.18);
}
.showing-product p {
  font-size: 14.5px;
  color: #8d8171;
  letter-spacing: 0.04em;
}

/* Filtreleme istemci tarafında tek sayfada çalışır — şablonun işlevsiz
   sayfalama düğmeleri kafa karıştırmasın */
.product-grid nav[aria-label],
.product-grid .pagination {
  display: none !important;
}

/* - Mağaza filtre paneli (kenar çubuğu)
--------------------------------------------------------------*/
.filter-panel {
  background: #faf8f4;
  border: 1px solid #ece4d6;
  border-radius: 12px;
  padding: 1.5rem 1.25rem;
  position: sticky;
  top: 24px;
}

.filter-block {
  margin-bottom: 1.75rem;
}

.filter-panel .filter-title {
  font-size: 13px;
  font-family: var(--body-font, sans-serif);
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none !important;
  color: #1d1d1d;
  display: inline-block;
  margin-bottom: 0.9rem;
  padding-bottom: 0.45rem;
  border-bottom: 2px solid var(--bs-primary, #c5a47e);
}

/* Arama kutusu */
.filter-search {
  position: relative;
}
.filter-search input.search-field {
  width: 100%;
  height: 46px;
  border: 1px solid #e2d8c8;
  border-radius: 8px;
  background: #fff;
  padding: 0 52px 0 14px;
  font-size: 15px;
  color: #1d1d1d;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.filter-search input.search-field::placeholder {
  color: #a89c88;
}
.filter-search input.search-field:focus {
  outline: none;
  border-color: var(--bs-primary, #c5a47e);
  box-shadow: 0 0 0 3px rgba(197, 164, 126, 0.2);
}
.filter-search button {
  position: absolute;
  right: 4px;
  top: 4px;
  width: 38px;
  height: 38px;
  border: none;
  border-radius: 6px;
  background: var(--bs-primary, #c5a47e);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.15s;
}
.filter-search button:hover {
  background: #b08f65;
}
.filter-search button svg {
  fill: #fff;
}

/* Kategori ve fiyat listeleri */
.filter-list {
  margin: 0;
  padding: 0;
}
.filter-list li + li {
  margin-top: 3px;
}
.filter-list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 44px;
  padding: 10px 12px;
  border-radius: 8px;
  border-left: 3px solid transparent;
  color: #4a453d;
  font-size: 15px;
  text-decoration: none;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.filter-list a:hover {
  background: #f1ebe0;
  color: #1d1d1d;
}
.filter-list a.is-active {
  background: #fff;
  border-left-color: var(--bs-primary, #c5a47e);
  color: #8a6d43;
  font-weight: 600;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.07);
}
.cat-count {
  font-size: 12px;
  line-height: 1;
  background: #ece4d6;
  color: #6b5b42;
  border-radius: 10px;
  padding: 4px 9px;
  min-width: 28px;
  text-align: center;
}
.filter-list a.is-active .cat-count {
  background: var(--bs-primary, #c5a47e);
  color: #fff;
}
.cat-count:empty {
  display: none;
}

/* Mobil: panel içerikten sonra gelir; alttaki fazla boşluğu topla */
@media (max-width: 767px) {
  .filter-panel {
    position: static;
    margin-bottom: 0;
  }
  .product-grid.py-5 {
    padding-bottom: 1.5rem !important;
  }
}

/* Header tam genişlik: logo en solda, menü/ikonlar en sağda */
.site-header .container-fluid {
  max-width: 100%;
}

/* Hero tam genişlik: kenarlarda beyaz boşluk kalmasın */
#billboard .container-fluid {
  max-width: 100%;
  padding-left: 0;
  padding-right: 0;
}
#billboard .row {
  margin-left: 0;
  margin-right: 0;
}
#billboard .row > [class*="col"] {
  padding-left: 0;
  padding-right: 0;
}

/*--------------------------------------------------------------
/** 2.10 Buttons
--------------------------------------------------------------*/
/* - Button Sizes
------------------------------------------------------------- */
.btn.btn-small {
  padding: 0.8em 1.8em;
  font-size: 0.65em;
}

.btn.btn-medium {
  padding: 1.1em 2.8em;
  font-size: 1.1em;
  font-weight: 300;
  letter-spacing: 1px;
}

.btn.btn-large {
  padding: 2.4em 5.1em;
  font-size: 1.8em;
}

/* - Button Shapes
------------------------------------------------------------- */
.btn.btn-rounded,
.btn.btn-rounded::after {
  border-radius: 6px;
}

.btn.btn-pill,
.btn.btn-pill::after {
  border-radius: 2em;
}

/* button outline */
.btn.btn-outline-dark,
.btn.btn-outline-light,
.btn.btn-outline-accent {
  background: transparent;
  text-shadow: none;
  box-shadow: none;
  border: 1px solid;
}

.btn.btn-outline-dark:hover::after,
.btn.btn-outline-light:hover::after {
  background-color: transparent;
}

.btn.btn-outline-dark {
  border-color: rgba(0, 0, 0, 1);
  color: var(--bs-dark);
}

.btn.btn-outline-dark:hover {
  background: var(--bs-dark);
  color: var(--bs-light);
}

.btn.btn-outline-light {
  border-color: rgba(255, 255, 255, 0.5);
  color: var(--bs-light);
}

.btn.btn-outline-light:hover {
  background: var(--bs-primary);
  color: var(--bs-light);
  border-color: var(--bs-primary);
}

.btn.btn-outline-gray {
  background: transparent;
  border-color: var(--gray-color-600);
  color: var(--bs-dark);
}

.btn.btn-outline-gray:hover {
  border-color: var(--bs-dark);
  color: var(--bs-dark) !important;
}

.btn.btn-outline-accent {
  background: transparent;
  border-color: var(--accent-color);
  color: var(--bs-dark);
}

.btn.btn-outline-accent:hover {
  border-color: var(--bs-dark);
  color: var(--bs-dark) !important;
}

.btn.btn-full {
  display: block;
  margin: .85em 0;
  width: 100%;
  letter-spacing: 0.12em;
}

/* no border radius */
.btn-rounded-none,
.btn-rounded-none::after {
  border-radius: 0;
}

/* - Buttons Color Scheme
------------------------------------------------------------- */
.btn.btn-normal {
  border: none;
  color: var(--bs-dark);
  text-decoration: underline;
}

.btn.btn-normal:hover {
  text-decoration: none;
}

.btn.btn-accent {
  color: var(--bs-light);
  background-color: var(--accent-color);
  border: none;
}

.btn.btn-accent:hover {
  color: var(--bs-light) !important;
  background-color: var(--bs-primary);
}

.btn.btn-black {
  background-color: var(--bs-dark);
  color: var(--bs-light);
  border: none;
}

.btn.btn-black:hover {
  background-color: var(--bs-primary);
  color: var(--bs-light);
}

.btn.btn-light {
  background-color: var(--bs-light);
  color: var(--bs-dark);
  border: none;
}

.btn.btn-light:hover {
  background-color: var(--bs-primary);
  color: var(--bs-light);
}

.btn.btn-primary {
  background: var(--bs-primary);
  color: var(--bs-light);
  border: none;
}

.btn.btn-primary:hover {
  background-color: var(--bs-dark);
  color: var(--bs-light);
}

/* - Buttons Aligns
------------------------------------------------------------- */
.btn-left {
  text-align: left;
  display: block;
}

.btn-center {
  text-align: center;
  display: block;
}

.btn-right {
  text-align: right;
  display: block;
}

/*----------------------------------------------*/
/* 2 SITE STRUCTURE */
/*----------------------------------------------*/

/*----- 6.1 Preloader
--------------------------------------------------------------*/
*#preloader {
  width: 100%;
  height: 100%;
  position: fixed;
  z-index: 9999;
  background: #dfdad4;
  display: flex;
  justify-content: center;
  align-items: center;
}

.loader {
  display: inline-block;
  width: 90px;
  height: 90px;
  border: 9px solid #fff;
  border-style: dotted;
  border-radius: 300px;
  animation: loader 9s infinite ease;
}

@keyframes loader {
  0% {
    transform: rotate(0deg);
  }

  25% {
    transform: rotate(180deg);
  }

  50% {
    transform: rotate(180deg);
  }

  75% {
    transform: rotate(360deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

/* - Text Effect
------------------------------------------------------------- */
.pseudo-text-effect {
  position: relative;
  padding: 0;
  overflow: hidden;
  transition: transform 0.5s;
  display: block;
}

.pseudo-text-effect::after {
  content: attr(data-after);
  display: inline-block;
  transform: translateY(100%);
  position: absolute;
  left: 0;
  transition: inherit;
  color: var(--bs-dark);
}

.pseudo-text-effect>span {
  display: inline-block;
  transform: translateY(0%);
  transition: inherit;
}

.pseudo-text-effect:hover>span {
  transform: translateY(-100%);
}

.pseudo-text-effect:hover::after {
  transform: translateY(0%);
}


/*--- Image hover Effects
-----------------------------------------------*/
.image-zoom-effect {
  overflow: hidden;
}

.image-zoom-effect .image-holder {
  width: 100%;
  height: auto;
  overflow: hidden;
  transform: scale(1);
  transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.image-zoom-effect:hover .image-holder {
  transform: scale(0.95);
}

.image-zoom-effect img {
  transform: scale(1);
  will-change: transform;
  transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  z-index: 0;
}

.image-zoom-effect:hover img {
  transform: scale(1.1);
}

/* Link Effect
------------------------------------------------------------- */
.link-effect {
  cursor: pointer;
}

.link-effect a {
  position: relative;
  padding: 0;
  overflow: hidden;
  transition: transform 0.5s;
  display: block;
}

.link-effect a::after {
  content: attr(data-after);
  display: inline-block;
  transform: translateY(100%);
  position: absolute;
  left: 0;
  font-size: 1rem;
  text-align: inherit;
  text-transform: uppercase;
  transition: inherit;
}

.link-effect a>span {
  display: inline-block;
  transform: translateY(0%);
  transition: inherit;
}

.link-effect:hover a>span {
  transform: translateY(-100%);
}

.link-effect:hover a::after {
  transform: translateY(0%);
}

/* Social Link Hover
------------------------------------------------------------- */
.icon-box-effect {
  overflow: hidden;
  cursor: pointer;
}

.icon-box-effect .social-links libutton {
  position: relative;
  bottom: 80px;
  opacity: 0;
  display: inline-block;
  margin: 7px;
  padding: 5px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background-color: var(--secondary-color);
}

.icon-box-effect .social-links button:hover {
  background-color: var(--bs-primary);
}

.icon-box-effect .social-links svg {
  color: var(--light-color);
  animation-name: rotate-icon;
}

.icon-box-effect .social-links button:nth-child(1) {
  transition: 1.0s;
}

.icon-box-effect .social-links button:nth-child(2) {
  transition: 1.2s;
}

.icon-box-effect .social-links button:nth-child(3) {
  transition: 1.5s;
}

.icon-box-effect .social-links button:nth-child(4) {
  transition: 1.8s;
}

.icon-box-effect .social-links button:nth-child(5) {
  transition: 2.4s;
}

.icon-box-effect:hover>.product-card .social-links button {
  bottom: 200px;
  opacity: 1;
}

/*  Image Overlay
------------------------------------------------------------- */
.image-overlay {
  cursor: pointer;
}

.image-overlay .product-image {
  overflow: hidden;
}

.image-overlay .product-image img {
  transform: translateY(0);
  transition: transform 0.6s ease-in-out;
}

.box-slide {
  left: 0;
  bottom: 0;
  transform: translateY(100%);
  color: var(--bs-dark);
  transition: transform 0.6s ease-in-out;
}

.image-overlay:hover .box-slide {
  transform: translateY(0%);
}

.image-overlay:hover img {
  transform: translateY(-10%);
}

/* Button Hover Effects 2
------------------------------------------------------------- */
.btn.btn-arrow {
  color: var(--bs-light);
  background-color: var(--bs-primary);
  border-radius: 260px;
}

.btn.btn-arrow.btn-bg-light {
  color: var(--bs-dark);
  background-color: var(--bs-light);
}

.btn.btn-arrow.outline-dark {
  color: var(--bs-dark);
  background-color: transparent;
  border: 1px solid var(--bs-dark);
}

.btn.btn-arrow.btn-normal {
  color: var(--bs-dark);
  background-color: transparent;
  border: none;
  text-decoration: underline;
}

.btn.btn-arrow span {
  transition: all 300ms ease-out;
  will-change: transform;
}

.btn.btn-arrow:hover span {
  transform: translate3d(-7px, 0, 0);
}

.btn.btn-arrow svg {
  position: absolute;
  top: 32px;
  right: 30px;
  transform: translateY(-50%);
  transition: all 300ms ease-out;
  will-change: right, opacity;
}

.btn.btn-arrow:hover svg {
  opacity: 0;
  right: 0;
}

.btn svg.icon-arrow {
  width: 25px;
  height: 25px;
}

/* - Search Bar
------------------------------------------------------------- */
.search-box {
  background: var(--bs-light);
  height: 0px;
  transition: height 0.3s ease-out;
}

.search-box.active {
  height: 90px;
}

.close-button {
  top: 20px;
  right: 120px;
  cursor: pointer;
  z-index: 9;
}

.search-box input.search-input {
  width: 50%;
  height: 30px;
  /* min-width 420px sabitti: 390 piksellik telefonda arama açılınca kutu
     ekrandan taşıyordu. Dar ekranda ekrana sığar. */
  min-width: min(420px, calc(100vw - 48px));
  border-radius: 80px;
  border-color: rgb(0 0 0 / 25%);
}

.search-box .search-wrap svg {
  color: var(--bs-primary);
}

.search-box svg.search {
  margin-left: -50px;
}

/* - Sticky
------------------------------------------------------------- */
.sticky {
  position: sticky;
  top: 0;
}

/* 1. Header
/*----------------------------------------------*/
.site-header {
  z-index: 10;
  transition: background 0.3s ease-out;
}

.navbar-nav .nav-item a.nav-link {
  color: var(--accent-color);
}

.navbar-nav .nav-item a.nav-link.active,
.navbar-nav .nav-item a.nav-link:focus,
.navbar-nav .nav-item a.nav-link:hover {
  color: var(--bs-primary);
}

.dropdown-item:focus,
.dropdown-item:hover {
  background-color: var(--bs-secondary);
}

/*------------ Offcanvas -------------- */
#header-nav .navbar-toggler:focus {
  box-shadow: none;
}

#header-nav .offcanvas.show {
  z-index: 9999;
  background-color: var(--bs-light);
}

#header-nav .offcanvas-end {
  width: 500px;
}

.offcanvas.show .nav-item a.nav-link {
  font-size: 2em;
}

.offcanvas.show .offcanvas-body .navbar-nav {
  align-items: unset !important;
  padding-left: 20px;
}

/*------------ Top User Icons -----------*/
.site-header .user-items svg {
  cursor: pointer;
}

/* 28 Temmuz: burada mobilde ikon grubunu (arama/hesap/sepet) GİZLEYEN bir
   kural vardı — menü offcanvas çekmecesine katlandığı için gerekliydi.
   Üst çubuk artık telefonda da tek satır durduğu için ikonlar görünmeli;
   sepet sayacı da bu grupta. Kural css/mobile.css içinde geri açılıyor. */

/*------------ Hero sayfası: header, hero görselinin üstüne şeffaf biner -----------*/
body.has-hero .site-header {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  background: transparent;
}

body.has-hero .site-header .navbar-nav .nav-item a.nav-link,
body.has-hero #lang-pill-desktop a[style*="background:#111"],
body.has-hero #lang-pill-mobile a[style*="background:#111"] {
  color: #fff !important;
}

body.has-hero .site-header .user-items svg,
body.has-hero .site-header .navbar-toggler svg,
body.has-hero .site-header .search-item svg {
  fill: #fff !important;
  color: #fff !important; /* fill="currentColor" kullanan ikonlar (büyüteç) için */
}

/* Masaüstünde menü yazıları daha büyük ve rahat okunur */
@media (min-width: 992px) {
  .navbar-nav .nav-item a.nav-link {
    font-size: 17.5px;
    font-weight: 500;
    letter-spacing: 0.02em;
  }
  .site-header .user-items svg {
    width: 20px;
    height: 20px;
  }
}

body.has-hero .site-header .navbar-brand img {
  filter: brightness(0) invert(1);
}

/* offcanvas menü açıldığında normal (koyu metin / açık zemin) haline döner */
body.has-hero .offcanvas.show .nav-item a.nav-link {
  color: var(--accent-color) !important;
}
body.has-hero .offcanvas.show .user-items svg {
  fill: #111 !important;
}

/* Hero görselinin üst kısmına, header okunaklı olsun diye hafif koyu geçiş */
body.has-hero #billboard .banner-item {
  position: relative;
}
body.has-hero #billboard .banner-item::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 190px;
  background: linear-gradient(to bottom, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0));
  z-index: 1;
  pointer-events: none;
}
body.has-hero #billboard .banner-content {
  position: relative;
  z-index: 2;
}

/* Masaüstü: görsel HİÇ kırpılmadan sağda tam boy gösterilir;
   kalan sol alan görselle kaynaşan koyu zeminle dolar (bkz. store.js styleHeroSlides) */
@media (min-width: 992px) {
  body.has-hero #billboard .banner-item {
    /* Hero + alttaki bilgi bandı birlikte tam ekran yüksekliğini doldursun */
    height: calc(100vh - var(--announce-h, 40px)) !important;
    min-height: 560px;
  }
  body.has-hero #billboard .banner-content h2,
  body.has-hero #billboard .banner-content p {
    color: #fff !important;
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);
  }
  /* Yazılar sol kenara yapışmasın */
  body.has-hero #billboard .banner-content {
    padding-left: 6vw !important;
  }
}

/* 2. Billboard
/*----------------------------------------------*/
/*------------Swiper Arrow -----------*/
.banner-content p {
  width: 50%;
}

#billboard .swiper-pagination {
  left: -720px;
  bottom: 160px;
}

.swiper-pagination .swiper-pagination-bullet {
  width: 10px;
  height: 10px;
  position: relative;
  cursor: pointer;
  border-color: transparent;
  transition: border-color 0.3s ease-out;
}

.swiper-pagination .swiper-pagination-bullet::after {
  content: '';
  position: absolute;
  width: 10px;
  height: 10px;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  border-radius: 50px;
  border: 1px solid #868686;
  transform: scale(1);
  transition: transform 0.3s ease-out;
}

.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,
.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {
  margin: 0 10px !important;
}

.swiper-pagination span.swiper-pagination-bullet.swiper-pagination-bullet-active:after,
.swiper-pagination span.swiper-pagination-bullet:hover:after {
  transform: scale(2);
}

@media only screen and (max-width: 1200px) {
  #billboard .banner-content {
    background-color: rgba(246, 245, 242, 0.5);
    height: 100%;
  }

  .banner-content h1.display-1 {
    font-size: 4.5em;
  }

  .banner-content p {
    width: 90%;
  }

  #billboard .swiper-pagination {
    right: 0;
    bottom: 60px;
    left: 0;
  }
}

@media only screen and (max-width: 768px) {
  .banner-content h1.display-1 {
    font-size: 3.5em;
  }
}

/* 3. Icon Box - Company Services
/*----------------------------------------------*/
.icon-box .icon-box-icon svg {
  width: 50px;
  height: 50px;
  color: var(--bs-primary);
}

.icon-box .icon-box-content {
  width: 60%;
}

.icon-box-content h3.card-title {
  font-size: 1.5em;
}

/* 4. Featured Product
/*----------------------------------------------*/
.product-store .swiper-horizontal>.swiper-pagination-bullets,
.product-store .swiper-pagination-bullets.swiper-pagination-horizontal,
.product-store .swiper-pagination-custom,
.product-store .swiper-pagination-fraction {
  position: relative !important;
}

/* 5. Testimonial
/*----------------------------------------------*/
.review-item blockquote {
  font-weight: 300;
  line-height: 1.8;
}

.review-content .swiper-arrow {
  top: 50%;
  bottom: 0;
  z-index: 2;
  border: 1px solid var(--bs-gray-400);
  color: var(--bs-gray-400);
  border-radius: 50%;
  width: 50px;
  height: 50px;
  transition: 0.4s ease-in-out;
}

.review-content .swiper-arrow:hover {
  border: 1px solid var(--bs-dark);
  color: var(--bs-dark);
}

.review-content .swiper-arrow.swiper-arrow-prev {
  left: -80px;
}

.review-content .swiper-arrow.swiper-arrow-next {
  right: -80px;
}

.review-content .quotation svg.quote {
  color: var(--bs-gray-200);
}

#testimonials .swiper-pagination {
  display: none;
}

@media only screen and (max-width: 901px) {
  #testimonials .swiper-pagination {
    display: block;
    bottom: 60px;
  }

  .review-content .swiper-arrow {
    display: none !important;
  }
}

.banner-content-text {
  left: 10%;
  bottom: 16%;
}

/* 6. collections
/*----------------------------------------------*/

/* 7. Subscribe
/*----------------------------------------------*/
.subscribe-content input,
.subscribe-content button {
  height: 65px;
}

/* 9. Brand Collection
/*----------------------------------------------*/
#brand-collection a img {
  opacity: 0.3;
  transition: opacity 0.3s ease-out;
}

#brand-collection a:hover img {
  opacity: 1;
}

/* 10. Blog Page
/*----------------------------------------------*/
.sidebar .widget-search-bar form {
  height: 50px;
}

.sidebar .widget-search-bar form .search-field {
  width: 100%;
}

.sidebar .widget-search-bar .search-icon {
  width: 60px;
}

/* 10. Shop Page
/*----------------------------------------------*/
.product-grid .product-card .cart-concern {
  bottom: -20px;
  left: 0;
  opacity: 0;
  transition: 0.9s all;
}

.product-grid .product-card:hover .cart-concern {
  bottom: 0;
  opacity: 1;
  transform: rotate(0deg);
}

/* 11. Single Product Page
/*----------------------------------------------*/
/* product-thumbnail-slider */
.product-thumbnail-slider {
  height: 790px;
}

/* product-info */
.rating-container .rating svg {
  color: var(--bs-yellow);
}

.product-quantity .input-group button.btn-number {
  width: 100%;
  height: 100%;
}

/* product-tabs */
.product-tabs .nav-tabs .nav-item.show .nav-link,
.product-tabs .nav-tabs .nav-link:hover,
.product-tabs .nav-tabs .nav-link.active {
  background-color: var(--bs-primary);
  color: var(--bs-light) !important;
}

/* 12. FAQs Page
/*----------------------------------------------*/
.accordion .accordion-button::after {
  content: "";
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='plus' viewBox='0 0 16 16'%3E%3Cpath d='M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
}

.accordion .accordion-button:not(.collapsed)::after {
  content: "";
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='minus' viewBox='0 0 16 16'%3E%3Cpath d='M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z'/%3E%3C/svg%3E");
  transform: rotate(0deg);
}

/* 13. Blog Page
/*----------------------------------------------*/
.pagination .page-link {
  color: var(--bs-primary);
  background-color: var(--bs-light);
  border: 1px solid var(--bs-primary);
}

.pagination .page-item.active .page-link {
  color: var(--bs-light);
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.pagination .page-item a.page-link {
  height: 40px;
}

.pagination .page-item a.page-link:hover,
.pagination .page-item a.page-link:focus {
  background-color: var(--bs-primary);
  color: var(--bs-light);
}
/*--------------------------------------------------------------
/** OKUNABİLİRLİK + KOYU FOOTER (marka ayırt edici)
--------------------------------------------------------------*/
/* Gövde yazısı: ince (300) yerine normal kalınlık — her yerde daha okunaklı */
body {
  font-weight: 400;
}

/* Koyu footer */
#footer {
  background: #1d1a16;
  color: #d9d2c5;
}
#footer .widget-title {
  color: #fff;
  font-size: 34px;
  margin-bottom: 18px;
}
#footer a {
  color: #d9d2c5;
  font-size: 24px;
  text-decoration: none;
  transition: color 0.15s;
}
#footer a:hover {
  color: #c5a47e;
}
#footer .menu-item {
  padding-bottom: 14px !important;
}
#footer p {
  font-size: 22px;
  color: #beb5a4;
  line-height: 1.75;
}
#footer .contact-item a {
  display: inline-block;
  padding: 2px 0;
}
#footer .copyright p {
  font-size: 17px;
  color: #94897a;
}
#footer .copyright a {
  font-size: 17px;
  color: #94897a;
  text-decoration: underline;
}
#footer .footer-menu > img {
  filter: brightness(0) invert(1);
}
#footer .contact-item p {
  margin-bottom: 8px;
}

/* Ufak kalan yazıları büyüt */
#announce-bar {
  font-size: 14.5px !important;
}
.breadcrumbs,
.breadcrumbs a {
  font-size: 15.5px;
}
.filter-panel .filter-title {
  font-size: 14px;
}
.filter-list a {
  font-size: 16px;
}
.cat-count {
  font-size: 13px;
}
.showing-product p,
.sort-by select#input-sort {
  font-size: 15.5px;
}
.product-grid .product-item span {
  font-size: 17px;
}

/* =========================================================
   SUELLE — Mağaza & Ürün sayfası tipografi iyileştirmeleri
   ========================================================= */



/* Ürün başlığı ve fiyat.
   NOT: burada eskiden üçüncü bir serif (Cormorant Upright) !important ile
   dayatılıyordu; sitede aynı anda üç başlık fontu vardı. Tek başlık fontu
   var(--heading-font) üzerinden geliyor. */
.product-title {
  font-family: var(--heading-font);
  font-size: var(--fs-baslik-2);
  font-weight: 400;
  line-height: var(--lh-baslik);
  letter-spacing: -0.005em;
  color: var(--renk-metin);
}
.product-price .fs-2 {
  font-family: var(--body-font);
  font-size: var(--fs-2xl) !important;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  color: var(--renk-metin) !important;
}
.product-info > p {
  font-size: var(--fs-base);
  line-height: var(--lh-govde);
  color: var(--n-600);
}
.detail-list ul li { font-size: var(--fs-sm); color: var(--n-600); }
.detail-list ul li strong { color: var(--renk-metin); letter-spacing: .04em; }

/* Sekmeler */
.product-tabs .nav-tabs .nav-link {
  font-family: var(--body-font);
  font-size: var(--fs-sm);
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.product-tabs .tab-content h5 {
  font-family: var(--heading-font);
  font-size: var(--fs-xl);
  color: var(--renk-metin);
}
.product-tabs .tab-content p,
.product-tabs .tab-content li {
  font-size: var(--fs-base);
  line-height: var(--lh-govde);
  color: var(--n-600);
}

/* Mağaza kartları: başlık ve fiyat (ana sayfa kartlarıyla aynı ölçek) */
.product-item h5 a,
.product-card .card-title a {
  font-family: var(--heading-font);
  font-size: var(--fs-lg);
  font-weight: 400;
  letter-spacing: -0.005em;
}
.product-item .product-content span,
.product-card span {
  font-family: var(--body-font);
  font-size: var(--fs-base);
  color: var(--n-600);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}



/* İndirim rozetleri ve fırsat şeridi */
.disc-badge {
  position: absolute; top: 12px; left: 12px; z-index: 5;
  background: #b02a37; color: #fff; font-weight: 700;
  font-size: 13.5px; letter-spacing: 0.04em;
  padding: 5px 11px; border-radius: 20px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.25);
  font-family: var(--body-font);
}
.deal-note {
  background: #fdf1ee; border: 1px solid #f3cfc6; color: #8a2a35;
  border-radius: 10px; padding: 10px 16px; margin: 6px 0 16px;
  font-size: 15px;
}
#bundle-strip h3 { font-size: 21px; }


/* =========================================================
   İÇ SAYFA BAŞLIK BANDI — dev boşlukları kaldır (tüm sayfalar)
   Ana sayfa hero'su (#billboard) etkilenmez; bu kural yalnız
   "Ürün / Mağaza / Sepet / Hakkımızda..." başlık bantları için.
   ========================================================= */
section.hero-section.margin-large {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  min-height: auto !important;
  height: auto !important;
  padding: 26px 0 14px !important;
}
.hero-section .hero-content h1,
.hero-section .hero-content h1.display-1 {
  font-size: clamp(36px, 4.5vw, 58px);
  margin-bottom: 2px;
}
.hero-section .breadcrumbs { margin-top: 2px; }
/* Başlık bandından sonra gelen bölümün üst boşluğunu da azalt */
body:has(section.hero-section.margin-large) #product-detail,
body:has(section.hero-section.margin-large) .single-product { padding-top: 24px !important; }

/* ==== İNTERAKTİF VİDEO HERO ==== */
#hero-interactive {
  background: #efe9e0;
  line-height: 0;
  display: flex;
  justify-content: center;
  /* Tam ekran: altta sonraki bölümden hiçbir şey sızmaz.
     Sabit konum — sayfa kayarken hero yerinde durur, içerik üzerine perde gibi kayar.
     (sticky, sitenin body overflow-x:hidden ayarı yüzünden çalışmıyor.) */
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  height: 100svh;
  z-index: 0;
  /* Kaydırınca uygulanan blur/scale kenarlardan taşmasın */
  overflow: hidden;
}
/* Hero fixed olduğu için akışta yerini bu tutar */
#hero-alan {
  height: 100vh;
  height: 100svh;
}
/* Sonraki bölümler hero'nun ÜSTÜNE kayar — kendi zeminleri olmalı.
   DİKKAT: buraya "footer" dahil edilirse koyu footer beyaza dönüyor ve
   beyaz footer başlıkları görünmez oluyordu. Footer kendi zeminini
   #footer kuralından alır; burada yalnızca yığın sırası verilir. */
#hero-alan ~ section,
#hero-alan ~ div {
  position: relative;
  z-index: 1;
  background-color: var(--renk-zemin);
}
#hero-alan ~ footer {
  position: relative;
  z-index: 1;
}
/* Koleksiyon kartları dikişe yapışmasın; üstten rahat bir nefes payı. */
#hero-alan + section { padding-top: 3.5em !important; }
/* Perde gibi kayan ilk bölümün üst kenarı sert bir çizgi olmasın:
   içerik TAM OPAK kalır (kart görselleri bozulmaz), yalnızca üst kenara
   yumuşak bir gölge düşer; hero'nun üzerine yumuşakça biner. */
#hero-alan + section {
  box-shadow: 0 -22px 34px -14px rgba(46, 32, 20, 0.22);
}

/* Aşağı kaydır göstergesi */
#hero-scroll {
  position: absolute;
  left: 50%;
  bottom: 26px;
  transform: translateX(-50%);
  z-index: 4;
  background: rgba(253, 252, 249, 0.85);
  border: 1px solid rgba(112, 66, 4, 0.2);
  border-radius: 999px;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  animation: heroZipla 2s ease-in-out infinite;
  transition: background 0.2s ease;
  padding: 0;
}
#hero-scroll:hover { background: #fff; }
#hero-scroll.gizli {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}
/* Perde kapanırken hero arayüzü görünmesin */
#hero-interactive.perde-kapali #hero-panel,
#hero-interactive.perde-kapali #hero-dots {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}
#hero-scroll::after {
  content: "";
  width: 11px;
  height: 11px;
  border-right: 2px solid var(--bs-primary, #704204);
  border-bottom: 2px solid var(--bs-primary, #704204);
  transform: rotate(45deg) translate(-2px, -2px);
}
@keyframes heroZipla {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(7px); }
}
@media (prefers-reduced-motion: reduce) {
  #hero-scroll { animation: none; }
}
/* Video ortalanır; yüksekliği ekranı boğmayacak şekilde sınırlı.
   Doğal oranı korunur — hiçbir ekranda kırpılmaz, yakınlaşmaz. */
.hero-ic {
  width: 100%;
  height: 100%;
  line-height: 0;
  /* Kaydırma ile gelen blur/scale burada uygulanır (JS).
     Merkez odaklı ölçek + kısa yumuşatma ile akıcı sayfa geçişi. */
  transform-origin: center center;
  will-change: filter, transform;
  transition: filter 0.12s ease-out, transform 0.12s ease-out;
}
#hero-interactive video,
#hero-frame {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
#hero-frame {
  position: absolute;
  inset: 0;
}
#hero-frame {
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
}
#hero-frame.gorunur { opacity: 1; }

#hero-dots {
  right: 36px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  gap: 14px;
  z-index: 4;
}
.hero-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid #fff;
  background: rgba(255, 255, 255, 0.35);
  cursor: pointer;
  padding: 0;
  transition: all 0.25s ease;
}
.hero-dot:hover { transform: scale(1.25); }
.hero-dot.aktif {
  background: var(--bs-primary, #704204);
  border-color: #fff;
  transform: scale(1.3);
}

/* Panel konumu her durakta değişir — ürünün olduğu bölgeyi kapatmaz.
   Konum sınıfı JS tarafından atanır (pos-sol-orta, pos-sag-orta, ...). */
#hero-panel {
  position: absolute;
  z-index: 5;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease, transform 0.35s ease;
}
#hero-panel.acik { opacity: 1; pointer-events: auto; }

/* --- dikey ortalı --- */
#hero-panel.pos-sol-orta,
#hero-panel.pos-sag-orta {
  top: 50%;
  transform: translateY(calc(-50% + 16px));
}
#hero-panel.pos-sol-orta.acik,
#hero-panel.pos-sag-orta.acik { transform: translateY(-50%); }
#hero-panel.pos-sol-orta { left: 48px; }
#hero-panel.pos-sag-orta { right: 108px; }

/* --- üst / alt --- */
#hero-panel.pos-sol-ust,
#hero-panel.pos-sag-ust { top: 104px; transform: translateY(16px); }
#hero-panel.pos-sol-alt,
#hero-panel.pos-sag-alt { bottom: 96px; transform: translateY(16px); }
#hero-panel.pos-sol-ust.acik,
#hero-panel.pos-sag-ust.acik,
#hero-panel.pos-sol-alt.acik,
#hero-panel.pos-sag-alt.acik { transform: translateY(0); }
#hero-panel.pos-sol-ust,
#hero-panel.pos-sol-alt { left: 48px; }
#hero-panel.pos-sag-ust,
#hero-panel.pos-sag-alt { right: 108px; }
.hero-panel-ic {
  background: rgba(253, 252, 249, 0.92);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(112, 66, 4, 0.15);
  border-radius: 14px;
  padding: 22px 26px;
  max-width: 520px;
  box-shadow: 0 12px 40px rgba(61, 42, 16, 0.18);
}
#hero-panel-title {
  font-family: var(--heading-font);
  color: #2c1e0a;
  font-size: 1.6rem;
}
.hero-panel-alt {
  color: #8a7355;
  font-size: 0.85rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
#hero-panel-thumbs {
  display: flex;
  gap: 12px;
  margin-bottom: 16px;
}
.hero-thumb {
  border: 2px solid transparent;
  border-radius: 10px;
  padding: 0;
  background: none;
  cursor: pointer;
  overflow: hidden;
  width: 124px;
  text-align: center;
  transition: border-color 0.2s ease, transform 0.2s ease;
}
.hero-thumb img {
  width: 124px;
  height: 124px;
  object-fit: cover;
  border-radius: 8px;
  display: block;
}
.hero-thumb span {
  display: block;
  font-size: 0.72rem;
  color: #5a4a30;
  padding: 4px 2px;
  line-height: 1.2;
}
.hero-thumb:hover { transform: translateY(-2px); }
.hero-thumb.secili { border-color: var(--bs-primary, #704204); }
.hero-thumb.yakinda {
  width: 124px;
  height: 124px;
  border: 1px dashed rgba(112, 66, 4, 0.35);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: default;
}
.hero-thumb.yakinda span { color: #b3a184; font-size: 0.7rem; }

.hero-panel-alt-satir {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.hero-koleksiyon {
  color: var(--bs-primary, #704204);
  font-size: 0.9rem;
  text-decoration: underline;
  text-underline-offset: 3px;
}
#hero-continue {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--bs-primary, #704204);
  color: #fff;
  border: none;
  border-radius: 999px;
  padding: 10px 22px;
  font-size: 0.95rem;
  cursor: pointer;
  transition: background 0.2s ease, transform 0.2s ease;
}
#hero-continue:hover { background: #8a5406; transform: translateX(2px); }
#hero-continue .arrow-right { fill: currentColor; }

@media (max-width: 767px) {
  /* Dar ekranda video kısalır; panel açıkken altında kendi alanı açılır */
  .hero-ic {
    height: auto;
    width: 100%;
    padding-bottom: 0;
    transition: padding-bottom 0.35s ease;
  }
  #hero-interactive video { height: auto; }
  #hero-frame { height: calc(100% - var(--panel-alan, 0px)); bottom: auto; }
  .hero-ic:has(#hero-panel.acik) { padding-bottom: 215px; --panel-alan: 215px; }
  #hero-dots {
    right: auto;
    left: 50%;
    top: auto;
    bottom: 10px;
    transform: translateX(-50%);
    flex-direction: row;
    transition: bottom 0.35s ease;
  }
  .hero-ic:has(#hero-panel.acik) #hero-dots { bottom: 225px; }
  /* Mobilde konum sınıfları geçersiz — panel her zaman videonun altında */
  #hero-panel,
  #hero-panel[class*="pos-"] {
    left: 12px;
    right: 12px;
    bottom: 12px;
    top: auto;
    transform: translateY(16px);
  }
  #hero-panel.acik,
  #hero-panel[class*="pos-"].acik { transform: translateY(0); }
  .hero-panel-ic { max-width: none; padding: 14px 16px; }
  #hero-panel-title { font-size: 1.25rem; }
  #hero-panel-thumbs { gap: 8px; margin-bottom: 12px; }
  .hero-thumb, .hero-thumb img, .hero-thumb.yakinda { width: 72px; }
  .hero-thumb img, .hero-thumb.yakinda { height: 72px; }
}


/*==============================================================================
  SUELLE — TASARIM SİSTEMİ UYGULAMA KATMANI  ("Sessiz Lüks")
  ------------------------------------------------------------------------------
  Bu bölüm şablonun keyfi değerlerini dosya başındaki token'lara bağlar.
  Sıra: 1 Tipografi · 2 Ritim · 3 Header · 4 Butonlar · 5 Ürün kartı
        6 Koleksiyon · 7 Yorumlar · 8 Servisler · 9 Form · 10 Footer
        11 Erişilebilirlik
==============================================================================*/

/*--- 1. TİPOGRAFİ -----------------------------------------------------------*/
body {
  font-size: var(--fs-base);
  font-weight: 400;
  line-height: var(--lh-govde);
  color: var(--renk-metin);
  background-color: var(--renk-zemin);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6,
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
  font-family: var(--heading-font);
  font-weight: 400;
  color: var(--renk-metin);
  letter-spacing: -0.005em;
}

/* Akışkan başlık ölçeği — 72px sabit başlıklar kaldırıldı */
h1, .display-1, .display-2 { font-size: var(--fs-baslik-1); line-height: var(--lh-sikisik); }
h2, .display-3, .display-4 { font-size: var(--fs-baslik-2); line-height: var(--lh-baslik); }
h3, .display-5, .display-6 { font-size: var(--fs-baslik-3); line-height: var(--lh-baslik); }
h4 { font-size: var(--fs-xl); line-height: var(--lh-baslik); }
h5 { font-size: var(--fs-lg); line-height: var(--lh-baslik); }
h6 { font-size: var(--fs-md); line-height: var(--lh-baslik); }

/* Okunabilir satır uzunluğu: geniş ekranda 110 karakterlik satırlar bitti */
p { max-width: var(--olcu-metin); }
.text-center p,
.display-header.text-center p { margin-left: auto; margin-right: auto; }

/* Bölüm başlığı bloğu: başlık + yanındaki "Tümünü Gör" bağlantısı */
.display-header {
  align-items: baseline;
  gap: var(--sp-4);
  margin-bottom: var(--sp-6);
}
.display-header h2 { margin-bottom: 0; }

/* İnce altın hairline: sessiz lüksün tek süsü */
.display-header.text-center h2::after {
  content: "";
  display: block;
  width: 44px;
  height: 1px;
  margin: var(--sp-4) auto 0;
  background: var(--gold-400);
}

/*--- 2. DİKEY RİTİM ---------------------------------------------------------*/
/* Eskiden 160px üst + 160px alt idi: bölümler arası 320px boşluk oluşuyordu. */
.padding-large  { padding-top: var(--bolum-bosluk); padding-bottom: var(--bolum-bosluk); }
.padding-medium { padding-top: calc(var(--bolum-bosluk) * .66); padding-bottom: calc(var(--bolum-bosluk) * .66); }
.padding-small  { padding-top: calc(var(--bolum-bosluk) * .4); padding-bottom: calc(var(--bolum-bosluk) * .4); }
.margin-large   { margin-top: var(--bolum-bosluk); margin-bottom: var(--bolum-bosluk); }
.margin-medium  { margin-top: calc(var(--bolum-bosluk) * .66); margin-bottom: calc(var(--bolum-bosluk) * .66); }
.margin-small   { margin-top: calc(var(--bolum-bosluk) * .4); margin-bottom: calc(var(--bolum-bosluk) * .4); }

@media only screen and (max-width: 768px) {
  .margin-small, .margin-medium, .margin-large {
    margin-top: var(--bolum-bosluk);
    margin-bottom: var(--bolum-bosluk);
  }
}

/* Sayfa kenar payı da ölçeğe bağlandı */
.container-fluid {
  padding-left: clamp(var(--sp-4), 3.5vw, var(--sp-8));
  padding-right: clamp(var(--sp-4), 3.5vw, var(--sp-8));
}

/*--- 3. HEADER: sabit, kaydırınca opak --------------------------------------*/
/* Durum sınıfı <body> üzerindedir (js/script.js). Şablonun `background`
   KISAYOLU ile çakışmamak için burada hep longhand + !important kullanılır. */
.site-header {
  position: sticky;
  top: 0;
  z-index: 1030;
  background-color: transparent;
  transition: background-color var(--gecis), box-shadow var(--gecis);
}
/* Hero'lu sayfada header videonun üstünde sabit durur */
body.has-hero .site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  background-color: transparent;
}
/* Şeffafken beyaz menü yazısı fotoğrafta kaybolmasın diye üstte ince perde */
body.has-hero .site-header::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 220%;
  background-image: linear-gradient(to bottom, rgba(35, 32, 26, .5), rgba(35, 32, 26, 0));
  pointer-events: none;
  z-index: -1;
  transition: opacity var(--gecis);
}
/* Hero üzerindeyken TÜM menü öğeleri beyaz — aktif olan da dahil.
   (Eskiden aktif bağlantı altın rengindeydi ve koyu fotoğrafta okunmuyordu.)
   :not(.offcanvas .nav-item) ŞART: mobilde menü açık panelin zemini beyaz;
   bu kural oraya da uygulanınca bağlantılar beyaz üstüne beyaz oluyor ve
   menü tamamen boş görünüyordu. Aşağıdaki offcanvas kuralı (satır ~1148)
   !important taşımasına rağmen bu seçici daha özgül olduğu için kaybediyordu. */
body.has-hero:not(.sayfa-kaydirildi) .site-header .navbar-nav .nav-item:not(.offcanvas .nav-item) a.nav-link,
body.has-hero:not(.sayfa-kaydirildi) .site-header .navbar-nav .nav-item:not(.offcanvas .nav-item) a.nav-link.active,
body.has-hero:not(.sayfa-kaydirildi) .site-header .navbar-nav .nav-item:not(.offcanvas .nav-item) a.nav-link:hover {
  color: #fff !important;
}
/* Açık offcanvas her durumda koyu metin — tek yerden, en özgül kural. */
body .site-header .offcanvas.show .navbar-nav .nav-item a.nav-link,
body .site-header .offcanvas.show .navbar-nav .nav-item a.nav-link.active,
body .site-header .offcanvas.show .navbar-nav .nav-item a.nav-link:hover {
  color: var(--n-900, #1b1814) !important;
}

/* --- Kaydırılmış durum --- */
body.sayfa-kaydirildi .site-header {
  background-color: rgba(253, 252, 250, .94) !important;
  -webkit-backdrop-filter: saturate(1.4) blur(12px);
  backdrop-filter: saturate(1.4) blur(12px);
  box-shadow: 0 1px 0 var(--renk-kenarlik) !important;
}
body.sayfa-kaydirildi .site-header::before { opacity: 0; }
body.sayfa-kaydirildi .site-header .navbar-nav .nav-item a.nav-link {
  color: var(--renk-metin) !important;
}
body.sayfa-kaydirildi .site-header .navbar-nav .nav-item a.nav-link.active,
body.sayfa-kaydirildi .site-header .navbar-nav .nav-item a.nav-link:hover {
  color: var(--renk-aksan) !important;
}
body.sayfa-kaydirildi .site-header .user-items svg,
body.sayfa-kaydirildi .site-header .navbar-toggler svg,
body.sayfa-kaydirildi .site-header .search-item svg {
  fill: var(--renk-metin) !important;
  color: var(--renk-metin) !important;
}
body.sayfa-kaydirildi .site-header .navbar-brand img { filter: none !important; }
body.sayfa-kaydirildi .site-header #header-nav {
  padding-top: var(--sp-2);
  padding-bottom: var(--sp-2);
}

.navbar-nav .nav-item a.nav-link {
  position: relative;
  font-family: var(--body-font);
  font-weight: 500;
  letter-spacing: .02em;
}
/* Aktif/hover altında altın hairline — renk sıçraması yerine sessiz bir işaret */
@media (min-width: 992px) {
  .navbar-nav .nav-item a.nav-link { font-size: var(--fs-base); }
  .navbar-nav .nav-item a.nav-link::after {
    content: "";
    position: absolute;
    left: var(--sp-3); right: var(--sp-3); bottom: 2px;
    height: 1px;
    background: var(--gold-400);
    transform: scaleX(0);
    transition: transform var(--gecis);
  }
  .navbar-nav .nav-item a.nav-link:hover::after,
  .navbar-nav .nav-item a.nav-link.active::after { transform: scaleX(1); }
}

/*--- 4. BUTONLAR: tek dil ---------------------------------------------------*/
/* Karar: dolgu = mürekkep (kontrast 12:1+). Altın yalnızca kenarlık ve hover
   aksanı olarak kullanılır — altın üründe olmalı, arayüz elemanlarında değil. */
.btn {
  font-family: var(--body-font);
  font-size: var(--fs-sm);
  font-weight: 500;
  letter-spacing: .09em;
  text-transform: uppercase;
  border-radius: var(--r-hap);
  transition: background-color var(--gecis), color var(--gecis),
              border-color var(--gecis), transform var(--gecis);
}
.btn:focus-visible {
  outline: 2px solid var(--gold-500);
  outline-offset: 3px;
  box-shadow: none;
}
.btn.btn-small  { padding: .7em 1.6em; font-size: var(--fs-xs); }
.btn.btn-medium { padding: 1.05em 2.4em; font-size: var(--fs-sm); font-weight: 500; letter-spacing: .09em; }
.btn.btn-large  { padding: 1.25em 3em; font-size: var(--fs-base); }

/* Birincil */
.btn.btn-arrow,
.btn.btn-black,
.btn.btn-primary,
.btn.btn-accent {
  background-color: var(--n-900);
  color: var(--n-0);
  border: 1px solid var(--n-900);
  border-radius: var(--r-hap);
}
.btn.btn-arrow:hover,
.btn.btn-black:hover,
.btn.btn-primary:hover,
.btn.btn-accent:hover {
  background-color: var(--n-700);
  border-color: var(--n-700);
  color: var(--n-0);
}
/* İkincil (dış çizgili) */
.btn.btn-arrow.outline-dark,
.btn.btn-outline-dark {
  background-color: transparent;
  color: var(--renk-metin);
  border: 1px solid var(--n-300);
  border-radius: var(--r-hap);
}
.btn.btn-arrow.outline-dark:hover,
.btn.btn-outline-dark:hover {
  background-color: var(--n-900);
  border-color: var(--n-900);
  color: var(--n-0);
}
/* Üçüncül (metin bağlantısı) — "Tümünü Gör" */
.btn.btn-arrow.btn-normal {
  background-color: transparent;
  border: none;
  color: var(--renk-metin);
  text-decoration: none;
  padding: var(--sp-2) 0;
  border-bottom: 1px solid var(--gold-400);
  border-radius: 0;
  letter-spacing: .08em;
}
.btn.btn-arrow.btn-normal:hover {
  color: var(--renk-aksan);
  border-bottom-color: var(--renk-aksan);
}
/* Ok ikonu hizası — eski sabit top:32px / right:30px kaldırıldı */
.btn.btn-arrow { display: inline-flex; align-items: center; justify-content: center; }
/* HTML'de oklarda Bootstrap'in .position-absolute yardımcı sınıfı var;
   ok metnin altına kayıyordu. Akışa geri alınır. */
.btn.btn-arrow svg,
.btn.btn-arrow svg.position-absolute {
  position: static !important;
  top: auto; right: auto; bottom: auto; left: auto;
  transform: none;
  width: 16px; height: 16px;
  margin-left: var(--sp-2);
  flex: 0 0 auto;
  vertical-align: middle;
  opacity: .85;
  transition: transform var(--gecis), opacity var(--gecis);
}
.btn.btn-arrow:hover svg { opacity: 1; transform: translateX(4px); right: auto; }
.btn.btn-arrow:hover span { transform: none; }

/*--- 5. ÜRÜN KARTI: ana sayfa ve mağaza artık aynı --------------------------*/
.product-card,
.product-item .image-holder { position: relative; }

.product-card .image-holder,
.product-item .image-holder {
  overflow: hidden;
  border-radius: var(--r-yuzey);
  background: var(--n-100);
  width: 100%;
}
.product-card .image-holder img,
.product-item .image-holder img.product-image,
.product-grid .product-item .image-holder > a > img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: cover;      /* fill değil: farklı oranlı fotoğraf artık ezilmez */
  object-position: center;
  transition: transform 600ms cubic-bezier(.2, .6, .3, 1);
}
.product-card:hover .image-holder img,
.product-item:hover .image-holder img { transform: scale(1.04); }

/* Başlık nötr, fiyat sakin — eskiden ikisi de marka kahverengisiydi */
.product-card .card-title,
.product-card .card-title a,
.product-item .product-content h5,
.product-item .product-content h5 a,
.product-grid .product-item h5 a {
  font-family: var(--heading-font);
  font-size: var(--fs-lg);
  font-weight: 400;
  line-height: var(--lh-baslik);
  color: var(--renk-metin) !important;
  text-transform: none;
  text-decoration: none;
}
.product-card .card-title { margin: var(--sp-4) 0 var(--sp-1); }
.product-card .card-title a:hover,
.product-item .product-content h5 a:hover { color: var(--renk-aksan) !important; }

.product-card .cart-info span,
.product-item .product-content span {
  font-family: var(--body-font);
  font-size: var(--fs-base);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  letter-spacing: .01em;
  color: var(--n-600);
}
/* Fiyat hover'da KAYBOLMUYOR: sepet çağrısı fiyatın altında ayrı satır olarak belirir */
.product-card .cart-info .pseudo-text-effect,
.product-item .product-content a[data-after] {
  position: relative;
  display: inline-block;
  text-decoration: none;
}
.product-card .cart-info .pseudo-text-effect::after,
.product-item .product-content a[data-after]::after {
  content: attr(data-after);
  display: block;
  width: -moz-fit-content;
  width: fit-content;
  margin-top: var(--sp-1);
  font-family: var(--body-font);
  font-size: var(--fs-xs);
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--renk-aksan);
  border-bottom: 1px solid currentColor;
  opacity: 0;
  transform: translateY(-4px);
  transition: opacity var(--gecis), transform var(--gecis);
}
.product-card:hover .cart-info .pseudo-text-effect::after,
.product-item:hover .product-content a[data-after]::after,
.product-card .cart-info .pseudo-text-effect:focus-visible::after,
.product-item .product-content a[data-after]:focus-visible::after {
  opacity: 1;
  transform: translateY(0);
}
/* Sepet çağrısı belirince alt satırlar zıplamasın */
.product-card .cart-concern { width: 100%; min-height: 96px; }

/*--- 6. KOLEKSİYON KARTLARI: metin artık fotoğrafın üstünde okunuyor --------*/
#banner .row { --bs-gutter-x: var(--sp-5); --bs-gutter-y: var(--sp-5); }
#banner [class*="banner-content-"] { overflow: hidden; border-radius: var(--r-yuzey); }
#banner [class*="banner-content-"] > div:first-child { position: relative; }
#banner [class*="banner-content-"] > div:first-child::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top,
              rgba(35, 32, 26, .62) 0%,
              rgba(35, 32, 26, .28) 42%,
              rgba(35, 32, 26, 0) 72%);
  pointer-events: none;
}
#banner [class*="banner-content-"] img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  transition: transform 700ms cubic-bezier(.2, .6, .3, 1);
}
#banner [class*="banner-content-"]:hover img { transform: scale(1.03); }

.banner-content-text {
  left: var(--sp-6);
  right: var(--sp-6);
  bottom: var(--sp-6);
  z-index: 2;
}
.banner-content-text h2 {
  color: var(--n-0);
  font-size: var(--fs-baslik-3);
  line-height: var(--lh-baslik);
  margin-bottom: var(--sp-4);
  text-shadow: 0 1px 24px rgba(35, 32, 26, .35);
}
.banner-content-text .btn.btn-arrow.outline-dark {
  color: var(--n-0);
  border-color: rgba(255, 255, 255, .55);
  background: rgba(255, 255, 255, .06);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
.banner-content-text .btn.btn-arrow.outline-dark:hover {
  background: var(--n-0);
  border-color: var(--n-0);
  color: var(--renk-metin);
}

/*--- 7. MARKA SÖZÜ: alıntı serif olmalı ------------------------------------*/
#marka-sozu { background: var(--renk-zemin-yumusak); }
#marka-sozu .quotation .quote {
  color: var(--gold-300);
  width: 36px; height: 36px;
  fill: currentColor;
}
#marka-sozu blockquote {
  font-family: var(--heading-font);
  font-size: var(--fs-xl);
  font-style: italic;
  font-weight: 400;
  line-height: 1.5;
  color: var(--n-800);
  max-width: 46ch;
  margin: var(--sp-5) auto var(--sp-5);
  /* Sözler dönerken bölüm zıplamasın: en uzun söz iki satır sürüyor. */
  min-height: calc(var(--fs-xl) * 1.5 * 2);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 620ms ease;
}
#marka-sozu blockquote.soluk { opacity: 0; }
@media (prefers-reduced-motion: reduce) {
  #marka-sozu blockquote { transition: none; }
}
/* İmza artık <img> ile gelen gerçek kelime markası; harf aralığı ve
   büyük-harf kuralları anlamsızlaştı. Boyut tek yerden: yükseklik. */
#marka-sozu .imza {
  line-height: 0;
}
/* Renk için maske denendi ve YANLIŞTI: <img>'in kendi pikselleri maskenin
   içine yine basılıyor, altın zemin görünmüyordu. Onun yerine ayrı bir
   altın varyant dosyası var (suelle-yazi-altin.svg) — CSS numarası yok. */
#marka-sozu .imza img {
  display: block;
  height: clamp(26px, 2.6vw, 34px);
  width: auto;
  margin: 0 auto;
}
#marka-sozu .imza::before {
  content: "";
  display: block;
  width: 28px;
  height: 1px;
  margin: 0 auto var(--sp-4);
  background: var(--gold-400);
}

/*--- 7b. SEPET SAYACI ------------------------------------------------------
  Sepetteki ürün adedi, başlıktaki sepet ikonunun sağ üstünde. Biçim eskiden
  store.js içinde satır içi yazılıydı ve marka fontu yerine sans-serif
  kullanıyordu. Sepet boşken gizlenir (hidden özniteliğiyle) — "0" rozeti
  göstermek gereksiz gürültü. */
a[href="cart.html"] { position: relative; }
.cart-badge {
  position: absolute;
  top: -9px;
  right: -11px;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--gold-500);
  color: var(--n-0);
  font-family: var(--body-font);
  font-size: 11px;
  font-weight: 600;
  line-height: 18px;
  text-align: center;
  letter-spacing: 0;
  pointer-events: none;
}
.cart-badge[hidden] { display: none; }

/*--- 8. SERVİS ŞERİDİ ------------------------------------------------------*/
#company-services {
  border-color: var(--renk-kenarlik) !important;
  background: var(--n-0);
}
#company-services .icon-box-icon svg { width: 26px; height: 26px; color: var(--gold-500); }
#company-services .card-title {
  font-family: var(--body-font);
  font-size: var(--fs-sm);
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--n-700);
}

/*--- 9. ABONELİK FORMU -----------------------------------------------------*/
.subscribe { background: var(--renk-zemin); }
.subscribe-header h2 { font-size: var(--fs-baslik-2); margin-bottom: var(--sp-5); }
.subscribe-content form {
  display: flex;
  gap: var(--sp-3);
  flex-wrap: wrap;
  max-width: 560px;
  margin: 0 auto;
}
.subscribe-content input {
  flex: 1 1 260px;
  height: 52px;
  border: 1px solid var(--renk-kenarlik) !important;
  border-radius: var(--r-hap);
  background: var(--n-0) !important;
  padding: 0 var(--sp-5) !important;
  font-family: var(--body-font);
  font-size: var(--fs-base);
  font-style: normal !important;
  color: var(--renk-metin);
}
.subscribe-content input::placeholder { color: var(--n-400); }
.subscribe-content input:focus {
  outline: none;
  border-color: var(--gold-400) !important;
  box-shadow: 0 0 0 3px rgba(197, 164, 126, .2);
}
.subscribe-content button.btn.btn-full {
  flex: 0 0 auto;
  width: auto;
  height: 52px;
  padding: 0 var(--sp-6);
  border-radius: var(--r-hap);
  background: var(--n-900);
  color: var(--n-0);
}
.subscribe-content button.btn.btn-full:hover { background: var(--n-700); }

/*--- 10. FOOTER: koyu zemin geri geldi, ölçek düzeltildi -------------------*/
/* Not: #hero-alan ~ footer kuralı footer'ı beyaza çeviriyor, beyaz başlıkları
   görünmez yapıyordu. Kaynağında düzeltildi; buradakiler ölçek/kontrast. */
#footer {
  background: var(--n-900);
  color: var(--n-300);
}
#footer .widget-title {
  font-family: var(--body-font);
  font-size: var(--fs-sm);
  font-weight: 500;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--n-0);
  margin-bottom: var(--sp-5);
}
#footer p {
  font-size: var(--fs-base);
  line-height: var(--lh-govde);
  color: #b9b0a1;              /* koyu zeminde ~6.4:1 */
  max-width: 42ch;
}
#footer a {
  font-size: var(--fs-base);
  color: #cfc6b6;              /* koyu zeminde ~8.1:1 */
  text-decoration: none;
  transition: color var(--gecis);
}
#footer a:hover {
  color: var(--gold-300);
  text-decoration: underline;
  text-underline-offset: 4px;
}
#footer .menu-item { padding-bottom: var(--sp-3) !important; }
#footer .copyright { margin-top: var(--sp-6); }
#footer .copyright p,
#footer .copyright a { font-size: var(--fs-sm); color: #9a9183; }
#footer .footer-menu > img { filter: brightness(0) invert(1); max-width: 132px; }
#footer .contact-item p { margin-bottom: var(--sp-2); }

/*--- 11. ERİŞİLEBİLİRLİK & HAREKET ----------------------------------------*/
/* Mobilde dokunma hedefi en az 44px */
@media (max-width: 991.98px) {
  #footer a,
  .social-links a {
    display: inline-block;
    min-height: 44px;
    line-height: 44px;
  }
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible {
  outline: 2px solid var(--gold-500);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/*--- 12. HERO PANELİ: tasarım sistemine hizalandı ---------------------------*/
.hero-panel-ic {
  background: rgba(253, 252, 250, .93);
  -webkit-backdrop-filter: blur(10px) saturate(1.2);
  backdrop-filter: blur(10px) saturate(1.2);
  border: 1px solid rgba(197, 164, 126, .35);
  border-radius: var(--r-panel);
  padding: var(--sp-5) var(--sp-6);
  max-width: 460px;
  box-shadow: var(--sh-3);
}
#hero-panel-title {
  font-family: var(--heading-font);
  font-size: var(--fs-xl);
  line-height: var(--lh-baslik);
  color: var(--renk-metin);
  margin-bottom: var(--sp-1);
}
.hero-panel-alt {
  color: var(--n-500);
  font-size: var(--fs-xs);
  letter-spacing: .14em;
  text-transform: uppercase;
  margin-bottom: var(--sp-4);
}
#hero-panel-thumbs {
  display: flex;
  gap: var(--sp-3);
  margin-bottom: var(--sp-5);
}
.hero-thumb {
  border: 1px solid transparent;
  border-radius: var(--r-yuzey);
  padding: 0;
  background: none;
  cursor: pointer;
  overflow: hidden;
  width: 104px;
  text-align: center;
  transition: border-color var(--gecis), transform var(--gecis);
}
.hero-thumb img {
  width: 104px;
  height: 104px;
  object-fit: cover;
  border-radius: var(--r-yuzey);
  display: block;
}
.hero-thumb span {
  display: block;
  font-size: var(--fs-xs);
  color: var(--n-600);
  padding: var(--sp-1) 2px 0;
  line-height: 1.25;
}
.hero-thumb:hover { transform: translateY(-2px); }
.hero-thumb.secili { border-color: var(--gold-400); }

/* Tek varyant varsa bu bir "seçim" değil, ürün önizlemesidir:
   seçim çerçevesi ve etiket gösterilmez. */
#hero-panel-thumbs.tek-varyant .hero-thumb { width: 116px; cursor: default; border-color: transparent; }
#hero-panel-thumbs.tek-varyant .hero-thumb img { width: 116px; height: 116px; }
#hero-panel-thumbs.tek-varyant .hero-thumb span { display: none; }
#hero-panel-thumbs.tek-varyant .hero-thumb:hover { transform: none; }

.hero-panel-alt-satir {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
}
.hero-koleksiyon {
  color: var(--renk-aksan);
  font-family: var(--body-font);
  font-size: var(--fs-sm);
  letter-spacing: .04em;
  text-decoration: none;
  border-bottom: 1px solid var(--gold-400);
  padding-bottom: 2px;
}
.hero-koleksiyon:hover { color: var(--gold-700); border-bottom-color: var(--gold-700); }
#hero-continue {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  background: var(--n-900);
  color: var(--n-0);
  border: 1px solid var(--n-900);
  border-radius: var(--r-hap);
  padding: var(--sp-3) var(--sp-5);
  font-family: var(--body-font);
  font-size: var(--fs-xs);
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color var(--gecis), border-color var(--gecis);
}
#hero-continue:hover { background: var(--n-700); border-color: var(--n-700); }

/*--- 13. LOGO ---------------------------------------------------------------
   Markanın kendi logosu: altın lotus + el yazısı "Suelle".
   images/marka/ içinde üç dosya var:
     suelle-yatay.svg            → menü çubuğu (4.05:1, lotus solda)
     suelle-logo-acik-zemin.svg  → dikey kilit, açık zemin
     suelle-logo-koyu-zemin.svg  → dikey kilit, tamamı beyaz (footer)
   Hero üzerinde beyaza çevirmek için ayrı dosya indirilmez; brightness(0)
   invert(1) altın+mürekkebi tam beyaza çevirir — beyaz varyantla aynı sonuç.
--------------------------------------------------------------------------- */
.navbar-brand { display: inline-flex; align-items: center; }
.logo-suelle {
  display: block;
  height: clamp(30px, 2.4vw, 40px);
  width: auto;
  transition: filter var(--gecis), opacity var(--gecis);
}
/* Hero üzerindeyken beyaz */
body.has-hero:not(.sayfa-kaydirildi) .site-header .logo-suelle {
  filter: brightness(0) invert(1);
}
body.sayfa-kaydirildi .site-header .logo-suelle { filter: none; }
.navbar-brand:hover .logo-suelle { opacity: .78; }

/* Offcanvas menü açıldığında her zaman renkli hâli */
.offcanvas .logo-suelle { filter: none !important; }

/* Footer: dikey kilit, koyu zemin üstünde beyaz dosya kullanılır */
.logo-suelle--footer {
  height: auto;
  width: clamp(110px, 12vw, 150px);
  margin-bottom: var(--sp-5);
  filter: none;
}

/*--- 14. SON RÖTUŞLAR ------------------------------------------------------*/

/* Sabit header, bağlantıyla atlanan bölümün başlığını kapatıyordu. */
html {
  scroll-padding-top: 96px;
}
@media (max-width: 991.98px) {
  html { scroll-padding-top: 76px; }
}

/* Bootstrap'in .text-capitalize sınıfı !important ile geliyor ve footer
   başlıklarından birini ("Bize Ulaşın") diğerlerinden farklı gösteriyordu. */
#footer .widget-title,
#footer .widget-title.text-capitalize {
  text-transform: uppercase !important;
}

/* Mobil dokunma hedefi: line-height yerine dolgu ile büyütülür, böylece
   satır arası şişmez ama hedef yine 44px olur. */
@media (max-width: 991.98px) {
  #footer a,
  .social-links a {
    line-height: var(--lh-govde);
    padding-top: var(--sp-2);
    padding-bottom: var(--sp-2);
    min-height: 44px;
  }
  #footer .menu-item { padding-bottom: var(--sp-1) !important; }
}

/* Bölüm başlığı + yan bağlantı: dar ekranda alt alta, geniş ekranda yan yana */
@media (max-width: 575.98px) {
  .display-header { flex-direction: column; align-items: flex-start; }
}

/*--- 15. KALAN TUTARSIZLIKLAR ----------------------------------------------*/

/* Bootstrap'in .text-capitalize sınıfı !important taşıyor ve sistemdeki
   büyük-harf etiket dilini bozuyordu (ürün sekmeleri, footer başlıkları). */
.product-tabs .nav-tabs .nav-link,
.product-tabs .nav-tabs .nav-link.text-capitalize {
  text-transform: uppercase !important;
}

/* İletişim sayfasındaki sosyal bağlantılar: footer ile aynı dil */
.sosyal-bag {
  font-family: var(--body-font);
  font-size: var(--fs-base);
  color: var(--renk-metin);
  text-decoration: none;
  border-bottom: 1px solid var(--gold-400);
  padding-bottom: 2px;
  transition: color var(--gecis), border-color var(--gecis);
}
.sosyal-bag:hover { color: var(--renk-aksan); border-bottom-color: var(--renk-aksan); }

/* Form alanları: abonelik kutusuyla aynı dil */
.form-control,
input[type="text"].form-control,
input[type="email"].form-control,
textarea.form-control {
  border: 1px solid var(--renk-kenarlik);
  border-radius: var(--r-panel);
  background-color: var(--n-0);
  font-family: var(--body-font);
  font-size: var(--fs-base);
  color: var(--renk-metin);
  padding: var(--sp-3) var(--sp-4);
}
.form-control::placeholder { color: var(--n-400); }
.form-control:focus {
  border-color: var(--gold-400);
  box-shadow: 0 0 0 3px rgba(197, 164, 126, .2);
}

/*==============================================================================
  SUELLE — GÖRSEL ŞÖLEN KATMANI
  Ana sayfadaki kampanya bandı, editoryal diptik, makro şerit, hediye paketi,
  lükbuk tanıtımı ve lookbook.html sayfası. Tümü aynı token setini kullanır.
==============================================================================*/

/*--- Ortak: üst etiket (eyebrow) --------------------------------------------*/
.ust-etiket {
  font-family: var(--body-font);
  font-size: var(--fs-xs);
  font-weight: 500;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--renk-aksan);
  margin-bottom: var(--sp-3);
  max-width: none;
}

/*--- Ortak: kaydırınca beliren öğeler ---------------------------------------*/
[data-belir] {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .9s cubic-bezier(.2,.6,.3,1), transform .9s cubic-bezier(.2,.6,.3,1);
  will-change: opacity, transform;
}
[data-belir].belirdi { opacity: 1; transform: none; }
/* JS yoksa içerik gizli kalmasın */
.js-yok [data-belir] { opacity: 1; transform: none; }

/*==============================================================================
  1. KAMPANYA BANDI — tam genişlik
==============================================================================*/
.kampanya {
  position: relative;
  overflow: hidden;
  background: var(--gold-100);
  /* hero'dan sonraki ilk bölüm kuralının beyaz boşluğunu iptal et */
  padding-top: 0 !important;
}
/* overflow:hidden şart: içindeki görsel parallax için scale(1.06) taşıyor
   (bkz. satır ~3132). Kırpılmadığında görsel bölüm kenarından 12 piksel
   dışarı sarkıyordu — mobilde fark ediliyordu. */
.kampanya-gorsel { display: block; margin: 0; overflow: hidden; }
.kampanya-gorsel img {
  display: block;
  width: 100%;
  height: clamp(420px, 62vw, 760px);
  object-fit: cover;
  object-position: 72% center;   /* model sağda; solu metne bırak */
  transform: scale(1.06);
  transition: transform 1.6s cubic-bezier(.2,.6,.3,1);
}
.kampanya.belirdi .kampanya-gorsel img { transform: scale(1); }

/* --- ÜÇ KARELİ KOLEKSİYON ŞERİDİ (26 Tem) ---
   Bölüm tek büyük fotoğraf + üstüne binen metin düzenindeydi. Artık üç set
   karesi yan yana; metin ÜSTTE, kareler ALTTA. Kareler 3:4 (kaynakla aynı,
   kırpma yok) ve akış normal — üst üste binme, kontrast sorunu yok. */
/* Zemin !important: "#hero-alan ~ section" kuralı (özgüllük 0,1,1) bütün
   bölümlere krem zemin veriyor ve .kampanya'nın altın zeminini eziyordu. */
.kampanya {
  padding-bottom: clamp(var(--sp-7), 6vw, var(--sp-9));
  background: var(--gold-100) !important;
}
.kampanya-ic {
  padding: clamp(var(--sp-7), 6vw, var(--sp-9)) clamp(var(--sp-5), 6vw, var(--sp-10))
           clamp(var(--sp-5), 4vw, var(--sp-6));
  max-width: 64ch;
}
.kampanya-setler {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(var(--sp-3), 1.4vw, var(--sp-4));
  /* Yatay iç boşluk 6vw idi: geniş ekranda 114 px'lik iki şerit max-width'in
     içinden yeniyor, kareler 214 px'e kadar iniyordu. Izgara artık zaten
     ortalandığı için o kadar boşluğa gerek yok. */
  padding: 0 clamp(var(--sp-4), 2vw, var(--sp-6));
  /* Bkz. .diptik'teki not — aynı taşma burada da vardı (kare 0,80 ekran). */
  max-width: min(100%, calc(100vh + 80px));  /* kare ≈ 0,43 ekran */
  margin-inline: auto;
}
.kampanya-set { margin: 0; position: relative; }
.kampanya-set picture { display: block; overflow: hidden; border-radius: var(--r-yuzey); }
.kampanya-set img {
  display: block;
  width: 100%;
  /* height:auto ŞART — <img height="1600"> özniteliği aspect-ratio'yu eziyor
     ve kare 1600 piksel yüksekliğinde kalıyordu (oran 0,20'ye düşüyordu). */
  height: auto;
  aspect-ratio: 3 / 4;      /* kaynağın oranı: esneme ve kırpma yok */
  object-fit: cover;
  transition: transform 900ms cubic-bezier(.2,.6,.3,1);
}
.kampanya-set:hover img { transform: scale(1.03); }
.kampanya-set figcaption { padding-top: var(--sp-3); }
.kampanya-set-ad {
  display: block;
  font-family: var(--body-font);
  font-size: var(--fs-xs);
  font-weight: 500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--n-700);
}
/* Ad'ın altındaki betimleyici cümle. Ad versal ve seyrek; söz ise akan,
   yumuşak bir serif — ikisi aynı ağırlıkta olsa başlık-alt başlık ayrımı
   kaybolurdu. Slogandaki Cormorant italiğiyle aynı ses. */
.kampanya-set-soz {
  display: block;
  margin-top: var(--sp-2);
  max-width: 34ch;
  font-family: var(--yz-garamond);
  font-style: italic;
  font-size: var(--fs-md);
  line-height: 1.55;
  letter-spacing: .01em;
  color: var(--n-600, var(--n-700));
}
.kampanya-baslik {
  font-family: var(--heading-font);
  font-size: clamp(2.4414rem, 1.2rem + 4.6vw, 4.6rem);
  line-height: 1.02;
  color: var(--n-900);
  margin-bottom: var(--sp-4);
}
.kampanya-metin {
  font-size: var(--fs-md);
  color: var(--n-700);
  margin-bottom: var(--sp-6);
  max-width: 40ch;
}

@media (max-width: 767.98px) {
  .kampanya-gorsel img { height: clamp(320px, 78vw, 460px); object-position: 62% center; }
  .kampanya-metin { max-width: none; }
  /* Dar ekranda üç kare yan yana çok küçülüyor: ilk kare tam genişlik,
     diğer ikisi altında yan yana. Oran hep 3:4 kaldığı için kırpma yok. */
  .kampanya-setler { grid-template-columns: repeat(2, 1fr); }
  .kampanya-set:first-child { grid-column: 1 / 3; }
  /* Dar sütunda (≈158 px) 18 px italik serif dört satıra bölünüyor ve
     sıkışık duruyor. İlk kare tüm satırı kapladığı için ondan küçültmüyoruz;
     yalnızca ikili sütundaki iki kare kısalıyor. */
  .kampanya-set-soz { font-size: var(--fs-sm); line-height: 1.5; }
  .kampanya-set:first-child .kampanya-set-soz { font-size: var(--fs-md); }
}

/*==============================================================================
  2. EDİTORYAL DİPTİK
==============================================================================*/
/* ÖLÇEK SINIRI — geniş ekranlarda kareler ekranı taşıyordu.
   Kareler yalnızca genişlikle ölçekleniyordu (width:100% + aspect-ratio);
   1900 px'lik bir ekranda sütun 850 px olunca 3:4 oranı yüksekliği 1133 px'e,
   yani ekranın 1,26 katına çıkarıyordu. Kırpmak çözüm değil — kareler tam
   görünmek zorunda. Onun yerine IZGARANIN GENİŞLİĞİ ekran yüksekliğine
   bağlandı: kare orantısını koruyarak küçülüyor, ortalanıyor.
   calc içinde bilerek düz piksel var; miras alınan --sp-* değişkenleri
   calc içinde bu şablonda daha önce sessizce çöktü. */
.diptik {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(var(--sp-5), 3vw, var(--sp-8));
  max-width: min(100%, calc(88vh + 48px));   /* kare ≈ 0,58 ekran */
  margin-inline: auto;
}
.diptik-parca { margin: 0; }
.diptik-parca picture { display: block; overflow: hidden; border-radius: var(--r-yuzey); }
.diptik-parca img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  transition: transform 900ms cubic-bezier(.2,.6,.3,1);
}
/* Hover yakınlaşması <img> yerine <picture> üzerinde.
   Neden: kadraj panelinden ayarlanan kırpma <img>'e SATIR İÇİ transform
   yazıyor; satır içi stil CSS'i ezdiği için kırpılmış karelerde (Gece)
   hover efekti hiç çalışmıyor, kırpılmamışta (Gündüz) çalışıyordu. */
.diptik-parca { overflow: hidden; border-radius: var(--r-yuzey); }
.diptik-parca picture {
  transition: transform 900ms cubic-bezier(.2, .6, .3, 1);
  border-radius: 0;
}
.diptik-parca:hover picture { transform: scale(1.035); }

/* Başlık artık görselin ÜSTÜNE biniyor. Önceden altta bir paragraf ve
   "Seçki" düğmesi vardı; alan ürün vitrinine dönüyordu ve görsel değişince
   yazı yanlış kalıyordu. Tek kelime kaldı: ışığın adı. */
.diptik-parca { position: relative; }
.diptik-parca figcaption {
  position: absolute;
  left: clamp(var(--sp-4), 2.4vw, var(--sp-6));
  bottom: clamp(var(--sp-4), 2.4vw, var(--sp-6));
  z-index: 2;
  pointer-events: none;
}
.diptik-ad {
  display: block;
  font-family: var(--heading-font);
  font-size: clamp(1.5rem, 2.6vw, 2.4rem);
  line-height: 1;
  color: #fff;
  letter-spacing: .04em;
  text-shadow: 0 2px 18px rgba(0, 0, 0, .55);
}
/* Yazının okunması için alt kenarda yumuşak bir karartma */
.diptik-parca picture::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 42%;
  background: linear-gradient(to top, rgba(20, 17, 14, .55), transparent);
  pointer-events: none;
}
.diptik-parca picture { position: relative; }

@media (max-width: 767.98px) {
  .diptik { grid-template-columns: 1fr; }
}

/*==============================================================================
  3. MAKRO DETAY ŞERİDİ
==============================================================================*/
.detay-serit { background: var(--n-0); }
.detay-ray {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-4);
  padding: 0 clamp(var(--sp-4), 3.5vw, var(--sp-8));
}
.detay-kare { margin: 0; }
.detay-kare picture {
  display: block;
  overflow: hidden;
  border-radius: var(--r-yuzey);
  background: var(--n-100);
}
.detay-kare img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  transition: transform 800ms cubic-bezier(.2,.6,.3,1);
}
.detay-kare:hover img { transform: scale(1.05); }
.detay-kare figcaption { padding-top: var(--sp-3); }
.detay-ad {
  display: block;
  font-family: var(--heading-font);
  font-size: var(--fs-md);
  color: var(--renk-metin);
}
.detay-not {
  display: block;
  font-size: var(--fs-sm);
  color: var(--n-500);
  margin-top: 2px;
}

@media (max-width: 991.98px) {
  /* Dar ekranda ızgara yerine yatay kaydırmalı ray */
  .detay-ray {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: 74%;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .detay-ray::-webkit-scrollbar { display: none; }
  .detay-kare { scroll-snap-align: start; }
}
@media (max-width: 575.98px) {
  .detay-ray { grid-auto-columns: 86%; }
}

/*==============================================================================
  4. HEDİYE PAKETİ
==============================================================================*/
.paket { background: var(--renk-zemin-yumusak); }
.paket-izgara {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: clamp(var(--sp-6), 5vw, var(--sp-9));
  align-items: center;
}
.paket-gorsel { margin: 0; overflow: hidden; border-radius: var(--r-yuzey); }
.paket-gorsel img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 900ms cubic-bezier(.2,.6,.3,1);
}
.paket-gorsel:hover img { transform: scale(1.03); }
.paket-metin h2 { margin-bottom: var(--sp-4); }
.paket-liste {
  list-style: none;
  padding: 0;
  margin: var(--sp-5) 0 var(--sp-6);
}
.paket-liste li {
  position: relative;
  padding-left: var(--sp-5);
  margin-bottom: var(--sp-3);
  color: var(--n-700);
}
.paket-liste li::before {
  content: "";
  position: absolute;
  left: 0; top: .62em;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--gold-400);
}
@media (max-width: 767.98px) {
  .paket-izgara { grid-template-columns: 1fr; }
}

/*==============================================================================
  5. LÜKBUK TANITIMI (ana sayfa)
==============================================================================*/
.lukbuk-tanitim { background: var(--n-900); }
.lukbuk-tanitim .display-3,
.lukbuk-tanitim p { color: var(--n-0); }
.lukbuk-tanitim .ust-etiket { color: var(--gold-300); }
/* Eski düzen 4 sütunda 3 görsel + metin otomatik yerleşimiyle SAĞ SÜTUNU
   BOŞ bırakıyordu — arka plan iki hücre boyunca görünüyordu. Yerleşim
   artık açık: metin | tam boy uzun kare | üst üste iki kare. Boş hücre
   kalması imkânsız. */
.lukbuk-izgara {
  display: grid;
  grid-template-columns: 1.15fr 1fr 1fr;
  grid-template-rows: auto auto;
  gap: var(--sp-4);
  /* Bkz. .diptik'teki not. Buradaki uzun kare iki satır boyunca uzandığı
     için en kötü durum buydu: 548×1476, yani ekranın 1,85 katı. */
  max-width: min(100%, 96vh);
  margin-inline: auto;
}
.lukbuk-kare {
  display: block;
  overflow: hidden;
  border-radius: var(--r-yuzey);
  background: var(--n-800);
}
.lukbuk-kare img {
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  transition: transform 900ms cubic-bezier(.2,.6,.3,1), opacity var(--gecis);
}
.lukbuk-kare:hover img { transform: scale(1.05); opacity: .92; }
.lukbuk-kare--uzun { grid-column: 2; grid-row: 1 / 3; }
/* Uzun kare, sağdaki iki 3:4 karenin toplam boyuna uyar: oran sabitlemek
   yerine hücreyi doldurur. <picture> ara katmanı yüksekliği İLETMİYOR —
   zincirin her halkası %100 olmalı, yoksa uzun kare tek kare boyunda
   kalıp altında boşluk bırakıyordu. */
.lukbuk-kare--uzun picture { display: block; height: 100%; }
.lukbuk-kare--uzun img { height: 100%; aspect-ratio: auto; }
.lukbuk-metin {
  grid-column: 1;
  grid-row: 1 / 3;
  align-self: center;
  padding: var(--sp-5) var(--sp-6) var(--sp-4) 0;
}
.lukbuk-metin p { color: var(--n-300); margin-bottom: var(--sp-5); }
.lukbuk-tanitim .btn.btn-arrow {
  background-color: var(--n-0);
  border-color: var(--n-0);
  color: var(--n-900);
}
.lukbuk-tanitim .btn.btn-arrow:hover {
  background-color: var(--gold-300);
  border-color: var(--gold-300);
  color: var(--n-900);
}
@media (max-width: 991.98px) {
  /* Dar ekran: metin üstte tam satır; altında uzun kare solda iki satır,
     sağda üst üste iki kare — yine boş hücre yok. */
  .lukbuk-izgara { grid-template-columns: repeat(2, 1fr); }
  .lukbuk-metin { grid-column: 1 / 3; grid-row: 1; padding-right: 0; }
  .lukbuk-kare--uzun { grid-column: 1; grid-row: 2 / 4; }
  .lukbuk-kare--uzun img { height: 100%; aspect-ratio: auto; }
}

/*==============================================================================
  6. LOOKBOOK SAYFASI
==============================================================================*/
.lb-giris {
  padding-top: clamp(var(--sp-8), 10vw, var(--sp-10));
  padding-bottom: var(--bolum-bosluk);
  text-align: center;
}
.lb-giris .ust-etiket { margin-left: auto; margin-right: auto; }
.lb-giris h1 { margin-bottom: var(--sp-5); }
.lb-giris-metin {
  margin-left: auto;
  margin-right: auto;
  max-width: 58ch;
  color: var(--n-600);
}

.lb-genis { position: relative; overflow: hidden; }
.lb-genis img {
  display: block;
  width: 100%;
  height: clamp(360px, 56vw, 680px);
  object-fit: cover;
  object-position: 68% center;
}
.lb-genis-yazi {
  padding: var(--sp-3) clamp(var(--sp-4), 3.5vw, var(--sp-8)) 0;
  font-size: var(--fs-sm);
  letter-spacing: .06em;
  color: var(--n-500);
}

.lb-bolum { padding: var(--bolum-bosluk) 0; }
.lb-bolum--krem { background: var(--renk-zemin-yumusak); }
.lb-bolum-basi { margin-bottom: var(--sp-7); }
.lb-bolum-basi h2 { margin-bottom: var(--sp-2); }
.lb-bolum-basi p { color: var(--n-600); }

.lb-izgara {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(var(--sp-3), 1.6vw, var(--sp-5));
}
.lb-izgara--genis { grid-template-columns: repeat(3, 1fr); }
.lb-kare { margin: 0; overflow: hidden; border-radius: var(--r-yuzey); background: var(--n-100); }
.lb-kare img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  transition: transform 900ms cubic-bezier(.2,.6,.3,1);
}
.lb-kare--genis img { aspect-ratio: 3 / 2; }
.lb-kare:hover img { transform: scale(1.045); }

.lb-kapanis { background: var(--n-0); }
.lb-kapanis p { margin: var(--sp-3) auto var(--sp-6); color: var(--n-600); }

@media (max-width: 991.98px) {
  .lb-izgara, .lb-izgara--genis { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 575.98px) {
  .lb-izgara, .lb-izgara--genis { grid-template-columns: 1fr; }
}

/*==============================================================================
  7. HERO SONRASI GEÇİŞ DÜZELTMESİ
  #hero-alan + section kuralı ilk bölüme 3.5em üst dolgu ve gölge veriyordu;
  artık ilk bölüm tam kanama bir fotoğraf, dolgu beyaz bir şerit oluşturuyordu.
==============================================================================*/
#hero-alan + section#kampanya {
  padding-top: 0 !important;
  box-shadow: 0 -22px 34px -14px rgba(46, 32, 20, .28);
}

/* Parallax kaydırması: JS yalnızca --parallax değişkenini yazar,
   dönüşümün kendisi burada tanımlıdır (belirme animasyonuyla çakışmasın). */
.kampanya-gorsel img { transform: scale(1.06) translateY(var(--parallax, 0px)); }
.kampanya.belirdi .kampanya-gorsel img { transform: scale(1) translateY(var(--parallax, 0px)); }
@media (prefers-reduced-motion: reduce) {
  .kampanya-gorsel img,
  .kampanya.belirdi .kampanya-gorsel img { transform: none; }
}

/*==============================================================================
  GÖRSEL YÜKSEKLİĞİ DÜZELTMESİ
  <img width="1200" height="1600"> öznitelikleri tarayıcıda sunum ipucu olarak
  CSS `height` üretiyor; height belirliyken `aspect-ratio` yok sayılıyor ve
  görseller 1600px'e uzuyordu. Açıkça height:auto vermek ratio'yu geri getirir.
  (width/height öznitelikleri yerinde kalmalı — yükleme sırasında yer tutup
  düzen kaymasını (CLS) önlüyorlar.)
==============================================================================*/
.diptik-parca img,
.detay-kare img,
.paket-gorsel img,
.lb-kare img,
.lukbuk-kare img,
.product-card .image-holder img,
.product-item .image-holder img.product-image,
#banner [class*="banner-content-"] img {
  height: auto;
}
/* Lükbuk ızgarasında uzun kare satırı doldurmalı */
.lukbuk-kare { display: block; }
.lukbuk-kare img { height: auto; }

/*==============================================================================
  LÜKBUK TANITIMI — DÜZELTMELER
  1) #hero-alan ~ section kuralı (özgüllük 0,1,1) tüm bölümlere krem zemin
     veriyor ve .lukbuk-tanitim (0,1,0) buna yeniliyordu: koyu bölüm krem
     görünüyor, beyaz başlık kayboluyordu. Id ile özgüllük yükseltildi.
  2) grid-row: span 2 olan uzun kare, img height:auto olduğu için satırı
     doldurmuyordu; altında boş koyu alan kalıyordu.
==============================================================================*/
#lukbuk-tanitim.lukbuk-tanitim,
#hero-alan ~ section#lukbuk-tanitim {
  background-color: var(--n-900);
}
#lukbuk-tanitim .lukbuk-kare--uzun {
  display: block;
  height: 100%;
}
#lukbuk-tanitim .lukbuk-kare--uzun img {
  height: 100%;
  width: 100%;
  aspect-ratio: auto;
  object-fit: cover;
}
@media (max-width: 991.98px) {
  #lukbuk-tanitim .lukbuk-kare--uzun { height: auto; }
  #lukbuk-tanitim .lukbuk-kare--uzun img { height: auto; aspect-ratio: 3 / 4; }
}

/* Lükbuk ızgarası: karışık oranlı kareler satırı esnetip altlarında boş
   krem kutular bırakıyordu. Kareler kendi yüksekliğinde kalsın. */
.lb-izgara { align-items: start; }

/*--- 404 SAYFASI ------------------------------------------------------------*/
.hata-sayfasi {
  min-height: 100svh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--sp-8) var(--sp-5);
  background: var(--renk-zemin-yumusak);
  text-align: center;
}
.hata-ic { max-width: 46rem; }
.hata-logo { display: inline-block; margin-bottom: var(--sp-7); }
.hata-logo img { width: clamp(96px, 12vw, 132px); height: auto; }
.hata-ic .ust-etiket { margin-left: auto; margin-right: auto; }
.hata-ic h1 { margin-bottom: var(--sp-4); }
.hata-metin { margin: 0 auto var(--sp-7); color: var(--n-600); max-width: 46ch; }
.hata-baglar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  justify-content: center;
  align-items: center;
}

/*==============================================================================
  FOOTER — yazı sol üstte, nilüfer sağ alt boşlukta
  Footer'ın sağ alt köşesi boştu; dikey kilit yerine yazı kullanıp nilüferi
  o boşluğa büyük ve soluk bir filigran olarak koymak hem alanı değerlendiriyor
  hem markayı sessizce imzalıyor.
==============================================================================*/
#footer { position: relative; }
.footer-nilufer {
  position: absolute;
  right: clamp(-40px, -2vw, 0px);
  bottom: clamp(-30px, -2vw, 0px);
  width: clamp(180px, 26vw, 400px);
  height: auto;
  opacity: .07;
  pointer-events: none;
  z-index: 0;
}
#footer .container-fluid { position: relative; z-index: 1; }
.logo-suelle--footer { width: clamp(120px, 14vw, 168px); }

@media (max-width: 767.98px) {
  .footer-nilufer { width: 200px; opacity: .05; right: -30px; bottom: -20px; }
}

/*==============================================================================
  HERO — "Suelle" yazısı büyük
  Menü çubuğundaki logo tüm sayfalarda küçük kalıyor; hero'da marka adı ilk
  izlenimi kurduğu için orada belirgin biçimde büyütülüyor.
==============================================================================*/
body.has-hero:not(.sayfa-kaydirildi) .site-header .logo-suelle {
  height: clamp(46px, 5.2vw, 84px);
  transition: height var(--gecis), filter var(--gecis);
}
/* Kaydırınca çubuk daralırken logo da normale döner */
body.sayfa-kaydirildi .site-header .logo-suelle {
  height: clamp(28px, 2.2vw, 36px);
}

/*==============================================================================
  ALIŞILMADIK KAYDIRMA EFEKTLERİ
  Standart fade/slide yerine markaya özgü davranışlar.
==============================================================================*/

/* --- 1. NİLÜFER AÇILIŞI ------------------------------------------------------
   HATA DERSİ (25 Temmuz 2026): ilk sürümde maske olarak doğrudan logo
   (suelle-lotus.svg) kullanıldı. Ama logo bir ÇİZGİ çalışması — ölçüldü,
   opaklığı yalnızca %21. Maske olarak kullanıldığında görselin %79'u hiç
   açılmıyordu; animasyon "takılı kalmış" görünüyordu. Elle çizilen dolu
   silüet de %31'de kaldı.
   ÇÖZÜM: açılımı maskenin şekline bırakmıyoruz. Açılım, kapanması imkânsız
   bir radyal iris ile yapılıyor (yumuşak kenarlı, %0 -> %150 büyür, yani
   kadrajı kesin kaplar). Nilüfer ise ÜSTTE ince altın bir imza olarak durup
   açılım tamamlanırken eriyor — marka hissi kalıyor, takılma riski bitiyor.
   Ek güvence: JS sonda .acilim-tamam sınıfı ekliyor ve maske tümden kalkıyor. */
.nilufer-acilis {
  --acilim: 0;                       /* JS 0 -> 1 yazar */
  position: relative;
  -webkit-mask-image: radial-gradient(circle at 50% 52%,
      #000 0%,
      #000 calc(var(--acilim) * 118%),
      transparent calc(var(--acilim) * 150%));
  mask-image: radial-gradient(circle at 50% 52%,
      #000 0%,
      #000 calc(var(--acilim) * 118%),
      transparent calc(var(--acilim) * 150%));
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}
/* Açılım bittiğinde maske TÜMDEN kalkar — görsel kesin tam görünür. */
.nilufer-acilis.acilim-tamam {
  -webkit-mask-image: none !important;
  mask-image: none !important;
}
/* Nilüfer imzası: açılışın üstünde durur, açılım ilerledikçe erir */
.nilufer-acilis::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("images/marka/suelle-lotus-beyaz.svg");
  background-repeat: no-repeat;
  background-position: center 48%;
  background-size: calc(26% + var(--acilim) * 34%) auto;
  opacity: calc((1 - var(--acilim)) * 0.55);
  pointer-events: none;
  z-index: 2;
}
.nilufer-acilis.acilim-tamam::after { opacity: 0; }

/* --- 2. PERDE AÇILIŞI: görsel ortadan iki yana yarılarak belirir ---------- */
.perde-acilis {
  --acilim: 0;
  clip-path: inset(0 calc((1 - var(--acilim)) * 50%) 0 calc((1 - var(--acilim)) * 50%));
  transition: clip-path .1s linear;
}

/* --- 3. YATAY RAY: dikey kaydırma yatay harekete çevrilir ----------------- */
.yatay-sahne { position: relative; }
.yatay-ray {
  position: sticky;
  top: 0;
  height: 100svh;
  display: flex;
  align-items: center;
  overflow: hidden;
}
.yatay-serit {
  display: flex;
  gap: clamp(var(--sp-4), 2vw, var(--sp-6));
  padding-inline: clamp(var(--sp-5), 6vw, var(--sp-10));
  will-change: transform;
  transform: translate3d(calc(var(--kaydir, 0) * -1px), 0, 0);
}
.yatay-serit figure { margin: 0; flex: 0 0 auto; width: clamp(240px, 26vw, 420px); }
.yatay-serit img {
  display: block; width: 100%; height: auto;
  aspect-ratio: 3 / 4; object-fit: cover;
  border-radius: var(--r-yuzey);
}
.yatay-serit figcaption {
  padding-top: var(--sp-3);
  font-family: var(--body-font);
  font-size: var(--fs-sm);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--n-500);
}

/* --- 4. BAŞLIK HARF ARALIĞI -----------------------------------------------
   Eskiden kaydırdıkça harf aralığı -0.02em'den 0.14em'e açılıyordu; başlık
   büyüyor gibi görünüyordu ve iyi durmuyordu. Animasyon kaldırıldı, ölçü
   açılımın BİTTİĞİ yerde sabitlendi — yani yerleşik hâli aynı, hareket yok.
   (js/script.js artık .harf-acilis öğelerini de takip etmiyor.) */
.harf-acilis {
  letter-spacing: .14em;
}

/* --- 5. DERİNLİK KATMANI: fotoğraf yavaş, yazı hızlı ---------------------- */
.derinlik { --kayma: 0; transform: translate3d(0, calc(var(--kayma) * 1px), 0); }

@media (prefers-reduced-motion: reduce) {
  .nilufer-acilis { -webkit-mask-image: none; mask-image: none; }
  .perde-acilis { clip-path: none; }
  .yatay-serit, .derinlik { transform: none; }
  .harf-acilis { letter-spacing: .04em; }
  .yatay-ray { position: static; height: auto; overflow-x: auto; }
}

/* Büyük hero logosu menüyü sıkıştırıp "Ana Sayfa"yı iki satıra bölüyordu.
   Menü öğeleri artık bölünmüyor, markaya nefes payı veriliyor ve logo
   yalnızca gerçekten yer olan genişliklerde büyütülüyor. */
.navbar-nav .nav-item a.nav-link { white-space: nowrap; }
.site-header .navbar-brand { margin-right: clamp(var(--sp-4), 3vw, var(--sp-8)); flex: 0 0 auto; }
body.has-hero:not(.sayfa-kaydirildi) .site-header .logo-suelle { height: clamp(34px, 3.4vw, 62px); }
@media (min-width: 1400px) {
  body.has-hero:not(.sayfa-kaydirildi) .site-header .logo-suelle { height: 74px; }
}
@media (max-width: 991.98px) {
  body.has-hero:not(.sayfa-kaydirildi) .site-header .logo-suelle { height: clamp(38px, 8vw, 56px); }
}

/*==============================================================================
  NİLÜFER — YÜKLEME VE 404 SAYFASI
  Markanın işareti yalnızca menüde değil, beklenen ve kaybolan anlarda da
  görünsün: yüklenirken nefes alan bir nilüfer, 404'te dev bir soluk filigran.
==============================================================================*/

/* --- Yükleme: nilüfer nefes alır + altın hâle döner --- */
#preloader { position: fixed; inset: 0; display: grid; place-items: center;
             background: var(--renk-zemin); z-index: 9999; }
.yukleme-nilufer {
  width: clamp(84px, 11vw, 132px);
  height: auto;
  animation: nilufer-nefes 2.4s ease-in-out infinite;
  filter: drop-shadow(0 0 22px rgba(197, 164, 126, .35));
}
@keyframes nilufer-nefes {
  0%, 100% { transform: scale(.94) rotate(-1.2deg); opacity: .55; }
  50%      { transform: scale(1.06) rotate(1.2deg);  opacity: 1; }
}
/* Şablonun kendi dönen halkası nilüferin altında ince bir yay olarak kalır */
#preloader .loader {
  position: absolute;
  width: clamp(150px, 19vw, 230px);
  height: clamp(150px, 19vw, 230px);
  border: 1px solid var(--gold-200);
  border-top-color: var(--gold-500);
  border-radius: 50%;
  animation: nilufer-halka 1.5s linear infinite;
}
@keyframes nilufer-halka { to { transform: rotate(360deg); } }

/* --- 404: dev soluk nilüfer, yavaşça süzülür --- */
.hata-sayfasi { position: relative; overflow: hidden; }
.hata-nilufer {
  position: absolute;
  left: 50%;
  top: 46%;
  width: clamp(320px, 62vw, 760px);
  height: auto;
  transform: translate(-50%, -50%);
  opacity: .085;
  pointer-events: none;
  z-index: 0;
  animation: nilufer-suzul 14s ease-in-out infinite;
}
@keyframes nilufer-suzul {
  0%, 100% { transform: translate(-50%, -50%) scale(1)     rotate(0deg); opacity: .07; }
  50%      { transform: translate(-50%, -53%) scale(1.045) rotate(2deg); opacity: .11; }
}
.hata-ic { position: relative; z-index: 1; }

@media (prefers-reduced-motion: reduce) {
  .yukleme-nilufer, #preloader .loader, .hata-nilufer { animation: none; }
  .yukleme-nilufer { opacity: 1; }
}

/* ============================================================
   16. PANELDEN KALDIRILAN GÖRSELLER
   ------------------------------------------------------------
   Görsel düzenleme panelindeki "Kaldır" düğmesi <img> etiketini
   SİLMEZ — sayfa yapısı bozulmasın diye işaretler. Burada gizlenir.
   Geri almak için işareti kaldırmak yeterli.
   ============================================================ */
img[data-suelle-kaldirildi] { display: none !important; }
picture:has(> img[data-suelle-kaldirildi]),
figure:has(img[data-suelle-kaldirildi]) { display: none !important; }

/* Görsel kaldırılınca ÜSTÜNDEKİ kutu da kapanmalı. Aksi halde içerik
   (başlık + düğme) zeminsiz kalıyor: #banner bölümünde beyaz yazılar
   beyaz zeminde görünmez oldu — kontrast ölçümünde 1.0 çıktı. */
.banner-content-1:has(img[data-suelle-kaldirildi]),
.banner-content-2:has(img[data-suelle-kaldirildi]),
.banner-content-3:has(img[data-suelle-kaldirildi]) { display: none !important; }
/* Üç kutusu da kapandıysa bölüm hiç yer kaplamasın */
#banner:has(.banner-content-1 img[data-suelle-kaldirildi]):has(.banner-content-2 img[data-suelle-kaldirildi]):has(.banner-content-3 img[data-suelle-kaldirildi]) {
  display: none !important;
}

/* ============================================================
   17. HERO — "UZAK" HİSSİ (sinema perdesi düzeni)
   ------------------------------------------------------------
   Sorun: masaüstünde video 16:9 ama hero kutusu ~1.6:1 olduğu için
   object-fit:cover kareyi ~%10 kırpıyordu; zaten yakın çekim olan
   kadraj iyice yüze yapışıyordu.
   Çözüm: video kendi 16:9 oranında, ekrandan biraz İÇERİDE duruyor;
   çevresini videonun kendi karesinden türetilmiş bulanık-koyu bir
   zemin dolduruyor. Kırpma sıfırlanıyor, kare geri çekiliyor.
   Mobilde .hero-ic zaten height:auto ile tam kareyi gösteriyordu;
   orada yalnızca boş alanın zeminini düzeltiyoruz.
   ============================================================ */
/* Çerçeve payı: kare ekrandan ne kadar içeride duracak. Büyüdükçe
   "geri çekilmiş" hissi artar. %82 -> ~%70 ekran alanı. */
:root { --hero-cerceve: clamp(0px, 5.6vh, 86px); }

#hero-interactive { align-items: center; }
#hero-interactive::before {
  content: "";
  position: absolute;
  inset: -10%;
  background: url("images/hero/durak_kupe_hd.webp") center center / cover no-repeat;
  filter: blur(56px) brightness(.42) saturate(.85);
  z-index: 0;
  pointer-events: none;
}
.hero-ic { position: relative; z-index: 1; }

@media (min-width: 768px) {
  .hero-ic {
    /* aspect-ratio ile oran KESİN 16:9 olur. Yalnız genişliği sınırlamak
       yetmiyordu: dar-yüksek ekranlarda genişlik bağlayıcı olup kutu
       1.65:1'de kalıyor, cover yine kırpıyordu. */
    aspect-ratio: 16 / 9;
    width: min(calc(100% - var(--hero-cerceve) * 2),
               calc((100svh - var(--hero-cerceve) * 2) * 16 / 9));
    height: auto;
    max-height: calc(100% - var(--hero-cerceve) * 2);
    border-radius: 4px;
    overflow: hidden;
    box-shadow: 0 26px 80px rgba(0, 0, 0, .42);
  }
}

/* Hareket duyarlılığı: bulanık zemin sabittir, sorun çıkarmaz —
   ancak düşük güçlü cihazlarda blur pahalı; orada sadeleştir. */
@media (max-width: 480px) {
  #hero-interactive::before { filter: blur(28px) brightness(.45); }
}

/* Tek seferlik geri çekilme: sayfa açılınca kare hafifçe uzaklaşır.
   .hero-ic'e dokunulmuyor — oraya kaydırma efekti JS'ten transform yazıyor,
   çakışırsa ikisi de bozulurdu. Hareket yalnızca video katmanında. */
@media (prefers-reduced-motion: no-preference) {
  #hero-interactive video {
    animation: hero-geri-cekil 2600ms cubic-bezier(.16, .84, .3, 1) both;
  }
}
@keyframes hero-geri-cekil {
  from { transform: scale(1.075); }
  to   { transform: scale(1); }
}

/* ============================================================
   18. HERO — MOBİL DÜZEN VE MİRAS DÜZELTMESİ
   ============================================================ */

/* #hero-interactive'te line-height:0 var (video altındaki boşluğu almak için)
   ve bu panel içeriğine kadar miras kalıyordu: "Koleksiyonu Gör" bağlantısının
   kutusu 105x3 piksel oluyordu — dokunulamayacak kadar ince. Panelde normal
   satır yüksekliğine dönülüyor. */
#hero-panel { line-height: 1.5; }
#hero-panel h3 { line-height: 1.25; }
.hero-koleksiyon {
  display: inline-block;
  padding: 6px 2px;          /* dokunma alanı */
  line-height: 1.4;
}

/* Mobilde hero 100vh'ti ama video 16:9 olduğu için ekranın ancak dörtte birini
   dolduruyor, kalan alan boş kalıyordu. Yükseklik artık içeriğe göre:
   video + panel payı. Ölçü #hero-alan (akıştaki yer tutucu) ile AYNI olmalı,
   yoksa sonraki bölüm hero'nun altına kayar. */
@media (max-width: 767px) {
  #hero-interactive,
  #hero-alan {
    height: min(74svh, calc(100vw * 9 / 16 + 252px));
  }
  #hero-interactive { align-items: flex-start; }
  .hero-ic { margin-top: clamp(12px, 3vh, 28px); }
  #hero-interactive::before { filter: blur(30px) brightness(.4); }
}

/* ============================================================
   19. MOBİL — DOKUNMA HEDEFLERİ
   ------------------------------------------------------------
   Denetimde 40 pikselin altında kalan hedefler: hero noktaları (12px),
   swiper mermileri (10px), kapatma düğmesi (32px), dil düğmeleri (29x22).
   Görsel boyut korunur; tıklanabilir alan ::after ile büyütülür.
   ============================================================ */
@media (max-width: 991.98px) {
  .hero-dot,
  .swiper-pagination-bullet,
  .btn-close,
  .dil-dugme, .lang-btn {
    position: relative;
  }
  .hero-dot::after,
  .swiper-pagination-bullet::after,
  .btn-close::after,
  .dil-dugme::after, .lang-btn::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 44px;
    height: 44px;
    transform: translate(-50%, -50%);
  }
  /* Footer ve ürün bağlantılarında satır aralığı dokunmaya yetsin */
  #footer .menu-list a,
  #footer .social-links a,
  .product-item .product-title a {
    display: inline-block;
    padding-block: 7px;
  }
}

/* Denetimden çıkan gerçek seçiciler: dil düğmeleri .d-lg-none içinde sade <a>,
   ürün adı H5 içinde, fiyat/detay bağlantısı .product-content içinde.
   Görsel boyut aynı kalır, yalnızca dokunma alanı büyür. */
@media (max-width: 991.98px) {
  .product-item h5 a,
  .product-card h5 a,
  .product-content a,
  .d-lg-none a {
    display: inline-block;
    padding-block: 9px;
  }
  .filter-search button,
  .offcanvas-header .btn-close {
    min-width: 44px;
    min-height: 44px;
  }
}

/* Kırıntı (breadcrumb) bağlantısı da mobilde dokunulabilir olsun */
@media (max-width: 991.98px) {
  .hero-content .item a,
  .breadcrumb a { display: inline-block; padding-block: 9px; }
}

/* Mobilde panel açıkken ürün noktaları panelin ALTINDA kalıyordu:
   elementFromPoint testinde noktanın merkezine bile dokunulamıyordu
   (üstte panel başlığı çıkıyordu). Panel açıkken zaten yönlendirme
   paneldedir; noktalar gizlenir, panel kapanınca geri gelir. */
@media (max-width: 767px) {
  .hero-ic:has(#hero-panel.acik) #hero-dots {
    opacity: 0;
    pointer-events: none;
  }
  #hero-dots { transition: opacity .25s ease, bottom .35s ease; }
}

/* Shopier'den gelen ürün özellikleri listesi */
.urun-ozellikler {
  list-style: none;
  padding: 0;
  margin: var(--sp-4) 0 var(--sp-5);
  display: grid;
  gap: 6px;
}
.urun-ozellikler li {
  position: relative;
  padding-left: 18px;
  color: var(--n-700);
  font-size: var(--fs-sm);
  line-height: 1.55;
}
.urun-ozellikler li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .62em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--gold-400);
}

/* Ürün sayfasındaki Shopier satın alma bağlantısı */
.shopier-bag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: var(--sp-4);
  padding: 12px 22px;
  border: 1px solid var(--gold-400);
  border-radius: 999px;
  color: var(--n-900);
  text-decoration: none;
  font-size: var(--fs-sm);
  letter-spacing: .03em;
  transition: background var(--gecis), color var(--gecis);
}
.shopier-bag::after { content: "↗"; font-size: .9em; }
.shopier-bag:hover { background: var(--gold-400); color: #fff; }

/* ============================================================
   20. MAĞAZA — KART DÜZENİ VE LOTUS TEMASI
   ------------------------------------------------------------
   Sorun: kartların yüksekliği ürün adının satır sayısına göre
   değişiyordu; uzun adlar komşu sütuna taşıyor, ızgara kayıyordu.
   Çözüm: kart bir flex sütun, görsel sabit oranda, ad iki satıra
   kilitli, fiyat her kartta aynı hizada.
   ============================================================ */
.product-grid { position: relative; background: var(--n-0); }

/* Zeminde büyük, çok sönük nilüfer — sayfaya markanın izi */
.product-grid::before {
  content: "";
  position: absolute;
  right: -6%;
  top: 4%;
  width: min(720px, 58vw);
  aspect-ratio: 3 / 2;
  background: url("images/marka/suelle-lotus.svg") center / contain no-repeat;
  opacity: .05;
  pointer-events: none;
  z-index: 0;
}
.product-grid > .container-fluid { position: relative; z-index: 1; }

.product-grid .product-content {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(min(208px, 100%), 1fr));
  gap: clamp(var(--sp-4), 2.2vw, var(--sp-6));
  align-items: stretch;
}
.product-grid .product-item {
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: flex;
  flex-direction: column;
}
.product-grid .product-item .image-holder {
  margin: 0 !important;
  display: flex;
  flex-direction: column;
  flex: 1;
  background: var(--n-100);
  border-radius: var(--r-yuzey);
  overflow: hidden;
  transition: box-shadow var(--gecis), transform var(--gecis);
}
.product-grid .product-item .image-holder:hover {
  box-shadow: 0 14px 34px rgba(35, 32, 26, .12);
  transform: translateY(-3px);
}
.product-grid .product-item .image-holder > a { display: block; }
.product-grid .product-item .product-image {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  height: auto;
  object-fit: cover;
}
.product-grid .product-item .product-content {
  display: flex !important;
  flex-direction: column;
  flex: 1;
  gap: 4px;
  padding: var(--sp-3) var(--sp-4) var(--sp-4);
  background: var(--n-0);
}
/* Ürün adı iki satıra kilitli: kartlar aynı yükseklikte kalır */
.product-grid .product-item h5 {
  margin: 0 !important;
  font-size: var(--fs-md) !important;
  line-height: 1.35;
  /* Shopier adları uzun ("Gold Beyaz Taş Detaylı Kare Zincir Bileklik
     (Ayarlanabilir)"). Üç satıra kadar TAM gösterilir, yer peşinen ayrılır:
     kartlar aynı yükseklikte kalır, isim kırpılmaz.
     display için !important şart — şablon h5'e flow-root veriyor. */
  min-height: calc(3 * 1.35em);
  display: -webkit-box !important;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-transform: none !important;
}
.product-grid .product-item h5 a { color: var(--n-900); text-decoration: none; }
.product-grid .product-item h5 a:hover { color: var(--gold-700); }
.product-grid .product-item .cart-info,
.product-grid .product-item > .image-holder > .product-content > a[data-after] {
  margin-top: auto;
}
.product-grid .product-item a[data-after] {
  margin-top: auto;
  font-size: var(--fs-md);
  color: var(--n-900);
  text-decoration: none;
}

/* Sıralama kutusu ve sonuç sayısı aynı hizada dursun */
.product-grid .filter-shop {
  align-items: center;
  gap: var(--sp-4);
  padding-bottom: var(--sp-4);
  border-bottom: 1px solid var(--renk-kenarlik);
  margin-bottom: var(--sp-5);
}
.product-grid .showing-product p { margin: 0; color: var(--n-600); }

/* Kenar çubuğu: sayfa boyunca yanında kalsın */
.product-grid aside .sidebar {
  position: sticky;
  top: 96px;
}
@media (max-width: 767.98px) {
  .product-grid aside .sidebar { position: static; }
  .product-grid::before { display: none; }
}

/* Footer'a taşınan güven şeridi (eski #company-services bandı) */
.footer-guven {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(var(--sp-5), 5vw, var(--sp-9));
  padding: 0 var(--sp-5) var(--sp-7);
  margin-bottom: var(--sp-7);
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.footer-guven-oge {
  display: flex;
  align-items: center;
  gap: 10px;
  color: rgba(255, 255, 255, .82);
  font-size: var(--fs-sm);
  letter-spacing: .04em;
}
.footer-guven-oge svg { fill: var(--gold-400); flex: none; }
@media (max-width: 575.98px) {
  .footer-guven { gap: var(--sp-4); flex-direction: column; align-items: flex-start; }
}

/* ============================================================
   21. FİYAT ARALIĞI — çift kollu kaydırıcı
   ------------------------------------------------------------
   İki <input type=range> üst üste bindirilir; ikisi de saydamdır,
   görünen ray ve dolgu altta çizilir. Kollar tıklanabilir kalsın
   diye pointer-events yalnızca başparmaklarda açılır.
   ============================================================ */
.fiyat-araligi { padding-top: 4px; }
.fiyat-araligi .fa-degerler {
  display: flex;
  justify-content: space-between;
  font-size: var(--fs-sm);
  color: var(--n-900);
  margin-bottom: 14px;
  font-variant-numeric: tabular-nums;
}
.fiyat-araligi .fa-ray {
  position: relative;
  height: 28px;
  margin: 0 2px;
}
.fiyat-araligi .fa-ray::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 50%;
  height: 2px;
  transform: translateY(-50%);
  background: var(--renk-kenarlik);
  border-radius: 2px;
}
.fiyat-araligi .fa-dolgu {
  position: absolute;
  top: 50%;
  height: 2px;
  transform: translateY(-50%);
  background: var(--gold-400);
  border-radius: 2px;
}
.fiyat-araligi .fa-giris {
  position: absolute;
  left: 0; top: 0;
  width: 100%;
  height: 28px;
  margin: 0;
  background: none;
  appearance: none;
  -webkit-appearance: none;
  pointer-events: none;   /* ray tıklanmaz, yalnızca kollar */
}
.fiyat-araligi .fa-giris::-webkit-slider-thumb {
  -webkit-appearance: none;
  pointer-events: auto;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--n-0);
  border: 2px solid var(--gold-400);
  box-shadow: 0 1px 5px rgba(35, 32, 26, .22);
  cursor: grab;
  transition: transform .15s ease, box-shadow .15s ease;
}
.fiyat-araligi .fa-giris::-webkit-slider-thumb:hover { transform: scale(1.12); }
.fiyat-araligi .fa-giris::-webkit-slider-thumb:active {
  cursor: grabbing;
  background: var(--gold-400);
}
.fiyat-araligi .fa-giris::-moz-range-thumb {
  pointer-events: auto;
  width: 18px; height: 18px;
  border-radius: 50%;
  background: var(--n-0);
  border: 2px solid var(--gold-400);
  box-shadow: 0 1px 5px rgba(35, 32, 26, .22);
  cursor: grab;
}
.fiyat-araligi .fa-giris:focus-visible::-webkit-slider-thumb {
  outline: 2px solid var(--gold-700);
  outline-offset: 2px;
}
.fiyat-araligi .fa-sifirla {
  margin-top: 14px;
  padding: 0;
  background: none;
  border: 0;
  border-bottom: 1px solid var(--renk-kenarlik);
  color: var(--n-600);
  font-size: var(--fs-xs, .8rem);
  letter-spacing: .04em;
  cursor: pointer;
  transition: color var(--gecis), border-color var(--gecis);
}
.fiyat-araligi .fa-sifirla:hover {
  color: var(--gold-700);
  border-bottom-color: var(--gold-400);
}
/* Mobilde parmakla tutulabilsin */
@media (max-width: 991.98px) {
  .fiyat-araligi .fa-ray { height: 40px; }
  .fiyat-araligi .fa-giris { height: 40px; }
  .fiyat-araligi .fa-giris::-webkit-slider-thumb { width: 24px; height: 24px; }
  .fiyat-araligi .fa-giris::-moz-range-thumb { width: 24px; height: 24px; }
}

/* ============================================================
   22. BÜYÜTEÇ — ürün fotoğrafı yakınlaştırma
   ============================================================ */
.product-large-slider.buyutec-var { position: relative; cursor: zoom-in; }
.product-large-slider.buyutec-var img { cursor: zoom-in; }
/* Büyüteç rozeti: fotoğrafın tıklanabilir olduğu belli olsun */
.product-large-slider.buyutec-var::after {
  content: "";
  position: absolute;
  right: 14px;
  bottom: 14px;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: rgba(27, 24, 20, .72)
    url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23ffffff" stroke-width="1.8" stroke-linecap="round"><circle cx="11" cy="11" r="6.5"/><path d="M15.8 15.8 21 21M11 8.4v5.2M8.4 11h5.2"/></svg>')
    center / 22px 22px no-repeat;
  z-index: 3;
  pointer-events: none;
  transition: background-color var(--gecis), transform var(--gecis);
}
.product-large-slider.buyutec-var:hover::after {
  background-color: var(--gold-400);
  transform: scale(1.06);
}

.buyutec-pencere {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  background: rgba(18, 16, 13, .94);
  display: flex;
  align-items: center;
  justify-content: center;
  overscroll-behavior: contain;
}
.buyutec-pencere .bp-gorsel {
  max-width: 92vw;
  max-height: 86vh;
  object-fit: contain;
  transition: transform .18s ease-out;
  will-change: transform;
  user-select: none;
  -webkit-user-drag: none;
}
.buyutec-pencere button {
  position: absolute;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .28);
  color: #fff;
  border-radius: 50%;
  width: 48px;
  height: 48px;
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
  transition: background var(--gecis);
}
.buyutec-pencere button:hover { background: rgba(255, 255, 255, .22); }
.buyutec-pencere .bp-kapat { top: 20px; right: 20px; }
.buyutec-pencere .bp-onceki { left: 20px; top: 50%; transform: translateY(-50%); }
.buyutec-pencere .bp-sonraki { right: 20px; top: 50%; transform: translateY(-50%); }
.buyutec-pencere .bp-bilgi {
  position: absolute;
  left: 0; right: 0; bottom: 22px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  color: rgba(255, 255, 255, .72);
  font-size: var(--fs-sm);
  pointer-events: none;
}
.buyutec-pencere .bp-sayac { font-variant-numeric: tabular-nums; letter-spacing: .1em; }
.buyutec-pencere .bp-ipucu { font-size: .78rem; opacity: .7; }
@media (max-width: 575.98px) {
  .buyutec-pencere button { width: 44px; height: 44px; }
  .buyutec-pencere .bp-onceki { left: 8px; }
  .buyutec-pencere .bp-sonraki { right: 8px; }
  .buyutec-pencere .bp-ipucu { display: none; }
}

/* ============================================================
   23. FİYAT HOVER'DA KAYBOLMASIN
   ------------------------------------------------------------
   Şablonun "pseudo-text-effect"i fiyatı yukarı kaydırıp yerine
   SEPETE EKLE getiriyordu; fareyle gelince fiyat görünmez oluyordu.
   Fiyat artık sabit; sepete ekle etiketi SAĞDAN, fiyatı örtmeden gelir.
   ============================================================ */
.product-grid .pseudo-text-effect,
.product-card .pseudo-text-effect {
  overflow: visible;
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.product-grid .pseudo-text-effect > span,
.product-card .pseudo-text-effect > span {
  transform: none !important;   /* fiyat yerinde kalır */
  font-variant-numeric: tabular-nums;
  color: var(--n-900);
}
.product-grid .pseudo-text-effect::after,
.product-card .pseudo-text-effect::after {
  position: static;
  transform: none;
  opacity: 0;
  font-size: .72rem;
  letter-spacing: .1em;
  color: var(--gold-700);
  border-bottom: 1px solid var(--gold-400);
  padding-bottom: 1px;
  transition: opacity .25s ease;
  white-space: nowrap;
}
.product-grid .product-item:hover .pseudo-text-effect::after,
.product-card:hover .pseudo-text-effect::after { opacity: 1; }
/* Dokunmatikte hover yok: etiket hep görünsün */
@media (hover: none) {
  .product-grid .pseudo-text-effect::after,
  .product-card .pseudo-text-effect::after { opacity: .75; }
}

/* Lookbook tanıtımındaki ikincil satır */
.lukbuk-metin .lukbuk-alt {
  color: var(--n-500);
  font-size: var(--fs-sm);
  letter-spacing: .04em;
  margin-top: calc(var(--sp-3) * -1);
}

/* Footer sosyal medya: ikon + platform + hesap */
.sosyal-liste { margin: 0; }
.sosyal-liste li + li { margin-top: var(--sp-4); }
.sosyal-satir {
  display: grid;
  grid-template-columns: 24px 1fr;
  grid-template-rows: auto auto;
  column-gap: 12px;
  row-gap: 2px;
  align-items: center;
  text-decoration: none;
  color: rgba(255, 255, 255, .86);
}
.sosyal-satir svg { grid-row: 1 / 3; color: var(--gold-400); }
.sosyal-ad { font-size: var(--fs-sm); letter-spacing: .03em; }
.sosyal-deger {
  font-size: .82rem;
  color: rgba(255, 255, 255, .58);
  font-variant-numeric: tabular-nums;
}
.sosyal-satir:hover { color: #fff; }
.sosyal-satir:hover svg { color: var(--gold-100, #f0e2cf); }
.sosyal-satir:hover .sosyal-deger { color: rgba(255, 255, 255, .82); }

/* GÜVENLİK AĞI — fiyat hiçbir koşulda kaybolmasın.
   .link-effect / .pseudo-text-effect fiyatı translateY(-100%) ile yukarı
   kaydırıp yerine "SEPETE EKLE" getiriyordu; fareyle gelince fiyat
   görünmez oluyordu. Ürün kartlarında bu davranış tamamen kapalı. */
.product-item a[data-after] > span,
.product-card a[data-after] > span,
.product-item:hover a[data-after] > span,
.product-card:hover a[data-after] > span,
.link-effect:hover .product-content a > span {
  transform: none !important;
  opacity: 1 !important;
}
.product-item a[data-after],
.product-card a[data-after] { overflow: visible !important; }
/* "SEPETE EKLE" etiketi fiyatın YERİNE değil, ALTINA gelir */
.product-item a[data-after]::after,
.product-card a[data-after]::after {
  position: static !important;
  transform: none !important;
  display: block;
  margin-top: 6px;
  font-size: .72rem;
  letter-spacing: .1em;
  color: var(--gold-700);
  opacity: 0;
  transition: opacity .25s ease;
}
.product-item:hover a[data-after]::after,
.product-card:hover a[data-after]::after { opacity: 1; }
@media (hover: none) {
  .product-item a[data-after]::after,
  .product-card a[data-after]::after { opacity: .75; }
}

/* ============================================================
   24. NİLÜFER AÇILIŞI — hero
   ------------------------------------------------------------
   Aşama 1: logonun kendi yolları çizgi olarak çizilir (js/acilis.js)
   Aşama 2: çizgi söner, nilüfer bir PENCEREYE dönüşür
   Aşama 3: kaydırdıkça pencere büyür, dört kare ekranı doldurur
   Maske: images/marka/suelle-lotus-dolu.png — logodan türetildi.
   ============================================================ */
#hero-interactive { background: #12100d; }
/* Bu hero'da çerçeve/blur zemin yok: sahne kendisi koyu */
#hero-interactive::before { display: none; }

.hero-ic {
  --nilufer-boyut: 46vmin;
  --acilim: 0;
  position: relative;
  width: 100% !important;
  height: 100% !important;
  max-height: none !important;
  aspect-ratio: auto !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: hidden;
  background: #12100d;
}

/* --- Çizilen nilüfer: ÜSTTE KALIR, yaprakların arasındaki altın çizgi odur.
   Opaklık/bulanıklık js/acilis.js'ten yazılır: büyüme boyunca durur,
   yalnızca EN SONDA çözülerek kaybolur (önce aniden sönüyordu). --- */
.acilis-cizgi {
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--nilufer-boyut);
  height: auto;
  transform: translate(-50%, -50%);
  z-index: 3;
  /* Kaydırdıkça çizim geri çekilir, fotoğraflar öne çıkar */
  opacity: 1;
  pointer-events: none;
}
/* Pencere büyürken çizgi kalınlaşmasın */
.acilis-cizgi path,
.acilis-cizgi polygon { vector-effect: non-scaling-stroke; }

/* --- Aşama 2-3: nilüfer penceresi --- */
.acilis-pencere {
  position: absolute;
  inset: 0;
  z-index: 2;
  opacity: 0;
  transition: opacity 900ms ease;
  /* YAPRAK İÇLERİ maskesi: fotoğraflar yaprakların içinden görünür,
     altın çizgiler aralarda boşluk olarak kalır. (Dolu siluet sürümü
     images/marka/suelle-lotus-dolu.png olarak duruyor.)

     İKİNCİ MASKE KATMANI — maskenin ÇÖZÜLMESİ:
     Maskeyi büyüterek kaldırmak mümkün değil; yaprak maskesinin tam
     merkezi saydam (iki yarım yaprağın arasındaki dikiş), yani nilüfer ne
     kadar büyürse büyüsün ekranın ortasında koyu bir bant kalıyordu.
     Bu yüzden maskeye, alfası --maske-coz ile 0'dan 1'e çıkan düz bir
     katman ekleniyor; `mask-composite: add` ikisini birleştirince maske
     yavaşça tamamen opaklaşıyor ve kareler bütün ekranda görünür oluyor.
     Değeri js/acilis.js yazar. */
  --maske-coz: 0;
  -webkit-mask-image: url("images/marka/suelle-lotus-yaprak-sim.png"),
    linear-gradient(rgb(0 0 0 / var(--maske-coz)), rgb(0 0 0 / var(--maske-coz)));
  mask-image: url("images/marka/suelle-lotus-yaprak-sim.png"),
    linear-gradient(rgb(0 0 0 / var(--maske-coz)), rgb(0 0 0 / var(--maske-coz)));
  -webkit-mask-repeat: no-repeat, no-repeat;
  mask-repeat: no-repeat, no-repeat;
  -webkit-mask-position: center 50%, center;
  mask-position: center 50%, center;
  -webkit-mask-size: var(--nilufer-boyut) auto, 100% 100%;
  mask-size: var(--nilufer-boyut) auto, 100% 100%;
  -webkit-mask-composite: source-over;
  mask-composite: add;
}
.acilis-hazir .acilis-pencere { opacity: 1; }
/* Başlangıçta yapraklar DOLU altın; yaklaştıkça fotoğraflar belirir.
   Altın katman pencerenin üstünde durur ve --acilim ile çözülür. */
.acilis-pencere::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, #d8bb94 0%, #c5a47e 45%, #a8875f 100%);
  opacity: var(--altin, 1);   /* js/acilis.js gunceller */
  transition: opacity 120ms linear;
  pointer-events: none;
}
/* Buradaki ".maskesiz" kuralı KALDIRILDI. Açılım %98,5'i geçince maskeyi
   bir anda siliyordu: yaprakların arasında maskelenmiş duran alanlar tek
   karede doluyor, kareler "tak diye" bütün ekrana sıçrıyordu. Maske artık
   sonuna kadar duruyor; pencerenin kendisi js/acilis.js'te nilüfer
   çizgisiyle AYNI eğride sönüyor. */

/* DAĞINIK MOZAİK — 12x8 ızgara, kareler farklı boyutlarda.
   Dört büyük kare yerine yirmi küçük kare: her görsel kendi oranına yakın
   bir kutuya oturduğu için kırpma neredeyse yok, nilüfer penceresinin
   ardında zengin bir doku oluşuyor. */
/* DÜZENSİZ MOZAİK — hücresi KARE olan bir ızgara.
   Bir kutu w sütun kaplıyorsa: 1:1 ürün karesi w satır, 3:4 manken karesi
   ceil(w*4/3) satır kaplar. Kutu oranı böylece her zaman kaynağın oranıdır
   (sıfır bozulma), ama w kutudan kutuya değiştiği için boyutlar birbirini
   tutmaz; `dense` yerleşimi de boşlukları kaydırıp kırık bir dizilim verir.
   --hucre'yi js/acilis.js yazar: sütun genişliği ile satır yüksekliğinin
   eşit olması gerekiyor, CSS bunu tek başına hesaplayamıyor. */
/* GERÇEK MOZAİK — karışık biçimli kutular
   Kullanıcı isteği: "bir fotoğraf kare, birisi dikdörtgen, birisi büyük,
   birisi küçük". Kutu biçimleri kaynağın 3:4 oranından ayrıştığı için
   kareler object-fit:cover ile kırpılarak oturur — karışık biçimin
   bedeli bu ve bilinçli kabul edildi. Grid %100 × %100 gerildiğinden
   boşluk kalması imkânsız; JS'e de gerek yok.
   Kare sırası mozaik_kur.py'nin yazdığı sırayla birebir: nth-child. */
.acilis-izgara {
  display: grid;
  grid-template-columns: repeat(10, 1fr);
  grid-template-rows: repeat(6, 1fr);
  width: 100%;
  height: 100%;
  gap: 3px;
  overflow: hidden;
}
.acilis-izgara picture {
  display: block;
  overflow: hidden;
}
/* 10×6 = 60 hücre, 15 kutu. Desenlerin HER HÜCREYİ tam bir kez kapladığı
   mozaik_kur.py içinde doğrulanıyor (kaplama_dogrula) — boşluk ya da üst
   üste binme olursa betik HTML'i yazmıyor.
   Kutu çeşidi: 4 büyük dikey (2×3), 7 kare (2×2), 4 ince şerit (1×2).
   En güçlü portreler büyük kutulara, yakın çekim küpeler ince şeritlere
   konuyor — dar kırpımda takı yüzle aynı bantta kalıyor.
   grid-area: satırBaş / sütunBaş / satırSon / sütunSon */
.acilis-izgara picture:nth-child(1)  { grid-area: 1 / 1 / 4 / 3; }
.acilis-izgara picture:nth-child(2)  { grid-area: 1 / 3 / 3 / 5; }
.acilis-izgara picture:nth-child(3)  { grid-area: 1 / 5 / 3 / 7; }
.acilis-izgara picture:nth-child(4)  { grid-area: 1 / 7 / 4 / 9; }
.acilis-izgara picture:nth-child(5)  { grid-area: 1 / 9 / 3 / 11; }
.acilis-izgara picture:nth-child(6)  { grid-area: 3 / 3 / 5 / 5; }
.acilis-izgara picture:nth-child(7)  { grid-area: 3 / 5 / 5 / 7; }
.acilis-izgara picture:nth-child(8)  { grid-area: 3 / 9 / 5 / 11; }
.acilis-izgara picture:nth-child(9)  { grid-area: 4 / 1 / 7 / 3; }
.acilis-izgara picture:nth-child(10) { grid-area: 4 / 7 / 7 / 9; }
.acilis-izgara picture:nth-child(11) { grid-area: 5 / 3 / 7 / 5; }
.acilis-izgara picture:nth-child(12) { grid-area: 5 / 5 / 7 / 6; }
.acilis-izgara picture:nth-child(13) { grid-area: 5 / 6 / 7 / 7; }
.acilis-izgara picture:nth-child(14) { grid-area: 5 / 9 / 7 / 10; }
.acilis-izgara picture:nth-child(15) { grid-area: 5 / 10 / 7 / 11; }

/* Dar ekran: 4×16 desen, aynı 15 kare (kaplama yine doğrulanmış) */
@media (max-width: 767px) {
  .acilis-izgara { grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(16, 1fr); }
  .acilis-izgara picture:nth-child(1)  { grid-area: 1 / 1 / 4 / 3; }
  .acilis-izgara picture:nth-child(2)  { grid-area: 1 / 3 / 4 / 5; }
  .acilis-izgara picture:nth-child(3)  { grid-area: 4 / 1 / 7 / 3; }
  .acilis-izgara picture:nth-child(4)  { grid-area: 4 / 3 / 7 / 5; }
  .acilis-izgara picture:nth-child(5)  { grid-area: 7 / 1 / 10 / 3; }
  .acilis-izgara picture:nth-child(6)  { grid-area: 7 / 3 / 10 / 5; }
  .acilis-izgara picture:nth-child(7)  { grid-area: 10 / 1 / 13 / 3; }
  .acilis-izgara picture:nth-child(8)  { grid-area: 10 / 3 / 13 / 5; }
  .acilis-izgara picture:nth-child(9)  { grid-area: 13 / 1 / 15 / 2; }
  .acilis-izgara picture:nth-child(10) { grid-area: 13 / 2 / 15 / 3; }
  .acilis-izgara picture:nth-child(11) { grid-area: 13 / 3 / 15 / 4; }
  .acilis-izgara picture:nth-child(12) { grid-area: 13 / 4 / 15 / 5; }
  .acilis-izgara picture:nth-child(13) { grid-area: 15 / 1 / 17 / 3; }
  .acilis-izgara picture:nth-child(14) { grid-area: 15 / 3 / 17 / 4; }
  .acilis-izgara picture:nth-child(15) { grid-area: 15 / 4 / 17 / 5; }
}
.acilis-izgara img {
  display: block;
  width: 100%;
  height: 100%;
  /* Kutular karışık biçimli (kare/yatay/dikey), kaynaklar 3:4: cover şart.
     Odak üst-orta — bu karelerde yüz ve takı üst üçte birde, yatay
     kutularda merkez kırpımı çeneden keserdi. */
  object-fit: cover;
  object-position: 50% 22%;
  background: #12100d;
}

/* --- Marka sözü --- */
.acilis-yazi {
  position: absolute;
  left: 50%;
  bottom: clamp(72px, 12vh, 132px);
  transform: translateX(-50%) translateY(14px);
  z-index: 4;
  text-align: center;
  opacity: 0;
  transition: opacity 900ms ease 200ms, transform 900ms cubic-bezier(.2,.6,.3,1) 200ms;
  pointer-events: none;
}
.acilis-yazi.gorunur { opacity: 1; transform: translateX(-50%) translateY(0); }
.acilis-marka {
  width: clamp(150px, 17vw, 250px);
  height: auto;
  filter: drop-shadow(0 2px 18px rgba(0, 0, 0, .6));
}
/* Slogan fontu: Cormorant Garamond italik (--yz-garamond).
   Versal + geniş aralık düzeni bilerek kaldırıldı — italik serif büyük
   harfle dağılır, cümle düzeninde akar. Boyut var(--fs-sm)'den yukarı
   çekildi: italik serif aynı punto'da grotesk'ten küçük görünür.
   Not: Italiana / Antic Didone / Tangerine bilerek elendi; üçünde de
   ğ Ğ İ ş Ş glifleri yok, "DEĞER" yedek fontla karışık çıkıyordu. */
.acilis-slogan {
  margin: var(--sp-3) 0 0;
  color: rgba(255, 255, 255, .88);
  font-family: var(--yz-garamond);
  font-style: italic;
  font-weight: 300;
  font-size: 1.06rem;
  letter-spacing: .05em;
  text-transform: none;
  text-shadow: 0 2px 14px rgba(0, 0, 0, .65);
}
/* Kaydırınca marka sözü çekilsin, kareler öne çıksın */
.hero-ic .acilis-yazi { opacity: calc(1 - var(--acilim) * 1.6); }

@media (max-width: 767px) {
  /* Burada eskiden yalnızca ".acilis-cizgi { width: 62vmin }" vardı.
     Maske ise --nilufer-boyut'u (46vmin) okumayı sürdürüyordu: çizgi
     maskeden %35 büyük çiziliyor, altın yapraklarla altın çizgiler
     birbirine oturmuyordu. Ölçü artık tek yerden — js/acilis.js
     içindeki TABAN_DAR — geliyor, ikisi de aynı değeri kullanıyor. */
  .acilis-yazi { bottom: clamp(44px, 9vh, 88px); }
  .acilis-slogan { font-size: .96rem; letter-spacing: .04em; }
}

@media (prefers-reduced-motion: reduce) {
  .acilis-cizgi, .acilis-pencere, .acilis-yazi, .acilis-izgara img { transition: none; }
}

/* ============================================================
   25. HERO SÖZLERİ — gazete kupürü dağılımı
   ------------------------------------------------------------
   Nilüferin çevresindeki boşluk boş kalmasın: takıya dair kısa
   sözler, farklı yüzlerde (el yazısı / serif / etiket) ve hafif
   eğik. Hepsi sönük — nilüfer hero olmayı sürdürür.
   ============================================================ */
.acilis-sozler {
  position: absolute;
  inset: 0;
  z-index: 1;                 /* nilüferin ARKASINDA */
  pointer-events: none;
  overflow: hidden;
}
.acilis-sozler .soz {
  position: absolute;
  /* Konumu acilis.js ölçüp yazıyor; buradaki değer yalnızca ölçüm anındaki
     başlangıç noktasıdır (bkz. sozleriYerlestir). */
  left: var(--x, 50%);
  top: var(--y, 50%);
  white-space: nowrap;
  color: rgba(255, 255, 255, .26);
  opacity: 0;
  transition: opacity 1200ms ease, transform 200ms linear;
  will-change: transform;
}
.sozler-acik .acilis-sozler .soz { opacity: 1; }
/* Açılım ilerledikçe sözler çekilir, fotoğraflar öne çıkar */
.hero-ic .acilis-sozler { opacity: calc(1 - var(--acilim) * 1.7); }

/* Sıralı beliriş: çizimle birlikte, dalga hâlinde (40 söz) */
.acilis-sozler .soz:nth-child(8n+1) { transition-delay: 235ms; }
.acilis-sozler .soz:nth-child(8n+2) { transition-delay: 380ms; }
.acilis-sozler .soz:nth-child(8n+3) { transition-delay: 525ms; }
.acilis-sozler .soz:nth-child(8n+4) { transition-delay: 670ms; }
.acilis-sozler .soz:nth-child(8n+5) { transition-delay: 815ms; }
.acilis-sozler .soz:nth-child(8n+6) { transition-delay: 960ms; }
.acilis-sozler .soz:nth-child(8n+7) { transition-delay: 1105ms; }
.acilis-sozler .soz:nth-child(8n+8) { transition-delay: 1250ms; }

/* --- yüzler: her biri AYRI aile --- */
.soz--elyazi {
  font-family: var(--yz-elyazi);
  font-size: calc(var(--h) * clamp(1.5rem, 3.4vw, 3.1rem));
  color: rgba(197, 164, 126, .5);      /* altın */
  letter-spacing: .01em;
}
.soz--serif {
  font-family: var(--yz-garamond);
  font-style: italic;
  font-weight: 300;
  font-size: calc(var(--h) * clamp(.92rem, 1.5vw, 1.35rem));
  color: rgba(255, 255, 255, .34);
}
.soz--kupur {
  font-family: var(--yz-manset);
  font-weight: 700;
  font-size: calc(var(--h) * clamp(.86rem, 1.3vw, 1.15rem));
  color: rgba(255, 255, 255, .26);
  border-top: 1px solid rgba(197, 164, 126, .3);
  border-bottom: 1px solid rgba(197, 164, 126, .3);
  padding: 5px 0;
}
.soz--versal {
  font-family: var(--yz-versal);
  font-size: calc(var(--h) * clamp(.78rem, 1.15vw, 1.05rem));
  letter-spacing: .18em;
  color: rgba(197, 164, 126, .38);
}
.soz--italiana {
  font-family: var(--yz-italiana);
  font-size: calc(var(--h) * clamp(1rem, 1.7vw, 1.6rem));
  letter-spacing: .06em;
  color: rgba(255, 255, 255, .3);
}
.soz--marcellus {
  font-family: var(--yz-marcellus);
  font-size: calc(var(--h) * clamp(.9rem, 1.35vw, 1.25rem));
  letter-spacing: .04em;
  color: rgba(197, 164, 126, .4);
}
.soz--gilda {
  font-family: var(--yz-gilda);
  font-size: calc(var(--h) * clamp(.95rem, 1.5vw, 1.4rem));
  color: rgba(255, 255, 255, .27);
}
.soz--didone {
  font-family: var(--yz-didone);
  font-size: calc(var(--h) * clamp(1rem, 1.6vw, 1.5rem));
  color: rgba(197, 164, 126, .34);
}
.soz--etiket {
  font-family: var(--yz-grotesk);
  font-size: calc(var(--h) * clamp(.62rem, .82vw, .74rem));
  letter-spacing: .34em;
  text-transform: uppercase;
  color: rgba(197, 164, 126, .46);
}

/* Dar ekranda kalabalık yapmasın: üçte biri kalır. Gizlenenler sıfır
   genişlikte ölçülür ve yerleşim hesabına hiç girmez. */
@media (max-width: 767px) {
  .acilis-sozler .soz { display: none; }
  .acilis-sozler .soz:nth-child(3n+1) { display: block; }
  .soz--elyazi { font-size: calc(var(--h) * 1.45rem); }
  .soz--serif  { font-size: calc(var(--h) * .84rem); }
  .soz--kupur  { font-size: calc(var(--h) * .78rem); }
  .soz--etiket { font-size: calc(var(--h) * .6rem); letter-spacing: .22em; }
}
@media (prefers-reduced-motion: reduce) {
  .acilis-sozler .soz { transition: opacity 400ms ease; }
}

/* Açılış duraklaması: hero sabit kalırken kaydırılacak yol.
   100vh iken nilüfer açılır açılmaz sonraki bölüm üstüne kayıyordu;
   dört kare göz ile yakalanmıyordu. Fazladan ~85vh duraklama verir. */
/* 185vh iken hero YALNIZCA 85vh boyunca tam görünür kalıyordu (sonraki
   bölüm 185vh-100vh'te üstünü örtmeye başlar). Nilüferin çözülmesi bundan
   sonra sürdüğü için logo, sönmesi bitmeden bölümün altında kalıyor ve
   "pat diye" kayboluyordu. 235vh ile tam görünürlük 135vh'e çıktı; çözülme
   (js/acilis.js, 1.25vh'te biter) artık örtülme başlamadan tamamlanıyor. */
#hero-alan { height: 235vh; }

/* --- MOBİL: hero ekranın TAMAMINI kaplasın ---
   Bölüm 18'deki "min(74svh, 100vw*9/16 + 252px)" ölçüsü VİDEO hero'dan
   kalmıştı: 16:9 videoyu tam göstermek içindi. Nilüfer açılışı tam sayfa
   bir sahne olduğu için o ölçü ekranın yalnızca %56'sını dolduruyor,
   altında boş beyaz bir şerit bırakıyordu. */
@media (max-width: 767px) {
  #hero-interactive {
    height: 100svh;
    align-items: center;
  }
  .hero-ic { margin-top: 0; }
  #hero-alan { height: 235svh; }
}

/* #hero-interactive'ten miras kalan line-height:0 marka yazısına da
   iniyordu: slogan kutusu 0 piksel yükseklikte kalıp kaydırma okunun
   üstüne biniyordu. */
.acilis-yazi { line-height: normal; }
.acilis-slogan { line-height: 1.5; }

/* Not: burada eskiden ".soz { max-width: 34vw }" vardı. white-space:nowrap
   ile birlikte kutuyu kısaltıyor ama yazıyı kısaltmıyordu; JS ölçtüğü
   kutuya göre yerleştirdiği için sözler ekran kenarından taşıyordu.
   Kelimeler artık kısa; sınır yerine ölçülen gerçek kutu kullanılıyor. */

/* ============================================================
   26. AÇILIŞ SÜRERKEN BAŞLIK ŞEFFAF
   ------------------------------------------------------------
   Nilüfer açılıp dört kare ekranı doldurunca üstteki beyaz şerit
   fotoğrafları kesiyordu. Hero sabitken başlık camsı kalır;
   hero geçilince (sayfa gerçekten kaydırılınca) normal beyaz
   zeminine döner.
   ============================================================ */
/* Hero SABİT konumlu ve sayfanın altına kadar arkada duruyor. Bölümler
   arasında (özellikle beliriş animasyonları sırasında) birkaç piksellik
   şeffaf aralık oluştuğunda mozaik fotoğrafları oradan sızıyordu —
   sayfada ince, fotoğraf kırıntılı "kopukluk" şeritleri görünüyordu.
   Sonraki bölüm hero'yu TAMAMEN örtünce (.hero-ortuldu, js/acilis.js)
   katman gizlenir; aralık kalsa bile arkasında yalnızca düz zemin var.
   DİKKAT: eşik .acilis-surerken DEĞİL — o, örtülmeden yarım ekran önce
   kalkıyor (başlık zamanlaması için) ve o eşikle gizlenince geçiş
   sırasında ekranda boş krem bir bant kalıyordu. */
body.has-hero.hero-ortuldu #hero-interactive { visibility: hidden; }

body.has-hero.acilis-surerken .site-header {
  background-color: transparent !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
/* Fotoğraf üzerinde okunurluk: menü beyaz + ince gölge.
   DİKKAT — hepsinde `!important` var ve olmak zorunda: sayfa birazcık
   kaydırılınca <body>'ye .sayfa-kaydirildi ekleniyor ve oradaki kurallar
   (satır ~2117-2127) logoyu, büyüteci ve ikonları `!important` ile koyuya
   çeviriyor. Hero hâlâ ekranı kaplarken bu, koyu fotoğrafların üzerinde
   görünmez bir "Suelle" yazısı ve görünmez bir büyüteç bırakıyordu. */
body.has-hero.acilis-surerken .site-header .navbar-nav .nav-item a.nav-link,
body.has-hero.acilis-surerken .site-header .navbar-nav .nav-item a.nav-link.active {
  color: #fff !important;
  text-shadow: 0 1px 10px rgba(0, 0, 0, .55);
}
body.has-hero.acilis-surerken .site-header .logo-suelle,
body.has-hero.acilis-surerken .site-header .navbar-brand img {
  filter: brightness(0) invert(1) drop-shadow(0 1px 10px rgba(0, 0, 0, .5)) !important;
}
body.has-hero.acilis-surerken .site-header .user-items svg,
body.has-hero.acilis-surerken .site-header .search-item svg,
body.has-hero.acilis-surerken .site-header .navbar-toggler svg {
  fill: #fff !important;
  color: #fff !important;
  filter: drop-shadow(0 1px 8px rgba(0, 0, 0, .5));
}
/* Üstte karartma: beyaz menü her karede okunsun.
   Mozaik artık ürün çekimlerinden oluşuyor ve zemini KREM; eski %55'lik
   karartma koyu editoryal karelere göre ayarlanmıştı, açık karelerin
   üstünde beyaz logo okunmuyordu. Daha koyu ve daha yumuşak biten bir
   geçişe çevrildi. */
body.has-hero.acilis-surerken .site-header::after {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 320%;
  background: linear-gradient(to bottom,
              rgba(18, 16, 13, .82) 0%,
              rgba(18, 16, 13, .55) 38%,
              rgba(18, 16, 13, 0) 100%);
  z-index: -1;
  pointer-events: none;
}

/* Kenara çok yaklaşan sözler taşmasın: hizayı kenara sabitle.
   (translate(-50%) ile ortalanan uzun bir söz %6 konumunda soldan taşıyordu.) */
/* DAĞILMA: her söz merkezden kendi yönünde savrulur (aşağı kayma yok).
   Yön ve güç HTML'de --dx/--dy olarak hesaplanmış durumda. */
.acilis-sozler .soz {
  --kaydir: -50%;
  --dx: 0px;
  --dy: 0px;
  /* Başlangıç konumu; dağılma js/acilis.js içinde transform ile yazılır
     (iç içe calc + miras alınan --acilim tarayıcıda çözülmüyordu). */
  transform: translate(var(--kaydir), -50%) rotate(var(--d));
  transition: opacity 1200ms ease;
}

/* "Yeni Gelenler" (eski adı "Yakından Bakın") gerçek ürün fotoğrafları
   kullanır: kareler 1:1. Üretilmiş makro kareler 3:2 idi; ürün çekimleri
   kare olduğu için 3:2 kutuda üstten alttan kırpılıyorlardı. */
.detay-kare img { aspect-ratio: 1 / 1 !important; }
.detay-kare picture { background: #f6f1ea; }
.detay-kare a { display: block; text-decoration: none; position: relative; }

/* --- bölüm süslemesi --- */
#detaylar { position: relative; overflow: hidden; }
/* Arka planda soluk bir nilüfer: bölüm markaya bağlansın, okumayı bozmasın */
#detaylar::before {
  content: "";
  position: absolute;
  top: -8%;
  right: -4%;
  width: min(420px, 38vw);
  aspect-ratio: 1 / 1;
  background: url("images/marka/suelle-lotus.svg") center/contain no-repeat;
  opacity: .05;
  pointer-events: none;
}
#detaylar .container-fluid, #detaylar .detay-ray { position: relative; z-index: 1; }

.yeni-baslik { display: flex; flex-direction: column; gap: var(--sp-2); }
.yeni-ust {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  font-family: var(--body-font);
  font-size: var(--fs-xs);
  font-weight: 500;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--renk-aksan);
}
.yeni-ust img { display: block; height: 14px; width: auto; opacity: .85; }
.yeni-ust::after {
  content: "";
  width: 46px;
  height: 1px;
  background: linear-gradient(90deg, var(--gold-300), transparent);
}

/* Kartın köşesindeki küçük "Yeni" işareti */
.yeni-rozet {
  position: absolute;
  top: var(--sp-3);
  left: var(--sp-3);
  z-index: 2;
  padding: 4px 10px;
  font-family: var(--body-font);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--n-900);
  background: rgba(255, 255, 255, .9);
  border: 1px solid var(--gold-300);
  backdrop-filter: blur(2px);
}
@media (max-width: 767px) {
  #detaylar::before { width: 220px; opacity: .04; }
  .yeni-ust { letter-spacing: .2em; }
  .yeni-ust::after { width: 24px; }
}

/*--- DİPTİK: kareler ürün sayfasına gider (28 Temmuz) --------------------
  Bölüm daha önce yalnız bakılan bir vitrindi; tıklayınca hiçbir yere
  gitmiyordu. Artık hem kare hem alt yazı ürüne bağlı. */
.diptik-link { display: block; }
.diptik-parca figcaption {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--sp-2) var(--sp-4);
}
/* .diptik-ad (ürün adı etiketi) 28 Tem'de kaldırıldı: kare üzerinde
   yalnız "Ürüne git" kalsın istendi. */
.diptik-git {
  font-family: var(--body-font);
  font-size: var(--fs-xs);
  letter-spacing: .14em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--renk-aksan);
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  transition: color var(--gecis, .2s);
}
.diptik-git::after { content: " \2192"; }
.diptik-git:hover { color: var(--gold-700); }
