/*
  themes/kanye.css — the real Kanye/Ye visual identity, for the one event
  whose `theme.theme_id` is "kanye" (data/events/kanye-west-russia-2026.json).

  This is a NEW file for the registry-driven generated pipeline. It is NOT
  a copy of /site-v3.css and does not modify it — the legacy hand-written
  production pages keep using site-v3.css untouched, exactly as before.
  This file only supplies the custom-property values and decorative hooks
  event-base.css defines for a theme to fill in (see that file's header
  comment) — the same visual language (black/grey/signal-red/acid palette,
  the Kanye hero photo, the artist signature watermark, condensed poster
  typography), rebuilt as a swappable theme layer instead of the only
  possible look for every generated event.

  A future non-Kanye event must NEVER load this file — see
  scripts.lib.context.KNOWN_THEME_IDS / resolve_theme_id() for the
  allowlist + fail-closed fallback that guarantees that.
*/

@font-face{font-family:"Ye Poster";src:url("/fonts/nimbus-sans-bold.otf") format("opentype");font-style:normal;font-weight:700 900;font-display:swap}
@font-face{font-family:"Ye Text";src:url("/fonts/nimbus-sans-regular.otf") format("opentype");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Ye Text";src:url("/fonts/nimbus-sans-bold.otf") format("opentype");font-style:normal;font-weight:700 900;font-display:swap}

:root{
  --event-bg:#050505;
  --event-surface:#cfd2d5;
  /* Real production Kanye styling (site-v3.css's own `--paper:#cfd2d5`
     plus a SEPARATE `.timeline{background:#b9bdc1}` override) gives the
     timeline section its own, slightly darker surface — distinct from the
     confirmed/faq "paper" above. See event-base.css's own comment on
     --event-timeline-surface for the full contract. */
  --event-timeline-surface:#b9bdc1;
  /* Real production Kanye styling (site-v3.css's own `.details,.faq{
     background:#eeeef0}`) gives the FAQ section this surface, distinct
     from the plain white event-base.css's generic `.faq` uses when a
     theme doesn't define this token. See event-base.css's own comment
     on --event-faq-surface for the full contract. */
  --event-faq-surface:#eeeef0;
  --event-accent:#ff315d;
  /* Real production Kanye styling uses a SECOND accent — an acid-green —
     for live/operational status indicators only (status stamp, status
     dot, status-center label, saved-vote state, status-card border),
     distinct from the red/pink CTA accent above. See event-base.css's own
     comment on --event-status-accent for the full rationale and the exact
     list of selectors that read this token. */
  --event-status-accent:#d7ff00;
  /* --event-accent (#ff315d) is chosen for contrast against --event-bg
     (5.68:1, healthy) but is only 2.36:1 against --event-surface
     (#cfd2d5) and 1.90:1 against --event-timeline-surface (#b9bdc1) —
     both well below the 4.5:1 WCAG AA threshold — so text that reads
     the accent hue directly on one of those LIGHT surfaces (.facts
     article>span, the fact-index label; .feed time, the timeline date;
     .feed article a, the timeline source link — see event-base.css's own comment on
     --event-light-surface-accent for the full contract) needs a darker,
     text-safe variant instead of --event-accent itself, which stays
     #ff315d unchanged for every CTA/badge/branding use on --event-bg.
     #8f0d30 — a darkened shade of the same red/pink hue, not an
     unrelated color — reaches 6.10:1 on --event-surface and 4.90:1 on
     --event-timeline-surface (the binding, darker-background case),
     comfortably clearing AA on both real Kanye light surfaces at once. */
  --event-light-surface-accent:#8f0d30;
  --event-text:#f3f3ef;
  --event-muted:#777c82;
  --event-line:#9ca0a5;
  --event-font-display:"Ye Poster","Arial Narrow","Helvetica Neue Condensed",Impact,Arial,sans-serif;
  --event-font-body:"Ye Text","Helvetica Neue",Helvetica,Arial,sans-serif;
  /* Real production Kanye styling (site-v3.css's own `.hero h1{font-family:
     var(--mono)}`) sets the hero eyebrow-style h1 in a monospace stack,
     never the Ye Text body font — a Kanye-only token rather than a new
     event-base.css concept, since no other theme (default included) has a
     reason to define a third font role. */
  --event-font-mono:"Courier New",monospace;
  --event-hero-bg:none;
}

.hero{background-image:url('/kanye-live.png');background-size:cover;background-position:center}
.hero h1{font-family:var(--event-font-mono)}

/* Exact production Kanye hero shading (P2). event-base.css's generic
   `.heroShade{background:linear-gradient(90deg,rgba(0,0,0,.9) 0%,
   rgba(0,0,0,.7) 42%,rgba(0,0,0,.1) 78%),linear-gradient(0deg,
   rgba(0,0,0,.8),transparent 55%)}` is noticeably lighter than real
   production: site-v3.css declares `.heroShade` THREE times — an early
   unconditional legacy/default rule, a `@media(max-width:900px){
   .heroShade{...}}` mobile override of that same rule, and a LATER,
   unconditional `.heroShade{background:linear-gradient(90deg,
   rgba(0,0,0,.98) 0%,rgba(0,0,0,.84) 45%,rgba(0,0,0,.18) 78%),
   linear-gradient(0deg,rgba(0,0,0,.9),transparent 62%)}` inside its own
   Kanye `:root` block. Equal specificity, so source order is the
   tiebreaker: the later, unconditional rule wins at EVERY viewport
   width, including inside the earlier 900px media block, and the
   mobile-scoped value never actually renders. Transcribed verbatim from
   that cascade-winning rule, never guessed. Deliberately unconditional
   here too (no `@media` wrapper), mirroring production exactly: this
   file's own `<link>` loads after event-base.css's in
   templates/default/event.template.html, so this rule already wins
   over event-base.css's generic desktop AND
   `@media(max-width:900px){.heroShade{...}}` rules at every width,
   with no extra breakpoint needed. event-base.css's own generic
   `.heroShade` (desktop and 900px) stays the untouched, lighter default
   for every other theme. */
.heroShade{background:linear-gradient(90deg,rgba(0,0,0,.98) 0%,rgba(0,0,0,.84) 45%,rgba(0,0,0,.18) 78%),linear-gradient(0deg,rgba(0,0,0,.9),transparent 62%)}

/* P2 regression: real production Kanye styling adds a SECOND hero
   overlay on top of the background photo and .heroShade above — a
   diagonal black/signal-red tint from a `.hero:after` pseudo-element
   (site-v3.css's own `.hero:after{content:"";position:absolute;inset:0;
   background:linear-gradient(110deg,rgba(0,0,0,.18),transparent 50%,
   rgba(255,49,93,.08));pointer-events:none}` — immediately after that
   file's own `.hero{min-height:calc(100svh - 106px);filter:none}`
   inside the Kanye `:root` block, so this is genuinely Kanye-only
   production styling with no legacy/default equivalent anywhere in
   site-v3.css). Without it, the generated Kanye hero is flatter and
   missing the subtle warm/red cast production actually renders.

   Every declared property here is REQUIRED and transcribed verbatim —
   `content:""` is what makes a `:after` pseudo-element generate at all
   (event-base.css defines no `.hero:after` of its own to inherit from,
   unlike `.heroShade`, which is a real element this file's own rule
   above only overrides `background` on); `position:absolute;inset:0`
   sizes it to fill `.hero` (already `position:relative;overflow:hidden`
   via event-base.css's own generic `.hero` rule — never duplicated
   here); `pointer-events:none` keeps it from intercepting clicks on the
   hero CTA/content beneath it.

   No z-index is added, and none is needed: `.heroContent` already
   carries an explicit `z-index:2` in event-base.css, which paints it
   above every other hero layer that (like this pseudo-element,
   `.heroShade` and `.themeArtwork`) has no explicit z-index of its own,
   regardless of paint order — the hero CTA/text stay fully on top and
   clickable either way. Kanye-only: default.css defines no `.hero:after`
   at all, so the default theme's hero never gets this tint. */
.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,rgba(0,0,0,.18),transparent 50%,rgba(255,49,93,.08));pointer-events:none}

/* Exact production Kanye navigation typography (site-v3.css's own
   `nav{font-family:var(--mono);text-transform:uppercase;font-size:13px;
   letter-spacing:.05em}` — --mono is that file's own "Courier New",
   monospace token, identical to --event-font-mono above, reused here
   rather than hardcoded again). This is the only nav{} rule in
   site-v3.css after the Kanye `:root` block and there is no later
   breakpoint-specific override, so it applies at every viewport width —
   never a new, invented breakpoint. Deliberately does not set `color`
   or `display`: production doesn't either, so both stay inherited from
   event-base.css's generic nav rule (color:#c7c7c7, and its own
   `@media(max-width:900px){nav{display:none}}` responsive hide),
   identical for every theme. */
nav{font-family:var(--event-font-mono);text-transform:uppercase;font-size:13px;letter-spacing:.05em}

/* Exact production Kanye monospace operational metadata (site-v3.css's
   own `.statusStamp{...font:900 13px/1.2 var(--mono)!important;...}`,
   `.statusChange time{...font:700 14px/1.4 var(--mono);...}`,
   `.facts article>span,.feed time{color:var(--red);font-family:
   var(--mono)}`, and `.voteTotal{font:700 14px/1.4 var(--mono)
   !important;...}` — every one of these sets `var(--mono))` as the
   font-family for a short, numeric/label-style piece of operational
   metadata, distinct from ordinary Ye Text body copy). Scoped to
   font-family ONLY: every one of these five selectors' font-size,
   weight and text-transform already matches production exactly via
   event-base.css's own generic rules; `.statusStamp`/`.statusChange
   time`/`.voteTotal`'s own color already matches production too.
   `.facts article>span`/`.feed time`'s own color is the one exception —
   event-base.css's own --event-light-surface-accent contrast fix (see
   that file's header comment and this file's own :root definition
   above) now resolves them to #8f0d30, not the raw --event-accent
   (#ff315d) production's `color:var(--red)` uses — a DELIBERATE
   divergence from production for WCAG AA, not a gap. This rule only
   ever touches font-family, never color, for any of the five.
   Never applied to ordinary body copy, and nav/`.hero h1`'s own,
   already-correct mono contracts above are unaffected. */
.statusStamp,.statusChange time,.facts article>span,.feed time,.voteTotal{font-family:var(--event-font-mono)}

/* Exact production Kanye body copy scale. site-v3.css declares THREE
   body{font-size} rules that could matter — an unconditional 18px early
   in the file, a `@media(max-width:900px){body{font-size:17px}}`, and a
   later unconditional `body{font-size:20px}` — but the LAST unconditional
   rule (20px) always wins the cascade over the earlier 900px media rule,
   regardless of viewport width, since a media-scoped rule gets no
   specificity boost over a plain one and source order is the only
   tiebreaker; the 17px value never actually renders at any width. The
   real, cascade-winning production values are 20px desktop and — from a
   LATER `@media(max-width:560px){body{font-size:18px}}`, the last rule
   that actually matches at narrow widths — 18px at ≤560px. Transcribed
   from that real winning cascade, never guessed. event-base.css's
   generic 18px is the safe default for every other theme and is left
   untouched. */
body{font-size:20px}
@media(max-width:560px){
  body{font-size:18px}
}

/* Exact production Kanye fact-copy scale (site-v3.css's own `.facts p,
   .detailGrid p,.feed p,.sectionTitle>p,.faq details p,.breaking div>p,
   .moreEvents>div>p:not(.label),footer p{font-size:20px}` desktop rule
   and its LATER `@media(max-width:560px){...font-size:18px}` mobile
   override — the body scale fix above doesn't reach `.facts p` text on
   its own, since event-base.css's own `.facts p{font-size:18px}` is a
   more specific selector than `body` and always wins regardless of
   theme. event-base.css's generic 18px desktop/17px mobile stay the
   untouched default for every other theme. */
.facts p{font-size:20px}
@media(max-width:560px){
  .facts p{font-size:18px}
}

/* Exact production Kanye timeline/FAQ/footer copy scale — the SAME
   cascade-winning site-v3.css rule as `.facts p` above
   (`.facts p,.detailGrid p,.feed p,.sectionTitle>p,.faq details p,
   .breaking div>p,.moreEvents>div>p:not(.label),footer p{font-size:
   20px}` desktop, later narrowed by `@media(max-width:560px){...
   font-size:18px}` for every member of that group EXCEPT footer p,
   which that mobile rule never lists and so stays 20px at every width).
   event-base.css's own `.facts p,.feed p{font-size:17px}` generic mobile
   rule would otherwise win for `.feed p` at narrow widths (17px, not the
   real production 18px), since Kanye had no mobile override for it
   until now. `.faq details p` and `footer p` are already 18px/16px
   respectively in event-base.css's generic, theme-agnostic rules — only
   the desktop bump to 20px is new for them; `footer p` needs no mobile
   override since production itself never shrinks it. event-base.css's
   generic values stay untouched for every other theme; `.facts p` above
   is unaffected. */
.feed p,.faq details p,footer p{font-size:20px}
@media(max-width:560px){
  .feed p,.faq details p{font-size:18px}
}

/* Production poster typography (site-v3.css's own `.heroTitle,.sectionTitle
   h2,.vote h2,.breaking h2,.moreEvents h2{text-transform:uppercase}`,
   `.facts h3,.detailGrid h3,.feed h3,.faq summary{text-transform:
   uppercase}`, `.statusHead b{...text-transform:uppercase...}`, and
   `.votePanel button,.votePanel button b{font-family:var(--display);
   text-transform:uppercase}`) uppercases every heading AND operational-
   control label already set in the poster display font —
   event-base.css's generic versions of these rules deliberately don't,
   since the default theme's plain Arial/Helvetica display font has no
   such convention. Kanye-only, and scoped to exactly this named set of
   elements: never the CTA text itself, the rest of the status card
   (`.statusCard>p`, `.statusStamp`), or body copy, and never a blanket
   text-transform on anything else. (.breaking/.detailGrid have no
   equivalent in this generated template's structure, so are omitted.) */
.heroTitle,.sectionTitle h2,.vote h2,.moreEvents h2,.facts h3,.feed h3,.faq summary,.statusHead b,.votePanel button{text-transform:uppercase}

/* P2 regression: real production Kanye poster typography also sets
   font-weight:900 for this same family of headings/labels/controls —
   site-v3.css's own `.logo,.heroTitle,.sectionTitle h2,.vote h2,
   .breaking h2,.moreEvents h2,.facts h3,.detailGrid h3,.feed h3,
   .faq summary,.statusHead b,.meta b,.cta,.mobileCta,aside a,
   .votePanel button,.votePanel button b{font-family:var(--display);
   font-weight:900}` — a SEPARATE production rule from the uppercase one
   directly above, with its own, slightly different selector list.
   `.logo`/`.heroTitle` are already 900 via event-base.css's own generic
   rules (`.logo{...font-weight:900...}`,
   `.heroTitle{...font-weight:900...}`), so need no Kanye override here
   at all; `.breaking h2`/`.detailGrid h3` have no equivalent in this
   generated template's structure, so are omitted, matching the same
   convention as the uppercase rule above. Every other member of
   production's own group DOES exist in this generated template
   (`.moreEvents h2`, `.mobileCta` and `.votePanel button b` included —
   real elements this rule's own selector list must therefore also
   cover, even though they weren't part of the uppercase fix above's
   narrower set) and currently falls through to event-base.css's own
   generic weight for each (400 for a bare `<button>`, the browser's
   implicit bold ~700 for a bare `<b>`/`<h2>`/`<h3>`, or an explicit 800
   for `.cta`/`.mobileCta`/`aside a`/`.faq summary` — never production's
   900). Font-weight-only, scoped to exactly this named set: never a
   blanket font-weight on `body`/`*`, and the uppercase rule above,
   `.cta`'s own color/background, and every other property already
   correct for each of these elements are all left untouched. */
.sectionTitle h2,.vote h2,.moreEvents h2,.facts h3,.feed h3,.faq summary,.statusHead b,.meta b,.cta,.mobileCta,aside a,.votePanel button,.votePanel button b{font-weight:900}

/* P2 regression: real production Kanye styling darkens the hero status
   card's own background — site-v3.css's own `.statusCard{background:
   rgba(5,5,5,.88);border-left-color:var(--acid)}`, inside the Kanye
   `:root` block. event-base.css's generic `.statusCard{...background:
   rgba(8,8,8,.78)...}` is noticeably more transparent, so the generated
   Kanye status card let more of the hero photo show through behind it
   and read less clearly than production.

   `border-left-color:var(--acid)` from that SAME production rule needs
   no separate override here: event-base.css's own generic
   `border-left:5px solid var(--event-status-accent, var(--event-accent))`
   already resolves to this theme's own `--event-status-accent:#d7ff00`
   (declared in this file's own :root block above) — the exact same
   acid-green `--acid` value site-v3.css's rule names — so it already
   matches production without any change. Background-only fix, scoped
   to exactly `.statusCard`: its padding/margin/backdrop-filter and
   every other property (already correct via the generic base rule)
   stay untouched, and this is default theme's own untouched value. */
.statusCard{background:rgba(5,5,5,.88)}

/* Production Kanye .moreEvents .label palette (site-v3.css's own
   `.moreEvents .label{color:#050505}` — it sets ONLY color, never a
   background, so the label sits directly on the red/pink cross-
   navigation surface with no badge/pill behind it, unlike
   event-base.css's generic version, which uses the WCAG-safe
   --event-accent-foreground/--event-bg pairing on a real --event-bg
   badge background — a contrast fix that must stay exactly as-is for
   the default theme). Kanye-only override: transparent background,
   black (--event-bg) text, matching production exactly. The
   .moreEvents section's own accent surface/CTA link colors are
   untouched. */
.moreEvents .label{background:transparent;color:var(--event-bg)}

/* Exact production Kanye cross-navigation CTA foreground (site-v3.css's
   own `.moreEvents>div:first-child>a{background:#050505;color:#fff}` — the
   CTA anchor itself, distinct from `.moreEvents .label` immediately
   above, which is its own separate transparent/black override and is
   untouched here). event-base.css's generic rule
   (`.moreEvents>div:first-child>a{background:var(--event-bg);color:
   var(--event-accent-foreground, var(--event-accent))}`) already resolves
   background correctly via --event-bg (#050505, black — no override
   needed), but Kanye never defines --event-accent-foreground, so color
   falls back to --event-accent (#ff315d, pink) instead of production's
   white. Color-only override, scoped to exactly this anchor: the default
   theme's own --event-accent-foreground:#ffffff (templates/default/assets/
   themes/default.css) already gives it the correct white-on-accent CTA
   and is unaffected, and the generic fallback chain itself is untouched
   for any future theme that also omits --event-accent-foreground. */
.moreEvents>div:first-child>a{color:#fff}

/* Exact production Kanye section-label badge (site-v3.css's own
   `.confirmed .label,.details .label,.timeline .label,.faq .label,
   .breaking>.label{display:inline-block;width:max-content;padding:5px
   9px;background:var(--red);color:#050505;font:900 15px/1.15
   var(--body);letter-spacing:.045em}`). event-base.css's generic
   `.updated,.label{...color:var(--event-accent)}` rule (shared by every
   section's label) renders these three as plain accent-colored text
   with no badge at all — the badge treatment is Kanye-only production
   styling. `.details .label`/`.breaking>.label` have no equivalent in
   this generated template's structure, so are omitted, matching the
   same convention already used for the uppercase-heading fix above.
   Deliberately excludes `.moreEvents .label` (its own, different
   Kanye-only override immediately above — no background at all) and
   `.statusCenter .label` (acid operational styling, untouched) — production
   itself never groups either of those two with this badge rule.
   `--event-accent`/`--event-bg` reproduce `var(--red)`/`#050505`
   exactly for this theme; font-family is already `var(--body)` via
   `--event-font-body`, inherited from `body`, so needs no explicit
   override here. */
.confirmed .label,.timeline .label,.faq .label{display:inline-block;width:max-content;padding:5px 9px;background:var(--event-accent);color:var(--event-bg);font-weight:900;font-size:15px;line-height:1.15;letter-spacing:.045em}

/* Exact production Kanye desktop fact-heading spacing (site-v3.css's own
   `.facts h3,.detailGrid h3,.feed h3{...margin:55px 0 17px}` desktop
   rule — event-base.css's generic `.facts h3{margin:24px 0 17px}` gives
   this heading far less top space than real production). Scoped to
   `.facts h3` only, matching this theme's existing narrow-selector
   convention elsewhere (`.detailGrid h3`/`.feed h3` have no equivalent
   fact-heading role in this generated template, so are omitted, same as
   every other production rule transcribed for a 3-selector group above).
   Desktop-only: production's own `@media(max-width:560px){.facts h3{
   margin:18px 0 10px;...}}` mobile override already matches
   event-base.css's generic mobile `.facts h3{margin:18px 0 10px;
   font-size:22px}` exactly, so Kanye needs no mobile override at all —
   only this desktop rule is new. event-base.css's generic 24px top
   margin is the safe default for every other theme and is left
   untouched. */
.facts h3{margin:55px 0 17px}

/* Exact production Kanye headline scale (site-v3.css's own `.heroTitle{
   font-size:clamp(62px,7.6vw,118px);...}` desktop rule and its
   `@media(max-width:560px){.heroTitle{font-size:56px}}` mobile override,
   the LAST of that file's two competing 560px .heroTitle font-size rules
   and so the one that actually wins the cascade) — transcribed verbatim,
   never guessed or interpolated. event-base.css's generic clamp(48px,
   6.8vw,100px)/44px is the safe default for every other theme and is
   left untouched; only Kanye's own font-size is overridden here. */
.heroTitle{font-size:clamp(62px,7.6vw,118px)}
@media(max-width:560px){
  .heroTitle{font-size:56px}
}

/* Exact production Kanye headline METRICS — line-height and letter-
   spacing, as distinct from the font-size fix above. site-v3.css sets
   `.heroTitle` line-height/letter-spacing THREE times: an early generic
   `line-height:.92;letter-spacing:-.055em`, a Kanye `:root`-block rule
   overriding to `line-height:.84;letter-spacing:-.035em`, and a LATER
   unconditional `.heroTitle{letter-spacing:-.055em;line-height:.82;
   font-weight:900}` — that last, most-recent-in-source rule is the one
   that actually wins the cascade (equal specificity, source order is
   the tiebreaker), never overridden again at any width. Real production
   Kanye renders line-height:.82/letter-spacing:-.055em, not
   event-base.css's generic line-height:.92/letter-spacing:-.045em this
   theme was still falling through to. This is purely cosmetic-metric,
   never a font-size change — the fix above and every mobile
   `.heroTitle{font-size}` override are unaffected, since no later rule
   in production ever touches line-height/letter-spacing again at any
   width. */
.heroTitle{line-height:.82;letter-spacing:-.055em}

/* Exact production Kanye section-heading scale (confirmed/timeline/FAQ/
   poll headings). site-v3.css's Kanye block never overrides font-size
   for `.sectionTitle h2,.vote h2` at all (only font-family/font-weight/
   letter-spacing/line-height) — the desktop clamp(38px,4.8vw,72px) and
   the `@media(max-width:560px){...font-size:39px}` mobile value it
   actually renders both come from that file's own legacy/default
   section, inherited unchanged. Transcribed from what Kanye really
   renders, on the same real 560px breakpoint site-v3.css uses — not a
   new, invented one. event-base.css's generic clamp(34px,4.8vw,64px)/
   34px is the safe default for every other theme and is left untouched;
   .heroTitle's own scale above is unaffected. */
.sectionTitle h2,.vote h2{font-size:clamp(38px,4.8vw,72px)}
@media(max-width:560px){
  .sectionTitle h2,.vote h2{font-size:39px}
}

/* Exact production Kanye cross-navigation headline scale (site-v3.css's
   own unconditional `.moreEvents h2{font-size:clamp(42px,5.3vw,78px);
   ...}` desktop rule, and a LATER `@media(max-width:900px){...
   .moreEvents h2{...font-size:clamp(46px,10vw,70px);...}}` override —
   that 900px rule is the cascade-winning one at every width it
   matches, including inside the file's own narrower 560px block,
   since it comes after that block in source order and media queries
   add no specificity of their own). Transcribed verbatim from the real
   winning cascade, never guessed. Scoped to font-size only — the same
   uppercase contract above already applies; letter-spacing is already
   event-base.css's own generic `-.035em`, matching production exactly
   (see the line-height fix below for that value's own source), so
   needs no override here either. event-base.css's generic
   clamp(36px,5.3vw,64px)/38px is the safe default for every other
   theme and is left untouched; `.sectionTitle h2,.vote h2` above is
   unaffected. */
.moreEvents h2{font-size:clamp(42px,5.3vw,78px)}
@media(max-width:900px){
  .moreEvents h2{font-size:clamp(46px,10vw,70px)}
}

/* P2 regression: real production Kanye styling also tightens these same
   three section headings' line-height — site-v3.css's own
   `.sectionTitle h2,.vote h2,.breaking h2,.moreEvents h2{letter-spacing:
   -.035em;line-height:.9}`, inside the Kanye `:root` block. Font-size
   (above) and font-weight:900 (this file's own earlier poster-weight
   rule) are already fixed; event-base.css's generic line-height —
   1.02 for `.sectionTitle h2,.vote h2`, 1 for `.moreEvents h2` — is
   looser than production's `.9`, so multi-line RU/EN headings render
   taller and airier than the real design.

   `letter-spacing:-.035em` from this SAME production rule needs no
   separate override: event-base.css's own generic rules for both
   selector groups already declare that exact value (see each one's own
   comment above), so it already matches without this fix touching it.
   `.breaking h2` has no equivalent in this generated template's
   structure, so is omitted, matching this file's own established
   convention elsewhere. Line-height-only, scoped to exactly these three
   selectors: margins, colors, responsive font-size steps and every
   other property already fixed above are all left untouched, and
   default.css defines no line-height override for any of them. */
.sectionTitle h2,.vote h2,.moreEvents h2{line-height:.9}

/* Signature watermark — decorative only, hidden from assistive tech via
   the template's own aria-hidden on .themeArtwork; event-base.css already
   makes this hook pointer-events:none and non-interactive. */
.themeArtwork{background:url('/kanye-signature-transparent.png') no-repeat;background-position:right 5vw bottom 5vh;background-size:min(34vw,500px) auto;filter:invert(1);opacity:.22;transform:rotate(-5deg)}

@media(max-width:900px){
  .themeArtwork{background-position:right 3vw bottom 4vh;background-size:45vw auto;opacity:.16}
}
@media(max-width:560px){
  .themeArtwork{background-position:right -8vw bottom 11vh;background-size:68vw auto}
}
