      :root {
        color-scheme: light;
        --paper: #f6f3ec;
        --paper-2: #ede8dd;
        --paper-a: rgba(246, 243, 236, 0.86);
        --ink: #14161f;
        --ink-2: #3a3d48;
        --muted: #6a6e7a;
        --line: rgba(20, 22, 31, 0.14);
        --line-strong: rgba(20, 22, 31, 0.32);
        --blue: #1f3a93;
        --blue-deep: #142a70;
        --blue-soft: #dfe5f6;
        --disc: #1f3a93;
        --grain-opacity: 0.35;
        --grain-filter: none;
        --serif: "Inter Tight", Inter, system-ui, sans-serif;
        --sans: "Inter Tight", Inter, system-ui, sans-serif;
        --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
        --col: minmax(0, 1fr);
        --gutter: 24px;
      }
      /* Night: the moon takes the page */
      [data-theme="dark"] {
        color-scheme: dark;
        --paper: #0d0f16;
        --paper-2: #151824;
        --paper-a: rgba(13, 15, 22, 0.82);
        --ink: #f1eee6;
        --ink-2: #c8c5bc;
        --muted: #8b8f9b;
        --line: rgba(241, 238, 230, 0.13);
        --line-strong: rgba(241, 238, 230, 0.3);
        --blue: #94a6ff;
        --blue-deep: #b3c0ff;
        --blue-soft: rgba(148, 166, 255, 0.12);
        --disc: #f1eee6;
        --grain-opacity: 0.22;
        --grain-filter: invert(1);
      }
      body,
      header,
      .btn,
      input,
      textarea {
        transition: background-color 0.5s, color 0.5s, border-color 0.5s;
      }
      /* circular wipe from the click point (View Transitions API) */
      ::view-transition-old(root),
      ::view-transition-new(root) {
        animation: none;
        mix-blend-mode: normal;
      }
      ::view-transition-new(root) {
        clip-path: circle(0 at var(--tx, 50%) var(--ty, 50%));
        animation: themeWipe 0.9s cubic-bezier(0.6, 0, 0.2, 1) forwards;
      }
      @keyframes themeWipe {
        to {
          clip-path: circle(150vmax at var(--tx, 50%) var(--ty, 50%));
        }
      }

      * {
        box-sizing: border-box;
      }
      html {
        scroll-behavior: smooth;
        overflow-x: clip;
        /* keep the clicked header still when a panel closes; the browser would
           otherwise hold the content below steady and yank the page upward */
        overflow-anchor: none;
      }
      body {
        margin: 0;
        background: var(--paper);
        color: var(--ink);
        font-family: var(--sans);
        font-size: 17px;
        line-height: 1.6;
        -webkit-font-smoothing: antialiased;
        overflow-x: clip;
      }
      /* paper grain */
      body::before {
        content: "";
        position: fixed;
        inset: -60px;
        z-index: 0;
        pointer-events: none;
        opacity: var(--grain-opacity);
        filter: var(--grain-filter);
        animation: grain 0.9s steps(4) infinite;
        background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.08 0 0 0 0 0.09 0 0 0 0 0.12 0 0 0 0.06 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
      }
      @keyframes grain {
        0% {
          transform: translate(0, 0);
        }
        25% {
          transform: translate(-18px, 22px);
        }
        50% {
          transform: translate(26px, -14px);
        }
        75% {
          transform: translate(-10px, -24px);
        }
        100% {
          transform: translate(0, 0);
        }
      }
      a {
        color: inherit;
        text-decoration: none;
      }
      ::selection {
        background: var(--blue);
        color: var(--paper);
      }
      :focus-visible {
        outline: 2px solid var(--blue);
        outline-offset: 3px;
      }
      /* inputs signal focus with their own underline, no box */
      input:focus-visible,
      textarea:focus-visible {
        outline: none;
      }

      .page {
        position: relative;
        z-index: 1;
        overflow-x: clip;
      }
      /* Cursor ring: follows with a lag, inverts what it covers, grows on targets */
      .cursor {
        position: fixed;
        left: 0;
        top: 0;
        width: 34px;
        height: 34px;
        margin: -17px 0 0 -17px;
        border-radius: 50%;
        border: 1.5px solid #fff;
        mix-blend-mode: difference;
        pointer-events: none;
        z-index: 100;
        opacity: 0;
        transform: translate(-100px, -100px);
        transition: width 0.3s, height 0.3s, margin 0.3s, opacity 0.3s, background 0.3s;
        display: none;
      }
      .cursor.on {
        opacity: 1;
      }
      .cursor.grow {
        width: 64px;
        height: 64px;
        margin: -32px 0 0 -32px;
        background: rgba(255, 255, 255, 0.12);
      }
      @media (hover: hover) and (pointer: fine) {
        .cursor {
          display: block;
        }
      }
      .container {
        width: min(1280px, 100% - 48px);
        margin: 0 auto;
      }
      .rule {
        height: 1px;
        background: var(--line-strong);
        transform: scaleX(0);
        transform-origin: left;
        transition: transform 1.4s cubic-bezier(0.6, 0, 0.2, 1);
      }
      .rule.in {
        transform: scaleX(1);
      }
      .brand,
      .section-title,
      .index h3 {
        font-weight: 600;
        letter-spacing: -0.025em;
      }
      .mono {
        font-family: var(--mono);
        font-size: 12px;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: var(--muted);
      }

      /* ---------- Masthead ---------- */
      header {
        position: sticky;
        top: 0;
        z-index: 50;
        background: var(--paper-a);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        border-bottom: 1px solid var(--line);
      }
      .theme-toggle {
        width: 36px;
        height: 36px;
        margin-right: 8px;
        display: inline-grid;
        place-items: center;
        border: 1px solid var(--line);
        border-radius: 50%;
        background: transparent;
        color: var(--ink);
        cursor: pointer;
        transition: border-color 0.25s, background 0.25s, transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .theme-toggle:hover {
        border-color: var(--line-strong);
        background: var(--blue-soft);
        transform: rotate(-20deg);
      }
      .theme-toggle svg {
        width: 16px;
        height: 16px;
        fill: currentColor;
      }
      .theme-toggle .sun {
        display: none;
      }
      [data-theme="dark"] .theme-toggle .sun {
        display: block;
      }
      [data-theme="dark"] .theme-toggle .moon {
        display: none;
      }
      .nav-right {
        justify-self: end;
        display: flex;
        align-items: center;
      }
      .nav {
        display: grid;
        grid-template-columns: 1fr auto 1fr;
        align-items: center;
        padding: 18px 0;
      }
      .brand {
        display: inline-flex;
        align-items: center;
        gap: 12px;
        font-family: var(--serif);
        font-size: 24px;
        letter-spacing: -0.01em;
        line-height: 1;
      }
      .brand svg {
        width: 22px;
        height: 22px;
      }
      .nav-title {
        justify-self: center;
        text-align: center;
      }
      .nav ul {
        display: flex;
        gap: 28px;
        list-style: none;
        margin: 0;
        padding: 0;
      }
      .nav ul a {
        position: relative;
        font-size: 15px;
        font-weight: 500;
        padding: 6px 0;
      }
      .nav ul a::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        height: 1px;
        background: var(--blue);
        transform: scaleX(0);
        transform-origin: left;
        transition: transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .nav ul a:hover::after,
      .nav ul a.active::after {
        transform: scaleX(1);
      }

      /* ---------- Hero ---------- */
      .hero {
        position: relative;
        padding: 96px 0 72px;
        display: grid;
        grid-template-columns: repeat(12, var(--col));
        column-gap: var(--gutter);
        align-items: end;
        min-height: calc(100vh - 70px);
      }
      .hero-copy {
        grid-column: 1 / 10;
        grid-row: 1;
        position: relative;
        z-index: 1;
      }
      .hero h1 {
        font-family: var(--serif);
        font-weight: 700;
        font-size: clamp(46px, 6.6vw, 98px);
        line-height: 0.96;
        letter-spacing: -0.05em;
        /* the word masks carry -0.1em side margins; give the space back */
        word-spacing: 0.12em;
        margin: 0 0 40px;
        text-wrap: balance;
        max-width: 15ch;
      }
      .hero h1 em {
        font-style: normal;
        font-weight: 500;
        word-spacing: 0;
        letter-spacing: -0.04em;
        color: var(--blue);
      }
      /* word-by-word mask reveal (spans added by script) */
      .hero h1 .w {
        display: inline-block;
        overflow: hidden;
        vertical-align: bottom;
        /* room for italic overshoot and ascenders so the mask never clips glyphs */
        padding: 0.16em 0.1em 0.1em;
        margin: -0.16em -0.1em -0.1em;
      }
      .hero h1 .w > span {
        display: inline-block;
        transform: translateY(105%) rotate(2deg);
        transform-origin: left bottom;
        animation: wordUp 1s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
        animation-delay: calc(60ms + var(--i, 0) * 55ms);
      }
      @keyframes wordUp {
        to {
          transform: none;
        }
      }
      .hero-foot {
        display: grid;
        grid-template-columns: repeat(9, var(--col));
        column-gap: var(--gutter);
        align-items: start;
      }
      .hero p {
        grid-column: 1 / 6;
        margin: 0;
        font-size: clamp(17px, 1.35vw, 20px);
        line-height: 1.55;
        color: var(--ink-2);
        max-width: 46ch;
      }
      .hero-cta {
        grid-column: 7 / 10;
        justify-self: end;
        align-self: end;
      }

      /* Signature: the eclipse */
      .eclipse {
        grid-column: 9 / 13;
        grid-row: 1;
        position: relative;
        align-self: start;
        aspect-ratio: 1;
        margin-top: -20px;
        pointer-events: none;
      }
      .eclipse .disc {
        position: absolute;
        inset: 0;
        border-radius: 50%;
        background: var(--disc);
        box-shadow: 0 30px 80px -30px rgba(31, 58, 147, 0.55);
        pointer-events: auto;
        cursor: pointer;
        transition: background-color 0.5s, box-shadow 0.5s;
      }
      [data-theme="dark"] .eclipse .disc {
        box-shadow: 0 0 90px -10px rgba(241, 238, 230, 0.35);
      }
      .eclipse .disc:hover {
        box-shadow: 0 30px 90px -20px rgba(31, 58, 147, 0.7);
      }
      .eclipse .disc:focus-visible {
        outline: 2px solid var(--blue);
        outline-offset: 6px;
      }
      .eclipse .shadow {
        position: absolute;
        inset: 0;
        border-radius: 50%;
        background: var(--paper);
        transform: translate(-34%, -14%);
        will-change: transform;
      }
      .eclipse .orbit {
        position: absolute;
        inset: -14%;
        border-radius: 50%;
        border: 1px solid var(--line-strong);
        border-style: dashed;
        opacity: 0.6;
        animation: orbit 140s linear infinite;
      }
      @keyframes orbit {
        to {
          transform: rotate(360deg);
        }
      }
      .eclipse .disc {
        animation: breathe 9s ease-in-out infinite alternate;
      }
      @keyframes breathe {
        from {
          transform: scale(1) translateY(0);
        }
        to {
          transform: scale(1.035) translateY(-8px);
        }
      }

      /* ---------- Buttons ---------- */
      .btn {
        display: inline-flex;
        align-items: center;
        gap: 14px;
        padding: 16px 22px 16px 24px;
        background: var(--ink);
        color: var(--paper);
        font-family: var(--mono);
        font-size: 12.5px;
        letter-spacing: 0.1em;
        text-transform: uppercase;
        border: 1px solid var(--ink);
        cursor: pointer;
        /* blue fill sweeps in from the left on hover */
        background-image: linear-gradient(var(--blue), var(--blue));
        background-repeat: no-repeat;
        background-position: left center;
        background-size: 0% 100%;
        transition: background-size 0.45s cubic-bezier(0.2, 0.8, 0.2, 1),
          border-color 0.45s, color 0.25s,
          transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .btn::after {
        content: "";
        width: 8px;
        height: 8px;
        border-right: 1.5px solid currentColor;
        border-top: 1.5px solid currentColor;
        transform: rotate(45deg);
        transition: transform 0.25s;
        /* idle nudge every few seconds */
        animation: nudge 4.5s ease-in-out infinite;
      }
      @keyframes nudge {
        0%, 84%, 100% {
          transform: translateX(0) rotate(45deg);
        }
        90% {
          transform: translateX(5px) rotate(45deg);
        }
        96% {
          transform: translateX(-1px) rotate(45deg);
        }
      }
      .btn:hover::after {
        animation: none;
      }
      .btn:hover {
        background-size: 100% 100%;
        border-color: var(--blue);
      }
      .btn:hover::after {
        transform: translateX(4px) rotate(45deg);
      }
      .btn:active {
        background: var(--blue-deep);
      }

      /* ---------- Marquee ---------- */
      .marquee {
        overflow: hidden;
        padding: 22px 0;
        border-bottom: 1px solid var(--line);
        -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
        mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
      }
      .marquee-track {
        display: flex;
        align-items: center;
        gap: 0;
        width: max-content;
        animation: ticker 48s linear infinite;
      }
      .marquee:hover .marquee-track {
        animation-play-state: paused;
      }
      .marquee-track span {
        font-family: var(--serif);
        font-style: normal;
        font-weight: 500;
        font-size: clamp(22px, 2.4vw, 34px);
        letter-spacing: -0.01em;
        color: var(--ink-2);
        white-space: nowrap;
        padding: 0 28px;
      }
      .marquee-track i {
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: var(--blue);
        flex: none;
      }
      @keyframes ticker {
        to {
          transform: translateX(-50%);
        }
      }

      /* ---------- Sections ---------- */
      section {
        padding: 96px 0 104px;
      }
      .section-grid {
        display: grid;
        grid-template-columns: repeat(12, var(--col));
        column-gap: var(--gutter);
      }
      .section-head {
        grid-column: 1 / 5;
        position: sticky;
        top: 100px;
        align-self: start;
      }
      .section-head .mono {
        display: block;
        margin-bottom: 18px;
      }
      /* blinking caret after the eyebrow labels */
      .section-head > .mono::after,
      .modal-head > .mono::after {
        content: "";
        display: inline-block;
        width: 0.55em;
        height: 0.95em;
        margin-left: 0.5em;
        vertical-align: -0.12em;
        background: var(--blue);
        animation: blink 1.1s steps(2, end) infinite;
      }
      @keyframes blink {
        to {
          opacity: 0;
        }
      }
      .section-title {
        font-family: var(--serif);
        font-weight: 400;
        font-size: clamp(38px, 4.6vw, 64px);
        line-height: 1;
        letter-spacing: -0.02em;
        margin: 0 0 16px;
        clip-path: inset(0 100% 0 0);
        transition: clip-path 1s cubic-bezier(0.6, 0, 0.2, 1) 0.1s;
      }
      .reveal.in .section-title {
        clip-path: inset(0 -2% 0 0);
      }
      .section-sub {
        color: var(--ink-2);
        margin: 0;
        max-width: 30ch;
        font-size: 17px;
      }
      .section-body {
        grid-column: 5 / 13;
      }

      /* ---------- Services: ruled accordion ---------- */
      .lead {
        margin: 0 0 52px;
        font-size: clamp(18px, 1.55vw, 21px);
        line-height: 1.55;
        color: var(--ink);
        max-width: 64ch;
      }
      /* holds the page length while a row closes near the bottom, so the
         browser never has to yank the scroll position back */
      #scrollPad {
        height: 0;
      }
      .index {
        border-top: 1px solid var(--line-strong);
        /* scroll position is compensated by script; keep the browser out of it */
        overflow-anchor: none;
      }
      .index .row {
        position: relative;
      }
      /* bottom rule draws in from the left as each row reveals */
      .index .row::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        height: 1px;
        background: var(--line);
        transform: scaleX(0);
        transform-origin: left;
        transition: transform 1.1s cubic-bezier(0.6, 0, 0.2, 1) 0.15s;
      }
      .index .row.in::after {
        transform: scaleX(1);
      }
      .row-head {
        display: grid;
        grid-template-columns: minmax(0, 6fr) minmax(0, 5fr) 34px;
        column-gap: var(--gutter);
        align-items: baseline;
        width: 100%;
        padding: 26px 24px 26px 0;
        margin: 0;
        border: 0;
        background: transparent;
        color: inherit;
        font: inherit;
        text-align: left;
        cursor: pointer;
      }
      .index h3 {
        font-family: var(--serif);
        font-weight: 600;
        font-size: clamp(26px, 2.4vw, 34px);
        letter-spacing: -0.03em;
        line-height: 1.1;
        margin: 0;
        transition: color 0.3s;
      }
      .index h3 .num {
        font-family: var(--mono);
        font-size: 12px;
        font-weight: 400;
        letter-spacing: 0.08em;
        color: var(--muted);
        vertical-align: super;
        margin-right: 14px;
        transition: color 0.3s;
      }
      .index .row:hover h3,
      .index .row.open h3 {
        color: var(--blue);
      }
      .index .row.open h3 .num {
        color: var(--blue);
      }
      /* plus turns into a cross when the row opens */
      .plus {
        position: relative;
        width: 16px;
        height: 16px;
        align-self: center;
        justify-self: end;
      }
      .plus::before,
      .plus::after {
        content: "";
        position: absolute;
        left: 0;
        top: 50%;
        width: 100%;
        height: 1.5px;
        background: var(--ink-2);
        transform: translateY(-50%);
        transition: transform 0.45s cubic-bezier(0.2, 0.8, 0.2, 1),
          background 0.3s;
      }
      .plus::after {
        transform: translateY(-50%) rotate(90deg);
      }
      .index .row.open .plus::before {
        transform: translateY(-50%) rotate(45deg);
      }
      .index .row.open .plus::after {
        transform: translateY(-50%) rotate(135deg);
      }
      .index .row:hover .plus::before,
      .index .row:hover .plus::after,
      .index .row.open .plus::before,
      .index .row.open .plus::after {
        background: var(--blue);
      }
      .index .teaser {
        margin: 0;
        color: var(--ink-2);
        font-size: 16.5px;
        line-height: 1.55;
        max-width: 44ch;
        transition: color 0.3s;
      }
      .index .row:hover .teaser {
        color: var(--ink);
      }
      /* body: height animated by script */
      .row-body {
        height: 0;
        overflow: hidden;
        transition: height 0.62s cubic-bezier(0.22, 1, 0.36, 1);
      }
      .row-body-inner {
        padding: 6px 58px 38px 0;
      }
      /* one column at a readable measure, aligned with the title */
      .row-copy {
        max-width: 64ch;
      }
      /* the paragraphs rise in one after the other as the row opens */
      .row-copy p {
        margin: 0 0 16px;
        color: var(--ink-2);
        font-size: 16px;
        line-height: 1.7;
        break-inside: avoid;
        opacity: 0;
        transform: translateY(16px);
        transition: opacity 0.55s ease, transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .row.open .row-copy p {
        opacity: 1;
        transform: none;
      }
      .row.open .row-copy p:nth-child(1) {
        transition-delay: 0.16s;
      }
      .row.open .row-copy p:nth-child(2) {
        transition-delay: 0.27s;
      }
      .row.open .row-copy p:nth-child(3) {
        transition-delay: 0.38s;
      }
      .row-copy p:last-child {
        margin-bottom: 0;
      }
      /* ---------- Selected work ---------- */
      .work {
        display: grid;
        gap: 64px;
      }
      .work-card {
        display: block;
        color: inherit;
      }
      .work-shot {
        display: block;
        overflow: hidden;
        border: 1px solid var(--line);
        background: var(--paper-2);
      }
      .work-shot img {
        display: block;
        width: 100%;
        height: auto;
        transform: scale(1.001);
        transition: transform 0.9s cubic-bezier(0.2, 0.8, 0.2, 1),
          filter 0.5s;
      }
      .work-card:hover .work-shot img {
        transform: scale(1.035);
      }
      .work-meta {
        display: grid;
        grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
        column-gap: var(--gutter);
        align-items: start;
        padding-top: 20px;
      }
      .work-kicker {
        display: block;
        margin-bottom: 10px;
        color: var(--muted);
        transition: color 0.3s;
      }
      .work-kicker .num {
        margin-right: 12px;
        color: var(--ink-2);
      }
      .work-meta h3 {
        font-family: var(--serif);
        font-weight: 600;
        font-size: clamp(26px, 2.4vw, 34px);
        letter-spacing: -0.03em;
        line-height: 1.1;
        margin: 0;
        transition: color 0.3s;
      }
      .work-card:hover h3 {
        color: var(--blue);
      }
      .work-say {
        display: block;
        margin: 0 0 14px;
        color: var(--ink-2);
        font-size: 16.5px;
        line-height: 1.6;
        max-width: 52ch;
        transition: color 0.3s;
      }
      .work-card:hover .work-say {
        color: var(--ink);
      }
      .work-go {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        color: var(--ink);
        border-bottom: 1px solid var(--line-strong);
        padding-bottom: 2px;
        transition: color 0.3s, border-color 0.3s;
      }
      .work-go::after {
        content: "";
        width: 7px;
        height: 7px;
        border-right: 1.5px solid currentColor;
        border-top: 1.5px solid currentColor;
        transform: rotate(45deg);
        transition: transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .work-card:hover .work-go {
        color: var(--blue);
        border-color: var(--blue);
      }
      .work-card:hover .work-go::after {
        transform: translate(3px, -3px) rotate(45deg);
      }

      /* closing note under the list */
      .closing {
        margin-top: 60px;
        padding-top: 30px;
        border-top: 1px solid var(--line-strong);
      }
      .closing .mono {
        display: block;
        margin-bottom: 14px;
      }
      .closing p {
        margin: 0;
        font-size: clamp(17px, 1.45vw, 20px);
        line-height: 1.55;
        color: var(--ink);
        max-width: 66ch;
      }

      /* ---------- Contact ---------- */
      .contact-body {
        grid-column: 6 / 13;
      }
      label {
        display: block;
        font-family: var(--mono);
        font-size: 12px;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: var(--muted);
        margin-bottom: 6px;
        transition: color 0.2s;
      }
      .field {
        margin-bottom: 30px;
      }
      /* fields cascade in after the form block reveals */
      .contact-body.reveal .field,
      .contact-body.reveal .form-actions {
        opacity: 0;
        transform: translateY(12px);
        transition: opacity 0.6s cubic-bezier(0.2, 0.8, 0.2, 1),
          transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .contact-body.reveal.in .field,
      .contact-body.reveal.in .form-actions {
        opacity: 1;
        transform: none;
      }
      .contact-body.reveal.in .field:nth-child(1) { transition-delay: 0.2s; }
      .contact-body.reveal.in .field:nth-child(2) { transition-delay: 0.32s; }
      .contact-body.reveal.in .field:nth-child(3) { transition-delay: 0.44s; }
      .contact-body.reveal.in .form-actions { transition-delay: 0.58s; }
      .field:focus-within label {
        color: var(--blue);
      }
      input,
      textarea {
        width: 100%;
        min-width: 0;
        background: transparent;
        color: var(--ink);
        border: 0;
        border-bottom: 1px solid var(--line-strong);
        border-radius: 0;
        padding: 10px 0 12px;
        font: inherit;
        font-size: 19px;
        outline: none;
        transition: border-color 0.2s;
      }
      textarea {
        /* grows with its content, so the corner grabber is just clutter */
        resize: none;
        min-height: 110px;
        overflow: hidden;
      }
      input::placeholder,
      textarea::placeholder {
        color: var(--muted);
        opacity: 0.7;
      }
      .field {
        position: relative;
      }
      .field::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        height: 1px;
        background: var(--blue);
        transform: scaleX(0);
        transform-origin: left;
        transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .field:focus-within::after {
        transform: scaleX(1);
      }
      .field.is-invalid input,
      .field.is-invalid textarea {
        border-bottom-color: #b3412f;
      }
      .field.is-invalid::after {
        background: #b3412f;
        transform: scaleX(1);
      }
      .field-error {
        display: block;
        font-family: var(--mono);
        font-size: 12px;
        letter-spacing: 0.04em;
        color: #b3412f;
        margin-top: 8px;
        max-height: 0;
        opacity: 0;
        overflow: hidden;
        transition: max-height 0.25s, opacity 0.25s;
      }
      .field-error.show {
        max-height: 40px;
        opacity: 1;
      }
      .form-actions {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 24px;
        flex-wrap: wrap;
        margin-top: 8px;
      }
      .form-note {
        margin: 0;
        font-size: 15px;
        color: var(--muted);
        flex: 1 1 200px;
        text-align: right;
      }
      .form-note a {
        color: var(--ink);
        border-bottom: 1px solid var(--line-strong);
        transition: color 0.2s, border-color 0.2s;
        overflow-wrap: anywhere;
      }
      .form-note a:hover {
        color: var(--blue);
        border-color: var(--blue);
      }
      .btn.is-sent {
        background: var(--blue);
        border-color: var(--blue);
        pointer-events: none;
      }
      .btn.is-sent .btn-label {
        display: none;
      }
      .btn.is-sent::before {
        content: "Opening your mail app";
      }
      .btn.is-sent::after {
        width: 5px;
        height: 10px;
        border-top: 0;
        border-right: 1.5px solid currentColor;
        border-bottom: 1.5px solid currentColor;
        transform: rotate(45deg) translate(-1px, -2px);
      }

      /* ---------- Contact modal ---------- */
      .modal {
        position: fixed;
        inset: 0;
        z-index: 150;
        /* opposite theme: night on the day page, day on the night page */
        color-scheme: dark;
        --paper: #0d0f16;
        --paper-2: #151824;
        --ink: #f1eee6;
        --ink-2: #c8c5bc;
        --muted: #8b8f9b;
        --line: rgba(241, 238, 230, 0.13);
        --line-strong: rgba(241, 238, 230, 0.3);
        --blue: #94a6ff;
        --blue-deep: #b3c0ff;
        --blue-soft: rgba(148, 166, 255, 0.12);
        background: var(--paper);
        color: var(--ink);
        overflow: hidden;
        overscroll-behavior: contain;
        touch-action: none;
        clip-path: circle(0 at var(--mx, 50%) var(--my, 50%));
        transition: clip-path 0.9s cubic-bezier(0.6, 0, 0.2, 1);
      }
      [data-theme="dark"] .modal {
        color-scheme: light;
        --paper: #f6f3ec;
        --paper-2: #ede8dd;
        --ink: #14161f;
        --ink-2: #3a3d48;
        --muted: #6a6e7a;
        --line: rgba(20, 22, 31, 0.14);
        --line-strong: rgba(20, 22, 31, 0.32);
        --blue: #1f3a93;
        --blue-deep: #142a70;
        --blue-soft: #dfe5f6;
      }
      .modal[hidden] {
        display: none;
      }
      .modal.open {
        clip-path: circle(160vmax at var(--mx, 50%) var(--my, 50%));
      }
      .modal-inner {
        position: relative;
        height: 100vh;
        height: 100dvh;
        padding: 88px 0 48px;
        display: grid;
        align-items: center;
      }
      /* compact form inside the modal so it fits without scrolling */
      .modal .field {
        margin-bottom: 22px;
      }
      .modal textarea {
        min-height: 90px;
      }
      .modal .form-actions {
        margin-top: 4px;
      }
      .modal-close {
        position: absolute;
        top: 24px;
        right: 0;
        width: 48px;
        height: 48px;
        border: 1px solid var(--line-strong);
        border-radius: 50%;
        background: transparent;
        cursor: pointer;
        display: grid;
        place-items: center;
        transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1), border-color 0.25s, background 0.25s;
      }
      .modal-close span {
        position: absolute;
        width: 18px;
        height: 1.5px;
        background: var(--ink);
        transform: rotate(45deg);
      }
      .modal-close span:last-child {
        transform: rotate(-45deg);
      }
      .modal-close:hover {
        transform: rotate(90deg);
        border-color: var(--blue);
        background: var(--blue-soft);
      }
      .modal-grid {
        display: grid;
        grid-template-columns: repeat(12, var(--col));
        column-gap: var(--gutter);
      }
      .modal-head {
        grid-column: 1 / 5;
      }
      .modal-head .mono {
        display: block;
        margin-bottom: 18px;
      }
      .modal-head .section-title {
        clip-path: none;
      }
      .modal-form {
        grid-column: 6 / 13;
      }
      /* staggered entrance once the wipe has opened */
      .modal .modal-head > *,
      .modal .field,
      .modal .form-actions {
        opacity: 0;
        transform: translateY(14px);
        transition: opacity 0.6s cubic-bezier(0.2, 0.8, 0.2, 1),
          transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .modal.open .modal-head > *,
      .modal.open .field,
      .modal.open .form-actions {
        opacity: 1;
        transform: none;
      }
      .modal.open .modal-head > :nth-child(1) { transition-delay: 0.45s; }
      .modal.open .modal-head > :nth-child(2) { transition-delay: 0.52s; }
      .modal.open .modal-head > :nth-child(3) { transition-delay: 0.6s; }
      .modal.open .field:nth-child(1) { transition-delay: 0.6s; }
      .modal.open .field:nth-child(2) { transition-delay: 0.7s; }
      .modal.open .field:nth-child(3) { transition-delay: 0.8s; }
      .modal.open .form-actions { transition-delay: 0.92s; }
      /* modal sky: a large, faint eclipse drifting behind the form */
      .modal-sky {
        position: absolute;
        right: -14vw;
        top: 50%;
        width: min(58vh, 600px);
        aspect-ratio: 1;
        transform: translateY(-50%);
        pointer-events: none;
        opacity: 0;
        transition: opacity 1.2s ease 0.5s;
      }
      .modal.open .modal-sky {
        opacity: 1;
      }
      .modal-disc,
      .modal-shadow {
        position: absolute;
        inset: 0;
        border-radius: 50%;
      }
      .modal-disc {
        background: var(--blue-soft);
        animation: breathe 11s ease-in-out infinite alternate;
      }
      .modal-shadow {
        background: var(--paper);
        transform: translate(-30%, -12%);
        animation: modalDrift 18s ease-in-out infinite alternate;
      }
      @keyframes modalDrift {
        from {
          transform: translate(-30%, -12%);
        }
        to {
          transform: translate(-18%, -6%);
        }
      }
      .modal-inner {
        z-index: 1;
      }
      /* title words rise out of a mask once the wipe has opened */
      .modal-head .section-title .w {
        display: inline-block;
        overflow: hidden;
        vertical-align: bottom;
        padding: 0.16em 0.06em 0.1em;
        margin: -0.16em -0.06em -0.1em;
      }
      .modal-head .section-title .w > span {
        display: inline-block;
        transform: translateY(105%) rotate(2deg);
        transform-origin: left bottom;
      }
      .modal.open .modal-head .section-title .w > span {
        animation: wordUp 0.9s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
        animation-delay: calc(0.5s + var(--i, 0) * 70ms);
      }
      .modal.open .modal-head .section-title {
        opacity: 1;
        transform: none;
        transition: none;
      }
      /* X spins in */
      .modal-close {
        opacity: 0;
        transform: rotate(-90deg) scale(0.6);
      }
      .modal.open .modal-close {
        opacity: 1;
        transform: none;
        transition: transform 0.7s cubic-bezier(0.2, 0.8, 0.2, 1) 0.45s, opacity 0.4s 0.45s,
          border-color 0.25s, background 0.25s;
      }
      .modal.open .modal-close:hover {
        transform: rotate(90deg);
        transition-delay: 0s;
      }
      /* field underlines draw in one after another */
      .modal .field input,
      .modal .field textarea {
        border-bottom-color: transparent;
      }
      .modal .field::before {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        height: 1px;
        background: var(--line-strong);
        transform: scaleX(0);
        transform-origin: left;
        transition: transform 0.9s cubic-bezier(0.6, 0, 0.2, 1);
      }
      .modal.open .field::before {
        transform: scaleX(1);
      }
      .modal.open .field:nth-child(1)::before { transition-delay: 0.7s; }
      .modal.open .field:nth-child(2)::before { transition-delay: 0.8s; }
      .modal.open .field:nth-child(3)::before { transition-delay: 0.9s; }

      /* closing: content lifts away, the X folds, then the circle collapses into it */
      .modal.closing {
        transition-duration: 0.75s;
        transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
      }
      .modal.closing .modal-head > *,
      .modal.closing .field,
      .modal.closing .form-actions {
        opacity: 0;
        transform: translateY(-22px);
        transition-duration: 0.35s;
        transition-delay: 0s;
      }
      .modal.closing .modal-head > :nth-child(3) { transition-delay: 0.03s; }
      .modal.closing .field:nth-child(1) { transition-delay: 0.05s; }
      .modal.closing .field:nth-child(2) { transition-delay: 0.08s; }
      .modal.closing .field:nth-child(3) { transition-delay: 0.11s; }
      .modal.closing .form-actions { transition-delay: 0.14s; }
      .modal.closing .modal-close {
        transform: rotate(180deg) scale(0.4);
        opacity: 0;
        transition: transform 0.5s cubic-bezier(0.7, 0, 0.3, 1), opacity 0.4s;
      }
      body.modal-open {
        overflow: hidden;
      }
      @media (max-width: 1000px) {
        .modal-head,
        .modal-form {
          grid-column: 1 / 13;
        }
        .modal-head {
          margin-bottom: 40px;
        }
        .modal-inner {
          padding: 88px 0 56px;
        }
      }

      /* ---------- Footer ---------- */
      footer {
        border-top: 1px solid var(--line-strong);
        padding: 36px 0 44px;
      }
      .footer-inner {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 20px;
        flex-wrap: wrap;
      }
      .footer-inner .brand {
        font-size: 20px;
      }
      .footer-meta {
        font-style: normal;
        display: flex;
        flex-wrap: wrap;
        gap: 6px 22px;
        text-transform: none;
        letter-spacing: 0.02em;
        font-size: 12.5px;
      }
      .footer-meta a {
        color: var(--ink);
        border-bottom: none;
        transition: color 0.2s, border-color 0.2s;
      }
      .footer-meta a:hover {
        color: var(--blue);
        border-color: var(--blue);
      }
      .footer-copy {
        flex-basis: 100%;
        padding-top: 18px;
        border-top: 1px solid var(--line);
      }

      /* ---------- Reveal ---------- */
      .reveal {
        opacity: 0;
        transform: translateY(14px);
        transition: opacity 0.7s cubic-bezier(0.2, 0.8, 0.2, 1),
          transform 0.7s cubic-bezier(0.2, 0.8, 0.2, 1);
        transition-delay: var(--d, 0ms);
      }
      .reveal.in {
        opacity: 1;
        transform: none;
      }
      .hero-foot > * {
        opacity: 0;
        transform: translateY(16px);
        animation: rise 0.9s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
      }
      .hero-foot > :nth-child(1) {
        animation-delay: 0.7s;
      }
      .hero-foot > :nth-child(2) {
        animation-delay: 0.85s;
      }
      @keyframes rise {
        to {
          opacity: 1;
          transform: none;
        }
      }
      .eclipse .shadow {
        animation: eclipseIn 1.6s cubic-bezier(0.2, 0.8, 0.2, 1) 0.2s both;
      }
      @keyframes eclipseIn {
        from {
          transform: translate(-70%, -50%);
        }
      }

      /* ---------- Responsive ---------- */
      @media (max-width: 1000px) {
        .hero-copy {
          grid-column: 1 / 13;
        }
        .eclipse {
          grid-column: 8 / 13;
          position: absolute;
          right: 0;
          top: 40px;
          width: 36vw;
          max-width: 360px;
          opacity: 0.9;
        }
        .section-head {
          grid-column: 1 / 13;
          position: static;
          margin-bottom: 40px;
        }
        .section-body,
        .contact-body {
          grid-column: 1 / 13;
        }
        .nav {
          grid-template-columns: 1fr auto;
        }
        .nav-title {
          display: none;
        }
        .brand {
          white-space: nowrap;
        }
        .section-head {
          margin-bottom: 32px;
        }
      }
      @media (max-width: 700px) {
        body {
          font-size: 16px;
        }
        /* cheaper paper on phones: static grain */
        body::before {
          animation: none;
          opacity: calc(var(--grain-opacity) * 0.7);
        }
        .container {
          width: min(1280px, 100% - 40px);
        }

        /* masthead: compact, one line */
        .nav {
          padding: 14px 0;
        }
        .brand {
          font-size: 15px;
          line-height: 1.1;
          gap: 8px;
          white-space: normal;
          max-width: 170px;
        }
        .brand svg {
          width: 16px;
          height: 16px;
          flex: none;
        }
        .theme-toggle {
          width: 30px;
          height: 30px;
          margin-right: 2px;
        }
        .nav ul {
          gap: 12px;
        }
        .nav ul a {
          font-size: 13px;
        }

        /* hero: the moon becomes a small ornament above the headline */
        .hero {
          grid-template-columns: 1fr;
          padding: 40px 0 56px;
          min-height: auto;
          align-items: start;
        }
        .eclipse {
          position: relative;
          top: auto;
          right: auto;
          grid-column: 1;
          grid-row: 1;
          justify-self: end;
          width: 92px;
          max-width: none;
          margin: 0 0 28px;
          opacity: 1;
        }
        .eclipse .orbit {
          inset: -18%;
        }
        .hero-copy {
          grid-column: 1;
          grid-row: 2;
        }
        .hero h1 {
          font-size: clamp(42px, 12.5vw, 64px);
          max-width: none;
          margin-bottom: 28px;
          word-spacing: 0.22em;
        }
        .hero-foot {
          grid-template-columns: 1fr;
          row-gap: 24px;
        }
        .hero p {
          font-size: 16px;
        }
        .hero p,
        .hero-cta {
          grid-column: 1 / -1;
          justify-self: stretch;
        }
        .hero-cta {
          justify-content: center;
        }

        /* marquee: slower, smaller */
        .marquee {
          padding: 16px 0;
        }
        .marquee-track span {
          font-size: 20px;
          padding: 0 18px;
        }

        section {
          padding: 56px 0 64px;
        }
        .section-title {
          font-size: clamp(34px, 10vw, 44px);
        }

        /* services: stacked accordion, no hover choreography on touch */
        .lead {
          font-size: 17px;
          margin-bottom: 36px;
        }
        .row-head {
          grid-template-columns: minmax(0, 1fr) 24px;
          column-gap: 16px;
          row-gap: 8px;
          padding: 20px 10px 20px 0;
          align-items: start;
        }
        .index .teaser {
          grid-column: 1 / 2;
        }
        .plus {
          grid-column: 2 / 3;
          grid-row: 1 / 2;
          align-self: start;
          margin-top: 6px;
          width: 14px;
          height: 14px;
        }
        .row-body-inner {
          padding: 6px 10px 26px 0;
        }
        .index .row:hover h3 {
          color: inherit;
        }
        .index .row.open h3 {
          color: var(--blue);
        }
        .index h3 {
          font-size: 24px;
        }
        .index h3 .num {
          margin-right: 10px;
        }
        .index .teaser,
        .row-copy p {
          font-size: 15.5px;
        }

        /* work */
        .work {
          gap: 44px;
        }
        .work-meta {
          grid-template-columns: 1fr;
          row-gap: 10px;
          padding-top: 16px;
        }
        .work-meta h3 {
          font-size: 24px;
        }
        .work-say {
          font-size: 15.5px;
        }

        /* contact */
        .field {
          margin-bottom: 24px;
        }
        input,
        textarea {
          font-size: 17px;
        }
        .form-actions {
          flex-direction: column;
          align-items: stretch;
        }
        .form-actions .btn {
          justify-content: center;
        }
        .form-note {
          text-align: left;
        }

        footer {
          padding-bottom: 36px;
        }
        .footer-inner {
          flex-direction: column;
          align-items: flex-start;
          gap: 14px;
        }
        .footer-inner .brand {
          max-width: none;
          white-space: nowrap;
          font-size: 17px;
        }
        .footer-meta {
          flex-direction: column;
          gap: 8px;
        }

        /* modal: everything must fit one phone screen, no scrolling */
        .modal-close {
          top: 14px;
          width: 40px;
          height: 40px;
        }
        .modal-inner {
          padding: 60px 0 20px;
          align-items: start;
        }
        .modal textarea {
          height: 72px;
        }
        .modal-head {
          margin-bottom: 18px;
        }
        .modal-head .section-title {
          font-size: clamp(30px, 8.5vw, 40px);
          margin-bottom: 8px;
        }
        .modal-head .section-sub {
          font-size: 15px;
        }
        .modal .field {
          margin-bottom: 14px;
        }
        .modal input,
        .modal textarea {
          font-size: 16px;
          padding: 6px 0 8px;
        }
        .modal textarea {
          min-height: 64px;
        }
        .modal .form-actions {
          gap: 10px;
        }
        .modal .form-actions .btn {
          padding: 13px 20px;
        }
        .modal .form-note {
          font-size: 13px;
        }
        .modal-sky {
          right: -40vw;
          top: 62%;
          width: 90vw;
        }
        .modal.open .modal-sky {
          opacity: 0.55;
        }
      }

      @media (prefers-reduced-motion: reduce) {
        html {
          scroll-behavior: auto;
        }
        *,
        *::before,
        *::after {
          animation-duration: 0.001s !important;
          animation-iteration-count: 1 !important;
          transition-duration: 0.001s !important;
        }
        .reveal,
        .hero-foot > *,
        .hero h1 .w > span,
        .row-copy p,
        .contact-body.reveal .field,
        .contact-body.reveal .form-actions {
          opacity: 1;
          transform: none;
        }
        .rule,
        .index .row::after {
          transform: scaleX(1);
        }
        .section-title {
          clip-path: none;
        }
        body::before {
          animation: none;
        }
        .marquee-track {
          animation: none;
        }
        .cursor {
          display: none;
        }
        .modal,
        .modal.open {
          clip-path: none;
        }
        .modal .modal-head > *,
        .modal .field,
        .modal .form-actions,
        .modal-close,
        .modal-head .section-title .w > span {
          opacity: 1;
          transform: none;
        }
        .modal .field::before {
          transform: scaleX(1);
        }
        .modal-sky {
          opacity: 1;
        }
      }

      /* ---------- Project case pages ---------- */
      .case {
        padding: 64px 0 0;
      }
      .case-head {
        display: grid;
        grid-template-columns: repeat(12, var(--col));
        column-gap: var(--gutter);
        align-items: end;
        padding-bottom: 44px;
      }
      .case-head .crumb {
        grid-column: 1 / 13;
        display: block;
        margin-bottom: 26px;
      }
      .case-head .crumb a {
        border-bottom: 1px solid var(--line-strong);
        transition: color 0.25s, border-color 0.25s;
      }
      .case-head .crumb a:hover {
        color: var(--blue);
        border-color: var(--blue);
      }
      .case-head h1 {
        grid-column: 1 / 8;
        color: var(--ink);
        font-family: var(--serif);
        font-weight: 700;
        font-size: clamp(44px, 6vw, 88px);
        line-height: 0.98;
        letter-spacing: -0.05em;
        margin: 0;
      }
      .case-tagline {
        grid-column: 8 / 13;
        margin: 0;
        color: var(--ink-2);
        font-size: clamp(17px, 1.5vw, 20px);
        line-height: 1.5;
      }
      .case-facts {
        display: grid;
        grid-template-columns: repeat(12, var(--col));
        column-gap: var(--gutter);
        row-gap: 20px;
        padding: 22px 0 40px;
        border-top: 1px solid var(--line-strong);
      }
      .case-fact {
        grid-column: span 4;
      }
      .case-fact dt {
        margin: 0 0 6px;
        font-family: var(--mono);
        font-size: 11.5px;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: var(--muted);
      }
      .case-fact dd {
        margin: 0;
        color: var(--ink);
        font-size: 16.5px;
        line-height: 1.5;
      }
      .case-fact a {
        border-bottom: 1px solid var(--line-strong);
        transition: color 0.25s, border-color 0.25s;
      }
      .case-fact a:hover {
        color: var(--blue);
        border-color: var(--blue);
      }
      .case-shot {
        margin: 0 0 12px;
        border: 1px solid var(--line);
        overflow: hidden;
        background: var(--paper-2);
      }
      .case-shot img {
        display: block;
        width: 100%;
        height: auto;
      }
      .case-section {
        padding: 84px 0 0;
      }
      .case-section:last-of-type {
        padding-bottom: 96px;
      }
      .case-grid {
        display: grid;
        grid-template-columns: repeat(12, var(--col));
        column-gap: var(--gutter);
      }
      .case-label {
        grid-column: 1 / 4;
      }
      .case-label .mono {
        display: block;
        margin-bottom: 10px;
      }
      .case-label h2 {
        color: var(--ink);
        font-family: var(--serif);
        font-weight: 600;
        font-size: clamp(24px, 2.2vw, 30px);
        letter-spacing: -0.03em;
        line-height: 1.15;
        margin: 0;
        position: sticky;
        top: 110px;
      }
      .case-copy {
        grid-column: 5 / 12;
      }
      .case-copy p {
        margin: 0 0 20px;
        font-size: 17px;
        line-height: 1.7;
        color: var(--ink-2);
      }
      .case-copy p:last-child {
        margin-bottom: 0;
      }
      .case-copy p.big {
        font-size: clamp(19px, 1.7vw, 23px);
        line-height: 1.55;
        color: var(--ink);
      }
      .case-copy strong {
        color: var(--ink);
        font-weight: 600;
      }
      /* numbered engineering notes */
      .case-notes {
        grid-column: 5 / 13;
        list-style: none;
        margin: 0;
        padding: 0;
        border-top: 1px solid var(--line);
      }
      .case-notes li {
        display: grid;
        grid-template-columns: 46px minmax(0, 1fr);
        column-gap: var(--gutter);
        padding: 24px 0;
        border-bottom: 1px solid var(--line);
      }
      .case-notes .n {
        font-family: var(--mono);
        font-size: 11.5px;
        letter-spacing: 0.08em;
        color: var(--muted);
        padding-top: 4px;
      }
      .case-notes h3 {
        margin: 0 0 8px;
        color: var(--ink);
        font-size: 18px;
        font-weight: 600;
        letter-spacing: -0.01em;
      }
      .case-notes p {
        margin: 0;
        color: var(--ink-2);
        font-size: 16px;
        line-height: 1.65;
      }
      .case-tags {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin: 0;
        padding: 0;
        list-style: none;
      }
      .case-tags li {
        padding: 7px 13px;
        border: 1px solid var(--line-strong);
        border-radius: 999px;
        font-family: var(--mono);
        font-size: 11.5px;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: var(--ink-2);
      }
      /* next project */
      .case-next {
        border-top: 1px solid var(--line-strong);
        padding: 40px 0 88px;
      }
      .case-next a {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        gap: 24px;
      }
      .case-next .mono {
        color: var(--muted);
      }
      .case-next .name {
        color: var(--ink);
        font-family: var(--serif);
        font-weight: 700;
        font-size: clamp(32px, 4.4vw, 60px);
        letter-spacing: -0.04em;
        line-height: 1;
        transition: color 0.3s, transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1);
      }
      .case-next a:hover .name {
        color: var(--blue);
        transform: translateX(10px);
      }
      .case-cta {
        display: flex;
        align-items: center;
        gap: 20px;
        flex-wrap: wrap;
        padding-top: 8px;
      }
      @media (max-width: 1000px) {
        .case-head h1,
        .case-tagline {
          grid-column: 1 / 13;
        }
        .case-tagline {
          margin-top: 18px;
        }
        .case-label,
        .case-copy,
        .case-notes {
          grid-column: 1 / 13;
        }
        .case-label {
          margin-bottom: 18px;
        }
        .case-label h2 {
          position: static;
        }
        .case-fact {
          grid-column: span 6;
        }
      }
      @media (max-width: 700px) {
        .case {
          padding-top: 40px;
        }
        .case-section {
          padding-top: 56px;
        }
        .case-section:last-of-type {
          padding-bottom: 64px;
        }
        .case-fact {
          grid-column: 1 / 13;
        }
        .case-copy p {
          font-size: 16px;
        }
        .case-notes li {
          grid-template-columns: 1fr;
          row-gap: 6px;
        }
        .case-next {
          padding-bottom: 64px;
        }
        .case-next a {
          flex-direction: column;
          align-items: flex-start;
          gap: 10px;
        }
      }
