/*
 * KORSHOM — Framer-grade motion (stronger global layer)
 */

:root {
  --fm-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --fm-spring: cubic-bezier(0.22, 1.4, 0.36, 1);
  --fm-out: cubic-bezier(0.16, 1, 0.3, 1);
  --fm-duration: 1.05s;
}

html.fm-smooth {
  scroll-behavior: auto;
}

body.fm-smooth-active {
  overscroll-behavior-y: none;
}

/* Page enter */
body.experience-ready main,
body.experience-ready .site-main,
body.loaded #page,
body.loaded .site-content {
  animation: fmPageIn 1.15s var(--fm-out) both;
}

@keyframes fmPageIn {
  from {
    opacity: 0;
    filter: blur(14px);
    transform: translateY(28px) scale(0.985);
  }
  to {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0) scale(1);
  }
}

/* Auto-reveal — stronger Framer signature */
.fm-reveal {
  opacity: 0;
  filter: blur(16px);
  transform: translate3d(0, 64px, 0) scale(0.94);
  transition:
    opacity var(--fm-duration) var(--fm-out),
    transform 1.15s var(--fm-out),
    filter 1.05s var(--fm-out);
  transition-delay: var(--fm-delay, 0ms);
  will-change: opacity, transform, filter;
}

.fm-reveal.is-in {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0, 0, 0) scale(1);
}

.fm-reveal--left { transform: translate3d(-64px, 24px, 0) scale(0.94); }
.fm-reveal--right { transform: translate3d(64px, 24px, 0) scale(0.94); }
.fm-reveal--left.is-in,
.fm-reveal--right.is-in { transform: translate3d(0, 0, 0) scale(1); }
.fm-reveal--scale { transform: scale(0.86); filter: blur(18px); }
.fm-reveal--scale.is-in { transform: scale(1); }

.reveal,
.reveal-left,
.reveal-right,
.reveal-scale {
  filter: blur(12px);
  transition:
    opacity 1.1s var(--fm-out),
    transform 1.1s var(--fm-out),
    filter 1.1s var(--fm-out) !important;
}

.reveal { transform: translateY(48px); }
.reveal-left { transform: translateX(-56px); }
.reveal-right { transform: translateX(56px); }

.reveal.in,
.reveal-left.in,
.reveal-right.in,
.reveal-scale.in {
  filter: blur(0);
}

.stagger-children > * {
  opacity: 0;
  filter: blur(10px);
  transform: translateY(40px) scale(0.96);
  transition:
    opacity 0.9s var(--fm-out),
    transform 0.95s var(--fm-spring),
    filter 0.9s var(--fm-out) !important;
}

.stagger-children.visible > * {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0) scale(1);
}

.stagger-children.visible > *:nth-child(1) { transition-delay: 0.04s; }
.stagger-children.visible > *:nth-child(2) { transition-delay: 0.12s; }
.stagger-children.visible > *:nth-child(3) { transition-delay: 0.2s; }
.stagger-children.visible > *:nth-child(4) { transition-delay: 0.28s; }
.stagger-children.visible > *:nth-child(5) { transition-delay: 0.36s; }
.stagger-children.visible > *:nth-child(6) { transition-delay: 0.44s; }
.stagger-children.visible > *:nth-child(n+7) { transition-delay: 0.52s; }
.stagger-children.visible > *:nth-child(n+8) { transition-delay: 0.6s; }
.stagger-children.visible > *:nth-child(n+9) { transition-delay: 0.68s; }
.stagger-children.visible > *:nth-child(n+10) { transition-delay: 0.76s; }

/* Text line mask */
.fm-split .fm-line {
  display: block;
  overflow: hidden;
  padding-bottom: 0.14em;
  margin-bottom: -0.14em;
}

.fm-split .fm-line-inner {
  display: block;
  transform: translateY(115%);
  filter: blur(6px);
  transition: transform 1.15s var(--fm-out), filter 0.9s var(--fm-out);
  transition-delay: var(--fm-delay, 0ms);
}

.fm-split.is-in .fm-line-inner {
  transform: translateY(0);
  filter: blur(0);
}

/* Spring interactions */
.fm-spring,
.svc-card,
.feature-item,
.project-card,
.testimonial-card,
.stat-box,
.pricing-card,
.extra-card,
.process-step,
.faq-item,
.contact-row,
.journey-card,
.skill-tag,
.sector-item {
  transition:
    transform 0.65s var(--fm-spring),
    box-shadow 0.5s var(--fm-out),
    border-color 0.35s ease,
    background 0.35s ease !important;
}

.fm-spring:hover,
.svc-card:hover,
.feature-item:hover,
.project-card:hover,
.testimonial-card:hover,
.stat-box:hover,
.pricing-card:hover,
.extra-card:hover,
.process-step:hover,
.skill-tag:hover {
  transform: translateY(-12px) scale(1.025);
}

.journey-card.is-active:hover {
  transform: translateY(-8px) scale(1.015);
}

/* Media zoom */
.fm-media,
.about-img-main,
.about-img-sub,
.project-card .project-thumb,
.project-card img,
.sector-img,
.sectors-sticky img {
  overflow: hidden;
}

.fm-media img,
.about-img-main img,
.about-img-sub img,
.project-card img,
.sector-img img,
.sectors-sticky img {
  transition: transform 1.35s var(--fm-out), filter 0.8s ease;
  will-change: transform;
}

.fm-media:hover img,
.about-img-main:hover img,
.about-img-sub:hover img,
.project-card:hover img,
.sector-img.active img {
  transform: scale(1.12);
  filter: saturate(1.08);
}

.btn {
  transition:
    transform 0.55s var(--fm-spring),
    box-shadow 0.45s var(--fm-out),
    background 0.3s,
    color 0.3s,
    border-color 0.3s !important;
}

.btn.magnetic-active {
  transition: transform 0.1s linear, box-shadow 0.45s var(--fm-out) !important;
}

.btn:hover {
  transform: translateY(-5px);
  box-shadow: 0 22px 48px rgba(var(--dark-rgb), 0.22);
}

.nav-links a {
  transition: color 0.35s var(--fm-out), transform 0.4s var(--fm-spring) !important;
}

.nav-links a:hover { transform: translateY(-2px); }

.marquee-section:hover .marquee-track {
  animation-play-state: paused;
}

.marquee-track {
  animation-duration: 32s !important;
}

.fm-parallax { will-change: transform; }

.scroll-progress {
  height: 3px;
  background: linear-gradient(90deg, var(--gold-light), var(--primary), var(--gold), var(--gold-light));
  background-size: 220% 100%;
  animation: fmProgressShift 3.2s linear infinite;
  box-shadow: 0 0 20px rgba(var(--gold-rgb), 0.55);
}

@keyframes fmProgressShift {
  to { background-position: 220% 0; }
}

.k-cursor-ring {
  transition:
    opacity 0.25s,
    width 0.45s var(--fm-spring),
    height 0.45s var(--fm-spring),
    background 0.3s,
    border-color 0.3s,
    margin 0.45s var(--fm-spring) !important;
}

.cursor-over .k-cursor-ring {
  width: 72px !important;
  height: 72px !important;
  margin: -36px !important;
  background: rgba(var(--gold-rgb), 0.16) !important;
}

.cta-section .btn,
footer a {
  transition: color 0.3s, transform 0.45s var(--fm-spring) !important;
}

footer a:hover { transform: translateY(-3px); }

.preloader.hidden {
  transition: opacity 0.85s var(--fm-out), visibility 0.85s, filter 0.85s var(--fm-out), transform 0.85s var(--fm-out) !important;
  filter: blur(18px);
  transform: scale(1.03);
}

/* Section punch-in when engaged */
section.fm-section-in {
  --section-pulse: 1;
}

@media (max-width: 900px) {
  .fm-reveal {
    filter: blur(8px);
    transform: translate3d(0, 32px, 0);
  }

  .fm-spring:hover,
  .svc-card:hover,
  .feature-item:hover,
  .project-card:hover,
  .testimonial-card:hover,
  .stat-box:hover,
  .pricing-card:hover,
  .extra-card:hover,
  .process-step:hover,
  .skill-tag:hover,
  .sector-item:hover,
  .journey-card.is-active:hover,
  .btn:hover {
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .fm-reveal,
  .fm-reveal--left,
  .fm-reveal--right,
  .fm-reveal--scale,
  .fm-split .fm-line-inner,
  .reveal,
  .reveal-left,
  .reveal-right,
  .reveal-scale,
  .stagger-children > *,
  body.experience-ready main,
  body.loaded #page {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}
