/* ==========================================================================
   Marla Premium — site.css
   Tek dosya. Üstte tokenlar, altta bileşenler.
   Renk veya ölçü değiştirmek isteyen sadece TOKENLAR bölümüne dokunur.
   ========================================================================== */

/* --------------------------------------------------------------------------
   FONTLAR — kendi sunucumuzdan
   Bodoni Moda + Instrument Sans, ikisi de SIL OFL.
   latin ve latin-ext ayrı dosyalar: Türkçe harfler (ı İ ğ Ğ ş Ş) latin-ext'te.
   Tarayıcı yalnızca ihtiyaç duyduğunu indirir.
   -------------------------------------------------------------------------- */
@font-face {
  font-family: 'Bodoni Moda';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/bodoni-moda-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                 U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF,
                 U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Bodoni Moda';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/bodoni-moda-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
                 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url('../fonts/instrument-sans-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                 U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF,
                 U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url('../fonts/instrument-sans-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
                 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}

/* --------------------------------------------------------------------------
   TOKENLAR — Traverten sistemi
   -------------------------------------------------------------------------- */
:root {
  /* Renk */
  --bg:          #F5F2EB;  /* traverten */
  --bg-alt:      #E7E2D7;  /* alternatif bölüm zemini */
  --bg-dark:     #1B2426;  /* bazalt — footer */
  --ink:         #1B2426;
  --ink-soft:    #4B5658;
  --on-dark:     #EFEDE7;
  --line:        #D5CFC2;
  /* Vurgu = markanın kendi rengi. Logodan örneklendi: #683B10.
     Traverten üstünde 8,45:1, alternatif zeminde 7,32:1, üstündeki beyaz
     yazı 9,06:1 — hepsi WCAG AA'nın çok üstünde.
     Not: önce termal turkuaz (#266A62, 5,66:1) kullanılıyordu. Logo gelince
     kahveye çevrildi; kahve hem markanın gerçek rengi hem daha okunaklı.
     Turkuaza dönmek isterseniz tek yapmanız gereken bu iki satırı değiştirmek. */
  --accent:      #683B10;
  --accent-dark: #4F2C0B;  /* hover */
  --on-accent:   #FBFAF7;

  /* Tipografi */
  --font-display: 'Bodoni Moda', Didot, 'Bodoni 72', 'Times New Roman', serif;
  --font-ui:      'Instrument Sans', 'Avenir Next', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-mono:    ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;

  /* Aralık — 8 piksel tabanlı */
  --s-1: 4px;   --s-2: 8px;   --s-3: 16px;  --s-4: 24px;
  --s-5: 32px;  --s-6: 48px;  --s-7: 64px;  --s-8: 96px;

  /* Ölçü */
  --max:      1240px;
  --gutter:   clamp(18px, 4vw, 58px);
  --sec-y:    clamp(44px, 6.5vw, 86px);

  /* Yüzey dokusu */
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
  --stone:
    radial-gradient(72% 46% at 64% 118%, rgba(38,106,98,.18), rgba(38,106,98,0) 74%),
    repeating-linear-gradient(180deg, rgba(0,0,0,0) 0 52px, rgba(27,36,38,.04) 52px 53px),
    linear-gradient(178deg, #FBFAF7 0%, #EFEBE3 50%, #E0DACE 100%);
}

/* --------------------------------------------------------------------------
   TEMEL
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-ui);
  font-size: 17px;
  line-height: 1.62;
  -webkit-font-smoothing: antialiased;
  /* Türkçe ve fi ligatürü.
     Her iki fontta da f+i → fi bitişimi VAR; uygulanırsa i'nin noktası kaybolur
     ve "fiyat" yanlış okunur. Asıl koruma <html lang="tr">: tarayıcının dizgi
     motoru Türkçe metinde bu bitişimi kendiliğinden bastırıyor. Ölçüldü —
     Bodoni Moda'da "fiyat" lang=en ile 160,6px, lang=tr ile 166,7px.
     Aşağıdaki satır yedek: lang özniteliği bir şekilde düşerse yine korur. */
  font-variant-ligatures: no-common-ligatures;
  font-optical-sizing: auto;
  /* Mobilde sabit alt çubuğun içeriği örtmemesi için */
  padding-bottom: env(safe-area-inset-bottom);
}

img, picture, video, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button { font: inherit; color: inherit; }

:where(a, button, [tabindex]):focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

.skip {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--accent); color: var(--on-accent);
  padding: 12px 18px; font-size: 14px; text-decoration: none;
}
.skip:focus { left: 0; }

/* --------------------------------------------------------------------------
   TİPOGRAFİ
   -------------------------------------------------------------------------- */
.kicker {
  font-family: var(--font-mono);
  font-size: 10px; letter-spacing: .22em; text-transform: uppercase;
  color: var(--accent);
}
.h-xl, .h-lg, .h-md {
  font-family: var(--font-display);
  font-weight: 400;
  letter-spacing: -0.012em;
  text-wrap: balance;
}
.h-xl { font-size: clamp(2.3rem, 7vw, 4.6rem); line-height: 1.02; max-width: 13ch; }
.h-lg { font-size: clamp(2.1rem, 5.4vw, 3.6rem); line-height: 1.02; max-width: 15ch; }
.h-md { font-size: clamp(1.5rem, 3vw, 2.15rem); line-height: 1.08; letter-spacing: -0.01em; }
.lede { font-size: clamp(.95rem, 1.5vw, 1.1rem); color: var(--ink-soft); max-width: 46ch; line-height: 1.6; }
.prose { font-size: .96rem; line-height: 1.72; color: var(--ink-soft); max-width: 62ch; }
.prose + .prose { margin-top: var(--s-3); }

/* --------------------------------------------------------------------------
   DÜZEN
   -------------------------------------------------------------------------- */
.wrap { max-width: var(--max); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: var(--sec-y); }
.section--alt { background: var(--bg-alt); }
.head-row { display: grid; gap: var(--s-2); margin-bottom: clamp(24px, 4vw, 40px); max-width: 62ch; }

/* --------------------------------------------------------------------------
   BUTONLAR
   -------------------------------------------------------------------------- */
.btn {
  display: inline-block;
  font-size: 11px; letter-spacing: .14em; text-transform: uppercase; font-weight: 600;
  padding: 13px 22px;
  background: var(--accent); color: var(--on-accent);
  text-decoration: none; border: 1px solid var(--accent);
  transition: background-color .15s ease;
}
.btn:hover { background: var(--accent-dark); border-color: var(--accent-dark); }

/* Alt çizgi border yerine text-decoration: böylece dikey dolgu ekleyip
   dokunma alanını büyütürken çizgi metnin altında kalıyor.
   Mobilde 16 pikselken şimdi 28 piksel — parmakla isabet ettirilebiliyor. */
.link {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--accent);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
  padding-block: 6px;
}
.link:hover { color: var(--accent-dark); }

/* Künye listesinden sonra gelen çağrılar */
.specs + p { margin-top: var(--s-5); }
.specs dd .link { display: inline-block; margin-top: var(--s-2); }

/* --------------------------------------------------------------------------
   BAŞLIK / NAVİGASYON
   -------------------------------------------------------------------------- */
.site-head {
  border-bottom: 1px solid var(--line);
  background: var(--bg);
  position: relative; z-index: 20;
}
.site-head__in {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  padding-block: var(--s-3);
}
/* Logo başlıkta tam kilidiyle ve orijinal renginde kullanılıyor — kırpılmıyor,
   yeniden renklendirilmiyor. Kilit neredeyse kare (1699×1730) olduğu için
   okunabilmesi yüksekliğe bağlı: 80 pikselde "marla" ~18 piksel, "Premium"
   şeridi ~19 piksel oluyor. Bu yüzden başlık normalden yüksek — üst segment
   bir mekân için doğru duruş zaten. */
.logo { display: inline-flex; text-decoration: none; }
.logo__mark { height: 80px; width: auto; flex: none; }
.nav { display: none; gap: clamp(14px, 2vw, 28px); }
.nav a {
  font-size: 10.5px; letter-spacing: .17em; text-transform: uppercase;
  color: var(--ink-soft); text-decoration: none; white-space: nowrap;
}
.nav a:hover { color: var(--ink); }
.nav a[aria-current="page"] {
  color: var(--ink); border-bottom: 1px solid var(--accent); padding-bottom: 3px;
}
.head-cta {
  font-size: 10px; letter-spacing: .13em; text-transform: uppercase; font-weight: 600;
  padding: 9px 15px; border: 1px solid var(--accent); color: var(--accent);
  text-decoration: none; white-space: nowrap;
}
.nav-toggle {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: none; border: 1px solid var(--line); cursor: pointer;
  min-height: 44px; padding-inline: 16px;
  font-size: 10px; letter-spacing: .13em; text-transform: uppercase;
  color: var(--ink-soft);
}
.nav-panel {
  display: grid; gap: var(--s-3);
  padding-block: var(--s-4);
  border-top: 1px solid var(--line);
}
.nav-panel[hidden] { display: none; }
.nav-panel a {
  font-size: 13px; letter-spacing: .16em; text-transform: uppercase;
  text-decoration: none; color: var(--ink);
}

@media (min-width: 760px) {
  .nav { display: flex; }
  .nav-toggle, .nav-panel { display: none !important; }
}

/* Mobilde başlıktaki WhatsApp butonu gizlenir: logo ve Menü düğmesiyle birlikte
   375 piksele sığmıyordu. Alt sabit çubuk zaten WhatsApp erişimi veriyor. */
@media (max-width: 759px) {
  .head-cta { display: none; }
  .logo__mark { height: 58px; }
}

/* --------------------------------------------------------------------------
   HERO / SAYFA BAŞLIĞI
   -------------------------------------------------------------------------- */
.hero, .pagehead { position: relative; background: var(--stone); isolation: isolate; }
.hero::after, .pagehead::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background-image: var(--grain); opacity: .16; mix-blend-mode: overlay; pointer-events: none;
}
/* Hero iki sütun: metin solda, dikey fotoğraf sağda.
   Elimizdeki mekân fotoğraflarının tamamı dikey (3376×6000, 4000×6000).
   Geniş bir hero için yatay kare yok; dikey oranı kusur değil düzen ilkesi
   yaptık. Mobilde fotoğraf metnin altına iniyor ve 4:3'e yaslanıyor. */
.hero__in {
  display: grid; gap: clamp(26px, 4vw, 52px);
  padding-block: clamp(34px, 5vw, 64px) 0;
}
.hero__row { display: grid; gap: clamp(24px, 4vw, 48px); align-items: center; }
@media (min-width: 900px) {
  .hero__row { grid-template-columns: minmax(0, 1fr) minmax(0, 400px); }
}
.hero__body { display: grid; gap: var(--s-3); max-width: 46ch; }
.hero__media { aspect-ratio: 3 / 4; }
/* Mobilde 4:3 yatay orandı; kaynak fotoğraf 960x1280, yani 3:4 dikey.
   object-fit: cover yüksekliğin yaklaşık %44'ünü kesiyordu, geriye pergola
   kirişi ve şişe duvarından ibaret yatay bir şerit kalıyordu. 4:5 sitenin
   diğer dikey görselleriyle aynı oran ve kaynaktan yalnızca %6 kırpıyor. */
@media (max-width: 899px) { .hero__media { aspect-ratio: 4 / 5; } }
.hero__cta { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: center; margin-top: var(--s-1); }

.strip {
  display: flex; flex-wrap: wrap; gap: 6px 26px;
  border-top: 1px solid var(--line);
  padding-block: var(--s-3);
  list-style: none; padding-inline: 0;
}
.strip li {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: .13em;
  text-transform: uppercase; color: var(--ink-soft);
}
.strip li:first-child { color: var(--accent); }

/* Telefonda şerit dört maddeyi tek satıra sığdıramıyor. Ölçüldü: 360, 375,
   390 ve 414 pikselde üç madde üstte kalıp dördüncü tek başına alta düşüyor
   (3+1), bu da tasarım değil kaza gibi duruyor. Tek satıra zorlamak için
   harf aralığını ve boşluğu kısmak gerekiyordu; o da 375 pikselin altında
   yine kırılıyordu. Bunun yerine iki sütuna sabitliyoruz: her genişlikte
   2+2, sütunlar hizalı. 480 pikselden itibaren zaten tek satır sığıyor. */
@media (max-width: 479px) {
  .strip {
    display: grid;
    grid-template-columns: auto auto;
    justify-content: start;
    column-gap: 32px;
    row-gap: 8px;
  }
}

.pagehead__in { display: grid; gap: var(--s-2); padding-block: clamp(44px, 7vw, 88px); }
.pagehead .lede { max-width: 52ch; }

/* --------------------------------------------------------------------------
   GÖRSEL YER TUTUCU
   Gerçek fotoğraflar geldiğinde <img> yerine <picture> gelecek.
   Ayrıntı: README > "Fotoğrafları yerleştirmek"
   -------------------------------------------------------------------------- */
.media { display: block; position: relative; overflow: hidden; background: var(--bg-alt); }
/* Görsel kutuyu mutlak konumla dolduruyor. Önce `height: 100%` vardı ama
   yüzde yükseklik, yüksekliği `aspect-ratio`dan gelen bir kapsayıcıya karşı
   çözülmüyor: görsel kendi oranıyla çiziliyordu. Kutu oranı görselden darsa
   altta kutunun zemini bant hâlinde görünüyordu — mobilde mekân bannerında
   70 piksel, anasayfa meze bandında 89 piksel. Masaüstünde fark edilmiyordu,
   çünkü orada kutu oranı ile görsel oranı zaten aynı. */
.media img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
}
/* Galeri istisnası: oradaki büyük kareler (is-feature) `aspect-ratio: auto`
   kullanıyor ve yüksekliğini içindeki görselden alıyor. Görsel mutlak konuma
   geçince akıştan çıkıp satırları çökertiyordu (424 piksel yerine 10).
   Galeride bu düzeltmeye ihtiyaç da yok: kutu da görsel de 4:5, boşluk çıkmıyor. */
.gallery .media img { position: static; }
.media::after {
  content: ""; position: absolute; inset: 0;
  background-image: var(--grain); opacity: .18; mix-blend-mode: overlay; pointer-events: none;
}
.media--wide { aspect-ratio: 16 / 9; }
@media (max-width: 700px) { .media--wide { aspect-ratio: 4 / 3; } }
/* Tam genişlik bant — bölümler arasında nefes aldıran ayırıcı.
   16:9 iken ikinci bir hero gibi duruyor ve sayfanın üçte birini yiyordu;
   21:9 onu bir "bant" hâline getiriyor. */
.band { aspect-ratio: 21 / 9; }
@media (max-width: 700px) { .band { aspect-ratio: 3 / 2; } }
.media--portrait { aspect-ratio: 4 / 5; }

/* --------------------------------------------------------------------------
   KARTLAR (üçlü ızgara)
   -------------------------------------------------------------------------- */
.trio { display: grid; gap: clamp(14px, 2.4vw, 26px); list-style: none; padding: 0; }
@media (min-width: 760px) { .trio { grid-template-columns: repeat(3, 1fr); } }
/* Dört kart telefonda da ikişerli: tek sütunda anasayfa 5856 piksele
   çıkıyordu, ikili dizilimde kaydırma yarıya iniyor. */
.trio--four { grid-template-columns: repeat(2, 1fr); }
@media (min-width: 1000px) { .trio--four { grid-template-columns: repeat(4, 1fr); } }
.trio > li { display: grid; gap: var(--s-2); align-content: start; }
.trio h3 { font-family: var(--font-display); font-size: 1.28rem; font-weight: 400; letter-spacing: -0.008em; }
.trio p { font-size: .9rem; color: var(--ink-soft); line-height: 1.62; }
.trio .media { margin-bottom: var(--s-1); }

/* --------------------------------------------------------------------------
   HİKÂYE
   -------------------------------------------------------------------------- */
.story { display: grid; gap: clamp(22px, 4vw, 44px); }
@media (min-width: 840px) { .story { grid-template-columns: 1fr 1fr; } }
/* İki sütunlu blokların metin sütunu. Kendi dikey ritmini kurar; içindeki
   başlık, paragraf ve butonlara ayrı ayrı margin verilmesine gerek yok. */
.split-text {
  display: grid; gap: var(--s-3);
  align-content: center; justify-items: start;
}
/* Tek sütunlu okuma bloğu */
.wrap-narrow { max-width: 62ch; }

/* --------------------------------------------------------------------------
   KÜNYE LİSTESİ
   -------------------------------------------------------------------------- */
/* Künye listesi iki yerde kullanılıyor: mekân sayfasında tam genişlikte,
   iletişim sayfasında dar bir sütunun içinde. Ekran genişliğine bakan bir
   medya sorgusu ikincisini bozuyordu — geniş ekranda bile sütun dar olduğu
   için değerler kelime kelime sarıyordu. Konteyner sorgusu, listenin kendi
   genişliğine bakıyor; nerede kullanılırsa kullanılsın doğru davranıyor.
   Desteklemeyen tarayıcıda tek sütun kalır, yani okunur. */
.specs { border-top: 1px solid var(--line); container-type: inline-size; }
.specs > div {
  display: grid; gap: 3px 24px;
  padding-block: var(--s-3);
  border-bottom: 1px solid var(--line);
}
@container (min-width: 520px) {
  .specs > div { grid-template-columns: 186px minmax(0, 1fr); align-items: baseline; }
}
.specs dt { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); }
.specs dd { font-size: .96rem; margin: 0; }
.specs dd > a { display: inline-block; padding-block: 5px; }

/* --------------------------------------------------------------------------
   GALERİ
   -------------------------------------------------------------------------- */
.chips { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-bottom: clamp(20px, 3vw, 32px); }
.chips button {
  font-size: 10px; letter-spacing: .14em; text-transform: uppercase; font-weight: 600;
  min-height: 44px; padding-inline: 18px; border: 1px solid var(--line);
  background: transparent; color: var(--ink-soft); cursor: pointer;
}
.chips button[aria-pressed="true"] { border-color: var(--accent); color: var(--accent); background: var(--bg); }

/* Kareler kaynakla aynı orana sahip: fotoğraflar 4:5 kırpılıyor, kutular da 4:5.
   Önceden kutular yataydı (1,73:1 ve 3,53:1) ve object-fit ikinci bir kırpma
   yapıyordu — normal karelerde fotoğrafın yalnızca %46'sı, geniş karelerde
   %23'ü görünüyordu, detay seçilmiyordu. Artık küçük kare ile büyütme
   penceresi birebir aynı şeyi gösteriyor.
   Öne çıkan kareler 2 sütun × 2 satır kaplıyor; o alan da 4:5 olduğu için
   ritim kazanılırken hiçbir ek kırpma olmuyor. */
.gallery { display: grid; gap: 10px; grid-template-columns: repeat(2, 1fr); list-style: none; padding: 0; }
@media (min-width: 700px)  { .gallery { grid-template-columns: repeat(3, 1fr); } }
/* dense: 2×2 kareler yerleşirken kalan delikleri sonraki kareler dolduruyor.
   Bütün kutular aynı oranda olduğu için yer değiştirmenin kırpmaya etkisi yok. */
@media (min-width: 700px)  { .gallery { grid-auto-flow: dense; } }
@media (min-width: 1000px) { .gallery { grid-template-columns: repeat(4, 1fr); } }
.gallery > li { aspect-ratio: 4 / 5; }
.gallery > li.is-feature { aspect-ratio: auto; grid-column: span 2; grid-row: span 2; }
.gallery .media { height: 100%; aspect-ratio: auto; }
.gallery > li[hidden] { display: none; }
.gallery-empty { font-size: .93rem; color: var(--ink-soft); padding-block: var(--s-4); }
.gallery-empty[hidden] { display: none; }

/* Kare bir düğme: klavyeyle gezilebilsin ve tıklanabilir olduğu belli olsun */
.gallery__btn {
  display: block; width: 100%; height: 100%;
  padding: 0; border: 0; background: none; cursor: zoom-in;
}
.gallery__btn .media { transition: opacity .18s ease; }
.gallery__btn:hover .media { opacity: .88; }

/* --------------------------------------------------------------------------
   BÜYÜTME PENCERESİ
   Yerel <dialog> kullanılıyor: Escape ile kapanma, odak tuzağı ve arka planın
   devre dışı kalması tarayıcıdan geliyor, bunun için JavaScript yazılmadı.
   -------------------------------------------------------------------------- */
.lightbox {
  width: 100%; max-width: 100vw; height: 100%; max-height: 100vh;
  padding: 0; border: 0; background: transparent; color: var(--on-dark);
  overflow: hidden;
}
.lightbox::backdrop { background: rgba(27, 36, 38, .95); }
/* Satırları doğrudan <dialog>'a veriyoruz. Sarmalayıcıya height:100% verilince
   döngü oluşuyordu: ızgara satırı içeriğe göre büyüyor, yüzde de o satıra göre
   hesaplanıyor, sonuçta görsel pencereden taşıyordu. display:contents ile
   sarmalayıcı düzenden çıkıyor, üç satır penceresinin kesin yüksekliğine oturuyor. */
.lightbox[open] {
  display: grid; grid-template-rows: auto minmax(0, 1fr);
  gap: var(--s-3); padding: clamp(12px, 2.5vw, 26px);
}
.lightbox__in { display: contents; }
.lightbox__fig { display: grid; min-height: 0; margin: 0; }
/* picture düzenden çıkıyor, img doğrudan ızgaranın öğesi oluyor.
   Görseli max-height:100% ile küçültmeyi denedik ama yüzde, yüksekliği
   kesinleşmemiş bir ızgara alanına göre çözülmediği için görsel taşıyordu.
   Bunun yerine kutuyu alana esnetip object-fit ile içine oturtuyoruz. */
.lightbox__fig picture { display: contents; }
.lightbox__fig img {
  width: 100%; height: 100%; min-height: 0; object-fit: contain;
}
.lightbox__bar {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--s-3); flex-wrap: nowrap;
}
.lightbox__count {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; opacity: .7; font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.lightbox button {
  min-height: 44px; min-width: 44px; padding-inline: 16px;
  background: none; border: 1px solid rgba(239, 237, 231, .32); color: inherit;
  font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em;
  text-transform: uppercase; cursor: pointer;
}
.lightbox button:hover { border-color: var(--on-dark); }
.lightbox__nav { display: flex; gap: var(--s-2); flex: none; }
/* Dar ekranda kelimeler iki satıra sarıp dikey alanı yiyordu; ok ve çarpı
   kalıyor, ekran okuyucular aria-label'dan tam metni almaya devam ediyor. */
@media (max-width: 560px) {
  .lightbox__lbl { display: none; }
  .lightbox button { padding-inline: 0; min-width: 52px; font-size: 15px; }
}
.lightbox :where(button):focus-visible { outline: 2px solid var(--on-dark); outline-offset: 3px; }

/* --------------------------------------------------------------------------
   ÖZEL DAVETLER
   Vesileler listesi Bodoni ile diziliyor; sayfadaki diğer bölümlerin hiçbiri
   böyle görünmüyor, bu yüzden kaydırırken kendi kimliğiyle ayrışıyor.
   -------------------------------------------------------------------------- */
/* Vesileler listesi. Çizgiyi metnin soluna koymak metni 23 piksel içeri
   itiyordu; bölümdeki başlık, paragraf ve buton sola hizalıyken liste
   kaymış duruyordu. Çizgi artık hizayı bozmuyor: satır ayırıcıları zaten
   listeye yeterli yapıyı veriyor. */
.invite__list {
  list-style: none; padding: 0;
  border-top: 1px solid var(--line);
  width: 100%;
}
.invite__list li {
  font-family: var(--font-display); font-size: 1.08rem; letter-spacing: -0.006em;
  padding-block: 11px; border-bottom: 1px solid var(--line);
}

/* --------------------------------------------------------------------------
   İLETİŞİM
   -------------------------------------------------------------------------- */
.contact { display: grid; gap: clamp(22px, 4vw, 44px); }
@media (min-width: 840px) { .contact { grid-template-columns: .95fr 1.05fr; } }
.contact__col { display: grid; gap: var(--s-4); align-content: start; }
.bigcta { display: grid; gap: var(--s-3); justify-items: start; }
.bigcta__lead {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(1.5rem, 3vw, 2.1rem); line-height: 1.1; letter-spacing: -0.01em; max-width: 16ch;
}
/* Harita, geniş ekranda sol sütunun boyunca uzuyor. Sabit 4:3 oranı
   bırakılınca altında 254 piksel boşluk kalıyordu ve iki sütun hizasız
   duruyordu. Darda oran geri geliyor, yoksa harita gereksiz uzuyor. */
.map { aspect-ratio: 4 / 3; border: 1px solid var(--line); background: var(--bg-alt); overflow: hidden; }
.map iframe { width: 100%; height: 100%; border: 0; display: block; }
@media (min-width: 840px) {
  .map { aspect-ratio: auto; height: 100%; min-height: 420px; }
}

/* --------------------------------------------------------------------------
   ALT BİLGİ
   -------------------------------------------------------------------------- */
/* Alt bilgi açık zeminde duruyor ki logo orijinal kahve rengiyle kullanılabilsin
   (traverten üstünde 8,45:1). Önce bazalt koyu bir zemindi; kahve logo orada
   1,67:1 veriyordu, yani görünmüyordu, ve logoyu kreme boyamak gerekiyordu.
   Açık zemin hem markayı olduğu gibi bırakıyor hem sayfa boyunca tek malzeme
   hissini koruyor.
   Koyu alt bilgiye dönmek isterseniz üç şey: background var(--bg-dark),
   color var(--on-dark), ve HTML'de logo-acik.png. */
.site-foot { background: var(--bg-alt); color: var(--ink); border-top: 1px solid var(--line); }
.site-foot__in {
  padding-block: clamp(38px, 5vw, 64px);
  display: flex; flex-wrap: wrap; gap: 26px 48px; align-items: center; justify-content: space-between;
}
.site-foot__logo { height: 104px; width: auto; }
.site-foot__meta {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em;
  text-transform: uppercase; color: var(--ink-soft); display: grid; gap: 6px;
}
.site-foot__meta a { display: inline-block; padding-block: 6px; text-decoration: none;
                     border-bottom: 1px solid var(--line); }
.site-foot__meta a:hover { border-color: var(--accent); color: var(--accent); }
.site-foot a { color: inherit; }

/* --------------------------------------------------------------------------
   MOBİL SABİT ÇUBUK
   Sitenin tek dönüşüm hedefi. Masaüstünde başlıktaki buton yeterli.
   -------------------------------------------------------------------------- */
.wa-bar {
  position: fixed; inset-inline: 0; bottom: 0; z-index: 50;
  display: grid; grid-template-columns: 1fr auto;
  background: var(--accent); color: var(--on-accent);
  padding-bottom: env(safe-area-inset-bottom);
}
.wa-bar a {
  padding: 15px 18px; text-decoration: none; color: inherit;
  font-size: 11px; letter-spacing: .13em; text-transform: uppercase; font-weight: 600;
  text-align: center;
}
.wa-bar a + a { border-left: 1px solid rgba(255,255,255,.28); }
@media (min-width: 760px) { .wa-bar { display: none; } }
@media (max-width: 759px) { body { padding-bottom: 56px; } }
