/* ===== 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}

.wrap{max-width:1120px; margin-inline:auto; padding-inline:clamp(16px,4vw,32px)}
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 ===== */
.topbar{background:var(--moerk-flade); color:var(--moerk-tekst); font-size:.85rem; border-bottom:3px solid var(--roed)}
.topbar .wrap{display:flex; justify-content:space-between; gap:16px; padding-block:7px}
.topbar a{color:inherit; text-decoration:none}
.topbar a:hover{text-decoration:underline}
.topbar .th{opacity:.7}

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}
  .topbar .th{display:none}
}

/* ===== 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)}
}
@media (hover: none){
  .karrusel{scroll-snap-type:x mandatory}
  .karrusel .kort{scroll-snap-align:center; flex-basis:min(78vw,320px)}
}
.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} }

/* ===== Prisberegner ===== */
/* OBS: overflow SKAL være visible, ellers klippes de egne dropdowns (.dd-liste)
   af ved boksens kant. De runde hjørner klares derfor af .beregner-højre selv. */
.beregner{background:var(--flade); border:1px solid var(--linje); border-radius:20px; box-shadow:var(--skygge); overflow:visible; margin-top:36px}
.beregner-grid{display:grid; grid-template-columns:1.2fr .8fr}
.beregner-venstre{padding:clamp(22px,4vw,36px)}
.beregner-højre{
  background:linear-gradient(160deg, #0D4EA3 0%, #093A7C 78%, #2A1218 130%);
  color:#fff; padding:clamp(22px,4vw,36px);
  display:flex; flex-direction:column; gap:10px;
  border-radius:0 19px 19px 0;
}
@media (max-width:760px){
  .beregner-grid{grid-template-columns:1fr}
  .beregner-højre{border-radius:0 0 19px 19px}
}
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)}
.lektioner{display:flex; align-items:center; gap:14px; margin-bottom:8px}
.lektioner input[type=range]{flex:1; accent-color:var(--roed)}
.lektioner output{font-weight:800; min-width:2.4ch; text-align:right; font-variant-numeric:tabular-nums}
.lekt-note{font-size:.85rem; color:var(--blaek-2)}
.total-linjer{list-style:none; margin:0; padding:0; display:grid; gap:8px; font-size:.95rem}
.total-linjer li{display:flex; justify-content:space-between; gap:14px; opacity:.92}
.total-linjer li span:last-child{font-variant-numeric:tabular-nums; white-space:nowrap}
.total-sum{
  margin-top:auto; padding-top:16px; border-top:2px dashed rgba(255,255,255,.4);
  display:flex; justify-content:space-between; align-items:baseline; gap:10px;
}
.total-sum strong{font-size:clamp(1.6rem,3vw,2.1rem); font-variant-numeric:tabular-nums; font-family:"Bahnschrift","Avenir Next Condensed","Futura",Arial,sans-serif}
.beregner-disclaimer{font-size:.8rem; opacity:.75; margin-top:10px}

/* ===== Holdstart ===== */
.hold-sektion{background:var(--flade-2)}
.nedtaelling{display:flex; gap:clamp(10px,2vw,18px); margin-top:30px; flex-wrap:wrap}
.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:86px; flex:1; max-width:140px;
}
.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}
.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); font-size:1.15rem;
}
.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}

.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)}
@media (max-width:480px){
  .bot-panel{right:12px; left:12px; width:auto; bottom:78px}
  .bot-knap{right:12px; bottom:12px}
}

/* ===== 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}
.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}

/* 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);
}
.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}
}
