/* NEBESA display system. Heading containers, not viewport width, determine fit. */
@font-face {
  font-family: 'NEBESA Poster';
  src: url('/assets/nebesa-poster-regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
.heading-frame {
  container: heading / inline-size;
  min-width: 0;
  width: 100%;
  max-width: 100%;
}
/* This specificity intentionally supersedes the old per-section Archivo sizes. */
.nebesa-type main .poster-heading {
  --heading-current: var(--heading-fluid);
  --heading-max: 38px;
  font-family: 'NEBESA Poster', Archivo, sans-serif;
  font-size: 30px;
  font-size: min(var(--heading-max), var(--heading-current));
  font-weight: 400;
  font-style: normal;
  font-synthesis: none;
  line-height: 1.10;
  letter-spacing: .08em;
  text-transform: uppercase;
  text-wrap: initial;
  overflow-wrap: normal;
  word-break: normal;
  margin: 0;
  max-width: 100%;
}
.nebesa-type main h1.poster-heading {
  --heading-max: 54px;
  letter-spacing: .12em;
  line-height: 1.08;
}
.nebesa-type .cinematic-hero .poster-heading { --heading-max: 46px; }
.nebesa-type main .poster-heading :is(span, em, strong) {
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  font-style: normal;
  letter-spacing: inherit;
  line-height: inherit;
}
.nebesa-type .poster-heading .heading-line { display: block; white-space: nowrap; }
.nebesa-type .poster-heading .heading-chunk { display: inline; }
.nebesa-type .poster-heading .heading-accent { color: var(--blue); }
.nebesa-type .dark-panel .heading-accent,
.nebesa-type .defense-hero .heading-accent,
.nebesa-type .footage-wall .heading-accent { color: #9ab9ff; }
.nebesa-type .programme-intro .heading-accent { color: var(--ink); }
.nebesa-type .poster-heading .line-mask {
  display: block;
  overflow: hidden;
  padding: .04em .015em .12em;
  margin: -.04em -.015em -.12em;
}
.nebesa-type .poster-heading.is-revealed .line-mask { overflow: visible; }
.nebesa-type .poster-heading .line-reveal { display: block; transform-origin: 0 100%; }
/* Short, authored phrase groups replace accidental one-word wraps. */
@container heading (max-width: 480px) {
  .nebesa-type main .poster-heading {
    --heading-current: var(--heading-fluid-compact);
    --heading-max: 32px;
    line-height: 1.12;
  }
  .nebesa-type main h1.poster-heading { --heading-max: 42px; line-height: 1.10; }
  .nebesa-type .poster-heading .heading-chunk { display: block; }
}
/* Preserve section rhythm now that the display headings have tighter leading. */
.nebesa-type .platform-story .heading-frame { margin: 18px 0 24px; }
.nebesa-type .page-cta .heading-frame { margin-top: 24px; }
.nebesa-type .footage-heading .heading-frame { margin-top: 32px; }
.nebesa-type .enquiry-intro .heading-frame { margin-bottom: 26px; }
.nebesa-type .visual-column > .heading-frame { margin-bottom: 30px; }
.nebesa-type .cinematic-hero .hero-copy { width: 46%; max-width: 560px; }
.nebesa-type .cinematic-hero .hero-description { max-width: 47ch; line-height: 1.55; margin-top: 24px; }
.nebesa-type :is(.page-hero-grid,.vision-grid,.split-intro,.engine-heading,.contact-grid,.platform-row,.enquiry-layout) > * { min-width: 0; }
.nebesa-type :is(.home-app-grid,.home-platform-grid,.milestone-timeline,.track-grid,.three-columns) h3 { line-height: 1.22; text-wrap: balance; }
.nebesa-type :is(.page-deck,.vision-body p,.engine-description p,.split-intro > p,.contact-copy p) { text-wrap: pretty; }
.nebesa-type :is(.footer-email,.contact-direct-email,.contact-email) { overflow-wrap: anywhere; }
@media (max-width: 720px) {
  .nebesa-type .cinematic-hero .hero-copy { width: calc(100% - 48px); max-width: none; }
  .nebesa-type .cinematic-hero .hero-description { font-size: 14px; line-height: 1.55; max-width: 40ch; margin-top: 18px; }
  .nebesa-type .split-intro > .heading-frame { margin-bottom: 30px; }
  .nebesa-type .page-cta .heading-frame { margin-bottom: 28px; }
  .nebesa-type .footage-heading .heading-frame { margin-top: 24px; }
}
@media (prefers-reduced-motion: reduce) {
  .nebesa-type .poster-heading .line-mask { overflow: visible; }
}
