/* ============================================================================
   Risk X Modern — selectable theme overlay  (v1.0 — port van Profix Modern v9.16)
   File: wwwroot/css/RiskXModern/riskx-modern.css
   Identieke layout als Profix Modern; merk-tokens, logo en achtergrond voor RiskX Manager.
   Selectors gematcht op de echte DevExpress-DOM (via DevTools-snippets).

   Geladen via de DevExpress Theme Switcher (appsettings.json, groep "Risk X Modern").
   Attributen op <html> (gezet door js/riskx-theme.js):
     data-rx-theme   = "light" | "dark"   (volgt de gekozen switcher-variant)
     data-rx-accent   = "green" | "navy" | "blue" | "purple" | "teal"
     data-rx-density = "normal" | "compact"
   ============================================================================ */

/* 1. Font --------------------------------------------------------------------
   (office-white wordt door de Theme Switcher zelf geladen als "Url" van dit thema;
    zie appsettings.ThemeSwitcher.snippet.json) */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');

:root {
    /* Instelbaar via settings-paneel (riskx-theme.js zet --rx-font op <html>) */
    --rx-font: 'Poppins', 'Segoe UI', system-ui, sans-serif;
}

/* 2. Tokens + framework variables -------------------------------------------
   Let op: site.css definieert al --rx-navy, --rx-navy-rgb, --rx-navy-vlak, --rx-groen-*,
   --rx-lijn. Die blijven gelden; de tokens hieronder gebruiken andere namen. */
:root {
    /* Vaste merk-kleuren (woordmerk: tekst #1E2B57, X #2FA06A) */
    --rx-navy:      #1E2B57;
    --rx-navy-deep: #141D3D;
    --rx-groen-merk: #2FA06A;   /* decoratief (X, randen); te licht voor tekst op wit */

    /* Accent (preset: green). Wordt overschreven door data-rx-accent.
       Donkerder dan het merkgroen: 4,6:1 op wit, dus ook als tekst/icoon bruikbaar. */
    --rx-accent:       #26855A;
    --rx-accent-hover: #1F6E4A;
    --rx-accent-rgb:   38, 133, 90;
    /* Backwards-compat alias — oudere regels gebruiken --rx-orange */
    --rx-orange:       var(--rx-accent);
    /* XAF-iconen zijn gekleurde <img>'s uit IImageService; color werkt daar niet op. Dit filter
       maakt ze eerst zwart en kleurt ze dan naar --rx-accent (berekend, afwijking < 3/255).
       Per accent-preset hieronder opnieuw, want een filter kan geen var(--rx-accent) lezen. */
    --rx-icon-filter: brightness(0) saturate(100%) invert(42%) sepia(89%) saturate(318%) hue-rotate(101deg) brightness(84%) contrast(93%);

    /* Oppervlakken & tekst (licht) */
    --rx-surface:   #FFFFFF;   /* kaarten, header, toolbar, grid */
    --rx-surface-2: #FBFCFE;   /* sidebar */
    --rx-surface-3: #F7F9FC;   /* grid-header, chips */
    --rx-hover:     #F6F8FB;   /* hover-vlakken */
    --rx-ink:       #1C2A38;
    --rx-muted:     #64748B;
    --rx-text-soft: #5A6675;
    --rx-label:     #8A96A5;
    --rx-nav-text:  #475569;
    --rx-line:      #E3E8EF;
    --rx-line-soft: #EEF2F6;
    --rx-card-line: #E7ECF3;
    --rx-canvas:    #EDEFF2;   /* RGB 237 239 242 — basis-achtergrond overal */
    --rx-active:    #E4F3EB;   /* = --rx-groen-vlak uit site.css */
    --rx-heading:   var(--rx-navy);       /* sectielabels, actieve tabs */
    --rx-heading-deep: var(--rx-navy-deep);

    /* Dichtheid (preset: normal). Overschreven door data-rx-density="compact". */
    --rx-card-gap:     16px;
    --rx-card-pad:     2px 14px 12px;
    --rx-cardhead-pad: 10px 2px 6px;
    --rx-fl-item-pad:  2px;
    --rx-fl-item-gap:  4px;
    --rx-fl-gutter-y:  0.5rem;
    --rx-grid-row-pad: 9px;
    --rx-toolbar-pad:  9px 18px;
    --rx-toolbar-h:    46px;
    --rx-nav-row-pad:  5px;
    --rx-content-pad:  14px;

    --bs-primary: var(--rx-accent);
    --bs-primary-rgb: var(--rx-accent-rgb);
    --bs-link-color: #1E2B57;
    --bs-link-color-rgb: 30, 43, 87;
    --bs-link-hover-color: var(--rx-accent);
    --bs-border-radius: 10px;
    --bs-border-radius-sm: 8px;
    --bs-border-radius-lg: 14px;
    --bs-body-font-family: var(--rx-font);

    --dxbl-btn-primary-bg: var(--rx-accent);
    --dxbl-btn-primary-border-color: var(--rx-accent);
    --dxbl-btn-primary-hover-bg: var(--rx-accent-hover);
    --dxbl-btn-primary-hover-border-color: var(--rx-accent-hover);
    --dxbl-border-radius: 10px;
}

/* 2a. Accent-presets (à la DevExpress Fluent) -------------------------------- */
html[data-rx-accent="green"] {
    --rx-accent: #26855A; --rx-accent-hover: #1F6E4A; --rx-accent-rgb: 38, 133, 90; --rx-active: #E4F3EB;
    --rx-icon-filter: brightness(0) saturate(100%) invert(42%) sepia(89%) saturate(318%) hue-rotate(101deg) brightness(84%) contrast(93%);
}
html[data-rx-accent="navy"] {
    --rx-accent: #1E2B57; --rx-accent-hover: #141D3D; --rx-accent-rgb: 30, 43, 87; --rx-active: #DDE2ED;
    --rx-icon-filter: brightness(0) saturate(100%) invert(14%) sepia(28%) saturate(2377%) hue-rotate(198deg) brightness(96%) contrast(93%);
}
html[data-rx-accent="blue"] {
    --rx-accent: #2F6FED; --rx-accent-hover: #245CD0; --rx-accent-rgb: 47, 111, 237; --rx-active: #EAF1F8;
    --rx-icon-filter: brightness(0) saturate(100%) invert(34%) sepia(99%) saturate(2130%) hue-rotate(209deg) brightness(94%) contrast(97%);
}
html[data-rx-accent="purple"] {
    --rx-accent: #7C5CD6; --rx-accent-hover: #6A4BC2; --rx-accent-rgb: 124, 92, 214; --rx-active: #EFEAFA;
    --rx-icon-filter: brightness(0) saturate(100%) invert(39%) sepia(65%) saturate(752%) hue-rotate(218deg) brightness(93%) contrast(88%);
}
html[data-rx-accent="teal"] {
    --rx-accent: #14919B; --rx-accent-hover: #0F7E87; --rx-accent-rgb: 20, 145, 155; --rx-active: #E3F4F5;
    --rx-icon-filter: brightness(0) saturate(100%) invert(43%) sepia(90%) saturate(412%) hue-rotate(136deg) brightness(91%) contrast(92%);
}

/* 2b. Compacte dichtheid ------------------------------------------------------ */
html[data-rx-density="compact"] {
    --rx-card-gap:     10px;
    --rx-card-pad:     2px 12px 8px;
    --rx-cardhead-pad: 8px 2px 4px;
    --rx-fl-item-pad:  1px;
    --rx-fl-item-gap:  2px;
    --rx-fl-gutter-y:  0.25rem;
    --rx-grid-row-pad: 6px;
    --rx-toolbar-pad:  6px 18px;
    --rx-toolbar-h:    40px;
    --rx-nav-row-pad:  3px;
    --rx-content-pad:  10px;
}

/* 2c. Dark mode ---------------------------------------------------------------
   Overschrijft de oppervlak-/teksttokens; alle regels hieronder gebruiken die
   tokens, dus het grootste deel volgt vanzelf. Extra DX-specifieke overrides
   staan in sectie 11. */
html[data-rx-theme="dark"] {
    color-scheme: dark;
    --rx-surface:   #1E2733;
    --rx-surface-2: #19212C;
    --rx-surface-3: #253040;
    --rx-hover:     #26313F;
    --rx-ink:       #E3E9F1;
    --rx-muted:     #93A1B3;
    --rx-text-soft: #A7B4C4;
    --rx-label:     #8494A8;
    --rx-nav-text:  #B4C0CF;
    --rx-line:      #2B3646;
    --rx-line-soft: #26303E;
    --rx-card-line: #2B3646;
    --rx-canvas:    #141B24;
    --rx-active:    #1F3A2F;
    --rx-heading:   #9FC4B0;
    --rx-heading-deep: #DCE3F0;

    --bs-body-bg: #141B24;
    --bs-body-color: #E3E9F1;
    /* Bootstraps .text-body leest de -rgb-variant, met !important. Zonder deze regel bleef die
       op het donkere grijs van Office White staan: onder Classic Dark waren de namen in de
       themakiezer daardoor onzichtbaar (#44). */
    --bs-body-color-rgb: 227, 233, 241;
    --bs-link-color: #9FC4B0;
    --bs-link-color-rgb: 159, 196, 176;
}

body, .dxbl-blazor {
    font-family: var(--rx-font);
    color: var(--rx-ink);
}
/* Form-controls erven het body-font niet vanzelf → Poppins expliciet op inputs,
   knoppen en DevExpress-editortekst. Bewust GEEN *-regel: dat sloopt de icon-fonts. */
input, textarea, select, button,
.dxbl-text-edit-input,
.dxbl-text, .dxbl-btn, .dxbl-edit {
    font-family: var(--rx-font);
}
/* ALLEEN de ingebedde toolbar-editors (combobox "Tonen", zoekveld) gelijktrekken
   met de toolbar-knoppen. In em, dus gelijk aan de maat die de toolbar zelf heeft
   (--dxbl-toolbar-font-size): 14px op Standaard, 12px op Compact. Stond hier vast op
   14px, en dan bleef het zoekveld groot terwijl de cellen eronder meekrompen. */
.dxbl-toolbar-item-tmpl .dxbl-text-edit-input,
.dxbl-toolbar-item-tmpl input {
    font-size: 1.14em !important;
}

/* 3a. Brand-regel: logo | accent-streep | klantnaam --------------------------- */
/* Header-vak boven de sidebar mag meegroeien met lange klantnamen
   (site.css pint dit op --riskx-sidebar-width) */
.header .header-left-side {
    width: auto !important;
    min-width: var(--riskx-sidebar-width, 260px) !important;
    max-width: none !important;
    flex-shrink: 0;
}
/* DOM = standaard XAF-header, geen custom template nodig:
     .header-left-side > .btn-hamburger + div.header-logo + span.header-tenant-name
   De <span class="header-tenant-name"> wordt door riskx-header.js na de .header-logo gezet
   (tekst uit <body data-rx-tenant="..."> in _Host.cshtml). */
.header .header-logo {
    background-image: url('../../images/riskx-manager.png') !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    background-size: contain !important;
    width: 84px !important;
    height: 40px !important;
    filter: none !important;           /* XAF maakt het logo standaard monochroom */
    -webkit-mask: none !important; mask: none !important;
}
.header .header-left-side {
    display: flex !important;
    flex-direction: row;
    align-items: center;
    gap: 14px;
    min-width: 0;
}
.header .header-left-side .header-logo {
    flex: 0 0 auto;
}
.header .header-tenant-name {
    display: inline-flex !important;
    align-items: center;
    gap: 14px;
    margin: 0 !important;
    font-size: 14px;
    font-weight: 700;
    color: var(--rx-heading) !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 560px;
}
.header .header-tenant-name::before {
    content: "";
    flex: 0 0 auto;
    width: 3px;
    height: 24px;
    border-radius: 2px;
    background: var(--rx-accent);
}

/* 3. Header — light bar ------------------------------------------------------ */
.header.navbar-dark, .header {
    background: var(--rx-surface) !important;
    border-bottom: 1px solid var(--rx-line) !important;
    color: var(--rx-ink) !important;
}
.header .dxbl-btn, .header .dxbl-btn-standalone, .header a, .header .dxbl-text {
    color: var(--rx-ink) !important;
}
.header .dxbl-btn:hover, .header .dxbl-btn-standalone:hover {
    background: var(--rx-line-soft) !important; border-radius: 9px;
}
.xaf-detail-view-header {
    background: var(--rx-surface) !important;
    border-bottom: 1px solid var(--rx-line) !important;
}
/* Donker: witte variant van het tweekleurige woordmerk (X blijft groen) */
html[data-rx-theme="dark"] .header .header-logo {
    background-image: url('../../images/riskx-manager-wit.png') !important;
}

/* 4. Sidebar ----------------------------------------------------------------- */
.xaf-sidebar {
    background: var(--rx-surface-2) !important;
    border-right: 1px solid var(--rx-line);
    padding: 6px 2px;
}
/* Zoekveld (Filter...) — eigen vlak, zoals ontwerp 2a: wit, rand, radius 9px */
.xaf-sidebar .dxbl-text-edit,
.xaf-sidebar .dxbl-text-box {
    background-color: var(--rx-surface) !important;
    border: 1px solid var(--rx-card-line) !important;
    border-radius: 9px !important;
    box-shadow: none !important;
    height: 36px;
    margin: 4px 10px 6px;
}
.xaf-sidebar .dxbl-text-edit:focus-within,
.xaf-sidebar .dxbl-text-box:focus-within {
    border-color: var(--rx-accent) !important;
}
.xaf-sidebar .dxbl-text-edit input,
.xaf-sidebar input {
    background-color: transparent !important;
    color: var(--rx-ink) !important;
    border: none !important;
    font-size: 13px !important;
}
.xaf-sidebar .dxbl-text-edit input::placeholder,
.xaf-sidebar input::placeholder {
    color: #9AA6B3;
}
/* Zoek-icoon in het veld gedempt grijs */
.xaf-sidebar .dxbl-text-edit :is(svg, .dxbl-image) {
    color: #94A3B8 !important;
    opacity: 0.9;
}
/* Alle accordion-vlakken, randen en lijnen weg — met app-ID zodat dit óók wint
   van DevExpress-regels die na het theme laden */
#main-window-template-component .xaf-sidebar .xaf-navmenu,
#main-window-template-component .xaf-sidebar .xaf-accordion,
#main-window-template-component .xaf-sidebar .dxbl-accordion,
#main-window-template-component .xaf-sidebar dxbl-accordion,
#main-window-template-component .xaf-sidebar .dxbl-accordion-container,
#main-window-template-component .xaf-sidebar .dxbl-accordion-items-container,
#main-window-template-component .xaf-sidebar dxbl-group-control,
#main-window-template-component .xaf-sidebar .dxbl-accordion-item,
#main-window-template-component .xaf-sidebar .dxbl-group-header,
#main-window-template-component .xaf-sidebar .dxbl-accordion-group-header,
#main-window-template-component .xaf-sidebar .dxbl-group-body,
#main-window-template-component .xaf-sidebar .dxbl-accordion-group-body,
#main-window-template-component .xaf-sidebar .dxbl-accordion-item-content,
#main-window-template-component .xaf-sidebar .dxbl-group-header .dxbl-btn-tool {
    background: transparent !important;
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
}
/* DevExpress' zwarte ::before-overlay over elke rij volledig uitschakelen */
#main-window-template-component .xaf-sidebar div::before,
#main-window-template-component .xaf-sidebar div::after {
    content: none !important;
    background: transparent !important;
}
/* Geen link-onderstreping */
.xaf-sidebar a, .xaf-sidebar a:hover,
.xaf-sidebar .xaf-nav-link, .xaf-sidebar .xaf-nav-link span {
    text-decoration: none !important;
}
/* Rijen: afgerond, ruim, chevron rechts */
.xaf-sidebar .dxbl-group-header,
.xaf-sidebar a.dxbl-accordion-item-content {
    border-radius: 9px;
    margin: 1px 6px;
    padding-top: var(--rx-nav-row-pad);
    padding-bottom: var(--rx-nav-row-pad);
    display: flex;
    align-items: center;
}
.xaf-sidebar .dxbl-group-header:hover,
.xaf-sidebar a.dxbl-accordion-item-content:hover {
    background: var(--rx-line-soft) !important;
}
.xaf-sidebar .dxbl-group-expand-btn {
    order: 99;
    margin-left: auto;
    opacity: 0.55;
}
/* Tekstgrootte (override op de 12px uit site.css) */
.xaf-sidebar .dxbl-accordion-item-text-container .dxbl-text,
.xaf-sidebar .xaf-nav-link span {
    font-size: 13px !important;
    color: var(--rx-nav-text);
}
/* Hoofdgroepen (indent 0) → sectielabels */
.xaf-sidebar dxbl-group-control[data-dx-style="--dxbl-accordion-item-indent:0"] > .dxbl-group-header {
    margin-top: 10px;
    padding: 2px 10px;
    min-height: 24px !important;
}
.xaf-sidebar dxbl-group-control[data-dx-style="--dxbl-accordion-item-indent:0"] > .dxbl-group-header:hover {
    background: transparent !important;
}
.xaf-sidebar dxbl-group-control[data-dx-style="--dxbl-accordion-item-indent:0"] > .dxbl-group-header .xaf-nav-link span {
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 11px !important;
    font-weight: 700;
    color: var(--rx-heading) !important;
}
.xaf-sidebar dxbl-group-control[data-dx-style="--dxbl-accordion-item-indent:0"] > .dxbl-group-header img.xaf-nav-menu-item-icon {
    display: none;
}
.xaf-sidebar dxbl-group-control[data-dx-style="--dxbl-accordion-item-indent:0"] > .dxbl-group-header .dxbl-group-expand-btn {
    opacity: 0.35;
    transform: scale(0.75);
}
/* Actief item — pill (geen accent-rand) */
.xaf-sidebar a.dxbl-accordion-item-content.dxbl-active,
.xaf-sidebar a[aria-selected="true"] {
    background: var(--rx-active) !important;
    box-shadow: none !important;
}
.xaf-sidebar a.dxbl-accordion-item-content.dxbl-active .xaf-nav-link span {
    color: var(--rx-heading) !important;
    font-weight: 700;
}

/* 5. Toolbar ----------------------------------------------------------------- */
/* Alle acties links: rechtergroep (Refresh, Save, Save and Close) sluit aan
   bij de rest. :has() pakt de auto-marge af van elke container om die knoppen
   heen, waar DevExpress hem ook zet. */
.main-toolbar :is(.dxbl-toolbar, .dxbl-toolbar-content, [role="toolbar"]) {
    justify-content: flex-start !important;
}
/* Op de reorder-eenheid (.dxbl-btn-group) i.p.v. universeel *:has() — dat laatste
   is een van de duurste style-recalc-patronen en werd bij elke DOM-mutatie opnieuw
   geëvalueerd. riskx-toolbar.js positioneert deze systeemknoppen bovendien zelf. */
.main-toolbar .dxbl-btn-group:has(> .dxbl-btn[data-action-name="Save"]),
.main-toolbar .dxbl-btn-group:has(> .dxbl-btn[data-action-name="Opslaan"]),
.main-toolbar .dxbl-btn-group:has(> .dxbl-btn[data-action-name="SaveAndClose"]),
.main-toolbar .dxbl-btn-group:has(> .dxbl-btn[data-action-name="Opslaan en sluiten"]),
.main-toolbar .dxbl-btn-group:has(> .dxbl-btn[data-action-name="Refresh"]),
.main-toolbar .dxbl-btn-group:has(> .dxbl-btn[data-action-name="Verversen"]),
.main-toolbar .dxbl-btn-group:has(.dxbl-btn[data-action-name="SaveAndClose"]),
.main-toolbar .dxbl-btn-group:has(.dxbl-btn[data-action-name="Opslaan en sluiten"]) {
    margin-left: 0 !important;
    margin-inline-start: 0 !important;
}
.main-toolbar :is(.dxbl-toolbar-content, [role="toolbar"]) > *:empty {
    flex-grow: 0 !important;
    display: none !important;
}
.main-toolbar {
    background: var(--rx-surface);
    border-bottom: 1px solid var(--rx-line-soft);
    padding: var(--rx-toolbar-pad);
    /* Vaste balkhoogte, onafhankelijk van of er links acties staan. In kijkmodus
       (alleen kleine icoonknoppen rechts) zakte de balk anders lager dan de
       lijstweergave — de witruimte-klacht. .main-toolbar zelf wordt een flexbox die
       de hoogte afdwingt én de toolbar-inhoud verticaal centreert. */
    min-height: var(--rx-toolbar-h);
    box-sizing: border-box;
    display: flex;
    align-items: center;
    /* De balk staat met .main-content (flex:auto, overflow:auto) in één flex-kolom. Zonder dit
       krimpt hij bij een view waarvan de inhoud hoger is dan het venster tot zijn min-height, en
       houdt hij bij korte inhoud zijn natuurlijke hoogte — dus een balk die per tab van hoogte
       wisselt (zichtbaar op het werkitem-projectscherm). De inhoud scrollt zelf, de balk niet. */
    flex-shrink: 0;
}
.main-toolbar > * { flex: 1 1 auto; min-width: 0; }
.main-toolbar :is(.dxbl-toolbar, .dxbl-toolbar-content, [role="toolbar"]) {
    align-items: center !important;
}
.dxbl-toolbar-btn,
.dxbl-toolbar-btn > .dxbl-btn {
    border-radius: 9px !important;
    font-weight: 600;
}
/* Split-knoppen: binnennaad recht houden */
.dxbl-toolbar-btn.dxbl-btn-split > .dxbl-btn:not(.dxbl-btn-split-dropdown) {
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
.dxbl-toolbar-btn.dxbl-btn-split > .dxbl-btn-split-dropdown {
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
}
/* Secondary actions — vlak met lichte rand */
.dxbl-toolbar-btn.dxbl-btn-secondary:not([data-action-name="New"]):not([data-action-name="Nieuw"]):not([data-action-name^="Filter"]) {
    background: var(--rx-surface) !important;
    border: 1px solid var(--rx-card-line) !important;
    color: var(--rx-text-soft) !important;
    padding: 6px 13px;
}
.dxbl-toolbar-btn.dxbl-btn-secondary:not([data-action-name="New"]):not([data-action-name="Nieuw"]):not([data-action-name^="Filter"]):hover {
    background: var(--rx-hover) !important;
    border-color: var(--rx-line) !important;
}
.dxbl-toolbar-item-tmpl {
    display: flex !important;
    align-items: center !important;
}
/* New — zelfde vlakke stijl als de geneste New (bv. Contacts-tab) */
.main-toolbar .dxbl-btn[data-action-name="New"],
.main-toolbar .dxbl-btn[data-action-name="Nieuw"] {
    background: var(--rx-surface) !important;
    border: 1px solid var(--rx-card-line) !important;
    color: var(--rx-ink) !important;
    padding: 6px 16px;
    font-weight: 700;
    box-shadow: none;
}
.main-toolbar .dxbl-btn[data-action-name="New"]:hover,
.main-toolbar .dxbl-btn[data-action-name="Nieuw"]:hover {
    background: var(--rx-hover) !important;
    border-color: var(--rx-line) !important;
}
/* Save — zelfde vlakke stijl als New (niet 'vol' oranje) */
.main-toolbar .dxbl-btn[data-action-name="Save"],
.main-toolbar .dxbl-btn[data-action-name="Opslaan"],
.main-toolbar .dxbl-btn[data-action-name="SaveAndClose"],
.main-toolbar .dxbl-btn[data-action-name="Opslaan en sluiten"] {
    background: var(--rx-surface) !important;
    border: 1px solid var(--rx-card-line) !important;
    color: var(--rx-ink) !important;
    padding: 6px 16px;
    font-weight: 700;
    box-shadow: none !important;
}
.main-toolbar .dxbl-btn[data-action-name="Save"]:hover,
.main-toolbar .dxbl-btn[data-action-name="Opslaan"]:hover,
.main-toolbar .dxbl-btn[data-action-name="SaveAndClose"]:hover,
.main-toolbar .dxbl-btn[data-action-name="Opslaan en sluiten"]:hover {
    background: var(--rx-hover) !important;
    border-color: var(--rx-line) !important;
}
/* Icoon in accentkleur (wit icoon valt anders weg op de witte knop) */
.main-toolbar .dxbl-btn[data-action-name="Save"] :is(svg, span[class*="icon"]),
.main-toolbar .dxbl-btn[data-action-name="Opslaan"] :is(svg, span[class*="icon"]),
.main-toolbar .dxbl-btn[data-action-name="SaveAndClose"] :is(svg, span[class*="icon"]),
.main-toolbar .dxbl-btn[data-action-name="Opslaan en sluiten"] :is(svg, span[class*="icon"]) {
    color: var(--rx-accent) !important;
    fill: var(--rx-accent) !important;
}
/* Alle toolbar-iconen in de accentkleur, zoals het ontwerp (ook Verwijderen, niet rood;
   Verversen, niet oranje). Geldt ook voor de zoekknop in het zoekveld.
   Niet voor de eigen RiskX-iconenset (rx-*.svg, SIRA.Module/Images): die is al in rustige
   middentonen ontworpen voor licht én donker, en een status-icoon moet zijn kleur houden. */
.main-toolbar .dxbl-btn img:not([src*="/rx-"]),
#main-view-content .main-content .dxbl-toolbar .dxbl-btn img:not([src*="/rx-"]) {
    filter: var(--rx-icon-filter);
}
.main-toolbar .dxbl-btn.dxbl-disabled img,
#main-view-content .main-content .dxbl-toolbar .dxbl-btn.dxbl-disabled img {
    opacity: 0.45;
}

/* Filter toggle actions → pill chips */
.main-toolbar .dxbl-btn[data-action-name^="Filter"] {
    border-radius: 999px !important;
    background: var(--rx-surface-3) !important;
    border-color: transparent !important;
    color: var(--rx-text-soft) !important;
    padding: 6px 14px;
}
.main-toolbar .dxbl-btn[data-action-name^="Filter"]:hover {
    background: var(--rx-active) !important;
    color: var(--rx-heading) !important;
}
.main-toolbar .dxbl-btn[data-action-name^="Filter"][aria-pressed="true"] {
    background: var(--rx-active) !important;
    box-shadow: inset 0 0 0 1px rgba(30, 43, 87, 0.25);
}
.main-toolbar .dxbl-btn[data-action-name^="Filter"][aria-pressed="true"] span {
    color: var(--rx-heading) !important;
    font-weight: 700;
}

/* 6. Content canvas + grid card --------------------------------------------- */
#main-view-content { background: var(--rx-canvas); }
#main-view-content .main-content { background: transparent; padding: var(--rx-content-pad); }

/* Merk-achtergrond (groene X uit het woordmerk, ~6% dekking, logo-vrij) — vast t.o.v. het venster, rechtsonder.
   Op de app-root zodat de lege startpagina (nog geen #main-view-content) hem over
   de héle pagina toont; header en sidebar hebben hun eigen dekkende achtergrond en
   dekken de X links/boven af. Ook zichtbaar rondom/achter geopende schermen omdat
   #main-view-content .main-content transparant is. Alleen in de lichte modus. */
/* Eén fixed achtergrond-laag (body) i.p.v. vier. background-attachment:fixed dwingt
   per element een herteken bij elke repaint/scroll; op vier grote oppervlakken
   tegelijk gaf dat merkbare jank. De overige oppervlakken worden transparant zodat
   de body-laag (canvas + X) er doorheen blijft; opake vlakken (header, sidebar,
   grid-kaarten) dekken hem af waar nodig. Zelfde beeld, ~75% minder fixed-repaint. */
html:not([data-rx-theme="dark"]) body {
    background: var(--rx-canvas) url('../../images/riskx-achtergrond.png') no-repeat right bottom / 100% auto fixed;
}
html:not([data-rx-theme="dark"]) .dxbl-blazor,
html:not([data-rx-theme="dark"]) .app,
html:not([data-rx-theme="dark"]) #main-view-content {
    background: transparent;
}

/* De lege startpagina/dashboard-zone is XAF-default markup: classless <div>
   wrappers die office-white hard wit (#FFFFFF/#FBFCFE) schildert bovenop het
   canvas. Die maken we in de lichte modus transparant zodat de #EDEFF2-achtergrond
   + X doorloopt. Alle echte oppervlakken (grid, group-control, popup, header,
   sidebar, toolbar) dragen een class en/of !important en blijven dus ongemoeid. */
html:not([data-rx-theme="dark"]) #main-view-content div:not([class]),
html:not([data-rx-theme="dark"]) .dxbl-blazor > div:not([class]) {
    background: transparent !important;
}

/* Lege MDI-tabzone (dxbl-tabs.xaf-tabbed-mdi) — office-white schildert de
   tab-container en het content-paneel wit; transparant zodat canvas + X doorlopen. */
html:not([data-rx-theme="dark"]) .xaf-tabbed-mdi,
html:not([data-rx-theme="dark"]) .xaf-tabbed-mdi .dxbl-tabs-content-panel,
html:not([data-rx-theme="dark"]) .xaf-tabbed-mdi .dxbl-tabs-tablist {
    background: transparent !important;
}

#main-view-content .dxbl-grid {
    border: 1px solid var(--rx-card-line) !important;
    border-radius: 12px !important;
    overflow: hidden;
    background: var(--rx-surface);
    box-shadow: 0 1px 3px rgba(15, 46, 77, 0.06);
}
.dxbl-grid .dxbl-grid-header-row .dxbl-grid-header {
    background: var(--rx-surface-3) !important;
    border-bottom: 1px solid var(--rx-card-line) !important;
}
/* De kolomkop is de eerste span in de kop-cel; DevExpress mikt er zelf ook zo op
   (.dxbl-grid-header-content span:first-child krijgt flex-grow). Eerder stond hier
   span[role="presentation"], en dat attribuut komt in de hele Grid-assembly precies
   één keer voor: op de onzichtbare opvulkolom achteraan. Deze opmaak kwam dus nooit
   ergens terecht en de koppen liepen op de DevExpress-maat (12,25px vet) — even groot
   als de gegevens eronder, en daardoor braken koppen als "Work Item Type" over twee
   regels en was de koprij dubbel zo hoog als een datarij. */
.dxbl-grid .dxbl-grid-header-content > span:first-child {
    font-size: 0.94em;
    font-weight: 700;
    letter-spacing: 0.03em;
    color: var(--rx-label);
}
/* Datarijen: in 26.1 hebben die geen .dxbl-grid-data-row meer, alleen data-visible-index
   (de virtuele spacer-rijen niet, die houden hun hoogte 0). Beide selectors, zodat het op
   oudere en nieuwere builds werkt. */
.dxbl-grid :is(.dxbl-grid-data-row, tr[data-visible-index]) > td {
    padding-top: var(--rx-grid-row-pad) !important;
    padding-bottom: var(--rx-grid-row-pad) !important;
}
.dxbl-grid :is(.dxbl-grid-data-row, tr[data-visible-index]):hover > td { background: var(--rx-hover) !important; }
/* Horizontale rijlijnen, zoals Profix (en het ontwerp): één dunne lijn onder elke rij */
.dxbl-grid .dxbl-grid-table tbody > tr:is(.dxbl-grid-data-row, [data-visible-index]) > td {
    border-top: none !important;
    border-bottom: 1px solid var(--rx-line) !important;   /* line-soft (ontwerp) viel weg op wit */
}
/* Geen verticale kolomlijnen */
.dxbl-grid .dxbl-grid-table th,
.dxbl-grid .dxbl-grid-table td {
    border-left: none !important;
    border-right: none !important;
}

/* 7. Tabs (open documents) --------------------------------------------------- */
.dxbl-tabs-item .dxbl-tabs-text-overflow {
    font-size: 1.1em !important;
}
.dxbl-tabs-item.dxbl-active {
    box-shadow: inset 0 -2.5px 0 var(--rx-accent);
}
/* DevExpress' eigen actieve-tab-indicator meekleuren met het gekozen accent
   (anders blijft die theme-oranje naast onze accent-lijn staan) */
.dxbl-tabs, .dxbl-tabs-tablist, .dxbl-tabs-item {
    --dxbl-tabs-item-active-border-color: var(--rx-accent) !important;
    --dxbl-tabs-item-selected-border-color: var(--rx-accent) !important;
}
.dxbl-tabs-item.dxbl-active,
.dxbl-tabs-item.dxbl-active > .dxbl-btn {
    border-bottom-color: var(--rx-accent) !important;
}
.dxbl-tabs-item.dxbl-active::after,
.dxbl-tabs-item.dxbl-active > .dxbl-btn::after {
    background-color: var(--rx-accent) !important;
    border-color: var(--rx-accent) !important;
}
.dxbl-tabs-item.dxbl-active .dxbl-tabs-text-overflow {
    color: var(--rx-heading) !important;
    font-weight: 700;
}
#main-view-content .dxbl-tabs-item .dxbl-tabs-text-overflow {
    font-size: 1.06em !important;
    font-weight: 600;
    color: var(--rx-text-soft);
}
#main-view-content .dxbl-tabs-item.dxbl-active .dxbl-tabs-text-overflow {
    color: var(--rx-heading) !important;
    font-weight: 700;
}

/* 8. DetailView — kaarten op de échte elementen ------------------------------- */
#main-view-content .main-content dxbl-group-control.dxbl-group {
    display: block;
    background: var(--rx-surface) !important;
    border: 1px solid var(--rx-card-line) !important;
    border-radius: 14px;
    padding: var(--rx-card-pad);
    margin-bottom: var(--rx-card-gap);
    box-shadow: 0 1px 2px rgba(15, 46, 77, 0.04);
}
#main-view-content .main-content .dxbl-group-header.dxbl-fl-caption-tmpl,
#main-view-content .main-content dxbl-group-control.dxbl-group > .dxbl-group-header {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    font-size: 1.14em;
    font-weight: 700;
    color: var(--rx-heading-deep);
    padding: var(--rx-cardhead-pad);
}
#main-view-content .main-content .dxbl-group-header::before,
#main-view-content .main-content .dxbl-group-header::after {
    content: none !important;
}
#main-view-content .main-content .dxbl-fl-group-body,
#main-view-content .main-content .dxbl-group-body-content {
    background: transparent !important;
}
/* Veldlabels: klein, uppercase, gedempt. In em, zodat ze de SizeMode volgen. Let op de
   basis: site.css zet de wortelmaat op 14px, dus de formulier-layout staat op 0.875rem =
   12,25px (Standaard) en 0.75rem = 10,5px (Compact) — niet op de 14/12px die je bij een
   wortel van 16px zou verwachten. 0.9em is dus 11,0px respectievelijk 9,5px. In px
   bleven ze op elke stand even groot. */
#main-view-content .main-content label.dxbl-fl-cpt {
    font-size: 0.9em !important;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--rx-label) !important;
}
#main-view-content .main-content dxbl-form-layout-item.dxbl-fl-item {
    padding-top: var(--rx-fl-item-pad);
    padding-bottom: var(--rx-fl-item-pad);
}
#main-view-content .main-content .dxbl-fl .row,
#main-view-content .main-content .dxbl-fl-row {
    --bs-gutter-y: var(--rx-fl-gutter-y);
}
#main-view-content .main-content .dxbl-fl-group-body .dxbl-fl-item + .dxbl-fl-item {
    margin-top: var(--rx-fl-item-gap);
}

/* 8b. Zelfde kaart-layout in popups/dialogs (detail view als popup) ----------- */
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) dxbl-group-control.dxbl-group {
    display: block;
    background: var(--rx-surface) !important;
    border: 1px solid var(--rx-card-line) !important;
    border-radius: 14px;
    padding: var(--rx-card-pad);
    margin-bottom: var(--rx-card-gap);
    box-shadow: 0 1px 2px rgba(15, 46, 77, 0.04);
}
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) .dxbl-group-header.dxbl-fl-caption-tmpl,
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) dxbl-group-control.dxbl-group > .dxbl-group-header {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    font-size: 1.14em;
    font-weight: 700;
    color: var(--rx-heading-deep);
    padding: var(--rx-cardhead-pad);
}
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) .dxbl-group-header::before,
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) .dxbl-group-header::after {
    content: none !important;
}
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) :is(.dxbl-fl-group-body, .dxbl-group-body-content) {
    background: transparent !important;
}
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) label.dxbl-fl-cpt {
    font-size: 0.9em !important;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--rx-label) !important;
}
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) dxbl-form-layout-item.dxbl-fl-item {
    padding-top: var(--rx-fl-item-pad);
    padding-bottom: var(--rx-fl-item-pad);
}
html :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) .dxbl-fl-group-body .dxbl-fl-item + .dxbl-fl-item {
    margin-top: var(--rx-fl-item-gap);
}

/* 9. Editors / inputs -------------------------------------------------------- */
.dxbl-text-edit, .dxbl-edit, .dxbl-combobox, .dxbl-spin-edit, .dxbl-date-edit {
    border-radius: 9px !important;
}
.dxbl-text-edit:focus-within, .dxbl-edit:focus-within {
    border-color: var(--rx-heading) !important;
    box-shadow: 0 0 0 3px rgba(var(--rx-accent-rgb), 0.15) !important;
}

/* 9a. Pager + switches — volgen de gekozen accentkleur ------------------------ */
/* Actieve pagina in de grid-pager (meerdere DX-varianten afgedekt) */
:is(.dxbl-pager, .dxbl-grid-pager, .dxbl-grid .dxbl-pager) {
    --dxbl-pager-page-selected-bg: var(--rx-accent);
    --dxbl-pager-page-selected-border-color: var(--rx-accent);
    --dxbl-btn-primary-bg: var(--rx-accent);
    --dxbl-btn-primary-border-color: var(--rx-accent);
}
:is(.dxbl-pager, .dxbl-grid-pager) :is(.dxbl-btn-primary,
    .dxbl-active, [aria-current="page"], .dxbl-pager-page-selected,
    .dxbl-btn[aria-pressed="true"]) {
    background-color: var(--rx-accent) !important;
    border-color: var(--rx-accent) !important;
    color: #fff !important;
}
/* Yes/No toggle switches (boolean editors) — alleen kleur, vorm intact laten */
.dxbl-checkbox {
    --dxbl-checkbox-checked-bg: var(--rx-accent);
    --dxbl-checkbox-checked-border-color: var(--rx-accent);
    --dxbl-checkbox-switch-checked-bg: var(--rx-accent);
    --dxbl-checkbox-switch-checked-border-color: var(--rx-accent);
    --dxbl-checkbox-check-element-checked-bg: var(--rx-accent);
    --dxbl-checkbox-check-element-checked-border-color: var(--rx-accent);
}
.dxbl-checkbox.dxbl-checked .dxbl-checkbox-check-element {
    background-color: var(--rx-accent) !important;
    border-color: var(--rx-accent) !important;
    border-radius: inherit;
}
/* Bootstrap-fallback (form-check/switch) */
.form-check-input:checked {
    background-color: var(--rx-accent) !important;
    border-color: var(--rx-accent) !important;
}

/* 6a. Detail view — label-kolom past zich aan de inhoud aan ------------------- */
/* Kolommen op inhoud laten sizen: tabel op auto-layout, caption-cel op auto
   met nowrap → kolom = breedste label, nooit afgekapt. */
/* Alleen layout-tabellen (formulieren), NOOIT grid-tabellen — die hebben
   table-layout:fixed + col-breedtes nodig voor kolom-resizing */
.xaf-layout-group table:not(.dxbl-grid-table):not([class*="grid"]),
.xaf-detailview table:not(.dxbl-grid-table):not([class*="grid"]),
.dxbl-fl table:not(.dxbl-grid-table):not([class*="grid"]) {
    table-layout: auto !important;
}
.xaf-layout-group table:not(.dxbl-grid-table):not([class*="grid"]) col,
.dxbl-fl table:not(.dxbl-grid-table):not([class*="grid"]) col {
    width: auto !important;
}
.dxbl-fl-cpt,
.xaf-layout-item-caption,
.xaf-field-caption {
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
    white-space: nowrap;
    overflow: visible !important;
    flex: 0 0 auto !important;
    padding-right: 14px;
}
/* Grid-variant (DevExpress FormLayout): caption = max-content, editor vult rest */
.dxbl-fl {
    --dxbl-fl-cpt-width: max-content;
}
.dxbl-fl-item:has(> .dxbl-fl-cpt) {
    grid-template-columns: max-content 1fr;
}

/* 10. Rounded popups --------------------------------------------------------- */
.dxbl-popup-window, .dxbl-popup-window-content { border-radius: 14px; }

/* 11. Dark mode — DX-specifieke overrides -------------------------------------
   Het office-white basisthema zet veel wit hard op elementen; hier de
   belangrijkste vlakken expliciet donker. */
html[data-rx-theme="dark"] body,
html[data-rx-theme="dark"] .dxbl-blazor,
html[data-rx-theme="dark"] .app {
    background: var(--rx-canvas) !important;
    color: var(--rx-ink);
}
/* Editors */
html[data-rx-theme="dark"] .dxbl-text-edit,
html[data-rx-theme="dark"] .dxbl-edit,
html[data-rx-theme="dark"] .dxbl-combobox,
html[data-rx-theme="dark"] .dxbl-spin-edit,
html[data-rx-theme="dark"] .dxbl-date-edit,
html[data-rx-theme="dark"] .dxbl-text-edit-input,
html[data-rx-theme="dark"] .dxbl-memo,
html[data-rx-theme="dark"] .dxbl-listbox {
    background-color: var(--rx-surface-3) !important;
    border-color: var(--rx-line) !important;
    color: var(--rx-ink) !important;
}
html[data-rx-theme="dark"] .dxbl-text-edit-input::placeholder { color: var(--rx-muted); }
/* Grid-cellen en selectie */
/* Grid-binnenkant: scroll-viewer, tabel en lege ruimte onder de rijen worden
   door office-white hard wit gezet — expliciet donker + de dxbl-vars meezetten. */
html[data-rx-theme="dark"] .dxbl-grid {
    --dxbl-grid-bg: var(--rx-surface);
    --dxbl-grid-header-bg: var(--rx-surface-3);
    --dxbl-grid-selection-bg: var(--rx-active);
}
html[data-rx-theme="dark"] .dxbl-grid,
html[data-rx-theme="dark"] .dxbl-grid .dxbl-scroll-viewer,
html[data-rx-theme="dark"] .dxbl-grid .dxbl-scroll-viewer-content,
html[data-rx-theme="dark"] .dxbl-grid .dxbl-grid-table,
html[data-rx-theme="dark"] .dxbl-grid tbody,
html[data-rx-theme="dark"] .dxbl-grid .dxbl-grid-empty-cell,
html[data-rx-theme="dark"] .dxbl-grid .dxbl-grid-empty-data-row,
html[data-rx-theme="dark"] .dxbl-grid .dxbl-grid-empty-data-row > td {
    background: var(--rx-surface) !important;
    background-color: var(--rx-surface) !important;
    color: var(--rx-ink);
}
html[data-rx-theme="dark"] .dxbl-grid :is(.dxbl-grid-data-row, tr[data-visible-index]) > td {
    background: var(--rx-surface) !important;
    color: var(--rx-ink) !important;
    border-color: var(--rx-line-soft) !important;
}
html[data-rx-theme="dark"] .dxbl-grid :is(.dxbl-grid-data-row, tr[data-visible-index]):hover > td {
    background: var(--rx-hover) !important;
}
html[data-rx-theme="dark"] .dxbl-grid .dxbl-grid-footer,
html[data-rx-theme="dark"] .dxbl-grid .dxbl-grid-pager,
html[data-rx-theme="dark"] .dxbl-pager {
    background: var(--rx-surface) !important;
    color: var(--rx-ink) !important;
    border-color: var(--rx-line) !important;
}
/* Tabsbalken en toolbars die het thema wit maakt */
html[data-rx-theme="dark"] .dxbl-tabs,
html[data-rx-theme="dark"] .dxbl-tabs-scroll-viewer,
html[data-rx-theme="dark"] .dxbl-tabs-tablist,
html[data-rx-theme="dark"] .dxbl-toolbar,
html[data-rx-theme="dark"] .dxbl-toolbar-group {
    background: var(--rx-surface) !important;
    color: var(--rx-ink) !important;
}
html[data-rx-theme="dark"] .dxbl-tabs-item .dxbl-tabs-text-overflow { color: var(--rx-text-soft); }
/* Knoppen (niet-primary) */
html[data-rx-theme="dark"] .dxbl-btn-secondary,
html[data-rx-theme="dark"] .dxbl-btn-standalone {
    background-color: transparent;
    color: var(--rx-ink);
    border-color: var(--rx-line);
}
/* Popups, dropdowns, menu's */
html[data-rx-theme="dark"] .dxbl-popup-window,
html[data-rx-theme="dark"] .dxbl-popup-window-content,
html[data-rx-theme="dark"] .dxbl-dropdown-dialog,
html[data-rx-theme="dark"] .dxbl-dropdown,
html[data-rx-theme="dark"] .dxbl-window,
html[data-rx-theme="dark"] .dxbl-context-menu,
html[data-rx-theme="dark"] .dxbl-list-box,
html[data-rx-theme="dark"] .dxbl-popup {
    background: var(--rx-surface) !important;
    color: var(--rx-ink) !important;
    border-color: var(--rx-line) !important;
}
html[data-rx-theme="dark"] .dxbl-list-box-item:hover,
html[data-rx-theme="dark"] .dxbl-dropdown-item:hover {
    background: var(--rx-hover) !important;
}
/* Iconen (zwarte SVG/PNG-iconen licht maken; gekleurde eigen iconen niet) */
html[data-rx-theme="dark"] .header img:not(.header-logo):not([src*="/rx-"]),
html[data-rx-theme="dark"] .dxbl-toolbar-btn img.xaf-toolbar-item-icon:not([src*="/groen/"]):not([src*="RiskxIcons"]):not([src*="/rx-"]) {
    filter: brightness(0) invert(0.85);
}
/* Hoofdtoolbar en menu houden ook in donker de accentkleur (ontwerp). !important omdat de
   regel hierboven met zijn :not()-reeks specifieker is. */
html[data-rx-theme="dark"] .main-toolbar .dxbl-btn img:not([src*="/rx-"]),
html[data-rx-theme="dark"] #main-view-content .main-content .dxbl-toolbar .dxbl-btn img:not([src*="/rx-"]),
html[data-rx-theme="dark"] .xaf-sidebar img.xaf-nav-menu-item-icon:not([src*="/rx-"]) {
    filter: var(--rx-icon-filter) !important;
}
html[data-rx-theme="dark"] .about-info { color: var(--rx-muted); }

/* Popup / dialog detail-view — dark mode.
   Een detail view die als popup opent valt buiten #main-view-content, dus de
   kaart-, sectiekop- en veldkleuren bleven licht. Hier expliciet donker. */
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) :is(
    .dxbl-popup-header, .dxbl-window-header, .dxbl-popup-body, .dxbl-window-body,
    .dxbl-popup-content, .dxbl-form-layout, .dxbl-fl, .dxbl-fl-group,
    dxbl-group-control, .dxbl-group, .dxbl-fl-group-body, .dxbl-group-body-content,
    .xaf-detailview, .xaf-layout-group
) {
    background-color: var(--rx-surface) !important;
    border-color: var(--rx-line) !important;
    color: var(--rx-ink) !important;
}
/* Sectiekoppen ("Customer", "Shared Relation Type Properties") */
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) :is(
    .dxbl-group-header, .dxbl-fl-caption-tmpl, .dxbl-fl-group-caption
) {
    background-color: var(--rx-surface-3) !important;
    color: var(--rx-ink) !important;
    border-color: var(--rx-line) !important;
}
/* Titelbalk van de popup zelf */
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window) > :is(.dxbl-popup-header, .dxbl-window-header) {
    background-color: var(--rx-surface-3) !important;
    color: var(--rx-ink) !important;
    border-bottom-color: var(--rx-line) !important;
}
/* Veldlabels in de popup */
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) :is(.dxbl-fl-cpt, label) {
    color: var(--rx-label, var(--rx-muted)) !important;
}
/* Resterende witte vlakken: body-wrapper, scroll-viewer, footer/knoppenbalk */
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]),
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) :is(
    .dxbl-popup-body, .dxbl-window-body, .dxbl-popup-content, .dxbl-popup-content-wrapper,
    .dxbl-scroll-viewer, .dxbl-scroll-viewer-content, .dxbl-popup-footer, .dxbl-window-footer,
    .dxbl-popup-actions, .dxbl-toolbar, .card, .panel, .dxbl-panel
) {
    background-color: var(--rx-surface) !important;
    border-color: var(--rx-line) !important;
}
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window) > :is(.dxbl-popup-footer, .dxbl-window-footer),
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window) .dxbl-popup-actions {
    background-color: var(--rx-surface-3) !important;
    border-top-color: var(--rx-line) !important;
}
/* Vangnet: venster hard donker + ALLE structurele containers transparant, zodat
   header-/footer-/wrapper-vlakken die een eigen witte klasse houden toch donker
   worden. Editors, knoppen en switches worden bewust NIET geraakt. */
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) {
    background-color: var(--rx-surface) !important;
}
html[data-rx-theme="dark"] :is(.dxbl-popup-window, .dxbl-window, [role="dialog"]) :is(div, header, footer, section, form):not(
    .dxbl-text-edit):not(.dxbl-combobox):not(.dxbl-date-edit):not(.dxbl-spin-edit):not(.dxbl-memo):not(.dxbl-edit):not(
    .dxbl-checkbox):not([class*="btn"]):not([class*="button"]):not(.dxbl-text-edit-input) {
    background-color: transparent !important;
}

/* Readonly / geblokkeerde velden — leesbaar houden in dark mode.
   Ze krijgen dezelfde donkere achtergrond als elke editor (--rx-surface-3, regels hierboven).
   Hier stond vast #3C4A5A, uit de tijd dat ze licht bleven: op het donkere vlak 1,5:1, dus
   onleesbaar (#44, o.a. Weergavegrootte en Taal in het instellingenpaneel). --rx-text-soft
   haalt 6,3:1 en blijft zachter dan een bewerkbaar veld (--rx-ink, 10,9:1). */
html[data-rx-theme="dark"] :is(
    .dxbl-text-edit, .dxbl-edit, .dxbl-combobox, .dxbl-spin-edit, .dxbl-date-edit, .dxbl-memo
):is(.dxbl-readonly, .dxbl-disabled, [aria-readonly="true"], [aria-disabled="true"]) *,
html[data-rx-theme="dark"] :is(
    .dxbl-text-edit, .dxbl-edit, .dxbl-combobox, .dxbl-spin-edit, .dxbl-date-edit
):has(:is(input, textarea):is([readonly], :disabled)) :is(input, textarea, span, a, div, label),
html[data-rx-theme="dark"] :is(input, textarea, .dxbl-text-edit-input):is([readonly], :disabled) {
    color: var(--rx-text-soft) !important;
    -webkit-text-fill-color: var(--rx-text-soft) !important;
    opacity: 1 !important;
}

/* 12. Afwerking naar "RiskX Manager Layout" (ontwerp) -------------------------
   Wat Profix Modern niet had en het ontwerp wel. */

/* 12a. Header: geen view-titel; die staat al in de open-documenttab eronder */
.header .header-right-side > [role="heading"] {
    display: none !important;
}

/* 12b. Sidebar — menu-iconen in accentkleur, ruimte boven de sectielabels,
   about-info als rustige voetregel die niet over het menu heen schuift */
.xaf-sidebar img.xaf-nav-menu-item-icon:not([src*="/rx-"]) {
    filter: var(--rx-icon-filter);
}
.xaf-sidebar dxbl-group-control[data-dx-style="--dxbl-accordion-item-indent:0"] > .dxbl-group-header {
    margin: 14px 10px 2px 6px;
}
.xaf-sidebar .about-info {
    flex: 0 0 auto;
    margin: 0;
    padding: 10px 16px 8px;
    border-top: 1px solid var(--rx-line-soft);
    background: var(--rx-surface-2);
    font-size: 11px;
    line-height: 1.5;
    color: var(--rx-label);
}

/* 12c. Open-documenttabs — lijn van 2,5px onder de actieve tab, sluitkruis gedempt */
.xaf-tabbed-mdi > .dxbl-tabs-tablist .dxbl-tabs-item {
    padding: 8px 14px;
    border: none !important;
    background: transparent !important;
}
.xaf-tabbed-mdi > .dxbl-tabs-tablist .dxbl-tabs-item .dxbl-tabs-text-overflow {
    font-size: 13px !important;
    font-weight: 600;
    color: var(--rx-text-soft);
}
.xaf-tabbed-mdi > .dxbl-tabs-tablist .dxbl-tabs-item.dxbl-active .dxbl-tabs-text-overflow {
    font-weight: 700;
    color: var(--rx-heading) !important;
}
.xaf-tabbed-mdi > .dxbl-tabs-tablist .dxbl-tabs-item :is(.dxbl-tabs-close-btn, [class*="close"]) {
    opacity: 0.5;
}

/* 12d. Toolbar in een lijstweergave: alleen iconen, vierkante 42×34-knoppen (ontwerp).
   Een lijst herken je aan .grid-content direct onder .main-content; in een detailweergave
   blijven de knoppen met tekst staan. De naam staat nog in de tooltip (title). */
#main-view-content:has(> .main-content > .grid-content) > .main-toolbar .dxbl-toolbar-btn:has(> img) > span {
    display: none !important;
}
#main-view-content:has(> .main-content > .grid-content) > .main-toolbar .dxbl-toolbar-btn:has(> img):not(.dxbl-btn-split-dropdown) {
    min-width: 42px;
    height: 34px;
    padding: 0 !important;
    justify-content: center;
    background: var(--rx-surface) !important;
    border: 1px solid var(--rx-card-line) !important;
    color: var(--rx-accent) !important;
}
#main-view-content:has(> .main-content > .grid-content) > .main-toolbar .dxbl-toolbar-btn:has(> img) > img {
    margin: 0 !important;
}

/* 12e. Zoekveld in de toolbar — één vlak met de zoekknop eraan vast */
.main-toolbar .dxbl-text-edit:has(.dxbl-text-edit-btn) {
    min-width: 220px;
    height: 34px;
    border: 1px solid var(--rx-card-line) !important;
    border-radius: 9px !important;
    background: var(--rx-surface) !important;
    overflow: hidden;
}
.main-toolbar .dxbl-text-edit .dxbl-text-edit-btn {
    width: 34px;
    border: none !important;
    border-left: 1px solid var(--rx-card-line) !important;
    border-radius: 0 !important;
    background: transparent !important;
}
.main-toolbar .dxbl-text-edit-input::placeholder {
    color: #9AA6B3;
}

/* 12f. Grid-pager — 28px-knopjes, radius 8, actieve pagina in accent */
:is(.dxbl-pager, .dxbl-grid-pager) .dxbl-btn {
    min-width: 28px;
    height: 28px;
    border-radius: 8px !important;
    border-color: transparent;
    font-size: 12px;
}

/* 13. Themakiezer (instellingenpaneel, tandwiel rechtsboven) — #44 ---------------
   De themakiezer is van XAF (.settings-bar, .themes-menu-tms). Onder de Classic-variant
   (riskx-modern-light/-dark.css, op Office White) kreeg het gekozen item het oranje van Office
   White: XAF kleurt .nav-link.active met --bs-nav-pills-link-active-bg. En de itemnamen houden
   de donkere tekstkleur van Office White (--dxbl-body-color), ook in Dark.
   Het gekozen item krijgt hier dezelfde kleur als een gekozen item elders (--rx-active), onder
   Classic en Fluent. De tekst volgt --rx-ink, dat in Dark licht is.
   :hover staat erbij omdat XAF onder Fluent elke nav-link bij hover grijs maakt
   (".dxbl-theme-fluent .themes-menu-tms .nav-link:hover", even specifiek als de regel zonder
   :hover en later geladen). Het gekozen item verloor dan zijn kleur zolang de muis erop stond. */
.settings-bar .themes-menu-tms .nav-link {
    color: var(--rx-ink);
}
.settings-bar .themes-menu-tms .nav-link.active,
.settings-bar .themes-menu-tms .nav-link.active:hover {
    background-color: var(--rx-active);
    color: var(--rx-ink);
}
html[data-rx-theme="dark"] .settings-bar {
    background: var(--rx-surface);
    color: var(--rx-ink);
}
html[data-rx-theme="dark"] .settings-bar .themes-menu li.theme-group {
    color: var(--rx-ink);
    border-color: var(--rx-line);
}

/* 14. Knoppen in invoervelden (bewerken, +, uitklappen, kalender) — #44 -----------------
   Office White zet --dxbl-btn-color op #212529 voor knoppen in een editor; de iconen volgen
   die kleur. In Dark was dat bijna zwart op het donkere veld. Hier de zachte tekstkleur, en
   de gewone tekstkleur bij hover. */
html[data-rx-theme="dark"] .dxbl-text-edit .dxbl-btn-group > .dxbl-btn,
html[data-rx-theme="dark"] .dxbl-text-edit > .dxbl-btn {
    --dxbl-btn-color: var(--rx-text-soft);
    --dxbl-btn-hover-color: var(--rx-ink);
    --dxbl-btn-hover-bg: var(--rx-hover);
    --dxbl-btn-border-color: var(--rx-line);
}
/* Een uitgeschakeld veld krijgt van Office White een ::after-laag in
   --dxbl-text-edit-disabled-root-bg, en die is wit. Waar het invoerveld ophoudt (naast de
   knoppen) kwam dat vlak tevoorschijn: de "witte kalenderknop". */
html[data-rx-theme="dark"] .dxbl-text-edit {
    --dxbl-text-edit-disabled-root-bg: var(--rx-surface-3);
}
/* Office White heeft gevulde iconen; het kalendericoon is een vol blok met uitsparingen, en
   licht op donker leek dat een witte knop. In een editor onder Classic Dark de lijniconen van
   Fluent, zoals onder Fluent zelf. Office White verbergt die set met
   ".dxbl-image .dxbl-icon-set-fluent". */
html[data-rx-theme="dark"] body.dx-external-theme .dxbl-text-edit .dxbl-image .dxbl-icon-set-default {
    display: none;
}
html[data-rx-theme="dark"] body.dx-external-theme .dxbl-text-edit .dxbl-image .dxbl-icon-set-fluent {
    display: inline;
}
