/* ==============================
   LANDING HERO (4:3 images) — WOW
   - Full 4:3 visible (letterbox on wide screens)
   - Gentle zoom/pan motion
   - Floating badges left-centered inside image area
   - Great on desktop & mobile
   ============================== */

:root{
  --caption-w: 720px;
  --hero-h-desktop: clamp(560px, 72vh, 880px);
  --hero-pad-mobile: clamp(20px, 6vw, 32px);   /* more image padding on phones */
  --caption-bottom: 7vh;
}


/* ===== Static background for landing pages ===== */
/* Tweak these variables to change the look */
/* ===== Static background on <main class="landing"> ===== */
div.background{
  min-height: 35vh;                 /* ensure it's visible even with little content */
  background-color:#fff;
  background-image: url("/images/background2.jpg");
  background-repeat: no-repeat;
  background-position: bottom center;
  background-size: contain;
  
}


.hero-wow{
  position:relative;
  height:var(--hero-h-desktop);
  background:#000;                 /* letterbox background */
  margin:0;
  overflow:hidden;
  /* width of the visible image box at desktop (used to place badges) */
  --img-w: min(100%, calc(var(--hero-h-desktop) * 4 / 3));
}
.hero-wow .carousel,
.hero-wow .carousel-track{ height:100%; }

.hero-wow .slide{
  position:relative;
  min-width:100%;
  height:100%;
  display:block;
  background:#000;
  overflow:hidden;
}

/* Media container & image */
.hero-wow .hero-media{ position:absolute; inset:0; margin:0; display:block; background:#000; }
.hero-wow .hero-img{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:contain;              /* always show full 4:3 image */
  object-position:center;
  display:block;
  will-change:transform;
  transform:translateZ(0) scale(1);
  z-index:0;
}

/* Classy Ken Burns: alternate subtle pan per slide */
.kenburns .slide:nth-child(odd)  .hero-img{ animation:kenA 18s ease-in-out infinite; }
.kenburns .slide:nth-child(even) .hero-img{ animation:kenB 18s ease-in-out infinite; }

@keyframes kenA{
  0%,100% { transform:translate3d(0, 0, 0) scale(1) }
  50%     { transform:translate3d(0.75%, -0.75%, 0) scale(1.045) }
}
@keyframes kenB{
  0%,100% { transform:translate3d(0, 0, 0) scale(1) }
  50%     { transform:translate3d(-0.75%, 0.75%, 0) scale(1.045) }
}

/* Remove any legacy pseudo background that could mask the image */
.kenburns .slide::before{ content:none !important; }

/* Overlay gradient & stacking */
.hero-wow .overlay{
  position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.5));
  pointer-events:none;
}

/* Caption card (centered) */
.hero-wow .caption{
  position:absolute; left:50%; transform:translateX(-50%);
  bottom:var(--caption-bottom);
  width:min(var(--caption-w), calc(100% - 48px));
  color:#fff; text-align:center; z-index:2;
}
.caption-card{
  padding:18px 22px;
  border:1px solid rgba(255,255,255,.16);
  border-radius:16px;
  background:rgba(0,0,0,.38);
  backdrop-filter:blur(6px);
  box-shadow:0 12px 36px rgba(0,0,0,.28);
}
.headline{
  margin:0 0 8px;
  font-size:40px; line-height:1.08; letter-spacing:.005em;
  text-shadow:0 2px 10px rgba(0,0,0,.35);
}
.sub{ color:#eaeaea; margin:0 0 14px; font-size:17px; }
.hero-wow .cta-row{ display:flex; gap:12px; justify-content:center; margin:10px 0 8px; }
.tiny{ font-size:12px; color:#d9d9d9; }

/* Controls & dots */
.hero-wow .controls{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:space-between;
  padding:0 10px; pointer-events:none; z-index:3;
}
.hero-wow .controls button{
  pointer-events:auto; width:44px; height:44px; border-radius:999px;
  border:1px solid rgba(255,255,255,.25);
  background:rgba(0,0,0,.45); color:#fff; font-size:20px;
  display:grid; place-items:center;
  transition:transform .15s ease, background .15s ease, border-color .15s ease;
}
.hero-wow .controls button:hover{ transform:translateY(-1px); background:rgba(0,0,0,.6); border-color:rgba(255,255,255,.35); }
.hero-wow .dots{
  position:absolute; bottom:18px; left:0; right:0; display:flex; gap:8px; justify-content:center; z-index:3;
}
.hero-wow .dot{
  width:9px; height:9px; border-radius:999px;
  background:rgba(255,255,255,.45);
  box-shadow:0 0 0 1px rgba(0,0,0,.25) inset;
}
.hero-wow .dot.active{ background:#fff; }


/* Tighten spacing after hero */
.hero-wow + .section{ padding-top:24px; }

/* ---------- Responsive tweaks ---------- */

/* ===== Mobile polish: more padding, nicer caption, more image visible ===== */
/* ================================
   HERO (mobile caption below image)
   ================================ */

@media (max-width: 700px){
  /* Give the whole hero breathing room and prevent awkward cropping */
  :root{
    --hero-pad-mobile: clamp(20px, 6vw, 32px);
  }
  .hero-wow{
    height:auto;                 /* let content define height */
    padding-block: clamp(28px, 6vh, 60px);
    --img-w: calc(100% - (var(--hero-pad-mobile) * 2));
  }

  /* Turn each slide into a normal flow container */
  .hero-wow .carousel,
  .hero-wow .carousel-track{ height:auto; }

  .hero-wow .slide{
    display:block;
    padding: var(--hero-pad-mobile);   /* inner frame around the image */
    background:#000;                   /* letterbox */
    height:auto;                       /* no fixed/aspect height on the slide itself */
    overflow:visible;                  /* allow caption to sit below */
  }

  /* Make the media box control the 4:3 ratio */
  .hero-wow .hero-media{
    position:relative;                 /* takes up layout space */
    inset:auto; margin:0;
    width:100%;
    aspect-ratio: 4 / 3;               /* exact image ratio */
    overflow:hidden;
    border-radius: 14px;
    background:#000;
  }
  .hero-wow .hero-img{
    position:absolute; inset:0;
    width:100%; height:100%;
    object-fit:contain;                /* show full image */
    object-position:center;
    will-change:transform;
    /* keep your subtle zoom */
    animation-duration: 20s;           /* a touch slower on phones */
  }

  /* Keep gradient overlay only over the image area (or remove it) */
  .hero-wow .overlay{
    display: none;
  }

  /* Dots below the image (so they don’t overlap the caption) */
  .hero-wow .dots{
    position:static;
  }

  /* Caption becomes a normal block BELOW the image */
  .hero-wow .caption{
    position:static;
    transform:none;
    width:100%;
    max-width: 560px;                  /* keep it tidy */
    margin: -40px auto 0;               /* space below image */
    text-align:center;
    z-index:auto;
  }
  .hero-wow .caption .caption-card{
    padding: clamp(16px, 5vw, 22px);
    border-radius: 16px;
    background: rgba(0,0,0,.42);
    border: 1px solid rgba(255,255,255,.18);
    box-shadow: 0 12px 28px rgba(0,0,0,.30);
    backdrop-filter: blur(8px);
  }
  .hero-wow .headline{
    font-size: 20px;
    margin: 0 0 6px;
    text-shadow: 0 1px 6px rgba(0,0,0,.3);
  }
  .hero-wow .sub{
    font-size: clamp(14px, 3.8vw, 16px);
    margin-bottom: 12px;
  }
  .hero-wow .cta-row{
    gap:10px; flex-wrap:wrap; justify-content:center;
  }
  .hero-wow .tiny{ font-size:12px; opacity:.95; }



  /* Optional: hide arrows on small screens (uncomment if desired) */
  /* .hero-wow .controls{ display:none; } */
}

/* Larger screens (leave your current desktop styling in place) */
/* Small polish: keep overlay below caption/controls */
.hero-wow .overlay{ z-index:1; }
.hero-wow .caption{ z-index:3; }
.hero-wow .controls, .hero-wow .dots, .floating-badges{ z-index:4; }


/* Very large desktops: allow more height & wider caption */
@media (min-width: 1400px){
  :root{ --caption-w: 820px; }
  .hero-wow{ height: clamp(640px, 78vh, 920px); }
}


.hero-wow .mouse-glow{
  position:absolute; inset:0;
  pointer-events:none;
  /* starting point & tuning */
  --mx: 50%;           /* x position in % */
  --my: 50%;           /* y position in % */
  --size: 320px;       /* glow diameter */
  --alpha: .12;        /* core intensity */
  z-index: 2;          /* above overlay, below caption/controls */

  background:
    radial-gradient(
      circle var(--size) at var(--mx) var(--my),
      rgba(255,255,255,var(--alpha)),
      rgba(255,255,255,0) 60%
    );
  mix-blend-mode: screen;
  opacity: 0;          /* fade in on hover */
  transition: opacity .25s ease;
  animation: glow-breathe 4s ease-in-out infinite;
}

.hero-wow:hover .mouse-glow{ opacity: 1; }

/* Gentle breathing so the glow feels alive */
@keyframes glow-breathe{
  0%,100% { --alpha: .10; --size: 300px; }
  50%     { --alpha: .16; --size: 360px; }
}

/* Make sure caption/controls are above the glow */
.hero-wow .caption{ z-index: 3; }
.hero-wow .controls, .hero-wow .dots, .floating-badges{ z-index: 4; }

/* Disable on touch devices / reduced motion */
@media (hover:none), (pointer:coarse){
  .hero-wow .mouse-glow{ display:none; }
}
@media (prefers-reduced-motion: reduce){
  .hero-wow .mouse-glow{ animation:none; }
}


/*INTRO*/

/* ===== Intro section: bigger divider + larger video + nicer type ===== */

/* Make this section breathe a bit more and allow a wider container here */
.section-intro { padding-top: 64px; }
.section-intro .container.intro { max-width: 1280px; }

/* Divider: bigger scissors, thicker rule, responsive sizing */
.section-divider{
  display:flex; justify-content:center; align-items:center;
  margin: 6px 0 26px; position:relative;
}
.section-divider::before,
.section-divider::after{
  content:""; flex:1; height:2px; background:var(--border);
  align-self:center; margin:0 16px;
}
.section-divider img{
  height: clamp(48px, 7vw, 88px);   /* bigger! */
  width:auto; opacity:.9; filter: drop-shadow(0 4px 12px rgba(0,0,0,.06));
}

/* Grid remains stacked (text first, video below), with comfy gaps */
.section-intro .intro-grid{
  display:grid; gap: 30px;
  grid-template-columns: 1fr;
}

/* Polished typography */
.section-intro .intro-copy{
  max-width: 860px; margin: 0 auto; text-align: center;
}
.section-intro .eyebrow{
  text-transform: uppercase; letter-spacing: .16em;
  font-size: 12px; color:#6a6a6a; margin: 0 0 10px;
}
.section-intro .intro-title{
  margin: 0 0 10px;
  font-size: clamp(30px, 4.4vw, 44px);
  line-height: 1.12; letter-spacing: .01em;
}
.section-intro .intro-title span{
  border-bottom: 2px solid #000; padding-bottom: 2px;
}
.section-intro .lead{
  color:#2f2f2f; max-width: 64ch; margin: 10px auto 16px;
}
.section-intro .intro-points{
  list-style:none; padding:0; margin: 12px 0 18px;
  display:flex; gap: 10px; flex-wrap:wrap; justify-content:center;
}
.section-intro .intro-points li{
  border:1px solid var(--border); background:#fff;
  border-radius:999px; padding: 7px 12px; font-size: 14px;
}
.section-intro .intro-ctas{ display:flex; justify-content:center; margin-top:16px; }
.cta-wrap{
  display:flex; gap:10px; align-items:center;
  background:#000; color:#fff;
  padding:10px; border-radius:999px;
  border:1px solid #121212;
  box-shadow: 0 18px 44px rgba(0,0,0,.18), inset 0 0 0 1px rgba(255,255,255,.05);
}

/* Buttons */
.cta-btn{
  display:inline-flex; align-items:center; gap:10px;
  border-radius:999px; text-decoration:none; font-weight:700;
  padding:12px 18px; line-height:1; letter-spacing:.02em;
  transition: transform .18s ease, background-color .18s ease, border-color .18s ease, box-shadow .18s ease;
  will-change: transform;
}
.cta-btn i{ font-size:16px; line-height:0; } /* FA icon (optional) */

/* Primary: solid black-on-black with subtle lift */
.cta-btn--primary{
  background:#111; color:#fff; border:1px solid #2a2a2a;
  box-shadow: 0 10px 26px rgba(0,0,0,.28);
}
.cta-btn--primary:hover{
  transform: translateY(-1px);
  background:#181818; border-color:#3a3a3a;
  box-shadow: 0 14px 30px rgba(0,0,0,.34);
}

/* Secondary: ghost on black */
.cta-btn--secondary{
  background:transparent; color:#fff; border:1px solid #444;
}
.cta-btn--secondary:hover{
  transform: translateY(-1px);
  background:#121212; border-color:#555;
}

/* Focus styles for accessibility */
.cta-btn:focus-visible{
  outline:2px solid #fff; outline-offset:2px;
}

/* Mobile: stack full width */
@media (max-width:560px){
  .cta-wrap{  padding:20px; border-radius: 16px; }
  .cta-btn{ justify-content:center; width:100%;  }
}

/* Bigger video: expand the frame and container just for this section */
.section-intro .video-card{
  margin: 0 auto; width: 100%;
  max-width: min(1240px, 100%);
}
.section-intro .video-frame{
  position:relative;
  border-radius: 20px;
  overflow:hidden;
  border:1px solid var(--border);
  box-shadow: 0 24px 56px rgba(0,0,0,.14);
  background:#000;
  aspect-ratio: 16 / 9;                 /* keeps it big and cinematic */
}
.section-intro .video-el{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit: cover; object-position: center;
  display:block;
}

/* Larger overlay logo + play */
.section-intro .video-overlay{
  position:absolute; inset:0; z-index:2;
  display:grid; place-items:center;
  background:
    radial-gradient(700px 700px at 50% 42%, rgba(255,255,255,.08), transparent 60%),
    linear-gradient(180deg, rgba(0,0,0,.18), rgba(0,0,0,.44));
  border:0; cursor:pointer; padding:0; margin:0;
  transition: opacity .25s ease, transform .25s ease;
}
.section-intro .video-overlay:hover{ transform: scale(1.01); }
.section-intro .overlay-inner{ display:grid; gap:16px; place-items:center; text-align:center; }
.section-intro .overlay-logo{
  height: clamp(64px, 9vw, 96px);          /* bigger logo */
  width:auto; filter: drop-shadow(0 8px 24px rgba(0,0,0,.45));
}
.section-intro .play-icon{
  width:64px; height:64px; border-radius:999px;
  display:inline-grid; place-items:center; background:#fff; color:#000;
  box-shadow:0 14px 34px rgba(0,0,0,.35), 0 0 0 1px rgba(0,0,0,.08) inset;
  position:relative;
}
.section-intro .play-icon::before{
  content:""; position:absolute; left:26px; top:50%; transform:translateY(-50%);
  border-style: solid; border-width: 12px 0 12px 19px; border-color: transparent transparent transparent #000;
}

/* Hide overlay once the video plays (your JS toggles .is-playing) */
.section-intro .video-card.is-playing .video-overlay{ opacity:0; pointer-events:none; }

/* Caption */
.section-intro .video-caption{
  margin-top:12px; color:#666; font-size:13px; text-align:center;
}

/* Mobile tweaks */
@media (max-width: 780px){
  .section-intro { padding-top: 56px; }
  .section-intro .video-frame{ border-radius: 16px; }
  .section-intro .overlay-logo{ height: clamp(56px, 12vw, 80px); }
}

/* Optional: ultra-wide screens—let it breathe a touch more */
@media (min-width: 1400px){
  .section-intro .container.intro { max-width: 1360px; }
  .section-intro .video-card      { max-width: 1320px; }
}


.vertical-divider{
  display:flex; align-items:center; justify-content:center; 
  max-width: 1100px; margin: -20px auto; padding: 0px;
}


/* Centered floating badges – constrained to the image box */
.floating-badges{
  position:absolute;
  top:2%;                           /* move up/down to taste */
  left:50%;
  transform:translateX(-50%);
  width:min(var(--img-w, 100%), 100%);/* match the image width; fall back to 100% */
  padding:0 16px;                    /* keep a little in from the image edge */
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  justify-content:center;            /* <- centers the badges */
  z-index:3;
}

.floating-badges .badge{
  background:rgba(0,0,0,.65);
  color:#fff;
  border:1px solid rgba(255,255,255,.18);
  backdrop-filter:blur(2px);
}

/* (Optional) tweak on phones */
@media (max-width:700px){
  .floating-badges{gap:6px; padding:0 12px; }
}
