/* ===== Tokens — City-K/M-E-K rød & blå ===== */
:root{
  --grund:#F8F9FB;          /* kølig hvid */
  --flade:#FFFFFF;
  --flade-2:#EDF0F5;
  --blaek:#151A22;          /* asfalt m. blåt stik */
  --blaek-2:#59657A;
  --skilt:#0D4EA3;          /* City-K blå (vejskilte-blå) */
  --skilt-hover:#0A3E82;
  --skilt-kontrast:#FFFFFF;
  --roed:#D2232A;           /* M-E-K signalrød */
  --roed-hover:#B01B21;
  --roed-lys:#D2232A;
  --linje:#D9DEE7;
  --ok:#1E7F4F;
  --moerk-flade:#151A22;    /* forbliver mørk i begge temaer */
  --moerk-tekst:#F8F9FB;
  --skygge:0 10px 30px rgba(21,26,34,.09);
}
@media (prefers-color-scheme: dark){
  :root{
    --grund:#14181F;
    --flade:#1C222C;
    --flade-2:#232B37;
    --blaek:#E8ECF2;
    --blaek-2:#9AA5B4;
    --skilt:#4A8FE0;
    --skilt-hover:#6BA5EA;
    --skilt-kontrast:#0E1521;
    --roed:#D2232A;
    --roed-hover:#E5424A;
    --roed-lys:#FF7A82;
    --linje:#303945;
    --ok:#4CC38A;
    --moerk-flade:#0B0E13;
    --moerk-tekst:#E8ECF2;
    --skygge:0 10px 30px rgba(0,0,0,.35);
  }
}
:root[data-theme="dark"]{
  --grund:#14181F; --flade:#1C222C; --flade-2:#232B37;
  --blaek:#E8ECF2; --blaek-2:#9AA5B4;
  --skilt:#4A8FE0; --skilt-hover:#6BA5EA; --skilt-kontrast:#0E1521;
  --roed:#D2232A; --roed-hover:#E5424A; --roed-lys:#FF7A82;
  --linje:#303945; --ok:#4CC38A;
  --moerk-flade:#0B0E13; --moerk-tekst:#E8ECF2;
  --skygge:0 10px 30px rgba(0,0,0,.35);
}
:root[data-theme="light"]{
  --grund:#F8F9FB; --flade:#FFFFFF; --flade-2:#EDF0F5;
  --blaek:#151A22; --blaek-2:#59657A;
  --skilt:#0D4EA3; --skilt-hover:#0A3E82; --skilt-kontrast:#FFFFFF;
  --roed:#D2232A; --roed-hover:#B01B21; --roed-lys:#D2232A;
  --linje:#D9DEE7; --ok:#1E7F4F;
  --moerk-flade:#151A22; --moerk-tekst:#F8F9FB;
  --skygge:0 10px 30px rgba(21,26,34,.09);
}

/* ===== Grundstil ===== */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} }
body{
  margin:0; background:var(--grund); color:var(--blaek);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:1.0625rem; line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
.display{
  font-family:"Bahnschrift","Avenir Next Condensed","Futura","Arial Narrow",Arial,sans-serif;
  font-weight:700; letter-spacing:.01em; line-height:1.08;
  text-wrap:balance;
}
h1,h2,h3{margin:0}
/* Dansk er fuld af lange sammensatte ord. "Undervisningsplanerne" kunne
   ikke være i en 375px-skærm og skubbede hele siden 7px ud til højre, så
   forsiden kunne rulles sidelæns på en telefon (målt 4/8).
   break-word ændrer INTET, når ordet kan være der — den træder først til,
   når der ellers ville løbe tekst ud over kanten. Orddelingen (hyphens)
   er kun på små skærme, hvor der er brug for den; den virker, fordi
   <html lang="da"> er sat, så browseren deler efter danske regler. */
h1,h2,h3,.display{overflow-wrap:break-word}
@media (max-width:700px){ h1,h2,h3,.display{hyphens:auto} }
p{margin:0}
a{color:var(--skilt)}
img,svg{max-width:100%}
:focus-visible{outline:3px solid var(--roed); outline-offset:2px; border-radius:4px}

/* Luften i siderne står som en variabel, så vandrette scrollere kan
   trække sig UD til skærmkanten igen med samme mål (se .tilbud-grid.tre).
   Ellers klippes nabokortenes flige af, og så ser det ud som om der
   ikke er mere at scrolle til. */
:root{--wrap-luft:clamp(16px,4vw,32px)}
.wrap{max-width:1120px; margin-inline:auto; padding-inline:var(--wrap-luft)}

/* =====================================================================
   ⚠️ [hidden] SKAL VINDE — ALTID
   `hidden` er kun en svag standardregel (display:block), så ENHVER
   display: i vores egen CSS overtrumfer den. Så bliver et element
   liggende synligt, selv om JavaScript har skjult det — uden fejl,
   uden advarsel.
   Det har ramt os TRE gange: admin-login 17/7, fanebladene senere, og
   6/8 lærer-vælgeren i Min kalender, som blev stående for almindelige
   lærere, fordi .a-filter har display:flex.
   Denne ene linje lukker hele kategorien. De ældre [hidden]-værn
   længere nede i filen er nu overflødige, men får lov at blive —
   de gør ingen skade og fortæller historien.
   ===================================================================== */
[hidden]{display:none !important}
section{padding-block:clamp(56px,9vw,96px)}

.eyebrow{
  display:flex; align-items:center; gap:10px;
  font-size:.8rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--skilt); margin-bottom:14px;
}
.eyebrow::before{content:""; width:26px; height:4px; border-radius:2px; background:var(--roed)}
.sektion-titel{font-size:clamp(1.7rem,3.6vw,2.5rem)}
.sektion-intro{max-width:62ch; color:var(--blaek-2); margin-top:12px}

/* ===== Skip-link ===== */
.skip{position:absolute; left:-999px; top:8px; background:var(--skilt); color:#fff; padding:10px 16px; border-radius:8px; z-index:100}
.skip:focus{left:8px}

/* ===== Topbar + nav ===== */

header.site{
  position:sticky; top:0; z-index:50;
  background:color-mix(in srgb, var(--grund) 88%, transparent);
  backdrop-filter:saturate(1.2) blur(10px);
  border-bottom:1px solid var(--linje);
}
.navrow{display:flex; align-items:center; justify-content:space-between; gap:16px; padding-block:12px}
.logo{display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--blaek)}
.logo-skilt{
  background:var(--skilt); color:#fff;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  font-weight:700; letter-spacing:.03em;
  padding:5px 10px; border-radius:8px; border:2px solid #fff;
  box-shadow:0 0 0 2px var(--skilt);
}
.logo small{display:block; font-size:.72rem; color:var(--roed-lys); font-weight:700; letter-spacing:.08em; text-transform:uppercase}
nav.hoved ul{display:flex; gap:4px; list-style:none; margin:0; padding:0}
nav.hoved a{
  display:block; padding:8px 14px; border-radius:999px;
  text-decoration:none; color:var(--blaek); font-weight:600; font-size:.95rem;
}
nav.hoved a:hover{background:var(--flade-2)}
.nav-cta{background:var(--roed); color:#fff !important}
.nav-cta:hover{background:var(--roed-hover) !important}
.burger{
  display:none; background:none; border:1px solid var(--linje); border-radius:10px;
  padding:9px 11px; cursor:pointer; color:var(--blaek);
}
.burger svg{display:block}
@media (max-width:820px){
  /* Menuknappen er hele indgangen til navigationen på telefon og tablet.
     Den var 46×36px — under de 44px, en tommelfinger har brug for. */
  .burger{display:grid; place-items:center; min-width:46px; min-height:44px}
  nav.hoved{position:absolute; left:0; right:0; top:100%; background:var(--grund); border-bottom:1px solid var(--linje); display:none; box-shadow:var(--skygge)}
  nav.hoved.aaben{display:block}
  nav.hoved ul{flex-direction:column; padding:12px clamp(16px,4vw,32px) 18px}
  nav.hoved a{padding:12px 14px; border-radius:10px; min-height:44px; display:flex; align-items:center}
}

/* ===== Hero (foto) ===== */
.hero{
  position:relative; color:#fff;
  background:
    linear-gradient(100deg, rgba(9,17,33,.93) 0%, rgba(10,32,74,.72) 48%, rgba(10,32,74,.28) 100%),
    url("../billeder/hero.jpg") center 58% / cover no-repeat, #0A204A;
  padding-block:clamp(72px,11vw,150px);
}
.hero .wrap{max-width:1120px}
.hero-indhold{max-width:640px}
.hero .eyebrow{color:#BFD4F5}
.hero h1{font-size:clamp(2.5rem,6.2vw,4.4rem); text-transform:uppercase; text-shadow:0 2px 18px rgba(5,10,25,.45)}
.hero h1 em{font-style:normal; color:#FF8A91}
.hero .lede{margin-top:18px; max-width:52ch; color:#DCE5F4; font-size:1.12rem; text-shadow:0 1px 10px rgba(5,10,25,.5)}
.cta-row{display:flex; flex-wrap:wrap; gap:12px; margin-top:30px}
.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding:14px 24px; border-radius:12px; font-weight:700; text-decoration:none;
  font-size:1.02rem; border:2px solid transparent; cursor:pointer;
  transition:transform .15s ease, background .15s ease, box-shadow .15s ease;
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn-roed{background:var(--roed); color:#fff; box-shadow:0 6px 20px rgba(210,35,42,.35)}
.btn-roed:hover{background:var(--roed-hover)}
.btn-hvid{background:rgba(255,255,255,.12); color:#fff; border-color:rgba(255,255,255,.55); backdrop-filter:blur(4px)}
.btn-hvid:hover{background:rgba(255,255,255,.22)}
.btn-blaa{background:var(--skilt); color:var(--skilt-kontrast)}
.btn-blaa:hover{background:var(--skilt-hover)}
.btn-lys{border-color:var(--linje); color:var(--blaek); background:var(--flade)}
.btn-lys:hover{border-color:var(--skilt); color:var(--skilt)}
.trust-row{display:flex; flex-wrap:wrap; gap:16px 22px; margin-top:32px; font-size:.92rem; color:#C9D6EC}
.trust-row span{display:inline-flex; align-items:center; gap:7px}
.trust-row .ok{color:#5CE0A1; font-weight:700}
.kat-raekke{display:flex; gap:10px; flex-wrap:wrap; margin-top:30px}
.kat{
  background:#fff; border:2px solid var(--skilt); color:#0D4EA3;
  border-radius:10px; padding:6px 13px; font-weight:800; font-size:1.05rem;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  letter-spacing:.04em;
}
.hero .kat{box-shadow:0 4px 14px rgba(5,10,25,.4)}

/* Hero indflyvning */
@keyframes fadeUp{from{opacity:0; transform:translateY(26px)} to{opacity:1; transform:none}}
.anim{animation:fadeUp .7s cubic-bezier(.2,.7,.3,1) both}
.anim.d1{animation-delay:.08s}
.anim.d2{animation-delay:.22s}
.anim.d3{animation-delay:.38s}
.anim.d4{animation-delay:.54s}
.anim.d5{animation-delay:.7s}
@media (prefers-reduced-motion: reduce){ .anim{animation:none} }

/* ===== Vej med kørende bil ===== */
.vej{position:relative; height:76px; background:#171B22; overflow:hidden; border-block:3px solid #262C38}
.vej::before{
  content:""; position:absolute; left:0; right:0; top:50%; height:4px; margin-top:-2px;
  background:repeating-linear-gradient(90deg, #E9EDF4 0 42px, transparent 42px 92px);
  opacity:.85;
}
.vej .bil{
  position:absolute; bottom:50%; left:0; width:92px; height:auto; margin-bottom:-5px;
  transform:translateX(-110px);
  animation:koer 15s linear infinite;
}
@keyframes koer{
  from{transform:translateX(-110px)}
  to{transform:translateX(calc(100vw + 110px))}
}
@media (prefers-reduced-motion: reduce){
  .vej .bil{animation:none; left:12%; transform:none}
}

/* ===== Info-banner ===== */
.banner{background:var(--flade); border-bottom:1px solid var(--linje); padding-block:18px}
.banner .wrap{display:flex; gap:14px; align-items:flex-start}
.banner .ikon{
  flex:none; width:38px; height:38px; border-radius:50%;
  background:var(--roed); color:#fff; display:grid; place-items:center;
  font-weight:900; font-size:1.2rem;
}
.banner strong{display:block}
.banner p{color:var(--blaek-2); font-size:.95rem}

/* ===== Kort-karrusel (uddannelser) ===== */
.karrusel{
  margin-top:36px; overflow-x:auto; -webkit-overflow-scrolling:touch;
  scrollbar-width:none; padding-block:6px;
}
.karrusel::-webkit-scrollbar{display:none}
.karrusel:focus-visible{outline:3px solid var(--roed); outline-offset:4px; border-radius:12px}
.karrusel-spor{display:flex; gap:18px; width:max-content}
.karrusel .kort{flex:0 0 280px}
/* Kørende tilstand: lukket løkke — manuel scroll slås fra, så der aldrig opstår tom plads.
   5 kort à 280px + 5 mellemrum à 18px = 1490px pr. omgang. Ret tallet, hvis der kommer flere kort. */
.karrusel.koer{overflow-x:hidden}
.karrusel.koer .karrusel-spor{animation:karrusel-rul 50s linear infinite}
.karrusel.koer:hover .karrusel-spor,
.karrusel.koer:focus-within .karrusel-spor{animation-play-state:paused}
/* ⚠️ LOOP-LÆNGDEN ER HÅRDKODET: −1490px = 5 kort à 280px + 5 mellemrum
   à 18px. BEGGE karruseller (forsiden + tilbudssiden) har præcis 5 kort.
   Tilføjer eller fjerner du et kort, SKAL tallet herunder rettes, ellers
   hopper animationen. Rulningen må ikke laves om til JavaScript —
   rAF/scrollLeft fejlede på Olivers Mac (se handoff.md). */
@keyframes karrusel-rul{
  from{transform:translateX(0)}
  to{transform:translateX(-1490px)}
}
/* --- Karrusellen på telefon: man SKAL kunne se, at der er mere ---
   Kortene var 78vw og snappede til MIDTEN. Resultatet var, at man kun
   så ét kort ad gangen, og intet røbede at der lå fire mere til højre —
   så de blev aldrig set. (Olivers fund 5/8, målt på hans egen telefon.)
   Nu snapper de til VENSTRE kant og fylder 66vw, så næste kort altid
   stikker tydeligt frem i højre side. Den flig ER hele signalet.
   Betingelsen dækker både rigtige telefoner (hover: none) OG et smalt
   vindue på en computer, så det kan efterprøves uden en telefon. */
@media (hover: none), (max-width: 760px){
  .karrusel{scroll-snap-type:x mandatory; scroll-padding-inline-start:0}
  .karrusel .kort{scroll-snap-align:start; flex-basis:min(66vw,280px)}
}
.kort{
  background:var(--flade); border:1px solid var(--linje); border-radius:16px;
  overflow:hidden; display:flex; flex-direction:column;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.kort:hover{transform:translateY(-4px); box-shadow:var(--skygge); border-color:var(--skilt)}
.kort-foto{position:relative; aspect-ratio:16/9; overflow:hidden; background:var(--flade-2)}
.kort-foto img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .35s ease}
.kort:hover .kort-foto img{transform:scale(1.05)}
.kort-foto .kat{position:absolute; left:14px; bottom:12px; box-shadow:0 3px 10px rgba(5,10,25,.35)}
.kort-krop{padding:20px 22px 22px; display:flex; flex-direction:column; gap:10px; flex:1}
.kort-krop h3{font-size:1.15rem}
.kort-krop p{color:var(--blaek-2); font-size:.95rem; flex:1}
.kort-krop a{font-weight:700; text-decoration:none; color:var(--roed-lys)}
.kort-krop a:hover{text-decoration:underline}
.kort-krop .kat{align-self:flex-start}
@media (prefers-reduced-motion: reduce){ .kort, .kort-foto img{transition:none} }

/* ===== Formular-byggeklodser =====
   ⚠️ Disse blev bygget til prisberegneren, men de bruges STADIG af
   tilmeld.html (holdvalg og pakkevalg — se `.valg.pakkevalg` længere
   nede). De må derfor IKKE fjernes, selv om beregneren er væk.
   Fanget ved oprydningen 5/8, hvor de først røg med. */
fieldset{border:0; margin:0; padding:0}
legend{font-weight:800; padding:0; margin-bottom:12px; font-size:1.02rem}
.valg-gruppe{display:grid; gap:10px; margin-bottom:26px}
.valg{
  display:flex; align-items:center; gap:12px;
  border:2px solid var(--linje); border-radius:12px; padding:12px 14px; cursor:pointer;
  background:var(--grund);
}
.valg:hover{border-color:var(--skilt)}
.valg input{accent-color:var(--roed); width:18px; height:18px; flex:none}
.valg .vn{font-weight:700}
.valg .vp{margin-left:auto; font-weight:700; color:var(--skilt); font-variant-numeric:tabular-nums; white-space:nowrap}
.valg small{display:block; color:var(--blaek-2); font-weight:400}
.valg:has(input:checked){border-color:var(--roed); background:var(--flade)}

/* ===== Vejviser: "Hvilken pakke passer til dig?" (5/8) =====
   Afløser prisberegneren. Ét spørgsmål ad gangen, store trykflader,
   og til sidst ÉN anbefaling — i stedet for en kolonne med afkrydsning.
   Bygget mobil-først: knapperne er fuld bredde og mindst 44px høje,
   fordi de fleste besøgende sidder med telefonen. */
.vejviser{
  background:var(--flade); border:1px solid var(--linje); border-radius:20px;
  box-shadow:var(--skygge); margin-top:28px; padding:clamp(20px,4vw,34px);
}

/* --- Selve spørgsmålstrinnet --- */
.vej-top{display:flex; align-items:center; justify-content:space-between; gap:12px}
.vej-taeller{font-size:.74rem; font-weight:800; letter-spacing:.11em; text-transform:uppercase; color:var(--blaek-2)}
.vej-tilbage{
  background:none; border:0; cursor:pointer; padding:6px 2px;
  font:inherit; font-size:.88rem; font-weight:700; color:var(--skilt);
}
.vej-tilbage:hover{text-decoration:underline}
.vej-bar{height:5px; border-radius:999px; background:var(--flade-2); margin:12px 0 20px; overflow:hidden}
.vej-bar-fyld{display:block; height:100%; background:var(--roed); border-radius:999px; transition:width .25s ease}
@media (prefers-reduced-motion: reduce){ .vej-bar-fyld{transition:none} }
.vej-spm{font-size:clamp(1.25rem,2.6vw,1.6rem); margin-bottom:16px}
.vej-spm:focus-visible{outline:3px solid var(--roed); outline-offset:5px; border-radius:8px}

.vej-svar{display:grid; gap:10px}
.vej-valg{
  display:block; width:100%; text-align:left; cursor:pointer;
  font:inherit; color:inherit;
  background:var(--grund); border:2px solid var(--linje); border-radius:14px;
  padding:15px 17px; min-height:56px;
  transition:border-color .15s ease, transform .12s ease, box-shadow .15s ease;
}
.vej-valg:hover{border-color:var(--skilt); transform:translateY(-1px); box-shadow:var(--skygge-blod)}
.vej-valg:focus-visible{outline:3px solid var(--roed); outline-offset:3px}
.vej-valg b{display:block; font-size:1.04rem}
.vej-valg small{display:block; margin-top:3px; color:var(--blaek-2); font-size:.9rem; line-height:1.45}
@media (prefers-reduced-motion: reduce){ .vej-valg{transition:none} .vej-valg:hover{transform:none} }

/* --- Resultatet --- */
.vej-res-maerke{
  display:inline-block; font-size:.7rem; font-weight:800; letter-spacing:.1em;
  text-transform:uppercase; padding:5px 12px; border-radius:999px;
  background:color-mix(in srgb, var(--skilt) 13%, transparent); color:var(--skilt);
}
.vej-res.bedste .vej-res-maerke{background:color-mix(in srgb, var(--roed) 13%, transparent); color:var(--roed)}
.vej-res-titel{font-size:clamp(1.5rem,3.2vw,2rem); margin-top:12px}
.vej-res-titel:focus-visible{outline:3px solid var(--roed); outline-offset:5px; border-radius:8px}
.vej-res-pris{
  display:block; margin-top:4px; color:var(--skilt);
  font-size:clamp(2rem,5vw,2.8rem); line-height:1.1;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  font-variant-numeric:tabular-nums;
}
.vej-res-hvorfor{margin-top:12px; color:var(--blaek-2); max-width:60ch}
.vej-res-liste{list-style:none; margin:16px 0 0; padding:0; display:grid; gap:8px; font-size:.96rem}
.vej-res-liste li{display:flex; gap:10px; align-items:baseline}
.vej-res-liste li::before{content:"✓"; color:var(--ok); font-weight:900; flex:none}
.vej-res-liste.gratis li::before{content:"★"; color:var(--roed)}
.vej-res-liste.gratis li{font-weight:600}
.vej-res-rabat{
  margin-top:16px; padding:14px 16px; border-radius:12px;
  background:color-mix(in srgb, var(--ok) 10%, transparent);
  border-left:4px solid var(--ok); font-size:.94rem;
}
.vej-res-ovenpaa{
  margin-top:18px; padding-top:16px; border-top:1px solid var(--linje);
}
.vej-res-ovenpaa h5{font-size:.76rem; letter-spacing:.1em; text-transform:uppercase; color:var(--blaek-2); margin:0 0 9px}
.vej-res-ovenpaa ul{list-style:none; margin:0; padding:0; display:grid; gap:7px; font-size:.9rem; color:var(--blaek-2)}
.vej-res-ovenpaa li{display:flex; gap:10px; align-items:baseline}
.vej-res-ovenpaa li::before{content:"·"; font-weight:900; flex:none; color:var(--blaek-2)}
/* Ekstra bemærkninger ud fra svarene (erhvervsaftale, "du kigger bare"…) */
.vej-res-note{
  margin-top:14px; padding:12px 15px; border-radius:12px;
  background:var(--flade-2); font-size:.93rem; color:var(--blaek-2);
}
/* Linjen om næste hold — eller om at der ikke er et */
.vej-res-hold{margin-top:16px; font-weight:700; font-size:.96rem}
.vej-res-knapper{display:flex; flex-wrap:wrap; gap:10px; margin-top:14px}
.vej-res-knapper .btn{flex:1 1 200px; justify-content:center}
.vej-igen{
  margin-top:14px; background:none; border:0; cursor:pointer; padding:8px 2px;
  font:inherit; font-size:.92rem; font-weight:700; color:var(--skilt);
}
.vej-igen:hover{text-decoration:underline}
.vej-res-finprint{margin-top:14px; font-size:.8rem; color:var(--blaek-2); opacity:.85}

@media (max-width:560px){
  .vej-res-knapper .btn{flex:1 1 100%}
}

/* ===== Holdstart ===== */
.hold-sektion{background:var(--flade-2)}
/* Nedtællingen var en flex-række, der brød om: tre kasser på første
   linje og "SEK." alene på anden — og fordi hver kasse havde flex:1,
   blev den sidste bredere end de tre andre. Det så ud som en fejl.
   Et gitter med lige kolonner kan ikke komme i den situation:
   alle fire kasser er ens, uanset hvordan de fordeler sig. */
.nedtaelling{
  display:grid; grid-template-columns:repeat(4, minmax(0,1fr));
  gap:clamp(10px,2vw,18px); margin-top:30px; max-width:620px;
}
.tid-boks{
  background:#0D4EA3; color:#fff;
  border:2px solid #fff; box-shadow:0 0 0 2px #0D4EA3, var(--skygge);
  border-radius:14px; padding:14px 10px; text-align:center; min-width:0;
}
/* På en telefon bliver fire kolonner for smalle til ordet "TIMER" —
   to rækker à to giver plads og holder kasserne præcis lige store. */
@media (max-width:560px){
  .nedtaelling{grid-template-columns:repeat(2, minmax(0,1fr)); max-width:420px}
}
.tid-boks b{
  display:block; font-size:clamp(1.8rem,4vw,2.6rem); line-height:1.1;
  font-variant-numeric:tabular-nums;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  color:#fff;
}
.tid-boks span{font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; color:#BFD4F5}
.naeste-hold-label{margin-top:26px; font-weight:700}
.hold-liste{margin-top:14px; display:grid; gap:10px}
.hold-punkt{
  display:flex; flex-wrap:wrap; align-items:center; gap:12px 16px;
  background:var(--flade); border:1px solid var(--linje); border-radius:12px; padding:14px 18px;
}
.hold-punkt .kat{padding:4px 10px; font-size:.95rem}
.hold-punkt .dato{font-weight:700}
.hold-punkt .info{color:var(--blaek-2); font-size:.92rem}
.hold-punkt .pladser{margin-left:auto; font-size:.85rem; font-weight:700; color:var(--ok)}
.hold-punkt .pladser.faa{color:var(--roed-lys)}
.hold-punkt .tilmeld-link{
  font-size:.85rem; font-weight:700; text-decoration:none;
  background:var(--roed); color:#fff; padding:6px 13px; border-radius:8px;
  white-space:nowrap;
}
.hold-punkt .tilmeld-link:hover{background:var(--roed-hover)}
/* Det er knappen, der starter en tilmelding — den skal kunne rammes med
   en tommelfinger, ikke kun med en musemarkør. 34px → 44px på telefon. */
@media (max-width:820px){
  .hold-punkt .tilmeld-link{padding:12px 16px; font-size:.92rem; min-height:44px; display:inline-flex; align-items:center}
}
.hold-note{margin-top:14px; font-size:.85rem; color:var(--blaek-2)}

/* ===== Biler (foto-galleri) ===== */
.bil-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:18px; margin-top:36px}
.bil-kort{
  position:relative; border-radius:16px; overflow:hidden; border:1px solid var(--linje);
  background:var(--flade); display:flex; flex-direction:column;
}
.bil-kort img{width:100%; aspect-ratio:4/3; object-fit:cover; display:block; transition:transform .35s ease}
.bil-kort:hover img{transform:scale(1.04)}
.bil-tekst{padding:16px 18px 18px}
.bil-tekst h3{font-size:1.05rem; margin-bottom:4px}
.bil-tekst p{color:var(--blaek-2); font-size:.92rem}
.chips{display:flex; flex-wrap:wrap; gap:6px; margin-top:10px}
.chip{font-size:.78rem; font-weight:700; padding:4px 10px; border-radius:999px; background:var(--flade-2); color:var(--blaek-2)}
.chip.el{background:var(--ok); color:#fff}
.chip.roed{background:var(--roed); color:#fff}
@media (prefers-reduced-motion: reduce){ .bil-kort img{transition:none} }

/* ===== Om skolen ===== */
.om-grid{display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,60px); align-items:center; margin-top:10px}
@media (max-width:760px){ .om-grid{grid-template-columns:1fr} }
.om-tekst p{color:var(--blaek-2); margin-top:14px; max-width:58ch}
.om-tekst p strong{color:var(--blaek)}
.generation{display:flex; gap:0; margin-top:28px; align-items:center}
.gen-punkt{text-align:center; flex:1}
.gen-punkt .prik{width:14px; height:14px; border-radius:50%; background:var(--roed); margin:0 auto 8px}
.gen-punkt b{display:block; font-size:1rem}
.gen-punkt span{font-size:.82rem; color:var(--blaek-2)}
.gen-linje{flex:1.2; height:0; border-top:3px dashed var(--skilt); margin-bottom:34px}
.dkl-kort{
  background:var(--flade); border:1px solid var(--linje); border-radius:16px; padding:26px;
  box-shadow:var(--skygge); border-top:4px solid var(--roed);
}
.dkl-kort h3{font-size:1.1rem; margin-bottom:8px}
.dkl-kort p{color:var(--blaek-2); font-size:.95rem}
.dkl-kort ul{margin:14px 0 0; padding:0; list-style:none; display:grid; gap:9px; font-size:.95rem}
.dkl-kort li{display:flex; gap:9px; align-items:baseline}
.dkl-kort li::before{content:"✓"; color:var(--ok); font-weight:900}

/* ===== FAQ ===== */
.faq-liste{margin-top:32px; display:grid; gap:12px; max-width:820px}
details.faq{background:var(--flade); border:1px solid var(--linje); border-radius:14px; overflow:hidden}
details.faq[open]{border-color:var(--roed)}
details.faq summary{
  cursor:pointer; padding:18px 20px; font-weight:700; list-style:none;
  display:flex; justify-content:space-between; align-items:center; gap:14px;
}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{
  content:"+"; font-size:1.5rem; font-weight:400; color:var(--roed-lys);
  transition:transform .18s ease; line-height:1;
}
details.faq[open] summary::after{transform:rotate(45deg)}
details.faq .svar{padding:0 20px 20px; color:var(--blaek-2); max-width:65ch}
@media (prefers-reduced-motion: reduce){ details.faq summary::after{transition:none} }

/* ===== Kontakt ===== */
.kontakt-grid{display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,60px); margin-top:36px}
@media (max-width:760px){ .kontakt-grid{grid-template-columns:1fr} }
.kontakt-info{display:grid; gap:18px; align-content:start}
.k-punkt{display:flex; gap:14px; align-items:flex-start}
/* Ikonerne var typografiske tegn (☎ ✉ ⌖). På iPhone tegner systemet dem
   som farvede emoji — det så uprofessionelt ud, og det var ikke til at
   styre med CSS. Nu er de SVG-streger, der arver farven fra kassen. */
.k-punkt .ki{
  flex:none; width:42px; height:42px; border-radius:12px; background:var(--flade-2);
  display:grid; place-items:center; color:var(--roed-lys);
}
.k-punkt .ki svg{display:block}
.k-punkt b{display:block}
.k-punkt a{text-decoration:none; font-weight:600}
.k-punkt a:hover{text-decoration:underline}
.k-punkt span{color:var(--blaek-2); font-size:.92rem}
form.kontakt{background:var(--flade); border:1px solid var(--linje); border-radius:16px; padding:26px; display:grid; gap:14px; border-top:4px solid var(--skilt)}
form.kontakt label{font-weight:700; font-size:.92rem; display:grid; gap:6px}
form.kontakt input, form.kontakt textarea{
  font:inherit; padding:11px 13px; border-radius:10px; border:1.5px solid var(--linje);
  background:var(--grund); color:var(--blaek); width:100%;
}
form.kontakt input:focus, form.kontakt textarea:focus{border-color:var(--skilt); outline:none}
form.kontakt textarea{resize:vertical; min-height:110px}
.form-note{font-size:.8rem; color:var(--blaek-2)}

/* ===== Footer ===== */
footer.site{background:var(--moerk-flade); color:var(--moerk-tekst); padding-block:44px 28px; border-top:3px solid var(--roed)}
footer.site .wrap{display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:32px}
@media (max-width:760px){ footer.site .wrap{grid-template-columns:1fr} }
footer.site h4{margin:0 0 10px; font-size:.85rem; letter-spacing:.12em; text-transform:uppercase; opacity:.65}
footer.site ul{list-style:none; margin:0; padding:0; display:grid; gap:7px; font-size:.95rem}
footer.site a{color:inherit; text-decoration:none}
footer.site a:hover{text-decoration:underline}
/* Footeren er en lodret stak links på telefonen. De var 18px høje med
   14px imellem — man rammer nabolinjen lige så let som den, man sigter
   efter. Linjerne får derfor deres egen trykflade i stedet. */
/* Grænsen er 820px — den samme, hvor burgermenuen dukker op. Det er dér,
   layoutet skifter fra "mus" til "finger", og så skal ALLE trykflader
   følge med, ikke kun dem på telefonen. */
@media (max-width:820px){
  footer.site ul{gap:2px}
  footer.site ul a{display:flex; align-items:center; min-height:44px; padding:2px 0}
}
.bund-linje{border-top:1px solid rgba(255,255,255,.15); margin-top:36px; padding-top:18px; font-size:.82rem; opacity:.6; display:flex; flex-wrap:wrap; gap:8px 24px; justify-content:space-between}

/* ===== Reveal ===== */
.reveal{opacity:0; transform:translateY(18px); transition:opacity .5s ease, transform .5s ease}
.reveal.vist{opacity:1; transform:none}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1; transform:none; transition:none}
}

/* ===== Undersider ===== */
.side-hero{
  color:#fff; padding-block:clamp(44px,7vw,84px);
  background:
    linear-gradient(100deg, rgba(9,17,33,.94) 0%, rgba(10,32,74,.80) 55%, rgba(10,32,74,.55) 100%),
    url("../billeder/hero.jpg") center 58% / cover no-repeat, #0A204A;
}
.side-hero .eyebrow{color:#BFD4F5}
.side-hero h1{font-size:clamp(2.1rem,4.6vw,3.4rem); text-transform:uppercase; text-shadow:0 2px 14px rgba(5,10,25,.45)}
.side-hero .lede{margin-top:12px; max-width:56ch; color:#DCE5F4; text-shadow:0 1px 8px rgba(5,10,25,.5)}
nav.hoved a[aria-current="page"]{background:var(--flade-2)}

.udd-blok{
  display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(24px,4vw,56px);
  align-items:start; padding-block:clamp(40px,6vw,72px); border-bottom:1px solid var(--linje);
}
.udd-blok:last-of-type{border-bottom:0}
@media (max-width:820px){ .udd-blok{grid-template-columns:1fr} }
.udd-blok h2{font-size:clamp(1.5rem,3vw,2.1rem)}
.udd-tekst > p{color:var(--blaek-2); margin-top:12px; max-width:58ch}
.udd-foto{border-radius:16px; overflow:hidden; border:1px solid var(--linje); box-shadow:var(--skygge)}
.udd-foto img{width:100%; display:block; aspect-ratio:4/3; object-fit:cover}

.fakta{background:var(--flade); border:1px solid var(--linje); border-radius:12px; padding:18px 22px; margin-top:20px}
.fakta h3{font-size:.85rem; letter-spacing:.12em; text-transform:uppercase; color:var(--skilt); margin-bottom:10px}
.fakta ul{list-style:none; margin:0; padding:0; display:grid; gap:8px; font-size:.95rem}
.fakta li{display:flex; gap:9px; align-items:baseline}
.fakta li::before{content:"✓"; color:var(--ok); font-weight:900}
/* Prøvepunkterne i "Dit forløb" bar altid et grønt flueben, fordi det
   kom fra reglen ovenfor — også når prøven kun var booket, og også når
   den slet ikke var det. Markøren fortæller nu sandheden.
   (Olivers fund 5/8. Kræver sql/min-side-proeveresultat.sql, som
   sender feltet `resultat` med til eleven.) */
.fakta li.proeve-punkt.afventer::before{content:"✕"; color:var(--blaek-2)}
.fakta li.proeve-punkt.booket::before{content:"✕"; color:var(--roed-lys)}
.fakta li.proeve-punkt.bestaaet::before{content:"✓"; color:var(--ok)}
.fakta li.proeve-punkt.afventer{color:var(--blaek-2)}

.privat-liste{margin:12px 0 0; padding-left:20px; display:grid; gap:9px; font-size:1rem; line-height:1.55}
.privat-liste li{padding-left:4px}
.privat-liste li::marker{color:var(--skilt)}

.trin{list-style:none; counter-reset:trin; margin:20px 0 0; padding:0; display:grid; gap:12px}
.trin li{display:flex; gap:12px; align-items:flex-start; counter-increment:trin}
.trin li::before{
  content:counter(trin); flex:none; width:28px; height:28px; border-radius:9px;
  background:var(--skilt); color:#fff; font-weight:800; font-size:.9rem;
  display:grid; place-items:center; margin-top:2px;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
}
.trin b{display:block}
.trin li span{color:var(--blaek-2); font-size:.93rem}

.cta-baand{background:linear-gradient(120deg, #0D4EA3, #093A7C); color:#fff; padding-block:clamp(40px,6vw,64px)}
.cta-baand .wrap{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:18px}
.cta-baand h2{font-size:clamp(1.4rem,3vw,2rem)}
.cta-baand p{color:#C9D6EC; margin-top:6px; max-width:52ch}

.tider{width:100%; border-collapse:collapse; margin-top:8px; font-size:.95rem}
.tider td{padding:9px 0; border-bottom:1px solid var(--linje)}
.tider tr:last-child td{border-bottom:0}
.tider td:last-child{text-align:right; font-weight:600; font-variant-numeric:tabular-nums}

/* ===== Undervisningsplaner (kort m. PDF + Fstyr-link) ===== */
.plan-liste{display:grid; gap:14px; margin-top:32px}
.plan-kort{
  display:flex; gap:18px; align-items:flex-start;
  background:var(--flade); border:1px solid var(--linje); border-radius:16px;
  padding:22px; box-shadow:var(--skygge-blod); border-left:4px solid var(--skilt);
}
@media (max-width:560px){ .plan-kort{flex-direction:column; gap:12px} }
.plan-kat{flex:none}
.plan-kat .kat{font-size:1.15rem; padding:8px 15px}
.plan-krop{flex:1; min-width:0}
.plan-krop h3{font-size:1.2rem; font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif}
.plan-krop p{color:var(--blaek-2); font-size:.95rem; margin-top:6px; max-width:60ch}
.plan-knapper{display:flex; flex-wrap:wrap; align-items:center; gap:12px 20px; margin-top:16px}
.plan-knapper .btn{padding:11px 20px; font-size:.95rem}
.plan-link{font-weight:700; font-size:.92rem; text-decoration:none; color:var(--roed-lys)}
.plan-link:hover{text-decoration:underline}

/* ===== Modulplan (tidslinje) ===== */
.moduler{list-style:none; margin:24px 0 0; padding:0; position:relative}
.moduler::before{content:""; position:absolute; left:17px; top:10px; bottom:10px; border-left:3px dashed var(--linje)}
.modul{position:relative; padding:0 0 24px 54px}
.modul:last-child{padding-bottom:0}
.modul .m-nr{
  position:absolute; left:0; top:0; width:36px; height:36px;
  background:var(--skilt); color:#fff; border:2px solid #fff;
  box-shadow:0 0 0 2px var(--skilt); border-radius:10px;
  display:grid; place-items:center; font-weight:800; font-size:.95rem;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
}
.modul b{display:block; font-size:1.02rem; padding-top:5px}
.modul p{color:var(--blaek-2); font-size:.93rem; margin-top:3px; max-width:52ch}
.modul .m-tags{display:flex; gap:6px; flex-wrap:wrap; margin-top:8px}
.modul.milepael .m-nr{background:var(--roed); box-shadow:0 0 0 2px var(--roed)}
.modul.milepael b{color:var(--roed-lys); text-transform:uppercase; letter-spacing:.06em; font-size:.95rem}

.aften-tabel{width:100%; border-collapse:collapse; font-size:.93rem; margin-top:4px}
.aften-tabel td{padding:9px 10px 9px 0; border-bottom:1px solid var(--linje); vertical-align:top; color:var(--blaek-2)}
.aften-tabel tr:last-child td{border-bottom:0}
.aften-tabel td:first-child{white-space:nowrap; font-weight:700; width:1%; color:var(--blaek)}
.aften-tabel .fase td{font-weight:700; color:var(--skilt); text-transform:uppercase; letter-spacing:.08em; font-size:.8rem; padding-top:14px}

/* ===== Beregner: dropdowns + kompakte tilvalg ===== */
.vaelger{
  width:100%; font:inherit; font-weight:600; font-size:.98rem;
  padding:11px 42px 11px 14px;
  border:2px solid var(--linje); border-radius:12px;
  background-color:var(--grund); color:var(--blaek);
  appearance:none; -webkit-appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%237A8598' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 15px center;
}
.vaelger:hover{border-color:var(--skilt)}
.vaelger:focus{outline:none; border-color:var(--skilt)}
.vaelger-note{margin-top:8px; font-size:.85rem; color:var(--blaek-2)}

.valg-gruppe.kompakt{gap:8px}
.valg-gruppe.kompakt .valg{padding:8px 12px; border-width:1.5px; border-radius:10px}
.valg-gruppe.kompakt .vn{font-weight:600; font-size:.95rem}
.valg-gruppe.kompakt .vn small{font-size:.8rem}

/* ===== Egen dropdown (JS erstatter native <select> — ens i alle browsere) ===== */
.dd{position:relative}
.dd select{display:none}
.dd-knap{text-align:left; display:block}
.dd-knap .dd-tekst{display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.dd.aaben .dd-knap{border-color:var(--skilt)}
.dd-liste{
  position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:40;
  background:var(--flade); border:2px solid var(--skilt); border-radius:12px;
  box-shadow:var(--skygge); padding:6px; margin:0; list-style:none;
  max-height:300px; overflow:auto; display:none;
}
.dd.aaben .dd-liste{display:block; animation:dd-ind .16s ease}
@keyframes dd-ind{from{opacity:0; transform:translateY(-6px)} to{opacity:1; transform:none}}
@media (prefers-reduced-motion: reduce){ .dd.aaben .dd-liste{animation:none} }
.dd-liste li{
  padding:10px 12px; border-radius:8px; cursor:pointer;
  font-weight:600; font-size:.95rem; line-height:1.4;
  display:flex; justify-content:space-between; align-items:baseline; gap:10px;
}
.dd-liste li:hover, .dd-liste li.aktiv{background:var(--flade-2)}
.dd-liste li:focus{outline:none}
.dd-liste li[aria-selected="true"]{color:var(--skilt)}
.dd-liste li[aria-selected="true"]::after{content:"✓"; font-weight:900; flex:none}

/* ===== SkoleHjælp: chat-widget (lokal — ingen AI, ingen data ud af huset) ===== */
.bot-knap{
  position:fixed; right:18px; bottom:18px; z-index:90;
  display:inline-flex; align-items:center; gap:9px;
  background:var(--skilt); color:#fff; border:2px solid #fff;
  box-shadow:0 0 0 2px var(--skilt), 0 10px 26px rgba(5,10,25,.28);
  border-radius:999px; padding:12px 20px; cursor:pointer;
  font:inherit; font-weight:800; font-size:.98rem;
  transition:transform .15s ease, background .15s ease;
}
.bot-knap:hover{background:var(--skilt-hover); transform:translateY(-2px)}
.bot-knap svg{flex:none}
@media (prefers-reduced-motion: reduce){ .bot-knap{transition:none} }

.bot-panel{
  position:fixed; right:18px; bottom:84px; z-index:95;
  width:min(380px, calc(100vw - 24px));
  height:min(560px, calc(100dvh - 120px));
  background:var(--flade); border:1px solid var(--linje); border-radius:18px;
  box-shadow:0 18px 50px rgba(5,10,25,.3);
  display:flex; flex-direction:column; overflow:hidden;
}
.bot-panel[hidden]{display:none}
.bot-hoved{
  display:flex; align-items:center; gap:11px; padding:14px 16px;
  background:linear-gradient(160deg, #0D4EA3 0%, #093A7C 90%); color:#fff;
}
.bot-avatar{
  flex:none; width:38px; height:38px; border-radius:10px;
  background:#fff; color:#0D4EA3; border:2px solid #0D4EA3;
  box-shadow:0 0 0 2px #fff;
  display:grid; place-items:center; font-weight:800; font-size:.9rem;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
}
.bot-titel b{display:block; line-height:1.2}
.bot-titel small{font-size:.75rem; opacity:.8}
.bot-luk{
  margin-left:auto; background:none; border:0; color:#fff; cursor:pointer;
  font-size:1.7rem; line-height:1; padding:4px 8px; border-radius:8px;
}
.bot-luk:hover{background:rgba(255,255,255,.15)}
.bot-beskeder{
  flex:1; min-height:0; overflow-y:auto; padding:16px 14px;
  display:flex; flex-direction:column; gap:10px; background:var(--grund);
}
.bot-b{
  max-width:86%; padding:10px 14px; border-radius:14px;
  font-size:.95rem; line-height:1.5;
}
.bot-b.bot{background:var(--flade-2); color:var(--blaek); align-self:flex-start; border-bottom-left-radius:4px}
.bot-b.bruger{background:var(--skilt); color:var(--skilt-kontrast); align-self:flex-end; border-bottom-right-radius:4px}
.bot-b a{font-weight:700}
.bot-b.skriver{display:inline-flex; gap:5px; padding:14px 16px}
.bot-b.skriver span{width:7px; height:7px; border-radius:50%; background:var(--blaek-2); animation:bot-prik 1s infinite}
.bot-b.skriver span:nth-child(2){animation-delay:.15s}
.bot-b.skriver span:nth-child(3){animation-delay:.3s}
@keyframes bot-prik{0%,100%{opacity:.25; transform:translateY(0)} 50%{opacity:1; transform:translateY(-3px)}}
.bot-chips{
  display:flex; flex-wrap:wrap; gap:6px; padding:10px 14px;
  border-top:1px solid var(--linje); background:var(--flade);
}
.bot-chip{
  font:inherit; font-size:.82rem; font-weight:700; padding:6px 12px;
  border-radius:999px; border:1.5px solid var(--skilt); background:none;
  color:var(--skilt); cursor:pointer;
}
.bot-chip:hover{background:var(--skilt); color:var(--skilt-kontrast)}
.bot-form{display:flex; gap:8px; padding:10px 12px 12px; background:var(--flade)}
.bot-form input{
  flex:1; font:inherit; font-size:.95rem; padding:10px 13px;
  border:1.5px solid var(--linje); border-radius:999px;
  background:var(--grund); color:var(--blaek);
}
.bot-form input:focus{border-color:var(--skilt); outline:none}
.bot-form button{
  flex:none; width:42px; height:42px; border-radius:50%; border:0; cursor:pointer;
  background:var(--roed); color:#fff; font-size:1.05rem; display:grid; place-items:center;
}
.bot-form button:hover{background:var(--roed-hover)}
/* --- Chatbotten på telefon ---
   Tre fejl på én gang (Olivers fund 5/8, set på hans egen telefon):
   1) Panelet var højere, end der var plads til, så emne-knapperne og
      skrivefeltet lå UNDER skærmkanten. Man kunne ikke se, hvad man
      skulle gøre.
   2) Med tastaturet oppe blev det værre: iOS krymper ikke `dvh`, når
      tastaturet kommer frem, så panelet blev liggende i fuld højde bag
      tastaturet. Løsningen er JavaScript — se `botHoejde()` i
      faelles.js, der måler den FAKTISK synlige del af skærmen.
   3) De otte emne-knapper brød over tre linjer og åd ~90px. De ligger
      nu på én række, man swiper i.
   Panelet er samtidig blevet et ark i bunden i stedet for en svævende
   boks: så er det tydeligt, hvor det slutter, og der er mest muligt
   plads til samtalen. */
@media (max-width:700px){
  .bot-panel{
    left:0; right:0; top:auto; width:auto;
    /* Begge sættes af botMaal() i faelles.js, når tastaturet er fremme.
       Faldbagud-værdierne gælder, hvis JavaScript ikke når at køre. */
    bottom:var(--bot-bund, 0px);
    height:var(--bot-hoejde, 82dvh);
    max-height:none;
    border-radius:18px 18px 0 0;
    border-bottom:0;
    padding-bottom:env(safe-area-inset-bottom, 0px);
  }
  .bot-knap{right:12px; bottom:12px}

  /* Emnerne på én swipe-bar række i stedet for tre stablede */
  .bot-chips{
    flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch;
    scrollbar-width:none; padding:9px 12px;
  }
  .bot-chips::-webkit-scrollbar{display:none}
  .bot-chips > *{flex:0 0 auto}

  /* iOS zoomer ind i hele siden, hvis skriften i et felt er under 16px
     — og zoomer ikke ud igen. Derfor præcis 16px her. */
  .bot-form input{font-size:16px}
  .bot-form{padding:10px 12px calc(12px + env(safe-area-inset-bottom, 0px))}
}

/* ===== Ring-boks (vises før tel:-opkald) ===== */
.tel-daekke{
  position:fixed; inset:0; z-index:120;
  background:rgba(9,17,33,.55); backdrop-filter:blur(3px);
  display:grid; place-items:center; padding:18px;
}
.tel-daekke[hidden]{display:none}
.tel-boks{
  position:relative; width:100%; max-width:430px;
  background:var(--flade); color:var(--blaek);
  border-radius:18px; border-top:4px solid var(--roed);
  box-shadow:0 24px 60px rgba(5,10,25,.4);
  padding:26px 26px 24px;
  animation:tel-ind .18s ease;
}
@keyframes tel-ind{from{opacity:0; transform:translateY(14px) scale(.97)} to{opacity:1; transform:none}}
@media (prefers-reduced-motion: reduce){ .tel-boks{animation:none} }
.tel-boks h3{font-size:1.35rem}
.tel-boks p{color:var(--blaek-2); font-size:.95rem; margin-top:10px}
.tel-boks p.tel-status{color:var(--blaek)}
.tel-prik{display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:7px}
.tel-prik.aaben{background:var(--ok)}
.tel-prik.lukket{background:var(--roed)}
.tel-knapper{display:grid; gap:10px; margin-top:20px}
.tel-knapper .btn{justify-content:center}
.tel-luk{
  position:absolute; top:10px; right:12px;
  background:none; border:0; color:var(--blaek-2); cursor:pointer;
  font-size:1.7rem; line-height:1; padding:4px 8px; border-radius:8px;
}
.tel-luk:hover{background:var(--flade-2); color:var(--blaek)}

/* ===== Admin-panel (admin.html — ikke linket fra det offentlige site) ===== */
body.admin{background:var(--grund)}

.a-login{min-height:100vh; display:grid; place-items:center; padding:20px}
.a-login[hidden]{display:none} /* display:grid overtrumfer ellers hidden-attributten */
.a-login form{
  width:min(400px,100%); background:var(--flade); border:1px solid var(--linje);
  border-radius:16px; border-top:4px solid var(--skilt); box-shadow:var(--skygge);
  padding:28px; display:grid; gap:14px;
}
.a-login-hoved{display:flex; align-items:center; gap:12px; margin-bottom:6px}
.a-login-hoved strong{display:block}
.a-login-hoved small{color:var(--blaek-2)}

.a-login label, .a-form label{font-weight:700; font-size:.92rem; display:grid; gap:6px}
.a-login input, .a-form input, .a-form select{
  font:inherit; padding:11px 13px; border-radius:10px; border:1.5px solid var(--linje);
  background:var(--grund); color:var(--blaek); width:100%;
}
.a-login input:focus, .a-form input:focus, .a-form select:focus{border-color:var(--skilt); outline:none}

.a-fejl{color:var(--roed-lys); font-size:.9rem; font-weight:600}
.a-tom{color:var(--blaek-2); font-size:.95rem; padding:14px 0}

.a-top{background:var(--moerk-flade); color:var(--moerk-tekst); border-bottom:3px solid var(--roed)}
.a-wrap{max-width:1020px; margin-inline:auto; padding-inline:clamp(16px,4vw,32px)}
.a-toprow{display:flex; align-items:center; gap:14px; padding-block:12px}
.a-top-navn{margin-left:auto; font-size:.9rem; opacity:.8}
.a-logud{padding:8px 16px; font-size:.9rem}

.a-status{
  position:sticky; top:10px; z-index:60; margin:14px 0 0;
  background:var(--moerk-flade); color:var(--moerk-tekst);
  border-left:4px solid var(--ok); border-radius:10px; padding:10px 16px;
  font-size:.92rem; box-shadow:var(--skygge);
}

.a-sektion{padding-block:clamp(28px,4vw,44px)}
.a-sektion-top{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; margin-bottom:18px}
.a-sektion-top h1{font-size:clamp(1.4rem,3vw,1.9rem)}
.a-filter{font-weight:700; font-size:.92rem; display:flex; align-items:center; gap:8px}
.a-filter select{
  font:inherit; padding:8px 12px; border-radius:10px; border:1.5px solid var(--linje);
  background:var(--flade); color:var(--blaek); max-width:320px;
}

.a-form{
  background:var(--flade); border:1px solid var(--linje); border-radius:16px;
  border-top:4px solid var(--roed); box-shadow:var(--skygge);
  padding:22px; margin-bottom:22px;
}
.a-form h2{font-size:1.1rem; margin-bottom:14px}
.a-form-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px}
@media (max-width:640px){ .a-form-grid{grid-template-columns:1fr} }
.a-fuldbredde{grid-column:1 / -1}
.a-form label small{font-weight:400; color:var(--blaek-2)}
.a-form-knapper{display:flex; gap:10px; margin-top:16px}
.a-form .a-fejl{margin-top:10px}

.a-hold-liste{display:grid; gap:10px}
.a-hold{
  display:flex; flex-wrap:wrap; align-items:center; gap:12px 16px;
  background:var(--flade); border:1px solid var(--linje); border-radius:12px; padding:14px 18px;
}
.a-hold.daempet{opacity:.6}
.a-hold .kat{padding:4px 10px; font-size:.95rem}
.a-hold-midt{flex:1; min-width:220px}
.a-hold-midt b{display:block}
.a-hold-info{color:var(--blaek-2); font-size:.88rem}
.a-pladser{font-weight:800; font-variant-numeric:tabular-nums; color:var(--ok)}
.a-pladser.fuldt{color:var(--roed-lys)}
.a-pille{
  font-size:.74rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  padding:4px 11px; border-radius:999px;
}
.a-pille.aaben{background:color-mix(in srgb, var(--ok) 16%, transparent); color:var(--ok)}
.a-pille.lukket{background:var(--flade-2); color:var(--blaek-2)}
.a-pille.aflyst{background:color-mix(in srgb, var(--roed) 14%, transparent); color:var(--roed-lys)}
.a-hold-knapper{display:flex; gap:8px}
.a-minik{
  font:inherit; font-size:.84rem; font-weight:700; cursor:pointer;
  padding:7px 13px; border-radius:9px; border:1.5px solid var(--linje);
  background:var(--flade); color:var(--blaek);
}
.a-minik:hover{border-color:var(--skilt); color:var(--skilt)}
.a-minik.roed:hover{border-color:var(--roed); color:var(--roed-lys)}

.a-tabelboks{overflow-x:auto; background:var(--flade); border:1px solid var(--linje); border-radius:12px}
.a-tabel{width:100%; border-collapse:collapse; font-size:.92rem; min-width:640px}
.a-tabel th, .a-tabel td{text-align:left; padding:11px 14px; border-bottom:1px solid var(--linje); vertical-align:top}
.a-tabel thead th{
  background:var(--flade-2); font-size:.78rem; letter-spacing:.08em; text-transform:uppercase;
  color:var(--blaek-2); white-space:nowrap;
}
.a-tabel tbody tr:last-child td{border-bottom:0}
.a-tabel a{font-weight:600}
.a-tabel input[type=checkbox]{width:18px; height:18px; accent-color:var(--ok); cursor:pointer}
.a-tabelboks .a-tom{padding:14px 18px}

/* ===== Tilmelding + Min side ===== */
.valg.optaget{opacity:.55; cursor:not-allowed}
.valg.optaget:hover{border-color:var(--linje)}
.valg .vp.fuldt{color:var(--roed-lys)}

/* ===== Pakkekortene på forsiden (26/7) ===== */
.forside-pakker{margin-top:24px}
.forside-pakker .tilbud-kort p{font-size:.92rem}
.forside-tilbud-mere{margin-top:18px; font-size:1rem}
.forside-tilbud-mere a{font-weight:700; text-decoration:none}
.forside-tilbud-mere a:hover{text-decoration:underline}
.forside-beregner-titel{
  margin-top:44px; font-size:clamp(1.4rem,3vw,1.9rem);
  padding-top:28px; border-top:1px solid var(--linje);
}

/* ===== Min side: elevens egen økonomi (26/7) ===== */
#ms-betalt{display:grid; gap:3px}
.ms-oek-pakke{font-weight:700}
.ms-oek-rest{
  font-weight:800; font-variant-numeric:tabular-nums; color:var(--roed-lys);
}
.ms-oek-rest.klaret{color:var(--ok)}
.ms-oek-note{font-weight:400; font-size:.88rem; color:var(--blaek-2)}

/* ===== Pakkevalg på tilmeldingssiden (26/7) ===== */
.valg.pakkevalg{align-items:flex-start; padding:14px 16px}
.valg.pakkevalg input{margin-top:3px}
.pakkevalg .v-indhold{flex:1; min-width:0; display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 12px}
.pakkevalg .v-indhold > b{font-weight:800; font-size:1.02rem}
.pakkevalg .v-indhold .vp{margin-left:auto; font-size:1.15rem}
.pakkevalg .v-indhold small{flex-basis:100%; margin-top:2px; font-size:.9rem}
.v-bedst{
  display:inline-block; margin-left:8px; vertical-align:middle;
  font-size:.62rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase;
  padding:3px 9px; border-radius:999px;
  background:color-mix(in srgb, var(--roed) 14%, transparent); color:var(--roed);
}

/* Fortrydelsesret-accept — skal være tydelig og aktiv, ikke gemt væk.
   Omskrevet 26/7: teksten var for juridisk til en 17-årig. Nu er
   hvert juridisk punkt sin egen korte linje. */
.t-accept-blok{margin-top:22px}
.t-accept-intro{font-size:.95rem; color:var(--blaek-2); margin-bottom:10px; max-width:62ch}
.t-accept-intro b{color:var(--blaek)}
.t-accept{
  display:flex; gap:13px; align-items:flex-start; cursor:pointer;
  padding:15px 17px; border-radius:13px;
  background:var(--flade-2); border:1.5px solid var(--linje);
  font-size:.93rem; line-height:1.55;
}
.t-accept:hover{border-color:var(--skilt)}
.t-accept:has(input:checked){
  border-color:var(--skilt); background:color-mix(in srgb, var(--skilt) 7%, transparent);
}
.t-accept input{width:22px; height:22px; flex:none; margin-top:1px; accent-color:var(--skilt); cursor:pointer}
.t-accept > span{color:var(--blaek-2)}
.t-accept b{color:var(--blaek)}
.t-accept > span > b{display:block; margin-bottom:8px; font-size:1.02rem}
.t-accept-punkter{display:grid; gap:6px; margin-bottom:9px}
.t-accept-punkter > span{display:flex; gap:9px; align-items:baseline}
.t-accept-punkter > span::before{
  content:"✓"; flex:none; color:var(--ok); font-weight:900; font-size:.95rem;
}
.t-accept-slut{display:block; font-size:.88rem; opacity:.85}
.t-accept-link{margin-top:8px; font-size:.92rem}
.t-accept-link a{font-weight:700; text-decoration:none}
.t-accept-link a:hover{text-decoration:underline}

/* ===== Min side: farveforklaring til kalenderen (26/7) =====
   Mærkaterne er kopier af de RIGTIGE chips i kalenderen, så eleven kan
   genkende formen direkte i stedet for at oversætte ord til farver.
   Erstatter en lang forklarende tekstlinje, som Oliver fandt forvirrende. */
.ms-forklaring{display:flex; flex-wrap:wrap; gap:8px; margin:0 0 14px}
.ms-tegn{
  font-size:.76rem; font-weight:700; line-height:1.2;
  padding:5px 11px; border-radius:7px;
  background:var(--skilt); color:var(--skilt-kontrast);
}
.ms-tegn.koeretime{background:var(--ok); color:#fff}
/* TILFØJET 12/8: manøvre- og glatbane var gule i kalenderen, men stod
   IKKE i farveforklaringen. Eleven kunne altså se en gul aftale uden at
   kunne slå op, hvad gul betyder. Farven er sat i .a-kal-lekt-blokken. */
.ms-tegn.bane{background:var(--bane); color:#fff}

/* ---- Tip om hjemmeskærm (18/8) ----
   Skal ligne en app-anbefaling, ikke en reklame: ikonet i venstre side
   viser præcis, hvad eleven ender med at have liggende. */
.ms-app-tip{
  display:flex; align-items:center; gap:14px;
  margin:14px 0 0; padding:14px 16px; border-radius:14px;
  background:color-mix(in srgb, var(--skilt) 8%, var(--flade));
  border:1.5px solid color-mix(in srgb, var(--skilt) 28%, transparent);
}
.ms-app-tip[hidden]{display:none}
.ms-app-tip img{flex:none; border-radius:10px}
.ms-app-tip b{display:block; font-size:.96rem}
.ms-app-tip span{display:block; margin-top:3px; font-size:.87rem; line-height:1.55; color:var(--blaek-2)}
.ms-app-luk{
  flex:none; align-self:flex-start; background:none; border:0; cursor:pointer;
  color:var(--blaek-2); font-size:1.5rem; line-height:1; padding:0 4px; border-radius:6px;
}
.ms-app-luk:hover{background:var(--flade-2); color:var(--blaek)}
.ms-tegn.proeve{background:var(--roed); color:#fff}
.ms-tegn.afbud{
  background:transparent; color:var(--roed-lys);
  border:1.5px dashed var(--roed); text-decoration:line-through;
  padding:3.5px 9.5px;
}
.ms-24{
  margin-top:10px; font-size:.88rem; color:var(--blaek-2);
  border-left:3px solid var(--roed); padding-left:12px;
}
.ms-24 b{color:var(--blaek)}


/* ===== Depositum-betaling efter tilmelding (26/7) ===== */
.t-betal{
  margin:16px 0 18px; padding:18px 20px; border-radius:14px;
  background:color-mix(in srgb, var(--ok) 8%, transparent);
  border:1.5px solid color-mix(in srgb, var(--ok) 40%, transparent);
  border-left-width:4px;
}
.t-betal[hidden]{display:none}
.t-betal > b{display:block; color:var(--ok); font-size:1.05rem}
.t-betal p{margin-top:8px; font-size:.94rem; color:var(--blaek-2)}
.t-betal .btn{margin-top:14px; width:100%; justify-content:center}
.t-betal .form-note{margin-top:10px}

/* Depositum-forklaring — aktiveres sammen med Stripe */
.t-depositum{
  margin:20px 0 4px; padding:16px 18px; border-radius:13px;
  background:color-mix(in srgb, var(--ok) 8%, transparent);
  border:1.5px solid color-mix(in srgb, var(--ok) 38%, transparent);
  border-left-width:4px;
}
.t-depositum[hidden]{display:none}
.t-depositum > b{display:block; color:var(--ok); font-size:1rem}
.t-depositum p{margin-top:7px; font-size:.93rem; color:var(--blaek-2)}
.t-dep-regnestykke{
  margin-top:10px !important; padding-top:10px;
  border-top:1px solid color-mix(in srgb, var(--ok) 30%, transparent);
  color:var(--blaek) !important; font-variant-numeric:tabular-nums;
}
.felt-note{font-weight:400; color:var(--blaek-2); font-size:.82rem}
.t-henter{color:var(--blaek-2); font-size:.95rem}
.t-succes{border-top:4px solid var(--ok)}
.t-store-link{font-weight:700; word-break:break-all}

/* Min side: teoriaften-liste */
.fakta .ms-lekt-liste li::before{content:"•"; color:var(--skilt)}
.ms-lekt-liste li.fortid{opacity:.5}
.ms-lekt-liste li.naeste{font-weight:700; color:var(--skilt)}
.fakta .ms-lekt-liste li.naeste::before{content:"→"}

/* Admin: lektionspanel under holdkort */
.a-minik.aktivt{border-color:var(--skilt); color:var(--skilt); background:var(--flade-2)}
.a-lekt-panel{
  background:var(--flade-2); border:1px solid var(--linje); border-radius:12px;
  padding:16px 18px; margin:-4px 0 6px; border-left:4px solid var(--skilt);
}
.a-lekt-panel h3{font-size:.95rem; margin-bottom:10px}
.a-lekt-liste{display:grid; gap:6px; margin-bottom:14px}
.a-lekt-raekke{
  display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px;
  background:var(--flade); border:1px solid var(--linje); border-radius:9px; padding:8px 12px;
  font-size:.9rem;
}
.a-lekt-raekke.fortid{opacity:.55}
.a-lekt-raekke b{font-weight:700}
.a-lekt-raekke span{flex:1; color:var(--blaek-2)}
.a-lekt-raekke .a-minik{padding:5px 10px; font-size:.8rem}
.a-lekt-form{display:grid; grid-template-columns:1fr 1fr; gap:12px}
@media (max-width:640px){ .a-lekt-form{grid-template-columns:1fr} }
.a-lekt-form label{font-weight:700; font-size:.88rem; display:grid; gap:5px}
.a-lekt-form label small{font-weight:400; color:var(--blaek-2)}
.a-lekt-form input, .a-lekt-form select{
  font:inherit; padding:9px 12px; border-radius:9px; border:1.5px solid var(--linje);
  background:var(--flade); color:var(--blaek); width:100%;
}
.a-lekt-form input:focus, .a-lekt-form select:focus{border-color:var(--skilt); outline:none}
.a-lekt-form .a-form-knapper{grid-column:1 / -1; margin-top:2px; align-items:center}
.a-lekt-form .a-form-knapper .btn{padding:10px 18px; font-size:.92rem}
.a-lekt-form .a-fejl{grid-column:1 / -1}

/* Admin: lektions-kalender (dansk uge — mandag først) */
.a-kal-nav{display:flex; align-items:center; gap:10px; margin-bottom:10px; flex-wrap:wrap}
.a-kal-nav b{min-width:76px; text-align:center; font-variant-numeric:tabular-nums}
.a-kal-nav span{font-size:.8rem; color:var(--blaek-2)}
.a-kal{
  display:grid; grid-template-columns:repeat(7,1fr); gap:4px;
  margin-bottom:14px;
}
.a-kal-uh{
  text-align:center; font-size:.72rem; font-weight:800; letter-spacing:.08em;
  text-transform:uppercase; color:var(--blaek-2); padding-bottom:2px;
}
.a-kal-dag{
  min-height:58px; background:var(--flade); border:1px solid var(--linje);
  border-radius:8px; padding:4px 6px; cursor:pointer; font-size:.78rem;
}
.a-kal-dag:hover{border-color:var(--skilt)}
.a-kal-dag:focus-visible{outline:3px solid var(--roed); outline-offset:1px}
.a-kal-dag.tom{background:none; border:0; cursor:default; min-height:0}
.a-kal-dag.idag{border-color:var(--roed); border-width:2px}
.a-kal-dag > b{font-size:.78rem; color:var(--blaek-2)}
.a-kal-dag.idag > b{color:var(--roed-lys)}
.a-kal-lekt{
  display:block; width:100%; margin-top:3px; text-align:left; cursor:pointer;
  background:var(--skilt); color:var(--skilt-kontrast); border:0; border-radius:6px;
  padding:2px 6px; font:inherit; font-size:.7rem; font-weight:700;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.a-kal-lekt:hover{background:var(--skilt-hover)}
.a-kal-lekt.fortid{opacity:.5}
@media (max-width:640px){
  .a-kal-dag{min-height:44px; padding:3px 4px}
  .a-kal-lekt{font-size:.62rem; padding:2px 4px}
}
.a-kal-nav .idag-knap{border-color:var(--roed); color:var(--roed-lys)}

/* ===== Admin: sidemenu + faner ===== */
.a-skal{display:grid; grid-template-columns:232px 1fr; min-height:100vh}
.a-skal[hidden]{display:none}
.a-side{
  background:var(--moerk-flade); color:var(--moerk-tekst);
  display:flex; flex-direction:column; gap:16px; padding:18px 14px;
  border-right:3px solid var(--roed);
  position:sticky; top:0; height:100vh;
}
.a-side-brand{display:flex; align-items:center; gap:10px; padding:0 4px}
.a-side-brand strong{display:block; line-height:1.15}
.a-side-brand small{opacity:.55; font-size:.7rem}
.a-nav{display:grid; gap:6px; margin-top:10px}
.a-fane{
  display:flex; align-items:center; gap:11px; width:100%;
  background:none; border:0; color:inherit; opacity:.72;
  font:inherit; font-weight:700; font-size:.95rem; text-align:left;
  padding:11px 13px; border-radius:10px; cursor:pointer;
}
.a-fane:hover{background:rgba(255,255,255,.08); opacity:1}
.a-fane.aktiv{background:var(--skilt); color:#fff; opacity:1}
.a-fane svg{flex:none}
.a-side-bund{margin-top:auto; display:grid; gap:10px; font-size:.85rem}
.a-side-bund .a-top-navn{margin:0; opacity:.7}
.a-indhold{min-width:0; padding-bottom:40px}
@media (max-width:820px){
  .a-skal{display:block}
  .a-skal[hidden]{display:none}
  .a-side{position:static; height:auto; flex-direction:row; align-items:center; flex-wrap:wrap; gap:10px 14px}
  .a-side-brand small{display:none}
  .a-nav{display:flex; gap:6px; margin:0}
  .a-fane{width:auto; padding:9px 12px; font-size:.88rem}
  .a-side-bund{margin-left:auto; display:flex; align-items:center; gap:10px}
  .a-side-bund .a-top-navn{display:none}
}
.a-sektion-knapper{display:flex; align-items:center; gap:12px; flex-wrap:wrap}

/* ===== Admin: dashboard ===== */
.d-kpier{display:grid; grid-template-columns:repeat(auto-fit,minmax(168px,1fr)); gap:12px; margin-bottom:14px}
.d-kpi{
  background:var(--flade); border:1px solid var(--linje); border-radius:14px;
  padding:16px 18px 14px; border-top:4px solid var(--skilt); box-shadow:var(--skygge);
}
.d-kpi.groen{border-top-color:var(--ok)}
.d-kpi.roed{border-top-color:var(--roed)}
.d-kpi b{
  display:block; font-size:2.1rem; line-height:1.1;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  font-variant-numeric:tabular-nums;
}
.d-kpi span{font-size:.78rem; color:var(--blaek-2); font-weight:700}
.d-kpi small{display:block; margin-top:2px; font-size:.74rem; color:var(--blaek-2); opacity:.8}
.d-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px}
@media (max-width:760px){ .d-grid{grid-template-columns:1fr} }
.d-kort{background:var(--flade); border:1px solid var(--linje); border-radius:14px; padding:16px 18px}
.d-kort.d-bred{grid-column:1 / -1}
.d-kort h3{font-size:.76rem; letter-spacing:.11em; text-transform:uppercase; color:var(--blaek-2); margin-bottom:12px}
.d-graf svg{width:100%; height:auto; display:block}
.d-stor{
  display:block; font-size:2.4rem; line-height:1.1; margin-bottom:10px;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  font-variant-numeric:tabular-nums; color:var(--ok);
}
.d-bar{height:14px; border-radius:7px; background:var(--flade-2); overflow:hidden}
.d-bar > div{height:100%; background:var(--ok); border-radius:7px; min-width:2px}
.d-legende{display:flex; gap:16px; margin-top:10px; font-size:.85rem; color:var(--blaek-2)}
.d-legende i{display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:6px; vertical-align:baseline}
.d-fyld-r{display:flex; align-items:center; gap:10px; padding:6px 0; font-size:.88rem}
.d-fyld-r > span{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.d-fyld-bar{flex:1.4; height:10px; border-radius:5px; background:var(--flade-2); overflow:hidden}
.d-fyld-bar > div{height:100%; background:var(--skilt); border-radius:5px}
.d-fyld-r b{font-variant-numeric:tabular-nums; font-size:.82rem; min-width:44px; text-align:right}
.d-liste{list-style:none; margin:0; padding:0; display:grid; gap:8px; font-size:.9rem}
.d-liste li{display:flex; gap:12px; align-items:baseline; border-bottom:1px solid var(--linje); padding-bottom:8px; flex-wrap:wrap}
.d-liste li:last-child{border-bottom:0; padding-bottom:0}
.d-liste .tid{font-weight:700; white-space:nowrap; font-variant-numeric:tabular-nums}
.d-liste .afb{margin-left:auto; color:var(--roed-lys); font-weight:700; font-size:.8rem; white-space:nowrap}

/* Flyt-vælger i tilmeldingstabellen */
.a-flyt-valg{
  font:inherit; font-size:.85rem; padding:6px 8px; border-radius:8px;
  border:1.5px solid var(--skilt); background:var(--flade); color:var(--blaek);
  max-width:220px; margin-right:6px;
}
.a-tabel .a-minik + .a-minik{margin-left:6px}

/* Min side: elevens kalender med afbud */
.ms-kal .a-kal-dag{cursor:default}
.ms-kal .a-kal-dag:hover{border-color:var(--linje)}
.ms-kal-note{margin-top:12px; font-size:.85rem; color:var(--blaek-2)}
.ms-afbud-titel{margin-top:16px; font-weight:800; font-size:.9rem}
.ms-handling{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  flex-wrap:wrap; padding:9px 0; border-bottom:1px solid var(--linje); font-size:.92rem;
}
.ms-handling:last-child{border-bottom:0}
.ms-handling-tekst{display:grid; gap:3px; min-width:0}
.ms-handling.afbud .ms-handling-tekst > span:first-child{color:var(--blaek-2); text-decoration:line-through}
/* Lærerens besked til eleven — fremhævet, så den bliver læst */
.ms-besked{
  display:inline-flex; gap:7px; align-items:baseline;
  font-size:.88rem; font-weight:600; color:var(--skilt);
  background:color-mix(in srgb, var(--skilt) 8%, transparent);
  border-left:3px solid var(--skilt); border-radius:0 8px 8px 0;
  padding:5px 10px; text-decoration:none !important;
}
.ms-besked::before{content:"Besked:"; font-weight:800; flex:none; opacity:.75}
/* Chip med besked: lille prik-markør, så man ser der er info */
.a-kal-lekt.har-besked{position:relative}
.a-kal-lekt.har-besked::after{
  content:""; position:absolute; top:3px; right:3px; width:6px; height:6px;
  border-radius:50%; background:#fff; box-shadow:0 0 0 1.5px currentColor;
}
.ms-naeste{margin-top:8px; font-weight:700; color:var(--skilt)}
.a-kal-lekt.afbud{
  background:transparent; color:var(--roed-lys);
  border:1.5px dashed var(--roed); text-decoration:line-through;
}
.a-kal-lekt.afbud:hover{background:color-mix(in srgb, var(--roed) 12%, transparent)}
.a-kal-lekt:disabled{cursor:default}

/* Køretimer i kalenderne: grønne chips (teori = blå) */
.a-kal-lekt.koeretime{background:var(--ok); color:#fff}
.a-kal-lekt.koeretime:hover{background:var(--ok)}
.a-kal-lekt.koeretime.fortid{opacity:.5}

/* Manøvrebane og glatbane er GULE (12/8) — hverken teori (blå),
   køretime (grøn) eller prøve (rød). Eleven møder et helt andet sted
   end til en almindelig køretime, så forskellen skal kunne ses med det
   samme. Mørkegul med hvid tekst, så kontrasten holder i begge temaer. */
:root{ --bane:#B87A00 }
@media (prefers-color-scheme: dark){ :root{ --bane:#F0A500 } }
:root[data-theme="dark"]{ --bane:#F0A500 }
.a-kal-lekt.koeretime.bane,
.a-kal-lekt.koeretime.bane:hover{background:var(--bane); color:#fff}

/* Roller: lærer-login ser hverken dashboard-fanen eller betalt-kolonnen */
.a-fane[hidden]{display:none} /* .a-fane har display:flex — [hidden] taber ellers */
.a-tabel.uden-betalt th:nth-child(5),
.a-tabel.uden-betalt td:nth-child(5){display:none}

/* Notefelt i lektions-/køretime-formularer */
.a-lekt-form textarea{
  font:inherit; padding:9px 12px; border-radius:9px; border:1.5px solid var(--linje);
  background:var(--flade); color:var(--blaek); width:100%; min-height:64px; resize:vertical;
}
.a-lekt-form textarea:focus{border-color:var(--skilt); outline:none}

/* Prøver i kalenderne: røde milepæls-chips */
.a-kal-lekt.proeve{background:var(--roed); color:#fff}
.a-kal-lekt.proeve.fortid{opacity:.5}

/* Prøve-rækker i elevkortet */
.e-proeve{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:10px 0; border-bottom:1px solid var(--linje);
}
.e-proeve:last-child{border-bottom:0}
.e-proeve > b{flex:none; min-width:86px; font-size:.92rem}
.e-proeve input{
  font:inherit; font-size:.88rem; padding:8px 10px; border-radius:8px;
  border:1.5px solid var(--linje); background:var(--grund); color:var(--blaek);
}
.e-proeve input[type=text]{flex:1; min-width:140px}
.e-proeve input:focus{border-color:var(--skilt); outline:none}

/* Elevens køretime-afbud: grøn stiplet + overstreget */
.a-kal-lekt.koeretime.afbud{
  background:transparent; color:var(--ok);
  border:1.5px dashed var(--ok); text-decoration:line-through;
}
.a-kal-lekt.koeretime.afbud:hover{background:color-mix(in srgb, var(--ok) 12%, transparent)}

/* Elevkortets foldbare sektioner (details/summary) */
.e-fold{border:1px solid var(--linje); border-radius:12px; margin-top:12px; background:var(--flade); overflow:hidden}
.e-fold > summary{
  cursor:pointer; padding:13px 16px; font-weight:800; font-size:.95rem;
  list-style:none; display:flex; justify-content:space-between; align-items:center; gap:12px;
}
.e-fold > summary::-webkit-details-marker{display:none}
.e-fold > summary::after{content:"+"; font-size:1.3rem; font-weight:400; color:var(--skilt); line-height:1; flex:none}
.e-fold[open] > summary::after{content:"−"}
.e-fold[open] > summary{border-bottom:1px solid var(--linje)}
.e-fold-krop{padding:14px 16px 16px}
.e-fold.e-indre{background:var(--flade-2); margin-bottom:14px}

/* Tjekliste-rækker i elevkortet */
.e-krav{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:9px 0; border-bottom:1px solid var(--linje);
}
.e-krav:last-child{border-bottom:0}
.e-krav input[type=checkbox]{width:19px; height:19px; accent-color:var(--ok); cursor:pointer; flex:none}
.e-krav label{font-weight:600; font-size:.92rem; cursor:pointer; flex:1; min-width:160px}
.e-krav .e-krav-note{
  flex:2; min-width:170px; font:inherit; font-size:.85rem; padding:7px 10px;
  border-radius:8px; border:1.5px solid var(--linje); background:var(--grund); color:var(--blaek);
}
.e-krav .e-krav-note:focus{border-color:var(--skilt); outline:none}

/* Min side: elevens tjekliste */
.fakta .ms-krav li::before{content:none}
.ms-krav{list-style:none; margin:0; padding:0; display:grid; gap:8px}
.ms-krav li{display:flex; gap:10px; align-items:baseline; font-size:.95rem}
.ms-krav li b{flex:none; width:20px; text-align:center}
.ms-krav li.klaret b{color:var(--ok)}
.ms-krav li.mangler b{color:var(--blaek-2)}
.ms-krav li.mangler span{color:var(--blaek-2)}

/* Fødselsdato: tre felter (dag · måned · år) — den indbyggede
   datovælger starter ved i dag og driller ved indtastning */
.fdato{display:grid; gap:6px}
.fdato-titel{font-weight:700; font-size:.92rem}
.fdato-felter{display:flex; flex-wrap:wrap; gap:8px; align-items:stretch}
form.kontakt .fdato-felter input,
form.kontakt .fdato-felter select{
  font:inherit; font-weight:600; padding:11px 13px; border-radius:10px;
  border:1.5px solid var(--linje); background:var(--grund); color:var(--blaek);
  width:auto; appearance:none; -webkit-appearance:none;
}
form.kontakt .fdato-felter select{
  padding-right:36px; cursor:pointer; flex:1; min-width:132px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%237A8598' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 13px center;
}
form.kontakt .fdato-felter input[name=fd_dag]{width:80px; text-align:center}
form.kontakt .fdato-felter input[name=fd_aar]{width:118px; text-align:center}
form.kontakt .fdato-felter input:hover,
form.kontakt .fdato-felter select:hover{border-color:var(--skilt)}
form.kontakt .fdato-felter input:focus,
form.kontakt .fdato-felter select:focus{border-color:var(--skilt); outline:none}
form.kontakt .fdato-felter input[type=number]{-moz-appearance:textfield}
form.kontakt .fdato-felter input[type=number]::-webkit-outer-spin-button,
form.kontakt .fdato-felter input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none; margin:0}

/* ===== Fælles dato/tid-vælger (dag · måned · år [· kl. · min]) =====
   Felterne skal stå på ÉN linje som en sammenhængende gruppe — derfor
   inline-flex + eksplicitte bredder (og width:auto, så formularernes
   "input{width:100%}" ikke stabler dem lodret). */
.dt-felter{
  display:inline-flex; flex-wrap:wrap; gap:6px; align-items:stretch;
  width:auto; max-width:100%; margin-top:2px;
}
.dt-felter input, .dt-felter select{
  font:inherit; font-size:.92rem; font-weight:600;
  padding:10px 12px; border-radius:10px; width:auto;
  border:1.5px solid var(--linje); background:var(--grund); color:var(--blaek);
  appearance:none; -webkit-appearance:none;
}
.dt-felter select{
  padding-right:34px; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%237A8598' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center;
}
.dt-felter input:hover, .dt-felter select:hover{border-color:var(--skilt)}
.dt-felter input:focus, .dt-felter select:focus{border-color:var(--skilt); outline:none; box-shadow:0 0 0 3px color-mix(in srgb, var(--skilt) 18%, transparent)}
/* Skjul talfelternes pile — man taster tallet */
.dt-felter input[type=number]{-moz-appearance:textfield}
.dt-felter input[type=number]::-webkit-outer-spin-button,
.dt-felter input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none; margin:0}
.dt-felter .dt-dag{width:72px; text-align:center}
.dt-felter .dt-aar{width:82px; text-align:center}
.dt-felter .dt-maaned{width:132px}
.dt-felter .dt-time{width:96px}
.dt-felter .dt-minut{width:82px}
@media (max-width:520px){
  .dt-felter{width:100%}
  .dt-felter .dt-maaned{flex:1; min-width:120px}
}

/* Hold-listens tæller ("Viser 3 af 12 hold") */
.a-hold-tael{font-size:.85rem; color:var(--blaek-2); font-weight:600; margin-bottom:4px}

/* ===== Sen-aflysnings-dialog (Min side) ===== */
#sen-daekke .tel-boks{border-top-color:var(--roed)}
.sen-accept{
  display:flex; gap:11px; align-items:flex-start; cursor:pointer;
  background:var(--flade-2); border:1.5px solid var(--linje); border-radius:12px;
  padding:14px 16px; margin-top:16px; font-size:.93rem; font-weight:600;
}
.sen-accept:hover{border-color:var(--roed)}
.sen-accept input{width:20px; height:20px; accent-color:var(--roed); flex:none; margin-top:1px; cursor:pointer}
.sen-accept:has(input:checked){border-color:var(--roed); background:color-mix(in srgb, var(--roed) 8%, transparent)}
/* Sygdom/uforudset: eleven må aflyse gratis — grøn, så den ikke drukner
   i de røde advarsler, og placeret FØR accept-fluebenet */
.sen-syg{
  margin-top:16px; padding:14px 16px; border-radius:12px;
  background:color-mix(in srgb, var(--ok) 9%, transparent);
  border:1.5px solid color-mix(in srgb, var(--ok) 40%, transparent);
  border-left-width:4px;
}
.sen-syg > b{display:block; color:var(--ok); font-size:.96rem}
.sen-syg p{margin-top:6px; font-size:.92rem; color:var(--blaek) !important}
.sen-syg a{font-weight:800; white-space:nowrap}
#sen-aflys:disabled{opacity:.45; cursor:not-allowed; transform:none; box-shadow:none}

/* Bindende (sent) afbud: ingen knap — kun markering */
.ms-laast{
  font-size:.78rem; font-weight:800; letter-spacing:.04em; white-space:nowrap;
  padding:5px 11px; border-radius:999px;
  background:color-mix(in srgb, var(--roed) 12%, transparent); color:var(--roed-lys);
}

/* Admin: klikbart elevnavn + elev-detaljekort */
.a-navn-knap{background:none; border:0; padding:0; font:inherit; font-weight:700; color:var(--skilt); cursor:pointer; text-align:left}
.a-navn-knap:hover{text-decoration:underline}
.a-daekke{
  position:fixed; inset:0; z-index:120;
  background:rgba(9,17,33,.55); backdrop-filter:blur(3px);
  display:grid; place-items:center; padding:18px;
}
.a-daekke[hidden]{display:none}
.a-modal{
  position:relative; width:100%; max-width:560px; max-height:88vh; overflow:auto;
  background:var(--flade); color:var(--blaek);
  border-radius:18px; border-top:4px solid var(--skilt);
  box-shadow:0 24px 60px rgba(5,10,25,.4); padding:26px;
}
.a-modal h2{font-size:1.4rem}
.a-modal-luk{
  position:absolute; top:10px; right:12px;
  background:none; border:0; color:var(--blaek-2); cursor:pointer;
  font-size:1.7rem; line-height:1; padding:4px 8px; border-radius:8px;
}
.a-modal-luk:hover{background:var(--flade-2); color:var(--blaek)}
.e-raekker{display:grid; gap:8px; margin-top:16px; font-size:.95rem}
.e-raekker div{display:flex; gap:10px; justify-content:space-between; border-bottom:1px solid var(--linje); padding-bottom:8px; flex-wrap:wrap}
.e-raekker div span:first-child{color:var(--blaek-2); font-weight:600}
.e-raekker a{font-weight:600; text-decoration:none}
.e-raekker a:hover{text-decoration:underline}
.e-statter{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; margin-top:16px}
.e-stat{background:var(--flade-2); border-radius:12px; padding:12px 14px; text-align:center}
.e-stat b{display:block; font-size:1.4rem; font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif; font-variant-numeric:tabular-nums}
.e-stat span{font-size:.72rem; color:var(--blaek-2); font-weight:700}
.e-afsnit{margin-top:18px}
.e-afsnit h3{font-size:.76rem; letter-spacing:.1em; text-transform:uppercase; color:var(--blaek-2); margin-bottom:8px}
.e-betalt{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
.e-betalt input{font:inherit; padding:9px 12px; border-radius:9px; border:1.5px solid var(--linje); background:var(--grund); color:var(--blaek); width:130px}
.e-betalt input:focus{border-color:var(--skilt); outline:none}
.e-link{display:flex; gap:8px; align-items:center}
.e-link input{flex:1; min-width:0; font:inherit; font-size:.78rem; padding:8px 10px; border-radius:8px; border:1.5px solid var(--linje); background:var(--grund); color:var(--blaek-2)}

/* ===== Dashboard: "Stark på hvid" (Olivers ønske 15/7) — følger sidens
   lyse/mørke tema, men med kant: sart blueprint-gitter, gradient-tal
   med glød, hjørnelys og svæveeffekt på kortene + count-up. ===== */
.d-stark{
  background:
    linear-gradient(color-mix(in srgb, var(--skilt) 5%, transparent) 1px, transparent 1px) 0 0 / 100% 34px,
    linear-gradient(90deg, color-mix(in srgb, var(--skilt) 5%, transparent) 1px, transparent 1px) 0 0 / 34px 100%;
  border-radius:20px;
}
.d-stark .d-kpi{
  position:relative; overflow:hidden;
  transition:transform .18s ease, box-shadow .18s ease;
  animation:d-ind .5s cubic-bezier(.2,.7,.3,1) both;
}
.d-stark .d-kpi:hover{
  transform:translateY(-3px);
  box-shadow:0 12px 32px color-mix(in srgb, var(--skilt) 20%, transparent);
}
.d-stark .d-kpi::after{
  content:""; position:absolute; top:-44px; right:-44px; width:120px; height:120px;
  background:radial-gradient(closest-side, color-mix(in srgb, var(--skilt) 16%, transparent), transparent);
  pointer-events:none;
}
.d-stark .d-kpi.groen::after{background:radial-gradient(closest-side, color-mix(in srgb, var(--ok) 16%, transparent), transparent)}
.d-stark .d-kpi.roed::after{background:radial-gradient(closest-side, color-mix(in srgb, var(--roed) 14%, transparent), transparent)}
.d-stark .d-kpi b{
  font-size:2.5rem;
  background:linear-gradient(120deg, var(--skilt) 20%, color-mix(in srgb, var(--skilt) 45%, #38BDF8));
  -webkit-background-clip:text; background-clip:text; color:transparent;
  filter:drop-shadow(0 2px 10px color-mix(in srgb, var(--skilt) 32%, transparent));
}
.d-stark .d-kpi.groen b{
  background:linear-gradient(120deg, var(--ok) 20%, color-mix(in srgb, var(--ok) 45%, #6EE7B7));
  -webkit-background-clip:text; background-clip:text;
  filter:drop-shadow(0 2px 10px color-mix(in srgb, var(--ok) 32%, transparent));
}
.d-stark .d-kpi.roed b{
  background:linear-gradient(120deg, var(--roed) 20%, color-mix(in srgb, var(--roed) 45%, #FCA5A5));
  -webkit-background-clip:text; background-clip:text;
  filter:drop-shadow(0 2px 10px color-mix(in srgb, var(--roed) 30%, transparent));
}
@keyframes d-ind{from{opacity:0; transform:translateY(12px)} to{opacity:1; transform:none}}
@media (prefers-reduced-motion: reduce){
  .d-stark .d-kpi{animation:none; transition:none}
  .d-stark .d-kpi:hover{transform:none}
}
.valg-gruppe.kompakt .vp{font-size:.92rem}

/* =====================================================================
   MOBIL: iOS zoomer ind på et felt, hvis skriften er under 16px — det
   sker midt i en tilmelding og river layoutet skævt. Felterne arver
   .92rem (≈14,7px) fra label'en, så vi sætter dem eksplicit til 16px.
   Selektorerne SKAL matche grundreglernes specificitet (font:inherit).
   Fundet 23/7 under mobilgennemgangen af admin — samme fejl her.
   ===================================================================== */
@media (max-width:700px){
  form.kontakt input, form.kontakt textarea, form.kontakt select,
  form.kontakt .fdato-felter input, form.kontakt .fdato-felter select{font-size:16px}
  form.kontakt .fdato-felter input[name=fd_dag]{width:86px}
  form.kontakt .fdato-felter input[name=fd_aar]{width:126px}
}

/* =====================================================================
   TILBUDSSIDEN (tilbud.html) — punkt 2 + 3
   ⚠️ Siden afventer Jespers prisliste. Klassen .pris-mangler markerer
   hvert sted, der SKAL udfyldes. Den er bevidst grim og iøjnefaldende,
   så siden ikke ved et uheld går live med opdigtede tal. Fjern klassen
   (og .tilbud-udfyld-linjen), efterhånden som priserne kommer ind.
   ===================================================================== */
.tilbud-frem{
  display:grid; grid-template-columns:1.5fr 1fr; gap:28px; align-items:center;
  background:var(--flade); border:1px solid var(--linje); border-radius:20px;
  border-top:5px solid var(--roed); box-shadow:var(--skygge);
  padding:30px 32px; margin-top:8px;
}
@media (max-width:820px){ .tilbud-frem{grid-template-columns:1fr; gap:22px} }
.tilbud-frem h2{margin-top:10px; font-size:clamp(1.5rem,3.4vw,2.1rem)}
.tilbud-frem > div > p{margin-top:12px; color:var(--blaek-2); max-width:52ch}
.tilbud-maerke{
  display:inline-block; font-size:.7rem; font-weight:800; letter-spacing:.1em;
  text-transform:uppercase; padding:5px 12px; border-radius:999px;
  background:color-mix(in srgb, var(--roed) 13%, transparent); color:var(--roed);
}
.tilbud-liste{list-style:none; margin:18px 0 0; padding:0; display:grid; gap:9px; font-size:.96rem}
.tilbud-liste li{display:flex; gap:10px; align-items:baseline}
.tilbud-liste li::before{content:"✓"; color:var(--ok); font-weight:900; flex:none}
.tilbud-frem-pris{
  display:grid; gap:9px; justify-items:center; text-align:center;
  background:var(--flade-2); border-radius:16px; padding:24px 20px;
}
.tilbud-fra{font-size:.78rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; color:var(--blaek-2)}
.tilbud-tal{
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  font-size:2.3rem; line-height:1.05; color:var(--skilt); font-variant-numeric:tabular-nums;
}
.tilbud-note{font-size:.82rem; color:var(--blaek-2); max-width:26ch}
.tilbud-frem-pris .btn{width:100%; justify-content:center; margin-top:4px}

.tilbud-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:16px; margin-top:26px}
.tilbud-grid.tre{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.tilbud-kort{
  background:var(--flade); border:1px solid var(--linje); border-radius:16px;
  padding:22px; box-shadow:var(--skygge-blod);
  display:grid; gap:9px; align-content:start;
}
.tilbud-kort .kat{justify-self:start}
.tilbud-kort h3{font-size:1.15rem}
.tilbud-kort p{color:var(--blaek-2); font-size:.94rem}
.tilbud-kort .tilbud-tal{font-size:1.7rem; margin-top:2px}
.tilbud-link{font-weight:700; text-decoration:none; font-size:.92rem; margin-top:2px}
.tilbud-link:hover{text-decoration:underline}
.tilbud-kort.rabat{border-left:4px solid var(--ok); text-align:left}
.tilbud-procent{
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  font-size:2.6rem; line-height:1; color:var(--ok);
}
.tilbud-finprint{margin-top:20px; font-size:.9rem; color:var(--blaek-2); max-width:70ch}

/* "Kontakt for pris" — bruges hvor prisen sættes individuelt (storvogn).
   Bevidst rolig og blå, IKKE en advarsel: det er et normalt svar i
   branchen, ikke en mangel. */
.pris-kontakt{
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  font-size:1.25rem; color:var(--skilt); line-height:1.1;
}

/* Kortene i tilbudssidens karrusel har en pris — giv den luft */
.karrusel .kort-krop .tilbud-tal{font-size:1.5rem; margin-top:2px}
.karrusel .kort-krop .pris-kontakt{margin-top:2px}

.tilbud-baand{
  display:flex; gap:26px; align-items:center; justify-content:space-between; flex-wrap:wrap;
  background:var(--flade); border:1px solid var(--linje); border-left:5px solid var(--ok);
  border-radius:18px; padding:26px 30px; position:relative;
}
.tilbud-baand h2{margin-top:10px; font-size:clamp(1.3rem,3vw,1.8rem)}
.tilbud-baand p{margin-top:10px; color:var(--blaek-2); max-width:56ch}
.tilbud-baand-pris{text-align:center; display:grid; gap:4px}
.tilbud-udfyld{
  display:block; font-weight:700; font-size:.88rem; margin-top:12px;
  color:#B7791F; border-left:3px solid #B7791F; padding-left:11px;
}

/* --- de tre betalingspakker --- */
.tilbud-kort.pakke{gap:11px}
.tilbud-kort.pakke .tilbud-maerke{justify-self:start}
.tilbud-kort.pakke h3{font-size:1.22rem}
.tilbud-kort.pakke .tilbud-tal{font-size:2rem; margin:0}
.tilbud-kort.pakke .btn{width:100%; justify-content:center; margin-top:6px}
.tilbud-kort.pakke.valgt{
  border:2px solid var(--roed); box-shadow:0 14px 38px rgba(210,35,42,.16);
}

/* --- De tre pakker på telefon: samme greb som karrusellen ---
   Stablet lodret blev "Betal på én gang" til kort nummer to, som man
   først så efter at have scrollet forbi den dyrere ratepakke. Nu ligger
   de side om side, den fremhævede står i MIDTEN og er dér, man lander —
   js/faelles.js ruller den på plads ved sideindlæsning. Nabokortene
   stikker frem i begge sider, så det er tydeligt, at der er mere.
   ⚠️ Rækkefølgen i HTML er rater · fuld(valgt) · moduler. Bytter man om,
   skal centreringen i faelles.js efterses. */
@media (hover: none), (max-width: 760px){
  .tilbud-grid.tre{
    display:flex; gap:14px;
    overflow-x:auto; -webkit-overflow-scrolling:touch;
    scroll-snap-type:x mandatory;
    scrollbar-width:none;
    /* Trækker kortene ud til skærmkanten, så fligene ikke klippes af
       .wrap's indvendige luft — ellers ser det ud som om der ikke er mere. */
    margin-inline:calc(-1 * var(--wrap-luft, 16px));
    padding-inline:var(--wrap-luft, 16px);
    padding-block:4px 10px;
  }
  .tilbud-grid.tre::-webkit-scrollbar{display:none}
  .tilbud-grid.tre > .tilbud-kort{
    flex:0 0 min(76vw, 300px);
    scroll-snap-align:center;
  }
}
.tilbud-liste.lille{margin-top:2px; font-size:.9rem; gap:7px}
.tilbud-liste.lille li::before{font-size:.85rem}
.tilbud-maerke.groen{background:color-mix(in srgb, var(--ok) 15%, transparent); color:var(--ok)}
.tilbud-adskil{
  display:block; margin-top:10px; padding-top:10px; font-size:.9rem;
  border-top:1px solid var(--linje); color:var(--blaek-2);
}
.tilbud-adskil b{color:var(--blaek); font-size:1.02rem}

/* --- modulpriser (pakke C) --- */
.modul-priser{
  margin-top:26px; background:var(--flade); border:1px solid var(--linje);
  border-radius:16px; overflow:hidden; box-shadow:var(--skygge-blod); max-width:760px;
}
.modul-r{
  display:flex; align-items:center; gap:14px;
  padding:14px 18px; border-bottom:1px solid var(--linje);
}
.modul-r:last-child{border-bottom:0}
.modul-r > div{flex:1; min-width:0}
.modul-r > div > b{display:block; font-size:1rem}
.modul-r > div > span{display:block; font-size:.88rem; color:var(--blaek-2); margin-top:1px}
.modul-r .m-nr{
  flex:none; width:32px; height:32px; border-radius:9px;
  background:var(--skilt); color:#fff; box-shadow:inset 0 0 0 2px var(--skilt), 0 0 0 2px var(--skilt);
  display:grid; place-items:center; font-weight:800; font-size:.95rem;
  font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  border:2px solid #fff;
}
.modul-pris{
  flex:none; font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif;
  font-size:1.3rem; color:var(--skilt); font-variant-numeric:tabular-nums; white-space:nowrap;
}
.modul-r.sum{background:var(--flade-2); border-top:2px solid var(--skilt)}
.modul-r.sum .modul-pris{color:var(--blaek)}

/* --- erhvervs-samarbejde --- */
.tilbud-erhverv{
  display:flex; gap:24px; align-items:center; justify-content:space-between; flex-wrap:wrap;
  margin-top:24px; padding:24px 28px; border-radius:18px;
  background:var(--flade); border:1px solid var(--linje); border-left:5px solid var(--skilt);
  box-shadow:var(--skygge-blod);
}
.tilbud-erhverv h3{margin-top:9px; font-size:1.2rem}
.tilbud-erhverv p{margin-top:8px; color:var(--blaek-2); max-width:62ch}
.tilbud-erhverv .btn{flex:none}
@media (max-width:700px){
  .tilbud-erhverv{padding:20px 18px}
  .tilbud-erhverv .btn{width:100%; justify-content:center}
  .modul-r{padding:13px 14px; gap:11px}
  .modul-pris{font-size:1.15rem}
}

/* --- selve pladsholder-markeringen --- */
.pris-mangler{
  position:relative; color:#B7791F !important;
  text-decoration:line-through;
  text-decoration-color:color-mix(in srgb, #B7791F 55%, transparent);
}
.pris-mangler::after{
  content:"UDFYLDES"; display:inline-block; margin-left:9px; vertical-align:middle;
  font-size:.58rem; font-weight:800; letter-spacing:.1em; white-space:nowrap;
  text-decoration:none; padding:3px 8px; border-radius:999px;
  background:color-mix(in srgb, #B7791F 15%, transparent);
  color:#B7791F; border:1px dashed #B7791F;
}
/* Bevidst IKKE en stiplet ramme om hele bånd/kort længere: det blev rodet
   med tre markeringer oven i hinanden (ramme + to mærkater). Nu markeres
   kun selve det tal eller den linje, der mangler. Olivers fund 26/7. */
.tilbud-baand.pris-mangler{text-decoration:none; color:inherit !important}
.tilbud-baand.pris-mangler::after{display:none}
@media (prefers-color-scheme: dark){
  .tilbud-udfyld{color:#E0A64B; border-left-color:#E0A64B}
  .pris-mangler{color:#E0A64B !important; text-decoration-color:color-mix(in srgb, #E0A64B 55%, transparent)}
  .pris-mangler::after{background:color-mix(in srgb, #E0A64B 15%, transparent); color:#E0A64B; border-color:#E0A64B}
  .tilbud-baand.pris-mangler{border-color:#E0A64B}
}
@media (max-width:700px){
  .tilbud-frem{padding:22px 18px}
  .tilbud-baand{padding:20px 18px; gap:16px}
  .tilbud-baand-pris{text-align:left; justify-items:start}
  .tilbud-kort{padding:18px}
}

/* =====================================================================
   MIN SIDE PÅ TELEFON (23/7)
   Eleverne bruger siden på farten — typisk til at melde afbud. Ved
   375px er et kalenderfelt kun ~45px bredt, så "15.00 · køretime" blev
   klippet til "15.0…" og sagde ingenting. Løsningen: kalenderen er
   OVERBLIK (kun klokkeslæt, farven fortæller hvad det er), og listen
   "Dine kommende aftaler" nedenunder er der, man handler — med knapper
   i fuld bredde, der er til at ramme med en tommelfinger.
   ===================================================================== */
@media (max-width:700px){
  .ms-kal .kal-detalje{display:none}
  .ms-kal .a-kal{gap:3px}
  .ms-kal .a-kal-dag{min-height:56px; padding:4px 3px}
  .ms-kal .a-kal-dag > b{font-size:.72rem}
  .ms-kal .a-kal-uh{font-size:.62rem; letter-spacing:.02em}
  .ms-kal .a-kal-lekt{
    font-size:.66rem; padding:4px 3px; margin-top:3px;
    min-height:24px; text-align:center; letter-spacing:-.01em;
  }
  /* Afbuds-chippen mister sin gennemstregning i så lille en skrift —
     den røde stiplede ramme bærer betydningen alene */
  .ms-kal .a-kal-lekt.afbud{text-decoration:none}

  /* Aftale-listen: teksten øverst, knappen i fuld bredde nedenunder */
  .ms-handling{align-items:stretch; gap:9px; padding:13px 0}
  .ms-handling-tekst{flex:1 1 100%}
  .ms-handling .a-minik{width:100%; padding:12px; font-size:.95rem}
  .ms-handling .ms-laast{align-self:flex-start}
  .ms-besked{display:flex}

  /* Sen-afbud-dialogen skal kunne læses OG bruges på en lille skærm */
  .tel-daekke{padding:12px}
  .tel-boks{padding:22px 18px 20px; max-height:92vh; overflow-y:auto}
  .tel-boks h3{font-size:1.2rem; padding-right:36px}
  .sen-accept{padding:13px 14px; font-size:.92rem}

  /* Lidt mere luft i indholdsboksene */
  .fakta{padding:16px 16px}
}

/* =====================================================================
   SMÅ HJÆLPEKLASSER — erstatter inline style="…"

   ⚠️ BRUG ALDRIG style="…" I HTML PÅ DETTE SITE.
   Vores Content-Security-Policy har `style-src 'self'` uden
   'unsafe-inline'. Browseren AFVISER derfor enhver style-attribut —
   uden en fejl, uden en advarsel. Siden ser bare forkert ud.
   Det ramte 155 attributter på 15 sider, før det blev opdaget:
   Min side skulle være 640px bred og blev 1120px. (Olivers fund 5/8.)
   Skal noget styles, så giv det en klasse her.
   ===================================================================== */
.u-arv{color:inherit}
.u-mt14-op75-fs95-mwc34{margin-top:14px; opacity:.75; font-size:.95rem; max-width:34ch}
.u-mt36{margin-top:36px}
.u-mt10{margin-top:10px}
.u-mt16{margin-top:16px}
.u-mt0{margin-top:0}
.u-mt12-blaek2{margin-top:12px; color:var(--blaek-2)}
.u-mt12-fs92-blaek2{margin-top:12px; font-size:.92rem; color:var(--blaek-2)}
.u-fw700{font-weight:700}
.u-mb8{margin-bottom:8px}
.u-mr6{margin-right:6px}
.u-mt12-fs92{margin-top:12px; font-size:.92rem}
.u-mw620{max-width:620px}
.u-mt10-blaek2{margin-top:10px; color:var(--blaek-2)}
.u-mw760{max-width:760px}
.u-mw640{max-width:640px}
.u-mt22{margin-top:22px}
.u-mt10-lh17{margin-top:10px; line-height:1.7}
.u-mt28-fs92-blaek2{margin-top:28px; font-size:.92rem; color:var(--blaek-2)}
.u-mt24{margin-top:24px}
.u-pt0{padding-top:0}
.u-pt18{padding-top:18px}
.u-mt12{margin-top:12px}
.u-mt14-blaek2{margin-top:14px; color:var(--blaek-2)}
.u-ml8{margin-left:8px}
.u-mt24-fs105{margin-top:24px; font-size:1.05rem}
.u-aistart{align-items:start}
.u-mt16-blaek2-mwc58{margin-top:16px; color:var(--blaek-2); max-width:58ch}
.u-blaek{color:var(--blaek)}
.u-fw700-tdnone{font-weight:700; text-decoration:none}
.u-fs92-fw600{font-size:.92rem; font-weight:600}
.u-mt6{margin-top:6px}
.u-mt10-fs85-blaek2{margin-top:10px; font-size:.85rem; color:var(--blaek-2)}
.u-flex1-minw200{flex:1; min-width:200px}
.u-mt12-fw600{margin-top:12px; font-weight:600}
.u-mt6-fw600{margin-top:6px; font-weight:600}
.u-mt16-fs92-blaek2{margin-top:16px; font-size:.92rem; color:var(--blaek-2)}
.u-mt8{margin-top:8px}
.u-mw720{max-width:720px}
.u-mt10-fs92-blaek2{margin-top:10px; font-size:.92rem; color:var(--blaek-2)}
.u-mb12{margin-bottom:12px}
.u-pb0{padding-block:0}
.u-mt12-fs9{margin-top:12px; font-size:.9rem}
.u-mt10-bt4solidvar--skilt{margin-top:10px; border-top:4px solid var(--skilt)}
.u-mt8-blaek2{margin-top:8px; color:var(--blaek-2)}
.u-pb1840{padding-block:18px 40px}
.u-mt30{margin-top:30px}
