/**
 * Hero
 */

/* ==================== ANIMATIONS ==================== */

@keyframes heroFadeUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ==================== HERO ==================== */

.hero {
  position: relative;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: var(--grid-bg);
  background-size: var(--grid-size);
}


/* ==================== STAGGERED ENTRANCE ==================== */

.hero__pill-wrapper,
.hero__title,
.hero__subtitle,
.hero__cta {
  opacity: 0;
  animation: heroFadeUp 0.7s ease-out forwards;
}

.hero__pill-wrapper { animation-delay: 0.1s; }
.hero__title        { animation-delay: 0.25s; }
.hero__subtitle     { animation-delay: 0.4s; }
.hero__cta          { animation-delay: 0.55s; }

/* ==================== GEOMETRIC DECOR ==================== */

.hero__decor {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 1;
}

/* Orange fill block — top right */
.hero__decor-fill {
  position: absolute;
  right: -60px;
  top: -80px;
  width: 320px;
  height: 320px;
  background: var(--color-accent);
  opacity: 0.07;
  transform: rotate(12deg);
}

/* Dark outline block — bottom right */
.hero__decor-outline {
  position: absolute;
  right: 48px;
  bottom: -32px;
  width: 150px;
  height: 150px;
  border: 2px solid var(--color-navy);
  opacity: 0.09;
  transform: rotate(18deg);
}

/* Dot grid — right center */
.hero__decor-dots {
  position: absolute;
  right: 15%;
  top: 38%;
  width: 190px;
  height: 130px;
  background-image: radial-gradient(circle, var(--color-navy) 2px, transparent 2px);
  background-size: 24px 24px;
  opacity: 0.10;
}

/* Vertical accent line */
.hero__decor-vline {
  position: absolute;
  left: 60%;
  top: 8%;
  width: 2px;
  height: 72%;
  background: var(--color-accent);
  opacity: 0.14;
}

/* Large brackets */
.hero__decor-bracket {
  position: absolute;
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: 110px;
  line-height: 1;
}

.hero__decor-bracket--left {
  left: 60.5%;
  bottom: 6%;
  color: var(--color-accent);
  opacity: 0.07;
}

.hero__decor-bracket--right {
  right: 3%;
  top: 35%;
  color: var(--color-navy);
  opacity: 0.05;
}

/* ==================== CONTENT ==================== */

.hero__content {
  position: relative;
  z-index: 10;
  width: 100%;
  max-width: var(--container-max);
  margin: 0 auto;
  padding: var(--space-20) var(--container-px);
}

.hero__pill-wrapper {
  margin-bottom: var(--space-8);
}

.hero__pill {
  display: inline-block;
  padding: var(--space-3) var(--space-6);
  background: var(--color-bg-white);
  border: 2px solid var(--color-navy);
  font-family: var(--font-body);
  font-weight: 700;
  font-size: var(--font-size-xs);
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--color-text-primary);
}

.hero__title {
  font-family: var(--font-heading);
  font-weight: 900;
  font-size: var(--font-size-7xl);
  color: var(--color-text-primary);
  line-height: 1.1;
  margin-bottom: var(--space-6);
  max-width: 900px;
}

.hero__subtitle {
  font-family: var(--font-body);
  font-size: var(--font-size-lg);
  color: var(--color-text-secondary);
  margin-bottom: var(--space-10);
  max-width: 640px;
  line-height: 1.65;
}

/* ==================== ACCESSIBILITY ==================== */

@media (prefers-reduced-motion: reduce) {
  .hero__pill-wrapper,
  .hero__title,
  .hero__subtitle,
  .hero__cta {
    opacity: 1;
    animation: none;
  }
}

/* ==================== RESPONSIVE ==================== */

@media (max-width: 767px) {
  .hero__content {
    padding-top: clamp(56px, 8vw, 60px);
    padding-bottom: clamp(56px, 8vw, 60px);
  }

  .hero__title {
    line-height: 1.18;
  }

  .hero__title .highlight-block {
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
    padding: 0 0.14em 0.04em;
    background-position: 0 82%;
    background-size: 100% 70%;
  }

  .hero__decor-dots,
  .hero__decor-outline,
  .hero__decor-vline,
  .hero__decor-bracket {
    display: none;
  }

  .hero__decor-fill {
    opacity: 0.04;
  }
}

@media (min-width: 1024px) {
  .hero__content {
    padding-left: var(--container-px-lg);
    padding-right: var(--container-px-lg);
  }

  .hero__subtitle {
    font-size: var(--font-size-xl);
  }
}
