/* ============================================================
   ULTIMATE PLAYOUT — SIGNAL GLOW
   ============================================================

   Dit bestand wordt op twee plekken geladen: op de site en in de
   blokkeneditor. Daarom staan de klassen er telkens dubbel in — de kale
   naam (.card) en de blokstijl die WordPress ervan maakt (.is-style-card).
   Kies je de stijl in de zijbalk, dan schrijft WordPress is-style-card;
   typ je zelf een klasse, dan werkt die net zo goed.
   ============================================================ */

:root {
  --bg: #070d16;
  --fg: #eef3fa;
  --muted: #8b9aad;
  --dim: #5f6f81;
  --line: rgba(255, 255, 255, .1);
  --glass: rgba(255, 255, 255, .045);

  /* Het leesvlak. Niet --glass: dat is 4,5% wit en laat de vlekken en de
     fijne diagonaal van de achtergrond er gewoon doorheen komen. Deze kleur
     dekt af, zodat tekst overal op de pagina op hetzelfde rustige vlak ligt
     en niet toevallig boven een blauwe of amberkleurige vlek. */
  --panel: rgba(13, 22, 32, .92);

  /* Tekstkleur voor lange stukken. --muted (#8b9aad) is gemaakt voor losse
     regels naast een kop, niet om alinea's lang achter elkaar te lezen:
     6,4:1 tegen het leesvlak. Deze haalt 10:1 en blijft in dezelfde
     blauwgrijze familie. */
  --read: #b4c2d2;

  --o1: #3d9bd4;
  --o2: #c8912a;
  --o3: #4a9e57;
  --o4: #8e44c8;

  --font: "Segoe UI Variable Display", "Segoe UI", system-ui, -apple-system, sans-serif;
  --font-text: "Segoe UI Variable Text", "Segoe UI", system-ui, sans-serif;
  --font-mono: "Cascadia Mono", Consolas, "SF Mono", ui-monospace, monospace;

  --app-bg: #10202c;
  --app-line: #24404f;
  --app-fg: #cfe0ec;
  --app-muted: #7e97a8;
  --app-red: #e0655c;
  --onair: #d63a2f;
  --next: #37c46a;

  --shell: 1240px;
  --gutter: 28px;
}

* { box-sizing: border-box; }

/* ============================================================
   DE PAGINA
   ============================================================ */
html, body { background: #070d16; }

/* De ruimte voor de schuifbalk staat altijd gereserveerd, ook op een pagina
   die niet schuift. Anders is de inhoudskolom op een korte pagina een paar
   pixels breder dan op een lange, en verspringt alles zichtbaar zodra je van
   de ene naar de andere gaat. */
html { scrollbar-gutter: stable; }

body {
  color: var(--fg);
  font-family: var(--font-text);
  line-height: 1.6;
  margin: 0;
  color-scheme: dark;
  position: relative;
  overflow-x: hidden;
}
@supports (overflow: clip) {
  body { overflow-x: clip; }
}

/* Kolomindeling zodat de inhoud uitrekt en de voetband onderaan blijft
   plakken, ook als er weinig op de pagina staat. */
.wp-site-blocks {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.wp-site-blocks > main { flex: 1 0 auto; }
.admin-bar .wp-site-blocks { min-height: calc(100vh - 32px); }
@media screen and (max-width: 782px) {
  .admin-bar .wp-site-blocks { min-height: calc(100vh - 46px); }
}

/* ============================================================
   DE ACHTERGROND
   Geen blok maar decoratie: functions.php zet hem na <body>.
   ============================================================ */
.up-backdrop {
  position: absolute; inset: 0; overflow: hidden;
  z-index: 0; pointer-events: none;
}
.up-no-backdrop .up-backdrop { display: none; }

/* De breuklijn is een gedraaid blok, geen kleurstop in een verloop.
   Een stop in een verloop ligt op een percentage van de gradient-as, en waar
   die as loopt hangt af van de afmetingen van het vlak — onvoorspelbaar dus.
   Met een gedraaid blok is de bovenrand de lijn: top bepaalt de plek, de
   rotatie de hoek. Beide staan vast. De hoek is gelijk aan die van de fijne
   lijnen hieronder: 145deg in een verloop komt neer op 35 graden. */
.bg-break {
  position: absolute; left: -60%; right: -60%;
  top: min(70vh, 640px);
  height: 2600px;
  transform: rotate(-35deg);
  transform-origin: 50% 0;
  /* Een dunne lijn op de rand zelf, zodat de kleurovergang erachter
     wegvalt. */
  border-top: 1px solid rgba(255, 255, 255, .06);
  background: linear-gradient(180deg,
    rgba(61, 139, 253, .13) 0%,
    rgba(61, 139, 253, .07) 20%,
    rgba(245, 165, 36, .05) 42%,
    transparent 75%);
}
.up-backdrop::after {
  content: ""; position: absolute; inset: 0;
  background: repeating-linear-gradient(145deg, rgba(255, 255, 255, .028) 0 1px, transparent 1px 46px);
}

.orb { position: absolute; border-radius: 50%; filter: blur(80px); }
.orb-1 { width: 520px; height: 520px; background: rgba(61, 155, 212, .26); top: -160px; left: -110px; }
.orb-2 { width: 460px; height: 460px; background: rgba(200, 145, 42, .20); top: 220px; right: -150px; }
.orb-3 { width: 400px; height: 400px; background: rgba(142, 68, 200, .15); bottom: -140px; left: 38%; }

/* ============================================================
   DE KOLOMBREEDTE
   theme.json houdt de blokken op 1240 px; de zijruimte staat hier,
   zodat de balken van de kop- en voettekst wél tot de rand doorlopen.
   ============================================================ */
.site-main { padding-inline: var(--gutter); }

.nav-inner,
.foot-inner {
  max-width: var(--shell);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* ============================================================
   NAVIGATIE
   ============================================================ */
/*
 * De balk blijft in beeld tijdens het scrollen.
 *
 * Het plakken staat op het <header>-element en niet op .nav daarbinnen. Een
 * sticky element beweegt namelijk alleen binnen zijn ouder, en die header is
 * precies zo hoog als de balk zelf — dan is er nul ruimte om mee te lopen en
 * gebeurt er niets. Het <header> is wél een direct kind van .wp-site-blocks,
 * dat zo hoog is als de hele pagina.
 */
.wp-site-blocks > header {
  position: sticky;
  top: 0;
  z-index: 10;
}
/* de beheerbalk van WordPress staat er bovenop */
.admin-bar .wp-site-blocks > header { top: 32px; }
@media screen and (max-width: 782px) {
  .admin-bar .wp-site-blocks > header { top: 46px; }
}

/*
 * De beheerbalk op een telefoon.
 *
 * Onder 600px zet WordPress `#wpadminbar` op `position: absolute` in plaats van
 * `fixed`, zodat de balk meescrolt en op een klein scherm geen 46px opslokt.
 * Dat levert hier twee dingen op die allebei fout gaan.
 *
 * Eén: een absoluut geplaatst element rekent zijn plek uit vanaf de dichtstbij-
 * zijnde geplaatste voorouder, en dat is hier <body> — die staat op
 * `position: relative` voor de achtergronddecoratie hierboven. WordPress duwt
 * met `html { margin-top: 46px !important }` de pagina omlaag om ruimte voor de
 * balk te maken, dus body begint al op 46px. De balk landt daardoor op 46px in
 * plaats van op 0, precies bovenop de kop van de site. Dat is niet iets wat
 * WordPress verkeerd doet: core gaat ervan uit dat body niet geplaatst is.
 * De balk 46px terugtrekken zet hem in de ruimte die er al voor gereserveerd is.
 *
 * Twee: de kop plakt op `top: 46px`, en dat klopt zolang de balk vást staat.
 * Hier scrolt hij weg, dus blijft er onder die 46px een strook achtergrond
 * boven de kop hangen zolang je scrolt. Op nul, dan plakt hij tegen de rand.
 *
 * De 46 en de 600 zijn van WordPress zelf (admin-bar.css); het thema noemt die
 * maten hierboven al.
 */
@media screen and (max-width: 600px) {
  .admin-bar #wpadminbar { top: -46px; }
  .admin-bar .wp-site-blocks > header { top: 0; }
}

.nav {
  /* Het uitklappende menu hangt hieraan vast. */
  position: relative;
  font-size: 13px; color: var(--muted);
  border-bottom: 1px solid rgba(255, 255, 255, .06);
  background: color-mix(in srgb, var(--bg) 78%, transparent);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}

.nav-inner { padding-block: 16px; }
.nav-inner > * { margin-block: 0; }

/* Het merk is één link: mark en beide woorden. */
.brand {
  flex: none; display: flex; align-items: center; gap: 11px;
  text-decoration: none; color: inherit;
}
.brand:focus-visible { outline: 2px solid var(--o1); outline-offset: 3px; border-radius: 4px; }
.brand-mark { width: 34px; height: 34px; display: block; flex: none; }
.brand-text { display: flex; flex-direction: column; font-family: var(--font); line-height: 1.06; }
.brand-1, .brand-2 {
  margin: 0; font-size: 13px; letter-spacing: .12em; text-transform: uppercase;
}
.brand-1 { font-weight: 500; color: var(--muted); }
.brand-2 { font-weight: 700; color: var(--fg); }
.brand:hover .brand-2 { color: var(--o1); }

.nav .wp-block-navigation { font-size: 13px; }
.nav .wp-block-navigation a { color: inherit; text-decoration: none; }
.nav .wp-block-navigation a:hover { color: var(--fg); }
.nav .wp-block-navigation a:focus-visible { outline: 2px solid var(--o1); outline-offset: 3px; }

/*
 * Alles ná het menu staat rechts.
 *
 * De vrije ruimte zit op het menu zelf, niet op de badge of de accountknop.
 * Dat scheelde eerder een bug: de auto-marge stond op de badge, en op smalle
 * schermen nam de accountknop die taak over — twee breekpunten die gelijk
 * moesten lopen. Zodra er eentje verschoof, zat er een reeks breedtes tussen
 * waar niemand de ruimte opeiste en de accountknop halverwege bleef hangen.
 * Op het menu werkt het bij elke breedte, ook als de badge er niet is.
 */
.nav-inner > .wp-block-navigation { margin-right: auto; }

/* De badge en de accountknop staan daardoor uiterst rechts. */
.nav .dl {
  color: var(--o1); border: 1px solid rgba(61, 155, 212, .4);
  padding: 6px 14px; border-radius: 8px; font-size: 12.5px; white-space: nowrap;
}

/* ============================================================
   HET MENU OP EEN SMAL SCHERM
   ============================================================

   De balk klapt zelf uit. Het menu zakt naar een tweede regel bínnen de
   balk, die daardoor hoger wordt en de pagina eronder vooruitduwt. Er
   hangt niets los boven de pagina, dus er is ook niets dat verkeerd kan
   komen te staan.

   Daarom staat het navigatieblok in parts/header.html op
   overlayMenu:"never". De schermvullende laag van WordPress is uit, en
   met die laag ook het script dat hem opent — de kern levert het alleen
   mee als het overlay-menu aanstaat. De knop die het hier wel doet is
   up/nav-toggle, aangestuurd door assets/js/ui.js.
   ============================================================ */

/*
 * Een vangnet, geen dagelijkse kost.
 *
 * Met overlayMenu:"never" schrijft WordPress de menulijst rechtstreeks in
 * de <nav> en is er van dit omhulsel geen spoor. Zet iemand in de
 * site-editor het overlay-menu weer aan, dan staat het er ineens wél, en
 * dan als position:fixed schermvullend vlak dat onder de 600 px op
 * display:none staat. Deze regels maken er dan gewone inhoud in de balk
 * van, zodat de kopbalk blijft werken in plaats van leeg te lijken.
 */
.nav .wp-block-navigation__responsive-container {
  position: static;
  display: block;
  width: 100%;
  background: transparent;
}

/* De hamburger en het kruisje van de kern horen bij die laag en doen hier
   niets meer; de knop van het thema staat hieronder. */
.nav .wp-block-navigation__responsive-container-open,
.nav .wp-block-navigation__responsive-container-close { display: none; }

/*
 * De knop zelf: drie streepjes die openklappen tot een kruisje.
 *
 * Hij staat er alleen op een smal scherm, en alleen als ui.js draait — die
 * zet .nav-js op de balk. Zonder script blijft het menu gewoon staan waar
 * het staat, op die tweede regel, en is een knop die niets doet erger dan
 * geen knop.
 */
.nav-toggle {
  display: none;
  flex: none;
  align-items: center;
  justify-content: center;
  padding: 7px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  transition: color .16s, background-color .16s;
}
.nav-toggle:hover { color: var(--fg); background: rgba(255, 255, 255, .06); }
.nav-toggle:focus-visible { outline: 2px solid var(--o1); outline-offset: 2px; }

.nav-toggle-bars { position: relative; display: block; width: 22px; height: 16px; }
.nav-toggle-bars span {
  position: absolute; left: 0; right: 0; height: 2px;
  border-radius: 2px; background: currentColor;
  transition: transform .2s ease, opacity .12s ease;
}
.nav-toggle-bars span:nth-child(1) { top: 0; }
.nav-toggle-bars span:nth-child(2) { top: 7px; }
.nav-toggle-bars span:nth-child(3) { top: 14px; }

.nav.is-open .nav-toggle-bars span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav.is-open .nav-toggle-bars span:nth-child(2) { opacity: 0; }
.nav.is-open .nav-toggle-bars span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/*
 * Het breekpunt van de balk.
 *
 * Niet zo laat mogelijk, maar op de breedte waar de regel écht niet meer
 * past: merk, vier menu-items, doneren, downloaden en de accountknop zijn
 * samen zo'n 930 px. Daaronder brak de regel in tweeën, met de accountknop
 * alleen op een tweede regel. Vanaf hier gaat het menu dus achter de knop,
 * ook op een tablet.
 */
@media (max-width: 1000px) {
  .nav-js .nav-toggle { display: flex; }

  /* De volgorde in de balk: merk links, dan de accountknop en de knop, en
     het menu op een regel eronder. In parts/header.html staat de knop vóór
     het menu, zodat je met de tab-toets van de knop zó in het menu komt. */
  .nav-js > .nav-inner > .brand { order: 0; margin-right: auto; }
  .nav-js > .nav-inner > .acct { order: 1; }
  .nav-js > .nav-inner > .nav-toggle { order: 2; }
  .nav-js > .nav-inner > .wp-block-navigation {
    order: 3;
    flex-basis: 100%;
    margin-right: 0;
    display: none;
  }

  .nav-js.is-open > .nav-inner > .wp-block-navigation {
    display: block;
    padding-bottom: 6px;
    border-top: 1px solid var(--line);
    margin-top: 4px;
    padding-top: 6px;
    animation: nav-fold .18s ease-out;
  }

  /* De links onder elkaar, groot genoeg om met een duim te raken. */
  .nav .wp-block-navigation__container {
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
  }
  .nav .wp-block-navigation-item { width: 100%; }
  .nav .wp-block-navigation-item__content {
    display: block;
    padding: 12px;
    border-radius: 10px;
    font-family: var(--font);
    font-size: 17px;
    font-weight: 600;
    letter-spacing: -.015em;
    transition: color .15s, background-color .15s;
  }
  .nav .wp-block-navigation-item__content:hover,
  .nav .wp-block-navigation-item__content:focus { background: rgba(255, 255, 255, .05); }
  .nav .current-menu-item > .wp-block-navigation-item__content {
    color: var(--fg);
    background: color-mix(in srgb, var(--o1) 14%, transparent);
    box-shadow: inset 2px 0 0 var(--o1);
  }

  /* Een submenu is hier geen zwevend vlak maar gewoon inspringende regels. */
  .nav .has-child .wp-block-navigation__submenu-container {
    position: static;
    width: 100%;
    min-width: 0;
    border: 0;
    background: transparent;
    padding-left: 12px;
    opacity: 1;
    visibility: visible;
  }
}

/*
 * Vanaf hier is de downloadknop uit de balk verdwenen — verderop bij SMALLE
 * SCHERMEN, omdat hij daar het logo verdringt. In een uitgeklapte balk is die
 * ruimte er wel, dus komt hij daar terug: onder het menu, als laatste en
 * grootste knop.
 */
@media (max-width: 720px) {
  .nav-js.is-open > .nav-inner > .dl {
    display: flex;
    order: 4;
    flex-basis: 100%;
    margin-left: 0;
    padding: 4px 0 8px;
  }
}

@keyframes nav-fold {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: none; }
}

/* ============================================================
   ACCOUNTKNOP
   ============================================================ */
.acct { position: relative; flex: none; }

.acct-login,
.acct-menu-wrap > summary {
  display: flex; align-items: center; gap: 8px;
  border: 1px solid var(--line); background: var(--glass);
  border-radius: 8px; padding: 6px 12px;
  font-size: 13px; color: var(--muted); text-decoration: none;
  white-space: nowrap; cursor: pointer;
  transition: color .16s, border-color .16s;
}
.acct-login:hover,
.acct-menu-wrap > summary:hover {
  color: var(--fg); border-color: color-mix(in srgb, var(--o1) 45%, transparent);
}
.acct-login:focus-visible,
.acct-menu-wrap > summary:focus-visible { outline: 2px solid var(--o1); outline-offset: 2px; }

.acct-menu-wrap > summary { list-style: none; }
.acct-menu-wrap > summary::-webkit-details-marker { display: none; }
.acct-menu-wrap > summary::marker { content: ""; }
.acct-menu-wrap .caret { font-size: 9px; opacity: .7; transition: transform .18s ease; }
.acct-menu-wrap[open] .caret { transform: rotate(180deg); }

/* Een geüploade foto is niet per se vierkant — WordPress vergroot niet, dus
   een lage foto komt uit de vierkante maat op zijn eigen hoogte. Vandaar
   overal object-fit in plaats van alleen een vaste breedte en hoogte. */
img.avatar { object-fit: cover; }

.acct-avatar {
  width: 22px; height: 22px; border-radius: 50%; display: block; flex: none;
  border: 1px solid var(--line);
  object-fit: cover;
}
.acct-name { max-width: 14ch; overflow: hidden; text-overflow: ellipsis; }

.acct-menu {
  position: absolute; right: 0; top: calc(100% + 7px); z-index: 60;
  display: flex; flex-direction: column; min-width: 180px;
  background: #0d1620; border: 1px solid var(--line); border-radius: 10px;
  padding: 5px; box-shadow: 0 18px 42px -16px rgba(0, 0, 0, .9);
}
.acct-menu a {
  padding: 8px 10px; border-radius: 7px;
  text-decoration: none; color: var(--muted); font-size: 13.5px;
  transition: background-color .14s, color .14s;
}
.acct-menu a:hover { background: rgba(255, 255, 255, .06); color: var(--fg); }
.acct-menu a:focus-visible { outline: 2px solid var(--o1); outline-offset: -2px; }
.acct-menu .acct-out {
  margin-top: 4px; border-top: 1px solid var(--line); border-radius: 0 0 7px 7px;
  padding-top: 10px; color: var(--dim);
}

/* ============================================================
   INLOGPAGINA
   ============================================================ */
/* Het formulier in een eigen paneel: los in de kolom leest het als
   losgeslagen velden in plaats van als één handeling. */
.up-login {
  max-width: 420px;
  background: var(--glass);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 28px 26px 24px;
  box-shadow: 0 30px 64px -28px rgba(0, 0, 0, .85);
}
.up-login #loginform > p { margin: 0 0 16px; }
.up-login label {
  display: block; font-size: 13px; color: var(--muted); margin-bottom: 6px;
}
.up-login input[type="text"],
.up-login input[type="password"] {
  width: 100%; background: var(--glass); border: 1px solid var(--line);
  border-radius: 10px; color: var(--fg); padding: 11px 14px;
  font-family: var(--font-text); font-size: 15px;
}
.up-login input[type="text"]:focus-visible,
.up-login input[type="password"]:focus-visible { outline: 2px solid var(--o1); outline-offset: 2px; }

.up-login .login-remember { margin-bottom: 0; }
.up-login .login-remember label {
  display: flex; align-items: center; gap: 9px; margin: 0; font-size: 13.5px;
  cursor: pointer;
}
.up-login .login-remember input {
  accent-color: var(--o1);
  width: 16px; height: 16px; margin: 0; flex: none;
  border-radius: 4px;
}

.up-login .login-submit { margin: 22px 0 0; }
.up-login #wp-submit {
  width: 100%; cursor: pointer; border: 0;
  background: linear-gradient(100deg, var(--o1), #6ab8e8); color: #04121d;
  border-radius: 10px; padding: 12px 24px;
  font-family: var(--font-text); font-size: 14.5px; font-weight: 600;
  box-shadow: 0 10px 30px -10px rgba(61, 155, 212, .75);
}
.up-login #wp-submit:focus-visible { outline: 2px solid var(--o1); outline-offset: 3px; }

.up-login-links {
  display: flex; flex-wrap: wrap; gap: 8px 20px;
  margin-top: 20px; padding-top: 18px;
  border-top: 1px solid var(--line);
  font-size: 13.5px;
}
.up-login-links a { color: var(--o1); text-decoration: none; }
.up-login-links a:hover { text-decoration: underline; }
.up-login-who { font-size: 16.5px; color: var(--muted); margin: 0; }
.up-login-note { margin: 14px 0 0; font-size: 13px; color: var(--dim); }

.up-login-error {
  margin: 0 0 20px; padding: 11px 14px;
  border-left: 2px solid var(--onair);
  background: color-mix(in srgb, var(--onair) 12%, transparent);
  border-radius: 0 6px 6px 0;
  font-size: 13.5px; color: var(--fg);
}

/* ============================================================
   TEKST
   ============================================================ */
.grad {
  background: linear-gradient(100deg, var(--o1), var(--o2));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

.lead, .is-style-lead {
  font-size: 16.5px; color: var(--muted); line-height: 1.68;
}

.eyebrow, .is-style-eyebrow {
  font-family: var(--font-mono); font-size: 11px; letter-spacing: .17em;
  text-transform: uppercase; color: var(--o1);
}

.note, .is-style-note, .strip-note {
  margin: 12px 0 0; font-size: 12.5px; color: var(--dim); line-height: 1.55;
}

/* Het bolletje voor de pil is een pseudo-element: zo blijft de pil één
   gewone alinea die je in de editor gewoon typt. */
.pill, .is-style-pill {
  display: inline-flex; align-items: flex-start; gap: 8px;
  font-family: var(--font-mono); font-size: 10.5px; line-height: 1.5;
  letter-spacing: .12em; text-transform: uppercase;
  background: var(--glass); border: 1px solid var(--line);
  padding: 6px 13px; border-radius: 999px; color: var(--muted);
}
/* Het bolletje hoort naast de eerste regel, niet halverwege de pil: breekt de
   tekst over twee regels, dan zweeft het bij align-items:center tussen de twee
   in. Vandaar flex-start plus de halve regelhoogte min de halve bol. */
.pill::before, .is-style-pill::before {
  content: ""; width: 8px; height: 8px; border-radius: 50%;
  background: #e0a44a; flex: none; margin-top: .37em;
}

.key, .is-style-key {
  font-family: var(--font-mono); font-size: 11px; white-space: nowrap; text-align: center;
  background: rgba(255, 255, 255, .07); border: 1px solid var(--line);
  border-radius: 4px; padding: 2px 6px; color: var(--fg);
  margin: 0;
}

/* ============================================================
   KNOPPEN
   ============================================================ */
.wp-block-button .wp-block-button__link {
  font-size: 14.5px; font-weight: 600; padding: 12px 24px;
  border-radius: 10px; text-decoration: none;
  transition: transform .18s ease;
}
.wp-block-button .wp-block-button__link:hover { transform: translateY(-2px); }
.wp-block-button .wp-block-button__link:focus-visible { outline: 2px solid var(--o1); outline-offset: 3px; }

.wp-block-button.is-style-primary .wp-block-button__link {
  background: linear-gradient(100deg, var(--o1), #6ab8e8); color: #04121d;
  border: 0;
  box-shadow: 0 10px 30px -10px rgba(61, 155, 212, .75);
}
.wp-block-button.is-style-ghost .wp-block-button__link {
  border: 1px solid var(--line); color: var(--fg); background: var(--glass);
}

@media (prefers-reduced-motion: reduce) {
  .wp-block-button .wp-block-button__link { transition: none; }
  .wp-block-button .wp-block-button__link:hover { transform: none; }
}

/* ============================================================
   SECTIES
   ============================================================ */
.sec, .is-style-section { padding: 96px 0 0; }

/*
 * De zijruimte terugzetten.
 *
 * Bijna elk sjabloon geeft het <main> de klassen `site-main sec` samen. De
 * regel hierboven schrijft `padding: 96px 0 0` — inclusief die nullen links
 * en rechts — en die komt later in dit bestand dan de zijruimte van
 * .site-main, dus won hij. Op een breed scherm zag je dat niet, want daar
 * houdt de kolombreedte de tekst toch al van de rand; op een telefoon plakte
 * alles tegen de rand. Alleen de homepage ontsprong de dans, want die is het
 * enige sjabloon met `site-main` zonder `sec`.
 */
.site-main.sec { padding-top: 0; padding-inline: var(--gutter); }
/* De lucht tussen de balk bovenaan en het eerste dat op het vel staat. Dat is
   meestal de kop, maar in de documentatie begint de pagina met de twee kolommen
   van .manual — zonder deze regel erbij plakt de handleiding tegen de header,
   terwijl elke andere pagina ruimte krijgt. */
.site-main.sec > .sec-head:first-child,
.site-main.sec > .is-style-sec-head:first-child,
.site-main.sec > .manual:first-child { padding-top: 74px; }

/* ============================================================
   HET LEESVEL
   ============================================================ */
/*
 * Onder de balk bovenaan ligt één vel waar de hele pagina op staat, van de
 * header tot de voettekst. Daar is geen extra div voor nodig: .wp-site-blocks
 * is een kolom en main rekt daarin uit, dus main ís al zo hoog als de pagina.
 * Het vel is gewoon de achtergrond van main zelf.
 *
 * Waarom een vel en niet een kaartje per tekstblok: de achtergrond heeft een
 * diagonaal en drie gekleurde vlekken, en tekst die daar los op ligt is niet
 * te lezen. Een kaartje lost dat op voor één blok, maar laat de rest van de
 * pagina erbuiten en levert een pagina op met losse vakken. Eén vel geeft de
 * hele pagina dezelfde rustige ondergrond, en de achtergrond blijft doen waar
 * hij goed in is: de randen vullen.
 *
 * De breedte is --shell, dezelfde 1240px als de balken van de kop- en
 * voettekst. De rand van het vel valt daardoor samen met de rand van die
 * balken, en de tekst erbinnen staat — na --gutter zijruimte — op één lijn
 * met het merk linksboven en het accountmenu rechts. Drie dingen op dezelfde
 * verticale lijn in plaats van drie verschillende.
 *
 * WordPress houdt de blokken binnen main op 1240px. Die maat is nu groter dan
 * de ruimte die er is, dus vullen ze de kolom gewoon op. Aan theme.json hoeft
 * niets te veranderen.
 *
 * Geen afgeronde hoeken en geen rand boven of onder: het vel loopt door tot
 * ónder de header en de voettekst, die allebei doorschijnend zijn met een
 * vervaging erachter. Rond je de bovenkant af, dan zie je de achtergrond weer
 * door dat hoekje heen zodra je schuift.
 */
.site-main.sec {
  /*
   * De breedte staat er expliciet bij, en dat is geen overbodige regel.
   * .wp-site-blocks is een flex-kolom, dus main is een flex-item. Zo'n item
   * rekt normaal uit over de volle breedte — maar niet meer zodra een van de
   * zijmarges `auto` is. Dan valt het terug op fit-content, en werd het vel
   * precies zo breed als de langste regel erin: de titel. Met een breedte
   * erbij staat de maat vast en doen de auto-marges alleen nog wat ze moeten
   * doen, namelijk centreren.
   */
  width: 100%;
  max-width: var(--shell);
  margin-inline: auto;
  background: var(--panel);
  border-inline: 1px solid var(--line);
  padding-bottom: 96px;
  /* Zet het vel los van de achtergrond zonder een zwaardere lijn te hoeven
     trekken: een streepje licht op de zijranden en diepte eronder. */
  box-shadow:
    inset 1px 0 0 rgba(255, 255, 255, .03),
    inset -1px 0 0 rgba(255, 255, 255, .03),
    0 0 70px -18px rgba(0, 0, 0, .85);
}

/*
 * Het vel sluit boven aan op de balk en onder op de voettekst.
 *
 * Er zit twee keer een afstand in de weg. De eerste komt van WordPress zelf:
 * .wp-site-blocks is een kolom van blokken en die krijgen onderling een marge
 * mee, dus staat er 20px tussen de header en main, en nog eens 20px tussen
 * main en de footer. De tweede is de 96px die .sitefoot van zichzelf heeft.
 *
 * Samen leggen ze een strook achtergrond boven én onder het vel, en dan is het
 * geen doorlopend blad meer maar een lang vak met lucht eromheen.
 *
 * Alleen waar het vel er is: de homepage en het brede sjabloon hebben main
 * zónder .sec en houden hun eigen afstand.
 */
.wp-site-blocks > main.site-main.sec { margin-block-start: 0; }
.wp-site-blocks > main.site-main.sec + footer { margin-block-start: 0; }
.wp-site-blocks > main.site-main.sec + footer .sitefoot { margin-top: 0; }

/* Op een smal scherm is een vel met randen ernaast zonde van de ruimte: daar
   loopt hij van rand tot rand, zonder zijlijnen. */
@media (max-width: 820px) {
  .site-main.sec {
    border-inline: 0;
    box-shadow: 0 0 40px -14px rgba(0, 0, 0, .85);
  }
}

.sec-head, .is-style-sec-head { margin-bottom: 34px; }
:is(.sec-head, .is-style-sec-head):not(.is-layout-grid):not(.is-layout-flex) > * + * {
  margin-block-start: 14px;
}
.sec-head > .lead, .is-style-sec-head > .is-style-lead { margin-bottom: 0; }

/* --- de openingssectie --- */
.hero, .is-style-hero {
  align-items: center;
  gap: 46px;
  padding-top: 74px;
  margin-block: 0;
}
.hero .wp-block-column > * + *,
.is-style-hero .wp-block-column > * + * { margin-block-start: 20px; }
.hero .wp-block-buttons,
.is-style-hero .wp-block-buttons { margin-block-start: 30px; }

/* --- de instellingen naast het venster --- */
.outputs-grid, .is-style-outputs-grid {
  align-items: flex-start;
  gap: 26px;
}

/* Een kolom met een breed venster erin mag de rij niet oprekken: zonder
   min-width 0 groeit een flexonderdeel mee met zijn kleinst mogelijke
   inhoud. */
.wp-block-column { min-width: 0; }

/* ------------------------------------------------------------
   Over indeling en blokstijlen

   Een blokstijl regelt hier hoe iets eruitziet — kleur, rand, ruimte
   binnenin. De indeling geeft hij alleen als startpunt, en trekt zich
   terug zodra jij in de editor bij Indeling iets anders kiest: dan
   krijgt het blok van WordPress is-layout-grid of is-layout-flex, en
   haken deze regels af. Zonder die uitzondering zou je in de editor een
   raster van vier kunnen instellen zonder dat er iets verandert.
   ------------------------------------------------------------ */

/*
 * En dan telt zo'n zelfgekozen raster wél af op een smal scherm.
 *
 * Kies je in de editor bij Indeling een raster met een vast aantal kolommen,
 * dan schrijft WordPress er `repeat(4, minmax(0, 1fr))` bij en houdt het dat
 * op elke breedte vol: vier kolommen, ook op een telefoon, met woorden die
 * letter voor letter afbreken. De rasters van het thema hierboven doen dat
 * niet — die staan op auto-fit — maar juist door zo'n keuze in de editor
 * haken ze af, en dan is er niemand meer die het aantal terugbrengt.
 *
 * Vandaar deze twee regels. Ze staan op .site-main, zodat het over de inhoud
 * van de pagina gaat en niet over de rasters van kop- en voettekst.
 */
@media (max-width: 900px) {
  .site-main .is-layout-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .site-main .is-layout-grid { grid-template-columns: minmax(0, 1fr); }

  /* De statusstrook is de uitzondering: "3 %" en "255 MB" hebben die ruimte
     niet nodig, en vier regels onder elkaar maakt van een strook een lijst. */
  .site-main :is(.perf-strip, .is-style-perf-strip).is-layout-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* De scheidslijnen van de strook staan tussen de kolommen; zodra die aftellen
   staat er eentje langs de rand en ontbreekt er een tussen de rijen. */
@media (max-width: 900px) {
  .site-main :is(.perf-strip, .is-style-perf-strip).is-layout-grid > * {
    border-bottom: 1px solid var(--line);
  }
  .site-main :is(.perf-strip, .is-style-perf-strip).is-layout-grid > *:nth-child(2n),
  .site-main :is(.perf-strip, .is-style-perf-strip).is-layout-grid > *:last-child {
    border-right: 0;
  }
  .site-main :is(.perf-strip, .is-style-perf-strip).is-layout-grid > *:nth-last-child(-n+2) {
    border-bottom: 0;
  }
}

/* --- kaarten --- */
:is(.cards, .is-style-cards):not(.is-layout-grid):not(.is-layout-flex) {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px;
}
.cards > *, .is-style-cards > * { margin-block: 0; }

.card, .is-style-card {
  background: var(--glass); border: 1px solid var(--line); border-radius: 12px;
  padding: 20px;
}
:is(.card, .is-style-card):not(.is-layout-grid):not(.is-layout-flex) > * + * {
  margin-block-start: 8px;
}
.card p, .is-style-card p { margin: 0; font-size: 13.5px; color: var(--muted); line-height: 1.62; }
.card ul, .is-style-card ul {
  margin: 4px 0 0; padding-left: 17px; font-size: 13px; color: var(--muted);
  display: flex; flex-direction: column; gap: 4px;
}
.card h3 a, .is-style-card h3 a { color: inherit; text-decoration: none; }
.card h3 a:hover, .is-style-card h3 a:hover { color: var(--o1); }

/* --- statusstroken --- */
.perf-strip, .is-style-perf-strip {
  background: var(--glass); border: 1px solid var(--line); border-radius: 12px; overflow: hidden;
}
:is(.perf-strip, .is-style-perf-strip):not(.is-layout-grid):not(.is-layout-flex) {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
}
.perf-strip > *, .is-style-perf-strip > * {
  margin-block: 0;
  padding: 18px 20px; border-right: 1px solid var(--line);
}
.perf-strip > *:last-child, .is-style-perf-strip > *:last-child { border-right: 0; }

.is-style-stat-label {
  display: block; margin: 0 0 7px;
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .15em;
  text-transform: uppercase; color: var(--dim); font-weight: 500;
}
.is-style-stat-value {
  display: block; margin: 0;
  font-size: 19px; color: var(--fg);
  font-variant-numeric: tabular-nums; font-family: var(--font);
}

/* --- aanwijzingen onder de instellingen --- */
.hints, .is-style-hints {
  margin-top: 16px;
  font-size: 13px; color: var(--dim); line-height: 1.5;
}
:is(.hints, .is-style-hints):not(.is-layout-grid):not(.is-layout-flex) > * + * {
  margin-block-start: 10px;
}

:is(.hint, .is-style-hint):not(.is-layout-grid):not(.is-layout-flex) {
  display: grid; grid-template-columns: 46px 1fr; gap: 11px; align-items: baseline;
}
.hint > *, .is-style-hint > * { margin-block: 0; }
.hint p, .is-style-hint p { margin: 0; }

/* --- functieoverzicht --- */
.featgroup, .is-style-featgroup {
  border-top: 1px solid var(--line); padding-top: 24px; margin-top: 38px;
}
.featgroup:first-of-type, .is-style-featgroup:first-of-type { margin-top: 4px; }

.featgroup-title {
  font-family: var(--font); font-size: 12px; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase;
  color: var(--o1); margin: 0 0 22px;
}

:is(.featlist, .is-style-featlist):not(.is-layout-grid):not(.is-layout-flex) {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(288px, 1fr));
  gap: 26px 38px;
}
.featlist > *, .is-style-featlist > * { margin-block: 0; }

:is(.feat, .is-style-feat):not(.is-layout-grid):not(.is-layout-flex) > * + * {
  margin-block-start: 6px;
}
.feat h4, .is-style-feat h4 {
  margin: 0; font-family: var(--font); font-size: 15.5px;
  font-weight: 600; letter-spacing: -.01em; color: var(--fg);
}
.feat p, .is-style-feat p { margin: 0; font-size: 13.5px; color: var(--muted); line-height: 1.62; }

/* --- de afsluiting --- */
.end, .is-style-end {
  padding: 92px 0 90px; text-align: center;
}
:is(.end, .is-style-end):not(.is-layout-grid):not(.is-layout-flex) > * + * {
  margin-block-start: 18px;
}
.end .lead, .is-style-end .is-style-lead { max-width: 50ch; margin-inline: auto; }

/* ============================================================
   DE PLUGIN-PREVIEW
   De hele onderbouw neemt de kleur over van de geselecteerde
   playout — precies zoals in de plugin.
   ============================================================ */
.up-stage { position: relative; }
.up-layer { will-change: transform; min-width: 0; }

.win {
  --acc: var(--o1);
  background: var(--app-bg);
  border: 1px solid var(--app-line);
  border-radius: 9px; overflow: hidden;
  box-shadow: 0 40px 84px -28px rgba(0, 0, 0, .9);
  font-family: var(--font-text);
}

/* Werkbalk, cuelist en statusbalk zitten in één omkadering met een gloed,
   in de kleur van de geselecteerde playout. */
.win-lower {
  --edge: color-mix(in srgb, var(--acc) 85%, transparent);
  position: relative;
  margin: 0 5px 5px;
  border: 1px solid var(--edge);
  border-top-color: transparent; /* wordt hieronder met een gat getekend */
  border-radius: 0 0 5px 5px;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--acc) 16%, transparent),
              0 0 20px -5px color-mix(in srgb, var(--acc) 55%, transparent);
  transition: border-color .45s ease, box-shadow .45s ease;
}
/* Bovenrand met een onderbreking precies onder de geselecteerde playout,
   zodat het paneel en de cuelist één doorlopende omtrek vormen. */
.win-lower::before {
  content: ""; position: absolute; left: -1px; right: -1px; top: -1px; height: 1px;
  background: linear-gradient(to right,
    var(--edge) 0, var(--edge) var(--gapStart, 0px),
    transparent var(--gapStart, 0px), transparent var(--gapEnd, 0px),
    var(--edge) var(--gapEnd, 0px), var(--edge) 100%);
}
.win-lower > .tools { border-top: 0; }
.win-title {
  display: flex; align-items: center; justify-content: space-between;
  background: #2b2f3a; padding: 5px 9px; font-size: 10.5px; font-weight: 600; color: #d6dde6;
}
.win-ctrls { display: flex; align-items: center; gap: 9px; color: #97a2ae; font-size: 10px; }
.win-max {
  background: transparent; border: 0; color: #97a2ae; cursor: pointer;
  font-size: 11px; line-height: 1; padding: 2px 5px; border-radius: 3px;
  transition: background-color .16s, color .16s;
}
.win-max:hover { background: rgba(255, 255, 255, .14); color: #fff; }
.win-max:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }

/* de plugin op de hele pagina */
.win-overlay {
  position: fixed; inset: 0; z-index: 300;
  background: rgba(4, 8, 14, .94);
  display: flex; align-items: center; justify-content: center;
  padding: 18px 18px 52px; overflow: auto;
}
.win-overlay-inner { width: 100%; max-width: 1560px; }
.win-overlay .win { min-width: 660px; }
.win-overlay .po-stage { --stageH: 300px; }
.win-overlay-hint {
  position: fixed; left: 50%; bottom: 14px; transform: translateX(-50%);
  font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .1em;
  color: var(--muted); background: rgba(255, 255, 255, .06);
  border: 1px solid var(--line); padding: 6px 14px; border-radius: 999px;
}
/* de beheerbalk van WordPress mag de paginavullende weergave niet overlappen */
.admin-bar .win-overlay { top: 32px; }
@media screen and (max-width: 782px) { .admin-bar .win-overlay { top: 46px; } }

/* --- playoutpanelen --- */
.po-row {
  display: grid; gap: 5px; padding: 5px 5px 0; align-items: stretch;
  transition: grid-template-columns .5s cubic-bezier(.3, .7, .3, 1);
}
.po {
  background: #14252f;
  background: color-mix(in srgb, var(--acc) 13%, #0f1d27);
  border: 1px solid color-mix(in srgb, var(--acc) 34%, transparent);
  border-radius: 5px; padding: 7px 8px 8px;
  display: flex; flex-direction: column; gap: 6px;
  min-width: 0; cursor: pointer;
  container-type: inline-size; /* zodat het paneel zelf bepaalt wanneer het compact wordt */
  transition: border-color .25s, box-shadow .25s;
  animation: poIn .42s cubic-bezier(.2, .7, .3, 1) both;
}
@keyframes poIn { from { opacity: 0; transform: scale(.965); } to { opacity: 1; transform: none; } }
.po:focus-visible { outline: 2px solid var(--acc); outline-offset: 2px; }
.po.is-selected {
  border-color: color-mix(in srgb, var(--acc) 88%, transparent);
  /* onderrand weg en vierkante onderhoeken: het paneel loopt door in de cuelist */
  border-bottom-color: transparent;
  border-radius: 5px 5px 0 0;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--acc) 16%, transparent),
              0 0 20px -5px color-mix(in srgb, var(--acc) 55%, transparent);
}
.po-name {
  font-size: 8px; letter-spacing: .22em; text-transform: uppercase;
  color: color-mix(in srgb, var(--acc) 55%, #9fb2c0);
  display: flex; align-items: center; gap: 7px;
}
.po-live {
  font-family: var(--font-mono); font-size: 6.5px; letter-spacing: .16em; font-weight: 700;
  padding: 2px 5px; border-radius: 2px;
  background: var(--onair); color: #fff;
  opacity: 0; transition: opacity .3s;
}
.po.is-onair .po-live { opacity: 1; }

/* Vaste hoogte voor het speelvlak: het venster wordt niet hoger of lager
   als je van 1 naar 4 playouts gaat. Het beeld staat altijd gecentreerd,
   horizontaal én verticaal, dus het schuift nooit naar boven. */
.po-stage {
  --stageH: 150px;
  height: var(--stageH);
  display: flex; gap: 5px;
  align-items: center; justify-content: center;
}
.po-screen {
  flex: 1 1 auto; min-width: 0;
  aspect-ratio: 16 / 9;
  max-width: calc(var(--stageH) * 16 / 9); /* zo wordt het beeld nooit hoger dan het vlak */
  background: #000;
  border-radius: 2px; position: relative; overflow: hidden;
  border: 1px solid transparent; transition: border-color .3s;
}
.po.is-onair .po-screen { border-color: var(--onair); }
.po-screen canvas { display: block; width: 100%; height: 100%; }
.po-badge {
  position: absolute; left: 4px; top: 4px; z-index: 1;
  font-family: var(--font-mono); font-size: 7px; letter-spacing: .1em;
  padding: 1px 4px; border-radius: 2px;
  background: color-mix(in srgb, var(--acc) 26%, #000);
  color: color-mix(in srgb, var(--acc) 88%, #fff);
}

.po-audio {
  flex: none; width: 30px; align-self: stretch;
  display: flex; flex-direction: column; gap: 2px;
  background: #0a1620; border: 1px solid rgba(255, 255, 255, .05); border-radius: 2px;
  padding: 3px 3px 2px;
}
.po-audio-bars { flex: 1; display: flex; gap: 2px; justify-content: center; align-items: stretch; min-height: 42px; }
.po-meter { width: 4px; background: #0f1c26; border-radius: 1px; position: relative; overflow: hidden; }
.po-meter i {
  position: absolute; left: 0; right: 0; bottom: 0; height: 30%;
  background: linear-gradient(#5ad0a0 0%, #4bb98d 55%, #2f8f6a 100%);
  animation: vu 1.3s ease-in-out infinite alternate;
}
.po-meter:nth-child(2) i { animation-duration: 1.05s; animation-delay: -.45s; }
@keyframes vu {
  0% { height: 22%; } 25% { height: 64%; } 50% { height: 38%; }
  75% { height: 76%; } 100% { height: 44%; }
}
/* animation:none, niet paused — een gepauzeerde animatie houdt zijn keyframe-hoogte vast */
.po:not(.is-onair) .po-meter i { animation: none; height: 10%; opacity: .45; }

.po-fader { width: 9px; position: relative; display: flex; justify-content: center; }
.po-fader::before {
  content: ""; position: absolute; top: 4px; bottom: 2px; width: 2px;
  background: #2f7fd0; border-radius: 1px;
}
.po-knob {
  position: absolute; top: 0; width: 7px; height: 13px;
  background: #f2f5f8; border-radius: 3px; box-shadow: 0 1px 3px rgba(0, 0, 0, .6);
}
.po-audio-lbl {
  display: flex; justify-content: space-between; gap: 2px;
  font-family: var(--font-mono); font-size: 5.5px; color: #6c8496; letter-spacing: .04em;
}

.po-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 6px; margin-top: auto; }
.po-rest {
  background: #0b1721; border: 1px solid rgba(255, 255, 255, .06);
  border-radius: 3px; padding: 3px 6px 4px; min-width: 52px;
}
.po-rest b {
  display: block; font-family: var(--font-mono); font-size: 5.5px;
  letter-spacing: .16em; color: #7f6a4e; font-weight: 500;
}
.po-rest span {
  display: block; font-family: var(--font-mono); font-size: 12px;
  color: #c3d2de; letter-spacing: .04em; line-height: 1.1; font-variant-numeric: tabular-nums;
  transition: color .25s;
}
.po.is-onair .po-rest span { color: #ff6b5e; }

.po-next {
  margin-left: auto; font-family: var(--font-mono); font-size: 6.5px;
  letter-spacing: .1em; color: #6d8494; text-transform: none;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 46%;
}
.po-transport { display: flex; gap: 5px; }
.po-btn {
  font-family: var(--font-mono); font-size: 9px; letter-spacing: .18em; font-weight: 700;
  padding: 6px 13px; border-radius: 3px; border: 1px solid; cursor: pointer;
  transition: filter .16s, opacity .16s;
}
.po-btn:hover { filter: brightness(1.18); }
.po-btn:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }
.po-btn.stop {
  color: var(--app-red); background: transparent;
  border-color: color-mix(in srgb, var(--app-red) 45%, transparent);
}
.po-btn.go { color: #08131c; background: var(--acc); border-color: var(--acc); }
.po.is-onair .po-btn.go { animation: goPulse 2.6s ease-in-out infinite; }
@keyframes goPulse {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--acc) 0%, transparent); }
  50% { box-shadow: 0 0 14px -2px color-mix(in srgb, var(--acc) 85%, transparent); }
}

/* Secundair = alleen smaller in de rij. Hoe het paneel zich binnenin gedraagt
   hangt af van zijn eigen breedte, niet van de instelling — zo ziet een smalle
   playout er hetzelfde uit als een gewone playout die met z'n vieren staat. */
.po.narrow { padding: 7px 6px 8px; }
.po.narrow .po-stage { gap: 3px; }

@container (max-width: 215px) {
  .po-rest { display: none; }
  .po-foot { justify-content: stretch; }
  .po-transport { flex: 1; gap: 4px; }
  .po-btn { flex: 1; min-width: 0; padding: 6px 2px; font-size: 8px; letter-spacing: .06em; }
  .po-audio { width: 21px; }
  .po-name { font-size: 7px; letter-spacing: .13em; gap: 4px; }
  .po-live { font-size: 5.5px; padding: 1px 3px; letter-spacing: .1em; }
}
@container (max-width: 140px) {
  .po-audio { width: 15px; }
  .po-audio-lbl { display: none; }
}

/* --- werkbalk: neemt de kleur van de geselecteerde playout over --- */
.tools {
  display: flex; align-items: center; gap: 5px; flex-wrap: wrap;
  padding: 5px 7px; border-top: 1px solid var(--app-line);
  background: color-mix(in srgb, var(--acc) 10%, #11212c);
  transition: background-color .45s ease;
}
.tool { display: flex; }
.tool b, .tool i {
  background: color-mix(in srgb, var(--acc) 13%, #1b3242);
  border: 1px solid color-mix(in srgb, var(--acc) 22%, var(--app-line));
  color: var(--app-fg); font-size: 9.5px; font-weight: 600; font-style: normal;
  padding: 5px 8px; display: flex; align-items: center; gap: 4px;
  transition: background-color .45s ease, border-color .45s ease;
}
.tool b { border-radius: 3px 0 0 3px; }
.tool i { border-radius: 0 3px 3px 0; border-left: 0; padding-inline: 4px; color: var(--app-muted); }
.tool.solo b { border-radius: 3px; }
.tool em { font-style: normal; color: var(--app-muted); font-size: 8px; }
.tools-right { margin-left: auto; display: flex; gap: 5px; }
.tools-right b, .tools-right button {
  background: color-mix(in srgb, var(--acc) 13%, #1b3242);
  border: 1px solid color-mix(in srgb, var(--acc) 22%, var(--app-line));
  border-radius: 3px; color: var(--app-fg); font-size: 9.5px; font-weight: 600;
  padding: 5px 9px; display: flex; align-items: center; gap: 4px;
  font-family: var(--font-text);
  transition: background-color .45s ease, border-color .45s ease;
}
.tools-right button { cursor: pointer; }
.tools-right button:hover { background: color-mix(in srgb, var(--acc) 34%, #1b3242); }
.tools-right button:focus-visible { outline: 2px solid var(--acc); outline-offset: 1px; }

/* --- playlist --- */
.cols, .row {
  display: grid;
  grid-template-columns: 28px 20px minmax(110px, 1fr) minmax(84px, 148px) minmax(76px, 132px)
                         38px 38px 28px 54px 46px 34px;
}
.cols {
  border-top: 1px solid var(--app-line); border-bottom: 1px solid var(--app-line);
  background: color-mix(in srgb, var(--acc) 20%, #162c39);
  transition: background-color .45s ease;
}
.cols span {
  font-size: 8px; letter-spacing: .14em; color: #a9c0ce; text-align: center;
  padding: 6px 2px; border-right: 1px solid rgba(255, 255, 255, .05); line-height: 1.25;
}
.cols span:last-child { border-right: 0; }
.cols small { display: block; font-size: 7px; letter-spacing: .1em; opacity: .8; }

/* De lijst wordt met lege regels aangevuld tot een vast aantal, zodat het
   venster niet verspringt als een playout minder items heeft. */
.list {
  background: color-mix(in srgb, var(--acc) 7%, #0e1c26);
  transition: background-color .45s ease;
}
.row.is-empty { pointer-events: none; }
.row {
  font-size: 9px; color: #9db4c4; border-bottom: 1px solid rgba(255, 255, 255, .035);
  border-left: 2px solid transparent; cursor: pointer;
  min-height: 24px; /* lege regels even hoog als gevulde */
  transition: background-color .3s, color .3s, border-left-color .3s;
}
.row:hover { background: color-mix(in srgb, var(--acc) 16%, #0e1c26); }
.row > span {
  padding: 5px; text-align: center; overflow: hidden; white-space: nowrap;
  text-overflow: ellipsis; border-right: 1px solid rgba(255, 255, 255, .03);
  display: flex; align-items: center; justify-content: center; gap: 4px;
}
.row > span:nth-child(3) { justify-content: space-between; gap: 8px; }
.row > span:last-child { border-right: 0; }
.row .num, .row .tc { font-family: var(--font-mono); font-size: 8px; }
.row .kind { font-size: 8px; color: var(--acc); }
/* De rij krijgt de kleur van de playout. Het balkje links en het pilletje
   achter de titel geven de status: rood is live, groen is geselecteerd. */
.row.is-live, .row.is-next { background: color-mix(in srgb, var(--acc) 24%, #0e1c26); color: #e7f1f8; }
.row.is-live { border-left-color: var(--onair); }
.row.is-next { border-left-color: var(--next); }
.row.is-done { opacity: .45; }
.row-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row-flag {
  font-family: var(--font-mono); font-size: 6.5px; letter-spacing: .16em; font-weight: 700;
  padding: 2px 5px; border-radius: 2px; flex: none;
}
.row-flag.live { background: var(--onair); color: #fff; }
.row-flag.next { background: var(--next); color: #05210f; }

/* --- statusbalk in het venster --- */
.status {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 5px 7px; border-top: 1px solid var(--app-line);
  background: color-mix(in srgb, var(--acc) 12%, #11212c);
  transition: background-color .45s ease;
}
.perf {
  display: flex; gap: 13px; font-family: var(--font-mono); font-size: 8.5px;
  color: #7d95a6; letter-spacing: .04em; margin-left: 4px; flex-wrap: wrap;
}
.perf b { color: #a8cade; font-weight: 500; font-variant-numeric: tabular-nums; }
.tabs { margin-left: auto; display: flex; gap: 5px; }
.tabs button {
  font-family: var(--font-text); font-size: 9px; font-weight: 600; cursor: pointer;
  padding: 4px 10px; border-radius: 3px;
  background: color-mix(in srgb, var(--tab) 14%, #12222d);
  border: 1px solid color-mix(in srgb, var(--tab) 34%, transparent);
  color: color-mix(in srgb, var(--tab) 70%, #dfeaf2);
  display: flex; align-items: center; gap: 6px;
  transition: background-color .25s, border-color .25s, color .25s;
}
.tabs button[aria-pressed="true"] {
  background: color-mix(in srgb, var(--tab) 32%, #12222d);
  border-color: color-mix(in srgb, var(--tab) 90%, transparent);
  color: #fff;
}
.tabs button:focus-visible { outline: 2px solid var(--tab); outline-offset: 1px; }
.tabs button em { font-style: normal; opacity: .55; }

/* Het venster heeft een vaste ontwerpbreedte en wordt door assets/js/ui.js
   evenredig verkleind als er minder ruimte is. */
.win-scroll { overflow-x: auto; max-width: 100%; min-width: 0; }
.win-scroll > .win { min-width: 660px; }
.win-scroll.is-scaled { overflow: hidden; }
.win-scroll.is-scaled > .win { transform-origin: top left; }

.win-note {
  display: flex; align-items: flex-start; gap: 9px;
  margin: 13px 0 0; font-size: 12.5px; color: var(--dim); line-height: 1.55;
  max-width: 62ch;
}
.win-note .ico {
  flex: none; width: 16px; height: 16px; border-radius: 50%; margin-top: 1px;
  border: 1px solid color-mix(in srgb, var(--o1) 55%, transparent);
  color: var(--o1); font-family: var(--font-mono); font-size: 9.5px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}

/* ============================================================
   DE INSTELLINGENDIALOOG
   ============================================================ */
.dlg {
  background: #1b1f27; border: 1px solid #2f3540; border-radius: 8px;
  overflow: hidden; box-shadow: 0 30px 64px -24px rgba(0, 0, 0, .85); font-family: var(--font-text);
}
.dlg-title {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 13px; border-bottom: 1px solid #2f3540; font-size: 12.5px; color: #dfe5ec;
}
.dlg-title em { font-style: normal; color: #7d8794; }
.dlg-body { display: flex; flex-direction: column; gap: 14px; padding: 13px; }

.fset { border: 1px solid #2f3540; border-radius: 5px; padding: 13px 12px 12px; }
.fset > legend {
  font-size: 11px; font-weight: 600; color: #dfe5ec; padding: 2px 8px;
  border: 1px solid #2f3540; border-radius: 4px; background: #232833; margin-left: 2px;
}
.frow { display: grid; grid-template-columns: 108px 1fr; gap: 9px; align-items: center; }
.frow + .frow { margin-top: 9px; }
.frow label { font-size: 11.5px; color: #b6bfca; }
.fctl {
  background: #2b313c; border: 1px solid #3a4250; border-radius: 4px;
  color: #e6ebf1; font-size: 11.5px; padding: 6px 8px; width: 100%; font-family: var(--font-text);
}
.fctl:focus-visible { outline: 2px solid #4a5efd; outline-offset: 1px; }

.ptabs { display: flex; gap: 3px; border-bottom: 1px solid #2f3540; flex-wrap: wrap; }
/* compact genoeg zodat vier tabbladen op één rij passen */
.ptabs button {
  font-family: var(--font-text); font-size: 10px; color: #9aa4b1; cursor: pointer;
  background: #232833; border: 1px solid #2f3540; border-bottom: 0;
  border-radius: 5px 5px 0 0; padding: 5px 8px;
  display: flex; align-items: center; gap: 5px; min-width: 0; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
  transition: background-color .2s, color .2s;
}
.ptabs button i { width: 6px; height: 6px; border-radius: 2px; background: var(--tab); display: block; flex: none; }
.ptabs button[aria-selected="true"] { background: #3a4ae8; border-color: #3a4ae8; color: #fff; }
.ptabs button:focus-visible { outline: 2px solid #6a78ff; outline-offset: 1px; }

.fcheck { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: #b6bfca; cursor: pointer; }
.fcheck input { width: 14px; height: 14px; accent-color: #4a5efd; cursor: pointer; margin: 0; }
.fcolour { display: flex; align-items: center; gap: 10px; font-size: 11.5px; color: #b6bfca; margin-top: 10px; }
.fcolour-input {
  width: 52px; height: 22px; padding: 0; cursor: pointer;
  background: transparent; border: 1px solid rgba(255, 255, 255, .2); border-radius: 3px;
}
.fcolour-input:focus-visible { outline: 2px solid #4a5efd; outline-offset: 1px; }

.dlg-foot { display: flex; justify-content: flex-end; gap: 9px; padding: 0 13px 13px; }
.dlg-foot button {
  font-family: var(--font-text); font-size: 11.5px; font-weight: 500; color: #dfe5ec;
  padding: 6px 22px; border: 1px solid #3a4250; border-radius: 4px; background: #2b313c;
  cursor: pointer; transition: background-color .16s;
}
.dlg-foot button:hover { background: #343b48; }
.dlg-foot button:focus-visible { outline: 2px solid #4a5efd; outline-offset: 1px; }

.dlg-x {
  background: transparent; border: 0; color: #7d8794; cursor: pointer;
  font-size: 13px; line-height: 1; padding: 3px 7px; border-radius: 4px;
  transition: background-color .16s, color .16s;
}
.dlg-x:hover { background: rgba(255, 255, 255, .12); color: #fff; }
.dlg-x:focus-visible { outline: 2px solid #4a5efd; outline-offset: 1px; }

.dlg-open {
  font-family: var(--font-text); font-size: 13.5px; color: var(--fg); cursor: pointer;
  background: var(--glass); border: 1px solid var(--line); border-radius: 10px;
  padding: 13px 18px; display: flex; align-items: center; gap: 9px;
  transition: border-color .18s, color .18s;
}
.dlg-open:hover { border-color: var(--o1); color: var(--o1); }
.dlg-open:focus-visible { outline: 2px solid var(--o1); outline-offset: 2px; }
.dlg-open[hidden] { display: none; }

/* ============================================================
   HANDLEIDING
   ============================================================ */
.manual {
  display: grid;
  grid-template-columns: minmax(0, 240px) minmax(0, 1fr);
  gap: 48px;
  align-items: start;
}
.manual > * { margin-block: 0; }

/* Staat er geen zijbalk — een handleiding zonder onderliggende pagina's —
   dan zou de tekst in de kolom van 240px belanden. */
.manual:not(:has(.manual-nav)) { grid-template-columns: minmax(0, 1fr); }

/* De scheidslijn hoort tússen de kolommen te staan, niet links van de
   zijbalk: daar valt hij samen met de paginarand en leest hij als een
   streepje in het niets. */
.manual-nav {
  position: sticky; top: 96px;
  border-right: 1px solid var(--line);
  padding-right: 22px;
}
.manual-nav .eyebrow { display: block; margin-bottom: 12px; }
.manual-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1px; }
.manual-nav a {
  display: block; padding: 6px 10px;
  border-radius: 7px;
  color: var(--muted); text-decoration: none; font-size: 13.5px; line-height: 1.45;
  transition: color .15s, background-color .15s;
}
.manual-nav a:hover { color: var(--fg); background: rgba(255, 255, 255, .05); }
.manual-nav a:focus-visible { outline: 2px solid var(--o1); outline-offset: 2px; }

/* Waar je nu bent: accentkleur plus een balkje, zodat het ook zonder kleur
   te zien is. */
.manual-nav .current_page_item > a,
.manual-nav .current_page_ancestor > a {
  color: var(--fg);
  background: color-mix(in srgb, var(--o1) 13%, transparent);
  box-shadow: inset 2px 0 0 var(--o1);
}

/* inspringing per niveau in de hoofdstukkenlijst */
.manual-nav .manual-lvl-1 > a { padding-left: 24px; }
.manual-nav .manual-lvl-2 > a { padding-left: 38px; }
.manual-nav .manual-lvl-3 > a { padding-left: 52px; }

/* Een hoofdstuktitel is een documentkop, geen paginakop: op de schaal van de
   voorpagina drukt hij de kolom ernaast plat. */
.manual-body .wp-block-post-title {
  font-size: clamp(26px, 3vw, 38px);
  letter-spacing: -.028em;
}
.manual-body .sec-head, .manual-body .is-style-sec-head { margin-bottom: 26px; }
/* Het venster vult de kolom naast de zijbalk. */
.manual-body .prose-panel { max-width: none; }

/*
 * De documentatie brengt zijn eigen blad mee.
 *
 * manual.css in de portal-plugin geeft .manual-body een opgelicht vlak met
 * verloop, rand, ronde hoeken en schaduw. Dat was terecht zolang de tekst los
 * op de achtergrond lag: zonder dat blad was een hoofdstuk niet te lezen.
 *
 * Nu ligt er een vel onder de hele pagina, en dan is dat blad een vak in een
 * vak — en een scheef vak bovendien, want de zijbalk ernaast staat wél gewoon
 * op het vel. De scheiding tussen die twee kolommen is de streep die
 * .manual-nav al heeft; meer is er niet nodig.
 *
 * Dit staat hier en niet in de plugin, omdat de plugin ook onder een thema
 * zonder leesvel moet kunnen draaien. Daar is dat blad wél op zijn plaats.
 * De theme-CSS laadt na manual.css, en .site-main.sec erbij weegt zwaarder
 * dan .up-manual .manual-body, dus dit wint zonder !important.
 */
.site-main.sec .manual-body {
  background: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  border: 0;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
}

/* --- versiekiezer --- */
.mver { position: relative; margin-bottom: 22px; }
.mver summary {
  list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px;
  border: 1px solid var(--line); background: var(--glass);
  border-radius: 8px; padding: 8px 12px; font-size: 13px; color: var(--muted);
  transition: border-color .16s, color .16s;
}
.mver summary::-webkit-details-marker { display: none; }
.mver summary::marker { content: ""; }
.mver summary:hover { border-color: color-mix(in srgb, var(--o1) 45%, transparent); color: var(--fg); }
.mver summary:focus-visible { outline: 2px solid var(--o1); outline-offset: 2px; }
.mver summary strong { color: var(--fg); font-family: var(--font-mono); font-size: 12.5px; margin-left: auto; }
.mver .mver-label {
  font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .12em;
  text-transform: uppercase; color: var(--dim);
}
.mver .caret { font-size: 9px; opacity: .7; transition: transform .18s ease; }
.mver[open] .caret { transform: rotate(180deg); }

.mver-menu {
  position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 40;
  display: flex; flex-direction: column;
  background: #0d1620; border: 1px solid var(--line); border-radius: 9px;
  padding: 5px; box-shadow: 0 16px 38px -16px rgba(0, 0, 0, .9);
  max-height: 260px; overflow-y: auto;
}
.mver-menu a {
  padding: 7px 10px; border-radius: 6px; text-decoration: none;
  color: var(--muted); font-family: var(--font-mono); font-size: 12.5px;
  transition: background-color .14s, color .14s;
}
.mver-menu a:hover { background: rgba(255, 255, 255, .06); color: var(--fg); }
.mver-menu a[aria-current="true"] { color: var(--o1); }

.manual-carried {
  margin: 0 0 24px; padding: 10px 14px;
  border-left: 2px solid color-mix(in srgb, var(--o1) 60%, transparent);
  background: color-mix(in srgb, var(--o1) 8%, transparent);
  border-radius: 0 6px 6px 0;
  font-size: 13px; color: var(--muted);
}

/* ============================================================
   BERICHTENLIJST (Updates)
   ============================================================ */
.postlist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.postlist > li {
  display: grid; grid-template-columns: minmax(0, 150px) minmax(0, 1fr);
  gap: 26px; align-items: start;
  background: var(--glass);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 24px 28px;
  transition: border-color .16s;
}
.postlist > li:hover { border-color: color-mix(in srgb, var(--o1) 40%, transparent); }
.postlist > li > * { margin-block: 0; }

.postcard-meta {
  font-family: var(--font-mono); font-size: 11.5px; letter-spacing: .08em;
  color: var(--dim); padding-top: 4px;
}
.postcard-body > * + * { margin-block-start: 12px; }
.postcard-body h2 { margin: 0; font-size: 21px; font-weight: 700; letter-spacing: -.02em; }
.postcard-body h2 a { color: var(--fg); text-decoration: none; }
.postcard-body h2 a:hover { color: var(--o1); }
/* --read en niet --muted: dit is gewoon lopende tekst, net als op een pagina.
   Stond hier --muted, dan las dezelfde soort zin in de berichtenlijst lichter
   dan op de pagina erachter. */
.postcard-body p { margin: 0; font-size: 14.5px; color: var(--read); line-height: 1.65; max-width: 72ch; }
.postcard-more { font-size: 13.5px; color: var(--o1); text-decoration: none; display: inline-block; }
.postcard-more:hover { text-decoration: underline; }

/* ============================================================
   EEN BERICHT
   ============================================================ */
/* Het leesvenster en de navigatie eronder lopen mee met de kolom, net als de
   kop erboven en de balken van de kop- en voettekst: overal dezelfde breedte.

   Wil je de leesregel korter, dan is dat één waarde: zet hieronder een
   max-width (bijvoorbeeld 820px). De omhulling heeft met opzet een gewone
   (flow) lay-out, zodat zo'n smaller venster links blijft staan in plaats van
   door WordPress gecentreerd te worden — dan zou de kop weer verspringen. */
.article > * + * { margin-block-start: 0; }

/* ============================================================
   VORIG EN VOLGEND BERICHT
   ============================================================ */
/* Twee kaarten die zeggen waar ze heen gaan, in plaats van twee losse
   pijltjes. Is er geen vorige of volgende, dan blijft dat vak leeg — daarom
   krijgt alleen een gevulde link zijn omlijsting. */
.postnav {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
  margin-top: 40px;
}
.postnav > * { margin-block: 0; }

/* Alleen een gevulde link krijgt een kaart. Is er geen volgend bericht, dan
   laat WordPress het vak leeg staan en zou een lege omlijsting overblijven. */
.postnav .wp-block-post-navigation-link:has(a) {
  display: flex;
  align-items: baseline;
  gap: 11px;
  background: var(--glass);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 16px 20px;
  transition: border-color .16s;
}
.postnav .wp-block-post-navigation-link:has(a):hover {
  border-color: color-mix(in srgb, var(--o1) 45%, transparent);
}

/* Het volgende bericht wijst naar rechts: pijl achteraan, tekst rechts uit. */
.postnav .post-navigation-link-next:has(a) { justify-content: flex-end; text-align: right; }

.postnav .wp-block-post-navigation-link a {
  color: var(--fg);
  text-decoration: none;
  font-family: var(--font);
  font-size: 15.5px;
  font-weight: 600;
  letter-spacing: -.01em;
}
.postnav .wp-block-post-navigation-link a:hover { color: var(--o1); }

.postnav [class*="__arrow"] {
  color: var(--o1);
  font-size: 15px;
  flex: none;
}

@media (max-width: 620px) {
  .postnav .post-navigation-link-next:has(a) { justify-content: flex-start; text-align: left; }
}

/* ============================================================
   PAGINERING EN ZOEKEN
   ============================================================ */
.pager { margin-top: 30px; }
.pager a, .pager .current, .pager .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 36px; padding: 7px 12px; border-radius: 8px;
  border: 1px solid var(--line); background: var(--glass);
  color: var(--muted); text-decoration: none; font-size: 13.5px;
}
.pager a:hover { border-color: var(--o1); color: var(--o1); }
.pager .current { border-color: var(--o1); color: var(--fg); }

.wp-block-search__input {
  background: var(--glass); border: 1px solid var(--line); border-radius: 10px;
  color: var(--fg); padding: 11px 14px; font-family: var(--font-text); font-size: 14.5px;
}
.wp-block-search__input:focus-visible { outline: 2px solid var(--o1); outline-offset: 2px; }
.wp-block-search__button {
  background: var(--glass); border: 1px solid var(--line); border-radius: 10px;
  color: var(--fg); padding: 11px 18px; font-family: var(--font-text); font-size: 14.5px;
  cursor: pointer;
}
.wp-block-search__button:hover { border-color: var(--o1); color: var(--o1); }

.screen-reader-text {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}

/* ============================================================
   KEUZELIJSTEN
   ============================================================ */
/* De uitklaplijst van een select wordt door de browser getekend met de
   achtergrond van het veld zelf. Is die half doorzichtig, dan valt de lijst
   terug op wit en staat er lichte tekst op wit — onleesbaar. Vandaar overal
   een dekkende kleur, ook op de opties. */
select { color-scheme: dark; }
select option,
select optgroup {
  background-color: #131f2a;
  color: var(--fg);
}

/* ============================================================
   VOETTEKST
   ============================================================ */
/* De voettekst zit in een eigen band met een dekkende achtergrond. Zonder die
   band liep de diagonaal er dwars doorheen en werd de tekst onrustig. */
.sitefoot {
  margin-top: 96px;
  /* dezelfde doorkijk en vervaging als de header bovenaan */
  background: color-mix(in srgb, var(--bg) 78%, transparent);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  border-top: 1px solid var(--line);
  padding: 30px 0 6px;
}
.foot {
  border-top: 1px solid rgba(255, 255, 255, .06); padding: 22px 0 30px;
  font-size: 12.5px; color: var(--dim);
}
.foot > * { margin-block: 0; }
.foot p { margin: 0; }

.foot-links a { color: inherit; text-decoration: none; transition: color .15s; }
.foot-links a:hover { color: var(--fg); }
.foot-links a:focus-visible { outline: 2px solid var(--o1); outline-offset: 3px; }

.foot-legal {
  margin: 0 0 34px;
  max-width: 86ch;
  font-size: 12px;
  line-height: 1.6;
  color: color-mix(in srgb, var(--dim) 78%, transparent);
}

/* ============================================================
   IN DE EDITOR
   ============================================================ */
/* De vier eigen blokken tonen daar een plaatshouder in plaats van zichzelf. */
.up-block-placeholder .components-placeholder {
  background: var(--glass);
  border: 1px dashed var(--line);
  border-radius: 12px;
  color: var(--muted);
}
.up-block-placeholder .components-placeholder__label { color: var(--fg); }

/* ============================================================
   SMALLE SCHERMEN
   ============================================================ */
@media (max-width: 1000px) {
  .hero, .is-style-hero { gap: 34px; padding-top: 52px; }
  .manual { grid-template-columns: minmax(0, 1fr); gap: 26px; }
  .manual-nav {
    position: static;
    border-right: 0; padding-right: 0;
    border-bottom: 1px solid var(--line); padding-bottom: 18px;
  }
  /* De inhoudsopgave blijft een lijst onder elkaar. Ze stond hier een tijd
     lang als een rij naast elkaar — dat leest als een menubalk, terwijl een
     inhoudsopgave met inspringing juist laat zien wat onder wat valt. De
     plugin klapt hem op deze breedte achter één knop; zie manual.css. */
  .manual-nav .manual-lvl-1 > a,
  .manual-nav .manual-lvl-2 > a,
  .manual-nav .manual-lvl-3 > a { padding-left: 10px; }
}

@media (max-width: 782px) {
  /* Kolommen stapelen; de bovenmarge die WordPress dan geeft is te klein. */
  .outputs-grid > .wp-block-column + .wp-block-column,
  .is-style-outputs-grid > .wp-block-column + .wp-block-column { margin-top: 26px; }
}

@media (max-width: 720px) {
  /* Hier valt de kopbalk terug op één regel met een knop ernaast; het
     uitklappen zelf staat bij NAVIGATIE, op ditzelfde breekpunt. */
  .nav-inner { padding-block: 14px; }
  .nav .dl { display: none; }             /* de badge verdringt het logo op smalle schermen */
  .brand-mark { width: 30px; height: 30px; }
  .brand-1, .brand-2 { font-size: 12px; }
  .acct-name { display: none; }

  .hero, .is-style-hero { padding-top: 40px; gap: 26px; }
  .sec, .is-style-section { padding-top: 58px; }
  .site-main.sec > .sec-head:first-child,
  .site-main.sec > .is-style-sec-head:first-child { padding-top: 40px; }
  .sec-head, .is-style-sec-head { margin-bottom: 26px; }
  .wp-block-button { flex: 1 1 auto; text-align: center; }

  .win-overlay { padding: 12px 12px 46px; }
  .win-overlay .win { min-width: 560px; }
  .win-overlay .po-stage { --stageH: 190px; }

  .featgroup, .is-style-featgroup { margin-top: 28px; padding-top: 20px; }
  .featlist, .is-style-featlist { gap: 20px; }

  .end, .is-style-end { padding: 62px 0 66px; }

  .postlist > li { grid-template-columns: minmax(0, 1fr); gap: 8px; padding: 20px 0; }
  .postcard-meta { padding-top: 0; }

  .sitefoot { margin-top: 64px; padding-top: 24px; }
  .foot { flex-direction: column; gap: 6px; }
}

@media (max-width: 620px) {
  :root { --gutter: 18px; }
  .frow { grid-template-columns: 1fr; gap: 5px; }
}

@media (max-width: 430px) {
  /* Hier stond het menu kleiner en dichter op elkaar, voor toen het nog naast
     het logo moest passen. Op deze breedte staat het allang onder de knop. */
  :root { --gutter: 14px; }
  .hint, .is-style-hint { grid-template-columns: 42px 1fr; gap: 9px; }
  .dlg-body { padding: 11px; }
}

@media (prefers-reduced-motion: reduce) {
  .nav-js.is-open > .nav-inner > .wp-block-navigation { animation: none; }
  .nav-toggle, .nav-toggle-bars span { transition: none; }

  .up-layer { transform: none !important; transition: none !important; }
  .po, .po-meter i, .po.is-onair .po-btn.go { animation: none !important; }
  .po-row, .row, .tabs button, .tools, .cols, .list, .status { transition: none !important; }
}
