/* static/css/page_hero.css */
.services-hero,
.about-hero,
.blog-hero,
.contact-hero,
.careers-hero {
  position: relative;
  overflow: hidden;
  background: var(--bg);
  padding: 11rem 0 6rem;
}


.services-hero .container,
.about-hero .container,
.blog-hero .container,
.contact-hero .container,
.careers-hero .container { position: relative; z-index: 2; }

.services-hero-content,
.about-hero-content,
.blog-hero-content,
.contact-hero-content,
.careers-hero-content {
  text-align: left;
  max-width: 880px;
  margin: 0;
}

.services-hero-content h1,
.about-hero-content h1,
.blog-hero-content h1,
.contact-hero-content h1,
.careers-hero-content h1 {
  margin: 0 0 1.1rem;
  font-size: clamp(2.4rem, 4.6vw, 3.9rem);
  font-weight: 800;
  line-height: 1.09;
  letter-spacing: -0.03em;
  color: var(--text-strong);
}

.services-hero-content h1::after,
.about-hero-content h1::after,
.blog-hero-content h1::after,
.contact-hero-content h1::after,
.careers-hero-content h1::after {
  content: "";
  display: block;
  height: 2px;
  width: min(420px, 44%);
  margin-top: 1.2rem;
  background: linear-gradient(90deg, var(--accent), rgba(220,38,38,0));
  transform: scaleX(0);
  transform-origin: left center;
  animation: hero-rule-draw 1s var(--ease-out) 0.95s both;
}

.services-hero-content > p,
.about-hero-content > p,
.blog-hero-content > p,
.contact-hero-content > p,
.careers-hero-content > p {
  margin: 0;
  max-width: 58ch;
  font-size: 1.1rem;
  line-height: 1.7;
  color: var(--text-secondary);
  animation: hero-rise 0.7s var(--ease-out) 0.8s both;
}

.page-hero-kicker {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0 0 1.9rem;
  max-width: 700px;
}

.page-hero-kicker .section-label {
  display: inline-block;
  margin: 0;
  flex: 0 0 auto;
  animation: hero-rise 0.7s var(--ease-out) 0.24s both;
}
.page-hero-kicker .section-label::after { content: none; }

.page-hero-rule {
  flex: 1 1 auto;
  min-width: 0;
  height: 1px;
  background: linear-gradient(90deg, var(--border-light), transparent);
  transform: scaleX(0);
  transform-origin: left center;
  animation: hero-rule-draw 1.15s var(--ease-out) 0.32s both;
}

@keyframes hero-rule-draw { to { transform: scaleX(1); } }
@keyframes hero-rise {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: none; }
}

.hero-line {
  display: block;
  overflow: hidden;
  padding-bottom: 0.12em;
  margin-bottom: -0.12em;
}
.hero-line > span {
  display: block;
  animation: hero-line-up 1.05s var(--ease-out) both;
}
.hero-line:nth-of-type(1) > span { animation-delay: 0.40s; }
.hero-line:nth-of-type(2) > span { animation-delay: 0.52s; }
.hero-line:nth-of-type(3) > span { animation-delay: 0.64s; }

@keyframes hero-line-up {
  from { transform: translateY(112%); }
  to   { transform: translateY(0); }
}

.bc-hero-bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}

.bc-ribbons {
  position: absolute;
  top: 50%;
  right: -8%;
  width: min(1060px, 82vw);
  height: 150%;
  transform: translateY(-50%);
  overflow: visible;
  -webkit-mask-image: linear-gradient(100deg, transparent 6%, #000 42%);
  mask-image: linear-gradient(100deg, transparent 6%, #000 42%);
}

.bc-rib {
  fill: none;
  stroke: url(#bcRib);
  stroke-linecap: round;
  filter: drop-shadow(0 0 14px rgba(220, 38, 38, 0.32));
  stroke-dasharray: 1;
  animation: bc-rib-draw 2.6s var(--ease-out) both;
}

@keyframes bc-rib-draw {
  from { stroke-dashoffset: 1; }
  to   { stroke-dashoffset: 0; }
}

.bc-rib--1 { stroke-width: 1;   opacity: 0.30; animation-delay: 0.10s; }
.bc-rib--2 { stroke-width: 1.7; opacity: 0.54; animation-delay: 0.22s; }
.bc-rib--3 { stroke-width: 1.1; opacity: 0.26; animation-delay: 0.34s; }
.bc-rib--4 { stroke-width: 2.3; opacity: 0.72; animation-delay: 0.16s; }
.bc-rib--5 { stroke-width: 1.3; opacity: 0.36; animation-delay: 0.46s; }
.bc-rib--6 { stroke-width: 1;   opacity: 0.20; animation-delay: 0.58s; }
.bc-rib--7 { stroke-width: 1.8; opacity: 0.44; animation-delay: 0.28s; }

.about-hero-dots,
.contact-hero-dots,
.careers-hero-dots,
.blog-hero-dots,
.services-hero-canvas { display: none !important; }

.bc-hexfield {
  position: absolute;
  top: 50%;
  right: -6%;
  width: min(980px, 78vw);
  height: 132%;
  transform: translateY(-50%);
  -webkit-mask-image: linear-gradient(100deg, transparent 4%, rgba(0,0,0,0.5) 34%, #000 62%);
  mask-image: linear-gradient(100deg, transparent 4%, rgba(0,0,0,0.5) 34%, #000 62%);
}

.bc-hex {
  fill: none;
  stroke: rgba(255,255,255,0.055);
  stroke-width: 1;
}

.bc-hex--lit {
  stroke: rgba(239,68,68,0.55);
  stroke-width: 1.4;
  fill: rgba(220,38,38,0.10);
  transform-box: fill-box;
  transform-origin: center;
  animation: bc-hex-claim 9s ease-in-out infinite both;
}

@keyframes bc-hex-claim {
  0%,  100% { opacity: 0;    transform: scale(0.82); }
  8%        { opacity: 1;    transform: scale(1); }
  34%       { opacity: 0.85; transform: scale(1); }
  48%       { opacity: 0;    transform: scale(1.06); }
}

.bc-hex--1 { animation-delay: 0s;    }
.bc-hex--2 { animation-delay: 0.7s;  }
.bc-hex--3 { animation-delay: 1.5s;  }
.bc-hex--4 { animation-delay: 2.2s;  }
.bc-hex--5 { animation-delay: 3.1s;  }
.bc-hex--6 { animation-delay: 3.8s;  }
.bc-hex--7 { animation-delay: 4.6s;  }
.bc-hex--8 { animation-delay: 5.4s;  }
.bc-hex--9 { animation-delay: 6.2s;  }

.bc-pagegrid {
  position: absolute;
  top: 50%;
  right: -5%;
  width: min(960px, 76vw);
  height: 128%;
  transform: translateY(-50%);
  -webkit-mask-image: linear-gradient(100deg, transparent 8%, rgba(0,0,0,0.45) 38%, #000 66%);
  mask-image: linear-gradient(100deg, transparent 8%, rgba(0,0,0,0.45) 38%, #000 66%);
}

.bc-pg-rules line {
  stroke: rgba(255,255,255,0.07);
  stroke-width: 1;
}

.bc-pg-figs rect {
  fill: rgba(255,255,255,0.016);
  stroke: rgba(255,255,255,0.07);
  stroke-width: 1;
}

.bc-pg-text rect { fill: rgba(255,255,255,0.062); }
.bc-pg-text .bc-pg-head { fill: rgba(255,255,255,0.13); }

/* the read-through: one band travels the page, clipped to the copy, so the
   lines themselves light as they are parsed */
.bc-pg-band { animation: bc-pg-read 11s linear infinite both; }

@keyframes bc-pg-read {
  0%   { transform: translateY(-260px); }
  64%  { transform: translateY(760px); }
  100% { transform: translateY(760px); }
}

.bc-pg-flag {
  fill: var(--accent-ink);
  animation: bc-pg-flag-pulse 4.4s ease-in-out infinite both;
}

@keyframes bc-pg-flag-pulse {
  0%, 100% { opacity: 0.20; }
  50%      { opacity: 0.60; }
}

.bc-pg-flag--1 { animation-delay: 0s;   }
.bc-pg-flag--2 { animation-delay: 0.9s; }
.bc-pg-flag--3 { animation-delay: 1.8s; }
.bc-pg-flag--4 { animation-delay: 2.6s; }

/* annotation frames land just behind the sweep, hold, then release */
.bc-pg-note {
  fill: rgba(220,38,38,0.05);
  stroke: rgba(239,68,68,0.5);
  stroke-width: 1.2;
  transform-box: fill-box;
  transform-origin: center;
  animation: bc-pg-note-mark 11s var(--ease-out) infinite both;
}

@keyframes bc-pg-note-mark {
  0%   { opacity: 0; transform: scale(0.985); }
  3%   { opacity: 1; transform: scale(1); }
  26%  { opacity: 1; transform: scale(1); }
  34%  { opacity: 0; transform: scale(1); }
  100% { opacity: 0; transform: scale(1); }
}

.bc-pg-note--1 { animation-delay: 2.6s; }
.bc-pg-note--2 { animation-delay: 3.93s; }

@media (max-width: 1024px) {
  .services-hero,
  .about-hero,
  .blog-hero,
  .contact-hero,
  .careers-hero { padding: 9.5rem 0 4.5rem; }
  .bc-ribbons,
  .bc-hexfield,
  .bc-pagegrid { opacity: 0.55; }
}

@media (max-width: 768px) {
  .services-hero-content h1,
  .about-hero-content h1,
  .blog-hero-content h1,
  .contact-hero-content h1,
  .careers-hero-content h1 { font-size: 2.35rem; }

  .hero-line,
  .hero-line > span {
    display: inline;
    overflow: visible;
    animation: none;
    transform: none;
    padding-bottom: 0;
    margin-bottom: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-hero-kicker .section-label,
  .page-hero-rule,
  .hero-line > span,
  .services-hero-content h1::after,
  .about-hero-content h1::after,
  .blog-hero-content h1::after,
  .contact-hero-content h1::after,
  .careers-hero-content h1::after,
  .services-hero-content > p,
  .about-hero-content > p,
  .blog-hero-content > p,
  .contact-hero-content > p,
  .careers-hero-content > p,
  .bc-rib,
  .bc-hex--lit,
  .bc-pg-band,
  .bc-pg-flag,
  .bc-pg-note { animation: none !important; transform: none; }
  .bc-rib { opacity: 1; stroke-dasharray: none; }
  .bc-pg-band { opacity: 0; }
  .bc-pg-flag { opacity: 0.45; }
  .bc-pg-note { opacity: 0.55; }
}
