/* =============================================================================
   ADR-Digitaal — admin styling
   In LogiDoc-stijl: donkere navy header, rode accentlijn, lichte grijze
   achtergrond met witte kaarten en gecategoriseerde secties.
   ============================================================================= */

:root {
  --c-navy:        #1a2147;
  --c-navy-2:      #232b58;
  --c-accent:      #dc2626;
  --c-accent-2:    #b91c1c;
  --c-bg:          #f3f4f6;
  --c-card:        #ffffff;
  --c-border:      #e5e7eb;
  --c-border-2:    #d1d5db;
  --c-text:        #1f2937;
  --c-text-muted:  #6b7280;
  --c-text-soft:   #9ca3af;
  --c-link:        #1e40af;
  --c-link-hover:  #1d3578;
  --c-success-bg:  #dcfce7;
  --c-success-bd:  #86efac;
  --c-success-tx:  #166534;
  --c-error-bg:    #fee2e2;
  --c-error-bd:    #fca5a5;
  --c-error-tx:    #991b1b;
  /* Markering van definitietermen (anker-doel). Pas deze drie waarden aan om
     de kleur centraal te wijzigen — geldt voor admin én publiek. */
  --c-def-bg:      #fef3c7;
  --c-def-tx:      inherit;
  --c-def-target:  #fde68a;
  --radius:        6px;
  --shadow-sm:     0 1px 2px rgba(15, 23, 42, 0.05);
  --shadow:        0 1px 3px rgba(15, 23, 42, 0.08), 0 1px 2px rgba(15, 23, 42, 0.04);
}

* { box-sizing: border-box; }

/* body moet met de inhoud meegroeien, niet op één schermhoogte blijven staan:
   een position:sticky-element (de vastgezette bovenbalk) plakt alleen binnen de
   box van zijn ouder, en met height:100% eindigde die box na één scherm — dan
   liet de balk weer los. min-height houdt de volle-hoogte-layouts intact. */
html { height: 100%; }
body { min-height: 100%; }

body {
  margin: 0;
  font-family: var(--app-font, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
  font-size: var(--app-fontsize, 15px);
  color: var(--c-text);
  background: var(--c-bg);
  line-height: 1.5;
}

a { color: var(--c-link); text-decoration: none; }
a:hover { color: var(--c-link-hover); text-decoration: underline; }

/* Verwijzingslinks (artikel, hoofdstuk, definitie) — vet en onderstreept zodat
   ze duidelijk opvallen tegen de gewone tekst; de kale link-kleur alleen was te
   moeilijk te zien. Geldt voor auto- én handmatige verwijzingen. */
a[data-art-ref],
a[data-chap-ref],
a[data-def-ref] {
  display: inline;
  background: transparent;
  color: var(--c-link);
  padding: 0;
  border-radius: 0;
  font-weight: 700;
  font-size: inherit;
  text-decoration: underline;
}
a[data-art-ref]:hover,
a[data-chap-ref]:hover,
a[data-def-ref]:hover {
  color: var(--c-link-hover);
  text-decoration: underline;
}

h1, h2, h3 { color: var(--c-navy); margin: 0 0 0.75rem; }
h1 { font-size: 1.5rem; font-weight: 700; }
h2 { font-size: 1.2rem; font-weight: 700; }

/* ---------- Header ---------- */

.top {
  background: var(--c-navy);
  color: #fff;
  border-bottom: 3px solid var(--c-accent);
}
.top-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 1.1rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.top .brand {
  display: inline-flex;
  align-items: center;
  gap: 0.85rem;
  color: #fff;
  text-decoration: none;
  font-weight: 700;
  font-size: 1.6rem;
  letter-spacing: -0.01em;
}
.top .brand:hover { text-decoration: none; color: #fff; }
.top .brand .brand-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px; height: 56px;
}
.top .brand .brand-mark svg,
.top .brand .brand-mark img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  display: block;
}

/* Bovenbalk vastzetten (opt-in per bezoeker, onthouden in localStorage door
   admin.js). Standaard scrollt de balk gewoon mee weg; wie 'm vastzet houdt de
   navigatie altijd in beeld zonder naar boven te scrollen. position: sticky geeft
   geen layout-shift. De klasse komt alleen op publieke pagina's op <body>: de
   knop staat in de taakbalk, de admin krijgt de klasse nooit. z-index onder de
   modals/zwevende knoppen (8000+) maar boven de gewone paginainhoud. De eigen
   dropdowns van de balk (inhoudsopgave, versiekeuze) zitten binnen deze header
   en blijven dus vanzelf bovenop staan. */
body.header-sticky .top {
  position: sticky;
  top: 0;
  z-index: 900;
}

.top .admin-session {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.top .admin-spring {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.top .admin-spring select,
.top .admin-spring input {
  font-size: 0.9rem;
  padding: 0.35rem 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
}
.top .admin-spring input { width: 11rem; }
.top .admin-spring input::placeholder { color: rgba(255, 255, 255, 0.7); }
.top .admin-spring select option { color: #1e293b; }
.top .admin-spring input:focus,
.top .admin-spring select:focus {
  outline: 2px solid var(--c-accent);
  outline-offset: 1px;
  background: rgba(255, 255, 255, 0.2);
}
.top .admin-view-link {
  color: rgba(255, 255, 255, 0.85);
  font-size: 0.9rem;
  text-decoration: none;
  white-space: nowrap;
}
.top .admin-view-link:hover {
  color: #fff;
  text-decoration: none;
}

.top .session {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0;
}
.top .session .who { font-size: 0.9rem; color: rgba(255,255,255,0.85); }
.top .session .who strong { color: #fff; font-weight: 600; }

.top .session button {
  background: transparent;
  color: #fff;
  border: 1px solid rgba(255,255,255,0.6);
  padding: 0.35rem 0.85rem;
  border-radius: var(--radius);
  font: inherit;
  font-size: 0.9rem;
  cursor: pointer;
}
.top .session button:hover { background: rgba(255,255,255,0.12); border-color: #fff; }

/* ---------- Container ---------- */

.container {
  max-width: 1100px;
  margin: 0 auto;
  padding: 1.75rem 1.5rem 4rem;
}

/* ---------- Page header ---------- */

.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin: 0 0 1.25rem;
}
.page-header h1 { margin: 0; }

/* ---------- Sectie-labels ---------- */

.section-label {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--c-text-soft);
  margin: 1.5rem 0 0.6rem;
}
.section-label:first-child { margin-top: 0; }

/* ---------- Card grid (dashboard) ---------- */

.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1rem;
}

.card-link {
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-left: 4px solid var(--c-navy);
  border-radius: var(--radius);
  padding: 1rem 1.1rem;
  display: flex;
  align-items: flex-start;
  gap: 0.9rem;
  text-decoration: none;
  color: inherit;
  box-shadow: var(--shadow-sm);
  transition: border-color 0.12s, box-shadow 0.12s, transform 0.08s;
}
.card-link:hover {
  border-color: var(--c-border-2);
  border-left-color: var(--c-accent);
  box-shadow: var(--shadow);
  text-decoration: none;
  color: inherit;
  transform: translateY(-1px);
}
.card-link .card-icon {
  flex-shrink: 0;
  width: 36px; height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(26, 33, 71, 0.08);
  color: var(--c-navy);
  border-radius: var(--radius);
}
.card-link .card-icon svg { width: 20px; height: 20px; }
.card-link .card-body { flex: 1; min-width: 0; }
.card-link .card-title {
  display: block;
  font-weight: 700;
  color: var(--c-navy);
  margin-bottom: 0.1rem;
}
.card-link .card-desc {
  display: block;
  font-size: 0.88rem;
  color: var(--c-text-muted);
}

/* ---------- Generieke kaart-container ---------- */

.card {
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
}
.card-padding { padding: 1.25rem 1.5rem; }

/* ---------- Knoppen ---------- */

.btn,
.btn-primary,
.btn-secondary,
.btn-danger,
.btn-disabled {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 1rem;
  border-radius: var(--radius);
  font: inherit;
  font-size: 0.92rem;
  font-weight: 500;
  text-decoration: none;
  cursor: pointer;
  border: 1px solid transparent;
  line-height: 1.2;
}
.btn-primary,
button[type="submit"]:not(.btn-danger):not(.btn-secondary):not(.btn-link):not(.btn-link-danger) {
  background: var(--c-navy);
  color: #fff;
  border-color: var(--c-navy);
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 1rem;
  border-radius: var(--radius);
  font: inherit;
  font-size: 0.92rem;
  font-weight: 500;
  cursor: pointer;
  line-height: 1.2;
}
.btn-primary:hover,
button[type="submit"]:not(.btn-danger):not(.btn-secondary):not(.btn-link):not(.btn-link-danger):hover {
  background: var(--c-navy-2);
  border-color: var(--c-navy-2);
  color: #fff;
  text-decoration: none;
}

/* Het hidden-attribuut moet altijd winnen. De knop-regels hierboven zetten een eigen
   display (inline-flex), en die sloeg anders het verbergen van bijvoorbeeld Opslaan
   en Verwijderen in de notitie-pop-up plat. */
[hidden] { display: none !important; }

.btn-secondary {
  background: var(--c-card);
  color: var(--c-text);
  border-color: var(--c-border-2);
}
.btn-secondary:hover {
  border-color: var(--c-navy);
  color: var(--c-navy);
  text-decoration: none;
}

.btn-danger {
  background: transparent;
  color: var(--c-accent-2);
  border-color: var(--c-error-bd);
}
.btn-danger:hover {
  background: var(--c-error-bg);
  color: var(--c-accent-2);
  border-color: var(--c-accent);
  text-decoration: none;
}

/* ---------- Flash & error banners ---------- */

.flash {
  background: var(--c-success-bg);
  border: 1px solid var(--c-success-bd);
  color: var(--c-success-tx);
  padding: 0.7rem 0.9rem;
  border-radius: var(--radius);
  margin: 0 0 1rem;
}

.error {
  background: var(--c-error-bg);
  border: 1px solid var(--c-error-bd);
  color: var(--c-error-tx);
  padding: 0.7rem 0.9rem;
  border-radius: var(--radius);
  margin: 0 0 1rem;
}

/* ---------- Filter bar ---------- */

.filter {
  margin: 0 0 1rem;
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}
.filter label {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  color: var(--c-text-muted);
  font-size: 0.92rem;
}

/* Zelfde maatvoering als de publieke toolbar (.toolbar-inner): alle velden en
   knoppen even hoog, dezelfde afronding en tekstgrootte. Zonder dit kreeg een
   zoekveld de browserstandaard en stond het als een klein hokje naast een
   ruimere select. */
.filter select,
.filter input[type="search"],
.filter input[type="text"],
.filter input[type="number"],
.filter .btn-primary,
.filter .btn-secondary {
  height: 2.5rem;
  box-sizing: border-box;
  font-size: 0.92rem;
}
.filter select,
.filter input[type="search"],
.filter input[type="text"],
.filter input[type="number"] {
  padding: 0.4rem 0.85rem;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  background: var(--c-card);
  font: inherit;
  font-size: 0.92rem;
  color: var(--c-text);
}
.filter input[type="search"] {
  width: 20rem;
  max-width: 100%;
}
.filter .btn-primary,
.filter .btn-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
}

/* ---------- Lijst-tabel ---------- */

.lijst-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.lijst-table th,
.lijst-table td {
  padding: 0.7rem 0.95rem;
  text-align: left;
  border-bottom: 1px solid var(--c-border);
  vertical-align: top;
}
.lijst-table thead th {
  background: #f9fafb;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--c-text-muted);
  font-weight: 600;
}
.lijst-table tbody tr:last-child td { border-bottom: 0; }
.lijst-table tbody tr:hover { background: #fafbfc; }
.lijst-table .nummer { font-weight: 600; color: var(--c-navy); white-space: nowrap; }
.lijst-table .versie-pill {
  display: inline-block;
  background: rgba(26, 33, 71, 0.08);
  color: var(--c-navy);
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.lijst-table .preview {
  color: var(--c-text-muted);
  font-size: 0.92rem;
}

/* Niet-klikbare indicator dat een artikel een menu-titel heeft (in de navigatie
   staat). Zelfde knopvorm als de acties, maar grijs zodat duidelijk is dat het
   geen knop is. */
.btn-disabled {
  background: #f1f3f5;
  color: var(--c-text-muted);
  border-color: var(--c-border);
  cursor: default;
}
/* Volledige artikel-weergave in de admin-lijst: net als publiek, maar binnen
   de tabelcel gehouden zodat brede tabellen/afbeeldingen de layout niet breken.
   Geen grijze hover op de rij — leest als artikel, niet als klikbare lijstregel. */
/* Volledige artikel-weergave in de admin: identieke kaarten als publiek, met
   een actie-balk (nummer links, knoppen rechts) boven de inhoud. */
.admin-artikel .admin-artikel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.75rem;
}
.admin-artikel .admin-artikel-bar h2 { margin: 0; }

/* Tweede "+ Nieuw artikel"-knop onder de lijst, rechts uitgelijnd zoals de
   bovenste knop in de page-header. */
.lijst-footer-actie {
  margin-top: 1.25rem;
  display: flex;
  justify-content: flex-end;
}
.admin-artikel .admin-artikel-bar .acties {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  flex-wrap: wrap;
}
.admin-artikel .admin-artikel-bar .acties form { margin: 0; }
.admin-artikel .public-artikel-body img { max-width: 100%; height: auto; }
.admin-artikel .public-artikel-body table { max-width: 100%; }
.lijst-table .acties {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  flex-wrap: wrap;
  white-space: nowrap;
}
.lijst-table .acties form { margin: 0; }

.empty {
  background: var(--c-card);
  border: 1px dashed var(--c-border-2);
  padding: 1.5rem;
  border-radius: var(--radius);
  text-align: center;
  color: var(--c-text-muted);
}

/* ---------- Formulieren ---------- */

.form-card {
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 1.5rem 1.75rem;
  box-shadow: var(--shadow-sm);
}

.form-card label {
  display: block;
  margin-bottom: 1rem;
}
.form-card label .lbl {
  display: block;
  margin-bottom: 0.3rem;
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--c-text);
}

.form-card select,
.form-card input[type="text"],
.form-card input[type="email"],
.form-card input[type="search"],
.form-card input[type="url"],
.form-card input[type="number"],
.form-card input[type="password"],
.form-card textarea {
  width: 100%;
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  background: #fff;
  font: inherit;
  font-size: 0.95rem;
  color: var(--c-text);
}
.form-card select:focus,
.form-card input:focus,
.form-card textarea:focus {
  outline: 2px solid rgba(26, 33, 71, 0.25);
  outline-offset: 1px;
  border-color: var(--c-navy);
}
.form-card textarea {
  resize: vertical;
  min-height: 14rem;
  font-family: ui-monospace, "SF Mono", Consolas, monospace;
  font-size: 0.92rem;
  line-height: 1.55;
}

.form-card label.has-error select,
.form-card label.has-error input,
.form-card label.has-error textarea {
  border-color: var(--c-accent);
  background: #fff8f8;
}
.field-error {
  display: block;
  color: var(--c-error-tx);
  font-size: 0.85rem;
  margin-top: 0.35rem;
}
.field-hint {
  display: block;
  color: var(--c-text-muted);
  font-size: 0.85rem;
  margin-top: 0.35rem;
}

.form-card .row-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
/* Knoppenbalk. Los van .form-card gedefinieerd, want hij komt ook buiten een
   formulier voor (resultaatschermen). Zonder de flex zakken een <button> en een
   <a> op hun eigen baseline en staan ze niet gelijk. */
.form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
}
.form-card .form-actions,
.form .form-actions {
  margin-top: 0.75rem;
  padding-top: 1rem;
  border-top: 1px solid var(--c-border);
}

/* ---------- Eenvoudige formulieren (.form / .form-row) ----------

   De import- en filterschermen gebruiken dit patroon: label bóven het veld, in
   plaats van de <label><span class="lbl"> van .form-card. Deze klassen waren
   nooit gedefinieerd, waardoor die schermen kale browservelden toonden.

   Bewust geen kaart-achtergrond zoals .form-card: .form zit ook om kleine
   versie-filters heen (gevi, tabel A) en die horen niet op te blazen. De
   opmaak zit daarom op .form-row, wat alleen de echte formulieren hebben. */

.form { max-width: 52rem; }

.form-row { margin-bottom: 1.1rem; }
.form-row > label {
  display: block;
  margin-bottom: 0.3rem;
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--c-text);
}

.form-row select,
.form-row input[type="text"],
.form-row input[type="email"],
.form-row input[type="search"],
.form-row input[type="url"],
.form-row input[type="number"],
.form-row input[type="password"],
.form-row input[type="file"],
.form textarea {
  width: 100%;
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  background: #fff;
  font: inherit;
  font-size: 0.95rem;
  color: var(--c-text);
}
.form-row select,
.form-row input[type="file"] { max-width: 34rem; }
.form-row input[type="file"] { padding: 0.45rem 0.7rem; }
.form-row input[type="radio"],
.form-row input[type="checkbox"] { width: auto; }
.form-row select:focus,
.form-row input:focus,
.form textarea:focus {
  outline: 2px solid rgba(26, 33, 71, 0.25);
  outline-offset: 1px;
  border-color: var(--c-navy);
}
.form textarea {
  resize: vertical;
  font-family: ui-monospace, "SF Mono", Consolas, monospace;
  font-size: 0.92rem;
  line-height: 1.55;
}

/* Radio- of checkbox-keuzes onder een veldlabel. */
.form-row .keuze {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: 0.4rem 0 0;
  font-weight: normal;
  font-size: 0.95rem;
  cursor: pointer;
}
.form-row .keuze input { margin-top: 0.25rem; flex: none; }

/* Randfunctie die het scherm niet mag domineren, ingeklapt aangeboden. */
.form-extra { margin: 0 0 1.1rem; }
.form-extra > summary {
  cursor: pointer;
  font-size: 0.9rem;
  color: var(--c-text-muted);
}
.form-extra > summary:hover { color: var(--c-navy); }
.form-extra textarea { margin-top: 0.6rem; }

/* ---------- Login-scherm ---------- */

.login-wrap {
  min-height: 100vh;
  background: var(--c-bg);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 4rem 1rem;
}
.login-wrap .login-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  color: var(--c-navy);
  font-weight: 700;
  font-size: 1.2rem;
  margin-bottom: 1.5rem;
}
.login-wrap .login-brand svg,
.login-wrap .login-brand img {
  width: 48px;
  height: 48px;
  object-fit: contain;
  display: block;
}
.login-wrap .form-card {
  width: 100%;
  max-width: 420px;
}
.login-wrap h1 {
  margin: 0 0 1rem;
  font-size: 1.2rem;
}

/* ---------- Home / 404 / 500 ---------- */

.center-card {
  max-width: 560px;
  margin: 4rem auto;
  text-align: center;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 2rem;
  box-shadow: var(--shadow-sm);
}
.center-card h1 { margin-bottom: 0.5rem; }

/* ---------- Publieke navigatie-tools (header) ---------- */

/* Rij 1 (top-inner): merk links, account-knoppen rechts. */
.public-account {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}

/* Rij 2: toolbar met navigatie + zoeken, links uitgelijnd onder het merk. */
.top-toolbar { background: var(--c-navy); }

/* Keuze van de ADR-uitgave in de bovenbalk. Verschijnt alleen als de admin meer
   dan één versie publiek heeft gezet. Zelfde pil als de andere headerknoppen. */
.versie-menu { position: relative; }
.versie-menu > summary {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 1.4rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
  font-size: 0.92rem;
  font-weight: 600;
  border: 1px solid rgba(255, 255, 255, 0.35);
  cursor: pointer;
  list-style: none;          /* Firefox: geen driehoekje */
  white-space: nowrap;
}
.versie-menu > summary::-webkit-details-marker { display: none; }
.versie-menu > summary:hover { background: rgba(255, 255, 255, 0.25); }
.versie-menu[open] > summary { background: rgba(255, 255, 255, 0.25); }

.versie-menu-lijst {
  position: absolute;
  top: calc(100% + 0.4rem);
  right: 0;
  z-index: 60;
  min-width: 12rem;
  padding: 0.35rem;
  background: var(--c-card, #fff);
  border: 1px solid var(--c-border, #e2e8f0);
  border-radius: var(--radius, 6px);
  box-shadow: 0 4px 18px rgba(15, 23, 42, 0.18);
}
.versie-menu-lijst a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.55rem 0.75rem;
  border-radius: 4px;
  color: var(--c-navy, #1a2147);
  text-decoration: none;
  font-size: 0.95rem;
}
.versie-menu-lijst a:hover { background: #eef2f7; text-decoration: none; }
.versie-menu-lijst a.huidig { font-weight: 700; }

/* ---------- Bedrijfsnotities: gedeeld binnen het bedrijf ---------- */

/* Dezelfde groene balk als in het bedrijfsportaal (details.bg-acc), zodat een
   bedrijfsnotitie er overal hetzelfde uitziet. De balk is groen; de inhoud en de
   reacties eronder staan gewoon op wit — anders wordt het één groene brij. */
.bedrijfsnotitie { margin-bottom: 0.75rem; }
.bedrijfsnotitie > summary {
  cursor: pointer;
  list-style: none;
  position: relative;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  font-weight: 700;
  background: #16a34a;
  color: #fff;
  padding: 0.65rem 2.25rem 0.65rem 1.25rem;
  border-radius: 999px;
}
.bedrijfsnotitie > summary::-webkit-details-marker { display: none; }
.bedrijfsnotitie > summary::after {
  content: '+';
  position: absolute;
  right: 1.1rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.2rem;
  font-weight: 400;
  line-height: 1;
}
.bedrijfsnotitie[open] > summary::after { content: '\2212'; }

/* De meta-tekst in de groene balk moet leesbaar blijven op groen. */
.bedrijfsnotitie > summary .bn-meta { color: rgba(255, 255, 255, 0.85); font-weight: 400; }
.bedrijfsnotitie > summary .bn-badge { background: #fff; color: #14532d; }
/* Modaliteit-label in de balk. Bewust een andere kleur dan het witte
   nummerplaatje ernaast: in een lijst met ADR- en RID-notities is het
   nummer alleen niet genoeg, want 2.1.1 bestaat in allebei. Deze regel
   staat na die hierboven, want beide zijn even specifiek. */
.bn-badge-mod { background: #1a2147; color: #fff; }
.bedrijfsnotitie > summary .bn-badge-mod { background: #1a2147; color: #fff; }

.bn-body {
  background: #fff;
  border: 1px solid var(--c-border, #e2e8f0);
  border-radius: var(--radius, 6px);
  padding: 1rem 1.25rem;
  margin: 0.6rem 0 0;
}
.bn-inhoud  { margin-bottom: 0.75rem; }
.bn-inhoud :last-child { margin-bottom: 0; }
.bn-inhoud img { max-width: 100%; height: auto; }
.bn-meta    { color: #557; font-size: 0.85rem; margin: 0 0 0.25rem; font-weight: 400; }

.bn-badge {
  display: inline-block;
  padding: 0.1rem 0.5rem;
  border-radius: 999px;
  background: #16a34a;
  color: #fff;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  vertical-align: middle;
}

/* Reactie van een collega: binnen dezelfde accordion, met eigen naam en datum.
   Niemand schrijft in andermans tekst. */
.bn-reactie {
  border-left: 3px solid #cbd5e1;
  padding: 0.5rem 0 0.5rem 0.75rem;
  margin: 0.5rem 0 0.5rem 0.5rem;
}
.bn-reactie-tekst {
  margin: 0 0 0.35rem;
  white-space: pre-wrap;   /* platte tekst: regelovergangen behouden */
}
.bn-reactie-acties { display: flex; gap: 1rem; align-items: center; }

/* Een draad: de openende reactie met daaronder, ingesprongen, de antwoorden erop.
   Precies één niveau — dieper nesten leest niet. */
.bn-draad { margin-bottom: 0.75rem; }
.bn-antwoorden {
  margin-left: 1.5rem;
  padding-left: 0.75rem;
  border-left: 2px dashed #e2e8f0;
}
.bn-antwoorden .bn-reactie { border-left-color: #94a3b8; }

/* Antwoord op een ánder antwoord binnen dezelfde draad: de inspringing zegt dan
   niet genoeg, dus benoemen we het doel. */
.bn-antwoord-op {
  margin: 0 0 0.3rem;
  font-size: 0.82rem;
  color: #64748b;
}
.bn-antwoord-op a { color: #64748b; text-decoration: none; border-bottom: 1px dotted #94a3b8; }
.bn-antwoord-op a:hover { color: var(--c-primary, #1a2147); }

.bn-antwoord-form {
  margin: 0.5rem 0 0.75rem;
  padding: 0.6rem 0.75rem;
  background: #f8fafc;
  border: 1px solid var(--c-border, #e2e8f0);
  border-radius: var(--radius, 6px);
}
.bn-antwoord-aan {
  margin: 0;
  font-size: 0.85rem;
  color: #557;
  display: flex;
  gap: 0.75rem;
  align-items: baseline;
}
.bn-antwoord-form .bn-reactie-invoer { margin-bottom: 0.4rem; }

.bn-nieuw-form { margin-top: 0.75rem; }

/* Tabbladen boven het overzicht met bedrijfsnotities: algemeen / hoofdstukken /
   artikelen. Vormgegeven als de knoppen elders in de app (btn-secondary, en de
   actieve tab als btn-primary) — onderstreepte tabs vielen uit de toon. */
.bn-tabs-menu {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}
.bn-tab {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin: 0;
  padding: 0.5rem 1rem;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  background: var(--c-card);
  color: var(--c-text);
  font-size: 0.92rem;
  font-weight: 500;
  line-height: 1.2;
  cursor: pointer;
}
.bn-tab:hover {
  border-color: var(--c-navy);
  color: var(--c-navy);
}
.bn-tab.is-active {
  background: var(--c-navy);
  border-color: var(--c-navy);
  color: #fff;
}
.bn-tab-aantal {
  background: #e2e8f0;
  color: #334155;
  border-radius: 999px;
  padding: 0 0.45rem;
  font-size: 0.75rem;
  font-weight: 700;
}
.bn-tab.is-active .bn-tab-aantal { background: #fff; color: var(--c-navy); }

.bn-tab-panel { display: none; }
.bn-tab-panel.is-active { display: block; }

/* Vraag-accordions (Mijn vragen en /admin/vragen): dezelfde groene balk als een
   bedrijfsnotitie, maar met een kop van twee regels — wie/wanneer en waarover.
   Twee regels in een pil (999px) oogt raar, dus een gewone afronding. */
.vraag-acc > summary { border-radius: 14px; }
.vraag-kop {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  flex: 1;
  min-width: 0;
}
.vraag-kop-sub {
  font-weight: 400;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.85);
}

/* Een bericht in het gesprek onder een vraag. Net als de oorspronkelijke vraag
   HTML uit de lichte editor (opmaak en foto's). Berichten van de beheerder
   krijgen een groene accentlijn. */
.vraag-bericht {
  border-left: 3px solid #cbd5e1;
  padding: 0.5rem 0 0.5rem 0.75rem;
  margin: 0.5rem 0;
}
.vraag-bericht-beheer { border-left-color: #16a34a; background: #f0fdf4; }
.vraag-bericht-acties { margin-top: 0.35rem; }
.vraag-bericht-acties > summary {
  cursor: pointer;
  font-size: 0.85rem;
  color: #6b7280;
}
.vraag-bericht-acties[open] > summary { margin-bottom: 0.5rem; }

.bn-reactie-invoer {
  width: 100%;
  margin: 0.5rem 0;
  padding: 0.5rem;
  border: 1px solid var(--c-border, #e2e8f0);
  border-radius: 4px;
  font: inherit;
  resize: vertical;
}
.btn-link {
  background: none;
  border: 0;
  padding: 0;
  color: var(--c-navy, #1a2147);
  font: inherit;
  font-size: 0.85rem;
  cursor: pointer;
  text-decoration: underline;
}
.btn-link:hover { color: #2a3468; text-decoration: underline; }

.btn-link-danger {
  background: none;
  border: 0;
  padding: 0;
  color: #b91c1c;
  font: inherit;
  font-size: 0.85rem;
  cursor: pointer;
  text-decoration: underline;
}
.btn-link-danger:hover { color: #7f1d1d; }

/* Koppelingen van een notitie: één regel per ADR-versie waarin de notitie
   zichtbaar is. */
.koppel-lijst { list-style: none; margin: 0 0 1rem; padding: 0; }
.koppel-lijst li {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; flex-wrap: wrap;
  padding: 0.55rem 0.75rem;
  border: 1px solid #e5e7eb; border-radius: 6px;
  background: #f8fafc;
}
.koppel-lijst li + li { margin-top: 0.4rem; }
.koppel-lijst .koppel-let-op { color: #b45309; }

/* Foutpagina (404/500) binnen de normale layout: geen doodlopende weg, de
   bezoeker houdt de taakbalk en de zoekvelden gewoon boven zich. */
.fout-pagina {
  max-width: 40rem;
  margin: 3rem auto;
  text-align: center;
}
.fout-pagina .fout-code {
  font-size: 4rem;
  font-weight: 700;
  line-height: 1;
  margin: 0 0 0.5rem;
  color: var(--c-navy);
  opacity: 0.25;
}
.fout-pagina h1 { margin: 0 0 1rem; }
.fout-pagina .fout-uitleg { color: #555; margin: 0 0 1rem; }
.fout-pagina .btn-primary { display: inline-block; margin-top: 0.5rem; }

/* Waarschuwing boven een niet-actieve (concept)versie; alleen admins zien deze
   pagina's, en dan moet meteen duidelijk zijn dat het publiek ze niet ziet. */
.concept-balk {
  background: #fff4d6;
  border-bottom: 1px solid #e0c56a;
  color: #6b4e00;
  padding: 0.6rem 1rem;
  text-align: center;
  font-size: 0.95rem;
}

/* "Beheren namens een bedrijf": een superadmin werkt in het portaal van een
   klant. Bewust een andere kleur dan de waarschuwingsbalken — dit is geen fout
   maar een modus, en hij moet op elke pagina opvallen zolang hij aan staat. */
.beheer-balk {
  background: #e7f0ff;
  border-bottom: 1px solid #9fbdf0;
  color: #17356b;
  padding: 0.6rem 1rem;
  font-size: 0.95rem;
  display: flex;
  gap: 1rem;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
}
.beheer-balk button {
  background: #17356b;
  color: #fff;
  border: 0;
  border-radius: 4px;
  padding: 0.3rem 0.9rem;
  font-size: 0.9rem;
  cursor: pointer;
}
.beheer-balk button:hover { background: #0f244a; }

/* Balk voor gebruikers van een gedeactiveerd bedrijf (bijv. onbetaalde
   factuur): inloggen mag nog, maar het ADR is op slot — en dat leggen we uit. */
.toegang-balk {
  background: #fdecea;
  border-bottom: 1px solid #f1aeb5;
  color: #842029;
  padding: 0.6rem 1rem;
  text-align: center;
  font-size: 0.95rem;
}
.toolbar-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0.15rem 1.5rem 1.1rem;
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}

/* Gelijke hoogte + boxstijl voor alle toolbar-elementen. */
.toolbar-inner .toc-toggle,
.toolbar-inner .sprong input[type="text"],
.toolbar-inner .tabela-link,
.toolbar-inner .balk-vast,
.toolbar-inner .home-link {
  height: 2.5rem;
  box-sizing: border-box;
  font-size: 0.92rem;
}
.toolbar-inner .toc-toggle,
.toolbar-inner .home-link,
.toolbar-inner .balk-vast,
.toolbar-inner .tabela-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
}
.toolbar-inner .sprong input[name="nummer"] { width: 12rem; }
.toolbar-inner .sprong input[name="q"]      { width: 12rem; }
.toolbar-inner .sprong input[name="un"]     { width: 9rem; }

/* TOC dropdown */
.toc-wrap { position: relative; }
.toc-toggle {
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.4);
  padding: 0.4rem 0.85rem;
  border-radius: var(--radius);
  font: inherit;
  font-size: 0.92rem;
  cursor: pointer;
}
.toc-toggle:hover { background: rgba(255, 255, 255, 0.18); border-color: #fff; }
.toc-dropdown {
  display: none;
  position: fixed;
  top: 4.5rem;   /* fallback; JS positioneert exact onder de knop */
  right: 0.75rem;
  z-index: 50;
  width: min(840px, calc(100vw - 1.5rem));
  max-height: 80vh;
  overflow-y: auto;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  box-shadow: 0 4px 18px rgba(15, 23, 42, 0.18);
  padding: 1rem 1.25rem;
  color: var(--c-text);
}
.toc-dropdown.is-open { display: block; }
.toc-dropdown .toc-empty {
  margin: 0;
  color: var(--c-text-muted);
  font-style: italic;
}
/* Deel-keuzemenu (tab-row bovenaan dropdown) */
.toc-deel-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  padding-bottom: 0.6rem;
  margin-bottom: 0.85rem;
  border-bottom: 2px solid var(--c-border);
}
.toc-deel-tab {
  background: transparent;
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 0.35rem 0.85rem;
  font: inherit;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--c-text-muted);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.toc-deel-tab:hover {
  background: #eef2f7;
  color: var(--c-navy);
  border-color: var(--c-border-2);
}
.toc-deel-tab.is-active {
  background: var(--c-navy);
  border-color: var(--c-navy);
  color: #fff;
}

/* Home-link in de Deel-tabs: zelfde vorm als een tab, maar een echte link */
.toc-home {
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-right: 0.5rem;
}
.toc-home::before { content: "\2302"; font-weight: 400; }
.toc-home:hover { text-decoration: none; }

/* Per-Deel paneel — alleen actieve zichtbaar */
.toc-deel-panel { display: none; }
.toc-deel-panel.is-active { display: block; }
.toc-deel-titel {
  margin: 0 0 0.85rem;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--c-navy);
  line-height: 1.3;
}

/* Twee-koloms layout binnen een Deel-paneel: links = hoofdstuk-keuze,
   rechts = artikel-lijst van het gekozen hoofdstuk */
.toc-hf-layout {
  display: grid;
  grid-template-columns: minmax(180px, 220px) 1fr;
  gap: 1rem;
  align-items: start;
  max-height: 55vh;
}
.toc-hf-tabs {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  border-right: 1px solid var(--c-border);
  padding-right: 0.6rem;
  overflow-y: auto;
  max-height: 55vh;
}
.toc-hf-tab {
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--radius);
  padding: 0.35rem 0.65rem;
  font: inherit;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--c-text);
  cursor: pointer;
  text-align: left;
  white-space: nowrap;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.toc-hf-tab:hover {
  background: #eef2f7;
  color: var(--c-link);
}
.toc-hf-tab.is-active {
  background: var(--c-navy);
  color: #fff;
  border-color: var(--c-navy);
}

.toc-hf-panels {
  overflow-y: auto;
  max-height: 55vh;
  padding-right: 0.25rem;
}
.toc-hf-panel { display: none; }
.toc-hf-panel.is-active { display: block; }

.toc-hf-link {
  display: inline-block;
  margin: 0 0 0.6rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--c-link);
  text-decoration: none;
  letter-spacing: 0.01em;
  text-transform: uppercase;
}
.toc-hf-link:hover {
  color: var(--c-link-hover);
  text-decoration: underline;
}

.toc-hf-panel ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: max-content 1fr;
}
.toc-hf-panel li {
  margin: 0;
  display: grid;
  grid-template-columns: subgrid;
  grid-column: 1 / -1;
}
.toc-hf-panel li + li {
  border-top: 1px solid var(--c-border);
}
.toc-hf-panel a {
  display: grid;
  grid-template-columns: subgrid;
  grid-column: 1 / -1;
  align-items: baseline;
  gap: 0.6rem;
  padding: 0.32rem 0.4rem;
  color: var(--c-text);
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 700;
  line-height: 1.35;
}
.toc-hf-panel a:hover {
  background: #eef2f7;
  color: var(--c-link);
  text-decoration: none;
}
.toc-hf-panel .toc-num {
  font-variant-numeric: tabular-nums;
  color: var(--c-navy);
  min-width: 4rem;
  font-size: 0.85rem;
  white-space: nowrap;
}
.toc-hf-panel .toc-titel {
  min-width: 0;
  /* Volledige menu-titel tonen: over meerdere regels laten doorlopen en zo nodig
     binnen een woord afbreken, zodat ook heel lange titels binnen de kolom
     passen zonder horizontaal te overlopen. */
  overflow-wrap: anywhere;
}
/* Artikel met verborgen nummer: dan staat de titel als enige in de rij en valt
   hij in de eerste kolom, en die is max-content — die meet de titel ongebroken en
   duwt zo het hele menu breder dan het paneel (horizontale scrollbar). Over beide
   kolommen laten lopen houdt hem binnen de breedte, en dan werkt het afbreken
   hierboven wel. */
.toc-hf-panel a > .toc-titel:only-child {
  grid-column: 1 / -1;
}

/* Op smalle schermen → kolommen onder elkaar */
@media (max-width: 640px) {
  .toc-hf-layout {
    grid-template-columns: 1fr;
    max-height: none;
  }
  .toc-hf-tabs {
    flex-direction: row;
    flex-wrap: wrap;
    border-right: 0;
    border-bottom: 1px solid var(--c-border);
    padding-right: 0;
    padding-bottom: 0.5rem;
    max-height: none;
  }
  .toc-hf-panels {
    max-height: none;
  }
}

/* Sprong-veld */
.sprong {
  display: flex;
  align-items: center;
  margin: 0;
}
.sprong input[type="text"] {
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.4);
  padding: 0.35rem 0.6rem;
  border-radius: var(--radius);
  font: inherit;
  font-size: 0.9rem;
  width: 11rem;
}
.sprong input[type="text"]::placeholder { color: rgba(255, 255, 255, 0.65); }
.sprong input[type="text"]:focus {
  outline: none;
  background: rgba(255, 255, 255, 0.18);
  border-color: #fff;
}
.sprong button {
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-left: 0;
  padding: 0.35rem 0.7rem;
  border-radius: 0 var(--radius) var(--radius) 0;
  font: inherit;
  cursor: pointer;
}
.sprong button:hover { background: rgba(255, 255, 255, 0.28); }

/* In/uitlog-knoppen in de publieke header — groene Inloggen, rode Uitloggen */
.public-login {
  display: inline-block;
  padding: 0.5rem 1.4rem;
  border-radius: 999px;
  background: #16a34a;
  color: #fff;
  font-size: 0.92rem;
  font-weight: 600;
  text-decoration: none;
  border: none;
  cursor: pointer;
}
.public-login:hover { background: #15803d; color: #fff; text-decoration: none; }

/* Registreren en Demo aanvragen: dezelfde omlijnde vorm, zodat de groene
   Inloggen-knop de enige opvallende actie blijft. */
.public-register,
.public-demo {
  display: inline-block;
  padding: 0.5rem 1.4rem;
  margin-right: 0.6rem;
  border-radius: 999px;
  background: transparent;
  color: #fff;
  font-size: 0.92rem;
  font-weight: 600;
  text-decoration: none;
  border: 1px solid rgba(255, 255, 255, 0.55);
  cursor: pointer;
}
.public-register:hover,
.public-demo:hover { background: rgba(255, 255, 255, 0.14); color: #fff; text-decoration: none; }

.public-logout { display: inline; margin: 0; }
.public-logout button {
  display: inline-block;
  padding: 0.5rem 1.4rem;
  border-radius: 999px;
  background: var(--c-accent);
  color: #fff;
  font: inherit;
  font-size: 0.92rem;
  font-weight: 600;
  border: none;
  cursor: pointer;
}
.public-logout button:hover { background: var(--c-accent-2); }

/* "Naar admin"-knop voor ingelogde admins — neutrale outline op de navbar */
.public-admin-link {
  display: inline-block;
  padding: 0.5rem 1.4rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
  font-size: 0.92rem;
  font-weight: 600;
  text-decoration: none;
  border: 1px solid rgba(255, 255, 255, 0.35);
}
.public-admin-link:hover {
  background: rgba(255, 255, 255, 0.25);
  color: #fff;
  text-decoration: none;
}

/* ---------- In-page TOC op hoofdstukpagina ---------- */

.hoofdstuk-toc {
  margin: 1rem 0 1.5rem;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 0.75rem 1.25rem 1rem;
}
.hoofdstuk-toc summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--c-navy);
  font-size: 0.95rem;
  padding: 0.25rem 0;
  list-style: revert;
}
.hoofdstuk-toc[open] summary {
  margin-bottom: 0.5rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--c-border);
}
.hoofdstuk-toc-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}
.hoofdstuk-toc-item { margin: 0; }
.hoofdstuk-toc-item + .hoofdstuk-toc-item {
  border-top: 1px solid var(--c-border);
}
.hoofdstuk-toc-item a {
  display: flex;
  align-items: baseline;
  gap: 0.85rem;
  padding: 0.45rem 0.5rem;
  color: var(--c-text);
  text-decoration: none;
  font-size: 0.95rem;
  font-weight: 700;
  line-height: 1.4;
}
.hoofdstuk-toc-item a:hover {
  background: #eef2f7;
  color: var(--c-link);
  text-decoration: none;
}
.hoofdstuk-toc-num {
  font-variant-numeric: tabular-nums;
  color: var(--c-navy);
  flex-shrink: 0;
  min-width: 5rem;
}
.hoofdstuk-toc-title {
  flex: 1;
  min-width: 0;
}

/* ---------- Vorige/volgende-knoppen ---------- */

.hoofdstuk-nav {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 0.75rem;
  margin: 1rem 0 1.25rem;
}
.hoofdstuk-nav a,
.hoofdstuk-nav span {
  display: block;
  padding: 0.6rem 1rem;
  text-align: center;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  background: var(--c-card);
  color: var(--c-text);
  text-decoration: none;
  font-weight: 500;
}
.hoofdstuk-nav a:hover {
  border-color: var(--c-navy);
  color: var(--c-navy);
  text-decoration: none;
}
.hoofdstuk-nav .hoofdstuk-nav-prev { text-align: left; }
.hoofdstuk-nav .hoofdstuk-nav-next { text-align: right; }
.hoofdstuk-nav .hoofdstuk-nav-up { color: var(--c-text-muted); font-weight: 400; }
.hoofdstuk-nav .disabled { background: transparent; border-color: transparent; }

/* ---------- "Naar boven"/"Naar beneden"-knoppen (floating) ---------- */

.back-to-top,
.back-to-bottom {
  position: fixed;
  right: 1.5rem;
  z-index: 8000;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background: var(--c-navy);
  color: #fff;
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  transform: translateY(0.6rem);
  transition: opacity 0.2s ease, transform 0.2s ease, background 0.15s;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
}
.back-to-top    { bottom: 1.5rem; }
.back-to-bottom { bottom: 5.1rem; } /* boven de naar-boven-knop gestapeld */
.back-to-top:hover,
.back-to-bottom:hover { background: var(--c-navy-2); }
.back-to-top:focus-visible,
.back-to-bottom:focus-visible {
  outline: 2px solid var(--c-link);
  outline-offset: 3px;
}
.back-to-top.is-visible,
.back-to-bottom.is-visible {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}
.back-to-top svg,
.back-to-bottom svg {
  width: 1.4rem;
  height: 1.4rem;
}
@media (prefers-reduced-motion: reduce) {
  .back-to-top,
  .back-to-bottom { transition: opacity 0.15s ease; }
}

/* ---------- Admin: menu-fields op artikel-formulier ---------- */

.form-card .menu-fields {
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 0.85rem 1rem;
  margin-bottom: 1rem;
  background: #fafbfc;
}
.form-card .menu-fields .checkbox-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  cursor: pointer;
}
.form-card .menu-fields .checkbox-row input[type="checkbox"] {
  width: auto;
  margin: 0;
}
.form-card .menu-fields .checkbox-row span {
  font-weight: 600;
  color: var(--c-text);
  font-size: 0.95rem;
}
.form-card .menu-fields label.is-hidden { display: none; }
.form-card .menu-fields > label:not(.checkbox-row) {
  margin: 0.75rem 0 0;
}

/* ---------- Deel-cards op publieke versie-pagina ---------- */

.deel-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.25rem;
  margin: 1.5rem 0;
}

.deel-card {
  display: flex;
  flex-direction: column;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  overflow: hidden;
  text-decoration: none;
  color: var(--c-text);
  box-shadow: var(--shadow-sm);
  transition: transform 0.1s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}
.deel-card:hover {
  text-decoration: none;
  color: var(--c-text);
  border-color: var(--c-border-2);
  box-shadow: var(--shadow);
  transform: translateY(-2px);
}

.deel-card-img {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, #1a2147 0%, #2d3760 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.deel-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.deel-card-placeholder {
  color: rgba(255, 255, 255, 0.55);
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.deel-card-body {
  padding: 1rem 1.1rem 0.75rem;
  flex: 1;
}
.deel-card-body h2 {
  margin: 0 0 0.35rem;
  font-size: 1.05rem;
  color: var(--c-navy);
  line-height: 1.3;
}
.deel-card-body p {
  margin: 0;
  color: var(--c-text-muted);
  font-size: 0.92rem;
  line-height: 1.5;
}

.deel-card-action {
  padding: 0 1.1rem 1.1rem;
}
.deel-card-action .btn-pill {
  display: inline-block;
  padding: 0.4rem 0.95rem;
  background: rgba(26, 33, 71, 0.08);
  color: var(--c-navy);
  border-radius: 999px;
  font-size: 0.88rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.deel-card:hover .btn-pill {
  background: var(--c-navy);
  color: #fff;
}

.deel-intro {
  margin: 0.5rem 0 1.5rem;
  color: var(--c-text-muted);
  font-size: 0.95rem;
  line-height: 1.55;
  max-width: 70ch;
}

/* ---------- Publieke navigatie & content ---------- */

.public-nav a {
  color: rgba(255, 255, 255, 0.85);
  font-size: 0.92rem;
  text-decoration: none;
}
.public-nav a:hover { color: #fff; text-decoration: none; }

.breadcrumb {
  font-size: 0.9rem;
  color: var(--c-text-muted);
  margin-bottom: 1rem;
}
.breadcrumb a { color: var(--c-link); }
.breadcrumb-sep { margin: 0 0.4rem; color: var(--c-text-soft); }

.hoofdstuk-lijst {
  list-style: none;
  padding: 0;
  margin: 1rem 0 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 0.6rem;
}
.hoofdstuk-lijst li { margin: 0; }
.hoofdstuk-lijst a {
  display: block;
  padding: 0.7rem 1rem;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-left: 3px solid var(--c-link);
  border-radius: var(--radius);
  text-decoration: none;
  color: var(--c-text);
  font-weight: 600;
  box-shadow: var(--shadow-sm);
}
.hoofdstuk-lijst a:hover {
  border-color: var(--c-border-2);
  border-left-color: var(--c-accent);
  text-decoration: none;
}

.public-artikel {
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 1.5rem 1.75rem;
  margin-bottom: 1.25rem;
  box-shadow: var(--shadow-sm);
  scroll-margin-top: 100px;
}
.public-artikel h2 {
  margin: 0 0 0.75rem;
  font-size: 1.1rem;
  color: var(--c-navy);
  letter-spacing: 0.02em;
}
.public-artikel h2 .anchor-link {
  color: var(--c-navy);
  text-decoration: none;
}
.public-artikel h2 .anchor-link:hover {
  color: var(--c-link);
  text-decoration: none;
}
.public-artikel-body { line-height: 1.6; }

/* Ingesloten (sub)artikelen via {{arttree:...}} — zelfde kaart, maar platter
   zodat geneste kaarten niet dubbel-zwaar ogen. */
.public-artikel-embedded { box-shadow: none; }
.public-artikel-embedded:last-child { margin-bottom: 0; }

/* Tabelcellen/-rijen met de blauwe accentkleur (#6f8bc4) als achtergrond:
   tekst standaard wit en bold. Matcht op de inline stijl uit TinyMCE, in
   hex- én rgb-notatie. Bewust ingekleurde tekst (inline color) wint gewoon. */
td[style*="#6f8bc4" i], th[style*="#6f8bc4" i],
tr[style*="#6f8bc4" i] > td, tr[style*="#6f8bc4" i] > th,
td[style*="rgb(111, 139, 196)"], th[style*="rgb(111, 139, 196)"],
tr[style*="rgb(111, 139, 196)"] > td, tr[style*="rgb(111, 139, 196)"] > th,
td[style*="rgb(111,139,196)"], th[style*="rgb(111,139,196)"],
tr[style*="rgb(111,139,196)"] > td, tr[style*="rgb(111,139,196)"] > th {
  color: #fff;
  font-weight: 700;
}

/* Uit Word/PDF geplakte tabellen hebben vaak een <p> in de ene cel en kale
   tekst in de andere. Die paragraafmarge zit BINNEN de cel, dus vertical-align:
   top lijnt alsnog scheef uit — de cel met <p> begint een regel lager. De
   buitenste marges van een cel doen nooit iets nuttigs; marges tússen meerdere
   paragrafen in dezelfde cel blijven wel staan. Net als de regel hierboven
   bewust niet gescopet: artikelinhoud rendert ook in .adr-content en
   .adr-tab-panel (UN-detailpagina), niet alleen in .public-artikel-body. */
td > p:first-child, th > p:first-child { margin-top: 0; }
td > p:last-child,  th > p:last-child  { margin-bottom: 0; }

/* Niet-genummerde kopteksten / tussenteksten — gewoon platte tekst,
   geen kaart, geen rand. */
.public-koptekst {
  margin: 0.75rem 0;
  line-height: 1.6;
  scroll-margin-top: 100px;
}
.public-koptekst :first-child { margin-top: 0; }
.public-koptekst :last-child  { margin-bottom: 0; }

/* ---------- Cross-references (in preview-pagina) ---------- */

.adr-ref {
  display: inline-block;
  background: #dbeafe;
  color: #1e40af;
  padding: 0.05rem 0.45rem;
  border-radius: 4px;
  font-weight: 500;
  text-decoration: none;
  font-size: 0.92em;
}
.adr-ref:hover { background: #bfdbfe; text-decoration: none; }
/* UN-verwijzingen (auto-links naar UN-nummers) vet afdrukken */
a[data-un-ref] { font-weight: 700; }
/* Master-vinkje per regel in de verwijzingen-preview */
.autoref-row-master { display: inline-flex; align-items: center; gap: 0.4rem; cursor: pointer; }
.autoref-row-master input { cursor: pointer; }
/* "Geen gevonden"-notitie op de regel + oplichten van de aangesprongen regel */
.unref-leeg-note {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.05rem 0.5rem;
  background: #fff3cd;
  border: 1px solid #f0c14b;
  border-radius: 999px;
  font-size: 0.8rem;
  color: #7a5c00;
}
.lijst-table tr:target { background: #fff8e1; }
.lijst-table tr:target td { transition: background 0.4s; }
/* Gratis-inkijk statusbadges */
.gi-badge { display: inline-block; padding: 0.1rem 0.55rem; border-radius: 999px; font-size: 0.8rem; font-weight: 600; }
.gi-badge-vrij { background: #dcfce7; color: #166534; }
.gi-badge-beperkt { background: #fef3c7; color: #92400e; }
.adr-ref-broken {
  background: var(--c-error-bg);
  color: var(--c-error-tx);
}
/* Geen eigen opmaak in het publieke deel — de markering is puur een anker.
   Het woord neemt de dikte/kleur van zijn omgeving over (vet als jij het vet
   maakte, anders normaal). De markering in de editor (content_style) blijft
   wél zichtbaar, zodat de admin ziet welke woorden gemarkeerd zijn. */
.adr-def-term {
  font-weight: inherit;
  color: inherit;
  scroll-margin-top: 5rem;   /* anker niet onder de sticky header */
}
/* Korte highlight alleen wanneer je via een link naar de definitie springt. */
.adr-def-term:target { background: var(--c-def-target); }

/* ---------- Preview-pagina ---------- */

.preview-card {
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 1.75rem 2rem;
  box-shadow: var(--shadow-sm);
  line-height: 1.6;
}
.adr-content h1, .adr-content h2, .adr-content h3 { margin-top: 1.5rem; }
.adr-content h1:first-child, .adr-content h2:first-child { margin-top: 0; }

.adr-content details.adr-accordion {
  margin: 0.75rem 0 1rem;
}
.adr-content details.adr-accordion > summary {
  background: #16a34a;
  color: #fff;
  padding: 0.65rem 2.25rem 0.65rem 1.25rem;
  font-weight: 600;
  cursor: pointer;
  list-style: none;
  border-radius: 999px;
  position: relative;
}
.adr-content details.adr-accordion[data-color='blauw']  > summary { background: #2563eb; }
.adr-content details.adr-accordion[data-color='oranje'] > summary { background: #ea580c; }
.adr-content details.adr-accordion[data-color='rood']   > summary { background: #dc2626; }
.adr-content details.adr-accordion[data-color='grijs']  > summary { background: #6b7280; }
.adr-content details.adr-accordion[data-color='navy']   > summary { background: #1a2147; }
.adr-content details.adr-accordion > summary::-webkit-details-marker { display: none; }
.adr-content details.adr-accordion > summary::after {
  content: '+';
  position: absolute;
  right: 1.1rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.2rem;
  font-weight: 400;
  line-height: 1;
}
.adr-content details.adr-accordion[open] > summary::after { content: '\2212'; }
.adr-content details.adr-accordion > summary + * { margin-top: 0.75rem; }
.adr-content details.adr-accordion > *:not(summary) {
  margin-left: 1.75rem;
  margin-right: 1.5rem;
}
.adr-content details.adr-accordion > *:last-child { margin-bottom: 0.75rem; }
/* Accordion-in-accordion niet verder laten inspringen/versmallen: even breed
   als de bovenliggende, zodat elke nestlaag dezelfde maat houdt. */
.adr-content details.adr-accordion > details.adr-accordion {
  margin-left: 0;
  margin-right: 0;
}
.adr-content details.adr-accordion > ol,
.adr-content details.adr-accordion > ul { padding-left: 2.5rem; }
.adr-content details.adr-accordion ol ol,
.adr-content details.adr-accordion ul ul,
.adr-content details.adr-accordion ol ul,
.adr-content details.adr-accordion ul ol { padding-left: 2rem; }

/* Opsommingstekens en lijstnummers volgen de tekstkleur die de auteur instelt.
   TinyMCE zet een gekozen kleur op een <span> binnen de <li>; de marker gebruikt
   standaard de kleur van de <li> zelf, dus alleen de tekst kleurde mee en de
   bullet bleef donker (onzichtbaar op een donkere achtergrond). admin.js leest de
   kleur uit die het grootste deel van de regel beslaat en geeft die door via
   --marker-kleur. Zonder kleur (of zonder JS) valt de marker terug op de gewone
   tekstkleur, dus ongekleurde lijsten veranderen niet. Een klein gekleurd stukje
   telt niet mee — anders kleurt een rode voetnootverwijzing "*1" achteraan de
   regel ook het lijstnummer. */
.adr-content li::marker,
.public-artikel-body li::marker { color: var(--marker-kleur, currentColor); }

/* Genestelde nummering: 1. op het hoofdniveau, 3.1 / 3.1.2 daaronder.
   HTML kent geen list-style-type die dat toont, dus het gaat via CSS-tellers:
   counters() plakt het nummer van elk bovenliggend niveau ervoor. Voordeel boven
   de nummers als tekst intypen is hetzelfde als bij de a)-lijsten: zet je er later
   een item tussen, dan schuift de hele reeks vanzelf mee.
   Aangezet met de TinyMCE-knop "1.1-nummering", die de klasse op de <ol> zet.
   De PDF-export leest geen CSS en bouwt dezelfde nummers los op in
   pdf_render_list_node(); wijzig je hier de vorm, doe het dáár dan ook. */

/* Uitzondering: een sublijst met class="adr-nr-uit" stapt uit de nummering en
   toont weer zijn eigen marker (a/b/c, i/ii), net als een geneste <ul> dat al
   deed. Nodig voor wettekst als "1. / 1.1 / a.": zonder deze uitstap trekt de
   teller elke geneste <ol> mee en wint hij van de list-style-type die je in de
   dropdown kiest — je ziet dan 1.1.1 waar a. hoort te staan. De :not()-paren
   sluiten ook de lijsten uit die ONDER zo'n sublijst hangen.
   De TinyMCE-knop "1.1" zet de klasse als de cursor in de sublijst staat; hij
   gaat er ook automatisch op zodra je voor die sublijst een letter- of
   cijfervorm kiest. pdf_render_list_node() kent dezelfde uitstap. */
/* Waarom overal :not(.adr-nr-genest ol): de klasse hoort op de buitenste <ol>, maar
   TinyMCE bouwt bij in- en uitspringen de lijst opnieuw op met de attributen van de
   oorspronkelijke lijst. De nieuwe sublijst krijgt de klasse dus mee en zou zichzelf
   anders als hoofdniveau tellen: je ziet dan "1." waar 4.3.1 hoort, en een a/b/c die
   je wel kiest maar niet ziet (list-style: none wint). Met deze uitsluiting telt zo'n
   sublijst gewoon mee als niveau eronder, ook in artikelen waar die klasse al staat.
   De editor haalt hem er bovendien meteen af — zie opschonenGenest() in de init. */
ol.adr-nr-genest:not(.adr-nr-genest ol),
ol.adr-nr-genest ol:not(.adr-nr-uit):not(.adr-nr-uit ol) {
  /* !important is hier nodig, geen luiheid: TinyMCE zet list-style-type INLINE op
     de <ol> (via de numlist-dropdown), en een inline stijl wint van een
     stylesheet. Zonder dit blijft het eigen nummer van de browser staan en zie je
     twee markers over elkaar heen. */
  list-style: none !important;
  counter-reset: adr-nr;
  padding-left: 2.6em;
}
ol.adr-nr-genest:not(.adr-nr-genest ol) > li,
ol.adr-nr-genest ol:not(.adr-nr-uit):not(.adr-nr-uit ol) > li {
  /* Ook hier: TinyMCE zet list-style-type soms op het <li> in plaats van op de
     <ol>, en dan blijft de eigen marker van de browser alsnog staan. */
  list-style: none !important;
  counter-increment: adr-nr;
  position: relative;
}
ol.adr-nr-genest:not(.adr-nr-genest ol) > li::before,
ol.adr-nr-genest ol:not(.adr-nr-uit):not(.adr-nr-uit ol) > li::before {
  position: absolute;
  left: -2.6em;
  width: 2.4em;
  text-align: right;
  color: var(--marker-kleur, currentColor);
}
ol.adr-nr-genest:not(.adr-nr-genest ol) > li::before { content: counter(adr-nr) "."; }
ol.adr-nr-genest ol:not(.adr-nr-uit):not(.adr-nr-uit ol) > li::before  { content: var(--nr-voor, "") counters(adr-nr, "."); }

/* Lijst die niet bij 1. begint maar bij een samengesteld nummer (3.4, 5.8):
   alles vóór het laatste cijfer staat als tekst in --nr-voor (inline op de <ol>,
   gezet door de knop Lijst-start), het laatste cijfer blijft gewoon de teller —
   items schuiven dus nog steeds mee als je er één tussenvoegt.
   Waarom twee dragers voor hetzelfde: content kan met attr() alleen bij het
   element zélf, niet bij een voorouder, dus de waarde moet via een custom
   property naar beneden erven. Selecteren op een voorouder-attribuut mag wél,
   en data-nr-prefix is meteen wat pdf_render_list_node() leest.
   Het hoofdniveau krijgt hier geen punt achter het nummer: "3.4", niet "3.4." —
   gelijk aan hoe het niveau eronder (1.1) al werd getoond. */
ol.adr-nr-genest[data-nr-prefix]:not(.adr-nr-genest ol) > li::before { content: var(--nr-voor, "") counter(adr-nr); }

/* Scheidingslijn (TinyMCE Lijn-knop). Dikte staat inline (border-top-width in px);
   lijnsoort en kleur via data-attributen. Basis = 2px grijs, doorgetrokken.
   Zowel onder .adr-content (publiek hoofdstuk, preview) als los onder
   .public-artikel-body (o.a. admin-overzicht), want niet elke weergave zit in
   een .adr-content-wrapper — anders valt de <hr> daar op de browser-default
   (altijd solide, geen kleur). */
.adr-content hr,
.public-artikel-body hr {
  border: none;
  border-top: 2px solid var(--c-border);
  margin: 1.5rem 0;
}
.adr-content hr.adr-divider[data-style='solid'],
.public-artikel-body hr.adr-divider[data-style='solid']    { border-top-style: solid; }
.adr-content hr.adr-divider[data-style='dashed'],
.public-artikel-body hr.adr-divider[data-style='dashed']   { border-top-style: dashed; }
.adr-content hr.adr-divider[data-style='dotted'],
.public-artikel-body hr.adr-divider[data-style='dotted']   { border-top-style: dotted; }
.adr-content hr.adr-divider[data-color='groen'],
.public-artikel-body hr.adr-divider[data-color='groen']    { border-top-color: #16a34a; }
.adr-content hr.adr-divider[data-color='blauw'],
.public-artikel-body hr.adr-divider[data-color='blauw']    { border-top-color: #2563eb; }
.adr-content hr.adr-divider[data-color='oranje'],
.public-artikel-body hr.adr-divider[data-color='oranje']   { border-top-color: #ea580c; }
.adr-content hr.adr-divider[data-color='rood'],
.public-artikel-body hr.adr-divider[data-color='rood']     { border-top-color: #dc2626; }
.adr-content hr.adr-divider[data-color='grijs'],
.public-artikel-body hr.adr-divider[data-color='grijs']    { border-top-color: #6b7280; }
.adr-content hr.adr-divider[data-color='navy'],
.public-artikel-body hr.adr-divider[data-color='navy']     { border-top-color: #1a2147; }

/* Notitie-knop bij een publiek artikel (alleen voor ingelogde gebruikers) */
.public-artikel-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 0 0 0.75rem; }
.public-artikel-head h2 { margin: 0; }
/* margin-left:auto in plaats van leunen op space-between: bij een artikel met
   verborgen nummer is de h2 er niet en zouden de knoppen anders naar links
   springen. */
.public-artikel-acties { display: flex; align-items: center; gap: 0.5rem; flex-shrink: 0; margin-left: auto; }

/* Auto-verwijzingen — preview-chips */
.autoref-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0 0.4rem 0.4rem 0;
  padding: 0.2rem 0.6rem 0.2rem 0.4rem;
  border: 1px solid var(--c-border);
  border-radius: 999px;
  font-size: 0.85rem;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
}
.autoref-chip input { margin: 0; cursor: pointer; }
.autoref-chip:has(input:not(:checked)) { opacity: 0.5; }
/* Eerder bewust uitgezette verwijzing: streepjeslijn + label, ook als je 'm
   opnieuw aanvinkt blijft de herkomst zo zichtbaar. */
.autoref-chip-off { border-style: dashed; }
.autoref-chip-note {
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: #b45309;
  background: #fef3c7;
  padding: 0 0.3rem;
  border-radius: 999px;
}

/* Controle-rapport — badges */
.autoref-badge {
  display: inline-block;
  padding: 0.05rem 0.45rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  vertical-align: middle;
}
.autoref-badge-warn   { background: #fef3c7; color: #92400e; }
.autoref-badge-broken { background: #fee2e2; color: #b91c1c; }

/* Controle-rapport — "klopt wel"-knop naast een verdacht nummer */
.btn-link-inline {
  background: none;
  border: none;
  padding: 0;
  font-size: 0.78rem;
  font-weight: 600;
  color: #15803d;
  cursor: pointer;
  white-space: nowrap;
}
.btn-link-inline:hover { text-decoration: underline; }

/* UN-verwijzingen — "opnieuw inlezen" per artikel/blok */
.autoref-row-opnieuw { display: block; margin-top: 0.25rem; color: #64748b; font-weight: 500; }

/* Controle-rapport — volledige inhoud met gemarkeerde probleemplekken */
.autoref-inhoud {
  margin-top: 0.5rem;
}
.autoref-inhoud > summary {
  cursor: pointer;
  font-size: 0.8rem;
  color: var(--c-link, #2563eb);
  user-select: none;
}
.autoref-inhoud-body {
  margin-top: 0.6rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--c-border, #e2e8f0);
  border-radius: 6px;
  background: #fff;
  max-height: 26rem;
  overflow: auto;
}
/* Verdacht nummer: geel gemarkeerd, zoals de "mogelijke fout"-badge */
.autoref-inhoud-body mark.autoref-hl-suspect {
  background: #fde68a;
  color: #713f12;
  padding: 0 0.15em;
  border-radius: 3px;
}
/* Verweesde link: rood omrand zodat hij opvalt tussen de gewone links */
.autoref-inhoud-body a.autoref-hl-broken {
  background: #fee2e2;
  outline: 2px solid #b91c1c;
  border-radius: 3px;
  padding: 0 0.1em;
}
.autoref-chip-type {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--c-text-muted, #64748b);
}
/* Tekst nalezen bij een artikel in de linkschermen (UN én verwijzingen): de
   vondsten staan gemarkeerd, losse getallen in een andere kleur dan mét UN. */
.unref-tekst { margin-top: 0.6rem; }
.unref-tekst > summary {
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--c-link, #1e40af);
}
.unref-tekst-body {
  margin-top: 0.5rem;
  padding: 0.75rem 1rem;
  background: #fff;
  border: 1px solid var(--c-border, #e2e8f0);
  border-radius: var(--radius, 6px);
  max-height: 22rem;
  overflow: auto;
}
mark.unref-kandidaat,
mark.autoref-kandidaat {
  background: #fef08a;
  padding: 0 0.15rem;
  border-radius: 3px;
}
mark.unref-kandidaat-los {
  background: #fdba74;
  font-weight: 700;
}
/* Klikbaar: in de tekst zelf een link aan- of uitzetten. Uit = grijs, zodat je
   in één blik ziet wat er straks gelinkt wordt en wat niet. */
mark.unref-kandidaat,
mark.autoref-kandidaat { cursor: pointer; }
mark.unref-kandidaat.unref-uit,
mark.autoref-kandidaat.autoref-uit {
  background: #e2e8f0;
  color: #64748b;
  font-weight: 400;
}

/* "Los getal": gevonden zonder het woord UN ervoor, dus een gok op vier cijfers.
   Oranje omdat het een waarschuwing is, niet een soort. Beweeg over de chip voor
   de zin eromheen — daaraan zie je of het een stof is of een jaartal. */
.autoref-chip-los {
  color: #b45309;
  font-weight: 700;
  cursor: help;
}
.public-artikel .artikel-notities { margin: 0; flex-shrink: 0; }

/* Twee knoppen naast elkaar: je eigen notitie en die van het bedrijf. */
.artikel-notities { display: inline-flex; gap: 0.4rem; flex-wrap: wrap; }
/* Knop volledig groen zodra er een notitie bij het artikel bestaat — duidelijker
   dan een klein puntje. */
.notitie-btn.has-notitie {
  background: #16a34a;
  border-color: #16a34a;
  color: #ffffff;
}
.notitie-btn.has-notitie:hover {
  background: #15803d;
  border-color: #15803d;
  color: #ffffff;
}
/* Notitie-knop voor het hoofdstuk zelf staat in de paginakop, naast de H1. */
.page-header .notitie-btn { flex-shrink: 0; }

/* ---------- Combobox (zoeken + kiezen in één tekstveld) ---------- */

.combo { position: relative; }
.combo input { width: 100%; }

.combo-list {
  position: absolute;
  z-index: 50;
  top: 100%;
  left: 0;
  right: 0;
  max-height: 16rem;
  overflow-y: auto;
  margin-top: 0.15rem;
  background: var(--c-card);
  border: 1px solid var(--c-border-2);
  border-radius: 6px;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
}

.combo-item {
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
  width: 100%;
  padding: 0.45rem 0.7rem;
  border: 0;
  background: none;
  text-align: left;
  font: inherit;
  color: var(--c-text);
  cursor: pointer;
}
.combo-item:hover,
.combo-item.actief { background: var(--c-bg); }

.combo-num {
  flex-shrink: 0;
  min-width: 4.5rem;
  font-weight: 600;
  color: var(--c-link);
}
.combo-titel {
  color: var(--c-text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.combo-leeg {
  margin: 0;
  padding: 0.6rem 0.7rem;
  color: var(--c-text-soft);
}

/* ---------- Inklap-menu / split-pane tabs ---------- */

.adr-content .adr-tabs {
  --tabs-accent: var(--c-link);
  display: grid;
  grid-template-columns: minmax(180px, 1fr) 3fr;
  gap: 1.5rem;
  margin: 1rem 0;
  align-items: start;
}
.adr-content .adr-tabs[data-color="groen"]  { --tabs-accent: #16a34a; }
.adr-content .adr-tabs[data-color="oranje"] { --tabs-accent: #ea580c; }
.adr-content .adr-tabs[data-color="rood"]   { --tabs-accent: #dc2626; }
.adr-content .adr-tabs[data-color="grijs"]  { --tabs-accent: #6b7280; }
.adr-content .adr-tabs[data-color="navy"]   { --tabs-accent: #1a2147; }

.adr-content .adr-tabs-menu {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding-right: 1rem;
  border-right: 1px solid var(--tabs-accent);
}
.adr-content .adr-tabs-menu p {
  margin: 0;
  padding: 0.15rem 0;
  font-size: 0.95rem;
  cursor: pointer;
  color: var(--c-text);
}
.adr-content .adr-tabs-menu p[data-tab] {
  border-left: 3px solid var(--tabs-accent);
  padding: 0.15rem 0 0.15rem 0.6rem;
}
.adr-content .adr-tabs-menu p:hover,
.adr-content .adr-tabs-menu p.is-active {
  color: var(--tabs-accent);
}
.adr-content .adr-tabs-menu p.is-active {
  font-weight: 700;
}
.adr-content .adr-tabs-menu p[data-tab-clear] {
  font-weight: 700;
  color: var(--tabs-accent);
  text-transform: uppercase;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  padding-bottom: 0.5rem;
  margin-bottom: 0.25rem;
  border-bottom: 1px dashed var(--c-border-2);
}
/* Blok-stijl inklap-menu — standaard op alle kolom-menu's van de
   UN-detailpagina: menu-items als gevulde balken — blauw (#6f8bc4) zoals de
   accordions, actief groen (#00B050), tekst wit en bold. */
.adr-content .un-tabs-blocks .adr-tabs-menu p[data-tab] {
  background: #6f8bc4;
  color: #fff;
  font-weight: 700;
  border-left: 0;
  border-radius: 4px;
  padding: 0.45rem 0.9rem;
}
.adr-content .un-tabs-blocks .adr-tabs-menu p[data-tab]:hover {
  background: #5f7cb8;
  color: #fff;
}
.adr-content .un-tabs-blocks .adr-tabs-menu p[data-tab].is-active {
  background: #00b050;
  color: #fff;
}
/* N.V.T.-item grijs: in één oogopslag te zien dat er in deze kolom niets
   staat, zonder dat het item wegvalt — het blijft aanklikbaar voor de uitleg.
   Actief blijft grijs (donkerder): het groen van een gevuld item zou juist
   suggereren dat er wel iets in staat. */
.adr-content .un-tabs-blocks .adr-tabs-menu p[data-tab].un-tab-nvt {
  background: #6b7280;
}
.adr-content .un-tabs-blocks .adr-tabs-menu p[data-tab].un-tab-nvt:hover {
  background: #5b616b;
}
.adr-content .un-tabs-blocks .adr-tabs-menu p[data-tab].un-tab-nvt.is-active {
  background: #4b5563;
}
/* Paneel-inhoud als witte kaart, zelfde stijl als de artikelweergave. De
   kaart rekt mee tot minimaal de hoogte van de menukolom (grid-stretch +
   flex), zodat een korte tekst niet boven de onderkant van het menu eindigt. */
.adr-content .un-tabs-blocks { align-items: stretch; }
.adr-content .un-tabs-blocks .adr-tabs-content {
  display: flex;
  flex-direction: column;
}
.adr-content .un-tabs-blocks .adr-tab-panel.is-active {
  flex: 1 1 auto;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 1.5rem 1.75rem;
  box-shadow: var(--shadow-sm);
}

.adr-content .adr-tab-panel {
  display: none;
}
.adr-content .adr-tab-panel.is-active {
  display: block;
}
.adr-content .adr-tab-panel > *:first-child {
  margin-top: 0;
}

/* Horizontale variant — menu boven, content eronder */
.adr-content .adr-tabs[data-orientation="boven"] {
  display: block;
}
.adr-content .adr-tabs[data-orientation="boven"] .adr-tabs-menu {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 1.5rem;
  padding-right: 0;
  border-right: none;
  border-bottom: 2px solid var(--tabs-accent);
  padding-bottom: 0;
  margin-bottom: 1rem;
}
.adr-content .adr-tabs[data-orientation="boven"] .adr-tabs-menu p[data-tab] {
  border-left: none;
  padding: 0.5rem 0;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  font-weight: 600;
  text-transform: uppercase;
  font-size: 0.9rem;
  letter-spacing: 0.04em;
  color: var(--tabs-accent);
  opacity: 0.55;
  transition: opacity 0.1s ease, border-bottom-color 0.1s ease;
}
.adr-content .adr-tabs[data-orientation="boven"] .adr-tabs-menu p[data-tab]:hover,
.adr-content .adr-tabs[data-orientation="boven"] .adr-tabs-menu p[data-tab].is-active {
  opacity: 1;
  border-bottom-color: var(--tabs-accent);
}
.adr-content .adr-tabs[data-orientation="boven"] .adr-tabs-menu p[data-tab-clear] {
  display: none;
}

/* ---------- Tweekoloms layoutblok ---------- */

.adr-content .adr-cols {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 2rem;
  margin: 1rem 0;
  width: 100% !important;
  box-sizing: border-box;
}
.adr-content .adr-col {
  min-width: 0;
}
/* Bij het plakken landt tekst in de ene kolom als kale tekst en in de andere in
   een <p>. Die <p> houdt zijn bovenmarge en zakt dan een regel weg t.o.v. de
   buurkolom. De marge van het eerste en laatste kind wegnemen maakt de uitlijning
   onafhankelijk van wat het plakken oplevert. Zelfde truc als bij td>p:first-child
   en .adr-tab-panel. */
.adr-content .adr-col > *:first-child { margin-top: 0; }
.adr-content .adr-col > *:last-child  { margin-bottom: 0; }
.adr-content .adr-col + .adr-col {
  border-left: 1px solid var(--c-link);
  padding-left: 1rem;
}

/* ---------- Kaarten-grid (beheerd, via {{grid:code}}) ---------- */
/* Geen .adr-content-scope: .adr-grid komt alleen in gerenderde content voor,
   en moet identiek renderen op de publieke pagina, in de preview én in het
   admin-artikeloverzicht (dat in .public-artikel-body rendert, zonder
   .adr-content-wrapper). */

.adr-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 1.25rem;
  margin: 1.5rem 0;
}
.adr-grid[data-cols="2"] { grid-template-columns: repeat(2, 1fr); }
.adr-grid[data-cols="3"] { grid-template-columns: repeat(3, 1fr); }
.adr-grid[data-cols="4"] { grid-template-columns: repeat(4, 1fr); }

.adr-grid-item {
  min-width: 0;
  display: block;
  color: inherit;
  background: var(--adr-tegel, #eceef1);
  border-radius: 10px;
  padding: 1.25rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
a.adr-grid-item {
  text-decoration: none;
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}
a.adr-grid-item:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.14);
  transform: translateY(-2px);
}
.adr-grid-img {
  display: block;
  max-width: 100%;
  height: auto;
  margin-bottom: 0.75rem;
}
.adr-grid-titel { font-weight: 600; margin-bottom: 0.2rem; }
.adr-grid-meta { color: #64748b; font-size: 0.9em; margin-bottom: 0.5rem; }
.adr-grid-inhoud > *:first-child { margin-top: 0; }
.adr-grid-inhoud > *:last-child { margin-bottom: 0; }

/* ---------- Grid-tegelbeheer (admin) ---------- */

.grid-items { display: flex; flex-direction: column; gap: 0.5rem; }
.grid-item-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  background: #fff;
  border: 1px solid var(--c-border);
  border-radius: 8px;
  padding: 0.5rem 0.75rem;
}
.grid-item-row.dragging { opacity: 0.4; }
.grid-item-handle { cursor: grab; color: #94a3b8; font-size: 1.2rem; user-select: none; }
.grid-item-thumb {
  width: 64px; height: 48px; flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  background: #f1f5f9; border-radius: 4px; overflow: hidden;
}
.grid-item-thumb img { max-width: 100%; max-height: 100%; }
.grid-item-noimg { color: #cbd5e1; }
.grid-item-info { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.grid-item-info .grid-item-titel { font-weight: 600; }
.grid-item-info .grid-item-meta { color: #64748b; font-size: 0.9em; }
.grid-item-acties { display: flex; gap: 0.4rem; align-items: center; }

/* ---------- Responsief ---------- */

@media (max-width: 720px) {
  .top-inner { padding: 0.85rem 1rem; flex-wrap: wrap; }
  .top .brand { font-size: 1.25rem; gap: 0.6rem; }
  .top .brand .brand-mark { width: 42px; height: 42px; }
  .top .session .who { display: none; }
  .top .admin-spring { order: 3; flex: 1 1 100%; }
  .top .admin-spring input { flex: 1; width: auto; }
  .container { padding: 1.25rem 1rem 3rem; }
  .form-card { padding: 1.25rem 1rem; }
  .form-card .row-2 { grid-template-columns: 1fr; }
  .lijst-table .acties { flex-direction: column; align-items: stretch; }
  .page-header { flex-direction: column; align-items: stretch; gap: 0.5rem; }
  .adr-content .adr-cols { grid-template-columns: 1fr; gap: 1rem; }
  .adr-content .adr-col + .adr-col {
    border-left: none;
    padding-left: 0;
    border-top: 1px solid var(--c-link);
    padding-top: 1rem;
  }
  .adr-grid,
  .adr-grid[data-cols] { grid-template-columns: 1fr; gap: 1rem; }
  .adr-content .adr-tabs { grid-template-columns: 1fr; }
  .adr-content .adr-tabs-menu {
    border-right: none;
    border-bottom: 1px solid var(--c-link);
    padding-right: 0;
    padding-bottom: 0.75rem;
  }
}

/* ============================================================
   Uploads-browser modal (deel-form, blok-form, ...)
   ============================================================ */

.upload-pad-row {
  display: flex;
  gap: 0.5rem;
  align-items: stretch;
}
.upload-pad-row input[type="text"] {
  flex: 1;
}

.ub-modal {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9000;
  padding: 1rem;
}
.ub-modal[hidden] { display: none; }

.ub-dialog {
  background: var(--c-card);
  width: min(960px, 100%);
  max-height: 90vh;
  border-radius: 8px;
  border: 1px solid var(--c-border);
  box-shadow: 0 20px 50px rgba(0,0,0,0.25);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.ub-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--c-border);
  background: var(--c-bg);
}
.ub-header h2 {
  margin: 0;
  font-size: 1.1rem;
  flex-shrink: 0;
}
.ub-breadcrumb {
  flex: 1;
  font-size: 0.9rem;
  color: var(--c-text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ub-breadcrumb a {
  color: var(--c-link);
  cursor: pointer;
}
.ub-breadcrumb a:hover { text-decoration: underline; }
.ub-breadcrumb-sep { margin: 0 0.25rem; color: var(--c-text-soft); }

.ub-close {
  background: transparent;
  border: none;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  color: var(--c-text-muted);
  padding: 0 0.25rem;
}
.ub-close:hover { color: var(--c-text); }

.ub-body {
  padding: 1rem;
  overflow-y: auto;
  flex: 1;
}
.ub-empty {
  text-align: center;
  color: var(--c-text-muted);
  padding: 2rem 1rem;
}
.ub-error {
  background: var(--c-error-bg);
  border: 1px solid var(--c-error-bd);
  color: var(--c-error-tx);
  padding: 0.75rem 1rem;
  border-radius: 4px;
}

.ub-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 0.75rem;
}

.ub-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4rem;
  padding: 0.6rem;
  border: 1px solid var(--c-border);
  border-radius: 6px;
  background: var(--c-card);
  cursor: pointer;
  text-align: center;
  font-size: 0.85rem;
  color: var(--c-text);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.ub-item:hover {
  border-color: var(--c-link);
  box-shadow: 0 2px 8px rgba(30, 64, 175, 0.12);
}
.ub-item-folder .ub-thumb {
  font-size: 2.4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 80px;
  width: 100%;
  background: #fef3c7;
  border-radius: 4px;
}
.ub-item-image .ub-thumb {
  height: 80px;
  width: 100%;
  background: var(--c-bg);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.ub-item-image .ub-thumb img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.ub-name {
  word-break: break-all;
  line-height: 1.2;
}
.ub-size {
  font-size: 0.75rem;
  color: var(--c-text-muted);
}

.ub-up {
  background: var(--c-bg);
  font-weight: 500;
}

/* ============================================================
   Artikel-picker (Verwijzing → Artikel-link in TinyMCE)
   Hergebruikt .ub-modal/.ub-dialog/.ub-header voor de overlay.
   ============================================================ */

.ap-dialog {
  width: min(820px, 100%);
}
.ap-step {
  flex: 1;
  font-size: 0.85rem;
  color: var(--c-text-muted);
  text-align: right;
  padding-right: 0.5rem;
}
.ap-body {
  padding: 0.75rem 1rem 1rem;
  overflow-y: auto;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.ap-pane {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  flex: 1;
  min-height: 0;
}
.ap-search {
  width: 100%;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--c-border-2);
  border-radius: 4px;
  font-size: 0.95rem;
  margin-bottom: 0.25rem;
}
.ap-list {
  flex: 1;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.25rem;
  border: 1px solid var(--c-border);
  border-radius: 4px;
  background: var(--c-bg);
  min-height: 200px;
}
.ap-row {
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
  padding: 0.55rem 0.7rem;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: 4px;
  cursor: pointer;
  text-align: left;
  font-size: 0.92rem;
  color: var(--c-text);
  transition: border-color 0.15s, box-shadow 0.15s;
  width: 100%;
  font-family: inherit;
}
.ap-row:hover, .ap-row:focus {
  border-color: var(--c-link);
  box-shadow: 0 1px 4px rgba(30, 64, 175, 0.10);
  outline: none;
}
.ap-row-num {
  font-weight: 600;
  white-space: nowrap;
  color: var(--c-navy);
}
.ap-row-title {
  color: var(--c-text-muted);
  font-size: 0.85rem;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ap-row-noanchor {
  background: #fef9c3;
  border-color: #fde047;
}
.ap-back-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0.25rem;
}
.ap-current {
  font-size: 0.9rem;
  color: var(--c-text-muted);
  flex: 1;
}

/* ============================================================
   Deep-link visuele bevestiging + toast
   ============================================================ */

@keyframes adr-pulse {
  0%   { outline-color: rgba(30, 64, 175, 0.0); }
  20%  { outline-color: rgba(30, 64, 175, 0.85); }
  100% { outline-color: rgba(30, 64, 175, 0.0); }
}

.is-deep-link-target {
  outline: 3px solid rgba(30, 64, 175, 0.85);
  outline-offset: 4px;
  border-radius: 999px;
  animation: adr-pulse 1.6s ease-out;
}

@media (prefers-reduced-motion: reduce) {
  .is-deep-link-target {
    animation: none;
  }
}

.adr-toast {
  position: fixed;
  bottom: 1.25rem;
  left: 50%;
  transform: translateX(-50%);
  background: #1a2147;
  color: #fff;
  padding: 0.65rem 1.1rem;
  border-radius: 999px;
  font-size: 0.9rem;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
  z-index: 9500;
  opacity: 0;
  animation: adr-toast-in 0.2s ease-out forwards;
}
.adr-toast.is-leaving {
  animation: adr-toast-out 0.4s ease-in forwards;
}

@keyframes adr-toast-in {
  from { opacity: 0; transform: translate(-50%, 12px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}
@keyframes adr-toast-out {
  from { opacity: 1; transform: translate(-50%, 0); }
  to   { opacity: 0; transform: translate(-50%, 12px); }
}

/* =============================================================================
   Gebruikersbeheer — breadcrumb, badges, status, modal
   ============================================================================= */

.breadcrumb {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.9rem;
  color: var(--c-text-muted);
  margin-bottom: 1rem;
}
.breadcrumb a {
  color: var(--c-link);
}
.breadcrumb-sep {
  color: var(--c-text-soft);
}
.breadcrumb-here {
  color: var(--c-text);
  font-weight: 600;
}

.um-badge {
  display: inline-block;
  padding: 0.05rem 0.4rem;
  border-radius: 4px;
  font-size: 0.72rem;
  font-weight: 600;
  color: #fff;
  margin-left: 0.35rem;
  vertical-align: middle;
}
/* UN-statusbeheer: label-rijen (volgorde + tekst + opslaan naast elkaar). */
.us-labelrij { display: flex; gap: 0.5rem; align-items: center; margin-bottom: 0.5rem; }
.us-labelform { display: flex; gap: 0.5rem; align-items: center; flex: 1; flex-wrap: wrap; }

/* Keuzescherm bij een UN-nummer met meerdere vermeldingen. */
.us-kiesrij {
  display: flex;
  gap: 0.6rem;
  align-items: center;
  flex-wrap: wrap;
  padding: 0.35rem 0.5rem;
  border-radius: 4px;
  cursor: pointer;
}
.us-kiesrij:hover { background: rgba(0, 0, 0, 0.04); }
.us-reeds {
  font-size: 0.8rem;
  font-weight: 700;
  color: #14532d;
  background: #dcfce7;
  border-radius: 999px;
  padding: 0.1rem 0.55rem;
}

.um-badge-admin { background: #2563eb; }
.um-badge-super { background: #7c3aed; }
.um-badge-demo  { background: #ea580c; }
/* Rollen binnen een bedrijf: beheerder (mag het bedrijf beheren) en administratief
   (alleen beheer, geen ADR-toegang, geen licentie). */
.um-badge-beheerder    { background: #16a34a; }
.um-badge-alleenbeheer { background: #64748b; }

.status-actief    { color: #166534; font-weight: 600; }
.status-inactief  { color: #991b1b; font-weight: 600; }
.um-row-inactive  { opacity: 0.6; }
.um-row:hover     { background: #f9fafb; }
.empty-inline     { color: var(--c-text-soft); }

/* ---------- Modal ---------- */

.user-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1000;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 3rem 1rem 2rem;
  overflow-y: auto;
}
.user-overlay[hidden],
.user-modal [hidden] { display: none !important; }

.user-modal {
  background: var(--c-card);
  border-radius: var(--radius);
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
  width: 100%;
  /* Zelfde breedte als de andere pop-ups in de app. */
  max-width: 1000px;
  padding: 1.5rem;
}
.user-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--c-border);
  padding-bottom: 0.75rem;
  margin-bottom: 1rem;
}
.user-modal-header h2 { margin: 0; }
.user-modal-close {
  background: none;
  border: none;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  color: var(--c-text-muted);
  padding: 0 0.25rem;
}
.user-modal-close:hover { color: var(--c-text); }

.user-modal-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem 1rem;
  margin-bottom: 1rem;
}
.user-modal-meta .lbl {
  display: block;
  font-size: 0.78rem;
  color: var(--c-navy);
  font-weight: 600;
}

.user-modal-form label {
  display: block;
  margin-bottom: 0.75rem;
}
.user-modal-form .lbl {
  display: block;
  font-size: 0.85rem;
  color: var(--c-navy);
  font-weight: 600;
  margin-bottom: 0.2rem;
}
.user-modal-form input[type="text"],
.user-modal-form input[type="email"],
.user-modal-form input[type="password"],
.user-modal-form select {
  width: 100%;
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  background: #f9fafb;
  font: inherit;
}

.user-modal-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 1rem;
}

.modal-section {
  border-top: 1px solid var(--c-border);
  margin-top: 1rem;
  padding-top: 1rem;
}

/* =============================================================================
   Afbeelding-lightbox (klik om te vergroten) — publieke pagina's en preview
   ============================================================================= */

.adr-content img { cursor: zoom-in; }
.adr-content a img { cursor: pointer; }   /* afbeelding-als-link houdt link-cursor */

.adr-lightbox {
  position: fixed;
  inset: 0;
  z-index: 9800;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  background: rgba(15, 23, 42, 0.85);
  cursor: zoom-out;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.18s ease;
}
.adr-lightbox.is-open {
  opacity: 1;
  visibility: visible;
}
.adr-lightbox img {
  max-width: 100%;
  max-height: 100%;
  background: #fff;
  border-radius: 4px;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
}
.adr-lightbox-close {
  position: absolute;
  top: 1rem;
  right: 1.25rem;
  width: 2.5rem;
  height: 2.5rem;
  border: none;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
}
.adr-lightbox-close:hover { background: rgba(255, 255, 255, 0.3); }

body.adr-lightbox-open { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  .adr-lightbox { transition: none; }
}

/* ── Login-audit (historie, mislukte pogingen, blokkades) ────────────────── */
.pager {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-top: 1rem;
}
.pager-info { color: #555; font-size: 0.9rem; }
.pager-disabled { opacity: 0.45; pointer-events: none; }

.poging-acties { white-space: nowrap; }
.poging-acties form { margin: 0 0.15rem 0 0; }
.poging-geblokkeerd { background: #fbeaea; }
.poging-geblokkeerd-label {
  display: inline-block;
  color: #b3261e;
  font-size: 0.82rem;
  font-weight: 600;
}
/* Neutraal: deze poging strandde destijds op een blokkade. Bewust grijs en niet
   rood — rood is voorbehouden aan blokkades die er nu nog zijn. */
.poging-geweigerd-label {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.05rem 0.4rem;
  border-radius: 4px;
  background: #e2e8f0;
  color: #475569;
  font-size: 0.72rem;
  font-weight: 600;
  vertical-align: middle;
}

/* ---------- GEVI-beheer (admin) ---------- */
.gevi-add { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1rem; margin-bottom: 1.5rem; }
.gevi-add .form-row { margin: 0; }
.gevi-add .form-actions { margin: 0; }

.gevi-list { display: flex; flex-direction: column; gap: 0.4rem; }
.gevi-row {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 0.55rem 0.7rem;
}
.gevi-row.dragging { opacity: 0.5; }
.gevi-handle { cursor: grab; color: var(--c-text-soft); font-size: 1.1rem; user-select: none; padding-top: 0.15rem; }
.gevi-thumb { flex: 0 0 auto; }
.gevi-thumb img { display: block; width: 64px; height: auto; border: 1px solid var(--c-border); border-radius: 3px; }
.gevi-code { font-weight: 700; color: var(--c-navy); min-width: 3.2rem; font-variant-numeric: tabular-nums; padding-top: 0.1rem; }
.gevi-preview { flex: 1 1 auto; min-width: 0; font-size: 0.9rem; line-height: 1.45; color: var(--c-text); }
.gevi-preview p { margin: 0 0 0.3rem; } .gevi-preview p:last-child { margin-bottom: 0; }
.gevi-preview ul, .gevi-preview ol { margin: 0.2rem 0; padding-left: 1.3rem; }
.gevi-acties { flex: 0 0 auto; display: flex; gap: 0.4rem; align-items: center; }
.gevi-acties .btn-danger { padding: 0.35rem 0.6rem; line-height: 1; }

/* Lijsten in gerenderde GEVI-content (marker + detailpagina) */
.adr-grid-inhoud ul, .adr-grid-inhoud ol { margin: 0.3rem 0; padding-left: 1.4rem; text-align: left; }
.un-gevi-oms { text-align: left; }
.un-gevi-oms ul, .un-gevi-oms ol { margin: 0.3rem 0; padding-left: 1.3rem; }
.un-gevi-oms li { margin: 0.15rem 0; }

/* ============================================================
   UN-detailpagina (publiek)
   ============================================================ */

.un-crumb {
  font-size: 0.82rem;
  color: var(--c-text-muted);
  margin: 0 0 1rem;
  display: flex;
  gap: 0.4rem;
  align-items: center;
  flex-wrap: wrap;
}
.un-crumb a { color: var(--c-text-muted); }
.un-crumb a:hover { color: var(--c-link); }
.un-crumb .sep { color: var(--c-text-soft); }

/* Statusmelding boven aan de UN-detailpagina: VERVOER VERBODEN, NIET ONDERWORPEN AAN
   HET ADR e.d. Rood en nadrukkelijk — dit is veiligheidsinformatie die niet gemist
   mag worden. */
.un-status-banner {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin: 0 0 1.5rem;
  padding: 0.85rem 1.1rem;
  background: #fef2f2;
  border: 2px solid #dc2626;
  border-radius: var(--radius, 6px);
  color: #991b1b;
  font-weight: 800;
  font-size: 1.15rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.un-status-banner svg {
  flex: 0 0 auto;
  width: 1.6rem;
  height: 1.6rem;
  color: #dc2626;
}

/* Kruimelpad links, notitie-knoppen rechts — dezelfde plek als in de page-header
   van de artikel- en hoofdstukpagina. De UN-pagina heeft geen page-header (de titel
   staat in de identiteitskaarten), dus die rij maken we hier. */
.un-kop {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  margin: 0 0 1rem;
}
.un-kop .un-crumb { margin: 0; }

/* Ruimte tussen de secties (benaming, accordions, etiketten, BB) */
.un-group { margin: 0 0 2rem; }

/* Paginatitel op de UN-detailpagina, onder het kruimelpad. Stond eerder
   weggeklikt buiten beeld; zichtbaar is duidelijker voor bezoeker én
   zoekmachine. */
.un-h1 {
  margin: 0 0 1.1rem;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--c-navy);
  text-wrap: balance;
}

/* Blokken die een bezoeker zónder abonnement vrij mag lezen (admin → Inkijk
   detailpagina). Alleen bezoekers zien deze markering: voor een abonnee zet de
   controller de klasse niet, want die leest alles.
   Teal en niet groen: groen (#00b050) is in deze blokken al de actieve tab. */
.un-group.un-vrij {
  border-left: 4px solid #0d9488;
  background: #f0fdfa;
  border-radius: var(--radius);
  padding: 0.9rem 1.1rem;
}
.un-group.un-vrij .un-eyebrow .col-tag { background: #0d9488; }

/* Een los toelichting-blok heeft al een eigen kader; daar krijgt de balk zelf
   de kleur. Selector met details ervoor, zodat hij van .un-acc > summary wint. */
details.un-acc.un-vrij > summary { background: #0d9488; }
details.un-acc.un-vrij > summary:hover { background: #0f766e; }

/* Divider tussen de kolom-secties (vanaf de etiketten) */
.un-divider {
  border: 0;
  border-top: 2px solid var(--c-border);
  margin: 2rem 0;
}

/* Identiteitskaarten — rij van 4, volle breedte */
.un-idcards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
  margin-bottom: 1.5rem;
}
@media (max-width: 860px) { .un-idcards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .un-idcards { grid-template-columns: 1fr; } }
.un-idcard {
  background: #6f8bc4;
  border: 2px solid #111;
  border-radius: var(--radius);
  padding: 0.8rem 1rem 1.1rem;
  display: flex;
  flex-direction: column;
  color: #111;
}
.un-idcard .cap {
  font-size: 1rem; font-weight: 800; letter-spacing: 0.02em;
  text-transform: uppercase; color: var(--un-text, #111); margin-bottom: 0.6rem;
  text-align: center; text-wrap: balance;
}
.un-idcard-body {
  flex: 1;
  display: flex; flex-direction: column;
  align-items: center; justify-content: flex-start;  /* boven uitlijnen → borden op gelijke hoogte */
  text-align: center; gap: 0.5rem;
}
.un-cat-num { font-size: 2.6rem; font-weight: 800; color: #111; line-height: 1; }
/* 1000-punten-grens: twee regels, hoofdletters, gecentreerd (oude-site-look) */
.un-cat-info {
  text-align: center;
  width: 100%;
  margin: 0.6rem 0 0;
  display: flex; flex-direction: column; gap: 0.3rem;
  font-size: 0.95rem; color: #fff; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.02em;
}
.un-idcard .un-vpg { font-size: 2.6rem; font-weight: 800; color: var(--un-text, #111); padding: 0; }
.un-idcard .un-gevi-oms {
  color: var(--un-text, #fff); font-weight: 700;
  text-align: left;              /* tekst zelf links */
  width: fit-content;           /* blok krimpt tot de inhoud … */
  max-width: 100%;
  margin: 0.5rem auto 0;        /* … en staat gecentreerd in de kaart */
}

/* Instelbare achtergrond-afbeelding per tegel/taalblok (admin → Instellingen).
   De achtergrondkleur staat inline op het element; de afbeelding komt als een
   ::before-laag met eigen alpha erbovenop, zodat de kleur er doorheen schijnt.
   Inhoud (borden, tekst, taal-strips) staat op z-index-niveau erboven. */
/* Tabel A-knop in de publieke header (zelfde look als de toc-toggle) */
.tabela-link {
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.4);
  padding: 0.4rem 0.85rem;
  border-radius: var(--radius);
  font-size: 0.92rem;
  text-decoration: none;
  white-space: nowrap;
}
.tabela-link:hover,
.home-link:hover {
  background: rgba(255, 255, 255, 0.18);
  border-color: #fff;
  color: #fff;
  text-decoration: none;
}

/* Knop "Balk vast": zelfde pil als Tabel A, met een duidelijke ingedrukt-stand
   (is-active) zodat de bezoeker ziet dat de balk nu meescrollt. */
.balk-vast {
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.4);
  padding: 0.4rem 0.85rem;
  border-radius: var(--radius);
  font: inherit;
  font-size: 0.92rem;
  cursor: pointer;
  white-space: nowrap;
}
.balk-vast:hover { background: rgba(255, 255, 255, 0.18); border-color: #fff; }
.balk-vast.is-active {
  background: #fff;
  color: var(--c-navy);
  border-color: #fff;
}
.balk-vast .balk-vast-icon { line-height: 1; }

/* Dashboard: grid/lijst-schakelaar en versleepbare tegels */
.dash-toggle { display: inline-flex; border: 1px solid var(--c-border); border-radius: var(--radius); overflow: hidden; }
.dash-toggle button {
  background: var(--c-card); border: none; padding: 0.45rem 0.7rem; cursor: pointer;
  color: var(--c-text-muted); display: inline-flex; align-items: center;
}
.dash-toggle button + button { border-left: 1px solid var(--c-border); }
.dash-toggle button.is-actief { background: var(--c-navy); color: #fff; }

.card-grid.dash-lijst { grid-template-columns: 1fr; gap: 0.6rem; }
.card-grid.dash-lijst .card-link { flex-direction: row; align-items: center; padding: 0.7rem 1rem; }
.card-grid.dash-lijst .card-desc { margin-top: 0.1rem; }

.card-link.dash-sleep { opacity: 0.4; }
.card-grid .card-link { cursor: grab; }
.card-grid .card-link:active { cursor: grabbing; }

/* Groene accordion (pill-kop) — bedrijfsportaal én admin-bedrijfsformulier.
   Breedte per pagina instellen met een inline max-width op het <details>. */
details.bg-acc { margin-bottom: 1.25rem; }
details.bg-acc > summary {
  cursor: pointer; list-style: none; position: relative; font-weight: 700;
  background: #16a34a; color: #fff; padding: 0.65rem 2.25rem 0.65rem 1.25rem; border-radius: 999px;
}
details.bg-acc > summary::-webkit-details-marker { display: none; }
details.bg-acc > summary::after {
  content: '+'; position: absolute; right: 1.1rem; top: 50%; transform: translateY(-50%);
  font-size: 1.2rem; font-weight: 400; line-height: 1;
}
details.bg-acc[open] > summary::after { content: '\2212'; }
details.bg-acc > .form-card,
details.bg-acc > form.form-card { margin: 0.6rem 0 0; }

/* Taakbalk, uiterst links: de instelbare knop naar de hoofdsite */
.home-link {
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.4);
  padding: 0.4rem 0.85rem;
  border-radius: var(--radius);
  font-size: 0.92rem;
  text-decoration: none;
  white-space: nowrap;
}
.home-link-extern::before { content: "\2302"; margin-right: 0.35rem; }

/* Publieke Tabel A (hoofdstuk 3.2.1) */
.tabela-intro { color: var(--c-text-muted); margin: -0.5rem 0 1rem; }
.tabela-form { margin: 0; }
.tabela-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.9rem;
  margin-bottom: 0.8rem;
}
.tabela-count { color: var(--c-text-muted); }
.tabela-pp { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--c-text-muted); font-size: 0.9rem; }
.tabela-pp select { padding: 0.25rem 0.4rem; }

.tabela-wrap {
  overflow-x: auto;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  cursor: grab;
}
.tabela-wrap.tabela-grabbing { cursor: grabbing; user-select: none; }
.tabela-spinner { color: var(--c-text-muted); font-size: 1.2rem; }
.tabela {
  border-collapse: collapse;
  width: 100%;
  min-width: 2100px;
  font-size: 0.84rem;
}
.tabela th, .tabela td {
  border: 1px solid var(--c-border);
  padding: 0.4rem 0.5rem;
  text-align: left;
  vertical-align: top;
}
.tabela thead th {
  background: #6f8bc4;
  color: #fff;
  vertical-align: bottom;
}
.tabela-label { display: block; font-size: 0.78rem; line-height: 1.25; }
/* Geen nowrap: twee verwijzingen achter elkaar ("4.3.5, 6.8.4") breken liever
   af op een tweede regel dan de hele kolom breder te maken. */
.tabela-ref { display: block; font-size: 0.68rem; font-weight: 400; opacity: 0.85; margin: 0.15rem 0 0.35rem; }
.tabela thead input {
  width: 100%;
  min-width: 55px;
  box-sizing: border-box;
  font: inherit;
  font-size: 0.78rem;
  padding: 0.2rem 0.3rem;
  border: 1px solid rgba(255, 255, 255, 0.6);
  border-radius: 3px;
}
.tabela tbody tr:nth-child(even) { background: #f6f8fc; }
.tabela-un a { font-weight: 700; white-space: nowrap; }
.tabela td.tabela-col-naam { min-width: 260px; }
.tabela-leeg { text-align: center; color: var(--c-text-muted); padding: 1.5rem !important; }

.tabela-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem 1rem;
  margin-top: 1rem;
}
.tabela-pager-nav { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.tabela-page {
  display: inline-block;
  min-width: 2rem;
  padding: 0.3rem 0.6rem;
  border: 1px solid var(--c-border);
  border-radius: 4px;
  background: var(--c-card);
  color: var(--c-link);
  font-size: 0.88rem;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}
.tabela-page:hover { border-color: var(--c-navy); text-decoration: none; }
.tabela-page-current {
  background: #6f8bc4;
  border-color: #6f8bc4;
  color: #fff;
  font-weight: 700;
  cursor: default;
}
.tabela-page.disabled { opacity: 0.4; pointer-events: none; }
.tabela-pager-status { color: var(--c-text-muted); font-size: 0.9rem; }

/* Registers met alle UN-nummers per bereik (/un-index/0001-0200). Onderaan
   Tabel A en op elk register zelf; houdt elke detailpagina op twee kliks. */
.un-index-links {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.4rem 0.7rem;
  margin-top: 1.6rem;
  padding-top: 0.9rem;
  border-top: 1px solid var(--c-border);
}
.un-index-links-label { color: var(--c-text-muted); font-size: 0.9rem; }
.un-index-links-lijst { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.un-index-bereik {
  display: inline-block;
  padding: 0.25rem 0.55rem;
  border: 1px solid var(--c-border);
  border-radius: 4px;
  background: var(--c-card);
  color: var(--c-link);
  font-size: 0.85rem;
  white-space: nowrap;
  text-decoration: none;
}
.un-index-bereik:hover { border-color: var(--c-navy); text-decoration: none; }
.un-index-bereik.huidig {
  background: #6f8bc4;
  border-color: #6f8bc4;
  color: #fff;
  font-weight: 700;
}

.un-index-nav { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-bottom: 1.1rem; }

/* Toelichting bij (M)/(+) boven de tankcode-artikelen */
.un-tankcode-noot {
  background: #eff6ff;
  border-left: 3px solid #1e40af;
  border-radius: 4px;
  padding: 0.6rem 0.9rem;
  margin: 0 0 0.9rem;
  color: var(--c-text);
  line-height: 1.5;
}

/* Admin-only datacontrole-navigatie (boven + onder de detailpagina) */
.un-admin-nav-top { margin-bottom: 1.5rem; }
.un-admin-nav-bottom { margin-top: 2rem; }
.un-admin-nav-wrap .un-eyebrow { margin-bottom: 0.4rem; }

.un-idcard,
.un-lang-body { position: relative; isolation: isolate; }
.un-idcard::before,
.un-lang-body::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;                 /* boven de achtergrondkleur, onder de inhoud */
  background: var(--un-bg-img, none) var(--un-bg-pos, center) / var(--un-bg-size, contain) no-repeat;
  opacity: var(--un-bg-alpha, 1);
  border-radius: inherit;
  pointer-events: none;
}

.un-layout {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 1.75rem;
  align-items: start;
}
@media (max-width: 880px) {
  .un-layout { grid-template-columns: 1fr; }
  .un-side { position: static !important; }
}

/* ---- Identiteits-sidebar ---- */
.un-side {
  position: sticky;
  top: 1rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.un-card {
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.un-card .cap {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--c-text-soft);
  padding: 0.7rem 0.9rem 0.1rem;
}
.un-card-main { padding: 0.5rem 0.9rem 1rem; text-align: center; }
.un-big { font-size: 2rem; font-weight: 800; letter-spacing: -0.02em; color: var(--c-navy); line-height: 1.1; }
.un-sub { font-size: 0.85rem; color: var(--c-text-muted); margin-top: 0.15rem; }

/* Oranje ADR-bord */
.un-board {
  width: 120px;
  margin: 0 auto 0.8rem;
  background: #ef7d00;
  border: 3px solid #111;
  border-radius: 9px;
  color: #111;
  font-weight: 800;
  text-align: center;
  overflow: hidden;
  font-variant-numeric: tabular-nums;
}
.un-board.two .hz { border-bottom: 2px solid #111; padding: 0.15rem 0; font-size: 1.5rem; }
.un-board.two .un { padding: 0.15rem 0; font-size: 1.5rem; }
.un-board.solo .un { padding: 0.35rem 0; font-size: 1.7rem; }

.un-vpg { font-size: 1.6rem; font-weight: 800; color: var(--c-navy); text-align: center; padding: 0.2rem 0 1rem; }

.un-gevi { text-align: center; padding: 0.3rem 0.9rem 1rem; }
.un-gevi img { max-width: 150px; width: 100%; height: auto; }
.un-gevi-oms { font-size: 0.82rem; color: var(--c-text-muted); margin-top: 0.6rem; line-height: 1.4; }
.un-gevi-oms p { margin: 0; }

.un-cat { text-align: center; padding: 0.2rem 0.9rem 1.1rem; }
.un-cat .num { font-size: 2.4rem; font-weight: 800; color: var(--c-navy); line-height: 1; }
.un-cat .note { font-size: 0.8rem; color: var(--c-text-muted); margin-top: 0.5rem; }

/* ---- Hoofdkolom ---- */
.un-main { display: flex; flex-direction: column; gap: 1.6rem; min-width: 0; }
.un-doc-head h1 { margin: 0 0 0.2rem; font-size: 1.7rem; letter-spacing: -0.02em; color: var(--c-navy); text-wrap: balance; }
.un-doc-head .lead { margin: 0; color: var(--c-text-muted); }

.un-eyebrow {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--c-text-soft);
  margin: 0 0 0.55rem;
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.un-eyebrow .col-tag {
  background: var(--c-navy);
  color: #fff;
  border-radius: 5px;
  padding: 0.1rem 0.45rem;
  font-size: 0.66rem;
  letter-spacing: 0.04em;
}
.un-eyebrow .col-tag.grey { background: var(--c-text-muted); }

.un-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0.7rem; }
.un-fact {
  background: #6f8bc4;
  border: 1px solid #5f7cb8;
  border-radius: var(--radius);
  padding: 0.7rem 0.85rem;
  box-shadow: var(--shadow-sm);
}
.un-fact .k { font-size: 0.7rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: rgba(255,255,255,0.9); }
.un-fact .v { font-size: 1.25rem; font-weight: 700; color: #fff; margin-top: 0.15rem; font-variant-numeric: tabular-nums; }

/* Toelichting-accordions (klasse / LQ / EQ) */
.un-acc {
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  margin-bottom: 0.6rem;
}
.un-acc:last-child { margin-bottom: 0; }
.un-acc > summary {
  list-style: none;
  cursor: pointer;
  padding: 0.85rem 2.6rem 0.85rem 1.1rem;
  position: relative;
  font-weight: 700;
  color: #fff;
  background: #6f8bc4;
  user-select: none;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
/* Statische balk (bijv. classificatiecode zonder omschrijving-bron) */
.un-acc-static {
  background: #6f8bc4;
  color: #fff;
  font-weight: 700;
  padding: 0.85rem 1.1rem;
  border-radius: var(--radius);
  margin-bottom: 0.6rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  box-shadow: var(--shadow-sm);
}
.un-acc > summary::-webkit-details-marker { display: none; }
.un-acc > summary:hover { background: #5f7cb8; }
.un-acc > summary::after {
  content: '+';
  position: absolute;
  right: 1.1rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.3rem;
  font-weight: 700;
  line-height: 1;
}
.un-acc[open] > summary::after { content: '\2212'; }
.un-acc-body {
  padding: 1.25rem;
  overflow-x: auto;              /* brede ADR-tabellen schuiven i.p.v. afkappen */
  background: var(--c-bg);       /* grijze ruimte tussen de kaarten — zoals de artikelweergave */
}
.un-acc-body > .public-artikel:first-child { margin-top: 0; }
.un-acc-body > .public-artikel:last-child { margin-bottom: 0; }
/* Ingesloten artikelen weer als volwaardige kaart (schaduw), op de grijze body */
.un-acc-body .public-artikel-embedded { box-shadow: var(--shadow-sm); }

/* Benaming — horizontale taal-accordion (CSS-only via radio-inputs) */
.un-lang-acc {
  display: flex;
  align-items: stretch;
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  background: var(--c-card);
  min-height: 252px;
}
.un-lang-radio {          /* toegankelijk maar visueel verborgen */
  position: absolute;
  width: 1px; height: 1px;
  opacity: 0;
  pointer-events: none;
}
/* Strips: elke taal houdt altijd zijn verticale balk, in vaste volgorde
   (NL EN DE FR ES). De inhoud van de gekozen taal klapt open direct rechts
   van de bijbehorende strip; strips vóór de keuze staan dus links, de rest
   rechts. Gekozen strip kleurt groen, zoals de inklap-menu's. */
.un-lang-strip {
  flex: 0 0 54px;
  min-width: 54px;
  box-sizing: border-box;
  display: flex;
  overflow: hidden;
  cursor: pointer;
  background: #6f8bc4;
  border-right: 1px solid #5f7cb8;
}
.un-lang-acc > :last-child { border-right: none; }
.un-lang-strip:hover { background: #5f7cb8; }
.un-lang-strip span {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  margin: auto;
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  color: #fff;
  white-space: nowrap;
}
.un-lang-radio:checked + .un-lang-strip {
  background: #00b050;
  border-right-color: #009345;
  cursor: default;
}
.un-lang-radio:checked + .un-lang-strip:hover { background: #00b050; }

/* Inhoud-paneel: alleen zichtbaar voor de gekozen taal */
.un-lang-body { display: none; }
.un-lang-radio:checked + .un-lang-strip + .un-lang-body {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  flex: 1 1 auto;
  min-width: 0;
  padding: 1rem 1.2rem;
  border-right: 1px solid var(--c-border);
}
.un-lang-body .lp-label {
  margin: 0 0 0.4rem;
  font-weight: 700;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: var(--un-text, var(--c-text-soft));
}
.un-lang-body .lp-name {
  display: block;
  font-weight: 700;
  font-size: 1.0rem;
  line-height: 1.4;
  color: var(--un-text, var(--c-navy));
  overflow-wrap: break-word;
}
.un-lang-radio:focus-visible + .un-lang-strip {
  outline: 2px solid var(--c-link);
  outline-offset: -2px;
}
/* Smalle schermen: horizontale accordion werkt niet — stapel alle talen open */
@media (max-width: 600px) {
  .un-lang-acc { flex-direction: column; min-height: 0; }
  .un-lang-strip { display: none; }
  .un-lang-body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
    padding: 0.8rem 1rem;
    border-right: none;
    border-bottom: 1px solid var(--c-border);
  }
  .un-lang-acc > .un-lang-body:last-child { border-bottom: none; }
}
.un-lang.primary { background: #f8fafc; }
.un-lang.primary .name { color: var(--c-navy); font-size: 1.1rem; }

/* Etiketten — geen vulling, alleen een kader op de paginakleur */
.un-etiket-card {
  background: transparent;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  padding: 1.3rem;
}
.adr-etiketten { display: flex; flex-wrap: wrap; gap: 1.2rem; align-items: flex-start; }
.adr-etiket { margin: 0; text-align: center; }
.adr-etiket-img { width: 150px; height: 150px; object-fit: contain; display: block; cursor: zoom-in; }
.adr-etiket figcaption { font-size: 0.75rem; font-weight: 700; color: var(--c-text-muted); margin-top: 0.3rem; }
.adr-etiket-tekst {
  display: inline-flex;
  align-items: center;
  padding: 0.4rem 0.8rem;
  border: 1px dashed var(--c-border-2);
  border-radius: var(--radius);
  font-weight: 600;
  color: var(--c-text-muted);
}
.adr-etiket-7x-noot,
.adr-etiket-rangeer-noot { margin: 1rem 0 0; font-size: 0.85rem; color: var(--c-text-muted); line-height: 1.5; }
/* Meerdere rangeeretiketten: de noten onder elkaar, dichter op elkaar. */
.adr-etiket-rangeer-noot + .adr-etiket-rangeer-noot { margin-top: 0.4rem; }

/* Kolom 5 zonder etiket, maar met een artikelverwijzing (UN 3537 t/m 3548):
   accordion in dezelfde stijl als de toelichtingen onder de identiteitskaart. */
.adr-etiketten + .un-etiket-verwijzing,
.adr-etiket-7x-noot + .un-etiket-verwijzing,
.adr-etiket-rangeer-noot + .un-etiket-verwijzing { margin-top: 1.2rem; }
.un-etiket-verwijzing-kop {
  margin: 0 0 0.6rem;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--c-text-muted);
}

/* Bijzondere bepalingen */
.un-bb-list { display: flex; flex-direction: column; gap: 0.8rem; }
.un-bb {
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  padding: 0.9rem 1.1rem;
}
.un-bb-nr { font-weight: 700; color: var(--c-navy); margin-bottom: 0.4rem; }
.un-bb-body { line-height: 1.55; }
.un-bb-leeg { color: var(--c-text-soft); font-style: italic; margin: 0; }


/* "Volgt later"-band */
.un-future {
  background: linear-gradient(180deg, #fbfcfe, #f5f7fb);
  border: 1px dashed var(--c-border-2);
  border-radius: var(--radius);
  padding: 1.1rem 1.2rem;
}
.un-future .un-eyebrow.muted { color: var(--c-text-muted); margin-bottom: 0.4rem; }
.un-future p { margin: 0; color: var(--c-text-muted); font-size: 0.9rem; }

/* Keuzemenu (>1 entry) */
.un-keuze-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1rem; margin-top: 1.25rem; }
.un-keuze-card {
  display: block;
  background: var(--c-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  padding: 1rem 1.1rem;
  transition: border-color 0.12s, box-shadow 0.12s;
}
.un-keuze-card:hover { border-color: var(--c-navy); box-shadow: var(--shadow); text-decoration: none; }
.un-keuze-naam { font-weight: 700; color: var(--c-navy); margin-bottom: 0.5rem; }
.un-keuze-meta { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.un-keuze-meta .pill {
  background: #eff6ff;
  color: #1e40af;
  border: 1px solid #dbeafe;
  border-radius: 999px;
  padding: 0.15rem 0.6rem;
  font-size: 0.78rem;
  font-weight: 700;
}

/* Sleepbare volgorde-lijst (toelichting-accordions) */
.sort-list {
  list-style: none;
  margin: 0 0 1rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.sort-item {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.75rem 0.9rem;
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  background: var(--c-card);
  box-shadow: var(--shadow-sm);
}
.sort-item.sort-dragging { opacity: 0.5; }
.sort-handle {
  color: var(--c-text-muted);
  font-size: 1.2rem;
  line-height: 1;
  cursor: grab;
  padding: 0.2rem;
  flex: 0 0 auto;
}
.sort-handle:active { cursor: grabbing; }
.sort-label { font-weight: 600; color: var(--c-navy); }
.sort-main { flex: 1; display: flex; flex-direction: column; gap: 0.35rem; min-width: 0; }
.sort-name { font-weight: 600; color: var(--c-navy); font-size: 0.9rem; }
.sort-label-input { width: 100%; }

/* Opmaak UN-detailpagina — versie-accordion */
.stijl-versie-acc {
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  background: var(--c-card);
  box-shadow: var(--shadow-sm);
  margin-bottom: 1rem;
  overflow: hidden;
}
.stijl-versie-acc > summary {
  cursor: pointer;
  list-style: none;
  padding: 1rem 1.2rem;
  font-weight: 700;
  font-size: 1.05rem;
  color: var(--c-navy);
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.stijl-versie-acc > summary::-webkit-details-marker { display: none; }
.stijl-versie-acc > summary::before {
  content: "▸";
  color: var(--c-text-muted);
  transition: transform 0.15s;
}
.stijl-versie-acc[open] > summary::before { transform: rotate(90deg); }
.stijl-versie-acc[open] > summary { border-bottom: 1px solid var(--c-border); }
.stijl-versie-acc > form { padding: 1.2rem; }

/* Opmaak UN-detailpagina — elementen */
.stijl-elementen {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  margin-bottom: 1rem;
}
@media (max-width: 900px) { .stijl-elementen { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .stijl-elementen { grid-template-columns: 1fr; } }
/* Padveld mag krimpen zodat de "Bladeren…"-knop niet buiten de kolom valt */
.stijl-el .upload-pad-row { flex-wrap: wrap; }
.stijl-el .upload-pad-row input[type="text"] { min-width: 0; }
.stijl-el {
  border: 1px solid var(--c-border);
  border-radius: var(--radius);
  padding: 0.9rem 1rem;
  background: var(--c-card);
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
}
.stijl-el-titel { font-weight: 700; color: var(--c-navy); }
.stijl-veld { display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.82rem; color: var(--c-text-muted); }
.stijl-veld input[type="color"] { width: 100%; height: 34px; padding: 0; border: 1px solid var(--c-border); border-radius: 4px; background: none; cursor: pointer; }
.stijl-veld input[type="range"] { width: 100%; }
.stijl-preview {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.5rem;
  border: 1px dashed var(--c-border-2);
  border-radius: var(--radius);
}
.stijl-preview-img { width: 100%; aspect-ratio: 3 / 2; border-radius: 4px; background-repeat: no-repeat; }
.stijl-remove { display: flex; align-items: center; gap: 0.4rem; font-size: 0.8rem; color: var(--c-text-muted); }
.stijl-alpha-out { font-weight: 700; color: var(--c-navy); }
.stijl-posx-out, .stijl-posy-out { font-weight: 700; color: var(--c-navy); }
.stijl-veld-noot { font-weight: 400; color: var(--c-text-soft); font-size: 0.75rem; }

/* ---- Tekstuele zoekfunctie (fase 1) ---- */
.zoek-form {
  display: flex;
  gap: 0.5rem;
  margin: 0.5rem 0 0.5rem;
  max-width: 46rem;
}
.zoek-input {
  flex: 1;
  padding: 0.6rem 0.8rem;
  font: inherit;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  background: var(--c-card);
  color: var(--c-text);
}
.zoek-input:focus {
  outline: none;
  border-color: var(--c-link);
  box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.15);
}
.zoek-samenvatting { margin: 1rem 0 0.75rem; color: var(--c-text-muted); }

.zoek-resultaten { list-style: none; margin: 0; padding: 0; }
.zoek-resultaat {
  padding: 0.9rem 0;
  border-bottom: 1px solid var(--c-border);
}
.zoek-resultaat-link {
  display: inline-flex;
  align-items: baseline;
  gap: 0.6rem;
  text-decoration: none;
}
.zoek-resultaat-link:hover .zoek-resultaat-titel { text-decoration: underline; }
.zoek-resultaat-titel { font-weight: 700; color: var(--c-link); }
.zoek-badge {
  flex: none;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  color: #fff;
}
.zoek-badge-artikel { background: #1e40af; }
.zoek-badge-blok    { background: #0f766e; }
.zoek-resultaat-snippet {
  margin: 0.35rem 0 0;
  color: var(--c-text);
  line-height: 1.5;
}
.zoek-resultaat-snippet mark {
  background: #fef08a;
  color: inherit;
  padding: 0 0.1em;
  border-radius: 2px;
}

.zoek-pager {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
  margin: 1.5rem 0;
}
.zoek-pager-knop {
  min-width: 2.2rem;
  text-align: center;
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--c-border-2);
  border-radius: var(--radius);
  color: var(--c-link);
  text-decoration: none;
  background: var(--c-card);
}
.zoek-pager-knop:hover { background: var(--c-bg); text-decoration: none; }
.zoek-pager-knop.actief {
  background: var(--c-link);
  border-color: var(--c-link);
  color: #fff;
  font-weight: 700;
}
.zoek-pager-gap { color: var(--c-text-soft); padding: 0 0.2rem; }
.blok-type-label { font-size: 0.9rem; font-weight: 400; color: var(--c-text-muted); margin-left: 0.4rem; }

/* Ankers naar één regel in de admin-lijsten: #artikel-<id> en #blok-<id>.
   Gebruikt na "Opslaan en sluiten" en na het kopiëren naar een andere versie,
   zodat je terugkomt bij het item waar je vandaan kwam in plaats van bovenaan
   de lijst. De markering laat zien welke regel dat is. In de kaartweergave
   heeft .public-artikel zijn scroll-margin al. */
.lijst-table tr[id^="artikel-"],
.lijst-table tr[id^="blok-"] { scroll-margin-top: 100px; }
.lijst-table tr[id^="artikel-"]:target > td,
.lijst-table tr[id^="blok-"]:target > td { background: var(--c-def-target); }
.admin-artikel[id^="artikel-"]:target,
.admin-artikel[id^="blok-"]:target { border-color: var(--c-link); }

/* ---------- Popup-dialoog (ao = "account overlay")
   Zelfde vormgeving als de popups in het bedrijfsportaal, zodat een melding er
   overal hetzelfde uitziet. Hier gebruikt door de blokkade-uitleg op de
   loginpagina. ---------- */
.ao-overlay {
  position: fixed; inset: 0; background: rgba(15,23,42,0.55); z-index: 1000;
  display: flex; align-items: center; justify-content: center; padding: 1rem;
}
.ao-overlay[hidden] { display: none; }
.ao-dialog {
  background: #fff; border-radius: 12px; max-width: 32rem; width: 100%;
  padding: 1.5rem 1.75rem; box-shadow: 0 12px 40px rgba(0,0,0,0.25);
}
.ao-dialog h3 { margin: 0 0 0.75rem; color: var(--c-navy); }
.ao-dialog p { margin: 0 0 1.25rem; line-height: 1.6; }
.ao-actions { display: flex; gap: 0.6rem; justify-content: flex-end; flex-wrap: wrap; }

/* ---------- Versie-naamplaatje ---------- */
/* Beheerschermen die per versie werken (verwijzingen, UN-links, …) tonen deze
   badge naast de titel. De kleur zit aan de modaliteit vast: ADR, RID en ADN
   zien er anders uit, zodat een verkeerd gekozen versie opvalt vóór je iets
   wijzigt. Zie versie_badge() in app/lib/view.php. */
/* De introtekst links, het versielabel rechts daarvan in de vrije ruimte.
   margin-left:auto houdt het label rechts, ook als het in zijn eentje staat. */
.versie-intro {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
  margin: 0 0 1rem;
}
.versie-intro > p:last-of-type { margin-bottom: 0; }

.versie-badge {
  margin-left: auto;
  font-size: clamp(1.8rem, 4vw, 3rem);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.01em;
  white-space: nowrap;
  cursor: help;
}
.versie-badge-adr  { color: #1d4ed8; }
.versie-badge-rid  { color: #047857; }
.versie-badge-adn  { color: #7c3aed; }
.versie-badge-geen { color: var(--c-text-muted); }

/* Publieke variant: dezelfde badge, iets kleiner en strak boven de breadcrumb.
   Hij staat op elke pagina, dus hij mag geen regel hoogte opeisen die de
   artikeltekst wegduwt. Op smalle schermen krimpt hij mee via de clamp. */
.versie-intro-publiek {
  margin: 0 0 0.15rem;
}
.versie-intro-publiek .versie-badge {
  font-size: clamp(1.3rem, 3vw, 2.1rem);
  cursor: default;
}

/* ---------- Terugknop na een interne verwijzing ---------- */
/* Zweeft rechtsonder, gestapeld bóven de "naar beneden"-knop (1,5rem en
   5,1rem), zodat hij ook halverwege een lang hoofdstuk in beeld staat — daar
   heb je hem juist nodig. Verschijnt alleen als je via een verwijzing op deze
   pagina kwam; zie de terugkruimel in assets/admin.js. */
.terug-zwevend {
  position: fixed;
  right: 1.5rem;
  bottom: 5.1rem;   /* publiek: alleen de "naar boven"-knop eronder */
  z-index: 8000;
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  height: 3rem;
  max-width: min(15rem, calc(100vw - 3rem));
  padding: 0 1rem 0 0.85rem;
  border-radius: 999px;
  background: var(--c-navy);
  color: #fff;
  font-size: 0.9rem;
  text-decoration: none;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
  transition: background 0.15s;
}
/* In de admin staat er ook een "naar beneden"-knop; dan een plek hoger. De
   knoppen staan eerder in de body dan deze, dus een broertjes-selector volstaat
   en hoeft de JS niets te weten van wie er onder hem hangt. */
.back-to-bottom ~ .terug-zwevend { bottom: 8.7rem; }

.terug-zwevend:hover { background: var(--c-navy-2); color: #fff; text-decoration: none; }
.terug-zwevend:focus-visible { outline: 2px solid var(--c-link); outline-offset: 3px; }
.terug-zwevend-pijl { font-size: 1.15rem; line-height: 1; }
.terug-zwevend-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Smal scherm: alleen de pijl, anders dekt de knop de halve regel af. */
@media (max-width: 30rem) {
  .terug-zwevend { padding: 0; width: 3rem; justify-content: center; }
  .terug-zwevend-label { display: none; }
}
