/* ==============================================================
   TOPP 50 SOM BILDESOEYLER (prototype, runde 2 21.10.2026, venter paa
   eierens dom)
   Lista er figuren: én rad per konsert, og soeylen er selve bildet, like
   langt som tallet lista sorteres paa, i samme skala for alle. Gjennomfoert
   er svart-hvitt, kommende er i farger med gul strek og gult tall, og et
   anslag toner ut i enden og staar uten tall. Ingenting staar oppaa bildet.
   Runde 1 hadde graa soeyler og smaa kvadratbilder: panelet leste soeylene
   som skjelettlastere og bildene som frimerker.
   Runde 5 (21.10.2026): kjoelig duotone paa gjennomfoert, felles endestrek paa like lange
   soeyler, antall aktive valg i filterknappen, forklaringen paa én linje.
   Runde 3 (21.10.2026): heroen har fotoet over teksten, ikke bak den; korte
   soeyler er en ren strek i stedet for brukne fotoflis; hvert bilde har sitt
   eget utsnitt (data/topp50-bildeutsnitt.json); anslaget har grunnlaget sitt
   under ordet og én forklaring over lista.
   Egen fil fordi prototypen ikke skal roere css/style.css. Lastes bare av
   konserter/topp-50/ (extraHead i scripts/generate-hub-pages.js).
   ============================================================== */

.t50 {
  /* Etiketten (tallet) staar i en fast renne til hoeyre for den lengste
     soeylen, saa skalaen er lik i alle rader: full bredde er
     100 % - renne - mellomrom, uansett hvor tallet faktisk havner. */
  --t50-etikett: 4.6rem;
  --t50-mellom: 8px;
  --t50-h: 52px;
  --t50-h-topp: 84px;
  --t50-h-brudd: 58px;
  --t50-gap: 3px;
  /* Under terskelen er soeylen for smal til aa baere et bilde (16-30 px paa
     390 ble fotoflis som saa brukne ut). Da staar bare streken igjen, like
     lang som foer. Lengden endres aldri, bare hva soeylen er laget av. */
  --t50-terskel: 34px;
  --t50-strek-h: 10px;
  /* Runde 5: gjennomfoert er en kjoelig duotone av sidens egen palett
     (blaatonene fra bg-card og lenkefargen), ikke ren gratone. Skygge og lys. */
  --duo-skygge: #1b2438;
  --duo-lys: #d5ddee;
  padding: 16px 0 56px;
}
[data-theme="dark"] .t50 {
  --duo-skygge: #10151f;
  --duo-lys: #8fa5cf;
}

/* ---------- Hodet: statusvalg og filter paa én rad ---------- */
.t50-kontroller {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 8px;
  margin-bottom: 14px;
}
.t50-tegn {
  display: inline-block;
  flex: none;
  width: 18px;
  height: 5px;
  border-radius: 2px;
  background: var(--accent);
  box-shadow: inset 0 0 0 1px var(--accent-ink);
}

/* Valget er de samme statusknappene som filterpanelet bruker (.filter-chip
   med data-filter-group="status"), saa filtreringen, tellingen og
   «Nullstill» virker uten et eget skript. Formen er en todelt bryter. */
.t50-valg {
  display: inline-flex;
  gap: 4px;
  padding: 3px;
  border: 1px solid var(--border-strong);
  border-radius: 12px;
}
.t50-valg .filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 0 12px;
  border: 0;
  border-radius: 9px;
  color: var(--text-muted);
  font-size: 0.9rem;
  font-weight: 700;
}
.t50-valg .filter-chip.is-active {
  background: var(--text);
  color: var(--bg);
}
@media (hover: hover) and (pointer: fine) {
  .t50-valg .filter-chip:not(.is-active):hover { color: var(--text); }
}
.t50-valg .filter-chip:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* Filterpanelet staar paa samme rad som valget. Lukket er det en knapp;
   aapent tar det hele bredden under raden. */
.t50-kontroller .hub-filter-disclosure {
  flex: 0 1 auto;
  max-width: none;
  margin: 0;
  box-shadow: none;
}
.t50-kontroller .hub-filter-disclosure > summary {
  gap: 12px;
  min-height: 48px;
  padding: 0 16px;
}
.t50-kontroller .hub-filter-disclosure[open] { flex-basis: 100%; }

/* ---------- Lista ---------- */
.t50-liste {
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Mobil foerst (85-90 % av trafikken): plass og navn paa én linje,
   bildesoeylen under. Alle soeylene starter i samme venstrekant, saa radene
   leses som én figur. */
.t50-lenke {
  display: grid;
  grid-template-columns: 2.1rem minmax(0, 1fr);
  grid-template-areas:
    "plass tekst"
    "soyle soyle"
    "note  note";
  align-items: center;
  column-gap: 10px;
  padding: 11px 0;
  color: inherit;
  text-decoration: none;
  border-radius: 8px;
  transition: transform var(--dur-press) var(--ease-out-quart);
}
.t50-lenke:active { transform: scale(0.99); }
.t50-lenke:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 4px;
}

.t50-plass {
  grid-area: plass;
  color: var(--text-muted);
  font-family: "Anton", var(--font-sans);
  font-size: 1.5rem;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.t50-rad--kommende .t50-plass { color: var(--accent-ink); }

.t50-tekst {
  grid-area: tekst;
  display: grid;
  gap: 1px;
  min-width: 0;
}
.t50-navn {
  overflow: hidden;
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.t50-sted {
  color: var(--text-muted);
  font-size: 0.82rem;
  line-height: 1.35;
}
/* Datoen staar foerst og i fullt blekk: plass 2-8 er alle Unity Arena med
   samme tall, og datoen er det som faktisk skiller dem. */
.t50-dato {
  color: var(--text);
  font-weight: 600;
  white-space: nowrap;
}
.t50-rad--kommende .t50-dato {
  color: var(--accent-ink);
  font-weight: 700;
}
/* Arenanavnet brytes aldri midt i («Oslo / Spektrum»); hele navnet gaar
   heller ned paa neste linje. */
.t50-arena { white-space: nowrap; }

/* ---------- Bildesoeylen ---------- */
/* Soeylene maales mot raden de staar i (container), saa lengden er en
   ekte lengde i px. Det trengs for terskelen under: CSS kan bare velge
   mellom bilde og strek naar bredden er kjent som lengde, ikke som prosent. */
.t50-soyler {
  grid-area: soyle;
  display: grid;
  gap: var(--t50-gap);
  margin-top: 8px;
  container-type: inline-size;
}
.t50-linje {
  display: flex;
  align-items: center;
  gap: var(--t50-mellom);
  min-width: 0;
}
.t50-bane {
  /* Lengden: andelen av en full bredde, i samme skala for alle rader. */
  --t50-b: calc(var(--a, 0) * (100cqi - var(--t50-etikett) - var(--t50-mellom)));
  /* To brytere uten JS: --t50-foto er bildets hoeyde naar soeylen er
     minst terskelen lang og 0 ellers; --t50-strek er det motsatte. Ganget
     med 1000 og klemt blir overgangen et sprang paa under én piksel. */
  --t50-foto: clamp(0px, (var(--t50-b) - var(--t50-terskel)) * 1000, var(--t50-h));
  --t50-strek: clamp(0px, (var(--t50-terskel) - var(--t50-b)) * 1000, var(--t50-strek-h));
  --t50-strekfarge: var(--text-muted);
  /* Hjoernene: 6 px paa et bilde, 3 px paa en strek (ellers blir den en pille). */
  --t50-r: clamp(3px, (var(--t50-b) - var(--t50-terskel)) * 1000, 6px);
  position: relative;
  flex: none;
  width: max(4px, var(--t50-b));
  height: max(var(--t50-foto), var(--t50-strek));
  overflow: hidden;
  border-radius: var(--t50-r);
  background:
    linear-gradient(var(--t50-strekfarge), var(--t50-strekfarge)) 0 100% / 100% var(--t50-strek) no-repeat,
    linear-gradient(var(--bg-elevated), var(--bg-elevated)) 0 0 / 100% var(--t50-foto) no-repeat;
}
.t50-rad--kommende .t50-bane { --t50-strekfarge: var(--accent); }
.t50-bane picture,
.t50-bane img {
  display: block;
  width: 100%;
  height: var(--t50-foto);
}
/* Utsnittet er valgt per bilde, saa ansiktet eller scenen staar i soeylen
   baade naar den er lav og bred og naar den er smal. */
.t50-bane img {
  object-fit: cover;
  object-position: var(--ux, 50%) var(--uy, 30%);
}
/* Gjennomfoert: svart-hvitt. Kommende: farger og gul strek langs bunnen.
   Fargen er da det oeyet finner foerst, ogsaa midt i lista. */
/* Duotone: bildet er gratone multiplisert over lyset, og skyggen loeftes til
   den moerke blaatonen med lighten. Strek og lengde er uendret. */
.t50-rad--forbi .t50-bane {
  isolation: isolate;
  background:
    linear-gradient(var(--t50-strekfarge), var(--t50-strekfarge)) 0 100% / 100% var(--t50-strek) no-repeat,
    linear-gradient(var(--duo-lys), var(--duo-lys)) 0 0 / 100% var(--t50-foto) no-repeat;
}
.t50-rad--forbi .t50-bane img {
  filter: grayscale(1) contrast(1.08);
  mix-blend-mode: multiply;
}
.t50-rad--forbi .t50-bane::after {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: var(--t50-foto);
  background: var(--duo-skygge);
  mix-blend-mode: lighten;
  pointer-events: none;
}
.t50-rad--kommende .t50-bane::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 5px;
  background: var(--accent);
}
/* Anslag: bildet toner ut i enden. Lengden er et anslag, ikke en maaling,
   og kanten sier det uten tekst oppaa bildet. En kort strek toner ut over
   en mindre del av seg selv, saa den ikke forsvinner. */
.t50-rad--anslag .t50-bane {
  -webkit-mask-image: linear-gradient(to right, #000 calc(100% - min(64px, 55%)), transparent);
  mask-image: linear-gradient(to right, #000 calc(100% - min(64px, 55%)), transparent);
}

.t50-tall {
  display: grid;
  flex: none;
  font-family: var(--font-display);
  font-size: 1.12rem;
  font-weight: 800;
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.t50-tall small {
  color: var(--text-muted);
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 500;
}
.t50-rad--kommende .t50-tall { color: var(--accent-ink); }
/* Anslaget har samme form som tallene: ordet der tallet staar, grunnlaget
   under. Ordet er dempet, saa det ikke konkurrerer med et maalt tall. */
.t50-tall--anslag {
  color: var(--text-muted);
  font-size: 0.98rem;
  font-weight: 700;
}
.t50-rad--kommende .t50-tall--anslag { color: var(--accent-ink); }
.t50-rad--kommende .t50-tall--anslag small { color: var(--text-muted); }

/* Topp 3: hoeyere bilder. Samme skala i lengde. */
.t50-rad--topp { --t50-h: var(--t50-h-topp); }
.t50-rad--topp .t50-plass { font-size: 2.2rem; }
.t50-rad--topp .t50-navn { font-size: 1.3rem; }
.t50-rad--topp + .t50-rad:not(.t50-rad--topp) .t50-lenke { padding-top: 20px; }

/* Konserter stoerre enn én bredde: samme bilde skaaret i striper, saa
   stripene til sammen er ett bilde. Bildet i hver stripe er like bredt som
   en full linje og like hoeyt som hele blokka, og flyttes opp én linje per
   stripe. */
.t50-baner-2 { --baner: 2; }
.t50-baner-3 { --baner: 3; }
.t50-baner-4 { --baner: 4; }
.t50-baner-5 { --baner: 5; }
.t50-rad--brudd { --t50-h: var(--t50-h-brudd); }
.t50-rad--brudd .t50-bane picture { display: contents; }
.t50-rad--brudd .t50-bane img {
  width: calc(100% / var(--a, 1));
  max-width: none;
  height: calc(var(--baner, 1) * var(--t50-h-brudd) + (var(--baner, 1) - 1) * var(--t50-gap));
  object-position: 50% 32%;
}
.t50-rad--brudd .t50-linje:nth-child(2) img { transform: translateY(calc(-1 * (var(--t50-h-brudd) + var(--t50-gap)))); }
.t50-rad--brudd .t50-linje:nth-child(3) img { transform: translateY(calc(-2 * (var(--t50-h-brudd) + var(--t50-gap)))); }
.t50-rad--brudd .t50-linje:nth-child(4) img { transform: translateY(calc(-3 * (var(--t50-h-brudd) + var(--t50-gap)))); }
.t50-rad--brudd .t50-linje:nth-child(5) img { transform: translateY(calc(-4 * (var(--t50-h-brudd) + var(--t50-gap)))); }

/* Like lange soeyler (samme dokumenterte tall): en felles endestrek, og én
   merknad ved foerste rad i gruppen. Likheten er innhold, ikke en feil. */
.t50-rad--lik .t50-bane::before {
  content: "";
  position: absolute;
  inset: 0 0 0 auto;
  z-index: 2;
  width: 3px;
  background: var(--text);
}

/* Antall aktive valg i filterknappen. */
.filter-antall {
  display: inline-grid;
  place-items: center;
  min-width: 1.4em;
  height: 1.4em;
  margin-left: 8px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--text);
  color: var(--bg);
  font-size: 0.8rem;
  font-weight: 800;
  line-height: 1;
}
.filter-antall[hidden] { display: none; }
.t50-kontroller .hub-filter-disclosure > summary { justify-content: flex-start; }
.t50-kontroller .hub-filter-disclosure > summary::after { margin-left: auto; padding-left: 12px; }

/* Noten ved soeylen baerer krokene (tre kvelder, fire ganger nummer to). */
.t50-note {
  grid-area: note;
  max-width: 60ch;
  margin-top: 10px;
  color: var(--text);
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.35;
  text-wrap: pretty;
}

.t50-bildetekst {
  max-width: 62ch;
  margin: 24px 0 0;
  color: var(--text-muted);
  font-size: 0.875rem;
  text-wrap: pretty;
}

/* Forklaringen staar én gang, over lista, med en liten soeyle som toner ut
   foran: samme tegn som radene, saa leseren kjenner det igjen ved plass 4. */
.t50-forklaring {
  margin: -2px 0 10px;
  white-space: nowrap;
  color: var(--text-muted);
  font-size: 0.85rem;
  line-height: 1.45;
}
.t50-forklaring-tegn {
  display: inline-block;
  width: 34px;
  height: 10px;
  margin-right: 8px;
  border-radius: 3px;
  /* Samme tegn som en anslagssoeyle i lista: fyllt, og toner ut i enden. */
  background: var(--duo-lys);
  -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 22px), transparent);
  mask-image: linear-gradient(to right, #000 calc(100% - 22px), transparent);
  vertical-align: 0.05em;
}

@media (hover: hover) and (pointer: fine) {
  .t50-lenke:hover .t50-navn { color: var(--accent-ink); }
}

/* Tilbake-til-toppen-knappen ligger fast nederst til hoeyre og dekket
   tallene i radene paa mobil. Lista har sin egen rytme; knappen trengs ikke
   her. */
@media (max-width: 899px) {
  body:has(.t50-liste) .scroll-top { display: none; }
}

/* ---------- Bred skjerm: navn til venstre, bildesoeylen i egen kolonne ---------- */
@media (min-width: 900px) {
  .t50 {
    --t50-etikett: 6.5rem;
    --t50-mellom: 12px;
    --t50-h: 56px;
    --t50-h-topp: 96px;
    --t50-h-brudd: 66px;
    padding-top: 30px;
  }
  .t50-lenke {
    grid-template-columns: 3rem 15rem minmax(0, 1fr);
    grid-template-areas:
      "plass tekst soyle"
      ".     .     note";
    column-gap: 20px;
    padding: 7px 0;
  }
  .t50-rad--topp .t50-lenke { padding: 10px 0; }
  .t50-soyler { margin-top: 0; }
  .t50-plass { font-size: 1.7rem; }
  .t50-rad--topp .t50-plass { font-size: 2.8rem; }
  .t50-rad--topp .t50-navn { font-size: 1.5rem; }
  .t50-tall { font-size: 1.25rem; }
  .t50-rad--topp .t50-tall { font-size: 1.6rem; }
  .t50-note { margin-top: 8px; font-size: 1.05rem; }
}

/* ---------- Bevegelse ----------
   Bildet tegnes fra venstrekanten én gang naar raden kommer i syne. En
   konsert som er stoerre enn én bredde, fortsetter paa neste linje litt
   etter, slik at bruddet leses som at soeylen gaar videre. JS setter
   .t50-liste--tegn bare uten redusert bevegelse; uten den klassen staar
   alt ferdig tegnet, og tallene er alltid synlige. Runde 3: 240 ms
   ease-out per soeyle (var 700 ms), ingen sprett. */
@media (prefers-reduced-motion: no-preference) {
  .t50-liste--tegn .t50-bane { clip-path: inset(0 100% 0 0 round var(--t50-r)); }
  .t50-liste--tegn .er-tegnet .t50-bane {
    clip-path: inset(0 0 0 0 round var(--t50-r));
    transition: clip-path 240ms var(--ease-out-quart) calc(var(--t50-vent, 0ms) + var(--t50-lag, 0ms));
  }
  .t50-linje:nth-child(2) { --t50-lag: 140ms; }
  .t50-linje:nth-child(3) { --t50-lag: 280ms; }
  .t50-linje:nth-child(4) { --t50-lag: 420ms; }
  .t50-linje:nth-child(5) { --t50-lag: 560ms; }
}
@media (prefers-reduced-motion: reduce) {
  .t50-lenke { transition: none; }
  .t50-lenke:active { transform: none; }
}

/* ---------- Heroen: fotoet over teksten, aldri bak den ----------
   Eierens regel er ingen tekst oppaa bilder. Fotoet (Parkenfestivalen,
   scene, skjermer og publikum) var moerklagt bak sju linjer tekst; naa staar
   det helt over teksten paa mobil og ved siden av paa bred skjerm, og
   teksten staar paa sidens egen bakgrunn. Krediteringen staar under fotoet.
   Overstyrer .page-hero--festivals i css/style.css bare for denne siden. */
.page-hero--festivals.page-hero--topp50 {
  --t50-foto-h: clamp(112px, 28vw, 200px);
  padding: 0 0 4px;
  background: var(--bg);
}
.page-hero--festivals.page-hero--topp50::before {
  position: relative;
  inset: auto;
  z-index: 0;
  display: block;
  height: var(--t50-foto-h);
  background: #0d0d14 url('/images/store-konserter-hero.jpg') 50% 42% / cover no-repeat;
}
.page-hero--festivals.page-hero--topp50 > .container { padding-top: 14px; }
.page-hero--festivals.page-hero--topp50 .venue-hero-attribution {
  top: calc(var(--t50-foto-h) + 3px);
  bottom: auto;
  right: 16px;
  color: var(--text-muted);
  text-shadow: none;
}
.page-hero--festivals.page-hero--topp50 .venue-hero-attribution a { color: var(--text-muted); }
.page-hero--festivals.page-hero--topp50 .breadcrumb,
.page-hero--festivals.page-hero--topp50 .breadcrumb a,
.page-hero--festivals.page-hero--topp50 .breadcrumb span { color: var(--text-muted); }
.page-hero--festivals.page-hero--topp50 h1 {
  margin-bottom: 10px;
  color: var(--text);
  text-shadow: none;
}
.page-hero--festivals.page-hero--topp50 p.lead {
  color: var(--text);
  font-size: 1rem;
  line-height: 1.55;
  text-shadow: none;
}

@media (min-width: 900px) {
  .page-hero--festivals.page-hero--topp50 {
    min-height: 330px;
    padding: 44px 0 36px;
  }
  .page-hero--festivals.page-hero--topp50::before {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 28px;
    width: 42vw;
    height: auto;
    border-radius: 0 0 0 12px;
    background-position: 50% 45%;
  }
  .page-hero--festivals.page-hero--topp50 > .container { padding-top: 0; }
  .page-hero--festivals.page-hero--topp50 .container > * { max-width: min(660px, calc(58vw - 64px)); }
  .page-hero--festivals.page-hero--topp50 .venue-hero-attribution {
    top: auto;
    bottom: 6px;
  }
  .page-hero--festivals.page-hero--topp50 p.lead { font-size: 1.05rem; }
}

/* ---------- Utsnittene ----------
   object-position per bilde, satt som klasse av generatoren fra
   data/topp50-bildeutsnitt.json (steg paa 5 %). */
.t50-ux-0 { --ux: 0%; }
.t50-ux-5 { --ux: 5%; }
.t50-ux-10 { --ux: 10%; }
.t50-ux-15 { --ux: 15%; }
.t50-ux-20 { --ux: 20%; }
.t50-ux-25 { --ux: 25%; }
.t50-ux-30 { --ux: 30%; }
.t50-ux-35 { --ux: 35%; }
.t50-ux-40 { --ux: 40%; }
.t50-ux-45 { --ux: 45%; }
.t50-ux-50 { --ux: 50%; }
.t50-ux-55 { --ux: 55%; }
.t50-ux-60 { --ux: 60%; }
.t50-ux-65 { --ux: 65%; }
.t50-ux-70 { --ux: 70%; }
.t50-ux-75 { --ux: 75%; }
.t50-ux-80 { --ux: 80%; }
.t50-ux-85 { --ux: 85%; }
.t50-ux-90 { --ux: 90%; }
.t50-ux-95 { --ux: 95%; }
.t50-ux-100 { --ux: 100%; }
.t50-uy-0 { --uy: 0%; }
.t50-uy-5 { --uy: 5%; }
.t50-uy-10 { --uy: 10%; }
.t50-uy-15 { --uy: 15%; }
.t50-uy-20 { --uy: 20%; }
.t50-uy-25 { --uy: 25%; }
.t50-uy-30 { --uy: 30%; }
.t50-uy-35 { --uy: 35%; }
.t50-uy-40 { --uy: 40%; }
.t50-uy-45 { --uy: 45%; }
.t50-uy-50 { --uy: 50%; }
.t50-uy-55 { --uy: 55%; }
.t50-uy-60 { --uy: 60%; }
.t50-uy-65 { --uy: 65%; }
.t50-uy-70 { --uy: 70%; }
.t50-uy-75 { --uy: 75%; }
.t50-uy-80 { --uy: 80%; }
.t50-uy-85 { --uy: 85%; }
.t50-uy-90 { --uy: 90%; }
.t50-uy-95 { --uy: 95%; }
.t50-uy-100 { --uy: 100%; }

/* ---------- Lengdene ----------
   Soeylens lengde i hele prosent av en full bredde, satt som klasse av
   generatoren (inline style er ikke lov paa siden). */
.t50-a-0 { --a: 0; }
.t50-a-1 { --a: 0.01; }
.t50-a-2 { --a: 0.02; }
.t50-a-3 { --a: 0.03; }
.t50-a-4 { --a: 0.04; }
.t50-a-5 { --a: 0.05; }
.t50-a-6 { --a: 0.06; }
.t50-a-7 { --a: 0.07; }
.t50-a-8 { --a: 0.08; }
.t50-a-9 { --a: 0.09; }
.t50-a-10 { --a: 0.1; }
.t50-a-11 { --a: 0.11; }
.t50-a-12 { --a: 0.12; }
.t50-a-13 { --a: 0.13; }
.t50-a-14 { --a: 0.14; }
.t50-a-15 { --a: 0.15; }
.t50-a-16 { --a: 0.16; }
.t50-a-17 { --a: 0.17; }
.t50-a-18 { --a: 0.18; }
.t50-a-19 { --a: 0.19; }
.t50-a-20 { --a: 0.2; }
.t50-a-21 { --a: 0.21; }
.t50-a-22 { --a: 0.22; }
.t50-a-23 { --a: 0.23; }
.t50-a-24 { --a: 0.24; }
.t50-a-25 { --a: 0.25; }
.t50-a-26 { --a: 0.26; }
.t50-a-27 { --a: 0.27; }
.t50-a-28 { --a: 0.28; }
.t50-a-29 { --a: 0.29; }
.t50-a-30 { --a: 0.3; }
.t50-a-31 { --a: 0.31; }
.t50-a-32 { --a: 0.32; }
.t50-a-33 { --a: 0.33; }
.t50-a-34 { --a: 0.34; }
.t50-a-35 { --a: 0.35; }
.t50-a-36 { --a: 0.36; }
.t50-a-37 { --a: 0.37; }
.t50-a-38 { --a: 0.38; }
.t50-a-39 { --a: 0.39; }
.t50-a-40 { --a: 0.4; }
.t50-a-41 { --a: 0.41; }
.t50-a-42 { --a: 0.42; }
.t50-a-43 { --a: 0.43; }
.t50-a-44 { --a: 0.44; }
.t50-a-45 { --a: 0.45; }
.t50-a-46 { --a: 0.46; }
.t50-a-47 { --a: 0.47; }
.t50-a-48 { --a: 0.48; }
.t50-a-49 { --a: 0.49; }
.t50-a-50 { --a: 0.5; }
.t50-a-51 { --a: 0.51; }
.t50-a-52 { --a: 0.52; }
.t50-a-53 { --a: 0.53; }
.t50-a-54 { --a: 0.54; }
.t50-a-55 { --a: 0.55; }
.t50-a-56 { --a: 0.56; }
.t50-a-57 { --a: 0.57; }
.t50-a-58 { --a: 0.58; }
.t50-a-59 { --a: 0.59; }
.t50-a-60 { --a: 0.6; }
.t50-a-61 { --a: 0.61; }
.t50-a-62 { --a: 0.62; }
.t50-a-63 { --a: 0.63; }
.t50-a-64 { --a: 0.64; }
.t50-a-65 { --a: 0.65; }
.t50-a-66 { --a: 0.66; }
.t50-a-67 { --a: 0.67; }
.t50-a-68 { --a: 0.68; }
.t50-a-69 { --a: 0.69; }
.t50-a-70 { --a: 0.7; }
.t50-a-71 { --a: 0.71; }
.t50-a-72 { --a: 0.72; }
.t50-a-73 { --a: 0.73; }
.t50-a-74 { --a: 0.74; }
.t50-a-75 { --a: 0.75; }
.t50-a-76 { --a: 0.76; }
.t50-a-77 { --a: 0.77; }
.t50-a-78 { --a: 0.78; }
.t50-a-79 { --a: 0.79; }
.t50-a-80 { --a: 0.8; }
.t50-a-81 { --a: 0.81; }
.t50-a-82 { --a: 0.82; }
.t50-a-83 { --a: 0.83; }
.t50-a-84 { --a: 0.84; }
.t50-a-85 { --a: 0.85; }
.t50-a-86 { --a: 0.86; }
.t50-a-87 { --a: 0.87; }
.t50-a-88 { --a: 0.88; }
.t50-a-89 { --a: 0.89; }
.t50-a-90 { --a: 0.9; }
.t50-a-91 { --a: 0.91; }
.t50-a-92 { --a: 0.92; }
.t50-a-93 { --a: 0.93; }
.t50-a-94 { --a: 0.94; }
.t50-a-95 { --a: 0.95; }
.t50-a-96 { --a: 0.96; }
.t50-a-97 { --a: 0.97; }
.t50-a-98 { --a: 0.98; }
.t50-a-99 { --a: 0.99; }
.t50-a-100 { --a: 1; }

/* Ingressen er én kort setning: balanse gir jevne linjer (21.10.2026). */
p.lead[data-no-orphans] { text-wrap: balance; }
