/**
 * HARI CONSULTING LLC — AWARD-LEVEL GSAP MOTION SYSTEM
 * Quiet luxury, editorial restraint, architectural stillness.
 * Strictly adheres to sharp corners (0 border-radius) & brand palette.
 */

/* ==========================================================================
   1. LENIS SMOOTH SCROLL INTEGRATION
   ========================================================================== */
html,
body {
  overflow-x: clip;
  max-width: 100vw;
}

html.lenis,
html.lenis body {
  height: auto;
}

.lenis.lenis-smooth {
  scroll-behavior: auto !important;
}

.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}

.lenis.lenis-stopped {
  overflow: hidden;
}

.lenis.lenis-scrolling iframe {
  pointer-events: none;
}

/* ==========================================================================
   2. GLOBAL PAGE ENTRANCE CURTAIN
   ========================================================================== */
#page-curtain {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  background-color: var(--color-navy);
  z-index: 999999;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  will-change: transform;
}

.curtain-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  opacity: 0;
  transform: translateY(12px);
  will-change: opacity, transform;
}

.curtain-logo-mark {
  width: 65px;
  height: 78px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 6px;
}

.curtain-logo-mark svg {
  width: 100%;
  height: 100%;
  display: block;
}

.curtain-brand-title {
  font-family: var(--font-serif);
  font-size: 1.25rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-cream);
}

.curtain-brand-tagline {
  font-family: var(--font-sans);
  font-size: 0.75rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-cream-tint);
}

/* ==========================================================================
   3. EDITORIAL SCROLL PROGRESS HAIRLINE
   ========================================================================== */
#scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background-color: var(--color-gold);
  transform-origin: 0 50%;
  transform: scaleX(0);
  z-index: 10001;
  pointer-events: none;
}

/* ==========================================================================
   4. SUBTLE EDITORIAL CUSTOM CURSOR (DESKTOP ONLY)
   ========================================================================== */
#custom-cursor-dot,
#custom-cursor-ring {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  z-index: 99990;
  display: none;
  opacity: 0;
  will-change: transform;
}

@media (pointer: fine) and (hover: hover) {
  #custom-cursor-dot,
  #custom-cursor-ring {
    display: block;
  }
}

@media (max-width: 991px) {
  #custom-cursor-dot,
  #custom-cursor-ring {
    display: none !important;
  }
}

#custom-cursor-dot {
  width: 5px;
  height: 5px;
  background-color: var(--color-navy);
  margin: -2.5px 0 0 -2.5px;
  border-radius: 0 !important; /* STRICT SHARP CORNERS */
}

#custom-cursor-ring {
  width: 24px;
  height: 24px;
  border: 1px solid rgba(6, 24, 61, 0.35);
  margin: -12px 0 0 -12px;
  border-radius: 0 !important; /* STRICT SHARP CORNERS */
  transition: width 0.2s cubic-bezier(0.16, 1, 0.3, 1),
              height 0.2s cubic-bezier(0.16, 1, 0.3, 1),
              margin 0.2s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.2s ease,
              background-color 0.2s ease;
}

body.cursor-hover #custom-cursor-ring {
  width: 38px;
  height: 38px;
  margin: -19px 0 0 -19px;
  border-color: var(--color-gold);
  background-color: rgba(210, 202, 182, 0.08);
}

body.cursor-inverted #custom-cursor-dot {
  background-color: var(--color-cream);
}

body.cursor-inverted #custom-cursor-ring {
  border-color: rgba(210, 202, 182, 0.5);
}

/* ==========================================================================
   5. TYPOGRAPHIC REVEAL WRAPPERS (OVERFLOW-HIDDEN LINE MASKS)
   ========================================================================== */
.editorial-line-wrap {
  display: block;
  overflow: hidden;
  vertical-align: top;
  margin: 0;
  padding: 0;
  padding-bottom: 0.08em;
  margin-bottom: -0.08em;
}

.editorial-line {
  display: block;
  transform: none;
  opacity: 1;
  will-change: transform;
}

/* Fallback visible state */
.editorial-line.is-revealed {
  transform: none;
}

/* ==========================================================================
   6. EDITORIAL IMAGE REVEALS (DIRECTIONAL CLIP-PATH)
   ========================================================================== */
.mask-reveal-wrap {
  overflow: hidden;
  position: relative;
}

.mask-reveal-img {
  will-change: clip-path, transform;
  transform-origin: center center;
}

/* ==========================================================================
   7. ANIMATED ARCHITECTURAL HAIRLINE DIVIDERS
   ========================================================================== */
.divider-animated {
  transform-origin: left center;
  transform: scaleX(0);
  will-change: transform;
}

/* ==========================================================================
   8. METRIC COUNTERS STYLING
   ========================================================================== */
.hero-metric-number,
.stat-value,
.odometer-number {
  font-variant-numeric: tabular-nums;
  will-change: contents;
}

/* ==========================================================================
   9. EDITORIAL CARDS HOVER
   ========================================================================== */
.service-card,
.blog-card,
.roster-card {
  will-change: transform, border-color;
  transition: border-color 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.service-card:hover .service-card-media img,
.blog-card:hover .blog-card-media img {
  transform: scale(1.025);
}

.service-card .service-card-media img,
.blog-card .blog-card-media img {
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}

/* ==========================================================================
   10. MAGNETIC BUTTON INTERACTION
   ========================================================================== */
.magnetic-wrap {
  display: inline-block;
  will-change: transform;
}

/* ==========================================================================
   11. PREFERS-REDUCED-MOTION STRICT ACCESSIBILITY
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  #page-curtain,
  #scroll-progress,
  #custom-cursor-dot,
  #custom-cursor-ring {
    display: none !important;
  }

  .editorial-line {
    transform: none !important;
    opacity: 1 !important;
  }

  .mask-reveal-img {
    clip-path: none !important;
    transform: none !important;
  }

  .divider-animated {
    transform: scaleX(1) !important;
  }

  .service-card,
  .blog-card,
  .button {
    transition: none !important;
    transform: none !important;
  }
}
