/* =====================================================================
   Algebäck Group — temats stilmall.
   Laddas på fronten OCH i redigerarens canvas (add_editor_style), så att
   samma regler gäller båda ställena. Redigerarspecifika kompensationer
   ligger i algeback-editor.css, aldrig här.

   Regel för vad som får stå i den här filen: bara sådant Gutenberg saknar
   reglage för. Har blocket en kontroll för värdet (färg, bakgrund, ram,
   radie, padding, gap, typsnittsstorlek) är det ett BLOCKATTRIBUT i
   mönstret — inte en regel här. Se docs/PATTERNS.md.
   ===================================================================== */

/* ---------------------------------------------------------------------
   A. Kompatibilitetslager.
   Designsystemets egna variabelnamn pekas om till theme.json-presetarna,
   så att porterad komponent-CSS fungerar oförändrad utan att det uppstår
   två parallella skalor. theme.json är enda källan; det här är bara
   översättningen. Ändra ALDRIG ett värde här — ändra det i theme.json.
   --------------------------------------------------------------------- */
:root {
  /* Typsnitt och vikter */
  --font-core: var(--wp--preset--font-family--albert-sans);
  --weight-regular: var(--wp--custom--vikt--normal);
  --weight-medium: var(--wp--custom--vikt--medium);
  --weight-semibold: var(--wp--custom--vikt--halvfet);

  /* Färger. Designsystemets mörka lager vänder --ink och --white; här bär
     namnen sin verkliga roll i stället, så inversionen inte behöver hållas
     i huvudet av nästa utvecklare. */
  --ink: var(--wp--preset--color--sten);
  --white: var(--wp--preset--color--grund);
  --cedar: var(--wp--preset--color--sten-mjuk);
  --dust: var(--wp--preset--color--sten-dov);
  --fog: var(--wp--preset--color--sten-mjuk);
  --clay: var(--wp--preset--color--panel-djup);
  --tint: var(--wp--preset--color--panel);
  --line: var(--wp--custom--linje--svag);

  --text-heading: var(--wp--preset--color--sten);
  --text-body: var(--wp--preset--color--sten);
  --text-muted: var(--wp--preset--color--sten-dov);
  --text-soft: var(--wp--preset--color--sten-mjuk);
  --text-link: var(--wp--preset--color--gron);
  --text-link-hover: var(--wp--preset--color--sten);
  --text-on-dark: var(--wp--preset--color--sten);
  --text-on-dark-muted: var(--wp--preset--color--sten-dov);

  --surface-page: var(--wp--preset--color--grund);
  --surface-card: var(--wp--preset--color--grund);
  --surface-tint: var(--wp--preset--color--panel);
  --surface-dark: var(--wp--preset--color--grund-svart);
  --surface-accent-tint: var(--wp--preset--color--accent-ton);

  --border-subtle: var(--wp--custom--linje--svag);
  --border-strong: var(--wp--custom--linje--stark);
  --border-dark: var(--wp--custom--linje--dov);
  --border-width: 1px;
  --border-width-strong: 2px;
  --rule: 1px solid var(--border-subtle);

  /* Kickfärgen är rosé. aqua-aliasen behålls eftersom designsystemets
     komponenter letar efter dem — de pekar hit, aldrig på turkos. */
  --accent: var(--wp--preset--color--gron);
  --accent-hover: var(--wp--preset--color--gron-ljus);
  --accent-press: var(--wp--preset--color--gron);
  --aqua: var(--wp--preset--color--gron);
  --aqua-dark: var(--wp--preset--color--gron-ljus);
  --aqua-ink: var(--wp--preset--color--gron);
  /* Förlagans bock: viewBox 0 0 24 24, path M20 6 9 17l-5-5, 2px rundad linje. */
  --ag-bock: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>');
  --aqua-tint: var(--wp--preset--color--accent-ton);
  --focus-ring: var(--wp--preset--color--gron);
  --status-error: #e0817a;

  /* Spacing */
  --space-1: var(--wp--preset--spacing--1);
  --space-2: var(--wp--preset--spacing--2);
  --space-3: var(--wp--preset--spacing--3);
  --space-4: var(--wp--preset--spacing--4);
  --space-5: var(--wp--preset--spacing--5);
  --space-6: var(--wp--preset--spacing--6);
  --space-7: var(--wp--preset--spacing--7);
  --space-8: var(--wp--preset--spacing--8);
  --space-9: var(--wp--preset--spacing--9);
  --section-y: var(--wp--preset--spacing--sektion);
  --section-y-tight: var(--wp--preset--spacing--sektion-tat);
  --grid-gap: var(--wp--preset--spacing--4);
  --card-pad: var(--wp--custom--kort--pad);
  --card-pad-lg: var(--wp--custom--kort--pad-stor);

  /* Layout */
  --container: var(--wp--custom--layout--container);
  --container-narrow: var(--wp--custom--layout--container-smal);
  --gutter: var(--wp--custom--layout--gutter);
  --measure-lead: var(--wp--custom--matt--lead);
  --measure-body: var(--wp--custom--matt--brod);

  /* Typografiska roller */
  --fs-h1: var(--wp--preset--font-size--rubrik-1);
  --fs-h2: var(--wp--preset--font-size--rubrik-2);
  --fs-h3: var(--wp--preset--font-size--rubrik-3);
  --fs-lead: var(--wp--preset--font-size--lead);
  --fs-body: var(--wp--preset--font-size--brod);
  --fs-small: var(--wp--preset--font-size--liten);
  --fs-micro: var(--wp--preset--font-size--micro);
  --fs-eyebrow: var(--wp--preset--font-size--micro);
  --fs-stat: var(--wp--preset--font-size--siffra);
  --lh-display: var(--wp--custom--radplats--display);
  --lh-heading: var(--wp--custom--radplats--rubrik);
  --lh-lead: var(--wp--custom--radplats--ingress);
  --lh-body: var(--wp--custom--radplats--brod);
  --lh-tight: var(--wp--custom--radplats--tat);
  --ls-display: var(--wp--custom--spar--display);
  --ls-heading: var(--wp--custom--spar--rubrik);
  --ls-eyebrow: var(--wp--custom--spar--etikett);
  --type-h3: var(--weight-semibold) var(--fs-h3)/var(--lh-heading) var(--font-core);
  --type-lead: var(--weight-regular) var(--fs-lead)/var(--lh-lead) var(--font-core);
  --type-body: var(--weight-regular) var(--fs-body)/var(--lh-body) var(--font-core);
  --type-small: var(--weight-regular) var(--fs-small)/var(--lh-body) var(--font-core);
  --type-eyebrow: var(--weight-semibold) var(--fs-eyebrow)/1.2 var(--font-core);

  /* Radier */
  --radius-chip: var(--wp--preset--border-radius--chip);
  --radius-input: var(--wp--preset--border-radius--falt);
  --radius-button: var(--wp--preset--border-radius--knapp);
  --radius-card: var(--wp--preset--border-radius--kort);
  --radius-card-lg: var(--wp--preset--border-radius--kort-stor);
  --radius-media: var(--wp--preset--border-radius--kort-stor);

  /* Rörelse */
  --ease-standard: var(--wp--custom--rorelse--ease-standard);
  --ease-out: var(--wp--custom--rorelse--ease-out);
  --dur-fast: var(--wp--custom--rorelse--snabb);
  --dur-base: var(--wp--custom--rorelse--bas);
  --dur-slow: var(--wp--custom--rorelse--langsam);
  --press-scale: var(--wp--custom--rorelse--press-skala);
  --lift-hover: var(--wp--custom--rorelse--lyft);
  --transition-interactive:
    background-color var(--dur-fast) var(--ease-standard),
    color var(--dur-fast) var(--ease-standard),
    border-color var(--dur-fast) var(--ease-standard),
    transform var(--dur-fast) var(--ease-standard);
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur-fast: 0ms; --dur-base: 0ms; --dur-slow: 0ms; --lift-hover: none; }
}

/* ---------------------------------------------------------------------
   B. Bas. Endast det theme.json inte når.
   --------------------------------------------------------------------- */
html { -webkit-text-size-adjust: 100%; }
body { text-wrap: pretty; -webkit-font-smoothing: antialiased; overflow-x: clip; }
:where(h1, h2, h3, h4) { text-wrap: balance; }

/* Fokusring. Designen anger ingen; den här är ett medvetet tillägg
   (WCAG 2.4.7) och gäller varje interaktiv yta på sajten. */
:where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
  border-radius: var(--radius-chip);
}
/* Markerad text. Designens egen regel är background: var(--aqua-tint);
   color: var(--ink) — i den LJUSA paletten en blek mintton bakom mörk text.
   När paletten vändes för det mörka temat blev aqua-tint #1a1d21, alltså
   1,16:1 mot sidbakgrunden, och ink förblev nästan vitt. Markeringen syntes
   inte alls: man markerade, men fick ingen återkoppling.
   Accenten används i stället, samma vändning som knapparna gör. */
/* Kärnan sätter border-box på blocken, men inte på allt annat: formulärens
   fält och knappar, dragspelets toggle och navigationens overlay ärver
   webbläsarens content-box. Då lägger sig padding och ram UTANPÅ width:100%.
   Kontaktformulärets fält blev 30px bredare än sin behållare av precis det,
   och felet syntes bara som ojämn luft i högerkanten. En global
   återställning stänger hela den familjen. */
*, *::before, *::after { box-sizing: border-box; }

::selection { background: var(--wp--preset--color--gron); color: var(--wp--preset--color--grund); }

/* Bilderna går i full färg, utan filter eller nedtoning. Bildregel 3 i
   briefen: att en bild lyser som ett fönster mot svart är avsikten. */
.wp-block-image img, .wp-block-cover img { display: block; }

/* Hoppa-till-innehållet. Första fokuserbara elementet på varje sida. */
.ag-skip {
  position: absolute; left: 16px; top: -64px; z-index: 200; margin: 0;
  transition: top var(--dur-base) var(--ease-standard);
}
.ag-skip a {
  display: inline-block;
  background: var(--wp--preset--color--sten); color: var(--wp--preset--color--grund);
  font-size: 16px; padding: 12px 18px;
  border-radius: var(--radius-button); text-decoration: none;
}
.ag-skip:focus-within { top: 16px; }

/* ---------------------------------------------------------------------
   C. Blockstilar. Registrerade i functions.php; CSS:en bor HÄR och inte i
   styles/blocks/*.json, eftersom variationers egen CSS bara skickas ut på
   fronten och aldrig når redigerarens canvas.
   --------------------------------------------------------------------- */

/* Etikett/eyebrow. Två varianter: sektionsetikett och den ljusa i hjälten. */
/* Varianterna måste stå med i grundregeln. En blockstil väljs en åt gången
   i redigeraren, så ett block kan inte bära både is-style-etikett och
   is-style-etikett-accent — bar variantklassen ensam ingen typografi fick den
   brödtextens 18px/1.55 och blev 28px hög i stället för 16. */
p.is-style-etikett, span.is-style-etikett,
p.is-style-etikett-accent, span.is-style-etikett-accent,
p.is-style-etikett-smal, span.is-style-etikett-smal {
  font: var(--type-eyebrow);
  letter-spacing: var(--wp--custom--spar--etikett-vid);
  text-transform: uppercase;
  color: var(--text-muted);
  margin: 0;
}
p.is-style-etikett-accent { color: var(--accent); letter-spacing: var(--wp--custom--spar--etikett-bred); }
/* Sektionsetiketten i uppmaningsbandet använder designsystemets smalare
   värde (--ls-eyebrow), inte listetikettens. */
p.is-style-etikett-smal { letter-spacing: var(--wp--custom--spar--etikett); }

/* Ingress. Designens --type-lead. */
p.is-style-ingress {
  font-size: var(--fs-lead);
  line-height: var(--lh-lead);
  max-width: var(--measure-lead);
}

/* Chip. Ram och radie kan inte vara blockattribut på ett stycke
   (core/paragraph saknar border-stöd), därför CSS. */
p.is-style-chip, span.is-style-chip,
p.is-style-chip-accent, p.is-style-chip-kontur {
  display: inline-flex; align-items: center; gap: 6px;
  border-radius: var(--radius-chip);
  font-size: var(--fs-micro); font-weight: var(--weight-semibold);
  letter-spacing: 0.04em; text-transform: uppercase;
  padding: 6px 10px; margin: 0;
  background: var(--surface-tint); color: var(--text-soft);
  border: var(--border-width) solid transparent;
}
p.is-style-chip-accent {
  background: var(--surface-accent-tint); color: var(--accent);
  border-color: transparent;
}
p.is-style-chip-kontur {
  background: transparent; color: var(--text-muted);
  border-color: var(--border-subtle);
}

/* Pilänk. Pilen är riktig text i innehållet, inte ett ::after — klienten
   ska kunna ändra den. */
p.is-style-pillank a, .is-style-pillank > a {
  color: var(--accent); text-decoration: none;
  border-bottom: 1px solid var(--border-strong);
  white-space: nowrap;
}
p.is-style-pillank a:hover { color: var(--text-link-hover); border-bottom-color: var(--accent); }

/* Rubrikvarianter. H1 har fyra storlekar i designen; nivån är rätt, men
   sammanhanget avgör storleken — därför namngivna varianter i stället för
   fontSize i mönstren. */
h1.is-style-rubrik-hero {
  font-size: var(--wp--preset--font-size--hero);
  line-height: 0.96;
  letter-spacing: -0.035em;
}
h1.is-style-rubrik-kompakt {
  font-size: clamp(40px, 4.2vw, 64px);
  line-height: 1.02;
  letter-spacing: -0.025em;
}
h1.is-style-rubrik-artikel {
  font-size: var(--wp--preset--font-size--rubrik-2);
  line-height: 1.14;
  letter-spacing: -0.035em;
}

/* Stor siffra (statistikbandet och stegnumren). */
p.is-style-siffra, span.is-style-siffra {
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  letter-spacing: var(--ls-display);
  line-height: 1;
  margin: 0;
}

/* Radnummer 01, 02, 03 … Tabellsiffror så kolumnen står still. */
p.is-style-radnummer {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  color: var(--accent);
  margin: 0;
}

/* Knappvarianter. OBS: core/button lägger className på OMSLAGET, den
   synliga knappen är <a class="wp-block-button__link"> inuti. Reglerna
   måste därför peka på barnet, annars landar padding på fel box.

   "Primär" är samma sak som knappens standardläge, men namngiven: utan den
   har klienten bara "Sekundär" att välja och inget sätt att gå tillbaka. */
.wp-block-button.is-style-primar .wp-block-button__link {
  background-color: var(--accent);
  color: var(--wp--preset--color--grund);
  border-color: transparent;
}
.wp-block-button.is-style-primar .wp-block-button__link:hover {
  background-color: var(--accent-hover);
  color: var(--wp--preset--color--grund);
}
.wp-block-button.is-style-stor .wp-block-button__link {
  font-size: 20px; line-height: 1; padding: 19px 28px;
}
.wp-block-button.is-style-sekundar .wp-block-button__link {
  background-color: transparent;
  color: var(--text-heading);
  border: var(--border-width) solid var(--border-strong);
}
.wp-block-button.is-style-sekundar .wp-block-button__link:hover {
  background-color: var(--surface-tint);
  border-color: var(--text-soft);
  color: var(--text-heading);
}
.wp-block-button.is-style-ghost .wp-block-button__link {
  background-color: transparent; color: var(--text-link);
  padding-inline: 6px; border-color: transparent;
}
.wp-block-button.is-style-ghost .wp-block-button__link:hover { color: var(--text-link-hover); background-color: transparent; }
.wp-block-button.is-style-helbredd { width: 100%; }
.wp-block-button.is-style-helbredd .wp-block-button__link { width: 100%; }
.wp-block-button .wp-block-button__link:active { transform: scale(var(--press-scale)); }

/* Upplysningsraden i logotypraden ("+13 fler"): brödtextens lilla grad,
   inte logotypernas versaler. */
p.is-style-notis {
  font-size: var(--fs-small); color: var(--text-muted);
  white-space: nowrap; margin: 0;
}

/* Bocklista. Bocken är ren ornamentik utan innehåll — inget att redigera —
   och får därför vara en list-style-type i stället för ett ikonblock i
   varje rad. */
:root ul.is-style-bocklista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-3); }
/* Förlagans rad är ett rutnät med en 24px-spalt för bocken och baslinje­
   justering, inte flex. Skillnaden syns: med flex blev raden 1px lägre än
   förlagan, vilket blev 5px på en femradig lista. */
ul.is-style-bocklista li {
  display: grid; grid-template-columns: 24px 1fr;
  gap: var(--space-3); align-items: baseline;
}
/* Bocken. Förlagan ritar en streckad SVG, 18×18 med 2px linje och
   margin-top 2px, märkt aria-hidden. Den är alltså ornamentik och ritas som
   pseudoelement — samma undantag som brödsmulornas snedstreck. Ett tecken
   ur teckensnittet (\2713) gav fel form och fel radlåda; en mask ger exakt
   förlagans streck och tar färg från kickfärgen. */
ul.is-style-bocklista li::before {
  content: ""; width: 18px; height: 18px; margin-top: 2px;
  background-color: var(--aqua-ink);
  -webkit-mask: var(--ag-bock) center / contain no-repeat;
  mask: var(--ag-bock) center / contain no-repeat;
}

/* En nivå utan chip ska inte visa en tom ruta. */
p.is-style-chip:empty, p.is-style-chip-accent:empty, p.is-style-chip-kontur:empty { display: none; }

/* Logotypbricka. Kundmärkena renderas som ordbild i versaler tills
   enfärgade SVG:er och skriftligt godkännande per kund finns. */
p.is-style-logotyp {
  font-weight: 600; font-size: 14px; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--text-soft); line-height: 1.25;
  margin: 0;
}

/* ---------------------------------------------------------------------
   D. Komponenter. Porterade ur prototypens komponent-CSS, med de värden
   som FAKTISKT renderar (mätt), inte de som står först i källan.
   --------------------------------------------------------------------- */

/* --- Sidhuvud ------------------------------------------------------- */
/* core/template-part lindar alltid sitt innehåll i en <div>. Den divven
   blir sidhuvudets förälder och är bara lika hög som sidhuvudet, så
   position:sticky har noll väg att röra sig i och rullar bort med sidan.
   display:contents tar bort omslagets box utan att ta bort elementet, och
   sidhuvudets förälder blir sidans egen behållare. */
.ag-plats-huvud, .ag-plats-fot { display: contents; }
/* position:sticky och z-index har inga reglage. Bakgrund, ram och padding
   ligger som blockattribut på gruppen i parts/header.html.
   Ingen backdrop-filter: den gör sidhuvudet till containing block för
   position:fixed och fångar navigeringens overlay inuti huvudet. */
.ag-header { position: sticky; top: 0; z-index: 40; }
.ag-header__inner { gap: var(--space-6); }
/* Ordningen skiljer mellan lägena: på skrivbordet står menyn före
   knappen, i den stängda mobilraden står knappen före hamburgaren.
   Hamburgaren bor i navigeringsblocket, så DOM-ordningen är knapp först
   och skrivbordet vänder på den med order. */
@media (min-width: 1061px) {
  .ag-header__nav { order: 1; }
  .ag-header__knapp { order: 2; }
}
/* Loggan får inte krympa i flexraden: på små skärmar trycker knappen
   annars ihop den. */
.ag-header__brand { flex: 0 0 auto; }
.ag-header__brand img { width: auto; height: 30px; display: block; max-width: none; }
.ag-header__brand a { text-decoration: none; }

.ag-header__nav .wp-block-navigation-item__content {
  font-size: var(--fs-small); font-weight: var(--weight-medium);
  color: var(--text-body); text-decoration: none;
  padding-block: 4px; border-bottom: 2px solid transparent;
  transition: var(--transition-interactive); white-space: nowrap;
}
.ag-header__nav .wp-block-navigation-item__content:hover { color: var(--accent); }
.ag-header__nav .current-menu-item > .wp-block-navigation-item__content,
.ag-header__nav .current_page_item > .wp-block-navigation-item__content {
  border-bottom-color: var(--accent); color: var(--text-heading);
}

/* Hamburgerknappen. Designen visar den som en ramad knapp med texten
   "Meny", inte som en naken ikon. */
.ag-header__nav .wp-block-navigation__responsive-container-open {
  align-items: center; gap: 10px;
  border: var(--border-width) solid var(--border-subtle);
  border-radius: var(--radius-button);
  padding: 10px 14px; min-height: 44px;
  font-size: var(--fs-small); font-weight: var(--weight-medium);
  color: var(--text-heading);
}
.ag-header__nav .wp-block-navigation__responsive-container-open:hover { border-color: var(--border-strong); }
/* Ordet "Meny" är riktig text: den kommer ur navigeringsblockets
   ariaLabel och går att ändra i redigeraren. Strecken är ren ornamentik
   och ritas därför här. */
.ag-header__nav .wp-block-navigation__responsive-container-open::before {
  content: ""; flex: 0 0 auto; width: 16px; height: 14px;
  background:
    linear-gradient(currentColor, currentColor) 0 0 / 16px 2px no-repeat,
    linear-gradient(currentColor, currentColor) 0 6px / 16px 2px no-repeat,
    linear-gradient(currentColor, currentColor) 0 12px / 16px 2px no-repeat;
}

/* Brytpunkten. Kärnans navigering växlar vid 600px, hårdkodat. Designen
   växlar vid 1060px, och den vågräta menyn plus knappen får inte plats
   under det. Därför tvingas overlayen på ända upp till 1060.
   TA INTE BORT — utan detta ligger menyn kvar i en rad som spräcker
   sidhuvudet mellan 600 och 1060px. */
@media (max-width: 1060px) {
  .ag-header__nav .wp-block-navigation__responsive-container-open { display: flex !important; }
  .ag-header__nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none !important; }

  /* I bandet 600–1060px kör WP fortfarande sin SKRIVBORDS-CSS, så den
     öppnade menyn får ingen overlaybehandling. Den måste återskapas här,
     annars renderar den som en smal felplacerad panel. Designen vill ha
     en panel under sidhuvudets rad, inte en helskärmsruta. */
  .ag-header__nav .wp-block-navigation__responsive-container.is-menu-open {
    display: block !important;
    position: fixed !important;
    inset: var(--ag-header-h, 77px) 0 0 0;
    z-index: 100000;
    background-color: var(--wp--preset--color--grund) !important;
    border-top: var(--border-width) solid var(--border-subtle);
    overflow-y: auto;
    padding: 0;
  }
  .ag-header__nav .is-menu-open .wp-block-navigation__responsive-container-content {
    display: flex !important; flex-direction: column;
    width: 100%; max-width: var(--container); margin-inline: auto;
    padding: var(--space-4) var(--gutter) var(--space-6);
  }
  /* Overlayns rader fyller bredden. Navigeringens vågräta justering
     (höger) gäller annars även här och lämnar länkarna hopkrupna i
     högerkanten i stället för som rader med en linje under. */
  .ag-header__nav .is-menu-open .wp-block-navigation__container {
    display: flex !important; flex-direction: column; gap: 0;
    align-items: stretch !important; justify-content: flex-start !important;
    width: 100%;
  }
  .ag-header__nav .is-menu-open .wp-block-navigation-item { width: 100%; }
  .ag-header__nav .is-menu-open .wp-block-navigation-item__content {
    width: 100%;
    display: flex; align-items: center; justify-content: space-between;
    gap: var(--space-4); min-height: 52px;
    border-bottom: var(--border-width) solid var(--border-subtle);
    border-top: 0;
    font-size: var(--fs-lead); font-weight: var(--weight-medium);
    color: var(--text-heading); padding-block: 0;
  }
  .ag-header__nav .is-menu-open .wp-block-navigation__responsive-container-close {
    display: none !important;
  }
  /* Åtgärdszonen i den öppna menyn. Flyttas in i overlayns egen behållare
     av skriptet i functions.php, så den scrollar med och inte behöver
     position:fixed. */
  .ag-header__meny-cta { display: none !important; }
  .wp-block-navigation__responsive-container-content .ag-header__meny-cta {
    display: flex !important; flex-wrap: wrap; gap: var(--space-3);
    align-items: center; width: 100%; margin-top: var(--space-5);
    padding-bottom: calc(var(--space-4) + env(safe-area-inset-bottom));
  }
}
@media (min-width: 1061px) {
  .ag-header__nav .wp-block-navigation__responsive-container-open,
  .ag-header__nav .wp-block-navigation__responsive-container-close { display: none !important; }
  .ag-header__meny-cta { display: none !important; }
}
/* Under 520px döljer designen den primära knappen i den stängda raden.
   !important eftersom knappraden bär is-layout-flex, som väger två
   klasser och slår ett vanligt display:none. */
@media (max-width: 520px) {
  .ag-header__knapp { display: none !important; }
}

/* --- Hjälte --------------------------------------------------------- */
/* Fotot och slöjan är core/cover: bild + fokuspunkt + gradient som
   blockattribut. Kvar här är bara det kärnan inte når. */
/* Kärnan sätter width:auto på cover-blockets inre behållare så fort en
   innehållsposition är vald. Spalten krymper då till sitt innehåll och
   fäster i paddingkanten i stället för att centreras i sidans spalt —
   hjältens text hamnade 100px till vänster om all annan text på sidan.
   Designen vill ha BÅDE botten-position och sidans spalt. */
.ag-hero .wp-block-cover__inner-container {
  width: 100% !important;
  padding-top: clamp(96px, 13vw, 180px);
}
.ag-hero__rubrik { max-width: 13ch; }
.ag-hero__ingress { max-width: 42ch; }
.ag-hero__notis { max-width: 28ch; }
.ag-hero__notis a {
  color: var(--text-on-dark); text-decoration: none;
  border-bottom: 1px solid var(--border-strong);
}
@media (max-width: 900px) {
  .ag-hero { min-height: 0 !important; }
  .ag-hero .wp-block-cover__inner-container { padding-top: clamp(48px, 10vw, 88px); }
}
@media (max-width: 640px) {
  .ag-hero__rubrik, .ag-hero__ingress { max-width: none; }
}

/* Logotypraden. Sex spalter, tre under 1000, två under 560. Kärnans
   grid-layout har ingen brytpunktsstyrning, och auto-fill lägger till en
   tom kolumn när raden rymmer en till — därför fast antal här. */
.ag-logorad { grid-template-columns: repeat(6, 1fr) !important; }
@media (max-width: 1000px) { .ag-logorad { grid-template-columns: repeat(3, 1fr) !important; } }
@media (max-width: 560px)  { .ag-logorad { grid-template-columns: repeat(2, 1fr) !important; } }

/* Logotypväggen fyller raden i stället för att hålla ett fast antal.
   auto-FIT, inte auto-fill: den fäller ihop den tomma spalten i stället
   för att lämna ett hål i högerkanten. */
.ag-logotypvagg { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)) !important; }

/* Kortraderna är nu ett rutnät med ag-rutnat-260, precis som förlagan:
   auto-fit med minmax(260px, 1fr) ger en spalt under 600, två upp till
   ~860 och tre därefter. Tidigare låg de i kolumnblock med ett
   mediefrågehack, för kärnans rutnätslayout använder auto-fill — men
   :root [class*="ag-rutnat-"] tvingar redan auto-fit, så skälet är borta.
   Hacket gav dessutom flex-grow:1, vilket sträckte det tredje kortet över
   hela raden vid 600 och 768px. */

/* Punktrutnätet faller ihop till en spalt som designens tvåspalt. */
@media (max-width: 960px) { .ag-punktrutnat { grid-template-columns: minmax(0, 1fr) !important; } }

/* --- Måttkapning ----------------------------------------------------
   Designen låter varje rubrik och ingress bryta på ett bestämt antal
   tecken. Måttet mäts i ch, alltså nollans bredd: se anmärkningen om
   unicode-range i theme.json — utan den faller ch tillbaka på 0,5em och
   varje kapning här blir för snäv. */

/* --- Rutnätens spaltminimum -------------------------------------------- *
 * Designen använder repeat(auto-fit, minmax(N, 1fr)); kärnans rutnätslayout
 * skriver ALLTID auto-fill. Skillnaden syns bara när korten inte fyller
 * raden: auto-fill lämnar den tomma spalten kvar och krymper korten, auto-fit
 * fäller ihop den så de kvarvarande delar hela bredden. Tre kort på
 * erbjudande blev 268px breda i stället för 365px av just det.
 * Kärnan har ingen kontroll för auto-fit, så detta är CSS av nödvändighet.
 * Minimivärdet står ändå kvar som blockattribut — panelen ska visa det — och
 * mönstret sätter klass och attribut från SAMMA token, så de inte kan dra
 * isär. Kärnans egen regel ligger i :where() och har noll vikt, därför
 * behövs inget !important. */
.ag-rutnat-160 { --ag-rutnat-min: 160px; }
.ag-rutnat-200 { --ag-rutnat-min: 200px; }
.ag-rutnat-220 { --ag-rutnat-min: 220px; }
.ag-rutnat-240 { --ag-rutnat-min: 240px; }
.ag-rutnat-260 { --ag-rutnat-min: 260px; }
.ag-rutnat-280 { --ag-rutnat-min: 280px; }
.ag-rutnat-300 { --ag-rutnat-min: 300px; }
.ag-rutnat-320 { --ag-rutnat-min: 320px; }
.ag-rutnat-340 { --ag-rutnat-min: 340px; }
/* :root behövs: kärnans rutnätsregel ligger på .wp-container-… med samma
   vikt som min attributväljare, och dess <style> skrivs efter temats ark —
   alltså vann den på källordning. */
:root [class*="ag-rutnat-"] {
  grid-template-columns: repeat(auto-fit, minmax(min(var(--ag-rutnat-min, 240px), 100%), 1fr));
}


/* --- Textmått ---------------------------------------------------------- *
 * Designen sätter radlängden i ch per plats, med sjutton olika värden. Två
 * namngivna mått (lead 44ch, bröd 68ch) täckte de vanliga fallen men gav fel
 * radbrytning där designen avviker — och fel radbrytning ger fel höjd, vilket
 * är vad det lodräta passet såg. Numeriska klasser i stället: mönstret sätter
 * klassen från ett token, så specen kan ange designens värde per instans.
 * Kärnan har ingen kontroll för radlängd på ett stycke, så här finns ingen
 * panel att ljuga för.
 *
 * :root krävs. Kärnans constrained-layout skriver
 * `.wp-container-... > :where(:not(.alignleft)...) { max-width: 1144px }`,
 * som väger LIKA MYCKET som en ensam klass — :where() bidrar med noll. På
 * fronten kommer temats stilmall efter och vinner; i redigerarens canvas
 * kommer kärnans regel sist och vinner där. Fronten var alltså riktig
 * medan varje måttkapad text stod full bredd i CMS:et. Canvasgrinden
 * hittade det på casesidorna. */
:root .ag-matt-12  { max-width: 12ch; }
:root .ag-matt-14  { max-width: 14ch; }
:root .ag-matt-15  { max-width: 15ch; }
:root .ag-matt-16  { max-width: 16ch; }
:root .ag-matt-17  { max-width: 17ch; }
:root .ag-matt-18  { max-width: 18ch; }
:root .ag-matt-20  { max-width: 20ch; }
:root .ag-matt-22  { max-width: 22ch; }
:root .ag-matt-26  { max-width: 26ch; }
:root .ag-matt-28  { max-width: 28ch; }
:root .ag-matt-34  { max-width: 34ch; }
:root .ag-matt-36  { max-width: 36ch; }
:root .ag-matt-40  { max-width: 40ch; }
:root .ag-matt-42  { max-width: 42ch; }
:root .ag-matt-44  { max-width: 44ch; }
:root .ag-matt-48  { max-width: 48ch; }
:root .ag-matt-56  { max-width: 56ch; }
:root .ag-matt-58  { max-width: 58ch; }
:root .ag-matt-60  { max-width: 60ch; }
:root .ag-matt-62  { max-width: 62ch; }
:root .ag-matt-68  { max-width: 68ch; }

:root .ag-matt-lead { max-width: var(--measure-lead); }
:root .ag-matt-brod { max-width: var(--measure-body); }

.ag-sektion--problem     > * > .wp-block-column h2 { max-width: 17ch; }
.ag-sektion--steg        > * > .wp-block-column h2 { max-width: 18ch; }
.ag-sektion--nivaer      > * > .wp-block-column h2 { max-width: 16ch; }
.ag-sektion--plats       > * > .wp-block-column h2 { max-width: 16ch; }
.ag-sektion--faq         h2 { max-width: 18ch; }
.ag-sektion--utbildningar h2 { max-width: 16ch; }
.ag-sektion--kundcase    h2 { max-width: 12ch; }
.ag-sektion--avlastning h2 { max-width: 16ch; }
.ag-cta__rubrik { max-width: 22ch; }

@media (max-width: 640px) {
  .ag-sektion h2, .ag-cta__rubrik, .ag-faq__ingress, .ag-matt-lead { max-width: none; }
}

/* --- Undersidans huvud ---------------------------------------------- */
.ag-sidhuvud__rubrik { max-width: 15ch; }
@media (max-width: 640px) { .ag-sidhuvud__rubrik { max-width: none; } }

/* --- Numrerade rader ------------------------------------------------ */
/* Kärnans layoutmotor kan inte producera de här spårbredderna. */
.ag-rad {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: var(--space-4);
  align-items: baseline;
}
.ag-rad--smal { grid-template-columns: 40px minmax(0, 1fr); }
.ag-steg {
  display: grid;
  grid-template-columns: clamp(64px, 7vw, 110px) minmax(150px, 1.05fr) minmax(200px, 1.6fr) auto;
  gap: var(--space-4) var(--space-5);
  align-items: baseline;
}
/* Raka spalter över alla fem steg. Varje rad är ett eget rutnät, så fr- och
   auto-spåren räknades om per rad: rubrikspalten slutade på fem olika
   ställen (647, 631, 627, 642, 648) och tidsspalten började på fem. Så gör
   prototypen också — men det är en brist i förlagan, inte något att kopiera.
   Spaltmallen ligger därför på listan och raderna ärver den med subgrid.
   Raderna är direkta barn här, så det räcker med ett steg — tjänstraderna
   behöver två eftersom post-template lägger ett <li> emellan. */
.ag-steglista {
  display: grid;
  grid-template-columns: clamp(64px, 7vw, 110px) minmax(150px, 1.05fr) minmax(200px, 1.6fr) auto;
  column-gap: var(--space-5);
}
.ag-steglista > .ag-steg {
  grid-column: 1 / -1;
  grid-template-columns: subgrid;
}
.ag-caserad {
  display: grid;
  grid-template-columns: 104px minmax(140px, 1fr) minmax(220px, 1.8fr) auto;
  gap: var(--space-5);
  align-items: center;
}
@media (max-width: 820px) {
  /* Smal skärm: raden staplar och behöver inget delat rutnät. */
  .ag-steglista { display: block; }
  .ag-steg,
  .ag-steglista > .ag-steg {
    grid-column: auto;
    grid-template-columns: clamp(48px, 12vw, 72px) minmax(0, 1fr);
    gap: var(--space-2) var(--space-4);
  }
  .ag-steg > *:nth-child(n+3) { grid-column: 2; }
  .ag-steg > *:nth-child(4) { white-space: normal; }
  .ag-caserad { grid-template-columns: 72px minmax(0, 1fr); gap: var(--space-4); align-items: start; }
  .ag-caserad > *:nth-child(3) { grid-column: 2; }
  .ag-caserad > *:nth-child(4) { display: none; }
}
/* Hela caseraden är klickbar: rubriklänken sträcks över raden. Fungerar
   bara så länge raden har exakt en länk. */
.ag-caserad { position: relative; }
.ag-caserad .ag-caserad__namn a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.ag-caserad__kund a { color: inherit; text-decoration: none; }
.ag-caserad__bild img { width: 100%; display: block; }
.ag-caserad__pil { transition: transform 0.25s var(--ease-standard); }
.ag-caserad:hover .ag-caserad__pil { transform: translateX(6px); }

/* --- Tidslinje, ortlista och smala caserader -------------------------
   Spårbredder som kärnans layoutmotor inte producerar. */
/* Årtalsspalten är elastisk i designen: minst 90px, högst 140px. */
.ag-rad--ar { display: grid; grid-template-columns: minmax(90px, 140px) 1fr; gap: var(--space-5); align-items: baseline; }
.ag-rad--ar > :first-child { font-variant-numeric: tabular-nums; }
.ag-caserad--smal { grid-template-columns: minmax(180px, 296px) minmax(0, 1fr) 22px; }
@media (max-width: 820px) {
  .ag-rad--ar { grid-template-columns: 80px minmax(0, 1fr); }
  .ag-caserad--smal { grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }
  .ag-caserad--smal > *:last-child { display: none; }
}

.ag-person__kontakt a, .ag-person__namn a { color: var(--text-body); text-decoration: none; }
.ag-person__kontakt a:hover { color: var(--accent); }

/* --- Fotostråk med bricka ------------------------------------------- */
/* Stråket är ett core/cover, som hjälten. Slöjan ligger som blockets egen
   customGradient, brickans placering som contentPosition + padding, och
   bildens fokuspunkt som focalPoint — allt reglage klienten ser.
   Det enda kärnan inte kan uttrycka är bildförhållandet: core/cover har
   minHeight men inget aspectRatio i den här versionen. En rad CSS i stället
   för den positioneringsapparat som fanns här förut. */
/* Kärnan ger varje core/cover min-height: 430px. Tillsammans med
   aspect-ratio blir det en konflikt: vid 390px vill förhållandet ge 167px
   höjd, min-height tvingar 430 — och då växer BREDDEN till 1003px i en
   390px vy. Startsidan scrollade 633px i sidled på mobil.
   Förlagan sätter inget förhållande alls; bildens egen proportion styr
   höjden och min-height är 0. Här behövs förhållandet ändå, eftersom
   core/cover inte har något aspectRatio-attribut i den här versionen —
   men min-height måste bort för att det ska kunna arbeta.
   :root krävs: kärnans .wp-block-cover väger lika mycket som en klass. */
:root .ag-fotostrak { aspect-ratio: 21 / 9; min-height: 0; }
.ag-bricka__rad { color: #f4f1ee; }
.ag-bricka { max-width: min(30ch, 60vw); }
@media (max-width: 640px) {
  /* Typografin ligger som blockattribut och alltså inline; en media query
     kan inte vinna över inline utan !important. Designen byter roll här,
     från rubrik till ingress, och det finns inget reglage för
     "storlek vid brytpunkt". */
  .ag-bricka .ag-bricka__rad {
    font-size: var(--fs-lead) !important;
    font-weight: var(--weight-regular) !important;
    line-height: var(--lh-lead) !important;
  }
}

/* Utbrytning ur den centrerade behållaren, hela vägen till kanten. */
/* Utbrytning till fönstrets kant.

   Två fall, med olika uträkning, därför att utgångsläget skiljer:

   .ag-utbrott sitter som direkt barn i sektionen och har max-width:none,
   alltså fyller det redan hela den paddade bredden. Det behöver bara dras
   ut förbi sidmarginalen.

   .ag-utbrott--hoger sitter inuti en kolumn som är kapad till halva
   spalten. Det behöver dras ut både förbi sidmarginalen OCH förbi den
   centrerade spaltens överskott.

   !important i båda, eftersom kärnans constrained-layout skriver
   margin-left/right: auto !important på varje barn. Utan det är
   utbrytningen tyst verkningslös. */
.ag-utbrott {
  margin-inline: calc(-1 * var(--wp--style--root--padding-left)) !important;
  max-width: none;
  width: auto;
}
.ag-utbrott--hoger {
  --ag-ut: calc(var(--wp--style--root--padding-right) + max(0px, (100vw - 2 * var(--wp--style--root--padding-right) - 1144px) / 2));
  margin-inline: 0 calc(-1 * var(--ag-ut)) !important;
  max-width: none;
}

@media (max-width: 820px) { .ag-utbrott, .ag-utbrott--hoger { margin-inline: 0 !important; } }

/* --- Kort ------------------------------------------------------------
   Bakgrund, ram, radie och padding ligger som blockattribut på gruppen.
   Kvar här: att korten är lika höga, att foten sitter i botten, och
   hovringen — inget av det har ett reglage. */
.ag-kort { height: 100%; }
.ag-kort__fot { margin-top: auto; }
.ag-kort__rubrik a { text-decoration: none; color: inherit; }
/* Hela kortet klickbart: rubriklänken sträcks över det. Fungerar så länge
   kortet har exakt en länk. */
.ag-kort--lank { position: relative; transition: var(--transition-interactive); }
.ag-kort--lank .ag-kort__rubrik a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.ag-kort--lank:hover { border-color: var(--border-strong) !important; }

/* --- Kundcase -------------------------------------------------------- */
.ag-casekort__bild img { width: 100%; display: block; }
/* core/image sträcker inte bilden till behållaren av sig själv; utan detta
   renderar den i filens egen bredd och blir lägre än designen. */
/* Bakåtlänken ligger i designen som en naken <a> direkt i behållaren, så
   dess radhöjd kommer från förälderns strut: en brödrad, 18px × 1.6. Hos mig
   är den ett stycke med sin egen radhöjd (15px × 1.55 = 23px), vilket gjorde
   raden 5,5px lägre och sköt hela casehuvudet uppåt. */
.ag-casehuvud__tillbaka { line-height: calc(1.6 * var(--wp--preset--font-size--brod)); }

.ag-casehuvud__bild, .ag-fotostrak__bild { width: 100%; }
.ag-casehuvud__bild img, .ag-fotostrak__bild img { width: 100%; display: block; }
/* Kundcasets rubrikmått är konstant i prototypen — 317px vid varje vy,
   inte ett ch-mått som följer graden. Det ligger som contentSize på
   omslaget, alltså ett reglage klienten ser ("Innehållsbredd"). */
.ag-casehuvud__tillbaka a { border-bottom: 0; }
/* Citaten: en lodrät lista med hårfina linjer, som designens citatvägg. */
.ag-citat--vagg .ag-citat__text { text-wrap: pretty; }
.ag-citat__meta { font-weight: var(--weight-medium); }

/* --- Prisruta -------------------------------------------------------- */
.ag-prisruta { height: 100%; }

/* --- Bockad lista i tjänsteinnehållet -------------------------------- */
/* :root krävs här: basregeln för blockstilen bär redan :root och skulle
   annars vinna över gap. Raderna avgränsas av linjer, inte av luft. */
:root .ag-ingar.is-style-bocklista { gap: 0; }
:root .ag-ingar.is-style-bocklista li {
  border-top: 1px solid var(--border-subtle);
  padding-block: var(--space-4);
}

/* --- Brödsmulor ------------------------------------------------------
   Avdelartecknet är ren ornamentik och ritas därför som pseudoelement.
   Kärnan sätter --separator och konsumerar den själv; se regeln nedan. */
.ag-smulor__rad ol { display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
.ag-smulor__rad li { display: flex; gap: var(--space-2); }
/* Avdelaren är kärnans egen li::after — den regeln har högre vikt än en
   enkel klass och --separator sätts inline på blocket, så den går inte att
   stänga av underifrån. Den används i stället, med designens tecken och
   luft: 8px på var sida och inget mellanrum i listan, vilket ger samma
   positioner som prototypens fristående avdelarled. */
.ag-smulor__rad ol { gap: 0; }
.wp-block-breadcrumbs.ag-smulor__rad li:not(:last-child)::after {
  content: "/"; margin: 0 var(--space-2); opacity: 1; color: var(--text-muted);
}
.ag-smulor__rad a { color: inherit; text-decoration: none; }
.ag-smulor__rad a:hover { color: var(--accent); }
.ag-smulor__rad [aria-current="page"] { color: var(--text-heading); }

/* --- Nivåkort ------------------------------------------------------- */
/* Bakgrund, ram, radie, padding och gap ligger som blockattribut på
   gruppen. Kvar här: att korten är lika höga och att knappen sitter i
   botten — ingetdera har ett reglage. */
.ag-nivakort { height: 100%; }
/* Knappen trycks till kortets underkant så de tre linjerar. Regeln stod
   som .ag-nivakort__fot och förlorade: kärnans
   `.is-layout-flex > :is(*, div) { margin: 0 }` väger (0,1,1) eftersom
   :is() ärver sitt tyngsta argument, och en ensam klass är (0,1,0).
   Barnväljaren räcker för att gå om — inget !important behövs. */
.ag-nivakort > .ag-nivakort__fot { margin-top: auto; }
.ag-nivakort__lista li { display: flex; gap: var(--space-3); }
.ag-nivakort__bock { flex: 0 0 auto; width: 20px; height: 20px; margin-top: 2px; color: var(--accent); }
/* Prisbeloppet skalar mot KORTET, inte mot fönstret. Förlagan har fast
   36px och «Från 3 900» — fyra siffror, som ryms. Klientens priser är
   femsiffriga, och då bryter «Från 19 900» (192px) i de smala korten:
   vid 600 och 900px har beloppet bara 103–107px. Det är inte ordet som
   är för långt, för även bara «19 900» (110px) bryter där.
   18,75cqi är exakt förhållandet «fyll kortet»: 36px när kortet rymmer
   192px, mindre när det inte gör det. 28px är golvet, med marginal för
   en siffra till. Kortet blir behållare för frågan. */
:root .ag-nivakort { container-type: inline-size; }
:root .ag-nivakort__belopp {
  font-size: 36px; font-weight: var(--weight-semibold); letter-spacing: var(--ls-heading);
}
/* Enheten står på SAMMA BASLINJE som beloppet, som i förlagan. Med
   align-items: flex-end (kärnans «bottom») ställs lådornas underkant i
   linje, och då hamnar den lilla texten lägre än den stora — 3506 mot
   3502 i mätningen. Förlagan har align-items: baseline, vilket kärnans
   panel inte erbjuder: den har bara top, center och bottom. Därför ligger
   värdet här och blocket bär inget verticalAlignment, så panelen inte
   påstår något annat än vad som händer. */
:root .ag-nivakort__pris { align-items: baseline; }

/* «Från 19 900» är 192px vid 36px, enheten 55 och luften 6 — raden behöver
   253px innerbredd. Över det ser priset ut precis som i förlagan. Under det
   flyttar enheten ner och beloppet går till 30px, vilket ryms i det
   smalaste kortet (164px vid 900px fönsterbredd). Gränsen är kortets
   innerbredd, inte fönstrets: samma kort blir smalt vid 600 och 900px men
   brett vid 390 och 1440.
   262px är valt så enradslägget bara används där det finns verklig marginal:
   vid 256px innehållsbredd rymdes raden med 3px till godo, och Partner-
   kortets 2px ram gör dess innehållsruta 2px smalare än syskonens, vilket
   annars lade ett kort på andra sidan gränsen än de två andra. */
@container (max-width: 262px) {
  /* Enheten ställs UNDER beloppet, inte «om den inte får plats». Med wrap
     avgjorde prisets längd var enheten hamnade, så «Från 9 900» stod kvar
     på raden medan «Från 19 900» inte gjorde det — tre kort med tre olika
     höjder i samma rad. */
  :root .ag-nivakort__pris { flex-direction: column; align-items: flex-start; }
  :root .ag-nivakort__belopp { font-size: 30px; }
}

/* --- Måttkapade block står till vänster ------------------------------ *
 * Kärnans constrained-layout ger varje barn som är smalare än sektionens
 * contentSize margin-inline: auto !important, alltså centrering. Designen
 * centrerar aldrig brödtext: ett måttkapat block börjar vid samma kant som
 * sina fullbreda syskon. Utan detta stod caseuppslagens prosa 221px och
 * nyhetshuvudet 323px för långt in — och inget klassparat pass såg det,
 * eftersom ag-matt-klasserna bara finns i bygget.
 *
 * Vänsterkanten räknas fram på samma sätt som kärnan räknar fram ett
 * 1144px-barns: halva överskottet av sektionens innehållsbredd. */
:root .ag-sektion > [class*="ag-matt-"],
:root .ag-sektion > .wp-block-group > [class*="ag-matt-"] {
  margin-left: max(0px, calc((100% - var(--wp--custom--layout--container) + 2 * var(--gutter)) / 2)) !important;
  margin-right: auto !important;
}

/* Stegkortens radvariant: siffran i en egen 40px-spalt bredvid texten, som
   på erbjudande. Kärnans rutnätslayout kan bara jämnbreda spalter, så
   spårbredden är CSS av nödvändighet — luften runt kortet ligger kvar som
   blockattribut. */
.ag-stegkort__kort--rad {
  display: grid; grid-template-columns: 40px 1fr;
  gap: var(--space-4); align-items: baseline;
}
.ag-stegkort__kort--rad .is-style-radnummer { letter-spacing: var(--ls-eyebrow); }

/* Adressens delar står bredvid varandra i designen, var och en med en linje
   över sig och en minsta bredd så raden bryter på hela led. */
.ag-karta__rad {
  border-top: 1px solid var(--border-strong);
  padding-top: 8px; min-width: 12ch; margin: 0;
}

/* Fotnoten står i en flexrad med jämförelselänken. Utan flex-grow krymper
   den under sitt eget textmått så fort länken finns, och radbrytningen blir
   en annan än designens. */
.ag-nivaer__fotnot { flex: 1 1 auto; }

/* Prislistan är kapad till 620px i designen, inte till spaltens bredd. */
/* Personernas kontaktlänkar är egna rader i kortet, inte inline efter varandra. */
.ag-person__kontakt a { display: block; }

/* --- Vad klienten får när hon skriver själv ------------------------- *
 * Banden ska ligga kant i kant, men post-content behöver ändå ett riktigt
 * blockmellanrum: annars får varje stycke klienten lägger till noll luft.
 * Mellanrummet ligger därför som ett synligt värde på post-content, och
 * banden nollar sin egen marginal. Kärnans blockGap-regel ligger i :where()
 * och har noll vikt, så en klass räcker. */
.ag-sektion, .ag-hero { margin-block: 0; }

/* Brödtext i en prosaspalt är dämpad i designen — policysidorna och
 * caseuppslagen sätter alla sina stycken i --text-muted. Det som skrivs i
 * redigeraren ska se likadant ut utan att någon behöver välja färg.
 * Nyhetsartiklarnas brödtext är däremot vit i designen, och den ligger i en
 * egen behållare som inte träffas här. */
.ag-prosa :is(p, li):not([class*="has-"]):not([class*="ag-"]) {
  color: var(--wp--preset--color--sten-dov);
}

/* En rubrik som skrivs mitt i brödtext får prosans skala, inte
 * sektionsrubrikens 49px. Det är vad designen gör: en rubrik i en
 * prosaspalt är 23px, oavsett nivå. Mönstrens egna rubriker bär sin storlek
 * som blockattribut och rörs inte av detta. */
.ag-prosa :is(h2, h3, h4):not([class*="has-"]),
.ag-nyhet__text :is(h2, h3, h4):not([class*="has-"]) {
  font-size: var(--wp--preset--font-size--rubrik-3);
  line-height: 1.14;
  margin-top: var(--space-6);
  margin-bottom: var(--space-3);
}

/* --- Nyheter --------------------------------------------------------- *
 * Kategorin renderas av core/post-terms som en <div> med en länk i, inte som
 * ett stycke, så blockstilen is-style-chip biter inte. Chippet läggs därför
 * på länken. */
.ag-nyhet__kategori a, .ag-utvald__kategori a {
  display: inline-flex; align-items: center; gap: 6px;
  border-radius: var(--radius-chip);
  font-size: var(--fs-micro); font-weight: var(--weight-semibold);
  letter-spacing: 0.04em; text-transform: uppercase;
  padding: 6px 10px; text-decoration: none;
  border: 1px solid transparent;
}
.ag-nyhet__kategori a { background: var(--aqua-tint); color: var(--aqua-ink); }
.ag-utvald__kategori a { background: transparent; color: var(--text-muted); border-color: var(--border-subtle); }
/* Utan term renderar core en tom <div> som ändå tar ett mellanrum i flexraden. */
.ag-nyhet__kategori:empty, .ag-utvald__kategori:empty,
.ag-nyhet__kalla:empty { display: none; }

.ag-nyhet__datum, .ag-nyhetsrad__datum, .ag-utvald__datum { font-variant-numeric: tabular-nums; }

/* Tillbakalänken ligger i designen som en naken <a> i behållarens textflöde,
   alltså med en brödrads höjd. Samma sak som på caseuppslagen. */
.ag-nyhet__tillbaka { line-height: calc(1.6 * var(--wp--preset--font-size--brod)); }
.ag-nyhet__tillbaka a { border-bottom: 0; }

/* Arkivraden: datum, kategori och text i tre spalter. */
.ag-nyhetsrad {
  display: grid; grid-template-columns: 110px 150px minmax(240px, 1fr);
  gap: var(--space-4); align-items: baseline;
}
.ag-nyhetsrad__kategori a {
  font: var(--type-eyebrow); letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase; color: var(--text-soft); text-decoration: none;
}
.ag-nyhetsrad__utdrag { display: block; }

/* Citat i brödtexten: linje till vänster, ingressgrad, namnet under. */
.ag-nyhet__citat {
  margin: 0; border-left: 2px solid var(--accent);
  padding-left: var(--space-5);
}
.ag-nyhet__citat p {
  font-size: var(--wp--preset--font-size--lead); line-height: 1.45; margin: 0;
}
.ag-nyhet__citat cite {
  display: block; margin-top: var(--space-3);
  font-size: var(--fs-small); font-style: normal; color: var(--text-muted);
}
@media (max-width: 720px) {
  .ag-nyhetsrad { grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }
}

/* --- Fotoplats ------------------------------------------------------- *
 * Designen visar en texturerad ruta där ett foto ska in: porträtten och
 * bilden i om-oss-ingressen finns inte ännu. Rutan är ren dekoration, så
 * texturen ligger som pseudoelement och inte som ett block. Mönstren
 * renderar antingen repeat:foto eller repeat:fotoplats — laddar klienten upp
 * en bild försvinner platshållaren, den ligger inte kvar bakom. */
.ag-fotoplats {
  position: relative; aspect-ratio: 3 / 4; overflow: hidden;
  background: var(--clay);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-media);
}
.ag-fotoplats::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: url("../images/pattern-dust.svg") center center / cover no-repeat;
  opacity: 0.5; mix-blend-mode: multiply;
}
.ag-fotoplats--bred { aspect-ratio: 4 / 3; }

/* --- Statistikband -------------------------------------------------- */
.ag-stats { position: relative; overflow: hidden; }
.ag-stats__monster {
  position: absolute; inset: 0; pointer-events: none;
  background-color: currentColor;
  -webkit-mask-repeat: repeat; mask-repeat: repeat;
  -webkit-mask-size: 760px auto; mask-size: 760px auto;
  opacity: 0.07;
}
.ag-stats > * { position: relative; }
.ag-stats__etikett { max-width: 26ch; }

/* --- Citat ---------------------------------------------------------- */
/* Bara det stora displaycitatet (citat-logotypvaggen) har egen skala och
   spärrning. Citatväggen och caseuppslagens citat är ingressstorlek med
   normal spärrning — regeln var oscopad och gjorde deras text 34px smalare
   per rad, vilket bytte radbrytning och därmed sektionshöjd. */
:root .ag-citat:not(.ag-citat--vagg) .ag-citat__text {
  font-size: clamp(26px, 2.4vw, 38px);
  line-height: 1.24;
  letter-spacing: var(--ls-heading);
  font-weight: var(--weight-regular);
}

/* Introspalten följer med när dragspelet är långt, som i designen. 112px är
   sidhuvudets höjd plus luft. */
.ag-faq__intro { position: sticky; top: 112px; }

/* --- Dragspel (core/accordion) --------------------------------------
   Klassnamnen kommer ur kärnans egen serialiserare, inte ur gissning:
   markupen är genererad med wp.blocks.serialize och sedan tokeniserad. */
.ag-faq .wp-block-accordion-item { border-bottom: var(--border-width) solid var(--border-subtle); }
.ag-faq .wp-block-accordion-heading { margin: 0; }
.ag-faq .wp-block-accordion-heading__toggle {
  width: 100%; display: flex; align-items: center; gap: var(--space-4);
  background: none; border: 0; cursor: pointer;
  padding: var(--space-4) 0;
  font-family: var(--font-core);
  font-size: var(--fs-h3); font-weight: var(--weight-medium);
  color: var(--text-heading); text-align: left;
  transition: var(--transition-interactive);
}
.ag-faq .wp-block-accordion-heading__toggle:hover { color: var(--accent); }
:root .ag-faq .wp-block-accordion-heading__toggle { line-height: var(--lh-body); letter-spacing: normal; }
/* Designens markering är ett plus som blir ett minus, ritat med två
   streck. Den är ren ornamentik utan innehåll och ritas därför med
   pseudoelement i stället för kärnans textikon — ett utskrivet "+" hamnar
   annars inuti <h3>-texten och läses av sökmotorer som en del av frågan. */
.ag-faq .wp-block-accordion-heading__toggle::before {
  content: ""; flex: 0 0 auto;
  width: 14px; height: 14px; position: relative;
}
.ag-faq .wp-block-accordion-heading__toggle::after {
  content: ""; position: absolute;
  width: 14px; height: 2px; background: currentColor;
  transform: translateX(-100%);
  margin-left: 14px;
  box-shadow: 0 0 0 0 currentColor;
}
.ag-faq .wp-block-accordion-heading { position: relative; }
.ag-faq .wp-block-accordion-heading__toggle { position: relative; }
.ag-faq .wp-block-accordion-heading__toggle::before {
  background:
    linear-gradient(currentColor, currentColor) center/14px 2px no-repeat,
    linear-gradient(currentColor, currentColor) center/2px 14px no-repeat;
  transition: background-size var(--dur-fast) var(--ease-standard);
}
.ag-faq .wp-block-accordion-heading__toggle::after { display: none; }
.ag-faq .wp-block-accordion-heading__toggle[aria-expanded="true"]::before {
  background:
    linear-gradient(currentColor, currentColor) center/14px 2px no-repeat,
    linear-gradient(currentColor, currentColor) center/2px 0 no-repeat;
}
.ag-faq .wp-block-accordion-heading__toggle-title { flex: 1 1 auto; display: flex; align-items: baseline; gap: var(--space-4); }
/* Uppgiften till höger i dragspelsrubriken ("3 utbildningar"). */
.ag-acc__uppgift {
  margin-left: auto; font-size: var(--fs-small);
  font-weight: var(--weight-regular); color: var(--text-muted); white-space: nowrap;
}
.ag-acc__uppgift:empty { display: none; }
.ag-faq .wp-block-accordion-panel { padding: 0; }
.ag-faq .wp-block-accordion-panel > * { padding: 0 0 var(--space-5); max-width: var(--measure-body); }
/* Prislistan är kapad till 620px i designen, inte till panelens brödmått. */
.ag-faq .wp-block-accordion-panel > .ag-pristabell { max-width: 620px; }
/* Rubriken i FAQ-spalten står kvar medan svaren scrollar. */
.ag-faq__intro { position: sticky; top: 112px; }
@media (max-width: 960px) { .ag-faq__intro { position: static; } }

/* --- Pristabell ------------------------------------------------------
   core/table har inga reglage för kolumnjustering per cell utöver
   textAlign, och inga för hårfina radlinjer. */
.ag-pristabell table { width: 100%; border-collapse: collapse; }
/* core/table ger varje cell 1px ram runtom och 0,5em luft. Designen har
   bara en hårfin linje UNDER raden — utan nollställning ritas tabellen
   som ett rutnät med ytterram. Samma sak som i jämförelsetabellen. */
.ag-pristabell th, .ag-pristabell td { border: 0; padding: 0; }
.ag-pristabell th {
  font-size: var(--fs-eyebrow); letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase; font-weight: var(--weight-semibold);
  color: var(--text-muted); text-align: left;
  padding: 0 var(--space-4) var(--space-3) 0;
  border-bottom: 1px solid var(--border-subtle); white-space: nowrap;
}
.ag-pristabell th:last-child, .ag-pristabell td:last-child {
  text-align: right;
  font-variant-numeric: tabular-nums; white-space: nowrap;
  color: var(--text-heading); font-weight: var(--weight-medium);
}
/* Bara kolumnrubriken går ända ut till kanten; prissiffrorna behåller
   radens högerluft, som i designen. */
.ag-pristabell th:last-child { padding-right: 0; }
.ag-pristabell td {
  font-size: var(--fs-small); line-height: 1.5; color: var(--text-body);
  padding: var(--space-3) var(--space-4) var(--space-3) 0;
  border-bottom: 1px solid var(--border-subtle); vertical-align: top;
}
.ag-pristabell tbody tr:last-child td { border-bottom: 0; }

/* --- Tjänsterader och jämförelsetabell ------------------------------- */
/* Raka spalter över alla rader.
 *
 * Varje rad är ett eget rutnät, så fr- och auto-spåren räknades om per rad:
 * beskrivningen började på fyra olika ställen och priset slutade på fyra.
 * Prototypen gör samma sak (244/520/261 på första raden, 283/602/140 på
 * andra) — men det är en brist i förlagan, inte något att kopiera.
 *
 * Spaltmallen ligger därför på LISTAN och raderna ärver den med subgrid.
 * Då finns spåren en gång och alla rader delar dem. Radens ram och
 * innerluft ligger kvar på raden, som spänner över alla spalter.
 * Mellanrummet i den subgriddade riktningen kommer från listan; radens eget
 * column-gap ignoreras enligt spec. */
.ag-tjanstlista {
  display: grid;
  grid-template-columns: minmax(160px, 0.8fr) minmax(220px, 1.7fr) minmax(140px, auto) auto;
  column-gap: var(--space-5);
}
/* core/post-template lägger ett <li> runt varje post, så subgriden måste
   gå i två steg: listan → li → raden. */
.ag-tjanstlista > li {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: subgrid;
}
.ag-tjanstlista > li > .ag-caserad--tjanst {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: subgrid;
  align-items: baseline;
}
/* Priset ligger mot spaltens högerkant, så beloppen står i lod. */
.ag-tjanstlista .ag-caserad__pris { text-align: right; }

@media (max-width: 820px) {
  /* På smal skärm staplar raden och behöver inget delat rutnät. */
  .ag-tjanstlista,
  .ag-tjanstlista > li,
  .ag-tjanstlista > li > .ag-caserad--tjanst,
  .ag-caserad--tjanst { display: block; grid-column: auto; }
  .ag-caserad--tjanst > * + * { margin-top: var(--space-2); }
  .ag-tjanstlista .ag-caserad__pris { text-align: left; }
  .ag-caserad--tjanst > *:last-child { display: none; }
}
/* Designens tabellomslag rullar i sidled och tabellen har en minsta bredd,
   så spalterna inte pressas ihop på en telefon. */
.ag-jamfor { display: flex; flex-direction: column; overflow-x: auto; }
.ag-jamfor table { min-width: 620px; }
.ag-jamfor table { width: 100%; border-collapse: collapse; }
/* core/table ger varje cell 1px ram och 0.5em luft. Designen har varken,
   och kvarvarande underkanter gjorde varje rad en pixel högre. */
.ag-jamfor th, .ag-jamfor td { border: 0; padding: 0; }
/* Designens tabellrubrik är ett <caption> och står överst. core/table lägger
   den som <figcaption> EFTER tabellen — attributen hämtas ur DOM:en, så ett
   riktigt caption skulle göra blocket ogiltigt. Flexordningen flyttar den. */
.ag-jamfor figcaption {
  order: -1; text-align: left; font-size: var(--fs-small); color: var(--text-muted);
  margin: 0; padding-bottom: var(--space-4);
}
.ag-jamfor thead th {
  font: var(--type-eyebrow); letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
  color: var(--text-muted); text-align: center;
  padding: 0 var(--space-2) var(--space-3);
}
/* Raderna avgränsas av en linje ÖVER sig, inte under: annars får tabellen en
   extra linje i botten och varje rad blir en pixel högre än designens. */
.ag-jamfor tbody th {
  text-align: left; font-weight: var(--weight-regular);
  color: var(--text-muted); padding: var(--space-3) var(--space-4) var(--space-3) 0;
  border-top: 1px solid var(--border-subtle);
}
.ag-jamfor tbody td {
  text-align: center; color: var(--text-body);
  padding: var(--space-3) var(--space-2);
  border-top: 1px solid var(--border-subtle);
}
/* Grupprad: en rubrik som spänner över hela tabellen. Känns igen på att
   raden saknar <td> — core/table hämtar cellernas attribut ur DOM:en, så
   en egen klass på <tr> skulle göra blocket ogiltigt. */
.ag-jamfor tbody tr:not(:has(td)) th {
  font: var(--type-eyebrow); letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
  color: var(--text-muted);
  padding: var(--space-5) 0 var(--space-2); border-top: 0;
}

.ag-formularkort .wpcf7-form { display: flex; flex-direction: column; gap: var(--space-4); }
.ag-falt { display: flex; flex-direction: column; gap: var(--space-2); }
.ag-falt__etikett { font-size: var(--fs-small); font-weight: var(--weight-medium); color: var(--text-heading); }
.ag-falt__hjalp { font-size: var(--fs-small); color: var(--text-muted); }
.ag-falt__krav { color: var(--accent); }
.ag-formularkort .ag-kryss a, .ag-formularkort .wpcf7-acceptance a { color: var(--accent); }
.ag-formularkort button.ag-skicka {
  background: var(--accent); color: var(--wp--preset--color--grund);
  border: 1px solid transparent; border-radius: var(--radius-button);
  font-family: var(--font-core); font-size: 20px; font-weight: var(--weight-medium);
  line-height: 1; padding: 19px 28px; width: 100%; cursor: pointer;
  transition: var(--transition-interactive);
}
.ag-formularkort button.ag-skicka:hover { background: var(--accent-hover); }
.ag-formularkort .ag-kontroll,
.ag-formularkort input:not([type=submit]):not([type=checkbox]),
.ag-formularkort textarea {
  /* Kärnans border-box-regel gäller block, inte fälten inuti CF7:s markup.
     Utan detta lägger sig padding och ram UTANPÅ width:100% och fältet blir
     30px bredare än sin behållare — vänsterkanten ser rätt ut, högerkanten
     äter upp kortets luft. */
  box-sizing: border-box;
  font-family: var(--font-core); font-size: var(--fs-body); line-height: 1.4;
  color: var(--text-body); background: var(--surface-page);
  border: 1px solid var(--border-strong); border-radius: var(--radius-input);
  padding: 13px 14px; width: 100%; transition: var(--transition-interactive);
}
.ag-formularkort input:focus, .ag-formularkort textarea:focus { border-color: var(--accent); }
.ag-formularkort .ag-kryss, .ag-formularkort .wpcf7-acceptance {
  display: flex; gap: var(--space-3); align-items: flex-start;
  font-size: var(--fs-small); color: var(--text-muted);
}
/* CF7 skjuter in <span class="wpcf7-list-item"><label><input><span> mellan
   kontrollen och kryssrutan, så flexraden måste sitta på etiketten — annars
   får texten bara det som blir kvar av spalten och bryter en rad extra. */
.ag-formularkort .wpcf7-acceptance .wpcf7-list-item { margin: 0; }
.ag-formularkort .wpcf7-acceptance .wpcf7-list-item label {
  display: flex; gap: var(--space-3); align-items: flex-start; cursor: pointer;
}
/* Nottexten under knappen är ett <p> i formulärmallen och bär webbläsarens
   styckemarginal; designen har ingen. */
.ag-formularkort p.ag-falt__hjalp { margin: 0; }

.ag-formularkort input[type=checkbox] {
  appearance: none; flex: 0 0 auto; width: 20px; height: 20px; margin: 1px 0 0;
  border: 1px solid var(--border-strong); border-radius: var(--radius-chip);
  background: var(--surface-page); cursor: pointer; position: relative;
}
.ag-formularkort input[type=checkbox]:checked { background: var(--accent); border-color: var(--accent); }
.ag-formularkort input[type=checkbox]:checked::after {
  content: ""; position: absolute; left: 6px; top: 2px; width: 5px; height: 10px;
  border-right: 2px solid var(--wp--preset--color--grund);
  border-bottom: 2px solid var(--wp--preset--color--grund); transform: rotate(40deg);
}
.ag-formularkort .ag-skicka, .ag-formularkort input[type=submit] {
  box-sizing: border-box;
  background: var(--accent); color: var(--wp--preset--color--grund);
  border: 1px solid transparent; border-radius: var(--radius-button);
  font-family: var(--font-core); font-size: 20px; font-weight: var(--weight-medium);
  line-height: 1; padding: 19px 28px; width: 100%; cursor: pointer;
  transition: var(--transition-interactive);
}
.ag-formularkort input[type=submit]:hover { background: var(--accent-hover); }
.ag-direktkontakt__rad a { color: var(--text-body); text-decoration: none; border-bottom: 1px solid var(--border-strong); }
.ag-direktkontakt__rad a:hover { color: var(--accent); }
.ag-karta__not a { color: var(--accent); }

/* --- Sidfot --------------------------------------------------------- */
/* Spaltmallen (första spalten bredare, resten auto-fit) går inte att
   uttrycka med kärnans kolumnblock. */
.ag-footer__inner {
  display: grid;
  gap: var(--space-7);
  grid-template-columns: minmax(240px, 1.2fr) repeat(auto-fit, minmax(160px, 1fr));
}
@media (max-width: 900px) { .ag-footer__inner { grid-template-columns: 1fr 1fr; gap: var(--space-6); } }
@media (max-width: 560px) { .ag-footer__inner { grid-template-columns: 1fr; } }
.ag-footer__brand img { height: 28px; width: auto; display: block; }
:root .ag-footer__lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.ag-footer__lista li { list-style: none; }
.ag-footer__lista a { color: var(--text-on-dark); text-decoration: none; font-size: var(--fs-small); }
.ag-footer__lista a:hover { color: var(--accent); }
.ag-footer__botten a { color: var(--text-on-dark-muted); text-decoration: none; }
.ag-footer__botten a:hover { color: var(--accent); }

/* Förlagan krymper ofta bara den inline-satta texten — ett span eller en
   länk — och låter blocket runt om behålla brödtextens radlåda, 18px × 1,55
   = 27,9px. Ett block som självt är mindre får en lägre radlåda, och
   skillnaden förskjuter allt under: 12,3px på hero-etiketten, 4,65px på
   plats-sektionens länk. Klassen återställer radlådan utan att röra
   teckengraden, så panelen fortsätter visa rätt storlek. */
/* :root krävs: blockstilarna nedan är skrivna som p.is-style-etikett och
   väger tyngre än en ensam klass. */
:root .ag-radlada-brod {
  line-height: calc(var(--wp--preset--font-size--brod) * 1.55);
}

/* Startsidans tätare stegvariant. Förlagan ger den en smalare nummerspalt
   — clamp(48px,12vw,72px) mot grundens clamp(64px,7vw,110px) — och parar
   den med preset stegnummer-tat och 48px luft, satta i specen. */
.ag-steglista--tat { grid-template-columns: clamp(48px, 12vw, 72px) minmax(150px, 1.05fr) minmax(200px, 1.6fr) auto; }

/* Contact Form 7 lindar varje kontroll i ett span. Kontrollen är inline,
   så radlådan runt den räknar in stapelutrymme utöver kontrollens höjd —
   112,5px runt en textarea som mäter 103,6. De 8,9px fanns i
   formulärkortet på kontaktsidan. Omslaget och kontrollen görs blocknivå;
   kryssrutan lämnas inline, den ska stå intill sin text. */
.wpcf7-form-control-wrap { display: block; }
.ag-formularkort textarea,
.ag-formularkort input:not([type=submit]):not([type=checkbox]) { display: block; }

/* --- Långa sammansättningar ------------------------------------------ *
 * Svenska sammansatta ord blir längre än sina spalter i de smala korten:
 * «abonnemangskoordinator» mäter 212px i en 162px bred spalt vid 900px
 * fönsterbredd, och utan brytpunkt målades det utanför kortet. Förlagan
 * har inte problemet därför att den inte har ordet — texten är klientens.
 *
 * Brytningen slår ALDRIG till när ordet ryms, så den kan inte ändra en
 * layout som redan stämmer — bara ord som är bredare än sin spalt bryts.
 * Jag provade hyphens:auto i korten också, men den avstavade «hål-ler»
 * och «god-kända» som redan rymdes; fem bindestreck per kort läste sämre
 * än det enda ord som faktiskt behövde brytas. */
/* :where() ger regeln noll vikt, så kortens `anywhere` nedan alltid går
   om den. Med :is() vägde de lika och avgjordes på ordning — i canvasen
   vann den generella, och då spillde «abonnemangskoordinator» ut ur
   kortet i redigeraren fast fronten var rättad. */
:where(.ag-sektion) :where(p, li, h1, h2, h3, h4, dd, dt) { overflow-wrap: break-word; }
/* Punktraderna är flexrader (bock + text). I flex och rutnät bestäms
   textens MINSTA bredd av det längsta obrytbara ordet, och break-word
   ändrar inte det måttet — bara `anywhere` gör det. Utan den blev
   flexcellen 212px bred i en 162px spalt och ordet målades utanför
   kortet, trots att break-word var satt. */
.ag-nivakort li, .ag-kort li, ul.is-style-bocklista li {
  overflow-wrap: anywhere;
  /* Avstavning, men bara för ord från tolv tecken och med minst fem
     tecken före brytningen. Utan gränsen avstavades «hål-ler» och
     «god-kända» som redan rymdes. Med den bryts «uppföljnings-möten»
     där ordet faktiskt går isär, i stället för mitt i som `anywhere`
     gör — den ligger kvar som sista utväg för ord som är bredare än
     spalten även avstavade. Sidan anger lang="sv-SE". */
  hyphens: auto;
  hyphenate-limit-chars: 12 5 4;
}
