/*! IGW motion tokens 0.1.1 (2026-09-22). Supersedes igwmotiontokens-0.1.0.css (3,506 bytes).

   The owner, 2026-09-22: "I'm not really noticing the entry animations on
   anything on the page. They may be happening too fast or as soon as the page
   loads." Three of the ten values move, one is added, and one rule joins the
   sheet. Everything else — the purpose of the file, the reduced-motion block,
   the pin position — is 0.1.0's and its header is kept below.

   RETUNED   --igw-dur-reveal    500ms -> 700ms
             --igw-stagger        60ms ->  90ms
             --igw-reveal-rise    24px ->  32px
             --igw-headline-rise  12px ->  18px
   ADDED     --igw-dur-headline  900ms   (was a 600 ms constant inside
                                          igweditorialmotion; 0.3.1 reads this)
   UNCHANGED --igw-dur-fast, --igw-dur-panel, --igw-dur-camera (the globe's
             entrance is tuned separately), the three curves.

   THE PRE-PAINT HOLD. A hero headline sits above the fold, so no scroll can
   reveal it and the only entrance it can have is on load. The footer module
   that animates it starts seconds after first paint, and hiding copy that has
   been painted is a blink, not an entrance — which is why 0.3.0 left every
   ungated hero alone. So the hidden state is declared HERE, before first paint,
   and only under html[data-igw-motion-pre="1"]: an attribute a ~300-byte inline
   script in the site head sets when prefers-reduced-motion is not requested
   and the navigation is a fresh 'navigate'. No script -> no attribute -> this
   rule matches nothing and nothing is ever hidden. The rule holds a hero head's
   kicker, heading and lede at opacity 0, and carries a CSS animation that
   forces opacity back to 1 after 2.5 s: if igweditorialmotion never runs (blocked,
   failed, a page it does not know) the copy appears on its own, late but never
   lost. igweditorialmotion 0.3.1 takes over earlier than that on a healthy
   load: it marks the same parts pending, starts the entrance and removes the
   attribute in one task. The selectors are 0.3.x's HERO_HEADS and its
   kicker/lede vocabulary, direct children only, transcribed rather than
   generalised; :is() failing to parse in an old engine drops the whole rule,
   which is the safe direction. Under reduced motion the attribute is never set;
   the media block below neutralises the rule anyway.

   ---- 0.1.0 header ----
   Every module that moves something on this site has so far carried its own
   duration and its own curve, written where it was needed: the nav toggle's
   .15s ease-out in the Webflow stylesheet, the editorial reveal's .7s, the
   camera's BACK_MS of 760, the panel transitions written inline. Nothing was
   wrong with any one of them and no two of them agreed, so a reader crossing
   two modules in one gesture met two different tempos.

   This block is the one place those numbers are declared. It sets custom
   properties on :root and, since 0.1.1, one attribute-gated rule; adding it to
   a page cannot change a rendered pixel until a module reads a token or the
   inline script sets the attribute.

       --igw-dur-fast     control feedback, hover
       --igw-dur-panel    panels open/close, cross-fade
       --igw-dur-reveal   section reveals
       --igw-dur-headline headline (kicker / heading wipe / lede) reveals
       --igw-dur-camera   globe fly-to, entrance
       --igw-stagger      grid children, max six then the rest together
       --igw-reveal-rise  how far a section rises into place
       --igw-headline-rise  the shorter rise a headline gets

   Under prefers-reduced-motion: reduce every duration and every distance is
   zero, so a module that reads a token gets reduced motion for free. The
   EASING curves are deliberately NOT zeroed: a curve applied over 0ms is a
   no-op, and leaving them declared means a module can read them
   unconditionally.

   JS reads these through IGWM.tokens() in igwmotioncore 0.2.0 and through
   igweditorialmotion's own readTokens(); both carry defaults for a page without
   this sheet (motioncore's defaults are still the 0.1.0 numbers and are only
   used when the sheet is absent — noted, not bumped, in this round).

   Pin position: SITE HEAD, after the two typekit preconnects and before any
   module stylesheet; the igwmotionpre inline script goes immediately BEFORE
   this link so the attribute exists when this rule is parsed. */
:root{
  --igw-dur-fast:150ms;      /* control feedback, hover */
  --igw-dur-panel:280ms;     /* panels open/close, cross-fade */
  --igw-dur-reveal:700ms;    /* section reveals (0.1.0: 500ms) */
  --igw-dur-headline:900ms;  /* headline reveals (new in 0.1.1) */
  --igw-dur-camera:900ms;    /* globe fly-to, entrance */
  --igw-ease-out:cubic-bezier(.2,.7,.2,1);
  --igw-ease-std:cubic-bezier(.4,0,.2,1);
  --igw-ease-in:cubic-bezier(.4,0,1,1);
  --igw-stagger:90ms;        /* (0.1.0: 60ms) */
  --igw-reveal-rise:32px;    /* (0.1.0: 24px) */
  --igw-headline-rise:18px;  /* (0.1.0: 12px) */
}
/* Pre-paint hold for hero headlines: only under the attribute the inline igwmotionpre script sets,
   released by igweditorialmotion 0.3.1 when its entrance starts, and by the 2.5 s safety below if
   nothing else does. Direct children only, the same parts the module animates. */
html[data-igw-motion-pre="1"] :is(.igw2-hero-content,section.igw2-editorial-hero,.igw2-explore-copy,.igw2-launches-hero-copy,.igw2-starship-hero-copy,.igw2-editorial-hero .igw2-about-inner,.igw2-entity-hero .igw2-article-inner,main.igw2-article-shell > .igw2-article-inner) > :is(h1,h2,.igw2-kicker,.igw2-eyebrow,.igwsb-kicker,.igwss3d-kicker,.igw2-lede,.igw2-section-copy,.igw2-article-summary){
  opacity:0;
  animation:igw-motion-pre-safety 1ms linear 2.5s forwards;
}
@keyframes igw-motion-pre-safety{to{opacity:1}}
@media (prefers-reduced-motion:reduce){
  :root{--igw-dur-fast:0ms;--igw-dur-panel:0ms;--igw-dur-reveal:0ms;--igw-dur-headline:0ms;--igw-dur-camera:0ms;--igw-stagger:0ms;--igw-reveal-rise:0px;--igw-headline-rise:0px}
  html[data-igw-motion-pre="1"] :is(.igw2-hero-content,section.igw2-editorial-hero,.igw2-explore-copy,.igw2-launches-hero-copy,.igw2-starship-hero-copy,.igw2-editorial-hero .igw2-about-inner,.igw2-entity-hero .igw2-article-inner,main.igw2-article-shell > .igw2-article-inner) > *{opacity:1;animation:none}
}
