/* artthi.studio — Studio Template Design System */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700&family=Inter:wght@400;500;600;700;800&display=swap');

/* ─── Text balance ────────────────────────── */
.text-balance { text-wrap: balance; }

/* ─── Mask gradients for SVG patterns ─────── */
.mask-gradient {
  -webkit-mask-image: linear-gradient(to bottom left, white 40%, transparent 50%);
  mask-image: linear-gradient(to bottom left, white 40%, transparent 50%);
}
.mask-gradient-wide {
  -webkit-mask-image: linear-gradient(to bottom left, white 50%, transparent 60%);
  mask-image: linear-gradient(to bottom left, white 50%, transparent 60%);
}

/* ─── Fade-in on scroll (Framer Motion replica) ── */
.fade-in {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.fade-in.is-visible {
  opacity: 1;
  transform: none;
}

/* Stagger container — children animate sequentially */
.fade-in-stagger > .fade-in {
  transition-delay: calc(var(--stagger-index, 0) * 0.1s);
}
.fade-in-stagger[data-stagger-faster] > .fade-in {
  transition-delay: calc(var(--stagger-index, 0) * 0.04s);
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  .fade-in {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* ─── Separator line (horizontal) ─────────── */
.separator-line {
  position: relative;
}
.separator-line::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: 1px;
  width: 1.5rem;
  background: rgb(10 10 10);
}
.separator-line::after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  left: 2rem;
  height: 1px;
  background: rgb(10 10 10 / 0.1);
}
.separator-line-first {
  padding-top: 0 !important;
}
.separator-line-first::before,
.separator-line-first::after {
  display: none;
}

/* ─── Separator line (vertical) ───────────── */
.separator-vertical {
  position: relative;
  padding-left: 2rem;
}
.separator-vertical::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: 1.5rem;
  width: 1px;
  background: rgb(10 10 10);
}
.separator-vertical::after {
  content: '';
  position: absolute;
  top: 2rem;
  bottom: 0;
  left: 0;
  width: 1px;
  background: rgb(10 10 10 / 0.1);
}

/* ─── Process counter ─────────────────────── */
.counter-reset { counter-reset: section; }
.counter-section { counter-increment: section; }
.counter-display::before {
  content: '/';
  color: rgb(10 10 10);
}
.counter-display::after {
  content: counter(section, decimal-leading-zero);
  color: rgb(10 10 10);
}

/* ─── Blockquote smart quotes ─────────────── */
.smart-quote::before { content: '\201C'; }
.smart-quote::after { content: '\201D'; }

/* ─── Image hover in SVG clip ─────────────── */
.img-clip-hover {
  transform: scale(1);
  transform-origin: center;
  transition: transform 500ms ease;
}
.group:hover .img-clip-hover {
  transform: scale(1.05);
}

/* ─── Mobile nav transition ───────────────── */
#mobile-nav {
  transition: height 0.5s cubic-bezier(0.16, 1, 0.3, 1);
  overflow: hidden;
}
