/* Regen8 webfonts, embedded. The artifact's security policy allows no font
   host but Google, so the brand faces travel with the page as data URIs.
   Srotone display, Salena body, Pixotype label, per tokens/fonts.css.
   IBM Plex Mono is the machine/system face for the ASCII film, terminal
   interfaces, and masthead: they need a fixed pitch and Pixotype is
   proportional (i 202, W 807). */
@font-face{font-family:'Srotone';font-weight:500;font-style:normal;font-display:swap;src:url(data:font/woff2;base64,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) format('woff2')}
@font-face{font-family:'Salena';font-weight:400;font-style:normal;font-display:swap;src:url(data:font/woff2;base64,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) format('woff2')}
@font-face{font-family:'Salena';font-weight:500;font-style:normal;font-display:swap;src:url(data:font/woff2;base64,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) format('woff2')}
@font-face{font-family:'Pixotype';font-weight:400;font-style:normal;font-display:swap;src:url(data:font/woff2;base64,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) format('woff2')}

:root{
    --graphite:#121212; --bone:#F2ECDE; --ember:#FF3B18; --paper:#FAF6EC;
    --ascii-ground:var(--graphite); --ascii-glyph:var(--bone);
    --font-display:"Srotone", ui-sans-serif, system-ui, sans-serif;
    --font-body:"Salena", ui-sans-serif, system-ui, sans-serif;
    --font-label:"Pixotype", ui-monospace, monospace;
    --font-grid:"IBM Plex Mono", ui-monospace, monospace;
    /* One global contract for every page whose primary job is a form.
       Pixotype carries the page title and actions; the form itself stays on
       the true fixed-pitch grid so prompts, arrows and fields align. */
    --font-form-hero:var(--font-label);
    --motion-scrub-enabled:1;
  }
  @media (prefers-reduced-motion:reduce){ :root{ --motion-scrub-enabled:0; } }
  *{box-sizing:border-box} html,body{margin:0;background:var(--graphite);}
  body{font-family:var(--font-body);color:var(--bone);}

  .skip-link{
    position:fixed; left:16px; top:8px; z-index:50;
    transform:translateY(-160%); padding:12px 16px;
    background:var(--ember); color:#fff; text-decoration:none;
  }
  .skip-link:focus{ transform:translateY(0); }

  [data-film]{ position:fixed; inset:0; z-index:0; }
  [data-film] canvas{ position:absolute; inset:0; width:100%; height:100%; display:block; }
  [data-film] video{ position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }

  /* The scrim follows the copy. Four channels, one per placement, cross-faded
     by the renderer from whichever block is on screen. A single left-weighted
     veil was fine while every section sat on the left; the moment copy crosses
     to the right it lands on bare film and stops being readable. */
  .veil, .veil-r, .veil-c, .veil-f{ position:fixed; inset:0; z-index:1;
                                    pointer-events:none; }
  .veil{ background:linear-gradient(90deg, rgba(18,18,18,.93) 0%, rgba(18,18,18,.70) 40%,
         rgba(18,18,18,.18) 72%, rgba(18,18,18,0) 100%);
         opacity:calc(var(--veil-l,1) * (1 - var(--film-white))); }
  .veil-r{ background:linear-gradient(270deg, rgba(18,18,18,.93) 0%, rgba(18,18,18,.70) 40%,
           rgba(18,18,18,.18) 72%, rgba(18,18,18,0) 100%);
           opacity:calc(var(--veil-r,0) * (1 - var(--film-white))); }
  .veil-c{ background:radial-gradient(ellipse 62% 74% at 50% 50%, rgba(18,18,18,.90) 0%,
           rgba(18,18,18,.72) 46%, rgba(18,18,18,0) 86%);
           opacity:calc(var(--veil-c,0) * (1 - var(--film-white))); }
  .veil-f{ background:rgba(18,18,18,.78);
           opacity:calc(var(--veil-f,0) * (1 - var(--film-white))); }

  .copy{ position:fixed; inset:0; z-index:2; pointer-events:none; }
  .blk{ position:absolute; left:0; right:0; top:50%; transform:translateY(-50%); }
  .inner{ width:min(1200px,calc(100% - 96px)); margin:0 auto; }

  /* The copy is hidden only once the film script has said it is going to
     drive it. This is the same contract reveal.js already keeps for the
     document pages, and for the same reason: a script that throws before
     it claims the page must leave a readable page behind, not a black
     screen. Without the class, every block sits at full opacity and the
     home page reads as a plain dark document. */
  html.film-drive .blk{ opacity:0; }
  html.film-drive .inner > *{ opacity:0; }
  .eyebrow{ font-family:var(--font-label); font-size:12px; letter-spacing:.16em;
            /* The eyebrow sits over the film, not over flat graphite. Against
               a mid-bright frame #9A9184 falls to 1.64:1; this holds 3.41:1
               there and 10.37:1 on the dark ground of a document page. */
            text-transform:uppercase; color:rgba(242,236,222,.80); margin:0 0 18px; }
  h1,h2{ font-family:var(--font-display); font-weight:500; letter-spacing:-.02em; line-height:1.06; margin:0; max-width:19ch;
         text-wrap:balance; }
  h1{ font-size:clamp(32px,5vw,72px); } h2{ font-size:clamp(26px,3.5vw,50px); }
  /* A wider measure for the one heading that would otherwise take a third
     line for two short words. The type scale stays put; only the column moves. */
  h2.wide{ max-width:31ch; }
  .sub{ margin:22px 0 0; max-width:50ch; font-size:18px; line-height:1.62; color:rgba(242,236,222,.94); }
  .note{ margin:14px 0 0; max-width:46ch; font-size:15px; line-height:1.6; color:rgba(242,236,222,.74); }
  /* Some calls to action leave the page and some move the film to a block
     further down it, so this styles a link and a button identically. */
  .cta{ display:inline-block; margin-top:30px; background:var(--ember); color:#fff;
        padding:14px 22px; font-size:16px; text-decoration:none;
        border:0; border-radius:0; cursor:pointer; font-family:var(--font-label);
        letter-spacing:.08em; line-height:1.2; text-align:left;
        -webkit-appearance:none; appearance:none; }
  /* Actions speak in the utility face. This includes native buttons and
     button-like links, so a new control cannot quietly fall back to body or
     terminal type. CSS casing keeps accessible names naturally readable. */
  .cta, .topbar-cta, button, [role="button"]{
    font-family:var(--font-label); text-transform:uppercase;
  }
  ul.list{ margin:22px 0 0; padding:0; list-style:none; max-width:47ch; }
  ul.list li{ display:flex; gap:14px; padding:9px 0; font-size:16px; line-height:1.5;
              border-top:1px solid rgba(242,236,222,.14); color:rgba(242,236,222,.92); }
  ul.list li:first-child{ border-top:0; }
  ul.list b{ font-family:var(--font-label); font-size:12px; font-weight:400;
             color:var(--ember); letter-spacing:.1em; padding-top:3px; }
  /* Two-line rows: the name carries the weight, the explanation sits under it
     in a smaller, quieter size so the eye can scan the names alone. */
  ul.list.named li{ padding:13px 0; }
  ul.list.named .lbl{ display:block; font-size:19px; font-weight:500; letter-spacing:-.01em;
                      line-height:1.25; color:var(--bone); margin-bottom:6px; }
  ul.list.named .dsc{ display:block; font-size:14px; line-height:1.55;
                      color:rgba(242,236,222,.86); }


  /* ---- the masthead ------------------------------------------------
     The words occupy a clean 46px row. A transparent column of the character
     grid runs down the right edge as scroll progress, reading the ground
     behind every glyph rather than painting a bar of its own. */
  .topbar{ position:fixed; top:0; left:0; right:0; z-index:22; height:46px; }
  .topbar-grid{ display:block; width:16px; height:100svh; position:absolute;
                top:0; right:0; left:auto; pointer-events:none; }
  /* Honest type: the labels are the navigation, visible, ground-aware.
     Their shadow is separation over film, not an effect: it fades to zero as
     paper arrives instead of reversing into the pale glow that blurred the
     masthead on the white close. */
  .topbar-nav{ position:relative; height:46px; display:flex; gap:clamp(26px,4vw,54px);
               align-items:center; justify-content:center; }
  .topbar-a{ --masthead-paper:var(--bar-paper,0);
             --masthead-ink:clamp(0, (var(--masthead-paper) - .42) / .16, 1);
             min-height:44px; display:inline-flex; align-items:center;
             font-family:var(--font-grid); font-size:14px; letter-spacing:.13em;
             text-decoration:none; padding:4px 2px;
             color:color-mix(in srgb, rgba(242,236,222,.85),
               rgba(18,18,18,.82) calc(var(--masthead-ink) * 100%));
             text-shadow:
               0 1px 2px rgb(13 12 11 / calc(.9 * (1 - var(--masthead-paper)))),
               0 0 10px rgb(13 12 11 / calc(.6 * (1 - var(--masthead-paper)))); }
  body[data-route="home"] .topbar-a{
    --masthead-paper:max(var(--bar-paper,0),var(--film-white,0)); }
  .topbar-a:hover{ color:var(--ember); }
  .topbar-a[aria-current]{ color:color-mix(in srgb, var(--bone), var(--graphite)
               calc(var(--masthead-ink) * 100%));
             border-bottom:2px solid var(--ember); padding-bottom:5px; }
  .topbar-a:focus-visible{ outline:2px solid var(--ember); outline-offset:3px; }
  .topbar-toggle{ display:none; position:absolute; top:0; right:4px; height:46px;
                  min-width:46px; padding:0 12px; border:0; background:none; cursor:pointer;
                  font-family:var(--font-label); font-size:13px;
                  letter-spacing:.1em; color:var(--ember); z-index:2; }
  .topbar-toggle:focus-visible{ outline:2px solid var(--ember); outline-offset:2px; }
  /* Stacked mode owns the masthead through 900px; desktop furniture resumes
     at 901px, where there is room for the persistent navigation. */
  @media (max-width:900px){
    .topbar-toggle{ display:block; }
    .topbar-nav{ display:none; }
    .topbar-grid{ display:none; }
  }

  /* ---- the takeover --------------------------------------------------- */
  /* visibility, not just opacity: a transparent overlay still hands its
     links to the keyboard and to VoiceOver, so a closed menu was putting
     five destinations and a CLOSE button into the tab order of every page.
     visibility:hidden takes them out and still animates, because it is
     delayed on the way in and transitions on the way out. */
  .mnu{ position:fixed; inset:0; z-index:30; background:rgba(13,12,11,.996);
        opacity:0; pointer-events:none; visibility:hidden;
        transition:opacity .32s ease, visibility 0s linear .32s; }
  .mnu.on{ opacity:1; pointer-events:auto; visibility:visible;
           transition:opacity .32s ease, visibility 0s; }
  html.mnu-open{ overflow:hidden; }
  .mnu-field{ position:absolute; inset:0; margin:0; overflow:hidden;
              font-family:var(--font-grid); font-size:13px; line-height:1.35;
              color:rgba(242,236,222,.14); white-space:pre; pointer-events:none; }
  .mnu-close{ position:absolute; top:15px; right:16px; height:46px; min-width:46px;
              padding:0 12px; border:0; background:none; cursor:pointer;
              font-family:var(--font-label); font-size:13px; letter-spacing:.1em;
              color:var(--ember); }
  .mnu-close:focus-visible{ outline:2px solid var(--ember); outline-offset:2px; }
  .mnu-list{ position:absolute; left:clamp(24px,8vw,90px); top:clamp(54px,9vh,110px);
             display:grid; gap:clamp(18px,3.4vh,30px); }
  .mnu-a{ text-decoration:none; }
  .mnu-a small{ display:block; font-family:var(--font-label); font-size:11px;
                letter-spacing:.18em; text-transform:uppercase;
                color:rgba(242,236,222,.68); margin-bottom:3px; }
  .mnu-a span{ font-family:var(--font-grid); font-weight:400;
               font-size:clamp(28px,6.4vw,42px); letter-spacing:.05em;
               color:rgba(242,236,222,.92); transition:color .18s ease; }
  .mnu-a:hover span{ color:var(--bone); }
  .mnu-a.here span{ color:var(--ember); }
  .mnu-a.here small{ color:var(--ember); }
  .mnu-a:focus-visible{ outline:2px solid var(--ember); outline-offset:5px; }
  .mnu-foot{ position:absolute; left:clamp(24px,8vw,90px); bottom:22px; margin:0;
             display:flex; gap:12px; font-family:var(--font-label); font-size:10px;
             letter-spacing:.14em; text-transform:uppercase;
             color:rgba(242,236,222,.68); }
  .mnu-foot a{ color:inherit; text-decoration:none; }
  .mnu-foot a:hover{ color:var(--ember); }

  /* On a phone the footer row does not fit, and being nowrap it did not wrap
     -- it squeezed instead, breaking every link across two or three lines
     into a ragged block: "THE / SOURCE / CODE" beside "BOOK A / DISCOVERY /
     CALL". Adding a fourth link made it worse.

     Stacked is also simply the right answer here. The menu above it is a
     vertical list of left-aligned items; the footer now reads as the quiet
     end of that same list rather than as a squeezed footer bar. The middle
     dots go: they separate things on a line, and there are no longer lines.

     900px, not the 760 the rest of the phone rules use, because 900 is where
     the menu toggle itself appears. Matched to the site's usual phone
     breakpoint the footer changed shape halfway through the menu's own range:
     one takeover, two footers. The menu is one component and gets one. */
  @media (max-width:900px){
    .mnu-foot{ flex-direction:column; align-items:flex-start; gap:11px;
               right:clamp(24px,8vw,90px); }
    .mnu-foot > span{ display:none; }
  }
  @media (prefers-reduced-motion:reduce){ .mnu{ transition:none; } }

  /* The wordmark, the close and the turn are declared once, below the
     placement system. They were in this file twice, identically, and the
     second copy is the one that was winning. */
  /* ---- placement system -------------------------------------------
     One template used thirteen times reads as one section shown thirteen
     times. Four positions instead, assigned by what a section DOES, and
     checked against where the film's image mass actually sits at that
     moment (measured per window, not guessed).

       lead    argument. Copy holds the left third.
       trail   counter-statement. Copy crosses to the right; the flip is
               the point, and it also moves type off the picture.
       centre  the hinge lines. Alone, centred, largest type on the page.
       split   structures. Headline holds one column, the parts run down
               the other.

     A second axis sets where the block sits vertically, so three lead
     sections in a row still differ. */
  .blk.hi{ top:38%; } .blk.lo{ top:60%; }

  .lead .inner{ width:min(1200px, calc(100% - 96px)); }

  /* 1340 and 44%, not 1240 and 46%: the narrower measure broke "the operating
     system - then we engineer it into the company's systems." onto a third
     line, and two lines is what that section was written for. */
  .trail .inner{ width:min(1340px, calc(100% - 64px)); padding-left:44%; }

  .centre .inner{ width:min(980px, calc(100% - 96px)); text-align:center; }
  .centre h2{ max-width:18ch; margin-inline:auto; font-size:clamp(30px,4.4vw,64px); }
  .centre .sub, .centre .turn{ margin-inline:auto; }
  .centre .turn{ text-align:center; }
  .centre .turn::before{ left:50%; transform:translateX(-50%); }

  .split .inner{ width:min(1300px, calc(100% - 96px));
                 display:grid; grid-template-columns:minmax(0,.98fr) minmax(0,1.02fr);
                 column-gap:clamp(40px,5vw,88px); align-items:start; }
  .split .eyebrow{ grid-column:1; grid-row:1; }
  .split h2{ grid-column:1; grid-row:2; max-width:17ch; }
  .split .col{ grid-column:2; grid-row:1 / span 3; }
  .split .col .sub.tight{ margin:0 0 26px; max-width:44ch; }

  /* The turn line. Every section ends on the sentence that changes the
     reader's mind, and until now those were set in the quietest style on
     the page. They get the weight instead. */
  .turn{ position:relative; margin:30px 0 0; padding-top:22px; max-width:44ch;
         font-size:17px; line-height:1.55; color:rgba(242,236,222,.92); }
  .turn::before{ content:""; position:absolute; top:0; left:0;
                 width:44px; height:2px; background:var(--ember); }
  .out{ margin:20px 0 0; max-width:44ch; font-size:16px; line-height:1.6;
        color:rgba(242,236,222,.84); }

  /* A continuation frame carries a mark, not a new eyebrow: the argument
     is still running, it has only changed sides. */
  .cont{ margin:0 0 18px; height:12px; }
  .cont::before{ content:""; display:block; width:64px; height:1px;
                 background:rgba(242,236,222,.5); }

  /* Two windows of the film are pure black end to end. Those sections stop
     competing with a picture that is not there and let the type carry it. */
  .dark.centre h2{ font-size:clamp(32px,4.6vw,68px); }
  .dark .sub{ color:rgba(242,236,222,.96); }

  /* A ledger, not a bullet list: the count sits out in the margin and each
     row is a ruled line, so five symptoms read as a record of five events. */
  ul.list.ledger{ max-width:52ch; }
  ul.list.ledger li{ padding:12px 0; align-items:baseline; }

  /* The promise under the ask. Small, in the label face, so it reads as a
     fact about the meeting rather than as more argument. */
  .fine-print{ margin:14px 0 0; font-family:var(--font-label); font-size:12px;
               letter-spacing:.1em; text-transform:uppercase;
               color:rgba(242,236,222,.52); }
  .blk .actions{ display:flex; gap:18px; align-items:center; flex-wrap:wrap;
                 margin-top:26px; }
  .blk .actions .cta{ margin-top:0; }
  .cta-note{ margin:14px 0 0; max-width:62ch; font-size:13px; line-height:1.5; color:rgba(242,236,222,.72); }
  .topbar-cta{
    position:absolute; top:1px; right:18px; min-height:44px;
    display:inline-flex; align-items:center; padding:0 14px;
    background:var(--ember); color:#fff; text-decoration:none;
    font-family:var(--font-label); font-size:11px; letter-spacing:.1em;
  }
  @media (max-width:900px){ .topbar-cta{ display:none; } }

  :root{ --halo:rgba(18,18,18,.92); }
  /* The wordmark is the page's signature, bottom-left, where a signature
     goes. The halo turns over with the ground so it holds on graphite and
     on paper, and on the bare film once copy crosses to the right. */
  /* The real wordmark, not type set to look like it. currentColor lets it
     turn over with the ground exactly as the text version did. */
  .mark{ position:fixed; left:32px; bottom:24px; z-index:6; display:block;
         width:132px; text-decoration:none;
         color:color-mix(in srgb, var(--bone), var(--graphite) calc(var(--film-white) * 100%));
         --halo:color-mix(in srgb, rgba(18,18,18,.92), rgba(250,246,236,.95) calc(var(--film-white) * 100%));
         filter:drop-shadow(0 0 14px var(--halo)) drop-shadow(0 0 6px var(--halo));
         /* the ground turn is a crossing, not a cut */
         transition:color .35s ease, filter .35s ease; }
  .mark-svg{ display:block; width:100%; height:auto; }
  /* The tagline is the way into The Source Code, so it is a link. It was a
     paragraph, which meant the one line on the page that names what Regen8
     is about led nowhere. display:block keeps the fixed box it had as a p. */
  .tag{ position:fixed; right:32px; bottom:26px; z-index:6; margin:0; text-align:right;
        display:block; text-decoration:none;
        font-family:var(--font-label); font-size:11px; letter-spacing:.16em;
        text-transform:uppercase; color:rgba(242,236,222,.68);
        text-shadow:0 0 14px var(--halo), 0 0 6px var(--halo);
        transition:color .35s ease, text-shadow .35s ease; }
  .tag:hover{ color:var(--ember); }
  .tag:focus-visible{ outline:2px solid var(--ember); outline-offset:4px; }
  .spacer{ position:relative; z-index:3; height:1940vh; pointer-events:none; }

  /* This block must sit AFTER .spacer above and after the base .copy/.blk
     rules: it is equal specificity (0,1,0), so it wins only by being
     later. It lived 204 lines earlier and the track never collapsed --
     the copy read correctly and was then followed by nineteen screens
     of empty black. It sits beside the ambient block below, which is a
     document mode for the same reason and works by the same ordering. */
  /* Scripting genuinely off: the copy is not a film and must not be laid out
     like one. This is a media query and not a class because a class arrives
     after the parser has already painted. Measured at 10x CPU throttle: the
     document painted 309ms before the class landed, showing a second chapter
     that does not exist in the film layout, then the scroll track jumped from
     9330px to 19400px. A media query is evaluated at parse time and cannot
     race. The class gate above still covers the other failure -- scripting on,
     film script throws -- where the copy stays visible even though it stays
     stacked. */
  @media (scripting: none){
    .spacer{ height:0; }
    .copy{ position:static; pointer-events:auto; }
    .blk{ position:static; transform:none; opacity:1; pointer-events:auto;
          padding:15vh 0; }
    .inner > *{ opacity:1; }
    .copy .blk:first-child{ padding-top:34vh; }
    .copy .blk.close{ padding-bottom:26vh; }
  }
  /* A failed film is a document for the remainder of this page load. This
     class is deliberately independent of the coarse-pointer media query:
     a reader can rotate from 900px ambient to 901px desktop after failure,
     and must keep the same collapsed, vertically ordered, actionable copy. */
  html.film-surrendered .spacer{ height:0; }
  html.film-surrendered [data-film],
  html.film-surrendered .veil,
  html.film-surrendered .veil-r,
  html.film-surrendered .veil-c,
  html.film-surrendered .veil-f{ display:none; }
  html.film-surrendered .copy{ position:static; pointer-events:auto; }
  html.film-surrendered .blk{ position:static; transform:none; opacity:1 !important;
                              pointer-events:auto !important; padding:15vh 0; }
  html.film-surrendered .blk .inner > *{ opacity:1 !important; transform:none !important; }
  html.film-surrendered .copy .blk:first-child{ padding-top:34vh; }
  html.film-surrendered .copy .blk.close{ padding-bottom:26vh; }
  /* The spacer exists to be scrolled, not clicked: it sat over the copy
     layer and swallowed every press on the page's own links and buttons. */  /* same scroll rate as the 50s cut, 16 clips */
  /* The close. --film-white is written by the renderer as the film inverts
     to paper, so the page turns over with the picture instead of after it. */
  :root{ --film-white:0; }
  /* The ground crosses through mid-grey. If the copy crossed with it, both
     would be the same value at the halfway point and the text would vanish
     for a beat. So the ink waits until the paper is mostly there, then turns
     over quickly. */
  .close{ --ink-turn:clamp(0, (var(--film-white) - 0.62) / 0.3, 1); }
  .tag{ color:color-mix(in srgb, rgba(242,236,222,.68), rgba(18,18,18,.68) calc(var(--film-white) * 100%));
               --halo:color-mix(in srgb, rgba(18,18,18,.92), rgba(250,246,236,.95) calc(var(--film-white) * 100%)); }
  .close h2{ color:color-mix(in srgb, var(--bone), var(--graphite) calc(var(--ink-turn) * 100%)); }
  .close .eyebrow{ color:color-mix(in srgb, #9A9184, #6B6255 calc(var(--ink-turn) * 100%)); }
  .close .sub{ color:color-mix(in srgb, rgba(242,236,222,.78), rgba(18,18,18,.72) calc(var(--ink-turn) * 100%)); }
  .close .cta-note{ color:color-mix(in srgb, rgba(242,236,222,.72), rgba(18,18,18,.72) calc(var(--ink-turn) * 100%)); }
  .close .cta-note{ margin:14px auto 0; text-align:center; }
  .close .inner{ text-align:center; position:relative; }
  /* The receipts. Not cards: a grid of two cards is the most recognisable
     generated layout there is, and this page's whole claim is that it was
     not generated. Two entries, a rule above each, set as type. They turn
     over with the ground on the same --ink-turn as everything else in the
     close, or they would be bone text on paper for the length of the
     crossing. Left-aligned inside a centred block, because a four-line
     sentence read down the middle is harder than it needs to be. */
  .close .receipts{ list-style:none; margin:34px auto 4px; padding:0;
                    max-width:56em; text-align:left;
                    display:grid; gap:26px; grid-template-columns:1fr; }
  @media (min-width:901px){
    .close .receipts{ grid-template-columns:1fr 1fr; gap:34px; }
  }
  .close .receipts > li{ padding-top:16px;
    border-top:1px solid color-mix(in srgb, rgba(242,236,222,.22),
                                   rgba(18,18,18,.22) calc(var(--ink-turn) * 100%)); }
  .close .rc-who{ margin:0; font-family:var(--font-label); font-size:11px;
    letter-spacing:.16em; text-transform:uppercase;
    color:color-mix(in srgb, var(--bone), var(--graphite) calc(var(--ink-turn) * 100%)); }
  .close .rc-what{ margin:9px 0 0; font-size:15px; line-height:1.55;
    color:color-mix(in srgb, rgba(242,236,222,.72),
                    rgba(18,18,18,.70) calc(var(--ink-turn) * 100%)); }
  /* Quiet, not ember. Ember is the action colour on this page and there is
     exactly one action; spending it on a qualifier makes the qualifier
     argue with the button. The label earns its place by being read, not by
     being loud. */
  .close .rc-state{ margin:9px 0 0; font-family:var(--font-label); font-size:10px;
    letter-spacing:.14em; text-transform:uppercase;
    color:color-mix(in srgb, rgba(242,236,222,.46),
                    rgba(18,18,18,.52) calc(var(--ink-turn) * 100%)); }
  @media (max-width:760px){
    .close .receipts{ margin-top:26px; gap:22px; }
    .close .rc-what{ font-size:14px; }
    .close .rc-state{ font-size:11px; }
  }

  /* On paper the film is still drawing, and at this frame a dark glyph mass
     runs straight through the headline. A soft field of paper, faded in with
     the ground itself, clears it without putting a hard panel on the page.

     The sideways bleed is 44px, not the 160px it wants: .inner sits in 48px
     margins, so anything past 44 pushes the DOCUMENT wider than the phone and
     the whole page scrolls sideways. The gradient is an ellipse that reaches
     zero at 82% of its own box, so a narrower box just completes the fade
     sooner. There is no hard edge to expose. */
  .close .inner::before{ content:""; position:absolute; inset:-110px -44px; z-index:-1;
    background:radial-gradient(ellipse at center,
      rgba(250,246,236,.95) 0%, rgba(250,246,236,.78) 34%,
      rgba(250,246,236,.42) 56%, rgba(250,246,236,0) 82%);
    /* The field waits for the ground: cubed, it is nothing at half-turn and
       arrives only as the paper does, so the crossing never shows its shape. */
    opacity:calc(var(--film-white) * var(--film-white) * var(--film-white));
    pointer-events:none; }
  .close .turn::before{ background:var(--ember); }
  .close h2, .close .sub{ margin-left:auto; margin-right:auto; }
  /* The manifesto link stacks under the button rather than sitting beside it,
     so the close reads as one action with a quieter second option below. */
  .close .actions{ display:flex; flex-direction:column; gap:20px; align-items:center;
                   justify-content:center; margin-top:34px; }
  .close .actions .cta{ margin-top:0; }
  /* The underline is set as three longhands, not as the `border-bottom`
     shorthand it used to be.

     The shorthand was `1px solid color-mix(in srgb, ..., ... calc(...))`, and
     the browser dropped the whole declaration -- width and style along with
     the colour -- so `.read` had no underline at all. It computed to
     `0px none`. The class is the site's underlined-link face and it has not
     been drawing a line; nothing used it, so nothing showed it.

     Split apart, a colour the parser rejects costs only the colour: the line
     still draws, and falls back to currentColor. */
  .read{ font-family:var(--font-label); font-size:13px; letter-spacing:.1em;
         text-transform:uppercase; text-decoration:none; padding-bottom:3px;
         color:color-mix(in srgb, var(--bone), var(--graphite) calc(var(--ink-turn) * 100%));
         border-bottom-width:1px; border-bottom-style:solid;
         border-bottom-color:color-mix(in srgb, rgba(242,236,222,.4), rgba(18,18,18,.4) calc(var(--ink-turn) * 100%)); }
  /* In a reading block the link is a step after the argument, not the next
     line of it, so it is given the space a paragraph break would have and
     becomes inline-block to be able to take it. In the close it sits inside
     .actions, which spaces it with a flex gap instead. */
  .blk:not(.close) .read{ color:var(--bone); border-color:rgba(242,236,222,.4);
                          display:inline-block; margin-top:26px; }

  /* Ember on hover, line and letters together -- the same answer .tag, .fine
     and the menu footer already give, so a link on this site behaves one way
     wherever it appears. Ember reads on graphite and on paper alike, which is
     why the hover state does not need the ground-following colour-mix the
     resting state does. Eased at .35s to match the tagline.

     focus-visible gets an outline rather than the same colour change: a
     keyboard visitor needs to see WHERE focus is, and a recolour on a line of
     small uppercase type is too quiet to find. */
  .read{ transition:color .35s ease, border-bottom-color .35s ease; }
  /* Written against .blk as well as bare, because `.blk:not(.close) .read`
     above counts three classes and a plain `.read:hover` counts two -- the
     resting colour would win and the hover would do nothing. */
  .read:hover,
  .blk .read:hover{ color:var(--ember); border-bottom-color:var(--ember); }
  .read:focus-visible{ outline:2px solid var(--ember); outline-offset:4px; }

  @media (max-width:900px){
    /* Below this width there is no room for two columns or a right-hand
       block, so every section falls back to one left-anchored column. The
       vertical rhythm survives; the horizontal play does not. */
    .trail .inner{ padding-left:0; }
    .split .inner{ display:block; }
    .split .col{ margin-top:26px; }
    .centre .inner{ text-align:left; }
    .centre h2, .centre .sub, .centre .turn{ margin-inline:0; }
    .centre .turn{ text-align:left; }
    .blk.hi, .blk.lo{ top:50%; }
    .close .inner{ text-align:center; }
    .close h2, .close .sub{ margin-inline:auto; }
  }
  @media (max-width:760px){
    /* The two corners are one row, so they share a baseline.

       They did not. The wordmark is a 104px SVG that stands 37px tall; the
       tagline is text that wraps to two lines and stands 24. Anchored by
       different bottoms they ended 4px out of centre, and because the taller
       thing was on the left the pair read as tilted -- most visible at the
       foot of a page, where the fine print puts a third element on the same
       row and gives the eye something to measure against.

       So the tagline is given the wordmark's own height and centres its lines
       inside it. 2.8381 is the wordmark's aspect from its viewBox
       (3576 x 1260); at 104px wide that is 36.6px tall. Both boxes now start
       and end on the same lines whether the tagline wraps or not. */
    .mark{left:20px;bottom:calc(16px + env(safe-area-inset-bottom));width:104px}
    .tag{right:20px;bottom:calc(16px + env(safe-area-inset-bottom));
         font-size:10px;max-width:50vw;
         min-height:calc(104px / 2.8381);
         display:flex;flex-direction:column;justify-content:center;
         align-items:flex-end}
    .veil{background:linear-gradient(180deg,rgba(18,18,18,.55) 0%,rgba(18,18,18,.90) 55%,rgba(18,18,18,.96) 100%);
          opacity:calc(1 - var(--film-white))}
    .veil-r, .veil-c, .veil-f{ display:none }
  }

  /* Ambient mode: the copy becomes a document. Must stay in step with the
     media test in ascii-film.js. Desktop and trackpad laptops never match. */
  @media (pointer:coarse) and (max-width:900px){
    .spacer{ height:0; }
    .copy{ position:static; pointer-events:auto; }
    .blk{ position:static; transform:none; opacity:1 !important;
          pointer-events:auto !important; padding:15vh 0; }
    .blk .inner > *{ opacity:1 !important; transform:none !important; }
    .copy .blk:first-child{ padding-top:34vh; }
    .copy .blk.close{ padding-bottom:26vh; }
  }

  /* The copy holds its own edge against bright frames: the same graphite
     halo the wordmark wears, fading out as the close turns the page to
     paper so the darkened ink is not smeared with a dark glow. */
  .copy .inner > *, .copy .inner li{
    text-shadow:
      0 1px 2px rgb(18 18 18 / calc(.9 * (1 - var(--film-white, 0)))),
      0 0 16px rgb(18 18 18 / calc(.75 * (1 - var(--film-white, 0)))),
      0 0 34px rgb(18 18 18 / calc(.5 * (1 - var(--film-white, 0)))); }

/* ---------- routed documents ---------- */
  .route--doc{ position:relative; z-index:3; }
  .doc{ width:min(1200px,calc(100% - 96px)); margin:0 auto; }
  .doc-hero{ padding:210px 0 40px; }
  .sec{ padding:104px 0 0; }
  .sec:last-child{ padding-bottom:120px; }
  .lede{ font-size:clamp(19px,1.5vw,22px); line-height:1.5; color:var(--bone);
         margin:0 0 6px; max-width:34ch; font-weight:500; letter-spacing:-.01em; }
  /* Arrival lives in site.css and arrive.js, shared with the home page. This
     file carried its own copy of it, which is exactly how the two pages drifted
     into two different motion languages in the first place. */

  /* three strata, divided by rules rather than boxed into cards */
  .cols{ display:grid; grid-template-columns:repeat(3,1fr); margin:56px 0 0; }
  .cols > div{ padding:0 34px; border-left:1px solid var(--rule); }
  .cols > div:first-child{ border-left:0; padding-left:0; }
  .cols > div:last-child{ padding-right:0; }
  .cols .note{ max-width:none; }
  /* named rows, used where the items are peers rather than a sequence */
  .rows{ margin:38px 0 0; padding:0; list-style:none; max-width:60ch; }
  .rows li{ padding:22px 0; border-top:1px solid var(--rule); }
  .rows li:first-child{ border-top:0; padding-top:0; }
  .rows b{ display:block; font-family:var(--font-label); font-size:12px; font-weight:400;
           letter-spacing:.12em; text-transform:uppercase; color:var(--ember); margin:0 0 9px; }
  .rows span{ display:block; font-size:16px; line-height:1.55; color:rgba(242,236,222,.78); max-width:54ch; }

  /* the Structure / Memory / Coordination logic, carried by type and rules */
  .flow{ margin:52px 0 0; }
  .flow-seq{ display:flex; flex-wrap:wrap; align-items:baseline; gap:0; margin:0; padding:0;
             list-style:none; border-top:1px solid var(--rule); padding-top:18px; }
  .flow-seq li{ font-family:var(--font-label); font-size:13px; letter-spacing:.14em;
                text-transform:uppercase; color:rgba(242,236,222,.82); white-space:nowrap; }
  .flow-seq li + li::before{ content:"\2192"; margin:0 16px; color:rgba(242,236,222,.34); }
  .flow-return{ margin:0; padding-top:12px; border-top:1px solid var(--ember);
                font-family:var(--font-label); font-size:12px; letter-spacing:.14em;
                text-transform:uppercase; color:var(--ember); }
  .flow-note{ margin:26px 0 0; max-width:52ch; font-size:15px; line-height:1.6;
              color:rgba(242,236,222,.52); }
  @media (max-width:760px){
    .flow-seq li{ font-size:11px; letter-spacing:.1em; }
    .flow-seq li + li::before{ margin:0 9px; }
  }


  /* ---------- the architecture route ----------------------------------
     The subject of this page is structure, so the page is drawn like a
     technical document rather than a brochure: hairline rules instead of
     cards, mono labels, and sequences numbered ONLY where the order
     carries meaning. Four devices, each earning its place because the
     copy has four shapes the existing ones cannot hold. */

  .doc h2.wide{ max-width:24ch; }
  .anchor{ display:inline-flex; align-items:baseline; gap:14px; margin-top:36px;
           background:none; border:0; border-bottom:1px solid var(--rule);
           padding:0 0 7px; cursor:pointer;
           font-family:var(--font-label); font-size:12px; letter-spacing:.14em;
           text-transform:uppercase; color:rgba(242,236,222,.72);
           transition:color .18s ease, border-color .18s ease; }
  .anchor:hover{ color:var(--bone); border-bottom-color:var(--ember); }
  .anchor i{ font-style:normal; color:var(--ember); }

  /* The triad. Each capability carries its position, because Structure,
     Memory and Coordination are read in that order in the flow beneath. */
  .strata > div{ position:relative; padding-top:24px; border-top:1px solid var(--rule); }
  .strata > div::before{ content:""; position:absolute; top:-1px; left:34px;
                         width:38px; height:1px; background:var(--ember); }
  .strata > div:first-child::before{ left:0; }
  .idx{ font-family:var(--font-label); font-size:11px; letter-spacing:.18em;
        color:var(--ember); margin:0 0 16px; }

  /* A sequence with a spine. Signal to Improvement is an order, not a set,
     so it is drawn as one continuous line with a stop at each stage. */
  .track{ margin:42px 0 0; padding:0; list-style:none; max-width:64ch; }
  .track li{ position:relative; padding:0 0 32px 40px; border-left:1px solid var(--rule); }
  .track li:last-child{ border-left-color:transparent; padding-bottom:0; }
  .track li::before{ content:""; position:absolute; left:-4px; top:5px;
                     width:7px; height:7px; border-radius:50%; background:var(--ember); }
  .track b{ display:block; font-family:var(--font-label); font-weight:400;
            font-size:12px; letter-spacing:.16em; text-transform:uppercase;
            color:var(--bone); margin:0 0 9px; }
  .track span{ display:block; font-size:16px; line-height:1.6; max-width:52ch;
               color:rgba(242,236,222,.74); }

  /* Each stage produces a named deliverable. The output is a different kind
     of statement from the description, so it sits in its own column against
     an ember rule rather than trailing the paragraph as more prose. */
  /* ---- the stages: a track, not a list ------------------------------

     These were four stacked rows, each one a stage on the left and its
     output facing it across the width of the page. Two things were wrong
     with that. The prose stopped at 50ch and the output column began at a
     fixed fraction, so 225px of nothing sat in the middle of every row --
     19% of the width, four times. And the walkthrough directly above is
     also a list of label-and-prose rows, so the two sections rhymed and the
     second half of the page read as one device repeated ten times.

     A workflow runs downward and the walkthrough builds downward. Four
     stages of an engagement are a journey, so this one travels sideways.
     The gutter cannot come back because the layout no longer has one, and
     each output is now the payoff under its own stage instead of the most
     buried thing on the page. */
  .stages{ margin:44px 0 0; padding:0; list-style:none; }
  .stage-no{ display:block; font-family:var(--font-label); font-size:12px;
             letter-spacing:.16em; color:var(--ember); margin:0 0 11px; }
  .stages h3{ margin:0 0 11px; }
  .stages p{ margin:0; font-size:16px; line-height:1.6;
             color:rgba(242,236,222,.74); }
  .stage-out b{ display:block; font-family:var(--font-label); font-weight:400;
          font-size:11px; letter-spacing:.16em; text-transform:uppercase;
          color:rgba(242,236,222,.48); margin:0 0 9px; }
  .stage-out span{ display:block; font-size:15px; line-height:1.55; color:var(--bone); }

  .stages--track{ position:relative;
    display:grid; grid-template-columns:repeat(4, minmax(0,1fr));
    gap:0 clamp(20px,2.6vw,40px); }

  /* The spine. One ember hairline across all four panels, drawn from the
     left as the section lands -- the same --draw the other marks on this
     page use, so the gesture is the page's own and not a new one. */
  .stages--track::before{ content:""; position:absolute; left:0; right:0; top:0;
    height:1px; background:var(--ember);
    transform:scaleX(var(--draw,1)); transform-origin:left center; }

  /* Grid, not flex, and the reason is which edge lines up.

     Flex with margin-top:auto pushes each output to the FOOT of its panel,
     so the four bottoms agree and the four tops do not -- and the top is
     where the ember rule is, so the visible marks came out 24px apart.
     A grid whose third row is 1fr gives the prose the slack instead, which
     lands every output on the same line and puts the four rules on one. */
  .stages--track > li{ position:relative; padding:30px 0 0;
    display:grid; }
  /* A node where each stage meets the spine. Square, not round: every mark
     on this site is a rule or a block. */
  .stages--track > li::before{ content:""; position:absolute; top:-3px; left:0;
    width:7px; height:7px; background:var(--ember);
    transform:scale(var(--draw,1)); transform-origin:center; }

  /* The output sits at the foot of its panel and all four align, however
     much prose is above them -- margin-top:auto against a flex column. That
     is the whole reason the panel is a flex column rather than blocks. */
  .stages--track .stage-out{ margin:0; padding:14px 0 0;
    border-top:1px solid var(--rule); border-left:0; }

  /* Four panels need four measures, and 50ch is wider than any of them.
     The margin below is the MINIMUM gap above the output; margin-top:auto
     on the output takes up whatever is left, so all four outputs sit on one
     line however unequal the prose above them is. Grid rows stretch to the
     tallest panel, which is what makes that line exist. */
  .stages--track > li > p{ max-width:34ch; margin-bottom:26px; }

  /* The four rows every panel is made of -- number, heading, prose, output --
     are declared on the LIST, not on the panel, and each panel adopts them
     with subgrid. That is the only way the four outputs can share a line:
     grid rows align inside one container, and four sibling grids are four
     containers. Declared per breakpoint because two rows of panels need
     eight row tracks, not four.

     Without subgrid each panel keeps its own auto auto 1fr auto and the
     layout is identical apart from the outputs sitting where their prose
     leaves them, which is what it did before this rule existed. */
  @supports (grid-template-rows: subgrid){
    .stages--track{ grid-template-rows:auto auto 1fr auto; }
    .stages--track > li{ grid-row:span 4; grid-template-rows:subgrid; }
  }
  @supports not (grid-template-rows: subgrid){
    .stages--track > li{ grid-template-rows:auto auto 1fr auto; }
  }


  /* Three absolute statements. They are the constraints the whole page sits
     inside, so they are set larger than body copy, not smaller. */
  .rules{ margin:42px 0 0; padding:0; list-style:none; max-width:54ch; }
  .rules li{ position:relative; padding:18px 0 18px 32px; border-top:1px solid var(--rule);
             font-size:clamp(17px,1.35vw,20px); line-height:1.45; letter-spacing:-.01em;
             color:var(--bone); }
  .rules li::before{ content:""; position:absolute; left:0; top:29px;
                     width:16px; height:1px; background:var(--ember); }

  /* The onboarding walkthrough is an example, not a case study. It says so. */
  /* The close turns over to paper. The homepage film ends the same way, so
     the two pages resolve in the same place rather than each stopping. */
  .sec.sec--paper{ --rule:rgba(20,19,16,.16);
                   background:var(--paper); color:#141310;
                   margin:120px calc(50% - 50vw) 0;
                   padding:100px calc(50vw - 50%) 104px; }
  .sec--paper .eyebrow{ color:#6B6255; }
  .sec--paper h2{ color:#141310; }
  .sec--paper .sub{ color:rgba(20,19,16,.72); }
  .sec--paper .note{ color:rgba(20,19,16,.52); }
  .outcome{ margin:36px 0 0; padding-top:28px; max-width:52ch;
            border-top:1px solid rgba(20,19,16,.22);
            font-size:clamp(18px,1.5vw,21px); line-height:1.5;
            letter-spacing:-.01em; color:#141310; }

  /* Four across needs the room for four measures. Below about 1080 the
     panels get narrower than their own headings, so the track folds to two
     and then to one. The spine stays across the top of each ROW, which is
     what the grid gives for free -- it is drawn on the list, and the list
     is still one box. */
  @media (max-width:1080px){
    .stages--track{ grid-template-columns:repeat(2, minmax(0,1fr));
                    gap:0 clamp(20px,3vw,40px); }
    @supports (grid-template-rows: subgrid){
      .stages--track{ grid-template-rows:repeat(2, auto auto 1fr auto); }
    }
    /* A second row of panels needs its own space above it, and the ones on
       the top row need it below. */
    .stages--track > li:nth-child(n+3){ margin-top:42px; }
    .stages--track > li > p{ max-width:44ch; }
  }
  @media (max-width:640px){
    .stages--track{ grid-template-columns:1fr; }
    /* One column: there is no row to align across, so the panels go back to
       sizing themselves and nothing is stretched to match a neighbour. */
    @supports (grid-template-rows: subgrid){
      .stages--track{ grid-template-rows:none; }
      .stages--track > li{ grid-row:auto; grid-template-rows:auto auto auto auto; }
    }
    /* Stacked, the spine across the top is a line above one panel rather
       than a track through four, which says nothing. Each panel carries its
       own rule instead and the sequence is read down the numbers. */
    .stages--track::before{ display:none; }
    .stages--track > li{ padding-top:26px; border-top:1px solid var(--rule); }
    .stages--track > li::before{ top:-4px; }
    .stages--track > li:nth-child(n+2){ margin-top:34px; }
    .stages--track > li > p{ max-width:none; }
  }
  @media (max-width:760px){
    .strata > div::before{ left:0; }
    .track li{ padding-left:28px; }
    .sec.sec--paper{ margin-top:84px; padding-top:72px; padding-bottom:80px; }
  }


  /* ---------- section rhythm and emergence ---------------------------
     Five sections that open identically read as one section shown five
     times. Each now has its own frame, its own scale, and its own way of
     arriving. The devices already differed; the copy above them did not. */

  :root{ --e:cubic-bezier(.22,.61,.36,1); }


  /* The hero's first paragraph is the definition the whole page rests on.
     It is not the same kind of sentence as the one after it, so it is not
     set the same way. */
  .define{ margin:30px 0 0; max-width:40ch; font-size:clamp(19px,1.7vw,24px);
           line-height:1.45; letter-spacing:-.01em; color:var(--bone); }
  .doc-hero .sub{ margin-top:24px; max-width:46ch; }

  /* The flow is the key to the triad, so it is stated before the three
     columns rather than after them, and at a size that carries. */
  .flow--lead{ margin:46px 0 0; }
  .flow--lead .flow-seq{ padding-top:22px; }
  .flow--lead .flow-seq li{ font-size:clamp(13px,1.15vw,17px); letter-spacing:.16em; }
  .flow--lead .flow-seq li + li::before{ margin:0 clamp(12px,1.6vw,22px); }

  /* Learning returns across all three capabilities, so it is drawn across
     the full measure beneath them rather than tucked under the sequence. */
  .loop{ margin:8px 0 0; padding:22px 0 0; border-top:1px solid var(--ember); }
  .loop b{ display:block; font-family:var(--font-label); font-weight:400;
           font-size:12px; letter-spacing:.16em; text-transform:uppercase;
           color:var(--ember); margin:0 0 10px; }
  .loop p{ margin:0; max-width:60ch; font-size:16px; line-height:1.6;
           color:rgba(242,236,222,.74); }

  /* The rules are the contract the model sits inside. Framed, not trailing. */
  .rulebox{ margin:56px 0 0; padding:34px 36px; border:1px solid var(--rule); }
  .rulebox > b{ display:block; font-family:var(--font-label); font-weight:400;
                font-size:11px; letter-spacing:.18em; text-transform:uppercase;
                color:rgba(242,236,222,.5); margin:0 0 6px; }
  .rulebox .rules{ margin-top:14px; }
  .rulebox .rules li:first-child{ border-top:0; padding-top:6px; }

  /* The walkthrough is a ledger of stages: label rail, account on the right. */
  .track--rail li{ display:grid; grid-template-columns:132px minmax(0,1fr);
                   gap:0 26px; padding-left:32px; }
  .track--rail b{ margin:0; padding-top:1px; }
  .track--rail span{ max-width:48ch; }
  .track--rail li:first-child::before, .track--rail li:last-child::before{
                   width:11px; height:11px; left:-6px; top:3px; }

  /* Section four is carried by its stages, so its heading gives way to them. */
  .sec--build h2{ font-size:clamp(24px,2.9vw,40px); max-width:26ch; }
  .sec--build .sub{ max-width:62ch; }

  /* The close resolves. On a full-bleed paper band, left-aligned copy leaves
     half the band empty and reads unfinished; centred, it lands. */
  .sec--paper .doc-in{ text-align:center; }
  .sec--paper h2{ margin-inline:auto; max-width:18ch; }
  .sec--paper .sub, .sec--paper .outcome{ margin-inline:auto; }
  .sec--paper .outcome{ text-align:center; }
  .sec--paper .note{ margin:16px auto 0; }

  /* ---- how the copy arrives ----------------------------------------
     One motion applied to everything is not choreography. Each section
     assembles in the order it is meant to be read: the triad left to
     right, the walkthrough down its spine, the stages one row at a time.
     The close does not travel at all, because it is a resolution. */
  /* No transition here: these are scrubbed values, written every scroll frame.
     A transition on a scrubbed property makes the element chase a target that
     has already moved, which reads as lag rather than smoothness. */
  /* The stagger, the easing and the displacement all live in arrive.js now,
     shared with the home page so the two cannot drift. What stays here is
     only what is specific to this page: which mark draws, and how far. */

  /* The ember marks draw themselves as their section lands. This page is
     ruled rather than boxed, so the accents that hold the structure are the
     honest thing to put motion into. --draw is written by arrive.js and is
     1 by default, so a mark is whole if the script never runs. */
  .strata > div::before{ transform:scaleX(var(--draw,1)); transform-origin:left center; }
  .flow-return{ position:relative; border-top:0; }
  .flow-return::before{ content:""; position:absolute; top:0; left:0; right:0;
                        height:1px; background:var(--ember);
                        transform:scaleX(var(--draw,1)); transform-origin:left center; }
  /* The output's ember mark used to be a vertical bar down its left edge,
     because the output was a column beside the stage. It is a footer under
     the stage now, so the mark lies down with it and draws across. */
  .stage-out{ position:relative; }
  .stages--track .stage-out::before{ content:""; position:absolute; top:0;
                      left:0; width:34px; height:1px; background:var(--ember);
                      transform:scaleX(var(--draw,1)); transform-origin:left center; }

  @media (prefers-reduced-motion:reduce){
    .stagger > *{ opacity:1; transform:none; transition:none; }
    .strata > div::before,
    .flow-return::before,
    .stages--track::before,
    .stages--track > li::before,
    .stage-out::before{ transform:none; }
  }

  /* The header scrim is a soft graphite fade, which works over the film and
     smears over the paper close. On document routes it becomes a solid bar. */
  body:not([data-route="home"]) .site-head::before{ inset:0; background:var(--graphite); }

/* ---- architecture route, small screens ---------------------------
     Declared last so these win over the base rules above them: same
     specificity, so source order decides. */
  @media (max-width:760px){
    /* the label rail costs a third of a phone screen and squeezes each
       account into a gutter, so below this width the stage name stacks */
    .track--rail li{ grid-template-columns:1fr; padding-left:26px; }
    .track--rail b{ margin:0 0 9px; padding-top:0; }
    .track--rail span{ max-width:none; }
    .track--rail li:first-child::before,
    .track--rail li:last-child::before{ width:9px; height:9px; left:-5px; }
    .rulebox{ padding:26px 22px; }
    .flow--lead .flow-seq li{ font-size:12px; letter-spacing:.1em; }
    .turn{ margin-top:36px; }
  }

  /* ---------- narrow ---------------------------------------------------
     Declared last on purpose: an equal-specificity override placed above
     the rule it overrides loses to source order, which is how the label
     rail was crushed into a gutter once already. */
  @media (max-width:760px){
    /* Three 1fr columns on a phone give each capability about 150px, which
       breaks every heading mid-word. The triad stacks and the divider moves
       from the left edge to the top edge, where a stack reads it. */
    .cols{ grid-template-columns:1fr; gap:38px; margin-top:42px; }
    .cols > div{ padding:0; border-left:0; }
    .cols.strata > div{ padding-top:22px; border-top:1px solid var(--rule); }
  }

  /* A section header is its own arrival unit now, so it needs a wrapper. The
     wrapper must be invisible to layout: no padding, no border, nothing that
     stops the first child's margin collapsing the way it did when it sat
     directly in the section. */
  .head, .head > .stagger{ display:block; margin:0; padding:0; border:0; }

  /* ---- placement, rhythm and the close ------------------------------
     Declared last so these win over the base rules above them.

     The page had one placement used five times, which is the same fault the
     home film was built to avoid: there, where a section sits on the screen
     is decided by what the section does. Five left-aligned columns in a
     1200px measure also left roughly a third of a wide screen empty from top
     to bottom, uniformly, so the emptiness read as unused rather than as
     composition. The sequence is now lead, centre, trail, split, centre. */

  /* The key that governs the triad sits over the middle of it. */
  /* "Structure. Memory. Coordination." is the three-part name of the thing
     this page is about, and a name breaks badly across two lines: the reader
     gets two of the three and has to reassemble them. It holds one line at
     every width instead, which means the type has to be free to shrink --
     the measure cap that governs ordinary headings would force the wrap it
     is trying to avoid. Sized off the viewport rather than the measure: the
     string needs about 18.4x its font size in width, so the ceiling is the
     column it sits in divided by that. */
  /* The size is measured against the COLUMN, not the viewport.

     The string needs about 18.4x its font size in width, so the ceiling is
     the column divided by 18.4 -- and the column is not a fixed share of the
     viewport on this page, so a vw figure can only ever be right at some
     widths. It was wrong at about 1100, where the heading ran 25px past its
     own column; centred, it spilled both ways and read as air, and ranged
     left it spills right where it shows. Container units measure the actual
     box: 100cqw IS the column, and 100/18.4 = 5.4, so 5.3cqw leaves a little
     room for the face's own variation. The vw line stays underneath as the
     fallback for a browser without container queries. */
  #arch-model .head h2{
    max-width:none; white-space:nowrap; text-wrap:nowrap;
    font-size:clamp(16px, 3.4vw, 41px); }
  @supports (font-size:1cqw){
    #arch-model .head{ container-type:inline-size; }
    #arch-model .head h2{ font-size:clamp(16px, 5.3cqw, 41px); }
  }

  /* Centring is retired from this page.

     It was doing two different jobs and therefore saying nothing. The page
     has ONE left edge -- the hero, the rail, the strata, the stages, the
     rules, the walkthrough and every turn line all start on it -- and a
     centred block in the middle of that is the only thing not on the grid,
     so the eye has to find a new edge for it and find the old one again
     underneath. Worse, centring is what a hero does, so a centred heading
     mid-page reads as a different page beginning.

     The one centred block left on the site's argument pages is the paper
     close, and there it means something: different ground, end of the
     argument, one action, symmetry as resolution. Centre to end; range left
     while the argument is still running. */

  /* This heading used to sit 44% into the page, the idea being that the rail
     below it runs down the left and the two together would use the width the
     other sections leave empty. They never share a vertical inch, though:
     the heading finishes, then 64px of nothing, then the rail starts. So the
     width was not shared, and the effect on the page was that the one section
     which is the argument the page exists to make was also the only one that
     let go of the left edge -- the spine the strata, the stages, the rules
     and every turn line hold. It read as belonging to a different page.

     It leads now, like everything else. */
  .head--lead .sub{ max-width:46ch; }

  /* Heading against its own account, rather than stacked above it. */
  .head--split > .stagger{ display:grid; grid-template-columns:1.05fr .95fr;
                           gap:0 clamp(32px,4vw,72px); align-items:start; }
  .head--split h2{ grid-column:1; margin:0; }
  .head--split .sub{ grid-column:2; margin:8px 0 0; max-width:46ch; }

  /* The peak. Every section was within 200px of every other, so nothing was
     emphasised by the room it was given. The walkthrough is the argument this
     page exists to make, so it gets the space, and the section after it is
     tightened rather than left to compete. */
  /* The room stays -- this is still the section that gets it -- but not all
     of it above the heading. The heading and the first steps of the rail have
     to land on one screen or the claim and the walkthrough that proves it are
     never seen together, which is most of why the section read as arriving
     from nowhere. */
  .sec--peak{ padding-top:118px; }
  .sec--peak .track--rail{ margin-top:40px; }
  .sec--peak .track--rail li{ padding-top:30px; padding-bottom:30px; }
  .sec--build{ padding-top:88px; }

  /* The loop opens at Signal and closes at Improvement. That was stated in
     the markup and expressed only in the diameter of a dot; it now reads in
     the type, which is where a reader would look for it. */
  .track--rail li:first-child b,
  .track--rail li:last-child b{ color:var(--bone); }
  .track--rail li:first-child span,
  .track--rail li:last-child span{ font-size:17px; line-height:1.5;
                                   color:var(--bone); }

  /* A 24px control is not a touch target. The label keeps its size; the
     button grows around it. */
  .anchor{ padding:10px 0 13px; min-height:44px; box-sizing:border-box; }

  /* The close is the last thing seen, so it ends the page rather than
     stopping 132px short of it and leaving a dark strip under the paper. */
  .route--doc:has(.sec--paper){ padding-bottom:0; }
  .sec.sec--paper{ margin-bottom:0; padding-bottom:150px; }

  @media (max-width:900px){
    /* A heading offset 44% into the page and a heading beside its own account
       both need the width they no longer have. Placement is a wide-screen
       composition; narrow, everything is one column, as on the home page. */
    .head--lead .sub{ max-width:52ch; }
    .head--split > .stagger{ display:block; }
    .head--split .sub{ margin-top:18px; max-width:56ch; }
    .sec--peak{ padding-top:120px; }
    .sec--peak .track--rail{ margin-top:44px; }
  }
  @media (max-width:760px){
    .sec--peak .track--rail li{ padding-top:22px; padding-bottom:22px; }
    /* The paper band ends this page, so it is the thing that clears the fixed
       footer. Padding on the route instead would put a strip of graphite back
       under the cream, which is exactly what the band exists to avoid.

       It has to be set HERE rather than beside the other phone paper rules
       230 lines above: `.sec.sec--paper{ padding-bottom:150px }` is declared
       between the two at equal specificity, so anything set up there is
       overwritten before it reaches the page. */
    .sec.sec--paper{ padding-bottom:max(120px, var(--foot-clear)); }
  }


/* ---- the launch film -------------------------------------------------
   Seamless, not a panel: a full-viewport character field exactly like the
   home film, sticky through the hero and the first section. The footage
   occupies the right of the frame and its left edge dissolves through the
   glyph ramp into the page's own ground, so there is no box and no border,
   only characters thinning out. The copy owns the left. */
  .film-scope{ position:relative; }
  .hero-film{ position:absolute; top:0; right:0; bottom:0; left:0; margin:0;
              z-index:0; pointer-events:none; }
  .hero-film .stick{ position:sticky; top:0; height:100vh; }
  .hero-film canvas{ width:100%; height:100%; display:block; }
  .hero-film video{ display:none; }
  .film-scope > .doc-hero,
  .film-scope > .sec{ position:relative; z-index:1; }
  /* the copy holds the left of the frame while the rocket holds the right */
  @media (min-width:901px){
    .film-scope > .doc-hero,
    .film-scope > .sec{ padding-right:clamp(240px, 30%, 420px); }
  }
  /* On a phone the film stops being a passenger of the hero and becomes the
     page's ground: fixed behind everything, the whole way down, looping on
     its own clock because a phone's decoder cannot follow the hand. Negative
     z keeps it inside the route's stacking context but under every word. */
  @media (max-width:900px){
    .hero-film{ position:fixed; top:0; left:0; right:0; bottom:0; z-index:-1; }
    .hero-film .stick{ position:static; height:100%; }
    /* One ground, not two: the site film's parked frame stands down on this
       route on a phone, so the launch plays on clean graphite instead of
       layering over the parked swirl. */
    html body[data-route="how-we-work"] [data-film]{ opacity:0; }
  }

/* ---- who we are -----------------------------------------------------
   The claim holds still and the people move past it: the heading is pinned
   to the rail while the founders scroll by. That is what fills the left
   column, which was otherwise empty for two thirds of its height, because a
   four-word heading cannot hold a full-height column on its own.

   Two tiers, and size carries the difference rather than a label doing it:
   founders at 356, everyone else at 240. The dogs are the bench card
   exactly, moved onto paper, because they are the close and not a third
   rank.

   Arrival is not defined here. It is site.css and arrive.js, the same clock
   and the same displacement vocabulary the rest of the site uses. */

.who{ --gap-m:clamp(28px,3.2vw,46px);
      --gap-l:clamp(54px,6.6vw,100px);
      --gap-xl:clamp(84px,10vw,158px); }

.team-top{ display:grid; grid-template-columns:minmax(230px,4fr) 8fr;
           gap:clamp(40px,4.4vw,72px); align-items:start; padding-top:150px; }
.team-rail{ position:sticky; top:148px; }
.team-rail h1{ font-size:clamp(32px,3.6vw,54px); max-width:11ch; margin:14px 0 0; }
.founders{ display:grid; grid-template-columns:1fr 1fr; gap:var(--gap-m); }
.who-card{ margin:0; }

.shot{ display:block; width:100%; height:auto; aspect-ratio:1/1; object-fit:cover;
       border:1px solid var(--rule); background:rgba(242,236,222,.06);
       filter:grayscale(1) contrast(1.03); }
.who-role{ font-family:var(--font-label); font-size:11px; letter-spacing:.16em;
           text-transform:uppercase; color:var(--ember); margin:0 0 7px; }
.who-name{ font-family:var(--font-display); font-weight:500; font-size:26px;
           letter-spacing:-.01em; line-height:1.1; margin:0; }
/* the name sits on a rule under the portrait, so the two read as one object
   rather than as a picture with a caption adrift beneath it */
.who-id{ margin-top:18px; padding-top:16px; border-top:1px solid var(--rule); }

/* The bio is a native disclosure: it works with the keyboard and with no
   script. The toggle is set in the grid face, not the display face, because
   it is a control and should read as one of the page's instruments. */
.bio{ margin-top:2px; }
.bio > summary{ list-style:none; cursor:pointer; display:flex; align-items:center;
                gap:11px; min-height:46px;
                font-family:var(--font-grid); font-size:12px; letter-spacing:.16em;
                text-transform:uppercase; color:var(--ember);
                transition:color .18s ease; }
.bio > summary::-webkit-details-marker{ display:none; }
.bio > summary::after{ content:"\25BC"; font-size:8px; line-height:1;
                       transition:transform .22s var(--e); }
.bio[open] > summary::after{ transform:rotate(180deg); }
.bio > summary:hover{ color:var(--bone); }
.bio > summary:focus-visible{ outline:2px solid var(--ember); outline-offset:3px; }
.bio p{ margin:0 0 6px; max-width:52ch; font-size:15px; line-height:1.64;
        color:rgba(242,236,222,.8); }

/* The bench. Four peers, one card, repeated: a grid reads as a rank, where
   four full-width rows alternating sides read as four separate decisions
   about the same four people. Nothing is offset and nothing is mirrored.

   The card: portrait at a fixed 240, the name hung on the portrait's own
   base line so the two share an edge, and the prose running the full card
   width beneath both. That last part is why this is a card and not a row —
   at 240 beside a portrait the measure would be thirty characters.

   Variety moved to the motion, where it costs the structure nothing: the
   left pair arrives from the left and the right pair from the right, so
   the grid closes on itself instead of sliding across. */
.bench{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
        column-gap:clamp(34px,4vw,64px); row-gap:clamp(40px,4.4vw,68px);
        margin-top:var(--gap-l); }
.peer{ display:grid; grid-template-columns:280px minmax(0,1fr);
       grid-template-rows:280px auto; column-gap:clamp(20px,2.2vw,28px);
       align-items:start; margin:0; }
.peer > .shot-shell{ grid-column:1; grid-row:1; width:280px; height:280px; }
.peer > .who-id{ grid-column:2; grid-row:1; align-self:end;
                 margin:0; padding:0; border-top:0; }
.peer > .bio,
.peer > .dog-bio{ grid-column:1 / -1; grid-row:2; margin:14px 0 0; }
.bench .who-role{ color:rgba(242,236,222,.5); }
.bench .bio > summary{ min-height:38px; margin-top:0; }
.bench .bio p{ max-width:62ch; }

/* The dogs close the page, and the page turns over to do it: a full-bleed
   band of paper, the same turn the home film makes at its end. The band is
   painted by a pseudo-element rather than by widening the section, so the
   document keeps its one measure and only the ground changes.

   Everything inside is the bench card unchanged. What changes is the ink,
   declared once as tokens on the section so nothing below re-states a
   colour and drifts from it later. */
/* The band is one viewport wide, so something has to clip it or it is also
   a horizontal scrollbar wide. The clip has to sit on a full-width ancestor:
   on .doc it would clip the band back to the document's own measure, which
   is precisely the inset band this is meant not to be. Clip, not hidden —
   clip on one axis leaves the other genuinely visible, so the sticky rail
   at the top of the page still sticks. */
.route--doc:has(.who){ overflow-x:clip; }
/* The band runs to the very bottom of the page. It used to stop 132px short,
   because .route--doc pads its foot and that padding sat under the paper as a
   dark strip: the close did not resolve, it just ran out, and the wordmark
   standing in that strip never reached the paper it was supposed to turn on.
   The route's bottom padding is cancelled for this page and carried by the
   band instead, so the last thing on the page is the ground it ends on. */
/* The people stand on paper; the dogs close the page back on graphite.
   The band is full-bleed behind the masthead; the content inside keeps the
   document's own measure. */
.folk{ position:relative; padding-bottom:var(--gap-l);
       --rule:rgba(18,18,18,.16);
       --ink:#121212; --ink-soft:rgba(18,18,18,.74); --ink-faint:rgba(18,18,18,.52);
       --shot-ground:#FAF6EC; --shot-ink:18,18,18; }
.folk::before{ content:""; position:absolute; top:-200px; bottom:0; left:50%;
               width:100vw; margin-left:-50vw; background:var(--paper); }
.folk > *{ position:relative; }
.folk h1, .folk .who-name{ color:var(--ink); }
.folk .bio p, .folk .bench .bio p{ color:var(--ink-soft); }
/* The credential follows the ground the way the bio and the name already do.
   The plan this came from specified bone at .62, which is the GRAPHITE value;
   this section stands on paper, so that rendered as pale grey on cream and the
   line was very nearly invisible. Scoped like the rule above rather than given
   its own literal, so it cannot drift if the ground is ever retuned. */
.folk .who-cred{ color:var(--ink-soft); }
.folk .bio > summary:hover{ color:var(--ink); }
.folk .bench .who-role{ color:var(--ink-faint); }
.folk .shot{ background:rgba(18,18,18,.06); }

/* One firm-level invitation after the human roster. It belongs here rather
   than beneath either founder: the relationship is with Regen8, and the
   reader has now seen the full team that stands behind the reply. */
.team-contact{ margin-top:var(--gap-xl); padding:var(--gap-l) 0 6px;
               border-top:1px solid var(--rule); }
.team-contact h2{ margin:12px 0 0; max-width:none;
                  font-size:clamp(30px,3.4vw,50px); color:var(--ink);
                  white-space:nowrap; overflow-wrap:normal; word-break:normal; }
.team-contact > p:not(.eyebrow){ margin:20px 0 0; max-width:47ch;
                                font-size:16px; line-height:1.62;
                                color:var(--ink-soft); }
.team-contact .read{ display:inline-block; margin-top:24px; color:var(--ink); }
.team-contact .read:hover{ color:var(--ember); }
.team-contact-links{ display:flex; align-items:baseline; gap:28px; margin-top:0 !important; }

/* The dogs close the page, so they get the whole last screen.

   Not a flourish -- a fix. The paper band above them declares a 200px bleed
   and runs to the foot of the advisors, and the content below it was 809px
   against a 900px viewport. So the document ended with 91px of cream still
   sitting at the top of the screen: the scroll stopped mid-crossing, the bar
   was still on paper, and the last thing a reader saw was a seam.

   One viewport of graphite after the band guarantees the band clears the top
   at full scroll, at any window height, because the arithmetic is the same
   at every height: the band clears when what follows it is at least a screen
   tall. The dogs are centred in that screen rather than sitting at its top,
   which is where they were before the section grew. */
.dogs{ position:relative; margin-top:var(--gap-xl); padding-bottom:24px;
       /* A screen MINUS its own top margin, so what follows the band comes to
          exactly one viewport. A flat 100svh overshoots by the margin and the
          section starts above the top of the screen, which put the heading
          under the bar. */
       min-height:calc(100svh - var(--gap-xl) + 2px); box-sizing:border-box;
       display:flex; flex-direction:column; justify-content:center; }
.dogs-in{ position:relative; }
.dogs h2{ font-size:clamp(26px,2.6vw,38px); max-width:none; margin:12px 0 0; }
.dog-pair{ margin-top:var(--gap-m); }
/* the dogs' prose is open rather than disclosed: three warm sentences do
   not need a control standing in front of them */
.dog-bio{ margin:0; }
.dog-bio p{ margin:0; font-size:15px; line-height:1.64;
            color:var(--ink-soft); max-width:62ch; }

/* The shell holds the character grid over the photograph. The photograph
   underneath stays a real <img>, so alt text, selection and the no-script
   case are unaffected by the effect drawn on top of it. */
.shot-shell{ position:relative; display:block; line-height:0; }
.shot-cv{ position:absolute; inset:0; width:100%; height:100%;
          display:block; pointer-events:none; }

@media (max-width:1080px){
  .team-top{ grid-template-columns:1fr; gap:var(--gap-m); padding-top:150px; }
  .team-rail{ position:static; }
  .team-rail h1{ max-width:none; }
  .team-rail h1 span{ display:block; white-space:nowrap; }
  /* One column, and the prose moves beside the portrait rather than under
     it. A full-width card with the prose spanning it would run to ninety
     characters, and would leave the name floating in half a screen of air.
     The measure decides which of the two arrangements is right, and the
     measure changes with the card. */
  .bench{ grid-template-columns:1fr; row-gap:var(--gap-l); }
  .peer{ grid-template-columns:220px minmax(0,1fr); grid-template-rows:220px auto;
         column-gap:clamp(22px,2.6vw,32px); }
  .peer > .shot-shell{ width:220px; height:220px; }
  .peer > .bio,
  .peer > .dog-bio{ grid-column:2; grid-row:2; margin-top:10px; }
  /* The dogs have open captions rather than disclosures. At this width their
     identity and bio form one copy column beside the portrait, so the name
     must begin at the portrait's top instead of inheriting the staff card's
     bottom-aligned identity treatment. */
  .dog{ grid-template-rows:auto 1fr; }
  .dog > .shot-shell{ grid-row:1 / span 2; }
  .dog > .who-id{ grid-column:2; grid-row:1; align-self:start; }
  .dog > .dog-bio{ grid-column:2; grid-row:2; margin-top:16px; }
}
@media (max-width:640px){
  .team-rail h1{ font-size:clamp(22px,7.2vw,30px); }
  .founders{ grid-template-columns:1fr; }
  /* narrow again, so the prose goes back under both: beside a 132 portrait
     it would be twenty-six characters wide */
  .peer{ grid-template-columns:132px minmax(0,1fr); grid-template-rows:132px auto;
         column-gap:18px; }
  .peer > .shot-shell{ width:132px; height:132px; }
  .peer > .bio,
  .peer > .dog-bio{ grid-column:1 / -1; grid-row:2; margin-top:14px; }
  .dog{ grid-template-rows:132px auto; }
  .dog > .shot-shell{ grid-row:1; }
  .dog > .who-id{ grid-column:2; grid-row:1; align-self:end; }
  .dog > .dog-bio{ grid-column:1 / -1; grid-row:2; margin-top:14px; }
  .team-contact{ padding-top:48px; }
  .team-contact h2{ font-size:clamp(22px,7.2vw,30px); }
}
/* Eyebrows on the paper band read in ember, like the roles beside them. */
.folk .eyebrow{ color:var(--ember); }

/* Where to find them. Label-face links on the card's own base line. */
/* Marks, not words. Two links set as LINKEDIN and X in the label face read
   as a third rank of type on a card that already carries a role and a
   credential; as marks they read as what they are, a place to find the
   person, and stop competing with the name. The glyph inherits currentColor
   so the ember hover that was on the text is unchanged. The accessible name
   is on the anchor -- the svg is decorative and hidden -- so a screen reader
   hears "Kai Hoyt on LinkedIn" rather than the bare word it heard before. */
.who-links{ margin:12px 0 0; display:flex; gap:14px; align-items:center; }
.who-link{ display:inline-flex; align-items:center; justify-content:center;
           width:38px; height:38px; margin-left:-7px;   /* optical: the marks
             have their own bearing, so the row still starts on the rule */
           color:var(--ink-faint, rgba(242,236,222,.5)); text-decoration:none;
           transition:color .18s ease; }
.who-link:first-child{ margin-left:-7px; }
.who-ico{ width:26px; height:26px; display:block; fill:currentColor; }
.who-link:hover{ color:var(--ember); }
.who-link:focus-visible{ outline:2px solid var(--ember); outline-offset:3px;
                         border-radius:2px; }

/* One line of evidence under the name. The bio still exists and still holds
   the rest of the story, but a visitor deciding whether to trust these people
   should not have to open six disclosure widgets to learn that they have done
   this before. Every line is compressed from that person's own bio; nothing
   here is a claim the bio does not already make.

   The rank reads role -> name -> evidence -> links, so the evidence arrives
   where a reader is already looking rather than one click away. */
.who-cred{ margin:4px 0 0; font-size:13px; line-height:1.45;
           color:rgba(242,236,222,.62); max-width:34em; }

/* ---- the manifesto ---------------------------------------------------
   Ported from the standalone build. Every selector is scoped under
   .route--manifesto: this page is a full-bleed scroll film and the other
   document routes are a measured column, so unscoped its bare h1, h2 and p
   rules would reach across the whole site.

   The faces are the site's now. They were Archivo, Newsreader and IBM Plex
   Mono, which made this the one page speaking in a different voice. Two
   sizes moved with them, because Srotone and Salena are wider than what they
   replace: the chapter heading came down from a 50px ceiling, which ran these
   headings to four lines where Archivo took two, and the reading column went
   from 26em to 32em, which puts it back on the site's 65-character measure
   instead of losing a third of its words to the wider face. The palette, the
   motion-scrub switch and the hairline are NOT redeclared here; they are on
   :root for the whole site already, and a second copy is how two stylesheets
   drift apart.

   Three things below look like mistakes and are not, all three measured by
   the session that built them:

   The breaks no longer pin. A sticky pane held the frame still so a shot could
   be watched end to end, which was right, but it held the PAGE still to do it:
   6.2 of this page's 19.5 screens were scroll that moved nothing, against zero
   on the homepage. A fixed pane holds the frame just as square while the
   document carries on under it, so the chapter that follows scrolls up over
   the film and the clip takes its budget from that reading. Measured after:
   zero pinned screens, and 37fps against the pinned build's 30 at 2560x1440@2x.

   The furniture stays at full bone with no alpha. Under mix-blend-mode:
   difference an alpha composites before the blend and lands mid grey, which
   measured 2.2:1 against 8.28:1 at full strength.

   filmground.js stands down while a break's own canvas covers the viewport.
   Two full-screen character renderers on one frame cost 40fps at
   2560x1440@2x, and the one underneath cannot be seen anyway. */

.route--manifesto{
    --ease-scrub:linear;
    --ease-calm:cubic-bezier(0.22, 0.61, 0.36, 1);
    --dur-slow:720ms;
    --stagger:80ms;
    --reveal-shift:8px;
    --scrub-start:0.85;
    --scrub-end:0.15;
    --hairline:var(--rule);
    --ground-bg:#121212; --ground-ink:rgba(242,236,222,.055);
    --loop-ground:#0E0E0E; --loop-glyph:#F2ECDE;
    --display:var(--font-display);
    --read:var(--font-body);
    --mono:var(--font-label);
  }
  .route--manifesto{ color:var(--bone); font-family:var(--display);
                     -webkit-font-smoothing:antialiased; }

  /* The film's own surface, held behind the reading. See filmground.js. */
  .route--manifesto canvas.ground{ position:fixed; inset:0; width:100%; height:100%;
                  z-index:0; display:block; pointer-events:none; }
  .route--manifesto .ch, .route--manifesto .brk, .route--manifesto .close{ position:relative; z-index:1; }
  .route--manifesto .ch{ background:transparent; }

  /* How much argument is left. On a document this long that is real
     information, and it is the one piece of page chrome that earns its place.
     Driven from scroll in reveal.js; it was previously pinned at zero because
     nothing drove it, which left a dead hairline down the page. */
  .route--manifesto .progress{ position:fixed; left:0; top:0; bottom:0; width:2px; z-index:9;
              background:var(--hairline); }
  .route--manifesto .progress i{ display:block; height:100%; background:var(--ember);
                transform:scaleY(var(--read-p, 0)); transform-origin:top; }
  @media (prefers-reduced-motion:reduce){ .route--manifesto .progress{ display:none; } }

  /* Standing furniture, on every screen, exactly as the homepage carries it.
     It is what tells the reader which publication they are inside while a
     chapter is filling the frame with nothing but words. Never inverted by the
     breaks: it sits above them and takes its colour from the section under it. */
  /* Full bone, no alpha. Faded to 42% and then difference-blended it measured
     2.2:1 against the homepage's own 16:1, because the alpha composites BEFORE
     the blend and lands the pair in mid grey. At full strength difference gives
     bright over the graphite chapters and dark over the paper close, and both
     ends stay legible. Sizes and tracking taken from the homepage furniture. */

  .route--manifesto .kicker{ font-family:var(--mono); font-size:12px; letter-spacing:.18em;
            text-transform:uppercase; color:#9A9184; margin:0 0 26px; }
  /* Matched to the homepage masthead: 72px at 1440, the same -.02em tracking,
     the same ~14ch measure. It was set at 116px, which made the manifesto the
     loudest page on the site rather than its most considered one. */
  .route--manifesto h1{ font-weight:500; letter-spacing:-.02em; font-size:clamp(36px,4.6vw,68px);
       line-height:1.02; margin:0; max-width:15ch; text-wrap:balance; }
  .route--manifesto .by{ margin:34px 0 0; font-family:var(--mono); font-size:12px; letter-spacing:.14em;
        text-transform:uppercase; color:rgba(242,236,222,.5); }

  /* layer two: the breaks. full bleed, between chapters, never beside copy. */
  .route--manifesto .brk{ height:100vh; position:relative; overflow:hidden;
         display:flex; align-items:flex-end;
         border-top:1px solid var(--hairline); border-bottom:1px solid var(--hairline); }
  .route--manifesto .brk img{ position:absolute; inset:0; width:100%; height:100%;
             object-fit:cover; opacity:0; }
  .route--manifesto .brk video{ position:absolute; width:1px; height:1px; opacity:0;
              pointer-events:none; }

  /* A scrubbed break is a track, not a picture that scrolls past. It gives the
     film one screen of its own and then borrows the chapter below: see .flow.
     The section is only as tall as that opening screen, because the rest of
     the clip's budget is reading that was going to happen anyway.

     overflow:hidden on an ancestor disables position:sticky, so a scrubbed
     break must clear the base rule. The clipping moves to .hold, which is the
     box that actually needs it. */
  .route--manifesto .brk.scrub{ height:230vh; display:block; padding:0; border-bottom:0;
              overflow:visible; }
  /* No .long or .xl any more. Those sized a pin, and the rate they set was
     the rate of a page that had stopped. A flowing break takes its rate from
     the chapter it plays under, so a longer clip needs no number changed
     here: a longer chapter simply gives it more room, and both films happen
     to run at very close to the homepage's 205px of scroll per second. */

  /* The hero is the chapter one film with the title standing on it. The film
     is the ground, the type is the subject, and the whole thing recedes as the
     reading begins. Scroll-linked, so it is scrubbed by the hand rather than
     played on a timer: --brk-p is the playhead the renderer publishes. */
  /* 170vh, with no lead-in because nothing precedes it: the clip's 3.98
     usable seconds run over 120vh of travel, which is 27vh per second and
     the same rate as the homepage film and the two breaks below. */
  /* 4.98s over 115vh of locked travel. --cue-out is where the title has
     finished leaving; the renderer reads it and takes the type out of the page
     entirely at that point, so one number governs both fade and removal. The
     title is gone well before the glass goes, which is the shot's whole point
     and was previously happening off the top of the screen. */
  .route--manifesto .brk.scrub.hero{ height:215vh; border-top:0;
                   --brk-p:0; --brk-in:0; --brk-out:0; --cue-out:0.42; }
  .route--manifesto .brk.cue-gone .herotype{ visibility:hidden; pointer-events:none; }
  .route--manifesto .brk.scrub.hero .hold{ display:flex; align-items:flex-end; }
  /* The hero title is anchored bottom-left, which is where the site's wordmark
     is fixed. It did not exist when this page stood alone, so the block is
     indented past it rather than the wordmark being moved: the wordmark sits
     in the same corner on every page, and that is the whole point of it. */
  .route--manifesto .hero .herotype{ position:relative; z-index:2; width:100%;
      padding:0 clamp(28px,6vw,96px) clamp(64px,11vh,132px) clamp(184px,14vw,220px);
      /* Type leaves first and the picture follows, so the frame is briefly the
         reader's alone before it goes. Both are ranges, not durations. */
      transform:translate3d(0, calc(var(--brk-p) * -44px), 0);
      will-change:transform; }
  /* The fade sits on the lines themselves, not on the block holding them.
     Anything reading a heading's own computed opacity to decide whether it is
     on screen -- the verification harness, and an assistive tool doing the
     same -- saw an opaque h1 inside a transparent parent and went on measuring
     a title that was not being rendered. */
  .route--manifesto .hero .herotype > *{
      opacity:clamp(0, (var(--cue-out) - var(--brk-p)) / 0.24, 1);
      will-change:opacity; }
  /* The picture holds its final frame and dissolves across the SLIDE-OUT,
     which is the same scroll that brings chapter one up from below. Driving
     this from the playhead instead meant the shot faded while it was still
     running, so its ending was thrown away twice over. */
  .route--manifesto .hero .hold canvas{ opacity:clamp(0, (0.82 - var(--brk-out)) / 0.44, 1);
      will-change:opacity; }
  .route--manifesto .hero::after, .route--manifesto .hero .hold::after{
      opacity:calc(clamp(0, (0.58 - var(--brk-p)) / 0.22, 1)); }
  .route--manifesto .hero .hold::after{ height:72%;
      background:linear-gradient(to top,
        rgba(14,14,14,.96) 0%, rgba(14,14,14,.86) 26%,
        rgba(14,14,14,.42) 62%, rgba(14,14,14,0) 100%);
      -webkit-mask-image:linear-gradient(to right,#000 0%,#000 62%,transparent 88%);
              mask-image:linear-gradient(to right,#000 0%,#000 62%,transparent 88%); }
  .route--manifesto .hero .kicker{ margin:0 0 26px; color:rgba(242,236,222,.66); }
  .route--manifesto .hero .by{ color:rgba(242,236,222,.62); }
  .route--manifesto .hero .by{ margin:34px 0 0; }
  .route--manifesto .brk.scrub .hold{ position:sticky; top:0; height:100vh; width:100%;
                    overflow:hidden; display:block; }
  /* A flowing break gives its film one screen of its own and then borrows the
     chapter that follows. The pane is fixed rather than sticky, so the frame is
     still square to the viewport while the page carries on moving under it.
     z-index sits under .ch (3) and over canvas.ground (0). */
  .route--manifesto .brk.scrub.flow{ height:100vh; }
  .route--manifesto .brk.scrub.flow .hold{ position:fixed; inset:0; height:100vh;
                    z-index:1; opacity:var(--brk-vis,1); will-change:opacity; }
  .route--manifesto .brk.scrub.flow .hold .brkline{ opacity:var(--brk-cue,1); }
  /* Same signal for the title. --cue-out was measured against the pinned
     range and does not survive its removal. */
  .route--manifesto .brk.scrub.hero.flow .herotype > *{ opacity:var(--brk-cue,1); }
  .route--manifesto .brk.scrub.hero.flow{ height:130vh; }
  /* Chapter five is the longest clip on the page and the only one whose
     payoff is at the very end: the horse becomes the truck becomes the jet.
     At 100vh the twelve seconds were crossing 1947px, so the jet had about
     a hundred pixels to arrive in and the paper turn was bleaching it at the
     same time.

     The deeper reason was the grammar. Chapters one and three run their film
     under the arriving chapter, which is right for them: the film is ground
     and the text is the subject. Chapter five cannot, because its subject IS
     the last second of the film. So this section is long enough to hold two
     screens of unobstructed film before the next chapter starts crossing it,
     and the clip finishes inside that window. */
  .route--manifesto .brk.scrub.centre.flow{ height:300vh; }
  /* The reading travels over the film, so it carries its own ground the way
     the homepage's copy does. Two rules learned the hard way here.

     The ground follows the COLUMN, not the screen. A half-screen wash set at
     .97 while the column sat centred put its densest part where there was no
     text and still buried the picture: the film measured about 3% visible in
     the one place the eye actually was. It is a band behind the words with a
     long soft tail, and the far side is left alone.

     And the column MOVES. Three chapters reading over three different films
     from the same centred measure is one composition shown three times, which
     is the note this page already takes for its break lines. Each column now
     picks up the side its film's line was on. */
  .route--manifesto .brk.scrub.flow + .ch{ position:relative; z-index:3; }
  .route--manifesto .brk.scrub.flow + .ch .prose{ max-width:30em; margin:0; }
  .route--manifesto .brk.scrub.flow + .ch::before{ content:""; position:absolute;
                    inset:-12vh 0; z-index:-1; pointer-events:none;
                    background:linear-gradient(90deg, rgba(18,18,18,.95) 0%,
                      rgba(18,18,18,.94) 46%, rgba(18,18,18,.54) 74%,
                      rgba(18,18,18,.06) 100%);
                    /* the panel dissolves before the chapter ends, so its
                       hard horizontal edge never meets the paper close */
                    -webkit-mask-image:linear-gradient(to top, transparent 0, #000 64vh);
                            mask-image:linear-gradient(to top, transparent 0, #000 64vh); }
  /* Chapter three's line sits bottom right, so its chapter carries on from
     there and the film keeps the left of the screen. */
  .route--manifesto .brk.scrub.flow.trail + .ch .prose{ margin-left:auto; }
  .route--manifesto .brk.scrub.flow.trail + .ch::before{
                    background:linear-gradient(270deg, rgba(18,18,18,.95) 0%,
                      rgba(18,18,18,.94) 46%, rgba(18,18,18,.54) 74%,
                      rgba(18,18,18,.06) 100%); }
  /* One column, no side to take, so the band closes in from both edges. */
  @media (max-width:900px){
    .route--manifesto .brk.scrub.flow + .ch .prose,
    .route--manifesto .brk.scrub.flow.trail + .ch .prose{ margin:0; max-width:none; }
    .route--manifesto .brk.scrub.flow + .ch::before,
    .route--manifesto .brk.scrub.flow.trail + .ch::before{
      background:linear-gradient(90deg, rgba(18,18,18,.94) 0%,
                 rgba(18,18,18,.93) 74%, rgba(18,18,18,.86) 100%); }
  }
  .route--manifesto .brk.scrub .hold canvas{ position:absolute; inset:0; width:100%; height:100%; }
  /* The box has to match the type, not span the frame. Stretched to right:0 it
     covers the bright, deliberately unscrimmed side of the picture, so the
     contrast check measures the background under an area the words never
     occupy and reports a failure the reader never sees.

     And the ANCHOR MOVES. Three breaks with their line in the same corner is
     one composition shown three times, which is the failure mode this whole
     treatment exists to avoid. The homepage moves its copy act by act; so does
     this. Each placement takes the scrim with it. */
  .route--manifesto .brk.scrub .hold .brkline{ position:absolute; left:0; right:auto; bottom:0;
                             width:max-content; max-width:min(56%, 34ch);
                             z-index:2; }
  .route--manifesto .brk.scrub.trail .hold .brkline{ left:auto; right:0; text-align:right; }
  .route--manifesto .brk.scrub.centre .hold .brkline{ left:50%; transform-origin:50% 100%;
      max-width:min(72%, 40ch); text-align:center;
      margin-left:calc(min(72vw, 40ch) / -2); width:min(72vw, 40ch); }
  /* the scrim belongs to the held frame, not to the whole tall section */
  .route--manifesto .brk.scrub::after{ content:none; }
  .route--manifesto .brk.scrub .hold::after{ content:""; position:absolute; inset:auto 0 0 0;
    height:46%; pointer-events:none; z-index:1;
    opacity:calc(1 - var(--brk-turn));
    background:linear-gradient(to top,
      rgba(14,14,14,.97) 0%, rgba(14,14,14,.78) 40%, rgba(14,14,14,0) 100%);
    -webkit-mask-image:linear-gradient(to right,#000 0%,#000 58%,transparent 82%);
            mask-image:linear-gradient(to right,#000 0%,#000 58%,transparent 82%); }
  /* One side of the picture always stays open. Which side depends on where the
     line went, so the protection travels with the words instead of dimming the
     half of the frame that is carrying the shot. */
  .route--manifesto .brk.scrub.trail .hold::after{
    -webkit-mask-image:linear-gradient(to left,#000 0%,#000 58%,transparent 82%);
            mask-image:linear-gradient(to left,#000 0%,#000 58%,transparent 82%); }
  .route--manifesto .brk.scrub.centre .hold::after{ height:54%;
    -webkit-mask-image:none; mask-image:none; }

  /* The break publishes --brk-white as the picture inverts to paper, so the
     line turns over with it instead of staying bone on a white ground. */
  .route--manifesto .brk{ --brk-white:0; --brk-turn:0; }
  .route--manifesto .brk .brkline{ color:var(--brkline-color, var(--bone)); }
  .route--manifesto .brk::after{ opacity:calc(1 - var(--brk-turn)); }
  .route--manifesto .brk.plain img{ opacity:1; }
  .route--manifesto .brk canvas{ position:absolute; inset:0; width:100%; height:100%; display:block; }
  /* the copy needs its own dark, or a line crossing a bright pool is lost */
  /* Protects the copy corner only. A scrim across the whole frame dims the
     picture you paid for -- the homepage rule is that one side stays open. */
  .route--manifesto .brk::after{ content:""; position:absolute; inset:auto 0 0 0; height:46%;
    pointer-events:none;
    background:linear-gradient(to top,
      rgba(14,14,14,.97) 0%, rgba(14,14,14,.78) 40%, rgba(14,14,14,0) 100%);
    -webkit-mask-image:linear-gradient(to right,
      #000 0%, #000 58%, transparent 82%);
            mask-image:linear-gradient(to right,
      #000 0%, #000 58%, transparent 82%); }
  .route--manifesto .brkline{ position:relative; margin:0; padding:clamp(28px,6vw,80px);
             font-family:var(--read); font-size:clamp(19px,2.0vw,28px); line-height:1.26;
             max-width:22ch; text-wrap:balance;
             z-index:2; }
  /* The line arrives while the stage is still sliding into place and leaves
     while it is sliding out, so the two stretches either side of the film
     carry the copy's motion instead of the picture's. The picture holds still
     through both, which is the whole point: nothing of the shot is spent
     travelling. Ranges, not durations, so it tracks the hand like everything
     else here. */
  .route--manifesto .brk.scrub .hold .brkline{
      opacity:min(clamp(0, (var(--brk-in) - 0.42) / 0.40, 1),
                  clamp(0, (0.52 - var(--brk-out)) / 0.34, 1));
      transform:translate3d(0, calc((1 - var(--brk-in)) * 30px
                                  + var(--brk-out) * -22px), 0);
      will-change:opacity, transform; }
  /* The film rises out of the page as the stage arrives and sinks back into
     it as the stage leaves, and both ramps have to be GENEROUS. Tightening
     them so the held first and last frames were barely visible produced a
     whole screen of nothing at each end: the chapter above had run out of
     text, the chapter below had not yet arrived, and the picture was not there
     to cover the gap. The film now cross-dissolves with the reading on both
     sides, so there is never an empty frame between a chapter and a break. */

  /* the reading column. One vertical rhythm unit, and every gap in the
     column is a multiple of it, so the spacing is a scale rather than a set of
     separately chosen numbers. */
  .route--manifesto .ch{ --rhythm:clamp(20px,2.2vh,28px);
       padding:calc(var(--rhythm) * 4.5) clamp(28px,6vw,96px);
       font-size:clamp(18px,1.16vw,21px); }
  /* The first chapter arrives OVER the dissolving hero, so it carries its own
     ground and is pulled up into the stage's last stretch. Without the pull
     the hero spent its final half screen as empty graphite: the picture had
     finished dissolving and the reading had not yet reached the fold, which is
     a dark trough with nothing in it. Now the two overlap, and the film going
     and the chapter arriving are one movement rather than two.
     Every later chapter sits on the page ground like normal copy. */
  /* Opaque only across the 40vh it is pulled up over the hero. Below that it
     lets the ground through like every other chapter, so chapter one is not
     the one flat panel on an otherwise textured page. */
  .route--manifesto .ch.lead{ margin-top:-40vh; position:relative;
            padding-top:clamp(96px,16vh,190px);
            background:linear-gradient(to bottom,
              var(--graphite) 0, var(--graphite) 42vh, transparent 58vh); }

  /* A flowing hero has no dissolve to cover, so the lead chapter stops
     carrying an opaque ground and takes the same travelling scrim as the
     others. The -40vh pull existed only to close the gap that dissolve left. */
  .route--manifesto .brk.scrub.flow + .ch.lead{ margin-top:0; background:none;
            padding-top:clamp(64px,10vh,120px); }

  /* Copy arrives under the hand, not on a timer. reveal.js writes opacity and
     transform inline every frame from the line's position in the viewport, so
     there is no transition here to fight it and no duration to fall out of
     step with the scroll. Only the resting state and the pre-arrival state
     live in CSS.
     Gated on a class the script itself sets. Hiding the copy by default and
     relying on JavaScript to bring it back means one script error is an empty
     manifesto; this way the text is visible unless something is running that
     can be trusted to reveal it. */
  .route--manifesto .js-reveal .prose > *, .route--manifesto .js-reveal .close .close-in > *{ opacity:0; will-change:opacity, transform; }
  .route--manifesto .js-reveal .prose > *.is-in, .route--manifesto .js-reveal .close .close-in > *.is-in{ opacity:1; transform:none; will-change:auto; }

  /* The reading measure is set in the reading font's own em, not in ch of a
     display font the column is not set in. Measured, not guessed: 34em put
     Newsreader at 87 characters a line at every desktop width, which is where
     the eye starts losing the line it is returning to. 26em holds it at 66 at
     1280, 1440, 1920 and 2560 alike, and 47 on a phone. */
  .route--manifesto .prose{ max-width:32em; margin:0 auto; font-family:var(--read); }
  /* The heading is the only thing on the page set in the display face at
     size, so it carries the chapter on its own and needs no eyebrow above it. */
  .route--manifesto .ch .kicker{ margin:0 0 calc(var(--rhythm) * 0.7); color:rgba(242,236,222,.5); }
  .route--manifesto h2{ font-family:var(--display); font-weight:500; letter-spacing:-.03em;
       font-size:clamp(28px,3.1vw,40px); line-height:1.06;
       margin:0 0 var(--rhythm); max-width:17ch; text-wrap:balance; }
  /* The lede is the chapter's claim, pulled out at reading size plus a step.
     It hangs into the left margin on its rule so the body's left edge stays
     the single vertical line the eye tracks down the column. */
  .route--manifesto .prose > p.lede{ font-size:1.15em; line-height:1.4; color:var(--bone);
          margin:0 0 calc(var(--rhythm) * 1.9); max-width:19em;
          border-left:2px solid var(--ember);
          padding-left:calc(var(--rhythm) * 0.9);
          margin-left:calc(var(--rhythm) * -0.9 - 2px);
          text-wrap:balance; }
  /* 1.72 at this measure. Tighter and a serif column at 64 characters loses
     the line the eye is returning to; looser and the paragraph stops reading
     as one block. */
  .route--manifesto .prose > p{ font-size:1em; line-height:1.72; color:rgba(242,236,222,.87);
               margin:0 0 1.45em; text-wrap:pretty; }
  .route--manifesto .prose > p:last-child{ margin-bottom:0; }


  /* Same fluid reading size as a chapter, so the closing column is measured
     against the same em the rest of the document is set in rather than against
     an inherited 16px that made it a third narrower than every chapter above. */
  .route--manifesto .close{ --rhythm:clamp(20px,2.2vh,28px); background:var(--paper);
           color:var(--graphite); font-size:clamp(18px,1.16vw,21px);
           position:relative;
           padding:calc(var(--rhythm) * 5) clamp(28px,6vw,96px) calc(var(--rhythm) * 11); }
  /* The paper does not start; it rises. A tall dissolve stands above the
     section so the ground turns over the way home's close does, and the
     wallpaper underneath stands down across the same stretch. */
  .route--manifesto .close::before{ content:""; position:absolute;
           bottom:100%; left:0; right:0; height:52vh; pointer-events:none;
           background:linear-gradient(to top, var(--paper) 0%,
             rgba(250,246,236,.62) 38%, rgba(250,246,236,.22) 68%,
             rgba(250,246,236,0) 100%); }
  .route--manifesto .close .close-in{ max-width:1100px; margin:0 auto; }
  .route--manifesto .close-eyebrow{ font-family:var(--mono); font-size:12px;
           letter-spacing:.16em; text-transform:uppercase; color:var(--ember);
           margin:0 0 calc(var(--rhythm) * 1.4); }
  .route--manifesto .mission{ font-weight:500; letter-spacing:-.022em;
             font-size:clamp(28px,4.2vw,58px); line-height:1.12; margin:0;
             max-width:19ch; text-wrap:balance; }
  /* The base line: who signs it on the left, what to do next on the right,
     both hung from one hairline the way the who cards hang their names. */
  .route--manifesto .close-base{ margin-top:calc(var(--rhythm) * 2.6);
           padding-top:calc(var(--rhythm) * 1.1);
           border-top:1px solid rgba(18,18,18,.16);
           display:flex; justify-content:space-between; align-items:flex-end;
           gap:32px; flex-wrap:wrap; }
  .route--manifesto .sign{ margin:0; font-family:var(--mono); font-size:12px;
          line-height:1.7; letter-spacing:.14em; text-transform:uppercase;
          color:rgba(18,18,18,.6); }
  .route--manifesto .close-acts{ display:flex; flex-direction:column;
          align-items:center; gap:18px; }
  .route--manifesto .close-acts .cta{ white-space:nowrap; }
  /* One column: the base line unstacks rather than squeezing the CTA
     onto two lines. */
  @media (max-width:640px){
    .route--manifesto .close-base{ display:block; }
    .route--manifesto .close-acts{ width:max-content; max-width:100%;
             margin:calc(var(--rhythm) * 1.6) auto 0; }
  }
  .route--manifesto .back{ display:inline-block; font-family:var(--mono);
          font-size:12px; letter-spacing:.14em; text-transform:uppercase;
          color:rgba(18,18,18,.66); text-decoration:none;
          border-bottom:1px solid rgba(18,18,18,.3); padding-bottom:4px; }
  .route--manifesto .back:hover{ color:var(--ember); border-color:var(--ember); }

  /* A media query cannot stop a rAF or scroll handler. The flag is the
     contract every handler checks; the query only sets it. */
  @media (prefers-reduced-motion:reduce){
    .route--manifesto{ --motion-scrub-enabled:0; --reveal-shift:0px; --dur-slow:320ms; }
    /* A scrubbed section is tall because scrolling it is what advances the
       clip. With the clip held on one frame, that height is just distance. */
    .route--manifesto .brk.scrub, .route--manifesto .brk.scrub.hero{ height:100vh; }
    .route--manifesto .brk.scrub .hold, .route--manifesto .brk.scrub.flow .hold{
      position:relative; opacity:1; }
    /* Nothing is travelling over the film, so the reading needs no scrim and
       should not carry one: it would only dim a picture that is now beside the
       words rather than under them. */
    .route--manifesto .brk.scrub.flow + .ch::before{ content:none; }
    .route--manifesto .brk.scrub.flow .hold .brkline{ opacity:1; }
    /* The overlap exists to cover the hero's dissolve. With the hero collapsed
       to one screen there is no dissolve to cover, and the pull would put the
       chapter's opaque ground straight over the title. */
    .route--manifesto .ch.lead{ margin-top:0; }
    .route--manifesto .hero .herotype, .route--manifesto .hero .herotype > *, .route--manifesto .hero .hold canvas, .route--manifesto .hero::after, .route--manifesto .hero .hold::after, .route--manifesto .brk.scrub .hold .brkline{
      opacity:1; transform:none; }
  }
  @media (max-width:760px){
    /* No room to indent past the wordmark on a phone: 184px of a 390px screen
       is most of the line. The block clears it vertically instead — its bottom
       padding already sits well above where the wordmark starts. */
    .route--manifesto .hero .herotype{ padding-left:clamp(28px,6vw,96px); }
    .route--manifesto .brk{ height:80vh; } .route--manifesto .prose > p{ font-size:18px; }
    /* Same rate rule as on the desktop: 12.08s of film wants 12.08 / 10.04 of
       the travel a 10.04s film gets. 290 - 80 = 210vh of travel becomes 253. */
    /* A centred line runs the full width of a phone, so it reaches the corner
       the wordmark stands in. Measured at 390x844: the line's box ended at 844
       and the wordmark starts at 791. It clears vertically instead of moving,
       because moving it would break the centring the act is composed around. */
    .route--manifesto .brk.scrub.centre .hold .brkline{ padding-bottom:76px; }
  }

/* ---- the site floor ------------------------------------------------
   One film, mounted once, for the whole site.

   The masthead is drawn out of the film's current frame, so the film has
   to exist on every page or the navigation has nothing to be made of.
   Home runs it at full strength under the scroll; the document pages hold
   one parked frame at low opacity as a ground. That is also why the site
   ships one video instead of one per page. */

/* The hairline. The document pages are built out of ruled lines rather than
   boxes, so this token carries most of that design; without it defined at the
   root every border on those pages resolves to nothing and the page falls
   apart into floating text. */
:root{ --rule:rgba(242,236,222,.14); }

/* The turn line: the sentence a section exists to deliver. One definition for
   the whole site — the film and the document pages were each carrying their
   own, and whichever stylesheet loaded last silently redefined the other. */
.turn{ position:relative; margin:34px 0 0; padding-top:24px; max-width:44ch;
       font-size:clamp(17px,1.4vw,21px); line-height:1.45; letter-spacing:-.01em;
       color:var(--bone); }
.turn::before{ content:""; position:absolute; top:0; left:0;
               width:46px; height:2px; background:var(--ember); }

.route{ position:relative; z-index:3; }
.route[hidden]{ display:none; }

/* Behind a document page the film is texture, not picture. At the strength
   home uses, a full character grid runs straight through body copy. */
body:not([data-route="home"]) [data-film]{ opacity:.085; }
body:not([data-route="home"]) .veil,
body:not([data-route="home"]) .veil-r,
body:not([data-route="home"]) .veil-c{ opacity:0; }
/* the flat channel already exists for full-width copy; a document page is
   exactly that case, so it settles the whole frame rather than one side */
body:not([data-route="home"]) .veil-f{ opacity:1; background:rgba(18,18,18,.72); }

/* The film's scroll track is nineteen viewport-heights. On a document page
   that would be nineteen empty screens below the copy, so it collapses and
   the document scrolls on its own height instead. */
body:not([data-route="home"]) .spacer{ height:0; }

/* The copy blocks are fixed and painted by film time; they belong to home
   alone and are hidden with it. */
body:not([data-route="home"]) .copy{ display:none; }

/* The manifesto is a route but not a document: it is full-bleed and it brings
   its own ground, so it takes neither the measured column nor the film behind
   the other pages, and no top padding either. The masthead overlays it exactly
   as it overlays home. Padding here pushed a 100vh hero 104px past the fold
   and cut the byline off the bottom of its own title. */
body[data-route="manifesto"] [data-film],
body[data-route="manifesto"] .veil-f{ opacity:0; }

/* Document routes clear the masthead and end above the wordmark. */
.route--doc{ padding-top:104px; padding-bottom:132px; }
.doc{ width:min(1200px,calc(100% - 96px)); margin:0 auto; }

/* A paper section that ENDS an argument owns the whole final screen. This is
   global and semantic: How We Work and Manifesto both declare data-bar paper
   on their last child, while Who We Are's mid-page paper band is deliberately
   excluded. One complete viewport after the crossing lets the section reach
   the browser's top edge at maximum scroll, so the fixed masthead stands on
   paper rather than leaving a stranded graphite strip above it. */
[data-bar="paper"]:last-child{ min-height:100svh; box-sizing:border-box; }

/* Sections arrive line by line, on the same clock and the same curve the
   home page's copy uses. arrive.js writes the opacity and the transform on
   every scroll frame, exactly as the film does; there is no transition here
   because a scrubbed value must not also be animating towards itself.

   The starting state is hidden, but only once the script has claimed the
   document. Without JavaScript the page is simply a page, fully legible,
   rather than a blank one waiting for a class that will never arrive. */
html.arrive .reveal .stagger > *,
html.arrive .reveal:not(:has(.stagger)) > *{ opacity:0; }
@media (prefers-reduced-motion:reduce){
  html.arrive .reveal .stagger > *,
  html.arrive .reveal:not(:has(.stagger)) > *{ opacity:1; transform:none; }
}

/* A page that exists in the masthead but has not been built yet says so,
   rather than bouncing the reader silently back to the home film. */
.stub{ min-height:52vh; display:flex; flex-direction:column; justify-content:center; }
.stub p{ margin:18px 0 0; max-width:46ch; font-size:17px; line-height:1.6;
         color:rgba(242,236,222,.6); }

@media (max-width:760px){
  /* The three pieces of furniture at the foot of a phone screen -- the fine
     print, the wordmark and the tagline -- are all position:fixed, so they
     float over whatever the page happens to end with. They take the bottom
     ~152px of an 844pt screen: the fine print sits 64px up and stands about
     88px tall once it wraps to two lines.

     Nothing reserved that space, so on five pages the last paragraph ran
     straight underneath and the two rendered on top of each other -- the
     privacy policy's closing line through the middle of THE SOURCE CODE, the
     journal index's "Read the entry" through the same row.

     One number, stated here and consumed by every page that ends in text or
     in a paper band. 186 is the 152 the furniture occupies plus a gap wide
     enough that the last line reads as finished rather than as cut off, with
     room for the fine print to take a third line on a narrower phone. */
  :root{ --foot-clear:186px; }

  .route--doc{ padding-top:88px; padding-bottom:var(--foot-clear); }
  .doc{ width:calc(100% - 48px); }

  body[data-route]:not([data-route="home"]):not([data-route="manifesto"]){
    position:relative;
  }
  body[data-route]:not([data-route="home"]):not([data-route="manifesto"]) .route--doc{
    padding-bottom:calc(220px + env(safe-area-inset-bottom));
  }
  body[data-route]:not([data-route="home"]):not([data-route="manifesto"]) .mark,
  body[data-route]:not([data-route="home"]):not([data-route="manifesto"]) .tag,
  body[data-route]:not([data-route="home"]):not([data-route="manifesto"]) .fine{
    position:absolute;
  }
  body[data-route]:not([data-route="home"]):not([data-route="manifesto"]) .mark{
    bottom:calc(24px + env(safe-area-inset-bottom));
  }
  body[data-route]:not([data-route="home"]):not([data-route="manifesto"]) .tag{
    bottom:calc(28px + env(safe-area-inset-bottom));
  }
  body[data-route]:not([data-route="home"]):not([data-route="manifesto"]) .fine{
    bottom:calc(88px + env(safe-area-inset-bottom));
  }
}

/* On the film the wordmark sits over a picture and its halo carries it. On a
   document page real copy scrolls behind it, so the bottom edge gets the same
   treatment the masthead gives the top: a short field of ground. The furniture
   sits above this at z-index 6. */
/* This used to be a full-width band. On the film that costs nothing, because
   the copy is fixed and never travels through it. On a document page every
   line scrolls through it, so the last 116px of the viewport dimmed live text
   while it was still being read: prose faded out from under the reader and
   came back when they scrolled.

   The wordmark was never relying on it anyway. It carries its own halo, two
   drop-shadows of near-opaque graphite, which is what actually holds it over
   a busy ground. So the band shrinks to the corner it exists to protect and
   stops touching the reading column. */
/* The corner scrim is gone. It was a 236x104 radial patch of ground behind the
   wordmark, and it had to invert with the floor: over the paper close a dark
   patch is a smear, so it flipped to bone. Flipped on a class it became a pale
   blob sitting on film, because the class turns at one line while the ground
   behind the mark turns over the mark's whole height. The note above already
   said the wordmark was never relying on it. So it is deleted rather than
   fixed, and the halo does the work it was always doing.

   Ink and halo now mix through --floor-paper, which nav.js publishes as how
   far the paper has actually crossed the mark. Both ends are the same values
   as before; it is the middle that no longer exists as a jump. No transition:
   the value already tracks the hand, and easing it would only make the ink
   lag the ground it is standing on. */
body:not([data-route="home"]) .mark{
  color:color-mix(in srgb, var(--bone), #141310 calc(var(--floor-paper, 0) * 100%));
  /* The halo is the opposite of the ink at full strength, all the way
     across. It was thinned through the middle of the crossing on the theory
     that halfway between two grounds there is nothing to separate from --
     which had it exactly backwards. Halfway is where the ink has arrived at
     the same grey as the ground and the outline is the ONLY thing holding the
     mark up. That thinning was really compensating for a turn that finished
     too early, and with the turn now following the dissolve it is not needed
     and was costing the one frame that needed it most. */
  --halo:color-mix(in srgb, rgba(18,18,18,.92), rgba(250,246,236,.95)
                   calc(var(--floor-paper, 0) * 100%));
  transition:none;
}

/* ---- reduced motion --------------------------------------------------
   Switching the preference on used to freeze film time, and because the
   copy is painted BY film time that hid twelve of the thirteen blocks: the
   page became a hero and nothing else. Time now follows the scroll as
   normal and only the picture stops moving.

   One still frame cannot then serve all thirteen blocks, though. Each
   placement was measured against its own frame, so a single frame leaves
   half the copy on a bright field. So the film stops being a picture here
   and becomes a ground, exactly as it does on the document pages. The
   reader loses the film, which is the preference they expressed, and keeps
   every word, which is the part that is not optional.

   These override the scrim the renderer cross-fades inline, which is why
   they are marked important: an important rule in a stylesheet beats a
   plain inline style. */
@media (prefers-reduced-motion:reduce){
  [data-film]{ opacity:.10 !important; }
  .veil, .veil-r, .veil-c{ opacity:0 !important; }
  .veil-f{ opacity:1 !important; background:rgba(18,18,18,.72) !important; }
}

/* The tagline is fixed bottom-right, opposite the wordmark, on EVERY page.

   It used to stand down off the home route, on the reasoning that it sits on
   picture there and would land on copy elsewhere. But the wordmark keeps its
   corner on those same pages, so standing the tagline down did not avoid the
   problem, it just broke the pair: seven of nine pages showed a lone logo and
   an empty opposite corner. The line is also the only route to The Source
   Code, so hiding it hid the link.

   It survives on copy the same way the wordmark does, with the halo it
   already carries. --film-white is 0 off the home route, so the colour
   formula in home.css resolves to bone on a dark halo with no extra work. */
html.floor-paper .tag{ color:rgba(18,18,18,.68);
                       --halo:rgba(250,246,236,.95); }

/* The fine print: Source Code access, privacy, the year. Fixed like the rest
   of the furniture but revealed only at the actual document end, where a
   footer lives. nav.js owns that exact-bottom gate; proximity is not enough,
   because a fixed row shown early lands across unfinished forms. */
.fine{ position:fixed; left:0; right:0; bottom:92px; z-index:6; text-align:center;
       font-family:var(--font-label); font-size:10px; letter-spacing:.14em;
       text-transform:uppercase; color:rgba(242,236,222,.68);
       opacity:0; pointer-events:none; transition:opacity .45s ease; }
html.at-foot .fine{ opacity:1; pointer-events:auto; }
.fine a{ color:inherit; text-decoration:none; border-bottom:1px solid rgba(242,236,222,.25); }
.fine a:hover{ color:var(--ember); border-color:var(--ember); }
.fine .fine-sep{ margin:0 12px; }
/* The rabbit. Quieter than everything beside it, and it warms when looked
   at directly — a hint behaves like a hint. It marks the doors documented
   in docs/easter-eggs.md. The span ships in the shared furniture but shows
   itself only where the hunt begins: the Source Code page (journal entries
   carry their own, in their own template). The preceding separator has to
   vanish with it or every other page ends its fine print on a stray dot. */
.fine .fine-rabbit, .fine .fine-sep:has(+ .fine-rabbit){ display:none; }
body[data-route="source-code"] .fine .fine-rabbit{ display:inline-flex; }
body[data-route="source-code"] .fine .fine-sep:has(+ .fine-rabbit){ display:inline; }
.fine a.fine-rabbit{ min-height:44px; align-items:center; padding:0 6px;
  margin:-17px -6px; vertical-align:middle; border-bottom:0;
  color:inherit; opacity:.45; transition:opacity .3s, color .3s; }
.fine .fine-rabbit:hover{ opacity:1; color:var(--ember); }
/* Every rabbit is a door, not a decoration: clicking one runs the rain
   (redpill.js listens for [data-rabbit] clicks). The cursor says so. */
[data-rabbit]{ cursor:pointer; }
/* The shared rabbit line for pages that are not the journal: inherits the
   ground's own ink, so it sits right on graphite and on paper alike. */
.rabbit-line{ display:inline-flex; min-height:44px; align-items:center;
              font-family:ui-monospace, Menlo, monospace; font-size:12px;
              letter-spacing:.08em; text-transform:uppercase; color:inherit;
              text-decoration:none; opacity:.45; transition:opacity .3s, color .3s; }
.rabbit-line:hover{ opacity:1; color:var(--ember); }
/* the architect page's resident, and the manifesto close's small margin above it */
.close .rabbit-line{ margin-top:44px; }
/* The architect's terminal. One screen, two columns: the transcript types
   itself on the left (architect.js), the rabbit renders live on the right.
   Everything monospace; the h1 is just the transcript's first line. */
.wr{ min-height:100svh; display:grid; align-content:center;
     padding:clamp(28px,6vw,96px); }
.wr-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(280px,42%);
          gap:clamp(28px,4vw,72px); align-items:center; }
.wr-term{ font-family:var(--font-label, ui-monospace, monospace);
          font-size:clamp(13px,1.15vw,16px); line-height:2; letter-spacing:.05em;
          color:rgba(242,236,222,.88); overflow-wrap:break-word; }
.wr-term h1{ font-family:inherit; font-size:inherit; font-weight:700;
             letter-spacing:0; margin:0 0 2px; color:var(--bone); }
.wr-line{ margin:0; white-space:pre-wrap; }
.wr-line b{ color:var(--ember); font-weight:600; }
.wr-dim{ color:rgba(242,236,222,.42); }
.wr-cursor{ color:var(--ember); animation:wr-blink 1s steps(1) infinite; }
@keyframes wr-blink{ 50%{ opacity:0; } }
.wr-go{ color:var(--bone); text-decoration:none;
        border-bottom:1px solid var(--ember); padding-bottom:2px; }
.wr-go:hover{ color:var(--ember); }
.wr-fig{ margin:0; }
.wr-rabbit{ display:block; min-width:44px; min-height:44px; color:inherit;
            text-decoration:none; }
.wr-rabbit canvas{ width:100%; height:auto; display:block; }
@media(max-width:900px){
  .wr-grid{ grid-template-columns:1fr; }
  .wr-fig{ order:-1; }
}
html.floor-paper .fine{ color:rgba(18,18,18,.68); }
html.floor-paper .fine a{ border-color:rgba(18,18,18,.3); }
/* Home's foot whitens through the film, not the floor: mix the ink over
   exactly like the tagline. */
.fine{ color:color-mix(in srgb,
        rgba(242,236,222,.68),
        rgba(18,18,18,.68) calc(var(--film-white,0) * 100%)); }
/* Narrow: the corners belong to the mark and the tagline; the fine print
   takes its own line above them. */
@media (max-width:760px){
  .fine{ bottom:calc(76px + env(safe-area-inset-bottom)); font-size:11px;
         letter-spacing:.1em;
         /* The row wraps to three lines at 390px once LinkedIn is in it, and
            at the inherited leading those three lines very nearly touch --
            uppercase 11px monospace with no descenders reads as one block of
            noise rather than as a footer. */
         line-height:1.9;
         /* Wrap between links, never inside one. The row used to break as
            "THE SOURCE CODE · REQUEST / ACCESS", splitting one link across
            two lines.

            This has to be flex, not white-space:nowrap on the links. The
            markup has no whitespace between </a> and the next <span>, so the
            only break opportunities in the whole row are the spaces INSIDE
            the link text. Forbid those and the row becomes one unbreakable
            string that runs straight off the screen -- which is exactly what
            happened. Flex items give the row break points it never had. */
         display:flex; flex-wrap:wrap; justify-content:center;
         align-items:baseline; padding:0 14px; }
  .fine a{ white-space:nowrap; }
  .fine .fine-sep{ margin:0 8px; }
  .fine a{ display:inline-flex; min-height:44px; align-items:center; }
}

/* ---- the site forms ------------------------------------------------- */
.form-page h1{ font-family:var(--font-form-hero); font-weight:500;
  letter-spacing:.02em; line-height:1.02; text-transform:uppercase; }
.site-form{ margin-top:46px; max-width:30em; display:grid; gap:22px; }
.site-form label{ display:grid; gap:8px; font-family:var(--font-label);
  font-size:12px; letter-spacing:.14em; text-transform:uppercase;
  color:rgba(242,236,222,.66); }
.site-form input, .site-form textarea{
  font-family:var(--font-body); font-size:17px; color:var(--bone);
  background:transparent; border:0; border-bottom:1px solid var(--rule);
  border-radius:0; padding:8px 0 10px; outline:none; }
.site-form input:focus, .site-form textarea:focus{ border-bottom-color:var(--ember); }
.site-form input::placeholder{ color:rgba(242,236,222,.28); }
.site-form .cta{ justify-self:start; margin-top:8px; }
.site-form .form-note{ min-height:1.4em; margin:0;
  font-family:var(--font-label); font-size:12px; letter-spacing:.08em;
  color:rgba(242,236,222,.62); }

/* The shared terminal form. Route-specific classes may add behaviour or
   layout, but the shell, prompts, fields, focus state and response language
   are owned here so Contact, Source Code and Careers cannot drift apart. */
.terminal-console{ position:relative; border:1px solid rgba(242,236,222,.22);
  border-radius:2px; padding:48px clamp(20px,3vw,40px) 10px; }
.terminal-console .tui-chrome{ position:absolute; top:0;
  left:clamp(16px,2.4vw,30px); transform:translateY(-50%);
  padding:0 10px; background:var(--graphite); }
.terminal-console .tui-tab{ display:inline-block; padding:2px 0;
  color:rgba(242,236,222,.5); line-height:1;
  font-family:var(--font-grid); font-size:10px; letter-spacing:.18em;
  text-transform:uppercase; }
.terminal-console > header{ margin-bottom:24px; }
/* The window tab already names the form. A second eyebrow under it repeats
   the label and turns the upper-left corner into a stack of metadata. Every
   terminal form therefore moves directly from its tab to its real heading. */
.terminal-console > header > .eyebrow{ display:none; }
.terminal-console > header > h2{ margin-top:0; }
.terminal-form{ max-width:none; margin-top:0; gap:0;
  font-family:var(--font-grid); }
.terminal-form .term-row{ display:grid; gap:5px; margin-top:16px; }
.terminal-form .term-row:first-of-type{ margin-top:0; }
.terminal-form .term-prompt{ font-family:var(--font-grid); font-size:11px;
  letter-spacing:.1em; text-transform:uppercase; color:rgba(242,236,222,.5); }
.terminal-form .term-field{ display:flex; align-items:baseline; gap:8px;
  border:1px solid rgba(242,236,222,.2); padding:7px 10px; }
.terminal-form .term-field:focus-within{ border-color:var(--ember); }
.terminal-form .term-arrow{ color:rgba(242,236,222,.4); }
.terminal-form .term-slot{ position:relative; display:block; flex:1 1 auto; min-width:0;
  font-family:var(--font-grid); }
.terminal-form .term-slot input,
.terminal-form .term-slot textarea,
.terminal-form .term-slot select{ display:block; width:100%; min-height:44px;
  padding:8px 0; border:0; border-radius:0; outline:none;
  background:transparent; color:var(--bone); font-family:var(--font-grid);
  font-size:15px; letter-spacing:0; }
.terminal-form .term-slot textarea{ resize:vertical; min-height:132px;
  line-height:1.5; }
.terminal-form .term-field--message{ align-items:flex-start; }
.terminal-form .term-field--message .term-arrow{ padding-top:10px; }
.terminal-form .form-help{ margin:7px 0 0; max-width:52ch;
  font-family:var(--font-grid); font-size:11px; letter-spacing:.04em;
  line-height:1.5; color:rgba(242,236,222,.4); }
.terminal-form .cta{ margin-top:22px; font-family:var(--font-label); }
.terminal-form .form-note{ font-family:var(--font-grid); letter-spacing:.04em; }
.terminal-form .form-note:not(:empty)::before{ content:"> "; }
/* One block caret for every shared form. Source Code ships the same element
   in its markup and owns its richer validation state; the global form script
   adds it to Contact and Careers and keeps it on the actual insertion point.
   At rest it invites the first incomplete line instead of blinking below the
   fold on the decorative closing prompt. */
.terminal-form:not(.sc-term) .term-slot input,
.terminal-form:not(.sc-term) .term-slot textarea{ caret-color:transparent; }
.terminal-form:not(.sc-term) .term-caret{ position:absolute; z-index:2;
  left:0; top:50%; width:1ch; height:1.05em; background:var(--bone);
  transform:translate(var(--cursor-left,0px),-50%); opacity:0;
  pointer-events:none; font-family:var(--font-grid); font-size:15px; }
.terminal-form:not(.sc-term) .term-caret--textarea{ top:0;
  transform:translate(var(--cursor-left,0px),var(--cursor-top,8px)); }
.terminal-form:not(.sc-term) .term-slot input:focus ~ .term-caret,
.terminal-form:not(.sc-term) .term-slot textarea:focus ~ .term-caret,
.terminal-form:not(.sc-term) .terminal-cursor-invite .term-caret{
  opacity:1; animation:terminal-cursor-blink 1.06s steps(1,end) infinite; }
@keyframes terminal-cursor-blink{
  0%,50%{ opacity:1; }
  50.01%,100%{ opacity:0; }
}
@media (prefers-reduced-motion:reduce){
  .terminal-form:not(.sc-term) .term-caret{ animation:none !important; }
}

@media (max-width:760px){
  .terminal-console{ padding:42px 14px 8px; }
  .terminal-console > header{ margin-bottom:18px; }
  .terminal-form .term-prompt{ font-size:12px; }
  .terminal-form .term-slot input,
  .terminal-form .term-slot textarea,
  .terminal-form .term-slot select{ font-size:16px; }
  .terminal-form:not(.sc-term) .term-caret{ font-size:16px; }
  .terminal-form .term-row{ margin-top:12px; }
  .terminal-form .term-slot textarea{ min-height:150px; }
}

/* ---- contact -------------------------------------------------------
   Two routes, because the page has two jobs: qualified client work goes to
   Discovery; every other legitimate reason to reach Regen8 gets a short
   note. The rule between them is information architecture, not decoration. */
.contact-page{ padding-top:clamp(76px,9vw,132px); }
.contact-head h1{ margin-top:14px; max-width:none;
  font-size:clamp(36px,5.2vw,82px); white-space:nowrap;
  overflow-wrap:normal; word-break:normal; }
.contact-head .turn{ max-width:42ch; }
.contact-grid{ display:grid; grid-template-columns:minmax(0,5fr) minmax(320px,7fr);
               gap:clamp(54px,8vw,132px); margin-top:clamp(76px,10vw,148px);
               align-items:start; }
.contact-grid h2{ margin:12px 0 0; font-size:clamp(27px,3vw,42px); max-width:13ch; }
.contact-path{ position:sticky; top:148px; padding-top:2px; }
.contact-path > p:not(.eyebrow):not(.contact-direct){ margin:22px 0 0; max-width:38ch;
                                                     font-size:16px; line-height:1.62;
                                                     color:rgba(242,236,222,.72); }
.contact-path .read{ display:inline-block; margin-top:26px; }
.contact-direct{ margin:40px 0 0; padding-top:18px; border-top:1px solid var(--rule);
                 max-width:34ch; font-size:13px; line-height:1.55;
                 color:rgba(242,236,222,.5); }
.contact-direct a{ color:var(--bone); text-decoration-color:var(--ember);
                   text-underline-offset:4px; }
.contact-talent{ margin:16px 0 0; max-width:34ch; font-size:13px; line-height:1.55;
                 color:rgba(242,236,222,.5); }
.contact-talent a{ color:var(--bone); text-decoration-color:var(--ember);
                   text-underline-offset:4px; }
.contact-note{ padding-left:clamp(28px,4vw,64px); border-left:1px solid var(--rule); }
/* Contact speaks through the same terminal-window component as Source Code,
   but remains a general inquiry form. The visual contract is shared; the
   Source Code-only LinkedIn requirement, boot sequence, and caret logic are
   intentionally not inherited. */
@media (max-width:760px){
  .contact-page{ padding-top:64px; }
  .contact-head h1{ max-width:none; font-size:clamp(20px,6.2vw,34px);
    white-space:nowrap; overflow-wrap:normal; word-break:normal; }
  .contact-grid{ grid-template-columns:1fr; gap:64px; margin-top:72px; }
  .contact-path{ position:static; }
}
/* The Source Code: intro leads on the left, the form stands in the trail
   column, which also keeps its button clear of the fixed wordmark that
   owns the page's bottom-left corner. */
/* Static: the whole page is one screen on an ordinary desktop. The doc
   padding that gives long pages their air is collapsed here and spacing is
   tightened so the form fits beside the intro without a scrollbar.

   The bottom padding is NOT zero, though. The wordmark, footer links and
   tagline are fixed to the page's bottom edge. On a shallow desktop the
   terminal is taller than the viewport, so the last scroll position must
   reserve the full footer stack rather than letting the frame end behind its
   44px rabbit target. 160px clears that stack and leaves a deliberate gap.

   `min-height`, not `height` with `overflow:hidden`: on a short viewport the
   locked version does not shrink the form, it CLIPS it, and the clipped part
   is the submit button. Scrolling on a small screen is the correct failure. */
body[data-route="source-code"] .route--doc{ padding-top:72px; padding-bottom:160px; }
body[data-route="source-code"]{ min-height:100svh; }
.sc-page{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,30em);
          column-gap:clamp(48px,6vw,96px); padding-bottom:0; }
.sc-page h1{ margin-bottom:6px; }
.sc-page .site-form{ gap:16px; }
.sc-page > header{ grid-column:1 / -1; }
.sc-page .jr-body{ grid-column:1; }
.sc-page .site-form{ grid-column:2; grid-row:2; align-self:start; margin-top:8px; }
@media (max-width:1080px){
  /* Narrow screens stack, and stacking needs to scroll again. */
  body[data-route="source-code"]{ overflow:auto; height:auto; }
  body[data-route="source-code"] .route--doc{ padding-bottom:max(170px, var(--foot-clear)); }
  .sc-page{ display:block; }
}

/* ---- Let's Talk: the calendar on our ground -------------------------- */
.lt-page{ padding-bottom:max(150px, var(--foot-clear, 0px)); }
.lt-page .jr-body{ max-width:46em; }
.lt-embed{ width:100%; min-width:0; margin-top:40px; max-width:1040px;
           border:1px solid var(--rule); background:var(--graphite); }
.lt-stage{ width:100%; min-width:0; height:700px; }
.lt-launch{ width:100%; min-width:0; height:100%; display:grid;
  align-content:center; justify-items:start;
  padding:clamp(28px,5vw,64px); border:1px solid var(--rule); }
.lt-launch[hidden]{ display:none; }
.lt-launch p:not(.eyebrow){ max-width:38ch; font-size:18px; line-height:1.6; }
.lt-status{ min-height:1.5em; margin:12px 0 0; padding:0 14px;
  font-family:var(--font-label); font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color:rgba(242,236,222,.68); }
[data-calendly-host]{ width:100%; min-width:0; height:100%; outline-offset:-3px; }
[data-calendly-shell][data-state="loading"]{ cursor:progress; }
.lt-fallback{ margin:0; padding:10px 14px; border-top:1px solid var(--rule);
              font-family:var(--font-label); font-size:11px; letter-spacing:.12em;
              text-transform:uppercase; color:rgba(242,236,222,.5); }
.lt-fallback a{ color:var(--ember); text-decoration:none; }

/* Buttons breathe under the pointer: a subtle grow, never a colour change
   the palette did not agree to. */
.cta{ transition:transform .18s ease; will-change:transform; }
.cta:hover{ transform:scale(1.045); }
.cta:active{ transform:scale(0.985); }
@media (prefers-reduced-motion:reduce){
  .cta, .read, .tag, .fine, .fine-rabbit, .rabbit-line{ transition:none; }
  .cta:hover, .cta:active{ transform:none; }
}
.cta:focus-visible, .jr-more:focus-visible, .back:focus-visible,
.fine a:focus-visible, .mnu-foot a:focus-visible,
.lt-fallback a:focus-visible, .fine-rabbit:focus-visible,
.rabbit-line:focus-visible, .jr-rabbit:focus-visible,
.wr-rabbit:focus-visible, [data-rabbit-hopper]:focus-visible{
  outline:2px solid var(--ember); outline-offset:4px;
}
/* The calendar page used to drop the wordmark entirely, because its halo glow
   sat on the embed panel and read as a smudge. Hiding it was the wrong half
   of the fix -- it left the tagline alone in the opposite corner. The glow is
   what offended, so the glow is what goes: on this page only, the wordmark
   keeps its place and loses the drop-shadow. */
body[data-route="lets-talk"] .mark{ filter:none; }

/* ---- the phone ------------------------------------------------------ *

   Everything below exists because a finger is not a pointer. A mouse hits a
   10px line of type exactly; a thumb covers roughly 44 physical points and
   cannot see what is under it. The rule Apple states, and the one this site
   was failing on every page, is that anything tappable must occupy at least
   44x44pt.

   The furniture is deliberately small type, and growing the type to reach 44
   would wreck the page. So the type stays where it is and the HIT AREA grows
   underneath it: a transparent ::after, absolutely placed, centred on the
   line, 44px tall. It changes nothing visually and nothing about layout,
   because an absolutely positioned child takes no space. Hover and focus
   styles keep working, since the pseudo-element belongs to the link. */
@media (max-width:760px){
  /* .mark and .tag are deliberately NOT in this list. Both are
     position:fixed on the home route, and fixed is already a positioning
     context, so they need nothing here -- while relative, declared later in
     the cascade than home.css, OVERRIDES the fixed and drops them into the
     flow. That put the wordmark 3394px down the page and pushed the tagline
     20px off the left edge. */
  .fine a, .mnu-foot a, .who-link, .read, .back,
  .lt-fallback a, .jr-more{ position:relative; }
  .fine a::after, .mnu-foot a::after, .who-link::after, .read::after,
  .back::after, .lt-fallback a::after, .jr-more::after, .mark::after,
  .tag::after{
    content:""; position:absolute; left:-8px; right:-8px;
    top:50%; height:44px; transform:translateY(-50%);
    /* the target only: no paint, and it must never eat the scroll */
    background:none; }

  /* "X" is one glyph wide -- eight pixels. It needs the room taken sideways
     as well, and the row needs the gap to carry it without the two targets
     touching. */
  .who-links{ gap:36px; }
  .who-link::after{ left:-18px; right:-18px; }

  /* The wordmark is the persistent way home. 104x37 was under the floor on
     the short axis only, so the target grows downward into the inset that
     viewport-fit=cover just gave us. */
  .mark::after{ height:48px; }

  /* Micro-labels: 9 and 10px is print-caption size on a screen held at
     arm's length. 11px is the floor for letter-spaced uppercase, which
     reads a size larger than its nominal value. */
  .tag, .mnu-foot{ font-size:11px; }

  /* A form field a thumb can land in. 39px was three short. */
  .site-form input, .site-form textarea{ min-height:44px; }
  .cta{ min-height:48px; }
}

/* Touch behaviour, all viewports. iOS gives a tapped link a grey box by
   default, which on this palette reads as a rendering fault; it becomes the
   ember instead, so a tap is acknowledged in the site's own colour. The
   text-size-adjust line stops Safari inflating type when the phone turns
   landscape, which was silently breaking the measure. Overscroll chaining
   is off so a scrub section cannot hand its momentum to the document and
   bounce the whole page. */
html{ -webkit-text-size-adjust:100%; overscroll-behavior-y:none; }
a, button, [role="button"], input, textarea, select{
  -webkit-tap-highlight-color:rgba(255,90,61,.20); }

/* A long unbreakable URL -- the California Attorney General's complaint
   form, 73 characters -- was pushing the privacy page 18px wider than the
   phone and giving the whole document a sideways scroll. Legal copy is the
   one place bare URLs are unavoidable, so they are allowed to break. */
.jr-body, .doc{ overflow-wrap:anywhere; }

/* The skip link. Off-screen until the keyboard finds it, then it lands
   where the eye is already looking. It is the first tab stop on every page,
   which on a site with a fixed masthead, a wordmark and a menu button is
   the difference between reaching the copy in one key and reaching it in
   nine. It is not visually hidden with clip: a clipped link that never
   reveals is the defect this is meant to fix. */
.skip{ position:fixed; top:8px; left:8px; z-index:60;
       transform:translateY(-160%); transition:transform .18s ease;
       padding:12px 18px; min-height:44px; display:inline-flex;
       align-items:center; background:var(--ember); color:#121212;
       font-family:var(--font-label); font-size:12px; letter-spacing:.14em;
       text-transform:uppercase; text-decoration:none; border-radius:2px; }
/* Arriving is instant, leaving eases. A slide-in reads nicely but for 180ms
   the link is still above the fold, so the one frame where the user most
   needs to know where focus went is the frame that does not show it. Focus
   indication is not a place for an entrance. */
.skip:focus{ transform:translateY(0); transition:none;
             outline:2px solid var(--bone); outline-offset:2px; }
@media (prefers-reduced-motion:reduce){ .skip{ transition:none; } }

/* ---- the browser's own blue ------------------------------------------

   Three things paint a blue the site never declares, all of them browser
   chrome rather than anything in these files:

   1. Autofill. Chrome repaints a field it has filled -- or is offering to
      fill -- with its own pale blue ground and near-black text, which on a
      graphite form reads as a lit blue box appearing the moment you click a
      name or email field. There is no property that turns this off; the
      standard answer is an inset shadow large enough to cover the field,
      plus `-webkit-text-fill-color`, because `color` is overridden too. The
      long transition is there because the repaint is animated.
   2. The focus ring. `outline:none` is already set on these inputs, but
      `:focus-visible` is worth naming explicitly so a future browser
      default cannot reintroduce it. Focus stays visible: the rule under the
      field turns ember, and in the terminal the whole box does.
   3. The selection highlight, which defaults to the platform blue.

   None of this weakens focus indication; it only stops the browser drawing
   a colour that is not ours. */
.site-form input:-webkit-autofill,
.site-form input:-webkit-autofill:hover,
.site-form input:-webkit-autofill:focus,
.site-form textarea:-webkit-autofill{
  -webkit-text-fill-color:var(--bone);
  caret-color:var(--bone);
  -webkit-box-shadow:0 0 0 60px var(--graphite) inset;
          box-shadow:0 0 0 60px var(--graphite) inset;
  transition:background-color 9999s ease-in-out 0s; }

.site-form input:focus,
.site-form input:focus-visible,
.site-form textarea:focus,
.site-form textarea:focus-visible{ outline:none; box-shadow:none; }

::selection{ background:var(--ember); color:#fff; }

/* ---- the unified Regen8 lockup, top-left -----------------------------

   The Stack and wordmark are one masthead signature. The footer no longer
   repeats the wordmark, so this lockup is the single persistent way home.

   32px is not a round number picked for tidiness -- it is the mark's own
   documented floor. Below it the gaps between the four runs approach one
   pixel and the interlock, which is the whole idea of the mark, closes into
   two blobs. The bar is 46px tall, which leaves 7px above and below.

   It follows `bar-paper`, not `floor-paper`. Those are two different
   crossings: floor-paper is how far the paper has reached the BOTTOM corners
   where the wordmark stands, bar-paper is whether the strip under the top
   bar is paper. The mark lives in the bar, so it turns over with the nav
   labels beside it and by exactly the same rule they use. */
.glyph{ --masthead-paper:var(--bar-paper,0);
        --masthead-ink:clamp(0, (var(--masthead-paper) - .42) / .16, 1);
        position:fixed; top:7px; left:32px; z-index:23;
        display:flex; align-items:center; gap:5px;
        height:32px; text-decoration:none;

        /* The crossing, not a switch.

           The nav labels beside it flip on a class, and for a line of type
           that is fine: it crosses in one step and nobody sees the seam. The
           mark is a solid shape holding four one-pixel gaps, and flipping it
           bone-to-ink in a single frame while the ground behind is only
           halfway across is exactly the flicker that gets noticed. So it
           mixes through --bar-paper, which nav.js publishes as how far the
           paper has actually crossed the mark's own box, 0 to 1. */
        color:color-mix(in srgb, rgba(242,236,222,.92),
                        rgba(18,18,18,.86) calc(var(--masthead-ink) * 100%));

        /* The halo exists only to separate bone from moving film. Paper needs
           black ink and no halo; turning the halo white on the way there made
           the mark look embossed. Its alpha now decays continuously to zero. */
        filter:
          drop-shadow(0 1px 2px rgb(13 12 11 / calc(.92 * (1 - var(--masthead-paper)))))
          drop-shadow(0 0 10px rgb(13 12 11 / calc(.62 * (1 - var(--masthead-paper)))));
        /* No transition on COLOUR: --bar-paper already tracks the hand, and
           easing it would only make the ink lag the ground it stands on.
           Transform is a different matter -- it never changes while
           scrolling, and it is what carries the mark into the takeover. */
        transition:transform .32s ease;

        /* Where the drawing actually sits inside its 46px tap box, and how
           big it is. Written down because the takeover has to land the mark
           on a corner, and a corner is a fact about the ART, not about the
           padding wrapped round it. */
        --art-x:32px; --art-y:7px; --art-w:121px; --art-h:32px; }
body[data-route="home"] .glyph{
  --masthead-paper:max(var(--bar-paper,0),var(--film-white,0)); }
.glyph-svg{ display:block; height:84%; width:auto; flex:none; }
.glyph .mark-svg{ display:block; height:100%; width:auto; flex:none; }
.glyph:hover{ color:var(--ember); }
.glyph:focus-visible{ outline:2px solid var(--ember); outline-offset:3px; }

/* A 32px mark is under the 44pt tap minimum, so the hit area grows around it
   without moving it: padding pushes the box out to 46x46 and the offsets pull
   the drawing back to where it was. `position:fixed` is already a positioning
   context, so this needs no `relative` -- the rule that added one to .mark and
   .tag is what once dropped both of them out of their corners. */
.glyph{ padding:7px 8px; top:0; left:24px; box-sizing:content-box; }

@media (max-width:760px){
  /* Phone: the lockup keeps the same proportions at the tighter masthead
     scale while preserving a full-size touch target. */
  .glyph{ height:28px; top:0; left:10px; padding:9px 10px;
          --art-x:20px; --art-y:9px; --art-w:106px; --art-h:28px; }
}

/* ---- the mark inside the takeover ------------------------------------

   With the menu open the mark used to be simply gone: the takeover is
   z-index 30 and the mark sits at 23, so the one piece of furniture that
   says whose site this is went missing exactly when the site was being
   navigated. It rides above the takeover now, in the free corner -- the
   menu's own links stack bottom-LEFT and the close button is top-right --
   and it turns ember, because in there it is the only mark on a flat ground
   and ember is what this site uses for the one thing that matters.

   It travels rather than teleports. The distance is computed from the
   viewport and the art's own metrics, so the drawing lands on the corner
   with the same insets the menu's footer uses on the other side: mirrored,
   not approximately mirrored. Transform rather than swapping top/left for
   bottom/right, because auto values do not interpolate and a jump across
   the screen is the one thing this would not survive.

   dvh, not vh: the takeover is fixed to the visual viewport, and on a phone
   with the URL bar showing they are not the same number. */
html.mnu-open .glyph{
  --mnu-r:clamp(24px, 8vw, 90px);       /* mirrors .mnu-foot's left inset */
  --mnu-b:22px;                         /* and its bottom */
  z-index:32;
  color:var(--ember);
  filter:none;
  transform:translate(calc(100vw  - var(--mnu-r) - var(--art-w) - var(--art-x)),
                      calc(100dvh - var(--mnu-b) - var(--art-h) - var(--art-y)));
}
html.mnu-open .glyph:hover{ color:var(--ember); }

@media (prefers-reduced-motion:reduce){
  .glyph{ transition:none; }
}

/* ---- the journal ----------------------------------------------------
   The index is a dated list, not a grid of cards. Cards would make five
   entries look like a product catalogue and would need images the writing
   does not have; a ruled list says "these are notes, in order", which is
   what they are, and it reads the same with two entries or forty.

   Everything here uses the tokens the rest of the site already carries, so
   an entry inherits the page rather than arriving with its own styling. */

  .jr-head{ max-width:52ch; margin:0 0 12px; }
  .jr-head h1{ margin:14px 0 0; }

  .jr-list{ list-style:none; margin:0; padding:0; counter-reset:none; }
  .jr-list li{ border-top:1px solid var(--rule); }
  .jr-list li:last-child{ border-bottom:1px solid var(--rule); }

  /* Editorial rows. The whole row is the target; the image is a real plate,
     not a thumbnail, and the sides alternate down the page. */
  .jr-row .stagger{ display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr);
                    gap:0 clamp(40px,5vw,84px); align-items:center;
                    padding:clamp(40px,5vw,64px) 0; text-decoration:none; color:inherit; }
  .jr-plate{ grid-column:2; grid-row:1; line-height:0; aspect-ratio:4/3; overflow:hidden; }
  .jr-plate img{ width:100%; height:100%; object-fit:cover; display:block;
                 border:1px solid var(--rule); }
  .jr-text{ grid-column:1; grid-row:1; display:block; }
  .jr-row.flip .jr-plate{ grid-column:1; }
  .jr-row.flip .jr-text{ grid-column:2; }
  .jr-text time{ display:block; font-family:var(--font-label); font-size:12px;
                 letter-spacing:.14em; text-transform:uppercase;
                 color:rgba(242,236,222,.5); }
  .jr-text h2{ margin:14px 0 0; font-size:clamp(24px,2.6vw,36px);
               line-height:1.16; letter-spacing:-.018em; color:var(--bone);
               max-width:18ch; transition:color .18s ease; }
  .jr-text p{ margin:14px 0 0; max-width:46ch;
              font-size:16px; line-height:1.55; color:rgba(242,236,222,.62); }
  .jr-more{ display:inline-block; margin-top:22px; font-family:var(--font-label);
            font-size:12px; letter-spacing:.14em; text-transform:uppercase;
            color:var(--ember); border-bottom:1px solid rgba(255,59,24,.4);
            padding-bottom:4px; }

  .jr-list a:hover h2,
  .jr-list a:focus-visible h2{ color:var(--ember); }
  .jr-list a:focus-visible{ outline:1px solid var(--ember); outline-offset:6px; }

  /* ---- an entry ----------------------------------------------------
     A single column at reading width. The film is behind it at the same low
     strength every document page uses, so the measure is what keeps prose
     comfortable rather than a panel drawn under it. */
  .jr-entry{ max-width:none; }
  .jr-entry header{ max-width:60ch; padding-bottom:34px; margin-bottom:44px;
                    border-bottom:1px solid var(--rule); }
  /* An entry headline is not a hero. At the page h1 size a title fills the
     first screen and the reader arrives at an entry having read nothing. */
  .jr-entry h1{ margin:14px 0 18px; max-width:26ch;
                font-size:clamp(30px,3.4vw,46px); line-height:1.1; }
  .jr-entry header time{ font-family:var(--font-label); font-size:12px;
                         letter-spacing:.14em; text-transform:uppercase;
                         color:rgba(242,236,222,.5); }
  .jr-entry .eyebrow a{ color:inherit; text-decoration:none;
                        border-bottom:1px solid var(--ember); padding-bottom:2px; }

  .jr-body{ max-width:66ch; font-size:18px; line-height:1.66;
            color:rgba(242,236,222,.82); }
  .jr-body > * + *{ margin-top:22px; }
  /* The rabbit closes every entry: monospace, half-there, warming under the
     cursor. It marks the doors in docs/easter-eggs.md. */
  .jr-rabbit{ display:inline-flex; min-height:44px; align-items:center;
              margin-top:56px; font-family:var(--mono, ui-monospace, Menlo, monospace);
              font-size:12px; letter-spacing:.08em; text-transform:uppercase;
              color:rgba(242,236,222,.45); text-decoration:none; transition:color .3s; }
  .jr-rabbit:hover{ color:var(--ember); }
  /* The page's h1 is the entry title, so a heading written as ## in the file
     becomes an h3 here and the scale starts one level down. Three levels:
     a part break, a section, and a small label. */
  .jr-body h2{ margin-top:60px; font-size:clamp(24px,2.2vw,30px); line-height:1.2;
               letter-spacing:-.02em; color:var(--bone); }
  .jr-body h3{ margin-top:52px; font-size:clamp(20px,1.8vw,24px); line-height:1.28;
               letter-spacing:-.015em; color:var(--bone); }
  .jr-body h4{ margin-top:40px; font-family:var(--font-label); font-weight:400;
               font-size:13px; letter-spacing:.16em; text-transform:uppercase;
               color:var(--ember); }
  .jr-body a{ color:var(--bone); text-decoration:none;
              border-bottom:1px solid var(--ember); }
  .jr-body ul, .jr-body ol{ padding-left:0; list-style:none; }
  .jr-body li{ position:relative; padding-left:26px; margin-top:10px; }
  .jr-body ul li::before{ content:""; position:absolute; left:0; top:.72em;
                          width:11px; height:1px; background:var(--ember); }
  .jr-body ol{ counter-reset:n; }
  .jr-body ol li{ counter-increment:n; }
  .jr-body ol li::before{ content:counter(n,decimal-leading-zero);
                          position:absolute; left:0; top:.1em;
                          font-family:var(--font-label); font-size:11px;
                          letter-spacing:.12em; color:var(--ember); }
  .jr-body blockquote{ margin:34px 0; padding-left:26px;
                       border-left:1px solid var(--ember); }
  .jr-body blockquote p{ margin:0; font-size:clamp(19px,1.7vw,23px);
                         line-height:1.45; letter-spacing:-.01em; color:var(--bone); }
  .jr-body code{ font-family:ui-monospace, SFMono-Regular, Menlo, monospace;
                 font-size:.88em; color:var(--bone);
                 background:rgba(242,236,222,.07); padding:2px 6px; }
  .jr-body pre{ overflow-x:auto; padding:20px 22px; border:1px solid var(--rule); }
  .jr-body pre code{ background:none; padding:0; line-height:1.5; }
  .jr-body hr{ border:0; border-top:1px solid var(--rule); margin:44px 0; }

  @media (max-width:760px){
    /* Rows stack: plate on top, text under it. */
    .jr-row .stagger{ grid-template-columns:1fr; padding:28px 0 32px; }
    .jr-plate, .jr-row.flip .jr-plate{ grid-column:1; grid-row:1; margin-bottom:20px; }
    .jr-text, .jr-row.flip .jr-text{ grid-column:1; grid-row:2; }
    .jr-text h2{ max-width:none; }
    .jr-body{ font-size:17px; }
  }

/* The entry hero: the article's own image, held to a calm width and the
   graphite ground. Old-site heroes vary in ratio, so the frame adapts. */
.jr-entry .jr-hero{ margin:34px 0 0; }
.jr-entry .jr-hero img{ display:block; max-width:100%; max-height:520px;
  margin:0; border:1px solid var(--rule); }

/* This file follows site.css in the built stylesheet, so these overrides
   must live after the journal's own hover transitions rather than relying on
   specificity to win the source-order tie. */
@media (prefers-reduced-motion:reduce){
  .jr-text h2, .jr-rabbit{ transition:none; }
}

/* The Source Code terminal.

   The page is the end of the site's easter-egg chain: type redpill and it
   rains, type regen8 and the page boils into the ramp, sit still and a rabbit
   crosses, and every rabbit points toward the hidden architect. So the page a reader
   reaches by going looking is not dressed as a document. The whole page is a
   terminal session -- heading, copy and form in one fixed-pitch face, on one
   even leading, with a block cursor blinking after the title.

   The rule the interaction follows: be a terminal at ARRIVAL and at SUBMIT,
   where nothing is at stake, and get out of the way in between, where someone
   is actually typing. Every delightful form that fails does so by being
   clever during data entry.

   Nothing here replaces the form. Labels, inputs and reading order are
   untouched underneath; this only changes how they are painted. With JS off
   the boot line never writes, the caret never shows, and what remains is the
   plain form the page has always had. */

/* ---- the face ------------------------------------------------------- */

/* --font-grid, not --font-label.

   The label face is Pixotype and Pixotype is PROPORTIONAL -- fonts.css says
   so where it declares it: `i` is 202 units wide and `W` is 807. A terminal
   is a character grid, and a proportional face cannot make one: columns do
   not line up, and a block cursor cannot be placed by counting characters.

   --font-grid is IBM Plex Mono, the fixed-pitch face this site already keeps
   for exactly this job -- the masthead, the menu and every picture on the
   site are drawn in it. It is the terminal face, and using it here is what
   makes the cursor below able to sit on the real caret. */
.sc-page,
.sc-page h1,
.sc-page .eyebrow,
.sc-page .jr-body p,
.sc-term{ font-family:var(--font-grid); }

/* One even leading down the page, which is most of what makes a screen read
   as a terminal rather than as a document set in a monospace font. */
.sc-page .jr-body p{ font-size:14px; line-height:1.75; letter-spacing:.01em;
  max-width:62ch; color:rgba(242,236,222,.72); }
.sc-page .jr-body p.turn{ color:var(--bone); }

.sc-page .eyebrow{ font-size:11px; letter-spacing:.22em; }

/* The title is the session's first line, but it is set in the site's label
   face rather than the terminal grid: Pixotype is what the masthead and the
   fine print speak, so the page's name arrives in the site's voice and the
   terminal takes over from the boot line down. */
.sc-page h1{ font-family:var(--font-label); font-weight:500;
  font-size:clamp(26px, 4.4vw, 52px); letter-spacing:.02em; line-height:1.06;
  text-transform:uppercase; }
/* The title carries NO cursor. There is exactly one blinking block on this
   page and it belongs to the thing you are meant to click. A cursor after
   the heading and another on the closing prompt line read as two more places
   to type, and both of them sit where nothing can be typed -- the heading,
   and the foot of the page beside the wordmark. */

/* ---- the form ------------------------------------------------------- */

/* `.sc-page .sc-term`, not `.sc-term`: site.css sets `.sc-page .site-form
   { gap:16px }` and two classes beat one, so a bare `.sc-term { gap:0 }` lost
   and every reserved reply row kept the full form gap -- which is what made
   the session read as a loose stack of fields. */
.sc-page .sc-term{
  /* The grid gap goes to zero and the rhythm is set per row instead. A
     terminal is dense: a reply belongs tight under the line that caused it,
     and the air belongs BETWEEN commands, not inside one. With a single form
     gap every reserved reply row was pushed as far from its own field as the
     next field was, and the whole thing read as a loose stack rather than a
     session. */
  gap:0; }
.sc-term .term-row{ margin-top:16px; }
.sc-term .term-row:first-of-type{ margin-top:12px; }
.sc-term .term-err{ margin-top:3px; }
.sc-term .cta{ margin-top:22px; font-family:var(--font-label); }

/* The boot line. Three short lines type themselves out on arrival, then the
   first field takes focus. Height is reserved from the start so the page does
   not jump when they land -- this page is one locked screen on desktop,
   `overflow:hidden` and `100svh`, so anything that grows mid-sequence would
   push the button off the bottom. */
.sc-term .term-boot{ margin:0 0 4px; min-height:3.9em;
  font-size:11px; letter-spacing:.06em; line-height:1.3;
  color:rgba(242,236,222,.34); white-space:pre-line; }
.sc-term .term-boot .architect{ color:var(--ember); }

.sc-term .term-row{ display:grid; gap:5px; }
/* The prompt has to name the face explicitly: `.site-form label` sets the
   label face, and the prompt is inside a label. */
.sc-term .term-prompt{ font-family:var(--font-grid);
  font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color:rgba(242,236,222,.5); }

/* The field and its caret share a positioning context. The caret is placed in
   `ch` from the left padding edge, which lands on the real caret only because
   the field is fixed pitch: in a monospace face `ch` IS one character. */
/* The wrapper and the caret carry the SAME face and size as the input, and
   that is load-bearing rather than tidiness. `ch` resolves against the font
   of the element it is written on -- the caret is a span, so it was inheriting
   the label face from `.site-form label` and measuring Pixotype's zero while
   the text beside it was set in Plex Mono. The block sat 13px short of the
   caret after six characters and drifted further with every one. */
.sc-term .term-field,
.sc-term .term-caret{ font-family:var(--font-grid); font-size:15px; }
.sc-term .term-field{ position:relative; display:block; }
.sc-term .term-field input{
  font-family:var(--font-grid); font-size:15px; letter-spacing:0;
  width:100%; caret-color:transparent; }

.sc-term .term-caret{ position:absolute; left:0; bottom:11px;
  width:1ch; height:1.05em; background:var(--bone);
  transform:translateX(calc(var(--col, 0) * 1ch));
  opacity:0; pointer-events:none; }
.sc-term .term-field input:focus ~ .term-caret{ opacity:1;
  animation:sc-blink 1.06s steps(1, end) infinite; }
/* At rest the block sits on the first line still waiting for an answer, so
   the one blinking thing on the page is also the one place to type. It is
   written by sc-terminal.js and moves down the form as lines are accepted;
   the moment a field takes focus, the focus rule above owns the block again
   and this one stands down. */
.sc-term .sc-term-invite .term-caret{ opacity:1;
  animation:sc-blink 1.06s steps(1, end) infinite; }
@keyframes sc-blink{ 0%,50%{ opacity:1 } 50.01%,100%{ opacity:0 } }

/* The reply. Errors print under the line that caused them, in the terminal's
   own voice, rather than appearing as a box. The row keeps its height whether
   or not it is holding a message, for the same reason the boot line does. */
.sc-term .term-err{ margin-top:3px; min-height:1.25em;
  font-size:11px; letter-spacing:.04em; line-height:1.25;
  color:var(--ember); }
.sc-term .term-err:not(:empty)::before{ content:"> "; }

/* The form's own reply, after submit. */
.sc-term .form-note{ font-family:var(--font-grid); letter-spacing:.04em; }
.sc-term .form-note:not(:empty)::before{ content:"> "; }

/* A field the terminal has accepted. Quiet: a colour change on the rule,
   never a tick or a colour on its own, which would be the only meaning
   carried by colour anywhere on this page. */
.sc-term .term-field input[data-ok]{ border-bottom-color:rgba(242,236,222,.5); }

/* Motion is the one thing here that is decoration, so it is the one thing
   that goes. The boot line is written in full immediately and both cursors
   hold steady instead of blinking. */
@media (prefers-reduced-motion:reduce){
  .sc-term .term-field input:focus ~ .term-caret,
  .sc-term .term-field .term-caret{ animation:none; }
}

@media (max-width:760px){
  .sc-term .term-boot{ min-height:2.6em; font-size:10px; }
  /* 16 stops iOS zooming in on focus. The caret has to follow the size as
     well as the face, or `ch` measures a different character than the one
     being typed. */
  .sc-term .term-field,
  .sc-term .term-caret,
  .sc-term .term-field input{ font-size:16px; }
  .sc-page .jr-body p{ font-size:13px; line-height:1.7; }
}

/* ---- the window ------------------------------------------------------

   The two references Javan sent are both terminal UIs rather than terminal
   TYPE: a framed window with a tab, panels whose titles sit in their own top
   border, rows of glyph state, a boxed input with an arrow in it, and a
   prompt line holding a block cursor at the bottom. That is what this section
   builds. It is all chrome -- every piece is aria-hidden and none of it
   carries content -- so the form inside is unchanged and a screen reader
   still meets three labelled fields in reading order. */

.sc-tui{ position:relative;
  border:1px solid rgba(242,236,222,.22); border-radius:2px;
  padding:28px clamp(20px,3vw,40px) 10px; }

/* The tab, sitting astride the top border the way a window's does. It is
   painted over the rule rather than knocking a hole in it, which is why it
   carries the page's own ground as a background. */
.sc-tui .tui-chrome{ position:absolute; top:0; left:clamp(16px,2.4vw,30px);
  transform:translateY(-50%); }
.sc-tui .tui-tab{ display:inline-block; padding:2px 10px;
  background:var(--graphite); color:rgba(242,236,222,.5);
  font-family:var(--font-grid); font-size:10px; letter-spacing:.18em;
  text-transform:uppercase; }

/* Panels. The title rides its own top border, same trick as the tab. */
.sc-tui [data-panel]{ position:relative;
  border:1px solid rgba(242,236,222,.16);
  padding:26px clamp(16px,2vw,26px) 18px; }
.sc-tui [data-panel]::before{ content:attr(data-panel);
  position:absolute; top:0; left:16px; transform:translateY(-50%);
  padding:0 8px; background:var(--graphite);
  font-family:var(--font-grid); font-size:10px; letter-spacing:.18em;
  text-transform:uppercase; color:rgba(242,236,222,.38); }

/* The task list: three lines of glyph state, written by sc-terminal.js. The
   glyphs are ASCII on purpose -- [ ], [>], [x] render in any monospace face,
   where box-drawing and checkbox characters are a gamble. */
.sc-tui .term-tasks{ list-style:none; margin:0 0 6px; padding:0;
  font-family:var(--font-grid); font-size:11px; letter-spacing:.06em;
  line-height:1.85; color:rgba(242,236,222,.34); }
.sc-tui .term-tasks .tk-box{ color:rgba(242,236,222,.28); }
.sc-tui .term-tasks li[data-state="now"]{ color:var(--bone); }
.sc-tui .term-tasks li[data-state="now"] .tk-box{ color:var(--ember); }
.sc-tui .term-tasks li[data-state="done"]{ color:rgba(242,236,222,.55); }

/* The field becomes a box with the arrow inside it, and the input sits in the
   space the arrow leaves. The underline goes: a box and a rule together is
   two affordances saying the same thing. */
.sc-tui .term-field{ display:flex; align-items:baseline; gap:8px;
  border:1px solid rgba(242,236,222,.2); padding:7px 10px; }
.sc-tui .term-field:focus-within{ border-color:var(--ember); }
.sc-tui .term-arrow{ color:rgba(242,236,222,.4); }
.sc-tui .term-field input{ border-bottom:0; padding:0; }
/* The slot is what the caret is measured against.

   It exists because the arrow broke the sums: the caret is absolutely
   positioned, and an absolutely positioned child of a FLEX container takes
   its static position from the container's content box, not from the input
   beside it. So `translateX(5ch)` was landing five characters from the left
   edge of the BOX, and the arrow plus its gap put the block 19px to the left
   of the character it was supposed to be sitting on. Wrapping the input and
   the caret in their own positioning context makes the two agree again. */
.sc-tui .term-slot{ position:relative; display:block; flex:1 1 auto;
  font-family:var(--font-grid); }
.sc-tui .term-slot input{ display:block; width:100%; }
.sc-tui .term-field input[data-ok]{ border-bottom:0; }
/* The caret is positioned from the input's own left edge now that the arrow
   sits before it, so it hangs off the input rather than the box. */
.sc-tui .term-caret{ left:0; bottom:auto; top:50%; margin-top:-.53em; }

/* The status row: dim, factual, live -- what a terminal keeps at the foot. */
.sc-tui .term-meta{ margin:8px 0 0; font-family:var(--font-grid);
  font-size:10px; letter-spacing:.1em; color:rgba(242,236,222,.3); }

/* The header sits above both panels, so it needs room for their titles to
   ride their top borders without touching the heading's descenders. */
.sc-tui > header{ margin-bottom:16px; }
/* Each panel is as tall as its own contents. Without this the readme is
   stretched by the grid to match the form beside it and ends in a long empty
   box, which is the one thing a terminal panel never does. */
.sc-tui [data-panel]{ align-self:start; }

@media (max-width:1080px){
  /* Stacked, the second panel needs air above it that the grid gap was
     giving it while they sat side by side. */
  .sc-tui .sc-term{ margin-top:26px; }
}
@media (max-width:760px){
  .sc-tui{ padding:30px 16px 16px; }
  .sc-tui [data-panel]{ padding:24px 14px 16px; }
}

/* ---- one screen, no scroll ------------------------------------------

   A terminal does not scroll, so this page does not either. The page is
   built to land inside the viewport at every size it can, rather than to be
   scrolled through.

   Two things make that hard, and both are furniture rather than content: the
   masthead owns the top of every route, and the wordmark, the tagline and the
   fine print own the bottom. Measured, that band is 70px on a desktop and
   173px on a phone, where the fine print wraps to three lines. Whatever is
   left after those is the whole budget, and everything below is spending it.

   The rules are keyed on viewport HEIGHT, not width, because height is what
   actually runs out. A 1440x760 laptop is as tight as a tablet. */

/* The measured clearance below the terminal. The fine-print row includes a
   44px rabbit target above the wordmark; on a shallow desktop, 160px moves
   the terminal fully above that row and leaves a visible pause between them. */
body[data-route="source-code"] .route--doc{ padding-bottom:160px; }

/* Shorter than a full desktop: give back the air first, before touching
   anything that carries meaning. */
@media (max-height:880px) and (min-width:1081px){
  body[data-route="source-code"] .route--doc{ padding-top:56px; }
  .sc-tui{ padding-top:22px; padding-bottom:8px; }
  .sc-tui > header{ margin-bottom:10px; }
  .sc-term .term-row{ margin-top:11px; }
  .sc-term .cta{ margin-top:16px; }
}

/* Shorter still. The decorative readouts go before the copy does: the task
   list becomes one line instead of three, which keeps the glyphs on screen
   at a third of the height. */
@media (max-height:800px){
  .sc-tui .term-tasks{ display:flex; gap:14px; margin-bottom:2px; }
  .sc-term .term-boot{ min-height:2.7em; line-height:1.22; }
  .sc-term .term-err{ min-height:1.05em; }
  .sc-tui [data-panel]{ padding-top:22px; padding-bottom:14px; }
}

/* A laptop at 720 or a phone. Everything tightens together: the copy loses a
   point and some leading, the fields lose their padding, and the two chrome
   readouts at the foot -- the prompt line and the status row -- stand down.
   They are the least load-bearing things on the page: one is a decoration,
   the other repeats what the task list already shows. */
@media (max-height:740px), (max-width:760px){
  .sc-page .jr-body p{ font-size:12px; line-height:1.62; }
  .sc-page .jr-body p.turn{ margin-top:14px; }
  .sc-tui .term-field{ padding:5px 9px; }
  .sc-tui .term-tasks{ font-size:10px; }
  .sc-term .term-prompt{ font-size:10px; }
  .sc-tui .term-meta{ display:none; }
}

/* Phones. The stack has one column to work with and the fine print takes
   three lines of the floor, so this is the tightest the page ever gets.

   One number here is NOT spendable: the inputs keep their 44px minimum. That
   is the touch target the whole site holds to, it is 132px of a 614px budget,
   and shrinking it to win back a scrollbar would be trading a real problem
   for a cosmetic one. So the field boxes lose their own padding instead and
   let the 44px input be the box. */
@media (max-width:760px){
  body[data-route="source-code"] .route--doc{ padding-top:54px;
    padding-bottom:176px; }
  .sc-tui{ padding:18px 14px 8px; }
  .sc-tui [data-panel]{ padding:18px 12px 12px; }
  .sc-tui > header{ margin-bottom:8px; }
  .sc-tui .sc-term{ margin-top:14px; }
  .sc-page .jr-body p{ font-size:11.5px; line-height:1.55; }
  .sc-page .jr-body p.turn{ margin-top:12px; }
  .sc-term .term-boot{ min-height:2.5em; font-size:9.5px; margin-bottom:2px; }
  /* One line, not three: the same glyphs at a third of the height. */
  .sc-tui .term-tasks{ display:flex; gap:12px; margin-bottom:2px;
    font-size:10px; }
  .sc-term .term-row{ margin-top:8px; gap:3px; }
  .sc-term .term-row:first-of-type{ margin-top:6px; }
  .sc-tui .term-field{ padding:0 9px; }
  /* site.css puts a paragraph margin under every form paragraph. In a
     terminal the reply belongs tight under its own line. */
  .sc-term .term-err{ margin-bottom:0; }
  .sc-term .cta{ margin-top:12px; padding:11px 16px; }
}

/* Laptops shorter than 790: one more pass of the same air. */
@media (max-height:790px) and (min-width:1081px){
  body[data-route="source-code"] .route--doc{ padding-top:48px; }
  .sc-tui{ padding-top:18px; padding-bottom:6px; }
  .sc-tui > header{ margin-bottom:6px; }
  .sc-term .term-row{ margin-top:9px; }
  .sc-term .cta{ margin-top:12px; }
}

/* Tablets and narrow windows: stacked like a phone, but with a desktop's
   type and a one-line fine print, so they need their own pass. */
@media (min-width:761px) and (max-width:1080px){
  body[data-route="source-code"] .route--doc{ padding-top:56px; }
  .sc-tui{ padding-top:22px; padding-bottom:8px; }
  .sc-tui > header{ margin-bottom:10px; }
  .sc-tui .term-tasks{ display:flex; gap:14px; margin-bottom:2px; }
  .sc-tui .sc-term{ margin-top:18px; }
  .sc-term .term-row{ margin-top:12px; }
  .sc-term .cta{ margin-top:16px; }
}

/* An empty live region should take no room. It is a `<p>`, so it holds a line
   box until it is told not to, and that line box was 17px of a phone's
   budget for a message that is not there yet. */
.sc-term .form-note:empty{ display:none; }

/* The last things to go on a phone, and only on a phone: the boot line is
   the page's one piece of theatre and it is the one piece that carries no
   information at all, so it stands down before a word of copy does. */
@media (max-width:760px) and (max-height:900px){
  .sc-term .term-boot{ display:none; }
}

/* The last phone pass. Everything here is chrome or air; not one word of
   copy moves.

   The one structural change: on a phone the three reserved reply rows become
   one. A reply still prints, and it still prints in the terminal's voice --
   it just prints in a single line under the field group instead of holding
   45px of empty floor for messages that are not there. The reply names its
   own field ("the email field is empty"), so nothing is lost by moving it. */
@media (max-width:760px){
  body[data-route="source-code"] .route--doc{
    padding-top:48px;
    padding-bottom:calc(220px + env(safe-area-inset-bottom));
  }
  .sc-tui{ padding:14px 14px 6px; }
  .sc-tui [data-panel]{ padding:15px 11px 10px; }
  .sc-tui > header{ margin-bottom:6px; }
  .sc-tui .sc-term{ margin-top:12px; }
  .sc-page .jr-body p{ font-size:11px; line-height:1.5; }
  .sc-page .eyebrow{ font-size:10px; }
  .sc-term .term-row{ margin-top:6px; }
  .sc-term .term-row:first-of-type{ margin-top:4px; }
  .sc-term .term-err{ min-height:0; margin-top:0; }
  .sc-term .term-err:empty{ display:none; }
  .sc-term .cta{ margin-top:10px; padding:10px 15px; }
}

/* Phones scroll before they shrink readable information. The terminal still
   keeps its compact composition, but body copy and machine labels hold the
   same legibility floor as the rest of the site. */
@media (max-width:760px){
  .sc-page .jr-body p{ font-size:16px; line-height:1.6; }
  .sc-page .eyebrow,
  .sc-term .term-boot,
  .sc-tui .term-tasks,
  .sc-term .term-prompt{ font-size:12px; }
  .sc-tui{ padding-top:12px; }
  .sc-tui [data-panel]{ padding:13px 11px 9px; }
  /* The takeover menu carries these links on phones. Keeping the fixed fine
     print here would lay it directly across the request form. */
  body[data-route="source-code"] .fine{ display:none; }
}

/* Careers is a future-team signal, not a live job board. Its visual grammar
   is therefore a field and a path: capability lanes establish where the
   company expects to build; the numbered packet makes the invitation exact. */
.careers-page{ padding-top:clamp(76px,9vw,132px); }
.careers-head{ position:relative; min-height:min(650px,72vh); display:flex;
               flex-direction:column; justify-content:center; padding:94px 0 112px;
               border-top:1px solid var(--rule); border-bottom:1px solid var(--rule); }
.careers-head::before{ content:""; position:absolute; inset:0; pointer-events:none;
  background-image:linear-gradient(to right,rgba(242,236,222,.055) 1px,transparent 1px),
                   linear-gradient(to bottom,rgba(242,236,222,.04) 1px,transparent 1px);
  background-size:clamp(52px,6vw,88px) clamp(52px,6vw,88px);
  mask-image:linear-gradient(to right,transparent,black 16%,black 84%,transparent); }
.careers-head::after{ content:""; position:absolute; width:10px; height:10px;
  left:calc(50% - 5px); bottom:-5px; background:var(--ember); transform:rotate(45deg); }
.careers-head .stagger{ position:relative; z-index:1; display:flex;
  flex-direction:column; align-items:center; text-align:center; }
.careers-status{ position:absolute; z-index:1; top:22px; left:0; right:0;
  display:flex; justify-content:space-between; font-family:var(--font-label);
  font-size:11px; letter-spacing:.17em; text-transform:uppercase;
  color:rgba(242,236,222,.54); }
.careers-status span:last-child{ color:var(--ember); }
.careers-head h1{ margin:0; max-width:16ch; font-size:clamp(50px,6.4vw,92px);
  line-height:.94; letter-spacing:-.035em; }
.careers-head .turn{ max-width:66ch; margin:34px auto 0; font-size:clamp(18px,2vw,24px);
  line-height:1.48; color:rgba(242,236,222,.72); }
.career-hiring-note{ display:block; margin-top:18px; color:var(--bone); }

.careers-field{ padding-top:clamp(96px,12vw,176px); }
.careers-intro{ display:block; }
.careers-intro h2{ margin:16px 0 0; max-width:16ch; font-size:clamp(38px,5vw,68px); }
.careers-intro > p:last-child{ max-width:56ch; margin:28px 0 0; font-size:17px;
  line-height:1.65; color:rgba(242,236,222,.68); }
.career-lanes{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
  margin-top:clamp(68px,8vw,112px); border-top:1px solid var(--rule);
  border-bottom:1px solid var(--rule); }
.career-lane{ min-height:330px; padding:28px clamp(22px,2.5vw,38px) 38px; }
.career-lane + .career-lane{ border-left:1px solid var(--rule); }
.career-index{ margin:0; font-family:var(--font-label); font-size:11px;
  letter-spacing:.16em; text-transform:uppercase; color:var(--ember); }
.career-lane h3{ margin:62px 0 0; max-width:12ch; font-family:var(--font-display);
  font-weight:500; font-size:clamp(25px,2.5vw,36px); line-height:1.08; }
.career-lane ul{ list-style:none; margin:40px 0 0; padding:0; }
.career-lane li{ padding:11px 0; border-top:1px solid rgba(242,236,222,.1);
  font-size:14px; line-height:1.4; color:rgba(242,236,222,.7); }
.career-lane-copy{ margin:28px 0 0; max-width:34ch; font-size:13px; line-height:1.6;
  color:rgba(242,236,222,.48); }

.careers-standard{ padding-top:clamp(110px,14vw,208px); }
.careers-standard-head{ display:block; }
.careers-standard-head h2{ margin:16px 0 0; max-width:16ch; font-size:clamp(42px,5.5vw,76px); }
.career-principles{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(30px,4vw,58px); margin-top:clamp(64px,8vw,112px); }
.career-principle{ padding-top:20px; border-top:2px solid var(--bone); }
.career-principle h3{ margin:34px 0 0; max-width:14ch; font-size:clamp(25px,2.5vw,34px); }
.career-principle > p:last-child{ margin:22px 0 0; max-width:38ch; font-size:15px;
  line-height:1.68; color:rgba(242,236,222,.66); }

.careers-signal{ position:relative; display:grid;
  grid-template-columns:minmax(300px,6fr) minmax(340px,6fr);
  column-gap:clamp(44px,5vw,80px); margin-top:clamp(124px,16vw,232px);
  padding:clamp(64px,8vw,108px) clamp(24px,4vw,64px); border:1px solid var(--rule);
  overflow:hidden; }
.careers-signal::before{ content:"SIGNAL / 2027"; position:absolute; right:-10px; top:14px;
  font-family:var(--font-grid); font-size:clamp(56px,8vw,116px); line-height:1;
  color:rgba(242,236,222,.035); letter-spacing:-.03em; pointer-events:none; }
.careers-signal-copy,.careers-packet,.careers-action{ position:relative; z-index:1; }
.careers-signal h2{ margin:14px 0 0; max-width:12ch; font-size:clamp(40px,4.2vw,60px); }
.careers-signal-copy > p:last-child{ margin:28px 0 0; max-width:43ch; font-size:16px;
  line-height:1.65; color:rgba(242,236,222,.66); }
.careers-packet{ grid-column:2; grid-row:1 / span 2; list-style:none; margin:0; padding:0; }
.careers-packet li{ display:grid; grid-template-columns:42px 1fr; gap:18px;
  padding:0 0 28px; margin:0 0 28px; border-bottom:1px solid var(--rule); }
.careers-packet li > span{ font-family:var(--font-label); font-size:11px;
  letter-spacing:.16em; color:var(--ember); }
.careers-packet strong{ display:block; font-family:var(--font-display); font-weight:500;
  font-size:24px; line-height:1.1; }
.careers-packet p{ margin:12px 0 0; max-width:44ch; font-size:14px;
  line-height:1.6; color:rgba(242,236,222,.6); }
.careers-packet p + p{ margin-top:9px; color:rgba(242,236,222,.45); }
.careers-action{ grid-column:1 / -1; display:flex; align-items:flex-end;
  justify-content:space-between; gap:32px; margin:54px 0 0;
  padding-top:24px; border-top:1px solid var(--rule); }
.careers-action .careers-cta{ flex:0 0 auto; margin-top:0; }
.careers-action p{ max-width:54ch; margin:0; font-size:12px; line-height:1.6;
  color:rgba(242,236,222,.48); }
/* General inquiries still have a direct email path elsewhere, but Careers
   has one intake channel so applications remain indexed and reviewable. */
body[data-route="careers"] .fine-email,
body[data-route="careers"] .fine-email-sep,
body[data-route="careers/apply"] .fine-email,
body[data-route="careers/apply"] .fine-email-sep{ display:none; }

@media(max-width:1080px) and (min-width:761px){
  .career-lanes{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .career-lane:nth-child(3){ border-left:0; border-top:1px solid var(--rule); }
  .career-lane:nth-child(4){ border-top:1px solid var(--rule); }
}

@media(max-width:760px){
  .careers-page{ padding-top:64px; }
  .careers-head{ min-height:620px; padding:104px 0 90px; }
  .careers-status{ top:18px; }
  .careers-head h1{ max-width:16ch; font-size:clamp(38px,10.1vw,48px); }
  .careers-head .turn{ margin-top:30px; font-size:18px; }
  .careers-intro > p:last-child{ margin-top:4px; }
  .career-lanes,.career-principles{ grid-template-columns:1fr; }
  .career-lanes{ margin-top:58px; }
  .career-lane{ min-height:0; padding:24px 0 34px; }
  .career-lane + .career-lane{ border-left:0; border-top:1px solid var(--rule); }
  .career-lane h3{ margin-top:36px; }
  .career-lane ul{ margin-top:28px; }
  .career-principles{ gap:56px; margin-top:58px; }
  .career-principle h3{ margin-top:26px; }
  .careers-signal{ grid-template-columns:1fr; padding:54px 22px; }
  .careers-packet{ grid-column:1; grid-row:auto; margin-top:56px; }
  .careers-action{ grid-column:1; align-items:flex-start; flex-direction:column;
    gap:22px; margin-top:42px; }
}

/* Careers application: one calm introduction followed by the shared terminal
   shell. The route is deliberately a form page, not a second careers pitch. */
.careers-apply-page{ padding-top:clamp(76px,9vw,132px); }
.careers-apply-head{ max-width:920px; margin:0 auto; text-align:center;
  display:flex; flex-direction:column; align-items:center; }
.careers-apply-head h1{ max-width:15ch; font-size:clamp(48px,7vw,96px); }
.careers-apply-head .turn{ max-width:62ch; margin:30px auto 0;
  font-size:clamp(18px,2vw,23px); line-height:1.55;
  color:rgba(242,236,222,.7); }
.careers-apply-head .read{ margin-top:26px; }
.careers-apply-console{ max-width:980px; margin:clamp(84px,11vw,152px) auto 0; }
.careers-apply-console > header h2{ margin:0; max-width:18ch;
  font-size:clamp(30px,4vw,52px); }
.careers-apply-console > header > p:last-child{ max-width:58ch; margin:18px 0 0;
  font-size:14px; line-height:1.62; color:rgba(242,236,222,.58); }
.careers-form-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 22px; }
.terminal-options{ margin:26px 0 0; padding:22px 18px 18px;
  border:1px solid rgba(242,236,222,.16); }
.terminal-options legend{ padding:0 8px; font-family:var(--font-grid);
  font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color:rgba(242,236,222,.5); }
.terminal-option-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px 18px; }
.terminal-option-grid label,.terminal-check{ display:flex; align-items:flex-start;
  gap:10px; min-height:38px; font-family:var(--font-grid); font-size:13px;
  line-height:1.45; color:rgba(242,236,222,.7); cursor:pointer; }
.terminal-option-grid input,.terminal-check input{ flex:0 0 auto; width:16px; height:16px;
  margin:2px 0 0; accent-color:var(--ember); }
.terminal-option-grid label:focus-within,.terminal-check:focus-within{
  color:var(--bone); }
.careers-consents{ display:grid; gap:14px; margin-top:28px; padding-top:22px;
  border-top:1px solid rgba(242,236,222,.16); }
.careers-consents .terminal-check{ max-width:72ch; min-height:44px; }
.careers-privacy{ margin:18px 0 0; font-family:var(--font-grid); font-size:11px;
  line-height:1.55; color:rgba(242,236,222,.42); }
.careers-privacy a{ color:rgba(242,236,222,.72); text-underline-offset:4px; }

@media(max-width:760px){
  .careers-apply-page{ padding-top:64px; }
  .careers-apply-head h1{ font-size:clamp(40px,11vw,52px); }
  .careers-apply-head .turn{ font-size:17px; }
  .careers-apply-console{ margin-top:86px; }
  .careers-form-grid,.terminal-option-grid{ grid-template-columns:1fr; }
  .terminal-options{ padding:20px 12px 14px; }
}
