body { margin:0; background:var(--color-espresso-2); overflow-x:hidden; }
  a { color:var(--color-accent); text-decoration:none; transition:color 200ms cubic-bezier(.2,.8,.2,1); }
  a:hover { color:var(--color-accent-dark); }
  img, video { display:block; max-width:100%; }
  button { font-family:inherit; }
  ::selection { background:var(--color-caramel); color:var(--color-cream); }
  @keyframes nvPulse { 0%,100% { transform:scale(1); opacity:1; } 50% { transform:scale(1.6); opacity:.45; } }
  @keyframes nvZoom { from { transform:scale(1.02); } to { transform:scale(1.12); } }
  @keyframes nvDrop { 0%,100% { transform:translateY(0); opacity:.5; } 50% { transform:translateY(8px); opacity:1; } }
  @keyframes nvMarquee { from { transform:translate3d(0,0,0); } to { transform:translate3d(-50%,0,0); } }
  .nv-marquee:hover .nv-track { animation-play-state:paused; }
  /* --- responsive: tablet --- */
  @media (max-width: 900px) {
    .nv-hero-h1 { font-size: clamp(40px, 9vw, 84px) !important; }
    .nv-nowrap { white-space: normal !important; }
  }
  /* --- responsive: mobile --- */
  @media (max-width: 640px) {
    .nv-marquee .nv-track { animation-duration: 44s; }
    .nv-marquee .nv-track > button, .nv-marquee .nv-track > img { height: 230px !important; }
    .nv-navlinks { gap: 12px !important; }
    .nv-insight-strip { flex-wrap: wrap !important; }
    .nv-insight-strip > button { width: 62px !important; }
    .nv-slot-wrap { min-height: 62vh !important; }
  }
  @media print { body { background:#fff; } }

/* ============================================================
   ENTRY + SCROLL REVEAL
   The bundled build hid the first paint behind a counter overlay.
   This version paints straight into the page: a short fade of the
   document, then a staggered lift on the hero block.
   ============================================================ */
html.nv-booting body { opacity: 0; }
body { opacity: 1; transition: opacity 520ms cubic-bezier(.2, .8, .2, 1); }

@keyframes nvEnterUp {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: none; }
}
@keyframes nvEnterFade {
  from { opacity: 0; transform: scale(1.03); }
  to   { opacity: 1; transform: none; }
}

.nv-enter > div:first-child { animation: nvEnterFade 1400ms cubic-bezier(.2, .8, .2, 1) both; }
.nv-enter > div:nth-child(2) { animation: nvEnterUp 900ms cubic-bezier(.2, .8, .2, 1) 120ms both; }
.nv-enter > div:nth-child(3) > * { animation: nvEnterUp 900ms cubic-bezier(.2, .8, .2, 1) both; }
.nv-enter > div:nth-child(3) > *:nth-child(1) { animation-delay: 220ms; }
.nv-enter > div:nth-child(3) > *:nth-child(2) { animation-delay: 330ms; }
.nv-enter > div:nth-child(3) > *:nth-child(3) { animation-delay: 460ms; }

/* Scroll reveal: the resting state lives in CSS so nothing flashes in
   before the script runs. site.js adds .is-in as sections arrive. */
[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 900ms cubic-bezier(.2, .8, .2, 1),
              transform 900ms cubic-bezier(.2, .8, .2, 1);
}
[data-reveal].is-in { opacity: 1; transform: none; }

html.nv-nojs [data-reveal] { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html.nv-booting body { opacity: 1; }
  .nv-enter > div:first-child,
  .nv-enter > div:nth-child(2),
  .nv-enter > div:nth-child(3) > * { animation: none !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
  * { animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* ============================================================
   LIGHTBOX
   ============================================================ */
.nv-lightbox {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: rgba(30, 30, 30, .95);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 18px;
  padding: clamp(16px, 4vw, 48px);
  cursor: zoom-out;
  opacity: 0;
  transition: opacity 260ms cubic-bezier(.2, .8, .2, 1);
}
.nv-lightbox[hidden] { display: none; }
.nv-lightbox.is-open { opacity: 1; }
.nv-lightbox #nv-lb-img[hidden],
.nv-lightbox #nv-lb-video[hidden] { display: none; }
