/* ==========================================================================
   Jessgo — "Paper Cut"
   Built on the SuperHi style system (refero.design style 90b8631c):
   its tokens, components and do/don't rules, applied to Jessica Gorlicky's
   real content and artwork.
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  /* ---- Colors ---- */
  --color-electric-iris:  #2727e6;
  --color-ink-black:      #111118;
  --color-paper-white:    #ffffff;
  --color-chalk-blue:     #f0f6ff;
  --color-frost-blue:     #e1edff;
  --color-carbon:         #000000;

  /* decorative shape fills — decoration ONLY, never text or borders */
  --color-marker-red:     #ff4141;
  --color-hi-yellow:      #ffda00;
  --color-powder-sky:     #91d8ec;
  --color-bubblegum-pink: #ffbac4;
  --color-jelly-green:    #16ab59;
  --color-sunbeam:        #ffe54d;

  /* Aurora — her accent ramp blended, used for the buttons. A deliberate
     departure from the reference system's flat-only rule. Labels on it stay
     ink: every stop is light, so white text would drop under 4.5:1.
     Order matters: red, yellow and green must never sit next to each other
     or the whole thing reads Rasta. Sky and pink keep them apart. */
  --aurora: linear-gradient(105deg,
    #ff4141 0%, #ffbac4 22%, #91d8ec 48%, #16ab59 74%, #ffda00 100%);

  /* ---- Type ---- */
  --font-haas-grot-disp: "Inter Tight", "Inter", system-ui, -apple-system, sans-serif;
  --font-haas-grot-text: "Inter", system-ui, -apple-system, sans-serif;
  --font-martian-mono:   "Martian Mono", "JetBrains Mono", ui-monospace, monospace;

  /* ---- Spacing (4px base) ---- */
  --spacing-4: 4px;   --spacing-8: 8px;   --spacing-12: 12px;
  --spacing-16: 16px; --spacing-20: 20px; --spacing-24: 24px;
  --spacing-28: 28px; --spacing-32: 32px; --spacing-40: 40px;
  --spacing-48: 48px;

  /* ---- Radius ---- */
  --radius-tags: 5000px;
  --radius-cards: 24px;
  --radius-small: 16px;
  --radius-inputs: 5000px;
  --radius-buttons: 48px;

  /* ---- Layout ---- */
  --page-max: 1200px;
  --section-gap: 80px;
  --card-pad: 24px;
  --element-gap: 16px;

  /* ---- Elevation: hard offset only, never blurred ---- */
  --shadow-cta:  0 4px 0 0 var(--color-ink-black);
  --shadow-dark: 0 4px 0 0 var(--color-electric-iris);
  --shadow-card: 0 2px 0 0 var(--color-ink-black);

  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);

  /* Jessica's signature, inlined so it works from file:// too —
     a mask fetched over file:// is CORS-blocked and renders nothing. */
  --mark-mask: url("data:image/png;base64,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");
}

/* The signature marks deliberately hang off both edges, and sections no
   longer clip them so they can cross boundaries without being sliced. That
   leaves the page itself to contain them sideways.

   `clip` rather than `hidden`: hidden would make these scroll containers,
   which kills the sticky header and lets iOS pan sideways anyway. `clip`
   creates no scroll container, so there is nothing to pan, and overflow-y
   stays visible so marks still bleed between sections. */
html, body { overflow-x: clip; max-width: 100%; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  background: var(--color-chalk-blue);
  color: var(--color-ink-black);
  font-family: var(--font-haas-grot-text);
  font-weight: 400;
  font-size: 20px; line-height: 1.4; letter-spacing: -0.2px;
  -webkit-font-smoothing: antialiased;
  /* horizontal containment lives in the html,body rule above — `hidden`
     here would win on cascade order and undo it */
}

img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: none; cursor: pointer; }
::selection { background: var(--color-electric-iris); color: #fff; }

:focus-visible {
  outline: 2px solid var(--color-electric-iris);
  outline-offset: 2px;
  border-radius: var(--radius-small);
}

.skip {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--color-ink-black); color: #fff;
  padding: 12px 24px; border-radius: var(--radius-buttons);
}
.skip:focus { left: 16px; top: 16px; }

/* ---- Type scale -------------------------------------------------------
   Weight stays 400 everywhere — hierarchy comes from size + tracking.
   ---------------------------------------------------------------------- */

.t-caption-mono {
  font-family: var(--font-martian-mono);
  font-size: 12px; line-height: 1.35; letter-spacing: -0.156px;
  text-transform: uppercase;
}
.t-body-sm    { font-size: 16px; line-height: 1.4;  letter-spacing: -0.32px; }
.t-body       { font-size: 20px; line-height: 1.4;  letter-spacing: -0.2px; }
.t-subheading { font-size: clamp(19px, 1.6vw, 22px); line-height: 1.35; letter-spacing: -0.176px; }
.t-heading-sm { font-size: clamp(21px, 2vw, 24px);   line-height: 1.25; letter-spacing: -0.168px; }

.t-heading-lg, h2 {
  font-family: var(--font-haas-grot-disp); font-weight: 400;
  font-size: clamp(30px, 4.6vw, 42px); line-height: 1.1; letter-spacing: -0.009em;
}
.t-display {
  font-family: var(--font-haas-grot-disp); font-weight: 400;
  font-size: clamp(34px, 5.4vw, 52px); line-height: 1.1; letter-spacing: -0.009em;
}
.t-display-lg {
  font-family: var(--font-haas-grot-disp); font-weight: 400;
  font-size: clamp(38px, 6.4vw, 62px); line-height: 1.05; letter-spacing: -0.009em;
}
.t-display-xl {
  font-family: var(--font-haas-grot-disp); font-weight: 400;
  font-size: clamp(40px, 7.4vw, 72px); line-height: 1; letter-spacing: -0.009em;
}
.t-mega {
  font-family: var(--font-haas-grot-disp); font-weight: 400;
  font-size: clamp(44px, 9vw, 92px); line-height: 1; letter-spacing: -0.03em;
}
h1, h2, h3, h4 { font-weight: 400; }
h3 { font-family: var(--font-haas-grot-text); }

.muted { opacity: 0.6; }
.measure { max-width: 62ch; }
.measure-sm { max-width: 46ch; }
.center { text-align: center; }

/* ---- Layout ----------------------------------------------------------- */
.rail { width: 100%; max-width: var(--page-max); margin-inline: auto; padding-inline: 24px; }
.section { padding-block: var(--section-gap); position: relative; }
@media (max-width: 700px) { .section { padding-block: 56px; } }
.section-tight { padding-block: 48px; }

.stack-8  > * + * { margin-top: 8px; }
.stack-16 > * + * { margin-top: 16px; }
.stack-24 > * + * { margin-top: 24px; }
.stack-32 > * + * { margin-top: 32px; }
.stack-40 > * + * { margin-top: 40px; }

.grid { display: grid; gap: var(--spacing-24); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
.grid-split { grid-template-columns: 1fr 1fr; gap: var(--spacing-48); align-items: center; }
@media (max-width: 1000px) { .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 860px)  { .grid-split { grid-template-columns: 1fr; gap: var(--spacing-32); } }
@media (max-width: 640px)  { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } }

/* Section header: left-aligned title, right-aligned "see all" */
.section-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--spacing-24); flex-wrap: wrap; margin-bottom: var(--spacing-40);
}

/* ---- Announcement ticker ---------------------------------------------- */
.ticker {
  background: var(--color-ink-black); color: var(--color-paper-white);
  height: 32px; display: flex; align-items: center;
  overflow: hidden; position: relative; white-space: nowrap;
}
.ticker-track {
  display: flex; align-items: center;
  animation: ticker 46s linear infinite; will-change: transform;
}
/* All-caps mono has no descenders, so geometric centring reads high.
   Center on the em box, then nudge a hair down to sit optically true. */
.ticker-track > * {
  display: flex; align-items: center;
  line-height: 1; padding-inline: 12px;
  transform: translateY(0.5px);
}
.ticker-heart { color: var(--color-marker-red); padding-inline: 6px; }
.ticker-heart svg { width: 11px; height: 11px; display: block; }
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .ticker-track { animation: none; } }

/* ---- Top navigation ---------------------------------------------------- */
.nav {
  position: sticky; top: 0; z-index: 100;
  background: var(--color-paper-white);
  border-bottom: 1px solid var(--color-frost-blue);
  min-height: 64px;
}
.nav-inner { display: flex; align-items: center; gap: var(--spacing-24); min-height: 64px; }
.nav-brand { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.nav-brand img { width: 32px; height: 32px; object-fit: contain; }
.nav-brand span {
  font-family: var(--font-haas-grot-disp); font-size: 22px; letter-spacing: -0.02em;
}
/* ---- Social buttons, pinned in the header --------------------------------
   Circular icon buttons that take the brand's colour on hover, with the
   label revealed underneath. Hard offset shadow instead of the reference's
   blurred one, so they sit in the same system as every other control.
   -------------------------------------------------------------------------- */
.nav-social { display: flex; align-items: center; gap: 8px; margin-left: 18px; }
.social {
  position: relative;
  width: 34px; height: 34px; border-radius: var(--radius-tags);
  display: grid; place-items: center; flex-shrink: 0;
  background: var(--color-frost-blue); color: var(--color-ink-black);
  transition: transform 180ms var(--ease), box-shadow 180ms var(--ease),
              background-color 180ms var(--ease), color 180ms var(--ease);
}
.social svg { width: 17px; height: 17px; display: block; fill: currentColor; }

.social-tip {
  position: absolute; top: calc(100% + 10px); left: 50%;
  transform: translate(-50%, -4px);
  background: var(--color-ink-black); color: var(--color-paper-white);
  padding: 5px 10px; border-radius: var(--radius-small);
  white-space: nowrap; pointer-events: none;
  opacity: 0; visibility: hidden;
  transition: opacity 160ms var(--ease), transform 160ms var(--ease), visibility 0s linear 160ms;
}
.social-tip::before {
  content: ""; position: absolute; top: -3px; left: 50%;
  width: 8px; height: 8px; background: var(--color-ink-black);
  transform: translateX(-50%) rotate(45deg);
}

@media (hover: hover) and (pointer: fine) {
  .social:hover {
    background: var(--brand, var(--color-electric-iris));
    color: var(--color-paper-white);
    transform: translateY(-2px);
    box-shadow: 0 3px 0 0 var(--color-ink-black);
  }
  .social:hover .social-tip,
  .social:focus-visible .social-tip {
    opacity: 1; visibility: visible;
    transform: translate(-50%, 0); transition-delay: 0s;
  }
}
.social:focus-visible .social-tip { opacity: 1; visibility: visible; transform: translate(-50%, 0); transition-delay: 0s; }
.social:active { transform: translateY(0); box-shadow: none; }

@media (max-width: 940px) { .nav-social { margin-left: 12px; } }
@media (max-width: 460px) { .nav-social { gap: 6px; margin-left: 8px; } .social { width: 30px; height: 30px; } .social svg { width: 15px; height: 15px; } }

.nav-links { display: flex; align-items: center; gap: var(--spacing-24); margin-left: auto; }
.nav-links a { font-size: 20px; letter-spacing: -0.2px; padding-block: 8px; }
.nav-links a:hover { text-decoration: underline; text-underline-offset: 4px; }
.nav-links a[aria-current="page"] { text-decoration: underline; text-underline-offset: 4px; }
.nav-cta { margin-left: var(--spacing-8); }
.nav-toggle { display: none; }

@media (max-width: 940px) {
  .nav-toggle {
    display: inline-flex; align-items: center; gap: 8px; margin-left: auto;
    border: 1px solid var(--color-frost-blue); border-radius: var(--radius-tags);
    padding: 8px 18px; font-size: 16px; letter-spacing: -0.32px;
  }
  .nav-links {
    position: absolute; left: 0; right: 0; top: 100%;
    background: var(--color-paper-white);
    border-bottom: 1px solid var(--color-frost-blue);
    flex-direction: column; align-items: stretch; gap: 0;
    padding: 8px 24px 24px; margin-left: 0;
    display: none;
  }
  .nav-links.open { display: flex; }
  .nav-links a { font-size: 22px; padding-block: 14px; border-bottom: 1px solid var(--color-frost-blue); }
  .nav-cta { margin: 16px 0 0; align-self: flex-start; width: auto; }
}

/* ---- Buttons ----------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  border-radius: var(--radius-buttons);
  padding: 12px 24px; font-size: 20px; letter-spacing: -0.01em; line-height: 1.25;
  transition: transform 180ms var(--ease), box-shadow 180ms var(--ease),
              color 180ms var(--ease);
  text-align: center;
  position: relative; overflow: hidden; isolation: isolate;
}
.btn:active { transform: translateY(3px); }

/* The primary button carries the aurora itself. Label stays ink, never
   white — every colour in her ramp is light, and ink clears 4.5:1 on all
   of them while white would fail on the yellow and the sky. */
.btn-primary {
  background-image: var(--aurora);
  background-size: 220% 100%;
  background-position: 0% 50%;
  color: var(--color-ink-black);
  box-shadow: var(--shadow-cta);
  transition: transform 180ms var(--ease), box-shadow 180ms var(--ease),
              background-position 700ms var(--ease);
}

/* The dark button stays ink at rest, and the aurora washes up on hover. */
.btn-dark {
  background: var(--color-carbon); color: var(--color-paper-white);
  box-shadow: 0 4px 0 0 var(--color-marker-red);
}
.btn-dark::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background-image: var(--aurora);
  background-size: 160% 100%;
  transform: translateY(101%);
  transition: transform 320ms var(--ease);
}

@media (hover: hover) and (pointer: fine) {
  .btn-primary:hover {
    transform: translateY(-3px);
    background-position: 100% 50%;
    box-shadow: 0 7px 0 0 var(--color-ink-black);
  }
  .btn-dark:hover {
    transform: translateY(-3px);
    color: var(--color-ink-black);
    box-shadow: 0 7px 0 0 var(--color-marker-red);
  }
  .btn-dark:hover::before { transform: translateY(0); }
}

.btn-primary:active { transform: translateY(1px); box-shadow: 0 2px 0 0 var(--color-ink-black); }
.btn-dark:active    { transform: translateY(1px); box-shadow: 0 2px 0 0 var(--color-marker-red); }

/* ---- Comic halftone ---------------------------------------------------------
   A Ben-Day dot screen laid over the fill, printed under the label so it
   textures the colour without touching legibility.
   ---------------------------------------------------------------------------- */
.btn-primary::after,
.btn-dark::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image: radial-gradient(circle at center,
                    rgba(17, 17, 24, 0.26) 1px, transparent 1.4px);
  background-size: 5px 5px;
  /* Clear the dots from behind the label. Ink on the aurora measures 11:1,
     so contrast was never the problem — dark dots competing with dark
     letterforms in the same space was. A gradient mask needs no fetch, so
     unlike a url() mask this still works from file://. */
  -webkit-mask-image: radial-gradient(ellipse 58% 120% at center,
                      transparent 0%, transparent 40%, #000 82%);
          mask-image: radial-gradient(ellipse 58% 120% at center,
                      transparent 0%, transparent 40%, #000 82%);
}
.btn-dark::after {
  background-image: radial-gradient(circle at center,
                    rgba(255, 255, 255, 0.20) 1px, transparent 1.4px);
}

/* ---- Click: an ink-dot burst out of the point you hit ----------------------- */
.pow {
  position: absolute; z-index: -1; pointer-events: none;
  width: 20px; height: 20px; margin: -10px 0 0 -10px; border-radius: 50%;
  background-image: radial-gradient(circle at center,
                    rgba(17, 17, 24, 0.55) 1.6px, transparent 2px);
  background-size: 6px 6px;
  animation: pow-burst 460ms cubic-bezier(0.2, 0.7, 0.3, 1) forwards;
}
.btn-dark .pow {
  background-image: radial-gradient(circle at center,
                    rgba(255, 255, 255, 0.6) 1.6px, transparent 2px);
}
@keyframes pow-burst {
  from { transform: scale(0.2); opacity: 1; }
  to   { transform: scale(16);  opacity: 0; }
}

/* the button takes the hit — squash, overshoot, settle */
.pow-press { animation: pow-press 300ms cubic-bezier(0.2, 0.7, 0.3, 1); }
@keyframes pow-press {
  0%   { transform: scale(1, 1); }
  35%  { transform: scale(1.06, 0.9); }
  70%  { transform: scale(0.97, 1.04); }
  100% { transform: scale(1, 1); }
}

@media (prefers-reduced-motion: reduce) {
  .pow { display: none; }
  .pow-press { animation: none; }
}

@media (prefers-reduced-motion: reduce) {
  .btn-dark::before { transition: none; }
  .btn-primary { transition: none; }
}

.btn-ghost { padding: 8px 0; box-shadow: none; }
.btn-ghost:hover { text-decoration: underline; text-underline-offset: 4px; }
.btn-ghost:active { transform: none; }

.btn-outline { border: 1px solid var(--color-ink-black); background: transparent; box-shadow: none; }
.btn-outline:active { transform: translateY(2px); }

.btn-sm { padding: 10px 20px; font-size: 16px; letter-spacing: -0.32px; }

.btn-row { display: flex; gap: var(--element-gap); flex-wrap: wrap; }
@media (max-width: 520px) {
  .btn { width: 100%; justify-content: center; }
  .btn-ghost { width: auto; }
  .btn-row { flex-direction: column; align-items: stretch; }
}

/* ---- Round icon container ---------------------------------------------- */
.icon-round {
  width: 48px; height: 48px; border-radius: var(--radius-tags);
  background: var(--color-electric-iris); color: var(--color-paper-white);
  display: grid; place-items: center; font-size: 20px; flex-shrink: 0;
  font-family: var(--font-haas-grot-disp);
}

/* ---- Brand mark, cut from flat colour ------------------------------------
   Her signature masked over solid colour bands — paper-cut logic, so it
   stays flat with no gradient anywhere.
   -------------------------------------------------------------------------- */
.brand-mark {
  width: 76px; aspect-ratio: 355 / 400;
  display: grid; grid-template-columns: repeat(5, 1fr);
  -webkit-mask-image: var(--mark-mask); mask-image: var(--mark-mask);
  -webkit-mask-size: 100% 100%;        mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;      mask-repeat: no-repeat;
  -webkit-mask-position: center;       mask-position: center;
}
.brand-mark > i { display: block; }
/* same order as --aurora: red/yellow/green kept apart by sky and pink */
.brand-mark > i:nth-child(1) { background: var(--color-marker-red); }
.brand-mark > i:nth-child(2) { background: var(--color-bubblegum-pink); }
.brand-mark > i:nth-child(3) { background: var(--color-powder-sky); }
.brand-mark > i:nth-child(4) { background: var(--color-jelly-green); }
.brand-mark > i:nth-child(5) { background: var(--color-hi-yellow); }
.hero-center .brand-mark { margin: 0 auto 28px; }

/* ---- Client logo wall -----------------------------------------------------
   Logos only. Wordmarks and square marks are capped differently so they
   carry the same optical weight — a wide wordmark at the same pixel height
   as a crest always reads much bigger.
   ---------------------------------------------------------------------------- */
.client-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: stretch; }
.client {
  height: 68px; padding: 12px 22px;
  display: grid; place-items: center;
  background: var(--color-paper-white);
  border: 1px solid var(--color-frost-blue);
  border-radius: var(--radius-small);
  box-shadow: var(--shadow-card);
  transition: transform 160ms var(--ease), box-shadow 160ms var(--ease);
}
.client img {
  max-height: 28px; max-width: 116px;
  width: auto; height: auto; object-fit: contain; display: block;
}
/* crests and badges — taller, narrower */
.client-mark img { max-height: 44px; max-width: 62px; }

@media (hover: hover) and (pointer: fine) {
  .client:hover { transform: translateY(-2px); box-shadow: 0 4px 0 0 var(--color-ink-black); }
}
@media (max-width: 560px) {
  .client { height: 58px; padding: 10px 16px; }
  .client img { max-height: 24px; max-width: 92px; }
  .client-mark img { max-height: 36px; max-width: 52px; }
}

/* ---- Tag / category pill ------------------------------------------------ */
.tag {
  display: inline-block; border-radius: var(--radius-tags);
  background: var(--color-frost-blue); color: var(--color-ink-black);
  font-size: 16px; letter-spacing: -0.32px; padding: 4px 12px;
}
.tag-active { background: var(--color-electric-iris); color: var(--color-paper-white); }
.tag-row { display: flex; gap: 8px; flex-wrap: wrap; }

/* ---- Cards --------------------------------------------------------------- */
.card {
  background: var(--color-paper-white);
  border: 1px solid var(--color-frost-blue);
  border-radius: var(--radius-cards);
  padding: var(--card-pad);
  box-shadow: var(--shadow-card);
  position: relative;
}
.card-link { transition: transform 160ms var(--ease), box-shadow 160ms var(--ease); display: block; }
.card-link:hover { transform: translateY(-3px); box-shadow: 0 5px 0 0 var(--color-ink-black); }
.card-link:active { transform: translateY(0); box-shadow: 0 1px 0 0 var(--color-ink-black); }

.card-media {
  border-radius: var(--radius-small);
  overflow: hidden; background: var(--color-frost-blue);
  aspect-ratio: 4 / 3; margin-bottom: 20px;
}
.card-media img { width: 100%; height: 100%; object-fit: cover; }
.card-media-tall { aspect-ratio: 3 / 4; }
.card-media-wide { aspect-ratio: 16 / 10; }
.card-media-sq   { aspect-ratio: 1 / 1; }

/* visual-first showcase card: image edge to edge, title bar overlaid */
.showcase {
  position: relative; border-radius: var(--radius-small); overflow: hidden;
  background: var(--color-frost-blue); display: block;
  transition: transform 160ms var(--ease);
}
.showcase:hover { transform: translateY(-3px); }
.showcase img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 3 / 4; }
.showcase-bar {
  position: absolute; left: 12px; bottom: 12px; right: 12px;
  background: var(--color-paper-white);
  border-radius: var(--radius-small);
  padding: 10px 16px;
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
}
.showcase-wide img { aspect-ratio: 16 / 10; }
.showcase-sq img { aspect-ratio: 1 / 1; }

/* ---- Stat card ----------------------------------------------------------- */
.stat-num {
  font-family: var(--font-haas-grot-disp); font-weight: 400;
  font-size: clamp(34px, 4.4vw, 52px); line-height: 1; letter-spacing: -0.02em;
  display: block;
}
.stat-label { margin-top: 10px; }

/* ---- Section washes ------------------------------------------------------- */
.wash { position: relative; }
.wash-yellow { background: var(--color-hi-yellow); }
.wash-pink   { background: var(--color-bubblegum-pink); }
.wash-frost  { background: var(--color-frost-blue); }
.wash-ink    { background: var(--color-ink-black); color: var(--color-paper-white); }
.wash-ink .card { background: var(--color-paper-white); color: var(--color-ink-black); }
.wash-ink .divider { background: rgba(255,255,255,0.2); }

/* ---- Decorative paper-cut layer --------------------------------------------
   Jessica's signature mark, alpha-masked so each instance can take a flat
   accent fill. Sits behind the content layer, spilling off the page edges.
   ---------------------------------------------------------------------------- */
/* No overflow clip: the marks now travel with scroll, cursor and drag, and
   any clip here slices them flat at a section edge. They live in the
   gutters beside the 1200px rail, so letting them cross section
   boundaries costs nothing — html,body{overflow-x:clip} bounds the page. */
.shapes { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.layer { position: relative; z-index: 1; }

/* The wrapper answers the page — scroll momentum and cursor. Its transform
   is written per-mark by app.js, because each one has its own response
   amplitudes, signs and settling rate; they must not move as a set. */
.shapes .mark { will-change: transform; }

/* Grabbable — mouse only. On touch the marks stay inert so a finger drag
   still scrolls the page instead of catching a background decoration. */
@media (hover: hover) and (pointer: fine) {
  .shapes .mark {
    pointer-events: auto; cursor: grab;
    touch-action: none; user-select: none; -webkit-user-select: none;
  }
  .shapes .mark.dragging { cursor: grabbing; }
  /* freeze the idle drift while held, so it picks up from where you drop it */
  .shapes .mark.dragging .mark-ink { animation-play-state: paused; opacity: 1; }
}

/* The ink inside carries the mask, the colour and the idle drift. */
.shapes .mark-ink {
  display: block; width: 100%; height: 100%;
  -webkit-mask-image: var(--mark-mask);
          mask-image: var(--mark-mask);
  -webkit-mask-size: 100% 100%;
          mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  opacity: .85;
  transform: rotate(var(--rot, 0deg));
  animation: drift var(--dur, 20s) ease-in-out var(--delay, 0s) infinite;
}

/* Transform-only drift — cheap on the compositor, no layout work. */
@keyframes drift {
  0%,
  100% { transform: rotate(var(--rot, 0deg)) translate(0, 0); }
  50%  { transform: rotate(var(--rot, 0deg)) translate(var(--dx, 0px), var(--dy, 0px)); }
}

@media (prefers-reduced-motion: reduce) {
  .shapes .mark { transform: none; }
  .shapes .mark-ink { animation: none; }
}
body.flat .shapes .mark { transform: none; }
body.flat .shapes .mark-ink { animation: none; }

/* ---- Inputs ---------------------------------------------------------------- */
.input, .textarea {
  width: 100%;
  background: var(--color-chalk-blue);
  border: 1px solid var(--color-frost-blue);
  border-radius: var(--radius-inputs);
  padding: 12px 20px;
  font-family: var(--font-haas-grot-text); font-size: 16px; letter-spacing: -0.32px;
  color: var(--color-ink-black);
}
.input::placeholder, .textarea::placeholder { color: var(--color-ink-black); opacity: 0.4; }
.input:focus, .textarea:focus { outline: 2px solid var(--color-electric-iris); outline-offset: 2px; }
.textarea { border-radius: var(--radius-cards); min-height: 150px; resize: vertical; }
.field label { display: block; margin-bottom: 8px; }
.field + .field { margin-top: 20px; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
/* side-by-side fields are siblings, so the stacking rule above would shove
   the second one down out of line with the first */
.field-row .field + .field { margin-top: 0; }
@media (max-width: 640px) { .field-row { grid-template-columns: 1fr; } }

/* ---- Footer ----------------------------------------------------------------- */
.footer { background: var(--color-frost-blue); padding-block: 64px 40px; margin-top: var(--section-gap); }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: var(--spacing-32); }
@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .footer-grid { grid-template-columns: 1fr; } }
.footer a:hover { text-decoration: underline; text-underline-offset: 4px; }
.footer ul { list-style: none; }
.footer li + li { margin-top: 10px; }
.footer-bottom {
  margin-top: 48px; padding-top: 24px;
  border-top: 1px solid rgba(17,17,24,0.14);
  display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
}

/* ---- Cookie consent bar -------------------------------------------------------- */
.cookie {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 150;
  background: var(--color-ink-black); color: var(--color-paper-white);
  padding: 16px 24px;
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--spacing-24); flex-wrap: wrap;
}
.cookie-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.cookie .btn-ghost-light {
  border: 1px solid var(--color-paper-white); color: var(--color-paper-white);
  border-radius: var(--radius-buttons); padding: 10px 20px;
  font-size: 16px; letter-spacing: -0.32px; white-space: nowrap;
}
.cookie .btn-solid-dark {
  background: var(--color-carbon); color: var(--color-paper-white);
  border-radius: var(--radius-buttons); padding: 10px 20px;
  font-size: 16px; letter-spacing: -0.32px; white-space: nowrap;
  box-shadow: 0 3px 0 0 var(--color-electric-iris);
}

/* ---- Heroes ------------------------------------------------------------------ */
.hero { position: relative; padding-block: clamp(56px, 9vw, 104px); }
.hero-center { text-align: center; }
.hero-center .icon-round { margin: 0 auto 24px; }
.hero-center .btn-row { justify-content: center; }
.hero-center p { margin-inline: auto; }
.pagehero { padding-block: clamp(44px, 6vw, 76px); position: relative; }

/* ---- Reveal ---------------------------------------------------------------------- */
.rv { opacity: 0; transform: translateY(16px); }
.rv.in {
  opacity: 1; transform: none;
  transition: opacity 620ms var(--ease), transform 620ms var(--ease);
  transition-delay: var(--d, 0ms);
}
@media (prefers-reduced-motion: reduce) {
  .rv { opacity: 1; transform: none; }
  .rv.in { transition: none; }
}
/* #flat disables reveals + marquee for full-page screenshots */
body.flat .rv { opacity: 1 !important; transform: none !important; }
body.flat .ticker-track { animation: none !important; }

/* ============================================================================
   THE WALL — shop-backed gallery
   Masonry columns so varied canvas ratios hang like a real salon wall
   instead of a row of equal cards.
   ============================================================================ */
.wall { columns: 3; column-gap: var(--spacing-24); }
@media (max-width: 1000px) { .wall { columns: 2; } }
@media (max-width: 620px)  { .wall { columns: 1; } }

.piece {
  display: block; width: 100%; padding: 0; margin: 0 0 var(--spacing-24);
  break-inside: avoid; position: relative; text-align: left; cursor: pointer;
  background: var(--color-paper-white);
  border: 1px solid var(--color-frost-blue);
  border-radius: var(--radius-small);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: transform 180ms var(--ease), box-shadow 180ms var(--ease), opacity 180ms var(--ease);
}
.piece img {
  width: 100%; height: auto; display: block;
  transition: transform 220ms var(--ease);
}
.piece-meta {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; padding: 12px 16px; background: var(--color-paper-white);
  transition: transform 180ms var(--ease);
}
.piece-sub { opacity: .55; white-space: nowrap; }

@media (hover: hover) and (pointer: fine) {
  .piece:hover { transform: translateY(-3px); box-shadow: 0 5px 0 0 var(--color-ink-black); }
  .piece:hover img { transform: scale(1.04); }
  /* all-but-me: the hovered piece stays lit, the wall recedes a little.
     Kept gentle — the paintings are the product, so dimming them hard
     works against the page every time the cursor crosses the wall. */
  .wall:has(.piece:hover) .piece:not(:hover) { opacity: .74; }
}
.piece:active { transform: translateY(0) scale(0.985); box-shadow: 0 1px 0 0 var(--color-ink-black); }

/* ---- Marker swipe -----------------------------------------------------------
   A flat accent block swiped behind a word — paint, not a gradient.
   ---------------------------------------------------------------------------- */
.marker { position: relative; display: inline-block; z-index: 0; }
.marker::before {
  content: ""; position: absolute; z-index: -1;
  left: -0.14em; right: -0.14em; top: 0.08em; bottom: 0.02em;
  background: var(--marker, var(--color-hi-yellow));
  transform: scaleX(0) rotate(-0.6deg); transform-origin: left center;
  animation: swipe 460ms var(--ease) 240ms forwards;
}
@keyframes swipe { to { transform: scaleX(1) rotate(-0.6deg); } }
@media (prefers-reduced-motion: reduce) {
  .marker::before { animation: none; transform: scaleX(1) rotate(-0.6deg); }
}
body.flat .marker::before { animation: none; transform: scaleX(1) rotate(-0.6deg); }

/* ============================================================================
   LIGHTBOX
   ============================================================================ */
.lb {
  position: fixed; inset: 0; z-index: 300;
  display: grid; grid-template-rows: auto 1fr auto;
  background: rgba(17, 17, 24, 0.94);
  opacity: 0; visibility: hidden;
  transition: opacity 180ms var(--ease), visibility 0s linear 180ms;
}
.lb.open { opacity: 1; visibility: visible; transition-delay: 0s; }

.lb-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 20px; }
.lb-count { color: var(--color-paper-white); opacity: .6; }

.lb-stage {
  position: relative; display: grid; place-items: center;
  padding: 0 clamp(16px, 8vw, 96px); min-height: 0;
}
.lb-figure {
  display: block; max-width: 100%; max-height: 100%;
  transform: translateY(8px) scale(0.97); opacity: 0;
  transition: transform 240ms var(--ease), opacity 240ms var(--ease);
}
.lb.open .lb-figure { transform: none; opacity: 1; }
.lb-figure img {
  max-width: 100%; max-height: 76vh; width: auto; height: auto;
  border-radius: var(--radius-small); background: var(--color-ink-black);
}

.lb-foot { padding: 20px clamp(16px, 8vw, 96px) 32px; }
.lb-card {
  background: var(--color-paper-white); border-radius: var(--radius-cards);
  padding: 20px 24px; display: flex; align-items: center;
  justify-content: space-between; gap: var(--spacing-24); flex-wrap: wrap;
  max-width: 900px; margin-inline: auto;
}
.lb-price { white-space: nowrap; }

/* round chrome buttons */
.lb-btn {
  width: 48px; height: 48px; border-radius: var(--radius-tags);
  background: var(--color-paper-white); color: var(--color-ink-black);
  display: grid; place-items: center; flex-shrink: 0;
  box-shadow: 0 3px 0 0 var(--color-marker-red);
  transition: transform 140ms var(--ease), box-shadow 140ms var(--ease);
}
@media (hover: hover) and (pointer: fine) {
  .lb-btn:hover { background-image: var(--aurora); background-size: 180% 100%; }
}
.lb-btn:active { transform: translateY(3px); box-shadow: 0 0 0 0 var(--color-marker-red); }
.lb-btn svg { width: 20px; height: 20px; display: block; }
.lb-btn[disabled] { opacity: .35; box-shadow: none; cursor: default; }

/* Keep the arrows beside the artwork, not stranded at the edge of a wide
   monitor. They tuck back to the viewport edge on smaller screens. */
.lb-nav { position: absolute; top: 50%; transform: translateY(-50%); }
.lb-prev { left:  max(12px, calc(50vw - 480px)); }
.lb-next { right: max(12px, calc(50vw - 480px)); }

@media (max-width: 620px) {
  .lb-stage { padding-inline: 12px; }
  .lb-figure img { max-height: 50vh; }
  .lb-card { justify-content: center; text-align: center; }
  .lb-nav { top: auto; bottom: -62px; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .lb-figure { transition: opacity 180ms linear; transform: none; }
  .lb.open .lb-figure { transform: none; }
}
body.lb-lock { overflow: hidden; }

/* ---- Misc helpers ------------------------------------------------------------------ */
.divider { height: 1px; background: rgba(17,17,24,0.14); border: 0; }
.list-plain { list-style: none; }
.list-plain li { padding-left: 22px; position: relative; }
.list-plain li + li { margin-top: 10px; }
.list-plain li::before { content: "—"; position: absolute; left: 0; opacity: 0.45; }
.kv { display: grid; grid-template-columns: auto 1fr; gap: 8px 24px; }
.embed { border-radius: var(--radius-small); overflow: hidden; background: var(--color-frost-blue); aspect-ratio: 16 / 9; }
.embed iframe { width: 100%; height: 100%; border: 0; display: block; }
.logo-row { display: flex; flex-wrap: wrap; gap: 8px; }
