@charset "UTF-8";
/* =============================================================================
   IQ active — style.css
   Ét fælles stylesheet for alle fem sider.
   Statisk HTML5 + CSS + vanilla JS. Ingen build, ingen frameworks.

   Indhold
   -----------------------------------------------------------------------------
   (a)  Skrifttyper (Google Fonts)
   (b)  Reset og box-sizing
   (c)  Design-tokens (:root)
   (d)  Base-typografi
   (e)  Layout-primitiver
   (f)  Komponenter
   (g)  Header, navigation, søgeoverlay, besked-toast
   (h)  Footer
   (i)  Formularer
   (j)  Tema: body.theme-born (Børnemiljø)
   (k)  Utilities
   (l)  @media print
   (m)  prefers-reduced-motion

   Breakpoints (mobile-first, min-width)
   -----------------------------------------------------------------------------
   560px   små kort bliver 2-spaltede
   768px   tekst/medie-splits og formularer bliver 2-spaltede
   900px   desktop-navigation (hamburger forsvinder), store splits
   1100px  4-spaltede gitre, maks. luft
   ============================================================================= */


/* =============================================================================
   (a) SKRIFTTYPER — Google Fonts
   -----------------------------------------------------------------------------
   Fonts indlæses fra HTML'ens <head> (ikke via @import — @import blokerer
   rendering). Kopiér disse tre linjer ind i <head> på ALLE sider:

     <link rel="preconnect" href="https://fonts.googleapis.com">
     <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
     <link rel="stylesheet"
           href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap">

   KUN på bornemiljo.html tilføjes desuden Baloo Da 2 (overskrifter):

     <link rel="stylesheet"
           href="https://fonts.googleapis.com/css2?family=Baloo+Da+2:wght@700;800&display=swap">

   Der bruges ingen @font-face-regler: alle filer hentes fra Google Fonts, som
   er den eneste tilladte eksterne kilde.
   ============================================================================= */


/* =============================================================================
   (b) RESET + BOX-SIZING
   ============================================================================= */

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

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  scrollbar-gutter: stable;
  scroll-padding-top: calc(var(--header-h) + 1.5rem);
}

body,
h1, h2, h3, h4, h5, h6,
p, figure, blockquote, dl, dd, ol, ul, fieldset, legend {
  margin: 0;
  padding: 0;
}

ul[class],
ol[class] {
  list-style: none;
}

img,
picture,
svg,
video,
canvas {
  display: block;
  max-width: 100%;
}

img,
video {
  height: auto;
}

/* Bemærk: der sættes bevidst INGEN global fill/stroke på <svg>. Alle inline-
   ikoner styrer selv fill/stroke via attributter (fill="none" stroke="currentColor"),
   og en global CSS-regel ville overskrive dem. */

input,
button,
select,
textarea {
  font: inherit;
  color: inherit;
  margin: 0;
}

button {
  background: none;
  border: 0;
  cursor: pointer;
}

a {
  color: inherit;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
}

table {
  border-collapse: collapse;
  width: 100%;
}

fieldset {
  border: 0;
  min-width: 0;
}

hr {
  border: 0;
}

[hidden] {
  display: none !important;
}

:target {
  scroll-margin-top: calc(var(--header-h) + 1.5rem);
}


/* =============================================================================
   (c) DESIGN-TOKENS
   ============================================================================= */

:root {
  /* --- Brandfarver (BRIEF §1 — brug dem ordret) --------------------------- */
  --navy-900: #001956;
  --navy-800: #0A2166;
  --navy: #1A1D56;
  --navy-600: #3B4180;
  --blue-icon: #072062;
  --lime: #9CC31A;
  --green: #2E7D32;
  --green-dark: #166C13;
  --green-outline: #077208;
  --orange: #EA5321;
  --ink: #20232E;
  --muted: #5B6070;
  --bg: #F1F1F0;
  --surface: #FFFFFF;
  --line: #DFDEDA;

  /* --- Afledte nuancer (kun tonale varianter af ovenstående) -------------- */
  --navy-700: #12307E;          /* gradientens lyse ende */
  --navy-ink-soft: #C3D0EE;     /* dæmpet tekst på mørkeblå paneler */
  --lime-soft: #F2F8DF;         /* meget lys limebaggrund */
  --green-soft: #EAF3EA;        /* meget lys grøn baggrund (ikoncirkler) */
  --orange-deep: #B8380F;       /* orange flade med hvid tekst (kontrast ≥ 4.5:1) */
  --orange-mid: #CE4317;
  --orange-hover: #9C2F0C;
  --orange-ink: #A63410;        /* orange tekst på lys baggrund */
  --danger: #B3261E;
  --danger-soft: #FDECEA;

  /* --- Accent (skiftes af body.theme-born) -------------------------------- */
  --accent: var(--green);            /* primær knapflade */
  --accent-hover: var(--green-dark); /* primær knap ved hover/active */
  --accent-ink: var(--green-dark);   /* accentfarvet TEKST på lys baggrund */
  --accent-soft: var(--green-soft);  /* meget lys accentflade */
  --accent-underline: var(--lime);   /* streger, aktiv nav, dekor */

  /* --- Flader og gradienter ---------------------------------------------- */
  --gradient-navy: linear-gradient(120deg, #001956 0%, #0A2166 55%, #12307E 100%);
  --gradient-orange: linear-gradient(135deg, #B8380F 0%, #CE4317 60%, #B8380F 100%);
  --panel-glow: radial-gradient(60% 90% at 100% 60%, rgba(156, 195, 26, 0.32) 0%, rgba(156, 195, 26, 0) 68%);

  /* --- Spacing-skala ------------------------------------------------------ */
  --space-1: 0.25rem;   /*  4px */
  --space-2: 0.5rem;    /*  8px */
  --space-3: 0.75rem;   /* 12px */
  --space-4: 1rem;      /* 16px */
  --space-5: 1.5rem;    /* 24px */
  --space-6: 2rem;      /* 32px */
  --space-7: 2.5rem;    /* 40px */
  --space-8: 3rem;      /* 48px */
  --space-9: 4rem;      /* 64px */
  --space-10: 5rem;     /* 80px */
  --space-11: 6rem;     /* 96px */
  --space-12: 8rem;     /* 128px */

  /* --- Radius ------------------------------------------------------------- */
  --radius-xs: 6px;
  --radius-sm: 8px;
  --radius-btn: 10px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 18px;
  --radius-2xl: 20px;
  --radius-3xl: 24px;
  --radius-pill: 999px;

  /* --- Skygger (bløde, navy-tonede — aldrig hårdt sort) ------------------- */
  --shadow-xs: 0 1px 2px rgba(26, 29, 86, 0.06);
  --shadow-sm: 0 2px 8px rgba(26, 29, 86, 0.06), 0 1px 2px rgba(26, 29, 86, 0.04);
  --shadow-md: 0 10px 28px rgba(26, 29, 86, 0.08), 0 2px 6px rgba(26, 29, 86, 0.05);
  --shadow-lg: 0 20px 52px rgba(26, 29, 86, 0.12), 0 4px 14px rgba(26, 29, 86, 0.06);
  --shadow-navy: 0 22px 56px rgba(0, 25, 86, 0.24), 0 4px 12px rgba(0, 25, 86, 0.14);
  --shadow-focus: 0 0 0 4px rgba(156, 195, 26, 0.35);

  /* --- Mål ---------------------------------------------------------------- */
  --container-max: 1200px;
  --container-pad: clamp(1rem, 4vw, 2.5rem);
  --measure: 64ch;
  --header-h: 64px;

  /* --- Bevægelse ---------------------------------------------------------- */
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --t-fast: 140ms var(--ease);
  --t: 220ms var(--ease);
  --t-slow: 420ms var(--ease-out);
  --t-reveal: 640ms var(--ease-out);

  /* --- Fokusring ---------------------------------------------------------- */
  --focus-ring: var(--navy);

  /* --- Skrift ------------------------------------------------------------- */
  --font-body: "Inter", "Segoe UI", Arial, Helvetica, sans-serif;
  --font-head: "Inter", "Segoe UI", Arial, Helvetica, sans-serif;

  /* --- Lagdeling ---------------------------------------------------------- */
  --z-header: 100;
  --z-nav-panel: 110;
  --z-overlay: 120;
  --z-toast: 130;
}

@media (min-width: 900px) {
  :root {
    --header-h: 78px;
  }
}


/* =============================================================================
   (d) BASE-TYPOGRAFI
   ============================================================================= */

body {
  min-height: 100%;
  background-color: var(--bg);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  font-weight: 400;
  line-height: 1.7;
  font-synthesis-weight: none;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-wrap: break-word;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-head);
  color: var(--navy);
  text-wrap: balance;
}

h1 {
  font-size: clamp(2.1rem, 1.2rem + 3.2vw, 3.5rem);
  font-weight: 800;
  line-height: 1.12;
  letter-spacing: -0.02em;
}

h2 {
  font-size: clamp(1.6rem, 1.1rem + 1.9vw, 2.4rem);
  font-weight: 800;
  line-height: 1.18;
  letter-spacing: -0.015em;
}

h3 {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: -0.005em;
}

h4 {
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.4;
}

h5,
h6 {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.45;
}

p {
  text-wrap: pretty;
}

strong,
b {
  font-weight: 700;
}

small {
  font-size: 0.875rem;
}

a {
  color: var(--navy);
  text-decoration-color: rgba(26, 29, 86, 0.35);
  transition: color var(--t-fast), text-decoration-color var(--t-fast);
}

a:hover {
  color: var(--accent-ink);
  text-decoration-color: currentColor;
}

a:active {
  color: var(--accent-hover);
}

::selection {
  background: var(--lime);
  color: var(--navy-900);
}

/* Synlig fokusring — 3px, altid tydelig, aldrig fjernet. */
:focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 3px;
  border-radius: var(--radius-xs);
}

/* Musefokus skal ikke tegne ring, men tastaturfokus SKAL. */
:focus:not(:focus-visible) {
  outline: none;
}


/* =============================================================================
   (e) LAYOUT-PRIMITIVER
   ============================================================================= */

/* .container — maks 1200px med fluid sidepolstring. */
.container {
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--container-pad);
}

.container--narrow {
  max-width: 820px;
}

.container--wide {
  max-width: 1360px;
}

/* .section — lodret rytme mellem sidens blokke. */
.section {
  padding-block: clamp(2.75rem, 6vw, 5rem);
}

.section--tight {
  padding-block: clamp(1.5rem, 3.5vw, 2.75rem);
}

.section--loose {
  padding-block: clamp(3.5rem, 8vw, 6.5rem);
}

.section--surface {
  background-color: var(--surface);
}

.section--bg {
  background-color: var(--bg);
}

/* Fuldbredde-orange bånd (Børnemiljø §7.3). */
.section--orange {
  background: var(--gradient-orange);
  color: #fff;
  --focus-ring: #F2F8DF;
}

.section--orange h1,
.section--orange h2,
.section--orange h3,
.section--orange h4 {
  color: #fff;
}

.section--flush-top {
  padding-top: 0;
}

.section--flush-bottom {
  padding-bottom: 0;
}

/* .rule — tynd skillelinje mellem sektioner. Brug <hr class="rule"> i .container. */
.rule {
  border: 0;
  border-top: 1px solid var(--line);
  height: 0;
  margin: 0;
}

/* .flow — lodret afstand mellem søskende. Styr med --flow-space pr. element. */
.flow > * + * {
  margin-top: var(--flow-space, var(--space-4));
}

/* .prose — brødtekstblok med naturlig afstand og læsevenlig bredde. */
.prose > * + * {
  margin-top: var(--space-4);
}

.prose p {
  max-width: var(--measure);
}

.measure {
  max-width: var(--measure);
}

/* .grid — basisgitter. Modifiers skalerer med breakpoints. */
.grid {
  display: grid;
  gap: var(--space-5);
}

.grid > * {
  min-width: 0;
}

.grid--gap-lg {
  gap: var(--space-7);
}

.grid--gap-sm {
  gap: var(--space-4);
}

.grid--2,
.grid--3,
.grid--4 {
  grid-template-columns: 1fr;
}

@media (min-width: 560px) {
  .grid--3,
  .grid--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 768px) {
  .grid--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 900px) {
  .grid--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 1100px) {
  .grid--4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* .split — asymmetrisk 2-kolonne. Forholdet sættes pr. element:
   <div class="split" style="--split: 46fr 54fr"> … </div>            */
.split {
  display: grid;
  gap: var(--space-7);
  align-items: center;
}

.split > * {
  min-width: 0;
}

.split--top {
  align-items: start;
}

@media (min-width: 900px) {
  .split {
    grid-template-columns: var(--split, 1fr 1fr);
    gap: var(--space-9);
  }

  /* Vender den visuelle rækkefølge — DOM-rækkefølgen bevares for skærmlæsere. */
  .split--reverse > :first-child {
    order: 2;
  }
}

/* .cluster — vandret gruppe der ombryder pænt (fx knappar). */
.cluster {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  align-items: center;
}

.cluster--center {
  justify-content: center;
}

.cluster--between {
  justify-content: space-between;
}

/* Vandret scroll som sidste udvej for brede blokke (BRIEF §9). */
.scroll-x {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}


/* =============================================================================
   (f) KOMPONENTER
   ============================================================================= */

/* --- .skip-link ----------------------------------------------------------- */
.skip-link {
  position: absolute;
  top: var(--space-2);
  left: var(--space-2);
  z-index: 200;
  transform: translateY(-200%);
  display: inline-block;
  padding: 0.75rem 1.25rem;
  border-radius: var(--radius-btn);
  background: var(--navy-900);
  color: #fff;
  font-size: 0.9375rem;
  font-weight: 700;
  text-decoration: none;
  box-shadow: var(--shadow-navy);
  transition: transform var(--t);
}

.skip-link:focus,
.skip-link:focus-visible {
  transform: translateY(0);
  color: #fff;
  --focus-ring: #F2F8DF;
}

/* --- .eyebrow — lille versaltekst over h1/h2 ------------------------------ */
.eyebrow {
  display: block;
  margin-bottom: var(--space-3);
  color: var(--accent-ink);
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.eyebrow--light {
  color: var(--lime);
}

/* --- .lead — manchet ------------------------------------------------------ */
.lead {
  max-width: var(--measure);
  color: var(--navy-600);
  font-size: clamp(1.0625rem, 1rem + 0.35vw, 1.1875rem);
  font-weight: 500;
  line-height: 1.65;
}

/* .lead--strong — manchet der stilles som et direkte spørgsmål til læseren,
   fx afslutningen på forsidens CTA. Mørkere og tungere end .lead, så den
   løfter sig fra den omkringliggende brødtekst uden at være en overskrift. */
.lead--strong {
  color: var(--navy);
  font-size: clamp(1.1875rem, 1.05rem + 0.6vw, 1.4375rem);
  font-weight: 700;
}

.lead--muted {
  color: var(--muted);
  font-weight: 400;
}

.panel--navy .lead,
.section--orange .lead,
.panel--orange .lead {
  color: var(--navy-ink-soft);
}

/* Ren hvid — IKKE 92 % hvid. Den orange gradient har sit midterstop på
   #CE4317, hvor 92 % hvid kun giver ca. 4,2:1. Hvid giver 4,73:1 og holder
   dermed BRIEF §9's krav om mindst 4.5:1 hele vejen hen over gradienten. */
.section--orange .lead,
.panel--orange .lead {
  color: #fff;
}

/* --- .section-head — overskriftsblok øverst i en sektion ------------------ */
.section-head {
  margin-bottom: var(--space-7);
  max-width: 62ch;
}

.section-head--center {
  margin-inline: auto;
  text-align: center;
}

.section-head > * + * {
  margin-top: var(--space-3);
}

/* --- .btn ---------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 48px;
  padding: 0.75rem 1.5rem;
  border: 2px solid transparent;
  border-radius: var(--radius-btn);
  background-color: transparent;
  color: var(--navy);
  font-family: inherit;
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: 0.01em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition:
    background-color var(--t-fast),
    border-color var(--t-fast),
    color var(--t-fast),
    box-shadow var(--t-fast),
    transform var(--t-fast);
}

/* Versal-variant (fx „KONTAKT OS FOR RÅDGIVNING"). */
.btn--caps {
  font-size: 0.8125rem;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.btn--lg {
  min-height: 56px;
  padding: 1rem 2rem;
  font-size: 1rem;
}

.btn--sm {
  min-height: 40px;
  padding: 0.5rem 1rem;
  font-size: 0.875rem;
}

.btn--block {
  width: 100%;
}

/* Primær — accentfarvet flade. */
.btn--primary {
  background-color: var(--accent);
  border-color: var(--accent);
  color: #fff;
  box-shadow: var(--shadow-sm);
}

.btn--primary:hover {
  background-color: var(--accent-hover);
  border-color: var(--accent-hover);
  color: #fff;
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

.btn--primary:active {
  background-color: var(--accent-hover);
  box-shadow: var(--shadow-xs);
  transform: translateY(0);
}

/* Sekundær — outline i navy. */
.btn--secondary {
  background-color: transparent;
  border-color: var(--navy);
  color: var(--navy);
}

.btn--secondary:hover {
  background-color: var(--navy);
  border-color: var(--navy);
  color: #fff;
  transform: translateY(-1px);
}

.btn--secondary:active {
  background-color: var(--navy-900);
  border-color: var(--navy-900);
  color: #fff;
  transform: translateY(0);
}

/* Ghost — lav vægt, til sekundære handlinger i tekstflow. */
.btn--ghost {
  min-height: 44px;
  padding-inline: var(--space-3);
  border-color: transparent;
  color: var(--accent-ink);
  text-decoration: underline;
  text-decoration-color: rgba(22, 108, 19, 0.35);
}

.btn--ghost:hover {
  background-color: var(--accent-soft);
  color: var(--accent-hover);
  text-decoration-color: currentColor;
}

.btn--ghost:active {
  background-color: var(--accent-soft);
}

/* Lys knap til brug oven på mørke paneler. */
.btn--light {
  background-color: #fff;
  border-color: #fff;
  color: var(--navy-900);
  box-shadow: var(--shadow-sm);
}

.btn--light:hover {
  background-color: var(--lime-soft);
  border-color: var(--lime-soft);
  color: var(--navy-900);
  transform: translateY(-1px);
}

.btn--light:active {
  transform: translateY(0);
}

/* Deaktiveret. */
.btn:disabled,
.btn[aria-disabled="true"],
.btn.is-disabled {
  opacity: 0.5;
  box-shadow: none;
  transform: none;
  cursor: not-allowed;
  pointer-events: none;
}

.btn__icon {
  width: 1.15em;
  height: 1.15em;
  flex: 0 0 auto;
}

/* --- .link / .link-arrow -------------------------------------------------- */
.link {
  color: var(--accent-ink);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: rgba(22, 108, 19, 0.4);
}

.link:hover {
  color: var(--accent-hover);
  text-decoration-color: currentColor;
}

.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  color: var(--accent-ink);
  font-size: 0.9375rem;
  font-weight: 700;
  text-decoration: none;
}

.link-arrow::after {
  content: "";
  width: 0.45em;
  height: 0.45em;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: rotate(45deg);
  transition: transform var(--t-fast);
}

.link-arrow:hover {
  color: var(--accent-hover);
}

.link-arrow:hover::after {
  transform: rotate(45deg) translate(2px, -2px);
}

/* --- .card --------------------------------------------------------------- */
.card {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: box-shadow var(--t), border-color var(--t), transform var(--t);
}

.card--pad {
  padding: clamp(1.25rem, 3vw, 2rem);
}

.card--flat {
  border-color: transparent;
  background-color: var(--surface);
  box-shadow: var(--shadow-sm);
}

.card--soft {
  background-color: var(--accent-soft);
  border-color: transparent;
}

.card--ghost {
  background-color: transparent;
  border-color: var(--line);
}

/* Klikbart kort — hele kortet bliver aktivt via .card__link-stretch. */
.card--link:hover {
  border-color: rgba(26, 29, 86, 0.18);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.card--link:focus-within {
  border-color: var(--navy);
  box-shadow: var(--shadow-md);
}

.card__media {
  position: relative;
  overflow: hidden;
  background-color: var(--bg);
}

.card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  aspect-ratio: var(--card-ratio, 4 / 3);
  transition: transform var(--t-slow);
}

.card--link:hover .card__media img {
  transform: scale(1.03);
}

.card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: clamp(1.25rem, 3vw, 1.75rem);
  flex: 1 1 auto;
}

.card--pad > .card__body {
  padding: 0;
}

.card__title {
  color: var(--navy);
  font-size: 1.125rem;
  font-weight: 700;
}

.card__text {
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.65;
}

.card__footer {
  margin-top: auto;
  padding-top: var(--space-2);
}

/* Strækker et link ud over hele kortet uden href="#"-tricks. */
.card__link-stretch::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
}

/* --- .step-card — nummererede trin --------------------------------------- */
.step-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: clamp(1.5rem, 3vw, 2rem);
  background-color: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  transition: box-shadow var(--t), transform var(--t);
}

.step-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.step-card__num {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  color: var(--accent-ink);
  font-size: 1.375rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1;
}

.step-card__num::after {
  content: "";
  width: 2.25rem;
  height: 3px;
  border-radius: 2px;
  background-color: var(--accent-underline);
}

.step-card__title {
  color: var(--navy);
  font-size: 1.125rem;
  font-weight: 700;
}

.step-card__text {
  color: var(--muted);
  font-size: 0.9375rem;
}

/* --- .media-card — billede med overlappende kort -------------------------- */
.media-card {
  position: relative;
  display: block;
}

.media-card__frame {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-xl);
  background-color: var(--surface);
  box-shadow: var(--shadow-lg);
}

.media-card__frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  aspect-ratio: var(--media-ratio, 4 / 3);
}

/* Overlay-kortet ligger UNDER billedet på mobil og oven på det fra 768px. */
.media-card__overlay {
  position: relative;
  margin-top: var(--space-4);
  max-width: 100%;
  padding: clamp(1.125rem, 2.5vw, 1.5rem);
  border-radius: var(--radius-lg);
  background-color: var(--surface);
  box-shadow: var(--shadow-lg);
}

.media-card__overlay--navy {
  background: var(--gradient-navy);
  color: #fff;
  box-shadow: var(--shadow-navy);
  --focus-ring: #F2F8DF;
}

.media-card__overlay--navy .media-card__title {
  color: #fff;
}

.media-card__overlay--navy .media-card__text {
  color: var(--navy-ink-soft);
}

.media-card__title {
  color: var(--navy);
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.125rem);
  font-weight: 700;
  line-height: 1.4;
}

.media-card__text {
  margin-top: var(--space-2);
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.6;
}

.media-card__overlay-inner {
  display: flex;
  gap: var(--space-4);
  align-items: flex-start;
}

/* Kortets overkant styres af --overlay-top
   -----------------------------------------------------------------------------
   Billederne er produktbilleder, og kortet må ikke lægge sig hen over selve
   produktet. Men det skal heller ikke svæve løsrevet under billedet.

   Løsningen er at styre præcis HVOR kortets overkant skærer billedet.
   `top` i procent regnes af .media-card, hvis højde er billedets højde — så
   --overlay-top: 78% betyder "overkanten ligger 78 % nede i billedet",
   uanset hvor høj teksten i kortet er. Med en forskydning målt på kortets egen
   højde ville et langt kort skære højere op i billedet end et kort kort.

   Skærelinjerne er målt i billederne, ikke skønnet:

     kvinde-foran-pc.jpg   55-65 % bordplade og hænder · 70 % stolens sæde
                           78-85 % stolens 5-stjernede fod · 86-100 % fødder
                           --overlay-top: 78%  -> hen over stolefod og fødder;
                           sæde, ryglæn, hæve-sænkebord og skærm står frit

     personalerum.jpg      LODRET  68-80 % fodmassagerens lægdel
                           80-92 % fodkassen · 88-100 % gulv
                           VANDRET 17-40 % fodmassageren · 40-58 % sofabord
                           40-62 % frit gulv · 62-72 % sneakers · 70-100 % sofa

                           Massageren fylder venstre side. Et venstrestillet kort
                           kan derfor ikke gå fri, uanset skærelinjen. Kortet er
                           flyttet til --br og bredden begrænset, så dets
                           VENSTREKANT lander til højre for 40 %:
                             --overlay-top: 78%
                             --overlay-w: 300px  --overlay-w-pct: 54%

   Ændrer du teksten i et kort, ændrer skærelinjen sig ikke — kun hvor langt
   kortet hænger ned under billedet. Se docs/DESIGN.md for målemetoden. */

@media (min-width: 768px) and (max-width: 899.98px), (min-width: 1100px) {
  .media-card__overlay {
    position: absolute;
    z-index: 2;
    margin-top: 0;
    top: var(--overlay-top, 78%);
    bottom: auto;
    /* Bredden er styrbar pr. kort, fordi den afgør hvor langt kortets
       modsatte kant rækker ind i billedet. Se --overlay-w i markupen. */
    width: min(var(--overlay-w, 420px), var(--overlay-w-pct, 72%));
    padding: clamp(1rem, 2vw, 1.375rem);
  }

  .media-card__overlay--bl {
    left: var(--space-4);
  }

  .media-card__overlay--br {
    right: var(--space-4);
  }

  /* Plads til den del af kortet der hænger ned under billedet. */
  .media-card:has(.media-card__overlay--bl),
  .media-card:has(.media-card__overlay--br) {
    margin-bottom: clamp(4rem, 7vw, 7rem);
  }
}

@media (min-width: 1100px) {
  .media-card__overlay--bl {
    left: calc(var(--space-4) * -1);
  }

  .media-card__overlay--br {
    right: calc(var(--space-4) * -1);
  }
}

/* --- .icon-circle / .icon-line -------------------------------------------- */
.icon-circle {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: var(--icon-size, 48px);
  height: var(--icon-size, 48px);
  border-radius: 50%;
  overflow: hidden;
}

.icon-circle img,
.icon-circle svg {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.icon-circle--sm {
  --icon-size: 40px;
}

.icon-circle--md {
  --icon-size: 48px;
}

.icon-circle--lg {
  --icon-size: 64px;
}

.icon-circle--xl {
  --icon-size: 72px;
}

/* Hvid ring bag et farvet cirkelikon (fx grønne ikoner på orange flade). */
.icon-circle--ring {
  background-color: #fff;
  box-shadow: var(--shadow-sm);
  padding: 4px;
}

/* Lys accentcirkel til stregikoner (fx bladet i det hvide kort). */
.icon-circle--soft {
  background-color: var(--accent-soft);
  padding: 10px;
}

.icon-circle--white {
  background-color: #fff;
  padding: 10px;
  box-shadow: var(--shadow-sm);
}

/* Stregikon uden cirkel — højden styres med --icon-line-h. */
.icon-line {
  display: block;
  width: auto;
  height: var(--icon-line-h, 56px);
}

.icon-line--sm {
  --icon-line-h: 40px;
}

.icon-line--lg {
  --icon-line-h: 72px;
}

/* --- .feature — ikon + titel + tekst i vandret liste ---------------------- */
.feature {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-4);
  align-items: start;
}

.feature__body > * + * {
  margin-top: var(--space-1);
}

.feature__title {
  color: var(--navy);
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.35;
}

.feature__text {
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.6;
}

.feature-list {
  display: grid;
  gap: var(--space-5);
}

.panel--navy .feature__title,
.section--orange .feature__title,
.panel--orange .feature__title {
  color: #fff;
}

.panel--navy .feature__text {
  color: var(--navy-ink-soft);
}

.section--orange .feature__text,
.panel--orange .feature__text {
  color: #fff;
}

/* --- .icon-text — lille ikon + tekstlinje (kontakt, footer) --------------- */
.icon-text {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-3);
  align-items: start;
}

.icon-text__icon {
  width: 20px;
  height: 20px;
  margin-top: 0.28em;
  color: var(--accent-ink);
  flex: 0 0 auto;
}

.icon-text__body {
  min-width: 0;
}

/* --- .contact-label — etiket over en kontaktoplysning --------------------- */
/* Lille versal etiket („Telefon", „E-mail", „Adresse") inde i .icon-text__body
   på kontaktsiden. Navy — ikke accentgrøn — så den ikke konkurrerer med den
   grønne .link nedenunder. */
.contact-label {
  display: block;
  color: var(--navy);
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

/* --- .contact-address — <address> i sidens indhold ------------------------ */
/* Browserens standard-kursiv slås fra, så adressen matcher resten af
   brødteksten (samme greb som .footer-address i footeren). */
/* Adressen skal stå som telefon og e-mail i samme kort: samme skriftstørrelse
   og samme vægt. Farven forbliver navy og ikke accentgrøn — grøn betyder link
   på denne side, og adressen er ikke klikbar. */
.contact-address {
  color: var(--navy);
  font-size: 1rem;
  font-weight: 600;
  font-style: normal;
  line-height: 1.6;
}

/* --- .value-row — hero'ens tre værdipunkter ------------------------------- */
.value-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
}

.value-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-3);
}

.value-item__text {
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.5;
  max-width: 18ch;
}

/* Tre kolonner bevares helt ned til ca. 420px (BRIEF §5.1). */
@media (min-width: 420px) {
  .value-row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-4);
  }
}

@media (min-width: 900px) {
  .value-row {
    gap: var(--space-5);
  }
}

/* --- .panel — indrykkede farvede paneler ---------------------------------- */
.panel {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-2xl);
  padding: clamp(1.5rem, 4vw, 3rem);
}

.panel--navy {
  background: var(--gradient-navy);
  color: #fff;
  box-shadow: var(--shadow-navy);
  --focus-ring: #F2F8DF;
}

/* Blød grøn glød i panelets højre kant — erstatter plantefotoet i referencen. */
.panel--navy::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--panel-glow);
  pointer-events: none;
}

.panel--navy > * {
  position: relative;
  z-index: 1;
}

.panel--orange {
  background: var(--gradient-orange);
  color: #fff;
  box-shadow: var(--shadow-md);
  --focus-ring: #F2F8DF;
}

.panel--surface {
  background-color: var(--surface);
  border: 1px solid var(--line);
  box-shadow: var(--shadow-sm);
}

.panel--navy h1,
.panel--navy h2,
.panel--navy h3,
.panel--navy h4,
.panel--orange h1,
.panel--orange h2,
.panel--orange h3,
.panel--orange h4 {
  color: #fff;
}

.panel__lead {
  margin-top: var(--space-4);
  max-width: 46ch;
  color: var(--navy-ink-soft);
  font-size: 1rem;
  line-height: 1.6;
}

.panel--orange .panel__lead {
  color: #fff;
}

/* Fremhævet afsluttende udsagn i et panel (fx afslutningsblokken på
   om-iq-active.html). Større og federe end .panel__lead, altid hvid. */
.panel__statement {
  margin-top: var(--space-3);
  max-width: 46ch;
  color: #fff;
  font-size: clamp(1.125rem, 1rem + 0.6vw, 1.375rem);
  font-weight: 700;
  line-height: 1.4;
}

/* Gitteret med de tre/fire ikonpunkter inde i et panel. */
.panel__grid {
  display: grid;
  gap: var(--space-6);
  grid-template-columns: 1fr;
}

@media (min-width: 560px) {
  .panel__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 900px) {
  .panel__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .panel__grid--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1100px) {
  .panel__grid--4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Ét punkt i et panel: centreret ikon over titel og tekst. */
.panel-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  text-align: center;
}

.panel-item__title {
  color: #fff;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.35;
}

.panel-item__text {
  color: var(--navy-ink-soft);
  font-size: 0.9375rem;
  line-height: 1.6;
  max-width: 32ch;
}

.section--orange .panel-item__text,
.panel--orange .panel-item__text {
  color: #fff;
}

/* --- .page-hero — sidehero på undersider ---------------------------------- */
.page-hero {
  background-color: var(--bg);
  padding-block: clamp(1.5rem, 4vw, 2.5rem) clamp(2.25rem, 5vw, 3.5rem);
}

.page-hero__inner > * + * {
  margin-top: var(--space-4);
}

.page-hero__title {
  max-width: 20ch;
}

/* --- .breadcrumb ---------------------------------------------------------- */
.breadcrumb {
  font-size: 0.875rem;
  color: var(--muted);
}

.breadcrumb ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}

.breadcrumb li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.breadcrumb li + li::before {
  content: "";
  width: 0.35em;
  height: 0.35em;
  border-top: 1.5px solid var(--muted);
  border-right: 1.5px solid var(--muted);
  transform: rotate(45deg);
  opacity: 0.55;
}

.breadcrumb a {
  color: var(--navy-600);
  text-decoration: underline;
  text-decoration-color: rgba(59, 65, 128, 0.3);
}

.breadcrumb a:hover {
  color: var(--accent-ink);
}

.breadcrumb [aria-current="page"] {
  color: var(--muted);
  font-weight: 500;
}

/* --- .bullet-list — punktliste med accentmærke ---------------------------- */
.bullet-list {
  display: grid;
  gap: var(--space-4);
  list-style: none;
  margin: 0;
  padding: 0;
}

.bullet-list li {
  position: relative;
  padding-left: 2rem;
  color: var(--ink);
}

.bullet-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.62em;
  width: 0.7rem;
  height: 0.7rem;
  border-radius: 50%;
  background-color: var(--accent);
  box-shadow: 0 0 0 4px var(--accent-soft);
}

/* --- .fact-box — nøgterne firmaoplysninger -------------------------------- */
.fact-box {
  padding: clamp(1.25rem, 3vw, 2rem);
  background-color: var(--surface);
  border: 1px solid var(--line);
  border-left: 4px solid var(--accent-underline);
  border-radius: var(--radius-lg);
}

/* --- .brand-mark — IQ active-logoet som afsender i et kort --------------- */
/* Bruges både i faktaboksen på Om-siden og i kontaktkortet. Står øverst,
   adskilt fra indholdet af en hårfin linje. Bredden holdes beskeden, så den
   ikke konkurrerer med kortets overskrift. */
.brand-mark {
  display: block;
  width: 180px;
  max-width: 60%;
  height: auto;
  margin-bottom: var(--space-5);
  padding-bottom: var(--space-5);
  border-bottom: 1px solid var(--line);
}

.fact-box dl {
  display: grid;
  gap: var(--space-3);
  margin: 0;
}

@media (min-width: 560px) {
  .fact-box dl {
    grid-template-columns: minmax(0, 12rem) minmax(0, 1fr);
    column-gap: var(--space-5);
    row-gap: var(--space-3);
  }
}

.fact-box dt {
  color: var(--navy);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.fact-box dd {
  margin: 0;
  color: var(--ink);
}

/* --- .partner-mark — lille partnerlogo under en grafik ------------------- */
/* IQ nordic-mærket under cirkelgrafikken på Om-siden.
   Bredden er bundet til 190px, så den harmonerer med cirklens 260px og med
   brødtekstens vaegt. Uden en eksplicit bredde renderer logoet i sin fulde
   filbredde på 900px — det var netop fejlen der opstod, da klassen tidligere
   blev fjernet uden at markupen fulgte med. */
.partner-mark {
  display: block;
  width: 190px;
  max-width: 100%;
  margin: var(--space-6) auto 0;
  border-radius: var(--radius-xs);
  transition: opacity var(--t-fast);
}

.partner-mark:hover {
  opacity: 0.8;
}

.partner-mark img {
  display: block;
  width: 100%;
  height: auto;
}

/* --- .link-logo / .inline-logo — logo som del af en tekstlinje ---------- */
/* IQ nordic-logoet er selve linket i sætningen „… så klik ind på [logo]“.

   Lå før som et selvstændigt mærke under tekstblokken. Det virkede løsrevet,
   og en separat blok gav et tomrum mellem tekst og logo.

   Højden sættes i em, så logoet skalerer med teksten omkring det og bliver
   siddende på linjen når skriftstørrelsen ændrer sig. vertical-align finjusterer
   optisk mod grundlinjen — logoets bogstaver har ingen underlængder, så en
   ren baseline-justering ville få det til at ligge for højt.

   Linkets tilgængelige navn kommer fra .visually-hidden-teksten, ikke fra
   alt-teksten alene: en skærmlæser skal høre hvad linket fører til. */
.link-logo {
  display: inline-block;
  border-radius: var(--radius-xs);
  transition: opacity var(--t-fast);
}

.link-logo:hover {
  opacity: 0.75;
}

.inline-logo {
  display: inline-block;
  width: auto;
  height: 1.45em;
  vertical-align: -0.32em;
}

/* --- .cta-band — afsluttende centreret CTA -------------------------------- */
.cta-band {
  background-color: var(--surface);
  border-top: 1px solid var(--line);
  padding-block: clamp(2.75rem, 6vw, 4.5rem);
  text-align: center;
}

.cta-band__inner {
  max-width: 60ch;
  margin-inline: auto;
}

.cta-band__inner > * + * {
  margin-top: var(--space-4);
}

.cta-band .cluster {
  justify-content: center;
  margin-top: var(--space-6);
}

/* --- .pill — lille etiket ------------------------------------------------- */
.pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.35rem 0.85rem;
  border-radius: var(--radius-pill);
  background-color: var(--accent-soft);
  color: var(--accent-ink);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* --- .divider-streger — dekorativ stregdeler (kun Børnemiljø) ------------- */
.divider-streger {
  display: block;
  width: min(240px, 70%);
  height: auto;
  margin-top: var(--space-3);
}

.section-head--center .divider-streger {
  margin-inline: auto;
}

/* --- .reveal — fade/slide-in ved scroll ----------------------------------- */
/* .has-js sættes på <html> af main.js, så indhold ALDRIG skjules uden JS. */
.has-js .reveal {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity var(--t-reveal),
    transform var(--t-reveal);
  will-change: opacity, transform;
}

.has-js .reveal.is-visible {
  opacity: 1;
  transform: none;
  will-change: auto;
}

/* Får et link eller en knap inde i blokken fokus, før observeren har meldt
   tilbage, vises blokken med det samme — ellers ville tastaturfokus stå på et
   usynligt element i op mod 640 ms (WCAG 2.4.7 Focus Visible). */
.has-js .reveal:focus-within {
  opacity: 1;
  transform: none;
  transition: none;
}

.has-js .reveal--delay-1 {
  transition-delay: 90ms;
}

.has-js .reveal--delay-2 {
  transition-delay: 180ms;
}

.has-js .reveal--delay-3 {
  transition-delay: 270ms;
}


/* =============================================================================
   (g) HEADER, NAVIGATION, SØGEOVERLAY, BESKED
   ============================================================================= */

.site-header {
  position: sticky;
  top: 0;
  z-index: var(--z-header);
  background-color: var(--surface);
  border-bottom: 1px solid transparent;
  transition: box-shadow var(--t), border-color var(--t);
}

.site-header.is-scrolled {
  border-bottom-color: var(--line);
  box-shadow: var(--shadow-sm);
}

.site-header__inner {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  min-height: var(--header-h);
}

.site-logo {
  display: inline-flex;
  align-items: center;
  margin-right: auto;
  border-radius: var(--radius-xs);
  text-decoration: none;
}

.site-logo img {
  height: 36px;
  width: auto;
}

@media (min-width: 900px) {
  .site-logo img {
    height: 44px;
  }
}

/* --- Navigation ----------------------------------------------------------- */
/* Mobil: fuldhøjde-panel fra højre. Desktop (≥900px): vandret i flowet. */
.site-nav {
  position: fixed;
  top: var(--header-h);
  right: 0;
  bottom: 0;
  z-index: var(--z-nav-panel);
  width: min(22rem, 88vw);
  padding: var(--space-6) var(--space-5) var(--space-9);
  background-color: var(--surface);
  border-left: 1px solid var(--line);
  box-shadow: var(--shadow-lg);
  overflow-y: auto;
  overscroll-behavior: contain;
  transform: translateX(105%);
  visibility: hidden;
  transition:
    transform var(--t-slow),
    visibility 0s linear 420ms;
}

.site-nav.is-open {
  transform: translateX(0);
  visibility: visible;
  transition: transform var(--t-slow), visibility 0s;
}

.site-nav__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-nav__link {
  position: relative;
  display: inline-block;
  padding: var(--space-3) 0;
  color: var(--navy);
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1.3;
  text-transform: uppercase;
  text-decoration: none;
  transition: color var(--t-fast);
}

.site-nav__link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0.35rem;
  height: 3px;
  border-radius: 2px;
  background-color: var(--lime);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--t);
}

.site-nav__link:hover {
  color: var(--navy-900);
}

/* Den grønne streg vises kun ved hover og tastaturfokus — ikke som permanent
   markering af den aktuelle side. Menuen skal se ens ud på alle sider, også
   forsiden, hvor intet punkt er aktivt.

   aria-current="page" bliver siddende i markupen: skærmlæsere annoncerer
   fortsat hvilken side man er på. Kun den visuelle markering er fjernet. */
.site-nav__link:hover::after,
.site-nav__link:focus-visible::after {
  transform: scaleX(1);
}

.site-nav__ext-icon {
  display: inline-block;
  width: 0.7em;
  height: 0.7em;
  margin-left: 0.35em;
  vertical-align: baseline;
  opacity: 0.6;
}

@media (min-width: 900px) {
  .site-nav {
    position: static;
    width: auto;
    padding: 0;
    background: none;
    border: 0;
    box-shadow: none;
    overflow: visible;
    transform: none;
    visibility: visible;
    transition: none;
  }

  .site-nav__list {
    flex-direction: row;
    align-items: center;
    gap: clamp(1rem, 2.1vw, 2.1rem);
  }

  .site-nav__link {
    padding: var(--space-2) 0;
    font-size: 0.8125rem;
  }

  .site-nav__link::after {
    bottom: -0.35rem;
  }
}

/* --- Header-handlinger (søg + login) -------------------------------------- */
.header-actions {
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

.icon-btn {
  display: inline-grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 1px solid transparent;
  border-radius: var(--radius-btn);
  color: var(--navy);
  background-color: transparent;
  transition: background-color var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}

.icon-btn svg {
  width: 20px;
  height: 20px;
  pointer-events: none;
}

.icon-btn:hover {
  background-color: var(--bg);
  border-color: var(--line);
  color: var(--navy-900);
}

.icon-btn:active {
  background-color: var(--line);
}

/* --- Hamburger ------------------------------------------------------------ */
.nav-toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 44px;
  padding: 0 var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-btn);
  color: var(--navy);
  background-color: var(--surface);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: background-color var(--t-fast), border-color var(--t-fast);
}

.nav-toggle:hover {
  background-color: var(--bg);
  border-color: rgba(26, 29, 86, 0.22);
}

/* „Menu"-etiketten ved siden af stregerne. Værdierne matcher .nav-toggle, men
   er sat eksplicit, så etiketten ikke afhænger af arv fra forælderen. */
.nav-toggle__label {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: uppercase;
}

.nav-toggle__bars {
  position: relative;
  display: block;
  width: 18px;
  height: 12px;
  flex: 0 0 auto;
}

.nav-toggle__bars span {
  position: absolute;
  left: 0;
  right: 0;
  height: 2px;
  border-radius: 2px;
  background-color: currentColor;
  transition: transform var(--t), opacity var(--t-fast);
}

.nav-toggle__bars span:nth-child(1) {
  top: 0;
}

.nav-toggle__bars span:nth-child(2) {
  top: 5px;
}

.nav-toggle__bars span:nth-child(3) {
  top: 10px;
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bars span:nth-child(1) {
  transform: translateY(5px) rotate(45deg);
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bars span:nth-child(2) {
  opacity: 0;
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bars span:nth-child(3) {
  transform: translateY(-5px) rotate(-45deg);
}

@media (min-width: 900px) {
  .nav-toggle {
    display: none;
  }
}

/* --- Baggrundsslør bag mobilpanelet --------------------------------------- */
.nav-backdrop {
  position: fixed;
  inset: 0;
  z-index: calc(var(--z-nav-panel) - 1);
  background-color: rgba(0, 25, 86, 0.45);
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--t), visibility 0s linear 220ms;
}

.nav-backdrop.is-open {
  opacity: 1;
  visibility: visible;
  transition: opacity var(--t), visibility 0s;
}

@media (min-width: 900px) {
  .nav-backdrop {
    display: none;
  }
}

/* Scroll-lås når mobilpanel eller søgeoverlay er åbent. */
body.is-locked {
  overflow: hidden;
}

/* --- Søgeoverlay ---------------------------------------------------------- */
.search-overlay {
  position: fixed;
  inset: 0;
  z-index: var(--z-overlay);
  display: grid;
  align-content: start;
  justify-items: center;
  padding: clamp(4rem, 12vh, 9rem) var(--container-pad) var(--space-6);
  background-color: rgba(0, 25, 86, 0.55);
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--t), visibility 0s linear 220ms;
  --focus-ring: #F2F8DF;
}

.search-overlay.is-open {
  opacity: 1;
  visibility: visible;
  transition: opacity var(--t), visibility 0s;
}

.search-overlay__panel {
  position: relative;
  width: min(640px, 100%);
  padding: clamp(1.5rem, 4vw, 2.25rem);
  background-color: var(--surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  --focus-ring: var(--navy);
}

/* Overlayets titel er et <p> (ikke et h2): overlayet står før <main> i DOM'en,
   og et h2 dér ville gøre dokumentets første overskrift til et h2 i stedet for
   sidens h1. Dialogen navngives via aria-labelledby, som virker på ethvert
   element. Typografien sættes derfor eksplicit her. */
.search-overlay__title {
  padding-right: 3rem;
  color: var(--navy);
  font-family: var(--font-head);
  font-size: 1.25rem;
  font-weight: 800;
  line-height: 1.3;
  letter-spacing: -0.01em;
}

.search-form {
  margin-top: var(--space-4);
}

.search-form__row {
  display: grid;
  gap: var(--space-3);
}

@media (min-width: 560px) {
  .search-form__row {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: stretch;
  }
}

.search-form__input {
  width: 100%;
  min-height: 48px;
  padding: 0.7rem 1rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-btn);
  background-color: var(--surface);
  color: var(--ink);
  font-size: 1rem;
  transition: border-color var(--t-fast), box-shadow var(--t-fast);
}

.search-form__input:hover {
  border-color: rgba(26, 29, 86, 0.28);
}

.search-form__input:focus {
  border-color: var(--navy);
  box-shadow: var(--shadow-focus);
  outline: none;
}

.search-overlay__note {
  margin-top: var(--space-4);
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.6;
}

.search-overlay__note:empty {
  display: none;
}

.search-overlay__close {
  position: absolute;
  top: var(--space-3);
  right: var(--space-3);
}

/* --- Diskret besked (toast) ----------------------------------------------- */
/* Bruges til „Login kommer snart" o.l. Skjules med opacity, aldrig display,
   så role="status" bevares i tilgængelighedstræet. */
.toast {
  position: fixed;
  left: 50%;
  bottom: var(--space-5);
  z-index: var(--z-toast);
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  width: min(30rem, calc(100vw - 2rem));
  padding: var(--space-4) var(--space-4) var(--space-4) var(--space-5);
  border-radius: var(--radius-md);
  background: var(--gradient-navy);
  color: #fff;
  box-shadow: var(--shadow-navy);
  opacity: 0;
  transform: translate(-50%, 14px);
  pointer-events: none;
  transition: opacity var(--t), transform var(--t);
  --focus-ring: #F2F8DF;
}

.toast.is-visible {
  opacity: 1;
  transform: translate(-50%, 0);
  pointer-events: auto;
}

.toast__text {
  flex: 1 1 auto;
  min-width: 0;
  font-size: 0.9375rem;
  line-height: 1.55;
}

.toast__close {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  border-radius: var(--radius-sm);
  color: #fff;
  transition: background-color var(--t-fast);
}

.toast__close svg {
  width: 16px;
  height: 16px;
}

.toast__close:hover {
  background-color: rgba(255, 255, 255, 0.16);
}

/* Selve .toast skjules kun med opacity, så <p role="status"> bliver i
   tilgængelighedstræet og bliver læst op. Lukkeknappen skal derimod UD af
   tabulatorrækkefølgen, når beskeden er skjult — ellers er der et usynligt
   tabstop før <main> på alle fem sider (WCAG 2.4.7 Focus Visible). */
.toast:not(.is-visible) .toast__close {
  visibility: hidden;
}


/* =============================================================================
   (h) FOOTER
   ============================================================================= */

.site-footer {
  background-color: var(--bg);
  border-top: 1px solid var(--line);
  padding-block: clamp(2.5rem, 5vw, 4rem) var(--space-5);
}

.site-footer__grid {
  display: grid;
  gap: var(--space-7);
  grid-template-columns: 1fr;
}

@media (min-width: 560px) {
  .site-footer__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 900px) {
  .site-footer__grid {
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr) minmax(0, 0.85fr) minmax(0, 1.1fr);
    gap: var(--space-8);
  }
}

.footer-col > * + * {
  margin-top: var(--space-4);
}

.footer-logo img {
  width: 240px;
  max-width: 100%;
  height: auto;
}

.footer-logo--nordic img {
  width: 170px;
}

.footer-heading {
  color: var(--navy);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.footer-list {
  display: grid;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}

.footer-list a {
  display: inline-block;
  padding-block: 2px;
  color: var(--navy-600);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
}

.footer-list a:hover {
  color: var(--accent-ink);
  text-decoration: underline;
}

.footer-contact {
  display: grid;
  gap: var(--space-3);
  font-size: 0.9375rem;
}

.footer-contact a {
  color: var(--navy-600);
  font-weight: 600;
  text-decoration: none;
}

.footer-contact a:hover {
  color: var(--accent-ink);
  text-decoration: underline;
}

/* Adressen skal stå som telefon og e-mail i samme kolonne: samme skriftstørrelse,
   samme vægt, samme farve. Den var før --muted/vaegt 400 og faldt visuelt ud af
   rækken. Den er ikke et link, men adskiller sig stadig ved ikke at få
   understregning og farveskift ved hover. */
.footer-address {
  color: var(--navy-600);
  font-size: 0.9375rem;
  font-weight: 600;
  font-style: normal;
  line-height: 1.6;
}

.footer-note {
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.6;
  max-width: 34ch;
}

.footer-bottom {
  margin-top: clamp(2rem, 4vw, 3rem);
  padding-top: var(--space-5);
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 0.875rem;
  text-align: center;
}


/* =============================================================================
   (i) FORMULARER
   ============================================================================= */

.form {
  display: grid;
  gap: var(--space-5);
}

.form-grid {
  display: grid;
  gap: var(--space-5);
}

@media (min-width: 768px) {
  .form-grid--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.form-field {
  display: grid;
  gap: var(--space-2);
  min-width: 0;

  /* Uden dette strækker gridets rækker sig, når feltet står i samme række som
     et højere felt (fx et med hjælpetekst under inputtet). Den ekstra højde
     fordeles så ud på label-, input- og fejlrækken, og inputtet skubbes ned —
     to felter side om side kom derved ikke til at flugte.
     Med start pakkes rækkerne øverst, og alle inputs står på samme linje. */
  align-content: start;
}

.form-label {
  color: var(--navy);
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.4;
}

.form-label .form-req {
  color: var(--danger);
  font-weight: 700;
  margin-left: 0.15em;
}

.form-hint {
  color: var(--muted);
  font-size: 0.875rem;
  line-height: 1.5;
}

.form-control {
  width: 100%;
  min-height: 50px;
  padding: 0.7rem 0.95rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-btn);
  background-color: var(--surface);
  color: var(--ink);
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.5;
  transition: border-color var(--t-fast), box-shadow var(--t-fast), background-color var(--t-fast);
}

textarea.form-control {
  min-height: 9.5rem;
  resize: vertical;
}

select.form-control {
  appearance: none;
  -webkit-appearance: none;
  padding-right: 2.75rem;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--navy) 50%),
    linear-gradient(135deg, var(--navy) 50%, transparent 50%);
  background-position:
    calc(100% - 1.2rem) calc(50% + 2px),
    calc(100% - 0.85rem) calc(50% + 2px);
  background-size: 6px 6px, 6px 6px;
  background-repeat: no-repeat;
  cursor: pointer;
}

/* Gælder også søgefeltet, som er sitets eneste felt med et placeholder-attribut.
   #6F7484 på hvid giver 4,66:1 og opfylder dermed BRIEF §9. */
.form-control::placeholder,
.search-form__input::placeholder {
  color: #6F7484;
  opacity: 1;
}

.form-control:hover {
  border-color: rgba(26, 29, 86, 0.28);
}

.form-control:focus {
  border-color: var(--navy);
  box-shadow: var(--shadow-focus);
  outline: none;
}

.form-control:focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 2px;
}

.form-control:disabled {
  background-color: var(--bg);
  color: var(--muted);
  cursor: not-allowed;
}

.form-control[aria-invalid="true"] {
  border-color: var(--danger);
  background-color: var(--danger-soft);
}

.form-control[aria-invalid="true"]:focus {
  box-shadow: 0 0 0 4px rgba(179, 38, 30, 0.18);
}

/* --- .form-error — fejlbesked pr. felt ------------------------------------ */
.form-error {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  color: var(--danger);
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.45;
}

.form-error:empty {
  display: none;
}

.form-error::before {
  content: "";
  flex: 0 0 auto;
  width: 1em;
  height: 1em;
  margin-top: 0.2em;
  border-radius: 50%;
  border: 2px solid currentColor;
  background:
    linear-gradient(currentColor, currentColor) center 0.18em / 2px 0.34em no-repeat,
    linear-gradient(currentColor, currentColor) center 0.62em / 2px 2px no-repeat;
}

/* --- Samtykke-checkbox ---------------------------------------------------- */
.form-consent {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-3);
  align-items: start;
}

.form-consent input[type="checkbox"] {
  width: 1.35rem;
  height: 1.35rem;
  margin-top: 0.2rem;
  accent-color: var(--accent);
  flex: 0 0 auto;
  cursor: pointer;
}

.form-consent label {
  color: var(--ink);
  font-size: 0.9375rem;
  line-height: 1.55;
  cursor: pointer;
}

.form-consent input[aria-invalid="true"] {
  outline: 2px solid var(--danger);
  outline-offset: 3px;
}

.form-consent .form-error {
  grid-column: 1 / -1;
}

.form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  align-items: center;
}

/* --- .form-status — kvitteringsboks --------------------------------------- */
.form-status {
  padding: var(--space-5);
  border: 1px solid rgba(46, 125, 50, 0.35);
  border-left: 4px solid var(--accent);
  border-radius: var(--radius-md);
  background-color: var(--accent-soft);
  color: var(--ink);
}

.form-status__title {
  color: var(--accent-ink);
  font-size: 1.0625rem;
  font-weight: 700;
}

.form-status__text {
  margin-top: var(--space-2);
  font-size: 0.9375rem;
  line-height: 1.6;
}

.form-status a {
  color: var(--accent-ink);
  font-weight: 700;
  text-decoration: underline;
}

.form-status--error {
  border-color: rgba(179, 38, 30, 0.35);
  border-left-color: var(--danger);
  background-color: var(--danger-soft);
}

.form-status--error .form-status__title,
.form-status--error a {
  color: var(--danger);
}


/* =============================================================================
   (j) TEMA: body.theme-born — Børnemiljø
   Kun typografi, accentfarve og radius ændres. Alt andet er identisk.
   ============================================================================= */

body.theme-born {
  --font-head: "Baloo Da 2", "Inter", "Segoe UI", Arial, Helvetica, sans-serif;

  --accent: var(--orange-deep);
  --accent-hover: var(--orange-hover);
  --accent-ink: var(--orange-ink);
  --accent-soft: #FDEDE6;
  --accent-underline: var(--orange);

  --radius-lg: 20px;
  --radius-xl: 22px;
  --radius-2xl: 24px;
  --radius-3xl: 28px;
  --radius-btn: 14px;
}

body.theme-born h1,
body.theme-born h2,
body.theme-born h3 {
  font-family: var(--font-head);
  font-weight: 800;
  letter-spacing: -0.005em;
}

body.theme-born h1 {
  line-height: 1.08;
}

body.theme-born h2 {
  line-height: 1.15;
}

body.theme-born h4,
body.theme-born h5,
body.theme-born h6 {
  font-family: var(--font-body);
}

/* Nav og footer beholder Inter og navy, så sitet hænger sammen. */
body.theme-born .site-nav__link,
body.theme-born .footer-heading,
body.theme-born .footer-list a {
  font-family: var(--font-body);
}

/* Aktiv nav-understregning på Børnemiljø bliver orange. */
body.theme-born .site-nav__link::after {
  background-color: var(--orange);
}

body.theme-born .link,
body.theme-born .link-arrow {
  color: var(--accent-ink);
}

body.theme-born .step-card__num::after,
body.theme-born .fact-box {
  border-color: var(--line);
}

body.theme-born .bullet-list li::before {
  background-color: var(--orange);
  box-shadow: 0 0 0 4px var(--accent-soft);
}


/* =============================================================================
   (k) UTILITIES
   ============================================================================= */

.visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.u-text-center {
  text-align: center;
}

.u-text-left {
  text-align: left;
}

.u-center {
  margin-inline: auto;
}

.u-muted {
  color: var(--muted);
}

.u-navy {
  color: var(--navy);
}

.u-accent {
  color: var(--accent-ink);
}

.u-small {
  font-size: 0.875rem;
}

.u-bold {
  font-weight: 700;
}

.u-nowrap {
  white-space: nowrap;
}

.u-mt-0 { margin-top: 0; }
.u-mt-2 { margin-top: var(--space-2); }
.u-mt-3 { margin-top: var(--space-3); }
.u-mt-4 { margin-top: var(--space-4); }
.u-mt-5 { margin-top: var(--space-5); }
.u-mt-6 { margin-top: var(--space-6); }
.u-mt-7 { margin-top: var(--space-7); }
.u-mt-8 { margin-top: var(--space-8); }

.u-mb-0 { margin-bottom: 0; }
.u-mb-3 { margin-bottom: var(--space-3); }
.u-mb-4 { margin-bottom: var(--space-4); }
.u-mb-5 { margin-bottom: var(--space-5); }
.u-mb-6 { margin-bottom: var(--space-6); }
.u-mb-7 { margin-bottom: var(--space-7); }

.u-maxw-sm { max-width: 32ch; }
.u-maxw-md { max-width: 48ch; }
.u-maxw-lg { max-width: 64ch; }
.u-maxw-px-240 { max-width: 240px; }
.u-maxw-px-260 { max-width: 260px; }
.u-maxw-px-420 { max-width: 420px; }

.u-img-round {
  border-radius: var(--radius-xl);
  overflow: hidden;
}

.u-shadow {
  box-shadow: var(--shadow-md);
}

.u-hide-mobile {
  display: none;
}

@media (min-width: 768px) {
  .u-hide-mobile {
    display: block;
  }

  .u-hide-desktop {
    display: none;
  }
}


/* =============================================================================
   (l) PRINT
   ============================================================================= */

@media print {
  :root {
    --header-h: 0px;
  }

  body {
    background: #fff;
    color: #000;
    font-size: 11pt;
    line-height: 1.5;
  }

  h1, h2, h3, h4, h5, h6,
  .card__title,
  .feature__title,
  .footer-heading {
    color: #000;
  }

  .site-header,
  .site-nav,
  .nav-toggle,
  .nav-backdrop,
  .header-actions,
  .search-overlay,
  .toast,
  .skip-link,
  .btn,
  .cta-band,
  .breadcrumb {
    display: none !important;
  }

  .panel,
  .panel--navy,
  .panel--orange,
  .section--orange,
  .media-card__overlay,
  .media-card__overlay--navy,
  .card,
  .step-card,
  .fact-box,
  .form-status {
    background: #fff !important;
    color: #000 !important;
    border: 1px solid #999 !important;
    box-shadow: none !important;
  }

  .panel--navy::after {
    display: none !important;
  }

  .panel-item__title,
  .panel-item__text,
  .panel__lead,
  .media-card__title,
  .media-card__text,
  .lead,
  .card__text,
  .feature__text,
  .u-muted {
    color: #000 !important;
  }

  .media-card__overlay {
    position: static !important;
    width: auto !important;
    margin-top: 8pt;
  }

  .section,
  .section--loose {
    padding-block: 12pt;
  }

  a {
    color: #000;
    text-decoration: underline;
  }

  .has-js .reveal {
    opacity: 1 !important;
    transform: none !important;
  }

  .site-footer {
    border-top: 1px solid #999;
  }

  img {
    break-inside: avoid;
  }

  h2, h3 {
    break-after: avoid;
  }
}


/* =============================================================================
   (m) PREFERS-REDUCED-MOTION
   ============================================================================= */

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    transition-delay: 0s !important;
    scroll-behavior: auto !important;
  }

  .has-js .reveal,
  .has-js .reveal.is-visible {
    opacity: 1;
    transform: none;
  }

  .btn:hover,
  .card--link:hover,
  .step-card:hover {
    transform: none;
  }

  .card--link:hover .card__media img {
    transform: none;
  }
}


/* =============================================================================
   TRYKFELTER PÅ KONTAKTLINKS (mobil)
   -----------------------------------------------------------------------------
   Telefon- og e-maillinks er sidens primære handling — især på Kontakt-siden.
   Som inline-links er de undtaget WCAG 2.2 SC 2.5.8 (Target Size), men et
   trykfelt på 17–21 px er upraktisk med en tommelfinger. Vi giver dem derfor
   et reelt trykområde på små skærme uden at ændre den visuelle rytme.
   .btn er undtaget — knapper har rigeligt trykfelt i forvejen.
   ============================================================================= */

@media (max-width: 767px) {
  a[href^="tel:"]:not(.btn),
  a[href^="mailto:"]:not(.btn) {
    display: inline-block;
    padding-block: 5px;
  }
}
