/* ntgl.me: the one stylesheet of every page (docs/site.md, D78).
   White/black and one action colour, as the app: blue in light, orange in dark (D9, D17); Geist (D11).

   The layers, from weakest to strongest:
     tokens       the variables: colours, spacing, type, motion. Change a value here, never in a rule.
     base         the elements themselves.
     components   what repeats: the header, the controls, the menu, buttons, the badge, the marquee, the footer.
     pages        what belongs to one page only: .home, .doc (Privacy, Terms, Support), .invite (r.php, j.php).
     utilities    the helpers, in markup: spacing (m-, p-, gap-), text, colour, display, with md: and lg: variants.
                  Written by scripts/web/utilities.py from the spacing scale below; don't edit them by hand.
   A utility wins over a component, whatever their selectors, because its layer comes later. */
@layer tokens, base, components, pages, utilities;

@font-face { font-family: "Geist"; font-weight: 100 900; font-display: swap; src: url(/fonts/Geist.woff2) format("woff2"); }
@font-face { font-family: "Geist Mono"; font-weight: 100 900; font-display: swap; src: url(/fonts/GeistMono.woff2) format("woff2"); }

/* ─── tokens ─────────────────────────────────────────────────────────────────────────────────────────────────── */
@layer tokens {
  :root {
    /* Colour */
    --bg: #FFFFFF; --ink: #000000; --soft: #6B6B6B; --line: #E5E5E5; --tint: #F2F2F2;
    --faint: #A3A3A3;                            /* the app's third grey: only Neo's light pixels (SpriteColors) */
    --accent: #0224F7; --on-accent: #FFFFFF;
    /* The logo is the app icon of the other appearance: black in light, white in dark (AppIcon: icon-dark, icon-light). */
    --logo-bg: #000000; --logo-tangle: #FFFFFF; --logo-thread: #FF7000;
    /* Apple's badge: the black one in light, the white one in dark. */
    --badge-bg: #000000; --badge-line: #A6A6A6; --badge-ink: #FFFFFF;
    color-scheme: light;

    /* Spacing: one scale, on a 4 px grid. The utilities (m-5 = 20 px) are made from it. */
    --space-0: 0; --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px;
    --space-8: 32px; --space-10: 40px; --space-12: 48px; --space-16: 64px; --space-20: 80px; --space-24: 96px;
    --space-30: 120px;
    --gutter: var(--space-4);
    --grid-gap: var(--space-6);                  /* between the columns of .grid-12 */
    --section: 140px;                            /* the room between two sections (Rayo's padding-default) */

    /* Type */
    --font-sans: Geist, system-ui, sans-serif;
    --font-mono: "Geist Mono", ui-monospace, monospace;
    --text-sm: 15px; --text-base: 17px; --text-lg: 20px; --text-xl: 24px; --text-2xl: 36px;
    --text-lead: clamp(24px, 6.4vw, 44px);       /* the hero's subtitle */
    --text-display: 16vw;                        /* the hero's title */
    --text-menu: clamp(40px, 11vw, 96px);
    --text-h2: 44px; --text-h3: 36px; --text-h6: 22px;   /* section titles, card titles, list titles */
    --text-large: 24px;                          /* a paragraph that leads (Rayo's t-large) */
    --text-marquee: 60px;                        /* the words that pass between sections */
    --text-stat: 70px;                           /* the big numbers */
    --leading-tight: 0.9; --leading-snug: 1.2; --leading-normal: 1.5;
    --tracking-display: -0.055em; --tracking-tight: -0.02em;

    /* Size, shape, motion */
    --control: 48px; --badge-height: 56px; --logo: 48px;
    --radius-full: 999px; --radius-m: 16px; --radius-l: 38px;
    --ease: cubic-bezier(.2, .7, .2, 1); --fast: .3s; --medium: .4s;
    --header-top: var(--space-6);
  }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
      --bg: #000000; --ink: #FFFFFF; --soft: #9A9A9A; --line: #262626; --tint: #1A1A1A; --faint: #5C5C5C;
      --accent: #FF7000; --on-accent: #000000;
      --logo-bg: #FFFFFF; --logo-tangle: #000000; --logo-thread: #0224F7;
      --badge-bg: #FFFFFF; --badge-line: #000000; --badge-ink: #000000;
      color-scheme: dark;
    }
  }
  :root[data-theme="dark"] {
    --bg: #000000; --ink: #FFFFFF; --soft: #9A9A9A; --line: #262626; --tint: #1A1A1A; --faint: #5C5C5C;
    --accent: #FF7000; --on-accent: #000000;
    --logo-bg: #FFFFFF; --logo-tangle: #000000; --logo-thread: #0224F7;
    --badge-bg: #FFFFFF; --badge-line: #000000; --badge-ink: #000000;
    color-scheme: dark;
  }
  @media (min-width: 768px) {
    :root { --gutter: var(--space-12); --control: 56px; --badge-height: 64px; --logo: 56px; --header-top: var(--space-10);
      --section: 160px; --grid-gap: var(--space-8); --text-h2: 70px; --text-h3: 50px; --text-marquee: 120px;
      --radius-m: 26px; --radius-l: 50px; }
  }
  @media (min-width: 992px) {
    :root { --text-display: 11.9vw; }  /* two lines, the width of the page */
  }
  @media (min-width: 1200px) {
    :root { --text-h6: 30px; --text-stat: 90px; --text-large: 28px; }
  }
  @media (min-width: 1600px) {
    :root { --gutter: 72px; --section: 200px; --text-stat: 120px; --text-large: 30px; }
  }
}

/* ─── base ───────────────────────────────────────────────────────────────────────────────────────────────────── */
@layer base {
  *, *::before, *::after { box-sizing: border-box; }
  html { -webkit-text-size-adjust: 100%; }
  body { margin: 0; background: var(--bg); color: var(--ink); font: 400 var(--text-base)/var(--leading-normal) var(--font-sans); overflow-x: hidden; }
  a { color: inherit; }
  img, video, svg { display: block; }
  img { max-width: 100%; height: auto; }  /* the size in the HTML keeps the place; the width comes from the page */
  button { font: inherit; color: inherit; }
  code, kbd { font-family: var(--font-mono); font-size: 0.92em; }
  :focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { transition: none !important; animation: none !important; }
  }
}

/* ─── components ─────────────────────────────────────────────────────────────────────────────────────────────── */
@layer components {
  .icon { width: 24px; height: 24px; flex: none; }

  /* The header: the logo, which leaves as soon as the page scrolls (Rayo's .mxd-header.is-hidden). */
  .site-header { position: absolute; top: 0; left: var(--gutter); padding-top: var(--header-top); z-index: 20;
    transition: opacity var(--medium) var(--ease), transform var(--medium) var(--ease); }
  .site-header.is-hidden { opacity: 0; transform: scaleY(1.2); pointer-events: none; }
  .logo, .logo svg { display: block; width: var(--logo); height: var(--logo); }

  /* What stays at the top: Download (on the home page, only once the hero's badge is out of sight) and the menu. */
  .controls { position: fixed; top: var(--header-top); right: var(--gutter); display: flex; gap: var(--space-3); z-index: 40; }
  .round { display: inline-flex; align-items: center; justify-content: center; width: var(--control); height: var(--control);
    border-radius: 50%; border: 0; padding: 0; cursor: pointer; }
  .menu-button { background: var(--ink); color: var(--bg); transition: transform var(--fast) var(--ease); }
  .menu-button:hover { transform: scale(1.05); }
  .menu-button__close, .menu-open .menu-button__open { display: none; }
  .menu-open .menu-button__close { display: block; }
  /* It floats over everything, cards in the action colour too: a ring of the page's colour and a soft shadow keep it apart. */
  .controls__download { box-shadow: 0 0 0 2px var(--bg), 0 10px 24px rgba(0, 0, 0, .22);
    transition: opacity var(--fast) var(--ease), transform var(--fast) var(--ease); }
  .controls__download.is-away { opacity: 0; transform: translateY(-8px) scale(.96); pointer-events: none; }
  .menu-open .controls__download { opacity: 0; pointer-events: none; }

  .btn { display: inline-flex; align-items: center; gap: var(--space-3); height: var(--control); padding: 0 var(--space-6);
    border-radius: var(--radius-full); border: 0; font: 600 var(--text-base)/1 var(--font-sans); text-decoration: none;
    cursor: pointer; white-space: nowrap; background: var(--accent); color: var(--on-accent); transition: transform var(--fast) var(--ease); }
  .btn:hover { transform: scale(1.04); }
  .btn--outline { background: transparent; color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }

  /* Apple's badge, at least 40 pt high as Apple asks. */
  .store { display: block; flex: none; transition: transform var(--fast) var(--ease); }
  .store:hover { transform: scale(1.04); }
  .store svg { height: var(--badge-height); width: auto; aspect-ratio: 496 / 172; }

  /* The menu: the other pages and the theme. */
  .menu { position: fixed; inset: 0; z-index: 30; background: var(--bg); display: flex; flex-direction: column; justify-content: flex-end;
    padding: var(--space-30) var(--gutter) var(--space-10); opacity: 0; visibility: hidden;
    transition: opacity var(--fast) var(--ease), visibility 0s linear var(--fast); }
  .menu-open .menu { opacity: 1; visibility: visible; transition: opacity var(--fast) var(--ease); }
  body.menu-open { overflow: hidden; }
  .menu__pages { display: flex; flex-direction: column; gap: var(--space-1); margin-bottom: var(--space-12); }
  .menu__pages a { font: 600 var(--text-menu)/1.05 var(--font-sans); letter-spacing: -0.04em; text-decoration: none; }
  .menu__pages a:hover, .menu__pages a[aria-current="page"] { color: var(--accent); }
  .menu__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap;
    color: var(--soft); font-size: var(--text-sm); }
  .menu__foot a { color: var(--soft); text-decoration: none; }
  .theme { display: inline-flex; gap: var(--space-1); padding: var(--space-1); border-radius: var(--radius-full); background: var(--tint); }
  .theme button { display: inline-flex; align-items: center; gap: 6px; height: 40px; padding: 0 14px; border: 0; border-radius: var(--radius-full);
    cursor: pointer; background: transparent; color: var(--soft); font-weight: 500; font-size: var(--text-sm); }
  .theme button[aria-pressed="true"] { background: var(--bg); color: var(--ink); }

  /* The marquee (Rayo's hero 03): to the right, faster while the page scrolls (site.js). */
  .marquee { overflow-x: clip; overflow-y: visible; }
  .marquee__track { display: flex; align-items: center; width: max-content; will-change: transform; }
  /* The things are cut out (transparent) and all as tall: the height is the same, the width is each one's own. */
  .marquee__item { flex: none; margin-right: var(--space-12); }
  .marquee__item img { height: 72vw; width: auto; }
  @media (min-width: 768px) { .marquee__item { margin-right: var(--space-16); } .marquee__item img { height: 40vw; } }
  @media (min-width: 1200px) { .marquee__item img { height: 25vw; } }
  @media (min-width: 1600px) { .marquee__item img { height: 23vw; } }
  /* Rayo's mxd-move, mxd-rotate-slow and mxd-pulse-small: each thing lives a little while it passes. */
  .motion-move { animation: move 6s ease-in-out infinite alternate; }
  .motion-rotate { animation: rotate 40s linear infinite; }
  .motion-pulse { animation: pulse 3s ease-in-out infinite alternate; }
  @keyframes move { from { transform: translate3d(0, -4%, 0) rotate(-3deg); } to { transform: translate3d(0, 4%, 0) rotate(3deg); } }
  @keyframes rotate { to { transform: rotate(360deg); } }
  @keyframes pulse { from { transform: scale(.94); } to { transform: scale(1.04); } }

  /* The big title and the line that goes with it, in white with difference: black on the page, inverted over pictures. */
  .headline { mix-blend-mode: difference; color: #FFFFFF; pointer-events: none; }
  .headline__title { margin: 0; font: 600 var(--text-display)/var(--leading-tight) var(--font-sans); letter-spacing: var(--tracking-display); }
  .headline__title span { display: block; }
  .headline__lead { margin: 0; font: 500 var(--text-lead)/var(--leading-snug) var(--font-sans); letter-spacing: var(--tracking-tight); max-width: 16em; }


  /* ── Sections (after Rayo's software home; docs/site.md) ── */
  .section-title { margin: 0; font: 600 var(--text-h2)/1.1 var(--font-sans); letter-spacing: -0.03em; }
  .lead { margin: 0; font: 500 var(--text-large)/1.3 var(--font-sans); letter-spacing: var(--tracking-tight); }
  .eyebrow { display: inline-flex; align-items: center; gap: var(--space-2); margin: 0; color: var(--soft); font-size: var(--text-sm); }
  .eyebrow--caps { font-size: 13px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
  .icon--flip { transform: scaleX(-1); }

  /* A row of cards that scrolls sideways and stops at each, with arrows under it (after babyapp.pro's Features
     gallery): a square picture with round corners, and the words under it, the key ones in ink. */
  .gallery { display: flex; gap: var(--space-6); overflow-x: auto; scroll-snap-type: x mandatory; padding: 4px var(--gutter) 8px;
    scroll-padding-inline: var(--gutter); scrollbar-width: none; }
  .gallery::-webkit-scrollbar { display: none; }
  .gallery:focus-visible { outline-offset: -2px; }
  .gcard { flex: none; width: min(76vw, 300px); margin: 0; scroll-snap-align: start; }
  .gcard__media { aspect-ratio: 1; overflow: hidden; border-radius: var(--radius-m); background: var(--tint); }
  .gcard__media img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
  .gcard__text { margin-top: 18px; padding-right: var(--space-2); color: var(--soft); font-size: var(--text-base); line-height: 1.5; }
  .gcard__text b { color: var(--ink); font-weight: 600; }
  .gallery__arrows { display: flex; justify-content: flex-end; gap: var(--space-3); margin-top: var(--space-6); }
  .gallery__arrow { width: 44px; height: 44px; background: var(--tint); color: var(--ink); transition: opacity var(--fast) ease; }
  .gallery__arrow:disabled { opacity: .35; cursor: default; }
  @media (min-width: 900px) { .gcard { width: 300px; } .gallery { gap: 36px; } }

  /* Coming in as the page reaches them (site.js adds .is-in): Rayo's anim-uni-in-up. */
  .js .anim-in { opacity: 0; transform: translateY(50px); transition: opacity 1.2s cubic-bezier(.25,.46,.45,.94), transform 1.2s cubic-bezier(.25,.46,.45,.94); }
  .js .anim-in.is-in { opacity: 1; transform: none; }
  /* A title that lights up letter by letter with the scroll (Rayo's RevealText); site.js sets each letter's opacity. */
  .reveal .char { opacity: .2; }

  /* The rolling letters of a button (Rayo's btn-anim): site.js doubles the caption, letter by letter. */
  .btn-roll { display: block; height: 1.25em; line-height: 1.25; overflow: hidden; }
  .btn-roll__line { display: block; white-space: nowrap; }
  .btn-roll__letter { display: inline-block; transition: transform .5s cubic-bezier(.76,0,.024,1); transition-delay: calc(var(--i, 0) * 30ms); }
  .btn:hover .btn-roll__letter, .store:hover .btn-roll__letter { transform: translateY(-100%); }

  .tag { display: inline-flex; align-items: center; height: 32px; padding: 0 var(--space-3); border-radius: var(--radius-full);
    box-shadow: inset 0 0 0 1px currentColor; font-size: 14px; line-height: 1; white-space: nowrap; }
  .tag--fill { background: var(--bg); color: var(--ink); box-shadow: none; }
  .tag--accent { background: var(--accent); color: var(--on-accent); box-shadow: none; }

  /* The words that pass between sections (Rayo's MarqueeSlider): the same marquee, in big muted text. */
  .marquee--words .marquee__item { width: auto; margin-right: 0; display: flex; align-items: center; }
  .marquee__word { margin: 0 var(--space-4) 0 0; font: 400 var(--text-marquee)/1.2 var(--font-sans); letter-spacing: -0.02em; color: var(--line); white-space: nowrap; }
  .marquee__star { width: calc(var(--text-marquee) * .68); height: calc(var(--text-marquee) * .68); margin-right: var(--space-4); color: var(--line); }
  @media (min-width: 1200px) { .marquee__word, .marquee__star { margin-right: var(--space-8); } }

  /* A list of rows between lines (Rayo's approach and capabilities lists); the others dim while one is pointed at. */
  .rows { border-top: 2px solid var(--ink); }
  .rows > * { border-bottom: 2px solid var(--ink); }
  @media (min-width: 1200px) and (hover: hover) and (prefers-reduced-motion: no-preference) {
    .rows > *, .dim-others > * { transition: opacity var(--fast) ease; }
    .rows:hover > *:not(:hover), .dim-others:hover > *:not(:hover) { opacity: .2; }
  }

  /* A column that stays while the other scrolls (Rayo's pinned projects). */
  @media (min-width: 1200px) { .sticky-top { position: sticky; top: 0; padding-top: var(--space-24); } }


  /* A pile to search in (the intro's search, D81): things scattered and turned in an area, the words under them as
     chips. Chosen words (ANDed, as in the app's search, D47) bring forward the things that have them all, with the
     action colour's edge; the others fade. site.js places them (the same spots every time) and drops them in. */
  /* isolation: what's inside (a chosen thing comes forward, z-index 100) stays inside, under the controls and the menu. */
  .pile { --pad: var(--space-6); isolation: isolate; border-radius: var(--radius-l); background: var(--tint); overflow: hidden; }
  .pile__caption { margin: 0; padding: var(--pad) var(--pad) 0; font-size: var(--text-lg); line-height: 1.4; color: var(--soft); }
  .pile__caption b { color: var(--ink); font-weight: 600; }
  .pile__things { position: relative; height: 440px; margin: var(--space-6) var(--pad) 0; }
  .pile__item { position: absolute; left: 0; top: 0; width: var(--side, 140px); height: var(--side, 140px); margin: 0; border-radius: var(--radius-m);
    overflow: hidden; background: var(--bg); box-shadow: 0 10px 30px rgba(0,0,0,.12), 0 0 0 1px var(--line);
    transform: translate3d(var(--x, 0), var(--y, 0), 0) rotate(var(--turn, 0deg)) scale(var(--scale, 1)); opacity: var(--alpha, 1);
    transition: transform .45s cubic-bezier(.34,1.4,.64,1), opacity .3s ease-out, box-shadow .3s ease-out; }
  .pile__item img { width: 100%; height: 100%; object-fit: contain; padding: 8%; }
  .pile__item.is-match { --scale: 1.04; box-shadow: 0 14px 36px rgba(0,0,0,.18), 0 0 0 3px var(--accent); z-index: 100 !important; }
  .pile__item.is-faded { --scale: .92; --alpha: .15; }
  .js .pile:not(.is-in) .pile__item { --alpha: 0; transform: translate3d(var(--x, 0), calc(var(--y, 0) - 260px), 0) rotate(var(--turn, 0deg)); }
  /* The words at the bottom, as far from the card's bottom as from its left. */
  .pile__ground { padding: var(--space-6) var(--pad) var(--pad); }
  .pile__chips { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
  .chip { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 var(--space-4) 0 var(--space-3); border: 0; border-radius: var(--radius-full);
    background: var(--bg); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line); font-size: var(--text-sm); font-weight: 500; cursor: pointer;
    transition: background-color var(--fast) ease, color var(--fast) ease; }
  .chip .icon { width: 18px; height: 18px; }
  .chip[aria-pressed="true"] { background: var(--accent); color: var(--on-accent); box-shadow: none; }
  .chip[hidden] { display: none; }
  .pile__count { margin-left: auto; padding-left: var(--space-2); color: var(--soft); font-size: var(--text-sm); }
  /* What a chip begins with: a colour's dot (the picture's colour, content, D41), a kind's icon, a set's folder in the
     set's colour (SetColor, D23, D59). */
  .chip__dot { width: 14px; height: 14px; margin: 0 2px; border-radius: 50%; box-shadow: inset 0 0 0 1px rgba(0,0,0,.12); }
  .dot--red { background: #D8262E; } .dot--yellow { background: #F4C430; } .dot--pink { background: #F3A6C8; }
  .dot--green { background: #8DB07E; } .dot--brown { background: #9A6440; }
  .set--crimson { --set: #DE2028; } .set--mint { --set: #B0D9AA; } .set--gold { --set: #FFDD3F; }
  @media (min-width: 768px) { .pile { --pad: var(--space-8); } .pile__things { height: 440px; margin-top: var(--space-8); } }

  /* Cards of different sizes (Rayo's services bento): the colours are the app's, the pictures are content. */
  /* No min-height in % here: Safari sizes it against the grid row after the pictures load, and the card grows past its
     content. In a row on a computer the cards stretch to the same height anyway, as grid items do. */
  .bento { position: relative; isolation: isolate; display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-6);
    padding: var(--space-6) var(--space-8); border-radius: var(--radius-l); overflow: hidden; background: var(--tint); color: var(--ink); }
  .bento--accent { background: var(--accent); color: var(--on-accent); }
  .bento--ink { background: var(--ink); color: var(--bg); }
  .bento__title { position: relative; z-index: 1; margin: 0; font: 600 var(--text-h3)/1.1 var(--font-sans); letter-spacing: -0.02em; }
  .bento__text { position: relative; z-index: 1; margin: 0; max-width: 28em; }
  .bento__image { width: 70%; max-width: 360px; height: auto; margin: 0 auto; }
  @media (min-width: 768px) { .bento { min-height: 420px; padding: var(--space-10); } }
  @media (min-width: 1200px) {
    /* The thing whole, inside the card, at the right (a box it fits in, not a width: tall and wide things alike); under
       the title until 1440 px, where the cards are wide enough for both side by side. */
    .bento__image { position: absolute; right: var(--space-8); top: var(--space-24); width: 36%; height: 34%; margin: 0;
      object-fit: contain; object-position: right top; }
    .bento__image.motion-rotate { object-position: center; }  /* turns around its own middle */
    .bento--wide .bento__image { right: var(--space-12); top: var(--space-10); width: 30%; height: calc(100% - 2 * var(--space-10)); }
    .bento--wide .bento__text { max-width: 50%; }
  }
  @media (min-width: 1440px) { .bento:not(.bento--wide) .bento__image { top: var(--space-8); height: 42%; } }
  @media (min-width: 1600px) { .bento { min-height: 520px; } }

  /* Big numbers in columns (Rayo's simple stats). */
  .stat { display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-6); padding: var(--space-12) 0; text-align: center;
    border-bottom: 1px solid var(--ink); }
  .stat:first-child { border-top: 1px solid var(--ink); }
  .stat__num { margin: 0; font: 600 var(--text-stat)/.8 var(--font-sans); letter-spacing: -0.04em; }
  .stat__text { margin: 0; font-size: var(--text-base); line-height: 1.4; }
  @media (min-width: 992px) {
    .stat { align-items: flex-start; text-align: left; min-height: 320px; padding: 0 var(--space-8); border: 0; border-left: 1px solid var(--ink); }
    .stat:first-child { border-top: 0; }
  }

  /* The plans (Rayo's pricing table), without prices: they differ by country, the App Store shows them (D78). */
  .plan { position: relative; display: flex; flex-direction: column; gap: var(--space-8); height: 100%; padding: var(--space-8); border-radius: var(--radius-m);
    background: var(--tint); }
  .plan__tag { position: absolute; top: -16px; left: var(--space-8); }
  .plan__name { margin: 0; font: 600 var(--text-stat)/.9 var(--font-sans); letter-spacing: -0.04em; }
  .plan__text { margin: 0; color: var(--soft); }
  .plan__line { height: 2px; border-radius: 2px; background: var(--ink); }
  .checks { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: var(--space-2); }
  .checks li { display: flex; gap: var(--space-3); align-items: flex-start; }
  .checks .icon { color: var(--accent); margin-top: 1px; }
  @media (min-width: 1200px) { .plan { padding: var(--space-10); } }

  /* Questions that open (Rayo's accordion): one open at a time. */
  .faq__q { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: var(--space-6); padding: var(--space-8) 0;
    border: 0; background: none; cursor: pointer; text-align: left; font: 600 var(--text-h6)/1.2 var(--font-sans); color: var(--ink); }
  .faq__q .icon { transition: transform var(--fast) var(--ease); }
  .faq__q[aria-expanded="true"] .icon { transform: rotate(135deg); }
  /* Closed only with site.js, which opens them: without it, every answer shows (D116). */
  .faq__a { overflow: hidden; transition: height var(--fast) ease; }
  .js .faq__a { height: 0; }
  .faq__a p { margin: 0; padding-bottom: var(--space-8); max-width: 40em; color: var(--soft); font-size: var(--text-lg); }

  /* The last call (Rayo's promo): a dark card that opens as it comes (site.js scrubs its scale and corners). */
  .promo { position: relative; isolation: isolate; display: flex; flex-direction: column; gap: var(--space-12); padding: var(--space-24) var(--space-8) var(--space-30);
    border-radius: var(--radius-l); overflow: hidden; background: var(--ink); color: var(--bg);
    --badge-bg: var(--bg); --badge-line: var(--ink); --badge-ink: var(--ink); }
  .promo__title { position: relative; z-index: 1; margin: 0; font: 600 var(--text-h2)/1.05 var(--font-sans); letter-spacing: -0.03em; max-width: 9em; }
  .promo__qr { display: none; }
  .promo__images { display: none; }
  @media (min-width: 768px) { .promo { padding: var(--space-30) var(--space-12) 140px; } }
  @media (min-width: 1200px) {
    .promo { padding-left: var(--space-16); padding-right: var(--space-16); }
    .promo__qr { display: flex; align-items: center; gap: var(--space-4); color: color-mix(in srgb, var(--bg) 60%, transparent); font-size: var(--text-sm); }
    .promo__qr img { width: 96px; height: 96px; border-radius: 12px; }
    .promo__images { display: block; position: absolute; right: 0; top: 0; width: 46%; height: 100%; }
    .promo__image { position: absolute; }
    .promo__image--1 { width: 300px; right: var(--space-24); bottom: var(--space-16); }
    .promo__image--2 { width: 220px; left: 0; top: var(--space-16); }
  }

  /* On a phone the cards take the whole width, square: more room, and they part by their colours (the bento's
     alternate; cards of one colour keep a strip of page between them). The row of section 2 keeps its round corners. */
  @media (max-width: 767px) {
    .pile, .bento, .plan, .promo, .footer-card { margin-left: calc(-1 * var(--gutter)); margin-right: calc(-1 * var(--gutter)); border-radius: 0; }
    .pile { --pad: var(--gutter); }
    .pile__things { height: clamp(220px, calc(100svh - 400px), 440px); }
    .bento { padding: var(--space-10) var(--gutter); }
    .plan { padding: var(--space-10) var(--gutter); }
    .plan__tag { left: var(--gutter); }
    .promo { padding-left: var(--gutter); padding-right: var(--gutter); }
    .footer-card { padding: var(--space-8) var(--gutter); }
  }

  /* The footer (Rayo's footer 2): the name, large, coming down with the scroll, then three cards. On every page. */
  .site-footer { padding-bottom: var(--space-8); overflow: hidden; }
  .site-footer__mark { display: flex; justify-content: center; padding: var(--space-24) var(--gutter) 0; }
  .site-footer__mark span { display: block; font: 600 26vw/.8 var(--font-sans); letter-spacing: -0.06em; white-space: nowrap; }
  .footer-card { display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-6); margin-top: var(--grid-gap);
    padding: var(--space-8); border-radius: var(--radius-m); background: var(--tint); }
  .footer-card__big { font: 600 var(--text-h3)/1.15 var(--font-sans); letter-spacing: -0.02em; text-decoration: none; }
  .footer-card__big:hover, .footer-card__big[aria-current="page"] { color: var(--accent); }
  .footer-card__title { margin: 0; font: 600 var(--text-xl)/1.2 var(--font-sans); }
  .footer-card__link { font-size: var(--text-lg); color: var(--accent); }
  @media (min-width: 768px) { .footer-card { padding: var(--space-12); } }
  @media (min-width: 1200px) { .footer-card { min-height: 420px; } }
}

/* ─── pages ──────────────────────────────────────────────────────────────────────────────────────────────────── */
@layer pages {
  /* Home: the hero fills the first screen; the marquee sits behind the title. */
  .home-hero { position: relative; padding-top: calc(var(--header-top) + var(--control)); }
  .home-hero__stage { position: relative; height: calc(100svh - var(--header-top) - var(--control) - 150px); min-height: 500px; }
  .home-hero__stage .marquee { position: absolute; left: 0; top: 34%; transform: translateY(-50%); width: 100%; }
  .home-hero__stage .headline { position: absolute; left: 0; right: 0; bottom: 0; padding: 0 var(--gutter); }
  @media (min-width: 768px) { .home-hero__stage { height: calc(100svh - var(--header-top) - var(--control) - 140px); min-height: 640px; } }
  @media (min-width: 992px) { .home-hero__stage .marquee { top: 40%; } }
  .home-rest { min-height: 100vh; }  /* until the next sections exist: room to scroll */

  /* Privacy, Terms, Support: reading pages. */
  .doc { max-width: 720px; margin: 0 auto; padding: calc(var(--header-top) + var(--control) + var(--space-12)) var(--gutter) var(--space-16); }
  .doc h1 { font-size: var(--text-2xl); line-height: 1.15; font-weight: 600; letter-spacing: var(--tracking-tight); margin: 0 0 var(--space-2); }
  .doc h2 { font-size: var(--text-lg); line-height: 1.3; font-weight: 600; margin: var(--space-10) 0 var(--space-2); }
  .doc h3 { font-size: var(--text-base); font-weight: 600; margin: var(--space-6) 0 var(--space-1); }
  .doc p, .doc ul { margin: 0 0 14px; }
  .doc ul { padding-left: 22px; }
  .doc li { margin: var(--space-1) 0; }
  .doc a { color: var(--accent); }
  .doc .meta { color: var(--soft); font-family: var(--font-mono); font-size: 14px; margin-bottom: 28px; }
  .doc .short { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); padding: var(--space-4) 0; margin: 0 0 var(--space-2); }
  .doc .lede { font-size: var(--text-lg); color: var(--soft); max-width: 34em; }

  /* r.php: a friend's invite (D72). */
  .invite .code { font: 500 clamp(44px, 15vw, 96px)/1 var(--font-mono); letter-spacing: 0.08em; margin: 0 0 var(--space-6);
    padding: var(--space-6) 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line);
    word-break: break-all; user-select: all; -webkit-user-select: all; }
  .invite [hidden] { display: none; }

  /* j.php: an invite to a shared set (D84). The set's folder (D18), its name large, as the person wrote it. */
  .set-invite__set { display: flex; align-items: flex-start; gap: var(--space-4); padding: var(--space-6) 0; margin: 0 0 var(--space-6);
    border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
  .set-invite__icon { flex: none; width: 48px; height: 48px; margin-top: .1em; color: var(--ink); }
  .invite .set-invite__name { margin: 0; font: 600 clamp(36px, 9vw, 64px)/1.05 var(--font-sans); letter-spacing: var(--tracking-tight);
    overflow-wrap: anywhere; transition: color var(--fast) var(--ease); }
  .set-invite[aria-busy] .set-invite__name { color: var(--soft); }
  .set-invite--gone .set-invite__icon { color: var(--soft); }
  .set-invite a.btn { color: var(--on-accent); }   /* a button, not one of .doc's links */

  /* 404.html: the site's own "not here" (D116), with Neo, who arrives as a glitch (D14: slices that jump a pixel or two
     and a brief duplicate in the action colour), then rests (IdleRest, the keyframes below, from scripts/web/neo.py).
     One of Neo's pixels is --neo-px; he's drawn on whole pixels (crispEdges). With Reduce Motion (base), no animation:
     Neo stands, the ghost stays hidden. */
  .lost { --neo-px: 4px; }
  .lost a.btn { color: var(--on-accent); }   /* a button, not one of .doc's links */
  .neo { position: relative; width: calc(40 * var(--neo-px)); height: calc(46 * var(--neo-px)); margin: 0 0 var(--space-8);
    margin-left: calc(-4 * var(--neo-px)); }   /* his drawing starts 4 pixels in: the cape lines up with the text */
  .neo svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: hidden; }
  .neo-i { fill: var(--ink); } .neo-m { fill: var(--soft); } .neo-f { fill: var(--faint); } .neo-a { fill: var(--accent); }
  .neo__ghost { opacity: 0; animation: neo-ghost .7s .15s steps(1, end) both; }
  .neo__ghost path { fill: var(--accent); }
  .neo__body { animation: neo-in .7s .15s steps(1, end) both; }
  @keyframes neo-in {
    0% { opacity: 0; }
    12% { opacity: 1; transform: translateX(calc(3 * var(--neo-px))); clip-path: inset(0 0 58% 0); }
    22% { transform: translateX(calc(-2 * var(--neo-px))); clip-path: inset(36% 0 18% 0); }
    32% { opacity: 0; }
    42% { opacity: 1; transform: translateX(var(--neo-px)); clip-path: inset(0 0 30% 0); }
    56% { transform: none; clip-path: inset(0 0 0 0); }
    70% { transform: translateX(calc(-1 * var(--neo-px))); clip-path: inset(48% 0 0 0); }
    80%, 100% { opacity: 1; transform: none; clip-path: inset(0 0 0 0); }
  }
  @keyframes neo-ghost {
    0%, 12% { opacity: 0; }
    22% { opacity: 1; transform: translateX(calc(2 * var(--neo-px))); clip-path: inset(0 0 50% 0); }
    32% { opacity: 1; transform: translateX(calc(-1 * var(--neo-px))); clip-path: inset(20% 0 0 0); }
    42% { opacity: 0; }
    62% { opacity: 1; transform: translateX(calc(2 * var(--neo-px))); clip-path: inset(55% 0 10% 0); }
    72%, 100% { opacity: 0; transform: none; }
  }
  /* neo:begin (scripts/web/neo.py): IdleRest, 176 frames at 20 a second, 14 of them different */
  .neo__strip { animation: neo-rest 8.8s steps(1, end) infinite; }
  @keyframes neo-rest { 0% { transform: translateX(0px); } 1.7% { transform: translateX(-40px); } 3.41% { transform: translateX(-80px); } 5.11% { transform: translateX(-120px); } 6.82% { transform: translateX(0px); } 8.52% { transform: translateX(-160px); } 10.23% { transform: translateX(-200px); } 11.93% { transform: translateX(-240px); } 13.64% { transform: translateX(0px); } 15.34% { transform: translateX(-40px); } 17.05% { transform: translateX(-80px); } 18.75% { transform: translateX(-120px); } 20.45% { transform: translateX(0px); } 22.16% { transform: translateX(-160px); } 23.86% { transform: translateX(-200px); } 25.57% { transform: translateX(-240px); } 27.27% { transform: translateX(0px); } 28.98% { transform: translateX(-40px); } 30.68% { transform: translateX(-80px); } 32.39% { transform: translateX(-120px); } 34.09% { transform: translateX(0px); } 35.8% { transform: translateX(-160px); } 37.5% { transform: translateX(-200px); } 39.2% { transform: translateX(-240px); } 40.91% { transform: translateX(0px); } 42.61% { transform: translateX(-40px); } 44.32% { transform: translateX(-80px); } 46.02% { transform: translateX(-120px); } 47.73% { transform: translateX(0px); } 49.43% { transform: translateX(-160px); } 51.14% { transform: translateX(-200px); } 52.84% { transform: translateX(-240px); } 54.55% { transform: translateX(0px); } 56.25% { transform: translateX(-40px); } 57.95% { transform: translateX(-80px); } 59.66% { transform: translateX(-120px); } 61.36% { transform: translateX(0px); } 63.07% { transform: translateX(-160px); } 64.77% { transform: translateX(-200px); } 66.48% { transform: translateX(-240px); } 68.18% { transform: translateX(0px); } 69.89% { transform: translateX(-40px); } 71.59% { transform: translateX(-80px); } 73.3% { transform: translateX(-120px); } 75% { transform: translateX(0px); } 76.7% { transform: translateX(-160px); } 78.41% { transform: translateX(-200px); } 80.11% { transform: translateX(-240px); } 81.82% { transform: translateX(0px); } 84.09% { transform: translateX(-280px); } 86.36% { transform: translateX(-320px); } 88.64% { transform: translateX(-360px); } 90.91% { transform: translateX(-400px); } 93.18% { transform: translateX(-440px); } 95.45% { transform: translateX(-480px); } 97.73% { transform: translateX(-520px); } 100% { transform: translateX(-520px); } }
  /* neo:end */
  @media (min-width: 768px) { .lost { --neo-px: 5px; } }
}

/* ─── utilities ──────────────────────────────────────────────────────────────────────────────────────────────── */
/* utilities:begin (scripts/web/utilities.py) */
@layer utilities {
  .m-0 { margin: var(--space-0); }
  .m-1 { margin: var(--space-1); }
  .m-2 { margin: var(--space-2); }
  .m-3 { margin: var(--space-3); }
  .m-4 { margin: var(--space-4); }
  .m-5 { margin: var(--space-5); }
  .m-6 { margin: var(--space-6); }
  .m-8 { margin: var(--space-8); }
  .m-10 { margin: var(--space-10); }
  .m-12 { margin: var(--space-12); }
  .m-16 { margin: var(--space-16); }
  .m-20 { margin: var(--space-20); }
  .m-24 { margin: var(--space-24); }
  .m-30 { margin: var(--space-30); }
  .mt-0 { margin-top: var(--space-0); }
  .mt-1 { margin-top: var(--space-1); }
  .mt-2 { margin-top: var(--space-2); }
  .mt-3 { margin-top: var(--space-3); }
  .mt-4 { margin-top: var(--space-4); }
  .mt-5 { margin-top: var(--space-5); }
  .mt-6 { margin-top: var(--space-6); }
  .mt-8 { margin-top: var(--space-8); }
  .mt-10 { margin-top: var(--space-10); }
  .mt-12 { margin-top: var(--space-12); }
  .mt-16 { margin-top: var(--space-16); }
  .mt-20 { margin-top: var(--space-20); }
  .mt-24 { margin-top: var(--space-24); }
  .mt-30 { margin-top: var(--space-30); }
  .mr-0 { margin-right: var(--space-0); }
  .mr-1 { margin-right: var(--space-1); }
  .mr-2 { margin-right: var(--space-2); }
  .mr-3 { margin-right: var(--space-3); }
  .mr-4 { margin-right: var(--space-4); }
  .mr-5 { margin-right: var(--space-5); }
  .mr-6 { margin-right: var(--space-6); }
  .mr-8 { margin-right: var(--space-8); }
  .mr-10 { margin-right: var(--space-10); }
  .mr-12 { margin-right: var(--space-12); }
  .mr-16 { margin-right: var(--space-16); }
  .mr-20 { margin-right: var(--space-20); }
  .mr-24 { margin-right: var(--space-24); }
  .mr-30 { margin-right: var(--space-30); }
  .mb-0 { margin-bottom: var(--space-0); }
  .mb-1 { margin-bottom: var(--space-1); }
  .mb-2 { margin-bottom: var(--space-2); }
  .mb-3 { margin-bottom: var(--space-3); }
  .mb-4 { margin-bottom: var(--space-4); }
  .mb-5 { margin-bottom: var(--space-5); }
  .mb-6 { margin-bottom: var(--space-6); }
  .mb-8 { margin-bottom: var(--space-8); }
  .mb-10 { margin-bottom: var(--space-10); }
  .mb-12 { margin-bottom: var(--space-12); }
  .mb-16 { margin-bottom: var(--space-16); }
  .mb-20 { margin-bottom: var(--space-20); }
  .mb-24 { margin-bottom: var(--space-24); }
  .mb-30 { margin-bottom: var(--space-30); }
  .ml-0 { margin-left: var(--space-0); }
  .ml-1 { margin-left: var(--space-1); }
  .ml-2 { margin-left: var(--space-2); }
  .ml-3 { margin-left: var(--space-3); }
  .ml-4 { margin-left: var(--space-4); }
  .ml-5 { margin-left: var(--space-5); }
  .ml-6 { margin-left: var(--space-6); }
  .ml-8 { margin-left: var(--space-8); }
  .ml-10 { margin-left: var(--space-10); }
  .ml-12 { margin-left: var(--space-12); }
  .ml-16 { margin-left: var(--space-16); }
  .ml-20 { margin-left: var(--space-20); }
  .ml-24 { margin-left: var(--space-24); }
  .ml-30 { margin-left: var(--space-30); }
  .mx-0 { margin-left: var(--space-0); margin-right: var(--space-0); }
  .mx-1 { margin-left: var(--space-1); margin-right: var(--space-1); }
  .mx-2 { margin-left: var(--space-2); margin-right: var(--space-2); }
  .mx-3 { margin-left: var(--space-3); margin-right: var(--space-3); }
  .mx-4 { margin-left: var(--space-4); margin-right: var(--space-4); }
  .mx-5 { margin-left: var(--space-5); margin-right: var(--space-5); }
  .mx-6 { margin-left: var(--space-6); margin-right: var(--space-6); }
  .mx-8 { margin-left: var(--space-8); margin-right: var(--space-8); }
  .mx-10 { margin-left: var(--space-10); margin-right: var(--space-10); }
  .mx-12 { margin-left: var(--space-12); margin-right: var(--space-12); }
  .mx-16 { margin-left: var(--space-16); margin-right: var(--space-16); }
  .mx-20 { margin-left: var(--space-20); margin-right: var(--space-20); }
  .mx-24 { margin-left: var(--space-24); margin-right: var(--space-24); }
  .mx-30 { margin-left: var(--space-30); margin-right: var(--space-30); }
  .my-0 { margin-top: var(--space-0); margin-bottom: var(--space-0); }
  .my-1 { margin-top: var(--space-1); margin-bottom: var(--space-1); }
  .my-2 { margin-top: var(--space-2); margin-bottom: var(--space-2); }
  .my-3 { margin-top: var(--space-3); margin-bottom: var(--space-3); }
  .my-4 { margin-top: var(--space-4); margin-bottom: var(--space-4); }
  .my-5 { margin-top: var(--space-5); margin-bottom: var(--space-5); }
  .my-6 { margin-top: var(--space-6); margin-bottom: var(--space-6); }
  .my-8 { margin-top: var(--space-8); margin-bottom: var(--space-8); }
  .my-10 { margin-top: var(--space-10); margin-bottom: var(--space-10); }
  .my-12 { margin-top: var(--space-12); margin-bottom: var(--space-12); }
  .my-16 { margin-top: var(--space-16); margin-bottom: var(--space-16); }
  .my-20 { margin-top: var(--space-20); margin-bottom: var(--space-20); }
  .my-24 { margin-top: var(--space-24); margin-bottom: var(--space-24); }
  .my-30 { margin-top: var(--space-30); margin-bottom: var(--space-30); }
  .p-0 { padding: var(--space-0); }
  .p-1 { padding: var(--space-1); }
  .p-2 { padding: var(--space-2); }
  .p-3 { padding: var(--space-3); }
  .p-4 { padding: var(--space-4); }
  .p-5 { padding: var(--space-5); }
  .p-6 { padding: var(--space-6); }
  .p-8 { padding: var(--space-8); }
  .p-10 { padding: var(--space-10); }
  .p-12 { padding: var(--space-12); }
  .p-16 { padding: var(--space-16); }
  .p-20 { padding: var(--space-20); }
  .p-24 { padding: var(--space-24); }
  .p-30 { padding: var(--space-30); }
  .pt-0 { padding-top: var(--space-0); }
  .pt-1 { padding-top: var(--space-1); }
  .pt-2 { padding-top: var(--space-2); }
  .pt-3 { padding-top: var(--space-3); }
  .pt-4 { padding-top: var(--space-4); }
  .pt-5 { padding-top: var(--space-5); }
  .pt-6 { padding-top: var(--space-6); }
  .pt-8 { padding-top: var(--space-8); }
  .pt-10 { padding-top: var(--space-10); }
  .pt-12 { padding-top: var(--space-12); }
  .pt-16 { padding-top: var(--space-16); }
  .pt-20 { padding-top: var(--space-20); }
  .pt-24 { padding-top: var(--space-24); }
  .pt-30 { padding-top: var(--space-30); }
  .pr-0 { padding-right: var(--space-0); }
  .pr-1 { padding-right: var(--space-1); }
  .pr-2 { padding-right: var(--space-2); }
  .pr-3 { padding-right: var(--space-3); }
  .pr-4 { padding-right: var(--space-4); }
  .pr-5 { padding-right: var(--space-5); }
  .pr-6 { padding-right: var(--space-6); }
  .pr-8 { padding-right: var(--space-8); }
  .pr-10 { padding-right: var(--space-10); }
  .pr-12 { padding-right: var(--space-12); }
  .pr-16 { padding-right: var(--space-16); }
  .pr-20 { padding-right: var(--space-20); }
  .pr-24 { padding-right: var(--space-24); }
  .pr-30 { padding-right: var(--space-30); }
  .pb-0 { padding-bottom: var(--space-0); }
  .pb-1 { padding-bottom: var(--space-1); }
  .pb-2 { padding-bottom: var(--space-2); }
  .pb-3 { padding-bottom: var(--space-3); }
  .pb-4 { padding-bottom: var(--space-4); }
  .pb-5 { padding-bottom: var(--space-5); }
  .pb-6 { padding-bottom: var(--space-6); }
  .pb-8 { padding-bottom: var(--space-8); }
  .pb-10 { padding-bottom: var(--space-10); }
  .pb-12 { padding-bottom: var(--space-12); }
  .pb-16 { padding-bottom: var(--space-16); }
  .pb-20 { padding-bottom: var(--space-20); }
  .pb-24 { padding-bottom: var(--space-24); }
  .pb-30 { padding-bottom: var(--space-30); }
  .pl-0 { padding-left: var(--space-0); }
  .pl-1 { padding-left: var(--space-1); }
  .pl-2 { padding-left: var(--space-2); }
  .pl-3 { padding-left: var(--space-3); }
  .pl-4 { padding-left: var(--space-4); }
  .pl-5 { padding-left: var(--space-5); }
  .pl-6 { padding-left: var(--space-6); }
  .pl-8 { padding-left: var(--space-8); }
  .pl-10 { padding-left: var(--space-10); }
  .pl-12 { padding-left: var(--space-12); }
  .pl-16 { padding-left: var(--space-16); }
  .pl-20 { padding-left: var(--space-20); }
  .pl-24 { padding-left: var(--space-24); }
  .pl-30 { padding-left: var(--space-30); }
  .px-0 { padding-left: var(--space-0); padding-right: var(--space-0); }
  .px-1 { padding-left: var(--space-1); padding-right: var(--space-1); }
  .px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }
  .px-3 { padding-left: var(--space-3); padding-right: var(--space-3); }
  .px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
  .px-5 { padding-left: var(--space-5); padding-right: var(--space-5); }
  .px-6 { padding-left: var(--space-6); padding-right: var(--space-6); }
  .px-8 { padding-left: var(--space-8); padding-right: var(--space-8); }
  .px-10 { padding-left: var(--space-10); padding-right: var(--space-10); }
  .px-12 { padding-left: var(--space-12); padding-right: var(--space-12); }
  .px-16 { padding-left: var(--space-16); padding-right: var(--space-16); }
  .px-20 { padding-left: var(--space-20); padding-right: var(--space-20); }
  .px-24 { padding-left: var(--space-24); padding-right: var(--space-24); }
  .px-30 { padding-left: var(--space-30); padding-right: var(--space-30); }
  .py-0 { padding-top: var(--space-0); padding-bottom: var(--space-0); }
  .py-1 { padding-top: var(--space-1); padding-bottom: var(--space-1); }
  .py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }
  .py-3 { padding-top: var(--space-3); padding-bottom: var(--space-3); }
  .py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
  .py-5 { padding-top: var(--space-5); padding-bottom: var(--space-5); }
  .py-6 { padding-top: var(--space-6); padding-bottom: var(--space-6); }
  .py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); }
  .py-10 { padding-top: var(--space-10); padding-bottom: var(--space-10); }
  .py-12 { padding-top: var(--space-12); padding-bottom: var(--space-12); }
  .py-16 { padding-top: var(--space-16); padding-bottom: var(--space-16); }
  .py-20 { padding-top: var(--space-20); padding-bottom: var(--space-20); }
  .py-24 { padding-top: var(--space-24); padding-bottom: var(--space-24); }
  .py-30 { padding-top: var(--space-30); padding-bottom: var(--space-30); }
  .gap-0 { gap: var(--space-0); }
  .gap-1 { gap: var(--space-1); }
  .gap-2 { gap: var(--space-2); }
  .gap-3 { gap: var(--space-3); }
  .gap-4 { gap: var(--space-4); }
  .gap-5 { gap: var(--space-5); }
  .gap-6 { gap: var(--space-6); }
  .gap-8 { gap: var(--space-8); }
  .gap-10 { gap: var(--space-10); }
  .gap-12 { gap: var(--space-12); }
  .gap-16 { gap: var(--space-16); }
  .gap-20 { gap: var(--space-20); }
  .gap-24 { gap: var(--space-24); }
  .gap-30 { gap: var(--space-30); }
  .mx-auto { margin-left: auto; margin-right: auto; }
  .m-auto { margin: auto; }
  .px-gutter { padding-left: var(--gutter); padding-right: var(--gutter); }
  .mx-gutter { margin-left: var(--gutter); margin-right: var(--gutter); }
  .text-sm { font-size: var(--text-sm); }
  .text-base { font-size: var(--text-base); }
  .text-lg { font-size: var(--text-lg); }
  .text-xl { font-size: var(--text-xl); }
  .text-2xl { font-size: var(--text-2xl); }
  .font-regular { font-weight: 400; }
  .font-medium { font-weight: 500; }
  .font-semibold { font-weight: 600; }
  .text-left { text-align: left; }
  .text-center { text-align: center; }
  .text-ink { color: var(--ink); }
  .text-soft { color: var(--soft); }
  .text-accent { color: var(--accent); }
  .text-on-accent { color: var(--on-accent); }
  .bg-base { background-color: var(--bg); }
  .bg-tint { background-color: var(--tint); }
  .bg-ink { background-color: var(--ink); }
  .bg-accent { background-color: var(--accent); }
  .block { display: block; }
  .inline-block { display: inline-block; }
  .flex { display: flex; }
  .inline-flex { display: inline-flex; }
  .grid { display: grid; }
  .hidden { display: none; }
  .flex-col { flex-direction: column; }
  .flex-row { flex-direction: row; }
  .flex-wrap { flex-wrap: wrap; }
  .flex-1 { flex: 1 1 0%; }
  .relative { position: relative; }
  .z-1 { z-index: 1; }
  .list-none { list-style: none; padding-left: 0; }
  .max-w-prose { max-width: 26em; }
  .items-start { align-items: flex-start; }
  .items-center { align-items: center; }
  .items-end { align-items: flex-end; }
  .justify-start { justify-content: flex-start; }
  .justify-center { justify-content: center; }
  .justify-between { justify-content: space-between; }
  .justify-end { justify-content: flex-end; }
  .w-full { width: 100%; }
  .grid-12 { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--grid-gap); }
  .col-span-1 { grid-column: span 1 / span 1; }
  .col-span-2 { grid-column: span 2 / span 2; }
  .col-span-3 { grid-column: span 3 / span 3; }
  .col-span-4 { grid-column: span 4 / span 4; }
  .col-span-5 { grid-column: span 5 / span 5; }
  .col-span-6 { grid-column: span 6 / span 6; }
  .col-span-7 { grid-column: span 7 / span 7; }
  .col-span-8 { grid-column: span 8 / span 8; }
  .col-span-9 { grid-column: span 9 / span 9; }
  .col-span-10 { grid-column: span 10 / span 10; }
  .col-span-11 { grid-column: span 11 / span 11; }
  .col-span-12 { grid-column: span 12 / span 12; }
  .col-start-1 { grid-column-start: 1; }
  .col-start-2 { grid-column-start: 2; }
  .col-start-3 { grid-column-start: 3; }
  .col-start-4 { grid-column-start: 4; }
  .col-start-5 { grid-column-start: 5; }
  .col-start-6 { grid-column-start: 6; }
  .col-start-7 { grid-column-start: 7; }
  .col-start-8 { grid-column-start: 8; }
  .col-start-9 { grid-column-start: 9; }
  .col-start-10 { grid-column-start: 10; }
  .col-start-11 { grid-column-start: 11; }
  .col-start-12 { grid-column-start: 12; }
  .pt-section { padding-top: var(--section); }
  .pb-section { padding-bottom: var(--section); }
  .py-section { padding-top: var(--section); padding-bottom: var(--section); }
  .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
  @media (min-width: 768px) {
    .md\:m-0 { margin: var(--space-0); }
    .md\:m-1 { margin: var(--space-1); }
    .md\:m-2 { margin: var(--space-2); }
    .md\:m-3 { margin: var(--space-3); }
    .md\:m-4 { margin: var(--space-4); }
    .md\:m-5 { margin: var(--space-5); }
    .md\:m-6 { margin: var(--space-6); }
    .md\:m-8 { margin: var(--space-8); }
    .md\:m-10 { margin: var(--space-10); }
    .md\:m-12 { margin: var(--space-12); }
    .md\:m-16 { margin: var(--space-16); }
    .md\:m-20 { margin: var(--space-20); }
    .md\:m-24 { margin: var(--space-24); }
    .md\:m-30 { margin: var(--space-30); }
    .md\:mt-0 { margin-top: var(--space-0); }
    .md\:mt-1 { margin-top: var(--space-1); }
    .md\:mt-2 { margin-top: var(--space-2); }
    .md\:mt-3 { margin-top: var(--space-3); }
    .md\:mt-4 { margin-top: var(--space-4); }
    .md\:mt-5 { margin-top: var(--space-5); }
    .md\:mt-6 { margin-top: var(--space-6); }
    .md\:mt-8 { margin-top: var(--space-8); }
    .md\:mt-10 { margin-top: var(--space-10); }
    .md\:mt-12 { margin-top: var(--space-12); }
    .md\:mt-16 { margin-top: var(--space-16); }
    .md\:mt-20 { margin-top: var(--space-20); }
    .md\:mt-24 { margin-top: var(--space-24); }
    .md\:mt-30 { margin-top: var(--space-30); }
    .md\:mr-0 { margin-right: var(--space-0); }
    .md\:mr-1 { margin-right: var(--space-1); }
    .md\:mr-2 { margin-right: var(--space-2); }
    .md\:mr-3 { margin-right: var(--space-3); }
    .md\:mr-4 { margin-right: var(--space-4); }
    .md\:mr-5 { margin-right: var(--space-5); }
    .md\:mr-6 { margin-right: var(--space-6); }
    .md\:mr-8 { margin-right: var(--space-8); }
    .md\:mr-10 { margin-right: var(--space-10); }
    .md\:mr-12 { margin-right: var(--space-12); }
    .md\:mr-16 { margin-right: var(--space-16); }
    .md\:mr-20 { margin-right: var(--space-20); }
    .md\:mr-24 { margin-right: var(--space-24); }
    .md\:mr-30 { margin-right: var(--space-30); }
    .md\:mb-0 { margin-bottom: var(--space-0); }
    .md\:mb-1 { margin-bottom: var(--space-1); }
    .md\:mb-2 { margin-bottom: var(--space-2); }
    .md\:mb-3 { margin-bottom: var(--space-3); }
    .md\:mb-4 { margin-bottom: var(--space-4); }
    .md\:mb-5 { margin-bottom: var(--space-5); }
    .md\:mb-6 { margin-bottom: var(--space-6); }
    .md\:mb-8 { margin-bottom: var(--space-8); }
    .md\:mb-10 { margin-bottom: var(--space-10); }
    .md\:mb-12 { margin-bottom: var(--space-12); }
    .md\:mb-16 { margin-bottom: var(--space-16); }
    .md\:mb-20 { margin-bottom: var(--space-20); }
    .md\:mb-24 { margin-bottom: var(--space-24); }
    .md\:mb-30 { margin-bottom: var(--space-30); }
    .md\:ml-0 { margin-left: var(--space-0); }
    .md\:ml-1 { margin-left: var(--space-1); }
    .md\:ml-2 { margin-left: var(--space-2); }
    .md\:ml-3 { margin-left: var(--space-3); }
    .md\:ml-4 { margin-left: var(--space-4); }
    .md\:ml-5 { margin-left: var(--space-5); }
    .md\:ml-6 { margin-left: var(--space-6); }
    .md\:ml-8 { margin-left: var(--space-8); }
    .md\:ml-10 { margin-left: var(--space-10); }
    .md\:ml-12 { margin-left: var(--space-12); }
    .md\:ml-16 { margin-left: var(--space-16); }
    .md\:ml-20 { margin-left: var(--space-20); }
    .md\:ml-24 { margin-left: var(--space-24); }
    .md\:ml-30 { margin-left: var(--space-30); }
    .md\:mx-0 { margin-left: var(--space-0); margin-right: var(--space-0); }
    .md\:mx-1 { margin-left: var(--space-1); margin-right: var(--space-1); }
    .md\:mx-2 { margin-left: var(--space-2); margin-right: var(--space-2); }
    .md\:mx-3 { margin-left: var(--space-3); margin-right: var(--space-3); }
    .md\:mx-4 { margin-left: var(--space-4); margin-right: var(--space-4); }
    .md\:mx-5 { margin-left: var(--space-5); margin-right: var(--space-5); }
    .md\:mx-6 { margin-left: var(--space-6); margin-right: var(--space-6); }
    .md\:mx-8 { margin-left: var(--space-8); margin-right: var(--space-8); }
    .md\:mx-10 { margin-left: var(--space-10); margin-right: var(--space-10); }
    .md\:mx-12 { margin-left: var(--space-12); margin-right: var(--space-12); }
    .md\:mx-16 { margin-left: var(--space-16); margin-right: var(--space-16); }
    .md\:mx-20 { margin-left: var(--space-20); margin-right: var(--space-20); }
    .md\:mx-24 { margin-left: var(--space-24); margin-right: var(--space-24); }
    .md\:mx-30 { margin-left: var(--space-30); margin-right: var(--space-30); }
    .md\:my-0 { margin-top: var(--space-0); margin-bottom: var(--space-0); }
    .md\:my-1 { margin-top: var(--space-1); margin-bottom: var(--space-1); }
    .md\:my-2 { margin-top: var(--space-2); margin-bottom: var(--space-2); }
    .md\:my-3 { margin-top: var(--space-3); margin-bottom: var(--space-3); }
    .md\:my-4 { margin-top: var(--space-4); margin-bottom: var(--space-4); }
    .md\:my-5 { margin-top: var(--space-5); margin-bottom: var(--space-5); }
    .md\:my-6 { margin-top: var(--space-6); margin-bottom: var(--space-6); }
    .md\:my-8 { margin-top: var(--space-8); margin-bottom: var(--space-8); }
    .md\:my-10 { margin-top: var(--space-10); margin-bottom: var(--space-10); }
    .md\:my-12 { margin-top: var(--space-12); margin-bottom: var(--space-12); }
    .md\:my-16 { margin-top: var(--space-16); margin-bottom: var(--space-16); }
    .md\:my-20 { margin-top: var(--space-20); margin-bottom: var(--space-20); }
    .md\:my-24 { margin-top: var(--space-24); margin-bottom: var(--space-24); }
    .md\:my-30 { margin-top: var(--space-30); margin-bottom: var(--space-30); }
    .md\:p-0 { padding: var(--space-0); }
    .md\:p-1 { padding: var(--space-1); }
    .md\:p-2 { padding: var(--space-2); }
    .md\:p-3 { padding: var(--space-3); }
    .md\:p-4 { padding: var(--space-4); }
    .md\:p-5 { padding: var(--space-5); }
    .md\:p-6 { padding: var(--space-6); }
    .md\:p-8 { padding: var(--space-8); }
    .md\:p-10 { padding: var(--space-10); }
    .md\:p-12 { padding: var(--space-12); }
    .md\:p-16 { padding: var(--space-16); }
    .md\:p-20 { padding: var(--space-20); }
    .md\:p-24 { padding: var(--space-24); }
    .md\:p-30 { padding: var(--space-30); }
    .md\:pt-0 { padding-top: var(--space-0); }
    .md\:pt-1 { padding-top: var(--space-1); }
    .md\:pt-2 { padding-top: var(--space-2); }
    .md\:pt-3 { padding-top: var(--space-3); }
    .md\:pt-4 { padding-top: var(--space-4); }
    .md\:pt-5 { padding-top: var(--space-5); }
    .md\:pt-6 { padding-top: var(--space-6); }
    .md\:pt-8 { padding-top: var(--space-8); }
    .md\:pt-10 { padding-top: var(--space-10); }
    .md\:pt-12 { padding-top: var(--space-12); }
    .md\:pt-16 { padding-top: var(--space-16); }
    .md\:pt-20 { padding-top: var(--space-20); }
    .md\:pt-24 { padding-top: var(--space-24); }
    .md\:pt-30 { padding-top: var(--space-30); }
    .md\:pr-0 { padding-right: var(--space-0); }
    .md\:pr-1 { padding-right: var(--space-1); }
    .md\:pr-2 { padding-right: var(--space-2); }
    .md\:pr-3 { padding-right: var(--space-3); }
    .md\:pr-4 { padding-right: var(--space-4); }
    .md\:pr-5 { padding-right: var(--space-5); }
    .md\:pr-6 { padding-right: var(--space-6); }
    .md\:pr-8 { padding-right: var(--space-8); }
    .md\:pr-10 { padding-right: var(--space-10); }
    .md\:pr-12 { padding-right: var(--space-12); }
    .md\:pr-16 { padding-right: var(--space-16); }
    .md\:pr-20 { padding-right: var(--space-20); }
    .md\:pr-24 { padding-right: var(--space-24); }
    .md\:pr-30 { padding-right: var(--space-30); }
    .md\:pb-0 { padding-bottom: var(--space-0); }
    .md\:pb-1 { padding-bottom: var(--space-1); }
    .md\:pb-2 { padding-bottom: var(--space-2); }
    .md\:pb-3 { padding-bottom: var(--space-3); }
    .md\:pb-4 { padding-bottom: var(--space-4); }
    .md\:pb-5 { padding-bottom: var(--space-5); }
    .md\:pb-6 { padding-bottom: var(--space-6); }
    .md\:pb-8 { padding-bottom: var(--space-8); }
    .md\:pb-10 { padding-bottom: var(--space-10); }
    .md\:pb-12 { padding-bottom: var(--space-12); }
    .md\:pb-16 { padding-bottom: var(--space-16); }
    .md\:pb-20 { padding-bottom: var(--space-20); }
    .md\:pb-24 { padding-bottom: var(--space-24); }
    .md\:pb-30 { padding-bottom: var(--space-30); }
    .md\:pl-0 { padding-left: var(--space-0); }
    .md\:pl-1 { padding-left: var(--space-1); }
    .md\:pl-2 { padding-left: var(--space-2); }
    .md\:pl-3 { padding-left: var(--space-3); }
    .md\:pl-4 { padding-left: var(--space-4); }
    .md\:pl-5 { padding-left: var(--space-5); }
    .md\:pl-6 { padding-left: var(--space-6); }
    .md\:pl-8 { padding-left: var(--space-8); }
    .md\:pl-10 { padding-left: var(--space-10); }
    .md\:pl-12 { padding-left: var(--space-12); }
    .md\:pl-16 { padding-left: var(--space-16); }
    .md\:pl-20 { padding-left: var(--space-20); }
    .md\:pl-24 { padding-left: var(--space-24); }
    .md\:pl-30 { padding-left: var(--space-30); }
    .md\:px-0 { padding-left: var(--space-0); padding-right: var(--space-0); }
    .md\:px-1 { padding-left: var(--space-1); padding-right: var(--space-1); }
    .md\:px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }
    .md\:px-3 { padding-left: var(--space-3); padding-right: var(--space-3); }
    .md\:px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
    .md\:px-5 { padding-left: var(--space-5); padding-right: var(--space-5); }
    .md\:px-6 { padding-left: var(--space-6); padding-right: var(--space-6); }
    .md\:px-8 { padding-left: var(--space-8); padding-right: var(--space-8); }
    .md\:px-10 { padding-left: var(--space-10); padding-right: var(--space-10); }
    .md\:px-12 { padding-left: var(--space-12); padding-right: var(--space-12); }
    .md\:px-16 { padding-left: var(--space-16); padding-right: var(--space-16); }
    .md\:px-20 { padding-left: var(--space-20); padding-right: var(--space-20); }
    .md\:px-24 { padding-left: var(--space-24); padding-right: var(--space-24); }
    .md\:px-30 { padding-left: var(--space-30); padding-right: var(--space-30); }
    .md\:py-0 { padding-top: var(--space-0); padding-bottom: var(--space-0); }
    .md\:py-1 { padding-top: var(--space-1); padding-bottom: var(--space-1); }
    .md\:py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }
    .md\:py-3 { padding-top: var(--space-3); padding-bottom: var(--space-3); }
    .md\:py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
    .md\:py-5 { padding-top: var(--space-5); padding-bottom: var(--space-5); }
    .md\:py-6 { padding-top: var(--space-6); padding-bottom: var(--space-6); }
    .md\:py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); }
    .md\:py-10 { padding-top: var(--space-10); padding-bottom: var(--space-10); }
    .md\:py-12 { padding-top: var(--space-12); padding-bottom: var(--space-12); }
    .md\:py-16 { padding-top: var(--space-16); padding-bottom: var(--space-16); }
    .md\:py-20 { padding-top: var(--space-20); padding-bottom: var(--space-20); }
    .md\:py-24 { padding-top: var(--space-24); padding-bottom: var(--space-24); }
    .md\:py-30 { padding-top: var(--space-30); padding-bottom: var(--space-30); }
    .md\:gap-0 { gap: var(--space-0); }
    .md\:gap-1 { gap: var(--space-1); }
    .md\:gap-2 { gap: var(--space-2); }
    .md\:gap-3 { gap: var(--space-3); }
    .md\:gap-4 { gap: var(--space-4); }
    .md\:gap-5 { gap: var(--space-5); }
    .md\:gap-6 { gap: var(--space-6); }
    .md\:gap-8 { gap: var(--space-8); }
    .md\:gap-10 { gap: var(--space-10); }
    .md\:gap-12 { gap: var(--space-12); }
    .md\:gap-16 { gap: var(--space-16); }
    .md\:gap-20 { gap: var(--space-20); }
    .md\:gap-24 { gap: var(--space-24); }
    .md\:gap-30 { gap: var(--space-30); }
    .md\:mx-auto { margin-left: auto; margin-right: auto; }
    .md\:m-auto { margin: auto; }
    .md\:px-gutter { padding-left: var(--gutter); padding-right: var(--gutter); }
    .md\:mx-gutter { margin-left: var(--gutter); margin-right: var(--gutter); }
    .md\:text-sm { font-size: var(--text-sm); }
    .md\:text-base { font-size: var(--text-base); }
    .md\:text-lg { font-size: var(--text-lg); }
    .md\:text-xl { font-size: var(--text-xl); }
    .md\:text-2xl { font-size: var(--text-2xl); }
    .md\:font-regular { font-weight: 400; }
    .md\:font-medium { font-weight: 500; }
    .md\:font-semibold { font-weight: 600; }
    .md\:text-left { text-align: left; }
    .md\:text-center { text-align: center; }
    .md\:text-ink { color: var(--ink); }
    .md\:text-soft { color: var(--soft); }
    .md\:text-accent { color: var(--accent); }
    .md\:text-on-accent { color: var(--on-accent); }
    .md\:bg-base { background-color: var(--bg); }
    .md\:bg-tint { background-color: var(--tint); }
    .md\:bg-ink { background-color: var(--ink); }
    .md\:bg-accent { background-color: var(--accent); }
    .md\:block { display: block; }
    .md\:inline-block { display: inline-block; }
    .md\:flex { display: flex; }
    .md\:inline-flex { display: inline-flex; }
    .md\:grid { display: grid; }
    .md\:hidden { display: none; }
    .md\:flex-col { flex-direction: column; }
    .md\:flex-row { flex-direction: row; }
    .md\:flex-wrap { flex-wrap: wrap; }
    .md\:flex-1 { flex: 1 1 0%; }
    .md\:relative { position: relative; }
    .md\:z-1 { z-index: 1; }
    .md\:list-none { list-style: none; padding-left: 0; }
    .md\:max-w-prose { max-width: 26em; }
    .md\:items-start { align-items: flex-start; }
    .md\:items-center { align-items: center; }
    .md\:items-end { align-items: flex-end; }
    .md\:justify-start { justify-content: flex-start; }
    .md\:justify-center { justify-content: center; }
    .md\:justify-between { justify-content: space-between; }
    .md\:justify-end { justify-content: flex-end; }
    .md\:w-full { width: 100%; }
    .md\:grid-12 { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--grid-gap); }
    .md\:col-span-1 { grid-column: span 1 / span 1; }
    .md\:col-span-2 { grid-column: span 2 / span 2; }
    .md\:col-span-3 { grid-column: span 3 / span 3; }
    .md\:col-span-4 { grid-column: span 4 / span 4; }
    .md\:col-span-5 { grid-column: span 5 / span 5; }
    .md\:col-span-6 { grid-column: span 6 / span 6; }
    .md\:col-span-7 { grid-column: span 7 / span 7; }
    .md\:col-span-8 { grid-column: span 8 / span 8; }
    .md\:col-span-9 { grid-column: span 9 / span 9; }
    .md\:col-span-10 { grid-column: span 10 / span 10; }
    .md\:col-span-11 { grid-column: span 11 / span 11; }
    .md\:col-span-12 { grid-column: span 12 / span 12; }
    .md\:col-start-1 { grid-column-start: 1; }
    .md\:col-start-2 { grid-column-start: 2; }
    .md\:col-start-3 { grid-column-start: 3; }
    .md\:col-start-4 { grid-column-start: 4; }
    .md\:col-start-5 { grid-column-start: 5; }
    .md\:col-start-6 { grid-column-start: 6; }
    .md\:col-start-7 { grid-column-start: 7; }
    .md\:col-start-8 { grid-column-start: 8; }
    .md\:col-start-9 { grid-column-start: 9; }
    .md\:col-start-10 { grid-column-start: 10; }
    .md\:col-start-11 { grid-column-start: 11; }
    .md\:col-start-12 { grid-column-start: 12; }
    .md\:pt-section { padding-top: var(--section); }
    .md\:pb-section { padding-bottom: var(--section); }
    .md\:py-section { padding-top: var(--section); padding-bottom: var(--section); }
  }
  @media (min-width: 992px) {
    .lg\:m-0 { margin: var(--space-0); }
    .lg\:m-1 { margin: var(--space-1); }
    .lg\:m-2 { margin: var(--space-2); }
    .lg\:m-3 { margin: var(--space-3); }
    .lg\:m-4 { margin: var(--space-4); }
    .lg\:m-5 { margin: var(--space-5); }
    .lg\:m-6 { margin: var(--space-6); }
    .lg\:m-8 { margin: var(--space-8); }
    .lg\:m-10 { margin: var(--space-10); }
    .lg\:m-12 { margin: var(--space-12); }
    .lg\:m-16 { margin: var(--space-16); }
    .lg\:m-20 { margin: var(--space-20); }
    .lg\:m-24 { margin: var(--space-24); }
    .lg\:m-30 { margin: var(--space-30); }
    .lg\:mt-0 { margin-top: var(--space-0); }
    .lg\:mt-1 { margin-top: var(--space-1); }
    .lg\:mt-2 { margin-top: var(--space-2); }
    .lg\:mt-3 { margin-top: var(--space-3); }
    .lg\:mt-4 { margin-top: var(--space-4); }
    .lg\:mt-5 { margin-top: var(--space-5); }
    .lg\:mt-6 { margin-top: var(--space-6); }
    .lg\:mt-8 { margin-top: var(--space-8); }
    .lg\:mt-10 { margin-top: var(--space-10); }
    .lg\:mt-12 { margin-top: var(--space-12); }
    .lg\:mt-16 { margin-top: var(--space-16); }
    .lg\:mt-20 { margin-top: var(--space-20); }
    .lg\:mt-24 { margin-top: var(--space-24); }
    .lg\:mt-30 { margin-top: var(--space-30); }
    .lg\:mr-0 { margin-right: var(--space-0); }
    .lg\:mr-1 { margin-right: var(--space-1); }
    .lg\:mr-2 { margin-right: var(--space-2); }
    .lg\:mr-3 { margin-right: var(--space-3); }
    .lg\:mr-4 { margin-right: var(--space-4); }
    .lg\:mr-5 { margin-right: var(--space-5); }
    .lg\:mr-6 { margin-right: var(--space-6); }
    .lg\:mr-8 { margin-right: var(--space-8); }
    .lg\:mr-10 { margin-right: var(--space-10); }
    .lg\:mr-12 { margin-right: var(--space-12); }
    .lg\:mr-16 { margin-right: var(--space-16); }
    .lg\:mr-20 { margin-right: var(--space-20); }
    .lg\:mr-24 { margin-right: var(--space-24); }
    .lg\:mr-30 { margin-right: var(--space-30); }
    .lg\:mb-0 { margin-bottom: var(--space-0); }
    .lg\:mb-1 { margin-bottom: var(--space-1); }
    .lg\:mb-2 { margin-bottom: var(--space-2); }
    .lg\:mb-3 { margin-bottom: var(--space-3); }
    .lg\:mb-4 { margin-bottom: var(--space-4); }
    .lg\:mb-5 { margin-bottom: var(--space-5); }
    .lg\:mb-6 { margin-bottom: var(--space-6); }
    .lg\:mb-8 { margin-bottom: var(--space-8); }
    .lg\:mb-10 { margin-bottom: var(--space-10); }
    .lg\:mb-12 { margin-bottom: var(--space-12); }
    .lg\:mb-16 { margin-bottom: var(--space-16); }
    .lg\:mb-20 { margin-bottom: var(--space-20); }
    .lg\:mb-24 { margin-bottom: var(--space-24); }
    .lg\:mb-30 { margin-bottom: var(--space-30); }
    .lg\:ml-0 { margin-left: var(--space-0); }
    .lg\:ml-1 { margin-left: var(--space-1); }
    .lg\:ml-2 { margin-left: var(--space-2); }
    .lg\:ml-3 { margin-left: var(--space-3); }
    .lg\:ml-4 { margin-left: var(--space-4); }
    .lg\:ml-5 { margin-left: var(--space-5); }
    .lg\:ml-6 { margin-left: var(--space-6); }
    .lg\:ml-8 { margin-left: var(--space-8); }
    .lg\:ml-10 { margin-left: var(--space-10); }
    .lg\:ml-12 { margin-left: var(--space-12); }
    .lg\:ml-16 { margin-left: var(--space-16); }
    .lg\:ml-20 { margin-left: var(--space-20); }
    .lg\:ml-24 { margin-left: var(--space-24); }
    .lg\:ml-30 { margin-left: var(--space-30); }
    .lg\:mx-0 { margin-left: var(--space-0); margin-right: var(--space-0); }
    .lg\:mx-1 { margin-left: var(--space-1); margin-right: var(--space-1); }
    .lg\:mx-2 { margin-left: var(--space-2); margin-right: var(--space-2); }
    .lg\:mx-3 { margin-left: var(--space-3); margin-right: var(--space-3); }
    .lg\:mx-4 { margin-left: var(--space-4); margin-right: var(--space-4); }
    .lg\:mx-5 { margin-left: var(--space-5); margin-right: var(--space-5); }
    .lg\:mx-6 { margin-left: var(--space-6); margin-right: var(--space-6); }
    .lg\:mx-8 { margin-left: var(--space-8); margin-right: var(--space-8); }
    .lg\:mx-10 { margin-left: var(--space-10); margin-right: var(--space-10); }
    .lg\:mx-12 { margin-left: var(--space-12); margin-right: var(--space-12); }
    .lg\:mx-16 { margin-left: var(--space-16); margin-right: var(--space-16); }
    .lg\:mx-20 { margin-left: var(--space-20); margin-right: var(--space-20); }
    .lg\:mx-24 { margin-left: var(--space-24); margin-right: var(--space-24); }
    .lg\:mx-30 { margin-left: var(--space-30); margin-right: var(--space-30); }
    .lg\:my-0 { margin-top: var(--space-0); margin-bottom: var(--space-0); }
    .lg\:my-1 { margin-top: var(--space-1); margin-bottom: var(--space-1); }
    .lg\:my-2 { margin-top: var(--space-2); margin-bottom: var(--space-2); }
    .lg\:my-3 { margin-top: var(--space-3); margin-bottom: var(--space-3); }
    .lg\:my-4 { margin-top: var(--space-4); margin-bottom: var(--space-4); }
    .lg\:my-5 { margin-top: var(--space-5); margin-bottom: var(--space-5); }
    .lg\:my-6 { margin-top: var(--space-6); margin-bottom: var(--space-6); }
    .lg\:my-8 { margin-top: var(--space-8); margin-bottom: var(--space-8); }
    .lg\:my-10 { margin-top: var(--space-10); margin-bottom: var(--space-10); }
    .lg\:my-12 { margin-top: var(--space-12); margin-bottom: var(--space-12); }
    .lg\:my-16 { margin-top: var(--space-16); margin-bottom: var(--space-16); }
    .lg\:my-20 { margin-top: var(--space-20); margin-bottom: var(--space-20); }
    .lg\:my-24 { margin-top: var(--space-24); margin-bottom: var(--space-24); }
    .lg\:my-30 { margin-top: var(--space-30); margin-bottom: var(--space-30); }
    .lg\:p-0 { padding: var(--space-0); }
    .lg\:p-1 { padding: var(--space-1); }
    .lg\:p-2 { padding: var(--space-2); }
    .lg\:p-3 { padding: var(--space-3); }
    .lg\:p-4 { padding: var(--space-4); }
    .lg\:p-5 { padding: var(--space-5); }
    .lg\:p-6 { padding: var(--space-6); }
    .lg\:p-8 { padding: var(--space-8); }
    .lg\:p-10 { padding: var(--space-10); }
    .lg\:p-12 { padding: var(--space-12); }
    .lg\:p-16 { padding: var(--space-16); }
    .lg\:p-20 { padding: var(--space-20); }
    .lg\:p-24 { padding: var(--space-24); }
    .lg\:p-30 { padding: var(--space-30); }
    .lg\:pt-0 { padding-top: var(--space-0); }
    .lg\:pt-1 { padding-top: var(--space-1); }
    .lg\:pt-2 { padding-top: var(--space-2); }
    .lg\:pt-3 { padding-top: var(--space-3); }
    .lg\:pt-4 { padding-top: var(--space-4); }
    .lg\:pt-5 { padding-top: var(--space-5); }
    .lg\:pt-6 { padding-top: var(--space-6); }
    .lg\:pt-8 { padding-top: var(--space-8); }
    .lg\:pt-10 { padding-top: var(--space-10); }
    .lg\:pt-12 { padding-top: var(--space-12); }
    .lg\:pt-16 { padding-top: var(--space-16); }
    .lg\:pt-20 { padding-top: var(--space-20); }
    .lg\:pt-24 { padding-top: var(--space-24); }
    .lg\:pt-30 { padding-top: var(--space-30); }
    .lg\:pr-0 { padding-right: var(--space-0); }
    .lg\:pr-1 { padding-right: var(--space-1); }
    .lg\:pr-2 { padding-right: var(--space-2); }
    .lg\:pr-3 { padding-right: var(--space-3); }
    .lg\:pr-4 { padding-right: var(--space-4); }
    .lg\:pr-5 { padding-right: var(--space-5); }
    .lg\:pr-6 { padding-right: var(--space-6); }
    .lg\:pr-8 { padding-right: var(--space-8); }
    .lg\:pr-10 { padding-right: var(--space-10); }
    .lg\:pr-12 { padding-right: var(--space-12); }
    .lg\:pr-16 { padding-right: var(--space-16); }
    .lg\:pr-20 { padding-right: var(--space-20); }
    .lg\:pr-24 { padding-right: var(--space-24); }
    .lg\:pr-30 { padding-right: var(--space-30); }
    .lg\:pb-0 { padding-bottom: var(--space-0); }
    .lg\:pb-1 { padding-bottom: var(--space-1); }
    .lg\:pb-2 { padding-bottom: var(--space-2); }
    .lg\:pb-3 { padding-bottom: var(--space-3); }
    .lg\:pb-4 { padding-bottom: var(--space-4); }
    .lg\:pb-5 { padding-bottom: var(--space-5); }
    .lg\:pb-6 { padding-bottom: var(--space-6); }
    .lg\:pb-8 { padding-bottom: var(--space-8); }
    .lg\:pb-10 { padding-bottom: var(--space-10); }
    .lg\:pb-12 { padding-bottom: var(--space-12); }
    .lg\:pb-16 { padding-bottom: var(--space-16); }
    .lg\:pb-20 { padding-bottom: var(--space-20); }
    .lg\:pb-24 { padding-bottom: var(--space-24); }
    .lg\:pb-30 { padding-bottom: var(--space-30); }
    .lg\:pl-0 { padding-left: var(--space-0); }
    .lg\:pl-1 { padding-left: var(--space-1); }
    .lg\:pl-2 { padding-left: var(--space-2); }
    .lg\:pl-3 { padding-left: var(--space-3); }
    .lg\:pl-4 { padding-left: var(--space-4); }
    .lg\:pl-5 { padding-left: var(--space-5); }
    .lg\:pl-6 { padding-left: var(--space-6); }
    .lg\:pl-8 { padding-left: var(--space-8); }
    .lg\:pl-10 { padding-left: var(--space-10); }
    .lg\:pl-12 { padding-left: var(--space-12); }
    .lg\:pl-16 { padding-left: var(--space-16); }
    .lg\:pl-20 { padding-left: var(--space-20); }
    .lg\:pl-24 { padding-left: var(--space-24); }
    .lg\:pl-30 { padding-left: var(--space-30); }
    .lg\:px-0 { padding-left: var(--space-0); padding-right: var(--space-0); }
    .lg\:px-1 { padding-left: var(--space-1); padding-right: var(--space-1); }
    .lg\:px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }
    .lg\:px-3 { padding-left: var(--space-3); padding-right: var(--space-3); }
    .lg\:px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
    .lg\:px-5 { padding-left: var(--space-5); padding-right: var(--space-5); }
    .lg\:px-6 { padding-left: var(--space-6); padding-right: var(--space-6); }
    .lg\:px-8 { padding-left: var(--space-8); padding-right: var(--space-8); }
    .lg\:px-10 { padding-left: var(--space-10); padding-right: var(--space-10); }
    .lg\:px-12 { padding-left: var(--space-12); padding-right: var(--space-12); }
    .lg\:px-16 { padding-left: var(--space-16); padding-right: var(--space-16); }
    .lg\:px-20 { padding-left: var(--space-20); padding-right: var(--space-20); }
    .lg\:px-24 { padding-left: var(--space-24); padding-right: var(--space-24); }
    .lg\:px-30 { padding-left: var(--space-30); padding-right: var(--space-30); }
    .lg\:py-0 { padding-top: var(--space-0); padding-bottom: var(--space-0); }
    .lg\:py-1 { padding-top: var(--space-1); padding-bottom: var(--space-1); }
    .lg\:py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }
    .lg\:py-3 { padding-top: var(--space-3); padding-bottom: var(--space-3); }
    .lg\:py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
    .lg\:py-5 { padding-top: var(--space-5); padding-bottom: var(--space-5); }
    .lg\:py-6 { padding-top: var(--space-6); padding-bottom: var(--space-6); }
    .lg\:py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); }
    .lg\:py-10 { padding-top: var(--space-10); padding-bottom: var(--space-10); }
    .lg\:py-12 { padding-top: var(--space-12); padding-bottom: var(--space-12); }
    .lg\:py-16 { padding-top: var(--space-16); padding-bottom: var(--space-16); }
    .lg\:py-20 { padding-top: var(--space-20); padding-bottom: var(--space-20); }
    .lg\:py-24 { padding-top: var(--space-24); padding-bottom: var(--space-24); }
    .lg\:py-30 { padding-top: var(--space-30); padding-bottom: var(--space-30); }
    .lg\:gap-0 { gap: var(--space-0); }
    .lg\:gap-1 { gap: var(--space-1); }
    .lg\:gap-2 { gap: var(--space-2); }
    .lg\:gap-3 { gap: var(--space-3); }
    .lg\:gap-4 { gap: var(--space-4); }
    .lg\:gap-5 { gap: var(--space-5); }
    .lg\:gap-6 { gap: var(--space-6); }
    .lg\:gap-8 { gap: var(--space-8); }
    .lg\:gap-10 { gap: var(--space-10); }
    .lg\:gap-12 { gap: var(--space-12); }
    .lg\:gap-16 { gap: var(--space-16); }
    .lg\:gap-20 { gap: var(--space-20); }
    .lg\:gap-24 { gap: var(--space-24); }
    .lg\:gap-30 { gap: var(--space-30); }
    .lg\:mx-auto { margin-left: auto; margin-right: auto; }
    .lg\:m-auto { margin: auto; }
    .lg\:px-gutter { padding-left: var(--gutter); padding-right: var(--gutter); }
    .lg\:mx-gutter { margin-left: var(--gutter); margin-right: var(--gutter); }
    .lg\:text-sm { font-size: var(--text-sm); }
    .lg\:text-base { font-size: var(--text-base); }
    .lg\:text-lg { font-size: var(--text-lg); }
    .lg\:text-xl { font-size: var(--text-xl); }
    .lg\:text-2xl { font-size: var(--text-2xl); }
    .lg\:font-regular { font-weight: 400; }
    .lg\:font-medium { font-weight: 500; }
    .lg\:font-semibold { font-weight: 600; }
    .lg\:text-left { text-align: left; }
    .lg\:text-center { text-align: center; }
    .lg\:text-ink { color: var(--ink); }
    .lg\:text-soft { color: var(--soft); }
    .lg\:text-accent { color: var(--accent); }
    .lg\:text-on-accent { color: var(--on-accent); }
    .lg\:bg-base { background-color: var(--bg); }
    .lg\:bg-tint { background-color: var(--tint); }
    .lg\:bg-ink { background-color: var(--ink); }
    .lg\:bg-accent { background-color: var(--accent); }
    .lg\:block { display: block; }
    .lg\:inline-block { display: inline-block; }
    .lg\:flex { display: flex; }
    .lg\:inline-flex { display: inline-flex; }
    .lg\:grid { display: grid; }
    .lg\:hidden { display: none; }
    .lg\:flex-col { flex-direction: column; }
    .lg\:flex-row { flex-direction: row; }
    .lg\:flex-wrap { flex-wrap: wrap; }
    .lg\:flex-1 { flex: 1 1 0%; }
    .lg\:relative { position: relative; }
    .lg\:z-1 { z-index: 1; }
    .lg\:list-none { list-style: none; padding-left: 0; }
    .lg\:max-w-prose { max-width: 26em; }
    .lg\:items-start { align-items: flex-start; }
    .lg\:items-center { align-items: center; }
    .lg\:items-end { align-items: flex-end; }
    .lg\:justify-start { justify-content: flex-start; }
    .lg\:justify-center { justify-content: center; }
    .lg\:justify-between { justify-content: space-between; }
    .lg\:justify-end { justify-content: flex-end; }
    .lg\:w-full { width: 100%; }
    .lg\:grid-12 { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--grid-gap); }
    .lg\:col-span-1 { grid-column: span 1 / span 1; }
    .lg\:col-span-2 { grid-column: span 2 / span 2; }
    .lg\:col-span-3 { grid-column: span 3 / span 3; }
    .lg\:col-span-4 { grid-column: span 4 / span 4; }
    .lg\:col-span-5 { grid-column: span 5 / span 5; }
    .lg\:col-span-6 { grid-column: span 6 / span 6; }
    .lg\:col-span-7 { grid-column: span 7 / span 7; }
    .lg\:col-span-8 { grid-column: span 8 / span 8; }
    .lg\:col-span-9 { grid-column: span 9 / span 9; }
    .lg\:col-span-10 { grid-column: span 10 / span 10; }
    .lg\:col-span-11 { grid-column: span 11 / span 11; }
    .lg\:col-span-12 { grid-column: span 12 / span 12; }
    .lg\:col-start-1 { grid-column-start: 1; }
    .lg\:col-start-2 { grid-column-start: 2; }
    .lg\:col-start-3 { grid-column-start: 3; }
    .lg\:col-start-4 { grid-column-start: 4; }
    .lg\:col-start-5 { grid-column-start: 5; }
    .lg\:col-start-6 { grid-column-start: 6; }
    .lg\:col-start-7 { grid-column-start: 7; }
    .lg\:col-start-8 { grid-column-start: 8; }
    .lg\:col-start-9 { grid-column-start: 9; }
    .lg\:col-start-10 { grid-column-start: 10; }
    .lg\:col-start-11 { grid-column-start: 11; }
    .lg\:col-start-12 { grid-column-start: 12; }
    .lg\:pt-section { padding-top: var(--section); }
    .lg\:pb-section { padding-bottom: var(--section); }
    .lg\:py-section { padding-top: var(--section); padding-bottom: var(--section); }
  }
  @media (min-width: 1200px) {
    .xl\:m-0 { margin: var(--space-0); }
    .xl\:m-1 { margin: var(--space-1); }
    .xl\:m-2 { margin: var(--space-2); }
    .xl\:m-3 { margin: var(--space-3); }
    .xl\:m-4 { margin: var(--space-4); }
    .xl\:m-5 { margin: var(--space-5); }
    .xl\:m-6 { margin: var(--space-6); }
    .xl\:m-8 { margin: var(--space-8); }
    .xl\:m-10 { margin: var(--space-10); }
    .xl\:m-12 { margin: var(--space-12); }
    .xl\:m-16 { margin: var(--space-16); }
    .xl\:m-20 { margin: var(--space-20); }
    .xl\:m-24 { margin: var(--space-24); }
    .xl\:m-30 { margin: var(--space-30); }
    .xl\:mt-0 { margin-top: var(--space-0); }
    .xl\:mt-1 { margin-top: var(--space-1); }
    .xl\:mt-2 { margin-top: var(--space-2); }
    .xl\:mt-3 { margin-top: var(--space-3); }
    .xl\:mt-4 { margin-top: var(--space-4); }
    .xl\:mt-5 { margin-top: var(--space-5); }
    .xl\:mt-6 { margin-top: var(--space-6); }
    .xl\:mt-8 { margin-top: var(--space-8); }
    .xl\:mt-10 { margin-top: var(--space-10); }
    .xl\:mt-12 { margin-top: var(--space-12); }
    .xl\:mt-16 { margin-top: var(--space-16); }
    .xl\:mt-20 { margin-top: var(--space-20); }
    .xl\:mt-24 { margin-top: var(--space-24); }
    .xl\:mt-30 { margin-top: var(--space-30); }
    .xl\:mr-0 { margin-right: var(--space-0); }
    .xl\:mr-1 { margin-right: var(--space-1); }
    .xl\:mr-2 { margin-right: var(--space-2); }
    .xl\:mr-3 { margin-right: var(--space-3); }
    .xl\:mr-4 { margin-right: var(--space-4); }
    .xl\:mr-5 { margin-right: var(--space-5); }
    .xl\:mr-6 { margin-right: var(--space-6); }
    .xl\:mr-8 { margin-right: var(--space-8); }
    .xl\:mr-10 { margin-right: var(--space-10); }
    .xl\:mr-12 { margin-right: var(--space-12); }
    .xl\:mr-16 { margin-right: var(--space-16); }
    .xl\:mr-20 { margin-right: var(--space-20); }
    .xl\:mr-24 { margin-right: var(--space-24); }
    .xl\:mr-30 { margin-right: var(--space-30); }
    .xl\:mb-0 { margin-bottom: var(--space-0); }
    .xl\:mb-1 { margin-bottom: var(--space-1); }
    .xl\:mb-2 { margin-bottom: var(--space-2); }
    .xl\:mb-3 { margin-bottom: var(--space-3); }
    .xl\:mb-4 { margin-bottom: var(--space-4); }
    .xl\:mb-5 { margin-bottom: var(--space-5); }
    .xl\:mb-6 { margin-bottom: var(--space-6); }
    .xl\:mb-8 { margin-bottom: var(--space-8); }
    .xl\:mb-10 { margin-bottom: var(--space-10); }
    .xl\:mb-12 { margin-bottom: var(--space-12); }
    .xl\:mb-16 { margin-bottom: var(--space-16); }
    .xl\:mb-20 { margin-bottom: var(--space-20); }
    .xl\:mb-24 { margin-bottom: var(--space-24); }
    .xl\:mb-30 { margin-bottom: var(--space-30); }
    .xl\:ml-0 { margin-left: var(--space-0); }
    .xl\:ml-1 { margin-left: var(--space-1); }
    .xl\:ml-2 { margin-left: var(--space-2); }
    .xl\:ml-3 { margin-left: var(--space-3); }
    .xl\:ml-4 { margin-left: var(--space-4); }
    .xl\:ml-5 { margin-left: var(--space-5); }
    .xl\:ml-6 { margin-left: var(--space-6); }
    .xl\:ml-8 { margin-left: var(--space-8); }
    .xl\:ml-10 { margin-left: var(--space-10); }
    .xl\:ml-12 { margin-left: var(--space-12); }
    .xl\:ml-16 { margin-left: var(--space-16); }
    .xl\:ml-20 { margin-left: var(--space-20); }
    .xl\:ml-24 { margin-left: var(--space-24); }
    .xl\:ml-30 { margin-left: var(--space-30); }
    .xl\:mx-0 { margin-left: var(--space-0); margin-right: var(--space-0); }
    .xl\:mx-1 { margin-left: var(--space-1); margin-right: var(--space-1); }
    .xl\:mx-2 { margin-left: var(--space-2); margin-right: var(--space-2); }
    .xl\:mx-3 { margin-left: var(--space-3); margin-right: var(--space-3); }
    .xl\:mx-4 { margin-left: var(--space-4); margin-right: var(--space-4); }
    .xl\:mx-5 { margin-left: var(--space-5); margin-right: var(--space-5); }
    .xl\:mx-6 { margin-left: var(--space-6); margin-right: var(--space-6); }
    .xl\:mx-8 { margin-left: var(--space-8); margin-right: var(--space-8); }
    .xl\:mx-10 { margin-left: var(--space-10); margin-right: var(--space-10); }
    .xl\:mx-12 { margin-left: var(--space-12); margin-right: var(--space-12); }
    .xl\:mx-16 { margin-left: var(--space-16); margin-right: var(--space-16); }
    .xl\:mx-20 { margin-left: var(--space-20); margin-right: var(--space-20); }
    .xl\:mx-24 { margin-left: var(--space-24); margin-right: var(--space-24); }
    .xl\:mx-30 { margin-left: var(--space-30); margin-right: var(--space-30); }
    .xl\:my-0 { margin-top: var(--space-0); margin-bottom: var(--space-0); }
    .xl\:my-1 { margin-top: var(--space-1); margin-bottom: var(--space-1); }
    .xl\:my-2 { margin-top: var(--space-2); margin-bottom: var(--space-2); }
    .xl\:my-3 { margin-top: var(--space-3); margin-bottom: var(--space-3); }
    .xl\:my-4 { margin-top: var(--space-4); margin-bottom: var(--space-4); }
    .xl\:my-5 { margin-top: var(--space-5); margin-bottom: var(--space-5); }
    .xl\:my-6 { margin-top: var(--space-6); margin-bottom: var(--space-6); }
    .xl\:my-8 { margin-top: var(--space-8); margin-bottom: var(--space-8); }
    .xl\:my-10 { margin-top: var(--space-10); margin-bottom: var(--space-10); }
    .xl\:my-12 { margin-top: var(--space-12); margin-bottom: var(--space-12); }
    .xl\:my-16 { margin-top: var(--space-16); margin-bottom: var(--space-16); }
    .xl\:my-20 { margin-top: var(--space-20); margin-bottom: var(--space-20); }
    .xl\:my-24 { margin-top: var(--space-24); margin-bottom: var(--space-24); }
    .xl\:my-30 { margin-top: var(--space-30); margin-bottom: var(--space-30); }
    .xl\:p-0 { padding: var(--space-0); }
    .xl\:p-1 { padding: var(--space-1); }
    .xl\:p-2 { padding: var(--space-2); }
    .xl\:p-3 { padding: var(--space-3); }
    .xl\:p-4 { padding: var(--space-4); }
    .xl\:p-5 { padding: var(--space-5); }
    .xl\:p-6 { padding: var(--space-6); }
    .xl\:p-8 { padding: var(--space-8); }
    .xl\:p-10 { padding: var(--space-10); }
    .xl\:p-12 { padding: var(--space-12); }
    .xl\:p-16 { padding: var(--space-16); }
    .xl\:p-20 { padding: var(--space-20); }
    .xl\:p-24 { padding: var(--space-24); }
    .xl\:p-30 { padding: var(--space-30); }
    .xl\:pt-0 { padding-top: var(--space-0); }
    .xl\:pt-1 { padding-top: var(--space-1); }
    .xl\:pt-2 { padding-top: var(--space-2); }
    .xl\:pt-3 { padding-top: var(--space-3); }
    .xl\:pt-4 { padding-top: var(--space-4); }
    .xl\:pt-5 { padding-top: var(--space-5); }
    .xl\:pt-6 { padding-top: var(--space-6); }
    .xl\:pt-8 { padding-top: var(--space-8); }
    .xl\:pt-10 { padding-top: var(--space-10); }
    .xl\:pt-12 { padding-top: var(--space-12); }
    .xl\:pt-16 { padding-top: var(--space-16); }
    .xl\:pt-20 { padding-top: var(--space-20); }
    .xl\:pt-24 { padding-top: var(--space-24); }
    .xl\:pt-30 { padding-top: var(--space-30); }
    .xl\:pr-0 { padding-right: var(--space-0); }
    .xl\:pr-1 { padding-right: var(--space-1); }
    .xl\:pr-2 { padding-right: var(--space-2); }
    .xl\:pr-3 { padding-right: var(--space-3); }
    .xl\:pr-4 { padding-right: var(--space-4); }
    .xl\:pr-5 { padding-right: var(--space-5); }
    .xl\:pr-6 { padding-right: var(--space-6); }
    .xl\:pr-8 { padding-right: var(--space-8); }
    .xl\:pr-10 { padding-right: var(--space-10); }
    .xl\:pr-12 { padding-right: var(--space-12); }
    .xl\:pr-16 { padding-right: var(--space-16); }
    .xl\:pr-20 { padding-right: var(--space-20); }
    .xl\:pr-24 { padding-right: var(--space-24); }
    .xl\:pr-30 { padding-right: var(--space-30); }
    .xl\:pb-0 { padding-bottom: var(--space-0); }
    .xl\:pb-1 { padding-bottom: var(--space-1); }
    .xl\:pb-2 { padding-bottom: var(--space-2); }
    .xl\:pb-3 { padding-bottom: var(--space-3); }
    .xl\:pb-4 { padding-bottom: var(--space-4); }
    .xl\:pb-5 { padding-bottom: var(--space-5); }
    .xl\:pb-6 { padding-bottom: var(--space-6); }
    .xl\:pb-8 { padding-bottom: var(--space-8); }
    .xl\:pb-10 { padding-bottom: var(--space-10); }
    .xl\:pb-12 { padding-bottom: var(--space-12); }
    .xl\:pb-16 { padding-bottom: var(--space-16); }
    .xl\:pb-20 { padding-bottom: var(--space-20); }
    .xl\:pb-24 { padding-bottom: var(--space-24); }
    .xl\:pb-30 { padding-bottom: var(--space-30); }
    .xl\:pl-0 { padding-left: var(--space-0); }
    .xl\:pl-1 { padding-left: var(--space-1); }
    .xl\:pl-2 { padding-left: var(--space-2); }
    .xl\:pl-3 { padding-left: var(--space-3); }
    .xl\:pl-4 { padding-left: var(--space-4); }
    .xl\:pl-5 { padding-left: var(--space-5); }
    .xl\:pl-6 { padding-left: var(--space-6); }
    .xl\:pl-8 { padding-left: var(--space-8); }
    .xl\:pl-10 { padding-left: var(--space-10); }
    .xl\:pl-12 { padding-left: var(--space-12); }
    .xl\:pl-16 { padding-left: var(--space-16); }
    .xl\:pl-20 { padding-left: var(--space-20); }
    .xl\:pl-24 { padding-left: var(--space-24); }
    .xl\:pl-30 { padding-left: var(--space-30); }
    .xl\:px-0 { padding-left: var(--space-0); padding-right: var(--space-0); }
    .xl\:px-1 { padding-left: var(--space-1); padding-right: var(--space-1); }
    .xl\:px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }
    .xl\:px-3 { padding-left: var(--space-3); padding-right: var(--space-3); }
    .xl\:px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
    .xl\:px-5 { padding-left: var(--space-5); padding-right: var(--space-5); }
    .xl\:px-6 { padding-left: var(--space-6); padding-right: var(--space-6); }
    .xl\:px-8 { padding-left: var(--space-8); padding-right: var(--space-8); }
    .xl\:px-10 { padding-left: var(--space-10); padding-right: var(--space-10); }
    .xl\:px-12 { padding-left: var(--space-12); padding-right: var(--space-12); }
    .xl\:px-16 { padding-left: var(--space-16); padding-right: var(--space-16); }
    .xl\:px-20 { padding-left: var(--space-20); padding-right: var(--space-20); }
    .xl\:px-24 { padding-left: var(--space-24); padding-right: var(--space-24); }
    .xl\:px-30 { padding-left: var(--space-30); padding-right: var(--space-30); }
    .xl\:py-0 { padding-top: var(--space-0); padding-bottom: var(--space-0); }
    .xl\:py-1 { padding-top: var(--space-1); padding-bottom: var(--space-1); }
    .xl\:py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }
    .xl\:py-3 { padding-top: var(--space-3); padding-bottom: var(--space-3); }
    .xl\:py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
    .xl\:py-5 { padding-top: var(--space-5); padding-bottom: var(--space-5); }
    .xl\:py-6 { padding-top: var(--space-6); padding-bottom: var(--space-6); }
    .xl\:py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); }
    .xl\:py-10 { padding-top: var(--space-10); padding-bottom: var(--space-10); }
    .xl\:py-12 { padding-top: var(--space-12); padding-bottom: var(--space-12); }
    .xl\:py-16 { padding-top: var(--space-16); padding-bottom: var(--space-16); }
    .xl\:py-20 { padding-top: var(--space-20); padding-bottom: var(--space-20); }
    .xl\:py-24 { padding-top: var(--space-24); padding-bottom: var(--space-24); }
    .xl\:py-30 { padding-top: var(--space-30); padding-bottom: var(--space-30); }
    .xl\:gap-0 { gap: var(--space-0); }
    .xl\:gap-1 { gap: var(--space-1); }
    .xl\:gap-2 { gap: var(--space-2); }
    .xl\:gap-3 { gap: var(--space-3); }
    .xl\:gap-4 { gap: var(--space-4); }
    .xl\:gap-5 { gap: var(--space-5); }
    .xl\:gap-6 { gap: var(--space-6); }
    .xl\:gap-8 { gap: var(--space-8); }
    .xl\:gap-10 { gap: var(--space-10); }
    .xl\:gap-12 { gap: var(--space-12); }
    .xl\:gap-16 { gap: var(--space-16); }
    .xl\:gap-20 { gap: var(--space-20); }
    .xl\:gap-24 { gap: var(--space-24); }
    .xl\:gap-30 { gap: var(--space-30); }
    .xl\:mx-auto { margin-left: auto; margin-right: auto; }
    .xl\:m-auto { margin: auto; }
    .xl\:px-gutter { padding-left: var(--gutter); padding-right: var(--gutter); }
    .xl\:mx-gutter { margin-left: var(--gutter); margin-right: var(--gutter); }
    .xl\:text-sm { font-size: var(--text-sm); }
    .xl\:text-base { font-size: var(--text-base); }
    .xl\:text-lg { font-size: var(--text-lg); }
    .xl\:text-xl { font-size: var(--text-xl); }
    .xl\:text-2xl { font-size: var(--text-2xl); }
    .xl\:font-regular { font-weight: 400; }
    .xl\:font-medium { font-weight: 500; }
    .xl\:font-semibold { font-weight: 600; }
    .xl\:text-left { text-align: left; }
    .xl\:text-center { text-align: center; }
    .xl\:text-ink { color: var(--ink); }
    .xl\:text-soft { color: var(--soft); }
    .xl\:text-accent { color: var(--accent); }
    .xl\:text-on-accent { color: var(--on-accent); }
    .xl\:bg-base { background-color: var(--bg); }
    .xl\:bg-tint { background-color: var(--tint); }
    .xl\:bg-ink { background-color: var(--ink); }
    .xl\:bg-accent { background-color: var(--accent); }
    .xl\:block { display: block; }
    .xl\:inline-block { display: inline-block; }
    .xl\:flex { display: flex; }
    .xl\:inline-flex { display: inline-flex; }
    .xl\:grid { display: grid; }
    .xl\:hidden { display: none; }
    .xl\:flex-col { flex-direction: column; }
    .xl\:flex-row { flex-direction: row; }
    .xl\:flex-wrap { flex-wrap: wrap; }
    .xl\:flex-1 { flex: 1 1 0%; }
    .xl\:relative { position: relative; }
    .xl\:z-1 { z-index: 1; }
    .xl\:list-none { list-style: none; padding-left: 0; }
    .xl\:max-w-prose { max-width: 26em; }
    .xl\:items-start { align-items: flex-start; }
    .xl\:items-center { align-items: center; }
    .xl\:items-end { align-items: flex-end; }
    .xl\:justify-start { justify-content: flex-start; }
    .xl\:justify-center { justify-content: center; }
    .xl\:justify-between { justify-content: space-between; }
    .xl\:justify-end { justify-content: flex-end; }
    .xl\:w-full { width: 100%; }
    .xl\:grid-12 { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--grid-gap); }
    .xl\:col-span-1 { grid-column: span 1 / span 1; }
    .xl\:col-span-2 { grid-column: span 2 / span 2; }
    .xl\:col-span-3 { grid-column: span 3 / span 3; }
    .xl\:col-span-4 { grid-column: span 4 / span 4; }
    .xl\:col-span-5 { grid-column: span 5 / span 5; }
    .xl\:col-span-6 { grid-column: span 6 / span 6; }
    .xl\:col-span-7 { grid-column: span 7 / span 7; }
    .xl\:col-span-8 { grid-column: span 8 / span 8; }
    .xl\:col-span-9 { grid-column: span 9 / span 9; }
    .xl\:col-span-10 { grid-column: span 10 / span 10; }
    .xl\:col-span-11 { grid-column: span 11 / span 11; }
    .xl\:col-span-12 { grid-column: span 12 / span 12; }
    .xl\:col-start-1 { grid-column-start: 1; }
    .xl\:col-start-2 { grid-column-start: 2; }
    .xl\:col-start-3 { grid-column-start: 3; }
    .xl\:col-start-4 { grid-column-start: 4; }
    .xl\:col-start-5 { grid-column-start: 5; }
    .xl\:col-start-6 { grid-column-start: 6; }
    .xl\:col-start-7 { grid-column-start: 7; }
    .xl\:col-start-8 { grid-column-start: 8; }
    .xl\:col-start-9 { grid-column-start: 9; }
    .xl\:col-start-10 { grid-column-start: 10; }
    .xl\:col-start-11 { grid-column-start: 11; }
    .xl\:col-start-12 { grid-column-start: 12; }
    .xl\:pt-section { padding-top: var(--section); }
    .xl\:pb-section { padding-bottom: var(--section); }
    .xl\:py-section { padding-top: var(--section); padding-bottom: var(--section); }
  }
}
/* utilities:end */
