/* MachineryOffice - aanvullende opmaak (v1.1.9)
 * Handgeschreven CSS naast de Tailwind-build (app.css), zodat opnieuw bouwen van Tailwind deze regels niet weghaalt.
 * Alleen kleurtokens (rgb(var(--c-...))), zoals in tailwind/STIJLGIDS.md.
 * Inhoud: Stock List > Categorieen, mapping (slepen, volledig scherm, verdeling), Inkoop maken (rustiger scherm). */
.cursor-grab{cursor:grab}
.map-split{grid-column:2;grid-row:1;justify-self:center;position:relative;z-index:11;width:14px;cursor:col-resize;touch-action:none;outline:none}
.map-split::after{content:"";position:absolute;top:50%;left:50%;width:4px;height:48px;margin:-24px 0 0 -2px;border-radius:2px;background:rgb(var(--c-line))}
.map-split:hover::after,.map-split:focus-visible::after,body.map-resizing .map-split::after{background:rgb(var(--c-accent))}
body.map-resizing,body.map-resizing *{cursor:col-resize!important;-webkit-user-select:none;user-select:none}
.map-fullbar{display:none}
.map-stage.is-full{position:fixed;inset:0;z-index:45;display:flex;flex-direction:column;gap:.5rem;padding:.5rem .75rem .75rem;background:rgb(var(--c-bg))}
.map-stage.is-full .map-fullbar{display:flex;align-items:center;gap:.75rem;min-height:2.25rem;padding:0 .25rem;border-bottom:1px solid rgb(var(--c-line));padding-bottom:.5rem}
.map-stage.is-full .map-wrap{flex:1 1 0%;height:auto;min-height:0}
.map-stage.is-full .map-pdf>.card-head{display:none}
body.map-full{overflow:hidden}
#mapPanel .map-dot,#mapPanel [data-pick]{cursor:grab;touch-action:none}
/* v1.1.9b: geen scroll-anchoring in het paneel en de pdf; de app houdt zelf de kop van een in-/uitgeklapt blok op zijn plek */
#mapPanel,#mapPages{overflow-anchor:none}
.map-drag-svg{position:fixed;left:0;top:0;width:100vw;height:100vh;pointer-events:none;z-index:65;overflow:visible}
.map-drag-svg path{fill:none;stroke:rgb(var(--c-accent));stroke-width:2;stroke-dasharray:6 4}
.map-drag-svg circle{fill:rgb(var(--c-accent))}
body.map-dragging,body.map-dragging *{cursor:grabbing!important;-webkit-user-select:none;user-select:none}
body.map-drag-to-pdf .map-cell{outline:1px dashed rgb(var(--c-accent)/.35)}
.map-cell.is-drop,.map-cell.is-drag-src{outline:2px solid rgb(var(--c-accent))!important;background:rgb(var(--c-accent)/.2)}
.map-row.is-drop,.map-dropzone.is-drop,.map-row.is-drag-src,.map-dropzone.is-drag-src{background:rgb(var(--c-accent-soft));box-shadow:inset 3px 0 0 rgb(var(--c-accent))}
.pu-summary{border:1px solid rgb(var(--c-line));border-radius:.375rem;background:rgb(var(--c-surface));font-size:.875rem}
.pu-summary.is-warn{border-color:rgb(var(--c-warn)/.45);background:rgb(var(--c-warn)/.06)}
.pu-summary>summary,.pu-summary-line{display:flex;align-items:center;gap:.5rem;padding:.55rem .875rem;list-style:none}
.pu-summary>summary{cursor:pointer}
.pu-summary>summary::-webkit-details-marker,.pu-fold>summary::-webkit-details-marker,.pu-fold-card>summary::-webkit-details-marker{display:none}
.pu-dot{color:rgb(var(--c-muted))}
.pu-summary-body{display:flex;flex-direction:column;gap:.25rem;border-top:1px solid rgb(var(--c-line));padding:.5rem .875rem .65rem 2.25rem;font-size:.85rem}
.pu-summary .pu-more-label .bi{display:inline-block;transition:transform .15s}
.pu-summary[open] .pu-more-label .bi{transform:rotate(180deg)}
.pu-fold{border-top:1px solid rgb(var(--c-line))}
.pu-fold>summary{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;cursor:pointer;list-style:none}
.pu-fold>summary:hover{background:rgb(var(--c-sunken)/.5)}
.pu-chev{display:inline-block;font-size:.75rem;color:rgb(var(--c-muted));transition:transform .15s}
details[open]>summary .pu-chev{transform:rotate(90deg)}
.pu-fold-card>summary{list-style:none;cursor:pointer}
.pu-fold-card:not([open])>summary{border-bottom-width:0}
.pu-grid{display:grid;grid-template-columns:1rem 4.5rem minmax(8rem,1fr) 6.5rem 6.5rem 8.5rem 4rem 4rem 7rem 5.75rem 5.75rem;gap:.4rem;align-items:center;padding:0 1rem}
.pu-grid-head{padding-top:.5rem;padding-bottom:.35rem;border-bottom:1px solid rgb(var(--c-line));font-size:.72rem;color:rgb(var(--c-muted))}
#puItems .it-card{border-bottom:1px solid rgb(var(--c-line))}
#puItems .it-card:last-child{border-bottom-width:0}
#puItems .it-card>.pu-grid{padding-top:.35rem;padding-bottom:.35rem}
#puItems .it-card.is-open{background:rgb(var(--c-sunken)/.45)}
#puItems .it-card.dragging{opacity:.5}
.it-extra{display:none;padding:.25rem 1rem .75rem 2.5rem}
.it-card.is-open .it-extra{display:block}
.it-cost{font-size:.8rem;text-align:right;white-space:nowrap;color:rgb(var(--c-muted))}
.it-cost button{text-decoration:underline dotted;text-underline-offset:2px}
.it-more{position:relative}.it-more.has-content::after{content:"";position:absolute;top:.15rem;right:.15rem;width:.35rem;height:.35rem;border-radius:9999px;background:rgb(var(--c-accent))}
.it-card.is-open .it-more .bi{transform:rotate(180deg)}
.it-more .bi{display:inline-block;transition:transform .15s}
.it-card.has-warn{box-shadow:inset 3px 0 0 rgb(var(--c-warn))}
.cost-row.is-flash td{background:rgb(var(--c-accent-soft))}
.pu-totals{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.25rem 1.25rem;font-size:.875rem}
.pu-totals span{white-space:nowrap}
@media (max-width:1500px){.pu-grid{grid-template-columns:1rem 3.75rem minmax(7rem,1fr) 5.25rem 5.25rem 6.5rem 3.25rem 3.25rem 6rem 5rem 5.5rem;gap:.3rem;padding:0 .75rem}}

/* v1.1.9a (testverslag 26-L19): contrast avatars en gedeactiveerde gebruikers (WCAG AA), geen opacity meer */
span.avatar { background: hsl(var(--av-h, 210) 42% 29%); color: #fff; }
.user-inactive td { color: rgb(var(--c-muted)); }
.user-inactive span.avatar { background: hsl(210 8% 36%); }

/* v1.1.9a (26-M4): opnieuw inloggen op dezelfde pagina */
.relogin { position: fixed; inset: 0; z-index: 9999; background: rgb(15 23 42 / .55); display: flex; align-items: center; justify-content: center; }
.relogin-box { background: rgb(var(--c-surface)); border-radius: 10px; width: min(900px, 94vw); height: min(680px, 90vh); display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 20px 50px rgb(0 0 0 / .35); }
.relogin-head { padding: .8rem 1.1rem; border-bottom: 1px solid rgb(var(--c-line)); display: flex; flex-direction: column; gap: .15rem; }
.relogin-head span { color: rgb(var(--c-muted)); font-size: .85rem; }
.relogin iframe { border: 0; flex: 1; width: 100%; }

/* v1.1.9a (testverslag 26-M9): brede tabellen blijven binnen hun kaart (scrollen in plaats van eruit lopen).
   Niet bij kaarten met invoerlijsten (autocomplete-menu's zouden worden afgeknipt). */
.card:has(> table.table):not(:has(.ac-wrap, #lotTable, .act-menu)) { overflow-x: auto; }   /* v1.2.0: ⋯-menu's in tabellen niet afknippen */
#stockTable thead th { white-space: normal; }
.tabs { overflow-x: auto; scrollbar-width: thin; }
.tabs > .tab { flex-shrink: 0; }

/* v1.1.10: documenten uploaden met per bestand een soort (doc-upload.js) */
.du-list{display:flex;flex-direction:column;gap:.35rem}
.du-row{display:grid;grid-template-columns:minmax(8rem,1fr) 15rem minmax(8rem,14rem) 2rem;gap:.4rem;align-items:center}
.du-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem}
@media (max-width:900px){.du-row{grid-template-columns:1fr 2rem}.du-row .du-type,.du-row .du-label{grid-column:1/2}}
/* v1.1.10: typeplaatje (max. 2) */
.tp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.tp-slot{position:relative;aspect-ratio:4/3;border:2px dashed rgb(var(--c-line));border-radius:.5rem;display:flex;align-items:center;justify-content:center;overflow:hidden;background:rgb(var(--c-sunken)/.4)}
.tp-slot.has-img{border-style:solid}
.tp-slot img{width:100%;height:100%;object-fit:contain;background:rgb(var(--c-surface))}
.tp-slot .tp-acts{position:absolute;top:.35rem;right:.35rem;display:flex;gap:.25rem}
.tp-slot label{display:flex;flex-direction:column;align-items:center;gap:.25rem;cursor:pointer;text-align:center;padding:.5rem;width:100%;height:100%;justify-content:center}
.tp-slot.drop-over{background:rgb(var(--c-accent)/.08);border-color:rgb(var(--c-accent))}
/* v1.1.10: klassen die niet in de Tailwind-build zitten */
@media (min-width:1024px){.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-8{grid-column:span 8/span 8}}
@media (min-width:1280px){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}
.min-w-\[10rem\]{min-width:10rem}
.table-wrap{overflow-x:auto}
.border-danger{border-color:rgb(var(--c-danger))!important}
.dt-name-col{width:34%}
.dt-card .dt-f[data-k=name],.dt-card .dt-f[data-k=keywords]{min-width:12rem}

/* v1.1.10a inkoop/stock (codescan v1.1.10 UI-01, L8) */
/* Stock List: smallere celmarges; uren en serienummer breken af in plaats van de tabel te verbreden */
#stockTable :where(thead th, tbody td){padding-left:.5rem;padding-right:.5rem}
#stockTable .st-clip{display:block;overflow-wrap:break-word}
#stockTable td:has(> .st-clip),#stockTable td.st-status{overflow-wrap:normal}
#stockTable .st-hours{max-width:5rem;margin-left:auto}
#stockTable .st-serial{max-width:7rem}
#stockTable .st-desc{min-width:8rem}
#stockTable .st-status .badge{white-space:normal;text-align:left}
/* Klaarmaakkosten: koppen breken af, geen vaste kolombreedtes */
#prepTable :where(thead th, tbody td, tfoot td){padding-left:.45rem;padding-right:.45rem}
#prepTable thead th{white-space:normal;line-height:1.15;height:auto;padding-top:.4rem;padding-bottom:.4rem;vertical-align:bottom}
#prepTable .prep-mat{min-width:10rem}
/* documententabellen op het Stock List-item: vaste indeling, namen breken af, acties altijd in beeld */
.doc-table{table-layout:fixed}
.doc-table .dt-type{width:28%}
.doc-table .dt-meta{width:7.5rem}
.doc-table .dt-acts{width:8rem}
.doc-table.ro .dt-acts{width:3.75rem}
.doc-table td.actions .btn-group{flex-wrap:nowrap}
.doc-table .badge,#stockTable .st-status .badge{height:auto;min-height:1.25rem;padding-top:.1rem;padding-bottom:.1rem;line-height:1.3}
/* sjablonen: kolom Acties blijft rechts in beeld als de tabel toch breder wordt dan de kaart */
.table .sticky-actions-col{position:sticky;right:0;z-index:1;background:rgb(var(--c-surface))}
.table thead .sticky-actions-col{background:rgb(var(--c-sunken))}
/* sjablooneditor: testresultaat breekt af in het smalle paneel */
.map-test-table .table :where(thead th){white-space:normal}
.map-test-table .table :where(th, td){padding-left:.4rem;padding-right:.4rem}
.map-test-table .mt-desc{min-width:7rem;max-width:14rem}
.map-test-table:focus-visible{outline:2px solid rgb(var(--c-accent));outline-offset:-2px}

/* v1.1.10a transport/admin (codescan v1.1.10 UI-01, L8) */
/* Settings: de 11 tabs breken af naar een tweede regel in plaats van buiten beeld te vallen */
.tabs.flex-wrap{overflow-x:visible;row-gap:.25rem}
/* Beheer → Rollen/Rechten, donker thema: gekozen stand "inzien"/"wijzigen" donkere tekst op de lichte kleur (was 2,55:1) */
html.dark .seg > label.lvl-1:has(> input:checked),html.dark .seg > label.lvl-2:has(> input:checked){color:rgb(var(--c-surface))}

/* v1.1.10a kern: vorige/volgende in de helpdesk breekt af (codescan v1.1.10 L5) */
.help-pn { white-space: normal; height: auto; min-height: 2.25rem; padding-top: .375rem; padding-bottom: .375rem; min-width: 0; max-width: 48%; }

/* v1.1.12 inkoop/stock (L2/L4: landkiezer met vlag) */
.cty-pick{position:relative}
.cty-pick .cty-flag{position:absolute;left:.6rem;top:50%;transform:translateY(-50%);pointer-events:none;line-height:1;color:rgb(var(--c-muted));z-index:2}
.cty-pick input{padding-left:2.1rem}  /* ook als MO.autocomplete het veld in .ac-wrap zet */
.cty-ro{display:inline-flex;align-items:center;gap:.4rem}

/* v1.1.12 verkoop (N1/N2: nummer groot naast de titel; S3/D6: doorgestreepte rijen) */
.doc-number{font-size:1.5rem;font-weight:700;letter-spacing:.01em;color:rgb(var(--c-ink));font-variant-numeric:tabular-nums}
.doc-number-field{display:flex;align-items:baseline;gap:.5rem;min-height:2.25rem;padding:.4rem .6rem;border:1px dashed rgb(var(--c-line));border-radius:5px;background:rgb(var(--c-sunken))}
.doc-number-field .font-semibold{font-size:1.05rem;font-variant-numeric:tabular-nums}
.row-struck > td{background:rgb(var(--c-sunken) / .55)}
.row-struck .struck-text{text-decoration:line-through;text-decoration-thickness:1.5px;text-decoration-color:rgb(var(--c-danger));color:rgb(var(--c-muted))}
.badge-struck{background:rgb(var(--c-danger) / .12);color:rgb(var(--c-danger));border:1px solid rgb(var(--c-danger) / .35);font-weight:600}
html.dark .badge-struck{background:rgb(var(--c-danger) / .22);color:rgb(255 190 185);border-color:rgb(255 190 185 / .45)}
/* v1.1.14: Module Store (tegels, banner, screenshots, testmatrix) */
.mod-tile{display:flex;flex-direction:column;transition:border-color .15s,box-shadow .15s}
.mod-tile:hover{box-shadow:0 4px 14px rgb(var(--c-ink)/.08)}
.mod-banner{aspect-ratio:16/4.5;background:linear-gradient(135deg,rgb(var(--c-accent)/.18),rgb(var(--c-accent-soft)));display:flex;align-items:center;justify-content:center;border-bottom:1px solid rgb(var(--c-line));overflow:hidden}
.mod-banner img{width:100%;height:100%;object-fit:cover;display:block}
.mod-banner .bi{font-size:2.5rem;color:rgb(var(--c-accent))}
.mod-hero{border:1px solid rgb(var(--c-line));border-radius:.5rem;overflow:hidden;aspect-ratio:16/4.5;background:linear-gradient(135deg,rgb(var(--c-accent)/.18),rgb(var(--c-accent-soft)))}
.mod-hero img{width:100%;height:100%;object-fit:cover;display:block}
.mod-hero-empty{height:100%;display:flex;align-items:center;justify-content:center}
.mod-hero-empty .bi{font-size:3.5rem;color:rgb(var(--c-accent))}
.mod-features{display:grid;grid-template-columns:1fr 1fr;gap:.4rem 1.25rem;font-size:.92rem}
.mod-features li{display:flex;gap:.5rem;align-items:flex-start}
.mod-shot{display:block;border:1px solid rgb(var(--c-line));border-radius:.375rem;overflow:hidden;aspect-ratio:16/10;background:rgb(var(--c-sunken));cursor:zoom-in;padding:0}
.mod-shot:hover,.mod-shot:focus-visible{border-color:rgb(var(--c-accent));outline:none}
.mod-shot img{width:100%;height:100%;object-fit:cover;display:block}
.mod-shot-big{flex:1 1 auto;min-width:0;max-height:75vh;object-fit:contain;border-radius:.25rem;background:rgb(var(--c-sunken))}
.mod-dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem .9rem;font-size:.88rem}
.mod-dl dt{color:rgb(var(--c-muted))}
.mod-dl dd{margin:0}
.mod-scope-grid td,.mod-scope-grid th{text-align:center}
.mod-scope-grid td:first-child,.mod-scope-grid th:first-child{text-align:left}
.mod-mx{display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border-radius:999px;font-size:.85rem}
.mod-mx-yes{background:rgb(var(--c-ok)/.14);color:rgb(var(--c-ok))}
.mod-mx-no{background:rgb(var(--c-muted)/.14);color:rgb(var(--c-muted))}
.mod-mx-err{background:rgb(var(--c-danger)/.14);color:rgb(var(--c-danger))}
.mod-mx-na{color:rgb(var(--c-muted))}
.mod-progress{height:.5rem;border-radius:999px;background:rgb(var(--c-sunken));overflow:hidden}
.mod-progress>span{display:block;height:100%;width:0;background:rgb(var(--c-accent));transition:width .2s}
.mod-scope-grid td.text-left,.mod-scope-grid th.text-left{text-align:left}
/* v1.1.19: meldingencentrum (bel rechtsboven, paneel en scherm Meldingen) */
.nt-bell .btn-icon{position:relative}
.nt-badge{position:absolute;top:-.2rem;right:-.3rem;min-width:1.15rem;height:1.15rem;padding:0 .3rem;border-radius:999px;background:rgb(var(--c-danger));color:#fff;font-size:.68rem;font-weight:600;line-height:1.15rem;text-align:center;box-shadow:0 0 0 2px rgb(var(--c-surface))}
.nt-badge[hidden]{display:none}
.nt-panel{width:26rem;padding:0;overflow:hidden}
.nt-panel-head{display:flex;align-items:center;gap:.75rem;padding:.6rem .875rem;border-bottom:1px solid rgb(var(--c-line))}
.nt-tabs{display:flex;gap:.25rem;margin-left:auto}
.nt-tab{padding:.15rem .6rem;border-radius:999px;font-size:.8rem;color:rgb(var(--c-muted))}
.nt-tab:hover{background:rgb(var(--c-sunken))}
.nt-tab.active{background:rgb(var(--c-accent-soft));color:rgb(var(--c-accent-strong));font-weight:600}
.nt-panel-list{max-height:60vh;overflow-y:auto}
.nt-panel-item{display:flex;gap:.65rem;padding:.6rem .875rem;border-bottom:1px solid rgb(var(--c-line)/.6);color:inherit;text-decoration:none}
.nt-panel-item:hover,.nt-panel-item:focus-visible{background:rgb(var(--c-sunken)/.7);outline:none}
.nt-panel-item.is-read .nt-title,.nt-row.is-read .nt-title{font-weight:500}
.nt-panel-item.is-resolved,.nt-row.is-resolved{opacity:.65}
.nt-panel-item .nt-body{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}
.nt-panel-foot{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;border-top:1px solid rgb(var(--c-line))}
.nt-empty{padding:1.25rem .875rem;color:rgb(var(--c-muted));font-size:.875rem;text-align:center}
.nt-icon{flex:none;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:999px;background:rgb(var(--c-sunken));color:rgb(var(--c-muted))}
.nt-icon.nt-ok{background:rgb(var(--c-ok)/.12);color:rgb(var(--c-ok))}
.nt-icon.nt-warn{background:rgb(var(--c-warn)/.12);color:rgb(var(--c-warn))}
.nt-icon.nt-action{background:rgb(var(--c-danger)/.12);color:rgb(var(--c-danger))}
.nt-icon.nt-info{background:rgb(var(--c-info)/.12);color:rgb(var(--c-info))}
.nt-title{font-weight:600;color:rgb(var(--c-ink))}
a.nt-title:hover{text-decoration:underline}
.nt-body{margin-top:.15rem;font-size:.85rem;color:rgb(var(--c-muted));white-space:pre-line}
.nt-when{font-size:.75rem;color:rgb(var(--c-muted))}
.nt-dot{flex:none;display:inline-block;width:.5rem;height:.5rem;border-radius:999px;background:rgb(var(--c-accent))}
.nt-list .nt-row{display:flex;gap:.875rem;padding:.875rem 1rem;border-bottom:1px solid rgb(var(--c-line))}
.nt-list .nt-row:last-child{border-bottom:0}
.nt-list .nt-row.is-unread{background:rgb(var(--c-accent-soft)/.35)}
.nt-list .nt-row.is-focus{box-shadow:inset 3px 0 0 rgb(var(--c-accent))}
.nt-actions{flex:none;display:flex;align-items:flex-start}
/* v1.1.21 verkoopdossiers */
.sd-bar{height:.5rem;border-radius:999px;background:rgb(var(--c-sunken));overflow:hidden}
.sd-bar>span{display:block;height:100%;border-radius:999px}
.sd-bar .sd-bar-ok{background:rgb(var(--c-ok))}
.sd-bar .sd-bar-warn{background:rgb(var(--c-warn))}
.sd-thumb{width:5.5rem;height:4.25rem;object-fit:cover;border-radius:5px;border:1px solid rgb(var(--c-line));background:rgb(var(--c-sunken))}
.sd-open>li{padding:.4rem .5rem;border-radius:5px;background:rgb(var(--c-danger)/.05)}
.table.table-compact td,.table.table-compact th{padding-top:.3rem;padding-bottom:.3rem}
/* v1.1.25 (plan 74 §1D): knoppenlegenda in de helpdesk */
.help-legend{margin:1.75rem 0;padding-top:.25rem;border-top:1px solid rgb(var(--c-line))}
.help-legend-title{display:flex;align-items:center;gap:.5rem}
.help-legend-img{position:relative;display:inline-block;max-width:100%}
.help-legend-img img{display:block;max-width:100%;height:auto}
.help-legend-dot{position:absolute;transform:translate(-50%,-50%);min-width:1.6rem;height:1.6rem;padding:0 .35rem;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;
  font-size:.8rem;font-weight:700;line-height:1;color:#fff;background:rgb(var(--c-accent));box-shadow:0 0 0 2px #fff,0 1px 4px rgb(0 0 0/.35);pointer-events:none}
.help-legend-table td{vertical-align:top}
.help-legend-nr{width:2.5rem;font-weight:700;color:rgb(var(--c-accent-strong))}
.help-legend-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.15rem .55rem;border:1px solid rgb(var(--c-line));border-radius:.375rem;background:rgb(var(--c-surface));white-space:nowrap;font-size:.875rem}

/* v1.1.25 (plan 74 §2.2-6): onderdelen van een module op elke pagina (bijv. de chat).
   Onder een modal (50) en het slotscherm (70); bij een vergrendeld scherm nooit zichtbaar. */
.mo-widget { position: fixed; z-index: 45; }
.mo-widget[hidden] { display: none !important; }
html.is-locked .mo-widget { visibility: hidden !important; }
.mo-widget-btn { position: relative; }
@media print { .mo-widget, .mo-widget-btn { display: none !important; } }

/* ===== v1.1.29 (plan 84): Settings → Datamigratie ===== */
.mig-steps{display:flex;flex-direction:column;gap:1rem}
.mig-step>.card-head{display:flex;align-items:center;gap:.6rem}
.mig-num{display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border-radius:999px;background:rgb(var(--c-sunken));color:rgb(var(--c-muted));font-weight:600;font-size:.8rem;flex:none}
.mig-step.mig-done .mig-num{background:rgb(var(--c-ok));color:#fff}
.mig-cols{display:grid;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:.25rem 1rem}
.mig-source{border:1px solid rgb(var(--c-line));border-radius:.4rem;padding:.6rem .75rem;margin-bottom:.6rem}
.mig-objs{display:flex;flex-wrap:wrap;gap:.35rem}
.mig-obj{display:inline-flex;align-items:center;gap:.3rem;border:1px solid rgb(var(--c-line));border-radius:999px;padding:.1rem .6rem;font-size:.8rem;background:rgb(var(--c-sunken))}
.mig-issues{margin:.5rem 0 0;padding:0;list-style:none;font-size:.85rem}
.mig-issues li{padding:.15rem 0}
.mig-sep{width:1px;align-self:stretch;background:rgb(var(--c-line));margin:0 .25rem}

/* editor */
.mig-stage{display:flex;flex-direction:column;gap:.5rem}
.mig-stage.is-full{position:fixed;inset:0;z-index:45;padding:.5rem .75rem .75rem;background:rgb(var(--c-bg))}
.mig-fullbar{display:none}
.mig-stage.is-full .mig-fullbar{display:flex;align-items:center;gap:.75rem;min-height:2.25rem;padding:0 .25rem .5rem;border-bottom:1px solid rgb(var(--c-line))}
.mig-bar{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}
.mig-target-sel{width:auto;min-width:18rem;max-width:30rem}
.mig-lib{left:0;right:auto;width:30rem;max-height:70vh;overflow:auto;padding:.4rem}
.mig-lib h4{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:rgb(var(--c-muted));margin:.4rem .3rem .2rem}
.mig-lib-item{display:flex;align-items:flex-start;gap:.4rem;width:100%;text-align:left;padding:.3rem .45rem;border-radius:.3rem;font-size:.82rem;cursor:grab;background:none;border:0;color:inherit}
.mig-lib-item:hover,.mig-lib-item:focus-visible{background:rgb(var(--c-sunken))}
.mig-lib-item small{display:block;color:rgb(var(--c-muted));font-size:.72rem;line-height:1.2}
.mig-wrap{position:relative;display:grid;grid-template-columns:minmax(0,22fr) 14px minmax(0,52fr) 14px minmax(0,26fr);height:calc(100vh - 21rem);min-height:30rem}
.mig-stage.is-full .mig-wrap{flex:1 1 0%;height:auto;min-height:0}
.mig-src,.mig-dst{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.mig-src{grid-column:1}.mig-dst{grid-column:5}
#mgSplit1{grid-column:2}#mgSplit2{grid-column:4}
.mig-split{grid-row:1}
.mig-panel-head{display:flex;align-items:center;gap:.4rem;padding:.45rem .6rem;border-bottom:1px solid rgb(var(--c-line));font-size:.85rem;font-weight:600;background:rgb(var(--c-sunken))}
.mig-panel-head.mig-drop{outline:2px dashed transparent;outline-offset:-3px}
.mig-panel-head.mig-drop.is-over{outline-color:rgb(var(--c-accent));background:rgb(var(--c-accent)/.08)}
.mig-search{margin:.4rem .5rem}
.mig-tree{flex:1 1 0%;overflow:auto;padding:.2rem 0 .6rem;font-size:.82rem;position:relative}
.mig-node{display:flex;align-items:center;gap:.3rem;padding:.12rem .5rem .12rem calc(.5rem + var(--d,0) * .9rem);position:relative;white-space:nowrap;cursor:default;user-select:none}
.mig-node:hover{background:rgb(var(--c-sunken))}
.mig-node.is-hl{background:rgb(var(--c-accent)/.12)}
.mig-node.is-pick{background:rgb(var(--c-warn)/.18)}
.mig-node .mig-tw{width:1rem;flex:none;text-align:center;color:rgb(var(--c-muted));cursor:pointer;background:none;border:0;padding:0}
.mig-node .mig-lbl{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
.mig-node .mig-ty{font-size:.68rem;color:rgb(var(--c-muted))}
.mig-node.is-obj{font-weight:600}
.mig-node.is-off{opacity:.45}
.mig-port{width:11px;height:11px;border-radius:999px;border:2px solid rgb(var(--c-muted));background:rgb(var(--c-surface));flex:none;cursor:crosshair;padding:0}
.mig-port:focus-visible{outline:2px solid rgb(var(--c-accent));outline-offset:1px}
.mig-port.is-on{border-color:rgb(var(--c-accent));background:rgb(var(--c-accent))}
.mig-src .mig-port{margin-left:auto}
.mig-rep{font-size:.62rem;padding:0 .3rem;border-radius:.25rem;background:rgb(var(--c-info)/.15);color:rgb(var(--c-info));cursor:grab}
.mig-field{display:flex;align-items:center;gap:.35rem;padding:.16rem .55rem;font-size:.82rem;border-left:3px solid transparent;cursor:pointer}
.mig-field:hover{background:rgb(var(--c-sunken))}
.mig-field.is-req{border-left-color:rgb(var(--c-danger))}
.mig-field.is-ok{border-left-color:rgb(var(--c-ok))}
.mig-field.is-auto{opacity:.55;cursor:default}
.mig-field.is-hl{background:rgb(var(--c-accent)/.12)}
.mig-field.is-drop{background:rgb(var(--c-accent)/.18)}
.mig-field .mig-lbl{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
.mig-field .mig-def{font-size:.7rem;color:rgb(var(--c-muted));max-width:7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mig-canvas{grid-column:3;position:relative;overflow:hidden;border:1px solid rgb(var(--c-line));border-radius:.4rem;background:
  radial-gradient(circle,rgb(var(--c-line)) 1px,transparent 1px) 0 0/18px 18px,rgb(var(--c-surface));cursor:default;outline:none}
.mig-canvas.is-pan{cursor:grabbing}
.mig-canvas.is-drop{box-shadow:inset 0 0 0 2px rgb(var(--c-accent))}
.mig-canvas-inner{position:absolute;left:0;top:0;width:4000px;height:3000px;transform-origin:0 0}
.mig-fn{position:absolute;min-width:9.5rem;max-width:15rem;background:rgb(var(--c-surface));border:1px solid rgb(var(--c-line));border-radius:.4rem;box-shadow:0 2px 6px rgba(0,0,0,.08);font-size:.78rem;user-select:none}
.mig-fn.is-sel{border-color:rgb(var(--c-accent));box-shadow:0 0 0 2px rgb(var(--c-accent)/.35)}
.mig-fn.is-hl{border-color:rgb(var(--c-accent))}
.mig-fn-head{display:flex;align-items:center;gap:.3rem;padding:.25rem .4rem;border-bottom:1px solid rgb(var(--c-line));background:rgb(var(--c-sunken));border-radius:.4rem .4rem 0 0;cursor:move;font-weight:600}
.mig-fn-head .mig-g{font-size:.6rem;font-weight:500;text-transform:uppercase;color:rgb(var(--c-muted))}
.mig-fn-body{display:flex;justify-content:space-between;gap:.4rem;padding:.25rem 0}
.mig-fn-in,.mig-fn-out{display:flex;flex-direction:column;gap:.15rem}
.mig-fn-in .mig-pin,.mig-fn-out .mig-pin{display:flex;align-items:center;gap:.25rem;font-size:.7rem;color:rgb(var(--c-muted))}
.mig-fn-in .mig-pin{margin-left:-6px}
.mig-fn-out .mig-pin{margin-right:-6px;justify-content:flex-end}
.mig-fn-sum{padding:0 .45rem .3rem;font-size:.68rem;color:rgb(var(--c-muted));max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mig-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:12;overflow:visible}
.mig-svg path{fill:none;stroke-width:1.8}
.mig-svg path.mig-hit{stroke:transparent;stroke-width:10;pointer-events:stroke;cursor:pointer}
.mig-svg path.is-sel{stroke-width:3}
.mig-mini{position:absolute;right:.4rem;bottom:.4rem;width:120px;height:90px;border:1px solid rgb(var(--c-line));background:rgb(var(--c-surface)/.9);border-radius:.3rem;overflow:hidden;z-index:5}
.mig-mini i{position:absolute;background:rgb(var(--c-accent)/.5);border-radius:1px}
.mig-mini b{position:absolute;border:1px solid rgb(var(--c-accent))}
.mig-bottom{display:flex;flex-direction:column;max-height:16rem;min-height:2.4rem}
.mig-bottom.is-closed .mig-tabpane{display:none}
.mig-stage.is-full .mig-bottom{max-height:28vh}
.mig-tabs{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-bottom:1px solid rgb(var(--c-line))}
.mig-tab{padding:.2rem .6rem;border-radius:.3rem;font-size:.82rem;background:none;border:0;color:rgb(var(--c-muted));cursor:pointer}
.mig-tab.active{background:rgb(var(--c-sunken));color:rgb(var(--c-ink));font-weight:600}
.mig-tabpane{overflow:auto;flex:1 1 0%;font-size:.78rem}
.mig-tabpane table{border-collapse:collapse;width:max-content;min-width:100%}
.mig-tabpane th,.mig-tabpane td{border-bottom:1px solid rgb(var(--c-line));padding:.2rem .45rem;text-align:left;white-space:nowrap;max-width:18rem;overflow:hidden;text-overflow:ellipsis;vertical-align:top}
.mig-tabpane th{position:sticky;top:0;background:rgb(var(--c-surface));font-weight:600;z-index:1}
.mig-tabpane td.is-err{background:rgb(var(--c-danger)/.12);color:rgb(var(--c-danger))}
.mig-tabpane td.is-warn{background:rgb(var(--c-warn)/.15)}
.mig-tabpane tr.is-rej td{background:rgb(var(--c-danger)/.06)}
.mig-tabpane tr.is-filt td{opacity:.5}
.mig-tabpane tr.is-cur td{outline:1px solid rgb(var(--c-accent))}
.mig-list{overflow:auto;max-height:calc(100vh - 18rem)}
.mig-stage.is-full .mig-list{flex:1 1 0%;max-height:none}
.mig-map-rows{display:grid;grid-template-columns:1fr 1.2rem 1fr 2rem;gap:.3rem;align-items:center}
body.mig-dragging,body.mig-dragging *{cursor:crosshair !important;user-select:none}
.mig-ghost{position:fixed;z-index:70;pointer-events:none;padding:.2rem .5rem;border-radius:.3rem;background:rgb(var(--c-ink));color:rgb(var(--c-surface));font-size:.75rem;white-space:nowrap}
@media (max-width:1100px){.mig-wrap{display:none}.mig-bar{display:none}.mig-list{display:block !important}}
/* v1.1.29 datamigratie: vaste maten die niet in de gecompileerde set zitten */
.max-h-\[8rem\]{max-height:8rem}.max-h-\[16rem\]{max-height:16rem}.max-h-\[18rem\]{max-height:18rem}
.max-w-\[24rem\]{max-width:24rem}.max-w-\[44rem\]{max-width:44rem}.max-w-\[52rem\]{max-width:52rem}
.mig-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:.15rem .5rem;max-height:9rem;overflow:auto}
.mig-checks label{display:flex;align-items:center;gap:.35rem;font-size:.75rem;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.mig-checks input{flex:none;margin:0}

/* v1.1.36: optioneel klantlogo linksboven in het menu, met MachineryOffice en de versie klein eronder.
 * Het logo staat op een licht vlak, zodat een donker logo ook op het donkere menu leesbaar blijft. */
.side-brand.side-brand-has-logo{height:auto;min-height:3.5rem;flex-direction:column;align-items:flex-start;justify-content:center;gap:.3rem;padding-top:.6rem;padding-bottom:.5rem}
.side-brand-logo{display:block;width:auto;max-width:100%;max-height:2.75rem;object-fit:contain;background:rgb(255 255 255);border-radius:5px;padding:.25rem .4rem}
.side-brand-sub{font-size:.68rem;line-height:1;font-weight:500;letter-spacing:0;color:rgb(var(--c-nav-ink)/.8)}
.side-brand-sub b{font-weight:600}

/* v1.2.0 (nazorg 15-10-2026): kaart van een extensie in de smalle zijkolom (bv. Werkplaats op het stock-item). Een lange waarde
 * (zoals een reden) drukte de labelkolom samen tot één letter per regel. Labels krijgen een minimumbreedte, waarden mogen afbreken. */
.page-aside [data-module-panel] .table td:first-child{min-width:8rem;overflow-wrap:normal;word-break:normal}
.page-aside [data-module-panel] .table td.num{white-space:normal;overflow-wrap:normal}
.pu-pane [data-module-panel] .table td:first-child{white-space:nowrap}
.pu-pane [data-module-panel] .table td{overflow-wrap:normal;word-break:normal}

/* v2.0.3 (plan 117 P09): eigen kleuren voor de zijbalk per thema (licht: lichte zijbalk met donkere tekst; schemer middel; donker
   het donkerst). --c-nav blijft voor codeblokken en meldingen. Contrast tekst/achtergrond ≥ 4,5:1 in alle drie de thema's. */
:root{--c-side:236 238 236;--c-side-ink:52 58 64;--c-side-strong:17 20 24;--c-side-line:212 216 214;--c-side-hover:225 228 226;--c-side-active:218 222 219}
html.dark{--c-side:15 17 19;--c-side-ink:180 186 192;--c-side-strong:255 255 255;--c-side-line:38 42 46;--c-side-hover:27 30 34;--c-side-active:33 37 41}
html.dark.dusk{--c-side:36 40 46;--c-side-ink:205 211 217;--c-side-strong:255 255 255;--c-side-line:58 63 70;--c-side-hover:46 51 58;--c-side-active:53 59 67}
.side{background:rgb(var(--c-side));color:rgb(var(--c-side-ink))}
.side-brand{color:rgb(var(--c-side-strong));border-color:rgb(var(--c-side-line))}
.side-brand .text-nav-ink\/80,.side-brand-sub{color:rgb(var(--c-side-ink))}
.side-group,.side-label,.side-empty{color:rgb(var(--c-side-ink)/.85)}
.side-link,.side-grp{color:rgb(var(--c-side-ink))}
.side-link:hover,.side-grp:hover{background:rgb(var(--c-side-hover));color:rgb(var(--c-side-strong))}
.side-link.active{background:rgb(var(--c-side-active));color:rgb(var(--c-side-strong))}
.side-grp.has-active{color:rgb(var(--c-side-strong))}
.side-link .side-count{background:rgb(var(--c-side-line));color:rgb(var(--c-side-strong))}
.side-link .side-count.is-warn{background:rgb(var(--c-accent)/.22);color:rgb(var(--c-side-strong))}
.side-fav{color:rgb(var(--c-side-ink)/.6)}
.side-foot,.side-toggle{border-color:rgb(var(--c-side-line))}
.side-toggle{color:rgb(var(--c-side-ink))}
.side-toggle:hover{color:rgb(var(--c-side-strong))}
.side-link:focus-visible,.side-grp:focus-visible,.side-toggle:focus-visible,.side-brand:focus-visible,.side-fav:focus-visible{outline:2px solid rgb(var(--c-accent));outline-offset:-2px}
html.nav-rail .side-sub.is-fly{background:rgb(var(--c-side));border-color:rgb(var(--c-side-line))}
html.nav-rail .side-sub.is-fly::before{color:rgb(var(--c-side-ink)/.85)}

/* v2.0.3 (plan 117 P18): ingeklapt menu met een eigen logo: alleen het MO-teken, gecentreerd en even hoog als zonder logo */
html.nav-rail .side-brand.side-brand-has-logo{height:3.5rem;min-height:3.5rem;flex-direction:row;align-items:center;justify-content:center;gap:0;padding:0}

/* v2.0.3 (plan 117 S5): miniaturen in Beheer → Sjablonen */
/* v2.0.5: tegels met vaste, nette breedte; de miniatuur vult de volle kaartbreedte (geen scheve uitlijning meer) */
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13.5rem,16rem));gap:1rem;align-items:start}
.tpl-tile{display:flex;flex-direction:column;overflow:hidden}
.tpl-tile .card-body{flex:1}
.tpl-thumb{width:100%;aspect-ratio:210/297;overflow:hidden;background:rgb(var(--c-sunken));border-bottom:1px solid rgb(var(--c-line));display:flex;align-items:flex-start;justify-content:center;color:rgb(var(--c-muted));font-size:.8rem}
.tpl-thumb canvas{display:block;width:100%;height:auto;background:#fff}
.mo-ico{display:inline-block;vertical-align:-0.125em}

/* v2.0.4 (plan 120 S2): snelknoppen onder elkaar (icoon boven, groter; label eronder), voor alle snelknoppen */
.quick-v .quick-tile{position:relative;flex-direction:column;justify-content:center;height:5.75rem;gap:.4rem;padding:.5rem .5rem .6rem;text-align:center}
.quick-v .quick-tile .bi,.quick-v .quick-tile .mo-ico{font-size:1.75rem;line-height:1}
.quick-v .quick-tile>span.truncate{max-width:100%}
.quick-v .quick-tile .bi-box-arrow-up-right{position:absolute;top:.4rem;right:.45rem;margin:0;font-size:.7rem!important}
.ql-preview{border:1px dashed rgb(var(--c-line));border-radius:.375rem;padding:.75rem;background:rgb(var(--c-sunken)/.5)}

/* v2.0.4 (plan 120 A1): lettertypen van pdf-sjablonen in het opmaakscherm (zelfde DejaVu-bestanden als de pdf) */
@font-face{font-family:'MO Pdf Sans';font-style:normal;font-weight:400;font-display:block;src:url(../fonts/pdf/DejaVuSans.woff2) format("woff2")}
@font-face{font-family:'MO Pdf Sans';font-style:normal;font-weight:700;font-display:block;src:url(../fonts/pdf/DejaVuSans-Bold.woff2) format("woff2")}
@font-face{font-family:'MO Pdf Sans';font-style:italic;font-weight:400;font-display:block;src:url(../fonts/pdf/DejaVuSans-Oblique.woff2) format("woff2")}
@font-face{font-family:'MO Pdf Sans';font-style:italic;font-weight:700;font-display:block;src:url(../fonts/pdf/DejaVuSans-BoldOblique.woff2) format("woff2")}
@font-face{font-family:'MO Pdf Mono';font-style:normal;font-weight:400;font-display:block;src:url(../fonts/pdf/DejaVuSansMono.woff2) format("woff2")}
@font-face{font-family:'MO Pdf Mono';font-style:normal;font-weight:700;font-display:block;src:url(../fonts/pdf/DejaVuSansMono-Bold.woff2) format("woff2")}

/* v2.0.4 (plan 120 §3): sjablonen-editor – naam, tabbladen, stijlkaarten, ingeklapte groepen */
.tpl-name{display:block;width:100%;max-width:32rem;font-size:1.375rem;font-weight:600;line-height:1.3;color:rgb(var(--c-ink));background:transparent;border:1px solid transparent;border-radius:.375rem;padding:.05rem .35rem;margin-left:-.35rem}
.tpl-name:hover{border-color:rgb(var(--c-line))}
.tpl-name:focus{outline:none;border-color:rgb(var(--c-accent));box-shadow:0 0 0 3px rgb(var(--c-accent)/.15)}
.tpl-tabs{display:flex;border-bottom:1px solid rgb(var(--c-line))}
.tpl-tabs [role=tab]{flex:1;padding:.6rem .5rem;font-size:.875rem;font-weight:500;color:rgb(var(--c-muted));border-bottom:2px solid transparent;margin-bottom:-1px}
.tpl-tabs [role=tab]:hover{color:rgb(var(--c-ink))}
.tpl-tabs [role=tab][aria-selected=true]{color:rgb(var(--c-ink));border-bottom-color:rgb(var(--c-accent))}
.tpl-tabs [role=tab]:focus-visible{outline:2px solid rgb(var(--c-accent));outline-offset:-2px}
.tpl-styles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem}
.tpl-style{position:relative;display:flex;flex-direction:column;gap:.2rem;padding:.35rem .35rem .3rem;border:1px solid rgb(var(--c-line));border-radius:.5rem;cursor:pointer;color:rgb(var(--c-ink));background:rgb(var(--c-surface))}
.tpl-style:hover{border-color:rgb(var(--c-accent)/.6)}
.tpl-style-img{display:block;color:rgb(var(--c-ink)/.85);background:#fff;border-radius:.25rem;padding:.15rem}
.tpl-style-name{font-size:.75rem;font-weight:500;line-height:1.2}
.tpl-style:has(input:checked){border-color:rgb(var(--c-accent));box-shadow:0 0 0 1px rgb(var(--c-accent))}
.tpl-style:has(input:checked)::after{content:"\2713";position:absolute;top:.3rem;right:.4rem;width:1.1rem;height:1.1rem;border-radius:999px;background:rgb(var(--c-accent));color:#fff;font-size:.7rem;line-height:1.1rem;text-align:center}
.tpl-style:has(input:focus-visible){outline:2px solid rgb(var(--c-accent));outline-offset:2px}
.tpl-group{border-top:1px solid rgb(var(--c-line));padding:.5rem 0}
.tpl-group:first-of-type{border-top:0;padding-top:0}
.tpl-group>summary{cursor:pointer;font-size:.875rem;font-weight:600;list-style:none;display:flex;align-items:center;gap:.4rem}
.tpl-group>summary::before{content:"\203A";display:inline-block;transition:transform .15s;color:rgb(var(--c-muted))}
.tpl-group[open]>summary::before{transform:rotate(90deg)}
.tpl-group>summary:focus-visible{outline:2px solid rgb(var(--c-accent));outline-offset:2px;border-radius:.25rem}

/* v2.1.0: thema Kleurenblind (kleurenblindvriendelijk; klasse cvd op <html>, licht thema). Gebaseerd op het Okabe-Ito-palet en de
   kleurenblindthema's van grote apps: geen rood tegenover groen, maar blauw (goed/info/accent) tegenover oranje/vermiljoen (fout) en
   oker (let op); die verschillen blijven zichtbaar bij protanopie en deuteranopie (rood-groen, ±8% van de mannen). Fout en Let op zijn
   ook in donkerte verschillend. Alle tekstkleuren ≥ 4,5:1 op achtergrond, vlak en verdiept vlak (WCAG AA). Omdat kleur alleen nooit
   genoeg is (WCAG 1.4.1) krijgen statuslabels en meldingen zonder eigen icoon een vorm (vinkje, driehoek, achthoek, i), zijn links
   altijd onderstreept en heeft een fout veld een dikke gestippelde rand. Staat hier zodat er geen nieuwe bouw van app.css nodig is. */
html.cvd{--c-accent:0 98 168;--c-accent-ink:255 255 255;--c-accent-strong:0 82 140;--c-accent-soft:224 236 246;
  --c-ok:8 100 210;--c-warn:140 96 0;--c-danger:168 44 0;--c-info:0 98 168}
html.cvd a:not(.btn):not(.side-link):not(.mshell-nav-item):not(.mm-tile):not(.mm-row):not(.mm-scanbtn):not(.mm-activebar):not(.dropdown-item){text-decoration:underline;text-underline-offset:2px}
html.cvd .input.is-invalid,html.cvd .is-invalid{border-width:2px;border-style:dashed}
/* vorm bij de kleur: alleen als het label of de melding nog geen eigen icoon heeft (zonder :has()-ondersteuning vervalt alleen dit) */
html.cvd .badge-ok:not(:has(>.bi))::before,html.cvd .alert-success:not(:has(>.bi))::before{font-family:bootstrap-icons;content:"\f26a";font-weight:400}
html.cvd .badge-warn:not(:has(>.bi))::before,html.cvd .alert-warning:not(:has(>.bi))::before{font-family:bootstrap-icons;content:"\f33a";font-weight:400}
html.cvd .badge-danger:not(:has(>.bi))::before,html.cvd .alert-danger:not(:has(>.bi))::before{font-family:bootstrap-icons;content:"\f626";font-weight:400}
html.cvd .alert-info:not(:has(>.bi))::before{font-family:bootstrap-icons;content:"\f430";font-weight:400}
/* v2.3.0 (plan 129 §4.13): eenvoudige editor (Core\SimpleText) – voorbeeld */
.st-preview h2{font-size:1.15rem;font-weight:700;margin:.9rem 0 .4rem}
.st-preview h3{font-size:1rem;font-weight:700;margin:.8rem 0 .3rem}
.st-preview h4{font-size:.95rem;font-weight:600;margin:.6rem 0 .25rem}
.st-preview p{margin:.35rem 0}
.st-preview ul{list-style:disc;padding-left:1.4rem;margin:.35rem 0}
.st-preview ol{list-style:decimal;padding-left:1.4rem;margin:.35rem 0}
.st-preview hr{border:0;border-top:1px solid rgb(var(--c-line));margin:.8rem 0}
.st-preview .st-field{background:rgb(var(--c-accent) / .12);border-radius:.2rem;padding:0 .2rem}
.st-preview .st-page{border-top:2px dashed rgb(var(--c-line));color:rgb(var(--c-muted));font-size:.75rem;text-align:center;margin:1rem 0;padding-top:.2rem}
.st-preview .st-table{margin:.5rem 0}

/* v2.4.1 (plan 139 MO-04): Stock List, weergave Compact — één regel per item, lage rijen, lange namen afgekapt (volledige naam in de tooltip) */
.table.st-compact th,.table.st-compact td{padding-top:.2rem;padding-bottom:.2rem;white-space:nowrap;font-size:.84rem;line-height:1.3}
.table.st-compact td.st-c-title{max-width:22rem;overflow:hidden;text-overflow:ellipsis}
.table.st-compact .badge{white-space:nowrap;display:inline-block}
.table.st-compact .row-acts .btn{height:1.6rem;min-height:0;padding-top:0;padding-bottom:0}
