/* ==========================================================================
   Home page — hero, stats, fleet scrub, about, gallery, service area
   ========================================================================== */

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden}
.hero-media{position:absolute;inset:0}
.hero-media video,.hero-media img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;
}
.hero-fallback{
  position:absolute;inset:0;
  background:
    radial-gradient(ellipse 80% 60% at 70% 20%,rgba(69,182,230,.16),transparent 60%),
    radial-gradient(ellipse 60% 50% at 20% 90%,rgba(29,128,184,.12),transparent 60%),
    linear-gradient(180deg,#0a1016 0%,#070a0d 100%);
}
.hero-grid{
  position:absolute;inset:0;
  background-image:
    linear-gradient(var(--line) 1px,transparent 1px),
    linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,black 30%,transparent 75%);
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,black 30%,transparent 75%);
  animation:gridDrift 24s linear infinite;
}
@keyframes gridDrift{to{background-position:64px 64px}}

/* Two stacked shades. The lower one is a hard scrim behind the copy so the
   body text stays legible no matter which video frame is on screen. */
.hero-shade{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(7,10,13,.62) 0%,
    rgba(7,10,13,.28) 34%,
    rgba(7,10,13,.72) 72%,
    rgba(7,10,13,.96) 100%);
}
.hero-scrim{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(100deg,
    rgba(7,10,13,.82) 0%,
    rgba(7,10,13,.55) 42%,
    transparent 72%);
}

.hero-inner{
  position:relative;z-index:3;width:100%;
  padding:calc(var(--nav-h) + 40px) var(--gutter)
          calc(clamp(72px,9vh,120px) + var(--callbar-h));
  max-width:var(--maxw);margin-inline:auto;
}
.hero-tag{
  display:inline-flex;align-items:center;gap:10px;
  border:1px solid var(--line-strong);background:rgba(13,18,23,.6);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  padding:9px 18px;border-radius:100px;font-size:.72rem;font-weight:700;
  letter-spacing:.22em;text-transform:uppercase;color:var(--blue);margin-bottom:28px;
}
.hero-tag .dot{
  width:7px;height:7px;border-radius:50%;background:var(--blue);
  box-shadow:0 0 12px var(--blue);animation:pulse 2s infinite;flex:none;
}
@keyframes pulse{50%{opacity:.35}}

.hero h1 .line{display:block;overflow:hidden}
.hero h1 .line span{
  display:inline-block;transform:translateY(110%);
  animation:rise 1s var(--ease-out-quart) forwards;
}
.hero h1 .line:nth-child(2) span{animation-delay:.12s}
.hero h1 .blue{text-shadow:0 0 60px var(--blue-glow)}
@keyframes rise{to{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){
  .hero h1 .line span{transform:none;animation:none}
  .hero-grid{animation:none}
}

.hero-sub{
  max-width:56ch;color:#c3ced9;font-size:var(--text-lead);
  line-height:1.7;margin:26px 0 38px;
}
.hero-sub strong{color:var(--white);font-weight:600}
.hero-ctas{display:flex;gap:18px;flex-wrap:wrap}

.hero-scroll{
  position:absolute;right:var(--gutter);bottom:9vh;z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:14px;
  color:var(--grey);font-size:.62rem;letter-spacing:.34em;
  text-transform:uppercase;writing-mode:vertical-rl;
}
.hero-scroll .bar{width:1px;height:64px;background:var(--line);position:relative;overflow:hidden}
.hero-scroll .bar::after{
  content:'';position:absolute;top:-40%;left:0;width:100%;height:40%;
  background:var(--blue);animation:drop 1.8s ease-in-out infinite;
}
@keyframes drop{to{top:110%}}

/* ---------- stats ---------- */
.stats-section{padding-block:clamp(3.5rem,6vw,5.5rem)}
.stats{
  display:grid;grid-template-columns:repeat(4,1fr);
  max-width:var(--maxw);margin:0 auto;
  border:1px solid var(--line);background:var(--carbon);
}
.stat{padding:44px 30px;border-right:1px solid var(--line);position:relative;overflow:hidden}
.stat:last-child{border-right:none}
.stat::before{
  content:'';position:absolute;top:0;left:0;width:100%;height:3px;
  background:linear-gradient(90deg,var(--blue),transparent);
  opacity:0;transition:opacity var(--duration-normal);
}
.stat:hover::before{opacity:1}
.stat-num{
  font-family:var(--font-display);font-size:clamp(2.6rem,1.6rem + 2.6vw,4rem);
  color:var(--blue);line-height:1;
}
.stat-label{
  margin-top:12px;font-size:.78rem;font-weight:600;letter-spacing:var(--track-mid);
  text-transform:uppercase;color:var(--grey);
}

/* ---------- fleet: scroll-scrubbed machine showcase ---------- */
.fleet{padding:0}
.fleet-sticky{position:relative;height:420vh}
.fleet-stage{
  position:sticky;top:0;height:100svh;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.fleet-video-wrap{position:absolute;inset:0;background:var(--carbon)}
.fleet-video-wrap video{width:100%;height:100%;object-fit:cover}
.fleet-video-shade{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(7,10,13,.78) 0%,rgba(7,10,13,.12) 35%,
    rgba(7,10,13,.12) 58%,rgba(7,10,13,.9) 100%);
}
.fleet-head{
  position:absolute;top:0;left:0;right:0;
  padding:calc(var(--nav-h) + 30px) var(--gutter) 0;z-index:3;pointer-events:none;
}
.fleet-progress{position:absolute;left:var(--gutter);bottom:8vh;z-index:3;display:flex;gap:10px}
.fleet-progress .seg{width:52px;height:3px;background:rgba(255,255,255,.16);overflow:hidden}
.fleet-progress .seg i{display:block;height:100%;width:0;background:var(--blue)}
.fleet-caption{
  position:absolute;right:var(--gutter);bottom:8vh;z-index:3;
  text-align:right;max-width:480px;
}
.fleet-caption .machine-name{
  font-family:var(--font-display);font-size:clamp(2rem,1.2rem + 3vw,3.6rem);
  text-transform:uppercase;color:var(--white);line-height:1;
  transition:opacity .35s,transform .35s;
}
.fleet-caption .machine-spec{
  margin-top:10px;color:var(--blue);font-size:.78rem;font-weight:700;
  letter-spacing:.24em;text-transform:uppercase;transition:opacity .35s;
}
.fleet-caption.switching .machine-name{opacity:0;transform:translateY(14px)}
.fleet-caption.switching .machine-spec{opacity:0}
.fleet-hint{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:3;
  color:rgba(255,255,255,.55);font-size:.7rem;letter-spacing:.3em;
  text-transform:uppercase;border:1px solid var(--line-strong);padding:14px 26px;
  border-radius:100px;backdrop-filter:blur(6px);background:rgba(7,10,13,.35);
  transition:opacity var(--duration-slow);pointer-events:none;
}
.fleet-hint.gone{opacity:0}

/* photo scrub — the default presentation until a fleet video is supplied */
.fleet-stills{position:absolute;inset:0;overflow:hidden;background:var(--black)}
.fleet-slide{position:absolute;inset:0;opacity:0;will-change:opacity,transform}
.fleet-slide img{width:100%;height:100%;object-fit:cover}
.fleet-stills .fleet-video-shade{z-index:3}

/* ---------- about ---------- */
.about{background:var(--carbon);border-block:1px solid var(--line)}
.about-wrap{
  display:grid;grid-template-columns:1.05fr .95fr;gap:70px;
  max-width:var(--maxw);margin:0 auto;align-items:center;
}
.about-media{position:relative}
.about-media .frame{
  aspect-ratio:4/5;background:var(--steel);border:1px solid var(--line);
  position:relative;overflow:hidden;
}
.about-media .frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.about-media::before{
  content:'';position:absolute;top:24px;left:-24px;right:24px;bottom:-24px;
  border:1px solid var(--blue-deep);z-index:-1;opacity:.5;
}
.about-badge{
  position:absolute;bottom:-28px;right:-14px;background:var(--blue);color:var(--black);
  padding:22px 28px;clip-path:var(--cut);
}
.about-badge .ab-num{font-family:var(--font-display);font-size:2.2rem;line-height:1}
.about-badge .ab-label{
  font-size:.62rem;font-weight:800;letter-spacing:var(--track-mid);
  text-transform:uppercase;margin-top:4px;
}
.about-copy p{color:var(--grey);line-height:1.8;margin-bottom:20px;font-size:var(--text-lead)}
.about-copy p strong{color:var(--white);font-weight:600}

/* ---------- gallery ----------
   Editorial rhythm, not a uniform card grid: two tiles carry extra weight. */
/* Rows are sized by the ordinary 4:3 tiles; the feature tiles stretch to fill
   the area they span. Do NOT put grid-auto-rows:1fr here — with no fixed grid
   height that resolves to max-content and the feature tile blows out. */
.gallery-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:18px;
  max-width:var(--maxw);margin:0 auto;
}
.g-item{
  aspect-ratio:4/3;background:var(--steel);border:1px solid var(--line);
  position:relative;overflow:hidden;cursor:zoom-in;display:block;width:100%;padding:0;
}
.g-item:nth-child(1){grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
/* Double-width banner: 8/3 matches two 4:3 tiles plus the gap, so the row
   stays the same height as its single-column neighbour. */
.g-item:nth-child(6){grid-column:span 2;aspect-ratio:8/3}
.g-item img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .7s var(--ease-out-quart),filter var(--duration-slow);
}
.g-item:hover img,.g-item:focus-visible img{transform:scale(1.07)}
.g-cap{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:40px 22px 18px;text-align:left;
  background:linear-gradient(transparent,rgba(7,10,13,.92));
  font-size:.74rem;font-weight:700;letter-spacing:var(--track-mid);
  text-transform:uppercase;opacity:0;transform:translateY(10px);
  transition:opacity var(--duration-normal),transform var(--duration-normal);
}
.g-item:hover .g-cap,.g-item:focus-visible .g-cap{opacity:1;transform:none}
/* touch devices never hover — show the caption permanently instead */
@media(hover:none){
  .g-cap{opacity:1;transform:none}
}

/* ---------- service area ---------- */
.area{background:var(--carbon);border-block:1px solid var(--line)}
.area-wrap{
  display:grid;grid-template-columns:1fr 1fr;gap:70px;
  max-width:var(--maxw);margin:0 auto;align-items:center;
}
.area-wrap > div > p{color:var(--grey);margin-top:22px;line-height:1.75;max-width:52ch}
.area-list{display:grid;grid-template-columns:1fr 1fr}
.area-item{
  display:flex;align-items:center;gap:14px;padding:16px 0;
  border-bottom:1px solid var(--line);font-size:.95rem;font-weight:500;
  color:var(--grey);transition:color var(--duration-fast),padding-left var(--duration-fast);
}
.area-item:hover{color:var(--white);padding-left:8px}
.area-item svg{width:15px;height:15px;color:var(--blue);flex:none}
.area-note{
  margin-top:28px;display:flex;align-items:center;gap:14px;color:var(--blue);
  font-size:.8rem;font-weight:700;letter-spacing:var(--track-mid);text-transform:uppercase;
}
.area-note svg{width:20px;height:20px;flex:none}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media(max-width:980px){
  .about-wrap,.area-wrap{grid-template-columns:1fr;gap:50px}
  .stats{grid-template-columns:1fr 1fr}
  .stat:nth-child(2){border-right:none}
  .stat{border-bottom:1px solid var(--line)}
  .gallery-grid{grid-template-columns:1fr 1fr}
  .g-item:nth-child(1){grid-column:span 2;grid-row:auto;aspect-ratio:16/10}
  .g-item:nth-child(6){grid-column:span 2;aspect-ratio:16/10;min-height:0}
}
@media(max-width:680px){
  .hero-inner{
    padding-top:calc(var(--nav-h) + 24px);
    padding-bottom:calc(clamp(40px,5vh,64px) + var(--callbar-h));
  }
  .hero-tag{margin-bottom:16px;padding:7px 14px;font-size:.62rem;letter-spacing:.16em}
  .hero-sub{margin:16px 0 24px;line-height:1.6}
  .hero-ctas{gap:10px}
  .hero-ctas .btn{flex:1 1 100%}
  .hero-scroll{display:none}

  .stats-section{padding-block:clamp(2rem,5vw,3rem)}
  /* 2x2 keeps all four proof points on one screen */
  .stats{grid-template-columns:1fr 1fr}
  .stat{padding:20px 16px;border-right:1px solid var(--line)}
  .stat:nth-child(2n){border-right:none}
  .stat:nth-last-child(-n+2){border-bottom:none}
  .stat-num{font-size:clamp(1.9rem,1.2rem + 4vw,2.6rem)}
  .stat-label{margin-top:6px;font-size:.62rem;letter-spacing:.12em;line-height:1.35}

  /* shorter scrub so phones aren't stuck swiping five screens */
  .fleet-sticky{height:220vh}
  .fleet-head{padding-top:calc(var(--nav-h) + 18px)}
  .fleet-caption{
    left:var(--gutter);right:var(--gutter);
    bottom:calc(12vh + var(--callbar-h));text-align:left;max-width:none;
  }
  .fleet-progress{bottom:calc(5vh + var(--callbar-h))}
  .fleet-progress .seg{width:30px}
  .fleet-hint{padding:10px 18px;font-size:.62rem}

  .about-wrap,.area-wrap{gap:28px}
  .about-copy p{margin-bottom:12px;line-height:1.65}
  .about-badge{position:static;display:inline-block;margin-top:16px;padding:14px 18px}
  .about-badge .ab-num{font-size:1.6rem}
  .about-media::before{display:none}
  .about-media .frame{aspect-ratio:1/1}

  /* two-up gallery: six shots per screen instead of two */
  .gallery-grid{grid-template-columns:1fr 1fr;gap:8px}
  .g-item,.g-item:nth-child(6){grid-column:auto;grid-row:auto;aspect-ratio:1/1}
  .g-item:nth-child(1){grid-column:span 2;grid-row:auto;aspect-ratio:16/10}
  .g-cap{padding:22px 10px 8px;font-size:.58rem;letter-spacing:.12em}

  .area-list{grid-template-columns:1fr 1fr}
  .area-item{padding:10px 0;font-size:.8rem;gap:8px}
  .area-item svg{width:12px;height:12px}
  .area-note{margin-top:18px;font-size:.7rem}
}
