/* ==========================================================================
   Norexit – globale stiler (header, meny, footer, hjelpeklasser)
   Designtokens ligger i theme.json og brukes via var(--wp--preset--*)
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

img {
  max-width: 100%;
  height: auto;
}

/* xx-large (h1) har 40px-gulv – norske sammensatte ord må kunne brytes på smale skjermer */
h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word;
  -webkit-hyphens: auto;
  hyphens: auto;
}

/* To-tone fokusring – navy ytterst, hvit indre ring: synlig på lyse og mørke flater */
:where(a, button, input, select, textarea):focus-visible {
  outline: 3px solid var(--wp--preset--color--navy);
  outline-offset: 2px;
  box-shadow: 0 0 0 2px var(--wp--preset--color--white);
}

/* WPs flow-layout-marginer (.is-layout-flow > *) skal ikke gjelde sideskjelettet
   eller containere der global.css selv eier layouten med flex/grid */
.wp-site-blocks > *,
body .nx-header__inner > *,
body .nx-header__right > *,
.nx-footer > *,
.nx-footer__grid > * {
  margin-block-start: 0;
}

/* Sticky footer: korte sider (404, Personvern) viste cream-tomrom under
   bunnstripen fordi innholdet er kortere enn viewporten. Headeren ligger i
   normal flyt og er en del av flex-kolonnen. */
.wp-site-blocks {
  display: flex;
  flex-direction: column;
  min-height: 100vh; /* fallback for eldre nettlesere */
  min-height: 100dvh;
}

.wp-site-blocks > main {
  flex: 1;
}

/* Settes av menu-overlay.js mens menypanelet er åpent. Overflow: hidden fjerner
   en klassisk scrollbar (Windows, macOS med mus), og siden bak panelet hoppet
   da ca. 7px sideveis. menu-overlay.js måler scrollbarbredden før klassen
   settes og legger den igjen som padding (0 for overlay-scrollbars og når
   scrollbaren er skjult, så ingen layoutmål endres der). Alternativet
   «html { scrollbar-gutter: stable }» ble forkastet: permanent flyttet det alt
   15px i målinger med skjult scrollbar og ga korte sider (404, personvern) en
   tom stripe til høyre for footeren; kun mens menyen er åpen stoppet panelet
   15px fra vindukanten. Stripen under panelet her er skjult av panelet. */
/* XD/Figma tegner tekst med gråtoneutjevning; Mac-nettlesere tegner tyngre
   med standardutjevning. «antialiased» gir samme strektykkelse som designet
   (målt 2026-10-14: Roboto 25px 100 % av designets blekkdekning mot 115 % uten).
   Ingen effekt på Windows/Linux. */
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body.nx-menu-open {
  overflow: hidden;
  padding-right: var(--nx-scrollbar, 0px);
}

/* Håndrullede CTA-ankere med .wp-element-button får ellers display: inline
   (kjernen gir display-regler kun til .wp-block-button__link) */
.wp-element-button {
  display: inline-block;
  box-sizing: border-box;
}

/* Norexit-seksjoner eier sin egen padding – ingen blockGap mellom stablede
   seksjoner. Radavstanden mellom grunn-blokkene ligger på blokken selv
   (blocks/grunn/style.css: padding-top på .nx-grunn + .nx-grunn). Treffer
   direkte barn av post-content (klassen genereres av wp:post-content). */
.wp-block-post-content > [class*="wp-block-norexit-"] {
  margin-block-start: 0;
}

/* Redaktørhint i blokkenes tomtilstand (rendres kun i editor-preview) */
.nx-hint {
  margin: 0 0 1rem;
  padding: 0.75rem 1rem;
  border: 1px dashed currentColor;
  border-radius: 4px;
  font-size: 0.9375rem;
  opacity: 0.8;
}

/* --- Hjelpeklasser ------------------------------------------------------ */

:root {
  --nx-gutter: clamp(1.25rem, 4vw, 2.5rem);
}

.nx-container {
  /* Gutteren legges utenpå wideSize: innholdet er 1640px bredt på 1920
     (x=140–1780), og header, footer og seksjoner deler samme kant */
  max-width: calc(var(--wp--style--global--wide-size, 1640px) + 2 * var(--nx-gutter));
  margin-inline: auto;
  padding-inline: var(--nx-gutter);
}

/* Innholdsflater (tekstsider, 404) utenfor seksjonsblokkene: samme gutter
   som header/footer – constrained layout gir ingen egen kantklaring */
.nx-innhold {
  padding-inline: var(--nx-gutter);
}

/* Innholdsflater: page.html holder <main> i flow-layout slik at
   seksjonsblokkene kan gå kant-til-kant, så bredde og gutter må komme fra
   innholdet — kjernens constrained-layout er ikke i bruk der, og
   theme.json-ens contentSize traff derfor ingenting. Reglene gjelder alle
   sider (headeren er hvit og i flyt – det finnes ingen lys/mørk-variant).

   Gutteren ligger på wrapperen, ikke på barna: setter en blokk sin egen
   padding-inline, skriver kjernen den som inline-stil og slår enhver
   klasseregel vi kan skrive — da ville teksten havnet i kanten igjen.
   Unntakene står i :where() for å holde spesifisiteten lav og forutsigbar. */
.entry-content {
  padding-inline: var(--nx-gutter);
}

.entry-content > *:not(:where(.nx-innhold, .alignfull, .alignwide, [class*="wp-block-norexit-"])) {
  max-width: var(--wp--style--global--content-size, 720px);
  margin-inline: auto;
}

/* Bred innretting: wideSize (1640px) midtstilt. entry-content har her egen
   gutter, så bredden trenger ikke trekkes fra to ganger. */
.entry-content > .alignwide {
  max-width: var(--wp--style--global--wide-size, 1640px);
  margin-inline: auto;
}

/* Fullbredde- og seksjonsblokker skal ut av gutteren igjen */
.entry-content > :where(.alignfull, [class*="wp-block-norexit-"]) {
  margin-inline: calc(-1 * var(--nx-gutter));
}

/* Sider som blander nx-innhold-grupper (patterns som Sidetittel og
   Avslutningsboks) med seksjonsblokker: entry-content har da ingen padding
   (regelen under), så seksjonene skal ikke trekkes ut av en gutter som ikke
   finnes – ellers gir de horisontal overflyt. */
.entry-content:has(> .nx-innhold) > :where(.alignfull, [class*="wp-block-norexit-"]) {
  margin-inline: 0;
}

/* ...og løse kjerneblokker (avsnitt, overskrifter) skal fortsatt ha gutter:
   uten entry-content-padding må bredden holdes inne i gutteren selv */
.entry-content:has(> .nx-innhold) > :not(:where(.nx-innhold, .alignfull, .alignwide, [class*="wp-block-norexit-"])) {
  max-width: min(var(--wp--style--global--content-size, 720px), 100% - 2 * var(--nx-gutter));
}

/* ...og bred innretting holdes inne i gutteren på samme måte */
.entry-content:has(> .nx-innhold) > .alignwide {
  max-width: min(var(--wp--style--global--wide-size, 1640px), 100% - 2 * var(--nx-gutter));
}

/* Der en nx-innhold-gruppe allerede eier gutter og constrained bredde
   (patternet på page.html, og <main> i single.html), skal wrapperen ikke
   legge på en ny. Begge selektorene er (0,2,0) og slår regelen over (0,1,0). */
.nx-innhold .entry-content,
.entry-content:has(> .nx-innhold) {
  padding-inline: 0;
}

/* Kjernen genererer sin egen skip-link for blokktemaer (mål #innhold via
   <main>s eksisterende id) – dedup mot vår egen. Stiles i profilfarger i
   stedet for kjernens grå/mørkegrå-standard. Kjernens egen regel er (0,3,0)
   – .skip-link:focus (0,2,0) er død kode og taper mot kjernens grå
   #eee/#444. body-leddet gjør oss (0,3,1) og dermed uavhengig av
   lastrekkefølgen mellom temaets stilark og kjernens inline-sheet, der en
   ren uavgjort på spesifisitet ville vært avgjort av rekkefølge. */
body .skip-link.screen-reader-text:focus {
  background-color: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--white);
}

.nx-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* --- Header (hvit flate i normal flyt; 228px desktop, 175px mobil) ------ */

/* Headeren flyttes av WPs egen html { margin-top } for innloggede (admin-bar),
   så den trenger ingen egen offset. Sticky footer-regelen over bruker 100dvh,
   som ikke tar hensyn til den marginen – innloggede fikk 32/46px scroll-overheng
   på korte sider. */
body.admin-bar .wp-site-blocks {
  min-height: calc(100vh - 32px); /* fallback for eldre nettlesere */
  min-height: calc(100dvh - 32px);
}

@media screen and (max-width: 782px) {
  body.admin-bar .wp-site-blocks {
    min-height: calc(100vh - 46px); /* fallback for eldre nettlesere */
    min-height: calc(100dvh - 46px);
  }
}

.nx-header {
  position: static;
  background: var(--wp--preset--color--white);
}

/* Tre kolonner: logoen midtstilt, høyrekolonnen (CTA + hamburger) høyrestilt.
   Bredde og sidegutter kommer fra .nx-container (1640px innhold på 1920), slik
   at strekene i hamburgeren ender på containerkanten. */
.nx-header__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  height: 228px;
  padding-block: 0;
}

.nx-header__logo {
  grid-column: 2;
  display: block;
  line-height: 0;
}

.nx-header__logo img {
  display: block;
  width: 190px;
  height: auto;
}

.nx-header__right {
  grid-column: 3;
  justify-self: end;
  /* Senter y=146 i designet: 32px under headerens midtlinje (114). Transform
     endrer ikke høyden. */
  transform: translateY(32px);
  display: flex;
  align-items: center;
  /* 44px på desktop; krymper mot 601px slik at CTA-en ikke treffer logoen */
  gap: clamp(1rem, 8vw - 2rem, 2.75rem);
}

.nx-header__cta {
  font-size: 1.5rem;
  line-height: 1;
  color: var(--wp--preset--color--ink);
  text-decoration: none;
  white-space: nowrap;
}

.nx-header__cta:hover {
  text-decoration: underline;
}

/* Klikkflaten er 48px bred, men strekene (32px) skal ende på containerkanten.
   Hamburgeren trenger JS: uten html.nx-js vises menypanelet statisk i stedet. */
.nx-menu-toggle {
  display: none;
  flex-direction: column;
  gap: 8px;
  padding: 12px 8px;
  margin-inline-end: -8px;
  background: none;
  border: 0;
  cursor: pointer;
}

.nx-menu-toggle span:not(.nx-sr-only) {
  display: block;
  width: 32px;
  height: 2px;
  background: var(--wp--preset--color--ink);
}

/* <=600px: to kolonner, liten logo til venstre, ingen tekstlenke */
@media (max-width: 600px) {
  /* Designets mobilmarger er 35px (venstre) og 38px (høyre), ikke --nx-gutter.
     Logoens toppkant står på y=32; hamburgeren (48px høy) har senter y=64. */
  .nx-header__inner {
    grid-template-columns: auto 1fr;
    align-items: start;
    height: 175px;
    padding: 32px 38px 0 35px;
  }

  .nx-header__logo {
    grid-column: 1;
  }

  .nx-header__logo img {
    width: 77px;
  }

  .nx-header__right {
    grid-column: 2;
    transform: translateY(8px);
  }

  .nx-header__cta {
    display: none;
  }

  /* Mobildesignet har en mindre hamburger (24×16) */
  .nx-menu-toggle {
    gap: 5px;
    padding: 16px 8px;
  }

  .nx-menu-toggle span:not(.nx-sr-only) {
    width: 24px;
  }
}

/* --- Menypanel ---------------------------------------------------------- */

/* Uten JS (html uten .nx-js, se inc/assets.php) er panelet et statisk oliven
   bånd i flyt der template-parten står: lenkene sentrert, ingen hamburger,
   ingen lukkeknapp. Overlayet nedenfor gjelder bare under html.nx-js. */
.nx-menu-panel {
  background: var(--wp--preset--color--olive);
  color: var(--wp--preset--color--white);
  padding: 2.5rem var(--nx-gutter);
  text-align: center;
}

.nx-menu-close {
  display: none;
}

/* NB: className kopieres til både <nav> og indre <ul>, og kjernen setter
   gap og justering på begge – kvalifiser selektorene med element.
   Lenkefargen arves fra nav (kjernens .wp-block-navigation-item__content
   sier color: inherit og slår enhver lenkeregel vi kan skrive her). */
.nx-menu-panel > nav.wp-block-navigation {
  margin: 0;
  color: var(--wp--preset--color--white);
  align-items: center;
}

.nx-menu-panel ul.wp-block-navigation__container {
  gap: 0;
  padding: 0;
  align-items: center;
}

/* 76px radavstand: li-en er raden, lenka har naturlig høyde (tett fokusring) */
.nx-menu-panel .wp-block-navigation-item {
  min-height: 76px;
  align-items: center;
}

.nx-menu-panel .wp-block-navigation-item__content {
  padding: 0;
  font-size: 2rem;
  line-height: 1.2;
  text-decoration: none;
}

/* Hover-tilstanden i designet er fet tekst (XD viser «Bli medlem!» i hover).
   Ingen punkter er fete som standard. */
.nx-menu-panel .wp-block-navigation-item__content:hover {
  font-weight: 700;
}

/* Navy fokusring gir 1,2:1 mot oliven – hvit ring med oliven indre ring */
.nx-menu-panel :focus-visible {
  outline-color: var(--wp--preset--color--white);
  box-shadow: 0 0 0 2px var(--wp--preset--color--olive);
}

/* --- Menypanel som overlay (krever JS) ---------------------------------- */

html.nx-js .nx-menu-toggle {
  display: inline-flex;
}

/* Lukkekrysset står på samme kant som hamburgeren: containerkanten */
html.nx-js .nx-menu-panel {
  /* 100vw inkluderer en klassisk scrollbar; --nx-scrollbar (menu-overlay.js) legger
     den til igjen, slik at krysset står der hamburgeren stod med scrollbaren på */
  --nx-menu-edge: max(calc(var(--nx-gutter) + var(--nx-scrollbar, 0px)), calc((100vw - var(--wp--style--global--wide-size, 1640px) + var(--nx-scrollbar, 0px)) / 2));
  display: none;
  position: fixed;
  top: 0;
  right: 0;
  z-index: 50;
  width: min(550px, 100%);
  height: 100vh; /* fallback for eldre nettlesere */
  height: 100dvh;
  padding: 245px 2rem 2.5rem 5.5rem; /* første punkt midtstilt på y≈283 */
  text-align: start;
  overflow-y: auto;
}

html.nx-js .nx-menu-panel.is-open {
  display: flex;
  flex-direction: column;
  /* Panelet ligger over hvit header og bildeflater – skygge gir separasjon
     også mot lyse sider */
  box-shadow: -12px 0 32px rgb(0 0 0 / 0.12);
}

/* Innloggede: WPs adminbar (32/46px) ligger over viewporten og html får
   margin-top – panelet starter under den, så krysset står på linje med
   hamburgeren */
html.nx-js body.admin-bar .nx-menu-panel {
  top: 32px;
  height: calc(100vh - 32px); /* fallback for eldre nettlesere */
  height: calc(100dvh - 32px);
}

@media screen and (max-width: 782px) {
  html.nx-js body.admin-bar .nx-menu-panel {
    top: 46px;
    height: calc(100vh - 46px); /* fallback for eldre nettlesere */
    height: calc(100dvh - 46px);
  }
}

/* 32px-krysset (SVG) med 8px klikkmargin; krysset midt på y≈145, høyre kant
   på --nx-menu-edge */
html.nx-js .nx-menu-close {
  display: block;
  position: absolute;
  top: 121px;
  right: calc(var(--nx-menu-edge) - 8px);
  padding: 8px;
  background: none;
  border: 0;
  cursor: pointer;
  line-height: 0;
  color: var(--wp--preset--color--white);
}

/* Venstrestilte punkter bare på desktop; statisk visning og mobil er sentrert */
@media (min-width: 601px) {
  html.nx-js .nx-menu-panel > nav.wp-block-navigation,
  html.nx-js .nx-menu-panel ul.wp-block-navigation__container {
    align-items: flex-start;
  }
}

@media (max-width: 600px) {
  html.nx-js .nx-menu-panel {
    /* + målt scrollbarbredde (menu-overlay.js), så krysset står på hamburgerens plass også
       i smale desktopvinduer med klassisk scrollbar */
    --nx-menu-edge: calc(38px + var(--nx-scrollbar, 0px));
    width: 100%;
    padding: 211px var(--nx-gutter) 2.5rem; /* første punkt midtstilt på y≈250 */
    text-align: center;
  }

  /* 24px-kryss midt på y≈62 */
  html.nx-js .nx-menu-close {
    top: 42px;
  }

  html.nx-js .nx-menu-close svg {
    width: 24px;
    height: 24px;
  }

  .nx-menu-panel .wp-block-navigation-item {
    min-height: 78px;
  }

  .nx-menu-panel .wp-block-navigation-item__content {
    font-size: 2.125rem;
  }
}

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

/* Bevisst sand (ikke cream) – footeren skal skille seg fra sideflaten.
   Vertikal padding ligger på innercontaineren slik at bunnstripen når helt ned. */
.nx-footer {
  background: var(--wp--preset--color--sand);
  padding: 0;
}

.nx-footer > .nx-container {
  padding-block: 4rem 3rem;
}

/* minmax(0, 1fr), ikke 1fr: 1fr har min-content som minimum, så en lang
   e-postadresse ved 200 % tekstzoom presset gridet ut til 656px (601–640px) */
.nx-footer__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 2.5rem;
  align-items: start;
}

.nx-footer__grid > * {
  min-width: 0;
  overflow-wrap: break-word;
}

.nx-footer__logo img {
  display: block;
  width: 150px;
  max-width: 100%;
}

/* Overskriftene er Roboto 700 (som i designet), ikke temaets Playfair-standard */
.nx-footer :is(h2, h3) {
  font-family: var(--wp--preset--font-family--roboto);
  font-size: 1rem; /* XD: Roboto Black 16px */
  font-weight: 900;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin: 0 0 1.25rem;
}

/* Kolonnegruppene er is-layout-flow – kjernens blockGap (opptil 32px) overstyrer
   ellers overskriftens 1.25rem og gir ulik rytme i sideordnede kolonner */
.nx-footer__grid > * > * {
  margin-block-start: 0;
}

.nx-footer p + p {
  margin-top: 0.875rem;
}

.nx-footer p,
.nx-footer li {
  font-size: 1rem;
  line-height: 1.8;
}

.nx-footer ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nx-footer li {
  margin-bottom: 0.875rem;
}

.nx-footer a {
  color: var(--wp--preset--color--ink);
  text-decoration: none;
}

.nx-footer a:hover {
  text-decoration: underline;
}

/* WCAG 1.4.1: e-post/telefon i "Ta kontakt" var typografisk identiske med
   org.nr-linjen ved siden av – ingen ikke-hover-differensiering. Skisser kan
   ikke konsulteres her (vedlegg fra samtalen, ikke på disk) – understrek er
   den trygge, tilgjengelige standardløsningen. */
.nx-footer a[href^="mailto:"],
.nx-footer a[href^="tel:"] {
  text-decoration: underline;
}

.nx-footer__bottom {
  background: var(--wp--preset--color--olive-black);
  padding: 0.625rem 0;
}

.nx-footer__bottom p {
  margin: 0;
  font-size: 0.75rem; /* XD: 12px */
  color: var(--wp--preset--color--white);
  text-align: center; /* bunnstripen er sentrert i designet (bekreftet 2026-10-14) */
}

.nx-footer__bottom a {
  color: var(--wp--preset--color--white);
  text-decoration: none;
}

.nx-footer__bottom a:hover {
  text-decoration: underline;
}

/* Org.nr. står i kontaktkolonnen på desktop og i bunnstripen på mobil */
.nx-footer__orgnr {
  display: none;
}

@media (max-width: 900px) {
  .nx-footer__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Mobil (målt mot Mobilversjon forside, 430px): midtstilt, 18px tekst med
   27px linjehøyde, 32px mellom seksjonene, «Følg oss» som én linje med « | » */
@media (max-width: 600px) {
  .nx-footer > .nx-container {
    padding-block: 3.6875rem 4.25rem;
  }

  .nx-footer__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
    text-align: center;
  }

  .nx-footer__logo {
    margin-bottom: 0.25rem;
  }

  .nx-footer__logo img {
    width: 4rem;
    margin-inline: auto;
  }

  .nx-footer :is(h2, h3) {
    font-size: var(--wp--preset--font-size--medium);
    line-height: 1.5;
    letter-spacing: 0;
    margin: 0;
  }

  .nx-footer p,
  .nx-footer li {
    font-size: var(--wp--preset--font-size--medium);
    line-height: 1.5;
  }

  .nx-footer p + p {
    margin-top: 0;
  }

  .nx-footer__orgnr-kolonne {
    display: none;
  }

  /* Adressen står på én linje (blanketegnet før <br> i markupen gir mellomrommet) */
  .nx-footer__adresse br {
    display: none;
  }

  .nx-footer ul {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
  }

  .nx-footer li {
    margin-bottom: 0;
    font-size: 1rem;
  }

  /* Separatoren ligger i CSS, ikke i markupen; «/ ""» skjuler den for skjermlesere */
  .nx-footer li + li::before {
    content: "|";
    content: "|" / "";
    padding-inline: 0.25em;
  }

  /* Designets «Følg oss»-blokk er 16px hele veien (overskrift og lenker), med
     samme 27px linjehøyde som resten */
  .nx-footer__folg :is(h2, h3) {
    font-size: 1rem;
    line-height: 1.6875;
    margin-bottom: 0.1875rem;
  }

  .nx-footer__bottom {
    padding-block: 1rem;
  }

  .nx-footer__bottom p {
    font-size: 0.75rem;
    line-height: 1.5;
  }

  .nx-footer__orgnr {
    display: inline;
  }
}

/* --- Patterns: Sidetittel og Avslutningsboks ------------------------------ */

/* Sidetittel, sentrert (70px h1 + 25px ingress). Hvit flate; headeren er hvit
   og i flyt. Toppluften er målt fra designet (h1-linjen 120px under headeren
   på 1920, 0 på 430 – mobilheaderen er allerede høy) og skalerer lineært. */
.nx-innhold.nx-sidetittel {
  margin-block: 0;
  padding-top: clamp(0px, calc(8.2vw - 2.2rem), 7.63rem);
  padding-bottom: clamp(3rem, calc(2.22rem + 4.46vw), 7.6rem);
  text-align: center;
}

.nx-sidetittel > * {
  margin-block: 0;
}

/* Designet bryter naturlig i en 800px-kolonne (XD: bredeste linje 777px ved
   25px) med hardt linjeskift etter første setning – ikke balansert bryting,
   som ga tre jevne, smale linjer (529px). */
.nx-sidetittel p {
  max-width: 32em;
  text-wrap: wrap;
  margin-top: 1.3rem;
  margin-inline: auto;
  line-height: 1.2;
}

/* Linjeskift i ingressen styres av redaktøren (kjerneblokker) */
@media (max-width: 600px) {
  .nx-sidetittel h1 {
    font-size: 2.1875rem;
  }

  /* Mobil: vanlig bryting med smal kolonne gir designets fire linjer.
     Mobilskissen har ikke desktopens linjeskift etter første setning –
     <br> skjules (mellomrommet før <br> i teksten hindrer at ordene limes). */
  .nx-sidetittel p {
    max-width: 17.1em;
    text-wrap: wrap;
    margin-top: 1rem;
  }

  .nx-sidetittel p br {
    display: none;
  }

  /* !important kun mot preset-klassen (selv !important), så andre
     størrelsesvalg i editoren respekteres */
  .nx-sidetittel p.has-large-font-size {
    font-size: 1.125rem !important;
  }
}

/* Avslutningsboks: ytre gruppe gir hvit flate rundt den inset cream-boksen
   (body er cream). Boksen går helt ned til footeren. Luften inni er målt
   (ca. 68px topp, 147px bunn på 1920; 35/42px på 430) og skalerer lineært. */
.nx-innhold.nx-avslutning {
  margin-block: 0; /* flow-layoutens blockGap ville vist en cream stripe mellom de hvite flatene */
  padding-top: clamp(1.9rem, calc(1.2rem + 5.6vw), 7.5rem);
  padding-bottom: 0;
}

.nx-avslutningsboks {
  padding: calc(1.75rem + 2.08vw) 1.25rem calc(0.75rem + 7vw);
  text-align: center;
}

.nx-avslutningsboks > * {
  margin-block: 0;
}

.nx-avslutningsboks__kicker {
  font-family: var(--wp--preset--font-family--playfair);
  font-weight: 600;
  line-height: 1.2;
}

.nx-avslutningsboks h2 {
  margin-top: 0.5rem;
}

.nx-avslutningsboks h2 + p {
  margin-top: 2.04rem;
}

.nx-avslutningsboks h2 ~ p {
  line-height: 1.28;
}

/* Flere avsnitt: én linjehøyde mellom dem */
.nx-avslutningsboks > p + p {
  margin-top: 1.28em;
}

@media (max-width: 700px) {
  /* 36px sidemarg (x 36–392 på 430), ikke fullbredde – som grunn-blokkene */
  .nx-innhold.nx-avslutning {
    padding-inline: 36px;
  }
}

@media (max-width: 600px) {
  .nx-avslutningsboks {
    padding-block: 2.15rem 2.6rem;
  }

  /* !important kun mot preset-klassen (selv !important) */
  .nx-avslutningsboks__kicker.has-large-font-size {
    font-size: 0.875rem !important;
  }

  .nx-avslutningsboks h2 {
    margin-top: 0.1rem;
    font-size: 1.5625rem;
  }

  .nx-avslutningsboks h2 + p {
    margin-top: 2.09rem;
  }

  .nx-avslutningsboks h2 ~ p {
    font-size: 0.875rem;
  }
}

/* --- Site Editor: nøytraliser layoutgrep så partene kan redigeres ---------- */
/* global.css lastes også som editor-stylesheet (add_editor_style). Uten disse
   er menypanelet usynlig i Site Editor. */

/* Panelet er statisk uten html.nx-js (editoren setter aldri klassen), men
   hamburgeren skjules da – vis den slik at headeren kan redigeres. HTML-blokkens
   wrapper (ikke <a>-en) er grid-barnet i editoren. */
.editor-styles-wrapper .nx-menu-toggle {
  display: inline-flex;
}

/* Lukkekrysset er display: none utenfor html.nx-js (editoren setter aldri
   klassen), og da blir knappen en tom wrapper i Site Editor. */
.editor-styles-wrapper .nx-menu-close {
  display: block;
}

/* I editoren (Site Editor og «Vis mal» i sideeditoren) vises menypanelet som
   en lav stripe med punktene på rad, ikke som fullskjermsflaten det er på
   nettstedet – ellers skyver det innholdet langt ned og ser ut som en feil.
   Punktene er fortsatt redigerbare. */
.editor-styles-wrapper .nx-menu-panel {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  padding: 0.75rem var(--nx-gutter);
  text-align: left;
}

.editor-styles-wrapper .nx-menu-panel::before {
  content: "Menypanel (åpnes fra hamburgeren på nettstedet)";
  font-size: 0.75rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.8;
  white-space: nowrap;
}

.editor-styles-wrapper .nx-menu-panel > nav.wp-block-navigation {
  margin: 0;
}

.editor-styles-wrapper .nx-menu-panel ul.wp-block-navigation__container {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 0.25rem 1.5rem;
}

.editor-styles-wrapper .nx-menu-panel .wp-block-navigation-item {
  min-height: 0;
}

.editor-styles-wrapper .nx-menu-panel .wp-block-navigation-item__content {
  font-size: 1rem;
}

.editor-styles-wrapper .nx-menu-panel .nx-menu-close {
  order: 1;
  margin-left: auto;
  width: 24px;
  height: 24px;
  padding: 0;
}

.editor-styles-wrapper .nx-menu-panel .nx-menu-close svg {
  width: 16px;
  height: 16px;
}

.editor-styles-wrapper .nx-header__inner > .wp-block-html {
  grid-column: 2;
}

.editor-styles-wrapper .nx-header__inner {
  height: auto;
  min-height: 228px;
}

/* Editorens innholdsflate (.is-root-container) speiler .entry-content på
   frontend: samme gutter, og seksjonsblokkene (norexit/…) slipper ut av
   contentSize-begrensningen (720px) som kjernens constrained layout legger på
   alle direkte barn uten alignfull. Uten dette klemmes hero, kontakt, skjema
   osv. inn i tekstkolonnen i editoren. Sider med nx-innhold-grupper
   (patterns) eier gutteren selv, som på frontend. */
.editor-styles-wrapper .is-root-container {
  padding-inline: var(--nx-gutter);
}

.editor-styles-wrapper .is-root-container > [data-type^="norexit/"] {
  max-width: none;
  margin-inline: calc(-1 * var(--nx-gutter));
}

/* Fullbredde standardblokker (f.eks. Bli medlem-seksjonen, en gruppe med
   align full) skal også ut av tekstkolonnen i editoren. Kjernens constrained
   layout setter max-width og margin-inline: auto !important på barn den ikke
   regner som alignfull, så !important trengs for å speile frontend. */
.editor-styles-wrapper .is-root-container > :is(.alignfull, [data-align="full"]) {
  max-width: none !important;
  margin-left: calc(-1 * var(--nx-gutter)) !important;
  margin-right: calc(-1 * var(--nx-gutter)) !important;
}

.editor-styles-wrapper .is-root-container:has(> .nx-innhold) > :is(.alignfull, [data-align="full"]) {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.editor-styles-wrapper .is-root-container > .alignwide {
  max-width: var(--wp--style--global--wide-size, 1640px);
}

.editor-styles-wrapper .is-root-container:has(> .nx-innhold) {
  padding-inline: 0;
}

.editor-styles-wrapper .is-root-container:has(> .nx-innhold) > [data-type^="norexit/"] {
  margin-inline: 0;
}

.editor-styles-wrapper .is-root-container:has(> .nx-innhold) > :not(:where(.nx-innhold, .alignfull, .alignwide, [data-type^="norexit/"])) {
  max-width: min(var(--wp--style--global--content-size, 720px), 100% - 2 * var(--nx-gutter));
}

/* Seksjonene eier sin egen padding også i editoren (speiler regelen for
   .wp-block-post-content på frontend) */
.editor-styles-wrapper .is-root-container > [data-type^="norexit/"] + [data-type^="norexit/"] {
  margin-block-start: 0;
}

/* Kjernens .wp-block-post-title :where(a) arver text-decoration og nuller
   theme.json-ens understrek – i treffliste og arkiv er disse titlene de
   eneste lenkene, så de trenger affordans (WCAG 1.4.1). */
.wp-block-query .wp-block-post-title a {
  text-decoration: underline;
}

/* Windows-kontrastmodus (forced colors): nettleseren fjerner bakgrunnsfarger, så
   hamburgerens streker (span med background) ville forsvunnet. Logoen er en PNG
   med marineblått ordmerke som drukner på svart bakgrunn – gi den hvit bakplate. */
@media (forced-colors: active) {
  .nx-menu-toggle span:not(.nx-sr-only) {
    background: ButtonText;
  }

  .nx-header__logo img,
  .nx-footer__logo img {
    background: #fff;
    forced-color-adjust: none;
  }
}
