/* ══════════════════════════════════════════════════════════════
   URBAN PHORM — "HARD STOCK"
   Award-grade neubrutalist system.

   Flat unmodulated colour in true-black outlines, every surface
   casting a hard offset shadow it can be pressed into. One grid,
   one type family, zero radius, zero gradients.
   ══════════════════════════════════════════════════════════════ */

/* ── Face: Archivo variable, self-hosted (wght 100–900, wdth 62–125) ── */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(/fonts/archivo-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
                 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(/fonts/archivo-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
                 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
                 U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  /* ── Pigment: flat, unmodulated, six values only ── */
  --nb-black:    #000000;
  --nb-paper:    #F2F2ED;
  --nb-paper-2:  #E4E4DB;
  --nb-marigold: #FFC400;
  --nb-pink:     #FF2E8B;
  --nb-blue:     #0057FF;
  --nb-lime:     #C6FF00;

  /* Text pairing rules, encoded.
     Black type on paper / marigold / lime / pink. White type on blue / black. */
  --nb-on-paper:    #000000;
  --nb-on-blue:     #FFFFFF;
  --nb-on-black:    #FFFFFF;
  --nb-muted-paper: #4A4A44;          /* 8.1:1 on paper  */
  --nb-muted-black: rgba(255,255,255,0.78); /* 12.4:1 on black */
  /* Secondary text on the blue field is full white, differentiated by
     weight rather than alpha: white at 86% composites to 4.44:1 on
     #0057FF, under AA — and this world does not use transparency. */
  --nb-muted-blue:  #FFFFFF;                /* 5.5:1 on blue */

  /* ── Structure ── */
  --nb-bd:       3px;
  --nb-bd-thin:  2px;
  --nb-shadow:      6px 6px 0 var(--nb-black);
  --nb-shadow-sm:   4px 4px 0 var(--nb-black);
  --nb-shadow-lg:  10px 10px 0 var(--nb-black);
  --nb-press:    6px;
  --nb-press-sm: 4px;

  /* ── Layout ── */
  --up-max:       1180px;
  --up-max-wide:  1400px;
  --up-nav-h:     76px;
  --up-admin-bar-h: 34px;

  /* ── Motion: one snap, one curve ── */
  --nb-snap: 90ms cubic-bezier(0.2, 0, 0, 1);
  --nb-ease: 420ms cubic-bezier(0.16, 1, 0.3, 1);

  /* Legacy aliases — every old token now resolves into the new world */
  --up-ink: var(--nb-black);
  --up-paper: var(--nb-paper);
  --up-paper-bright: #FFFFFF;
  --up-stone: var(--nb-black);
  --up-muted: var(--nb-muted-paper);
  --up-body: #22221E;
  --up-signal: var(--nb-marigold);
  --up-signal-dark: #E5B000;
  --up-city: var(--nb-blue);
  --up-wild: var(--nb-lime);
  --up-clay: var(--nb-pink);
  --up-black: var(--nb-black);
  --up-white: #FFFFFF;
  --up-gray-200: var(--nb-black);
  --up-gray-300: var(--nb-black);
  --up-gray-500: var(--nb-muted-paper);
  --up-gray-600: var(--nb-muted-paper);
  --primary-blue: var(--nb-blue);
  --up-radius: 0px;
  --up-radius-lg: 0px;
  --up-shadow: var(--nb-shadow);
  --terrain-studio: var(--nb-black);
  --terrain-city: var(--nb-blue);
  --terrain-wild: var(--nb-lime);
  --terrain-portrait: var(--nb-paper);
  --terrain-object: var(--nb-paper-2);
}

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

html { -webkit-text-size-adjust: 100%; }

body {
  font-family: 'Archivo', 'Helvetica Neue', Arial, sans-serif;
  font-variation-settings: 'wdth' 100;
  font-size: 1.0625rem;
  font-weight: 450;
  line-height: 1.6;
  background: var(--nb-paper);
  color: var(--nb-on-paper);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: 'kern' 1;
  margin: 0;
  padding-top: var(--up-nav-h);
  /* Matt stock: a faint tooth on the paper ground, no gradient. */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(/%23n)' opacity='0.035'/%3E%3C/svg%3E");
}

body.up-admin-preview { padding-top: calc(var(--up-nav-h) + var(--up-admin-bar-h)); }

/* ══ Browser surfaces — the parts we did not draw still carry the design ══ */
::selection { background: var(--nb-lime); color: var(--nb-black); text-shadow: none; }
::-moz-selection { background: var(--nb-lime); color: var(--nb-black); }

:root { accent-color: var(--nb-blue); caret-color: var(--nb-pink); scrollbar-color: var(--nb-black) var(--nb-paper-2); }

::-webkit-scrollbar { width: 14px; height: 14px; }
::-webkit-scrollbar-track { background: var(--nb-paper-2); }
::-webkit-scrollbar-thumb { background: var(--nb-black); border: 3px solid var(--nb-paper-2); }
::-webkit-scrollbar-thumb:hover { background: var(--nb-blue); }
::-webkit-scrollbar-corner { background: var(--nb-paper-2); }

:focus-visible {
  outline: var(--nb-bd) solid var(--nb-blue);
  outline-offset: 3px;
}
.terrain-city :focus-visible,
.up-footer :focus-visible,
.terrain-studio :focus-visible { outline-color: var(--nb-lime); }

a { color: inherit; text-underline-offset: 3px; text-decoration-thickness: 2px; }

/* Numerals in anything measured read as data, not as prose. */
time, .up-mono, .up-date-stamp, .up-shop-card__price, .up-shop-detail__price, td, .tabular {
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1;
}

/* ══════════════════════ TYPE ══════════════════════ */

.up-display,
.up-serif {
  font-family: 'Archivo', 'Helvetica Neue', Arial, sans-serif;
  font-variation-settings: 'wdth' 92;
  font-weight: 900;
  font-style: normal;
  line-height: 0.92;
  letter-spacing: -0.03em;
  text-transform: uppercase;
  text-wrap: balance;
  color: var(--nb-black);
}
/* The old world's italic display has no counterpart here; neutralised
   rather than left dangling, so legacy markup lands in this system. */
.up-display--italic { font-style: normal; }

.up-mono {
  font-family: 'Archivo', 'Helvetica Neue', Arial, sans-serif;
  font-variation-settings: 'wdth' 88;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* The old kicker becomes a real component: a flat outlined label chip.
   Every legacy `.up-eyebrow` in the views resolves into the world this way. */
.up-eyebrow {
  display: inline-block;
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1;
  color: var(--nb-black);
  background: var(--nb-lime);
  border: var(--nb-bd-thin) solid var(--nb-black);
  padding: 6px 10px 5px;
  margin: 0 0 1.25rem;
  box-shadow: 3px 3px 0 var(--nb-black);
}
.up-eyebrow--light {
  background: var(--nb-marigold);
  color: var(--nb-black);
  border-color: var(--nb-black);
  box-shadow: 3px 3px 0 rgba(0,0,0,0.9);
}
.terrain-studio .up-eyebrow--light,
.up-footer .up-eyebrow--light { box-shadow: 3px 3px 0 var(--nb-lime); }

.up-lead {
  font-size: 1.125rem;
  line-height: 1.6;
  font-weight: 450;
  color: var(--up-body);
  max-width: 68ch;
}

h1, h2, h3, h4 { text-wrap: balance; }
p { text-wrap: pretty; }

/* ══════════════════════ LAYOUT ══════════════════════ */

.up-container { max-width: var(--up-max); margin: 0 auto; padding: 0 1.75rem; }
.up-container--wide { max-width: var(--up-max-wide); }
.up-section { padding: 6rem 0; }
.up-section--lg { padding: 8rem 0; }

@media (max-width: 640px) {
  .up-section { padding: 3.75rem 0; }
  .up-section--lg { padding: 4.5rem 0; }
  .up-container { padding: 0 1.125rem; }
}

/* ══════════════════════ FIELDS (was: terrains) ══════════════════════
   Colour commits at page scale: whole regions, never scattered accents. */

.terrain-studio { background: var(--nb-black); color: var(--nb-on-black); position: relative; }
.terrain-city   { background: var(--nb-blue);  color: var(--nb-on-blue);  position: relative; }
.terrain-wild   { background: var(--nb-lime);  color: var(--nb-black);    position: relative; }
.terrain-paper  { background: var(--nb-paper); color: var(--nb-black);    position: relative; }
.terrain-muted  { background: var(--nb-paper-2); color: var(--nb-black);  position: relative; }
.terrain-portrait { background: var(--nb-paper); color: var(--nb-black); }
.terrain-pink   { background: var(--nb-pink); color: var(--nb-black); position: relative; }
.terrain-marigold { background: var(--nb-marigold); color: var(--nb-black); position: relative; }

/* Fields butt against each other on a hard black rule — no fades. */
.terrain-studio, .terrain-city, .terrain-wild,
.terrain-paper, .terrain-muted, .terrain-pink, .terrain-marigold { border-bottom: var(--nb-bd) solid var(--nb-black); }

.terrain-content { position: relative; z-index: 2; }

.terrain-studio .up-display, .terrain-studio h1, .terrain-studio h2, .terrain-studio h3 { color: var(--nb-on-black); }
.terrain-city   .up-display, .terrain-city h1, .terrain-city h2, .terrain-city h3   { color: var(--nb-on-blue); }
.terrain-wild   .up-display, .terrain-wild h1, .terrain-wild h2, .terrain-wild h3   { color: var(--nb-black); }
.terrain-studio .up-lead { color: var(--nb-muted-black); }
.terrain-city   .up-lead { color: var(--nb-muted-blue); }
.terrain-wild   .up-lead { color: #1A1A16; }

.terrain-band { height: 10px; width: 100%; border-bottom: var(--nb-bd) solid var(--nb-black); }
.terrain-band--studio { background: var(--nb-marigold); }
.terrain-band--city   { background: var(--nb-blue); }
.terrain-band--wild   { background: var(--nb-lime); }
.terrain-band--talent { background: var(--nb-pink); }
.terrain-band--shop   { background: var(--nb-marigold); }

/* ══════════════════════ HERO ══════════════════════ */

.up-hero { padding: 6rem 0 5.5rem; text-align: left; position: relative; }
.up-hero--end {
  min-height: 76vh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  text-align: left;
  padding-bottom: 4.5rem;
}
.up-hero__title {
  font-family: 'Archivo', 'Helvetica Neue', Arial, sans-serif;
  font-variation-settings: 'wdth' 90;
  font-weight: 900;
  font-style: normal;
  font-size: clamp(2.75rem, 8.5vw, 6rem);
  /* 0.92 is the floor that keeps an inline highlight plate from
     colliding with the line beneath it — see .up-home-hero__em. */
  line-height: 0.92;
  letter-spacing: -0.035em;
  text-transform: uppercase;
  margin: 0 0 1.5rem;
  text-wrap: balance;
}
.up-hero__sub {
  font-size: clamp(1.0625rem, 1.6vw, 1.3125rem);
  line-height: 1.5;
  max-width: 46ch;
  font-weight: 500;
  color: var(--nb-muted-black);
}
.terrain-city .up-hero__sub { color: var(--nb-muted-blue); }
.terrain-wild .up-hero__sub,
.up-hero--light .up-hero__sub { color: #1A1A16; }
.up-hero__sub--center { margin-left: 0; margin-right: 0; }
.up-hero__actions { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 2.25rem; }
.up-hero__actions--center { justify-content: flex-start; }

/* The watermark is a flat stencil block, not a ghosted serif. */
.up-hero__watermark {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
  padding-right: 2vw;
}
.up-hero__watermark span {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 62;
  font-size: clamp(12rem, 34vw, 26rem);
  font-weight: 900;
  line-height: 0.75;
  letter-spacing: -0.06em;
  color: transparent;
  -webkit-text-stroke: 3px rgba(255,255,255,0.16);
  user-select: none;
  text-transform: uppercase;
}
.terrain-paper .up-hero__watermark span,
.terrain-wild .up-hero__watermark span { -webkit-text-stroke-color: rgba(0,0,0,0.14); }

.up-hero--light { color: var(--nb-black); }
.up-hero--light .up-hero__title { color: var(--nb-black); }

/* ══════════════════════ BUTTONS ══════════════════════
   The world's native motion: press the block into its own shadow. */

.up-btn,
.up-btn-dark, .up-btn-ghost, .up-btn-white,
.up-btn-outline-white, .up-btn-outline-dark {
  display: inline-block;
  position: relative;
  padding: 0.9rem 1.6rem;
  font-family: inherit;
  font-size: 0.8125rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.15;
  text-decoration: none;
  text-align: center;
  cursor: pointer;
  border: var(--nb-bd) solid var(--nb-black);
  border-radius: 0;
  background: var(--nb-paper);
  color: var(--nb-black);
  box-shadow: var(--nb-shadow);
  transition: transform var(--nb-snap), box-shadow var(--nb-snap), background var(--nb-snap);
}
.up-btn:hover,
.up-btn-dark:hover, .up-btn-ghost:hover, .up-btn-white:hover,
.up-btn-outline-white:hover, .up-btn-outline-dark:hover {
  transform: translate(2px, 2px);
  box-shadow: 4px 4px 0 var(--nb-black);
}
.up-btn:active,
.up-btn-dark:active, .up-btn-ghost:active, .up-btn-white:active,
.up-btn-outline-white:active, .up-btn-outline-dark:active {
  transform: translate(var(--nb-press), var(--nb-press));
  box-shadow: 0 0 0 var(--nb-black);
}
.up-btn[disabled], .up-btn[aria-disabled="true"], .up-btn.is-disabled {
  background: var(--nb-paper-2);
  color: #6E6E66;
  box-shadow: none;
  transform: translate(var(--nb-press), var(--nb-press));
  cursor: not-allowed;
  pointer-events: none;
}

.up-btn--primary, .up-btn--signal { background: var(--nb-marigold); color: var(--nb-black); }
.up-btn--secondary, .up-btn-ghost, .up-btn-outline-dark { background: var(--nb-paper); color: var(--nb-black); }
.up-btn--city { background: var(--nb-blue); color: var(--nb-on-blue); }
.up-btn--wild { background: var(--nb-lime); color: var(--nb-black); }
.up-btn--pink { background: var(--nb-pink); color: var(--nb-black); }
.up-btn-dark { background: var(--nb-black); color: #FFFFFF; }
.up-btn-white, .up-btn--ghost-light { background: #FFFFFF; color: var(--nb-black); }
.up-btn--block { width: 100%; margin-top: 0.5rem; }

/* On black and blue fields the outline must be visible: it flips to paper. */
.terrain-studio .up-btn, .up-footer .up-btn,
.terrain-city .up-btn {
  border-color: var(--nb-paper);
  box-shadow: 6px 6px 0 var(--nb-paper);
}
.terrain-studio .up-btn:hover, .up-footer .up-btn:hover, .terrain-city .up-btn:hover {
  box-shadow: 4px 4px 0 var(--nb-paper);
}
.terrain-studio .up-btn:active, .up-footer .up-btn:active, .terrain-city .up-btn:active {
  box-shadow: 0 0 0 var(--nb-paper);
}
.up-btn--ghost-dark, .up-btn-outline-white {
  background: transparent;
  color: #FFFFFF;
  border-color: var(--nb-paper);
}
.up-btn--ghost-dark:hover, .up-btn-outline-white:hover { background: rgba(255,255,255,0.14); }
.terrain-wild .up-btn { border-color: var(--nb-black); box-shadow: var(--nb-shadow); }

/* ══════════════════════ THE PLATE ══════════════════════
   One primitive: an outlined block on a hard shadow. Everything
   card-shaped in this system is a plate, never a soft rounded box. */

.nb-plate {
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  position: relative;
}
.nb-plate--marigold { background: var(--nb-marigold); }
.nb-plate--pink     { background: var(--nb-pink); }
.nb-plate--blue     { background: var(--nb-blue); color: var(--nb-on-blue); }
.nb-plate--lime     { background: var(--nb-lime); }
.nb-plate--paper    { background: var(--nb-paper); }

/* ══════════════════════ PRACTICE GRID ══════════════════════
   Not a uniform card wall: a bordered module field where the two
   lead practices take double width and carry a colour fill. */

/* Default: separated plates. Robust for any card count — a short final
   row simply has fewer plates, never a framed empty region. Pages that
   are verified to tile exactly opt into the flush table below. */
.up-chapter-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
  background: transparent;
}
.up-chapter-card {
  display: flex;
  flex-direction: column;
  padding: 2rem 1.5rem 1.75rem;
  background: #FFFFFF;
  text-decoration: none;
  color: var(--nb-black);
  position: relative;
  min-height: 250px;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  transition: background var(--nb-snap), transform var(--nb-snap), box-shadow var(--nb-snap);
  isolation: isolate;
}
a.up-chapter-card:hover { transform: translate(3px, 3px); box-shadow: 3px 3px 0 var(--nb-black); }
a.up-chapter-card:active { transform: translate(6px, 6px); box-shadow: none; }

/* Flush variant: one contiguous bordered table, for grids whose spans
   are known to fill every cell. Top/left rules come from the container,
   right/bottom from the cards, so no border doubles at the frame. */
.up-chapter-grid--flush {
  gap: 0;
  border-top: var(--nb-bd) solid var(--nb-black);
  border-left: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow-lg);
}
.up-chapter-grid--flush .up-chapter-card {
  border: none;
  border-right: var(--nb-bd) solid var(--nb-black);
  border-bottom: var(--nb-bd) solid var(--nb-black);
  box-shadow: none;
}
.up-chapter-grid--flush a.up-chapter-card:hover,
.up-chapter-grid--flush a.up-chapter-card:active { transform: none; box-shadow: none; }
/* Each practice is flooded in its own pigment. Colour commits at page
   scale here as it does everywhere else in this system — it is not a
   band on a white card, and not a hover state that touch never sees. */
.up-chapter-card--studio { background: var(--nb-marigold); }
.up-chapter-card--city   { background: var(--nb-blue);  color: var(--nb-on-blue); }
.up-chapter-card--wild   { background: var(--nb-lime); }
.up-chapter-card--talent { background: var(--nb-pink); }
.up-chapter-card--shop   { background: var(--nb-marigold); }

.up-chapter-card > * { position: relative; }
.up-chapter-card__num { display: none; } /* sequence carries no information here */

.up-chapter-card--wide { grid-column: span 2; }
.up-chapter-card--wide .up-chapter-card__title { font-size: clamp(1.85rem, 3vw, 2.5rem); }

.up-chapter-card__title {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 92;
  font-size: 1.6rem;
  font-weight: 900;
  line-height: 0.92;
  letter-spacing: -0.025em;
  text-transform: uppercase;
  margin: 1.5rem 0 0.75rem;
  white-space: pre-line;
  color: inherit;
}
/* The disciplines a practice covers are content, not a tracked label:
   set in sentence case at reading weight so they never read as a kicker. */
.up-chapter-card__sub {
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  color: inherit;
  opacity: 0.82;
  margin: 0 0 0.75rem;
}
.up-chapter-card__desc {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: inherit;
  margin: 0 0 1.5rem;
  flex: 1;
}
.up-chapter-card__cta {
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: inherit;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border-bottom: var(--nb-bd) solid currentColor;
  padding-bottom: 3px;
  align-self: flex-start;
}

@media (max-width: 980px) {
  .up-chapter-grid { grid-template-columns: repeat(2, 1fr); }
  .up-chapter-card--wide { grid-column: span 2; }
}
@media (max-width: 560px) {
  .up-chapter-grid { grid-template-columns: 1fr; }
  .up-chapter-card--wide { grid-column: span 1; }
  .up-chapter-card { min-height: 0; }
}

/* ══════════════════════ PROOF / EVENT STRIP ══════════════════════ */

.up-proof-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.25rem;
  background: transparent;
}
.up-proof-item {
  background: #FFFFFF;
  padding: 1.75rem 1.5rem;
  text-decoration: none;
  color: var(--nb-black);
  transition: background var(--nb-snap), transform var(--nb-snap), box-shadow var(--nb-snap);
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
}
.up-proof-item:hover { background: var(--nb-lime); }
a.up-proof-item:hover { transform: translate(3px,3px); box-shadow: 3px 3px 0 var(--nb-black); }
a.up-proof-item:active { transform: translate(6px,6px); box-shadow: none; }
.up-proof-item__tag {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--nb-black);
  align-self: flex-start;
  background: var(--nb-marigold);
  border: var(--nb-bd-thin) solid var(--nb-black);
  padding: 4px 8px 3px;
}
.up-proof-item__title {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 94;
  font-size: 1.25rem;
  font-weight: 800;
  letter-spacing: -0.015em;
  line-height: 1.1;
  margin: 0;
  color: var(--nb-black);
}
.up-proof-item__meta { font-size: 0.875rem; color: var(--up-body); margin: 0; }

@media (max-width: 820px) { .up-proof-strip { grid-template-columns: 1fr; } }

/* ══════════════════════ SERVICE ROWS ══════════════════════ */

.up-service-list {
  display: flex;
  flex-direction: column;
  border: var(--nb-bd) solid currentColor;
  box-shadow: var(--nb-shadow);
}
.terrain-studio .up-service-list,
.up-footer .up-service-list { box-shadow: 6px 6px 0 var(--nb-lime); border-color: var(--nb-paper); }
.terrain-wild .up-service-list { box-shadow: var(--nb-shadow); border-color: var(--nb-black); }

.up-service-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  padding: 1.35rem 1.5rem;
  border-bottom: var(--nb-bd) solid currentColor;
  text-decoration: none;
  color: inherit;
  transition: background var(--nb-snap), color var(--nb-snap);
}
.up-service-row:last-child { border-bottom: none; }
.up-service-row:hover { background: var(--nb-lime); color: var(--nb-black); }
.terrain-wild .up-service-row:hover { background: var(--nb-black); color: var(--nb-lime); }
.up-service-row:hover .up-service-row__items { color: var(--nb-black); opacity: 0.75; }
.up-service-row:hover .up-service-row__arrow { transform: translateX(6px); }
.up-service-row__label {
  font-size: 0.9375rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: inherit;
}
.up-service-row__items { font-size: 0.9375rem; font-weight: 500; letter-spacing: 0; text-transform: none; color: inherit; opacity: 0.82; }
.up-service-row__arrow {
  font-size: 1rem;
  font-weight: 800;
  color: inherit;
  transition: transform var(--nb-snap);
  display: inline-block;
}

/* ══════════════════════ SECTION HEAD ══════════════════════ */

.up-section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 2.5rem;
  flex-wrap: wrap;
  gap: 1.25rem;
}
.up-section-head__link {
  font-size: 0.8125rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--nb-black);
  text-decoration: none;
  background: var(--nb-lime);
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow-sm);
  padding: 0.6rem 1rem;
  transition: transform var(--nb-snap), box-shadow var(--nb-snap);
}
.up-section-head__link:hover { transform: translate(2px,2px); box-shadow: 2px 2px 0 var(--nb-black); }
.up-section-head__link:active { transform: translate(4px,4px); box-shadow: none; }
.terrain-studio .up-section-head__link,
.terrain-city .up-section-head__link { border-color: var(--nb-black); }

/* ══════════════════════ EMPTY STATES ══════════════════════ */

.up-waitlist {
  background: var(--nb-marigold);
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow-lg);
  padding: 3.5rem 2rem;
  text-align: center;
}
.up-waitlist__title {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 92;
  font-size: clamp(1.5rem, 3vw, 2.125rem);
  font-weight: 900;
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  line-height: 0.98;
  color: var(--nb-black);
  margin: 0 0 0.9rem;
}
.up-waitlist__body {
  font-size: 1rem;
  color: #1A1A16;
  line-height: 1.55;
  max-width: 46ch;
  margin: 0 auto 1.75rem;
}
.terrain-studio .up-waitlist, .terrain-wild .up-waitlist { box-shadow: 10px 10px 0 var(--nb-black); }
.terrain-studio .up-waitlist { background: var(--nb-marigold); border-color: var(--nb-black); }
.terrain-studio .up-waitlist__title, .terrain-studio .up-waitlist__body { color: var(--nb-black); }

.up-empty {
  text-align: center;
  padding: 5rem 2rem;
  color: var(--nb-muted-paper);
}
.up-cta-band { text-align: left; max-width: 40ch; margin: 0; }
.up-cta-band__title {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 90;
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 900;
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: -0.03em;
  margin: 0 0 1.25rem;
  line-height: 0.9;
}

/* ══════════════════════ DATE STAMP ══════════════════════ */

.up-date-stamp {
  text-align: center;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow-sm);
  padding: 0.5rem 0.6rem 0.45rem;
  min-width: 66px;
  background: var(--nb-pink);
}
.up-date-stamp__day {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 92;
  font-size: 1.6rem;
  font-weight: 900;
  color: var(--nb-black);
  line-height: 0.9;
  letter-spacing: -0.02em;
}
.up-date-stamp__month {
  font-size: 0.625rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--nb-black);
  margin-top: 4px;
}

/* ══════════════════════ TAGS ══════════════════════ */

.up-tag {
  display: inline-block;
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  line-height: 1;
  padding: 5px 9px 4px;
  border: var(--nb-bd-thin) solid var(--nb-black);
  background: #FFFFFF;
  color: var(--nb-black);
}
.up-tag--city { background: var(--nb-blue); color: var(--nb-on-blue); }
.up-tag--wild { background: var(--nb-lime); color: var(--nb-black); }
.up-tag--light { background: var(--nb-marigold); color: var(--nb-black); border-color: var(--nb-black); }

/* ══════════════════════ FORMS ══════════════════════ */

.up-input {
  width: 100%;
  padding: 0.8rem 0.9rem;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 500;
  color: var(--nb-black);
  border: var(--nb-bd) solid var(--nb-black);
  border-radius: 0;
  background: #FFFFFF;
  box-shadow: var(--nb-shadow-sm);
  transition: box-shadow var(--nb-snap), transform var(--nb-snap), background var(--nb-snap);
  outline: none;
}
.up-input:focus,
.up-input:focus-visible {
  outline: none;
  background: #FFFFFF;
  transform: translate(2px, 2px);
  box-shadow: 2px 2px 0 var(--nb-black), 0 0 0 3px var(--nb-blue);
}
.up-input::placeholder { color: #5C5C55; opacity: 1; }  /* 6.4:1 on white */
.up-input[aria-invalid="true"], .up-input.is-invalid { box-shadow: 4px 4px 0 var(--nb-pink); }
.up-input[disabled] { background: var(--nb-paper-2); color: #6E6E66; box-shadow: none; transform: translate(4px,4px); }

.up-label {
  display: block;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--nb-black);
  margin-bottom: 8px;
}
.up-form-stack { display: flex; flex-direction: column; gap: 1.4rem; }
.up-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.up-form-hint { font-size: 0.8125rem; color: var(--nb-muted-paper); margin: 8px 0 0; }
.up-form-error {
  background: var(--nb-pink);
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  padding: 1.1rem 1.25rem;
  margin-bottom: 2rem;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--nb-black);
}
textarea.up-input { resize: vertical; line-height: 1.6; }
select.up-input { appearance: none; background-image: none; }

/* ══════════════════════ NAVIGATION ══════════════════════ */

.up-nav {
  background: var(--nb-paper);
  border-bottom: var(--nb-bd) solid var(--nb-black);
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 50;
  height: var(--up-nav-h);
  /* The height step is instant on purpose: this world snaps, it does not
     tween — and transitioning height would thrash layout on every scroll. */
  transition: box-shadow var(--nb-snap);
}
body.up-admin-preview .up-nav { top: var(--up-admin-bar-h); }
.up-nav--scrolled { height: 66px; box-shadow: 0 6px 0 var(--nb-black); }
.up-nav-inner {
  max-width: var(--up-max-wide);
  margin: 0 auto;
  padding: 0 1.5rem;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

/* The wordmark is a stamped plate — the identity, since there is no logo file. */
.up-logo, .brand-logo {
  display: inline-flex;
  align-items: center;
  gap: 0;
  text-decoration: none;
  flex-shrink: 0;
  color: var(--nb-black);
}
.brand-logo__wordmark {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 88;
  font-size: 1.0625rem;
  font-weight: 900;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  line-height: 1;
  padding: 9px 12px 8px;
  background: var(--nb-marigold);
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: 4px 4px 0 var(--nb-black);
  transition: transform var(--nb-snap), box-shadow var(--nb-snap);
}
.brand-logo:hover .brand-logo__wordmark { transform: translate(2px,2px); box-shadow: 2px 2px 0 var(--nb-black); }
.brand-logo--footer { display: inline-block; margin-bottom: 1.5rem; }
.brand-logo--footer .brand-logo__wordmark { background: var(--nb-lime); box-shadow: 4px 4px 0 var(--nb-paper); }
.brand-logo--footer:hover .brand-logo__wordmark { box-shadow: 2px 2px 0 var(--nb-paper); }
.brand-logo--auth .brand-logo__wordmark { background: var(--nb-marigold); }

/* Every nav item is its own outlined plate; the current section floods
   lime. The bar sets navigation as plates, not as bare text links. */
.up-nav-link {
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--nb-black);
  text-decoration: none;
  padding: 9px 11px 8px;
  background: #FFFFFF;
  border: var(--nb-bd-thin) solid var(--nb-black);
  cursor: pointer;
  font-family: inherit;
  transition: background var(--nb-snap), transform var(--nb-snap), box-shadow var(--nb-snap);
  white-space: nowrap;
  box-shadow: 3px 3px 0 var(--nb-black);
}
.up-nav-link:hover,
.up-dropdown:hover > .up-nav-link {
  background: var(--nb-lime);
  transform: translate(1px, 1px);
  box-shadow: 2px 2px 0 var(--nb-black);
}
.up-nav-link--active,
.up-dropdown--current > .up-nav-link {
  background: var(--nb-lime);
  transform: translate(3px, 3px);
  box-shadow: none;
}

.up-dropdown { position: relative; }
.up-dropdown-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  padding-top: 12px;
  z-index: 100;
}
.up-dropdown:hover .up-dropdown-menu,
.up-dropdown:focus-within .up-dropdown-menu,
.up-dropdown-menu:hover { display: block; }
.up-dropdown-inner {
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  min-width: 220px;
}
.up-dropdown-item {
  display: block;
  padding: 11px 15px;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--nb-black);
  text-decoration: none;
  border-bottom: var(--nb-bd-thin) solid var(--nb-black);
  transition: background var(--nb-snap);
}
.up-dropdown-item:last-child { border-bottom: none; }
.up-dropdown-item:hover { background: var(--nb-lime); }
.up-dropdown--studio .up-dropdown-item:hover { background: var(--nb-marigold); }
.up-dropdown--city .up-dropdown-item:hover   { background: var(--nb-blue); color: var(--nb-on-blue); }
.up-dropdown--city .up-dropdown-item:hover .up-dropdown-item-sub { color: #FFFFFF; }
.up-dropdown--talent .up-dropdown-item:hover { background: var(--nb-pink); }
.up-dropdown-item-sub {
  display: block;
  font-size: 0.75rem;
  color: var(--nb-muted-paper);
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  margin-top: 2px;
}
.up-dropdown-section {
  padding: 9px 15px 8px;
  font-size: 0.6875rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--nb-black);
  background: var(--nb-paper-2);
  font-weight: 800;
  border-bottom: var(--nb-bd-thin) solid var(--nb-black);
}
.up-dropdown-divider { display: none; }
.up-dropdown-item-cta {
  display: block;
  padding: 12px 15px;
  font-size: 0.8125rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--nb-black);
  text-decoration: none;
  font-weight: 900;
  background: var(--nb-marigold);
  border-top: var(--nb-bd) solid var(--nb-black);
  transition: background var(--nb-snap);
}
.up-dropdown-item-cta:hover { background: var(--nb-lime); }

/* Mobile menu */
.up-nav__toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 46px; height: 46px;
  padding: 0;
  background: var(--nb-paper);
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow-sm);
  cursor: pointer;
  color: var(--nb-black);
  transition: transform var(--nb-snap), box-shadow var(--nb-snap), background var(--nb-snap);
}
.up-nav__toggle:hover { background: var(--nb-lime); }
.up-nav__toggle:active { transform: translate(4px,4px); box-shadow: none; }

.up-mobile-panel {
  background: var(--nb-paper);
  border-top: var(--nb-bd) solid var(--nb-black);
  border-bottom: var(--nb-bd) solid var(--nb-black);
  padding: 0 0 1.25rem;
  max-height: calc(100vh - var(--up-nav-h));
  overflow-y: auto;
}
.up-mobile-link {
  display: block;
  padding: 13px 1.25rem;
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--nb-black);
  text-decoration: none;
  border-bottom: var(--nb-bd-thin) solid var(--nb-black);
}
.up-mobile-link:hover { background: var(--nb-lime); }
.up-mobile-label {
  padding: 12px 1.25rem 11px;
  font-size: 0.6875rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--nb-black);
  background: var(--nb-marigold);
  font-weight: 800;
  border-bottom: var(--nb-bd) solid var(--nb-black);
  border-top: var(--nb-bd) solid var(--nb-black);
}

.up-nav__desktop { display: flex; align-items: center; gap: 9px; margin-left: auto; }
.up-nav__auth {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-left: 1rem;
  margin-left: 0.6rem;
  border-left: var(--nb-bd) solid var(--nb-black);
}
.up-nav__auth .up-btn { padding: 0.65rem 1.05rem; font-size: 0.75rem; box-shadow: var(--nb-shadow-sm); }
.up-nav__auth .up-btn:hover { box-shadow: 2px 2px 0 var(--nb-black); }
.up-nav__auth form { margin: 0; }

@media (max-width: 1120px) {
  .up-nav__desktop { display: none; }
  .up-nav__toggle { display: inline-flex; }
}
@media (min-width: 1121px) {
  .up-mobile-panel { display: none !important; }
}

/* ══════════════════════ FOOTER ══════════════════════ */

.up-footer { background: var(--nb-black); color: #FFFFFF; }
.up-footer__cta-bar {
  background: var(--nb-blue);
  border-bottom: var(--nb-bd) solid var(--nb-black);
  padding: 3.5rem 1.5rem;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2.5rem;
  align-items: center;
}
.up-footer__cta-inner {
  max-width: var(--up-max-wide);
  margin: 0 auto;
  width: 100%;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2.5rem;
  align-items: center;
}
.up-footer__grid {
  max-width: var(--up-max-wide);
  margin: 0 auto;
  padding: 4rem 1.5rem 3.5rem;
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;
  gap: 2.5rem;
}
.up-footer__grid--minimal { grid-template-columns: 1fr; padding-top: 3rem; padding-bottom: 2.5rem; }
.up-footer__link {
  font-size: 0.9375rem;
  font-weight: 500;
  color: rgba(255,255,255,0.82);   /* 12.6:1 on black */
  text-decoration: none;
  transition: color var(--nb-snap);
  display: inline-block;
}
.up-footer__link:hover { color: var(--nb-lime); text-decoration: underline; }
.up-footer__col-label {
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--nb-black);
  background: var(--nb-lime);
  border: var(--nb-bd-thin) solid var(--nb-black);
  display: inline-block;
  padding: 5px 9px 4px;
  font-weight: 800;
  margin: 0 0 1.25rem;
}
.up-footer__bottom {
  border-top: var(--nb-bd) solid rgba(255,255,255,0.28);
  max-width: var(--up-max-wide);
  margin: 0 auto;
  padding: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1rem;
  font-size: 0.8125rem;
  color: rgba(255,255,255,0.72);   /* 9.9:1 on black */
}
.up-footer__note { font-size: 0.9375rem; color: rgba(255,255,255,0.82); line-height: 1.6; margin: 0 0 0.6rem; max-width: 30ch; }
.up-footer__note--dim { color: rgba(255,255,255,0.66); font-size: 0.875rem; }

@media (max-width: 980px) { .up-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) {
  .up-footer__grid { grid-template-columns: 1fr; }
  .up-footer__cta-bar, .up-footer__cta-inner { grid-template-columns: 1fr; }
}

/* ══════════════════════ ADMIN BAR ══════════════════════ */

.up-admin-bar {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 60;
  height: var(--up-admin-bar-h);
  background: var(--nb-pink);
  color: var(--nb-black);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 1.25rem;
  font-size: 0.8125rem;
  font-weight: 700;
  border-bottom: var(--nb-bd) solid var(--nb-black);
}
.up-admin-bar__label {
  font-size: 0.6875rem;
  font-weight: 800;
  border: var(--nb-bd-thin) solid var(--nb-black);
  background: var(--nb-marigold);
  padding: 2px 6px 1px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.up-admin-bar__link { color: var(--nb-black); font-size: 0.8125rem; font-weight: 800; text-decoration: underline; }
.up-admin-bar--variant { background: var(--nb-marigold); }

/* ══════════════════════ FLASH ══════════════════════ */

.up-flash-notice, .up-flash-alert {
  padding: 0.9rem 1.5rem;
  font-size: 0.9375rem;
  font-weight: 700;
  text-align: center;
  border-bottom: var(--nb-bd) solid var(--nb-black);
  color: var(--nb-black);
}
.up-flash-notice { background: var(--nb-lime); }
.up-flash-alert  { background: var(--nb-pink); }

/* ══════════════════════ SPLIT ══════════════════════ */

.up-split { display: grid; grid-template-columns: 1fr 1.5fr; gap: 3.5rem; align-items: start; }
@media (max-width: 900px) { .up-split { grid-template-columns: 1fr; gap: 2.25rem; } }

/* ══════════════════════ FILTER PILLS ══════════════════════ */

.up-filter-bar {
  background: var(--nb-marigold);
  border-bottom: var(--nb-bd) solid var(--nb-black);
  padding: 1.25rem 0;
}
.up-filter-list { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.up-filter-pill {
  font-size: 0.8125rem;
  font-weight: 800;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  padding: 8px 14px 7px;
  border-radius: 0;
  text-decoration: none;
  border: var(--nb-bd) solid var(--nb-black);
  background: #FFFFFF;
  color: var(--nb-black);
  box-shadow: 3px 3px 0 var(--nb-black);
  transition: transform var(--nb-snap), box-shadow var(--nb-snap), background var(--nb-snap);
}
.up-filter-pill:hover { background: var(--nb-lime); transform: translate(1px,1px); box-shadow: 2px 2px 0 var(--nb-black); }
.up-filter-pill--active { background: var(--nb-black); color: var(--nb-lime); transform: translate(3px,3px); box-shadow: none; }

/* ══════════════════════ TALENT CARDS ══════════════════════ */

.up-talent-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1.75rem; }
.up-talent-grid--featured { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 2rem; }
.up-talent-card {
  text-decoration: none;
  display: block;
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  color: var(--nb-black);
  transition: transform var(--nb-snap), box-shadow var(--nb-snap);
}
.up-talent-card:hover { transform: translate(3px,3px); box-shadow: 3px 3px 0 var(--nb-black); }
.up-talent-card:active { transform: translate(6px,6px); box-shadow: none; }
.up-talent-card__media {
  aspect-ratio: 3 / 4;
  overflow: hidden;
  background: var(--nb-paper-2);
  position: relative;
  border-bottom: var(--nb-bd) solid var(--nb-black);
}
.up-talent-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.up-talent-card__initials {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 90;
  font-size: 3.25rem;
  font-weight: 900;
  letter-spacing: -0.03em;
  background: var(--nb-pink);
  color: var(--nb-black);
}
.up-talent-card__body { padding: 1.1rem 1.15rem 1.25rem; }
.up-talent-card__body .up-tag { margin-bottom: 0.6rem; }
.up-talent-card__name {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 94;
  font-size: 1.125rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: -0.015em;
  color: var(--nb-black);
  margin: 0 0 0.3rem;
}
.up-talent-card__tagline { font-size: 0.9375rem; color: var(--up-body); margin: 0; line-height: 1.45; }
.up-talent-card__location { font-size: 0.8125rem; font-weight: 700; color: var(--nb-muted-paper); margin: 0.55rem 0 0; }

.up-talent-card--featured { position: relative; aspect-ratio: 4 / 3; }
.up-talent-card--featured .up-talent-card__media {
  position: absolute; inset: 0; aspect-ratio: unset;
  background: var(--nb-black); border-bottom: none;
}
.up-talent-card--featured .up-talent-card__media img { opacity: 1; }
/* Solid caption plate, not a gradient fade: legibility must not depend
   on what the portrait happens to contain. */
.up-talent-card--featured .up-talent-card__overlay { display: none; }
.up-talent-card--featured .up-talent-card__body {
  position: absolute; bottom: 0; left: 0; right: 0;
  padding: 1.05rem 1.15rem 1.15rem; z-index: 2;
  background: var(--nb-black);
  border-top: var(--nb-bd) solid var(--nb-black);
}
.up-talent-card--featured .up-talent-card__name { color: #FFFFFF; font-size: 1.375rem; }
.up-talent-card--featured .up-talent-card__tagline { color: rgba(255,255,255,0.82); }
.up-talent-card--featured .up-talent-card__location { color: rgba(255,255,255,0.72); }
.up-talent-card--featured .up-talent-card__body .up-tag {
  background: transparent; color: #FFFFFF; border-color: rgba(255,255,255,0.6);
}

/* ══════════════════════ CATEGORY GRID ══════════════════════ */

.up-category-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
  background: transparent;
}
.up-category-card {
  padding: 2rem 1.5rem;
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
}
.up-category-card__icon { font-size: 1.25rem; margin: 0 0 1rem; color: var(--nb-black); }
.up-category-card__title {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 94;
  font-size: 1rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  color: var(--nb-black);
  margin: 0 0 0.65rem;
}
.up-category-card__desc { font-size: 0.9375rem; color: var(--up-body); line-height: 1.55; margin: 0; }

@media (max-width: 980px) { .up-category-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .up-category-grid { grid-template-columns: 1fr; } }

/* ══════════════════════ PROCESS ══════════════════════ */

.up-process-list { display: flex; flex-direction: column; gap: 0; border: var(--nb-bd) solid currentColor; }
.up-process-step { border-bottom: var(--nb-bd) solid currentColor; padding: 1.75rem 1.5rem; }
.up-process-step:last-child { border-bottom: none; }
.up-process-step__num {
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 800;
  color: var(--nb-black);
  background: var(--nb-lime);
  border: var(--nb-bd-thin) solid var(--nb-black);
  display: inline-block;
  padding: 4px 8px 3px;
  margin: 0 0 0.85rem;
}
.up-process-step__title {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 92;
  font-size: 1.375rem;
  font-weight: 900;
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  color: inherit;
  margin: 0 0 0.6rem;
}
.up-process-step__body { font-size: 1rem; color: inherit; opacity: 0.86; line-height: 1.6; margin: 0; }

/* ══════════════════════ SHOP ══════════════════════ */

.up-shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 2rem; }
.up-shop-grid--featured { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.up-shop-card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: var(--nb-black);
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  transition: transform var(--nb-snap), box-shadow var(--nb-snap);
}
.up-shop-card:hover { transform: translate(3px,3px); box-shadow: 3px 3px 0 var(--nb-black); }
.up-shop-card:active { transform: translate(6px,6px); box-shadow: none; }
.up-shop-card__media {
  position: relative;
  aspect-ratio: 4 / 5;
  background: var(--nb-paper-2);
  overflow: hidden;
  border-bottom: var(--nb-bd) solid var(--nb-black);
}
.up-shop-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.up-shop-card__placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: var(--nb-marigold);
  color: var(--nb-black);
}
.up-shop-card__badge {
  position: absolute;
  top: 10px; left: 10px;
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: var(--nb-pink);
  color: var(--nb-black);
  border: var(--nb-bd-thin) solid var(--nb-black);
  padding: 4px 8px 3px;
}
.up-shop-card__body { padding: 1.25rem; flex: 1; display: flex; flex-direction: column; }
.up-shop-card__category {
  font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--nb-muted-paper); margin: 0 0 0.5rem;
}
.up-shop-card__title {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 94;
  font-size: 1.25rem; font-weight: 900; text-transform: uppercase;
  letter-spacing: -0.02em; line-height: 1.05; margin: 0 0 0.5rem; color: var(--nb-black);
}
.up-shop-card__tagline { font-size: 0.9375rem; color: var(--up-body); line-height: 1.5; margin: 0 0 1rem; flex: 1; }
.up-shop-card__price {
  font-size: 1rem; font-weight: 900; color: var(--nb-black); margin: 0;
  background: var(--nb-marigold);
  border: var(--nb-bd-thin) solid var(--nb-black);
  display: inline-block; padding: 4px 9px 3px; align-self: flex-start;
}
.up-shop-detail { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: start; }
.up-shop-detail__media { border: var(--nb-bd) solid var(--nb-black); box-shadow: var(--nb-shadow-lg); background: #FFFFFF; }
.up-shop-detail__media img { width: 100%; display: block; object-fit: cover; }
.up-shop-detail__price {
  font-size: 1.5rem; font-weight: 900; color: var(--nb-black); margin: 0 0 1.5rem;
  background: var(--nb-marigold); border: var(--nb-bd) solid var(--nb-black);
  display: inline-block; padding: 8px 14px 6px; box-shadow: var(--nb-shadow-sm);
}
.up-shop-detail__desc { font-size: 1.0625rem; line-height: 1.65; color: var(--up-body); max-width: 62ch; }
@media (max-width: 820px) { .up-shop-detail { grid-template-columns: 1fr; gap: 2rem; } }

/* ══════════════════════ LEGAL / LONG-FORM ══════════════════════ */

.up-legal__section { margin-bottom: 2.5rem; max-width: 70ch; }
.up-legal__section h2 {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 92;
  font-size: 1.5rem; font-weight: 900; font-style: normal;
  text-transform: uppercase; letter-spacing: -0.02em;
  color: var(--nb-black); margin: 0 0 1rem; line-height: 1.05;
}
.up-legal__section h3 { font-size: 1.0625rem; font-weight: 800; color: var(--nb-black); margin: 1.75rem 0 0.5rem; line-height: 1.3; }
.up-legal__section p, .up-legal__section li { font-size: 1rem; color: var(--up-body); line-height: 1.7; }
.up-legal__section p { margin: 0 0 1rem; }
.up-legal__section ul { margin: 0 0 1rem; padding-left: 1.25rem; }
.up-legal__section li { margin-bottom: 0.5rem; }
.up-legal__section a { color: var(--nb-black); text-decoration: underline; font-weight: 700; }
.up-legal__section a:hover { background: var(--nb-lime); }
.up-legal__section code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.85em; background: var(--nb-lime);
  border: var(--nb-bd-thin) solid var(--nb-black); padding: 1px 5px;
}

/* ══════════════════════ UNDER CONSTRUCTION ══════════════════════ */

.up-uc-hero { min-height: calc(100vh - var(--up-nav-h)); display: flex; align-items: center; position: relative; }
.up-uc-hero__inner { position: relative; z-index: 1; text-align: left; padding: 4rem 0 5rem; }
.up-uc-hero__title {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 90;
  font-size: clamp(2.75rem, 7.5vw, 5.5rem);
  font-weight: 900; line-height: 0.88; letter-spacing: -0.035em;
  text-transform: uppercase; color: #FFFFFF; margin: 0.75rem 0 1.25rem;
}
.up-uc-hero__sub { font-size: clamp(1.0625rem, 2vw, 1.25rem); color: rgba(255,255,255,0.86); line-height: 1.55; max-width: 52ch; margin: 0; }
.up-uc-progress { margin-top: 2.5rem; display: flex; flex-direction: column; align-items: flex-start; gap: 0.75rem; }
.up-uc-progress__track {
  width: min(320px, 80vw); height: 22px;
  background: transparent;
  border: var(--nb-bd) solid var(--nb-paper);
  overflow: hidden;
}
.up-uc-progress__fill { width: 38%; height: 100%; background: var(--nb-lime); }
.up-uc-progress__label { font-size: 0.75rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--nb-black); background: var(--nb-lime); border: var(--nb-bd-thin) solid var(--nb-black); padding: 4px 8px 3px; font-weight: 800; }
.up-uc-strip { background: var(--nb-paper); border-top: var(--nb-bd) solid var(--nb-black); padding: 3rem 0; }
.up-uc-strip__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
@media (max-width: 820px) { .up-uc-strip__grid { grid-template-columns: 1fr; gap: 1.5rem; } }
.up-uc-strip__label {
  font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--nb-black); background: var(--nb-marigold);
  border: var(--nb-bd-thin) solid var(--nb-black); display: inline-block;
  padding: 4px 8px 3px; margin: 0 0 0.75rem;
}
.up-uc-strip__text { font-size: 1rem; color: var(--up-body); line-height: 1.6; margin: 0; }

/* ══════════════════════ COOKIE BANNER ══════════════════════ */

.up-cookie-banner {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 10000;
  padding: 1.25rem;
  background: var(--nb-marigold);
  border-top: var(--nb-bd) solid var(--nb-black);
  color: var(--nb-black);
  font-family: inherit;
}
.up-cookie-banner__inner { max-width: var(--up-max-wide); margin: 0 auto; display: flex; flex-direction: column; gap: 1rem; }
.up-cookie-banner__copy { flex: 1; min-width: 0; }
.up-cookie-banner__title {
  font-size: 0.75rem; font-weight: 900; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--nb-black); margin: 0 0 0.5rem;
}
.up-cookie-banner__text { font-size: 0.9375rem; line-height: 1.55; color: #1A1A16; margin: 0; max-width: 72ch; }
.up-cookie-banner__link { color: var(--nb-black); text-decoration: underline; font-weight: 700; }
.up-cookie-banner__link:hover { background: var(--nb-lime); }
.up-cookie-banner__actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.up-cookie-banner__btn { font-size: 0.75rem !important; padding: 0.65rem 1.1rem !important; white-space: nowrap; }
.up-cookie-banner .up-btn--secondary { background: #FFFFFF; color: var(--nb-black); border-color: var(--nb-black); }
.up-cookie-banner .up-btn--secondary:hover { background: var(--nb-lime); }
.up-cookie-banner__prefs {
  display: flex; flex-direction: column; gap: 0.75rem;
  padding-top: 1rem; border-top: var(--nb-bd) solid var(--nb-black);
}
.up-cookie-banner__option { display: flex; align-items: flex-start; gap: 0.65rem; font-size: 0.9375rem; color: #1A1A16; cursor: pointer; }
.up-cookie-banner__option input { margin-top: 0.25rem; flex-shrink: 0; cursor: pointer; width: 18px; height: 18px; }
.up-cookie-banner__option strong { display: block; font-weight: 800; color: var(--nb-black); margin-bottom: 0.15rem; }
.up-cookie-banner__option small { display: block; font-size: 0.8125rem; color: #3A3A34; line-height: 1.45; }
.up-cookie-banner__option.is-disabled { opacity: 0.55; cursor: default; }

@media (min-width: 820px) {
  .up-cookie-banner__inner { flex-direction: row; flex-wrap: wrap; align-items: flex-end; }
  .up-cookie-banner__prefs { flex-basis: 100%; }
}

/* ══════════════════════ FLATPICKR ══════════════════════ */

.flatpickr-calendar {
  font-family: 'Archivo', sans-serif;
  font-size: 0.9375rem;
  border: var(--nb-bd) solid var(--nb-black);
  border-radius: 0;
  box-shadow: var(--nb-shadow);
  padding: 8px;
  width: 310px;
  background: #FFFFFF;
}
.flatpickr-calendar::before, .flatpickr-calendar::after { display: none !important; }
.flatpickr-day { border-radius: 0; font-weight: 600; }
.flatpickr-day:hover { background: var(--nb-lime); border-color: var(--nb-black); }
.flatpickr-day.selected, .flatpickr-day.selected:hover {
  background: var(--nb-blue); border-color: var(--nb-black); color: #FFFFFF; border-radius: 0; font-weight: 800;
}
.flatpickr-day.today { border-color: var(--nb-black); border-width: 2px; }
.flatpickr-months .flatpickr-month { color: var(--nb-black); }
.flatpickr-current-month .flatpickr-monthDropdown-months, .numInputWrapper { font-weight: 800; }

/* ══════════════════════ MOTION ══════════════════════
   One authored entrance, on the first viewport only: the plates
   land into their shadows the way the world moves under the hand.
   Everything else is the press. */

@keyframes nb-land {
  from { opacity: 0; transform: translate(-10px, -10px); }
  to   { opacity: 1; transform: translate(0, 0); }
}
.nb-land { animation: nb-land var(--nb-ease) both; }
.nb-land--1 { animation-delay: 40ms; }
.nb-land--2 { animation-delay: 120ms; }
.nb-land--3 { animation-delay: 200ms; }
.nb-land--4 { animation-delay: 280ms; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .nb-land { opacity: 1; transform: none; }
}

/* ══════════════════════ UTILITIES ══════════════════════ */

.nb-rule { height: var(--nb-bd); background: var(--nb-black); border: 0; margin: 0; }
.nb-stack { display: flex; flex-direction: column; }
.nb-measure { max-width: 68ch; }
.visually-hidden {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.up-skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--nb-lime); color: var(--nb-black);
  border: var(--nb-bd) solid var(--nb-black); box-shadow: var(--nb-shadow);
  padding: 0.85rem 1.25rem; font-weight: 800; text-transform: uppercase;
  font-size: 0.8125rem; letter-spacing: 0.06em; text-decoration: none;
}
.up-skip-link:focus { left: 1rem; top: 1rem; }

img { max-width: 100%; }

/* ══════════════════════════════════════════════════════════════
   HOME — thesis split, live plate, close block
   ══════════════════════════════════════════════════════════════ */

.up-home-hero {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: 3.5rem;
  align-items: start;
  padding: 1rem 0 0;
}
.up-home-hero__claim { min-width: 0; }
/* The highlight hugs the cap height — a printed rule around the word,
   not a box the word floats inside. */
.up-home-hero__em {
  font-style: normal;
  color: var(--nb-black);
  background: var(--nb-marigold);
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: 4px 4px 0 var(--nb-black);
  padding: 0.04em 0.12em 0;
  display: inline-block;
  line-height: 0.72;
  vertical-align: baseline;
  margin-right: 0.04em;
}
.up-home-hero__live { min-width: 0; }

/* Live plate: the right column is real event data, never decoration. */
.up-live-plate {
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow-lg);
}
.up-live-plate__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.85rem 1.1rem 0.8rem;
  background: var(--nb-blue);
  color: var(--nb-on-blue);
  border-bottom: var(--nb-bd) solid var(--nb-black);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.up-live-plate__head a { color: var(--nb-on-blue); text-decoration: none; white-space: nowrap; }
.up-live-plate__head a:hover { text-decoration: underline; }

.up-live-row {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem 1.1rem;
  border-bottom: var(--nb-bd-thin) solid var(--nb-black);
  text-decoration: none;
  color: var(--nb-black);
  transition: background var(--nb-snap);
}
.up-live-row:last-child { border-bottom: none; }
.up-live-row:hover { background: var(--nb-lime); }
.up-live-row:hover .up-live-row__arrow { transform: translateX(5px); }
.up-live-row__date {
  flex-shrink: 0;
  width: 54px;
  text-align: center;
  border: var(--nb-bd-thin) solid var(--nb-black);
  background: var(--nb-marigold);
  padding: 5px 0 4px;
}
.up-live-row__day {
  display: block;
  font-variation-settings: 'wdth' 92;
  font-size: 1.3rem;
  font-weight: 900;
  line-height: 0.92;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.up-live-row__mon {
  display: block;
  font-size: 0.625rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-top: 2px;
}
.up-live-row__body { flex: 1; min-width: 0; }
.up-live-row__title {
  display: block;
  font-size: 0.9375rem;
  font-weight: 800;
  line-height: 1.25;
  letter-spacing: -0.005em;
  margin-bottom: 3px;
  overflow-wrap: anywhere;
}
.up-live-row__meta {
  display: block;
  font-size: 0.8125rem;
  color: var(--nb-muted-paper);
  line-height: 1.35;
}
.up-live-row__arrow {
  flex-shrink: 0;
  font-weight: 800;
  transition: transform var(--nb-snap);
}
.up-live-empty { padding: 2rem 1.25rem; text-align: center; }
.up-live-empty__title {
  font-variation-settings: 'wdth' 92;
  font-size: 1.125rem; font-weight: 900; text-transform: uppercase;
  letter-spacing: -0.01em; margin: 0 0 0.4rem;
}
.up-live-empty__body { font-size: 0.9375rem; color: var(--nb-muted-paper); margin: 0 0 1.25rem; }

@media (max-width: 1000px) {
  .up-home-hero { grid-template-columns: 1fr; gap: 2.5rem; }
  .up-home-hero__live { max-width: 560px; }
}

/* Feature plate — the single highlighted item in a quiet section. */
.up-feature-plate {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.85rem;
  padding: 2rem 1.75rem;
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow-lg);
  text-decoration: none;
  color: var(--nb-black);
  transition: transform var(--nb-snap), box-shadow var(--nb-snap);
}
a.up-feature-plate:hover { transform: translate(4px,4px); box-shadow: 6px 6px 0 var(--nb-black); }
a.up-feature-plate:active { transform: translate(10px,10px); box-shadow: none; }
.up-feature-plate--static { cursor: default; }
.up-feature-plate__title {
  font-variation-settings: 'wdth' 92;
  font-size: clamp(1.375rem, 2.4vw, 1.875rem);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: -0.025em;
  line-height: 0.96;
  margin: 0;
  color: var(--nb-black);
}
.up-feature-plate__meta { font-size: 0.9375rem; font-weight: 700; color: var(--nb-muted-paper); margin: 0; }
.up-feature-plate__body { font-size: 1rem; color: var(--up-body); line-height: 1.55; margin: 0; max-width: 52ch; }

/* Partner chips — honest presentation when no logo assets exist. */
.up-partner-row { display: flex; flex-wrap: wrap; gap: 12px; }
.up-partner-chip {
  font-size: 0.875rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.7rem 1.1rem;
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow-sm);
  color: var(--nb-black);
}

/* Close block */
.up-close { display: grid; grid-template-columns: 1fr; gap: 2.5rem; align-items: center; }
@media (max-width: 820px) { .up-close { gap: 2rem; } }

/* Past-event variant of the live plate: honest, not dressed as upcoming. */
.up-live-row__date--past { background: var(--nb-paper-2); }
.up-live-note {
  margin: 0;
  padding: 0.75rem 1.1rem;
  font-size: 0.8125rem;
  font-weight: 700;
  color: var(--nb-muted-paper);
  background: var(--nb-paper);
  border-top: var(--nb-bd-thin) solid var(--nb-black);
}

/* ══════════════════════════════════════════════════════════════
   WORK — case-study presentation
   ══════════════════════════════════════════════════════════════ */

.up-work-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.up-work-grid--featured { grid-template-columns: repeat(2, 1fr); }
.up-work-grid--single { grid-template-columns: 1fr; }
@media (max-width: 980px) { .up-work-grid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; } }
@media (max-width: 620px) { .up-work-grid, .up-work-grid--featured { grid-template-columns: 1fr; } }

.up-work-card {
  position: relative;
  display: block;
  text-decoration: none;
  color: var(--nb-black);
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  transition: transform var(--nb-snap), box-shadow var(--nb-snap);
}
a.up-work-card:hover { transform: translate(3px,3px); box-shadow: 3px 3px 0 var(--nb-black); }
a.up-work-card:active { transform: translate(6px,6px); box-shadow: none; }

.up-work-card__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--nb-paper-2);
  border-bottom: var(--nb-bd) solid var(--nb-black);
}
.up-work-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.up-work-card__placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: var(--nb-paper-2);
  background-image:
    repeating-linear-gradient(45deg, transparent, transparent 14px, rgba(0,0,0,0.06) 14px, rgba(0,0,0,0.06) 28px);
}
.up-work-card__placeholder span {
  font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.12em;
  text-transform: uppercase; color: #5C5C55;
  background: var(--nb-paper); border: var(--nb-bd-thin) solid var(--nb-black);
  padding: 5px 9px 4px;
}

/* The caption is a solid plate butted against the image on a hard rule —
   no gradient fade, and legibility never depends on what the photo shows. */
.up-work-card--featured .up-work-card__media { aspect-ratio: 16 / 10; border-bottom: none; }
.up-work-card--featured .up-work-card__overlay { display: none; }
.up-work-card--featured .up-work-card__body {
  position: absolute; bottom: 0; left: 0; right: 0;
  padding: 1.15rem 1.25rem 1.25rem; z-index: 2;
  background: var(--nb-black);
  border-top: var(--nb-bd) solid var(--nb-black);
  display: flex; flex-direction: column; align-items: flex-start; gap: 0.55rem;
}
.up-work-card__title {
  font-variation-settings: 'wdth' 92;
  font-size: clamp(1.25rem, 2.2vw, 1.75rem);
  font-weight: 900; text-transform: uppercase;
  letter-spacing: -0.025em; line-height: 0.98;
  margin: 0; color: #FFFFFF;
}
.up-work-card--featured .up-work-card__meta { color: rgba(255,255,255,0.82); margin: 0; font-size: 0.875rem; font-weight: 600; }

.up-work-card__foot { padding: 1.1rem 1.15rem 1.25rem; }
.up-work-card__cat {
  display: inline-block;
  font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--nb-black);
  background: var(--nb-lime); border: var(--nb-bd-thin) solid var(--nb-black);
  padding: 4px 8px 3px; margin-bottom: 0.65rem;
}
.up-work-card__name {
  font-variation-settings: 'wdth' 94;
  font-size: 1.125rem; font-weight: 900; text-transform: uppercase;
  letter-spacing: -0.015em; line-height: 1.05; margin: 0 0 0.35rem; color: var(--nb-black);
}
.up-work-card__meta { font-size: 0.875rem; color: var(--nb-muted-paper); margin: 0; font-weight: 600; }

/* ── Placeholder marking: never let filler read as real work ── */
.up-work-card.is-placeholder { box-shadow: var(--nb-shadow-sm); }
.up-work-card.is-placeholder .up-work-card__name,
.up-work-card.is-placeholder .up-work-card__meta,
.up-work-card.is-placeholder .up-work-card__cat {
  color: #55554F; background: var(--nb-paper-2); border-color: #55554F;
}
.up-work-card.is-placeholder .up-work-card__cat { display: inline-block; }
.up-work-card.is-placeholder .up-work-card__name,
.up-work-card.is-placeholder .up-work-card__meta { background: none; }
/* Inside the solid caption plate the placeholder text stays legible. */
.up-work-card--featured.is-placeholder .up-work-card__title { color: rgba(255,255,255,0.7); }
.up-work-card--featured.is-placeholder .up-work-card__meta { color: rgba(255,255,255,0.6); }
.up-work-card--featured.is-placeholder .up-tag {
  background: transparent; color: rgba(255,255,255,0.7); border-color: rgba(255,255,255,0.5);
}
.up-placeholder-flag {
  position: absolute; top: -3px; right: -3px; z-index: 3;
  font-size: 0.625rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
  background: var(--nb-pink); color: var(--nb-black);
  border: var(--nb-bd) solid var(--nb-black);
  padding: 4px 8px 3px;
}
.up-placeholder-notice {
  display: flex; flex-wrap: wrap; gap: 0.5rem 0.85rem; align-items: baseline;
  margin: 0; font-size: 0.9375rem; color: var(--nb-black);
}
.up-placeholder-notice strong {
  font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase;
  background: var(--nb-black); color: var(--nb-marigold);
  padding: 5px 9px 4px;
}
.up-placeholder-cta {
  margin-top: 2.5rem;
  display: flex; flex-wrap: wrap; gap: 1.5rem;
  align-items: center; justify-content: space-between;
  background: var(--nb-lime);
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  padding: 2rem 1.75rem;
}

/* ══════════════════════════════════════════════════════════════
   CONTACT
   ══════════════════════════════════════════════════════════════ */

.up-contact { display: grid; grid-template-columns: 1.4fr 0.85fr; gap: 3.5rem; align-items: start; }
.up-contact__form { min-width: 0; }
.up-contact__aside { display: flex; flex-direction: column; gap: 1.5rem; min-width: 0; }
@media (max-width: 900px) {
  .up-contact { grid-template-columns: 1fr; gap: 2.5rem; }
  .up-contact__aside { order: -1; }
}

.up-contact-plate {
  background: var(--nb-lime);
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  padding: 1.5rem 1.35rem;
}
.up-contact-plate--blue { background: var(--nb-blue); color: var(--nb-on-blue); }
.up-contact-plate--paper { background: #FFFFFF; }
.up-contact-plate__label {
  font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.12em;
  text-transform: uppercase; margin: 0 0 0.6rem; color: inherit; opacity: 0.85;
}
.up-contact-plate__value {
  display: block;
  font-variation-settings: 'wdth' 94;
  font-size: 1.0625rem; font-weight: 900; letter-spacing: -0.01em;
  color: inherit; margin: 0; overflow-wrap: anywhere;
}
a.up-contact-plate__value { text-decoration: underline; text-decoration-thickness: 3px; }
a.up-contact-plate__value:hover { background: var(--nb-black); color: var(--nb-lime); }
.up-contact-plate__note { font-size: 0.9375rem; line-height: 1.5; margin: 0.6rem 0 0; color: inherit; opacity: 0.88; }

/* ══════════════════════════════════════════════════════════════
   ABOUT — places, statement
   ══════════════════════════════════════════════════════════════ */

.up-place-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.75rem; }
@media (max-width: 980px) { .up-place-grid { grid-template-columns: 1fr; } }

.up-place {
  background: #FFFFFF;
  border: var(--nb-bd) solid var(--nb-black);
  box-shadow: var(--nb-shadow);
  padding: 1.85rem 1.6rem;
}
.up-place--blue { background: var(--nb-blue); color: var(--nb-on-blue); }
.up-place--lime { background: var(--nb-lime); }
.up-place__name {
  font-variation-settings: 'wdth' 92;
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  font-weight: 900; text-transform: uppercase;
  letter-spacing: -0.03em; line-height: 0.95;
  margin: 0 0 0.5rem; color: inherit;
}
.up-place__meta {
  font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.12em;
  text-transform: uppercase; margin: 0 0 1rem; color: inherit; opacity: 0.8;
}
.up-place__body { font-size: 1rem; line-height: 1.55; margin: 0; color: inherit; opacity: 0.94; }
.up-place--blue .up-place__body { color: var(--nb-muted-blue); opacity: 1; }

.up-statement {
  font-variation-settings: 'wdth' 90;
  font-size: clamp(1.85rem, 6vw, 4.25rem);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: -0.035em;
  line-height: 0.92;
  color: var(--nb-black);
  margin: 0;
  max-width: 22ch;
  text-wrap: balance;
}

.up-split--center { align-items: center; }

/* ── Mobile: tighten the vertical rhythm ── */
@media (max-width: 640px) {
  .up-hero { padding: 2.75rem 0 3.25rem; }
  .up-home-hero { padding-top: 0; gap: 2rem; }
  .up-hero__actions { margin-top: 1.75rem; gap: 10px; }
  .up-hero__actions .up-btn { flex: 1 1 auto; min-width: 0; }
  .up-section-head { margin-bottom: 1.75rem; }
  .up-close { gap: 1.75rem; }
  .up-statement { font-size: clamp(1.625rem, 9vw, 2.5rem); }
  .up-footer__cta-bar { padding: 2.5rem 1.125rem; }
  .up-footer__grid { padding: 2.75rem 1.125rem 2.5rem; gap: 2rem; }
  .up-footer__bottom { padding: 1.25rem 1.125rem; }
  .up-work-grid, .up-place-grid, .up-talent-grid, .up-shop-grid { gap: 1.25rem; }
  .up-chapter-card { padding: 1.5rem 1.15rem 1.35rem; }
  .up-waitlist { padding: 2.5rem 1.25rem; }
}

/* ══════════════════════════════════════════════════════════════
   LEGACY ALIGNMENT OVERRIDE
   The incumbent site centred its heroes with inline styles across
   ~50 views. This world is hard-left throughout, and mixed alignment
   is the single loudest tell that a redesign only reached some pages.
   `!important` is warranted here and only here: inline styles cannot
   be beaten otherwise, and rewriting fifty templates to delete one
   declaration each would be a worse trade.
   ══════════════════════════════════════════════════════════════ */
.up-hero,
.up-hero > .up-container,
.up-hero > .terrain-content,
.up-hero .up-container,
.up-hero .terrain-content,
.up-uc-hero__inner { text-align: left !important; }

.up-hero__sub--center,
.up-hero .up-lead,
.up-uc-hero__sub { margin-left: 0 !important; margin-right: 0 !important; }

.up-hero__actions--center { justify-content: flex-start !important; }

/* In the flex-column heroes, `.up-container`'s auto margins make the
   column shrink-to-fit and centre, which reads as indented text. Give
   it its full measure and let the auto margins centre the column only. */
.up-hero > .up-container,
.up-hero > .terrain-content,
.up-uc-hero > .up-container { width: 100%; }

/* The brand watermark was a centred ghost serif; it is a right-hand
   stencil block in this world. */
.up-hero__watermark { justify-content: flex-end !important; }

/* The legacy accent band sat in normal flow, so inside a flex-end hero it
   landed above the section's bottom padding and drew a stray rule across
   the field. Pin it to the field's bottom edge; the section's own border
   supplies the rule beneath it. */
.up-hero { position: relative; }
.up-hero > .terrain-band {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  border-bottom: none;
}
/* A band the same colour as its field is not an accent — hide it. */
.terrain-city > .terrain-band--city,
.terrain-wild > .terrain-band--wild { display: none; }

/* ══════════════════════════════════════════════════════════════
   ICONS — drawn, never a unicode glyph standing in for a system
   ══════════════════════════════════════════════════════════════ */

.up-icon { display: inline-block; flex-shrink: 0; vertical-align: -0.14em; }

/* The bordered square that carries an icon — the world's recurring
   icon container, matching the plate grammar of every other element. */
.up-icon-plate {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex-shrink: 0;
  background: #FFFFFF;
  color: var(--nb-black);
  border: var(--nb-bd) solid var(--nb-black);
  transition: background var(--nb-snap), transform var(--nb-snap);
}
.up-icon-plate--lime     { background: var(--nb-lime); }
.up-icon-plate--marigold { background: var(--nb-marigold); }
.up-icon-plate--sm       { width: 26px; height: 26px; border-width: var(--nb-bd-thin); }
.terrain-studio .up-icon-plate,
.up-footer .up-icon-plate { background: transparent; color: #FFFFFF; border-color: var(--nb-paper); }
.terrain-city .up-icon-plate { background: transparent; color: #FFFFFF; border-color: var(--nb-paper); }

a:hover > .up-icon-plate,
a:hover .up-icon-plate { background: var(--nb-lime); color: var(--nb-black); border-color: var(--nb-black); }

/* ══════════════════════════════════════════════════════════════
   TYPE SCALE — the display steps live in the system, not inline
   ══════════════════════════════════════════════════════════════ */

.up-h1, .up-h2, .up-h3, .up-h4 {
  font-family: 'Archivo', 'Helvetica Neue', Arial, sans-serif;
  font-weight: 900;
  text-transform: uppercase;
  color: inherit;
  margin: 0;
  text-wrap: balance;
}
.up-h1 { font-variation-settings: 'wdth' 90; font-size: clamp(2.75rem, 8.5vw, 6rem);   line-height: 0.92; letter-spacing: -0.035em; }
.up-h2 { font-variation-settings: 'wdth' 90; font-size: clamp(1.85rem, 4vw, 3rem);     line-height: 0.94; letter-spacing: -0.03em; }
.up-h3 { font-variation-settings: 'wdth' 92; font-size: clamp(1.5rem, 3vw, 2.125rem);  line-height: 0.96; letter-spacing: -0.025em; }
.up-h4 { font-variation-settings: 'wdth' 94; font-size: clamp(1.125rem, 2vw, 1.375rem);line-height: 1.02; letter-spacing: -0.02em; }
.up-h2--lg { font-size: clamp(2.25rem, 6vw, 4.25rem); letter-spacing: -0.035em; line-height: 0.88; }
.terrain-studio .up-h1, .terrain-studio .up-h2, .terrain-studio .up-h3,
.up-footer .up-h2 { color: #FFFFFF; }
.terrain-city .up-h1, .terrain-city .up-h2, .terrain-city .up-h3 { color: var(--nb-on-blue); }
