  /* A series carries its identity into cards on any host page. */
  .rv-series-art { display: block; position: relative; aspect-ratio: 3 / 2; overflow: hidden; margin: -1.75rem -1.75rem 0.25rem; }
  .rv-series-art > img { display: block; width: 100%; height: 100%; object-fit: cover; }
  .rv-series-art .rv-series-art-logo { position: absolute; left: 3%; top: 16%; width: 43%; height: 68%; object-fit: contain; }
  :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) {
    --rv-series-ink: oklch(from var(--color-secondary) 0.29 0.065 225);
    background: var(--rv-cream); color: var(--rv-series-ink); border-color: var(--rv-series-ink);
  }
  :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) :is(.rv-kicker, .rv-lead-label, .rv-ed-date, .rv-ed-title, .rv-ed-sum, .rv-ed-foot) { color: inherit; }
  :is(.rv-lead, .rv-ed):has(.rv-series-art-sol):hover { background: var(--rv-yellow); }
  .rv-ed:has(.rv-series-art) { padding: 1.75rem; }

  /* The painted identity continues into a printed ticket beneath the artwork. */
  :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) {
    gap: 1rem; box-shadow: 0 3px 10px color-mix(in srgb, var(--rv-series-ink) 14%, transparent);
    background-image: repeating-linear-gradient(0deg, transparent 0 3px, color-mix(in srgb, var(--rv-series-ink) 3%, transparent) 3px 4px);
  }
  :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) .rv-series-art { margin-bottom: 0.5rem; border-bottom: 5px solid var(--rv-series-ink); }
  :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) :is(.rv-lead-chip, .rv-ed-chip, .rv-scard-chip) {
    background: var(--rv-red); color: var(--rv-cream); border: 0; padding: 0.4rem 0.65rem; rotate: -2deg; white-space: normal;
  }
  :is(.rv-lead, .rv-ed):has(.rv-series-art-sol) :is(.rv-lead-date, .rv-ed-date) {
    font-family: var(--rv-f-hand); font-size: clamp(3.25rem, 6vw, 5rem); color: var(--rv-red); line-height: 1.15; rotate: -2deg; margin-block: 0.25rem;
  }
  :is(.rv-lead, .rv-ed):has(.rv-series-art-sol) :is(.rv-lead-title, .rv-ed-title) {
    font-family: var(--rv-f-cond); font-size: clamp(2rem, 3vw, 2.75rem); text-transform: uppercase; line-height: 1.05;
  }
  .rv-scard:has(.rv-series-art-sol) .rv-scard-name { font-size: clamp(3rem, 5vw, 4.5rem); }
  .rv-scard:has(.rv-series-art-sol) .rv-scard-top time { display: block; font-family: var(--rv-f-hand); font-size: 2.6rem; color: var(--rv-red); letter-spacing: 0; line-height: 1.2; margin-top: 0.35rem; }
  :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) :is(.rv-scard-foot, .rv-lead-foot, .rv-ed-foot) {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 1rem;
    background: var(--rv-series-ink); color: var(--rv-cream); margin: 0.5rem -1.75rem -1.75rem; padding: 1.15rem 1.75rem; border: 0; border-top: 1px dashed color-mix(in srgb, var(--rv-cream) 28%, var(--rv-series-ink));
  }
  :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) :is(.rv-scard-foot, .rv-lead-foot, .rv-ed-foot) > span:last-child {
    display: block; font-family: var(--rv-f-cond); font-size: 1.15rem; background: var(--rv-red); color: var(--rv-cream); padding: 0.6rem 0.85rem; text-align: center;
  }
  :is(.rv-lead, .rv-ed):has(.rv-series-art-sol):hover { background-color: var(--rv-cream); box-shadow: 0 5px 14px color-mix(in srgb, var(--rv-series-ink) 18%, transparent); }
  @media (max-width: 420px) {
    :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) :is(.rv-scard-foot, .rv-lead-foot, .rv-ed-foot) { grid-template-columns: minmax(0, 1fr); }
    :is(.rv-scard, .rv-lead, .rv-ed):has(.rv-series-art-sol) :is(.rv-scard-foot, .rv-lead-foot, .rv-ed-foot) > span:last-child { justify-self: start; }
  }

  /* Sol de Rua: the owner's selected painted direction, confined to this series. */
  body:has(.rv-sol) {
    --rv-sea: oklch(from var(--color-secondary) 0.29 0.065 225);
    --rv-sun: color-mix(in srgb, var(--color-primary) 80%, var(--color-accent));
    --rv-espresso: var(--rv-sea);
    background: var(--rv-sea);
  }
  body:has(.rv-sol) .rv-header-dusk { background: var(--rv-sea); }
  .rv-sol { background: var(--rv-sun); color: var(--rv-sea); }
  .rv-sol .rv-s-hero { padding-block: 2.5rem 3rem; overflow: hidden; isolation: isolate; }
  .rv-sol .rv-s-hero::after { content: none; }
  .rv-sol .rv-s-hero-grid { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; }
  .rv-sol .rv-s-intro { width: 44%; position: relative; z-index: 1; }
  .rv-s-identity-art { position: absolute; inset: -2.5rem 0 -3rem; z-index: -1; pointer-events: none; }
  .rv-s-identity-art > .event-art-window { width: 100%; height: 100%; }
  .rv-s-identity-art .rv-series-art-scene {
    mask-image: linear-gradient(to right, transparent, currentColor 8%, currentColor 92%, transparent), linear-gradient(to top, transparent, currentColor 24%);
    mask-composite: intersect;
  }
  .rv-sol .rv-s-eyebrow { color: var(--rv-sea); font-size: 0.875rem; }
  .rv-sol .rv-s-rule { background: var(--rv-red); }
  .rv-sol .rv-lockup { width: min(100%, 23rem); aspect-ratio: 1; margin: 1.5rem auto 0; }
  .rv-s-brand { display: block; width: 100%; height: auto; }
  .rv-sol .rv-s-lede { color: var(--rv-sea); font-size: 1.125rem; line-height: 1.6; margin-top: 1.25rem; }
  .rv-sol .rv-s-ctas { margin-top: 1.5rem; gap: 0.75rem; }
  .rv-sol :is(.rv-s-cta, .rv-s-ghost) { border-radius: 0; font-family: var(--rv-f-cond); font-size: 1.25rem; font-weight: 700; letter-spacing: 0.04em; box-shadow: none; padding-inline: 1.4rem; }
  .rv-sol .rv-s-ghost { color: var(--rv-sea); border: 2px solid var(--rv-sea); background: var(--rv-cream); }
  .rv-sol .rv-s-ghost:hover { background: var(--rv-sea); color: var(--rv-cream); }
  .rv-sol .rv-s-poster { max-width: none; width: 100%; }
  .rv-sol .rv-s-poster::before { content: none; }
  .rv-sol .rv-s-poster-card { display: grid; grid-template-columns: 0.8fr 1.5fr; background: var(--rv-cream); color: var(--rv-sea); border: 2px solid var(--rv-sea); border-radius: 0; box-shadow: 7px 7px 0 var(--rv-sea); }
  .rv-sol .rv-s-poster-photo { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-around; padding: 1.5rem; gap: 1rem; }
  .rv-sol .rv-s-poster-date { position: static; font-family: var(--rv-f-hand); font-size: clamp(2.75rem, 4.5vw, 4rem); color: var(--rv-red); text-shadow: none; rotate: -3deg; }
  .rv-sol .rv-s-poster-photo .rv-s-pill { position: static; border: 0; border-radius: 0; background: transparent; color: var(--rv-sea); padding: 0; }
  .rv-sol .rv-s-poster-body { border-left: 1px solid var(--rv-sea); padding: 1.5rem 2rem; }
  .rv-sol :is(.rv-s-prog-time, .rv-s-prog-who, .rv-s-tags) { color: var(--rv-sea); }
  .rv-sol .rv-s-tags { border-color: color-mix(in srgb, var(--rv-sea) 25%, transparent); margin-top: 1rem; padding-top: 1rem; }
  .rv-sol .rv-s-prog-title { font-size: 2.2rem; color: var(--rv-sea); }
  .rv-sol .rv-s-prog-row { display: block; }
  .rv-sol .rv-s-prog-who { display: block; margin-top: 0.5rem; }
  .rv-sol .rv-s-band { background: var(--rv-red); color: var(--rv-cream); rotate: 0deg; scale: 1; padding-block: 1.1rem; font-family: var(--rv-f-hand); font-size: 1.25rem; }
  .rv-sol .rv-s-editions { padding-block: 4rem; background: var(--rv-red); color: var(--rv-cream); }
  .rv-sol :is(.rv-s-h2, .rv-s-head-lede, .rv-s-hand-kicker) { color: var(--rv-cream); }
  .rv-sol .rv-s-head { margin-bottom: 2rem; }
  .rv-sol .rv-s-h2 { font-size: clamp(2.75rem, 5vw, 4rem); }
  .rv-sol .rv-s-card { border: 1px solid var(--rv-cream); border-radius: 0; background: transparent; color: var(--rv-cream); }
  .rv-sol .rv-s-card:has(.rv-s-badge-next) { background: var(--rv-sun); color: var(--rv-sea); border-color: var(--rv-sun); }
  .rv-sol :is(.rv-s-card-date, .rv-s-card-foot, .rv-s-card-meta, .rv-s-badge-off) { color: inherit; }
  .rv-sol .rv-s-badge-next { color: var(--rv-sea); }
  .rv-sol a.rv-s-card:hover { background: var(--rv-cream); color: var(--rv-sea); }
  .rv-sol .rv-s-card-off :is(.rv-s-card-date, .rv-s-card-title) { color: var(--rv-cream); }
  .rv-sol .rv-s-follow { border: 0; border-top: 5px solid var(--rv-sun); border-radius: 0; background: var(--rv-sea); box-shadow: none; padding: clamp(1.5rem, 4vw, 3rem); }
  .rv-sol .rv-s-about { background: var(--rv-cream); }
  .rv-sol :is(.rv-s-about-title, .rv-s-about-body, .rv-s-about-kicker) { color: var(--rv-sea); }
  .rv-sol :is(a, button, input):focus-visible { outline: 3px solid var(--rv-sea); outline-offset: 4px; }
  .rv-sol :is(.rv-s-editions, .rv-o-panel) :is(a, button, input):focus-visible { outline-color: var(--rv-sun); }
  /* An edition continues the same palette around the unchanged sign-up partial. */
  .rv-sol-nav-brand { display: flex; align-items: center; }
  .rv-nav-wordmark { display: block; width: 12rem; height: 4rem; object-fit: contain; }
  body:has(.rv-sol) .rv-dusk-bar { padding-block: 0.7rem; }
  body:has(.rv-sol) .rv-dusk-link { font-size: 1rem; letter-spacing: 0.1em; }
  .rv-edition.rv-sol { background: var(--rv-sun) url("sol-de-rua-paper.385446a521bd.webp") repeat; background-size: 640px 640px; }
  .rv-sol .rv-o-art { overflow: hidden; aspect-ratio: 1.2; margin: -1rem -2rem -2.5rem; mask-image: linear-gradient(to bottom, transparent, black 10%, black 80%, transparent), linear-gradient(to right, transparent, black 6%, black 92%, transparent); mask-composite: intersect; }
  .rv-sol .rv-o-art > .event-art-window { width: 175%; max-width: none; height: 100%; margin-left: -75%; }
  .rv-sol .rv-o-art .rv-series-art-scene { object-fit: cover !important; object-position: right top; }
  .rv-sol .rv-o-date { font-family: var(--rv-f-hand); color: var(--rv-red); rotate: -3deg; }
  .rv-sol .rv-o-title { font-size: clamp(3.5rem, 6vw, 6rem); line-height: 0.98; }
  .rv-sol .rv-o-ticket { position: relative; }
  .rv-sol .rv-o-main { padding-top: 2rem; border-top: 2px solid var(--rv-sea); }
  .rv-sol .rv-o-body { max-width: 42rem; }
  @media (max-width: 760px) {
    .rv-nav-wordmark { width: 10.5rem; height: 3.5rem; }
    .rv-sol .rv-o-art { aspect-ratio: 1.5; margin: -1rem -1.25rem -2rem; }
  }
  .rv-sol :is(.rv-o-back, .rv-o-date, .rv-o-title, .rv-o-body, .rv-o-pill) { color: var(--rv-sea); }
  .rv-sol .rv-o-back a { color: var(--rv-sea); }
  .rv-sol .rv-o-back a:hover { color: var(--rv-red); }
  .rv-sol .rv-o-date { color: var(--rv-red); }
  .rv-sol .rv-o-chip { background: var(--rv-red); color: var(--rv-cream); }
  .rv-sol .rv-o-ticket { border-radius: 0; border: 2px solid var(--rv-sea); box-shadow: 6px 6px 0 var(--rv-sea); }
  .rv-sol .rv-o-panel { background: var(--rv-sea); color: var(--rv-cream); border: 0; border-top: 5px solid var(--rv-red); border-radius: 0; box-shadow: none; }
  .rv-sol .rv-o-flyer { border-radius: 0; }
  .rv-sol .rv-o-brand { width: min(70%, 14rem); margin: 1rem 0 2rem; }
  @media (max-width: 760px) {
    .rv-sol .rv-s-hero { padding-block: 1.75rem 2.5rem; }
    .rv-sol .rv-s-hero-grid { gap: 1.5rem; }
    .rv-sol .rv-s-intro { width: 100%; }
    .rv-sol .rv-lockup { width: min(75%, 19rem); margin-top: 1rem; }
    .rv-s-identity-art { position: relative; inset: auto; z-index: 0; height: 22rem; overflow: hidden; margin-inline: -1.25rem; }
    .rv-s-identity-art > .event-art-window { width: 175%; max-width: none; height: auto; margin-left: -75%; }
    .rv-s-identity-art .rv-series-art-scene { mask-image: linear-gradient(to bottom, transparent, currentColor 18%, currentColor 75%, transparent); mask-composite: add; }
    .rv-sol .rv-s-poster-card { grid-template-columns: minmax(0, 1fr); box-shadow: 4px 4px 0 var(--rv-sea); }
    .rv-sol .rv-s-poster-body { border-left: 0; border-top: 1px solid var(--rv-sea); padding: 1.5rem; }
    .rv-sol .rv-s-poster-photo { padding: 1rem; }
    .rv-sol .rv-s-cards { grid-template-columns: minmax(0, 1fr); }
    .rv-sol .rv-s-editions { padding-block: 3rem; }
    .rv-sol .rv-s-ctas > a { flex: 1; padding-inline: 1rem; }
    .rv-sol .rv-o-brand { width: 10rem; }
  }

/* Layer contract: landscape 3:2; logo over the left clear area, never the dancers.
   Compact has a fixed 112px logo slot, no illustration in its HTML. Under 280px
   available width the live title alone carries identity instead of a tiny logo. */
.rv-series-art-sol { background: var(--rv-yellow); isolation: isolate; }
.rv-card-paper { position: absolute; inset: 0; z-index: -1; background-color: var(--rv-yellow); background-repeat: repeat; background-size: 640px 640px; pointer-events: none; }
.rv-s-hero > .rv-card-paper { z-index: -2; }
.rv-sol .rv-lockup > .rv-series-art-logo { display: block; width: 100%; height: auto; }
.rv-o-brand { display: block; }
.rv-o-brand > img { width: 100%; height: auto; }
.rv-series-art-compact { width: 7rem; aspect-ratio: 1; margin: 0; }
.rv-series-art-compact .rv-series-art-logo { inset: 6%; width: 88%; height: 88%; }
.rv-owned-card { overflow: hidden; }
.rv-owned-card :is(.rv-ed-title, .rv-ed-foot) { overflow-wrap: anywhere; }
.rv-owned-compact { display: grid; grid-template-columns: 7rem minmax(0, 1fr); gap: 1rem; align-items: center; color: var(--rv-ink); container-type: inline-size; }
.rv-owned-compact-details { display: flex; flex-direction: column; gap: .25rem; min-width: 0; overflow-wrap: anywhere; }
.rv-owned-compact-title { font-family: var(--rv-f-cond); font-size: 1.25rem; font-weight: 700; line-height: 1.15; }
.rv-owned-compact:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
@container (max-width: 279px) {
  .rv-owned-compact > .rv-series-art { display: none; }
  .rv-owned-compact-details { grid-column: 1 / -1; }
}

/* Safe rectangle fractions are measured on the full asset canvas. This first
   extraction has no overscan: a later extended canvas supplies its own fractions.
   Host opt-in only reveals existing pixels; it never stretches the painting. */
:is(.rv-series-art-sol, .rv-sol .rv-s-identity-art) {
  --event-art-safe-left: 0;
  --event-art-safe-width: 1;
  --event-art-ratio: 3 / 2;
  --event-art-bleed-limit: min(20vw, 24rem);
}
.rv-series-art-sol > .event-art-window { width: 100%; }

:is(.rv-ed-title, .rv-lead-title, .rv-scard-name) { overflow-wrap: anywhere; }
