/* Slaapstrippie: zacht, rustig en kindvriendelijk. Geen externe lettertypen of scripts. */
:root {
  --nacht: #1b1f4b;
  --nacht-diep: #12163a;
  --creme: #fff8ec;
  --zand: #f6ead5;
  --geel: #ffd66b;
  --geel-donker: #e9b93a;
  --koraal: #ff8a7a;
  --lila: #cdbdff;
  --tekst: #2b2b3a;
  --tekst-zacht: #5a5870;
  --rand: #2b2b3a;
  --fout: #b3261e;
  --straal: 18px;
  --max: 1080px;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } * { animation: none !important; transition: none !important; } }
body {
  margin: 0;
  font-family: ui-rounded, "SF Pro Rounded", "Nunito", "Segoe UI", system-ui, -apple-system, sans-serif;
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--tekst);
  background: var(--creme);
}
img { max-width: 100%; height: auto; display: block; }
a { color: #3b3fa6; text-underline-offset: 3px; }
a:hover { color: var(--nacht); }
h1, h2, h3 { line-height: 1.2; color: var(--nacht); margin: 0 0 .5em; }
h1 { font-size: clamp(2rem, 5.2vw, 3.1rem); }
h2 { font-size: clamp(1.6rem, 3.6vw, 2.1rem); }
h3 { font-size: 1.2rem; }
p { margin: 0 0 1em; }
.binnen { width: min(100% - 32px, var(--max)); margin-inline: auto; }
.smal { width: min(100% - 32px, 720px); }
.midden { text-align: center; }
.klein { font-size: .9rem; color: var(--tekst-zacht); }
.nog-invullen { background: #ffe1dc; color: var(--fout); padding: 0 .25em; border-radius: 4px; font-weight: 600; }

/* toegankelijkheid */
.sla-over { position: absolute; left: -999px; top: 0; background: var(--geel); color: var(--nacht); padding: 8px 14px; z-index: 100; }
.sla-over:focus { left: 8px; top: 8px; }
:focus-visible { outline: 3px solid #3b3fa6; outline-offset: 3px; border-radius: 4px; }

/* kop */
.kop { background: var(--nacht); color: var(--creme); position: sticky; top: 0; z-index: 50; }
.kop-binnen { width: min(100% - 32px, var(--max)); margin-inline: auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; flex-wrap: wrap; }
.logo { display: flex; align-items: center; gap: 8px; color: var(--creme); text-decoration: none; font-weight: 800; font-size: 1.25rem; }
.logo:hover { color: var(--geel); }
.menu { display: flex; align-items: center; gap: 4px 18px; flex-wrap: wrap; }
.menu a { color: var(--creme); text-decoration: none; font-weight: 600; padding: 6px 2px; }
.menu a:hover { color: var(--geel); text-decoration: underline; }
.menu a.knop, .menu a.knop:hover { color: var(--nacht); text-decoration: none; }
@media (max-width: 640px) { .menu a:not(.knop) { display: none; } }

/* knoppen */
.knop {
  display: inline-block; background: var(--geel); color: var(--nacht); font: inherit; font-weight: 800;
  padding: .75em 1.4em; border-radius: 999px; border: 2px solid var(--nacht); text-decoration: none; cursor: pointer;
  box-shadow: 0 3px 0 var(--nacht); transition: transform .08s, box-shadow .08s;
}
.knop:hover { background: #ffe08c; color: var(--nacht); }
.knop:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--nacht); }
.knop-licht { background: #fff; }
.knop-licht:hover { background: var(--zand); }
.knop-klein { padding: .35em 1em; font-size: .95rem; box-shadow: none; border-color: var(--geel); }
.knop-groot { font-size: 1.15rem; padding: .85em 1.8em; }
.acties { display: flex; flex-wrap: wrap; gap: 12px; margin: 0 0 1em; }

/* hero */
.hero { background: linear-gradient(180deg, var(--nacht) 0%, #2a2f6e 100%); color: var(--creme); padding: 48px 0 56px; position: relative; overflow: hidden; }
.hero::before { content: ""; position: absolute; inset: 0; background-image: radial-gradient(2px 2px at 20% 30%, #fff8 50%, transparent 52%), radial-gradient(2px 2px at 70% 20%, #fff8 50%, transparent 52%), radial-gradient(3px 3px at 85% 60%, #ffd66bcc 50%, transparent 52%), radial-gradient(2px 2px at 40% 80%, #fff8 50%, transparent 52%), radial-gradient(2px 2px at 10% 70%, #fff8 50%, transparent 52%); pointer-events: none; }
.hero h1 { color: #fff; }
.hero-binnen { display: grid; grid-template-columns: 1.15fr 1fr; gap: 40px; align-items: center; position: relative; }
.label { font-size: .85rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--geel); margin-bottom: .6em; }
.markeer { background: linear-gradient(transparent 62%, #ff8a7a88 62%); }
.intro { font-size: 1.2rem; color: #ece8ff; }
.plekken { margin: 0; font-weight: 600; color: var(--geel); }
.hero .knop-licht { background: transparent; color: #fff; border-color: #fff; box-shadow: none; }
.hero .knop-licht:hover { background: #fff2; color: #fff; }
.hero-plaatje { margin: 0; }
.hero-plaatje img { border: 4px solid var(--creme); border-radius: var(--straal); box-shadow: 0 12px 30px #0006; transform: rotate(1.5deg); }
.hero-plaatje figcaption { margin-top: 12px; font-size: .9rem; color: #cfc9f0; text-align: center; }
@media (max-width: 820px) { .hero-binnen { grid-template-columns: 1fr; } .hero-plaatje { max-width: 420px; margin-inline: auto; } }

/* blokken */
.blok { padding: 64px 0; }
.blok-licht { background: var(--zand); }
.blok-nacht { background: var(--nacht); color: var(--creme); }
.blok-nacht h2, .blok-nacht h3 { color: #fff; }
.blok-intro { max-width: 640px; color: var(--tekst-zacht); }
.stappen { list-style: none; padding: 0; margin: 28px 0 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.stappen li { background: #fff; border: 3px solid var(--rand); border-radius: var(--straal); padding: 24px; position: relative; }
.stappen .nummer { display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--geel); border: 2px solid var(--rand); font-weight: 800; margin-bottom: 10px; }
@media (max-width: 820px) { .stappen { grid-template-columns: 1fr; } }

.paneel-rij { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin: 24px 0; }
.paneel { margin: 0; background: #fff; border: 3px solid var(--rand); border-radius: 14px; overflow: hidden; }
.paneel figcaption { padding: 10px 12px 14px; font-size: .95rem; line-height: 1.45; }
@media (max-width: 960px) { .paneel-rij { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .paneel-rij { grid-template-columns: 1fr; } }

.kaarten { list-style: none; padding: 0; margin: 24px 0 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.kaarten li { background: #fff; border-radius: var(--straal); border: 2px solid #e3d5b8; padding: 20px; }
.kaarten p { margin: 0; color: var(--tekst-zacht); }
@media (max-width: 960px) { .kaarten { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .kaarten { grid-template-columns: 1fr; } }

/* prijs */
.gratis { background: var(--geel); color: var(--nacht); border-radius: var(--straal); padding: 22px 24px; margin: 20px 0 28px; border: 3px solid #fff; }
.blok-nacht .gratis h3 { color: var(--nacht); }
.gratis p { margin: 0; }
.prijzen { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; max-width: 760px; margin-inline: auto; }
.prijs { background: #fff; color: var(--tekst); border-radius: var(--straal); padding: 28px 24px; position: relative; }
.prijs h3 { color: var(--nacht); }
.prijs-beste { border: 4px solid var(--geel); }
.badge { position: absolute; top: -16px; right: 18px; background: var(--koraal); color: #fff; font-weight: 800; font-size: .85rem; padding: 4px 12px; border-radius: 999px; margin: 0; }
.bedrag { margin: 0; }
.euro { font-size: 2.6rem; font-weight: 800; color: var(--nacht); line-height: 1; }
.per { color: var(--tekst-zacht); }
.perdag { font-weight: 700; color: #3b3fa6; margin: 6px 0 14px; }
.prijs ul { margin: 0; padding-left: 1.2em; color: var(--tekst-zacht); }
.blok-nacht .klein { color: #cfc9f0; }
@media (max-width: 640px) { .prijzen { grid-template-columns: 1fr; gap: 28px; } }

/* vragen */
details { background: #fff; border: 2px solid #e3d5b8; border-radius: 14px; padding: 4px 18px; margin-bottom: 10px; }
summary { cursor: pointer; font-weight: 700; padding: 12px 0; color: var(--nacht); }
details[open] summary { margin-bottom: 4px; }
details p { color: var(--tekst-zacht); }

/* formulier */
.formulier { background: #fff; border: 3px solid var(--rand); border-radius: var(--straal); padding: 24px; margin-top: 20px; }
fieldset { border: 0; padding: 0; margin: 0 0 22px; }
legend { font-weight: 800; font-size: 1.15rem; color: var(--nacht); padding: 0; margin-bottom: 10px; }
.formulier label { display: block; font-weight: 600; margin: 12px 0 4px; }
.optioneel { font-weight: 400; color: var(--tekst-zacht); }
.formulier input[type="text"], .formulier input[type="email"], .formulier select {
  width: 100%; font: inherit; padding: .65em .8em; border: 2px solid #b9b4a4; border-radius: 10px; background: #fff; color: var(--tekst);
}
.formulier input:focus, .formulier select:focus { border-color: #3b3fa6; outline: 3px solid #3b3fa633; }
.formulier input[aria-invalid="true"], .formulier select[aria-invalid="true"] { border-color: var(--fout); }
.hulp { font-size: .9rem; color: var(--tekst-zacht); margin: 6px 0 0; }
.keuze { display: flex; gap: 10px; align-items: flex-start; margin-top: 8px; }
.keuze input { width: 1.2em; height: 1.2em; margin-top: .3em; flex: none; accent-color: #3b3fa6; }
.keuze label { margin: 0; font-weight: 500; }
.toestemming { margin: 8px 0 20px; padding: 14px; background: var(--creme); border-radius: 12px; }
.honing { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.foutmelding { background: #ffe1dc; color: #7a1710; border: 2px solid var(--fout); border-radius: 12px; padding: 12px 16px; margin-bottom: 18px; }
.foutmelding ul { margin: 0; padding-left: 1.2em; }
.gelukt { background: #e6f6e6; border: 3px solid #2f7d32; border-radius: var(--straal); padding: 24px; margin-top: 20px; }
.gelukt h3 { color: #1b5e20; }

/* tekstpagina's */
.tekstpagina { padding: 48px 0 64px; max-width: 760px; }
.tekstpagina h2 { margin-top: 1.6em; font-size: 1.35rem; }
.tekstpagina ul { padding-left: 1.2em; }
.midden-tekst { text-align: center; }

/* voorbeeldpagina */
.voorbeeld-kop { padding: 40px 0 8px; max-width: 760px; }
.voorbeeld-kop .label { color: #7a5f00; }
.verhaal { margin: 16px 0 32px; }
.a4pagina { margin-bottom: 20px; }
.paneel-raster { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.paneel-raster .paneel figcaption { font-size: 1.05rem; }
@media (max-width: 640px) { .paneel-raster { grid-template-columns: 1fr; } }
.welterusten { text-align: center; font-size: 1.3rem; font-weight: 700; color: var(--nacht); margin: 18px 0; }
.karakterblad { background: var(--zand); border-radius: var(--straal); padding: 24px; margin: 24px 0; }
.karakterblad img { border-radius: 12px; border: 3px solid var(--rand); margin-top: 12px; }

/* voet */
.voet { background: var(--nacht-diep); color: #cfc9f0; padding: 36px 0; margin-top: 0; }
.voet-binnen { display: grid; grid-template-columns: 1.4fr 1fr; gap: 20px 40px; }
.voet-merk { font-weight: 800; color: #fff; font-size: 1.2rem; margin-bottom: .2em; }
.voet a { color: #fff; display: block; padding: 3px 0; }
.voet .klein { color: #a9a3d2; }
.voet-binnen > .klein { grid-column: 1 / -1; margin: 0; }
@media (max-width: 640px) { .voet-binnen { grid-template-columns: 1fr; } }

/* print: elk verhaal op A4, vier plaatjes per vel */
@media print {
  @page { size: A4; margin: 0; }
  body { background: #fff; font-size: 11pt; }
  .kop, .voet, .sla-over, .acties, [data-print], .karakterblad, .midden, .voorbeeld-kop .intro { display: none !important; }
  .binnen { width: auto; margin: 0; }
  .voorbeeld-kop { padding: 9mm 10mm 0; max-width: none; }
  .voorbeeld-kop h1 { font-size: 20pt; text-align: center; }
  .voorbeeld-kop .label { display: none; }
  .verhaal { margin: 0; padding: 0 10mm; }
  .a4pagina { break-after: page; margin: 0; padding-top: 4mm; }
  .a4pagina:last-of-type { break-after: auto; }
  .paneel-raster { grid-template-columns: 1fr 1fr; gap: 8px; }
  .paneel { border-width: 2px; break-inside: avoid; }
  .paneel img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }
  .paneel figcaption, .paneel-raster .paneel figcaption { font-size: 9.5pt; line-height: 1.3; padding: 6px 8px; }
  .welterusten { font-size: 12pt; margin: 8px 0; }
}
