/* =====================================================
   STUDIO — Cleaned & Organized CSS
   Notes:
   - Removed dead rules: .case-frame, .case-img, .parallax-layer,
     @keyframes drift1, @keyframes drift2 (not used in markup).
   - Added a tiny .parallax-img rule that your HTML actually uses.
   - Kept all interactive bits you rely on (scroll rail, accordions,
     marquee, header sticky, etc.).
   - Grouped by purpose/section. Mobile tweaks at the bottom.
   ===================================================== */

/* =========================
   1) Base / Resets
   ========================= */
::-webkit-scrollbar {
  display: none;
}

html,
body {
  height: 100%;
}
body {
  background: #0b0b0f; /* dark-base */
  overflow-x: hidden;
}

/* =========================
      2) Background Layers
      ========================= */
.noise-bg {
  background-image: linear-gradient(
      180deg,
      rgba(17, 18, 23, 0) 0%,
      rgba(17, 18, 23, 0.4) 100%
    ),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.03'/%3E%3C/svg%3E");
}

.grid-pattern {
  background-image: linear-gradient(rgba(36, 39, 51, 0.4) 1px, transparent 1px),
    linear-gradient(90deg, rgba(36, 39, 51, 0.4) 1px, transparent 1px);
  background-size: 8px 8px;
}

/* fancy diagonal glints */
/* .diagonal-line-1,
.diagonal-line-2 {
  position: absolute;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(212, 175, 55, 0.4),
    transparent
  );
  animation: moveDiagonal 8s ease-in-out infinite;
}
.diagonal-line-1 {
  top: 20%;
  left: -300px;
  transform: rotate(-15deg);
  width: 600px;
}
.diagonal-line-2 {
  width: 400px;
  top: 70%;
  right: 100px;
  transform: rotate(15deg);
  animation-delay: 2s;
}
@keyframes moveDiagonal {
  0%,
  100% {
    transform: translateX(0) rotate(-15deg);
    opacity: 0.3;
  }
  50% {
    transform: translateX(100px) rotate(-15deg);
    opacity: 0.6;
  }
}
@media (prefers-reduced-motion: reduce) {
  .diagonal-line-1,
  .diagonal-line-2 {
    animation: none;
  }
} */

/* Register animatable custom prop for compositor-friendly transform */
/* Base */
.diagonal{
    position:fixed; pointer-events:none; z-index:1;
    height:1px; width:600px;
    background:linear-gradient(90deg,transparent,rgba(195,163,92,.4),transparent);
    will-change:transform;
    /* Use individual transform properties when available */
    rotate: var(--rot, -15deg);
    translate: 0 0;
  }
  
  /* Placement */
  .diagonal--1{ top:20%; left:-300px; width:600px; --rot:-15deg; }
  .diagonal--2{ top:70%; right:100px; width:400px; --rot:15deg; }
  
  /* =========================
     DESKTOP: continuous ping-pong
     ========================= */
  @media (min-width:769px){
    /* If 'translate' property is supported (modern) */
    @supports (translate: 1px){
      .diagonal{ animation: diag-move 8s ease-in-out infinite alternate; }
      @keyframes diag-move{ to{ translate: 100px 0; } }
    }
    /* Fallback: animate full transform (keeps rotate constant) */
    @supports not (translate: 1px){
      .diagonal{ animation: diag-move-tf 8s ease-in-out infinite alternate; }
      @keyframes diag-move-tf{
        to{ transform: translateX(100px) rotate(var(--rot, -15deg)); }
      }
    }
  }
  
  /* =========================
     MOBILE: scroll-linked if supported
     ========================= */
  @media (max-width:768px){
    /* baseline (static); JS or CSS Scroll-Linked Animations will override */
    .diagonal{ animation:none; opacity:.35; }
  }
  
  @supports (animation-timeline: scroll()){
    @media (max-width:768px){
      @scroll-timeline docScroll{ source:auto; axis:block; }
      /* Modern mobile: the line moves only while you scroll */
      .diagonal{
        animation: diag-scroll 1s linear both;
        animation-timeline: docScroll;
        animation-range: 0% 100%;
      }
      /* If 'translate' is supported (it is on modern Chrome/Safari), use it */
      @supports (translate: 1px){
        @keyframes diag-scroll{ to{ translate: 80px 0; } }
      }
      /* Else fallback to transform */
      @supports not (translate: 1px){
        @keyframes diag-scroll{ to{ transform: translateX(80px) rotate(var(--rot, -15deg)); } }
      }
    }
  }
  
  /* Respect reduced motion */
  @media (prefers-reduced-motion: reduce){
    .diagonal{ animation:none !important; }
  }
  
  

/* =========================
      3) Progress Rail (scroll)
      ========================= */
.progress-rail {
  position: fixed;
  left: 0;
  top: 0;
  width: 4px;
  height: 100vh;
  background: rgba(36, 39, 51, 0.6); /* track */
  z-index: 60; /* header is z-50 */
  pointer-events: none;
}
.progress-rail-fill {
  width: 100%;
  height: 0%;
  background: linear-gradient(180deg, #c3a35c, rgba(195, 163, 92, 0.35));
  will-change: width, height, transform;
}

/* =========================
      4) Section Markers & Labels
      ========================= */
.section-number {
  font-family: "Space Grotesk", sans-serif;
  font-size: 180px;
  font-weight: 700;
  line-height: 1;
  color: transparent;
  -webkit-text-stroke: 1px rgba(195, 163, 92, 0.15);
  position: absolute;
  top: -60px;
  right: 0;
  z-index: 0;
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.section-number.active {
  transform: translateY(-10px);
}

.label-pill {
  display: inline-block;
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 6px 12px;
  border: 1px solid rgba(36, 39, 51, 1);
  background: rgba(17, 18, 23, 0.6);
  color: #c7cbd1;
  transition: all 0.3s ease;
}

.label-pill.is-active {
  background: rgba(195, 163, 92, 0.12);
  border-color: rgba(195, 163, 92, 0.55);
  color: #f3f4f6;
  /* all glow inside the border */
  box-shadow: inset 0 0 0 1px rgba(195, 163, 92, 0.55),
    inset 0 0 16px rgba(195, 163, 92, 0.18);
  transform: translateY(-1px);
}

.label-pill:hover {
  background: rgba(195, 163, 92, 0.1);
  border-color: rgba(195, 163, 92, 0.3);
}

.hairline-rule {
  height: 1px;
  background: #242733; /* hairline */
  position: relative;
  overflow: hidden;
}
.hairline-rule::after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 0;
  height: 1.5px;
  background: #c3a35c;
  transition: width 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.hairline-rule.active::after {
  width: 100%;
}

/* =========================
      5) Header (sticky state)
      ========================= */
.header-sticky {
  transition: all 0.3s ease;
}
.header-sticky.scrolled {
  background: rgba(17, 18, 23, 0.95);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid #242733;
  padding-top: 16px;
  padding-bottom: 16px;
}

/* =========================
      6) Hero micro-animations
      ========================= */
.fade-in-up {
  opacity: 0;
  transform: translateY(30px);
  animation: fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes fadeInUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.stagger-1 {
  animation-delay: 0.1s;
}
.stagger-2 {
  animation-delay: 0.2s;
}
.stagger-3 {
  animation-delay: 0.3s;
}
.stagger-4 {
  animation-delay: 0.4s;
}

.underline-animate {
  position: relative;
  display: inline-block;
}
.underline-animate::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 0;
  height: 2px;
  background: #c3a35c;
  animation: underlineGrow 1.2s cubic-bezier(0.16, 1, 0.3, 1) 0.5s forwards;
}
@keyframes underlineGrow {
  to {
    width: 100%;
  }
}

/* =========================
      7) Outcomes (cards)
      ========================= */
.outcome-card {
  border: 1px solid #242733;
  background: rgba(17, 18, 23, 0.6);
  transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  position: relative;
  overflow: hidden;
}
.outcome-card::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 0;
  height: 2px;
  background: #c3a35c;
  transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.outcome-card:hover::after {
  width: 100%;
}
.outcome-card:hover h3 {
  transform: translateY(1px);
}

/* =========================
      8) Services list
      ========================= */
.service-block {
  border-bottom: 1px solid #242733;
  padding: 48px 0;
  transition: all 0.4s ease;
}
/* base stays as you have it */
.mini-index {
  display: inline-block;
  font-family: "IBM Plex Mono", monospace;
  font-size: 13px;
  padding: 4px 12px;
  border: 1px solid #242733;
  background: transparent;
  color: #c7cbd1;
  transition: all 0.3s ease;
  position: relative; /* needed for ::after */
}

/* active state — keeps light inside the border */
.mini-index.is-active {
  color: #f3f4f6;
  border-color: rgba(195, 163, 92, 0.55);
}

.mini-index.is-active::after {
  content: "";
  position: absolute;
  inset: 1px; /* stay inside the 1px border */
  border-radius: inherit;
  background: rgba(195, 163, 92, 0.08);
  box-shadow: inset 0 0 0 1px rgba(195, 163, 92, 0.55),
    inset 0 0 12px rgba(195, 163, 92, 0.18);
  pointer-events: none;
}
.service-top-rule {
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 2px;
  background: #c3a35c;
  transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.service-block:hover .mini-index {
  background: #c3a35c;
  color: #0b0b0f;
  border-color: #c3a35c;
}
.service-block:hover .service-top-rule {
  width: 100%;
}

/* =========================
      9) Case section (parallax img)
      ========================= */
.parallax-img {
  will-change: transform;
  pointer-events: none;
  display: block;
}

#sigmadent-frames {
  position: relative;
  overflow: hidden;
  --dx-laptop: 80px;
  --dx-phone: -102px;
}
#sigmadent-frames .parallax-img {
  top: 0; /* anchor to container top; we’ll drive Y via transform only */
  will-change: transform;
  transform: translate3d(-50%, 0, 0);
}
@media (prefers-reduced-motion: reduce) {
  #sigmadent-frames .parallax-item {
    transform: translate3d(calc(-50% + var(--dx, 0px)), 0, 0) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  #sigmadent-frames .parallax-img {
    transform: translate3d(-50%, 0, 0) !important;
  }
}

#sigmadent-frames .parallax-item {
  top: 0;
  pointer-events: none;
  will-change: transform;
  transform: translate3d(calc(-50% + var(--dx, 0px)), 0, 0);
}

/* Below 480px: different offsets */
@media (max-width: 1024px) {
  #sigmadent-frames {
    --dx-laptop: 65px; /* set what you actually want here */
    --dx-phone: -235px; /* and here */
  }
}

@media (max-width: 680px) {
  #sigmadent-frames {
    --dx-laptop: 65px; /* set what you actually want here */
    --dx-phone: -154px; /* and here */
  }
}

/* Below 480px: different offsets */
@media (max-width: 630px) {
  #sigmadent-frames {
    --dx-laptop: 65px; /* set what you actually want here */
    --dx-phone: -104px; /* and here */
  }
}
/* Below 480px: different offsets */
@media (max-width: 503px) {
  #sigmadent-frames {
    --dx-laptop: 25px; /* set what you actually want here */
    --dx-phone: -105px; /* and here */
  }
}

/* =========================
      10) Process timeline
      ========================= */
.process-step {
  position: relative;
  padding-left: 48px;
}
.process-step::before {
  content: "";
  position: absolute;
  left: 16px;
  top: 32px;
  width: 1px;
  height: 0;
  background: #242733;
  transition: height 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.process-step.active::before {
  height: calc(100% + 48px);
}
.process-step .step-icon {
  width: 32px;
  height: 32px;
  border: 1px solid #242733;
  background: rgba(17, 18, 23, 0.8);
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  left: 0;
  top: 16px;
  transition: all 0.3s ease;
}
.process-step.active .step-icon {
  background: #c3a35c;
  border-color: #c3a35c;
  color: #0b0b0f;
}

/* =========================
      11) Guarantees
      ========================= */
.guarantee-marker {
  width: 8px;
  height: 8px;
  background: #c3a35c;
  display: inline-block;
  margin-right: 12px;
}

/* =========================
      12) FAQ / Accordion
      ========================= */
.accordion-header {
  cursor: pointer;
  position: relative;
  padding-right: 48px;
}
.accordion-toggle {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 24px;
  height: 24px;
}
.accordion-toggle::before,
.accordion-toggle::after {
  content: "";
  position: absolute;
  background: #c7cbd1;
  transition: all 0.3s ease;
}
.accordion-toggle::before {
  left: 50%;
  top: 0;
  width: 1px;
  height: 24px;
  transform: translateX(-50%);
}
.accordion-toggle::after {
  left: 0;
  top: 50%;
  width: 24px;
  height: 1px;
  transform: translateY(-50%);
}
.accordion-header.open .accordion-toggle::before {
  transform: translateX(-50%) rotate(90deg);
  opacity: 0;
}

.accordion-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
.accordion-body.open {
  max-height: 500px;
}

/* =========================
      13) CTA underline
      ========================= */
.cta-underline {
  position: absolute;
  left: 0;
  bottom: -8px;
  width: 0;
  height: 2px;
  background: #c3a35c;
  transition: width 1s cubic-bezier(0.16, 1, 0.3, 1);
}
.cta-underline.active {
  width: 100%;
}

/* =========================
      14) Tech marquee
      ========================= */

.tech-marquee:hover .marquee {
  animation-play-state: paused;
}
.tech-marquee .marquee {
  animation: tech-marquee var(--marquee-duration, 15s) linear infinite alternate;
}
/* keep your existing keyframes */
@keyframes tech-marquee {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%);
  } /* one row width */
}
@media (prefers-reduced-motion: reduce) {
  .tech-marquee .marquee {
    animation: none;
    transform: none;
  }
}

/* =========================
      15) Responsive tweaks
      ========================= */
@media (max-width: 768px) {
  .section-number {
    font-size: 120px;
    top: -40px;
  }

  .progress-rail {
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    width: 100vw;
    height: 4px;
    background: rgba(36, 39, 51, 0.6);
  }
  .progress-rail-fill {
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, #c3a35c, rgba(195, 163, 92, 0.35));
  }

  /* If you prefer the rail on the RIGHT on mobile: */
  .progress-rail[data-mobile="right"] {
    top: 0;
    bottom: 0;
    right: 0;
    left: auto;
    width: 4px;
    height: 100vh;
  }
  .progress-rail[data-mobile="right"] .progress-rail-fill {
    width: 100%;
    height: 0%;
    background: linear-gradient(180deg, #c3a35c, rgba(195, 163, 92, 0.35));
  }

  /* OPTIONAL: Hide native scrollbar on mobile */
  html {
    scrollbar-width: none;
  } /* Firefox */
  body {
    -ms-overflow-style: none;
  } /* old IE/Edge */
  body::-webkit-scrollbar {
    display: none;
  } /* Chrome/Safari */

  /* .diagonal-line-2 {
    width: 400px;
    top: 80%;
    right: 110px;
    transform: rotate(15deg);
    animation-delay: 2s;
  } */
}

.social-btn {
  position: relative;
  transition: transform 0.25s ease, border-color 0.2s, color 0.2s;
}
.social-btn.run-away {
  transform: translate(var(--x, 0), var(--y, 0)) rotate(var(--r, 0));
}
#social-msg {
  text-align: left;
}
