/* ==========================================================================
   Edge-portaal in de beeldtaal van de voorbeeldkaarten op /edge-seo/ (parts/edge-showcase.php, .nsl-sc-*).
   Vlakke kaart #121212 met haarlijn, kop met titel links en grijze meta rechts, cijferrij met haarlijnen,
   rustige grafieken: grijs voor doorgelaten, paars voor groei, roze voor tegengehouden/verloren/negatief,
   amber als tweede lijn, legenda met een kort streepje. Vlakke meetlatten van 2px. Tabellen met haarlijnen.
   Alleen actief op body.nsl-edgeportal (inc/edge-gsc.php, body_class).
   ========================================================================== */
body.nsl-edgeportal {
	--app-good: #e6e6e6;
	--app-warn: #ffb86b;
	--app-bad: #ff5c7a;
	--ed-card: #121212;
	--ed-line: rgba(158, 158, 158, .16);
	--ed-hair: rgba(255, 255, 255, .07);
	--ed-hair2: rgba(255, 255, 255, .05);
	--ed-text: #efefef;
	--ed-mute: #8a8a8a;
	--ed-dim: #6d6d6d;
	--ed-acc: #7643c8;
	--ed-bad: #ff5c7a;
	--ed-amb: #ffb86b;
	--ed-bar: rgba(255, 255, 255, .45);
	--ed-track: rgba(255, 255, 255, .06);
}

/* --------------------------------------------------------------------------
   1. Kaarten: alles wat een paneel is krijgt dezelfde vlakke kaart en dezelfde binnenruimte
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-portal__main :is(.nsl-panel, .nsl-card) { background-color: var(--ed-card) !important; border-color: var(--ed-line) !important; }
body.nsl-edgeportal .nsl-portal__main > :is(.nsl-ev, .nsl-trk, .nsl-rl, .nsl-rev, .nsl-kwr, .nsl-imp, .nsl-goals, .nsl-oppo) { margin: 0; }
body.nsl-edgeportal .nsl-portal__main > :is(.nsl-ev, .nsl-trk:not(.nsl-mkt), .nsl-rl, .nsl-rev, .nsl-kwr) {
	position: relative; padding: 22px 24px; background: var(--ed-card); border: 1px solid var(--ed-line); min-width: 0;
}
body.nsl-edgeportal .nsl-portal__main > :is(.nsl-panel, .nsl-card) { margin-top: 0 !important; margin-bottom: 0 !important; }
/* Reviews: app.css zet section.nsl-rev bewust kaal (gedeelde klasse); in het Edge-portaal wel een kaart */
body.nsl-edgeportal.nsl-app .nsl-portal__main > section.nsl-rev { padding: 22px 24px !important; background: var(--ed-card) !important; border: 1px solid var(--ed-line) !important; }
body.nsl-edgeportal.nsl-app .nsl-portal__main > section.nsl-rev .nsl-rev__setup { padding: 0; border: 0; }
@media (max-width: 640px) { body.nsl-edgeportal.nsl-app .nsl-portal__main > section.nsl-rev { padding: 16px !important; } }
/* Panelen in het overzicht en de resultaatpagina die in een eigen wrapper staan */
body.nsl-edgeportal .nsl-portal__main :is(.nsl-ovb-list, .nsl-imp) > :is(.nsl-panel, .nsl-card) { margin-bottom: 0; }

/* Kop van een kaart: titel vet links, kleine grijze meta rechts */
body.nsl-edgeportal .nsl-portal__main > .nsl-panel > h3:first-child,
body.nsl-edgeportal .nsl-portal__main > section.nsl-card > header.nsl-card__h:first-child {
	font: 600 17px/1.3 var(--f-display); letter-spacing: -.005em; color: var(--ed-text);
}
body.nsl-edgeportal .nsl-portal__main .nsl-card__h { align-items: baseline; }
body.nsl-edgeportal .nsl-portal__main .nsl-card__h > :is(span, small, .nsl-muted) { font-size: 12.5px; color: var(--ed-mute); }
/* Kleine kopjes in de kaarten (Scorekaart, Site Health, Score per dag): gewone letter, grijs, zonder blokje */
body.nsl-edgeportal.nsl-app .nsl-portal__main .nsl-card__k,
body.nsl-edgeportal .nsl-portal__main .nsl-card__k { font: 600 13px/1.3 var(--f-body, inherit) !important; letter-spacing: 0 !important; color: var(--ed-text) !important; }
body.nsl-edgeportal .nsl-portal__main .nsl-card__k::before { display: none !important; }
body.nsl-edgeportal .nsl-portal__main .nsl-card__k small { margin-left: 8px; font-weight: 400; font-size: 12.5px; color: var(--ed-mute); }

/* Grote sectiekoppen (Gebeurtenissen, Posities, Rate limiting) als kaartkop */
body.nsl-edgeportal :is(.nsl-ev__head, .nsl-trk__head, .nsl-rl__head, .nsl-rev__head) { align-items: center; gap: 12px 20px; padding-bottom: 16px; border-bottom: 1px solid var(--ed-hair); }
body.nsl-edgeportal :is(.nsl-ev__head, .nsl-trk__head, .nsl-rl__head, .nsl-rev__head) h2 { font: 600 17px/1.3 var(--f-display); letter-spacing: -.005em; color: var(--ed-text); }
body.nsl-edgeportal :is(.nsl-ev__eye, .nsl-trk__eye, .nsl-kwr__eye) { margin: 0 0 4px; font: 500 12.5px/1.3 var(--f-body, inherit); letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-rl__head p.nsl-muted { font-size: 13.5px; line-height: 1.55; }

/* Periodekeuze: haarlijn, actieve keuze wit met een paarse streep eronder, geen vlak */
body.nsl-edgeportal .nsl-ev__range { border: 1px solid var(--ed-line); }
body.nsl-edgeportal .nsl-ev__range a { padding: 7px 14px; font-size: 12.5px; color: var(--ed-mute); border-right-color: var(--ed-line); }
body.nsl-edgeportal .nsl-ev__range a.is-on { background: transparent; color: #fff; box-shadow: inset 0 -2px 0 var(--ed-acc); }

/* --------------------------------------------------------------------------
   2. Cijferrij: klein grijs label boven, groot getal eronder, haarlijnen ertussen
   -------------------------------------------------------------------------- */
body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis, .nsl-aio__k) { border-top: 0; border-bottom: 1px solid var(--ed-hair); }
body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis, .nsl-aio__k) > div { gap: 8px; padding: 4px 16px 18px 0; }
body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis, .nsl-aio__k) > div + div { padding-left: 16px; border-left: 1px solid var(--ed-hair); }
body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis, .nsl-aio__k) span,
body.nsl-edgeportal :is(.nsl-geo__kpis, .nsl-aiv__kpis, .nsl-gsc-kpis) span:not(.nsl-tip):not([class*="tip"]) {
	font: 400 12px/1.25 var(--f-body, inherit); letter-spacing: 0; color: var(--ed-mute);
}
body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis, .nsl-aio__k, .nsl-geo__kpis, .nsl-aiv__kpis) b {
	font: 600 24px/1.05 var(--f-mono); font-variant-numeric: tabular-nums; letter-spacing: -.02em; color: #fff; white-space: nowrap;
}
body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis, .nsl-aio__k, .nsl-geo__kpis, .nsl-aiv__kpis) small { font-size: 12px; line-height: 1.4; color: var(--ed-dim); }
/* Alleen tegengehouden is roze, zoals in het voorbeeld; de rest wit */
body.nsl-edgeportal .nsl-ev__kpis > div:nth-child(4) b { color: #fff; }
body.nsl-edgeportal .nsl-ev__kpis > div:nth-child(2) b { color: var(--ed-bad); }
body.nsl-edgeportal .nsl-aio__k b.is-a { color: #fff; }

/* --------------------------------------------------------------------------
   3. Legenda en assen: kort streepje van 10 bij 3, grijze tekst, onder de grafiek
   -------------------------------------------------------------------------- */
body.nsl-edgeportal :is(.nsl-ev__legend, .nsl-trk__distl, .nsl-aio__leg, .nsl-gsc-legend, .nsl-aio__slbl) { gap: 6px 16px; font-size: 12px; color: var(--ed-mute); }
body.nsl-edgeportal :is(.nsl-ev__legend, .nsl-trk__distl, .nsl-gsc-legend) i:not(.is-live),
body.nsl-edgeportal .nsl-aio__leg i { display: inline-block; width: 10px !important; height: 3px !important; border-radius: 0; margin-right: 0; vertical-align: middle; }
body.nsl-edgeportal :is(.nsl-ev__legend, .nsl-trk__distl) b { color: var(--ed-text); font-weight: 500; }
body.nsl-edgeportal .nsl-aio__slbl :is(.p, .u, .n)::before { width: 10px; height: 3px; border-radius: 0; }
body.nsl-edgeportal :is(.nsl-ev__ticks) { font: 11px var(--f-mono); color: var(--ed-dim); }
body.nsl-edgeportal .nsl-ev__note { margin-top: 12px; font-size: 12px; line-height: 1.55; color: var(--ed-dim); }

/* --------------------------------------------------------------------------
   4. Tabellen: klein grijs kopje, haarlijnen, ruime rijen, getallen rechts in mono
   -------------------------------------------------------------------------- */
body.nsl-edgeportal :is(.nsl-ev__tbl, .nsl-trk__tbl, .nsl-geo__tbl) th,
body.nsl-edgeportal.nsl-app .nsl-portal__main .nsl-table th,
body.nsl-edgeportal .nsl-portal__main .nsl-table th,
body.nsl-edgeportal .nsl-aiv__grid th,
body.nsl-edgeportal .nsl-aio__hd {
	font: 600 12px/1.3 var(--f-body, inherit) !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--ed-mute) !important; background: transparent !important;
}
body.nsl-edgeportal :is(.nsl-ev__tbl, .nsl-trk__tbl) th { padding: 10px 10px; border-bottom: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-ev__tbl th { background: var(--ed-card) !important; }
body.nsl-edgeportal :is(.nsl-ev__tbl, .nsl-trk__tbl) td { height: 44px; border-bottom: 1px solid var(--ed-hair2); }
body.nsl-edgeportal :is(.nsl-ev__tbl, .nsl-trk__tbl) tr:hover td { background: rgba(118, 67, 200, .06); }
body.nsl-edgeportal .nsl-aiv__grid { border: 0; border-top: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-aiv__grid th { padding: 10px 12px; border-bottom: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-aiv__grid td { padding: 12px; border-bottom: 1px solid var(--ed-hair2); }
body.nsl-edgeportal .nsl-aio__hd, body.nsl-edgeportal .nsl-aio__row { padding: 12px 0; border-bottom-color: var(--ed-hair2); }
body.nsl-edgeportal .nsl-aio__hd { border-bottom-color: var(--ed-hair); }

/* Status in een tabel: geen blokje of pil, alleen tekst */
body.nsl-edgeportal .nsl-aiv__c { padding: 0; border-radius: 0; background: none !important; font: 600 12.5px/1.3 var(--f-mono); }
body.nsl-edgeportal .nsl-aiv__c.is-ok { color: #fff; }
body.nsl-edgeportal .nsl-aiv__c.is-bad { color: var(--ed-bad); }

/* --------------------------------------------------------------------------
   5. Gebeurtenissen: wat de edge zag en tegenhield (Beveiliging)
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-ev { gap: 20px; }
body.nsl-edgeportal :is(.nsl-ev, .nsl-trk:not(.nsl-mkt), .nsl-rl, .nsl-rev) { grid-template-columns: minmax(0, 1fr); }
body.nsl-edgeportal :is(.nsl-ev, .nsl-trk, .nsl-rl, .nsl-rev, .nsl-kwr) > * { min-width: 0; }
/* Grafiek: staven grijs, tegengehouden roze, aanvallen een dunne amber lijn; legenda onder de as */
body.nsl-edgeportal .nsl-ev__chart, body.nsl-edgeportal .nsl-trk__chart { display: flex; flex-direction: column; padding-bottom: 0; }
body.nsl-edgeportal :is(.nsl-ev__chart, .nsl-trk__chart) > svg { order: 1; }
body.nsl-edgeportal :is(.nsl-ev__chart, .nsl-trk__chart) > .nsl-ev__ticks { order: 2; position: relative; left: auto; right: auto; bottom: auto; height: 22px; }
body.nsl-edgeportal :is(.nsl-ev__chart, .nsl-trk__chart) > .nsl-ev__legend { order: 3; margin: 4px 0 0; }
body.nsl-edgeportal .nsl-ev__legend span:last-child { color: var(--ed-dim); }
body.nsl-edgeportal .nsl-ev__legend i.ok { background: var(--ed-bar); }
body.nsl-edgeportal .nsl-ev__legend i.blk { background: var(--ed-bad); }
body.nsl-edgeportal .nsl-ev__legend i.ln { background: var(--ed-amb); }
body.nsl-edgeportal .nsl-ev__svg { border-bottom: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-ev__svg rect.ok { fill: var(--ed-bar); }
body.nsl-edgeportal .nsl-ev__svg g:hover rect.ok { fill: rgba(255, 255, 255, .7); }
body.nsl-edgeportal .nsl-ev__svg rect.blk { fill: var(--ed-bad); }
body.nsl-edgeportal .nsl-ev__svg polyline.ln { stroke: var(--ed-amb); stroke-width: 1.5; }

/* Toplijsten: naam en aantal op één regel, een vlakke meetlat van 2px eronder */
body.nsl-edgeportal .nsl-ev__tops { border-top: 0; border-bottom: 1px solid var(--ed-hair); padding-bottom: 6px; }
body.nsl-edgeportal .nsl-ev__top { padding: 0 18px 14px 0; }
body.nsl-edgeportal .nsl-ev__top + .nsl-ev__top { padding-left: 18px; border-left: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-ev__top > p { margin: 0 0 6px; font-size: 12px; letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-ev__top button { height: 38px; padding: 0 0 6px; align-items: center; }
body.nsl-edgeportal .nsl-ev__top button::after { content: ""; position: absolute; left: 0; right: 0; bottom: 5px; height: 2px; background: var(--ed-track); }
body.nsl-edgeportal .nsl-ev__top button i { top: auto; bottom: 5px; height: 2px; background: var(--ed-bar); border-left: 0; z-index: 1; transition: background .15s; }
body.nsl-edgeportal .nsl-ev__top button:hover i { background: #fff; }
body.nsl-edgeportal .nsl-ev__top button.is-on i { background: var(--ed-acc); }
body.nsl-edgeportal .nsl-ev__top button span { font-size: 13px; color: var(--ed-text); }
body.nsl-edgeportal .nsl-ev__top button b { font: 500 12.5px var(--f-mono); font-variant-numeric: tabular-nums; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-ev__top button.is-on b, body.nsl-edgeportal .nsl-ev__top button:hover b { color: #fff; }

/* Logboek */
body.nsl-edgeportal :is(.nsl-ev__logh, .nsl-trk__tblh) p { font-size: 12px; letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-ev__act { font: 600 12px/1 var(--f-body, inherit); letter-spacing: 0; }
body.nsl-edgeportal .nsl-ev__act.is-blk { color: var(--ed-bad); }
body.nsl-edgeportal .nsl-ev__act.is-log { color: var(--ed-mute); }
body.nsl-edgeportal .nsl-ev__path code { font-size: 12px; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-ev__tblwrap { border-top: 0; }
/* Snel blokkeren: geen magenta, rustig grijs dat paars wordt bij aanwijzen */
body.nsl-edgeportal .nsl-ipb__quick button { color: var(--ed-mute); font: 500 12px/1 var(--f-body, inherit); transition: color .15s; }
body.nsl-edgeportal .nsl-ipb__quick button:hover { color: #fff; }

/* --------------------------------------------------------------------------
   6. Site Health
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-sh__score { padding: 22px 24px; }
body.nsl-edgeportal .nsl-sh__counts { padding: 0; }
body.nsl-edgeportal .nsl-sh__c { padding: 20px 24px; gap: 10px; border-right-color: var(--ed-hair); }
body.nsl-edgeportal .nsl-sh__c span { font-size: 12px; color: var(--ed-mute); gap: 8px; }
body.nsl-edgeportal .nsl-sh__c span::before { width: 10px; height: 3px; border-radius: 0; }
body.nsl-edgeportal .nsl-sh__c.is-info span::before { background: var(--ed-bar); }
body.nsl-edgeportal .nsl-sh__c b { font: 600 28px/1 var(--f-mono); font-variant-numeric: tabular-nums; letter-spacing: -.02em; color: #fff; }
body.nsl-edgeportal .nsl-sh__c.is-bad b:not([data-count="0"]) { color: var(--ed-bad); }
body.nsl-edgeportal .nsl-sh__c.is-bad b { color: #fff; }
body.nsl-edgeportal .nsl-sh__chart { padding: 16px 24px 18px; border-top-color: var(--ed-hair); }
body.nsl-edgeportal .nsl-sh__fixed { padding: 12px 24px; border-top-color: var(--ed-hair); }
/* Lijn en vlak zoals het voorbeeldrapport: dunne lichte lijn, vlak heel licht paars, geen verloop */
body.nsl-edgeportal .nsl-portal__main .nsl-spark path:first-of-type { fill: rgba(118, 67, 200, .1); }
body.nsl-edgeportal .nsl-portal__main .nsl-spark path + path { stroke: #e6e6e6; stroke-width: 1.5; }
/* Thema's: getal in mono, vlakke meetlat van 2px */
body.nsl-edgeportal .nsl-sh__themes { gap: 12px; }
body.nsl-edgeportal .nsl-sh__t { gap: 10px; padding: 18px 20px; }
body.nsl-edgeportal .nsl-sh__t > b { font: 600 24px/1 var(--f-mono); font-variant-numeric: tabular-nums; letter-spacing: -.02em; color: #fff; }
body.nsl-edgeportal .nsl-sh__t > b.is-bad { color: var(--ed-bad); }
body.nsl-edgeportal .nsl-sh__t > b.is-warn { color: #fff; }
body.nsl-edgeportal .nsl-sh__t .nsl-card__k { display: flex; align-items: center; gap: 8px; }
body.nsl-edgeportal .nsl-sh__t .nsl-card__k .nsl-ico { color: var(--ed-mute); }
body.nsl-edgeportal .nsl-sh__bar { height: 2px; border-radius: 0; background: var(--ed-track); }
body.nsl-edgeportal .nsl-sh__bar i { border-radius: 0; }
body.nsl-edgeportal .nsl-sh__bar i.is-good { background: #e6e6e6; }
body.nsl-edgeportal .nsl-sh__bar i.is-warn { background: var(--ed-amb); }
body.nsl-edgeportal .nsl-sh__bar i.is-bad { background: var(--ed-bad); }
body.nsl-edgeportal .nsl-sh__t small { color: var(--ed-mute); }
/* Problemenlijst: ernst als kort streepje in plaats van een gekleurd blokje */
body.nsl-edgeportal .nsl-sh__issues .nsl-sh__note { color: var(--ed-mute); }

/* --------------------------------------------------------------------------
   7. Scorekaart op het overzicht
   -------------------------------------------------------------------------- */
body.nsl-edgeportal.nsl-app .nsl-sc__big, body.nsl-edgeportal .nsl-sc__big { font: 600 28px/1.05 var(--f-mono); font-variant-numeric: tabular-nums; letter-spacing: -.02em; color: #fff; }
body.nsl-edgeportal.nsl-app .nsl-sc__big.is-good, body.nsl-edgeportal.nsl-app .nsl-sc__big.is-warn { color: #fff; }
body.nsl-edgeportal.nsl-app .nsl-sc__big.is-bad { color: var(--ed-bad); }
body.nsl-edgeportal.nsl-app .nsl-sc__h { font-size: 12px; color: var(--ed-mute); }
body.nsl-edgeportal.nsl-app .nsl-sc__cell { padding: 14px 18px; border-left-color: var(--ed-hair); }
body.nsl-edgeportal.nsl-app .nsl-portal__main > .nsl-card.nsl-sc { padding: 22px 24px; }
body.nsl-edgeportal.nsl-app .nsl-sc__grid { margin: 14px 0 0; }
body.nsl-edgeportal.nsl-app .nsl-sc__cell:first-child { padding-left: 0; }
body.nsl-edgeportal.nsl-app .nsl-sc__spark polyline,
body.nsl-edgeportal.nsl-app .nsl-sc__spark.is-violet polyline,
body.nsl-edgeportal.nsl-app .nsl-sc__spark.is-amber polyline { stroke: #e6e6e6; stroke-width: 1.5; }
body.nsl-edgeportal.nsl-app .nsl-sc__rows b { font-family: var(--f-mono); font-variant-numeric: tabular-nums; }
body.nsl-edgeportal.nsl-app .nsl-sc__d { font: 500 12px var(--f-mono); }
body.nsl-edgeportal.nsl-app .nsl-sc__d.is-up { color: #e6e6e6; }
body.nsl-edgeportal.nsl-app .nsl-sc__d.is-down { color: var(--ed-bad); }

/* --------------------------------------------------------------------------
   8. 7 stappen naar succes: geen groen of geel, voortgang wit, jouw beurt paars
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-fps__k { font: 500 12.5px/1.3 var(--f-body, inherit); letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-fps__head h3 { font: 600 19px/1.25 var(--f-display); }
body.nsl-edgeportal .nsl-fps__score b { font-family: var(--f-mono); font-weight: 600; letter-spacing: -.05em; }
body.nsl-edgeportal .nsl-fps__bar { height: 2px; }
body.nsl-edgeportal .nsl-fps__n { font: 500 12.5px/1 var(--f-mono); color: var(--ed-mute); }
body.nsl-edgeportal .nsl-fps__s em { font: 500 12px/1.3 var(--f-body, inherit); letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-fps__list li.is-done .nsl-fps__n, body.nsl-edgeportal .nsl-fps__list li.is-done .nsl-fps__s em { color: #fff; }
body.nsl-edgeportal .nsl-fps__list li.is-done .nsl-fps__m i { background: #e6e6e6; }
body.nsl-edgeportal .nsl-fps__list li.is-you .nsl-fps__s em { color: #fff; }
body.nsl-edgeportal .nsl-fps__list li.is-you .nsl-fps__m i { background: var(--ed-acc); }
body.nsl-edgeportal .nsl-fps__list li.is-busy .nsl-fps__m i { background: #e6e6e6; animation: none; }
body.nsl-edgeportal .nsl-fps__s span { font-family: var(--f-mono); }

/* --------------------------------------------------------------------------
   9. Posities
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-trk { gap: 20px; }
body.nsl-edgeportal .nsl-trk__right { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; min-width: 0; }
body.nsl-edgeportal .nsl-trk__head > div:first-child { min-width: 0; flex: 1 1 320px; }
body.nsl-edgeportal .nsl-trk__d { font: 500 12px var(--f-mono); }
body.nsl-edgeportal .nsl-trk__d.is-up, body.nsl-edgeportal .nsl-trk__kpis i.is-up { color: #e6e6e6; }
body.nsl-edgeportal .nsl-trk__d.is-dn, body.nsl-edgeportal .nsl-trk__kpis i.is-dn { color: var(--ed-bad); }
body.nsl-edgeportal .nsl-trk__kpis .nsl-trk__d { right: 16px; top: 4px; }
body.nsl-edgeportal .nsl-trk__kpis > div:first-child .nsl-trk__d { right: 16px; }
body.nsl-edgeportal .nsl-trk__svg { border-bottom: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-trk__svg .gr { stroke: rgba(255, 255, 255, .05); }
body.nsl-edgeportal .nsl-trk__svg polyline { stroke-width: 1.5; }
body.nsl-edgeportal .nsl-trk__svg polyline.me { stroke-width: 2; }
body.nsl-edgeportal .nsl-trk__svg polyline.cp { opacity: 1; }
body.nsl-edgeportal .nsl-trk__svg .ar { fill: rgba(118, 67, 200, .1); }
body.nsl-edgeportal .nsl-trk__dist p { font-size: 12px; letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-trk__distbar { height: 4px; gap: 2px; background: transparent; }
body.nsl-edgeportal .nsl-trk__tblh input { height: 36px; }
body.nsl-edgeportal .nsl-trk__pos { font-size: 14px; }
body.nsl-edgeportal .nsl-trk__pos.is-top { color: #fff; }
body.nsl-edgeportal .nsl-trk__tbl td.s em { font: 500 12px var(--f-body, inherit); color: var(--ed-mute); }
body.nsl-edgeportal .nsl-trk__tbl td.s em.is-ai { color: #e6e6e6; }
body.nsl-edgeportal .nsl-trk__tbl td.s em.is-cited { color: #fff; }
body.nsl-edgeportal .nsl-trk__cmp.is-above { color: var(--ed-bad) !important; }
/* Verschil in de tabel: ↑ licht, ↓ roze, geen groen */
body.nsl-edgeportal .nsl-trk__tbl :is(.is-up, .up, .is-new) { color: #e6e6e6 !important; }
body.nsl-edgeportal .nsl-trk__tbl :is(.is-dn, .dn, .is-down) { color: var(--ed-bad) !important; }

/* --------------------------------------------------------------------------
   10. Gevonden in AI, AI-zichtbaarheid, AIO, AI-bots
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-geo__kpis { border-bottom-color: var(--ed-hair); }
body.nsl-edgeportal.nsl-app :is(.nsl-gsc-kpis, .nsl-geo__kpis) > div { border-left-color: var(--ed-hair); }
body.nsl-edgeportal .nsl-geo__bar i { background: var(--ed-bar) !important; }
body.nsl-edgeportal .nsl-geo__row:first-of-type .nsl-geo__bar i { background: #e6e6e6 !important; }
/* AI-zichtbaarheid: cijfercellen zonder verloop */
body.nsl-edgeportal .nsl-aiv__kpis { gap: 0; background: none; border: 0; border-top: 1px solid var(--ed-hair); border-bottom: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-aiv__kpis > div { background: none !important; padding: 14px 16px 16px 0; gap: 8px; }
body.nsl-edgeportal .nsl-aiv__kpis > div + div { padding-left: 16px; border-left: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-aiv__why { background: none !important; }
body.nsl-edgeportal .nsl-aiv__cmp em { padding: 0; border: 0; font-size: 13px; color: var(--ed-text); }
body.nsl-edgeportal .nsl-aiv__cmp em b { color: var(--ed-mute); font: 500 12.5px var(--f-mono); }
body.nsl-edgeportal .nsl-aiv__cmp em + em::before { content: "·"; margin-right: 12px; color: var(--ed-dim); }
body.nsl-edgeportal .nsl-aiv__sug .nsl-chip { border: 1px solid var(--ed-line); }
body.nsl-edgeportal .nsl-aiv__sug .nsl-chip:hover { border-color: var(--ed-acc); }
/* AIO: bronnen als vlakke meetlat, jij paars */
body.nsl-edgeportal .nsl-aio__bar { padding: 7px 0; border-bottom: 1px solid var(--ed-hair2); }
body.nsl-edgeportal .nsl-aio__bar i { height: 2px; border-radius: 0; background: var(--ed-track); }
body.nsl-edgeportal .nsl-aio__bar i::after { background: var(--ed-bar); }
body.nsl-edgeportal .nsl-aio__bar.is-own i::after { background: var(--ed-acc); }
body.nsl-edgeportal .nsl-aio__bar em { color: var(--ed-mute); font-size: 12px; }
body.nsl-edgeportal .nsl-aio__bar b { font: 500 12.5px var(--f-mono); font-variant-numeric: tabular-nums; }
body.nsl-edgeportal .nsl-aio__sbar { height: 4px; border-radius: 0; }
body.nsl-edgeportal .nsl-aio__sbar .n, body.nsl-edgeportal .nsl-aio__slbl .n::before { background: var(--ed-bad); }
body.nsl-edgeportal .nsl-aio__words span:nth-child(3n+2) { color: #e6e6e6; }
body.nsl-edgeportal .nsl-aio-chart .ln { stroke-width: 1.5; }
body.nsl-edgeportal .nsl-aio__row i.no { color: var(--ed-bad); }
/* AI-bots: kopcijfers in de stijl van de cijferrij, waarschuwing als tekst zonder kader */
body.nsl-edgeportal .nsl-aib__now dt { font-size: 12px; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-aib__now dd { font: 600 22px/1.15 var(--f-mono); font-variant-numeric: tabular-nums; letter-spacing: -.02em; color: #fff; }
body.nsl-edgeportal .nsl-aib__now div + div { padding-left: 22px; border-left: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-aib__tag { padding: 0; border: 0; border-radius: 0; font-size: 12px; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-aib__tag.is-warn { color: var(--ed-mute); border: 0; }
body.nsl-edgeportal .nsl-aib__tag.is-warn::before { content: ""; display: inline-block; width: 10px; height: 3px; margin-right: 6px; vertical-align: middle; background: var(--ed-amb); }
body.nsl-edgeportal .nsl-aib__preset { border-radius: 0; background: transparent; }
body.nsl-edgeportal .nsl-aib__preset.is-on { border-color: var(--ed-acc); background: transparent; }
body.nsl-edgeportal .nsl-aib__seg .is-block input:checked + span { background: rgba(255, 92, 122, .12); color: #fff; }
body.nsl-edgeportal .nsl-aib__num { font-family: var(--f-body, inherit); }

/* --------------------------------------------------------------------------
   11. Resultaat (voor en na) en Omzetkansen
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-imp-cmp__h { font-size: 12px; letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-imp-cmp__r { border-radius: 0; background: none; border: 0; border-bottom: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-imp-cmp__r.is-up { background: none; border-color: var(--ed-hair); }
body.nsl-edgeportal .nsl-imp-cmp__r .n { font-family: var(--f-mono); }
body.nsl-edgeportal .nsl-imp-cmp__r.is-down .n { color: var(--ed-bad); }
body.nsl-edgeportal .nsl-imp-ch__i, body.nsl-edgeportal .nsl-imp-lose li { border-radius: 0; background: none; }
body.nsl-edgeportal .nsl-imp-gsc { border-radius: 0; border: 0; border-top: 1px solid var(--ed-hair); background: none; padding: 18px 0 0; }
body.nsl-edgeportal .nsl-imp-early { border-top-style: solid; border-top-color: var(--ed-hair); }
body.nsl-edgeportal .nsl-oppo__big { border-left: 1px solid var(--ed-line); background: var(--ed-card); }
body.nsl-edgeportal .nsl-oppo__big b { font-family: var(--f-mono); font-weight: 600; letter-spacing: -.04em; color: #fff; }
body.nsl-edgeportal .nsl-oppo__side .is-ok b { color: #fff; }
body.nsl-edgeportal .nsl-oppo__side b { font-family: var(--f-mono); font-weight: 600; letter-spacing: -.02em; }
body.nsl-edgeportal :is(.nsl-oppo__big, .nsl-oppo__side) span { font: 400 12px/1.3 var(--f-body, inherit); letter-spacing: 0; color: var(--ed-mute); }

/* --------------------------------------------------------------------------
   12. Rate limiting en de rest van Beveiliging
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-rl { gap: 18px; }
body.nsl-edgeportal .nsl-rl__list { border-top: 0; border-bottom: 0; }
body.nsl-edgeportal .nsl-rl__row { padding: 16px 0; border-bottom-color: var(--ed-hair); }
body.nsl-edgeportal .nsl-rl__k span { font-size: 12px; letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-rl__k b { font-family: var(--f-mono); font-variant-numeric: tabular-nums; }
body.nsl-edgeportal .nsl-rl__k b:is(.is-blk, .is-log) { font-family: var(--f-body, inherit); font-size: 13px; }
body.nsl-edgeportal .nsl-rl__k b.is-blk { color: var(--ed-bad); }
body.nsl-edgeportal .nsl-rl__k b.is-log { color: #fff; }


/* --------------------------------------------------------------------------
   12b. Firewall, problemenlijst, cijfertegels "Wat de edge voor je doet"
   -------------------------------------------------------------------------- */
body.nsl-edgeportal .nsl-iss__dot { width: 10px !important; height: 3px !important; border-radius: 0 !important; }
body.nsl-edgeportal .nsl-waflog__t .is-block { color: var(--ed-bad); }
body.nsl-edgeportal .nsl-waflog__t .is-log { color: var(--ed-mute); }
body.nsl-edgeportal .nsl-waflog__t thead th { background: var(--ed-card); font-size: 12px; font-weight: 600; color: var(--ed-mute); padding: 10px; border-bottom-color: var(--ed-hair); }
body.nsl-edgeportal .nsl-waflog__t td { padding: 12px 10px; border-bottom-color: var(--ed-hair2); }
body.nsl-edgeportal .nsl-waflog h4 small { font-size: 12px; }
body.nsl-edgeportal .nsl-waf__bars { gap: 3px; }
body.nsl-edgeportal .nsl-waf__bars i { background: var(--ed-bar); border-radius: 0; min-height: 2px; }
body.nsl-edgeportal .nsl-waf__bars i:hover { opacity: 1; background: #fff; }
body.nsl-edgeportal.nsl-app .nsl-geo__check li.todo i::before { color: #fff; }
body.nsl-edgeportal .nsl-kpit__head { font-size: 12px; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-kpit__head .l { font-size: 12px; color: var(--ed-mute); }
body.nsl-edgeportal.nsl-app .nsl-kpit__tile { border-color: var(--ed-hair) !important; }
body.nsl-edgeportal.nsl-app .nsl-kpit__tile b { font-size: 24px; line-height: 1.1; letter-spacing: -.02em; color: #fff; }
body.nsl-edgeportal .nsl-kpit__tile small { font-size: 12px; color: var(--ed-dim); }
body.nsl-edgeportal .nsl-kpit__tile small.up { color: #e6e6e6; }


/* AI-logo's eenkleurig: geen merkkleuren (groen, cyaan, oranje) in het portaal */
body.nsl-edgeportal .nsl-portal__main .nsl-botico { --c: #d6d6d6 !important; background: transparent; border-color: var(--ed-line); }
/* Beheermelding (alleen voor Netslim zichtbaar): geen geel kader, een haarlijn links */
body.nsl-edgeportal .nsl-aiv__aib { padding: 2px 0 2px 14px !important; border: 0 !important; border-left: 2px solid var(--ed-acc) !important; background: none !important; color: var(--ed-mute) !important; }
body.nsl-edgeportal .nsl-aiv__aib b { color: #fff !important; }
body.nsl-edgeportal .nsl-aio__leg span { display: inline-flex; align-items: center; gap: 6px; }
/* Omzetkansen: één kaart met een cijferrij in plaats van drie losse vakken */
body.nsl-edgeportal .nsl-oppo__head { gap: 0; padding: 22px 24px; background: var(--ed-card); border: 1px solid var(--ed-line); }
body.nsl-edgeportal .nsl-oppo__big { padding: 0 24px 0 0; border: 0; background: none; gap: 10px; align-content: start; }
body.nsl-edgeportal .nsl-oppo__side { gap: 0; padding-left: 24px; border-left: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-oppo__side > div { padding: 0 0 14px; border: 0; background: none; gap: 8px; }
body.nsl-edgeportal .nsl-oppo__side > div + div { padding: 14px 0 0; border-top: 1px solid var(--ed-hair); }
body.nsl-edgeportal .nsl-oppo__how { padding: 4px 2px 0; font-size: 13px; }
@media (max-width: 760px) {
	body.nsl-edgeportal .nsl-oppo__head { padding: 16px; }
	body.nsl-edgeportal .nsl-oppo__big { padding: 0 0 16px; }
	body.nsl-edgeportal .nsl-oppo__side { padding: 16px 0 0; border-left: 0; border-top: 1px solid var(--ed-hair); }
}


/* Overige statuskleuren: groen en geel worden licht of amber (alleen als datakleur), dalend blijft roze */
body.nsl-edgeportal .nsl-portal__main :is(em, i, small, span, b).is-up,
body.nsl-edgeportal .nsl-portal__main :is(.nsl-goal__trend, .nsl-ci) .is-up { color: #e6e6e6; }
body.nsl-edgeportal .nsl-portal__main :is(em, i, small, span, b):is(.is-dn, .is-down) { color: var(--ed-bad); }
body.nsl-edgeportal.nsl-app .nsl-busy__tag, body.nsl-edgeportal.nsl-app .nsl-busy__list .is-done :is(b, em) { color: #e6e6e6; }
body.nsl-edgeportal .nsl-kwr__int.is-t { color: #fff; }
body.nsl-edgeportal .nsl-kwr__int.is-c { color: var(--ed-amb); }
body.nsl-edgeportal .nsl-kwr__int.is-n { color: var(--ed-mute); }
body.nsl-edgeportal .nsl-shadow__cmp td.is-part { color: var(--ed-mute); }
body.nsl-edgeportal .nsl-portal__main .nsl-geo__check li.todo i { background: none; color: #fff; }
body.nsl-edgeportal .nsl-geo__bot .nsl-geo__botbar i { background: var(--ed-bar); }
body.nsl-edgeportal .nsl-geo__bot:is(.k-ai_search, .k-ai_live) .nsl-geo__botbar i { background: #e6e6e6; }
body.nsl-edgeportal .nsl-geo__bot.k-ai_train .nsl-geo__botbar i { background: var(--ed-amb); }
body.nsl-edgeportal .nsl-geo__bot.k-social .nsl-geo__botbar i { background: #5c5c5c; }
body.nsl-edgeportal .nsl-rev__stars::after { color: var(--ed-amb); }
body.nsl-edgeportal .nsl-rev__dist i { height: 2px; background: var(--ed-track); }
body.nsl-edgeportal .nsl-rev__dist i::after { background: var(--ed-amb); }
body.nsl-edgeportal .nsl-rev__dist i:is(.s1, .s2)::after { background: var(--ed-bad); }
body.nsl-edgeportal .nsl-rev__dist div b, body.nsl-edgeportal .nsl-rev__dist div span:last-child { font-variant-numeric: tabular-nums; }
body.nsl-edgeportal .nsl-rev__dist { border-right-color: var(--ed-hair); }
body.nsl-edgeportal .nsl-rev__item.is-open { border-left-color: var(--ed-acc); }
body.nsl-edgeportal .nsl-rev__item.is-open.is-low { border-left-color: var(--ed-bad); }
body.nsl-edgeportal .nsl-rev__kpis span { font-size: 12px; letter-spacing: 0; color: var(--ed-mute); }
body.nsl-edgeportal .nsl-rev__kpis b { font: 600 24px/1.05 var(--f-mono); font-variant-numeric: tabular-nums; letter-spacing: -.02em; color: #fff; }
body.nsl-edgeportal .nsl-rev__kpis > div { border-left-color: var(--ed-hair); }

body.nsl-edgeportal .nsl-team__av { background: var(--ed-acc) !important; }

/* Geen gele of groene statuskleur in het Edge-portaal */
body.nsl-edgeportal .nsl-portal__main :is(.nsl-delta.is-good) { color: #e6e6e6; background: none; }
body.nsl-edgeportal .nsl-portal__main .nsl-delta { background: none !important; padding: 0; font-family: var(--f-mono); }

/* --------------------------------------------------------------------------
   13. Telefoon
   -------------------------------------------------------------------------- */
@media (max-width: 1100px) {
	body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis) > div:nth-child(4) { padding-left: 0; border-left: 0; }
	body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis) > div:nth-child(n + 4) { padding-top: 16px; border-top: 1px solid var(--ed-hair); }
	body.nsl-edgeportal .nsl-ev__top:nth-child(3) { padding-left: 0; border-left: 0; }
}
@media (max-width: 640px) {
	body.nsl-edgeportal .nsl-portal__main > :is(.nsl-ev, .nsl-trk:not(.nsl-mkt), .nsl-rl, .nsl-rev, .nsl-kwr) { padding: 16px; }
	body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis) > div:nth-child(n) { padding: 14px 12px 14px 0; border-left: 0; border-top: 1px solid var(--ed-hair); }
	body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis) > div:nth-child(even) { padding-left: 12px; border-left: 1px solid var(--ed-hair); }
	body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis) > div:nth-child(-n + 2) { border-top: 0; padding-top: 4px; }
	body.nsl-edgeportal :is(.nsl-ev__kpis, .nsl-trk__kpis, .nsl-aio__k, .nsl-geo__kpis, .nsl-aiv__kpis) b { font-size: 20px; }
	body.nsl-edgeportal .nsl-ev__top, body.nsl-edgeportal .nsl-ev__top + .nsl-ev__top { padding: 12px 0 10px; border-left: 0; border-top: 1px solid var(--ed-hair); }
	body.nsl-edgeportal .nsl-ev__top:first-child { border-top: 0; padding-top: 0; }
	body.nsl-edgeportal .nsl-ev__tops { grid-template-columns: 1fr; }
	body.nsl-edgeportal .nsl-sh__c { padding: 16px 14px; }
	body.nsl-edgeportal .nsl-sh__c b { font-size: 22px; }
	body.nsl-edgeportal .nsl-sh__chart, body.nsl-edgeportal .nsl-sh__fixed { padding-left: 16px; padding-right: 16px; }
	body.nsl-edgeportal.nsl-app .nsl-sc__cell:first-child { padding-left: 14px; }
	body.nsl-edgeportal .nsl-aio__k { grid-template-columns: minmax(0, 1fr); }
	body.nsl-edgeportal .nsl-aio__k > div { padding: 14px 0; }
	body.nsl-edgeportal .nsl-aio__k > div + div { padding-left: 0; border-left: 0; border-top: 1px solid var(--ed-hair); }
	body.nsl-edgeportal .nsl-aib__now div + div { padding-left: 16px; }
}
@media (max-width: 480px) {
	body.nsl-edgeportal .nsl-sh__counts { grid-template-columns: minmax(0, 1fr); }
	body.nsl-edgeportal .nsl-sh__c { grid-template-columns: minmax(0, 1fr) auto; align-items: center; padding: 14px 16px; border-right: 0; border-bottom: 1px solid var(--ed-hair); }
	body.nsl-edgeportal .nsl-sh__c b { font-size: 20px; }
	body.nsl-edgeportal .nsl-sh__chart { border-top: 0; }
}
