:root {
  /* Concept 43 brand-guide values supplied by the project owner. */
  --shell-black: #0A0A0A;
  --deep-charcoal: #161616;
  --bone-white: #F5F5F5;
  --soft-gray: #A6A6A6;
  --ignition-orange: #FF5A00;
  --solar-yellow: #FFD400;
  --signal-lime: #B7FF00;
  --line: rgba(245,245,245,.16);
  --line-soft: rgba(245,245,245,.09);
  --max: 1460px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--shell-black);
  color: var(--bone-white);
  /* System UI typography is the adopted website typeface (D-013). No webfont and no
     external font/CDN is loaded; "Poppins" was removed because it never resolved. */
  font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}
body.nav-open { overflow: hidden; }
/* height:auto keeps the intrinsic aspect ratio whenever only a width is set, so the
   width/height attributes act purely as a layout-shift hint and can never stretch a mark. */
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
.site-shell { width: min(calc(100% - 52px), var(--max)); margin-inline: auto; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skip-link { position:fixed; left:18px; top:-80px; z-index:200; padding:10px 14px; background:var(--signal-lime); color:#000; font-weight:800; text-decoration:none; }
.skip-link:focus { top:18px; }

.site-header { position:fixed; inset:0 0 auto; z-index:80; border-bottom:1px solid transparent; transition:background .25s ease,border-color .25s ease,backdrop-filter .25s ease; }
.site-header.is-scrolled { background:rgba(10,10,10,.86); border-color:var(--line-soft); backdrop-filter:blur(16px); }
.nav-shell { min-height:72px; display:flex; align-items:center; justify-content:space-between; gap:28px; }
.brand-lockup { display:inline-flex; align-items:center; text-decoration:none; }
/* Lockup widths are far below the 1525px native width of the owner-accepted
   production asset, so every placement downscales and never upscales. */
.brand-lockup img { width:168px; }
.site-nav { display:flex; align-items:center; gap:54px; font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.site-nav a { position:relative; text-decoration:none; color:#e8e8e8; }
.site-nav a::after { content:""; position:absolute; left:0; right:100%; bottom:-19px; height:2px; background:linear-gradient(90deg,var(--solar-yellow),var(--signal-lime)); transition:right .2s ease; }
.site-nav a:hover::after,.site-nav a:focus-visible::after { right:0; }
.nav-toggle { display:none; width:42px; height:42px; border:0; background:transparent; position:relative; }
.nav-toggle span:not(.sr-only) { position:absolute; left:8px; right:8px; height:2px; background:var(--bone-white); }
.nav-toggle span:nth-child(2) { top:15px; }
.nav-toggle span:nth-child(3) { top:25px; }

.hero { min-height:760px; position:relative; overflow:hidden; display:flex; align-items:center; padding:132px 0 70px; border-bottom:1px solid var(--line-soft); }
/* Hero grid is balanced so the headline column can hold each authored line on a
   single visual line at common desktop widths without shrinking the brand symbol. */
.hero-grid { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:48px; position:relative; z-index:2; }
.hero-copy { max-width:780px; }
.section-index { margin:0 0 22px; color:var(--ignition-orange); font-size:.78rem; font-weight:900; letter-spacing:.11em; text-transform:uppercase; }
.hero h1 { margin:0; max-width:none; font-size:clamp(2.7rem,5.3vw,5.1rem); line-height:.92; letter-spacing:-.06em; text-transform:uppercase; }
.hero h1 span,.section-contact h2 span { color:var(--ignition-orange); }
.hero-lede { max-width:560px; margin:28px 0 0; color:#c7c7c7; font-size:1.08rem; line-height:1.6; }
.hero-actions { display:flex; flex-wrap:wrap; gap:16px; margin-top:32px; }
.button { min-height:50px; display:inline-flex; align-items:center; justify-content:center; gap:18px; padding:0 28px; border:0; border-radius:3px; text-decoration:none; text-transform:uppercase; font-size:.72rem; font-weight:900; letter-spacing:.025em; transition:transform .18s ease,filter .18s ease,border-color .18s ease; }
.button:hover { transform:translateY(-2px); }
.button-primary { color:#050505; background:linear-gradient(90deg,var(--ignition-orange) 0%,var(--solar-yellow) 53%,var(--signal-lime) 100%); }
.button-primary:hover { filter:brightness(1.08); }
.button-disabled { cursor:not-allowed; opacity:.9; }
.button-disabled:hover { transform:none; }
/* RW-R2B: hero reduced to the mark alone. The ambient orange haze layer, the
   radiating lime rings and their animation were removed at the owner's direction;
   only a soft static drop shadow remains for depth. */
.hero-mark { justify-self:center; width:min(100%,610px); position:relative; filter:drop-shadow(0 26px 40px rgba(0,0,0,.55)); }
.hero-mark img { width:100%; height:auto; }

.section { padding:86px 0; border-bottom:1px solid var(--line-soft); }
/* RW-R2C correction: the heading column is fluid and the split-section headings are
   capped so their longest word ("ROCKETSHELL", "BUSINESSES.") always fits inside the
   column. Previously the column was a fixed 300px while the heading scaled with the
   viewport, so on wide desktop the heading overran into the content column. */
.split-section { display:grid; grid-template-columns:minmax(0,.38fr) minmax(0,1fr); gap:56px; align-items:start; }
.split-section > * { min-width:0; }
.split-section .section-heading h2 { font-size:clamp(2rem,3.1vw,3.5rem); }
.section-heading h2,.philosophy-copy > h2,.operating-graphic > h2,.section-contact h2 { margin:0; text-transform:uppercase; font-size:clamp(2rem,3.35vw,4rem); line-height:.92; letter-spacing:-.045em; }
.section-heading > p:not(.section-index) { margin:20px 0 0; color:var(--soft-gray); font-size:.98rem; line-height:1.6; }

/* RW-R2C copy blocks. Existing tokens and existing type scale only — no new
   colour, effect or layout system. `.copy-emph` carries the approved copy's
   bold emphasis lines; `.sub-label` carries its one sub-heading. */
.section-body { max-width:62ch; }
/* In 04/05 the copy block sits directly under its heading, so it needs the
   separation the grid columns give it elsewhere. */
h2 + .section-body { margin-top:26px; }
.section-body > p { margin:0 0 18px; color:var(--soft-gray); font-size:.98rem; line-height:1.6; }
.section-body > p:last-child { margin-bottom:0; }
.copy-emph { color:var(--bone-white); font-weight:600; }
.hero-copy .copy-emph { max-width:560px; margin:18px 0 0; font-size:1.02rem; line-height:1.5; }
.sub-label { margin:30px 0 10px; color:var(--ignition-orange); font-size:.78rem; font-weight:900; letter-spacing:.11em; text-transform:uppercase; }


/* Inline SVG UI icon system. Single sprite, no external dependency. Icons inherit
   colour via currentColor and are decorative (aria-hidden) everywhere they appear. */
.icon-sprite { position:absolute; width:0; height:0; overflow:hidden; }
.icon { display:block; width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; }
.process-icon .icon { width:31px; height:31px; }
.button .icon { width:15px; height:15px; stroke-width:2.1; }

.section-process { background:#080909; }
.process-layout { grid-template-columns:minmax(0,.38fr) minmax(0,1fr); }
.process-track { list-style:none; margin:0; padding:12px 0 0; display:grid; grid-template-columns:repeat(6,1fr); position:relative; }
/* RW-R3A: the drawn-out state is the default, so the connector is present and the
   section reads correctly when site.js never runs. `.is-armed` (added by the script,
   only once it is actually executing) collapses it so the draw can play. */
.process-track::before { content:""; position:absolute; left:7%; right:7%; top:53px; height:1px; background:linear-gradient(90deg,var(--solar-yellow),var(--signal-lime)); opacity:.64; transform:scaleX(1); transform-origin:left center; transition:transform 1.5s cubic-bezier(.4,0,.2,1); }
.process-track.is-armed::before { transform:scaleX(0); }
.process-track.is-visible::before { transform:scaleX(1); }

/* Progressive step reveal. The connector draws left-to-right on desktop and the
   steps energize in order; once stacked on mobile the same order reads top-to-bottom.
   Transform/opacity only — no layout shift, and the copy is readable without motion.
   RW-R3A: the settled state is the default; the hidden start state applies only while
   `.is-armed` is present, so a blocked or unparsable script leaves all six steps legible. */
.process-track li { position:relative; text-align:center; padding:0 4px; --step-delay:0ms; opacity:1; transform:none; transition:opacity .62s ease var(--step-delay), transform .62s ease var(--step-delay); }
.process-track.is-armed li { opacity:0; transform:translateY(10px); }
.process-track.is-visible li { opacity:1; transform:none; }
.process-track li:nth-child(1) { --step-delay:120ms; }
.process-track li:nth-child(2) { --step-delay:270ms; }
.process-track li:nth-child(3) { --step-delay:420ms; }
.process-track li:nth-child(4) { --step-delay:570ms; }
.process-track li:nth-child(5) { --step-delay:720ms; }
.process-track li:nth-child(6) { --step-delay:870ms; }
.process-icon { width:78px; height:78px; border:1px solid rgba(183,255,0,.72); border-radius:50%; margin:0 auto 16px; background:#0e0f0f; display:grid; place-items:center; color:var(--signal-lime); font-size:2rem; position:relative; z-index:1; box-shadow:0 0 0 4px rgba(183,255,0,.05),0 0 18px rgba(183,255,0,.14); transition:border-color .7s ease var(--step-delay), box-shadow .7s ease var(--step-delay); }
.process-track.is-armed .process-icon { border-color:rgba(183,255,0,.42); box-shadow:none; }
.process-track.is-visible .process-icon { border-color:rgba(183,255,0,.72); box-shadow:0 0 0 4px rgba(183,255,0,.05),0 0 18px rgba(183,255,0,.14); }
.process-track strong { display:block; text-transform:uppercase; font-size:.84rem; }
.process-track p { margin:8px auto 0; max-width:none; color:var(--soft-gray); font-size:.82rem; line-height:1.55; }

.section-platform { background:#090a0a; }
.platform-diagram { min-height:280px; border:1px solid var(--line); border-radius:5px; padding:22px 24px 26px; background:linear-gradient(180deg,#171818,#0d0e0e); position:relative; overflow:hidden; }
.platform-root { display:flex; flex-direction:column; align-items:center; gap:15px; }
.platform-root img { width:180px; }
.platform-root > span { min-width:430px; text-align:center; padding:8px 20px; border:1px solid rgba(183,255,0,.35); border-radius:3px; color:var(--signal-lime); text-transform:uppercase; font-size:.75rem; font-weight:800; letter-spacing:.06em; }
.platform-lines { width:58%; height:45px; margin:0 auto; border-left:1px solid rgba(183,255,0,.45); border-right:1px solid rgba(183,255,0,.45); border-top:1px solid rgba(183,255,0,.45); transform:translateY(22px); }
.brand-slots { display:grid; grid-template-columns:repeat(3,1fr); gap:28px; position:relative; z-index:1; }
.brand-slots article { min-height:78px; border:1px solid var(--line); border-radius:4px; display:flex; flex-direction:column; align-items:center; justify-content:center; background:#121313; }
.brand-slots strong { text-transform:uppercase; }

.section-philosophy { padding:0; }
.philosophy-grid { display:grid; grid-template-columns:1.02fr .98fr; width:min(100%,var(--max)); }
.philosophy-copy,.operating-graphic { padding:72px 48px; min-height:520px; }
.philosophy-copy { border-right:1px solid var(--line-soft); }
.operating-graphic { position:relative; }
.orbit-graphic { width:min(100%,500px); aspect-ratio:1.65/1; margin:44px auto 0; position:relative; display:grid; place-items:center; }
.orbit-graphic::before,.orbit-graphic::after { content:""; position:absolute; border:1px solid rgba(183,255,0,.34); border-radius:50%; }
.orbit-graphic::before { width:82%; height:64%; }
.orbit-graphic::after { width:62%; height:45%; }
.orbit-graphic img { width:145px; position:relative; z-index:2; }
.orbit-label { position:absolute; color:var(--solar-yellow); font-size:.74rem; font-weight:800; text-transform:uppercase; }
.l1{top:0;left:46%}.l2{top:17%;right:5%}.l3{top:46%;right:-2%}.l4{bottom:13%;right:8%}.l5{bottom:0;left:47%}.l6{bottom:13%;left:3%}.l7{top:48%;left:-1%}.l8{top:18%;left:5%}

.section-contact { position:relative; overflow:hidden; padding:50px 0 54px; }
.contact-grid { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:70px; position:relative; z-index:2; }
.contact-action { max-width:520px; justify-self:end; }
.contact-action p { color:#c8c8c8; font-size:1.02rem; line-height:1.6; }
.contact-action small { display:block; margin-top:12px; color:#8f8f8f; font-size:.78rem; line-height:1.5; }
/* RW-R2B: the celestial/planetary arc behind the final CTA was removed at the
   owner's direction. The section keeps its structure on a plain dark background. */

.site-footer { padding:26px 0; border-top:1px solid var(--line-soft); }
.footer-grid { display:grid; grid-template-columns:1fr 1fr auto; align-items:center; gap:30px; color:#9a9a9a; font-size:.8rem; }
.footer-brand img { width:158px; }
.footer-grid p { margin:0; }
.footer-links { display:flex; gap:34px; text-transform:uppercase; }

/* RW-R3A progressive enhancement (corrects RW-R3-L0-001).
   The default state below is the *settled* state, so the full approved narrative is
   readable whenever HTML and CSS load — including when assets/js/site.js is blocked,
   missing, served with the wrong MIME type, or fails to parse. `.is-armed` is added by
   site.js per element, immediately before that element is observed, so the hidden start
   state can only ever exist while the script is genuinely executing; if arming throws,
   the script removes it again. `.is-visible` remains the accepted end state and, being
   declared last at equal specificity, always wins over `.is-armed`. */
.reveal { opacity:1; transform:none; transition:opacity .62s ease,transform .62s ease; }
.reveal.is-armed { opacity:0; transform:translateY(16px); }
.reveal.is-visible { opacity:1; transform:none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; transition-delay:0ms !important; animation-delay:0ms !important; }
  /* RW-R3A: `.is-armed` is also neutralised here, so a reduced-motion visitor is legible
     even if the script were ever to arm under this preference. site.js does not arm under
     reduced motion; this is the second line of defence, not the first. */
  .reveal,.reveal.is-armed { opacity:1 !important; transform:none !important; }
  /* The hero motion layer was removed outright in RW-R2B, so only the process
     progression needs neutralising here; every step stays legible in its final state. */
  .process-track::before { transform:scaleX(1) !important; }
  .process-track li { opacity:1 !important; transform:none !important; }
  .process-track .process-icon { border-color:rgba(183,255,0,.72) !important; box-shadow:none !important; }
}

@media (max-width: 1100px) {
  .hero-grid { grid-template-columns:1fr 1fr; gap:20px; }
  .split-section,.process-layout { grid-template-columns:1fr; }
  .section-heading { max-width:760px; }
  .process-track { margin-top:18px; }
  .philosophy-grid { grid-template-columns:1fr; }
  .philosophy-copy { border-right:0; border-bottom:1px solid var(--line-soft); }
}

@media (max-width: 820px) {
  .site-shell { width:min(calc(100% - 32px),var(--max)); }
  .nav-toggle { display:block; }
  /* RW-R3A (corrects RW-R3-L1-001): the closed panel is `visibility:hidden`, which takes
     its links out of the tab order — `opacity:0` and `pointer-events:none` stop the mouse
     but leave keyboard focus able to land on three invisible off-screen links. Visibility
     is switched with a 0s transition delayed by the panel's own .2s, so hiding happens only
     after the accepted slide/fade-out has finished playing; opening flips it immediately
     (0s delay) so the links are focusable for the whole open animation. */
  .site-nav { position:fixed; inset:72px 0 auto; display:grid; gap:0; padding:16px 24px 28px; background:rgba(10,10,10,.97); border-bottom:1px solid var(--line); transform:translateY(-125%); opacity:0; visibility:hidden; pointer-events:none; transition:transform .2s ease,opacity .2s ease,visibility 0s linear .2s; }
  .site-nav.is-open { transform:none; opacity:1; visibility:visible; pointer-events:auto; transition:transform .2s ease,opacity .2s ease,visibility 0s linear 0s; }
  .site-nav a { padding:14px 0; }
  .site-nav a::after { display:none; }
  .hero { min-height:auto; padding:120px 0 60px; }
  .hero-grid { grid-template-columns:1fr; }
  /* Headline is full-width once stacked, so it can carry more scale again. */
  .hero h1 { font-size:clamp(3.2rem,7.4vw,5.4rem); }
  .hero-copy { order:1; }
  .hero-mark { order:2; width:min(82vw,500px); margin-top:16px; }
  .process-track { grid-template-columns:repeat(3,1fr); row-gap:38px; }
  .process-track::before { display:none; }
  .platform-root > span { min-width:0; width:80%; }
  .brand-slots { gap:10px; }
  .contact-grid { grid-template-columns:1fr; }
  .contact-action { justify-self:start; }
  .footer-grid { grid-template-columns:1fr; }
}

@media (max-width: 560px) {
  .brand-lockup img { width:150px; }
  .hero h1 { font-size:clamp(3.45rem,17vw,5.1rem); }
  .hero-lede { font-size:1rem; }
  .hero-actions { flex-direction:column; }
  .button { width:100%; }
  .section { padding:68px 0; }

  /* R1-C: the six process steps become a full-width vertical list so the
     microcopy stays readable instead of being squeezed into narrow columns. */
  .process-track { grid-template-columns:1fr; row-gap:0; padding-top:4px; }
  .process-track li { display:grid; grid-template-columns:54px 1fr; column-gap:16px; align-items:start; text-align:left; padding:15px 0; border-bottom:1px solid var(--line-soft); }
  .process-track li:last-child { border-bottom:0; }
  .process-icon { grid-row:1 / span 2; width:54px; height:54px; margin:0; font-size:1.5rem; }
  .process-icon .icon { width:25px; height:25px; }
  .process-track strong { align-self:center; font-size:.94rem; }
  .process-track p { margin:5px 0 0; max-width:none; font-size:.88rem; }

  /* RW-R2C correction: on narrow mobile the connector is hidden, which previously
     left the shared-layer box sitting directly on the first business card with 0px
     between them. Spacing is now explicit so each region reads as its own block. */
  .platform-diagram { padding:26px 18px 28px; }
  .platform-lines { display:none; }
  .platform-root { gap:22px; }
  .platform-root > span { width:100%; }
  .brand-slots { grid-template-columns:1fr; gap:16px; margin-top:22px; }
  .brand-slots article { min-height:70px; }
  .philosophy-copy,.operating-graphic { padding:58px 18px; min-height:auto; }

  /* R1-D: the desktop orbit geometry is too dense at this width, so the same
     Concept 43 symbol and the same eight operating elements are re-presented as
     a compact grid beneath the symbol. Desktop keeps the orbit. */
  .orbit-graphic { width:100%; aspect-ratio:auto; margin-top:34px; display:grid; grid-template-columns:repeat(2,1fr); gap:10px; place-items:stretch; }
  .orbit-graphic::before,.orbit-graphic::after { display:none; }
  .orbit-graphic img { grid-column:1 / -1; width:128px; margin:0 auto 6px; }
  .orbit-label { position:static; padding:13px 8px; border:1px solid rgba(183,255,0,.3); border-radius:4px; background:rgba(245,245,245,.03); font-size:.82rem; text-align:center; }

  .footer-links { gap:20px; }
}
