:root {
  --pa-blue: #154273;
  --pa-link: #01689b;
  --pa-link-hover: #003c69;
  --pa-text: #1b1b1b;
  --pa-muted: #4b4b4b;
  --pa-bg: #ffffff;
  --pa-card: #ffffff;
  --pa-border: #154273;
  --pa-hover: #e5f1f9;
  --pa-soft: #f3f7fa;
  --pa-green: #39870c;
  --pa-green-bg: #e1eddb;
  --pa-warning: #8a5a00;
  --pa-radius: 4px;
  --pa-max: 1180px;
}

* { box-sizing: border-box; }
html { background: var(--pa-bg); }
body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: #ffffff !important;
  color: var(--pa-text) !important;
  font-family: "Avenir Next", Avenir, "Segoe UI", Arial, sans-serif !important;
  font-size: 16px;
  line-height: 1.5;
}

a { color: var(--pa-link); }
a:hover { color: var(--pa-link-hover); }

h1, .page-title {
  margin: 0 0 16px;
  color: var(--pa-blue) !important;
  font-size: 24px !important;
  line-height: 1.25 !important;
  font-weight: 700;
}
h2, h3 {
  color: var(--pa-blue) !important;
  font-size: 16px !important;
  line-height: 1.35 !important;
  font-weight: 700;
}
p, li, td, th, label, input, select, textarea, button {
  font-size: 16px !important;
}
.small, .eyebrow, .status, .muted, .footer-note, .site-footer, .site-footer * {
  font-size: 12px !important;
}

/* Gedeelde header */
.topbar,
.site-header {
  width: 100%;
  padding: 0 !important;
  background: #ffffff !important;
  border: 0 !important;
  border-bottom: 1px solid var(--pa-blue) !important;
  box-shadow: none !important;
}
.topbar-inner,
.site-header-inner {
  width: 100%;
  max-width: var(--pa-max);
  min-height: 70px;
  margin: 0 auto;
  padding: 10px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.brand {
  display: inline-flex !important;
  align-items: center;
  gap: 12px;
  color: var(--pa-blue) !important;
  text-decoration: none !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
}
.brand img,
.brand-logo {
  width: 38px;
  height: 38px;
  object-fit: contain;
}
.site-nav {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}
.site-nav .profile { color: var(--pa-muted); margin-right: 8px; }
.site-nav a:not(.button) {
  padding: 9px 10px;
  color: var(--pa-blue);
  text-decoration: none;
  border-bottom: 2px solid transparent;
}
.site-nav a:not(.button):hover {
  background: var(--pa-hover);
  border-bottom-color: var(--pa-blue);
}

/* Hoofdcontent */
.shell,
.wrap {
  width: 100%;
  max-width: var(--pa-max) !important;
  margin: 0 auto !important;
  padding: 28px 24px 44px !important;
  flex: 1 0 auto;
}
.hero {
  display: grid;
  grid-template-columns: 1.25fr .75fr;
  gap: 24px;
  align-items: stretch;
}
.panel,
.card,
.users-card,
.clients-card,
.api-clients-card {
  width: 100% !important;
  margin: 0 !important;
  padding: 24px !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  background: #ffffff !important;
  background-image: none !important;
  border: 1px solid var(--pa-border) !important;
  border-radius: var(--pa-radius) !important;
  box-shadow: none !important;
}
.card { max-width: 980px !important; margin: 0 auto !important; }
.bgcard, .bgcard-mobile { background: #ffffff !important; min-height: 0 !important; height: auto !important; }
.bgcard-mobile > span { position: static !important; width: auto !important; display: inline !important; }
.hero h1 { margin-top: 0; }
.hero p, .lead, .tile p { color: var(--pa-muted) !important; }
.lead { margin: 0 0 24px; }
.eyebrow {
  margin-bottom: 8px;
  color: var(--pa-blue) !important;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 700;
}

/* Tegels zoals Rijksoverheid: dunne blauwe rand, kleine ronding, lichte hover */
.grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 24px;
}
.tile {
  display: block;
  min-height: 150px;
  padding: 22px;
  color: var(--pa-text) !important;
  text-decoration: none;
  background: #ffffff;
  border: 1px solid var(--pa-border);
  border-radius: var(--pa-radius);
  box-shadow: none;
  transition: background-color .15s ease, border-color .15s ease;
}
.tile:hover,
.tile:focus-visible {
  color: var(--pa-text) !important;
  background: var(--pa-hover);
  border-color: var(--pa-blue);
  transform: none;
  box-shadow: none;
}
.tile .icon { color: var(--pa-blue); font-size: 24px !important; line-height: 1; }
.tile h2 { margin: 14px 0 8px; }
.tile p { margin: 0; }
.tile.disabled { opacity: .55; pointer-events: none; }

/* Buttons */
.button,
.btn,
button,
input[type="submit"],
input[type="button"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 9px 16px !important;
  border: 1px solid var(--pa-blue) !important;
  border-radius: var(--pa-radius) !important;
  background: #ffffff !important;
  color: var(--pa-blue) !important;
  text-decoration: none !important;
  font-family: inherit !important;
  font-weight: 700 !important;
  cursor: pointer;
  box-shadow: none !important;
}
.button:disabled,
.btn:disabled,
button:disabled,
input[type="submit"]:disabled,
input[type="button"]:disabled,
.button[aria-disabled="true"],
.btn[aria-disabled="true"] {
  cursor: not-allowed !important;
}
.button:hover:not(:disabled):not([aria-disabled="true"]),
.btn:hover:not(:disabled):not([aria-disabled="true"]),
button:hover:not(:disabled):not([aria-disabled="true"]),
input[type="submit"]:hover:not(:disabled):not([aria-disabled="true"]),
input[type="button"]:hover:not(:disabled):not([aria-disabled="true"]) {
  background: var(--pa-hover) !important;
  color: var(--pa-blue) !important;
  /* Legacy auth CSS verplaatste .btn op hover 1px links/omhoog. In een
     container met overflow:hidden kon daardoor met name de bovenrand van
     terugknoppen worden afgeknipt. PlanAtlas-knoppen blijven op hover
     voortaan geometrisch op exact dezelfde positie. */
  transform: none !important;
}
.button.primary,
.btn.primary,
button.primary,
input[type="submit"].primary {
  background: var(--pa-blue) !important;
  color: #ffffff !important;
}
.button.primary:hover:not(:disabled):not([aria-disabled="true"]),
.btn.primary:hover:not(:disabled):not([aria-disabled="true"]),
button.primary:hover:not(:disabled):not([aria-disabled="true"]),
input[type="submit"].primary:hover:not(:disabled):not([aria-disabled="true"]) {
  background: #0d3559 !important;
  color: #ffffff !important;
}
.home-actions { display: grid; gap: 12px; margin-top: 18px; }
.home-actions p { margin: 0; }
.home-actions .button { width: 100%; }

/* Formulieren / tabellen */
input[type="text"], input[type="email"], input[type="password"], input[type="number"],
input[type="url"], input[type="search"], textarea, select {
  width: 100%;
  padding: 9px 10px;
  font-family: inherit !important;
  color: var(--pa-text);
  background: #ffffff;
  border: 1px solid #767676 !important;
  border-radius: var(--pa-radius) !important;
  box-shadow: none !important;
}
input:focus, textarea:focus, select:focus {
  outline: 2px solid #ffb612;
  outline-offset: 1px;
  border-color: var(--pa-blue) !important;
}
table { border-collapse: collapse; width: 100%; }
th { color: #ffffff !important; background: var(--pa-blue) !important; }
th, td { padding: 9px 10px; border: 1px solid #d7d7d7; }
code { padding: 2px 6px; border-radius: 2px; background: #f1f1f1; }

/* Adminnavigatie */
.nav {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 0 0 18px;
}
.nav a {
  padding: 8px 10px;
  color: var(--pa-blue) !important;
  text-decoration: none;
  border: 1px solid transparent;
  border-radius: var(--pa-radius);
}
.nav a:hover { background: var(--pa-hover); border-color: var(--pa-blue); }
.nav a.active { background: var(--pa-blue); color: #ffffff !important; border-color: var(--pa-blue); }

/* Meldingen */
.notice,
.flash-message {
  padding: 14px 16px;
  border-radius: var(--pa-radius) !important;
  box-shadow: none !important;
}
.notice { border: 1px solid var(--pa-blue); background: var(--pa-soft); }
.notice.demo-notice {
  border-color: var(--pa-green);
  border-left: 5px solid var(--pa-green);
  background: var(--pa-green-bg);
}
.flash-message.error, .error { border-color: #d52b1e !important; }
.flash-message.info {
  border: 1px solid #2d78ad !important;
  background: #edf6fc !important;
  color: var(--pa-blue) !important;
}
.admin-page .btn.admin-readonly-back,
.admin-page .btn.admin-readonly-back:focus-visible {
  color: var(--pa-blue) !important;
  background: #ffffff !important;
  border: 1px solid var(--pa-blue) !important;
}
.admin-page .btn.admin-readonly-back:hover:not(:disabled):not([aria-disabled="true"]) {
  background: var(--pa-hover) !important;
  color: var(--pa-blue) !important;
}
.organization-row-actions { display: flex; align-items: center; gap: 6px; }
.organization-row-actions form { display: inline-flex; margin: 0; }
.organization-row-actions .btn { margin: 0 !important; float: none !important; }
.admin-page .organization-row-actions .btn.delete:disabled,
.admin-page .organization-row-actions .btn.delete[aria-disabled="true"],
.admin-table-tools button:disabled {
  opacity: .38 !important;
  cursor: not-allowed !important;
  box-shadow: none !important;
  transform: none !important;
}
.status {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 999px;
  font-weight: 700;
  background: #f1f1f1;
}
.status.demo { color: #274e13; background: var(--pa-green-bg); }

.facts-frame {
  width: 100%;
  min-height: 70vh;
  background: #ffffff;
  border: 1px solid var(--pa-blue);
  border-radius: var(--pa-radius);
}

/* Footer, overeenkomstig Experience */
.site-footer {
  width: 100%;
  margin-top: auto;
  background: #ffffff;
  border-top: 1px solid #d7d7d7;
  color: var(--pa-text);
}
.site-footer-inner {
  max-width: var(--pa-max);
  min-height: 66px;
  margin: 0 auto;
  padding: 8px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.site-footer-left img { display: block; width: 280px; height: auto; max-width: min(36vw, 280px); object-fit: contain; object-position: left top; }
.site-footer-right { display: flex; align-items: center; justify-content: flex-end; gap: 12px; min-width: 0; }
.site-footer-right .powered-by { color: var(--pa-text); font-weight: 600; white-space: nowrap; }
.site-footer-right img { display: block; width: auto; max-width: 155px; height: 34px; object-fit: contain; }
.site-footer-right img.footer-esri { height: 32px; max-width: 145px; }
.footer-separator { width: 1px; height: 30px; background: #d7d7d7; }

@media (max-width: 760px) {
  .topbar-inner, .site-header-inner { min-height: 0; align-items: flex-start; flex-direction: column; padding: 12px 16px; }
  .shell, .wrap { padding: 22px 16px 32px !important; }
  .hero, .grid { grid-template-columns: 1fr; }
  .panel, .card { padding: 18px !important; }
  .site-footer-inner { align-items: flex-start; flex-direction: column; padding: 12px 16px; }
  .site-footer-right { flex-wrap: wrap; justify-content: flex-start; }
}

/* =========================================================
   PlanAtlas portal refinements v0.2.1
   ========================================================= */
:root {
  --text: var(--pa-text);
  --muted: var(--pa-muted);
  --primary: var(--pa-blue);
  --primary-hover: #0d3559;
  --secondary: var(--pa-blue);
  --border: #d7d7d7;
}

/* Brand: LMVW zichtbaar en extra binnenruimte zodat het lijnlogo niet afsnijdt. */
.brand { gap: 9px !important; }
.brand-logo,
.brand img {
  width: 46px !important;
  height: 46px !important;
  padding: 4px !important;
  object-fit: contain !important;
  object-position: center !important;
  flex: 0 0 46px;
}
.brand-suffix { font-weight: 600; }

/* Flexcontent mag krimpen: voorkomt kleine onnodige paginascrollbars. */
.shell,
.wrap { flex: 1 1 auto !important; min-height: 0; }

/* Portal bevat vanaf v0.2.1 uitsluitend contexttegels. */
.context-grid { align-items: stretch; }
.context-tile { min-height: 170px; }
.context-tile p { line-height: 1.55; }

/* Account: geen massieve blauwe labelcellen. */
.account-page .card { max-width: 900px !important; }
.account-page .card table th {
  width: 34%;
  background: #ffffff !important;
  color: var(--pa-blue) !important;
  border: 1px solid #d7d7d7 !important;
  font-weight: 700 !important;
}
.account-page .card table td {
  background: #ffffff !important;
  color: var(--pa-text) !important;
  border: 1px solid #d7d7d7 !important;
}
.account-page .card table th,
.account-page .card table td { padding: 9px 12px !important; }

/* 2FA: veld en bevestigingsknop exact op één lijn en compacter verticaal. */
.two-factor-page-shell .wrap { padding-top: 16px !important; padding-bottom: 16px !important; }
.two-factor-page-shell .two-factor-card { padding: 18px !important; }
.two-factor-page-shell .two-factor-row { align-items: center !important; }
.two-factor-page-shell .two-factor-actions { margin-top: 0 !important; }
.two-factor-page-shell .two-factor-actions p { margin: 0 !important; }
.two-factor-page-shell .two-factor-row input[inputmode="numeric"],
.two-factor-page-shell .two-factor-row button { min-height: 42px !important; }

/* Admin: schermbreed, geen scroll op body; scrollen gebeurt binnen het beheervak. */
body.admin-page {
  height: 100vh !important;
  min-height: 100vh !important;
  overflow: hidden !important;
}
.admin-page .topbar,
.admin-page .site-footer { flex: 0 0 auto; }
.admin-page .wrap {
  width: 100% !important;
  max-width: none !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow: hidden !important;
  padding: 12px 16px !important;
}
.admin-page .card,
.admin-page .users-card,
.admin-page .clients-card,
.admin-page .api-clients-card {
  width: 100% !important;
  max-width: none !important;
  height: 100% !important;
  min-height: 0 !important;
  max-height: none !important;
  margin: 0 !important;
  overflow: auto !important;
  padding: 18px 20px !important;
}
.admin-page .bgcard,
.admin-page .bgcard-mobile {
  min-height: 100% !important;
  height: auto !important;
  background: #ffffff !important;
}
/* Laat de kaart zelf scrollen en voorkom een tweede verticale scrollbar rond tabellen. */
.admin-page .table-scroll,
.admin-page .admin-rtable-wrap {
  height: auto !important;
  max-height: none !important;
  min-height: 0 !important;
  overflow: visible !important;
}
/* Beheertitel + tabbladen blijven in het beheervak zichtbaar. */
.admin-page .card h1:first-of-type {
  position: sticky;
  top: 0;
  z-index: 30;
  margin: 0 !important;
  padding: 0 0 8px !important;
  background: #ffffff !important;
}
.admin-page .card .nav {
  position: sticky;
  top: 38px;
  z-index: 29;
  margin: 0 0 14px !important;
  padding: 4px 0 10px !important;
  background: #ffffff !important;
}
/* Tabelheaders hoeven niet over de sticky beheertabs heen te schuiven. */
.admin-page .users-table thead th,
.admin-page .users-table tr:first-child th,
.admin-page .admin-rtable thead th,
.admin-page .admin-rtable th.resizable {
  position: static !important;
}

/* Sorteerpijl altijd leesbaar op de blauwe tabelkop. */
.admin-page .admin-rtable .admin-sort-arrow,
.admin-page .users-table .admin-sort-arrow {
  color: #ffffff !important;
}

/* Actief filter: Rijksoverheid-blauw met witte tekst, zonder witte-op-witte toestand. */
.admin-page .admin-filter-toggle.active,
.admin-page button.admin-filter-toggle.active {
  background: var(--pa-blue) !important;
  color: #ffffff !important;
  border-color: var(--pa-blue) !important;
  box-shadow: none !important;
  transform: none !important;
}
.admin-page .admin-filter-toggle.active:hover,
.admin-page button.admin-filter-toggle.active:hover {
  background: #0d3559 !important;
  color: #ffffff !important;
}

/* Actiekolom: beide knoppen compact; verwijderen gelijk aan Bewerken maar rood. */
.admin-page .col-actions .btn,
.admin-page .col-actions button {
  min-height: 0 !important;
  padding: 4px 8px !important;
  font-size:16px !important;
  line-height: 1.3 !important;
  text-align: center !important;
}
.admin-page .col-actions .btn.delete,
.admin-page .col-actions button.btn.delete {
  background: #ffffff !important;
  color: #d52b1e !important;
  border: 1px solid var(--pa-blue) !important;
  box-shadow: none !important;
  transform: none !important;
}
.admin-page .col-actions .btn.delete:hover:not(:disabled):not([aria-disabled="true"]),
.admin-page .col-actions button.btn.delete:hover:not(:disabled):not([aria-disabled="true"]) {
  background: #fbe9e7 !important;
  color: #d52b1e !important;
}

/* Opslaan: wit/blauw; hover exact omgekeerd. */
.admin-page .btn.submit,
.admin-page button.btn.submit {
  background: #ffffff !important;
  color: var(--pa-blue) !important;
  border: 1px solid var(--pa-blue) !important;
  box-shadow: none !important;
  transform: none !important;
}
.admin-page .btn.submit:hover:not(:disabled):not([aria-disabled="true"]),
.admin-page button.btn.submit:hover:not(:disabled):not([aria-disabled="true"]) {
  background: var(--pa-blue) !important;
  color: #ffffff !important;
}

@media (max-width: 760px) {
  .brand-logo, .brand img { width: 42px !important; height: 42px !important; flex-basis: 42px; }
  body.admin-page { height: auto !important; overflow: auto !important; }
  .admin-page .wrap { overflow: visible !important; }
  .admin-page .card { height: auto !important; overflow: visible !important; }
  .admin-page .card h1:first-of-type,
  .admin-page .card .nav { position: static !important; }
}

/* =========================================================
   PlanAtlas portal refinements hotfix v0.2.1b
   ========================================================= */

/* Filterdialoog: Toepassen wit/blauw, bij hover exact omgekeerd. */
.admin-page .admin-filter-apply,
.admin-page button.admin-filter-apply {
  background: #ffffff !important;
  color: var(--pa-blue) !important;
  border: 1px solid var(--pa-blue) !important;
  box-shadow: none !important;
  transform: none !important;
}
.admin-page .admin-filter-apply:hover,
.admin-page button.admin-filter-apply:hover {
  background: var(--pa-blue) !important;
  color: #ffffff !important;
  border-color: var(--pa-blue) !important;
  box-shadow: none !important;
  transform: none !important;
}

/* Sorteerkoppen blijven niet-sticky, maar moeten wel positioneringscontext
   houden voor het dynamisch toegevoegde witte sorteerpijltje. */
.admin-page .users-table thead th,
.admin-page .users-table tr:first-child th,
.admin-page .admin-rtable thead th,
.admin-page .admin-rtable th.resizable {
  position: relative !important;
}
.admin-page .admin-sort-arrow,
.admin-page .admin-rtable .admin-sort-arrow,
.admin-page .users-table .admin-sort-arrow {
  display: inline-block !important;
  position: absolute !important;
  right: 7px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  z-index: 5 !important;
  color: #ffffff !important;
  font-size: 12px !important;
  line-height: 1 !important;
  font-weight: 700 !important;
  pointer-events: none !important;
}

/* v0.2.1c - toon het volledige bestaande Plancapaciteiten.svg-logo in de header. */
.brand {
  overflow: visible !important;
}
.brand-logo,
.brand img {
  display: block !important;
  width: 56px !important;
  height: 56px !important;
  min-width: 56px !important;
  min-height: 56px !important;
  max-width: none !important;
  max-height: none !important;
  padding: 0 !important;
  margin: 0 !important;
  object-fit: contain !important;
  object-position: center !important;
  flex: 0 0 56px !important;
  overflow: visible !important;
  clip-path: none !important;
}
@media (max-width: 760px) {
  .brand-logo,
  .brand img {
    width: 50px !important;
    height: 50px !important;
    min-width: 50px !important;
    min-height: 50px !important;
    flex-basis: 50px !important;
  }
}


/* v0.2.1d - header-safe logo has its own padded viewBox; no clipping. */
.brand-logo,
.brand img {
  width: 54px !important;
  height: 54px !important;
  min-width: 54px !important;
  min-height: 54px !important;
  flex: 0 0 54px !important;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.4
   ========================================================= */
.upload-tabs{display:flex;gap:0;border-bottom:1px solid var(--pa-blue);margin:8px 0 22px;flex-wrap:wrap}
.upload-tabs a{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;text-decoration:none;color:var(--pa-blue);border:1px solid transparent;border-bottom:0;border-radius:4px 4px 0 0;font-weight:600}
.upload-tabs a:hover{background:#e5f1f9}.upload-tabs a.active{background:var(--pa-blue);color:#fff;border-color:var(--pa-blue)}
.tab-count{display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;border-radius:999px;background:rgba(255,255,255,.22);font-size:12px;padding:0 6px}
.upload-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);gap:18px;align-items:start}.upload-grid .panel{margin:0}
.upload-form{display:grid;gap:14px}.upload-form label,.api-run label{display:grid;gap:6px;font-weight:600;color:var(--pa-blue)}
.upload-form input,.upload-form select,.upload-form textarea,.api-run input,.api-run select{width:100%;border:1px solid #8ca8c0;border-radius:3px;padding:9px 10px;background:#fff;color:#1b1b1b;font:inherit}
.upload-form input:focus,.upload-form select:focus,.upload-form textarea:focus,.api-run input:focus,.api-run select:focus{outline:2px solid #01689b;outline-offset:1px;border-color:#01689b}
.upload-form small,.upload-help small{font-size:12px;font-weight:400;color:#4d4d4d}.upload-file-field{border:1px dashed #8ca8c0;border-radius:4px;padding:14px;background:#f7fbfd}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.upload-message{border:1px solid var(--pa-blue);border-radius:4px;padding:12px 14px;margin:0 0 16px}.upload-message.success{border-color:#39870c;background:#f1f8ed}.upload-message.error{border-color:#d52b1e;background:#fff4f2}
.api-connection{border:1px solid #8ca8c0;border-radius:4px;padding:14px;margin:0 0 12px}.api-connection>strong,.api-connection>small{display:block}.api-connection>small{margin:3px 0 12px;color:#4d4d4d;word-break:break-all}.api-run{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end}.api-run .button{white-space:nowrap}
.delivery-dashboard{margin:0 0 22px}.delivery-head,.delivery-list-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.delivery-head h2,.delivery-list-head h2{margin-top:4px}.delivery-status{display:inline-flex;padding:5px 9px;border:1px solid var(--pa-blue);border-radius:999px;font-size:12px;font-weight:700}.delivery-status.validated{background:#f1f8ed;border-color:#39870c;color:#275c08}.delivery-status.failed{background:#fff4f2;border-color:#d52b1e;color:#a32017}.delivery-status.validating{background:#e5f1f9}
.delivery-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.delivery-head-actions .button{white-space:nowrap}
.delivery-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0}.delivery-meta span{border-top:1px solid #d7e1ea;padding-top:8px}.delivery-meta strong{display:block;font-size:12px;text-transform:uppercase;color:#4d4d4d;margin-bottom:2px}
.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border:1px solid #8ca8c0;border-radius:4px;overflow:hidden;margin:18px 0}.metric-grid>div{padding:14px;border-right:1px solid #d7e1ea}.metric-grid>div:last-child{border-right:0}.metric-grid strong{display:block;font-size:24px;color:var(--pa-blue)}.metric-grid span{font-size:12px}.metric-grid .metric-error strong{color:#d52b1e}.metric-grid .metric-warning strong{color:#e17000}.metric-grid .metric-ok strong{color:#39870c}
.validation-blocks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0 24px}.validation-block{display:grid;grid-template-columns:auto 1fr;gap:4px 8px;align-items:center;border:1px solid #8ca8c0;border-radius:4px;padding:10px}.validation-block small{grid-column:2;font-size:12px;color:#4d4d4d}.validation-symbol{font-size:20px;font-weight:700}.validation-block.ok .validation-symbol{color:#39870c}.validation-block.warning .validation-symbol{color:#e17000}.validation-block.error .validation-symbol{color:#d52b1e}
.finding-list{display:grid;gap:8px}.finding{border:1px solid #8ca8c0;border-radius:4px;background:#fff}.finding.error{border-left:4px solid #d52b1e}.finding.warning{border-left:4px solid #e17000}.finding summary{display:flex;align-items:center;gap:10px;cursor:pointer;padding:11px 12px;list-style:none}.finding summary::-webkit-details-marker{display:none}.finding summary span:last-child{display:grid;gap:2px}.finding summary small{font-size:12px;color:#4d4d4d}.finding-count{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 7px;border-radius:999px;background:#e5f1f9;color:var(--pa-blue);font-weight:700}.finding-table-wrap,.delivery-table-wrap{overflow:auto}.finding-table,.delivery-table{width:100%;border-collapse:collapse}.finding-table th,.finding-table td,.delivery-table th,.delivery-table td{padding:8px 9px;border-top:1px solid #d7e1ea;text-align:left;font-size:12px}.finding-table th,.delivery-table th{background:var(--pa-blue);color:#fff}.delivery-table a{color:var(--pa-blue)}
.rules-overview{margin-top:18px;border-top:1px solid #d7e1ea;padding-top:12px}.rules-overview>summary{cursor:pointer;font-weight:700;color:var(--pa-blue)}.rules-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.rules-grid>div{display:grid;border:1px solid #d7e1ea;border-radius:4px;padding:9px}.rules-grid span,.rules-grid small{font-size:12px}.rules-grid span{font-weight:700;color:var(--pa-blue)}.rules-grid small{color:#4d4d4d}
@media(max-width:980px){.upload-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-grid>div{border-bottom:1px solid #d7e1ea}.validation-blocks{grid-template-columns:repeat(2,minmax(0,1fr))}.rules-grid{grid-template-columns:1fr 1fr}.delivery-meta{grid-template-columns:1fr 1fr}.api-run{grid-template-columns:1fr}}
@media(max-width:600px){.form-row,.metric-grid,.validation-blocks,.rules-grid,.delivery-meta{grid-template-columns:1fr}.upload-tabs a{flex:1 1 auto}.delivery-head,.delivery-list-head{flex-direction:column}.delivery-head-actions{width:100%;justify-content:space-between}}

.delivery-status.rejected_format{background:#fff4f2;border-color:#d52b1e;color:#a32017}


/* =========================================================
   PlanAtlas layout width patch v0.1.0
   - header/footer overal schermbreed
   - Data aanleveren even breed als Beheer
   ========================================================= */

/* Header: merk links, navigatie uiterst rechts. */
.topbar-inner,
.site-header-inner {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 16px !important;
  padding-right: 16px !important;
}
.topbar-inner .brand,
.site-header-inner .brand {
  margin-right: auto !important;
  flex: 0 0 auto;
}
.site-nav {
  margin-left: auto !important;
  justify-content: flex-end !important;
}

/* Footer: BZK geheel links, Powered by / Etil / Esri geheel rechts. */
.site-footer-inner {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 16px !important;
  padding-right: 16px !important;
}
.site-footer-left {
  margin-right: auto !important;
  flex: 0 0 auto;
}
.site-footer-right {
  margin-left: auto !important;
  justify-content: flex-end !important;
}

/* Data aanleveren / leveringen: dezelfde schermbrede werkruimte als Beheer. */
body.upload-page .shell {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 12px 16px 32px !important;
}
body.upload-page .shell > * {
  max-width: none !important;
}
body.upload-page .panel,
body.upload-page .delivery-dashboard {
  width: 100% !important;
  max-width: none !important;
}

@media (max-width: 760px) {
  .topbar-inner,
  .site-header-inner,
  .site-footer-inner {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  body.upload-page .shell {
    padding: 16px 12px 28px !important;
  }
  .site-nav {
    margin-left: 0 !important;
    justify-content: flex-start !important;
  }
  .site-footer-right {
    margin-left: 0 !important;
    justify-content: flex-start !important;
  }
}
\n\n/* =========================================================
   PlanAtlas layout width patch v0.1.1
   - Mijn PlanAtlas / portal schermbreed
   - Account schermbreed
   - 2FA schermbreed
   ========================================================= */

/* Mijn PlanAtlas: zelfde volledige werkbreedte als Beheer/Upload. */
body.portal-page .shell {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 12px 16px 32px !important;
}
body.portal-page .shell > * {
  max-width: none !important;
}

/* Accountpagina: volledige beschikbare breedte gebruiken. */
body.account-page .wrap {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 16px !important;
  padding-right: 16px !important;
}
body.account-page .card {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* 2FA: paginavlak en kaart schermbreed; velden zelf behouden hun logische maat. */
body.two-factor-page-shell .wrap {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 16px !important;
  padding-right: 16px !important;
}
body.two-factor-page-shell .card,
body.two-factor-page-shell .two-factor-card {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
body.two-factor-page-shell .two-factor-row {
  max-width: 720px;
}

@media (max-width: 760px) {
  body.portal-page .shell,
  body.account-page .wrap,
  body.two-factor-page-shell .wrap {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
}

/* =========================================================
   PlanAtlas layout width patch v0.1.2
   - portal robuust schermbreed
   - account/wachtwoord 50% links
   - footerpositie stabiel met/zonder scrollbar
   ========================================================= */

/* Reserveer overal dezelfde verticale-scrollbar-gutter zodat header/footer
   horizontaal niet verspringen tussen korte en lange pagina's. */
html {
  scrollbar-gutter: stable;
}

/* Mijn PlanAtlas: volledig schermbrede werkruimte. De :has()-regel is een
   extra fallback als een afwijkende portal-URL ooit geen bodyclass krijgt. */
body.portal-page main.shell,
body.portal-page .shell,
body:has(.context-grid) main.shell {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding: 12px 16px 32px !important;
}
body.portal-page .context-grid,
body:has(.context-grid) .context-grid {
  width: 100% !important;
  max-width: none !important;
}

/* Account en wachtwoord wijzigen: halve schermbreedte, links uitgelijnd.
   De pagina zelf blijft full-width zodat header/footer op dezelfde positie staan. */
body.account-page .wrap,
body.password-page .wrap {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 16px !important;
  padding-right: 16px !important;
}
body.account-page .card,
body.password-page .card {
  width: 50% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: auto !important;
}

/* 2FA blijft inhoudelijk zoals v0.1.1, maar footer gebruikt exact de gedeelde
   schermbrede geometrie en mag niet door paginaspecifieke regels verschuiven. */
body.two-factor-page-shell .site-footer {
  width: 100% !important;
  flex: 0 0 auto !important;
}
body.two-factor-page-shell .site-footer-inner {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 16px !important;
  padding-right: 16px !important;
}
body.two-factor-page-shell .site-footer-left {
  margin-right: auto !important;
}
body.two-factor-page-shell .site-footer-right {
  margin-left: auto !important;
  justify-content: flex-end !important;
}

@media (max-width: 900px) {
  body.account-page .card,
  body.password-page .card {
    width: 100% !important;
  }
}

@media (max-width: 760px) {
  body.portal-page main.shell,
  body.portal-page .shell,
  body:has(.context-grid) main.shell,
  body.account-page .wrap,
  body.password-page .wrap {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  body.two-factor-page-shell .site-footer-inner {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
}


/* =========================================================
   PlanAtlas upload/layout UX v0.1.9
   - uploadscherm blijft binnen viewport
   - titel + tabs vast, inhoud intern scrollbaar
   - smallere invoerkolom / bredere toelichtingskolom
   - uploadtabellen gelijk aan beheertabellen
   - BZK-logo groter en tegen linker-/bovenrand footer
   ========================================================= */

/* De footer is overal iets hoger. Het BZK-logo staat zonder linker- of
   bovenpadding tegen de footer-rand; rechts blijft reguliere ademruimte. */
.site-footer {
  min-height: 78px;
}
.site-footer-inner {
  min-height: 78px !important;
  padding: 0 16px 0 0 !important;
  align-items: center !important;
}
.site-footer-left {
  align-self: flex-start !important;
  margin-right: auto !important;
}
.site-footer-left img {
  width: 280px !important;
  height: auto !important;
  max-width: min(36vw, 280px) !important;
  max-height: none !important;
  object-position: left top !important;
}
.site-footer-right {
  margin-left: auto !important;
  padding-left: 16px;
  padding-right: 0;
}

/* Data aanleveren: header en footer blijven permanent in beeld. Alleen de
   inhoud onder titel/tabbladen scrolt. */
html,
body.upload-page {
  height: 100%;
}
body.upload-page {
  min-height: 100vh;
  height: 100vh;
  overflow: hidden;
}
body.upload-page .site-header,
body.upload-page .site-footer {
  flex: 0 0 auto;
}
body.upload-page main.shell,
body.upload-page .shell {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
  padding: 12px 16px 0 !important;
}
body.upload-page .upload-module-fixed-head {
  flex: 0 0 auto;
  min-height: 0;
  background: #fff;
  z-index: 20;
}
body.upload-page .upload-module-fixed-head .page-title {
  margin-bottom: 8px !important;
}
body.upload-page .upload-module-fixed-head .lead {
  margin-bottom: 10px !important;
}
body.upload-page .upload-module-fixed-head .upload-tabs {
  margin: 4px 0 12px !important;
}
body.upload-page .upload-content-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0 0 16px;
  scrollbar-gutter: stable;
  overscroll-behavior: contain;
}
body.upload-page .upload-content-scroll > .upload-message:first-child {
  margin-top: 0;
}

/* Invoerkant compacter; toelichting/resultaten krijgen meer ruimte. */
body.upload-page .upload-grid {
  grid-template-columns: minmax(285px, .72fr) minmax(0, 1.28fr) !important;
  gap: 18px;
}

/* v126_66_9: het uploadpaneel is circa twee derde van de vorige (2fr/3fr) breedte. */
body.upload-page .upload-grid.upload-file-grid {
  grid-template-columns: minmax(600px, 4fr) minmax(0, 5fr) !important;
}
@media (max-width: 980px) {
  body.upload-page .upload-grid.upload-file-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

/* De smart tables in Data aanleveren gebruiken dezelfde basisgeometrie als
   de tabellen in Beheer: zoeken/filteren via admin_table_tools, sorteren via
   de kolomkop en kolombreedte via de resize-handles. */
body.upload-page .table-scroll,
body.upload-page .admin-rtable-wrap {
  width: 100%;
  height: auto;
  max-height: none;
  min-height: 0;
  overflow: auto;
  border-top: 1px solid #dce4ee;
  position: relative;
}
body.upload-page .admin-rtable {
  width: 100%;
  border-collapse: collapse;
  background: transparent;
  table-layout: fixed;
}
body.upload-page .admin-rtable th,
body.upload-page .admin-rtable td {
  padding: 12px 10px;
  border-bottom: 1px solid #dce4ee;
  text-align: left;
  vertical-align: top;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  box-sizing: border-box;
  font-size:16px !important;
}
body.upload-page .admin-rtable thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: #f6f3ee;
  color: var(--pa-text);
  box-shadow: 0 1px 0 #dce4ee;
}
body.upload-page .admin-rtable th.resizable {
  position: sticky;
  top: 0;
}
body.upload-page .admin-rtable th .th-label {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-right: 14px;
}
body.upload-page .admin-rtable .admin-sort-arrow {
  position: absolute;
  right: 7px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 11px;
  line-height: 1;
  color: #002b5c;
  pointer-events: none;
}
body.upload-page .admin-rtable .col-actions {
  white-space: nowrap;
}
body.upload-page .admin-rtable .col-actions .button,
body.upload-page .admin-rtable .col-actions button {
  width: 100%;
  max-width: none;
  min-height: 0;
}
body.upload-page .finding-table-wrap,
body.upload-page .delivery-table-wrap {
  overflow: visible;
}

/* De filterdialoog moet boven het vaste uploadhoofd blijven. */
body.upload-page .admin-filter-panel {
  z-index: 5000 !important;
}

@media (max-width: 980px) {
  body.upload-page .upload-grid {
    grid-template-columns: 1fr !important;
  }
}

@media (max-width: 760px) {
  .site-footer-inner,
  body.two-factor-page-shell .site-footer-inner {
    padding: 0 12px 8px 0 !important;
    align-items: flex-start !important;
  }
  .site-footer-left img {
    width: 250px !important;
    max-width: min(80vw, 250px) !important;
  }
  .site-footer-right {
    margin-left: 12px !important;
    padding-left: 0;
    padding-top: 6px;
  }
  body.upload-page main.shell,
  body.upload-page .shell {
    padding: 10px 12px 0 !important;
  }
}

/* =========================================================
   PlanAtlas upload/layout UX v0.1.11
   - template downloads op een rij
   - duidelijke mapping-waarschuwingen
   - geoptimaliseerde footer-assets
   ========================================================= */
.upload-message.warning {
  border-color: #f2b100;
  background: #fff8d8;
}
.upload-message.info {
  border-color: #2d78ad;
  background: #edf6fc;
}
.mapping-null-help {
  margin: 8px 0 14px;
  color: #333;
}
.template-actions {
  display: flex;
  flex-wrap: nowrap;
  gap: 5px;
  align-items: stretch;
  margin: 12px 0 14px;
}
.template-actions .button {
  flex: 0 1 auto;
  white-space: nowrap;
  padding-left: 12px;
  padding-right: 12px;
}
@media (max-width: 1180px) {
  .template-actions { flex-wrap: wrap; }
}

/* =========================================================
   PlanAtlas upload/layout UX v0.1.11
   - conditionele geometrievelden
   - unieke bronveldkeuze
   - compacte mappingactie en leveringentabel
   - feedback-Excel
   ========================================================= */
body.upload-page .geometry-mode-row {
  display: grid;
  grid-template-columns: minmax(280px, 520px);
  gap: 12px;
  margin-bottom: 12px;
}
body.upload-page .geometry-mode-row label,
body.upload-page .geometry-details label {
  display: grid;
  gap: 6px;
  font-weight: 600;
  color: var(--pa-blue);
}
body.upload-page .geometry-details[hidden],
body.upload-page [data-geometry-crs][hidden],
body.upload-page [data-geometry-wkt][hidden],
body.upload-page [data-geometry-x][hidden],
body.upload-page [data-geometry-y][hidden] {
  display: none !important;
}
body.upload-page .geometry-details .form-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px;
}
body.upload-page select[data-source-field-select="1"] option:disabled {
  color: #888;
  background: #f1f1f1;
}
body.upload-page .mapping-confirm-actions {
  justify-self: start;
  display: flex;
  justify-content: flex-start;
  width: auto;
}
body.upload-page .mapping-confirm-actions .button {
  width: auto !important;
  max-width: max-content;
}
body.upload-page .feedback-download-form {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin: 14px 0 18px;
  padding: 12px 14px;
  border: 1px solid #8ca8c0;
  border-radius: 4px;
  background: #f7fbfd;
}
body.upload-page .feedback-download-form .button {
  flex: 0 0 auto;
  width: auto !important;
}
body.upload-page .feedback-download-form small {
  flex: 1 1 420px;
  color: #333;
  line-height: 1.45;
}
/* De leveringentabel moet op een normaal desktopvenster binnen het paneel passen.
   Lange bestandsnamen/uploadernamen blijven via ellipsis beschikbaar met title. */
body.upload-page table[class*="upload-deliveries-"] th,
body.upload-page table[class*="upload-deliveries-"] td {
  padding: 9px 6px !important;
  font-size:16px !important;
}
body.upload-page table[class*="upload-deliveries-"] .col-actions .button,
body.upload-page table[class*="upload-deliveries-"] .col-actions button {
  padding-left: 6px !important;
  padding-right: 6px !important;
  font-size:16px !important;
}
@media (min-width: 1500px) {
  body.upload-page table[class*="upload-deliveries-"] { min-width: 0 !important; }
}

/* =========================================================
   PlanAtlas upload/layout UX v0.1.12
   - sticky mappingbediening + tabelkop
   - duidelijk klikbare directe-formatdetails
   - blokkerende voortgangslaag feedback-Excel
   ========================================================= */
body.upload-page .upload-mapping-smart-table {
  --mapping-sticky-tools-height: 118px;
  position: relative;
  isolation: isolate;
  margin-top: 8px;
}
body.upload-page .upload-mapping-sticky-controls {
  position: sticky;
  top: 0;
  z-index: 35;
  background: #fff;
  padding: 5px 0 3px;
  box-shadow: 0 1px 0 #dce4ee;
}
body.upload-page .upload-mapping-sticky-controls .admin-table-tools {
  margin: 0 0 8px !important;
  background: #fff;
}
body.upload-page .upload-mapping-sticky-controls .admin-table-result-count {
  margin: 0 0 8px !important;
  padding-bottom: 2px;
  background: #fff;
}
/* Voor de mappingtabel is de module zelf de verticale scroller. Daardoor
   kunnen tools en kop sticky blijven en scrollt de pagina vanzelf door zodra
   de laatste tabelrij is gepasseerd. */
body.upload-page .upload-mapping-smart-table .table-scroll,
body.upload-page .upload-mapping-smart-table .admin-rtable-wrap {
  overflow: visible !important;
  max-height: none !important;
  border-top: 0;
}
body.upload-page .upload-mapping-smart-table .admin-rtable thead th,
body.upload-page .upload-mapping-smart-table .admin-rtable th.resizable {
  position: sticky !important;
  top: var(--mapping-sticky-tools-height) !important;
  z-index: 32 !important;
  background: var(--pa-blue) !important;
  color: #fff !important;
  box-shadow: 0 1px 0 #dce4ee;
}
body.upload-page .upload-mapping-smart-table .admin-rtable .admin-sort-arrow {
  color: #fff !important;
}

body.upload-page details.direct-acceptance-details > summary {
  cursor: pointer;
  transition: background-color .12s ease, color .12s ease;
}
body.upload-page details.direct-acceptance-details > summary:hover,
body.upload-page details.direct-acceptance-details > summary:focus-visible {
  background: var(--pa-blue) !important;
  color: #fff !important;
  outline: none;
}
body.upload-page details.direct-acceptance-details > summary:hover *,
body.upload-page details.direct-acceptance-details > summary:focus-visible * {
  color: #fff !important;
}

.feedback-generation-overlay[hidden] { display: none !important; }
.feedback-generation-overlay {
  position: fixed;
  inset: 0;
  z-index: 25000;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(255,255,255,.78);
  backdrop-filter: blur(2px);
  cursor: wait;
  pointer-events: all;
}
.feedback-generation-card {
  width: min(620px, calc(100vw - 48px));
  padding: 24px 26px;
  border: 2px solid var(--pa-blue);
  background: #fff;
  box-shadow: 0 18px 55px rgba(0,0,0,.24);
}
.feedback-generation-card h2 { margin: 0 0 10px; color: var(--pa-blue); }
.feedback-generation-card p { margin: 0 0 16px; }
.feedback-progress-track {
  position: relative;
  width: 100%;
  height: 18px;
  overflow: hidden;
  border: 1px solid #7b91a8;
  background: #eef3f7;
}
.feedback-progress-bar {
  width: 0;
  height: 100%;
  background: var(--pa-blue);
  transition: width .25s ease;
}
.feedback-progress-meta {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-top: 8px;
  color: #333;
}
.feedback-generation-card small {
  display: block;
  margin-top: 16px;
  color: #4a4a4a;
  line-height: 1.45;
}
html.feedback-generation-active,
html.feedback-generation-active body {
  overflow: hidden !important;
}
.feedback-download-target { display: none !important; }

/* =========================================================
   PlanAtlas upload/layout UX v0.1.16
   - actualisatieronde + deadline
   - levering-stepper
   - veiliggestelde geldige leveringen / versiebeheer
   ========================================================= */
body.upload-page .update-round-strip {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  margin:10px 0 12px;
  padding:10px 14px;
  border:1px solid #8ca8c0;
  border-left:6px solid var(--pa-blue);
  background:#f4f8fb;
}
body.upload-page .update-round-strip > span { display:grid; gap:2px; }
body.upload-page .update-round-strip small { color:#414141; font-weight:400; }
body.upload-page .update-round-strip .round-deadline { text-align:right; }
body.upload-page .update-round-strip.attention { border-left-color:#d6a400; background:#fffbea; }
body.upload-page .update-round-strip.warning { border-left-color:#e17a00; background:#fff4df; }
body.upload-page .update-round-strip.urgent,
body.upload-page .update-round-strip.critical,
body.upload-page .update-round-strip.expired { border-left-color:#b00020; background:#fff0f1; }
body.upload-page .update-round-strip.urgent .round-deadline strong,
body.upload-page .update-round-strip.critical .round-deadline strong,
body.upload-page .update-round-strip.expired .round-deadline strong { color:#b00020; font-weight:800; }
body.upload-page .update-round-strip.critical .round-deadline strong { font-size:1.08em; }
body.upload-page .update-round-strip.closed { border-left-color:#777; background:#f3f3f3; }

body.upload-page .delivery-workflow-nav { margin:14px 0 18px; }
body.upload-page .delivery-stepper {
  list-style:none;
  display:grid;
  grid-template-columns:repeat(5,minmax(130px,1fr));
  gap:0;
  margin:0;
  padding:0;
}
body.upload-page .delivery-stepper li { position:relative; min-width:0; }
body.upload-page .delivery-stepper li:not(:last-child)::after {
  content:'→';
  position:absolute;
  right:-10px;
  top:17px;
  z-index:3;
  color:#6f7d8a;
  font-size:20px;
  font-weight:800;
}
body.upload-page .delivery-stepper li > a,
body.upload-page .delivery-stepper li > span {
  display:flex;
  align-items:center;
  gap:8px;
  min-height:54px;
  padding:7px 14px 7px 8px;
  color:#333;
  text-decoration:none;
}
body.upload-page .delivery-stepper .step-circle {
  flex:0 0 34px;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border:2px solid #8093a4;
  border-radius:50%;
  background:#fff;
  color:#405261;
  font-weight:800;
}
body.upload-page .delivery-stepper .step-label { min-width:0; font-weight:700; line-height:1.15; }
body.upload-page .delivery-stepper .step-label small { display:block; margin-top:3px; font-size:10px; font-weight:600; color:#667; }
body.upload-page .delivery-stepper li.active .step-circle { background:var(--pa-blue); border-color:var(--pa-blue); color:#fff; box-shadow:0 0 0 3px rgba(21,66,115,.12); }
body.upload-page .delivery-stepper li.active .step-label { color:var(--pa-blue); }
body.upload-page .delivery-stepper li.complete .step-circle,
body.upload-page .delivery-stepper li.complete-result .step-circle { background:#e7f5eb; border-color:#17823b; color:#08752b; }
body.upload-page .delivery-stepper li.locked { opacity:.45; }
body.upload-page .delivery-stepper li.locked .step-circle { background:#eee; }
body.upload-page .delivery-stepper li.skipped .step-circle { border-style:dashed; background:#f4f4f4; }
body.upload-page .delivery-stepper li.has-error .step-circle { border-color:#b00020; color:#b00020; background:#fff0f1; }
body.upload-page .delivery-stepper li.needs-action .step-circle { border-color:#d47a00; color:#925200; background:#fff5df; }
body.upload-page .delivery-stepper li > a:hover .step-circle { box-shadow:0 0 0 3px rgba(21,66,115,.12); }

body.upload-page .workflow-panel { min-height:0; }
body.upload-page .workflow-actions { display:flex; gap:10px; flex-wrap:wrap; margin:18px 0 4px; }
body.upload-page .workflow-skip-note,
body.upload-page .safe-fallback-banner,
body.upload-page .existing-valid-version,
body.upload-page .protected-delivery-note,
body.upload-page .round-reference-readonly {
  display:flex;
  gap:10px;
  align-items:flex-start;
  padding:11px 13px;
  margin:12px 0;
  border:1px solid #b9c7d4;
  background:#f6f9fb;
}
body.upload-page .workflow-skip-note,
body.upload-page .safe-fallback-banner,
body.upload-page .existing-valid-version,
body.upload-page .protected-delivery-note { flex-direction:column; }
body.upload-page .safe-fallback-banner { border-left:5px solid #d49a00; background:#fffbea; }
body.upload-page .safe-fallback-banner.success,
body.upload-page .protected-delivery-note { border-left:5px solid #17823b; background:#eef8f1; }
body.upload-page .existing-valid-version { border-left:5px solid #17823b; border-color:#9acaaa; background:#eef8f1; }
body.upload-page .existing-valid-version[hidden] { display:none !important; }
body.upload-page .round-reference-readonly { display:grid; grid-template-columns:auto 1fr; align-items:baseline; }
body.upload-page .round-reference-readonly span { font-weight:700; color:#555; }
body.upload-page .round-reference-readonly strong { color:var(--pa-blue); font-size:1.12em; }
body.upload-page .round-reference-readonly small { grid-column:1/-1; color:#555; }
body.upload-page .round-reference-readonly.compact { margin:8px 0; padding:7px 10px; }
body.upload-page .mapping-summary { max-height:360px; overflow:auto; border:1px solid #dce4ee; margin:14px 0; }
body.upload-page .mapping-summary table { margin:0; }
body.upload-page .mapping-summary p { padding:0 10px 10px; }
body.upload-page .delivery-delete-form { margin-top:20px; padding-top:14px; border-top:1px solid #d9d9d9; }
body.upload-page .button.danger-outline { color:#a0001c !important; border-color:#a0001c; background:#fff; }
body.upload-page .button.danger-outline:hover:not(:disabled):not([aria-disabled="true"]) { background:#fff0f1; }
body.upload-page .delivery-protected-mini { display:block; margin-top:4px; color:#08752b; font-weight:700; }
body.upload-page .protected-action { display:inline-block; padding:4px 6px; color:#08752b; font-size:11px; font-weight:800; }

@media (max-width: 1050px) {
  body.upload-page .delivery-stepper { grid-template-columns:1fr; gap:3px; }
  body.upload-page .delivery-stepper li:not(:last-child)::after { content:'↓'; right:auto; left:17px; top:45px; }
  body.upload-page .delivery-stepper li > a,
  body.upload-page .delivery-stepper li > span { min-height:48px; }
  body.upload-page .update-round-strip { align-items:flex-start; flex-direction:column; gap:8px; }
  body.upload-page .update-round-strip .round-deadline { text-align:left; }
}


/* =========================================================
   PlanAtlas admin layout hotfix v0.1.16c
   Gebruikers: header/footer permanent zichtbaar; alleen tabel scrolt.
   ========================================================= */
@media (min-width: 761px) {
  .admin-page .users-card {
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
  }

  .admin-page .users-card > .bgcard {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
  }

  /* Titel, beheertabs, Nieuwe gebruiker, syncmelding en tabeltools blijven staan. */
  .admin-page .users-card > .bgcard > h1,
  .admin-page .users-card > .bgcard > .nav,
  .admin-page .users-card > .bgcard > p,
  .admin-page .users-card > .bgcard > script,
  .admin-page .users-card > .bgcard > .admin-table-tools,
  .admin-page .users-card > .bgcard > .admin-table-result-count {
    flex: 0 0 auto !important;
  }

  /* Alleen de tabel krijgt de resterende ruimte en een eigen scrollbar. */
  .admin-page .users-card .table-scroll,
  .admin-page .users-card .admin-rtable-wrap {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow: auto !important;
    overscroll-behavior: contain;
  }

  /* Kolomkop blijft zichtbaar binnen de tabelscroll. */
  .admin-page .users-card .admin-rtable thead th,
  .admin-page .users-card .users-table thead th,
  .admin-page .users-card .users-table tr:first-child th {
    position: sticky !important;
    top: 0 !important;
    z-index: 6 !important;
    background: #154273 !important;
  }
}

/* =========================================================
   PlanAtlas admin layout hotfix v0.1.16e
   Organisaties: vaste beheerheader/footer; alleen tabel scrolt.
   ========================================================= */
@media (min-width: 761px) {
  .admin-page .organizations-card {
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
  }

  .admin-page .organizations-card > .bgcard {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
  }

  /* Titel, beheertabs, link Nieuwe organisatie, toelichting en tabeltools blijven staan. */
  .admin-page .organizations-card > .bgcard > h1,
  .admin-page .organizations-card > .bgcard > .nav,
  .admin-page .organizations-card > .bgcard > p,
  .admin-page .organizations-card > .bgcard > script,
  .admin-page .organizations-card > .bgcard > .admin-table-tools,
  .admin-page .organizations-card > .bgcard > .admin-table-result-count {
    flex: 0 0 auto !important;
  }

  /* Alleen de organisatietabel gebruikt de resterende ruimte. */
  .admin-page .organizations-card .table-scroll,
  .admin-page .organizations-card .admin-rtable-wrap {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow: auto !important;
    overscroll-behavior: contain;
  }

  .admin-page .organizations-card .admin-rtable thead th {
    position: sticky !important;
    top: 0 !important;
    z-index: 6 !important;
    background: #154273 !important;
  }

  /* Binnen deze vaste werkruimte zijn h1 en tabs zelf niet sticky nodig.
     Dit voorkomt dat scrollende inhoud in de bovenste padding zichtbaar wordt. */
  .admin-page .organizations-card h1:first-of-type,
  .admin-page .organizations-card .nav {
    position: static !important;
  }
}

/* =========================================================
   PlanAtlas admin layout hotfix v0.1.16f
   Actualisatierondes: lijstscherm gelijk aan Gebruikers/Organisaties.
   ========================================================= */
@media (min-width: 761px) {
  .admin-page .update-rounds-list-card,
  .admin-page .update-rounds-detail-card {
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
  }

  .admin-page .update-rounds-list-card > .bgcard,
  .admin-page .update-rounds-detail-card > .bgcard {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
  }

  /* Beheertitel en hoofdtabs blijven altijd bovenaan staan. */
  .admin-page .update-rounds-list-card > .bgcard > h1,
  .admin-page .update-rounds-list-card > .bgcard > .nav,
  .admin-page .update-rounds-detail-card > .bgcard > h1,
  .admin-page .update-rounds-detail-card > .bgcard > .nav {
    flex: 0 0 auto !important;
    position: static !important;
    top: auto !important;
  }

  /* In het overzicht blijven link, toelichting en tabeltools staan; alleen de tabel scrolt. */
  .admin-page .update-rounds-list-card > .bgcard > p,
  .admin-page .update-rounds-list-card > .bgcard > script,
  .admin-page .update-rounds-list-card > .bgcard > style,
  .admin-page .update-rounds-list-card > .bgcard > .admin-table-tools,
  .admin-page .update-rounds-list-card > .bgcard > .admin-table-result-count {
    flex: 0 0 auto !important;
  }

  .admin-page .update-rounds-list-card .table-scroll,
  .admin-page .update-rounds-list-card .admin-rtable-wrap {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow: auto !important;
    overscroll-behavior: contain;
  }

  .admin-page .update-rounds-list-card .admin-rtable thead th {
    position: sticky !important;
    top: 0 !important;
    z-index: 6 !important;
    background: #154273 !important;
  }

  /* In aanmaak/detail mag alleen het inhoudsdeel onder de beheertabs scrollen. */
  .admin-page .update-rounds-detail-card .admin-rounds-scroll {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: auto !important;
    padding-right: 4px;
    overscroll-behavior: contain;
  }
}


/* =========================================================
   PlanAtlas admin layout hotfix v0.1.16h
   Actualisatierondes > Notificaties: compacte velden en stabiele hover.
   ========================================================= */
.admin-page .admin-update-rounds .round-notification-form {
  grid-template-columns: 260px 300px;
  max-width: 590px;
  align-items: start;
}
.admin-page .admin-update-rounds .round-notification-form label {
  align-self: start;
  align-content: start;
}
.admin-page .admin-update-rounds .round-notification-form .notification-email-field {
  grid-column: 1 / -1;
  width: 100%;
  max-width: 500px;
}
.admin-page .admin-update-rounds .round-notification-form .notification-mode-field {
  width: 260px;
  max-width: 260px;
}
.admin-page .admin-update-rounds .round-notification-form .notification-last-field {
  width: 300px;
  max-width: 300px;
}
.admin-page .admin-update-rounds .round-notification-form .notification-mode-field select,
.admin-page .admin-update-rounds .round-notification-form .notification-last-field input {
  box-sizing: border-box;
  min-height: 40px;
  height: 40px;
}
.admin-page .admin-update-rounds .round-notification-form .notification-email-field input {
  box-sizing: border-box;
}
.admin-page .admin-update-rounds .test-mail-form {
  margin-top: 16px;
}
.admin-page .admin-update-rounds .test-mail-btn,
.admin-page .admin-update-rounds .test-mail-btn:hover,
.admin-page .admin-update-rounds .test-mail-btn:focus {
  border: 1px solid var(--pa-blue) !important;
  border-left: 1px solid var(--pa-blue) !important;
  box-shadow: none !important;
  transform: none !important;
}
.admin-page .admin-update-rounds .test-mail-btn:hover {
  background: var(--pa-hover) !important;
  color: var(--pa-blue) !important;
  border-color: var(--pa-blue) !important;
}
@media (max-width: 760px) {
  .admin-page .admin-update-rounds .round-notification-form {
    grid-template-columns: 1fr;
    max-width: none;
  }
  .admin-page .admin-update-rounds .round-notification-form .notification-email-field,
  .admin-page .admin-update-rounds .round-notification-form .notification-mode-field,
  .admin-page .admin-update-rounds .round-notification-form .notification-last-field {
    grid-column: 1;
    width: 100%;
    max-width: none;
  }
}

/* =========================================================
   PlanAtlas globale desktopdichtheid v0.1.18-v32
   - 100% browserzoom oogt als de eerdere interface rond 80%
   - alleen de PHP/PlanAtlas-interface; de Experience (/atlas-test/) gebruikt
     deze stylesheet niet en blijft daardoor ongewijzigd
   - smallere schermen behouden de bestaande responsive vormgeving
   ========================================================= */
@media (min-width: 901px) {
  @supports (zoom: 0.8) {
    html {
      overflow-x: hidden;
    }

    body {
      /* CSS-zoom schaalt ook pagina-specifieke componenten en inline styles mee.
         Geen extra breedtecompensatie: CSS zoom vergroot de beschikbare
         layoutbreedte zelf al. Een width van 125% zou de rechterzijde afsnijden. */
      zoom: 0.8;
      min-height: 125vh;
    }

    /* Beheer en upload gebruiken een viewport-hoge flexlayout. Compenseer de
       80%-schaal zodat header, werkvlak en footer samen de volledige zichtbare
       browserhoogte blijven benutten. */
    body.admin-page,
    body.upload-page {
      height: 125vh !important;
      min-height: 125vh !important;
    }
  }
}


/* Globaal bestand slepen naar Nieuwe levering v0.1.18-v46 */
.upload-file-drop-hint{display:block;margin-top:2px;font-size:12px;font-weight:600;color:#154273}
.upload-file-drop-status{display:block;min-height:1.2em;font-size:12px;font-weight:600;color:#2e7d32}
.upload-file-drop-status.error{color:#d52b1e}
.upload-file-field.is-global-drop-target{border-color:#01689b;background:#eaf5fb;box-shadow:0 0 0 2px rgba(1,104,155,.12)}
.upload-file-field.has-dropped-file{border-color:#2e7d32;background:#f0f8f0;transition:background .2s ease,border-color .2s ease}
.upload-global-drop-overlay{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;background:rgba(255,255,255,.78);border:3px dashed #154273;pointer-events:none}
.upload-global-drop-overlay[hidden]{display:none!important}
.upload-global-drop-card{display:grid;gap:6px;min-width:min(520px,80vw);padding:26px 32px;border:2px solid #154273;border-radius:6px;background:#fff;box-shadow:0 8px 30px rgba(0,0,0,.18);text-align:center;color:#154273}
.upload-global-drop-card strong{font-size:22px}.upload-global-drop-card span{font-size:14px;color:#333}


/* v0.1.18 patch v62: minimalistische resultaatweergave en drill-down validaties */
body.upload-page.metadata-modal-open { overflow:hidden; }
body.upload-page .delivery-metadata-overlay[hidden] { display:none !important; }
body.upload-page .delivery-metadata-overlay { position:fixed; inset:0; z-index:2200; display:flex; align-items:center; justify-content:center; padding:24px; background:rgba(17,38,58,.48); }
body.upload-page .delivery-metadata-dialog { width:min(980px,100%); max-height:min(82vh,760px); overflow:auto; background:#fff; border:1px solid #8ca8c0; border-radius:6px; box-shadow:0 16px 50px rgba(0,0,0,.24); padding:18px; outline:none; }
body.upload-page .delivery-metadata-head { display:flex; align-items:center; justify-content:space-between; gap:18px; border-bottom:1px solid #d7e1ea; padding-bottom:12px; margin-bottom:8px; }
body.upload-page .delivery-metadata-head h2 { margin:0; }
body.upload-page .delivery-metadata-dialog .delivery-meta { margin:10px 0 0; }
body.upload-page .result-primary-message { margin-top:16px; margin-bottom:10px; }
body.upload-page .result-primary-message + .safe-fallback-banner { margin-top:0; }
body.upload-page .validation-category-buttons { margin-bottom:12px; }
body.upload-page .validation-category-button { width:100%; min-height:74px; text-align:left; cursor:pointer; background:#fff !important; color:#1b1b1b !important; border-width:1px !important; }
body.upload-page .validation-category-button:hover,
body.upload-page .validation-category-button.selected { outline:2px solid rgba(22,78,121,.20); outline-offset:1px; }
body.upload-page .validation-category-button.ok { background:#f3faef !important; border-color:#6ca945 !important; }
body.upload-page .validation-category-button.warning { background:#fff7df !important; border-color:#d49a00 !important; }
body.upload-page .validation-category-button.error { background:#fff0f1 !important; border-color:#c5283d !important; }
body.upload-page .validation-category-button.info { background:#edf6fc !important; border-color:#2d78ad !important; }
body.upload-page .validation-block.info .validation-symbol { color:#2d78ad; }
body.upload-page .validation-category-panel[hidden] { display:none !important; }
body.upload-page .validation-category-panel { border:1px solid #8ca8c0; border-radius:4px; background:#f8fbfd; padding:14px; margin:0 0 20px; }
body.upload-page .validation-category-panel-head { display:flex; align-items:baseline; justify-content:space-between; gap:18px; margin-bottom:10px; }
body.upload-page .validation-category-panel-head h3 { margin:0; }
body.upload-page .validation-category-panel-head p { margin:0; color:#4d4d4d; font-size:12px; text-align:right; }
body.upload-page .validation-rule-list { display:grid; gap:8px; }
body.upload-page .validation-rule-card { border:1px solid #8ca8c0; border-radius:4px; background:#fff; overflow:visible; }
body.upload-page .validation-rule-card.ok { background:#f3faef; border-color:#6ca945; }
body.upload-page .validation-rule-card.warning { background:#fff7df; border-color:#d49a00; }
body.upload-page .validation-rule-card.error { background:#fff0f1; border-color:#c5283d; }
body.upload-page .validation-rule-card.info { background:#edf6fc; border-color:#2d78ad; }
body.upload-page .validation-rule-card.neutral { background:#f3f3f3; border-color:#a7a7a7; }
body.upload-page .validation-rule-card summary { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:11px 12px; cursor:pointer; list-style:none; }
body.upload-page .validation-rule-card summary::-webkit-details-marker { display:none; }
body.upload-page .validation-rule-static { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:11px 12px; }
body.upload-page .validation-rule-title { display:grid; gap:2px; }
body.upload-page .validation-rule-title small { font-size:12px; color:#4d4d4d; }
body.upload-page .validation-rule-toggle { color:var(--pa-blue); font-size:12px; font-weight:700; white-space:nowrap; }
body.upload-page .validation-rule-card[open] .validation-rule-toggle::after { content:' sluiten'; }
body.upload-page .validation-rule-reason { color:#4d4d4d; max-width:46%; text-align:right; }
body.upload-page .validation-rule-findings { background:#fff; border-top:1px solid #d7e1ea; padding:10px 12px 12px; }
/* v126_66_59: consistentie is leesbaar inclusief berekeningen en bronmapping. */
body.upload-page .consistency-findings-table td { white-space:normal !important; overflow:visible !important; text-overflow:clip !important; vertical-align:top; height:auto; overflow-wrap:anywhere; }
body.upload-page .consistency-findings-table th .th-label { white-space:normal; line-height:1.3; }
body.upload-page .consistency-field-line { display:block; margin:0 0 5px; line-height:1.4; }
body.upload-page .consistency-value strong { display:block; font-variant-numeric:tabular-nums; }
body.upload-page .consistency-value small { display:block; margin-top:5px; color:#4d4d4d; line-height:1.4; }
body.upload-page .result-actions { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-top:22px; padding-top:16px; border-top:1px solid #d7e1ea; }
body.upload-page .result-actions-main { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
body.upload-page .result-actions-main .feedback-download-form.compact { display:inline-flex; margin:0; padding:0; border:0; background:transparent; }
body.upload-page .result-actions-main .feedback-action-button { color:#fff !important; border-color:var(--pa-blue) !important; background:var(--pa-blue) !important; }
body.upload-page .result-actions-main .feedback-action-button:hover:not(:disabled):not([aria-disabled="true"]) { background:#fff !important; color:var(--pa-blue) !important; }
body.upload-page .result-actions-danger { margin-left:auto; flex:0 0 auto; }
body.upload-page .result-actions-danger .delivery-action-form { margin:0; }
body.upload-page .result-actions-danger .button.danger-outline { background:#a0001c !important; border-color:#a0001c !important; color:#fff !important; }
body.upload-page .result-actions-danger .button.danger-outline:hover:not(:disabled):not([aria-disabled="true"]) { background:#7f0016 !important; border-color:#7f0016 !important; color:#fff !important; }
body.upload-page .result-actions-danger .protected-delivery-note { margin:0; }
@media(max-width:760px){
  body.upload-page .delivery-metadata-overlay { padding:10px; }
  body.upload-page .delivery-metadata-head { align-items:flex-start; flex-direction:column; }
  body.upload-page .validation-category-panel-head { align-items:flex-start; flex-direction:column; }
  body.upload-page .validation-category-panel-head p { text-align:left; }
  body.upload-page .validation-rule-static { align-items:flex-start; flex-direction:column; }
  body.upload-page .validation-rule-reason { max-width:none; text-align:left; }
  body.upload-page .result-actions { align-items:stretch; flex-direction:column; }
  body.upload-page .result-actions-main { align-items:stretch; flex-direction:column; }
  body.upload-page .result-actions-main .button,
  body.upload-page .result-actions-main .feedback-download-form.compact,
  body.upload-page .result-actions-main .feedback-download-form.compact .button,
  body.upload-page .result-actions-danger,
  body.upload-page .result-actions-danger form,
  body.upload-page .result-actions-danger .button { width:100% !important; }
}

/* v0.1.18 patch v63: sticky leveringkop, compacte metadatahashes en acties */
body.upload-page .delivery-sticky-head {
  position: sticky;
  top: 0;
  z-index: 60;
  background: #fff;
  padding-top: 2px;
}
body.upload-page .delivery-sticky-head .delivery-workflow-nav {
  margin-bottom: 14px;
}
body.upload-page .delivery-metadata-dialog .delivery-meta > span {
  min-width: 0;
  overflow: hidden;
}
body.upload-page .delivery-meta-scroll-value {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  white-space: nowrap;
  text-overflow: clip;
  cursor: text;
  user-select: text;
  -webkit-user-select: text;
  scrollbar-width: none;
}
body.upload-page .delivery-meta-scroll-value::-webkit-scrollbar {
  display: none;
}
body.upload-page .delivery-meta-scroll-value:focus {
  outline: 2px solid #01689b;
  outline-offset: 1px;
}
body.upload-page .result-actions-danger .delivery-delete-form {
  margin-top: 0 !important;
  padding-top: 0 !important;
  border-top: 0 !important;
}
@media(max-width:760px){
  body.upload-page .delivery-sticky-head {
    position: static;
  }
}


/* v0.1.18 patch v64: heldere stapnavigatie en compacte bevindingen */
body.upload-page .delivery-stepper .step-label { font-weight:600; }
body.upload-page .delivery-stepper li.active .step-label { font-weight:800 !important; }
body.upload-page .delivery-stepper li:not(:last-child)::after { content:none !important; display:none !important; }
/* Resizerweergave is vanaf v70 één gedeelde PlanAtlas-component.
   Geen module- of paginavarianten meer: Beheer en Data aanleveren gebruiken
   exact dezelfde markup, JS-engine en CSS-presentatie. */

/* v0.1.18 patch v65: sorteerindicator leesbaar op donkerblauwe tabelkop */
body.upload-page .admin-rtable .admin-sort-arrow {
  color: #fff !important;
}

/* PlanAtlas gedeelde resizebare tabelcomponent.
   Eén visuele taal voor alle resizebare tabellen in Beheer en Data aanleveren:
   - vaste grens: dunne witte lijn;
   - resizebare grens: compacte donkere grip zonder rand met drie stevige witte punten;
   - één ruime, onzichtbare hitbox voor comfortabel slepen. */
.admin-rtable[data-resizable="1"] {
  --pa-table-divider: 1px;
  --pa-table-resizer-hitbox: 16px;
  --pa-table-resizer-grip-width: 10px;
  --pa-table-resizer-grip-height: 24px;
  --pa-table-resizer-grip-bg: #0b3158;
  --pa-table-resizer-grip-bg-hover: #002b5c;
  --pa-table-resizer-dot: #ffffff;
  --pa-table-resizer-dot-size: 3px;
  --pa-table-resizer-dot-offset: 6px;
}

/* Iedere niet-resizebare grens houdt één normale witte scheidingslijn.
   De linkerkant wordt bewust niet getekend, zodat een grens nooit dubbel is. */
.admin-rtable[data-resizable="1"] thead th {
  overflow: visible !important;
  border-left: 0 !important;
  border-right: var(--pa-table-divider) solid #ffffff !important;
}
.admin-rtable[data-resizable="1"] thead th:last-child {
  border-right: 0 !important;
}

/* Op een resizebare grens vervangt de grip de gewone 1px-border volledig. */
.admin-rtable[data-resizable="1"] thead th.resizable {
  border-right: 0 !important;
  z-index: 7;
}
.admin-rtable[data-resizable="1"] thead th.resizable .th-label {
  padding-right: 24px !important;
}
/* Iedere kolomtitel krijgt dezelfde linker inspringing. Daarmee blijft de
   header visueel rustig, ongeacht of links van de kolom een resizegrip staat. */
.admin-rtable[data-resizable="1"] thead th .th-label {
  padding-left: 18px !important;
}

/* De grip hoort visueel bij de kolom rechts van de grens. Geef iedere kolom
   die zo'n linkergrip bevat dezelfde stacking-prioriteit. Dit voorkomt dat
   vooral de laatste grip voor een vaste kolom (bijv. Waarsch. | Score) half
   onder de header links ervan verdwijnt. */
.admin-rtable[data-resizable="1"] thead th.has-left-resizer {
  z-index: 8 !important;
}
.admin-rtable[data-resizable="1"] thead th.resizable .admin-sort-arrow {
  right: 14px !important;
}

/* De hitbox ligt gecentreerd óp de kolomgrens; de zichtbare grip zelf is
   bewust veel smaller en korter dan de volledige headerhoogte. */
.admin-rtable[data-resizable="1"] th .col-resizer {
  position: absolute;
  top: 0;
  width: var(--pa-table-resizer-hitbox);
  height: 100%;
  z-index: 20;
  background: transparent;
  cursor: col-resize;
  user-select: none;
  touch-action: none;
  left: -7px;
}

/* Donkerblauwe 'pil' op de grens. Dit voorkomt dat een resizer op een gewone
   tabelborder lijkt en geeft iedere resizer exact dezelfde afmetingen. */
.admin-rtable[data-resizable="1"] th .col-resizer::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--pa-table-resizer-grip-width);
  height: var(--pa-table-resizer-grip-height);
  transform: translate(-50%, -50%);
  margin-left: var(--pa-table-resizer-pixel-nudge, 0px);
  box-sizing: border-box;
  background: var(--pa-table-resizer-grip-bg);
  border-radius: 6px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .16);
  transition: background-color .12s ease, box-shadow .12s ease, transform .12s ease;
  pointer-events: none;
}

/* Drie compacte witte punten van 3px. De gedeelde resizer-engine snapt de grip horizontaal op het fysieke pixelraster, zodat de punten in alle kolommen visueel even dik blijven. */
.admin-rtable[data-resizable="1"] th .col-resizer::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--pa-table-resizer-dot-size);
  height: var(--pa-table-resizer-dot-size);
  transform: translate(-50%, -50%);
  margin-left: var(--pa-table-resizer-pixel-nudge, 0px);
  border-radius: 50%;
  background: var(--pa-table-resizer-dot);
  box-shadow:
    0 calc(0px - var(--pa-table-resizer-dot-offset)) 0 var(--pa-table-resizer-dot),
    0 var(--pa-table-resizer-dot-offset) 0 var(--pa-table-resizer-dot);
  pointer-events: none;
}

.admin-rtable[data-resizable="1"] th .col-resizer:hover::before,
.admin-rtable[data-resizable="1"] th .col-resizer.is-active::before {
  background: var(--pa-table-resizer-grip-bg-hover);
  box-shadow: 0 0 0 2px rgba(255, 255, 255, .28), 0 2px 4px rgba(0, 0, 0, .18);
  transform: translate(-50%, -50%) scale(1.08);
}


/* v0.1.18 patch v77: uitlegbare kwaliteitsscore */
body.upload-page .quality-score-info-button{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-left:4px;padding:0;border:1px solid #154273;border-radius:50%;background:#fff;color:#154273;font-size:11px;font-weight:800;line-height:1;vertical-align:middle;cursor:pointer}
body.upload-page .quality-score-info-button:hover,body.upload-page .quality-score-info-button:focus-visible{background:#e8f0f7;outline:2px solid transparent}
body.upload-page.quality-score-modal-open{overflow:hidden}
body.upload-page .quality-score-overlay[hidden]{display:none!important}
body.upload-page .quality-score-overlay{position:fixed;inset:0;z-index:2250;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(17,38,58,.48)}
body.upload-page .quality-score-dialog{width:min(820px,100%);max-height:min(82vh,720px);overflow:auto;background:#fff;border:1px solid #8ca8c0;border-radius:6px;box-shadow:0 16px 50px rgba(0,0,0,.24);padding:18px;outline:none}
body.upload-page .quality-score-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid #d7e1ea;padding-bottom:12px;margin-bottom:12px}
body.upload-page .quality-score-dialog-head h2{margin:0}
body.upload-page .quality-score-breakdown{width:100%;border-collapse:collapse;margin:14px 0}
body.upload-page .quality-score-breakdown th,body.upload-page .quality-score-breakdown td{padding:9px 10px;border-bottom:1px solid #d7e1ea;text-align:left}
body.upload-page .quality-score-breakdown th{background:#154273;color:#fff}
body.upload-page .quality-score-global{padding:10px 12px;background:#f3f7fb;border-left:4px solid #154273}
body.upload-page .quality-score-final{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-top:14px;padding-top:12px;border-top:1px solid #d7e1ea}
body.upload-page .quality-score-final span{font-weight:700;color:#17375e}
body.upload-page .quality-score-final strong{font-size:28px;color:#154273}
@media(max-width:600px){body.upload-page .quality-score-overlay{padding:10px}body.upload-page .quality-score-dialog-head{align-items:flex-start;flex-direction:column}body.upload-page .quality-score-breakdown{font-size:12px}}

/* v78 - API-koppelingen: conditionele en rustige bronconfiguratie */
body.upload-page .api-advanced-settings {
  border: 1px solid #d7e1ea;
  border-radius: 4px;
  background: #f8fbfd;
  padding: 0 12px 12px;
}
body.upload-page .api-advanced-settings > summary {
  cursor: pointer;
  color: var(--pa-blue);
  font-weight: 700;
  padding: 11px 0;
}
body.upload-page .api-advanced-settings > p {
  margin: 0 0 12px;
}
body.upload-page .api-advanced-settings label + label {
  margin-top: 12px;
}
body.upload-page .upload-form label > small {
  line-height: 1.4;
}


/* v79 - API-formulier: conditionele groepen moeten echt verborgen blijven.
   De generieke .form-row { display:grid } overschreef anders het HTML hidden-attribuut. */
body.upload-page #api-post-body-fields[hidden],
body.upload-page #api-auth-bearer[hidden],
body.upload-page #api-auth-basic[hidden],
body.upload-page #api-auth-header[hidden] {
  display: none !important;
}

/* v80 - API-key/header: beide velden vanaf dezelfde bovenlijn uitlijnen. */
body.upload-page #api-auth-header {
  align-items: start;
}
body.upload-page #api-auth-header > label {
  align-self: start;
  align-content: start;
}


/* v82 - compacte API-koppelingenflow */
body.upload-page .api-connection-form-panel { max-width: 980px; }
body.upload-page .api-form-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:2px; }
body.upload-page .api-run-inline { display:inline; margin:0; }
body.upload-page .api-run-inline .button { margin:0; white-space:nowrap; }

/* =========================================================
   PlanAtlas v83 - hoofdnav actief + compacte API-acties
   ========================================================= */
.site-nav a:not(.button).active,
.site-nav a:not(.button)[aria-current="page"] {
  background: var(--pa-blue) !important;
  color: #ffffff !important;
  border-bottom-color: var(--pa-blue) !important;
}
.site-nav a:not(.button).active:hover,
.site-nav a:not(.button)[aria-current="page"]:hover {
  background: #0d3559 !important;
  color: #ffffff !important;
  border-bottom-color: #0d3559 !important;
}

body.upload-page table[class*="upload-api-connections-"] .api-action-buttons {
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}
body.upload-page table[class*="upload-api-connections-"] .api-action-buttons > .button,
body.upload-page table[class*="upload-api-connections-"] .api-action-buttons > button,
body.upload-page table[class*="upload-api-connections-"] .api-action-buttons > .api-run-inline {
  flex: 1 1 0;
  min-width: 0;
}
body.upload-page table[class*="upload-api-connections-"] .col-actions .button,
body.upload-page table[class*="upload-api-connections-"] .col-actions button {
  width: 100% !important;
  min-height: 0 !important;
  padding-left: 6px !important;
  padding-right: 6px !important;
  font-size:16px !important;
  margin: 0 !important;
}
body.upload-page table[class*="upload-api-connections-"] .api-run-inline {
  display: inline-flex;
  margin: 0;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v87
   - conversie-/mappingfoutmelding en fouttabelkop blijven samen sticky
   - zoek- en filterbediening tussen melding en tabelkop scrolt bewust weg
   - sticky gedrag eindigt bij het einde van de conversiefoutentabel
   ========================================================= */
body.upload-page .mapping-error-sticky-region {
  --mapping-error-sticky-top: 0px;
  --mapping-error-message-height: 0px;
  position: relative;
  isolation: isolate;
}
body.upload-page .mapping-error-sticky-region > .mapping-error-sticky-message {
  position: sticky;
  top: var(--mapping-error-sticky-top);
  z-index: 34;
  background: #fff4f2;
  box-shadow: 0 1px 0 #dce4ee;
}
body.upload-page .mapping-error-sticky-region > .mapping-error-sticky-message.warning {
  background: #fff8d8;
}
/* De fouttabel deelt de verticale scroller van Data aanleveren. Zo kan de
   tabelkop sticky worden terwijl de zoek-/filterbalk erboven normaal wegscrollt. */
body.upload-page .mapping-error-sticky-region .table-scroll,
body.upload-page .mapping-error-sticky-region .admin-rtable-wrap {
  overflow: visible !important;
  max-height: none !important;
}
body.upload-page .mapping-error-sticky-region .admin-rtable thead th,
body.upload-page .mapping-error-sticky-region .admin-rtable th.resizable {
  position: sticky !important;
  top: calc(var(--mapping-error-sticky-top) + var(--mapping-error-message-height)) !important;
  z-index: 33 !important;
  background: var(--pa-blue) !important;
  color: #fff !important;
  box-shadow: 0 1px 0 #dce4ee;
}
body.upload-page .mapping-error-sticky-region .admin-rtable .admin-sort-arrow {
  color: #fff !important;
}
@media(max-width:760px){
  body.upload-page .mapping-error-sticky-region > .mapping-error-sticky-message,
  body.upload-page .mapping-error-sticky-region .admin-rtable thead th,
  body.upload-page .mapping-error-sticky-region .admin-rtable th.resizable {
    position: static !important;
  }
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v88
   - neem de visuele ruimte onder de vijfstappenbalk op in de sticky kophoogte
   ========================================================= */
body.upload-page .delivery-sticky-head {
  padding-bottom: 14px;
}
body.upload-page .delivery-sticky-head .delivery-workflow-nav {
  margin-bottom: 0;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v89
   - sticky hoogtes worden in ongeschaalde CSS-layoutpixels gemeten
   - dit compenseert de globale desktop-zoom:0.8 van PlanAtlas
   ========================================================= */
body.upload-page .mapping-error-sticky-region > .mapping-error-sticky-message {
  top: calc(var(--mapping-error-sticky-top) + 1px);
}
body.upload-page .mapping-error-sticky-region .admin-rtable thead th,
body.upload-page .mapping-error-sticky-region .admin-rtable th.resizable {
  top: calc(var(--mapping-error-sticky-top) + var(--mapping-error-message-height) + 2px) !important;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v90
   - dek de subpixelruimte boven de sticky mappingfoutmelding af
   - voorkomt dat scrollende tabelinhoud kort boven de melding zichtbaar wordt
   - positie/hoogte uit v89 blijven ongewijzigd
   ========================================================= */
body.upload-page .mapping-error-sticky-region > .mapping-error-sticky-message::before {
  content: "";
  position: absolute;
  left: -1px;
  right: -1px;
  bottom: 100%;
  height: 3px;
  background: #fff;
  pointer-events: none;
}
@media(max-width:760px){
  body.upload-page .mapping-error-sticky-region > .mapping-error-sticky-message::before {
    display: none;
  }
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v91
   - schuif de witte v90-afdeklaag boven de 1px meldingborder
   - voorkomt doorschijnen zonder de rode/gele bovenrand af te dekken
   ========================================================= */
body.upload-page .mapping-error-sticky-region > .mapping-error-sticky-message::before {
  bottom: calc(100% + 2px);
}



/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v92
   - beide Veldmapping-tabellen zonder zoek/filter/wis/CSV/telling
   - conversie-/mappingdetails standaard ingeklapt
   - mappinginstructie sticky samen met de mappingtabelkop
   - compactere acties in het foutblok
   ========================================================= */
body.upload-page .mapping-error-details[hidden] {
  display: none !important;
}
body.upload-page .mapping-error-message-layout {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}
body.upload-page .mapping-error-message-copy {
  min-width: 0;
  flex: 1 1 auto;
}
body.upload-page .mapping-error-message-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
body.upload-page .mapping-error-message-actions form {
  margin: 0;
}
body.upload-page .mapping-error-message-actions .button {
  white-space: nowrap;
}
body.upload-page .mapping-error-details {
  margin-top: 0;
}
body.upload-page .mapping-error-table-wrap {
  margin-top: 0;
}

/* In v92 bevat dit sticky blok niet langer zoek-/filtertools maar de blauwe
   instructie. De instructie staat direct onder de vaste leveringskop; de
   tabelkop blijft daar weer direct onder staan. */
body.upload-page .upload-mapping-smart-table {
  --mapping-sticky-top: 0px;
  --mapping-sticky-tools-height: 94px;
}
body.upload-page .upload-mapping-sticky-controls {
  top: var(--mapping-sticky-top);
  padding: 0 0 3px;
  box-shadow: none;
}
body.upload-page .upload-mapping-sticky-controls .mapping-sticky-instruction {
  margin: 0 !important;
}
body.upload-page .upload-mapping-sticky-controls::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(100% + 2px);
  height: 3px;
  background: #fff;
  pointer-events: none;
}
body.upload-page .upload-mapping-smart-table .admin-rtable thead th,
body.upload-page .upload-mapping-smart-table .admin-rtable th.resizable {
  top: calc(var(--mapping-sticky-top) + var(--mapping-sticky-tools-height) + 2px) !important;
}
@media(max-width:760px){
  body.upload-page .mapping-error-message-layout {
    align-items: stretch;
    flex-direction: column;
  }
  body.upload-page .mapping-error-message-actions {
    justify-content: flex-start;
  }
  body.upload-page .mapping-error-message-actions form,
  body.upload-page .mapping-error-message-actions .button {
    width: 100%;
  }
  body.upload-page .upload-mapping-sticky-controls::before {
    display: none;
  }
}


/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v93
   - sluit subpixel-/scrollkieren rond de sticky mappinginstructie
   - inhoud kan niet meer boven de instructie of tussen instructie en tabelkop doorschijnen
   - sticky posities/hoogtemeting uit v89-v92 blijven verder ongewijzigd
   ========================================================= */
body.upload-page .upload-mapping-sticky-controls::before {
  bottom: calc(100% - 1px);
  height: 4px;
  z-index: 0;
}
body.upload-page .upload-mapping-sticky-controls .mapping-sticky-instruction {
  position: relative;
  z-index: 1;
}
body.upload-page .upload-mapping-smart-table .admin-rtable thead th,
body.upload-page .upload-mapping-smart-table .admin-rtable th.resizable {
  top: calc(var(--mapping-sticky-top) + var(--mapping-sticky-tools-height) - 1px) !important;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v95
   - searchable source-field picker in field mapping
   - compact source-value hints for categorical fields
   - list formatting for grouped mapping validation errors
   ========================================================= */
body.upload-page .mapping-source-picker {
  display: grid;
  gap: 5px;
  min-width: 260px;
}
body.upload-page .mapping-source-search {
  width: 100%;
  min-width: 0;
  padding: 7px 9px;
  border: 1px solid #8ca8c0;
  border-radius: 3px;
  background: #fff;
  color: #1b1b1b;
  font: inherit;
}
body.upload-page .mapping-source-search:focus {
  outline: 2px solid #154273;
  outline-offset: 1px;
}
body.upload-page .mapping-source-select select {
  width: 100%;
  min-width: 0;
}
body.upload-page .mapping-source-values,
body.upload-page .mapping-source-no-match {
  display: block;
  line-height: 1.35;
}
body.upload-page .mapping-source-values {
  color: #154273;
}
body.upload-page .mapping-source-no-match {
  color: #b01c14;
}
body.upload-page .upload-message-list {
  margin: 8px 0 0 22px;
  padding: 0;
}
body.upload-page .upload-message-list li + li {
  margin-top: 5px;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v96
   - mappingfout hoort visueel bij stap 3 en blijft sticky
   - leveringkop/stappenbalk scrollt in Veldmapping weg
   - compacte mappinginstructie als bullets
   - toegankelijke bronveldkeuze met zoeken in de geopende lijst
   - klikbare domein-/waardedetails met aantallen
   ========================================================= */
body.upload-page .workflow-panel.mapping-step-view .delivery-sticky-head {
  position: static !important;
  top: auto !important;
  z-index: auto !important;
}
body.upload-page .mapping-step-submit-error {
  position: sticky;
  top: 0;
  z-index: 58;
  background: #fff4f2;
  box-shadow: 0 1px 0 #dce4ee;
}
body.upload-page .mapping-step-submit-error::before {
  content: "";
  position: absolute;
  left: -1px;
  right: -1px;
  bottom: calc(100% - 1px);
  height: 4px;
  background: #fff;
  pointer-events: none;
}
body.upload-page .mapping-instruction-list {
  margin: 4px 0 0 20px;
  padding: 0;
}
body.upload-page .mapping-instruction-list li {
  margin: 0;
  line-height: 1.35;
}
body.upload-page .mapping-instruction-list li + li {
  margin-top: 2px;
}
body.upload-page .upload-message-list li + li {
  margin-top: 2px;
}

body.upload-page .mapping-source-picker {
  position: relative;
  display: block;
  min-width: 260px;
}
body.upload-page .mapping-source-native {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
  pointer-events: none !important;
}
body.upload-page .mapping-source-trigger {
  width: 100%;
  min-height: 36px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 7px 9px;
  border: 1px solid #6f7f8f;
  border-radius: 3px;
  background: #fff;
  color: #1b1b1b;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
body.upload-page .mapping-source-trigger:hover {
  border-color: #154273;
}
body.upload-page .mapping-source-trigger:focus-visible,
body.upload-page .mapping-source-menu-search:focus-visible,
body.upload-page .mapping-source-option:focus-visible,
body.upload-page .mapping-source-domain-button:focus-visible {
  outline: 2px solid #154273;
  outline-offset: 2px;
}
body.upload-page .mapping-source-trigger-arrow {
  flex: 0 0 auto;
  font-size: .9em;
}
body.upload-page .mapping-source-menu[hidden] {
  display: none !important;
}
body.upload-page .mapping-source-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  z-index: 180;
  width: min(480px, calc(100vw - 56px));
  max-height: min(430px, 62vh);
  overflow: auto;
  padding: 8px;
  border: 1px solid #6f7f8f;
  border-radius: 3px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(0,0,0,.18);
}
body.upload-page .mapping-source-menu-search {
  position: sticky;
  top: -8px;
  z-index: 3;
  width: 100%;
  min-width: 0;
  margin: 0 0 6px;
  padding: 8px 9px;
  border: 1px solid #8ca8c0;
  border-radius: 3px;
  background: #fff;
  color: #1b1b1b;
  font: inherit;
  box-shadow: 0 4px 5px rgba(255,255,255,.96);
}
body.upload-page .mapping-source-option-list {
  display: grid;
  gap: 2px;
}
body.upload-page .mapping-source-option-row {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 4px;
  border-bottom: 1px solid #edf1f5;
}
body.upload-page .mapping-source-option-row[hidden] {
  display: none !important;
}
body.upload-page .mapping-source-option {
  min-width: 0;
  width: 100%;
  padding: 7px 8px;
  border: 0;
  background: transparent;
  color: #1b1b1b;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
body.upload-page .mapping-source-option:hover:not(:disabled),
body.upload-page .mapping-source-option[aria-pressed="true"] {
  background: #e5f1f9;
}
body.upload-page .mapping-source-option small {
  color: #5a6874;
}
body.upload-page .mapping-source-option:disabled {
  opacity: .45;
  cursor: not-allowed;
}
body.upload-page .mapping-source-domain-button {
  width: 30px;
  height: 30px;
  display: inline-grid;
  place-items: center;
  padding: 0;
  border: 1px solid #01689b;
  border-radius: 50%;
  background: #fff;
  color: #01689b;
  font: inherit;
  cursor: pointer;
}
body.upload-page .mapping-source-domain-button:hover,
body.upload-page .mapping-source-domain-button[aria-expanded="true"] {
  background: #e5f1f9;
}
body.upload-page .mapping-source-domain-panel {
  grid-column: 1 / -1;
  margin: 0 4px 7px;
  padding: 8px 10px;
  border-left: 3px solid #01689b;
  background: #f2f8fc;
}
body.upload-page .mapping-source-domain-panel[hidden] {
  display: none !important;
}
body.upload-page .mapping-source-domain-panel > strong {
  display: block;
  margin-bottom: 5px;
  color: #154273;
}
body.upload-page .mapping-source-domain-panel ul {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin: 0;
  padding: 0;
  list-style: none;
}
body.upload-page .mapping-source-domain-panel li {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 6px;
  border: 1px solid #c5d9e8;
  border-radius: 3px;
  background: #fff;
}
body.upload-page .mapping-source-domain-panel li small {
  color: #56636f;
}
body.upload-page .mapping-source-no-match {
  margin: 6px 2px 1px;
  color: #b01c14;
  line-height: 1.35;
}
body.upload-page .mapping-source-no-match[hidden] {
  display: none !important;
}
body.upload-page .mapping-source-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
@media(max-width:760px){
  body.upload-page .mapping-step-submit-error { position: static !important; }
  body.upload-page .mapping-step-submit-error::before { display:none; }
  body.upload-page .mapping-source-menu { position: fixed; left: 14px; right: 14px; top: 18vh; width: auto; max-height: 64vh; }
}
body.upload-page .upload-mapping-smart-table .admin-rtable td.mapping-source-cell {
  overflow: visible !important;
  position: relative;
}
body.upload-page .upload-mapping-smart-table .admin-rtable td.mapping-source-cell-open {
  z-index: 175;
}
body.upload-page .mapping-source-picker.is-open {
  z-index: 180;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v97
   - geopende workflowstap altijd donkerblauw
   - mappingfout blijft intact/sticky zonder afgedekte bovenrand
   - mappingpicker onder sticky lagen en strakker uitgelijnd
   - geselecteerd bronveld blijft zichtbaar en inverse gemarkeerd
   ========================================================= */
body.upload-page .delivery-stepper li.active .step-circle,
body.upload-page .delivery-stepper li.active.complete .step-circle,
body.upload-page .delivery-stepper li.active.complete-result .step-circle,
body.upload-page .delivery-stepper li.active.needs-action .step-circle,
body.upload-page .delivery-stepper li.active.has-error .step-circle,
body.upload-page .delivery-stepper li.active.skipped .step-circle {
  background: var(--pa-blue) !important;
  border-color: var(--pa-blue) !important;
  color: #fff !important;
  box-shadow: 0 0 0 3px rgba(21,66,115,.12) !important;
}

/* De witte afdichting hoort alleen boven het sticky foutblok te liggen en
   mag de rode bovenrand zelf niet afdekken. */
body.upload-page .mapping-step-submit-error::before {
  content: none !important;
  display: none !important;
}
body.upload-page .mapping-step-submit-error {
  box-shadow: 0 -4px 0 #fff, 0 1px 0 #dce4ee !important;
}

/* De bronveldkeuze hoort bij de tabelinhoud en mag nooit over de sticky
   foutmelding, mappinginstructie of tabelkop heen tekenen. */
body.upload-page .upload-mapping-smart-table .admin-rtable td.mapping-source-cell-open {
  z-index: 22 !important;
}
body.upload-page .mapping-source-picker.is-open {
  z-index: 23 !important;
}
body.upload-page .mapping-source-menu {
  z-index: 24 !important;
}
body.upload-page .mapping-source-menu-search {
  z-index: 25 !important;
}

/* Een bronveldoptie is een regel: veldnaam links, datatype rechts. De
   informatieknop ligt binnen dezelfde buitenbreedte zodat alle opties
   exact op elkaar aansluiten. */
body.upload-page .mapping-source-option-row {
  position: relative;
  display: block;
}
body.upload-page .mapping-source-option {
  display: grid !important;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center !important;
  justify-content: stretch !important;
  gap: 10px;
  width: 100%;
  min-height: 38px !important;
  padding: 7px 10px !important;
  text-align: left !important;
}
body.upload-page .mapping-source-option-row.has-domain .mapping-source-option {
  padding-right: 46px !important;
}
body.upload-page .mapping-source-option-name {
  min-width: 0;
  text-align: left;
  overflow-wrap: anywhere;
}
body.upload-page .mapping-source-option-type {
  justify-self: end;
  text-align: right;
  white-space: nowrap;
  color: #5a6874 !important;
}
body.upload-page .mapping-source-domain-button {
  position: absolute;
  top: 5px;
  right: 6px;
  width: 28px !important;
  min-width: 28px !important;
  height: 28px !important;
  min-height: 28px !important;
  padding: 0 !important;
  border: 1px solid #01689b !important;
  border-radius: 50% !important;
  background: #fff !important;
  color: #01689b !important;
  line-height: 1 !important;
}
body.upload-page .mapping-source-domain-button:hover,
body.upload-page .mapping-source-domain-button[aria-expanded="true"] {
  background: #e5f1f9 !important;
  color: #154273 !important;
}
body.upload-page .mapping-source-domain-panel {
  margin: 4px 4px 7px;
}

/* De actuele keuze blijft herkenbaar, ook wanneer de zoekterm een andere
   waarde bevat. */
body.upload-page .mapping-source-option[aria-pressed="true"] {
  background: var(--pa-blue) !important;
  border-color: var(--pa-blue) !important;
  color: #fff !important;
}
body.upload-page .mapping-source-option[aria-pressed="true"] .mapping-source-option-type {
  color: #fff !important;
}
body.upload-page .mapping-source-option-row.is-selected .mapping-source-domain-button {
  border-color: #fff !important;
  background: #fff !important;
  color: var(--pa-blue) !important;
}
body.upload-page .mapping-source-option-row.is-selected .mapping-source-domain-button:hover,
body.upload-page .mapping-source-option-row.is-selected .mapping-source-domain-button[aria-expanded="true"] {
  background: #e5f1f9 !important;
  color: #154273 !important;
}
body.upload-page .mapping-source-special-option {
  margin-bottom: 4px;
  padding-bottom: 4px;
  border-bottom: 1px solid #8ca8c0;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v98
   - actuele bronveldkeuze vast bovenaan in de custom combobox
   - niet-mappen + actuele keuze blijven sticky tijdens scrollen
   - domein-infoknop als aparte, uitgelijnde knop naast het item
   ========================================================= */
body.upload-page .mapping-source-menu-sticky {
  position: sticky;
  top: 0;
  z-index: 25;
  margin: 0 0 5px;
  padding: 0 0 5px;
  background: #fff;
  border-bottom: 1px solid #c8d5e1;
  box-shadow: 0 4px 6px rgba(255,255,255,.98);
}
body.upload-page .mapping-source-menu-sticky .mapping-source-menu-search {
  position: static !important;
  top: auto !important;
  z-index: auto !important;
  margin: 0 0 5px !important;
  box-shadow: none !important;
}
body.upload-page .mapping-source-pinned-list[hidden] {
  display: none !important;
}
body.upload-page .mapping-source-pinned-list {
  display: grid;
  gap: 2px;
  background: #fff;
}
body.upload-page .mapping-source-option-list {
  position: relative;
  z-index: 1;
}

/* Alle regels reserveren exact dezelfde rechterkolom voor de infoknop.
   Als een veld geen domeininformatie heeft blijft die kolom bewust leeg. */
body.upload-page .mapping-source-option-row,
body.upload-page .mapping-source-option-row.has-domain {
  position: relative;
  display: grid !important;
  grid-template-columns: minmax(0,1fr) 32px;
  align-items: start;
  gap: 4px;
  margin: 0;
  padding: 0;
  background: #fff;
}
body.upload-page .mapping-source-option {
  grid-column: 1;
  min-width: 0;
  width: 100%;
}
body.upload-page .mapping-source-option-row.has-domain .mapping-source-option {
  padding-right: 10px !important;
}
body.upload-page .mapping-source-domain-button {
  position: static !important;
  grid-column: 2;
  align-self: center;
  justify-self: stretch;
  top: auto !important;
  right: auto !important;
  width: 32px !important;
  min-width: 32px !important;
  height: 32px !important;
  min-height: 32px !important;
  margin: 3px 0 0 !important;
}
body.upload-page .mapping-source-domain-panel {
  grid-column: 1 / -1;
  width: auto;
}
body.upload-page .mapping-source-special-option {
  margin: 0 !important;
  padding: 0 0 3px !important;
  border-bottom: 1px solid #8ca8c0 !important;
}
body.upload-page .mapping-source-pinned-list .mapping-source-option-row.is-selected:not(.mapping-source-special-option) {
  padding-top: 2px;
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v99
   - compacte sticky stappenbalk in alle leveringsstappen
   - generiek inklapbare meldingen; sticky meldingen klappen automatisch in
   - custom bronveldkeuze zonder doorschijnende bovenrand
   - rustiger informatieknopje en duidelijke uitleg bij bezette bronvelden
   ========================================================= */
body.upload-page .workflow-panel {
  --delivery-stepper-sticky-height: 0px;
}
body.upload-page .delivery-stepper-sticky {
  position: sticky;
  top: 0;
  z-index: 70;
  margin: 0 0 14px;
  padding: 3px 0 4px;
  background: #fff;
  box-shadow: 0 1px 0 #dce4ee;
}
body.upload-page .delivery-stepper-sticky .delivery-workflow-nav {
  margin: 0 !important;
}
body.upload-page .delivery-stepper-sticky .delivery-stepper li > a,
body.upload-page .delivery-stepper-sticky .delivery-stepper li > span {
  min-height: 44px;
  padding-top: 4px;
  padding-bottom: 4px;
}
body.upload-page .mapping-step-submit-error {
  top: var(--delivery-stepper-sticky-height, 0px) !important;
  z-index: 68 !important;
}

/* De sticky kop van de custom combobox dekt ook de interne padding van het
   scrollvenster af. Daardoor kan tekst nooit meer boven het zoekveld doorheen
   schuiven. */
body.upload-page .mapping-source-menu-sticky {
  top: -8px !important;
  margin: -8px -8px 5px !important;
  padding: 8px 8px 5px !important;
  background: #fff !important;
  box-shadow: 0 5px 7px rgba(255,255,255,.99) !important;
}

/* Het informatieknopje heeft één rustige buitenring. De letter i is niet
   nogmaals omcirkeld. */
body.upload-page .mapping-source-info-letter {
  display: block;
  font-size: 16px;
  font-weight: 800;
  font-style: normal;
  line-height: 1;
  transform: translateY(-.5px);
}

body.upload-page .mapping-source-option-row.is-unavailable {
  cursor: not-allowed;
}
body.upload-page .mapping-source-option-row.is-unavailable .mapping-source-option {
  cursor: not-allowed;
}

/* Gedeeld meldingenpatroon. Dit is bewust niet alleen voor Data aanleveren
   bruikbaar: upload-message, flash-message en notice krijgen dezelfde compacte,
   toetsenbordbedienbare inklapknop zodra zij een titel en detailinhoud hebben. */
.pa-collapsible-message {
  position: relative;
}
.pa-message-collapse-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
}
.pa-message-collapse-title {
  min-width: 0;
  flex: 1 1 auto;
}
.pa-message-collapse-toggle {
  flex: 0 0 28px;
  width: 28px;
  height: 28px;
  min-width: 28px;
  min-height: 28px;
  display: inline-grid;
  place-items: center;
  margin: -4px -4px 0 6px;
  padding: 0;
  border: 1px solid #154273;
  border-radius: 3px;
  background: #fff;
  color: #154273;
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
}
.pa-message-collapse-toggle:hover {
  background: #e5f1f9;
}
.pa-message-collapse-toggle:focus-visible {
  outline: 2px solid #154273;
  outline-offset: 2px;
}
.pa-message-collapse-body {
  display: block;
  margin-top: 3px;
}
.pa-message-original-title {
  display: none !important;
}
.pa-collapsible-message.is-collapsed .pa-message-collapse-body {
  display: none !important;
}
.pa-collapsible-message.is-collapsed {
  padding-top: 9px !important;
  padding-bottom: 9px !important;
}
.pa-collapsible-message.is-collapsed .pa-message-collapse-header {
  align-items: center;
}
.pa-collapsible-message.is-collapsed .pa-message-collapse-toggle {
  margin-top: -2px;
}

/* Wanneer de mappinginstructie inklapt, moet de sticky host dezelfde compacte
   hoogte aannemen; de tabelkop sluit daar via de bestaande hoogtemeting op aan. */
body.upload-page .upload-mapping-sticky-controls .pa-collapsible-message {
  margin-bottom: 0;
}

@media(max-width:760px){
  body.upload-page .delivery-stepper-sticky {
    position: static;
  }
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v100
   - handmatig uitklappen van een sticky melding verplaatst de volledige inhoud
   - compact, exact gecentreerd meldingenpijltje met vaste afmetingen
   - centrale tabelcomponent krijgt generiek sticky kolomkoppen
   - tabeltools blijven bewust niet sticky
   ========================================================= */
.pa-message-collapse-header {
  align-items: center !important;
}
.pa-message-collapse-toggle,
.pa-collapsible-message.is-collapsed .pa-message-collapse-toggle {
  flex: 0 0 24px !important;
  width: 24px !important;
  height: 24px !important;
  min-width: 24px !important;
  min-height: 24px !important;
  max-width: 24px !important;
  max-height: 24px !important;
  box-sizing: border-box !important;
  margin: -1px -1px -1px 6px !important;
  padding: 0 !important;
  line-height: 0 !important;
  font-size: 0 !important;
  overflow: hidden;
}
.pa-message-collapse-icon {
  display: block;
  width: 7px;
  height: 7px;
  box-sizing: border-box;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(225deg);
  transform-origin: 50% 50%;
}
.pa-collapsible-message.is-collapsed .pa-message-collapse-icon {
  transform: rotate(45deg);
}

/* Alle admin_resizable_table_start()-tabellen gebruiken vanaf v100 dezelfde
   sticky-headercomponent. Het omringende paneel blijft de verticale scroller;
   zoek-, filter-, wis- en exportbediening staat buiten deze host en scrolt dus weg. */
.pa-sticky-table-host {
  --pa-table-sticky-top: 0px;
  position: relative;
}
body.upload-page .pa-sticky-table-host,
.admin-page .pa-sticky-table-host {
  overflow: visible !important;
  max-height: none !important;
}
/* v119: een generieke tabelkop blijft eerst gewoon in de documentflow staan.
   Pas nadat de tabel daadwerkelijk onder een voorafgaande sticky laag schuift,
   activeert PlanAtlas de sticky toestand. Zo kan een kop nooit bij paginalaad
   omlaag worden geduwd over/onder het eerste inhoudelijke record. */
.pa-sticky-table > thead { display: table-header-group; }
.pa-sticky-table > tbody { display: table-row-group; }
.pa-sticky-table thead th,
.pa-sticky-table th.resizable {
  position: relative !important;
  top: auto !important;
  z-index: 18 !important;
}
.pa-sticky-table-host.pa-sticky-active .pa-sticky-table thead th,
.pa-sticky-table-host.pa-sticky-active .pa-sticky-table th.resizable {
  position: sticky !important;
  top: var(--pa-table-sticky-top, 0px) !important;
}
body.upload-page .pa-sticky-table thead th,
body.upload-page .pa-sticky-table th.resizable {
  background: var(--pa-blue) !important;
  color: #fff !important;
  box-shadow: 0 1px 0 #dce4ee;
}
body.upload-page .pa-sticky-table .admin-sort-arrow,
.admin-page .pa-sticky-table .admin-sort-arrow {
  color: #fff !important;
}

/* Mapping heeft bewust meerdere gestapelde sticky lagen en houdt daarom zijn
   bestaande, dynamisch gemeten posities boven de generieke tabelregel. */
body.upload-page .upload-mapping-smart-table .pa-sticky-table thead th,
body.upload-page .upload-mapping-smart-table .pa-sticky-table th.resizable {
  position: sticky !important;
  top: calc(var(--mapping-sticky-top) + var(--mapping-sticky-tools-height) - 1px) !important;
  z-index: 33 !important;
}
body.upload-page .mapping-error-sticky-region .pa-sticky-table thead th,
body.upload-page .mapping-error-sticky-region .pa-sticky-table th.resizable {
  position: sticky !important;
  top: calc(var(--mapping-error-sticky-top) + var(--mapping-error-message-height) + 2px) !important;
  z-index: 33 !important;
}

@media(max-width:760px){
  body.upload-page .pa-sticky-table-host {
    overflow-x: auto !important;
  }
  body.upload-page .pa-sticky-table thead th,
  body.upload-page .pa-sticky-table th.resizable,
  .admin-page .pa-sticky-table thead th,
  .admin-page .pa-sticky-table th.resizable {
    position: static !important;
  }
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v101
   - zichtbare, kleinere chevron met vaste knopmaat
   - generieke meldingsdetails als compacte bullets zonder witregel
   - sticky stappenbalk behoudt de bovenzijde van het leveringskader
   - rode sticky meldingen behouden hun bovenrand
   ========================================================= */
.pa-message-collapse-body {
  margin-top: 0 !important;
}
.pa-message-detail-list {
  margin: 3px 0 0 18px;
  padding: 0;
}
.pa-message-detail-list li {
  margin: 0;
  line-height: 1.35;
}
.pa-message-detail-list li + li {
  margin-top: 2px;
}
.pa-message-collapse-icon {
  width: 6px !important;
  height: 6px !important;
  border-right-width: 1.5px !important;
  border-bottom-width: 1.5px !important;
}

/* De stappenbalk ligt binnen een panel met 24px binnenruimte. Zodra de balk
   sticky is, tekent hij de bovenrand van dat panel door tot aan de zijranden. */
body.upload-page .delivery-stepper-sticky {
  --delivery-panel-padding: 24px;
}
body.upload-page .delivery-stepper-sticky::before {
  content: "";
  position: absolute;
  left: calc(-1 * var(--delivery-panel-padding));
  right: calc(-1 * var(--delivery-panel-padding));
  top: 0;
  height: 1px;
  background: var(--pa-border);
  opacity: 0;
  pointer-events: none;
  z-index: 2;
}
body.upload-page .delivery-stepper-sticky.is-stuck::before {
  opacity: 1;
}

/* Sticky foutmeldingen houden ook bij subpixel-afronding hun eigen rode
   bovenrand zichtbaar. */
body.upload-page .mapping-step-submit-error,
body.upload-page .mapping-error-sticky-message.error {
  box-shadow: inset 0 1px 0 #d52b1e, 0 -3px 0 #fff, 0 1px 0 #dce4ee !important;
}

@media(max-width:760px){
  body.upload-page .delivery-stepper-sticky::before { display:none; }
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v102
   - zichtbaar klein meldingsdriehoekje met vaste knopmaat
   - rode sticky bovenrand blijft 1px, dus even dik als de overige randen
   - stabiele volledige tabelreflow bij handmatig toggelen, ook diep in de tabel
   ========================================================= */

/* Een klein expliciet driehoekglyph is onder de globale desktopzoom en de
   bestaande buttonregels betrouwbaarder dan de border-chevron uit v100/v101. */
.pa-message-collapse-toggle::before {
  content: none !important;
  display: none !important;
}
.pa-message-collapse-icon,
.pa-collapsible-message.is-collapsed .pa-message-collapse-icon {
  display: block !important;
  width: 12px !important;
  height: 12px !important;
  border: 0 !important;
  color: #154273 !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  line-height: 12px !important;
  text-align: center !important;
  transform: translateY(-0.5px) !important;
}

/* Tijdens een handmatige hoogtewijziging van een sticky melding mag Chromium
   geen zichtbare tabelrij als scrollanker gebruiken. Dit is tijdelijk en wordt
   door de runtime na de reflow weer verwijderd. */
.pa-scroll-anchor-lock,
.pa-scroll-anchor-lock * {
  overflow-anchor: none !important;
}

/* v126_14: Alle leveringsstappen gebruiken de resterende ruimte onder de tabs. */
body.upload-page .upload-module-fixed-head .lead { display: none; }
body.upload-page .upload-module-fixed-head .upload-tabs { margin-bottom: 4px !important; }
body.upload-page.delivery-workspace-page .upload-content-scroll {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding-bottom: 8px;
  scrollbar-gutter: auto;
}
body.upload-page .workflow-panel.delivery-workspace {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  margin: 0;
  padding: 8px 12px !important;
  overflow: hidden;
}
body.upload-page .delivery-workspace > .delivery-stepper-sticky {
  position: relative;
  top: auto;
  flex: 0 0 auto;
  margin: 0 0 6px;
  padding: 0 0 3px;
}
body.upload-page .delivery-workspace > .delivery-stepper-sticky::before { display: none; }
body.upload-page .delivery-workspace > .delivery-head {
  flex: 0 0 auto;
  align-items: center;
  margin: 0 0 6px;
  gap: 8px;
}
body.upload-page .delivery-workspace .delivery-head h2 { display: none; }
body.upload-page .delivery-workspace .delivery-head .eyebrow { margin: 0; }
body.upload-page .delivery-workspace .delivery-head-actions { align-items: center; gap: 6px; flex-wrap: wrap; }
body.upload-page .delivery-workspace .delivery-head-actions form { margin: 0; }
body.upload-page .delivery-workspace .delivery-head-actions .button { padding: 6px 9px; }
body.upload-page .delivery-workspace-readonly,
body.upload-page .delivery-workspace-problem { font-size: 12px; }
body.upload-page .delivery-workspace-problem.has-error { color: #b01c14; }
body.upload-page .delivery-workspace-readonly { padding: 3px 7px; background: var(--pa-hover); color: #154273; border-radius: 4px; white-space: nowrap; }
body.upload-page .delivery-notices-toggle.has-error { border-color: #d52b1e; color: #b01c14; background: #fff4f2; }
body.upload-page .delivery-workspace-scroll {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
  overflow-anchor: none;
  scrollbar-gutter: stable;
}
body.upload-page .delivery-workspace .mapping-summary { max-height: none; overflow: visible; margin: 0; }
body.upload-page .delivery-workspace .mapping-summary thead th {
  position: sticky !important;
  top: 0 !important;
  z-index: 33;
  background: var(--pa-blue);
  color: #fff;
}
body.upload-page .delivery-workspace .upload-mapping-smart-table { margin-top: 0; }
body.upload-page .delivery-workspace .upload-mapping-sticky-controls:empty { display: none; }
body.upload-page .delivery-workspace .upload-mapping-smart-table .pa-sticky-table thead th,
body.upload-page .delivery-workspace .mapping-error-sticky-region .pa-sticky-table thead th {
  position: sticky !important;
  top: 0 !important;
}
body.upload-page .delivery-workspace .mapping-error-table-wrap { margin-bottom: 8px; }
body.upload-page .delivery-workspace-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; flex: 0 0 auto; padding-top: 6px; }
body.upload-page .delivery-workspace-actions > form { margin: 0; }
body.upload-page .delivery-workspace-actions .result-actions,
body.upload-page .delivery-workspace-actions .workflow-actions { margin: 0; flex: 1 1 auto; }
body.upload-page .delivery-notices-dialog {
  width: min(900px, calc(100vw - 40px));
  max-height: 80vh;
  padding: 18px;
  border: 1px solid var(--pa-blue);
  border-radius: 6px;
  background: #fff;
  color: var(--pa-text);
}
body.upload-page .delivery-notices-dialog[hidden] { display: none !important; }
body.upload-page .delivery-notices-dialog::backdrop { background: rgba(0, 24, 48, .35); }
body.upload-page .delivery-notices-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
body.upload-page .delivery-notices-head h2 { margin: 0; font-size: 18px; }
body.upload-page .delivery-notices-body > .upload-message,
body.upload-page .delivery-notices-body > .safe-fallback-banner,
body.upload-page .delivery-notices-body > .update-round-strip {
  position: relative !important;
  top: auto !important;
  margin-bottom: 10px;
  box-shadow: none !important;
}
body.upload-page .delivery-notices-body > .upload-message::before { display: none !important; }
body.upload-page .delivery-notices-body > .workflow-skip-note { margin-bottom: 10px; }
body.upload-page .delivery-notices-body > :last-child { margin-bottom: 0; }
@media (max-width:760px) {
  body.upload-page .delivery-workspace > .delivery-head { align-items: flex-start; flex-direction: column; }
  body.upload-page .delivery-workspace .delivery-head-actions .button { width: auto; }
  body.upload-page .delivery-notices-dialog { width: calc(100vw - 24px); padding: 12px; }
}

/* Binnen Data aanleveren beheren de PlanAtlas-stickycomponenten zelf bewust
   de verticale geometrie. Browser-scrollanchoring zou bij ver doorgescrolde
   tabellen juist een zichtbare rij op zijn plaats proberen te houden en zo
   alleen de sticky tabelkop laten verschuiven. */
body.upload-page .upload-content-scroll {
  overflow-anchor: none !important;
}

/* v101 gebruikte naast de echte 1px-border nog een rode inset-schaduw, waardoor
   de bovenzijde visueel 2px werd. De gewone border blijft leidend; alleen de
   witte afdichting boven het sticky blok en de lichte onderscheiding onderaan
   blijven behouden. */
body.upload-page .mapping-step-submit-error,
body.upload-page .mapping-error-sticky-message.error {
  border-top-width: 1px !important;
  box-shadow: 0 -4px 0 #fff, 0 1px 0 #dce4ee !important;
}


/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v124_2
   - Rollen en rechten: vaste beheerheader, nette eigen scrollruimte
   - rollenoverzicht gebruikt dezelfde sticky/resizable/sortable tabel-UX
   ========================================================= */
@media (min-width: 761px) {
  .admin-page .roles-card {
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
  }
  .admin-page .roles-card > .bgcard {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
  }
  .admin-page .roles-card > .bgcard > h1,
  .admin-page .roles-card > .bgcard > .nav {
    flex: 0 0 auto !important;
    position: static !important;
    top: auto !important;
  }
  .admin-page .roles-main-scroll {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: auto !important;
    overscroll-behavior: contain;
    padding-right: 4px;
    position: relative;
  }
  .admin-page .roles-main-scroll .table-scroll,
  .admin-page .roles-main-scroll .admin-rtable-wrap {
    height: auto !important;
    max-height: none !important;
    min-height: 0 !important;
    overflow: visible !important;
  }
  .admin-page .roles-main-scroll .admin-rtable thead th,
  .admin-page .roles-main-scroll .admin-rtable th.resizable {
    position: sticky !important;
    top: 0 !important;
    z-index: 8 !important;
    background: #154273 !important;
    color: #fff !important;
    box-shadow: 0 1px 0 #0d3157 !important;
  }
}

/* =========================================================
   PlanAtlas uploadmodule v0.1.18 patch v125_3
   - generieke PlanAtlas-modal vervangt native alert()/confirm()
   ========================================================= */
.pa-modal-backdrop[hidden] {
  display: none !important;
}

.pa-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(0, 25, 55, .34);
}

.pa-modal {
  width: min(560px, calc(100vw - 40px));
  max-height: calc(100vh - 48px);
  overflow: auto;
  background: #fff;
  color: #10284b;
  border: 2px solid #154273;
  box-shadow: 10px 10px 0 rgba(0, 0, 0, .18);
}

.pa-modal-header {
  padding: 14px 16px;
  background: #eaf2f8;
  border-bottom: 1px solid #b9cfe0;
  color: #154273;
  font-size: 16px;
  line-height: 1.35;
}

.pa-modal-body {
  padding: 18px 16px 10px;
}

.pa-modal-body p {
  margin: 0;
  white-space: pre-line;
  color: #10284b;
  line-height: 1.5;
}

.pa-modal-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  padding: 12px 16px 16px;
}

.pa-modal-button {
  width: auto !important;
  min-width: 110px;
  margin: 0 !important;
  padding: 7px 13px !important;
  text-align: center !important;
  font: inherit;
  font-weight: 700;
  line-height: 1.2;
  cursor: pointer;
  transform: none !important;
}

.pa-modal-cancel {
  background: #fff !important;
  color: #154273 !important;
  border: 2px solid #154273 !important;
}

.pa-modal-cancel:hover,
.pa-modal-cancel:focus-visible {
  background: #eef4f8 !important;
  color: #154273 !important;
  box-shadow: none !important;
  transform: none !important;
}

.pa-modal-confirm {
  background: #154273 !important;
  color: #fff !important;
  border: 2px solid #154273 !important;
}

.pa-modal-confirm:hover,
.pa-modal-confirm:focus-visible {
  background: #fff !important;
  color: #154273 !important;
  box-shadow: none !important;
  transform: none !important;
}

.pa-modal-backdrop.is-danger .pa-modal-confirm {
  background: #c62828 !important;
  color: #fff !important;
  border-color: #c62828 !important;
}

.pa-modal-backdrop.is-danger .pa-modal-confirm:hover,
.pa-modal-backdrop.is-danger .pa-modal-confirm:focus-visible {
  background: #fff !important;
  color: #c62828 !important;
}

.pa-modal-button:focus-visible {
  outline: 3px solid #000;
  outline-offset: 2px;
}

@media (max-width: 560px) {
  .pa-modal-actions {
    flex-direction: column-reverse;
    align-items: stretch;
  }
  .pa-modal-button {
    width: 100% !important;
  }
}


/* v126_6 - rechthoekig 2FA-veld; zes cijfers passen zonder horizontaal scrollen. */
.pa-otp-shell {
  position: relative;
  display: inline-flex;
  align-items: center;
  width: 248px;
  max-width: 100%;
  height: 46px;
  margin-top: 10px;
  box-sizing: border-box;
  border: 2px solid #154273;
  border-radius: 6px;
  background: #fff;
}
.pa-otp-shell:focus-within {
  border-color: #076fe5;
  outline: 0;
  box-shadow: none;
}
.pa-otp-input,
input.pa-otp-input {
  display: block;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: 100% !important;
  box-sizing: border-box !important;
  margin: 0 !important;
  padding: 6px 16px !important;
  border: 0 !important;
  border-radius: 4px !important;
  outline: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: #10284b !important;
  text-align: center !important;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace !important;
  font-size: 24px !important;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 8px;
  text-indent: 0 !important;
  font-variant-numeric: tabular-nums;
  caret-color: #154273;
}
.pa-otp-input::placeholder {
  color: #8a9aae;
  opacity: 1;
}

/* Primaire actie met expliciete inverse hover, gebruikt waar de actie visueel
   duidelijk boven een secundaire terug-/annuleeractie moet staan. */
.button.primary.pa-primary-invert:hover:not(:disabled):not([aria-disabled="true"]),
.btn.primary.pa-primary-invert:hover:not(:disabled):not([aria-disabled="true"]),
button.primary.pa-primary-invert:hover:not(:disabled):not([aria-disabled="true"]),
input[type="submit"].primary.pa-primary-invert:hover:not(:disabled):not([aria-disabled="true"]) {
  background: #ffffff !important;
  color: var(--pa-blue) !important;
}

/* v126_15: compacte uploadtabs, zichtbare filteractie en aanleveringssamenvatting. */
body.upload-page .upload-module-fixed-head .upload-tabs { align-items: center; }
body.upload-page .upload-header-actions { margin-left: auto; display: flex; gap: 8px; align-items: center; padding-left: 8px; }
body.upload-page .upload-header-actions .button { padding: 6px 9px; }
body.upload-page button.admin-filter-apply {
  background: var(--pa-blue) !important;
  color: #fff !important;
  border: 1px solid var(--pa-blue) !important;
}
body.upload-page button.admin-filter-apply:hover:not(:disabled) {
  background: #fff !important;
  color: var(--pa-blue) !important;
  border-color: var(--pa-blue) !important;
}
body.upload-page .delivery-receipt { padding: 12px 4px; max-width: 1100px; }
body.upload-page .delivery-receipt h2 { margin: 0 0 8px; }
body.upload-page .delivery-receipt > p { margin: 0 0 16px; }
body.upload-page .delivery-receipt dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px 24px; margin: 0; }
body.upload-page .delivery-receipt dl > div { padding: 10px 12px; background: var(--pa-hover); border: 1px solid #d7e1ea; border-radius: 4px; min-width: 0; }
body.upload-page .delivery-receipt dt { font-weight: 700; color: var(--pa-blue); margin-bottom: 4px; }
body.upload-page .delivery-receipt dd { margin: 0; overflow-wrap: anywhere; }

/* v126_16: ook de toegepaste Filters-status heeft wit op donkerblauw. */
body.upload-page button.admin-filter-toggle.active {
  background: var(--pa-blue) !important;
  color: #fff !important;
  border-color: var(--pa-blue) !important;
}
body.upload-page button.admin-filter-toggle.active:hover:not(:disabled) {
  background: #0d3559 !important;
  color: #fff !important;
}

/* v126_24: compact uploadformulier en zichtbare deadline. */
body.upload-page .upload-page-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
body.upload-page .upload-page-heading .page-title{margin:0}
body.upload-page .upload-round-deadline{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;background:#e8f0f7;color:#154273;padding:6px 10px;border-radius:4px;font-size:13px;line-height:1.4}
body.upload-page .upload-round-deadline span{color:#222}
body.upload-page .upload-round-deadline.attention{background:#fffbea}
body.upload-page .upload-round-deadline.warning{background:#fff4df}
body.upload-page .upload-round-deadline.urgent,body.upload-page .upload-round-deadline.critical,body.upload-page .upload-round-deadline.expired{background:#fff0f1;color:#b00020}
body.upload-page .upload-round-deadline.closed{background:#f3f3f3;color:#414141}
body.upload-page .upload-file-grid{grid-template-columns:minmax(0,660px)!important;justify-content:start}
body.upload-page .upload-template-block{min-width:0;min-inline-size:0;margin:0;padding:10px 12px 12px;border:1px solid #b9c7d4;background:#f3f7fb}
body.upload-page .upload-template-block legend{padding:0 5px;font-size:14px;font-weight:700;color:#154273}
body.upload-page .upload-template-block .template-actions{display:flex;gap:8px;flex-wrap:wrap;margin:0}
body.upload-page .upload-template-block .button{flex:0 0 auto;white-space:nowrap;padding:8px 10px}
body.upload-page .api-resources{margin-top:18px;padding-top:12px;border-top:1px solid #b9c7d4}
body.upload-page .api-resources h3{margin:0 0 8px;font-size:15px;color:#154273}
body.upload-page .api-resources .template-actions{flex-wrap:wrap;gap:8px}
body.upload-page .api-resources .template-actions .button{flex:0 0 auto}
@media(max-width:700px){body.upload-page .upload-page-heading{align-items:flex-start;flex-direction:column}body.upload-page .upload-round-deadline{width:100%;box-sizing:border-box}body.upload-page .upload-file-grid{grid-template-columns:minmax(0,1fr)!important}}

/* v126_29: essential step feedback stays visible; delete aligns with the main action. */
body.upload-page .delivery-workspace-scroll > .workflow-step-status {
  position: static;
  padding: 12px 14px;
  margin: 8px 0 12px;
}
body.upload-page .delivery-workspace-scroll > .workflow-skip-note { margin: 0 0 12px; }
body.upload-page .workflow-source-sheet { margin: 8px 0; }
body.upload-page .delivery-workspace-actions .delivery-delete-form {
  margin: 0 0 0 auto;
  padding: 0;
  border: 0;
  flex: 0 0 auto;
}

/* v126_34: readable mapping without increasing the surrounding chrome. */
body.upload-page .upload-mapping-smart-table .admin-rtable th,
body.upload-page .upload-mapping-smart-table .admin-rtable td { font-size:13px !important; line-height:1.35; }
body.upload-page .upload-mapping-smart-table .admin-rtable small,
body.upload-page .upload-mapping-smart-table .admin-rtable code { font-size:12px !important; }
body.upload-page .upload-mapping-smart-table .mapping-source-picker-trigger { font-size:13px !important; }
body.upload-page .delivery-downloads { margin:12px 0; }
body.upload-page .delivery-download-buttons { display:flex;gap:8px;flex-wrap:wrap;align-items:center; }
body.upload-page .delivery-download-buttons form { margin:0; }
body.upload-page .delivery-dataset-preview { margin-top:10px; }
body.upload-page .delivery-dataset-preview summary { cursor:pointer;color:#154273;font-weight:700; }
body.upload-page .delivery-dataset-preview .dataset-table-scroll { max-height:320px;overflow:auto;margin-top:10px; }
body.upload-page .delivery-dataset-preview td { max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }

/* v126_35: review exceptions first; compensate the existing desktop 80% zoom. */
body.upload-page .upload-mapping-smart-table .admin-rtable th,
body.upload-page .upload-mapping-smart-table .admin-rtable td { font-size:16px !important; line-height:1.4; }
body.upload-page .upload-mapping-smart-table .admin-rtable small,
body.upload-page .upload-mapping-smart-table .admin-rtable code { font-size:16px !important; }
body.upload-page .upload-mapping-smart-table .mapping-source-trigger,
body.upload-page .upload-mapping-smart-table .mapping-source-option,
body.upload-page .upload-mapping-smart-table .mapping-source-menu-search { font-size:16px !important; }
body.upload-page .upload-mapping-smart-table .mapping-source-option-type { font-size:16px !important; }
body.upload-page .upload-mapping-smart-table .admin-rtable td { padding:10px; }
body.upload-page .mapping-attention-only tr[data-mapping-review-kind="exact"],
body.upload-page .mapping-attention-only tr[data-mapping-review-kind="system"] { display:none !important; }
body.upload-page .mapping-review-tools { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; padding:8px 0; font-size:16px; background:#fff; }
body.upload-page .mapping-review-tools label { display:flex; align-items:center; gap:7px; margin:0; white-space:nowrap; }
body.upload-page .mapping-review-tools input { width:auto; margin:0; }
body.upload-page .mapping-geometry-source { display:grid; grid-template-columns:minmax(260px,520px) minmax(260px,400px); gap:14px; padding:5px 0; font-size:16px; }
body.upload-page .mapping-geometry-source label { margin:0; }
body.upload-page .mapping-geometry-source select { font-size:16px; width:100%; }
body.upload-page .mapping-native-geometry { display:grid; gap:6px; align-content:start; }
body.upload-page .mapping-unused-sources { font-size:16px; margin:6px 0 10px; }
body.upload-page .mapping-unused-sources summary { cursor:pointer; color:var(--pa-blue); }
body.upload-page .mapping-unused-sources [data-mapping-unused-list] { display:flex; flex-wrap:wrap; gap:7px; padding-top:8px; }
body.upload-page .mapping-unused-sources code { font-size:15px; padding:3px 6px; background:var(--pa-hover); border-radius:3px; }
body.upload-page .mapping-unused-sources p { font-size:15px; margin:8px 0; }
body.upload-page .mapping-review-empty { font-size:16px; padding:8px; background:var(--pa-hover); }
body.upload-page .mapping-review-empty[hidden] { display:none !important; }
/* Stick the whole opaque header, removing the gap between separately sticky cells. */
body.upload-page .upload-mapping-smart-table .admin-rtable { border-collapse:separate; border-spacing:0; }
body.upload-page .upload-mapping-smart-table .admin-rtable thead { position:sticky; top:calc(var(--mapping-sticky-top) + var(--mapping-sticky-tools-height)); z-index:33; background:var(--pa-blue); box-shadow:0 -4px 0 0 #fff; }
body.upload-page .upload-mapping-smart-table .admin-rtable thead th,
body.upload-page .delivery-workspace .upload-mapping-smart-table .pa-sticky-table thead th,
body.upload-page .upload-mapping-smart-table .admin-rtable th.resizable { position:relative !important; top:auto !important; }
body.upload-page .upload-mapping-smart-table .upload-mapping-sticky-controls { padding-bottom:0; }
@media(max-width:760px){
  body.upload-page .mapping-geometry-source { grid-template-columns:minmax(0,1fr); }
  body.upload-page .mapping-review-tools { align-items:flex-start; flex-direction:column; }
}

/* v126_36: source choices use the browser's top layer, outside the table scroller. */
body.upload-page dialog.mapping-source-menu {
  position:fixed;
  inset:0;
  margin:auto;
  width:min(620px,calc(100vw - 40px));
  max-width:calc(100vw - 40px);
  height:fit-content;
  max-height:min(680px,72vh);
  padding:12px;
  overflow:auto;
  overscroll-behavior:contain;
  font-size:16px;
  color:var(--pa-text);
  border:1px solid var(--pa-blue);
  border-radius:6px;
}
body.upload-page dialog.mapping-source-menu::backdrop { background:rgba(0,24,48,.28); }
body.upload-page dialog.mapping-source-menu .mapping-source-menu-sticky { top:-12px !important; margin:-12px -12px 5px !important; padding:12px 12px 5px !important; }
body.upload-page .mapping-source-menu-head { display:flex; justify-content:space-between; align-items:center; gap:12px; padding-bottom:10px; }
body.upload-page .mapping-source-menu-head .button { font-size:16px; color:var(--pa-blue); background:#fff; }
body.upload-page .mapping-source-menu-head .button:hover { background:var(--pa-hover); }
body.upload-page.mapping-source-menu-open .delivery-workspace-scroll { overflow:hidden; }
body.upload-page .mapping-geometry-source[hidden] { display:none !important; }
body.upload-page .mapping-geometry-source { margin-top:14px; padding-top:10px; border-top:1px solid #dce4ee; }
body.upload-page .upload-mapping-sticky-controls .mapping-unused-sources { margin:0; padding:2px 0 9px; background:#fff; }
body.upload-page .upload-mapping-sticky-controls .mapping-unused-sources [data-mapping-unused-list] { padding-bottom:3px; }
body.upload-page .upload-mapping-smart-table .admin-rtable th.no-sort { cursor:default !important; }
@media(max-width:760px){
  body.upload-page dialog.mapping-source-menu { inset:0; width:calc(100vw - 28px); max-width:calc(100vw - 28px); max-height:76vh; }
}

/* v126_37: readable confirmation explanation below field mapping. */
body.upload-page .mapping-step-form > p.muted {
  font-size:16px !important;
  line-height:1.45;
}

/* v126_38: one actionable mapping error, with feedback actions in the error dialog. */
body.upload-page .mapping-error-message-layout { display:block; }
body.upload-page .mapping-error-message-actions { justify-content:flex-start; margin-top:14px; }
body.upload-page .mapping-error-message-actions .button {
  background:var(--pa-blue) !important; color:#fff !important; border:1px solid var(--pa-blue) !important;
  font-size:16px !important;
}
body.upload-page .mapping-error-message-actions .button:hover,
body.upload-page .mapping-error-message-actions .button:focus-visible {
  background:#fff !important; color:var(--pa-blue) !important;
}
body.upload-page .mapping-error-table-wrap .admin-rtable th,
body.upload-page .mapping-error-table-wrap .admin-rtable td,
body.upload-page .mapping-error-table-wrap .admin-rtable td code,
body.upload-page .mapping-error-table-wrap .admin-rtable td small { font-size:16px !important; line-height:1.4; }
body.upload-page .mapping-error-table-wrap .admin-rtable td {
  white-space:normal !important; overflow-wrap:anywhere; text-overflow:clip !important;
}
body.upload-page .delivery-notices-body > [hidden] { display:none !important; }
body.upload-page .delivery-notices-body .mapping-error-details { margin-top:16px; }
body.upload-page .delivery-notices-body .mapping-error-table-wrap .admin-rtable thead th { position:static !important; }

/* v126_39: feedback stays available in a separate row above the confirmation action. */
body.upload-page .mapping-feedback-toolbar {
  flex:0 0 100%; width:100%; box-sizing:border-box; display:flex; align-items:center;
  gap:14px; flex-wrap:wrap; padding:9px 12px; background:var(--pa-hover); border-radius:4px;
}
body.upload-page .mapping-feedback-toolbar > strong { font-size:16px; color:var(--pa-blue); }
body.upload-page .mapping-feedback-toolbar .mapping-error-message-actions { margin-top:0; gap:8px; }
body.upload-page .mapping-error-details:focus { outline:none; }
body.upload-page .delivery-workspace .mapping-error-sticky-region .admin-rtable thead th,
body.upload-page .delivery-workspace .mapping-error-sticky-region .admin-rtable th.resizable { top:0 !important; }
@media(max-width:760px){
  body.upload-page .mapping-feedback-toolbar { align-items:flex-start; gap:8px; }
  body.upload-page .mapping-feedback-toolbar .mapping-error-message-actions { width:100%; }
}

/* v126_40: feedback controls below delivery header; error table visibly separated from mapping. */
body.upload-page .delivery-workspace > .mapping-feedback-toolbar { flex:0 0 auto; margin-bottom:8px; }
body.upload-page .mapping-error-details {
  box-sizing:border-box; padding:10px 12px; margin:0 0 12px; border:1px solid #d88b86;
  border-radius:6px; background:#fff;
}
body.upload-page .mapping-error-title { margin:0 0 10px; font-size:18px; line-height:1.35; color:#b31c16; }
body.upload-page .mapping-error-details .mapping-error-table-wrap { margin-bottom:0; }
body.upload-page .button.primary.mapping-confirm-button:hover:not(:disabled):not([aria-disabled="true"]),
body.upload-page .button.primary.mapping-confirm-button:focus-visible:not(:disabled):not([aria-disabled="true"]) {
  background:#fff !important; color:var(--pa-blue) !important; border-color:var(--pa-blue) !important;
}

/* v126_41: consistent readable typography for tables throughout the PHP interface. */
body table th, body table td { font-size:16px !important; line-height:1.4; }
body table :is(th,td) :is(a,button,input,select,textarea,label,small,code,span,strong,em,.small,.muted,.status,.badge,.btn,.button,.delivery-status,.protected-action) {
  font-size:16px !important;
}
body table .col-actions :is(.button,.btn,button) { white-space:normal !important; overflow-wrap:anywhere; }
/* Keep the mapping panel border; remove the separate line below the upload tabs only here. */
body.upload-page:has(.workflow-panel.mapping-step-view) .upload-module-fixed-head .upload-tabs { border-bottom:0 !important; }

/* v126_42: landscape welcome portal, scoped to Mijn PlanAtlas. */
body.landscape-page { position:relative; isolation:isolate; }
body.landscape-page::before {
  content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background-image:linear-gradient(90deg,#fff 0%,rgba(255,255,255,.98)22%,rgba(255,255,255,.88)39%,rgba(255,255,255,.45)58%,rgba(255,255,255,0)81%),linear-gradient(0deg,#fff 0%,rgba(255,255,255,.18)24%,rgba(255,255,255,0)65%),url('../img/planatlas-landscape.png');
  background-size:cover; background-position:center;
}
body.landscape-page .site-header,
body.landscape-page .topbar { background:rgba(255,255,255,.9) !important; }
body.portal-page main.shell { padding:68px 54px 82px !important; }
body.portal-page .shell > .portal-welcome { width:61%; max-width:1400px !important; }
body.portal-page .portal-eyebrow { font-size:14px; font-weight:800; letter-spacing:.17em; text-transform:uppercase; color:#075eaa; margin-bottom:12px; }
body.portal-page #portal-welcome-title { font-size:clamp(40px,3.5vw,56px) !important; line-height:1.15 !important; color:#102f50 !important; margin:0 0 12px; }
body.portal-page .portal-intro { font-size:20px !important; color:#4b4b4b; margin:0 0 34px; }
body.portal-page .portal-public-cards { display:grid; gap:18px; }
body.portal-page .portal-atlas-card {
  position:relative; isolation:isolate; display:grid; grid-template-columns:64px minmax(0,1fr) 46px; align-items:center;
  gap:22px; min-height:176px; padding:26px 30px; border:1px solid rgba(12,69,117,.2); border-radius:12px;
  background:linear-gradient(120deg,#0d5797,#0a365d); color:#fff; text-decoration:none;
  box-shadow:0 10px 24px rgba(15,58,99,.13); transition:box-shadow .16s,background .16s;
}
body.portal-page .portal-atlas-card::before { content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit; background:url('../img/portal-card-contours.svg') right center/auto 100% no-repeat; opacity:.18; pointer-events:none; }
body.portal-page .portal-atlas-card:hover { color:#fff; background:linear-gradient(120deg,#1468ac,#0b416f); box-shadow:0 12px 28px rgba(15,58,99,.22); }
body.portal-page .portal-atlas-card:focus-visible { outline:3px solid #01689b; outline-offset:4px; }
body.portal-page .portal-atlas-icon { width:60px; height:60px; }
body.portal-page .portal-atlas-icon svg { display:block; width:100%; height:100%; }
body.portal-page .portal-atlas-copy { min-width:0; }
body.portal-page .portal-atlas-copy h2 { color:#fff !important; font-size:24px !important; line-height:1.25 !important; margin:0 0 8px; }
body.portal-page .portal-atlas-copy p { font-size:18px !important; line-height:1.45; color:#e6eff7; margin:0 0 12px; max-width:660px; }
body.portal-page .portal-atlas-badge { display:inline-flex; align-items:center; font-size:14px; font-weight:700; line-height:1.3; background:rgba(154,204,243,.27); color:#fff; padding:5px 13px; border-radius:20px; }
body.portal-page .portal-atlas-badge.is-current { background:#ffdc72; color:#153653; }
body.portal-page .portal-atlas-arrow { display:flex; align-items:center; justify-content:center; width:46px; height:46px; border-radius:50%; background:rgba(25,113,185,.35); }
body.portal-page .portal-atlas-arrow svg { width:22px; height:22px; }
body.portal-page .portal-private-section { margin-top:42px; }
body.portal-page .portal-private-heading { display:flex; align-items:center; gap:14px; margin-bottom:20px; color:#075eaa; }
body.portal-page .portal-private-heading h2 { color:#102f50 !important; font-size:26px !important; margin:0 0 2px; }
body.portal-page .portal-private-heading p { font-size:17px !important; color:#555; margin:0; }
body.portal-page .portal-lock { width:26px; height:31px; flex:0 0 auto; }
body.portal-page .portal-lock svg { width:100%; height:100%; }
body.portal-page .portal-private-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
body.portal-page .portal-private-cards .portal-atlas-card { grid-template-columns:56px minmax(0,1fr) 40px; gap:18px; min-height:190px; padding:24px; }
body.portal-page .portal-private-cards .portal-atlas-icon { width:54px; height:54px; }
body.portal-page .portal-private-cards .portal-atlas-arrow { width:40px; height:40px; }
body.portal-page .portal-unavailable { background:rgba(255,255,255,.93); }
@media(max-width:1100px){
  body.portal-page .shell > .portal-welcome { width:76%; }
  body.portal-page .portal-private-cards { grid-template-columns:1fr; }
}
@media(max-width:700px){
  body.portal-page main.shell { padding:34px 20px 44px !important; }
  body.portal-page .shell > .portal-welcome { width:100%; }
  body.landscape-page::before { background-image:linear-gradient(90deg,rgba(255,255,255,.96),rgba(255,255,255,.76)),url('../img/planatlas-landscape.png'); }
  body.portal-page .portal-atlas-card { padding:22px 18px; gap:14px; grid-template-columns:42px minmax(0,1fr) 34px; min-height:158px; }
  body.portal-page .portal-atlas-icon { width:42px; height:42px; }
  body.portal-page .portal-atlas-arrow { width:34px; height:34px; }
  body.portal-page .portal-atlas-copy h2 { font-size:22px !important; }
  body.portal-page .portal-atlas-copy p { font-size:17px !important; }
  body.portal-page .portal-private-cards .portal-atlas-card { grid-template-columns:42px minmax(0,1fr) 34px; padding:22px 18px; gap:14px; }
  body.portal-page .portal-private-cards .portal-atlas-icon { width:42px; height:42px; }
}
@media(prefers-reduced-motion:reduce){body.portal-page .portal-atlas-card { transition:none; }}

/* v126_43: shared landscape behind opaque content; left aligned blue login card. */
body.landscape-page .site-footer { background:#fff !important; }
body.account-page .card,
body.upload-page .panel,
body.upload-page .delivery-dashboard,
body.upload-page .upload-module-fixed-head { background:#fff !important; }
body.public-home-page .portal-home-intro { max-width:850px; }
body.public-home-page .portal-home-access { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin-top:28px; }
body.public-home-page .portal-home-access > p { flex:0 0 100%; font-size:18px !important; color:#4b4b4b; margin:0 0 2px; }
body.public-home-page .portal-home-demo { margin-top:28px; max-width:850px; background:var(--pa-hover); border-color:#b8d2e7; border-left-color:var(--pa-blue); }
/* v126_66_44: same public card in anonymous and logged-in PlanAtlas. */
body.portal-page .portal-public-cards { width:100%; max-width:850px; }
body.portal-page .portal-public-cards .portal-atlas-card.is-public { min-height:186px; }
body.auth-form-page .wrap { width:100%; max-width:none !important; margin:0 !important; padding:68px 54px 82px !important; }
body.auth-form-page .card {
  position:relative; isolation:isolate; width:min(760px,100%) !important; max-width:760px !important; margin:0 auto 0 0 !important;
  padding:36px !important; border:1px solid #0c4575 !important; border-radius:12px !important;
  background:linear-gradient(120deg,#0d5797,#0a365d) !important; color:#fff !important;
  box-shadow:0 10px 24px rgba(15,58,99,.13) !important;
}
body.auth-form-page .card::before { content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit; background:url('../img/portal-card-contours.svg') right center/auto 100% no-repeat; opacity:.18; pointer-events:none; }
body.auth-form-page .card :is(h1,h2,h3) { color:#fff !important; }
body.auth-form-page .card h1 { font-size:30px !important; margin:0 0 24px; }
body.auth-form-page .card form.login { width:100%; max-width:520px; }
body.auth-form-page .card label { display:block; color:#fff !important; margin:16px 0 7px; }
body.auth-form-page .card input:not([type="hidden"]):not(.pa-otp-input) { width:100%; background:#fff !important; color:var(--pa-text) !important; border:1px solid #c8d7e4 !important; border-radius:4px; }
body.auth-form-page .card .login-forgot-password { color:#fff !important; text-decoration:underline; text-underline-offset:3px; }
body.auth-form-page .card .login-forgot-password:hover { color:#d8efff !important; }
body.auth-form-page .card .login-forgot-password:focus-visible { outline:2px solid #fff; outline-offset:4px; }
body.auth-form-page .card .error { background:#fff1f0; color:#a51b15 !important; padding:12px 14px; border:1px solid #d88b86; border-radius:4px; }
@media(max-width:700px){
  body.auth-form-page .wrap { padding:34px 20px 44px !important; }
  body.auth-form-page .card { padding:26px 22px !important; }
}

/* Authentication pages share the blue card; the footer stays outside the content. */
body.auth-form-page .wrap { flex:1 0 auto !important; }
body.auth-form-page > .site-footer { flex:0 0 auto !important; margin-top:auto !important; }
body.auth-form-page .card :is(.bgcard,.bgcard-mobile) { background:transparent !important; }
body.auth-form-page .card .muted { color:#e6eff7 !important; }
body.auth-form-page .card a:not(.btn):not(.button) { color:#fff !important; text-underline-offset:3px; }
body.auth-form-page .card a:not(.btn):not(.button):hover { color:#d8efff !important; }
body.auth-form-page .card .auth-error,
body.auth-form-page .card .auth-success { padding:12px 14px; border-radius:4px; }
body.auth-form-page .card .auth-error { color:#a51b15 !important; background:#fff1f0; border:1px solid #d88b86; }
body.auth-form-page .card .auth-success { color:#20562d !important; background:#e1eddb; border:1px solid #a6c5a1; }
body.auth-form-page .card .btn.primary { background:#fff !important; color:var(--pa-blue) !important; border-color:#fff !important; }
body.auth-form-page .card .btn.primary:hover { background:var(--pa-hover) !important; }
body.auth-form-page .card.two-factor-card { width:min(1080px,100%) !important; max-width:1080px !important; }
body.auth-form-page .two-factor-box { background:rgba(0,0,0,.06); border-color:rgba(255,255,255,.35); border-radius:6px; }
body.auth-form-page .two-factor-details summary { color:#e6eff7; }
body.auth-form-page .two-factor-secret { background:#fff !important; color:var(--pa-text) !important; }
body.auth-form-page .auth-state { display:inline-block; padding:3px 10px; background:rgba(255,255,255,.2); border-radius:4px; color:#fff; }
body.auth-form-page .auth-state.is-enabled { background:#e1eddb; color:#20562d; }
body.auth-form-page .pa-otp-input { background:#fff !important; color:var(--pa-text) !important; }
@media(max-width:800px){
  body.auth-form-page .two-factor-setup { grid-template-columns:minmax(0,1fr); }
  body.auth-form-page .two-factor-row { flex-wrap:wrap; }
  body.auth-form-page .two-factor-form label { white-space:normal; }
  body.auth-form-page .two-factor-footer-actions { flex-wrap:wrap; }
}

/* v126_44: solid auth cards, aligned OTP actions and full-width upload header/panels. */
body.auth-form-page .card { background:#154273 !important; }
body.auth-form-page .card::before { content:none; display:none; background:none; }
body.auth-form-page .two-factor-row { align-items:flex-start !important; }
body.auth-form-page .two-factor-row .pa-otp-shell { margin-top:0 !important; }
body.auth-form-page .two-factor-actions { margin:0 !important; flex-direction:row !important; flex-wrap:wrap; align-items:flex-start !important; }
body.auth-form-page .two-factor-actions p { display:flex; margin:0; }
body.auth-form-page .two-factor-actions button { height:46px; min-height:46px; margin:0 !important; }
body.upload-page .site-header { background:#fff !important; }
body.upload-page main.shell,
body.upload-page .shell { padding:0 0 0 16px !important; }
body.upload-page .upload-module-fixed-head { margin-left:-16px; padding:12px 16px 0; background:#fff !important; }
body.upload-page .upload-content-scroll { padding-right:16px; }
body.upload-page .upload-module-fixed-head:has(.upload-tabs > a.active[href*="tab=api"]) + .upload-content-scroll,
body.upload-page .upload-module-fixed-head:has(.upload-tabs > a.active[href*="tab=deliveries"]) + .upload-content-scroll {
  padding-right:0; scrollbar-gutter:auto;
}
@media(max-width:760px){
  body.upload-page main.shell,
  body.upload-page .shell { padding-left:12px !important; }
  body.upload-page .upload-module-fixed-head { margin-left:-12px; padding:10px 12px 0; }
  body.upload-page .upload-content-scroll { padding-right:12px; }
  body.upload-page .upload-module-fixed-head:has(.upload-tabs > a.active[href*="tab=api"]) + .upload-content-scroll,
  body.upload-page .upload-module-fixed-head:has(.upload-tabs > a.active[href*="tab=deliveries"]) + .upload-content-scroll { padding-right:0; }
}


/* v126_45: validation feedback above results; dataset downloads at the bottom. */
body.upload-page .validation-feedback-toolbar {
  flex:0 0 auto; width:100%; box-sizing:border-box; display:flex; align-items:center;
  gap:14px; flex-wrap:wrap; padding:9px 12px; margin-bottom:8px;
  background:var(--pa-hover); border-radius:4px;
}
body.upload-page .validation-feedback-toolbar > strong { font-size:16px; color:var(--pa-blue); }
body.upload-page .validation-feedback-toolbar .feedback-download-form.compact {
  display:inline-flex; margin:0; padding:0; border:0; background:transparent;
}
body.upload-page .result-actions-main > .delivery-downloads { margin:0; }
body.upload-page .delivery-download-button:focus-visible,
body.upload-page .validation-feedback-toolbar .feedback-action-button:focus-visible {
  background:#fff !important; color:var(--pa-blue) !important;
}
@media(max-width:760px){
  body.upload-page .validation-feedback-toolbar { align-items:flex-start; gap:8px; }
  body.upload-page .result-actions-main .delivery-downloads { width:100%; }
  body.upload-page .result-actions-main .delivery-download-buttons { align-items:stretch; }
  body.upload-page .result-actions-main .delivery-download-buttons form { flex:1 1 180px; }
}


/* v126_51: when no update round is open, Data aanleveren is a deliveries-only view.
   v126_52: keep the shared landscape background visible; only the deliveries panel itself stays white.
   v126_53: let that white panel reach the right edge; landscape starts below it, not beside it. */
body.upload-page .upload-module-fixed-head .upload-tabs {
  border-bottom:0 !important;
}
body.upload-page main.shell:has(.upload-module-fixed-head.upload-no-open-round) {
  background:transparent !important;
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}
body.upload-page .upload-module-fixed-head.upload-no-open-round + .upload-content-scroll {
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
  background:transparent !important;
  padding-right:0 !important;
  overflow-x:hidden !important;
  scrollbar-gutter:auto;
}
body.upload-page .upload-no-round-info {
  margin:0 0 16px !important;
}
@media(max-width:760px){
  body.upload-page .upload-module-fixed-head.upload-no-open-round + .upload-content-scroll {
    padding-right:0 !important;
  }
}


/* v126_66_10: uploadfouten blijven zichtbaar in plaats van de overlay te laten verdwijnen. */
body.upload-page .upload-transfer-error[hidden]{display:none!important}
body.upload-page .upload-transfer-error{margin:0 0 16px;max-width:100%;overflow-wrap:anywhere}
body.upload-page .upload-transfer-error .upload-transfer-reason{margin:8px 0;font-weight:600}
body.upload-page .upload-transfer-error .upload-transfer-advice{margin:8px 0}
body.upload-page .upload-transfer-diagnostics{margin-top:10px;border-top:1px solid #e6bab8;padding-top:8px}
body.upload-page .upload-transfer-diagnostics summary{cursor:pointer;font-weight:700;color:var(--pa-blue)}
body.upload-page .upload-transfer-diagnostics pre{padding:10px 12px;margin-top:8px;white-space:pre-wrap;overflow-wrap:anywhere;background:#fff;border:1px solid #e6bab8;font:12px/1.5 Consolas,monospace}

/* v126_66_11: broncontext en werkbladcontrole in Formaatcontrole. */
body.upload-page .upload-format-source-context {
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px;
  margin:0 0 14px; padding:10px 12px; background:#f2f7fb; border:1px solid #d6e2ec;
}
body.upload-page .upload-format-source-context > div { min-width:0; }
body.upload-page .upload-format-source-context dt { color:var(--pa-blue); font-weight:700; font-size:12px; }
body.upload-page .upload-format-source-context dd { margin:3px 0 0; overflow-wrap:anywhere; }
body.upload-page .upload-worksheet-change { margin:12px 0 18px; border:1px solid #d6e2ec; padding:10px 12px; }
body.upload-page .upload-worksheet-change > summary { color:var(--pa-blue); font-weight:700; cursor:pointer; }
body.upload-page .upload-worksheet-selection-form { margin-top:12px; }
body.upload-page .upload-worksheet-selection-form > label { display:block; margin-bottom:6px; font-weight:700; }
body.upload-page .upload-worksheet-selection-form > select { display:block; width:100%; box-sizing:border-box; }
body.upload-page .upload-worksheet-column-preview {
  background:#eef6fb; border-left:3px solid #01689b; padding:9px 12px;
  margin:10px 0; line-height:1.5; overflow-wrap:anywhere;
}
body.upload-page .upload-worksheet-column-preview[hidden] { display:none!important; }
@media(max-width:780px) {
  body.upload-page .upload-format-source-context { grid-template-columns:1fr; }
}

/* v126_66_12: bronkolomcontrole en koppelmeldingen blijven op hun eigen plek in Formaatcontrole. */
body.upload-page .upload-join-inline-message {padding:12px 14px;margin:12px 0;border:1px solid #c72c2c;border-left:4px solid #c72c2c;background:#fff4f2;border-radius:4px;}
body.upload-page .upload-join-inline-message.warning {border-color:#b87b16;background:#fff9e8;}
body.upload-page .upload-join-inline-message.info {border-color:#2475a5;background:#eef6fb;}
body.upload-page .upload-join-inline-message strong {display:block;margin-bottom:4px;}
body.upload-page .upload-join-inline-message p {margin:0;}
body.upload-page .upload-join-column-count {margin:12px 0;background:#eef6fb;border-left:3px solid #01689b;padding:10px 12px;}
body.upload-page .upload-worksheet-capacity-message {background:#eef6fb;border-left:3px solid #01689b;padding:9px 12px;margin:10px 0;}
body.upload-page .upload-worksheet-capacity-message.insufficient {background:#fff4f2;border-left-color:#c72c2c;color:#98201b;font-weight:700;}
body.upload-page .upload-worksheet-capacity-message[hidden] {display:none!important;}


/* v126_66_15: gesplitste koppeling - herstelkeuze en annulering naast koppelen. */
body.upload-page .split-join-choice .split-join-recovery { margin: 14px 0 0; }
body.upload-page .split-join-choice .split-join-recovery p { margin: 0 0 10px; color: #494949; font-size: 13px; }
body.upload-page .split-join-choice .split-join-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0; }
body.upload-page .split-join-choice .delivery-cancel-form { margin: 0; padding: 0; border: 0; }
body.upload-page .split-join-choice .delivery-cancel-form .button { color: #a0001c !important; background: #fff !important; border-color: #a0001c !important; }
body.upload-page .split-join-choice .delivery-cancel-form .button:hover { background: #fff0f1 !important; }

/* v126_66_16: Leveringen - de 15 kolommen vullen samen exact 100% van het paneel.
   Alleen op smallere vensters horizontaal scrollen IN de tabel, nooit de pagina
   verbreden. De percentuele startbreedtes in upload/index.php blijven door de
   bestaande resize-handles daarna nog vrij instelbaar. */
body.upload-page .upload-deliveries-panel,
body.upload-page .upload-deliveries-panel .delivery-table-wrap {
  min-width: 0;
  max-width: 100%;
}
body.upload-page .upload-deliveries-panel .delivery-table-wrap > .table-scroll {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
}
body.upload-page .upload-deliveries-panel table[class*="upload-deliveries-"] {
  width: 100%;
  table-layout: fixed;
  min-width: 1360px;
}

/* v126_66_17 — handelingsperspectief bij foutieve gesplitste koppeling. */
body.upload-page .delivery-notices-body .split-join-error-guidance {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid #e6bbb5;
}
body.upload-page .delivery-notices-body .split-join-error-guidance p {
  margin: 0 0 12px;
  line-height: 1.55;
}
body.upload-page .delivery-notices-body .split-join-error-guidance .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* v126_66_18: ontbrekende geometrie herkenbaar aan originele brongegevens. */
body.upload-page .split-missing-records {border:1px solid #c5283d; border-radius:4px; padding:16px; background:#fff; margin:12px 0 18px;}
body.upload-page .split-missing-records h3{margin:0 0 8px;color:#a0001c}
body.upload-page .split-missing-records > p{margin:0 0 16px}
body.upload-page .split-missing-record{border:1px solid #d7e1ea;border-left:4px solid #c5283d;padding:12px 14px;margin:10px 0;background:#fff;min-width:0}
body.upload-page .split-missing-record > strong{display:block;color:var(--pa-blue);font-size:1.06em}
body.upload-page .split-missing-record > span{display:block;color:#a0001c;margin:4px 0}
body.upload-page .split-missing-record > p{margin:8px 0}
body.upload-page .split-missing-record details summary{cursor:pointer;color:var(--pa-blue);font-weight:700}
body.upload-page .split-missing-values{max-height:320px;overflow:auto;margin:10px 0 0;border:1px solid #d7e1ea}
body.upload-page .split-missing-values table{border-collapse:collapse;width:100%;font-size:13px}
body.upload-page .split-missing-values th,body.upload-page .split-missing-values td{padding:7px 10px;text-align:left;border-bottom:1px solid #e2e9ef;vertical-align:top;overflow-wrap:anywhere}
body.upload-page .split-missing-values th{width:33%;min-width:120px;color:var(--pa-blue);background:#f5f8fb}
body.upload-page .split-missing-guidance p{margin:10px 0}
body.upload-page .split-missing-guidance .button{margin-top:8px}

/* v126_66_19: compacte bronwaardentabel bij ontbrekende geometrie. */
body.upload-page .split-missing-records {
  padding: 9px 12px; margin: 6px 0 8px;
}
body.upload-page .split-missing-records h3 { margin: 0 0 4px; font-size: 15px; }
body.upload-page .split-missing-records > p { margin: 0 0 7px; line-height: 1.35; }
body.upload-page .split-missing-record {
  padding: 8px 10px; margin: 6px 0;
}
body.upload-page .split-missing-record > strong { font-size: 14px; }
body.upload-page .split-missing-record > span { margin: 2px 0; }
body.upload-page .split-missing-record > p { margin: 4px 0; }
body.upload-page .split-missing-record details summary { margin-top: 3px; }
body.upload-page .split-missing-values {
  width: min(100%, 820px);
  max-height: 260px; overflow: auto;
  margin: 6px 0 0; border: 1px solid #d7e1ea;
  background: #fff;
}
body.upload-page .split-missing-values table {
  table-layout: fixed; width: 100%;
  border-collapse: separate; border-spacing: 0;
}
body.upload-page .split-missing-values :is(th,td) {
  padding: 4px 7px !important;
  line-height: 1.2 !important;
  font-size: 13px !important;
  overflow-wrap: anywhere;
  border-bottom: 1px solid #e2e9ef;
  text-align: left;
  vertical-align: top;
}
body.upload-page .split-missing-values thead th {
  position: sticky !important;
  top: 0 !important;
  z-index: 3;
  background: var(--pa-blue) !important;
  color: #fff !important;
  font-weight: 700;
  box-shadow: 0 1px 0 #d7e1ea;
}
body.upload-page .split-missing-values tbody th {
  width: 42%; min-width: 0;
  background: #fff !important;
  color: #171717 !important;
  font-weight: 700;
}
body.upload-page .split-missing-values tbody td {
  background: #fff !important;
  color: #171717 !important;
}
@media(max-width:650px){
  body.upload-page .split-missing-values{width:100%;max-width:100%}
}

/* v126_66_20: gebruik de vrije hoogte bij ontbrekende geometrie, zonder
   extra pagina-scroll. Het vaste actieblok blijft onderaan het werkpaneel.
   Bij meer dan een ontbrekend plan scrolt de plannenlijst zelfstandig;
   elke bronwaardentabel behoudt zijn eigen (sticky) kolomkop. */
@media (min-width: 800px) and (min-height: 600px) {
  body.upload-page.delivery-workspace-page .delivery-workspace-scroll:has(> .split-missing-records) {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
  }
  body.upload-page.delivery-workspace-page .delivery-workspace-scroll > .split-missing-records {
    flex: 1 1 auto;
    min-height: 0;
    margin: 5px 0 6px;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
  }
  body.upload-page.delivery-workspace-page .delivery-workspace-scroll > .split-missing-records:has(> .split-missing-record:only-of-type > details[open]) {
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }
  body.upload-page.delivery-workspace-page .split-missing-records > .split-missing-record:only-of-type:has(> details[open]) {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    margin-bottom: 0;
  }
  body.upload-page.delivery-workspace-page .split-missing-record:only-of-type > details[open] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
  }
  body.upload-page.delivery-workspace-page .split-missing-record:only-of-type > details[open] > .split-missing-values {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
  }
  body.upload-page.delivery-workspace-page .split-missing-records > .split-missing-record:not(:only-of-type) .split-missing-values {
    max-height: min(44dvh, 440px);
  }
}
/* Een <details>-element heeft een interne browsercontainer: de tabel krijgt
   daarom een door JS berekende hoogte in plaats van een flex-basis. */
@media (min-width: 800px) and (min-height: 600px) {
  body.upload-page.delivery-workspace-page .split-missing-record:only-of-type > details[open] > .split-missing-values {
    flex: 0 0 auto;
    height: 260px; /* bruikbare fallback bij uitgeschakelde JavaScript */
    min-height: 0;
    max-height: none;
  }
}

/* v126_66_21: vul de kaart volledig met de echte bronwaardentabel.
   Een HTML-details heeft intern een anonieme content-wrapper: absolute positionering
   omzeilt die beperking en laat de tabel zelfstandig scrollen. */
@media (min-width:800px) and (min-height:600px) {
  body.upload-page.delivery-workspace-page .split-missing-record:only-of-type > details[open] {
    display:block !important;
    position:relative;
    flex:1 1 0%;
    min-height:0;
  }
  body.upload-page.delivery-workspace-page .split-missing-record:only-of-type > details[open] > .split-missing-values {
    position:absolute !important;
    left:0;
    top:24px;
    bottom:0;
    height:auto !important;
    min-height:0;
    max-height:none !important;
    margin:0;
    overflow-y:auto;
  }
}
body.upload-page .missing-geometry-actions { align-items:center; flex-wrap:wrap; gap:10px; }
body.upload-page .missing-geometry-actions .missing-geometry-feedback-form { margin:0; }

/* v126_66_22: alleen de unieke fouttelling rood; beknopt recordoverzicht. */
body.upload-page .split-missing-records > h3 {color:#b4232e !important;}
body.upload-page .split-missing-record > strong {margin-bottom:3px;}

/* v126_66_25: readable source-field picker, including long Dutch field labels.
   Keep the label, datatype and information button in separate columns. */
body.upload-page dialog.mapping-source-menu {
  width: min(700px, calc(100vw - 40px));
  max-width: calc(100vw - 40px);
  box-sizing: border-box;
}
body.upload-page dialog.mapping-source-menu .mapping-source-option-row {
  min-width: 0;
  grid-template-columns: minmax(0, 1fr) 34px;
  align-items: stretch;
}
body.upload-page dialog.mapping-source-menu .mapping-source-option {
  box-sizing: border-box;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center !important;
  min-width: 0;
  max-width: 100%;
  gap: 8px;
  white-space: normal !important;
}
body.upload-page dialog.mapping-source-menu .mapping-source-option-name {
  min-width: 0;
  max-width: 100%;
  white-space: normal !important;
  overflow-wrap: anywhere;
  word-break: normal;
  line-height: 1.35;
}
body.upload-page dialog.mapping-source-menu .mapping-source-option-type {
  display: block;
  min-width: 0;
  max-width: 116px;
  align-self: center;
  color: #586978 !important;
  font-size: 13px !important;
  line-height: 1.25;
  text-align: right;
  white-space: nowrap !important;
}
body.upload-page dialog.mapping-source-menu .mapping-source-option[aria-pressed="true"] .mapping-source-option-type {
  color: #fff !important;
}
body.upload-page dialog.mapping-source-menu .mapping-source-domain-button {
  grid-column: 2;
  align-self: center;
  justify-self: center;
  margin: 0 !important;
}
body.upload-page .mapping-source-trigger {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
}
body.upload-page .mapping-source-trigger [data-source-trigger-label] {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  min-width: 0;
  flex: 1 1 auto;
  overflow: hidden;
  overflow-wrap: anywhere;
  white-space: normal !important;
  line-height: 1.3;
}
body.upload-page .mapping-source-trigger-arrow { flex: 0 0 auto; }
@media (max-width: 580px) {
  body.upload-page dialog.mapping-source-menu { width: calc(100vw - 28px); max-width: calc(100vw - 28px); }
  body.upload-page dialog.mapping-source-menu .mapping-source-option {
    grid-template-columns: minmax(0, 1fr);
    gap: 2px;
  }
  body.upload-page dialog.mapping-source-menu .mapping-source-option-type {
    justify-self: start;
    max-width: 100%;
    text-align: left;
  }
}


/* v126_66_28 - one consistent, understated cancel action inside the workflow. */
body.upload-page .delivery-cancel-form .button.danger-outline,
body.upload-page .result-actions-danger .delivery-cancel-form .button.danger-outline,
body.upload-page .mapping-failure-choice-actions .button.danger-outline,
body.upload-page .delivery-list-row-actions .button.danger-outline {
  background:#fff !important;
  color:#a0001c !important;
  border:1px solid #a0001c !important;
}
body.upload-page .delivery-cancel-form .button.danger-outline:hover:not(:disabled),
body.upload-page .result-actions-danger .delivery-cancel-form .button.danger-outline:hover:not(:disabled),
body.upload-page .mapping-failure-choice-actions .button.danger-outline:hover:not(:disabled),
body.upload-page .delivery-list-row-actions .button.danger-outline:hover:not(:disabled),
body.upload-page .delivery-cancel-form .button.danger-outline:focus-visible,
body.upload-page .mapping-failure-choice-actions .button.danger-outline:focus-visible {
  background:#a0001c !important;
  color:#fff !important;
}
body.upload-page .delivery-list-row-actions {display:flex;align-items:center;justify-content:flex-start;gap:5px;min-width:0;}
body.upload-page .delivery-list-row-actions .button {padding:6px 7px;white-space:nowrap !important;overflow-wrap:normal !important;font-size:12px !important;}
body.upload-page .delivery-list-row-actions form {display:inline-flex;margin:0;padding:0;}
body.upload-page .mapping-review-tools label {gap:8px;}
body.upload-page .mapping-review-tools select[data-mapping-review-mode] {width:auto;max-width:min(360px,100%);min-width:230px;margin:0;padding:7px 10px;font-size:14px;font-weight:600;}

/* Initial server-rendered mapping failures must not flash full page before the
   JavaScript workspace puts the notice into its bounded dialog. */
body.upload-page .workflow-panel:not(.delivery-workspace) .mapping-error-sticky-region,
body.upload-page .workflow-panel:not(.delivery-workspace) .mapping-step-submit-error {display:none !important;}

/* Always keep the notification title and close button outside the scrollport. */
body.upload-page dialog.delivery-notices-dialog[open] {
  display:flex;
  flex-direction:column;
  overflow:hidden;
  box-sizing:border-box;
  width:min(720px,calc(100vw - 32px));
  max-height:min(82dvh,700px);
  padding:0;
}
body.upload-page .delivery-notices-dialog .delivery-notices-head {
  position:relative;
  z-index:2;
  flex:0 0 auto;
  margin:0;
  padding:12px 14px;
  background:#fff;
  border-bottom:1px solid #d7e1ea;
}
body.upload-page .delivery-notices-dialog .delivery-notices-body {
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:12px 14px 16px;
}
body.upload-page .mapping-error-message-layout {display:block;}
body.upload-page .mapping-error-message-copy p {margin:8px 0;line-height:1.5;}
body.upload-page .mapping-failure-choice-actions {display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;}
body.upload-page .mapping-failure-choice-actions .button {white-space:normal;text-align:center;}
@media(max-width:720px){
  body.upload-page .mapping-review-tools label {width:100%;flex-wrap:wrap;}
  body.upload-page .mapping-review-tools select[data-mapping-review-mode] {width:100%;max-width:100%;}
  body.upload-page .mapping-failure-choice-actions .button {flex:1 1 100%;}
  body.upload-page .delivery-list-row-actions {flex-wrap:wrap;}
}


/* =========================================================
   v126_66_29 - Leveringen als enige ingang voor Data aanleveren
   ========================================================= */
body.upload-page .upload-tabs.upload-entry-nav:empty { display:none; }
body.upload-page .upload-tabs.upload-entry-nav { align-items:center; justify-content:space-between; margin:0 0 10px !important; border-bottom:0; min-height:32px; }
/* v126_66_33: dit is een reguliere secundaire PlanAtlas-knop (.button).
   Geen afwijkende border, padding of hover; alleen eenregelige tekst. */
body.upload-page .upload-entry-nav .upload-entry-back { white-space:nowrap; }
body.upload-page .upload-entry-nav .upload-header-actions { margin-left:auto; }

body.upload-page .upload-content-scroll:has(> .upload-deliveries-panel) { display:flex; flex-direction:column; }
body.upload-page .upload-deliveries-panel { display:flex; flex-direction:column; flex:1 1 auto; min-height:0; margin:0; }
body.upload-page .upload-deliveries-panel > .delivery-table-wrap { flex:1 1 auto; min-height:0; overflow:auto; }
body.upload-page .upload-new-delivery-action { flex:0 0 auto; margin-top:auto; padding:12px 0 0; display:flex; align-items:center; justify-content:flex-start; background:#fff; }
body.upload-page .upload-new-delivery-button { display:inline-flex; align-items:center; justify-content:center; background:var(--pa-blue); color:#fff; border:1px solid var(--pa-blue); font-weight:700; padding:9px 16px; }
body.upload-page .upload-new-delivery-button:hover:not(:disabled),
body.upload-page .upload-new-delivery-button:focus-visible { background:#fff; color:var(--pa-blue); }
body.upload-page .upload-new-delivery-button:disabled { opacity:.5; cursor:not-allowed; }

body.upload-page .upload-method-panel { width:100%; max-width:900px !important; }
body.upload-page .upload-method-panel > h2 { margin:0 0 8px; color:var(--pa-blue); }
body.upload-page .upload-method-panel > p { margin:0 0 18px; }
body.upload-page .upload-method-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
body.upload-page .upload-method-choice { text-decoration:none; display:flex; align-items:flex-start; gap:12px; padding:18px; border:1px solid #aabfd2; border-radius:5px; background:#fff; color:#173b62; min-width:0; }
body.upload-page .upload-method-choice:hover,
body.upload-page .upload-method-choice:focus-visible { border-color:var(--pa-blue); background:#eff5fa; box-shadow:0 0 0 2px rgba(21,66,115,.12); }
body.upload-page .upload-method-number { flex:0 0 32px; display:inline-flex; align-items:center; justify-content:center; height:32px; border-radius:50%; background:var(--pa-blue); color:#fff; font-weight:700; }
body.upload-page .upload-method-description { display:flex; flex:1 1 auto; min-width:0; flex-direction:column; gap:8px; }
body.upload-page .upload-method-description strong { font-size:16px; color:var(--pa-blue); }
body.upload-page .upload-method-description small { font-size:13px; line-height:1.5; color:#405267; }
body.upload-page .upload-method-next { align-self:center; flex:0 0 auto; font-size:22px; color:var(--pa-blue); }
@media(max-width:700px) {
  body.upload-page .upload-method-options { grid-template-columns:1fr; }
  body.upload-page .upload-method-choice { padding:14px; }
}

/* v126_66_30: vaste terugnavigatie, stap 1 en beheer van API-koppelingen */
body.upload-page .upload-tabs.upload-entry-nav { justify-content:flex-end !important; min-height:28px; margin:2px 0 8px !important; }
body.upload-page .upload-entry-nav .upload-entry-back { margin-left:auto; font-weight:700; }
body.upload-page .new-delivery-flow-heading { padding:0 0 8px; }
body.upload-page .new-delivery-flow-heading .new-delivery-workflow-nav { margin:0 0 9px; }
body.upload-page .new-delivery-flow-heading .delivery-stepper li.active { color:var(--pa-blue); }
body.upload-page .new-delivery-flow-heading .delivery-stepper li.locked { opacity:.55; }
body.upload-page .new-delivery-source-tabs { display:flex; align-items:center; flex-wrap:wrap; gap:0; border-bottom:1px solid #a3b7ca; margin:0 0 12px; }
body.upload-page .new-delivery-source-tabs a { display:inline-block; font-weight:650; font-size:13px; padding:9px 13px; text-decoration:none; color:var(--pa-blue); border:1px solid transparent; border-bottom:3px solid transparent; }
body.upload-page .new-delivery-source-tabs a.active { color:#fff; background:var(--pa-blue); border-color:var(--pa-blue); border-radius:3px 3px 0 0; }
body.upload-page .new-delivery-source-tabs a:not(.active):hover { background:#e8f1f8; }
body.upload-page .upload-deliveries-panel .delivery-list-head { display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:12px; }
body.upload-page .upload-manage-api-button { flex:0 0 auto; white-space:nowrap; }
body.upload-page .api-manage-delete { display:inline-flex; margin:0; }
body.upload-page .api-manage-delete button { white-space:nowrap; }
body.upload-page:has(.new-delivery-flow-heading) .upload-grid.upload-file-grid { margin-top:0; }
@media (max-width:700px) {
 body.upload-page .new-delivery-source-tabs a { flex:1 1 auto; text-align:center; padding:10px 8px; }
 body.upload-page .new-delivery-flow-heading .delivery-stepper { font-size:11px; }
}

/* v126_66_31: API management resources and edge-to-edge white panel */
body.upload-page .upload-content-scroll:has(> .api-connections-manage-panel) {
  padding-right: 0 !important;
  scrollbar-gutter: auto;
}
body.upload-page .api-connections-manage-panel {
  width: 100% !important;
  max-width: none !important;
  margin-right: 0 !important;
}
body.upload-page .api-connections-manage-panel .admin-rtable .col-actions {
  min-width: 195px;
}
body.upload-page .api-connections-manage-panel .api-action-buttons {
  display: flex;
  align-items: center;
  gap: 6px;
}
body.upload-page .api-connections-manage-panel .api-manage-delete {
  display: flex;
  align-items: stretch;
  align-self: stretch;
  flex: 1 1 0;
  min-width: 0;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}
body.upload-page .api-connections-manage-panel .api-action-buttons > .button,
body.upload-page .api-connections-manage-panel .api-manage-delete .button {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  height: 38px !important;
  min-height: 38px !important;
  line-height: 1.3;
  white-space: nowrap !important;
  font-size: 14px !important;
  padding-left: 5px !important;
  padding-right: 5px !important;
  padding-top: 6px !important;
  padding-bottom: 6px !important;
  margin: 0 !important;
}
body.upload-page .api-resources {
  min-width: 0;
}
body.upload-page .api-resources-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
body.upload-page .api-resources-heading h3 { margin: 0 !important; }
body.upload-page .api-resources-heading .api-manual-button {
  margin-left: auto;
  background: var(--pa-blue) !important;
  color: #fff !important;
  border: 1px solid var(--pa-blue) !important;
  font-weight: 700;
  white-space: nowrap;
  text-decoration: none;
}
body.upload-page .api-resources .api-resources-heading a.api-manual-button.primary:hover:not(:disabled):not([aria-disabled="true"]),
body.upload-page .api-resources .api-resources-heading a.api-manual-button.primary:focus-visible {
  background: #fff !important;
  color: var(--pa-blue) !important;
}
body.upload-page .api-templates-dataset-label {
  display: flex;
  flex-direction: column;
  max-width: 530px;
  gap: 5px;
  font-weight: 600;
  color: var(--pa-blue);
}
body.upload-page .api-templates-dataset-select {
  display: block;
  width: 100%;
  max-width: 530px;
  min-width: 0;
  color: var(--pa-text);
  font-weight: 400;
}
body.upload-page .api-resource-dataset {
  padding-top: 5px;
}
body.upload-page .api-resource-dataset[hidden] { display: none !important; }
body.upload-page .api-resource-dataset .template-actions {
  margin: 8px 0 0;
  flex-wrap: wrap;
}
@media (max-width: 680px) {
  body.upload-page .api-resources-heading { align-items: flex-start; }
  body.upload-page .api-templates-dataset-label { max-width: 100%; }
}

/* v126_66_32: de algemene API-handleiding blijft zichtbaar in beheer,
   maar de templatesectie hoort uitsluitend bij een nieuwe aanlevering. */
body.upload-page .api-connections-manage-panel .delivery-list-head {
  align-items: center; flex-wrap: wrap;
}
body.upload-page .api-connections-manage-panel .delivery-list-head .api-manual-button {
  margin-left: auto; background: var(--pa-blue) !important; color: #fff !important;
  border: 1px solid var(--pa-blue) !important; font-weight: 700;
  white-space: nowrap; text-decoration: none;
}
body.upload-page .api-connections-manage-panel .delivery-list-head a.api-manual-button.primary:hover:not(:disabled):not([aria-disabled="true"]),
body.upload-page .api-connections-manage-panel .delivery-list-head a.api-manual-button.primary:focus-visible {
  background: #fff !important; color: var(--pa-blue) !important;
}

/* v126_66_34 - Topright navigation, short mapping summary, explicit actions */
body.upload-page .upload-entry-nav .upload-header-actions { margin-left:auto; display:flex; align-items:center; justify-content:flex-end; gap:8px; }
body.upload-page .upload-entry-nav .upload-entry-back,
body.upload-page .upload-entry-nav .upload-header-actions .upload-entry-back { margin-left:0 !important; flex:0 0 auto; }
body.upload-page .upload-entry-nav .upload-header-actions .button { min-height:42px; padding:9px 16px; box-sizing:border-box; }
body.upload-page .mapping-failure-summary { font-weight:600; margin:8px 0 14px; }
body.upload-page .mapping-failure-instruction { border:1px solid #b1d2eb; background:#eef6fc; color:#183b5f; border-radius:4px; padding:12px 14px; margin:12px 0 0; }
body.upload-page .mapping-failure-instruction::before { display:none !important; }
body.upload-page .mapping-failure-instruction p { margin:7px 0 0; line-height:1.5; }
body.upload-page .mapping-failure-choice-actions .mapping-feedback-download-form { display:inline-flex; margin:0; padding:0; border:0; }
body.upload-page .mapping-failure-choice-actions .button { min-height:40px; }
body.upload-page .delivery-notices-dialog .mapping-failure-choice-actions { margin-top:16px; }
@media(max-width:700px){
 body.upload-page .upload-entry-nav .upload-header-actions { flex-wrap:wrap; }
 body.upload-page .mapping-failure-choice-actions .mapping-feedback-download-form { width:100%; }
 body.upload-page .mapping-failure-choice-actions .mapping-feedback-download-form .button { width:100%; }
}

/* v126_66_35 - eenduidige Veldmapping/Problemen weergave. */
body.upload-page .mapping-view-switcher {
  display:flex;align-items:center;flex-wrap:wrap;gap:8px;
  padding:8px 0 12px;background:#fff;
}
body.upload-page .mapping-view-switcher .button {
  min-height:40px;padding:8px 14px;border:1px solid var(--pa-blue);
  background:#fff;color:var(--pa-blue);font-weight:600;
}
body.upload-page .mapping-view-switcher .button.is-active {
  background:var(--pa-blue);color:#fff;
}
body.upload-page .mapping-view-switcher .button:hover,
body.upload-page .mapping-view-switcher .button:focus-visible {
  background:var(--pa-blue);color:#fff;
}
body.upload-page .mapping-view-switcher .button.is-active:hover,
body.upload-page .mapping-view-switcher .button.is-active:focus-visible {
  background:#fff;color:var(--pa-blue);
}
body.upload-page .mapping-error-sticky-region[hidden],
body.upload-page form.mapping-step-form[hidden],
body.upload-page .mapping-confirm-button[hidden] {display:none !important;}
body.upload-page .mapping-view-switcher + .mapping-error-sticky-region {margin-top:0;}
body.upload-page .mapping-view-switcher + .mapping-error-sticky-region .mapping-error-details {
  margin:0;max-width:100%;
}
@media(max-width:520px){
 body.upload-page .mapping-view-switcher .button {flex:1 1 auto;}
}


/* v126_66_37: de bronselectie en gesplitste koppeling zijn compacte stappen.
   Grote mapping-/resultatentabellen blijven schermvullend. */
body.upload-page.delivery-workspace-page .workflow-panel.delivery-workspace.delivery-workspace-compact {
  flex: 0 1 auto !important;
  height: auto !important;
  max-height: 100% !important;
}
body.upload-page.delivery-workspace-page .delivery-workspace-compact .delivery-workspace-scroll {
  flex: 0 1 auto !important;
  min-height: 0;
  overflow-y: auto;
  scrollbar-gutter: auto;
}
body.upload-page.delivery-workspace-page .delivery-workspace-compact .delivery-workspace-actions {
  flex: 0 0 auto;
  min-height: 0;
}
/* Laat het witte paneel over de rechterzijstrook van de werkruimte lopen,
   maar laat de landschapsachtergrond ONDER een compacte stap zichtbaar. */
body.upload-page.delivery-workspace-page .workflow-panel.delivery-workspace {
  width: calc(100% + 12px) !important;
  max-width: none !important;
  margin-right: -12px !important;
}
/* Stap 1: bevestigen links, annuleren rechts op exact dezelfde knoppenrij. */
body.upload-page .upload-worksheet-step-actions {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 !important;
}
body.upload-page .upload-worksheet-step-actions > form.delivery-cancel-form {
  margin: 0 0 0 auto !important;
  padding: 0 !important;
  border: 0 !important;
}
body.upload-page .upload-worksheet-step-actions > .button,
body.upload-page .upload-worksheet-step-actions > form.delivery-cancel-form .button,
body.upload-page .split-join-actions > .button,
body.upload-page .split-join-actions > form.delivery-cancel-form .button {
  min-height: 38px;
  box-sizing: border-box;
}
/* Stap 2: dezelfde links/rechts-opstelling als de databladbevestiging. */
body.upload-page .split-join-choice .split-join-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
}
body.upload-page .split-join-choice .split-join-actions > form.delivery-cancel-form {
  margin-left: auto !important;
}
/* De annuleerknop in beide stappen volgt de uniforme wit/rode stijl. */
body.upload-page .split-join-choice .delivery-cancel-form .button.danger-outline:hover:not(:disabled),
body.upload-page .split-join-choice .delivery-cancel-form .button.danger-outline:focus-visible {
  background: #a0001c !important;
  border-color: #a0001c !important;
  color: #fff !important;
}
@media (max-width: 600px) {
  body.upload-page .upload-worksheet-step-actions,
  body.upload-page .split-join-choice .split-join-actions { flex-wrap: wrap; }
}

/* v126_66_38: rustige startpagina, compacte nieuwe aanlevering en volledig witte stappen. */
body.upload-page .upload-content-scroll:has(> .upload-deliveries-panel.is-empty){display:block!important;overflow-y:auto!important;padding-right:0!important;scrollbar-gutter:auto!important}
body.upload-page .upload-deliveries-panel.is-empty{display:flex!important;flex-direction:column;flex:0 0 auto!important;min-height:0!important;height:auto!important;max-width:820px!important;width:100%!important;box-sizing:border-box;padding:18px!important;margin:0!important}
body.upload-page .upload-deliveries-panel.is-empty .upload-new-delivery-action{margin-top:18px!important;padding-top:8px!important}
body.upload-page .new-delivery-flow-heading{background:#fff!important;position:relative;z-index:1;padding:8px 10px 4px!important}
body.upload-page .new-delivery-flow-heading .delivery-stepper,
body.upload-page .new-delivery-flow-heading .new-delivery-workflow-nav,
body.upload-page .new-delivery-source-tabs{background:#fff!important}
body.upload-page .upload-primary-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:end}
body.upload-page .upload-primary-fields .round-reference-readonly{min-height:0;margin:0!important;box-sizing:border-box}
body.upload-page .upload-file-grid .upload-form.js-file-upload-form{gap:9px!important}
body.upload-page .upload-file-grid .panel{padding:13px 16px!important}
body.upload-page .upload-file-grid .panel>h2{margin:0 0 10px!important}
body.upload-page .upload-file-grid .upload-form label{gap:4px!important}
body.upload-page .upload-file-grid .upload-form select{padding:7px 10px!important;min-height:38px}
body.upload-page .upload-file-grid .upload-form .upload-dataset-select select{background:var(--pa-blue)!important;color:#fff!important;border-color:var(--pa-blue)!important;font-weight:650!important}
body.upload-page .upload-file-grid .upload-form .upload-dataset-select select option{background:#fff;color:#172d45}
body.upload-page .upload-file-grid .upload-mode-block{padding:7px 10px 9px!important;margin:0!important}
body.upload-page .upload-file-grid .upload-mode-block .upload-mode-select-wrap{display:block}
body.upload-page .upload-file-grid .upload-template-block{padding:6px 9px 8px!important;margin:0!important}
body.upload-page .upload-file-grid .upload-file-field{padding:7px 10px!important}
body.upload-page .upload-file-grid .upload-file-field small{font-size:11px;line-height:1.2}
body.upload-page .upload-file-grid .upload-form .button.primary{min-height:37px}
body.upload-page.delivery-workspace-page .upload-content-scroll{padding-right:0!important;scrollbar-gutter:auto!important}
body.upload-page.delivery-workspace-page .workflow-panel.delivery-workspace{width:100%!important;max-width:100%!important;margin:0!important;box-sizing:border-box!important}
body.upload-page .mapping-error-details .mapping-feedback-download-form{margin-top:14px;display:inline-flex}
body.upload-page .mapping-error-details .mapping-feedback-download-form .button{background:var(--pa-blue)!important;border-color:var(--pa-blue)!important;color:#fff!important;font-weight:700}
body.upload-page .mapping-error-details .mapping-feedback-download-form .button:hover,
body.upload-page .mapping-error-details .mapping-feedback-download-form .button:focus-visible{background:#fff!important;color:var(--pa-blue)!important}
body.upload-page .mapping-save-draft-button{background:#fff!important;color:var(--pa-blue)!important;border:1px solid var(--pa-blue)!important;font-weight:700}
body.upload-page .mapping-save-draft-button:hover{background:var(--pa-blue)!important;color:#fff!important}
@media(max-width:700px){body.upload-page .upload-primary-fields{grid-template-columns:1fr}body.upload-page .upload-deliveries-panel.is-empty{max-width:100%!important}}

body.upload-page .mapping-crs-detected {border:1px solid #bad4e7;padding:10px 13px;background:#edf6fc;color:var(--pa-blue)}
body.upload-page .mapping-crs-detected small {margin-left:8px;color:#486477}

body.upload-page .format-crs-assessment{margin:10px 0!important}
body.upload-page .format-crs-assessment p{margin:6px 0 9px}
body.upload-page .format-crs-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
body.upload-page .format-crs-form label{display:grid;gap:5px;min-width:245px;font-weight:600;color:var(--pa-blue)}
body.upload-page .format-crs-form select{padding:8px 10px;background:#fff;border:1px solid #8ca8c0;min-height:38px}

/* v126_66_38: geen fotostrook naast bestaande leveringsstappen. */
body.upload-page.delivery-workspace-page main.shell,
body.upload-page.delivery-workspace-page .shell{padding-right:0!important}
body.upload-page.delivery-workspace-page .upload-module-fixed-head{padding-right:16px;box-sizing:border-box}

body.upload-page .mapping-save-draft-button[hidden]{display:none!important}


/* v126_66_39: rustige lege startpagina, zonder dubbele buttonregel. */
body.upload-page .upload-deliveries-panel.is-empty .upload-new-delivery-action {
  display:flex!important;justify-content:space-between!important;align-items:center!important;
  gap:12px!important;flex-wrap:wrap!important;margin-top:18px!important;
}
body.upload-page .upload-deliveries-panel.is-empty .upload-manage-api-button {
  margin-left:auto!important;min-height:40px;display:inline-flex;align-items:center;
}
/* Nieuwe levering: voortgang en Alle leveringen delen dezelfde WITTE balk,
   direct onder de paginatitel; tabs staan aansluitend onder die balk. */
body.upload-page .upload-module-fixed-head:has(.upload-new-flow-nav) {
  width:100%!important;max-width:100%!important;margin:0!important;padding:0!important;
  box-sizing:border-box!important;background:#fff!important;
}
body.upload-page .upload-tabs.upload-entry-nav.upload-new-flow-nav {
  width:100%!important;max-width:100%!important;box-sizing:border-box!important;
  display:flex!important;align-items:center!important;gap:12px!important;
  margin:0!important;padding:2px 8px 5px!important;
  justify-content:space-between!important;background:#fff!important;
}
body.upload-page .upload-new-flow-nav .new-delivery-workflow-nav {
  min-width:0;flex:1 1 auto;margin:0!important;padding:0!important;background:#fff!important;
}
body.upload-page .upload-new-flow-nav .new-delivery-workflow-nav .delivery-stepper {
  background:#fff!important;margin:0!important;padding:0!important;
}
body.upload-page .upload-new-flow-nav .upload-entry-back {flex:0 0 auto!important;margin-left:8px!important;}
body.upload-page .upload-module-fixed-head:has(.upload-new-flow-nav) .new-delivery-flow-heading {
  background:#fff!important;padding:0 8px!important;margin:0!important;box-sizing:border-box;
}
body.upload-page .upload-module-fixed-head:has(.upload-new-flow-nav) .new-delivery-source-tabs {
  background:#fff!important;margin:0 0 9px!important;padding:0!important;
}
body.upload-page .upload-module-fixed-head:has(.upload-new-flow-nav) + .upload-content-scroll {padding-right:0!important;}
body.upload-page .upload-file-grid .upload-form .upload-dataset-select select {
  background:#fff!important;color:#172d45!important;border-color:#829bad!important;font-weight:400!important;
}
/* Veldmapping wordt al bij de eerste paint verborgen totdat de DOM-omzetting
   klaar is. Daarmee verdwijnt het korte verspringen bij openen/conceptopslaan. */
body.upload-page .workflow-panel[data-workspace-boot]:not(.delivery-workspace) {visibility:hidden!important;}
/* Actief/uit: expliciet aria-pressed + data-status zodat eerdere knopregels
   de status niet kunnen wegdrukken. */
body.upload-page .mapping-view-switcher button[data-mapping-view][aria-pressed="true"],
body.upload-page .mapping-view-switcher button[data-mapping-view][data-active="1"] {
  background:var(--pa-blue)!important;color:#fff!important;
  border:1px solid var(--pa-blue)!important;
}
body.upload-page .mapping-view-switcher button[data-mapping-view][aria-pressed="false"],
body.upload-page .mapping-view-switcher button[data-mapping-view][data-active="0"] {
  background:#fff!important;color:var(--pa-blue)!important;
  border:1px solid var(--pa-blue)!important;
}
body.upload-page .delivery-workspace-actions .mapping-problems-footer-download {
  display:inline-flex;flex:0 0 auto;margin:0!important;padding:0!important;border:0!important;
}
body.upload-page .delivery-workspace-actions .mapping-problems-footer-download[hidden] {display:none!important;}
body.upload-page .delivery-workspace-actions .mapping-problems-footer-download .button {
  background:var(--pa-blue)!important;color:#fff!important;border:1px solid var(--pa-blue)!important;
}
body.upload-page .delivery-workspace-actions .mapping-problems-footer-download .button:hover,
body.upload-page .delivery-workspace-actions .mapping-problems-footer-download .button:focus-visible {
  background:#fff!important;color:var(--pa-blue)!important;
}
body.upload-page .mapping-crs-top {margin:0 0 8px!important;}
@media(max-width:750px){
 body.upload-page .upload-tabs.upload-entry-nav.upload-new-flow-nav{align-items:flex-start!important;flex-direction:column!important;}
 body.upload-page .upload-new-flow-nav .new-delivery-workflow-nav{width:100%!important;}
 body.upload-page .upload-new-flow-nav .upload-entry-back{margin-left:auto!important;}
}
/* Feedback en annuleren delen tijdens Problemen exact dezelfde verticale lijn. */
body.upload-page .delivery-workspace-actions:has(.mapping-problems-footer-download:not([hidden])) .result-actions {
  padding-top:0!important;border-top:0!important;margin:0!important;
}
/* Op laptopbreedtes mag de algemene verticale mobiele stepper de nieuwe
   vijfstappenbalk niet in een hoge kolom veranderen. */
body.upload-page .upload-new-flow-nav .new-delivery-workflow-nav .delivery-stepper {
  display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:4px!important;
}
@media(max-width:560px){
  body.upload-page .upload-new-flow-nav .new-delivery-workflow-nav{overflow-x:auto;}
  body.upload-page .upload-new-flow-nav .new-delivery-workflow-nav .delivery-stepper{
    min-width:580px;gap:3px!important;
  }
}
@media(min-width:751px){
 body.upload-page .upload-tabs.upload-entry-nav.upload-new-flow-nav {
   flex-direction:row!important;flex-wrap:nowrap!important;
 }
 body.upload-page .upload-new-flow-nav .new-delivery-workflow-nav {
   width:auto!important;flex:1 1 0!important;
 }
}


/* v126_66_45: normale leesgrootte (16px) op de lege Leveringen-startpagina.
   Alleen de kop, beschrijving en leegmelding; knopmaten blijven ongewijzigd. */
body.upload-page .upload-deliveries-panel.is-empty .delivery-list-head h2,
body.upload-page .upload-deliveries-panel.is-empty .delivery-list-head p.muted,
body.upload-page .upload-deliveries-panel.is-empty > p.muted {
  font-size:16px !important;
  line-height:1.5 !important;
}
body.upload-page .upload-deliveries-panel.is-empty .delivery-list-head p.muted,
body.upload-page .upload-deliveries-panel.is-empty > p.muted {
  color:var(--pa-text) !important;
}


/* v126_66_46: mapping table alternating rows and explicit semantic review. */
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr:nth-child(odd) td {background-color:#fff;}
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr:nth-child(even) td {background-color:#eef5fb;}
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr.mapping-zebra-blue td {background-color:#eef5fb;}
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr.mapping-zebra-white td {background-color:#fff;}
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr.mapping-low-confidence-pending td {background-color:#fff1bd !important;border-top-color:#e8bc54;}
body.upload-page .mapping-confidence-ack {display:flex;gap:9px;align-items:flex-start;margin-top:7px;padding:8px;border:1px solid #d9a33a;border-radius:4px;background:#fff7dc;color:#42320c;font-size:13px;line-height:1.35;cursor:pointer;}
body.upload-page .mapping-confidence-ack input {width:17px;height:17px;flex-shrink:0;margin-top:2px;}
body.upload-page .mapping-confidence-ack[hidden] {display:none !important;}
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr:hover td {box-shadow:inset 0 0 0 1px rgba(23,73,119,.18);}


/* v126_66_48: live mapping scores and reversible warnings within the source column. */
body.upload-page .mapping-attention-only tr[data-mapping-review-kind="ready"] {display:none !important;}
body.upload-page .mapping-confidence-ack {
  display:flex; align-items:center; gap:7px;
  min-width:0; width:100%; max-width:100%; box-sizing:border-box;
  margin-top:6px; padding:6px 7px; font-size:13px; line-height:1.3;
  overflow-wrap:anywhere;
}
body.upload-page .mapping-confidence-ack input[type="checkbox"] {
  flex:0 0 17px; width:17px; height:17px; margin:0;
}
body.upload-page .mapping-confidence-ack span { min-width:0; flex:1 1 auto; white-space:normal; overflow-wrap:anywhere; }
body.upload-page .mapping-source-cell {min-width:0;}
body.upload-page .mapping-error-details tbody tr[hidden] {display:none !important;}


/* v126_66_49: keep checked warnings in the review until full confirmation,
   and show a compact inline accept button in the proposed-source cell. */
/* Confirmed warnings should not tint the entire row: restore zebra colors.
   Only the chosen-source cell stays pale yellow while the warning is acknowledged. */
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr.mapping-low-confidence:not(.mapping-low-confidence-pending) td.mapping-source-cell {
  background-color:#fff8e2 !important;
}
body.upload-page .mapping-proposal-content {display:flex;align-items:center;justify-content:space-between;gap:9px;min-width:0;}
body.upload-page .mapping-proposal-content code {min-width:0;overflow-wrap:anywhere;}
body.upload-page .mapping-adopt-suggestion {
  flex:0 0 30px;width:30px;height:30px;padding:0;border:1px solid #194777;border-radius:4px;
  background:#fff;color:#194777;font:700 19px/1 sans-serif;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
}
body.upload-page .mapping-adopt-suggestion:hover:not(:disabled),
body.upload-page .mapping-adopt-suggestion:focus-visible {background:#194777;color:#fff;}
body.upload-page .mapping-adopt-suggestion:disabled {opacity:.45;cursor:not-allowed;}
body.upload-page .mapping-adopt-suggestion[hidden] {display:none !important;}

/* v126_66_49: empty mandatory mapping cells highlighted (only source cell),
   removed immediately once a source is chosen, leaving normal zebra rows. */
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr td.mapping-source-cell.mapping-required-empty {
  background:#ffebee !important;
  box-shadow:inset 0 0 0 1px #efb9c2;
}
body.upload-page .upload-mapping-smart-table .admin-rtable tbody tr:hover td.mapping-source-cell.mapping-required-empty {
  box-shadow:inset 0 0 0 1px #df9fa8;
}


/* v126_66_52: bronveldkeuze rechts van voorgestelde velden op desktop. */
@media (min-width: 1200px) {
  body.upload-page dialog.mapping-source-menu {
    inset: auto !important;
    left: min(calc(50vw + 40px), calc(100vw - 720px)) !important;
    top: 50% !important;
    right: auto !important;
    bottom: auto !important;
    transform: translateY(-50%) !important;
    margin: 0 !important;
  }
}
/* Leegmaken/niet mappen is een expliciete risicokeuze: rood tot geselecteerd. */
body.upload-page dialog.mapping-source-menu .mapping-source-special-option:not(.is-selected) .mapping-source-option,
body.upload-page dialog.mapping-source-menu .mapping-source-special-option:not(.is-selected) .mapping-source-option-name {
  color: #b4232e !important;
}
body.upload-page dialog.mapping-source-menu .mapping-source-special-option.is-selected .mapping-source-option,
body.upload-page dialog.mapping-source-menu .mapping-source-special-option.is-selected .mapping-source-option-name {
  color: #fff !important;
}
/* Extra vorige-stapnavigatie staat links boven de vijf stappen. */
body.upload-page .upload-entry-nav .upload-stage-back {
  margin:0 auto 0 0 !important;
  white-space:nowrap;
  flex:0 0 auto;
}
body.upload-page .upload-entry-nav:has(.upload-stage-back) {justify-content:space-between !important;}
/* Stap 3: Levering annuleren links, de twee beslisknoppen rechts. */
body.upload-page .mapping-step-view .result-actions-danger { order:0; margin:0 auto 0 0 !important; }
body.upload-page .mapping-step-view .result-actions-main { order:1; margin-left:auto; }
/* Stap 1: werkbladbevestiging rechts, annuleren links. */
body.upload-page .upload-worksheet-step-actions > form.delivery-cancel-form {order:0; margin:0 auto 0 0 !important;}
body.upload-page .upload-worksheet-step-actions > .button {order:1; margin-left:auto;}
/* Stap 2: vergelijkbare opstelling bij gesplitste bron en de doorstapactie. */
body.upload-page .split-join-choice .split-join-actions > form.delivery-cancel-form {order:0; margin:0 auto 0 0 !important;}
body.upload-page .split-join-choice .split-join-actions > .button {order:1; margin-left:auto;}
body.upload-page .delivery-workspace-actions > .workflow-actions:not(.upload-worksheet-step-actions):not(.split-join-actions) {
  order:2; justify-content:flex-end; margin-left:auto;
}
body.upload-page .delivery-workspace-actions > form.delivery-cancel-form {order:0; margin-right:auto;}
@media (max-width: 760px) {
  body.upload-page .mapping-step-view .result-actions-danger,
  body.upload-page .mapping-step-view .result-actions-main {margin-left:0!important;width:100%;}
  body.upload-page .upload-entry-nav:has(.upload-stage-back){flex-wrap:wrap;}
}

/* v126_66_52: vaste actieknoppen volgens de navigatierichting. */
body.upload-page .delivery-workspace-actions .result-actions {display:flex;align-items:center;justify-content:space-between;width:100%;}
body.upload-page .delivery-workspace-actions .result-actions-danger {order:0;margin:0 auto 0 0!important;}
body.upload-page .delivery-workspace-actions .result-actions-main {order:1;margin:0 0 0 auto!important;display:flex;justify-content:flex-end;align-items:center;gap:8px;}
body.upload-page .delivery-workspace-actions .workflow-actions {display:flex;align-items:center;justify-content:flex-end;gap:8px;}
body.upload-page .delivery-workspace-actions .workflow-actions .delivery-cancel-form {order:-1;margin:0 auto 0 0!important;}
body.upload-page .delivery-workspace-actions .workflow-actions .button[form] {margin-left:auto;}
body.upload-page .upload-tabs.upload-entry-nav:has(.upload-stage-back) {justify-content:space-between!important;}
body.upload-page .upload-tabs.upload-entry-nav .upload-stage-back {margin-right:auto!important;}
@media(max-width:760px){
 body.upload-page .delivery-workspace-actions .result-actions {flex-wrap:wrap;gap:8px;}
 body.upload-page .delivery-workspace-actions .result-actions-danger,
 body.upload-page .delivery-workspace-actions .result-actions-main {margin-left:0!important;}
}


/* v126_66_53: narrow chosen confidence, more space for the proposal, bounded
   multiline explanations. All other initial column widths stay unchanged. */
body.upload-page .upload-mapping-smart-table .mapping-cell-clamp {
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;
  overflow:hidden;text-overflow:ellipsis;white-space:normal;overflow-wrap:anywhere;
  line-height:1.3;max-height:3.9em;min-width:0;max-width:100%;
}
body.upload-page .upload-mapping-smart-table .mapping-proposal-content code {flex:1 1 auto;}
body.upload-page .upload-mapping-smart-table .admin-rtable tbody td:nth-child(4),
body.upload-page .upload-mapping-smart-table .admin-rtable tbody td:nth-child(6) {white-space:normal;}
body.upload-page .upload-mapping-smart-table .admin-rtable th:last-child .th-label {
  white-space:normal;overflow-wrap:anywhere;padding:0!important;line-height:1.15;
}
body.upload-page .upload-mapping-smart-table .admin-rtable th:last-child,
body.upload-page .upload-mapping-smart-table .admin-rtable td:last-child {padding-left:7px;padding-right:7px;}
body.upload-page .mapping-review-tools select[data-mapping-review-mode] {max-width:min(440px,100%);}

/* v126_66_54: problem tab always available, actions aligned with cancel. */
body.upload-page .mapping-view-switcher button[data-mapping-view="problems"].is-empty {
  background:#eef3f8!important;color:#65778c!important;border-color:#d6e0eb!important;
}
body.upload-page .mapping-view-switcher button[data-mapping-view="problems"].is-empty:hover,
body.upload-page .mapping-view-switcher button[data-mapping-view="problems"].is-empty:focus-visible {
  background:#e0e9f3!important;color:var(--pa-blue)!important;
}
body.upload-page .mapping-failure-choice-actions [data-mapping-errors-toggle],
body.upload-page .delivery-workspace-actions .mapping-problems-footer-adjust {
  background:var(--pa-blue)!important;color:#fff!important;border-color:var(--pa-blue)!important;
}
body.upload-page .delivery-workspace-actions .mapping-problems-footer-download .button {
  background:#fff!important;color:var(--pa-blue)!important;border-color:var(--pa-blue)!important;
}
body.upload-page .delivery-workspace-actions .mapping-problems-footer-download .button:hover:not(:disabled),
body.upload-page .delivery-workspace-actions .mapping-problems-footer-download .button:focus-visible {
  background:var(--pa-blue)!important;color:#fff!important;
}
body.upload-page .mapping-failure-choice-actions [data-mapping-errors-toggle]:hover,
body.upload-page .mapping-failure-choice-actions [data-mapping-errors-toggle]:focus-visible,
body.upload-page .delivery-workspace-actions .mapping-problems-footer-adjust:hover,
body.upload-page .delivery-workspace-actions .mapping-problems-footer-adjust:focus-visible {
  background:#fff!important;color:var(--pa-blue)!important;
}
body.upload-page .mapping-problems-footer-adjust[hidden],
body.upload-page .mapping-error-sticky-message[hidden],
body.upload-page .mapping-problems-empty[hidden],
body.upload-page .delivery-workspace-problem[hidden] {display:none!important;}

/* v126_66_60: zes resultaatmetingen en koppen buiten de afgeronde detailkaart. */
body.upload-page .validation-metrics { grid-template-columns:repeat(6,minmax(0,1fr)); }
body.upload-page .validation-rule-card summary { border-radius:4px; }
@media(max-width:980px){body.upload-page .validation-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }}
@media(max-width:600px){body.upload-page .validation-metrics { grid-template-columns:1fr; }}
/* De detailtabellen behouden hun kop ook bij een smaller scherm. */
body.upload-page .validation-rule-findings .pa-sticky-table-host { overflow:visible !important; }
body.upload-page .validation-rule-findings .pa-sticky-table thead th { position:relative !important; top:auto !important; }
body.upload-page .validation-rule-findings .pa-sticky-table-host.pa-sticky-active .pa-sticky-table thead th { position:sticky !important; top:var(--pa-table-sticky-top,0px) !important; }


/* v128.14: six workflow stages, no wrapping at desktop widths. */
body.upload-page .delivery-workflow-nav .delivery-stepper.pa-stepper-six {
  display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr))!important;
  gap:3px!important;width:100%!important;min-width:0;margin:0;
}
body.upload-page .delivery-workflow-nav .delivery-stepper.pa-stepper-six li {
  min-width:0!important;white-space:nowrap;
}
body.upload-page .delivery-workflow-nav .delivery-stepper.pa-stepper-six li:last-child {
  justify-self:end;
}
body.upload-page .delivery-workflow-nav .delivery-stepper.pa-stepper-six .step-label {
  overflow:hidden;text-overflow:ellipsis;
}
body.upload-page .delivery-workflow-nav .delivery-stepper.pa-stepper-six li > a,
body.upload-page .delivery-workflow-nav .delivery-stepper.pa-stepper-six li > span {
  gap:5px;padding-left:4px;padding-right:4px;min-width:0;
}
@media(max-width:920px){
  body.upload-page .delivery-workflow-nav:has(.pa-stepper-six){overflow-x:auto;overscroll-behavior-x:contain;}
  body.upload-page .delivery-workflow-nav .delivery-stepper.pa-stepper-six{min-width:760px!important;}
}

/* v128.14: step 5 compact launch and full-viewport ArcGIS dialog. */
body.upload-page .pa-geo-launch {
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:16px 18px;margin:10px 0 8px;
  background:#f0f5fa;border:1px solid #d4e0eb;border-radius:8px;
}
body.upload-page .pa-geo-launch-text {display:flex;flex-direction:column;gap:4px;min-width:0;}
body.upload-page .pa-geo-launch-text strong{font-size:16px;color:#154273;}
body.upload-page .pa-geo-launch-text span{font-size:13px;line-height:1.45;color:#46596c;}
body.upload-page .pa-geo-open{white-space:nowrap;flex-shrink:0;}
body.upload-page .pa-geo-alt{font-size:12px;color:#5c6d7d;margin:6px 0 12px;}
body.upload-page .pa-geo-context-caption{margin:10px 0;}
body.upload-page .pa-geo-context-picker{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;}
body.upload-page .pa-geo-confirm{padding:12px 14px;margin:12px 0;border:1px solid #cfdfeb;border-radius:8px;}
body.upload-page .pa-geo-confirm label{display:flex;align-items:flex-start;gap:10px;}
body.upload-page .pa-geo-confirm input[type=checkbox]{margin-top:4px;flex-shrink:0;}
body.upload-page .pa-geo-actions{margin-top:12px;}
body.upload-page dialog.pa-geo-modal {
  position:fixed!important;inset:0!important;
  width:calc(100vw - 20px)!important;max-width:none!important;
  height:calc(100vh - 20px)!important;height:calc(100dvh - 20px)!important;
  max-height:none!important;margin:auto!important;padding:0!important;
  overflow:hidden!important;border:1px solid #8da6bb!important;border-radius:8px!important;
  background:#fff!important;box-shadow:0 16px 55px rgba(9,31,58,.3)!important;
  flex-direction:column;box-sizing:border-box;z-index:9999;
}
body.upload-page dialog.pa-geo-modal:not([open]){display:none!important;}
body.upload-page dialog.pa-geo-modal[open]{display:flex!important;}
body.upload-page dialog.pa-geo-modal::backdrop{background:rgba(11,29,49,.72);}
body.upload-page .pa-geo-modal-header{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  flex:0 0 auto;min-height:57px;box-sizing:border-box;padding:8px 15px;
  background:#fff;border-bottom:1px solid #d3e0eb;
}
body.upload-page .pa-geo-modal-heading{display:flex;flex-direction:column;gap:2px;}
body.upload-page .pa-geo-modal-heading strong{font-size:17px;color:#154273;}
body.upload-page .pa-geo-modal-heading span{font-size:12px;color:#5a6977;}
body.upload-page .pa-geo-close{white-space:nowrap;}
body.upload-page .pa-geo-modal-content{flex:1 1 auto;min-height:0;width:100%;overflow:hidden;}
body.upload-page .pa-geo-modal-content .pa-geo-iframe{
  width:100%!important;height:100%!important;min-height:0!important;border:0;display:block;
}
@media(max-width:700px){
  body.upload-page .pa-geo-launch{flex-direction:column;align-items:flex-start;gap:10px;}
  body.upload-page dialog.pa-geo-modal{width:100vw!important;height:100vh!important;height:100dvh!important;border-radius:0!important;border:0!important;}
}

/* v128.14: clear, centered geovalidation completion on step 6. */
body.upload-page .pa-geo-completed {
  display:flex;justify-content:center;align-items:center;gap:14px;
  max-width:660px;width:100%;margin:14px auto 16px;padding:18px 24px;
  border:1px solid #a4d6b3;border-radius:9px;background:#f0f9f2;
  box-sizing:border-box;color:#14652d;text-align:left;
}
body.upload-page .pa-geo-completed-icon{
  display:grid;place-items:center;flex:0 0 43px;
  height:43px;background:#18823d;color:#fff;border-radius:50%;
  font-size:26px;font-weight:700;
}
body.upload-page .pa-geo-completed > div{display:flex;flex-direction:column;gap:4px;}
body.upload-page .pa-geo-completed strong{font-size:18px;line-height:1.25;}
body.upload-page .pa-geo-completed > div span{font-size:12px;line-height:1.4;color:#315f40;}
body.upload-page .pa-result-next-actions .result-actions-main{display:flex;gap:9px;flex-wrap:wrap;}
/* PlanAtlas v128.15: zesstaps-workflow, geovalidatie, rollen, leveringen */
.site-nav a:not(.button){display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.site-nav .pa-nav-icon{width:15px;height:15px;flex:none;vertical-align:middle;}
.site-nav .pa-nav-role{
  display:inline-flex;align-items:center;border-radius:999px;border:1px solid #b2c8dd;
  background:#eff5fb;color:#174573;font-size:12px;font-weight:700;padding:5px 10px;
  line-height:1.3;margin-right:6px;white-space:nowrap;
}
@media(max-width:1100px){.site-nav a:not(.button){padding:7px 6px;font-size:12px;}.site-nav{gap:2px;}}
body.upload-page .delivery-list-row-actions{display:flex!important;align-items:center;gap:5px;flex-wrap:nowrap;}
body.upload-page .delivery-list-row-actions>a.button,
body.upload-page .delivery-list-row-actions>form,
body.upload-page .delivery-list-row-actions>.pa-delivery-delete-disabled{width:95px!important;min-width:95px!important;max-width:95px!important;box-sizing:border-box;flex:0 0 95px!important;}
body.upload-page .delivery-list-row-actions form .button{width:100%!important;box-sizing:border-box;}
body.upload-page .delivery-list-row-actions .button{text-align:center;justify-content:center;}
body.upload-page .pa-delivery-delete-disabled{opacity:.35!important;color:#788596!important;background:#eef0f2!important;border-color:#c3c8cd!important;cursor:not-allowed!important;}
body.upload-page tr.pa-delivery-definitive,body.upload-page tr.pa-delivery-definitive>td{
  background:#e9f8ed!important;box-shadow:none!important;
}
body.upload-page tr.pa-delivery-definitive:hover>td{background:#ddf2e3!important;}
body.upload-page .pa-definitive-label{display:block;margin-top:4px;color:#23683b;font-size:11px;font-weight:700;white-space:nowrap;}
body.upload-page .delivery-status.pending-geo{background:#e9f1ff!important;color:#1a508d!important;border-color:#a8c6e6!important;}
body.upload-page .pa-geo-actions{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px;}
body.upload-page .pa-geo-actions .result-actions-main{order:0!important;margin:0 auto 0 0!important;}
body.upload-page .pa-geo-actions .result-actions-danger{order:1!important;margin:0 0 0 auto!important;}
body.upload-page .pa-geo-actions .button{white-space:nowrap;}
body.upload-page dialog.pa-geo-modal{
  position:fixed!important;inset:4px!important;width:calc(100vw - 8px)!important;
  height:calc(100dvh - 8px)!important;max-width:none!important;max-height:none!important;
  padding:0!important;margin:auto!important;border-radius:8px!important;border:1px solid #aabed3!important;
}
body.upload-page .pa-geo-modal-stagebar{
  display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:center;
  background:white;border-bottom:1px solid #d1e0ed;flex:none;padding:11px 16px;
  gap:5px;box-sizing:border-box;white-space:nowrap;
}
body.upload-page .pa-geo-modal-stagebar>*{
  min-width:0;text-overflow:ellipsis;overflow:hidden;text-align:center;
  color:#315573;font-size:13px;font-weight:600;padding:7px 6px;border-radius:6px;
}
body.upload-page .pa-geo-modal-stagebar>strong{
  background:#103f70;color:white;font-weight:800;box-shadow:0 1px 3px rgba(0,0,0,.08);
}
body.upload-page .pa-geo-modal-header{min-height:46px!important;padding:5px 14px!important;}
body.upload-page .pa-geo-modal-content{height:auto!important;max-height:none!important;flex:1 1 auto!important;min-height:0!important;overflow:hidden!important;}
body.upload-page .pa-geo-modal-content .pa-geo-iframe{height:100%!important;min-height:0!important;}
@media(max-width:900px){
 body.upload-page .pa-geo-modal-stagebar{overflow-x:auto;grid-template-columns:repeat(6,minmax(125px,1fr));}
 body.upload-page .pa-geo-modal-stagebar>*{font-size:12px;}
}
@media(max-width:620px){
 body.upload-page dialog.pa-geo-modal{inset:0!important;width:100vw!important;height:100dvh!important;border-radius:0!important;}
 body.upload-page .pa-geo-actions{flex-wrap:wrap;}
}
body.upload-page .pa-score-info{
 display:inline-flex;align-items:center;justify-content:center;margin-left:5px;
 width:20px;height:20px;padding:0;border-radius:5px;border:1px solid #145a94;
 background:#fff;color:#145a94;font-weight:700;font-size:12px;cursor:pointer;
}
body.upload-page .pa-score-info:hover,body.upload-page .pa-score-info:focus-visible{background:#145a94;color:#fff;}
body.upload-page dialog.pa-score-dialog{
 border:1px solid #9eb9d1;border-radius:12px;width:min(670px,calc(100vw - 28px));
 max-height:86dvh;overflow:auto;padding:0;box-shadow:0 15px 65px rgba(9,36,65,.28);
}
body.upload-page dialog.pa-score-dialog::backdrop{background:rgba(13,34,57,.55);}
body.upload-page .pa-score-dialog-inner{padding:24px 28px;color:#254661;line-height:1.55;}
body.upload-page .pa-score-dialog h3{margin:0 0 12px;color:#124673;}
body.upload-page .pa-score-dialog-actions{display:flex;justify-content:flex-end;margin-top:18px;}
body.upload-page .pa-mapping-readonly{margin-top:12px;}
body.upload-page .pa-mapping-readonly select:disabled,
body.upload-page .pa-mapping-readonly input:disabled,
body.upload-page .pa-mapping-readonly button:disabled{opacity:.8!important;cursor:not-allowed!important;}
body.upload-page .pa-mapping-readonly .pa-score-info:not(:disabled){opacity:1!important;cursor:pointer!important;}
body.upload-page .pa-geo-completed{max-width:720px;}

/* v128.16: keep the shared PlanAtlas navigation visible on long pages. */
body .site-header,body .topbar{
 position:sticky!important;top:0!important;z-index:1100!important;
 width:100%!important;isolation:isolate;
}
/* The role badge stays with the navigation at desktop widths. */
body .site-nav{align-items:center;}
/* Mapping explanation buttons always pin to the right edge of their cell. */
body.upload-page td[data-mapping-proposal-confidence-cell],
body.upload-page td[data-mapping-confidence-cell]{
 position:relative!important;white-space:nowrap;vertical-align:middle;
 padding-right:37px!important;min-width:67px;
}
body.upload-page td[data-mapping-proposal-confidence-cell] .pa-score-info,
body.upload-page td[data-mapping-confidence-cell] .pa-score-info{
 position:absolute!important;right:8px!important;top:50%!important;
 transform:translateY(-50%)!important;margin:0!important;
}

/* v128.17: both layouts use the same sticky, role-aware shared navigation. */
.site-header,.topbar{position:sticky!important;top:0!important;z-index:1200!important;background:#fff!important;isolation:isolate}
.pa-nav-icon{width:15px;height:15px;flex:0 0 15px;vertical-align:-2px;margin-right:6px}
.site-nav a{display:inline-flex;align-items:center;gap:1px;white-space:nowrap}
.site-nav .pa-nav-role{margin-right:auto;white-space:nowrap}
.delivery-list-row-actions{display:flex;align-items:center;gap:5px;white-space:nowrap}
.delivery-list-row-actions .button{min-width:80px!important;max-width:94px;padding-left:9px!important;padding-right:9px!important}

/* v128.18: een niet-ingelogde bezoeker ziet uitsluitend de primaire inlogactie. */
.site-nav a.pa-nav-login{background:#154273!important;color:#fff!important;border:1px solid #154273!important;border-radius:5px;font-weight:700;padding:9px 17px}
.site-nav a.pa-nav-login:hover,.site-nav a.pa-nav-login:focus-visible{background:#fff!important;color:#154273!important}

/* v128.22: plaats de startvalidatie rechts, zonder de overige acties te verplaatsen. */
body.upload-page .pa-validation-action-right{display:flex;justify-content:flex-end;width:100%;}
/* Mappingmelding: herkenbaar PlanAtlas-groen en direct boven de tabel. */
body.upload-page .mapping-attention-clear-notice{display:flex;align-items:center;gap:12px;background:#eff8ec!important;border:1px solid #6dad57!important;border-radius:7px!important;color:#234c24!important;padding:13px 16px!important;margin:8px 0 12px!important;line-height:1.45;min-height:54px;}
body.upload-page .mapping-attention-clear-notice[hidden]{display:none!important;}
body.upload-page .mapping-attention-clear-check{display:inline-flex;justify-content:center;align-items:center;width:27px;height:27px;flex:none;border-radius:50%;background:#267a32;color:white;font-size:16px;font-weight:700;}

/* v128.23: reserve space for e.g. 100% plus a right-aligned information button.
   Horizontal scroll remains available; do not shrink a score cell below its content. */
body.upload-page .upload-mapping-smart-table .admin-rtable th:last-child,
body.upload-page .upload-mapping-smart-table .admin-rtable td[data-mapping-confidence-cell] {
    min-width:112px!important; box-sizing:border-box!important;
}
body.upload-page .upload-mapping-smart-table .admin-rtable td[data-mapping-confidence-cell] {
    padding-right:37px!important; white-space:nowrap!important;
}

/* v128.24: Shared PlanAtlas viewport shell. Keep the logo/contact/privacy
   footer visible while the page's CONTENT scrolls instead of the body.
   Existing Upload and Admin nested scroll workspaces remain in control. */
html { height:100%; overflow:hidden; }
body {
  height:100vh!important;
  height:100dvh!important;
  min-height:0!important;
  overflow:hidden!important;
}
body > .site-header,
body > .topbar,
body > .site-footer {
  flex:0 0 auto!important;
}
body > main.shell,
body > .wrap,
body.auth-form-page > .wrap {
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:auto;
  overscroll-behavior-y:contain;
}
/* Upload and Admin already provide their own independently scrolling panels. */
body.upload-page > main.shell,
body.admin-page > .wrap {
  overflow:hidden!important;
}
/* Let native browser printing paginate the full report and info content. */
@media print {
  html { height:auto!important; overflow:visible!important; }
  body { height:auto!important; min-height:0!important; overflow:visible!important; }
  body > main.shell, body > .wrap, body.auth-form-page > .wrap {
    overflow:visible!important; min-height:auto!important;
  }
}

/* v128.25: PlanAtlas deliberately zooms the desktop BODY to 80% (v0.1.18-v32).
   A 100dvh BODY is therefore physically only 80% of the viewport. Allocate
   125dvh in CSS layout units so 0.8 * 125dvh fills the ACTUAL viewport.
   Preserve the existing specialized admin/upload shell, which already uses
   125vh at zoom=0.8. On mobile (no CSS zoom), 100dvh remains appropriate. */
@media (min-width:901px) {
  @supports (zoom:0.8) {
    body:not(.admin-page):not(.upload-page) {
      height:125vh!important;
      height:125dvh!important;
      min-height:125vh!important;
      min-height:125dvh!important;
    }
  }
}
/* Export/report stylesheets are loaded AFTER app.css and historically declared
   overflow:visible, so they would defeat the shared fixed-footer scroll shell.
   The html ancestor adds specificity regardless of stylesheet load order. */
html body.export-page > main.shell,
html body.report-page > main.shell {
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  overflow-y:auto!important;
  overflow-x:auto!important;
  overscroll-behavior-y:contain;
  scrollbar-gutter:stable;
}

/* v128.28: compensate the established desktop zoom:0.8 for the Geo dialog.
   The 96 CSS-pixel deduction maps to about 77 physical pixels, i.e. roughly
   1 cm on each side on a default 96dpi desktop. The dialog remains centered
   and the existing six-step bar/header and iframe share its full height.
   Mobile keeps the original near-fullscreen behavior and no zoom correction. */
@media (min-width:901px) {
  @supports (zoom: 0.8) {
    body.upload-page dialog.pa-geo-modal {
      inset:0!important;
      width:calc(125vw - 96px)!important;
      height:calc(125dvh - 96px)!important;
      max-width:none!important;
      max-height:none!important;
      margin:auto!important;
    }
  }
}
