/* Siluet proje sayfası: imza sahneleri, şantiye ve görsel dizileri (25 Ekim, jüri 3 #4, #7, #14, #18, #25). proje.css'ten sonra yüklenir.
   Tek kenar dili (.erit): her kare sayfa zeminine dört kenarda aynı piksel payıyla, yumuşak bir eğriyle erir; ortası keskin kalır. Kart, köşe, gölge, cam hap yok (defter R102, R108).
   Sabit sahnelerde (kat, ufuk) bütün kareler tek bir sahne kutusunun içinde üst üste durur ve kenarı kutu erir: gelen kare gideni tümüyle örter, dikiş kalmaz.
   Hiçbir kare görünür alandan uzun değildir (--fit; R106). Ölçüler ve yoğunluk tavanı proje.js galeriYerles() ve imzaHareket() içinde. */
body.sayfa-proje {
  --erit: 0px;
  --erit-x: none;
  --erit-y: none;
}
/* Sert Kenarlar: Yumuşak eritme/tüy (mask-image) tamamen kaldırıldı;
   Sahadan videosu, bölüm görselleri, şantiye, künye ve galeri net mimari çerçeveyle sunulur. */
.erit,
.erit--koyu,
.bolum--kenar .bolum__gorsel,
.bolum__bant-gorsel,
.bolum--dikey .bolum__gorsel,
.bolum__detay-kap,
.bolum__arka,
.sahadan__kap,
.p-kunye__kadraj {
  -webkit-mask-image: none !important;
  mask-image: none !important;
}
body.sayfa-proje .erit--koyu {
  --erit: 0px;
  --erit-x: none;
  --erit-y: none;
  -webkit-mask-image: none !important;
  mask-image: none !important;
}

/* ---------- imza sahneleri: ailenin tek kaydırma sahnesi; sahne ekrana girerken oynar, dinlenmede kareler düz, keskin ve sahneyi doldurur ---------- */
.imza { position: relative; background: var(--b-zemin, var(--p-sicak)); }
.imza__iz { position: relative; height: 180vh; height: 180svh; }
.imza__sahne { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; display: grid; place-items: center; }
.imza__gorsel { position: relative; overflow: hidden; }
.imza__kare { margin: 0; position: absolute; inset: 0; overflow: hidden; }
.imza__kap { position: absolute; inset: 0; overflow: hidden; }
.imza__kap img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.imza__not { position: absolute; left: var(--kenar); bottom: 16px; margin: 0; font-size: 13px; color: var(--gri-koyu); }
.imza__not[hidden] { display: none; }
/* kule "iki asansör": iki dikey kare yan yana; biri aşağıdan yukarı, öteki yukarıdan aşağı taranır (kat cetveli yok: kat sayısı verisi yok) */
.imza--kule .imza__gorsel { overflow: visible; display: flex; justify-content: center; align-items: center; gap: 24px; margin-top: var(--cubuk); height: calc(var(--fit) - 32px); }
.imza--kule .imza__kare { position: relative; inset: auto; flex: none; width: min(40vw, 620px); height: 100%; }
/* rezidans "doğrama": pencere kayıtları çekilir, kamera içeri girer */
.imza--rezidans .imza__gorsel { width: 100%; height: calc(var(--fit) - 32px); margin-top: var(--cubuk); }
.imza__dograma { position: absolute; inset: 0; z-index: 2; pointer-events: none; }
.imza__dograma .d { position: absolute; background: var(--b-zemin, var(--p-sicak)); }
.imza__dograma .d--x { top: 0; bottom: 0; width: 22px; margin-left: -11px; }
.imza__dograma .d--x:nth-child(1) { left: 25%; } .imza__dograma .d--x:nth-child(2) { left: 50%; } .imza__dograma .d--x:nth-child(3) { left: 75%; }
.imza__dograma .d--y { left: 0; right: 0; top: 52%; height: 22px; margin-top: -11px; }
/* villa "teras mozaiği": büyük kare yana açılır, iki kare teras teras iner; eğim ve döndürme yok, kareler arasında zemin payı (üst üste binme yok) */
.imza--villa .imza__gorsel { overflow: visible; display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; width: calc(100vw - 2 * var(--kenar)); height: min(calc(var(--fit) - 32px), 50vw); margin-top: var(--cubuk); }
.imza--villa .imza__kare { position: relative; inset: auto; }
.imza--villa .imza__kare--0 { grid-row: 1 / span 2; }
/* yerleşke "vaziyet": plan yatık başlar, kamera aşağı bakarak düzleşir; bütün kare tek parça döner (Kurallar 25) */
.imza--yerleske .imza__gorsel { overflow: visible; width: 100%; height: min(var(--fit), 76svh); margin-top: var(--cubuk); }
.imza--yerleske .imza__kare { will-change: transform; }
/* cadde: geniş kare kamera yürüyüşüyle taranır */
.imza--cadde .imza__gorsel { width: 100%; height: min(var(--fit), 72svh); margin-top: var(--cubuk); }
.imza--az .imza__iz { height: auto; }
.imza--az .imza__sahne { position: relative; height: auto; min-height: 90svh; padding: var(--bolum) 0; }
.imza--az .imza__dograma { display: none; }
.imza--az.imza--kule .imza__kare { width: min(40vw, calc(var(--fit) * .62)); }

/* ---------- şantiye: görselleştirmeden şantiyeye perde yığını; perdenin üst kenarında ince ışık (ofis Palmiye P7) ---------- */
.santiye { position: relative; background: var(--b-zemin, var(--p-sicak)); }
.santiye__iz { position: relative; height: calc(100svh + (var(--n, 4) - 1) * 44svh); }
.santiye__sahne { position: sticky; top: 0; height: 100vh; height: 100svh; display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); align-items: center; gap: clamp(24px, 4vw, 80px); padding: var(--cubuk) var(--kenar) 0; }
.santiye__sayac { margin: 34px 0 0; font-size: clamp(40px, 4vw, 64px); font-weight: 300; letter-spacing: -.04em; color: var(--metin); font-variant-numeric: tabular-nums; }
.santiye__sayac span:last-child { color: var(--gri-koyu); }
.santiye__not { margin: 6px 0 0; font-size: 15px; color: var(--kahve); }
.santiye__cerceve { position: relative; height: var(--fit); aspect-ratio: 3 / 4; max-width: 100%; justify-self: end; }
.santiye__kat { position: absolute; inset: 0; margin: 0; overflow: hidden; --ct: 0%; --cl: 0; -webkit-clip-path: inset(var(--ct) 0 0 0); clip-path: inset(var(--ct) 0 0 0); }
.santiye__kat img, .santiye__kat video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.santiye__kat::before { content: ""; position: absolute; z-index: 2; left: 0; right: 0; top: var(--ct); height: 1px; background: rgba(255,255,255,.95); opacity: var(--cl); pointer-events: none; }
.santiye__kat::after { content: ""; position: absolute; z-index: 2; left: 0; right: 0; top: var(--ct); height: 28px; background: linear-gradient(rgba(255,255,255,.42), rgba(255,255,255,0)); opacity: var(--cl); pointer-events: none; }
.santiye--az .santiye__iz { height: auto; }
.santiye--az .santiye__sahne { position: relative; height: auto; padding: var(--bolum) var(--kenar); align-items: start; }
.santiye--az .santiye__cerceve { height: auto; aspect-ratio: auto; display: grid; gap: 14px; width: min(100%, calc(var(--fit) * .75)); -webkit-mask-image: none; mask-image: none; }
.santiye--az .santiye__kat { position: relative; inset: auto; width: 100%; aspect-ratio: 3 / 4; max-height: var(--fit); -webkit-clip-path: none; clip-path: none; -webkit-mask-image: none !important; mask-image: none !important; }
.santiye--az .santiye__sayac, .santiye--az .santiye__not { display: none; }

/* ---------- görsel dizileri: ailenin kendi dizisi; kare değil, sayfa zemini üstünde kenarı eriyen bütün fotoğraf ---------- */
.p-galeri[hidden] { display: none; }
.p-galeri { background: var(--p-sicak); padding: var(--bolum) 0 0; transition: background-color .9s var(--e-yumusak); }
:where(.p-galeri) figure { margin: 0; position: relative; }
.p-galeri img { width: 100%; height: 100%; object-fit: cover; display: block; }
.p-galeri__bas { display: flex; justify-content: space-between; align-items: end; gap: 18px; padding: 0 var(--kenar); margin-bottom: clamp(20px, 3vw, 40px); flex-wrap: wrap; }
.p-galeri__baslik { margin: 0; font-weight: 300; font-size: clamp(40px, 5.4vw, 88px); line-height: 1; letter-spacing: -.04em; }
.p-galeri__tum { min-height: 44px; }
/* görsel türü yalnız tür değişince yazılır (proje.js turEtiketleri); sabit sahnelerde sayaçla aynı satırda */
.p-galeri [data-tur][hidden] { display: none; }
.kat__not, .ufuk__not, .teras2__not, .yayilim__not { margin: 0; font-size: 13px; color: var(--kahve); }
/* "Görseller" ilk karenin binasının arkasından çıkınca başlık satırı gizlenir; düğme sahnenin içinde kalır */
.p-galeri--arka[data-duzen="kat"] .p-galeri__bas, .p-galeri--arka[data-duzen="ufuk"] .p-galeri__bas { height: 0; margin: 0; overflow: hidden; }
.p-galeri--arka[data-duzen="yayilim"] .p-galeri__bas { justify-content: flex-end; }
.p-galeri__tum--sahne { position: absolute; z-index: 45; left: var(--kenar); bottom: 6vh; }
.ufuk__sahne .p-galeri__tum--sahne { left: auto; right: var(--kenar); bottom: 5vh; }

/* sabit sahne kutusu (kat, ufuk): kareler kutunun içinde üst üste; kutunun yeri ve boyu proje.js'ten (ara anlarda kutu dikey ya da kenardan kenara olur) */
.kat, .ufuk { position: relative; height: 480vh; }
.kat__sahne, .ufuk__sahne { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; }
.kat__kutu, .ufuk__kutu { position: absolute; left: 0; top: 0; width: 60vw; height: 60svh; overflow: hidden; }
/* her kare kendi yığın bağlamında: katmanlı karenin (gök, söz, ön) iç z-index'leri sonraki karelerin üstüne çıkmaz */
.kat__kare, .ufuk__kare { position: absolute; inset: 0; margin: 0; overflow: hidden; isolation: isolate; }
/* will-change yok: maskeli sahne kutusunun içinde kalıcı katmana alınan görsel Chromium'da ara sıra hiç boyanmıyordu (kontrol: 1280x720 ve telefonda boş sahne, sayaç ilerliyor) */
.kat__kare > img, .ufuk__kare > img { position: absolute; inset: 0; }
/* ufuk: gelen kare ufuk boyunca soldan sağa yumuşak bir ışık gibi geçer (sert kenar yok); --w proje.js'ten */
.ufuk__kare { --w: -18%; -webkit-mask-image: linear-gradient(90deg, #000 calc(var(--w) - 18%), transparent calc(var(--w) + 18%)); mask-image: linear-gradient(90deg, #000 calc(var(--w) - 18%), transparent calc(var(--w) + 18%)); }
.ufuk__kare:first-child, .p-galeri--az .ufuk__kare { --w: 118%; }
/* kule "kat kat": yanda kat cetveli (dizinin ilerlemesi; her çentik bir kare) ve sayaç */
.kat__cetvel { position: absolute; right: var(--kenar); top: calc(var(--cubuk) + 6vh); bottom: calc(8vh + 90px); width: 54px; }
.kat__cetvel::before { content: ""; position: absolute; right: 0; top: 0; bottom: 0; width: 1px; background: rgba(29,29,31,.28); }
.kat__cetvel i { position: absolute; right: 0; top: calc(var(--t) * 100%); width: 22px; height: 1px; background: rgba(29,29,31,.55); }
.kat__cetvel i:nth-child(3n+1) { width: 40px; }
.kat__isaret { position: absolute; right: -4px; top: calc(var(--p, 0) * 100%); width: 9px; height: 9px; margin-top: -4px; border-radius: 50%; background: var(--metin); }
.kat__sayac { position: absolute; right: var(--kenar); bottom: calc(8vh + 24px); margin: 0; text-align: right; font-size: clamp(30px, 3vw, 46px); font-weight: 300; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.kat__sayac span:last-child { color: var(--gri-koyu); }
.kat__not { position: absolute; right: var(--kenar); bottom: 8vh; }
/* yerleşke "ufuk": sayaç, tür ve ilerleme çizgisi altta tek satırda */
.ufuk__sayac { position: absolute; left: var(--kenar); bottom: calc(3vh + 16px); margin: 0; z-index: 41; font-size: clamp(30px, 3vw, 46px); font-weight: 300; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.ufuk__sayac span:last-child { color: var(--gri-koyu); }
.ufuk__not { position: absolute; left: calc(var(--kenar) + 150px); bottom: calc(3vh + 26px); z-index: 41; }
.ufuk__cizgi { --p: 0; position: absolute; left: var(--kenar); right: var(--kenar); bottom: 3vh; height: 1px; background: rgba(29,29,31,.16); z-index: 41; pointer-events: none; }
.ufuk__cizgi::after { content: ""; position: absolute; inset: 0; background: var(--metin); transform: scaleX(var(--p)); transform-origin: 0 50%; }

/* rezidans "yayılım": akışta çiftler (büyük kare ekranın kenarına dayanır, küçük kare kenar boşluğunda ve ayrı hızla) ve kenardan kenara tek kare; köşe ve kemer yok */
.yayilim { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(72px, 12svh, 140px); padding: 0 0 calc(var(--bolum) + 24px); overflow-x: clip; }
.yayilim__grup { position: relative; display: flex; align-items: center; justify-content: space-between; gap: clamp(24px, 3.4vw, 64px); }
.yayilim__grup--sag { flex-direction: row-reverse; }
.yayilim__grup--cift.yayilim__grup--sol { padding-right: var(--kenar); }
.yayilim__grup--cift.yayilim__grup--sag { padding-left: var(--kenar); }
.yayilim__grup--tam { justify-content: center; }
.yayilim__kare { flex: none; overflow: hidden; }
.yayilim__kap { position: absolute; inset: 0; overflow: hidden; isolation: isolate; }
.yayilim__kap > img { position: absolute; inset: 0; }
.yayilim__kare--kucuk { will-change: transform; }
/* altyazı: her yayılımın altında, sayfanın kenar çizgisinde (bütün yayılımlarda aynı hiza) */
.yayilim__not { position: absolute; left: var(--kenar); top: calc(100% + 14px); }

/* villa "teras": yatay iz; ortaya gelen kare öne çıkar, içindeki görsel izin tersine kayar; sayaç, tür ve ilerleme çizgisi sahnede sabit */
.teras2 { position: relative; }
.teras2__sahne { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; }
.teras2__iz { position: absolute; left: 0; top: calc(var(--cubuk) + (100svh - var(--cubuk) - var(--fit)) / 2); height: calc(var(--fit) - 64px); display: flex; align-items: flex-start; gap: clamp(40px, 5vw, 96px); padding: 0 12vw 0 var(--kenar); width: max-content; will-change: transform; }
.teras2__bas { flex: none; align-self: center; display: grid; gap: 10px; width: min(28vw, 420px); }
.teras2__sayi { font-size: clamp(96px, 12vw, 220px); font-weight: 300; line-height: .85; letter-spacing: -.06em; color: var(--metin); }
.teras2__soz { font-size: clamp(18px, 1.5vw, 24px); color: var(--gri-koyu); }
.teras2__kare { flex: none; overflow: hidden; }
.teras2__kare > img { position: absolute; inset: 0; }
.teras2__sayac { position: absolute; left: var(--kenar); bottom: 26px; margin: 0; z-index: 41; font-size: clamp(30px, 3vw, 46px); font-weight: 300; letter-spacing: -.04em; font-variant-numeric: tabular-nums; pointer-events: none; }
.teras2__sayac span:last-child { color: var(--gri-koyu); }
.teras2__not { position: absolute; left: calc(var(--kenar) + 150px); bottom: 36px; z-index: 41; }
.teras2__cizgi { --p: 0; position: absolute; left: var(--kenar); right: var(--kenar); bottom: 16px; height: 1px; background: rgba(29,29,31,.16); z-index: 41; pointer-events: none; }
.teras2__cizgi::after { content: ""; position: absolute; left: 0; top: 0; bottom: 0; right: 0; background: var(--metin); transform: scaleX(var(--p)); transform-origin: 0 50%; }
.p-galeri--dokun .teras2__sayac, .p-galeri--dokun .teras2__cizgi, .p-galeri--dokun .teras2__not, .p-galeri--az .teras2__sayac, .p-galeri--az .teras2__cizgi, .p-galeri--az .teras2__not { display: none; }
.p-galeri--dokun .teras2__sahne { position: relative; height: auto; overflow: visible; }
.p-galeri--dokun .teras2__iz { position: relative; top: auto; width: auto; height: auto; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 0 16px 24px; gap: 14px; }
.p-galeri--dokun .teras2__iz::-webkit-scrollbar { display: none; }
.p-galeri--dokun .teras2__kare { scroll-snap-align: center; }
.p-galeri--dokun .teras2__bas { display: none; }

/* ---------- telefon ---------- */
@media (max-width: 819px) {
  .imza__iz { height: 160vh; height: 160svh; }
  .imza--kule .imza__gorsel { gap: 10px; height: calc(100svh - var(--cubuk) - 110px); }
  .imza--kule .imza__kare { width: calc((100vw - 42px) / 2); }
  .imza--rezidans .imza__gorsel { height: min(70svh, var(--fit)); }
  .imza__dograma .d--x { width: 10px; margin-left: -5px; } .imza__dograma .d--y { height: 10px; margin-top: -5px; }
  /* villa: üç kare alt alta (teras teras), her biri tam genişlik */
  .imza--villa .imza__gorsel { grid-template-columns: minmax(0, 1fr); grid-template-rows: repeat(3, minmax(0, 1fr)); gap: 8px; width: calc(100vw - 32px); height: calc(100svh - var(--cubuk) - 120px); margin-top: calc(var(--cubuk) - 40px); }
  .imza--villa .imza__kare--0 { grid-row: auto; }
  .imza--yerleske .imza__gorsel, .imza--cadde .imza__gorsel { height: 62svh; }
  .imza__not { left: 16px; top: calc(var(--cubuk) + 10px); bottom: auto; }
  .santiye__iz { height: calc(100svh + (var(--n, 4) - 1) * 40svh); }
  .santiye__sahne { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); align-items: start; padding: 64px 20px 20px; gap: 14px; }
  .santiye__metin .bolum__yazi { display: none; }
  .santiye__metin .bolum__baslik { font-size: 28px; }
  .santiye__sayac { margin-top: 10px; font-size: 30px; }
  .santiye__cerceve { justify-self: center; height: min(60svh, calc(100svh - 300px)); }
  .p-galeri__bas { padding: 0 20px; }
  .kat__cetvel { display: none; }
  .kat__sayac { right: auto; left: 20px; bottom: calc(6vh + 22px); }
  .kat__not { right: auto; left: 20px; bottom: 6vh; }
  .ufuk__not { left: 130px; }
  /* telefonda alt köşeler sayaca ve sabit Ara / WhatsApp çubuğuna kalır; sahnedeki "Bütün görseller" üste, üst çubuğun altına çıkar */
  .p-galeri__tum--sahne, .ufuk__sahne .p-galeri__tum--sahne { top: calc(var(--cubuk) + 14px); bottom: auto; left: auto; right: 20px; }
  .yayilim { gap: 64px; }
  .yayilim__grup, .yayilim__grup--sag { flex-direction: column; align-items: stretch; gap: 22px; padding: 0 !important; }
  .yayilim__kare { align-self: center; }
  .yayilim__grup--sol .yayilim__kare--kucuk { align-self: flex-end; margin-right: 16px; }
  .yayilim__grup--sag .yayilim__kare--kucuk { align-self: flex-start; margin-left: 16px; }
  .yayilim__not { left: 16px; top: calc(100% + 10px); }
}

/* ---------- hareket azaltma: diziler durağan ve akışta; kareler alt alta, her biri kendi oranında ekrana sığar ve kenarı erir ---------- */
.p-galeri--az .kat, .p-galeri--az .ufuk { height: auto !important; }
.p-galeri--az .kat__sahne, .p-galeri--az .ufuk__sahne { position: relative; height: auto; overflow: visible; padding: 0 var(--kenar) var(--bolum); }
.p-galeri--az .kat__kutu, .p-galeri--az .ufuk__kutu { position: relative; left: auto !important; top: auto !important; width: auto !important; height: auto !important; overflow: visible; display: grid; gap: 28px; justify-items: center; -webkit-mask-image: none; mask-image: none; }
@media (min-width: 820px) { .p-galeri--az .kat__kutu, .p-galeri--az .ufuk__kutu { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; } }
.p-galeri--az .kat__kare, .p-galeri--az .ufuk__kare { position: relative; inset: auto; -webkit-mask-image: none !important; mask-image: none !important; }
.p-galeri--az .kat__cetvel, .p-galeri--az .kat__sayac, .p-galeri--az .kat__not, .p-galeri--az .ufuk__cizgi, .p-galeri--az .ufuk__sayac, .p-galeri--az .ufuk__not { display: none; }
.p-galeri--az .teras2__sahne { position: relative; height: auto; }
.p-galeri--az .teras2__iz { position: relative; top: auto; height: auto; width: auto; flex-wrap: wrap; align-items: center; row-gap: 28px; padding: 0 var(--kenar) var(--bolum); }
.p-galeri--az .teras2__kare { margin-top: 0 !important; }
.p-galeri--az .teras2__bas { display: none; }
