/* The scene remains a complete, still illustration until JS enables motion. */
.nvo-hero {
  --nvo-scene-height: clamp(700px, 51vw, 800px);
  --nvo-back-y: 0px;
  --nvo-team-y: 0px;
  position: relative;
  isolation: isolate;
  min-height: var(--nvo-scene-height);
  overflow: hidden;
  background: #f4eee3;
  color: #243d32;
}

.nvo-hero__layout {
  position: relative;
  z-index: 2;
  min-height: var(--nvo-scene-height);
  display: flex;
  align-items: center;
  pointer-events: none;
}

.nvo-hero__copy {
  width: min(44%, 568px);
  padding-block: 52px 68px;
  pointer-events: auto;
}

.nvo-hero__eyebrow {
  display: flex;
  align-items: center;
  gap: 11px;
  margin-bottom: 25px;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: .025em;
  line-height: 1.4;
}

.nvo-hero__eyebrow > span,
.nvo-hero__caption > span {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: #ad782f;
}

.nvo-hero h1 {
  margin: 0;
  font-size: clamp(52px, 4.8vw, 77px);
  font-weight: 800;
  line-height: 1.035;
  letter-spacing: -.055em;
  text-wrap: balance;
}

.nvo-hero h1 > span { display: block; }
.nvo-hero h1 em { font-style: normal; color: #9a632a; }

.nvo-hero__lead {
  max-width: 425px;
  margin-top: 27px;
  font-size: clamp(18px, 1.4vw, 21px);
  line-height: 1.6;
  color: #46574c;
  text-wrap: pretty;
}

.nvo-hero .nvo-hero__cta {
  min-height: 60px;
  margin-top: 31px;
  padding: 17px 24px;
  gap: 24px;
  border: 1px solid #243d32;
  border-radius: 6px;
  background: #243d32;
  color: #fffaf0;
  box-shadow: 0 4px 12px #243d3210;
  font-size: 17px;
  font-weight: 700;
  line-height: 1.35;
  text-align: left;
  transform: none;
  transition: background-color .2s, border-color .2s;
}

.nvo-hero .nvo-hero__cta:hover {
  background: #355442;
  border-color: #355442;
  transform: none;
  box-shadow: 0 4px 12px #243d3210;
}

.nvo-hero .nvo-hero__cta svg { width: 22px; height: 22px; }
.nvo-hero .nvo-hero__cta:focus-visible { outline-color: #8b622c; }

.nvo-hero__offer-note {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  max-width: 430px;
  margin-top: 19px;
  font-size: 15px;
  line-height: 1.65;
  color: #46574c;
}

.nvo-hero__offer-note > svg { width: 19px; height: 19px; margin-top: 3px; }

.nvo-hero__visual,
.nvo-hero__scene { position: absolute; inset: 0; }
.nvo-hero__visual { z-index: 0; pointer-events: none; }
.nvo-hero__scene { overflow: hidden; }

.nvo-hero__visual::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, #f4eee3 0%, #f4eee3f5 21%, #f4eee3c4 33%, #f4eee34d 43%, transparent 54%),
    linear-gradient(0deg, #f4eee3e6, #f4eee300 15%);
}

/* Both assets share this coordinate system; DOM papers land on the desk stack. */
.nvo-hero__canvas {
  position: absolute;
  width: max(100%, calc(var(--nvo-scene-height) * 1.776));
  aspect-ratio: 1680 / 946;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

.nvo-hero__office,
.nvo-hero__foreground,
.nvo-hero__team {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
}

.nvo-hero__office,
.nvo-hero__foreground { transform-origin: 50% 55%; }
.nvo-hero__office { transform: translate3d(0, var(--nvo-back-y), 0) scale(1.035); }
.nvo-hero__foreground { transform: translate3d(0, var(--nvo-team-y), 0) scale(1.035); }
.nvo-hero__office,
.nvo-hero__team { object-fit: fill; }
.nvo-hero img[data-load-failed] { visibility: hidden; }

.nvo-hero__helper {
  position: absolute;
  left: 63%;
  top: 50%;
  width: clamp(42px, 5.7%, 108px);
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
}

.nvo-hero__helper-light { position: relative; width: 100%; height: 100%; }
.nvo-hero__helper-light::before {
  content: '';
  position: absolute;
  inset: -45%;
  background: radial-gradient(circle, #ffcf6480, #ffcc4c20 45%, transparent 70%);
}

.nvo-hero__helper-light > svg {
  position: relative;
  width: 100%;
  height: 100%;
  stroke: #efbd61;
  stroke-width: 1;
  overflow: visible;
  filter: drop-shadow(0 4px 8px #ba80243d);
}

.nvo-hero__paper-route {
  position: absolute;
  left: 63%;
  top: 54%;
  width: 18%;
  height: 25%;
}

.nvo-hero__paper-flight { position: absolute; inset: 0; }
.nvo-hero__paper-flight:nth-child(1) { --nvo-flight-delay: -1.5s; transform: translate3d(15%, -12%, 0); }
.nvo-hero__paper-flight:nth-child(2) { --nvo-flight-delay: -5s; transform: translate3d(53%, 7%, 0); }
.nvo-hero__paper-flight:nth-child(3) { --nvo-flight-delay: -8.5s; transform: translate3d(88%, 58%, 0); }

.nvo-hero__paper {
  position: absolute;
  width: clamp(25px, 16%, 49px);
  aspect-ratio: .74;
  display: block;
  border: 1px solid #cfbfa6;
  border-radius: 3px 9px 3px 3px;
  background: linear-gradient(135deg, #fffef8 70%, #f3e9d5);
  box-shadow: 2px 5px 9px #654a1d1f;
  transform: rotate(-12deg);
}

.nvo-hero__paper-flight:nth-child(2) .nvo-hero__paper { transform: rotate(9deg); }
.nvo-hero__paper-flight:nth-child(3) .nvo-hero__paper { transform: rotate(-4deg); }
.nvo-hero__paper > i {
  position: absolute;
  left: 18%;
  top: 25%;
  width: 58%;
  height: 2px;
  border-radius: 3px;
  background: #b4c1b1;
  box-shadow: 0 6px #d5dbcd, 0 12px #d5dbcd;
}

.nvo-hero__paper > svg {
  position: absolute;
  right: 12%;
  bottom: 9%;
  width: 38%;
  height: 28%;
  color: #5a7955;
  stroke-width: 2.4;
}

.nvo-hero__caption {
  position: absolute;
  z-index: 1;
  right: max(48px, calc((100% - 1320px) / 2));
  bottom: 26px;
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 15px;
  line-height: 1.5;
  color: #304638;
  text-shadow: 0 1px 7px #fffaf1;
}

.nvo-hero__caption > span { width: 6px; height: 6px; margin-right: 4px; }
.nvo-hero__caption strong { font-weight: 700; }

.nvo-hero[data-motion-ready="true"] .nvo-hero__helper-light {
  animation: nvo-helper-float 6s ease-in-out infinite;
  animation-play-state: paused;
}

.nvo-hero[data-motion-ready="true"] .nvo-hero__paper-flight {
  animation: nvo-paper-sort 11s var(--nvo-flight-delay) linear infinite;
  animation-play-state: paused;
}

.nvo-hero[data-motion-active="true"] .nvo-hero__helper-light,
.nvo-hero[data-motion-active="true"] .nvo-hero__paper-flight { animation-play-state: running; }

@keyframes nvo-helper-float {
  0%, 100% { transform: translate3d(0, 0, 0) rotate(-3deg); }
  50% { transform: translate3d(0, -6px, 0) rotate(3deg); }
}

@keyframes nvo-paper-sort {
  0% { transform: translate3d(0, 0, 0); opacity: 0; }
  12% { transform: translate3d(8%, -10%, 0); opacity: .95; }
  35% { transform: translate3d(32%, -18%, 0); opacity: .95; }
  65% { transform: translate3d(72%, 18%, 0); opacity: .95; }
  88% { transform: translate3d(96%, 85%, 0); opacity: .95; }
  100% { transform: translate3d(100%, 100%, 0); opacity: 0; }
}

@media (min-width: 1600px) {
  .nvo-hero__copy { width: 43%; }
  .nvo-hero__visual::after { background: linear-gradient(90deg, #f4eee3 0%, #f4eee3e6 27%, #f4eee370 40%, transparent 52%), linear-gradient(0deg, #f4eee3e6, transparent 15%); }
}

@media (min-width: 1680px) {
  .nvo-hero__canvas {
    width: 1680px;
    top: calc(50% + 60px);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  }
}

@media (max-width: 1000px) {
  .nvo-hero { --nvo-scene-height: clamp(300px, 48vw, 430px); min-height: 0; }
  .nvo-hero__layout { min-height: 0; }
  .nvo-hero__copy { width: 100%; max-width: 680px; padding-block: 46px 20px; }
  .nvo-hero__eyebrow { margin-bottom: 20px; }
  .nvo-hero h1 { max-width: 660px; font-size: clamp(46px, 8vw, 71px); }
  .nvo-hero h1 > span { display: inline; }
  .nvo-hero__lead { max-width: 570px; margin-top: 22px; font-size: 18px; line-height: 1.55; }
  .nvo-hero .nvo-hero__cta { margin-top: 25px; }
  .nvo-hero__offer-note { max-width: 570px; margin-top: 16px; }
  .nvo-hero__visual { position: relative; height: var(--nvo-scene-height); }
  .nvo-hero__canvas { left: auto; right: 0; transform: translateY(-50%); }
  .nvo-hero__visual::after { background: linear-gradient(180deg, #f4eee3, #f4eee300 22%), linear-gradient(0deg, #f4eee3f5, #f4eee300 20%); }
  .nvo-hero__caption { right: 20px; bottom: 14px; gap: 5px; font-size: 15px; }
}

@media (max-width: 560px) {
  .nvo-hero { --nvo-scene-height: 300px; }
  .nvo-hero__copy { padding-top: 34px; padding-bottom: 10px; }
  .nvo-hero__eyebrow { font-size: 15px; margin-bottom: 19px; }
  .nvo-hero h1 { font-size: clamp(44px, 11.8vw, 62px); line-height: 1.06; letter-spacing: -.05em; }
  .nvo-hero h1 > span { display: block; }
  .nvo-hero__lead { margin-top: 21px; font-size: 18px; }
  .nvo-hero .nvo-hero__cta { width: 100%; justify-content: space-between; padding: 17px 18px; font-size: 17px; }
  .nvo-hero__offer-note { font-size: 15px; line-height: 1.55; }
  .nvo-hero__offer-note br { display: none; }
  .nvo-hero__caption { left: 20px; right: 20px; justify-content: center; flex-wrap: wrap; column-gap: 5px; row-gap: 0; }
}

@media (max-width: 360px) {
  .nvo-hero { --nvo-scene-height: 280px; }
  .nvo-hero__caption { left: 16px; right: 16px; }
  .nvo-hero__caption > span { display: none; }
}

/* Motion preferences are also enforced before the deferred controller starts. */
html.motion-off .nvo-hero__office,
html.motion-off .nvo-hero__foreground,
body[data-motion="off"] .nvo-hero__office,
body[data-motion="off"] .nvo-hero__foreground { transform: scale(1.035); }

@media (prefers-reduced-motion: reduce) {
  .nvo-hero__office, .nvo-hero__foreground { transform: scale(1.035); }
  .nvo-hero__helper-light, .nvo-hero__paper-flight { animation: none !important; }
}
