/* OnSolana site system v2 — region composition and Solana-native art direction. */

@font-face {
  font-family: "Funnel Sans";
  src: url("/fonts/FunnelSans-Variable.woff2") format("woff2-variations");
  font-weight: 300 800;
  font-display: swap;
}

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

body.page-v2 {
  --v2-line: color-mix(in srgb, var(--v2-text) 15%, transparent);
  --v2-line-strong: color-mix(in srgb, var(--v2-text) 28%, transparent);
  --v2-soft: color-mix(in srgb, var(--v2-text) 7%, transparent);
  --v2-primary-soft: color-mix(in srgb, var(--v2-primary) 13%, transparent);
  --v2-accent-soft: color-mix(in srgb, var(--v2-accent) 13%, transparent);
  --v2-hover-surface: color-mix(in srgb, var(--v2-focus) 10%, var(--v2-surface));
  --v2-active-surface: color-mix(in srgb, var(--v2-focus) 16%, var(--v2-surface));
  margin: 0;
  min-height: 100dvh;
  background:
    radial-gradient(circle at 12% 0%, var(--v2-primary-soft), transparent 29rem),
    radial-gradient(circle at 92% 24rem, var(--v2-accent-soft), transparent 32rem),
    var(--v2-bg);
  color: var(--v2-text);
  font-family: var(--v2-body-font);
  font-size: 16px;
  line-height: 1.55;
  overflow-x: hidden;
}

.v2-backdrop {
  position: fixed;
  z-index: 0;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.v2-backdrop.is-scrolling {
  position: absolute;
  height: 100vh;
}

.v2-backdrop img,
.v2-backdrop video {
  position: absolute;
  inset: -3rem;
  width: calc(100% + 6rem);
  height: calc(100% + 6rem);
  object-fit: cover;
  filter: blur(var(--bd-blur, 60px)) saturate(var(--bd-saturate, 100%));
  transform: scale(var(--bd-scale, 1.15));
}

.v2-backdrop.is-palette,
.v2-backdrop.is-color {
  background:
    radial-gradient(circle at 18% 12%, var(--v2-primary-soft), transparent 34rem),
    radial-gradient(circle at 86% 78%, var(--v2-accent-soft), transparent 36rem),
    var(--v2-bg);
}

.v2-backdrop::after {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      to bottom,
      color-mix(in srgb, var(--v2-bg) calc(var(--bd-dim, .24) * 70%), transparent),
      color-mix(in srgb, var(--v2-bg) calc(var(--bd-dim, .24) * 100%), transparent)
    ),
    var(--bd-tint, transparent);
  content: "";
}

.page-v2 button,
.page-v2 a {
  font: inherit;
}

.page-v2 a {
  text-decoration: none;
}

.page-v2 :focus-visible {
  outline: 3px solid var(--v2-focus);
  outline-offset: 4px;
}

.page-v2 :where(button, a, [role="button"]):active {
  transform: translateY(1px);
}

.page-v2 :where(button, [role="button"]):disabled,
.page-v2 :where(a, [role="button"])[aria-disabled="true"] {
  color: var(--v2-disabled-text);
  cursor: not-allowed;
  opacity: 1;
  pointer-events: none;
}

.v2-shell {
  position: relative;
  z-index: 1;
  width: min(100%, var(--v2-shell));
  min-height: 100dvh;
  margin-inline: auto;
  background: color-mix(in srgb, var(--v2-bg) 97%, transparent);
  box-shadow: 0 0 90px color-mix(in srgb, #000 42%, transparent);
  container-name: site-frame;
  container-type: inline-size;
}

/* Hero ------------------------------------------------------------------ */

.v2-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border-bottom: var(--v2-border);
  background: color-mix(in srgb, var(--v2-bg) 88%, transparent);
}

.v2-hero::before {
  position: absolute;
  z-index: -2;
  inset: 0;
  content: "";
  background:
    linear-gradient(var(--v2-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--v2-line) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: linear-gradient(to bottom, #000 0%, transparent 78%);
  opacity: .32;
}

.v2-footer-brand > span {
  display: grid;
  width: 2.1rem;
  height: 2.1rem;
  place-items: center;
  border-radius: .7rem;
  background: var(--v2-primary);
  color: var(--v2-on-primary);
  font-family: var(--v2-mono-font);
  font-size: max(.72rem, 11px);
  font-weight: 800;
}

.v2-cover {
  position: relative;
  width: 100%;
  height: var(--cover-h, 240px);
  overflow: hidden;
  border-radius: var(--cover-radius, 0);
  background:
    radial-gradient(circle at 20% 18%, color-mix(in srgb, var(--v2-primary) 82%, transparent), transparent 42%),
    radial-gradient(circle at 80% 82%, color-mix(in srgb, var(--v2-accent) 76%, transparent), transparent 46%),
    var(--v2-surface);
}

.v2-cover.is-inset {
  width: calc(100% - 2rem);
  margin: 1rem 1rem 0;
}

.v2-cover[style*="--cover-aspect"] {
  height: auto;
  aspect-ratio: var(--cover-aspect);
}

.v2-cover-media {
  width: 100%;
  height: 100%;
  object-fit: var(--cover-fit, cover);
  object-position: var(--cover-pos, 50% 50%);
  filter: var(--v2-media-filter);
}

.v2-cover-media.is-avatar-fallback {
  transform: scale(1.08);
  filter: blur(8px) saturate(1.16) var(--v2-media-filter);
}

.v2-cover-monogram {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: color-mix(in srgb, var(--v2-text) 82%, transparent);
  font-family: var(--v2-display-font);
  font-size: clamp(5rem, 24cqi, 10rem);
  font-weight: 900;
  letter-spacing: -.09em;
  opacity: .54;
}

.v2-cover-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    var(--cover-overlay-dir, to top),
    color-mix(in srgb, var(--cover-overlay-tint, var(--v2-bg)) calc(var(--cover-overlay, 0) * 100%), transparent),
    transparent 68%
  );
  pointer-events: none;
}

.v2-identity {
  position: relative;
  z-index: 2;
  --avatar-render-size: min(var(--avatar-size, 116px), 44cqi);
  padding: 0 1.25rem calc(2.25rem + var(--head-gap, 26px));
}

.v2-profile-slot {
  position: relative;
  width: 100%;
  height: var(--avatar-render-size);
  margin-top: calc(var(--avatar-render-size) * var(--avatar-pull, -.5));
  margin-bottom: 1.1rem;
}

.v2-profile-picture {
  position: absolute;
  left: clamp(calc(var(--avatar-render-size) / 2), var(--avatar-x, 50%), calc(100% - var(--avatar-render-size) / 2));
  width: var(--avatar-render-size);
  height: var(--avatar-render-size);
  overflow: hidden;
  border: var(--avatar-ring, 0) solid var(--avatar-ring-color, var(--v2-bg));
  background: var(--v2-surface);
  box-shadow: var(--avatar-shadow, none);
  transform: translateX(-50%);
  rotate: var(--avatar-rotate, 0deg);
}

.v2-profile-picture img,
.v2-profile-picture > span {
  width: 100%;
  height: 100%;
}

.v2-profile-picture img {
  display: block;
  object-fit: cover;
}

.v2-profile-picture > span {
  display: grid;
  place-items: center;
  background: linear-gradient(145deg, var(--v2-primary), var(--v2-accent));
  color: var(--v2-on-primary);
  font-family: var(--v2-display-font);
  font-size: calc(var(--avatar-render-size) * .25);
  font-weight: 850;
  letter-spacing: -.04em;
}

.v2-profile-picture.is-circle { border-radius: 50%; }
.v2-profile-picture.is-rounded { border-radius: 22%; }
.v2-profile-picture.is-squircle { border-radius: 32%; }
.v2-profile-picture.is-hex { clip-path: polygon(25% 4%, 75% 4%, 100% 50%, 75% 96%, 25% 96%, 0 50%); }
.v2-profile-picture.is-diamond { clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.v2-profile-picture.is-leaf { border-radius: 50% 8% 50% 8%; }
.v2-profile-picture.is-blob { border-radius: 62% 38% 46% 54% / 54% 46% 54% 46%; }
.v2-profile-picture.is-none { border-radius: 0; }
.v2-profile-picture.has-glow { filter: drop-shadow(0 0 18px color-mix(in srgb, var(--v2-primary) 64%, transparent)); }
.v2-profile-picture.is-grayscale img { filter: grayscale(1); }

.v2-hero-copy {
  position: relative;
  z-index: 2;
  min-width: 0;
  padding-top: max(var(--head-space, 14px), 8px);
}

.v2-hero-kicker {
  display: flex;
  min-height: 34px;
  margin-bottom: 1rem;
  align-items: center;
  flex-wrap: wrap;
  gap: .7rem;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: var(--head-ticker-size, 15px);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.v2-hero[data-profile-align="center"] .v2-hero-copy { text-align: center; }
.v2-hero[data-profile-align="center"] .v2-hero-kicker,
.v2-hero[data-profile-align="center"] .v2-hero-actions { justify-content: center; }
.v2-hero[data-profile-align="center"] .v2-hero-bio { margin-inline: auto; }
.v2-hero[data-profile-align="right"] .v2-hero-copy { text-align: right; }
.v2-hero[data-profile-align="right"] .v2-hero-kicker,
.v2-hero[data-profile-align="right"] .v2-hero-actions { justify-content: flex-end; }
.v2-hero[data-profile-align="right"] .v2-hero-bio { margin-left: auto; }

.v2-hero h1 {
  max-width: 100%;
  margin: 0;
  color: var(--v2-text);
  font-family: var(--v2-display-font);
  font-size: clamp(18px, min(var(--head-name-size, 30px), 14cqi), 64px);
  font-weight: var(--v2-display-weight);
  letter-spacing: var(--v2-display-tracking);
  line-height: 1;
  text-wrap: balance;
}

.v2-hero-bio {
  max-width: var(--head-bio-width, 46ch);
  margin-top: .8rem;
  color: var(--v2-muted);
  font-size: var(--head-bio-size, 15px);
  line-height: 1.65;
}

.v2-hero-market {
  display: grid;
  width: 100%;
  margin-top: clamp(1.7rem, 5cqi, 2.35rem);
  padding: 1rem 0;
  border-top: 1px solid var(--v2-line);
  border-bottom: 1px solid var(--v2-line);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.v2-hero-market > span {
  min-width: 0;
  padding: 0 1rem;
  border-left: 1px solid var(--v2-line);
}

.v2-hero-market > span:first-child {
  padding-left: 0;
  border-left: 0;
}

.v2-hero-market small,
.v2-hero-market strong {
  display: block;
}

.v2-hero-market small {
  margin-bottom: .2rem;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  letter-spacing: .07em;
  text-transform: uppercase;
}

.v2-hero-market strong {
  color: var(--v2-text);
  font-family: var(--v2-mono-font);
  font-size: clamp(.8rem, 2.6cqi, 1rem);
  white-space: nowrap;
}

.page-v2:not([data-market="ok"]):not([data-market="none"]) [data-live] {
  color: transparent;
  border-radius: .25rem;
  background: linear-gradient(90deg, var(--v2-soft), var(--v2-line), var(--v2-soft));
  background-size: 220% 100%;
  animation: v2-shimmer 1.6s linear infinite;
}

.page-v2[data-market="none"] .v2-hero-market > span {
  display: none;
}

.page-v2[data-market="none"] .v2-hero-market {
  display: block;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.75rem, 11px);
}

.page-v2[data-market="none"] .v2-hero-market::after {
  content: "Pre-trading · live market context appears when a Solana pair is found";
}

.v2-hero-actions {
  display: flex;
  margin-top: 1.35rem;
  flex-wrap: wrap;
  gap: .75rem;
}

.v2-hero-action {
  display: inline-flex;
  min-height: 52px;
  align-items: center;
  justify-content: center;
  gap: .65rem;
  padding: .75rem 1.05rem;
  border: 1px solid var(--v2-line-strong);
  border-radius: 999px;
  color: var(--v2-text);
  font-size: .9rem;
  font-weight: 720;
  transition: transform .18s ease, background .18s ease, border-color .18s ease;
}

.v2-hero-action.is-primary {
  border-color: var(--v2-primary);
  background: var(--v2-primary);
  color: var(--v2-on-primary);
}

.v2-hero-action:hover {
  transform: translateY(-2px);
}

.v2-hero-action.is-secondary:hover {
  border-color: var(--v2-hover-border);
  background: var(--v2-hover-surface);
}

/* Art-direction hero signatures ----------------------------------------- */

.page-v2[data-art-direction="afterburner"] .v2-hero::before {
  background: repeating-linear-gradient(118deg, transparent 0 34px, color-mix(in srgb, var(--v2-primary) 12%, transparent) 34px 36px);
  mask-image: linear-gradient(to bottom, #000, transparent 88%);
  opacity: .75;
}

.page-v2[data-art-direction="afterburner"] .v2-hero-copy h1 {
  max-width: 11ch;
  text-transform: uppercase;
}

.page-v2[data-art-direction="cult-classic"] .v2-hero {
  background: color-mix(in srgb, var(--v2-bg) 94%, var(--v2-surface));
}

.page-v2[data-art-direction="cult-classic"] .v2-cover.is-inset {
  box-shadow: 6px 7px 0 color-mix(in srgb, var(--v2-text) 84%, transparent);
}

.page-v2[data-art-direction="signal-desk"] .v2-cover::after {
  position: absolute;
  inset: 0;
  background: linear-gradient(transparent 50%, color-mix(in srgb, var(--v2-text) 5%, transparent) 50%);
  background-size: 100% 5px;
  content: "";
  pointer-events: none;
  opacity: .4;
}

.page-v2[data-art-direction="chain-reaction"] .v2-hero::before {
  background:
    linear-gradient(90deg, transparent 31px, var(--v2-line) 32px),
    linear-gradient(transparent 31px, var(--v2-line) 32px);
  background-size: 32px 32px;
  mask-image: none;
  opacity: .55;
}

.page-v2[data-art-direction="midnight-club"] .v2-cover::after {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 38%, color-mix(in srgb, var(--v2-bg) 86%, transparent));
  content: "";
}

.page-v2[data-art-direction="midnight-club"] .v2-hero-copy h1 {
  text-transform: uppercase;
}

.page-v2[data-art-direction="sticker-bomb"] .v2-hero::before {
  background-image: radial-gradient(var(--v2-text) 1.2px, transparent 1.2px);
  background-size: 10px 10px;
  mask-image: linear-gradient(to bottom, #000, transparent 80%);
  opacity: .12;
}

.page-v2[data-art-direction="sticker-bomb"] .v2-cover.is-inset {
  box-shadow: var(--v2-shadow);
}

.page-v2[data-art-direction="pixel-arcade"] .v2-hero::before {
  background:
    linear-gradient(45deg, var(--v2-soft) 25%, transparent 25% 75%, var(--v2-soft) 75%),
    linear-gradient(45deg, var(--v2-soft) 25%, transparent 25% 75%, var(--v2-soft) 75%);
  background-position: 0 0, 8px 8px;
  background-size: 16px 16px;
  mask-image: none;
  opacity: .35;
}

.page-v2[data-art-direction="field-notes"] .v2-cover.is-inset {
  box-shadow: var(--v2-shadow);
}

.page-v2[data-art-direction="field-notes"] .v2-hero::before {
  background: repeating-linear-gradient(to bottom, transparent 0 27px, var(--v2-line) 27px 28px);
  mask-image: linear-gradient(to bottom, #000, transparent 90%);
  opacity: .6;
}

.page-v2[data-art-direction="broadcast"] .v2-hero-copy h1 {
  max-width: 12ch;
  text-transform: uppercase;
}

.page-v2[data-art-direction="broadcast"] .v2-cover::after {
  position: absolute;
  inset: auto 0 0;
  height: 10px;
  background: var(--v2-primary);
  content: "";
}

.page-v2[data-art-direction="liquid-chrome"] .v2-cover {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--v2-text) 32%, transparent), var(--v2-shadow);
}

.page-v2[data-art-direction="liquid-chrome"] .v2-hero {
  background: linear-gradient(145deg, color-mix(in srgb, var(--v2-primary) 10%, var(--v2-bg)), var(--v2-bg) 56%, color-mix(in srgb, var(--v2-accent) 8%, var(--v2-bg)));
}

.page-v2[data-art-direction="comic-panel"] .v2-cover {
  box-shadow: var(--v2-shadow);
}

.page-v2[data-art-direction="comic-panel"] .v2-hero-copy h1 {
  text-transform: uppercase;
}

.page-v2[data-art-direction="shrine"] .v2-hero-copy h1 {
  font-weight: 520;
}

.page-v2[data-art-direction="shrine"] .v2-cover.is-inset {
  width: calc(100% - 4rem);
  margin: 2rem 2rem 0;
  border-radius: min(var(--cover-radius, 0px), 18px);
}

/* Profile identity styles -------------------------------------------------

   These are component layouts, not art directions. They keep the same cover,
   identity facts, market context, and actions while changing their readable
   relationship. Legacy classic/hero/split rules remain below for stored pages. */

.v2-head--social-stack .v2-hero-copy {
  max-width: 100%;
}

.v2-head--social-row .v2-identity,
.v2-head--compact-identity .v2-identity,
.v2-head--cover-overlay .v2-identity,
.v2-head--editorial-lockup .v2-identity {
  display: grid;
  grid-template-columns: var(--identity-avatar) minmax(0, 1fr);
  column-gap: clamp(.85rem, 3.5cqi, 1.35rem);
  align-items: start;
}

.v2-head--social-row .v2-identity {
  --identity-avatar: min(var(--avatar-render-size), 112px, 29cqi);
  padding-top: clamp(.85rem, 3cqi, 1.2rem);
}

.v2-head--social-row .v2-profile-slot,
.v2-head--compact-identity .v2-profile-slot,
.v2-head--cover-overlay .v2-profile-slot,
.v2-head--editorial-lockup .v2-profile-slot {
  position: relative;
  width: var(--identity-avatar);
  height: var(--identity-avatar);
  grid-column: 1;
  grid-row: 1 / 4;
}

.v2-head--social-row .v2-profile-slot {
  margin: calc(var(--identity-avatar) * -.38) 0 0;
}

.v2-head--social-row .v2-profile-picture,
.v2-head--compact-identity .v2-profile-picture,
.v2-head--cover-overlay .v2-profile-picture,
.v2-head--editorial-lockup .v2-profile-picture {
  left: 50%;
  width: var(--identity-avatar);
  height: var(--identity-avatar);
}

.v2-head--social-row .v2-hero-copy,
.v2-head--compact-identity .v2-hero-copy,
.v2-head--cover-overlay .v2-hero-copy,
.v2-head--editorial-lockup .v2-hero-copy {
  display: contents;
}

.v2-head--social-row :is(.v2-hero-kicker, h1, .v2-hero-bio),
.v2-head--compact-identity :is(.v2-hero-kicker, h1, .v2-hero-bio),
.v2-head--cover-overlay :is(.v2-hero-kicker, h1, .v2-hero-bio),
.v2-head--editorial-lockup :is(.v2-hero-kicker, h1) {
  min-width: 0;
  grid-column: 2;
}

.v2-head--social-row .v2-hero-kicker,
.v2-head--compact-identity .v2-hero-kicker,
.v2-head--cover-overlay .v2-hero-kicker,
.v2-head--editorial-lockup .v2-hero-kicker {
  grid-row: 1;
  align-self: end;
}

.v2-head--social-row h1,
.v2-head--compact-identity h1,
.v2-head--cover-overlay h1,
.v2-head--editorial-lockup h1 {
  grid-row: 2;
}

.v2-head--social-row .v2-hero-bio,
.v2-head--compact-identity .v2-hero-bio,
.v2-head--cover-overlay .v2-hero-bio {
  grid-row: 3;
}

.v2-head--social-row :is(.v2-hero-market, .v2-hero-actions),
.v2-head--compact-identity :is(.v2-hero-market, .v2-hero-actions),
.v2-head--cover-overlay :is(.v2-hero-market, .v2-hero-actions),
.v2-head--editorial-lockup :is(.v2-hero-bio, .v2-hero-market, .v2-hero-actions) {
  grid-column: 1 / -1;
}

.v2-head--social-row .v2-hero-market,
.v2-head--compact-identity .v2-hero-market,
.v2-head--cover-overlay .v2-hero-market,
.v2-head--editorial-lockup .v2-hero-market {
  grid-row: 4;
}

.v2-head--social-row .v2-hero-actions,
.v2-head--compact-identity .v2-hero-actions,
.v2-head--cover-overlay .v2-hero-actions,
.v2-head--editorial-lockup .v2-hero-actions {
  grid-row: 5;
}

.v2-head--social-row[data-profile-align="right"] .v2-identity,
.v2-head--compact-identity[data-profile-align="right"] .v2-identity,
.v2-head--cover-overlay[data-profile-align="right"] .v2-identity {
  grid-template-columns: minmax(0, 1fr) var(--identity-avatar);
}

.v2-head--social-row[data-profile-align="right"] .v2-profile-slot,
.v2-head--compact-identity[data-profile-align="right"] .v2-profile-slot,
.v2-head--cover-overlay[data-profile-align="right"] .v2-profile-slot {
  grid-column: 2;
}

.v2-head--social-row[data-profile-align="right"] :is(.v2-hero-kicker, h1, .v2-hero-bio),
.v2-head--compact-identity[data-profile-align="right"] :is(.v2-hero-kicker, h1, .v2-hero-bio),
.v2-head--cover-overlay[data-profile-align="right"] :is(.v2-hero-kicker, h1, .v2-hero-bio) {
  grid-column: 1;
}

.v2-head--compact-identity .v2-identity {
  --identity-avatar: min(var(--avatar-render-size), 76px, 21cqi);
  padding-top: .85rem;
  padding-bottom: calc(1.4rem + var(--head-gap, 26px));
  column-gap: .85rem;
}

.v2-head--compact-identity .v2-profile-slot {
  margin: 0;
}

.v2-head--compact-identity .v2-hero-kicker {
  min-height: 24px;
  margin-bottom: .25rem;
  font-size: max(.68rem, 10px);
}

.v2-head--compact-identity h1 {
  font-size: clamp(1.7rem, 7cqi, 2.55rem);
  line-height: .98;
}

.v2-head--compact-identity .v2-hero-bio {
  margin-top: .45rem;
  font-size: max(.78rem, 12px);
  line-height: 1.45;
}

.v2-head--cover-overlay .v2-identity {
  --identity-avatar: min(var(--avatar-render-size), 104px, 28cqi);
  position: relative;
  margin-top: clamp(-6rem, -17cqi, -3.75rem);
  padding-top: 1rem;
  background: linear-gradient(to bottom, color-mix(in srgb, var(--v2-bg) 82%, transparent), var(--v2-bg) 7rem);
}

.v2-head--cover-overlay .v2-profile-slot {
  margin: 0;
}

.v2-head--cover-overlay :is(.v2-hero-kicker, h1, .v2-hero-bio) {
  text-shadow: 0 1px 18px var(--v2-bg);
}

.v2-head--editorial-lockup .v2-identity {
  --identity-avatar: min(var(--avatar-render-size), 88px, 23cqi);
  grid-template-columns: minmax(0, 1fr) var(--identity-avatar);
  padding-top: 1.15rem;
  border-bottom: 1px solid var(--v2-line);
}

.v2-head--editorial-lockup .v2-profile-slot {
  margin: calc(var(--identity-avatar) * -.32) 0 0;
  grid-column: 2;
}

.v2-head--editorial-lockup :is(.v2-hero-kicker, h1) {
  grid-column: 1;
  text-align: left;
}

.v2-head--editorial-lockup .v2-hero-kicker {
  justify-content: flex-start;
}

.v2-head--editorial-lockup h1 {
  max-width: 12ch;
  font-size: clamp(2.45rem, 11cqi, 4.5rem);
  line-height: .9;
}

.v2-head--editorial-lockup .v2-hero-bio {
  grid-row: 3;
  margin: 1rem 0 0;
  padding-top: .85rem;
  border-top: 1px solid var(--v2-line);
  text-align: left;
}

.v2-head--hero .v2-identity {
  margin: 0;
  padding-top: .1rem;
  background: linear-gradient(to bottom, color-mix(in srgb, var(--v2-bg) 94%, transparent), transparent 12rem);
}

@media (min-width: 541px) {
  .v2-head--split[data-avatar-scale="bounded"][data-avatar-zone="left"] .v2-hero-copy,
  .v2-head--split[data-avatar-scale="bounded"][data-avatar-zone="right"] .v2-hero-copy {
    min-height: calc(var(--avatar-render-size) * .72);
    margin-top: calc(var(--avatar-render-size) * -.72);
  }

  .v2-head--split[data-avatar-scale="bounded"][data-avatar-zone="left"] .v2-hero-copy {
    padding-left: calc(var(--avatar-x, 16%) + var(--avatar-render-size) / 2 + 1rem);
    text-align: left;
  }

  .v2-head--split[data-avatar-scale="bounded"][data-avatar-zone="right"] .v2-hero-copy {
    padding-right: calc(100% - var(--avatar-x, 78%) + var(--avatar-render-size) / 2 + 1rem);
    text-align: right;
  }

  .v2-head--split[data-avatar-zone="left"] :is(.v2-hero-kicker, .v2-hero-actions) { justify-content: flex-start; }
  .v2-head--split[data-avatar-zone="right"] :is(.v2-hero-kicker, .v2-hero-actions) { justify-content: flex-end; }
  .v2-head--split[data-avatar-zone="left"] .v2-hero-bio { margin-left: 0; }
  .v2-head--split[data-avatar-zone="right"] .v2-hero-bio { margin-left: auto; }
}

/* Regions --------------------------------------------------------------- */

.v2-regions {
  display: flex;
  width: 100%;
  margin: 0 auto;
  padding: var(--v2-region-gap) 1.25rem;
  flex-direction: column;
  gap: var(--v2-region-gap);
}

.page-v2[data-density="compact"] .v2-regions {
  padding-block: clamp(1.5rem, 4cqi, 2rem);
  gap: clamp(1.5rem, 4cqi, 2rem);
}

.page-v2[data-density="balanced"] .v2-regions {
  padding-block: clamp(2rem, 6cqi, 3rem);
}

.page-v2[data-density="spacious"] .v2-regions {
  padding-block: clamp(2.5rem, 8cqi, 4rem);
  gap: clamp(2.5rem, 8cqi, 4rem);
}

.v2-region {
  position: relative;
  min-width: 0;
}

.v2-region[data-region-tone="accent"],
.v2-region[data-region-tone="contrast"] {
  margin-inline: -.5rem;
  padding: clamp(1rem, 3cqi, 1.5rem);
  border: var(--v2-border);
  border-radius: var(--v2-radius);
}

.v2-region[data-region-tone="accent"] {
  background: var(--v2-primary-soft);
}

.v2-region[data-region-tone="contrast"] {
  background: var(--v2-text);
  color: var(--v2-bg);
}

.v2-region-label {
  display: flex;
  margin-bottom: 1rem;
  align-items: center;
  gap: .8rem;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.v2-region-label::after {
  height: 1px;
  flex: 1;
  background: var(--v2-line);
  content: "";
}

.v2-region-flow {
  min-width: 0;
}

.v2-region[data-region-kind="spotlight"] .v2-region-flow {
  display: block;
}

.v2-region[data-region-kind="grid"] .v2-region-flow {
  display: grid;
  align-items: stretch;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  gap: var(--v2-block-gap);
}

.v2-region[data-region-kind="stack"] .v2-region-flow {
  display: flex;
  width: 100%;
  margin-inline: auto;
  flex-direction: column;
  gap: var(--v2-block-gap);
}

.v2-region[data-region-kind="rail"] .v2-region-flow {
  display: flex;
  width: 100%;
  flex-direction: column;
  gap: var(--v2-block-gap);
  overflow: visible;
}

/* A rail is an ordered, compact sequence inside the fixed 600px page—not a
   hidden horizontal carousel. Mixed component heights made off-canvas cards
   inaccessible and forced short siblings to inherit thousands of pixels of
   dead space. The visual distinction comes from rhythm and art direction;
   every component remains fully visible in document order. */
.v2-region[data-region-kind="rail"] .v2-region-flow:has(> .v2-block:only-child) {
  margin-inline: 0;
  padding-inline: 0;
}

.v2-block.w {
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
  container: widget / inline-size;
}

/* Focused legacy market/verification components are valid v2 alternatives,
   not loose fragments. Pressure has no internal card of its own, so give it a
   bounded surface when it shares a market row. The compact contract already
   owns its inner control; centering the block balances it against a taller
   action card without manufacturing a second decorative box. */
.page-v2 .v2-region[data-region-kind="grid"] .w-pressure {
  display: flex;
  min-height: 100%;
  padding: clamp(1rem, 3.2cqi, 1.4rem);
  border: var(--v2-border);
  border-radius: var(--v2-radius);
  background: var(--v2-surface);
  box-shadow: var(--v2-shadow);
  flex-direction: column;
  justify-content: center;
}

.page-v2 .v2-region[data-region-kind="grid"] .w-contract[data-block-span="half"] {
  display: flex;
  min-height: 156px;
  flex-direction: column;
  justify-content: center;
}

/* A component colour override is one semantic surface, not three unrelated
   declarations. Re-derive the legacy component tokens inside that surface so
   inner cards, muted copy, lines, and hover states stay aligned with the
   repaired wrapper text emitted by v2.js. */
.page-v2 .v2-block[style*="--w-bg"] {
  --v2-bg: var(--w-bg);
  --v2-surface: color-mix(in srgb, var(--w-text, var(--v2-text)) 5%, var(--w-bg));
  --v2-surface-2: color-mix(in srgb, var(--w-text, var(--v2-text)) 9%, var(--w-bg));
  --v2-text: var(--w-text, inherit);
  /* Local surfaces can layer a card and a badge. Even a slight muted-text
     blend fell below 4.5:1 on a repaired mid-gray owner override, so custom
     blocks keep the safe local text color and express hierarchy through type. */
  --v2-muted: var(--v2-text);
  --v2-interactive-text: var(--w-accent, var(--v2-text));
  --v2-focus: var(--w-accent, var(--v2-text));
  --v2-hover-border: var(--w-accent, var(--v2-text));
  --v2-hover-surface: color-mix(in srgb, var(--v2-text) 7%, var(--w-bg));
  --v2-positive: var(--w-positive, var(--v2-text));
  --v2-negative: var(--w-negative, var(--v2-text));
  --v2-line: color-mix(in srgb, var(--v2-text) 18%, transparent);
  --v2-line-strong: color-mix(in srgb, var(--v2-text) 34%, transparent);
  --v2-soft: color-mix(in srgb, var(--v2-text) 7%, transparent);
  --p-bg: var(--w-bg);
  --p-surface: color-mix(in srgb, var(--w-text, var(--v2-text)) 5%, var(--w-bg));
  --p-text: var(--w-text, var(--v2-text));
  --c-line: color-mix(in srgb, var(--p-text) 18%, transparent);
  --c-line-strong: color-mix(in srgb, var(--p-text) 34%, transparent);
  --c-muted: var(--p-text);
  --c-accent-text: var(--w-accent, var(--p-text));
  --c-primary-text: var(--w-accent, var(--p-text));
  --c-up: var(--w-positive, var(--p-text));
  --c-down: var(--w-negative, var(--p-text));
  --c-hover: color-mix(in srgb, var(--p-text) 7%, var(--p-bg));
  --t-card-fill: var(--p-surface);
  --t-card-flat: var(--p-surface);
}

.v2-region[data-region-kind="grid"] [data-block-span="compact"] { grid-column: span 1; }
.v2-region[data-region-kind="grid"] [data-block-span="half"] { grid-column: span 1; }
.v2-region[data-region-kind="grid"] [data-block-span="wide"] { grid-column: 1 / -1; }
.v2-region[data-region-kind="grid"] [data-block-span="full"] { grid-column: 1 / -1; }

/* Rendering drops blocks whose required source is absent. The layout sees the
   rendered children, so it can close the hole without mutating the owner's
   document or waiting for a regeneration pass. */
.v2-region[data-region-kind="grid"] .v2-region-flow > .v2-block:only-child {
  grid-column: 1 / -1;
}

.v2-region-empty {
  margin: 0;
  padding: 2rem;
  border: 1px dashed var(--v2-line-strong);
  border-radius: var(--v2-radius-sm);
  color: var(--v2-muted);
  text-align: center;
}

/* Shared v2 component heading reset. */
.page-v2 .v2-block > .w-head {
  margin-bottom: 1rem;
}

.page-v2 .v2-block > .w-head .w-title {
  margin: 0;
  color: currentColor;
  font-family: var(--v2-display-font);
  font-size: clamp(1.2rem, 3.2cqi, 1.75rem);
  letter-spacing: -.035em;
}

/* Price and cap share a row above phone widths. The editor permits a 72px
   owner value, but two long financial strings cannot both honor that literal
   size inside a 600px frame. Bound the pair by the actual frame; a one-column
   phone layout can use the larger scale again. */
.page-v2 .pricecap .price-figure {
  font-size: clamp(18px, min(var(--wo-value, 34px), 5.5cqi), 34px);
}

@container site-frame (max-width: 450px) {
  .page-v2 .pricecap .price-figure {
    font-size: clamp(18px, min(var(--wo-value, 34px), 9cqi), 34px);
  }
}

/* Market board ---------------------------------------------------------- */

.market-board {
  overflow: hidden;
  border: var(--v2-border);
  border-radius: var(--v2-radius);
  background: color-mix(in srgb, var(--v2-surface) 92%, transparent);
  box-shadow: var(--v2-shadow);
}

.market-board-values {
  display: flex;
  flex-wrap: wrap;
}

.market-board-metric {
  display: flex;
  min-width: min(100%, 150px);
  min-height: 104px;
  padding: clamp(1rem, 3cqi, 1.45rem);
  border-right: 1px solid var(--v2-line);
  border-bottom: 1px solid var(--v2-line);
  flex: 1 1 150px;
  flex-direction: column;
  justify-content: space-between;
}

.market-board-metric.is-lead {
  flex-grow: 1;
}

.market-board-label {
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  letter-spacing: .07em;
  text-transform: uppercase;
}

.market-board-value {
  font-family: var(--v2-display-font);
  font-size: clamp(1.35rem, 4.5cqi, 2.35rem);
  font-weight: 760;
  letter-spacing: -.05em;
  line-height: 1;
  white-space: nowrap;
}

.market-board-metric:not(.is-lead) .market-board-value {
  font-size: clamp(1.2rem, 3.5cqi, 1.75rem);
}

.market-chart {
  border-bottom: 1px solid var(--v2-line);
  background: color-mix(in srgb, var(--v2-surface) 96%, transparent);
}

.market-chart-toolbar,
.market-chart-foot {
  display: flex;
  padding: .85rem clamp(1rem, 3cqi, 1.45rem);
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.market-chart-toolbar > div:first-child {
  display: flex;
  min-width: 0;
  flex-direction: column;
}

.market-chart-toolbar strong {
  font-family: var(--v2-display-font);
  font-size: .9rem;
}

.market-chart-toolbar span,
.market-chart-foot {
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
}

.market-chart-ranges {
  display: inline-flex;
  padding: 3px;
  border: 1px solid var(--v2-line-strong);
  border-radius: 999px;
  background: var(--v2-bg);
}

.market-chart-ranges button {
  min-width: 42px;
  min-height: 30px;
  padding: 0 .55rem;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--v2-muted);
  cursor: pointer;
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  font-weight: 760;
}

.market-chart-ranges button:hover {
  background: var(--v2-hover-surface);
  color: var(--v2-text);
}

.market-chart-ranges button[aria-pressed="true"] {
  background: var(--v2-primary);
  color: var(--v2-on-primary);
}

.market-chart-stage {
  position: relative;
  display: grid;
  min-height: 260px;
  border-block: 1px solid var(--v2-line);
  place-items: center;
}

.market-chart-canvas {
  position: absolute;
  inset: 0;
}

.market-chart-state {
  position: relative;
  z-index: 1;
  max-width: 36ch;
  margin: 0;
  padding: 1.5rem;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.72rem, 11px);
  text-align: center;
}

.market-chart[data-state="ready"] .market-chart-state {
  display: none;
}

.market-chart-tooltip {
  position: absolute;
  z-index: 2;
  top: .75rem;
  left: .75rem;
  padding: .45rem .6rem;
  border: 1px solid var(--v2-line-strong);
  border-radius: var(--v2-radius-sm);
  background: color-mix(in srgb, var(--v2-bg) 92%, transparent);
  color: var(--v2-text);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  pointer-events: none;
}

.market-chart-foot {
  align-items: flex-start;
}

.market-chart-foot p {
  max-width: 42ch;
  margin: 0;
}

.market-chart-foot > div {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .35rem .8rem;
}

.market-chart-foot a {
  display: inline-flex;
  min-height: 24px;
  padding-block: 3px;
  align-items: center;
  color: var(--v2-interactive-text);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.market-board-pressure {
  padding: 1.2rem clamp(1rem, 3cqi, 1.45rem);
}

.market-board-pressure-labels,
.market-board-pressure-values {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
}

.market-board-pressure-values {
  margin-top: .45rem;
  color: var(--v2-text);
}

.market-board-pressure-track {
  display: flex;
  height: 7px;
  margin-top: .6rem;
  overflow: hidden;
  border-radius: 999px;
  background: var(--v2-soft);
}

.market-board-pressure-track .press-buy { width: 50%; background: var(--v2-accent); }
.market-board-pressure-track .press-sell { width: 50%; background: color-mix(in srgb, var(--v2-primary) 72%, #ff3158); }

.market-board-empty {
  display: none;
  margin: 0;
  padding: clamp(1.5rem, 5cqi, 2.5rem);
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  text-align: center;
}

.page-v2[data-market="none"] .market-board-values,
.page-v2[data-market="none"] .market-board-pressure {
  display: none;
}

.page-v2[data-market="none"] .market-board-empty {
  display: block;
}

.market-board--ticker .market-board-metric {
  min-height: 95px;
}

.market-board--ledger {
  border-radius: var(--v2-radius-sm);
  box-shadow: none;
}

/* Action card ----------------------------------------------------------- */

.action-card {
  display: grid;
  min-height: 156px;
  padding: clamp(1.1rem, 3.2cqi, 1.55rem);
  border: var(--v2-border);
  border-radius: var(--v2-radius);
  background: var(--v2-surface);
  color: var(--v2-text);
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: start;
  gap: 1rem;
  transition: transform .18s ease, background .18s ease, box-shadow .18s ease;
}

.action-card:hover {
  border-color: var(--v2-hover-border);
  transform: translateY(-3px);
  background: var(--v2-hover-surface);
  box-shadow: var(--v2-shadow);
}

.action-card-mark {
  display: grid;
  width: 50px;
  height: 50px;
  place-items: center;
  border-radius: var(--v2-radius-sm);
  background: var(--v2-primary);
  color: var(--v2-on-primary);
}

.action-card-copy {
  display: flex;
  min-width: 0;
  flex-direction: column;
}

.action-card-eyebrow {
  margin-bottom: .45rem;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.action-card-title {
  font-family: var(--v2-display-font);
  font-size: clamp(1.25rem, 3.6cqi, 1.8rem);
  letter-spacing: -.04em;
  line-height: 1.05;
}

.action-card-description {
  margin-top: .75rem;
  color: var(--v2-muted);
  font-size: .9rem;
  line-height: 1.55;
}

.action-card-go {
  display: flex;
  min-height: 50px;
  align-items: center;
  flex-direction: column;
  justify-content: space-between;
  gap: 1.5rem;
}

.action-card-go small {
  padding: .25rem .5rem;
  border-radius: 999px;
  background: var(--v2-soft);
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  text-transform: uppercase;
}

.v2-region[data-region-kind="grid"] [data-block-span="half"] .action-card,
.v2-region[data-region-kind="grid"] [data-block-span="compact"] .action-card {
  grid-template-columns: auto minmax(0, 1fr);
}

.v2-region[data-region-kind="grid"] [data-block-span="half"] .action-card-go,
.v2-region[data-region-kind="grid"] [data-block-span="compact"] .action-card-go {
  min-height: 0;
  align-items: center;
  grid-column: 1 / -1;
  flex-direction: row;
}

.action-card--primary {
  background: var(--v2-primary);
  color: var(--v2-on-primary);
}

.action-card--primary .action-card-mark {
  background: color-mix(in srgb, var(--v2-on-primary) 12%, transparent);
  color: inherit;
}

.action-card--primary .action-card-eyebrow,
.action-card--primary .action-card-description {
  color: var(--v2-on-primary-muted);
}

.action-card--primary .action-card-go small {
  border: 1px solid color-mix(in srgb, var(--v2-on-primary) 38%, transparent);
  background: transparent;
  color: var(--v2-on-primary);
}

.action-card--signal {
  border-radius: var(--v2-radius-sm);
  box-shadow: inset 4px 0 0 var(--v2-primary);
}

/* Contract card --------------------------------------------------------- */

.contract-card {
  height: 100%;
  overflow: hidden;
  border: var(--v2-border);
  border-radius: var(--v2-radius);
  background: var(--v2-surface);
}

.contract-card-head,
.contract-card-address,
.contract-card-foot {
  display: flex;
  padding: clamp(1rem, 3cqi, 1.45rem);
  align-items: center;
  gap: .8rem;
}

.contract-card-head {
  border-bottom: 1px solid var(--v2-line);
}

.contract-card-shield {
  display: grid;
  width: 42px;
  height: 42px;
  flex: 0 0 auto;
  place-items: center;
  border-radius: var(--v2-radius-sm);
  background: var(--v2-accent-soft);
  color: var(--v2-accent);
}

.contract-card-head > span:nth-child(2) {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
}

.contract-card-head strong {
  letter-spacing: -.02em;
}

.contract-card-head small,
.contract-card-foot p {
  color: var(--v2-muted);
  font-size: max(.75rem, 11px);
}

.contract-card-network {
  padding: .25rem .5rem;
  border: 1px solid var(--v2-line);
  border-radius: 999px;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  text-transform: uppercase;
}

.contract-card-address {
  align-items: stretch;
}

.contract-card-address code {
  display: flex;
  min-width: 0;
  min-height: 48px;
  padding: .7rem .85rem;
  align-items: center;
  flex: 1;
  overflow: hidden;
  border: 1px solid var(--v2-line);
  border-radius: var(--v2-radius-sm);
  background: var(--v2-bg);
  font-family: var(--v2-mono-font);
  font-size: max(.72rem, 11px);
}

.contract-card-short { display: none; }
.contract-card-full { overflow: hidden; text-overflow: ellipsis; }

.contract-card-copy {
  display: inline-flex;
  min-height: 48px;
  padding: .7rem .9rem;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  border: 0;
  border-radius: var(--v2-radius-sm);
  background: var(--v2-primary);
  color: var(--v2-on-primary);
  cursor: pointer;
  font-weight: 720;
}

.contract-card-copy .ca-copied { display: none; }

.contract-card-foot {
  padding-top: 0;
  align-items: flex-end;
  justify-content: space-between;
}

.contract-card-foot p {
  max-width: 42ch;
  margin: 0;
}

.contract-card-foot a {
  display: inline-flex;
  min-height: 24px;
  padding-block: 3px;
  align-items: center;
  gap: .35rem;
  color: var(--v2-text);
  font-size: max(.75rem, 11px);
  font-weight: 700;
  white-space: nowrap;
}

.contract-card--receipt {
  border-radius: var(--v2-radius-sm);
  box-shadow: inset 0 -4px 0 var(--v2-accent);
}

/* Media destination ----------------------------------------------------- */

.media-link {
  position: relative;
  display: flex;
  height: 100%;
  min-height: 310px;
  overflow: hidden;
  border: var(--v2-border);
  border-radius: var(--v2-radius);
  background: var(--v2-surface);
  color: var(--v2-text);
  flex-direction: column;
  transition: transform .2s ease, box-shadow .2s ease;
}

.media-link:hover {
  border-color: var(--v2-hover-border);
  transform: translateY(-4px);
  box-shadow: var(--v2-shadow);
}

.media-link-visual {
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--v2-soft);
}

.media-link-visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: var(--v2-media-filter);
  transition: transform .4s ease;
}

.media-link:hover .media-link-visual img {
  transform: scale(1.025);
}

.media-link-copy {
  display: flex;
  padding: clamp(1.1rem, 3cqi, 1.5rem);
  flex: 1;
  flex-direction: column;
}

.media-link-meta {
  display: flex;
  margin-bottom: .65rem;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  color: var(--v2-muted);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  letter-spacing: .07em;
  text-transform: uppercase;
}

.media-link-meta small {
  padding: .22rem .48rem;
  border-radius: 999px;
  background: var(--v2-soft);
  color: var(--v2-interactive-text);
  font-size: inherit;
}

.media-link-copy > strong {
  font-family: var(--v2-display-font);
  font-size: clamp(1.35rem, 3.8cqi, 2rem);
  letter-spacing: -.045em;
  line-height: 1.02;
}

.media-link-description {
  margin-top: .8rem;
  color: var(--v2-muted);
  font-size: .9rem;
  line-height: 1.55;
}

.media-link-action {
  display: inline-flex;
  margin-top: auto;
  padding-top: 1.25rem;
  align-items: center;
  gap: .4rem;
  font-size: max(.77rem, 11px);
  font-weight: 750;
}

.media-link--poster {
  min-height: 520px;
}

.media-link--poster .media-link-visual {
  position: absolute;
  inset: 0;
  height: 100%;
}

.media-link--poster .media-link-visual::after {
  position: absolute;
  inset: 0;
  /* Poster copy spans the full card because its action anchors to the bottom.
     A bottom-only palette gradient left the title sitting directly on dark or
     busy artwork. This neutral scrim is part of the poster contract: uploaded
     media may be any luminance, while the foreground stays deterministic. */
  background: linear-gradient(to bottom, rgb(7 8 12 / 68%), rgb(7 8 12 / 68%) 42%, rgb(7 8 12 / 88%));
  content: "";
}

.media-link--poster .media-link-copy {
  position: relative;
  z-index: 1;
  justify-content: flex-end;
  color: #fff;
  text-shadow: 0 1px 14px rgb(0 0 0 / 28%);
}

.media-link--poster .media-link-meta,
.media-link--poster .media-link-description { color: rgb(255 255 255 / 82%); }

.media-link--poster .media-link-meta small {
  border: 1px solid rgb(255 255 255 / 28%);
  background: rgb(0 0 0 / 42%);
  color: #fff;
}

.media-link--compact {
  min-height: 200px;
}

.media-link--announcement {
  min-height: 260px;
  box-shadow: inset 0 4px 0 var(--v2-accent);
}

/* Media is optional for an owner-authored destination. Without it, preserve
   the destination and copy but collapse the poster-sized stage; a large empty
   rectangle looks like a failed download rather than an intentional card. */
.media-link.no-media {
  height: auto;
  min-height: 0;
}

/* Poster copy is white because media posters own a dark scrim. When the owner
   has not supplied media there is no scrim, so fall back to the local surface
   roles instead of painting white text over a pale card. */
.media-link--poster.no-media .media-link-copy {
  color: var(--v2-text);
  text-shadow: none;
}

.media-link--poster.no-media .media-link-meta,
.media-link--poster.no-media .media-link-description {
  color: var(--v2-muted);
}

.media-link--poster.no-media .media-link-meta small {
  border-color: var(--v2-line);
  background: var(--v2-soft);
  color: var(--v2-interactive-text);
}

/* Story ----------------------------------------------------------------- */

.story-v2 {
  display: grid;
  overflow: hidden;
  border: var(--v2-border);
  border-radius: var(--v2-radius);
  background: var(--v2-surface);
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
}

.story-v2.no-media {
  display: block;
}

.story-v2-media {
  min-height: 420px;
  margin: 0;
  background: var(--v2-soft);
}

.story-v2-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: var(--v2-media-filter);
}

.story-v2-media figcaption {
  position: absolute;
  margin: -2.5rem .8rem 0;
  padding: .35rem .55rem;
  border-radius: .4rem;
  background: color-mix(in srgb, var(--v2-bg) 82%, transparent);
  color: var(--v2-text);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
}

.story-v2-copy {
  display: flex;
  padding: clamp(1.5rem, 5cqi, 2.75rem);
  flex-direction: column;
  justify-content: center;
}

.story-v2-eyebrow {
  margin: 0 0 .8rem;
  color: var(--v2-interactive-text);
  font-family: var(--v2-mono-font);
  font-size: max(.7rem, 11px);
  font-weight: 750;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.story-v2 h2 {
  max-width: 15ch;
  margin: 0;
  font-family: var(--v2-display-font);
  font-size: clamp(2rem, 6.5cqi, 3.25rem);
  font-weight: var(--v2-display-weight);
  letter-spacing: var(--v2-display-tracking);
  line-height: .96;
}

.story-v2-body {
  max-width: 62ch;
  margin-top: 1.35rem;
  color: var(--v2-muted);
  font-size: clamp(.95rem, 2.7cqi, 1.08rem);
  line-height: 1.75;
}

/* A maximum-length story must not turn a split card into several screens of
   narrow copy and a stretched image. Long stories become a compact editorial
   preview and remain fully available through a native, keyboard-operable
   disclosure. Short stories keep the art direction's normal composition. */
.story-v2.is-long {
  grid-template-columns: 1fr;
}

.story-v2.is-long .story-v2-media {
  min-height: 0;
  max-height: 360px;
  aspect-ratio: 16 / 9;
}

.story-v2-details {
  margin-top: 1.35rem;
}

.story-v2-details summary {
  color: var(--v2-muted);
  cursor: pointer;
  list-style: none;
}

.story-v2-details summary::-webkit-details-marker { display: none; }

.story-v2-excerpt {
  display: block;
  font-size: clamp(.95rem, 2.7cqi, 1.08rem);
  line-height: 1.7;
}

.story-v2-read {
  display: inline-flex;
  margin-top: .9rem;
  color: var(--v2-interactive-text);
  font-size: max(.76rem, 11px);
  font-weight: 750;
}

.story-v2-details[open] .story-v2-excerpt { display: none; }
.story-v2-details[open] .story-v2-read { margin-top: 0; }
.story-v2-details .story-v2-body { margin-top: 1.1rem; }

.story-v2-copy > a {
  display: inline-flex;
  min-height: 24px;
  margin-top: 1.4rem;
  padding-block: 3px;
  align-items: center;
  gap: .35rem;
  font-size: max(.76rem, 11px);
  font-weight: 750;
}

.story-v2--manifesto {
  border: 0;
  background: transparent;
}

.story-v2--manifesto .story-v2-copy {
  padding-inline: 0;
}

.story-v2--editorial {
  border-radius: var(--v2-radius-sm);
  box-shadow: none;
}

/* Community rail -------------------------------------------------------- */

.community-rail {
  height: 100%;
  padding: clamp(1.15rem, 3.2cqi, 1.65rem);
  border: var(--v2-border);
  border-radius: var(--v2-radius);
  background: var(--v2-surface);
}

.community-rail-head h2 {
  margin: 0;
  font-family: var(--v2-display-font);
  font-size: clamp(1.4rem, 3.8cqi, 2rem);
  letter-spacing: -.04em;
}

.community-rail-head p {
  margin: .4rem 0 0;
  color: var(--v2-muted);
  font-size: max(.82rem, 11px);
}

.community-rail-track {
  display: grid;
  margin-top: 1.2rem;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .55rem;
}

.community-rail-track a {
  display: grid;
  min-height: 66px;
  padding: .65rem .75rem;
  border: 1px solid var(--v2-line);
  border-radius: var(--v2-radius-sm);
  align-items: center;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: .7rem;
  transition: background .16s ease, border-color .16s ease;
}

.community-rail-track a:hover {
  border-color: var(--v2-hover-border);
  background: var(--v2-hover-surface);
}

.community-rail-icon {
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border-radius: 50%;
  background: var(--v2-soft);
}

.community-rail-track a > span:nth-child(2) {
  display: flex;
  min-width: 0;
  flex-direction: column;
}

.community-rail-track strong {
  font-size: max(.8rem, 11px);
  overflow-wrap: anywhere;
}

.community-rail-track small {
  color: var(--v2-muted);
  font-size: max(.7rem, 11px);
}

/* Notice ---------------------------------------------------------------- */

.notice-v2 {
  display: grid;
  padding: 1rem 1.1rem;
  border: 1px solid var(--v2-line);
  border-radius: var(--v2-radius-sm);
  background: var(--v2-soft);
  grid-template-columns: auto minmax(0, 1fr);
  gap: .8rem;
}

.notice-v2-icon {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: .55rem;
  background: var(--v2-surface-2);
  color: var(--v2-interactive-text);
}

.notice-v2 strong {
  display: block;
  margin-bottom: .25rem;
  font-size: max(.78rem, 11px);
}

.notice-v2-body {
  color: var(--v2-muted);
  font-size: max(.75rem, 11px);
  line-height: 1.55;
}

.notice-v2--risk {
  border-color: color-mix(in srgb, var(--v2-accent) 35%, var(--v2-line));
}

.notice-v2--footnote {
  padding-inline: 0;
  border-width: 1px 0 0;
  border-radius: 0;
  background: transparent;
}

/* Existing gallery/FAQ inside v2 regions ------------------------------- */

.page-v2 .gallery,
.page-v2 .faq {
  border-radius: var(--v2-radius);
}

/* Direction-level component treatments make the systems structural. */
.page-v2[data-art-direction="afterburner"] :is(.action-card, .contract-card, .market-board) {
  border-color: color-mix(in srgb, var(--v2-primary) 38%, var(--v2-line));
}

.page-v2[data-art-direction="afterburner"] .v2-region-label::before {
  content: "↗";
  color: var(--v2-interactive-text);
}

.page-v2[data-art-direction="cult-classic"] .media-link,
.page-v2[data-art-direction="cult-classic"] .action-card,
.page-v2[data-art-direction="cult-classic"] .contract-card,
.page-v2[data-art-direction="cult-classic"] .community-rail {
  box-shadow: var(--v2-shadow);
}

.page-v2[data-art-direction="signal-desk"] .action-card,
.page-v2[data-art-direction="signal-desk"] .contract-card,
.page-v2[data-art-direction="signal-desk"] .community-rail,
.page-v2[data-art-direction="signal-desk"] .market-board,
.page-v2[data-art-direction="signal-desk"] .media-link,
.page-v2[data-art-direction="signal-desk"] .story-v2 {
  border-radius: var(--v2-radius-sm);
  box-shadow: none;
}

.page-v2[data-art-direction="signal-desk"] .v2-region-label::before {
  content: "//";
  color: var(--v2-interactive-text);
}

.page-v2[data-art-direction="chain-reaction"] .v2-region-label::before {
  content: "[";
  color: var(--v2-interactive-text);
}

.page-v2[data-art-direction="chain-reaction"] .v2-region-label::after {
  height: auto;
  flex: 0;
  background: none;
  color: var(--v2-interactive-text);
  content: "]";
}

.page-v2[data-art-direction="chain-reaction"] :is(.action-card, .contract-card, .community-rail, .market-board, .story-v2) {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--v2-primary) 12%, transparent);
}

.page-v2[data-art-direction="midnight-club"] .v2-regions {
  background: linear-gradient(to bottom, transparent, color-mix(in srgb, var(--v2-primary) 5%, transparent) 48%, transparent);
}

.page-v2[data-art-direction="midnight-club"] :is(.action-card, .media-link, .story-v2) {
  overflow: hidden;
  border-color: color-mix(in srgb, var(--v2-text) 14%, transparent);
  background: linear-gradient(145deg, color-mix(in srgb, var(--v2-text) 5%, var(--v2-surface)), var(--v2-surface));
}

.page-v2[data-art-direction="sticker-bomb"] .v2-region-label span {
  padding: .25rem .55rem;
  background: var(--v2-text);
  color: var(--v2-bg);
}

.page-v2[data-art-direction="pixel-arcade"] :is(.action-card, .contract-card, .community-rail, .market-board, .story-v2, .notice-v2) {
  box-shadow: var(--v2-shadow);
}

.page-v2[data-art-direction="pixel-arcade"] .v2-region-label::before {
  content: "▶";
  color: var(--v2-interactive-text);
}

.page-v2[data-art-direction="field-notes"] .v2-region-label span {
  font-family: var(--v2-display-font);
  font-size: .85rem;
  font-style: italic;
  letter-spacing: 0;
  text-transform: none;
}

.page-v2[data-art-direction="field-notes"] :is(.story-v2, .community-rail, .contract-card) {
  background:
    repeating-linear-gradient(to bottom, transparent 0 31px, color-mix(in srgb, var(--v2-text) 5%, transparent) 31px 32px),
    var(--v2-surface);
}

.page-v2[data-art-direction="broadcast"] .v2-region-label {
  padding-block: .45rem;
  border-block: 2px solid var(--v2-text);
  color: var(--v2-text);
}

.page-v2[data-art-direction="broadcast"] .v2-region-label::after {
  height: 8px;
  background: var(--v2-primary);
}

.page-v2[data-art-direction="broadcast"] .v2-region-flow {
  gap: 2px;
}

.page-v2[data-art-direction="liquid-chrome"] :is(.action-card, .contract-card, .community-rail, .market-board, .media-link, .story-v2) {
  border-color: color-mix(in srgb, var(--v2-text) 18%, transparent);
  background: linear-gradient(145deg, color-mix(in srgb, var(--v2-text) 9%, var(--v2-surface)), color-mix(in srgb, var(--v2-primary) 8%, var(--v2-surface)));
  box-shadow: inset 0 1px 0 color-mix(in srgb, #fff 20%, transparent), var(--v2-shadow);
}

.page-v2[data-art-direction="comic-panel"] .v2-region-label span {
  padding: .2rem .5rem;
  border: 2px solid var(--v2-text);
  background: var(--v2-primary);
  color: var(--v2-on-primary);
  box-shadow: 3px 3px 0 var(--v2-text);
}

.page-v2[data-art-direction="comic-panel"] :is(.action-card, .contract-card, .community-rail, .market-board, .story-v2) {
  box-shadow: var(--v2-shadow);
}

.page-v2[data-art-direction="shrine"] .v2-region-label {
  justify-content: center;
  text-align: center;
}

.page-v2[data-art-direction="shrine"] .v2-region-label::before,
.page-v2[data-art-direction="shrine"] .v2-region-label::after {
  width: min(18%, 72px);
  height: 1px;
  flex: 0 1 72px;
  background: var(--v2-line-strong);
  content: "";
}

.page-v2[data-art-direction="shrine"] :is(.story-v2, .community-rail, .market-board) {
  text-align: center;
}

/* Deep structural systems ------------------------------------------------

   Every direction owns its scene grammar, tokens, hero signature, and
   component treatment. The selectors stay inside the fixed site frame and
   consume the same source-safe markup, so direction never changes what facts a
   page claims. */

/* Cult Classic: illustrated poster, collectible labels, tactile cards. */
.page-v2[data-art-direction="cult-classic"] .v2-hero {
  padding-bottom: .45rem;
  border-bottom: 0;
  background:
    radial-gradient(circle at 88% 72%, var(--v2-accent-soft), transparent 14rem),
    color-mix(in srgb, var(--v2-bg) 92%, var(--v2-surface));
}

.page-v2[data-art-direction="cult-classic"] .v2-cover {
  width: calc(100% - 1.5rem);
  margin: .75rem .75rem 0;
  border: 2px solid var(--v2-text);
  border-radius: clamp(1.1rem, 5cqi, 2rem);
  box-shadow: 7px 8px 0 color-mix(in srgb, var(--v2-text) 88%, transparent);
}

.page-v2[data-art-direction="cult-classic"] .v2-identity {
  padding-inline: clamp(1.25rem, 5cqi, 2rem);
  padding-bottom: 2.6rem;
}

.page-v2[data-art-direction="cult-classic"] .v2-profile-picture {
  border-width: max(3px, var(--avatar-ring, 0px));
  border-color: var(--v2-text);
  background: var(--v2-surface-2);
  box-shadow: 5px 6px 0 var(--v2-text);
}

.page-v2[data-art-direction="cult-classic"] .v2-hero-kicker > span:first-child {
  padding: .3rem .65rem;
  border: 2px solid var(--v2-text);
  background: var(--v2-primary);
  color: var(--v2-on-primary);
  box-shadow: 2px 3px 0 var(--v2-text);
  font-weight: 820;
}

.page-v2[data-art-direction="cult-classic"] .v2-hero h1 {
  max-width: 11ch;
  font-size: clamp(2.65rem, 11cqi, 4.9rem);
  line-height: .9;
}

.page-v2[data-art-direction="cult-classic"] .v2-hero-bio {
  max-width: 40ch;
  color: color-mix(in srgb, var(--v2-text) 78%, var(--v2-bg));
  font-size: clamp(.95rem, 2.8cqi, 1.08rem);
  line-height: 1.55;
}

.page-v2[data-art-direction="cult-classic"] .v2-hero-market {
  overflow: hidden;
  padding: 0;
  border: 2px solid var(--v2-text);
  border-radius: 1rem;
  background: var(--v2-surface);
  box-shadow: 4px 5px 0 var(--v2-text);
}

.page-v2[data-art-direction="cult-classic"] .v2-hero-market > span {
  padding: .9rem 1rem;
  border-color: color-mix(in srgb, var(--v2-text) 55%, transparent);
}

.page-v2[data-art-direction="cult-classic"] .v2-hero-actions {
  gap: .85rem;
}

.page-v2[data-art-direction="cult-classic"] .v2-hero-action {
  min-height: 56px;
  border: 2px solid var(--v2-text);
  border-radius: .8rem;
  box-shadow: 4px 5px 0 var(--v2-text);
}

.page-v2[data-art-direction="cult-classic"] .v2-region-label {
  margin-bottom: 1.15rem;
  color: var(--v2-text);
  font-family: var(--v2-display-font);
  font-size: .95rem;
  font-style: italic;
  letter-spacing: -.02em;
  text-transform: none;
}

.page-v2[data-art-direction="cult-classic"] :is(.market-board, .contract-card, .community-rail, .story-v2, .media-link, .notice-v2) {
  border-width: 2px;
  border-color: var(--v2-text);
}

.page-v2[data-art-direction="cult-classic"] .community-rail-track a {
  border: 2px solid var(--v2-text);
  background: var(--v2-surface-2);
  box-shadow: 2px 3px 0 var(--v2-text);
}

.page-v2[data-art-direction="cult-classic"] .story-v2--lore .story-v2-copy {
  background:
    radial-gradient(circle at 92% 10%, var(--v2-accent-soft), transparent 8rem),
    var(--v2-surface);
}

.page-v2[data-art-direction="cult-classic"] .notice-v2--footnote {
  padding: 1rem;
  border: 2px dashed var(--v2-text);
  border-radius: .8rem;
  background: color-mix(in srgb, var(--v2-surface) 86%, transparent);
}

/* Signal Desk: compressed information hierarchy and calm data surfaces. */
.page-v2[data-art-direction="signal-desk"] .v2-hero {
  border-bottom: 1px solid var(--v2-line-strong);
  background: color-mix(in srgb, var(--v2-bg) 96%, transparent);
}

.page-v2[data-art-direction="signal-desk"] .v2-cover {
  width: calc(100% - 1.5rem);
  max-height: 220px;
  margin: .75rem .75rem 0;
  border: 1px solid var(--v2-line-strong);
  border-radius: .45rem;
}

.page-v2[data-art-direction="signal-desk"] .v2-identity {
  padding-inline: clamp(1rem, 4cqi, 1.5rem);
  padding-bottom: 2rem;
}

.page-v2[data-art-direction="signal-desk"] .v2-profile-picture {
  border-radius: .45rem;
  background: var(--v2-surface);
  box-shadow: 0 0 0 1px var(--v2-line-strong), 0 12px 34px color-mix(in srgb, #000 36%, transparent);
}

.page-v2[data-art-direction="signal-desk"] .v2-hero-kicker {
  padding-bottom: .7rem;
  border-bottom: 1px solid var(--v2-line);
  color: var(--v2-interactive-text);
  font-size: max(.7rem, 11px);
}

.page-v2[data-art-direction="signal-desk"] .v2-hero h1 {
  max-width: 15ch;
  font-size: clamp(2.25rem, 8.5cqi, 4rem);
  line-height: .94;
}

.page-v2[data-art-direction="signal-desk"] .v2-hero-bio {
  max-width: 52ch;
  font-size: .9rem;
  line-height: 1.6;
}

.page-v2[data-art-direction="signal-desk"] .v2-hero-market {
  margin-top: 1.35rem;
  padding: 0;
  border: 1px solid var(--v2-line-strong);
  border-radius: .35rem;
  background: var(--v2-surface);
}

.page-v2[data-art-direction="signal-desk"] .v2-hero-market > span {
  padding: .75rem .85rem;
}

.page-v2[data-art-direction="signal-desk"] .v2-hero-action {
  min-height: 46px;
  border-radius: .35rem;
  font-family: var(--v2-mono-font);
  font-size: max(.75rem, 11px);
}

.page-v2[data-art-direction="signal-desk"] .v2-regions {
  padding-inline: 1rem;
}

.page-v2[data-art-direction="signal-desk"] .v2-region-label {
  margin-bottom: .65rem;
  font-size: max(.7rem, 11px);
}

.page-v2[data-art-direction="signal-desk"] .market-board-values {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.page-v2[data-art-direction="signal-desk"] .market-board-metric {
  min-width: 0;
  min-height: 86px;
  padding: .85rem;
}

.page-v2[data-art-direction="signal-desk"] .market-board-value {
  font-family: var(--v2-mono-font);
  font-size: clamp(1rem, 3.5cqi, 1.55rem);
  letter-spacing: -.035em;
}

.page-v2[data-art-direction="signal-desk"] .action-card {
  min-height: 108px;
  padding: 1rem;
  border-left: 3px solid var(--v2-primary);
  grid-template-columns: 38px minmax(0, 1fr) auto;
}

.page-v2[data-art-direction="signal-desk"] .action-card-mark {
  width: 38px;
  height: 38px;
  border-radius: .25rem;
}

.page-v2[data-art-direction="signal-desk"] .action-card-title {
  font-size: clamp(1rem, 3cqi, 1.3rem);
}

.page-v2[data-art-direction="signal-desk"] .community-rail {
  padding: 0;
  border: 0;
  background: transparent;
}

.page-v2[data-art-direction="signal-desk"] .community-rail-track {
  overflow: hidden;
  border: 1px solid var(--v2-line-strong);
  border-radius: .35rem;
  gap: 0;
}

.page-v2[data-art-direction="signal-desk"] .community-rail-track a {
  border-width: 0 0 1px;
  border-radius: 0;
  background: var(--v2-surface);
}

.page-v2[data-art-direction="signal-desk"] .community-rail-track a:last-child {
  border-bottom: 0;
}

.page-v2[data-art-direction="signal-desk"] .story-v2--editorial {
  border-width: 0 0 0 3px;
  border-color: var(--v2-primary);
  background: transparent;
}

.page-v2[data-art-direction="signal-desk"] .notice-v2--footnote {
  font-family: var(--v2-mono-font);
}

/* Broadcast: masthead, score strip, hard rules, and headline modules. */
.page-v2[data-art-direction="broadcast"] .v2-hero {
  border-bottom: 6px solid var(--v2-text);
  background: var(--v2-bg);
}

.page-v2[data-art-direction="broadcast"] .v2-hero::before {
  background: none;
}

.page-v2[data-art-direction="broadcast"] .v2-cover {
  max-height: 310px;
  border-bottom: 9px solid var(--v2-primary);
  border-radius: 0;
}

.page-v2[data-art-direction="broadcast"] .v2-identity {
  padding-inline: clamp(1rem, 4cqi, 1.5rem);
  padding-bottom: 2rem;
}

.page-v2[data-art-direction="broadcast"] .v2-profile-picture {
  border: 3px solid var(--v2-text);
  border-radius: 0;
  background: var(--v2-surface);
  box-shadow: none;
}

.page-v2[data-art-direction="broadcast"] .v2-hero-kicker {
  margin-bottom: .8rem;
  padding-block: .45rem;
  border-block: 2px solid var(--v2-text);
}

.page-v2[data-art-direction="broadcast"] .v2-hero-kicker > span:first-child {
  padding: .2rem .45rem;
  background: var(--v2-primary);
  color: var(--v2-on-primary);
  font-weight: 850;
}

.page-v2[data-art-direction="broadcast"] .v2-hero h1 {
  max-width: 12ch;
  font-size: clamp(3rem, 12cqi, 5.5rem);
  font-weight: 900;
  line-height: .84;
  text-transform: uppercase;
}

.page-v2[data-art-direction="broadcast"] .v2-hero-bio {
  max-width: 48ch;
  color: var(--v2-text);
  font-size: 1rem;
  font-weight: 560;
  line-height: 1.45;
}

.page-v2[data-art-direction="broadcast"] .v2-hero-market {
  margin-top: 1.35rem;
  padding: 0;
  border: 2px solid var(--v2-text);
  background: var(--v2-text);
}

.page-v2[data-art-direction="broadcast"] .v2-hero-market > span {
  padding: .7rem .85rem;
  border-color: color-mix(in srgb, var(--v2-bg) 35%, transparent);
}

.page-v2[data-art-direction="broadcast"] .v2-hero-market :is(small, strong) {
  color: var(--v2-bg);
}

.page-v2[data-art-direction="broadcast"] .v2-hero-action {
  min-height: 52px;
  border: 2px solid var(--v2-text);
  border-radius: 0;
  font-weight: 850;
  text-transform: uppercase;
}

.page-v2[data-art-direction="broadcast"] .v2-regions {
  padding-inline: 1rem;
  gap: clamp(2rem, 6cqi, 3rem);
}

.page-v2[data-art-direction="broadcast"] .v2-region-label {
  margin-bottom: .75rem;
  font-size: max(.72rem, 11px);
  font-weight: 900;
}

.page-v2[data-art-direction="broadcast"] :is(.market-board, .contract-card, .community-rail, .story-v2, .media-link, .notice-v2, .action-card) {
  border-width: 2px;
  border-color: var(--v2-text);
  border-radius: 0;
  box-shadow: none;
}

.page-v2[data-art-direction="broadcast"] .w-contract {
  padding: 1rem;
  border: 2px solid var(--v2-text);
  background: var(--v2-surface);
}

.page-v2[data-art-direction="broadcast"] .w-contract .ca {
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.page-v2[data-art-direction="broadcast"] .w-pricecap {
  padding: 1rem;
  border: 2px solid var(--v2-text);
  background: var(--v2-surface);
}

.page-v2[data-art-direction="broadcast"] .w-pricecap .price {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.page-v2[data-art-direction="broadcast"] .market-board-values {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.page-v2[data-art-direction="broadcast"] .market-board-metric {
  min-width: 0;
  min-height: 92px;
  padding: .85rem 1rem;
}

/* The board normally carries three complementary facts. A two-column news
   grid left the fourth cell as a large accidental hole at every viewport;
   treating the final odd fact as the scoreline row makes the asymmetry read as
   editorial hierarchy instead of missing data. */
.page-v2[data-art-direction="broadcast"] .market-board-metric:last-child:nth-child(odd) {
  grid-column: 1 / -1;
}

.page-v2[data-art-direction="broadcast"] .market-board-value {
  font-size: clamp(1.25rem, 4.5cqi, 2rem);
  font-weight: 900;
}

.page-v2[data-art-direction="broadcast"] .action-card {
  min-height: 118px;
  border-left-width: 8px;
}

.page-v2[data-art-direction="broadcast"] .action-card-mark {
  border-radius: 0;
}

.page-v2[data-art-direction="broadcast"] .community-rail {
  padding: 0;
}

.page-v2[data-art-direction="broadcast"] .community-rail-head {
  padding: 1rem;
  border-bottom: 6px solid var(--v2-primary);
}

.page-v2[data-art-direction="broadcast"] .community-rail-head h2 {
  font-size: clamp(1.8rem, 6cqi, 3rem);
  font-weight: 900;
  text-transform: uppercase;
}

.page-v2[data-art-direction="broadcast"] .community-rail-track {
  margin: 0;
  gap: 0;
}

.page-v2[data-art-direction="broadcast"] .community-rail-track a {
  border-width: 0 0 2px;
  border-radius: 0;
}

.page-v2[data-art-direction="broadcast"] .community-rail-track a:last-child {
  border-bottom: 0;
}

.page-v2[data-art-direction="broadcast"] .story-v2 {
  border-top-width: 8px;
  border-top-color: var(--v2-primary);
}

.page-v2[data-art-direction="broadcast"] .story-v2 h2 {
  font-size: clamp(2.4rem, 8cqi, 4rem);
  font-weight: 900;
  line-height: .86;
  text-transform: uppercase;
}

.page-v2[data-art-direction="broadcast"] .contract-card-head {
  background: var(--v2-text);
  color: var(--v2-bg);
}

.page-v2[data-art-direction="broadcast"] .contract-card-head small {
  color: color-mix(in srgb, var(--v2-bg) 72%, transparent);
}

.page-v2[data-art-direction="broadcast"] .contract-card-network {
  border-color: color-mix(in srgb, var(--v2-bg) 35%, transparent);
  color: var(--v2-bg);
}

.page-v2[data-art-direction="broadcast"] .notice-v2--footnote {
  padding: 1rem 0;
  border-width: 4px 0 0;
}

/* Direction signatures decorate components; they may never replace a
   variant's semantic fill after its foreground has been chosen. Keep primary
   actions primary through direction and interaction cascades. */
.page-v2 .action-card.action-card--primary,
.page-v2 .action-card.action-card--primary:hover {
  background: var(--v2-primary);
  color: var(--v2-on-primary);
}

/* Footer ---------------------------------------------------------------- */

.v2-footer {
  display: flex;
  width: 100%;
  min-height: 84px;
  margin: 0 auto;
  padding: 1.5rem 1.25rem;
  border-top: 1px solid var(--v2-line);
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  color: var(--v2-muted);
  font-size: max(.72rem, 11px);
}

.v2-footer-brand {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  color: var(--v2-text);
  font-weight: 700;
}

.v2-footer-brand > span {
  width: 1.7rem;
  height: 1.7rem;
  border-radius: .5rem;
  font-size: max(.7rem, 11px);
}

.v2-footer > a:last-child {
  min-height: 24px;
  padding-block: 3px;
  color: var(--v2-text);
  text-decoration: underline;
  text-underline-offset: 3px;
}

@keyframes v2-shimmer {
  to { background-position: -220% 0; }
}

@keyframes v2-rise {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

.page-v2[data-motion="restrained"] .v2-region {
  animation: v2-rise .5s ease both;
  animation-timeline: view();
  animation-range: entry 5% cover 24%;
}

/* Responsive ------------------------------------------------------------ */

@media (min-width: 541px) {
  .v2-shell {
    border-inline: 1px solid var(--v2-line);
  }
}

@media (max-width: 540px) {
  .v2-identity {
    padding-inline: 1rem;
  }

  .v2-hero-kicker {
    margin-bottom: 1rem;
  }

  .v2-hero-market > span {
    padding-inline: .65rem;
  }

  .v2-hero-market > span:first-child {
    padding-left: 0;
  }

  .market-chart-toolbar,
  .market-chart-foot {
    align-items: flex-start;
    flex-direction: column;
  }

  .market-chart-foot > div {
    justify-content: flex-start;
  }

  .market-chart-stage {
    min-height: 230px;
  }

  .v2-hero-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .v2-hero-action {
    width: 100%;
  }

  .v2-regions {
    padding-inline: .75rem;
  }

  .v2-region[data-region-tone="accent"],
  .v2-region[data-region-tone="contrast"] {
    margin-inline: 0;
    padding: .65rem;
  }

  .v2-region[data-region-kind="grid"] .v2-region-flow {
    grid-template-columns: 1fr;
  }

  .v2-region[data-region-kind="grid"] [data-block-span] {
    grid-column: 1;
  }

  .market-board-metric,
  .market-board-metric.is-lead {
    min-width: min(100%, 135px);
    min-height: 96px;
    flex-basis: 135px;
  }

  .action-card {
    min-height: 170px;
  }

  .contract-card-address,
  .contract-card-foot {
    align-items: stretch;
    flex-direction: column;
  }

  .contract-card-short { display: inline; }
  .contract-card-full { display: none; }

  .contract-card-foot a {
    align-self: flex-start;
  }

  .media-link--poster {
    min-height: 440px;
  }

  .story-v2 {
    grid-template-columns: 1fr;
  }

  .story-v2-media {
    min-height: 0;
    aspect-ratio: 16 / 10;
  }

  .story-v2-copy {
    padding: 1.4rem;
  }

  .story-v2 h2 {
    font-size: clamp(2rem, 11cqi, 3.3rem);
  }

  .v2-footer {
    align-items: flex-start;
    flex-direction: column;
    padding-inline: 1rem;
  }
}

/* Shared widgets must respond to the width the composer actually gives them,
   not the browser viewport. A half-width block inside the 600px frame is still
   narrow on a 1440px monitor. These container fallbacks keep every supported
   component usable when an owner places it in a compact grid cell. */
@container widget (max-width: 320px) {
  .buy--split {
    grid-template-columns: 1fr;
  }

  .buy--split > :last-child:nth-child(odd) {
    grid-column: auto;
  }

  .ca {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
  }

  .ca-actions {
    width: 100%;
    min-width: 0;
    grid-column: 1 / -1;
    justify-content: center;
  }

  .ca:not(:has(.ca-label)) .ca-value,
  .ca[data-long] .ca-value {
    grid-column: 1 / -1;
  }

  .action-card {
    min-height: 0;
    grid-template-columns: 1fr;
  }

  .action-card-mark {
    width: 42px;
    height: 42px;
  }

  .action-card-go {
    min-height: 0;
    align-items: center;
    grid-column: 1;
    flex-direction: row;
  }

  .tok-head {
    flex-direction: column;
  }

  .cd {
    flex-wrap: wrap;
  }

  .cd-unit {
    max-width: none;
    flex: 1 1 calc(50% - 4px);
  }

  :is(.tiles, .feats, .team, .listings, .wall, .socials--icon-grid, .socials--big-cards, .links--grid, .tok--tiles) {
    grid-template-columns: 1fr;
  }

  .pricecap-figures,
  .story-v2 {
    grid-template-columns: 1fr;
  }
}

/* Keep the keyboard boundary authoritative after every direction and legacy
   component rule. Several footer and nested controls previously fell back to
   a zero-width outline even though the global focus colour was valid. */
.page-v2 :where(a[href], button, input, select, textarea, [tabindex]):focus-visible {
  outline: 3px solid var(--v2-focus);
  outline-offset: 4px;
}

@media (prefers-reduced-motion: reduce) {
  .page-v2 *,
  .page-v2 *::before,
  .page-v2 *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }

  .page-v2[data-art-direction="cult-classic"] .v2-region .v2-block {
    transform: none;
  }
}
