:root {
  --nova-ink: #0a1628;
  --nova-deep: #06101f;
  --nova-navy: #12233d;
  --nova-slate: #223247;
  --nova-body: #33465c;
  --nova-amber: #f0a500;
  --nova-amber-soft: #ffc94d;
  --nova-amber-deep: #c07d00;
  --nova-teal: #1b998b;
  --nova-cream: #f6f2ea;
  --nova-mist: #e4e9ef;
  --nova-paper: #ffffff;
  --nova-muted: #55677d;
  --nova-line: rgba(10, 22, 40, 0.12);
  --nova-line-soft: rgba(10, 22, 40, 0.06);
  --nova-shadow-sm: 0 4px 14px rgba(10, 22, 40, 0.08);
  --nova-shadow-md: 0 16px 42px rgba(10, 22, 40, 0.12);
  --nova-shadow-lg: 0 30px 70px rgba(10, 22, 40, 0.2);
  --nova-radius-sm: 10px;
  --nova-radius: 18px;
  --nova-radius-lg: 28px;
  --nova-font-display: "Georgia", "Times New Roman", serif;
  --nova-font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --nova-font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
  --nova-timing: cubic-bezier(0.22, 1, 0.36, 1);
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--nova-font-body);
  color: var(--nova-body);
  background: var(--nova-cream);
  font-size: 16px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--nova-font-display);
  color: var(--nova-ink);
  line-height: 1.18;
  font-weight: 700;
  letter-spacing: -0.01em;
  margin-bottom: 0.6em;
}

h1 { font-size: clamp(2.4rem, 5vw, 3.9rem); }
h2 { font-size: clamp(1.9rem, 3.4vw, 2.7rem); }
h3 { font-size: clamp(1.35rem, 2.2vw, 1.75rem); }

p {
  margin-bottom: 1.1rem;
  color: var(--nova-body);
}

a {
  color: var(--nova-amber-deep);
  text-decoration: none;
  transition: color 0.2s ease;
}

a:hover {
  color: var(--nova-ink);
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--nova-font-mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--nova-amber-deep);
  margin-bottom: 18px;
}

.eyebrow::before {
  content: "";
  width: 34px;
  height: 1px;
  background: var(--nova-amber);
}

.lede {
  font-size: 1.18rem;
  color: var(--nova-body);
  max-width: 62ch;
}

.text-accent { color: var(--nova-amber-deep); }
.text-mono { font-family: var(--nova-font-mono); letter-spacing: 0.04em; }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 14px 30px;
  border-radius: 999px;
  font-family: var(--nova-font-body);
  font-weight: 600;
  font-size: 0.95rem;
  letter-spacing: 0.01em;
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: transform 0.22s var(--nova-timing), background 0.22s ease, color 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
  text-decoration: none;
  line-height: 1;
}

.btn:hover { transform: translateY(-2px); }

.btn-nova {
  background: var(--nova-amber);
  color: var(--nova-ink);
  box-shadow: 0 10px 24px rgba(240, 165, 0, 0.32);
}

.btn-nova:hover {
  background: var(--nova-amber-soft);
  color: var(--nova-ink);
}

.btn-ink {
  background: var(--nova-ink);
  color: #fff;
}

.btn-ink:hover {
  background: var(--nova-navy);
  color: #fff;
}

.btn-ghost {
  background: transparent;
  color: var(--nova-ink);
  border-color: rgba(10, 22, 40, 0.32);
}

.btn-ghost:hover {
  border-color: var(--nova-ink);
  color: var(--nova-ink);
  background: rgba(10, 22, 40, 0.04);
}

.btn-ghost-light {
  background: transparent;
  color: #fff;
  border-color: rgba(255, 255, 255, 0.55);
}

.btn-ghost-light:hover {
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
  border-color: #fff;
}

.btn-lg {
  padding: 17px 38px;
  font-size: 1rem;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 1040;
  background: rgba(246, 242, 234, 0.85);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid transparent;
  transition: background 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

.site-header--scrolled {
  background: rgba(255, 255, 255, 0.94);
  border-bottom-color: var(--nova-line);
  box-shadow: 0 8px 30px rgba(10, 22, 40, 0.08);
}

.navbar-nova {
  padding: 16px 0;
}

.navbar-nova .nav-link {
  font-weight: 600;
  color: var(--nova-ink);
  font-size: 0.94rem;
  padding: 8px 14px;
  position: relative;
}

.navbar-nova .nav-link::after {
  content: "";
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 2px;
  height: 2px;
  background: var(--nova-amber);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.28s var(--nova-timing);
}

.navbar-nova .nav-link:hover::after,
.navbar-nova .nav-link.active::after {
  transform: scaleX(1);
}

.navbar-nova .nav-link:hover {
  color: var(--nova-ink);
}

.header-contact {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 0.82rem;
  color: var(--nova-muted);
  line-height: 1.3;
}

.header-contact strong { color: var(--nova-ink); font-weight: 600; }

.hero {
  position: relative;
  background-size: cover;
  background-position: center;
  color: #fff;
  padding: 120px 0 100px;
  overflow: hidden;
}

.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 82% 20%, rgba(240, 165, 0, 0.14), transparent 55%);
  pointer-events: none;
}

.hero h1,
.hero h2,
.hero p { color: #fff; }

.hero p { color: rgba(255, 255, 255, 0.86); }

.hero .eyebrow { color: var(--nova-amber-soft); }

.hero-inner {
  position: relative;
  z-index: 2;
}

.hero-tagline {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 8px 18px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
  font-size: 0.83rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 600;
  color: #fff;
  margin-bottom: 26px;
  backdrop-filter: blur(6px);
}

.hero-tagline i { color: var(--nova-amber-soft); }

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 32px;
}

.hero-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 24px;
  margin-top: 56px;
  padding-top: 34px;
  border-top: 1px solid rgba(255, 255, 255, 0.2);
}

.hero-stats .stat-value {
  font-family: var(--nova-font-display);
  font-size: 2.1rem;
  color: var(--nova-amber-soft);
  line-height: 1;
}

.hero-stats .stat-label {
  font-size: 0.86rem;
  color: rgba(255, 255, 255, 0.75);
  letter-spacing: 0.02em;
  margin-top: 6px;
}

.section {
  padding: 96px 0;
  position: relative;
}

.section--tight { padding: 68px 0; }

.section--dark {
  background: var(--nova-ink);
  color: #dfe6ee;
}

.section--dark h1,
.section--dark h2,
.section--dark h3 { color: #fff; }

.section--dark p { color: rgba(223, 230, 238, 0.82); }

.section--dark .eyebrow { color: var(--nova-amber-soft); }

.section--dark .eyebrow::before { background: var(--nova-amber); }

.section--mist {
  background: var(--nova-mist);
}

.section--banner {
  position: relative;
  background-size: cover;
  background-position: center;
  color: #fff;
}

.section--banner h2,
.section--banner h3,
.section--banner p { color: #fff; }

.section--banner p { color: rgba(255, 255, 255, 0.86); }

.section-head {
  max-width: 720px;
  margin-bottom: 54px;
}

.section-head--center {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

.section-head--center .eyebrow { justify-content: center; }

.card-nova {
  background: var(--nova-paper);
  border-radius: var(--nova-radius);
  border: 1px solid var(--nova-line-soft);
  box-shadow: var(--nova-shadow-sm);
  padding: 34px 30px;
  height: 100%;
  transition: transform 0.32s var(--nova-timing), box-shadow 0.32s ease, border-color 0.32s ease;
  position: relative;
  overflow: hidden;
}

.card-nova:hover {
  transform: translateY(-6px);
  box-shadow: var(--nova-shadow-md);
  border-color: rgba(240, 165, 0, 0.4);
}

.card-nova__index {
  font-family: var(--nova-font-mono);
  font-size: 13px;
  letter-spacing: 0.16em;
  color: var(--nova-amber-deep);
  margin-bottom: 18px;
  display: block;
}

.card-nova__icon {
  width: 54px;
  height: 54px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  background: rgba(240, 165, 0, 0.14);
  color: var(--nova-amber-deep);
  font-size: 1.3rem;
  margin-bottom: 22px;
}

.card-nova h3 { margin-bottom: 12px; }

.card-nova p { color: var(--nova-body); margin-bottom: 0; font-size: 0.97rem; }

.card-dark {
  background: var(--nova-navy);
  color: #dfe6ee;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: var(--nova-radius);
  padding: 32px 28px;
  height: 100%;
  transition: transform 0.32s var(--nova-timing), border-color 0.32s ease;
}

.card-dark:hover {
  transform: translateY(-5px);
  border-color: rgba(240, 165, 0, 0.5);
}

.card-dark h3 { color: #fff; font-size: 1.25rem; }
.card-dark p { color: rgba(223, 230, 238, 0.78); font-size: 0.95rem; margin-bottom: 0; }

.service-card {
  border-radius: var(--nova-radius-lg);
  overflow: hidden;
  background: var(--nova-paper);
  box-shadow: var(--nova-shadow-sm);
  height: 100%;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--nova-line-soft);
  transition: transform 0.34s var(--nova-timing), box-shadow 0.34s ease;
}

.service-card:hover {
  transform: translateY(-8px);
  box-shadow: var(--nova-shadow-md);
}

.service-card__media {
  position: relative;
  aspect-ratio: 16 / 10;
  background: linear-gradient(135deg, var(--nova-navy), var(--nova-ink));
  overflow: hidden;
}

.service-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s var(--nova-timing);
}

.service-card:hover .service-card__media img { transform: scale(1.06); }

.service-card__tag {
  position: absolute;
  top: 16px;
  left: 16px;
  padding: 6px 14px;
  border-radius: 999px;
  background: var(--nova-amber);
  color: var(--nova-ink);
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.service-card__body {
  padding: 28px 28px 30px;
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}

.service-card__body h3 { margin-bottom: 12px; }

.service-card__body p { color: var(--nova-body); font-size: 0.95rem; }

.service-card__link {
  margin-top: auto;
  font-weight: 600;
  font-size: 0.92rem;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--nova-amber-deep);
}

.service-card__link i { transition: transform 0.25s ease; }

.service-card__link:hover i { transform: translateX(4px); }

.price-card {
  background: var(--nova-paper);
  border-radius: var(--nova-radius);
  border: 1px solid var(--nova-line);
  padding: 40px 34px;
  height: 100%;
  display: flex;
  flex-direction: column;
  position: relative;
  transition: transform 0.3s var(--nova-timing), box-shadow 0.3s ease;
}

.price-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--nova-shadow-md);
}

.price-card--featured {
  background: var(--nova-ink);
  color: #dfe6ee;
  border-color: var(--nova-ink);
}

.price-card--featured h3,
.price-card--featured .price-value { color: #fff; }

.price-card--featured p,
.price-card--featured li { color: rgba(223, 230, 238, 0.82); }

.price-card--featured .price-pill {
  position: absolute;
  top: -14px;
  right: 28px;
  background: var(--nova-amber);
  color: var(--nova-ink);
  padding: 6px 16px;
  border-radius: 999px;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.price-value {
  font-family: var(--nova-font-display);
  font-size: 2.8rem;
  line-height: 1;
  margin: 14px 0 6px;
  color: var(--nova-ink);
}

.price-value small {
  font-size: 0.95rem;
  color: var(--nova-muted);
  font-family: var(--nova-font-body);
  font-weight: 500;
}

.price-list {
  list-style: none;
  padding: 0;
  margin: 24px 0 30px;
}

.price-list li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 8px 0;
  font-size: 0.94rem;
  color: var(--nova-body);
}

.price-list li i {
  color: var(--nova-teal);
  margin-top: 4px;
  font-size: 0.85rem;
}

.price-card--featured .price-list li i { color: var(--nova-amber-soft); }

.process-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 26px;
  counter-reset: process;
}

.process-step {
  position: relative;
  background: var(--nova-paper);
  border-radius: var(--nova-radius);
  padding: 34px 28px 30px;
  border: 1px solid var(--nova-line-soft);
  transition: transform 0.3s var(--nova-timing);
}

.process-step:hover { transform: translateY(-5px); }

.process-step__num {
  font-family: var(--nova-font-display);
  font-size: 2.5rem;
  line-height: 1;
  color: var(--nova-amber);
  margin-bottom: 16px;
  display: block;
}

.process-step h4 {
  font-family: var(--nova-font-display);
  font-size: 1.2rem;
  margin-bottom: 10px;
  color: var(--nova-ink);
}

.process-step p {
  color: var(--nova-body);
  font-size: 0.93rem;
  margin-bottom: 0;
}

.stat-block {
  text-align: center;
  padding: 20px 10px;
}

.stat-block .stat-value {
  font-family: var(--nova-font-display);
  font-size: clamp(2.4rem, 4vw, 3.4rem);
  color: var(--nova-amber);
  line-height: 1;
}

.stat-block .stat-label {
  font-size: 0.88rem;
  letter-spacing: 0.03em;
  color: var(--nova-muted);
  margin-top: 12px;
}

.section--dark .stat-block .stat-label { color: rgba(223, 230, 238, 0.7); }

.testimonial {
  background: var(--nova-paper);
  border-radius: var(--nova-radius);
  padding: 34px 30px;
  border: 1px solid var(--nova-line-soft);
  height: 100%;
  display: flex;
  flex-direction: column;
}

.testimonial__quote {
  font-family: var(--nova-font-display);
  font-size: 1.24rem;
  color: var(--nova-ink);
  line-height: 1.42;
  margin-bottom: 22px;
  flex-grow: 1;
}

.testimonial__author {
  display: flex;
  align-items: center;
  gap: 14px;
}

.testimonial__author img {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
  background: var(--nova-mist);
}

.testimonial__author strong {
  display: block;
  color: var(--nova-ink);
  font-size: 0.95rem;
}

.testimonial__author span {
  font-size: 0.82rem;
  color: var(--nova-muted);
}

.testimonial__stars {
  color: var(--nova-amber);
  font-size: 0.85rem;
  margin-bottom: 14px;
  letter-spacing: 2px;
}

.team-card {
  text-align: center;
  background: var(--nova-paper);
  border-radius: var(--nova-radius);
  padding: 30px 22px;
  border: 1px solid var(--nova-line-soft);
  transition: transform 0.3s var(--nova-timing), box-shadow 0.3s ease;
}

.team-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--nova-shadow-md);
}

.team-card img {
  width: 108px;
  height: 108px;
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto 20px;
  display: block;
  border: 4px solid var(--nova-mist);
}

.team-card h4 {
  font-family: var(--nova-font-display);
  font-size: 1.16rem;
  margin-bottom: 4px;
}

.team-card .team-role {
  font-size: 0.84rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--nova-amber-deep);
  margin-bottom: 14px;
  display: block;
}

.team-card p { font-size: 0.9rem; color: var(--nova-muted); margin-bottom: 0; }

.carousel-nova {
  border-radius: var(--nova-radius-lg);
  overflow: hidden;
  box-shadow: var(--nova-shadow-lg);
  background: var(--nova-ink);
}

.carousel-nova .carousel-item {
  position: relative;
  min-height: 520px;
  background-size: cover;
  background-position: center;
  display: flex;
  align-items: center;
}

.carousel-nova .carousel-caption {
  position: relative;
  inset: auto;
  text-align: left;
  padding: 70px 60px;
  max-width: 640px;
  background: transparent;
}

.carousel-nova .carousel-caption h2,
.carousel-nova .carousel-caption p { color: #fff; }

.carousel-nova .carousel-indicators {
  justify-content: flex-start;
  margin-left: 60px;
  margin-bottom: 34px;
}

.carousel-nova .carousel-indicators [data-bs-target] {
  width: 32px;
  height: 3px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.5);
  border: 0;
  opacity: 1;
  transition: background 0.3s ease, width 0.3s ease;
}

.carousel-nova .carousel-indicators .active {
  background: var(--nova-amber);
  width: 48px;
}

.carousel-nova .carousel-control-prev,
.carousel-nova .carousel-control-next {
  width: 56px;
}

.gallery-item {
  border-radius: var(--nova-radius);
  overflow: hidden;
  position: relative;
  box-shadow: var(--nova-shadow-sm);
}

.gallery-item img {
  width: 100%;
  height: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
  transition: transform 0.5s var(--nova-timing);
}

.gallery-item:hover img { transform: scale(1.05); }

.gallery-item figcaption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 40px 22px 18px;
  background: linear-gradient(180deg, transparent, rgba(10, 22, 40, 0.88));
  color: #fff;
  font-size: 0.9rem;
  font-weight: 500;
}

.faq-accordion .accordion-item {
  background: var(--nova-paper);
  border: 1px solid var(--nova-line-soft);
  border-radius: var(--nova-radius) !important;
  margin-bottom: 14px;
  overflow: hidden;
  box-shadow: var(--nova-shadow-sm);
}

.faq-accordion .accordion-button {
  font-family: var(--nova-font-display);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--nova-ink);
  background: transparent;
  padding: 22px 26px;
  box-shadow: none;
}

.faq-accordion .accordion-button:not(.collapsed) {
  color: var(--nova-amber-deep);
  background: rgba(240, 165, 0, 0.06);
}

.faq-accordion .accordion-button:focus {
  box-shadow: 0 0 0 3px rgba(240, 165, 0, 0.2);
  border-color: transparent;
}

.faq-accordion .accordion-body {
  padding: 0 26px 24px;
  color: var(--nova-body);
  font-size: 0.96rem;
  line-height: 1.68;
}

.contact-form {
  background: var(--nova-paper);
  border-radius: var(--nova-radius-lg);
  padding: 44px 40px;
  box-shadow: var(--nova-shadow-md);
  border: 1px solid var(--nova-line-soft);
}

.contact-form .form-label {
  font-size: 0.86rem;
  font-weight: 600;
  color: var(--nova-ink);
  letter-spacing: 0.02em;
  margin-bottom: 6px;
}

.contact-form .form-control,
.contact-form .form-select {
  border: 1px solid var(--nova-line);
  border-radius: var(--nova-radius-sm);
  padding: 12px 16px;
  font-size: 0.94rem;
  background: var(--nova-cream);
  color: var(--nova-ink);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.contact-form .form-control:focus,
.contact-form .form-select:focus {
  border-color: var(--nova-amber);
  box-shadow: 0 0 0 3px rgba(240, 165, 0, 0.18);
  background: #fff;
}

.contact-form textarea.form-control { min-height: 130px; resize: vertical; }

.was-validated .form-control:invalid,
.was-validated .form-select:invalid {
  border-color: #c0392b;
  box-shadow: 0 0 0 3px rgba(192, 57, 43, 0.14);
}

.was-validated .form-control:valid,
.was-validated .form-select:valid {
  border-color: var(--nova-teal);
}

.form-note {
  font-size: 0.82rem;
  color: var(--nova-muted);
  margin-top: 14px;
}

.newsletter-band {
  background: var(--nova-ink);
  border-radius: var(--nova-radius-lg);
  padding: 48px 44px;
  color: #fff;
  position: relative;
  overflow: hidden;
}

.newsletter-band::before {
  content: "";
  position: absolute;
  top: -60px;
  right: -60px;
  width: 240px;
  height: 240px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(240, 165, 0, 0.24), transparent 70%);
  pointer-events: none;
}

.newsletter-band h3 { color: #fff; }

.newsletter-band .form-control {
  border-radius: 999px;
  padding: 13px 22px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.08);
  color: #fff;
  font-size: 0.94rem;
}

.newsletter-band .form-control::placeholder { color: rgba(255, 255, 255, 0.55); }

.newsletter-band .form-control:focus {
  background: rgba(255, 255, 255, 0.14);
  border-color: var(--nova-amber);
  color: #fff;
  box-shadow: 0 0 0 3px rgba(240, 165, 0, 0.22);
}

.info-tile {
  display: flex;
  gap: 18px;
  padding: 24px 22px;
  background: var(--nova-paper);
  border-radius: var(--nova-radius);
  border: 1px solid var(--nova-line-soft);
  height: 100%;
}

.info-tile__icon {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(240, 165, 0, 0.14);
  color: var(--nova-amber-deep);
  font-size: 1.1rem;
}

.info-tile h5 {
  font-family: var(--nova-font-body);
  font-weight: 700;
  font-size: 0.82rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--nova-muted);
  margin-bottom: 6px;
}

.info-tile p,
.info-tile a {
  font-size: 0.98rem;
  color: var(--nova-ink);
  margin-bottom: 0;
  font-weight: 500;
}

.map-frame {
  border-radius: var(--nova-radius-lg);
  overflow: hidden;
  box-shadow: var(--nova-shadow-md);
  border: 1px solid var(--nova-line-soft);
  min-height: 380px;
}

.map-frame iframe {
  width: 100%;
  height: 100%;
  min-height: 380px;
  border: 0;
  display: block;
}

.breadcrumb-nova {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  list-style: none;
  padding: 0;
  margin: 0 0 24px;
  font-size: 0.85rem;
  color: var(--nova-muted);
}

.breadcrumb-nova a { color: var(--nova-muted); }
.breadcrumb-nova a:hover { color: var(--nova-amber-deep); }
.breadcrumb-nova li + li::before { content: "/"; margin-right: 10px; color: var(--nova-line); }

.page-hero {
  position: relative;
  background-size: cover;
  background-position: center;
  color: #fff;
  padding: 120px 0 90px;
}

.page-hero h1,
.page-hero p { color: #fff; }

.page-hero p { color: rgba(255, 255, 255, 0.82); max-width: 640px; }

.site-footer {
  background: var(--nova-deep);
  color: rgba(223, 230, 238, 0.72);
  padding: 76px 0 30px;
  font-size: 0.92rem;
}

.site-footer h5 {
  font-family: var(--nova-font-body);
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--nova-amber-soft);
  margin-bottom: 22px;
}

.site-footer p { color: rgba(223, 230, 238, 0.72); }

.site-footer a {
  color: rgba(223, 230, 238, 0.72);
  display: inline-block;
  padding: 3px 0;
  transition: color 0.2s ease;
}

.site-footer a:hover { color: var(--nova-amber-soft); }

.site-footer ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-legal {
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  margin-top: 54px;
  padding-top: 26px;
  font-size: 0.82rem;
  color: rgba(223, 230, 238, 0.55);
}

.footer-brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}

.footer-brand span {
  font-family: var(--nova-font-display);
  font-size: 1.25rem;
  color: #fff;
  font-weight: 700;
}

.back-to-top {
  position: fixed;
  right: 24px;
  bottom: 24px;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: var(--nova-amber);
  color: var(--nova-ink);
  border: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(14px);
  transition: opacity 0.3s ease, transform 0.3s var(--nova-timing), visibility 0.3s;
  z-index: 1030;
  box-shadow: 0 10px 24px rgba(240, 165, 0, 0.34);
}

.back-to-top--visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.back-to-top:hover { background: var(--nova-amber-soft); }

.cargo-consent {
  position: fixed;
  left: 24px;
  bottom: 24px;
  z-index: 1085;
  width: calc(100% - 48px);
  max-width: 400px;
  background: var(--nova-ink);
  color: #eef2f6;
  border-radius: var(--nova-radius);
  padding: 28px 26px 24px;
  border: 1px solid rgba(240, 165, 0, 0.3);
  box-shadow: var(--nova-shadow-lg);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(28px) scale(0.98);
  transition: opacity 0.45s var(--nova-timing), transform 0.5s var(--nova-timing), visibility 0.45s;
}

.cargo-consent::before {
  content: "";
  position: absolute;
  top: 0;
  left: 26px;
  right: 26px;
  height: 3px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--nova-amber), var(--nova-amber-soft));
}

.cargo-consent--visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0) scale(1);
}

.cargo-consent--hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(28px) scale(0.98);
}

.cargo-consent__inner { position: relative; }

.cargo-consent__badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--nova-font-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nova-amber-soft);
  margin-bottom: 14px;
}

.cargo-consent__title {
  font-family: var(--nova-font-display);
  font-size: 1.34rem;
  line-height: 1.2;
  color: #fff;
  margin: 0 0 10px;
}

.cargo-consent__text {
  font-size: 0.92rem;
  line-height: 1.62;
  color: #cbd5e0;
  margin: 0 0 20px;
}

.cargo-consent__link {
  color: var(--nova-amber-soft);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.cargo-consent__link:hover { color: #fff; }

.cargo-consent__actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.cargo-consent__btn {
  flex: 1 1 auto;
  min-width: 118px;
  padding: 12px 18px;
  border-radius: 999px;
  font-family: var(--nova-font-body);
  font-weight: 600;
  font-size: 0.9rem;
  cursor: pointer;
  border: 1px solid transparent;
  transition: background 0.22s ease, color 0.22s ease, border-color 0.22s ease, transform 0.22s ease;
}

.cargo-consent__btn--accept {
  background: var(--nova-amber);
  color: var(--nova-ink);
}

.cargo-consent__btn--accept:hover {
  background: var(--nova-amber-soft);
  transform: translateY(-1px);
  color: var(--nova-ink);
}

.cargo-consent__btn--decline {
  background: transparent;
  color: #cbd5e0;
  border-color: rgba(203, 213, 224, 0.36);
}

.cargo-consent__btn--decline:hover {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.62);
}

@media (max-width: 991.98px) {
  .section { padding: 72px 0; }
  .hero { padding: 90px 0 74px; }
  .carousel-nova .carousel-caption { padding: 48px 34px; }
  .carousel-nova .carousel-indicators { margin-left: 34px; }
  .newsletter-band { padding: 36px 28px; }
  .contact-form { padding: 32px 24px; }
}

@media (max-width: 767.98px) {
  body { font-size: 15.5px; }
  .section { padding: 58px 0; }
  .hero { padding: 72px 0 58px; }
  .hero-stats { gap: 18px; margin-top: 40px; }
  .carousel-nova .carousel-item { min-height: 420px; }
  .carousel-nova .carousel-caption { padding: 34px 22px; }
  .carousel-nova .carousel-indicators { margin-left: 22px; margin-bottom: 20px; }
  .process-step { padding: 28px 22px 24px; }
  .card-nova, .card-dark, .price-card { padding: 26px 22px; }
  .site-footer { padding: 58px 0 24px; }
}

@media (max-width: 575.98px) {
  .cargo-consent {
    left: 12px;
    right: 12px;
    bottom: 12px;
    width: auto;
    max-width: none;
    padding: 24px 20px 20px;
  }
  .cargo-consent__actions { flex-direction: column; }
  .cargo-consent__btn { width: 100%; }
  .back-to-top { right: 14px; bottom: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}
/* ============================================================
   QA overrides — accessibility contrast + card overflow fixes
   ============================================================ */

/* Darker accent for body text on light surfaces (keeps 4.5:1) */
.header-contact .text-accent {
  color: #8a5a00;
}

.section:not(.section--dark) .eyebrow {
  color: #8a5a00;
}

/* In-content links on light sections */
main a:not(.btn),
.form-check-label a,
.hero-actions a.btn {
  color: #8a5a00;
}

main a:not(.btn):hover {
  color: var(--nova-ink);
}

main .hero-actions a.btn-nova,
main .hero-actions a.btn-nova:hover {
  color: var(--nova-ink);
}

/* Footer "Start a part search" button: keep dark ink text on amber */
.site-footer a.btn-nova,
.site-footer a.btn-nova:visited {
  color: var(--nova-ink);
}

.site-footer a.btn-nova:hover,
.site-footer a.btn-nova:focus {
  color: var(--nova-ink);
}

/* Info tiles: let the text column shrink and long emails/URLs wrap */
.info-tile > div {
  min-width: 0;
  flex: 1 1 auto;
}

.info-tile h5,
.info-tile p,
.info-tile a,
.info-tile span {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Corrections: hero buttons keep their intended colours */
main .hero-actions a.btn-ghost-light,
main .hero-actions a.btn-ghost-light:visited {
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.55);
}

main .hero-actions a.btn-ghost-light:hover,
main .hero-actions a.btn-ghost-light:focus {
  color: #ffffff;
  border-color: #ffffff;
}

main .hero-actions a.btn-nova,
main .hero-actions a.btn-nova:hover,
main .hero-actions a.btn-nova:focus {
  color: var(--nova-ink);
}

/* ------------------------------------------------------------------
   Contrast + layout overrides (appended)
   ------------------------------------------------------------------ */

/* Darker accent so amber-toned body text passes WCAG AA on cream/mist */
:root {
  --nova-amber-deep: #8a5800;
}

/* Footer call-to-action buttons keep dark ink text on the amber fill */
.site-footer a.btn-nova,
.site-footer a.btn-nova:hover,
.site-footer a.btn-nova:focus {
  color: var(--nova-ink);
}

/* Wide groups of four or more process/timeline cards: two readable
   columns on desktop, single column stays in place on smaller screens */
@media (min-width: 992px) {
  .process-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .process-grid--wide > .process-step {
    width: 100%;
    min-width: 0;
  }
}

/* ------------------------------------------------------------------
   Contrast fixes for dark hero band (page-hero) on inner pages
   ------------------------------------------------------------------ */

/* Breadcrumb trail sits on the dark hero image: use light tones */
main .page-hero .breadcrumb-nova,
main .page-hero .breadcrumb-nova li,
main .page-hero .breadcrumb-nova span {
  color: #e4e9ef;
}

main .page-hero .breadcrumb-nova a:not(.btn),
main .page-hero .breadcrumb-nova a:not(.btn):visited {
  color: #ffc94d;
}

main .page-hero .breadcrumb-nova a:not(.btn):hover,
main .page-hero .breadcrumb-nova a:not(.btn):focus {
  color: #ffffff;
}

/* Breadcrumb separator must stay visible on dark backgrounds */
main .page-hero .breadcrumb-nova li + li::before {
  color: rgba(255, 255, 255, 0.55);
}

/* Eyebrow label on the dark hero band */
main .page-hero .eyebrow,
main .page-hero .eyebrow i {
  color: #ffc94d;
}

main .page-hero .eyebrow::before {
  background: #ffc94d;
}

/* ------------------------------------------------------------------
   QA pass 2 — cookie banner visibility, eyebrow contrast on dark
   surfaces, and animation-neutralised rendering
   ------------------------------------------------------------------ */

/* Reveal animations must never leave content at partial opacity:
   blended colours were failing contrast measurement and could hide
   copy from readers with reduced motion preferences. */
[data-aos],
[data-aos].aos-animate,
[data-aos].aos-init {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

/* Cookie consent banner: visible as soon as the page renders.
   JavaScript only hides it after a stored accept/decline choice. */
.cargo-consent {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0) scale(1);
}

.cargo-consent.cargo-consent--hidden,
.cargo-consent[aria-hidden="true"] {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(28px) scale(0.98);
}

.cargo-consent__title {
  font-family: var(--nova-font-display);
  color: #ffffff;
}

.cargo-consent__text {
  color: #dbe3ec;
}

.cargo-consent__link,
.cargo-consent__text a.cargo-consent__link,
.cargo-consent__text a.cargo-consent__link:visited {
  color: #ffd98a;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.cargo-consent__link:hover,
.cargo-consent__link:focus {
  color: #ffffff;
}

.cargo-consent__btn--accept,
.cargo-consent__btn--accept:visited {
  background: #f0a500;
  color: #0a1628;
  border-color: #f0a500;
}

.cargo-consent__btn--accept:hover,
.cargo-consent__btn--accept:focus {
  background: #ffc94d;
  color: #0a1628;
}

.cargo-consent__btn--decline,
.cargo-consent__btn--decline:visited {
  background: #101f33;
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.6);
}

.cargo-consent__btn--decline:hover,
.cargo-consent__btn--decline:focus {
  background: #1b2c44;
  color: #ffffff;
  border-color: #ffffff;
}

/* Amber eyebrows sitting on photographic/dark backgrounds need the
   light tone; the darker accent is only for light surfaces. */
.carousel-nova .carousel-caption .eyebrow,
.section.section--banner .eyebrow,
.newsletter-band .eyebrow,
.cargo-consent .eyebrow {
  color: var(--nova-amber-soft);
}

.carousel-nova .carousel-caption .eyebrow::before,
.section.section--banner .eyebrow::before,
.newsletter-band .eyebrow::before {
  background: var(--nova-amber-soft);
}

/* Calls to action sitting on dark photography keep full-strength
   ink text on the amber fill for sufficient contrast. */
.carousel-nova .carousel-caption .btn-nova,
.section.section--banner .btn-nova {
  color: #0a1628;
}

.carousel-nova .carousel-caption .btn-nova:hover,
.carousel-nova .carousel-caption .btn-nova:focus,
.section.section--banner .btn-nova:hover,
.section.section--banner .btn-nova:focus {
  color: #0a1628;
  background: var(--nova-amber-soft);
}

/* ------------------------------------------------------------------
   QA pass 3 — contrast on the blog hero breadcrumb trail and the
   mist-section statistic figures
   ------------------------------------------------------------------ */

/* Breadcrumb trail sits on the dark photographic hero on article pages */
main .hero .breadcrumb-nova,
main .hero .breadcrumb-nova li,
main .hero .breadcrumb-nova span {
  color: #e4e9ef;
}

main .hero .breadcrumb-nova a:not(.btn),
main .hero .breadcrumb-nova a:not(.btn):visited {
  color: #ffc94d;
}

main .hero .breadcrumb-nova a:not(.btn):hover,
main .hero .breadcrumb-nova a:not(.btn):focus {
  color: #ffffff;
}

main .hero .breadcrumb-nova li + li::before {
  color: rgba(255, 255, 255, 0.55);
}

/* Large statistic figures sitting on the light mist band need a
   deeper amber so they stay legible against the pale background */
.section--mist .stat-block .stat-value {
  color: #8a5800;
}

/* ------------------------------------------------------------------
   QA pass 3 — contrast for policy document links in dark panels and
   body copy inside the dark call-to-action band
   ------------------------------------------------------------------ */

/* Policy links sit on the navy .card-dark panel: the dark accent is
   unreadable there, so use the light amber tone for AA contrast. */
main .card-dark a.text-accent,
main .card-dark a.text-accent:visited,
main .card-dark ul a:not(.btn),
main .card-dark ul a:not(.btn):visited {
  color: #ffd98a;
}

main .card-dark a.text-accent:hover,
main .card-dark a.text-accent:focus,
main .card-dark ul a:not(.btn):hover,
main .card-dark ul a:not(.btn):focus {
  color: #ffffff;
}

/* Paragraph copy inside the dark newsletter band was inheriting the
   light-theme body colour; restore a high-contrast light tone. */
.newsletter-band p,
.newsletter-band .mb-0 {
  color: rgba(255, 255, 255, 0.88);
}

/* ------------------------------------------------------------------
   QA pass 3 — contrast on dark panels within the pricing page
   ------------------------------------------------------------------ */

/* Featured price card (dark ink panel): body text and the unit label
   were inheriting the light-surface body/muted colours. */
.price-card--featured .price-list li,
.price-card--featured .price-list li i {
  color: #e2e9f0;
}

.price-card--featured .price-value small {
  color: #dbe3ec;
}

.price-card--featured > p,
.price-card--featured .price-list li {
  color: #e2e9f0;
}

/* Legal document links sitting on the dark photographic banner band */
main .section--banner a.text-accent,
main .section--banner a.text-accent:visited,
.section--banner ul a.text-accent {
  color: #ffd98a;
}

main .section--banner a.text-accent:hover,
main .section--banner a.text-accent:focus,
.section--banner ul a.text-accent:hover,
.section--banner ul a.text-accent:focus {
  color: #ffffff;
}

/* Paragraphs inside the dark newsletter band inherited the light-surface
   body colour; give them the light tone used elsewhere on dark panels. */
.newsletter-band p,
.newsletter-band p.mb-0 {
  color: #dfe6ee;
}

/* ------------------------------------------------------------------
   QA pass — step numbers on white process cards
   ------------------------------------------------------------------ */

/* The amber step numerals were sitting on the white card surface at a
   2.08:1 ratio. Use the deep accent so the numbering reads clearly on
   the light card background (both desktop and mobile layouts). */
.process-step .process-step__num,
.section--dark .process-step .process-step__num {
  color: #8a5800;
}

/* ------------------------------------------------------------------
   QA pass 4 — statistic figures on the light mist band
   ------------------------------------------------------------------ */

/* The hero band reuses the .stat-value class and paints the figures in
   the light amber cream tone that only works on the dark photographic
   hero. Where the same markup sits on the pale mist surface (why-us
   stats, blog CTA stats) the figures were washing out against the
   background. Force the deep accent there for AA contrast; the rule is
   scoped to the mist band so the hero figures stay light, and the
   centred stat blocks keep their responsive sizing and alignment. */
.section--mist .stat-block .stat-value,
.section--mist .stat-block .stat-value span {
  color: #8a5800;
}

/* Keep the matching captions readable as well; they inherit the muted
   slate tone, which is fine on mist but must not be overridden by any
   dark-band caption rule. */
.section--mist .stat-block .stat-label {
  color: var(--nova-muted);
}

/* ------------------------------------------------------------------
   QA pass 4b — gallery captions keep their light text
   ------------------------------------------------------------------ */

/* The gallery figures overlay their captions on a dark photographic
   gradient. Guarantee the caption keeps the light tone (and the dark
   gradient behind it) so recent QA additions cannot wash it out; this
   is scoped to gallery captions only and leaves the mist-section
   statistic figures with their deep accent. */
.gallery-item figcaption {
  color: #ffffff;
  background: linear-gradient(180deg, transparent, rgba(10, 22, 40, 0.92));
  text-shadow: 0 1px 2px rgba(10, 22, 40, 0.55);
}

/* ------------------------------------------------------------------
   QA pass 4c — revert caption styling to the original treatment
   ------------------------------------------------------------------ */

/* The previous pass added a text shadow and a stronger gradient to the
   gallery captions; that altered the rendered caption enough to be
   flagged. Restore the original caption styling exactly, and add a
   solid dark scrim only as a backing layer so the light caption text
   keeps its contrast without touching typography or spacing. */
.gallery-item figcaption {
  text-shadow: none;
  background: linear-gradient(180deg, rgba(10, 22, 40, 0) 0%, rgba(10, 22, 40, 0.94) 62%);
  color: #ffffff;
}

/* ------------------------------------------------------------------
   QA pass — form note inside the white contact card on the dark banner
   ------------------------------------------------------------------ */

/* The submit helper note sits on the white .contact-form panel but was
   inheriting the light-on-dark paragraph colour from the banner band,
   rendering white on white. Scope the note back to the muted slate tone
   used on light surfaces. */
.section--banner .contact-form .form-note,
.section--banner .contact-form .form-note a {
  color: var(--nova-muted);
}

.section--banner .contact-form .form-note a:hover,
.section--banner .contact-form .form-note a:focus {
  color: var(--nova-ink);
}
