/* =========================================================
   Cyberraum — canlılık katmanı (fx.css)
   Footer, platonik şekiller, kıvılcım izi, ek hover efektleri
   ========================================================= */

/* ---------- İmleç kıvılcım izi ---------- */
.spark-trail {
  position: fixed;
  inset: 0;
  z-index: 140;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

/* ---------- Eyebrow çizgisi çizilir ---------- */
html.motion-ready .eyebrow[data-fx="fade"]::before {
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.9s var(--ease-out) 0.2s;
}
html.motion-ready .eyebrow[data-fx="fade"].is-in::before { transform: scaleX(1); }

/* ---------- Platonik şekiller ---------- */
.geo-field {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}
.geo {
  position: absolute;
  width: 5rem;
  height: 5rem;
  overflow: visible;
  will-change: transform;
}
.geo > * {
  fill: none;
  stroke: rgba(20, 108, 95, 0.28);
  stroke-width: 1.4;
  vector-effect: non-scaling-stroke;
  transform-box: fill-box;
  transform-origin: center;
  animation: spin 38s linear infinite;
  stroke-dasharray: 100;
  stroke-dashoffset: 0;
}
html.motion-ready .geo > * { stroke-dashoffset: 100; transition: stroke-dashoffset 2.2s var(--ease-out); }
html.motion-ready .geo-field.is-in .geo > * { stroke-dashoffset: 0; }
.geo--tri > * { stroke: rgba(242, 165, 65, 0.45); animation-duration: 26s; animation-direction: reverse; }
.geo--sq > * { animation-duration: 44s; }
.geo--hex > * { stroke: rgba(16, 24, 32, 0.14); animation-duration: 52s; animation-direction: reverse; }
.geo-field .geo:nth-child(2) > * { transition-delay: 0.2s; }
.geo-field .geo:nth-child(3) > * { transition-delay: 0.4s; }
.geo-field .geo:nth-child(4) > * { transition-delay: 0.6s; }

.geo-field--about .geo--circle { left: 46%; top: 8%; width: 3.5rem; height: 3.5rem; }
.geo-field--about .geo--tri { right: 6%; bottom: 12%; width: 4.5rem; height: 4.5rem; }
.geo-field--about .geo--sq { left: 3%; bottom: 6%; width: 3rem; height: 3rem; }
.geo-field--about .geo--hex { right: 30%; top: 4%; width: 6rem; height: 6rem; }

.geo-field--contact .geo--circle { right: 8%; top: 10%; width: 6rem; height: 6rem; }
.geo-field--contact .geo--tri { left: 42%; top: 6%; width: 3.2rem; height: 3.2rem; }
.geo-field--contact .geo--sq { right: 40%; bottom: 5%; width: 3.6rem; height: 3.6rem; }
.geo-field--contact .geo--hex { left: 2%; bottom: 20%; width: 4.5rem; height: 4.5rem; }

.geo-field--portfolio .geo > * { stroke: rgba(255, 255, 255, 0.1); }
.geo-field--portfolio .geo--tri > * { stroke: rgba(242, 165, 65, 0.4); }
.geo-field--portfolio .geo--circle { right: 6%; top: 6%; width: 5rem; height: 5rem; }
.geo-field--portfolio .geo--tri { left: 48%; top: 10%; width: 3.4rem; height: 3.4rem; }
.geo-field--portfolio .geo--sq { left: 4%; bottom: 8%; width: 4rem; height: 4rem; }
.geo-field--portfolio .geo--hex { right: 4%; bottom: 14%; width: 6.5rem; height: 6.5rem; }

@media (max-width: 767px) {
  .geo { opacity: 0.7; }
  .geo-field--about .geo--hex,
  .geo-field--contact .geo--sq,
  .geo-field--portfolio .geo--tri { display: none; }
}

/* ---------- Hizmet kartları: dönen ışık kenarı ---------- */
.svc-card::after,
.form-panel::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: conic-gradient(from var(--ang, 0deg), transparent 0 62%, var(--lamp) 80%, rgba(26, 138, 120, 0.9) 88%, transparent 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
  animation: spin-ang 4.5s linear infinite;
  pointer-events: none;
}
.svc-card::after { opacity: 0; transition: opacity 0.45s ease; }
.svc-card:hover::after { opacity: 1; }
.form-panel { position: relative; }
.form-panel::after { opacity: 0.55; animation-duration: 8s; }
.svc-card--cta::after { display: none; }

/* ---------- Süzülen logolar ve semboller ---------- */
@keyframes bob {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -7px; }
}
.ref-card-logo { animation: bob 6s ease-in-out infinite; }
.portfolio-item:nth-child(2n) .ref-card-logo { animation-delay: -2s; }
.portfolio-item:nth-child(3n) .ref-card-logo { animation-delay: -4s; animation-duration: 7s; }
.pillar-glyph { animation: bob 7s ease-in-out infinite; }
.pillar:nth-child(2) .pillar-glyph { animation-delay: -2.3s; }
.pillar:nth-child(3) .pillar-glyph { animation-delay: -4.6s; }
.value-glyph { animation: bob 5s ease-in-out infinite; }
.value-chip:nth-child(2) .value-glyph { animation-delay: -1.6s; }
.value-chip:nth-child(3) .value-glyph { animation-delay: -3.2s; }

/* Hero başlığı harfleri imlece yaklaşınca yükselir */
.hx-title .ch { transition: color 0.3s ease, text-shadow 0.3s ease; }
.hx-title .ch.is-near { color: var(--lamp-soft); }

/* =========================================================
   FOOTER
   ========================================================= */
.ft {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background: #070b0e;
  color: #fff;
  padding-top: 6rem;
}
@media (min-width: 768px) { .ft { padding-top: 8rem; } }

.ft-aurora {
  position: absolute;
  inset: 0;
  z-index: -3;
  filter: blur(80px);
  opacity: 0.75;
  pointer-events: none;
}
.ft-aurora span {
  position: absolute;
  border-radius: 50%;
  mix-blend-mode: screen;
}
.ft-aurora span:nth-child(1) {
  width: 46vw; height: 46vw; left: -10vw; top: -14vw;
  background: radial-gradient(circle, rgba(26, 138, 120, 0.55), transparent 65%);
  animation: aurora-a 18s ease-in-out infinite alternate;
}
.ft-aurora span:nth-child(2) {
  width: 40vw; height: 40vw; right: -8vw; top: 10%;
  background: radial-gradient(circle, rgba(242, 165, 65, 0.4), transparent 65%);
  animation: aurora-b 22s ease-in-out infinite alternate;
}
.ft-aurora span:nth-child(3) {
  width: 52vw; height: 30vw; left: 25%; bottom: -12vw;
  background: radial-gradient(ellipse, rgba(242, 120, 65, 0.3), transparent 65%);
  animation: aurora-c 16s ease-in-out infinite alternate;
}
@keyframes aurora-a { to { transform: translate(18vw, 10vw) scale(1.2); } }
@keyframes aurora-b { to { transform: translate(-16vw, 8vw) scale(0.85); } }
@keyframes aurora-c { to { transform: translate(-12vw, -6vw) scale(1.25); } }

.ft-grid {
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
  background-size: 64px 64px;
  -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, #000, transparent 75%);
  mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, #000, transparent 75%);
  animation: grid-drift 30s linear infinite;
  pointer-events: none;
}
.ft-embers { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; pointer-events: none; }

.ft-inner { position: relative; }
.ft-top {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
  padding-bottom: 4rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
@media (min-width: 768px) {
  .ft-top { flex-direction: row; align-items: flex-end; justify-content: space-between; }
}
.ft-title {
  margin: 1.1rem 0 0;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(2.6rem, 7vw, 6.2rem);
  line-height: 0.98;
  letter-spacing: -0.045em;
}
.ft-title em {
  font-family: "Cormorant Garamond", Georgia, serif;
  font-style: italic;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--lamp);
}
.ft-mail {
  display: inline-flex;
  align-items: center;
  gap: 0.9rem;
  margin-top: 2rem;
  padding: 0.5rem 0.5rem 0.5rem 1.4rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  background: rgba(255, 255, 255, 0.04);
  color: #fff;
  font-size: clamp(1rem, 2vw, 1.35rem);
  font-weight: 600;
  text-decoration: none;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: color 0.5s var(--ease-out), border-color 0.4s ease;
}
.ft-mail::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--lamp);
  transform: translateY(101%);
  transition: transform 0.6s var(--ease-out);
}
.ft-mail:hover { color: var(--night); border-color: var(--lamp); }
.ft-mail:hover::before { transform: translateY(0); }
.ft-mail-arrow {
  display: grid;
  place-items: center;
  width: 2.8rem;
  height: 2.8rem;
  border-radius: 50%;
  background: var(--lamp);
  color: var(--night);
  transition: transform 0.6s var(--ease-out), background 0.4s ease, color 0.4s ease;
}
.ft-mail:hover .ft-mail-arrow { transform: rotate(45deg); background: var(--night); color: var(--lamp); }

.ft-up {
  position: relative;
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 9rem;
  height: 9rem;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: rgba(255, 255, 255, 0.75);
  text-decoration: none;
  transition: background 0.45s ease, color 0.45s ease, border-color 0.45s ease;
}
.ft-up:hover { background: var(--lamp); color: var(--night); border-color: var(--lamp); }
.ft-up-text { position: absolute; inset: 0; width: 100%; height: 100%; animation: spin 16s linear infinite; }
.ft-up:hover .ft-up-text { animation-duration: 5s; }
.ft-up-text text { font-family: var(--font-display); font-weight: 600; font-size: 12.5px; letter-spacing: 0.3em; fill: currentColor; }
.ft-up-core { font-size: 1.8rem; transition: transform 0.6s var(--ease-out); }
.ft-up:hover .ft-up-core { transform: translateY(-6px); }

.ft-cols {
  display: grid;
  gap: 2.5rem;
  padding: 3.5rem 0 3rem;
}
@media (min-width: 768px) { .ft-cols { grid-template-columns: 1fr 1fr 1.3fr; gap: 3rem; } }
.ft-h {
  margin: 0 0 1.1rem;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--lamp);
}
.ft-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.55rem; }
.ft-link {
  display: inline-flex;
  align-items: baseline;
  gap: 0.7rem;
  color: rgba(255, 255, 255, 0.78);
  font-size: 1.02rem;
  font-weight: 500;
  text-decoration: none;
  transition: color 0.3s ease, transform 0.5s var(--ease-out);
}
.ft-link i { font-style: normal; font-size: 0.7rem; letter-spacing: 0.1em; color: rgba(255, 255, 255, 0.3); transition: color 0.3s ease; }
.ft-link:hover { transform: translateX(6px); }
.ft-link:hover i { color: var(--lamp); }
.ft-addr { color: rgba(255, 255, 255, 0.5); font-size: 0.95rem; line-height: 1.55; }
.ft-quote {
  margin: 0;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-style: italic;
  font-weight: 500;
  font-size: clamp(1.5rem, 2.4vw, 2rem);
  line-height: 1.2;
  color: rgba(255, 255, 255, 0.88);
}
.ft-quote-by { margin: 0.6rem 0 0; font-size: 0.78rem; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(255, 255, 255, 0.4); }
.ft-values {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin-top: 1.6rem;
}
.ft-values span {
  padding: 0.35rem 0.8rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  font-size: 0.78rem;
  color: rgba(255, 255, 255, 0.7);
  transition: background 0.35s ease, color 0.35s ease, border-color 0.35s ease;
}
.ft-values span:hover { background: var(--lamp); color: var(--night); border-color: var(--lamp); }
.ft-values b { color: var(--lamp); font-weight: 400; font-size: 0.7rem; animation: spin 6s linear infinite; display: inline-block; }

/* Dev yazı: dışı çizgili, imlece yakın harfler fener ışığıyla dolar */
.ft-giant {
  position: relative;
  margin: 0;
  padding: 0 0.12em;
  text-align: center;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-weight: 600;
  font-size: clamp(5rem, 24vw, 25rem);
  line-height: 0.82;
  letter-spacing: -0.03em;
  white-space: nowrap;
  overflow: hidden;
  user-select: none;
  color: transparent;
  -webkit-text-stroke: 1px rgba(255, 255, 255, 0.16);
}
.ft-giant .ch {
  --h: 0;
  color: rgba(242, 165, 65, calc(var(--h) * 0.95));
  -webkit-text-stroke-color: rgba(255, 255, 255, calc(0.16 + var(--h) * 0.3));
  text-shadow: 0 0 calc(var(--h) * 60px) rgba(242, 165, 65, calc(var(--h) * 0.5));
  will-change: transform;
}
html:not(.motion-ready) .ft-giant { -webkit-text-stroke: 0; color: rgba(255, 255, 255, 0.08); }

.ft-bottom {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.8rem;
  padding-top: 1.6rem;
  padding-bottom: 1.8rem;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  font-size: 0.8rem;
  color: rgba(255, 255, 255, 0.42);
  text-align: center;
}
.ft-bottom p { margin: 0; }
.ft-logo { height: 1.8rem; width: auto; opacity: 0.85; }
@media (min-width: 768px) {
  .ft-bottom { flex-direction: row; justify-content: space-between; text-align: left; }
}

@media (prefers-reduced-motion: reduce) {
  .spark-trail, .ft-embers { display: none; }
}

/* Footer görünürken sabit "yukarı" düğmesi gizlenir (footer'ın kendi düğmesi var) */
.back-top.is-visible.is-off { opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(10px); }
