/* Perga Mühendislik — çalışma sürümü
   Palet katalogdan (#2D373D) ve logodan (#A88961) örneklendi. */

:root {
  --ground: #12171A;
  --surface: #1A2226;
  --slate:   #2D373D;
  --line:    #2E3A40;
  --gold:    #A88961;
  --gold-lt: #C9AE84;
  --cream:   #F2EDE8;
  --muted:   #8A9499;
  --weak:    #6E7A80;

  /* Hata rengi: saf kırmızı bu bronz/arduvaz palette yabancı duruyor.
     Soluk terakota altının komşusu ve --ground üzerinde 5.03:1 (AA geçer). */
  --warn:    #C2705C;
  --warn-lt: #D89179;

  --display: "Cinzel", Georgia, "Times New Roman", serif;
  --body:    "IBM Plex Sans", system-ui, -apple-system, Segoe UI, sans-serif;
  --mono:    "IBM Plex Mono", ui-monospace, Consolas, monospace;

  --bar-h: 74px;

  /* <select> açılır listesi, kaydırma çubukları ve yerleşik denetimler
     koyu render edilsin. */
  color-scheme: dark;
}

* { box-sizing: border-box; }

/* Yalnızca ekran okuyucuya görünen metin. */
.vh {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

html {
  scroll-behavior: smooth;
  /* Güvenlik ağı. `clip` bilerek: `hidden` bir kaydırma kabı yaratıp
     .hero__panel'in position:sticky'sini bozardı. */
  overflow-x: clip;
}

body {
  margin: 0;
  background: var(--ground);
  color: var(--cream);
  font-family: var(--body);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }

:focus-visible {
  outline: 2px solid var(--gold-lt);
  outline-offset: 3px;
}

.skip {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  background: var(--gold);
  color: #171313;
  padding: 10px 18px;
  font-weight: 500;
}
.skip:focus { left: 12px; top: 12px; }

/* ---------- üst menü ---------- */

.topbar {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  height: var(--bar-h);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 0 clamp(16px, 4vw, 44px);
  border-bottom: 1px solid rgba(168, 137, 97, 0);
  background: linear-gradient(to bottom, rgba(18, 23, 26, .78), rgba(18, 23, 26, 0));
  transition: background .35s ease, border-color .35s ease;
}
.topbar.is-stuck {
  background: rgba(18, 23, 26, .94);
  border-bottom-color: rgba(168, 137, 97, .22);
  backdrop-filter: blur(8px);
}

.brand { display: flex; align-items: center; gap: 11px; }
.brand__mark { height: 48px; width: auto; display: block; }
.brand__txt { display: flex; flex-direction: column; line-height: 1; gap: 4px; }
.brand__txt b {
  font-family: var(--display);
  font-weight: 600;
  font-size: 19px;
  letter-spacing: .20em;
  text-indent: .20em;
  color: var(--cream);
}
.brand__txt i {
  font-style: normal;
  font-size: 9px;
  letter-spacing: .34em;
  text-indent: .34em;
  color: var(--gold-lt);
  font-weight: 500;
}

.nav { display: flex; gap: clamp(14px, 3vw, 34px); }
.nav a {
  font-size: 12.5px;
  letter-spacing: .17em;
  font-weight: 500;
  color: rgba(242, 237, 232, .84);
  padding: 6px 2px;
  border-bottom: 1px solid transparent;
  transition: color .2s, border-color .2s;
}
.nav a:hover { color: var(--cream); border-bottom-color: var(--gold); }

/* Mobil menü düğmesi. Yalnızca ≤900px'de görünür, 44×44 dokunma hedefi.
   Üç hairline .acc__x ile aynı kurgu: tek eleman + iki pseudo. */
.nav__btn {
  display: none;
  position: relative;
  z-index: 70;
  flex: none;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--cream);
  cursor: pointer;
}
.nav__bars {
  position: absolute;
  left: 11px;
  top: 21px;
  width: 22px;
  height: 1px;
  background: var(--cream);
  transition: background .2s ease;
}
.nav__bars::before,
.nav__bars::after {
  content: "";
  position: absolute;
  left: 0;
  width: 22px;
  height: 1px;
  background: var(--cream);
  transition: transform .3s cubic-bezier(.3, .7, .3, 1), background .2s ease;
}
.nav__bars::before { top: -7px; }
.nav__bars::after  { top: 7px; }

.nav__btn:hover .nav__bars,
.nav__btn:hover .nav__bars::before,
.nav__btn:hover .nav__bars::after { background: var(--gold-lt); }

/* Açıkken çarpıya döner: orta çizgi kaybolur, diğer ikisi ortada kesişir. */
.topbar.is-open .nav__bars { background: transparent; }
.topbar.is-open .nav__bars::before { transform: translateY(7px) rotate(45deg); }
.topbar.is-open .nav__bars::after  { transform: translateY(-7px) rotate(-45deg); }

/* Panelin dibindeki arama düğmesi — yalnızca mobil panelde. */
.nav__cta { display: none; }

/* açılır liste */
.nav__drop { position: relative; }
.drop {
  position: absolute;
  top: calc(100% + 14px);
  left: 50%;
  transform: translate(-50%, -6px);
  min-width: 264px;
  margin: 0;
  padding: 6px 0;
  list-style: none;
  background: rgba(20, 26, 30, .97);
  border: 1px solid var(--line);
  border-top: 1px solid var(--gold);
  border-radius: 2px;
  box-shadow: 0 18px 44px rgba(6, 9, 11, .55);
  backdrop-filter: blur(8px);
  opacity: 0;
  visibility: hidden;
  transition: opacity .22s ease, transform .22s ease, visibility .22s;
  z-index: 60;
}
.nav__drop.is-open .drop {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}
.drop::before {
  content: "";
  position: absolute;
  inset: -14px 0 100% 0;   /* fare menüyle liste arasında kaybolmasın */
}
.drop a {
  display: block;
  padding: 10px 20px;
  font-size: 13px;
  letter-spacing: .04em;
  color: rgba(242, 237, 232, .84);
  border-bottom: 0;
  border-left: 2px solid transparent;
  transition: background .18s, color .18s, border-color .18s;
}
.drop a:hover {
  background: rgba(168, 137, 97, .1);
  color: var(--gold-lt);
  border-left-color: var(--gold);
  border-bottom: 0;
}

/* ---------- hero ---------- */

/* İki ekran boyu: içteki panel bir ekran boyu yapışık kalır,
   kare dizisi o mesafede taranır. */
/* svh (küçük viewport) bilerek: mobil tarayıcının adres çubuğu açılıp
   kapandıkça vh değişir, yapışık panel ve scrub matematiği zıplar. */
.hero { height: 200vh; height: 200svh; position: relative; }

.hero__panel {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  background: var(--ground);
}

.hero__canvas,
.hero__poster {
  position: absolute;
  /* Kararan üst çubuk çizimin tepesini örtmesin: görsel, çubuk yüksekliği
     kadar aşağı iner. Boyu aynı kalıyor (top +h, bottom −h), taşan alt
     kenarı panelin overflow'u kırpıyor — böylece kadraj ölçeği değişmiyor
     ve canvas yeniden boyutlanmadığı için kare çizimi de etkilenmiyor.
     var(--bar-h) kullanıldığı için mobilde kayma kendiliğinden 64px olur. */
  inset: var(--bar-h) 0 calc(var(--bar-h) * -1) 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.hero__canvas { opacity: 0; transition: opacity .4s ease; }
.hero__canvas.is-ready { opacity: 1; }
.hero__poster.is-hidden { opacity: 0; }

.hero__scrim {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse 62% 68% at 50% 50%,
      rgba(18, 23, 26, .74) 0%, rgba(18, 23, 26, .40) 58%, rgba(18, 23, 26, .06) 100%),
    linear-gradient(to bottom,
      rgba(18, 23, 26, .70) 0%, rgba(18, 23, 26, 0) 26%,
      rgba(18, 23, 26, 0) 58%, rgba(18, 23, 26, .88) 100%);
}

.hero__body {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  padding: 0 clamp(16px, 4vw, 44px);
  max-width: 900px;
}

.hero__eyebrow {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .24em;
  color: var(--gold);
  margin: 0 0 20px;
}

.hero__h1 {
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(32px, 5.2vw, 58px);
  line-height: 1.1;
  margin: 0 0 20px;
  text-wrap: balance;
  text-shadow: 0 2px 30px rgba(10, 14, 16, .8);
}

.hero__sub {
  font-size: clamp(15px, 1.7vw, 18px);
  color: rgba(242, 237, 232, .78);
  margin: 0 0 32px;
  max-width: 42ch;
}

.hero__cta { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }

/* Sınıf başta <a> için yazılmıştı; <button> tarayıcı varsayılan fontunu
   miras aldığı için font/satır yüksekliği açıkça verilmeli, yoksa form
   butonu diğerlerinden farklı görünür. */
.btn {
  display: inline-block;
  font-family: inherit;
  font-size: 13.5px;
  line-height: 1.65;
  letter-spacing: .1em;
  font-weight: 500;
  padding: 14px 28px;
  border-radius: 2px;
  border: 1px solid rgba(242, 237, 232, .34);
  background: none;
  color: var(--cream);
  cursor: pointer;
  transition: background .2s, border-color .2s, color .2s, opacity .2s;
}
.btn:hover { border-color: var(--cream); background: rgba(242, 237, 232, .08); }
.btn--gold { background: var(--gold); border-color: var(--gold); color: #171313; }
.btn--gold:hover { background: var(--gold-lt); border-color: var(--gold-lt); color: #171313; }

.btn[disabled],
.btn[disabled]:hover {
  opacity: .55;
  cursor: default;
  background: var(--gold);
  border-color: var(--gold);
}

/* "Gönderiliyor…" durumundaki halka. */
.btn.is-busy::after {
  content: "";
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-left: 9px;
  vertical-align: -1px;
  border: 1px solid currentColor;
  border-top-color: transparent;
  border-radius: 50%;
  animation: btnSpin .7s linear infinite;
}
@keyframes btnSpin { to { transform: rotate(360deg); } }

.hero__hint {
  position: absolute;
  left: 50%;
  bottom: 30px;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  transition: opacity .4s ease;
}
.hero__hint.is-done { opacity: 0; }
.hero__hintTxt {
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--weak);
}
.hero__hintLine {
  width: 1px;
  height: 46px;
  background: rgba(168, 137, 97, .25);
  display: block;
  position: relative;
}
.hero__hintLine i {
  position: absolute;
  inset: 0 0 auto 0;
  height: 0%;
  background: var(--gold);
  display: block;
}

/* ---------- içerik bantları ---------- */

.band {
  padding: clamp(64px, 10vw, 128px) clamp(16px, 4vw, 44px);
  max-width: 1100px;
  margin: 0 auto;
}
/* Tam genişlik zemin, ortalanmış 1100px içerik sütunu.
   Ortalamayı çocuklara margin:auto ile vermiyoruz — her öğe kendi
   margin'ini tanımladığı için o yaklaşım sessizce eziliyor. */
.band--alt {
  background: var(--surface);
  max-width: none;
  padding-left: max(clamp(16px, 4vw, 44px), calc(50% - 550px));
  padding-right: max(clamp(16px, 4vw, 44px), calc(50% - 550px));
  border-top: 1px solid rgba(168, 137, 97, .16);
  border-bottom: 1px solid rgba(168, 137, 97, .16);
}
/* Zemini yok, ama tam genişlikte: içindeki mutlak konumlu öğeler
   (filigran gibi) bandın tamamına göre yerleşebilsin. */
.band--wide {
  max-width: none;
  padding-left: max(clamp(16px, 4vw, 44px), calc(50% - 550px));
  padding-right: max(clamp(16px, 4vw, 44px), calc(50% - 550px));
}
.wrap { max-width: 1100px; margin-inline: auto; }

.eyebrow {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--gold);
  margin: 0 0 16px;
}

.band h2 {
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(26px, 4.2vw, 40px);
  line-height: 1.16;
  margin: 0 0 22px;
  text-wrap: balance;
}

.band__lede { font-size: 18px; color: var(--cream); max-width: 62ch; margin: 0 0 18px; }
/* Art arda gelen paragraflar arasında nefes payı; sondaki boşluk bırakmaz. */
.band__body { color: var(--muted); max-width: 66ch; margin: 0 0 16px; }
.band__body:last-child { margin-bottom: 0; }

/* Katalogun bölüm sloganları. Gövde metninden ayrılsın diye italik ve
   altın sol ray; .doc__note ile aynı jest, ama kutusuz ve daha sessiz. */
.pull {
  font-family: var(--display);
  font-size: clamp(17px, 2.1vw, 21px);
  font-style: italic;
  line-height: 1.45;
  color: var(--gold-lt);
  max-width: 54ch;
  margin: 30px 0 0;
  padding-left: 18px;
  border-left: 2px solid var(--gold);
  text-wrap: balance;
}

/* İki kolonlu bölüm başlığı: solda ad, sağda giriş metni.
   Tek kolonda kalan başlık sağ tarafta kocaman bir boşluk bırakıyordu. */
.band__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(24px, 5vw, 76px);
  align-items: start;
}
.band__headR { padding-top: clamp(4px, 1.4vw, 20px); }
.band__headR .band__lede { margin-bottom: 14px; }

.rule {
  display: block;
  width: 74px;
  height: 2px;
  margin-top: 4px;
  background: linear-gradient(90deg, var(--gold), rgba(168, 137, 97, 0));
}

.band__hint {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--weak);
  margin: 0;
  display: flex;
  align-items: center;
  gap: 10px;
}
.band__hint::before {
  content: "";
  width: 22px;
  height: 1px;
  background: var(--gold);
  flex: none;
}

/* ---------- hizmet akordeonları ---------- */

.acc-list {
  margin: clamp(40px, 5vw, 66px) 0 0;
  border-top: 1px solid var(--line);
}

.acc {
  position: relative;
  border-bottom: 1px solid var(--line);
  transition: background .3s ease;
}

/* Soldaki altın ray: kapalıyken yok, hover'da satır boyunca,
   açıkken panelin tamamı boyunca uzanır. */
.acc::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--gold);
  transform: scaleY(0);
  transform-origin: top;
  transition: transform .34s cubic-bezier(.3, .7, .3, 1);
  pointer-events: none;
}
.acc:hover::before,
.acc[open]::before { transform: scaleY(1); }

.acc[open] {
  background: linear-gradient(180deg, rgba(45, 55, 61, .5), rgba(45, 55, 61, 0) 340px);
}

.acc__head {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: clamp(12px, 2.4vw, 24px);
  padding: clamp(22px, 2.8vw, 32px) 4px clamp(22px, 2.8vw, 32px) clamp(14px, 2vw, 26px);
  cursor: pointer;
  list-style: none;
}
.acc__head::-webkit-details-marker { display: none; }

/* Soldan sağa sönümlenen altın süpürme */
.acc__head::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(168, 137, 97, .11), rgba(168, 137, 97, 0) 58%);
  opacity: 0;
  transition: opacity .3s ease;
}
.acc__head:hover::before,
.acc[open] .acc__head::before { opacity: 1; }

.acc__n {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .12em;
  color: var(--gold);
  flex: none;
  padding-top: 6px;
}

.acc__t {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: transform .3s cubic-bezier(.3, .7, .3, 1);
}
.acc__head:hover .acc__t { transform: translateX(6px); }
.acc__t b {
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(18px, 2.5vw, 25px);
  line-height: 1.22;
  color: var(--cream);
  transition: color .25s ease;
}
.acc__head:hover .acc__t b,
.acc[open] .acc__t b { color: var(--gold-lt); }
.acc__t i {
  font-style: italic;
  font-size: 14px;
  color: var(--muted);
  line-height: 1.5;
  max-width: 64ch;
}

/* Daire içinde artı → eksi */
.acc__x {
  flex: none;
  align-self: center;
  width: 38px;
  height: 38px;
  position: relative;
  margin-left: auto;
  border: 1px solid var(--line);
  border-radius: 50%;
  transition: border-color .3s ease, background .3s ease, transform .38s cubic-bezier(.3, .7, .3, 1);
}
.acc__x::before,
.acc__x::after {
  content: "";
  position: absolute;
  background: var(--gold);
  transition: transform .34s ease, opacity .34s ease, background .3s ease;
}
.acc__x::before { left: 11px; right: 11px; top: 50%; height: 1px; transform: translateY(-50%); }
.acc__x::after  { top: 11px; bottom: 11px; left: 50%; width: 1px; transform: translateX(-50%); }

.acc__head:hover .acc__x { border-color: rgba(168, 137, 97, .55); }
.acc[open] .acc__x {
  background: var(--gold);
  border-color: var(--gold);
  transform: rotate(180deg);
}
.acc[open] .acc__x::before { background: #171313; }
.acc[open] .acc__x::after { transform: translateX(-50%) rotate(90deg); opacity: 0; }

/* Yükseklik animasyonu: 0fr → 1fr */
.acc__wrap {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .34s cubic-bezier(.3, .7, .3, 1);
}
.acc[open] .acc__wrap { grid-template-rows: 1fr; }
.acc.is-closing .acc__wrap { grid-template-rows: 0fr; }
.acc__body { overflow: hidden; min-height: 0; }
.acc[open] .acc__body { padding-bottom: clamp(24px, 3.4vw, 44px); }

.acc__lede {
  font-size: 16.5px;
  color: var(--cream);
  max-width: 74ch;
  margin: 0 0 14px;
  padding-left: clamp(14px, 4vw, 72px);
}
.acc__p {
  color: var(--muted);
  max-width: 74ch;
  margin: 0 0 26px;
  padding-left: clamp(14px, 4vw, 72px);
}

.acc__sep {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--weak);
  margin: 34px 0 14px;
  padding-left: clamp(14px, 4vw, 72px);
  display: flex;
  align-items: center;
  gap: 14px;
}
.acc__sep::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--line);
}

/* Bitişik 1px ızgara yerine ayrık kartlar: son satırdaki boşluklar
   artık tablo hissi vermiyor, her blok kendi başına okunuyor. */
.acc__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(262px, 100%), 1fr));
  gap: 12px;
  margin-left: clamp(14px, 4vw, 72px);
}

.blk {
  background: linear-gradient(180deg, rgba(242, 237, 232, .05), rgba(242, 237, 232, .012));
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 22px 24px;
  transition: transform .25s ease, border-color .25s ease, background .25s ease;
}
.blk:hover {
  transform: translateY(-2px);
  border-color: rgba(168, 137, 97, .42);
  background: linear-gradient(180deg, rgba(168, 137, 97, .09), rgba(242, 237, 232, .015));
}
.blk h3 {
  font-family: var(--display);
  font-weight: 600;
  font-size: 16px;
  color: var(--gold-lt);
  margin: 0 0 12px;
  line-height: 1.35;
  display: flex;
  gap: 11px;
  align-items: center;
}
.blk h3 span {
  font-family: var(--mono);
  font-weight: 400;
  font-size: 10px;
  letter-spacing: .06em;
  color: var(--gold);
  flex: none;
  width: 26px;
  height: 26px;
  border: 1px solid rgba(168, 137, 97, .38);
  border-radius: 3px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.blk p { margin: 0; font-size: 14px; color: var(--muted); line-height: 1.6; }
.blk ul { margin: 0; padding: 0; list-style: none; }
.blk li {
  font-size: 14px;
  color: var(--muted);
  line-height: 1.55;
  padding: 4px 0 4px 16px;
  position: relative;
}
.blk li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 12px;
  width: 5px;
  height: 1px;
  background: var(--gold);
}

.chips {
  list-style: none;
  margin: 0;
  padding: 0 0 0 clamp(14px, 4vw, 72px);
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.chips li {
  font-size: 13.5px;
  color: var(--cream);
  border: 1px solid var(--line);
  border-left: 2px solid var(--gold);
  border-radius: 2px;
  padding: 9px 15px;
  background: var(--ground);
  transition: border-color .22s ease, color .22s ease, background .22s ease;
}
.chips li:hover {
  border-color: rgba(168, 137, 97, .45);
  background: rgba(168, 137, 97, .07);
  color: var(--gold-lt);
}

#iletisim { position: relative; overflow: hidden; }

/* Perga kemeri, bandın sağ omzunda çok soluk bir filigran olarak. */
.watermark {
  position: absolute;
  right: -40px;
  top: 9%;
  width: clamp(260px, 28vw, 420px);
  height: auto;
  opacity: .045;
  pointer-events: none;
  user-select: none;
}

.contact-top {
  display: grid;
  grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr);
  gap: clamp(28px, 5vw, 72px);
  align-items: start;
  position: relative;
}

.contact-intro .band__lede { margin: 22px 0 0; max-width: 40ch; }

.cta { display: flex; flex-wrap: wrap; gap: 12px; margin: 30px 0 0; }

/* Uc iletisim karti tek sutunda alt alta: hepsi ayni genislikte, dolayisiyla
   simetrik. Iki sutunda tek sayida kart sag altta bosluk birakiyordu; uc
   sutunda ise adres satirlari kirilip "No: 35 Ic kapi No:" / "7" seklinde
   bolunuyordu (olculdu: kart basina 184px). Tek sutun ikisini de cozuyor.
   grid-auto-rows:1fr uc satiri en uzuna esitliyor: adres iki satir surse de
   kutular ayni yukseklikte kaliyor, dizi bir blok gibi okunuyor. */
.cards {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-auto-rows: 1fr;
  gap: 12px;
}

/* Ikon ustte + metin altta dizilim, tam genislikte kartta sag tarafi bos
   birakiyordu. Ikon solda sabit sutun, metin yaninda: satir yatayda da
   dikeyde de ortali, uc kart ayni ritmi tutuyor. */
.card {
  position: relative;
  display: grid;
  grid-template-columns: 21px minmax(0, 1fr);
  column-gap: 18px;
  align-content: center;
  min-height: 96px;
  background: linear-gradient(180deg, rgba(242, 237, 232, .05), rgba(242, 237, 232, .012));
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 20px 48px 20px 24px;   /* sagda pay: ustuste binen ↗ isareti icin */
  transition: transform .25s ease, border-color .25s ease, background .25s ease;
}
a.card:hover {
  transform: translateY(-2px);
  border-color: rgba(168, 137, 97, .5);
  background: linear-gradient(180deg, rgba(168, 137, 97, .09), rgba(242, 237, 232, .015));
}

.card__ico {
  grid-column: 1;
  grid-row: 1 / span 2;
  align-self: center;
  display: block;
  width: 21px;
  height: 21px;
  color: var(--gold);
  margin: 0;
  transition: color .25s ease;
}
a.card:hover .card__ico { color: var(--gold-lt); }

.card__k {
  grid-column: 2;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--weak);
  margin: 0 0 6px;
}
.card__v { grid-column: 2; margin: 0; font-size: 15.5px; line-height: 1.5; color: var(--cream); }

.card__go {
  position: absolute;
  top: 50%;
  right: 22px;
  font-size: 14px;
  color: var(--gold);
  opacity: 0;
  transform: translate(-4px, calc(-50% + 4px));
  transition: opacity .25s ease, transform .25s ease;
}
a.card:hover .card__go { opacity: 1; transform: translate(0, -50%); }

/* ---------- teklif / talep formu ---------- */

.contact-form {
  position: relative;
  margin: clamp(40px, 6vw, 68px) 0 0;
  padding: clamp(28px, 4vw, 44px) 0 0;
  border-top: 1px solid var(--line);   /* .acc-list ile aynı jest */
}

.form__sep {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--weak);
  margin: 0 0 14px;
  display: flex;
  align-items: center;
  gap: 14px;
}
.form__sep::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--line);
}

.contact-form h3 {
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(22px, 3.2vw, 30px);
  line-height: 1.18;
  margin: 0 0 10px;
  text-wrap: balance;
}
.form__intro { color: var(--muted); margin: 0 0 30px; max-width: 62ch; }

.form__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  /* 18px: global :focus-visible outline-offset 3px komşu alana taşmasın. */
  gap: 18px;
}
.form__f { display: flex; flex-direction: column; min-width: 0; }
.form__f--wide { grid-column: 1 / -1; }

.form__lab {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .16em;
  text-transform: uppercase;
  /* --weak burada 4.07:1 kalırdı; etiket okunamayan form kullanılamaz. */
  color: var(--muted);
  margin: 0 0 8px;
}
.form__req { color: var(--gold); }

.form__in {
  font-family: inherit;
  /* 16px'in altı iOS Safari'de odakta sayfayı zorla yakınlaştırır. */
  font-size: 16px;
  line-height: 1.5;
  color: var(--cream);
  background: var(--ground);
  border: 1px solid var(--line);
  /* .chips li'nin altın sol çizgisinin sessiz hali; odakta dolar. */
  border-left: 2px solid transparent;
  border-radius: 2px;
  padding: 13px 15px;
  width: 100%;
  transition: border-color .22s ease, background .22s ease;
}
.form__in::placeholder { color: var(--weak); }
.form__in:hover { border-color: rgba(168, 137, 97, .32); }
.form__in:focus { border-color: rgba(168, 137, 97, .5); border-left-color: var(--gold); }

textarea.form__in { min-height: 150px; resize: vertical; }

/* Koyu temada Chrome autofill alanı açık maviye çeviriyor. */
.form__in:-webkit-autofill,
.form__in:-webkit-autofill:hover,
.form__in:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--cream);
  -webkit-box-shadow: 0 0 0 1000px var(--ground) inset;
  caret-color: var(--cream);
}

/* select: yerleşik oku kaldırıp sitenin hairline chevron'unu koyuyoruz. */
.form__sel { position: relative; display: block; }
.form__sel select { appearance: none; padding-right: 42px; cursor: pointer; }
.form__sel::after {
  content: "";
  position: absolute;
  right: 17px;
  top: 50%;
  width: 7px;
  height: 7px;
  margin-top: -6px;
  border-right: 1px solid var(--gold);
  border-bottom: 1px solid var(--gold);
  transform: rotate(45deg);
  pointer-events: none;
}

.form__err {
  font-family: var(--mono);
  font-size: 11px;
  line-height: 1.45;
  color: var(--warn);
  margin: 6px 0 0;
}
/* Renk tek başına taşıyıcı değil: hata metni her zaman yazılır. */
.form__f.is-bad .form__in {
  border-color: var(--warn);
  border-left-color: var(--warn);
}

/* Honeypot: CSS yüklenmese bile satır içi display:none ile gizli kalır. */
.form__hp { position: absolute; left: -9999px; }

.form__foot {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: clamp(20px, 3vw, 40px);
  margin: 26px 0 0;
}

.form__consent { flex: 1 1 auto; min-width: 0; }
.form__consent label {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--muted);
  cursor: pointer;
}
.form__consent a { color: var(--gold-lt); border-bottom: 1px solid rgba(168, 137, 97, .4); }
.form__consent a:hover { border-bottom-color: var(--gold-lt); }

/* .acc__x ile aynı kurgu: kenarlık + pseudo-element işaret. */
.form__check {
  appearance: none;
  flex: none;
  width: 22px;
  height: 22px;
  margin: 2px 0 0;
  position: relative;
  background: var(--ground);
  border: 1px solid var(--line);
  border-radius: 2px;
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease;
}
.form__check:hover { border-color: rgba(168, 137, 97, .5); }
.form__check:checked { border-color: var(--gold); background: rgba(168, 137, 97, .14); }
.form__check:checked::after {
  content: "";
  position: absolute;
  left: 7px;
  top: 2px;
  width: 6px;
  height: 12px;
  border-right: 1.5px solid var(--gold);
  border-bottom: 1.5px solid var(--gold);
  transform: rotate(42deg);
}
.form__f.is-bad .form__check { border-color: var(--warn); }

.form__alt { font-size: 12.5px; color: var(--weak); margin: 10px 0 0 30px; }

.form__act { flex: none; }

/* .blk gövdesi + sol ray. */
.form__status {
  margin: 24px 0 0;
  padding: 18px 20px;
  background: linear-gradient(180deg, rgba(242, 237, 232, .05), rgba(242, 237, 232, .012));
  border: 1px solid var(--line);
  border-left: 2px solid var(--gold);
  border-radius: 4px;
  font-size: 14.5px;
  line-height: 1.6;
}
.form__status p { margin: 0; }
.form__status--bad { border-left-color: var(--warn); }
.form__status--bad strong { color: var(--warn-lt); font-weight: 500; }
.form__status a:not(.btn) { color: var(--gold-lt); border-bottom: 1px solid rgba(168, 137, 97, .4); }

.form__detail {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--weak);
  margin: 10px 0 0 !important;
  word-break: break-word;
}
.form__fallback { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0 0 !important; }
.form__fallback .btn { font-size: 12.5px; padding: 10px 20px; }

.form__note { font-size: 12.5px; color: var(--weak); margin: 22px 0 0; }

.map {
  position: relative;
  margin: clamp(40px, 6vw, 68px) 0 0;
  border: 1px solid var(--line);
  border-radius: 4px;
  overflow: hidden;
}
.map iframe {
  display: block;
  width: 100%;
  height: clamp(260px, 32vw, 380px);
  border: 0;
  /* Google'ın açık temalı karosunu bandın koyu tonuna çeviriyor. */
  filter: grayscale(1) invert(.92) contrast(.86) brightness(.94);
}
.map__link {
  margin: 14px 0 0;
  font-family: var(--mono);
  font-size: 11.5px;
  letter-spacing: .06em;
  text-align: right;
}
.map__link a {
  color: var(--gold-lt);
  border-bottom: 1px solid rgba(168, 137, 97, .4);
}
.map__link a:hover { border-bottom-color: var(--gold-lt); }

.map::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  box-shadow: inset 0 0 70px 10px rgba(18, 23, 26, .55);
}

/* ---------- kaydırmayla beliren öğeler ---------- */

/* .has-reveal sınıfını JS ekliyor: script çalışmazsa hiçbir şey gizlenmez. */
.has-reveal [data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity .6s ease var(--d, 0ms),
    transform .6s cubic-bezier(.22, .7, .3, 1) var(--d, 0ms);
}
.has-reveal [data-reveal].is-in { opacity: 1; transform: none; }

/* ---------- alt sayfalar (kvkk, tesekkurler) ---------- */

/* Ana sayfada hero üst menünün altından başlıyor; alt sayfalarda
   içeriğin sabit menünün altında kalmaması için pay bırakılıyor. */
.is-sub main { padding-top: var(--bar-h); }

.doc { max-width: 820px; }

.doc__h1 {
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(28px, 4.6vw, 44px);
  line-height: 1.14;
  margin: 0 0 4px;
  text-wrap: balance;
}

.doc h2 {
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(18px, 2.4vw, 23px);
  line-height: 1.25;
  margin: 44px 0 12px;
  color: var(--gold-lt);
}

/* ---------- sık sorulan sorular ---------- */

/* .doc__dl ile aynı ızgara dili: 1px boşluk + kutu gölgesi çizgi işlevi
   görüyor, böylece kartlar arasında çift çizgi oluşmuyor.

   minmax'te min(320px, 100%) bilerek: auto-fit sabit bir px alt sınırını
   kap ondan darken de koruyor, 320px'lik telefonda satır taşıyordu. */
.faq {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
  gap: 1px;
  margin-top: clamp(28px, 4vw, 46px);
}
.faq__i {
  background: var(--surface);
  box-shadow: 0 0 0 1px var(--line);
  padding: clamp(20px, 2.4vw, 28px);
}
.faq__i h3 {
  margin: 0 0 9px;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--cream);
}
.faq__i p {
  margin: 0;
  font-size: 14.5px;
  line-height: 1.65;
  color: var(--muted);
}
.faq__i a {
  color: var(--gold-lt);
  border-bottom: 1px solid rgba(168, 137, 97, .4);
}
.faq__i a:hover { border-bottom-color: var(--gold-lt); }

/* Akordeonun sonundaki "detaylı sayfa" satırı. Akordeon içeriğiyle aynı
   sol raya hizalı dursun diye .acc__p ile aynı iç boşluğu alıyor. */
.acc__more {
  margin: 22px 0 0;
  padding-left: clamp(14px, 4vw, 72px);
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: .04em;
  color: var(--weak);
}
.acc__more a {
  color: var(--gold-lt);
  border-bottom: 1px solid rgba(168, 137, 97, .4);
}
.acc__more a:hover { border-bottom-color: var(--gold-lt); }

/* SSS başlıkları: h2'den bir kademe küçük, sorunun kendisi olduğu için
   altın değil krem — cevabın önündeki soru gibi okunsun. */
.doc h3 {
  font-weight: 600;
  font-size: clamp(15px, 1.7vw, 17px);
  line-height: 1.35;
  margin: 26px 0 8px;
  color: var(--cream);
  max-width: 70ch;
}

.doc__crumb {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .09em;
  color: var(--weak);
  margin: 0 0 26px;
}
.doc__crumb a { color: var(--weak); border-bottom: 0; }
.doc__crumb a:hover { color: var(--gold-lt); }
.doc__crumb [aria-current] { color: var(--muted); }

.doc p { max-width: 70ch; margin: 0 0 14px; color: var(--muted); }
.doc p strong { color: var(--cream); font-weight: 500; }
.doc .band__lede { margin: 22px 0 18px; }
.doc a:not(.btn) { color: var(--gold-lt); border-bottom: 1px solid rgba(168, 137, 97, .4); }
.doc a:not(.btn):hover { border-bottom-color: var(--gold-lt); }

.doc__ul { margin: 0 0 14px; padding: 0; list-style: none; max-width: 70ch; }
.doc__ul li {
  position: relative;
  padding: 5px 0 5px 18px;
  color: var(--muted);
  line-height: 1.6;
}
.doc__ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 14px;
  width: 6px;
  height: 1px;
  background: var(--gold);
}
.doc__ul li strong { color: var(--cream); font-weight: 500; }

.doc__dl {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr));
  gap: 1px;
  margin: 18px 0 14px;
}
.doc__dl > div {
  background: var(--surface);
  box-shadow: 0 0 0 1px var(--line);
  padding: 16px 18px;
}
.doc__dl dt {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--weak);
  margin-bottom: 7px;
}
.doc__dl dd { margin: 0; font-size: 15px; color: var(--cream); }

.doc__note {
  border: 1px solid var(--line);
  border-left: 2px solid var(--gold);
  background: linear-gradient(180deg, rgba(242, 237, 232, .05), rgba(242, 237, 232, .012));
  border-radius: 4px;
  padding: 18px 20px;
  margin: 22px 0;
}
.doc__note p { margin: 0; }

.doc__rev {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: .06em;
  color: var(--weak);
  margin: 40px 0 0;
}

/* ---------- alt ---------- */

.foot {
  border-top: 1px solid var(--line);
  padding: clamp(48px, 7vw, 80px) clamp(16px, 4vw, 44px);
  text-align: center;
  color: var(--muted);
}
/* Yeni lockup isaretin altina PERGA + MUHENDISLIK + slogan satirini da
   tasiyor; 168px'te slogan 4.5px'e dusup okunmaz oluyordu. */
.foot__logo { width: 240px; height: auto; opacity: .9; margin-bottom: 20px; }
.foot p { margin: 0 0 8px; font-style: italic; }
.foot__fine {
  font-family: var(--mono);
  font-size: 11px;
  font-style: normal;
  letter-spacing: .08em;
  color: var(--weak);
}
/* inline-block + dikey pay: satır içi bağlantının dokunma hedefi
   16px yüksekliğinde kalıyordu. */
.foot__fine a {
  display: inline-block;
  padding: 8px 0;
  border-bottom: 1px solid rgba(168, 137, 97, .35);
}
.foot__fine a:hover { color: var(--gold-lt); border-bottom-color: var(--gold-lt); }

/* ---------- erişilebilirlik / mobil ---------- */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero { height: 100vh; height: 100svh; }
  .hero__hint { display: none; }
  .has-reveal [data-reveal] { opacity: 1; transform: none; transition: none; }
  .blk, .card, .acc, .acc__t, .acc__x, .form__in, .form__check { transition: none; }
  .nav, .nav__bars, .nav__bars::before, .nav__bars::after { transition: none; }
  /* Dönen animasyon vestibüler rahatsızlık tetikleyebilir; "Gönderiliyor…"
     metni tek başına yeterli bilgi taşıyor. */
  .btn.is-busy::after { animation: none; }
}

/* Sabit menünün altına kaymasınlar (JS kapalıyken de). */
[id] { scroll-margin-top: calc(var(--bar-h) + 18px); }

/* Genişlik sorguları genişten dara doğru sıralı olmalı: daha dar olan blok
   sonra gelmezse, çakışan özelliklerde geniş blok onu sessizce eziyor. */

@media (max-width: 900px) {
  .acc__lede, .acc__p, .acc__sep, .acc__grid, .chips, .acc__more { padding-left: 0; margin-left: 0; }
  .band__head,
  .contact-top { grid-template-columns: minmax(0, 1fr); }
  .band__headR { padding-top: 0; }
  .contact-intro .band__lede { max-width: 62ch; }
  .watermark { display: none; }
  .form__grid { grid-template-columns: minmax(0, 1fr); }

  /* ---- tam ekran menü ---- */

  .nav__btn { display: block; }

  /* backdrop-filter, position:fixed alt öğeler için kapsayıcı blok yaratıyor;
     .topbar'da kalırsa tam ekran panel başlık yüksekliğine hapsoluyor
     (ölçüldü: 700px yerine 124px). Panelin yaşadığı genişlikte kaldırıyoruz —
     çubuk zaten %94 opak, bulanıklığın görsel katkısı ihmal edilebilir.
     ≥901px'de panel kullanılmadığı için bulanıklık orada duruyor. */
  .topbar.is-stuck { backdrop-filter: none; }

  /* Marka ve düğme panelin üstünde kalsın; başlık satırı açıkken de okunur. */
  .topbar.is-open .brand { position: relative; z-index: 70; }

  /* Kapalıyken visibility:hidden — klavye sekmesi panele girmesin. */
  .nav {
    position: fixed;
    inset: 0;
    z-index: 60;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: calc(var(--bar-h) + 20px) clamp(16px, 6vw, 44px) 40px;
    overflow-y: auto;
    overscroll-behavior: contain;
    background: rgba(18, 23, 26, .97);
    backdrop-filter: blur(10px);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity .28s ease, transform .28s ease, visibility .28s;
  }
  .topbar.is-open .nav { opacity: 1; visibility: visible; transform: none; }

  .nav > a,
  .nav__drop > a {
    display: flex;
    align-items: center;
    min-height: 52px;
    padding: 6px 0;
    font-size: 15px;
    letter-spacing: .14em;
    color: var(--cream);
    border-bottom: 1px solid var(--line);
  }
  .nav > a:hover,
  .nav__drop > a:hover { color: var(--gold-lt); border-bottom-color: var(--line); }

  .nav__drop { position: static; }

  /* Hover açılır listesi yerine her zaman görünen girintili alt liste.
     Böylece dokunmatikte "önce aç, sonra tıkla" adımı da ortadan kalkıyor. */
  .drop {
    position: static;
    min-width: 0;
    margin: 0;
    padding: 4px 0 12px;
    opacity: 1;
    visibility: visible;
    transform: none;
    background: none;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    backdrop-filter: none;
    transition: none;
  }
  .drop::before { content: none; }
  .drop a {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 46px;
    padding: 4px 0 4px 20px;
    font-size: 13.5px;
    letter-spacing: .04em;
    border-left: 0;
  }
  .drop a::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    width: 9px;
    height: 1px;
    background: var(--gold);
  }
  .drop a:hover { background: none; border-left: 0; color: var(--gold-lt); }

  .nav__cta { display: block; margin: 28px 0 0; }
  /* .nav a bu bağlantıyı da yakalayıp padding'ini 6px/2px'e indiriyordu:
     düğme 35px yüksekliğe düşüyor, dokunma hedefi 44px'in altında kalıyordu.
     Butonun kendi ölçüsünü daha yüksek özgüllükle geri veriyoruz. */
  .nav__cta .btn {
    display: block;
    padding: 16px 28px;
    font-size: 13.5px;
    letter-spacing: .1em;
    text-align: center;
    border: 1px solid var(--gold);
    color: #171313;
  }
}

@media (max-width: 720px) {
  :root { --bar-h: 64px; }
  .brand__mark { height: 40px; }
  .brand__txt b { font-size: 16px; }
  .brand__txt i { font-size: 8px; letter-spacing: .28em; text-indent: .28em; }
  .hero__body { top: auto; bottom: 96px; transform: none; }
  .hero__hint { display: none; }

  /* Kare dizisi telefonda hiç indirilmiyor (bkz. hero.js); geriye tek
     poster kalıyor, dolayısıyla iki ekran boyu scrub mesafesi de gereksiz. */
  .hero { height: 100vh; height: 100svh; }
  .hero__canvas { display: none; }

  /* Sol altın ray 2px; padding 2px kalsaydı numara rayın üstüne otururdu. */
  .acc__head { gap: 12px; padding: 18px 2px 18px 14px; align-items: flex-start; }
  .acc__n { padding-top: 3px; }
  .acc__x { margin-top: 3px; }
  .acc__t i { font-size: 13px; }
}

@media (max-width: 560px) {
  /* Dar ekranda ikon sutunu + saga birakilan pay metne yer birakmiyor;
     ↗ zaten dokunmatikte gorunmedigi icin sag payi kisaltiyoruz. */
  .card { column-gap: 14px; padding: 18px 20px; }

  .form__foot { flex-direction: column; align-items: stretch; }
  .form__act .btn { width: 100%; }
  .form__fallback .btn { flex: 1 1 auto; text-align: center; }
  .acc__x { width: 32px; height: 32px; }
  .acc__x::before { left: 9px; right: 9px; }
  .acc__x::after { top: 9px; bottom: 9px; }
}

@media (max-width: 420px) {
  .acc__t i { display: none; }   /* dar ekranda başlık tek başına yeter */
}

/* Yatay tutulan telefon: genişlik 740–930px olduğu için genişlik sorguları
   devreye girmiyor ama yükseklik 360–430px. Dikey ortalanan hero gövdesi
   sabit üst çubuğun altında kalıyordu. Alttan hizalayıp küçültüyoruz. */
@media (max-height: 560px) {
  /* Yatay telefon da telefon: kare dizisi burada da inmiyor (bkz. hero.js,
     aynı eşik). Kareler olmayınca iki ekran boyu scrub mesafesi de gereksiz. */
  .hero { height: 100vh; height: 100svh; }
  .hero__canvas { display: none; }

  .hero__body { top: auto; bottom: 20px; transform: none; }
  .hero__eyebrow { margin-bottom: 10px; }
  .hero__h1 { font-size: clamp(24px, 4.4vh, 34px); margin-bottom: 14px; }
  .hero__sub { display: none; }
  .hero__hint { display: none; }
}
