/* Ndovu 2.0: v2-directory. Crawler directory (Site Core blocks bot-list, operator-list, bot-profile) and the plugins catalogue.
   Design source: redesign-demo/views/directory.html + css/directory.css. Hairline-ruled lists, operator logo tiles, pill badges,
   pill search and filters. Tokens from v2.css; the status colours below follow the demo's ok/warn/bad/info pairs. */
:root{
  --ndx-ok:#15803d;--ndx-ok-soft:#e3f4e8;--ndx-warn:#b45309;--ndx-warn-soft:#fdf0dc;--ndx-bad:#c2261d;--ndx-bad-soft:#fbe5e3;
  --ndx-info:#1d5fd0;--ndx-info-soft:#e5eefc;--ndx-focus:#1d5fd0;--ndx-amber-ink:#a95a05;--ndx-amber-soft:#fdf0dc;
  --ndx-search:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");
  --ndx-bot:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='8' width='16' height='12' rx='3'/%3E%3Cpath d='M12 8V4M9 13v1M15 13v1'/%3E%3C/svg%3E");
}
:root[data-theme=dark]{
  --ndx-ok:#4ade80;--ndx-ok-soft:#10261a;--ndx-warn:#f6b04a;--ndx-warn-soft:#2c2113;--ndx-bad:#f87171;--ndx-bad-soft:#2d1513;
  --ndx-info:#7aa7f5;--ndx-info-soft:#14203a;--ndx-focus:#7aa7f5;--ndx-amber-ink:#f6b04a;--ndx-amber-soft:#2c2113;
}

/* ---------- Filters: a pill search and pill selects ---------- */
.nd-dir .nd-dir-filters,:root[data-theme=dark] .nd-dir .nd-dir-filters{display:flex;flex-wrap:wrap;gap:10px;padding:0;margin:0 0 14px;border:0;border-radius:0;background:none}
.nd-dir .nd-dir-filters label{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:0;height:44px;padding:0 0 0 16px;border:1px solid var(--nd2-line-2);border-radius:999px;background:var(--nd2-surface);font:500 11px/1 var(--nd-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--nd2-ink-3);transition:border-color .15s}
.nd-dir .nd-dir-filters label:hover{border-color:var(--nd2-ink-3)}
.nd-dir .nd-dir-filters label:focus-within{outline:2px solid var(--ndx-focus);outline-offset:2px;border-color:transparent}
.nd-dir .nd-dir-filters label:not(.nd-dir-search)::after{content:"";position:absolute;right:17px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--nd-muted);border-bottom:1.5px solid var(--nd-muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.nd-dir .nd-dir-filters .nd-dir-search{flex:1 1 300px;padding-left:42px;font-size:0;letter-spacing:0}
.nd-dir .nd-dir-filters .nd-dir-search::before{content:"";position:absolute;left:16px;top:50%;width:17px;height:17px;transform:translateY(-50%);background:var(--nd2-ink-3);-webkit-mask:var(--ndx-search) center/contain no-repeat;mask:var(--ndx-search) center/contain no-repeat}
.nd-dir .nd-dir-filters input,.nd-dir .nd-dir-filters select,:root[data-theme=dark] .nd-dir .nd-dir-filters input,:root[data-theme=dark] .nd-dir .nd-dir-filters select{flex:1 1 auto;width:auto;min-width:0;height:100%;min-height:0;margin:0;padding:0 18px 0 0;border:0;border-radius:999px;background:transparent;color:var(--nd-ink);font:400 15px/1.2 var(--nd-font);letter-spacing:0;text-transform:none;outline:none;box-shadow:none}
.nd-dir .nd-dir-filters select,:root[data-theme=dark] .nd-dir .nd-dir-filters select{-webkit-appearance:none;appearance:none;padding-right:38px;font-weight:500;font-size:14px;cursor:pointer;background-color:var(--nd2-surface)}
:root[data-theme=dark] .nd-dir .nd-dir-filters select{color-scheme:dark}
.nd-dir .nd-dir-filters input::placeholder{color:var(--nd2-ink-3);opacity:1}
.nd-dir .nd-dir-filters input:focus-visible,.nd-dir .nd-dir-filters select:focus-visible{outline:none}
.nd-dir .nd-dir-count{margin:0 0 12px;font:500 12px/1.4 var(--nd-mono);letter-spacing:.02em;color:var(--nd2-ink-3)}
@media(max-width:700px){
  .nd-dir .nd-dir-filters label{flex:1 1 100%}
  .nd-dir .nd-dir-filters label:not(.nd-dir-search){flex:1 1 calc(50% - 5px)}
}
@media(max-width:420px){.nd-dir .nd-dir-filters label:not(.nd-dir-search){flex-basis:100%}}

/* ---------- Bot list: one hairline-ruled table ---------- */
.nd-dir .nd-dir-grid{display:block;background:var(--nd2-surface);border:1px solid var(--nd-line);border-radius:12px;overflow:hidden}
.nd-dir .nd-dir-card,:root[data-theme=dark] .nd-dir .nd-dir-card{display:grid;grid-template-columns:40px minmax(0,1.35fr) minmax(0,.9fr) minmax(0,1fr) minmax(0,.85fr) 116px;grid-template-areas:"logo name op purpose robots badge" "logo token op purpose robots badge";column-gap:18px;row-gap:5px;align-items:center;padding:13px 20px;margin:0;border:0;border-top:1px solid var(--nd-line);border-radius:0;background:transparent;box-shadow:none;transition:background-color .15s}
.nd-dir .nd-dir-card:first-child{border-top:0}
.nd-dir .nd-dir-card:hover,:root[data-theme=dark] .nd-dir .nd-dir-card:hover{background:var(--nd2-sunk);border-color:var(--nd-line);box-shadow:none}
.nd-dir .nd-dir-card:has(h3 a:focus-visible){outline:2px solid var(--ndx-focus);outline-offset:-2px}
.nd-dir .nd-dir-card-top{display:contents}
.nd-dir .nd-dir-card h3{grid-area:name;align-self:end;margin:0;font:600 15px/1.3 var(--nd-font);letter-spacing:-.005em;overflow-wrap:anywhere}
.nd-dir .nd-dir-card h3 a,:root[data-theme=dark] .nd-dir .nd-dir-card h3 a{color:var(--nd-ink)}
.nd-dir .nd-dir-token{grid-area:token;align-self:start;display:flex;flex-wrap:wrap;gap:4px;margin:0;font-size:12px;color:var(--nd2-ink-3)}
.nd-dir .nd-dir-op{grid-area:op;min-width:0;font-size:14px;color:var(--nd-muted);overflow-wrap:anywhere}
.nd-dir .nd-dir-tags{grid-area:purpose;gap:4px;min-width:0}
.nd-dir .nd-dir-robots{grid-area:robots}
.nd-dir .nd-dir-badge{grid-area:badge;justify-self:start}

/* Logo tile: the operator's mark, or the operator's initial when the theme has no mark for it */
.nd-dir .nd-dir-card::before{content:attr(data-operator);grid-area:logo;box-sizing:border-box;width:40px;height:40px;padding-left:15px;overflow:hidden;white-space:nowrap;border:1px solid var(--nd-line);border-radius:9px;background:var(--nd2-sunk);color:var(--nd-muted);font:600 15px/38px var(--nd-mono);letter-spacing:40px;text-transform:uppercase}
.nd-dir .nd-dir-card[data-operator=""]::after{content:"";grid-area:logo;align-self:center;justify-self:center;width:20px;height:20px;background:var(--nd2-ink-3);-webkit-mask:var(--ndx-bot) center/contain no-repeat;mask:var(--ndx-bot) center/contain no-repeat}
.nd-dir .nd-dir-op .nd-label-logo{position:absolute;left:20px;top:50%;z-index:1;box-sizing:content-box;width:22px;height:22px;margin:0;padding:8px;border:1px solid var(--nd-line);border-radius:9px;transform:translateY(-50%);background:#fff var(--nd-logo-light,var(--nd-logo)) center/22px no-repeat}
:root[data-theme=dark] .nd-dir .nd-dir-op .nd-label-logo,:root[data-theme=dark] .nd-dir-operators .nd-label-logo{background:var(--nd2-sunk) var(--nd-logo) center/22px no-repeat}

/* Shared row and cell parts */
.nd-dir-token code,.nd-bot-facts code,:root[data-theme=dark] .nd-dir-token code,:root[data-theme=dark] .nd-bot-facts code{display:inline-block;padding:2px 6px;border:1px solid var(--nd-line);border-radius:5px;background:var(--nd2-sunk);color:var(--nd-muted);font:500 11.5px/1.5 var(--nd-mono);overflow-wrap:anywhere}
.nd-dir-card:hover .nd-dir-token code{background:var(--nd2-surface)}
.nd-dir-tags li,:root[data-theme=dark] .nd-dir-tags li{padding:3px 9px;border-radius:999px;background:var(--nd2-sunk);color:var(--nd-muted);font-size:12px;font-weight:500;line-height:1.35}
.nd-dir-card:hover .nd-dir-tags li{background:var(--nd2-surface);box-shadow:0 0 0 1px var(--nd-line)}
.nd-dir-robots,:root[data-theme=dark] .nd-dir-robots{display:inline-flex;align-items:center;gap:7px;margin:0;padding:0;border:0;font-size:13px;line-height:1.35;color:var(--nd-muted)}
.nd-dir-robots::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--nd2-ink-3)}
.nd-dir-robots.is-obeys::before{background:var(--ndx-ok)}
.nd-dir-robots.is-user_initiated::before{background:var(--ndx-warn)}
.nd-dir-robots.is-ignores,:root[data-theme=dark] .nd-dir-robots.is-ignores{color:var(--ndx-bad)}
.nd-dir-robots.is-ignores::before{background:var(--ndx-bad)}
.nd-dir-badge,:root[data-theme=dark] .nd-dir-badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:999px;background:var(--ndx-info-soft);color:var(--ndx-info);font:500 12px/1 var(--nd-font);white-space:nowrap}
.nd-dir-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.nd-dir-badge.is-good,:root[data-theme=dark] .nd-dir-badge.is-good{background:var(--ndx-ok-soft);color:var(--ndx-ok)}
.nd-dir-badge.is-warn,:root[data-theme=dark] .nd-dir-badge.is-warn{background:var(--ndx-warn-soft);color:var(--ndx-warn)}
.nd-dir-empty,.nd-dir .nd-dir-empty{padding:28px 20px;margin:0;text-align:center;color:var(--nd-muted)}
.nd-dir .nd-dir-grid+.nd-dir-empty:not([hidden]){margin-top:12px;border:1px dashed var(--nd2-line-2);border-radius:12px}

@media(max-width:960px){
  .nd-dir .nd-dir-card,:root[data-theme=dark] .nd-dir .nd-dir-card{grid-template-columns:40px minmax(0,1fr) auto;grid-template-areas:"logo name badge" "logo token token" "logo op op" "logo purpose robots";row-gap:6px;column-gap:14px;padding:14px 16px;align-items:start}
  .nd-dir .nd-dir-card::before{align-self:start}
  .nd-dir .nd-dir-card[data-operator=""]::after{align-self:start;margin-top:10px}
  .nd-dir .nd-dir-op .nd-label-logo{left:16px;top:14px;transform:none}
  .nd-dir .nd-dir-card h3{align-self:center}
  .nd-dir .nd-dir-badge{justify-self:end;align-self:center}
  .nd-dir .nd-dir-op{font-size:13px}
  .nd-dir .nd-dir-robots{justify-self:end;align-self:center;text-align:right}
}
@media(max-width:480px){
  .nd-dir .nd-dir-card,:root[data-theme=dark] .nd-dir .nd-dir-card{grid-template-areas:"logo name badge" "logo token token" "logo op op" "logo purpose purpose" "logo robots robots"}
  .nd-dir .nd-dir-robots{justify-self:start;text-align:left}
}

/* ---------- Operators: ruled cells sharing hairlines ---------- */
.nd-dir-grid.nd-dir-operators{grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--nd-line);border:1px solid var(--nd-line);border-radius:12px;overflow:hidden}
.nd-dir-operators .nd-dir-card,:root[data-theme=dark] .nd-dir-operators .nd-dir-card{display:grid;grid-template-columns:40px minmax(0,1fr) auto;grid-template-areas:"logo name badge" "logo op op" "logo token token" "logo robots robots";column-gap:14px;row-gap:6px;align-content:start;padding:22px 22px 20px;margin:0;border:0;border-radius:0;background:var(--nd2-surface);box-shadow:none;transition:background-color .15s}
.nd-dir-operators .nd-dir-card:hover,:root[data-theme=dark] .nd-dir-operators .nd-dir-card:hover{background:var(--nd2-sunk);box-shadow:none}
.nd-dir-operators .nd-dir-card:has(h3 a:focus-visible){outline:2px solid var(--ndx-focus);outline-offset:-2px}
.nd-dir-operators .nd-dir-card::before{content:"";grid-area:logo;align-self:start;width:40px;height:40px;box-sizing:border-box;border:1px solid var(--nd-line);border-radius:9px;background:var(--nd2-sunk)}
.nd-dir-operators .nd-dir-card::after{content:"";grid-area:logo;align-self:start;justify-self:center;margin-top:10px;width:20px;height:20px;background:var(--nd2-ink-3);-webkit-mask:var(--ndx-bot) center/contain no-repeat;mask:var(--ndx-bot) center/contain no-repeat}
.nd-dir-operators .nd-dir-card-top{display:contents}
.nd-dir-operators .nd-dir-op{grid-area:op;font:500 11.5px/1.3 var(--nd-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--nd2-ink-3)}
.nd-dir-operators .nd-label-logo{position:absolute;left:22px;top:22px;z-index:1;box-sizing:content-box;width:22px;height:22px;margin:0;padding:8px;border:1px solid var(--nd-line);border-radius:9px;background:#fff var(--nd-logo-light,var(--nd-logo)) center/22px no-repeat}
.nd-dir-operators .nd-dir-card h3{grid-area:name;align-self:center;margin:0;font:500 18px/1.25 var(--nd-display);letter-spacing:-.015em}
.nd-dir-operators .nd-dir-card h3 a,:root[data-theme=dark] .nd-dir-operators .nd-dir-card h3 a{color:var(--nd-ink)}
.nd-dir-operators .nd-dir-badge,:root[data-theme=dark] .nd-dir-operators .nd-dir-badge{grid-area:badge;align-self:center;background:var(--nd2-sunk);color:var(--nd-muted);box-shadow:0 0 0 1px var(--nd-line)}
.nd-dir-operators .nd-dir-badge::before{background:var(--nd-orange-500,#f39c12)}
.nd-dir-operators .nd-dir-token{grid-area:token;margin:4px 0 0;font-size:13.5px;line-height:1.55;color:var(--nd-muted)}
.nd-dir-operators .nd-dir-robots,:root[data-theme=dark] .nd-dir-operators .nd-dir-robots{grid-area:robots;margin-top:6px;padding-top:10px;border-top:1px solid var(--nd-line);font:500 12px/1.4 var(--nd-mono);color:var(--nd2-ink-3)}
.nd-dir-operators .nd-dir-robots::before{background:var(--ndx-ok)}
@media(max-width:1000px){.nd-dir-grid.nd-dir-operators{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.nd-dir-grid.nd-dir-operators{grid-template-columns:minmax(0,1fr)}.nd-dir-operators .nd-dir-card,:root[data-theme=dark] .nd-dir-operators .nd-dir-card{padding:18px 16px}.nd-dir-operators .nd-label-logo{left:16px;top:18px}}

/* ---------- Bot profile ---------- */
.nd-bot{gap:16px}
.nd-bot-grid{gap:16px}
.nd-bot-card,:root[data-theme=dark] .nd-bot-card{padding:clamp(20px,2.4vw,28px);border:1px solid var(--nd-line);border-radius:12px;background:var(--nd2-surface);box-shadow:none}
.nd-bot-card h2,.nd-bot-more h2{margin:0 0 12px;font:500 1.2rem/1.25 var(--nd-display);letter-spacing:-.015em;color:var(--nd-ink)}
.nd-bot-card p,.nd-bot-card li{color:var(--nd-muted);font-size:15px;line-height:1.65}
.nd-bot-card>p{margin:0 0 10px}
.nd-bot-card>:last-child{margin-bottom:0}
.nd-bot-card li a,.nd-bot-facts a,:root[data-theme=dark] .nd-bot-card li a,:root[data-theme=dark] .nd-bot-facts a{color:var(--nd-ink);text-decoration:underline;text-decoration-color:var(--nd2-line-2);text-underline-offset:3px}
.nd-bot-card li a:hover,.nd-bot-facts a:hover{text-decoration-color:var(--nd-orange-500,#f39c12)}
.nd-bot-facts{border-top:1px solid var(--nd-line)}
.nd-bot-facts>div,:root[data-theme=dark] .nd-bot-facts>div{grid-template-columns:150px minmax(0,1fr);padding:10px 0;border-top:0;border-bottom:1px solid var(--nd-line);font-size:14px}
.nd-bot-facts>div:first-child{padding-top:10px}
.nd-bot-facts dt{color:var(--nd2-ink-3)}
.nd-bot-facts dd,:root[data-theme=dark] .nd-bot-facts dd{color:var(--nd-ink);font-weight:400;overflow-wrap:anywhere}
.nd-bot-facts .nd-label-logo{width:14px;height:14px;margin-right:6px;vertical-align:-2px}
.nd-code-block{margin-top:12px;border-radius:10px;background:var(--nd-night);border:1px solid var(--nd-night-line)}
.nd-code-head{padding:7px 8px 7px 14px;border-bottom:1px solid var(--nd-night-line);color:var(--nd-night-muted);font:500 11.5px/1.4 var(--nd-mono);letter-spacing:.04em}
.nd-copy{height:28px;padding:0 12px;border:1px solid var(--nd-night-line);border-radius:999px;background:transparent;color:var(--nd-night-text);font:500 12px/1 var(--nd-font)}
.nd-copy:hover{background:rgba(255,255,255,.08)}
.nd-copy:focus-visible{outline:2px solid #7aa7f5;outline-offset:2px}
.nd-code-block code{color:#f6b04a;font:400 13px/1.7 var(--nd-mono)}
.nd-notice-inline{margin:12px 0 0;padding:12px 14px;border:1px solid var(--nd-line);border-left:3px solid var(--ndx-info);border-radius:0 10px 10px 0;background:var(--nd2-sunk);font-size:14px}
/* The three explainers: one ruled strip */
.nd-bot-grid.is-three{gap:0;border:1px solid var(--nd-line);border-radius:12px;overflow:hidden;background:var(--nd2-surface)}
.nd-bot-grid.is-three>.nd-bot-card,:root[data-theme=dark] .nd-bot-grid.is-three>.nd-bot-card{border:0;border-radius:0;background:transparent}
.nd-bot-grid.is-three>.nd-bot-card+.nd-bot-card,:root[data-theme=dark] .nd-bot-grid.is-three>.nd-bot-card+.nd-bot-card{border-left:1px solid var(--nd-line)}
.nd-bot-card .nd-small{margin:10px 0 0;font:500 12px/1.4 var(--nd-mono);color:var(--nd2-ink-3)}
/* More from the operator: link cells */
.nd-bot-more{margin-top:24px}
.nd-bot-more ul{gap:8px}
.nd-bot-more a,:root[data-theme=dark] .nd-bot-more a{position:relative;gap:2px;padding:13px 40px 13px 16px;border:1px solid var(--nd-line);border-radius:10px;background:var(--nd2-surface);color:var(--nd-ink);transition:border-color .15s,background-color .15s}
.nd-bot-more a::after{content:"→";position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--nd2-ink-3);transition:transform .15s,color .15s}
.nd-bot-more a:hover,:root[data-theme=dark] .nd-bot-more a:hover{border-color:var(--nd2-line-2);background:var(--nd2-sunk)}
.nd-bot-more a:hover::after{transform:translate(3px,-50%);color:var(--nd-ink)}
.nd-bot-more strong{font-weight:600;font-size:15px}
.nd-bot-more span{font-size:13px;color:var(--nd2-ink-3)}
@media(max-width:1000px){.nd-bot-grid.is-three{grid-template-columns:minmax(0,1fr)}.nd-bot-grid.is-three>.nd-bot-card+.nd-bot-card,:root[data-theme=dark] .nd-bot-grid.is-three>.nd-bot-card+.nd-bot-card{border-left:0;border-top:1px solid var(--nd-line)}}
@media(max-width:700px){.nd-bot-facts>div,:root[data-theme=dark] .nd-bot-facts>div{grid-template-columns:minmax(0,1fr);gap:2px}}

/* ---------- Plugins catalogue (/plugins/) ---------- */
.nd-catalogue-filters,:root[data-theme=dark] .nd-catalogue-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 14px;padding:0;border:0;border-radius:0;background:none;box-shadow:none}
.nd-catalogue-filters label{position:relative;display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:0;height:44px;margin:0;padding:0 0 0 16px;border:1px solid var(--nd2-line-2);border-radius:999px;background:var(--nd2-surface);font:500 11px/1 var(--nd-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--nd2-ink-3)}
.nd-catalogue-filters label:first-child{flex:1 1 300px;padding-left:42px;font-size:0;letter-spacing:0}
.nd-catalogue-filters label:first-child::before{content:"";position:absolute;left:16px;top:50%;width:17px;height:17px;transform:translateY(-50%);background:var(--nd2-ink-3);-webkit-mask:var(--ndx-search) center/contain no-repeat;mask:var(--ndx-search) center/contain no-repeat}
.nd-catalogue-filters label:not(:first-child)::after{content:"";position:absolute;right:17px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--nd-muted);border-bottom:1.5px solid var(--nd-muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.nd-catalogue-filters label:hover{border-color:var(--nd2-ink-3)}
.nd-catalogue-filters label:focus-within{outline:2px solid var(--ndx-focus);outline-offset:2px;border-color:transparent}
.nd-catalogue-filters input,.nd-catalogue-filters select,:root[data-theme=dark] .nd-catalogue-filters input,:root[data-theme=dark] .nd-catalogue-filters select{flex:1 1 auto;width:auto;min-width:0;height:100%;min-height:0;margin:0;padding:0 18px 0 0;border:0;border-radius:999px;background:transparent;color:var(--nd-ink);font:400 15px/1.2 var(--nd-font);letter-spacing:0;text-transform:none;outline:none;box-shadow:none}
.nd-catalogue-filters select,:root[data-theme=dark] .nd-catalogue-filters select{-webkit-appearance:none;appearance:none;padding-right:38px;font-weight:500;font-size:14px;cursor:pointer;background-color:var(--nd2-surface)}
:root[data-theme=dark] .nd-catalogue-filters select{color-scheme:dark}
.nd-catalogue-filters input::placeholder{color:var(--nd2-ink-3);opacity:1}
.nd-catalogue-filters input:focus-visible,.nd-catalogue-filters select:focus-visible{outline:none}
.nd-catalogue-filters .nd-button{height:44px;min-height:44px;padding:0 18px;border-radius:999px;font-size:14px}
.nd-catalogue-filters .nd-filter-reset{display:inline-flex;align-items:center;align-self:center;height:44px;margin:0;padding:0 4px;font-size:14px;font-weight:500;color:var(--nd-muted);text-decoration:underline;text-decoration-color:var(--nd2-line-2);text-underline-offset:3px}
.nd-catalogue-filters .nd-filter-reset:hover{color:var(--nd-ink)}
.nd-catalogue .nd-result-count{margin:0 0 12px;font:500 12px/1.4 var(--nd-mono);color:var(--nd2-ink-3)}
@media(max-width:700px){.nd-catalogue-filters label,.nd-catalogue-filters label:first-child{flex:1 1 100%}}

/* Product cards: one consistent ruled card with an icon tile */
.nd-catalogue .nd-grid{gap:12px}
:root .nd-catalogue .nd-grid .nd-card.nd-product-card{position:relative;display:grid;grid-template-rows:auto auto 1fr auto auto;gap:10px;padding:20px!important;margin:0!important;border:1px solid var(--nd-line);border-radius:12px;background:var(--nd2-surface);box-shadow:none;transform:none;transition:border-color .15s,box-shadow .15s,transform .15s}
:root .nd-catalogue .nd-grid .nd-card.nd-product-card:hover{border-color:var(--nd2-line-2);box-shadow:var(--nd2-shadow);transform:translateY(-2px)}
:root .nd-catalogue .nd-product-card:has(a:focus-visible){outline:2px solid var(--ndx-focus);outline-offset:2px}
.nd-product-card .nd-card-top{display:flex;align-items:center;gap:12px;margin:0;min-width:0}
:root .nd-product-card .nd-product-mark{position:relative;display:grid;place-items:center;flex:none;width:40px;height:40px;margin:0;padding:0;border-radius:9px;background:var(--ndx-amber-soft);color:var(--ndx-amber-ink);box-shadow:none}
:root .nd-product-card .nd-product-mark::before{content:"";width:20px;height:20px;background:var(--ndx-amber-ink);-webkit-mask:var(--nd-icon) center/contain no-repeat;mask:var(--nd-icon) center/contain no-repeat}
.nd-product-card .nd-card-top .nd-small{margin:0;font:500 11px/1.35 var(--nd-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--nd2-ink-3)}
:root .nd-catalogue .nd-product-card h3{margin:4px 0 0;font:500 1.15rem/1.25 var(--nd-display);letter-spacing:-.015em}
.nd-product-card h3 a{color:var(--nd-ink);text-decoration:none}
.nd-product-card h3 a::after{content:"";position:absolute;inset:0;border-radius:12px}
:root .nd-catalogue .nd-product-card p{margin:0;font-size:14.5px;line-height:1.55;color:var(--nd-muted)}
.nd-product-card .nd-product-status{display:inline-flex;align-items:center;gap:6px;justify-self:start;height:22px;margin:4px 0 0;padding:0 9px;border-radius:999px;background:var(--ndx-ok-soft);color:var(--ndx-ok);font:500 12px/1 var(--nd-font)}
.nd-product-card .nd-product-status .nd-dot{width:6px;height:6px;background:currentColor}
:root .nd-product-card .nd-text-link{justify-self:start;margin:6px 0 0;padding:0 0 1px;border-bottom:1px solid var(--nd2-line-2);font-size:14px;font-weight:500;color:var(--nd-ink);text-decoration:none}
.nd-product-card .nd-text-link svg{width:16px;height:16px}
.nd-product-card:hover .nd-text-link{border-color:var(--nd-orange-500,#f39c12)}
.nd-catalogue-empty{padding:28px 20px;text-align:center;color:var(--nd-muted);border:1px dashed var(--nd2-line-2);border-radius:12px}
@media(max-width:1000px){.nd-catalogue .nd-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.nd-catalogue .nd-grid-3{grid-template-columns:minmax(0,1fr)}}

/* ---------- Category cells: directory categories and the plugins "by job" filters ---------- */
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid{gap:0;border:1px solid var(--nd-line);border-radius:12px;overflow:hidden;background:var(--nd2-surface)}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card{position:relative;display:flex;flex-direction:column;gap:10px;padding:clamp(22px,2.6vw,30px)!important;margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:1px 0 0 var(--nd-line),0 1px 0 var(--nd-line);transform:none;transition:background-color .15s}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card:hover{background:var(--nd2-sunk)!important;box-shadow:1px 0 0 var(--nd-line),0 1px 0 var(--nd-line);transform:none}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card:has(a:focus-visible){outline:2px solid var(--ndx-focus);outline-offset:-2px}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card .nd-card-icon{display:inline-flex;align-items:center;gap:8px;width:auto;min-width:0;height:auto;margin:0 0 4px;padding:0;border-radius:0!important;background:none;box-shadow:none;color:var(--nd2-ink-3);font:500 11.5px/1.3 var(--nd-mono);font-size:11.5px!important;letter-spacing:.07em;text-transform:uppercase}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card .nd-card-icon::before{width:18px;height:18px;background:var(--ndx-amber-ink)}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card h3{margin:0;font:500 1.25rem/1.25 var(--nd-display);letter-spacing:-.015em;color:var(--nd-ink)}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card p:not(.nd-card-icon){margin:0;font-size:15px;line-height:1.6;color:var(--nd-muted)}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card .wp-block-buttons{margin:auto 0 0;padding-top:10px}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card .wp-block-button__link{display:inline-block;min-height:0;padding:0;border:0;border-radius:0;background:none!important;box-shadow:none;color:var(--nd-ink)!important;font:500 14.5px/1.4 var(--nd-font);text-decoration:underline!important;text-decoration-color:var(--nd2-line-2)!important;text-underline-offset:4px}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card .wp-block-button__link::before{content:"";position:absolute;inset:0}
html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card:hover .wp-block-button__link{text-decoration-color:var(--nd-orange-500,#f39c12)!important}
@media(max-width:1000px){html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid-3{grid-template-columns:minmax(0,1fr)}}

/* Related plugins on a product page: the same card as the catalogue */
html:root .single-ndovu_plugin .nd-related .nd-grid{gap:12px}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card{position:relative;display:flex;flex-direction:column;gap:10px;padding:20px!important;margin:0!important;box-shadow:none;transition:border-color .15s,box-shadow .15s,transform .15s}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card:hover{box-shadow:var(--nd2-shadow)}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card:has(a:focus-visible){outline:2px solid var(--ndx-focus);outline-offset:2px}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card .nd-card-icon{position:relative;display:flex;align-items:center;width:auto;min-width:0;height:40px;margin:0;padding:0 0 0 52px;border-radius:0!important;background:none;box-shadow:none;color:var(--nd2-ink-3);font:500 11px/1.35 var(--nd-mono);font-size:11px!important;letter-spacing:.06em;text-transform:uppercase}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card .nd-card-icon::after{content:"";position:absolute;left:0;top:0;width:40px;height:40px;border-radius:9px;background:var(--ndx-amber-soft)}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card .nd-card-icon::before{position:absolute;left:10px;top:10px;z-index:1;width:20px;height:20px;background:var(--ndx-amber-ink)}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card h3{margin:4px 0 0;font:500 1.15rem/1.25 var(--nd-display);letter-spacing:-.015em;color:var(--nd-ink)}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card p:not(.nd-card-icon){margin:0;font-size:14.5px;line-height:1.55;color:var(--nd-muted)}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card .wp-block-buttons{margin:auto 0 0;padding-top:6px}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card .wp-block-button__link{display:inline-block;min-height:0;padding:0;border:0;border-radius:0;background:none!important;box-shadow:none;color:var(--nd-ink)!important;font:500 14px/1.4 var(--nd-font);text-decoration:underline!important;text-decoration-color:var(--nd2-line-2)!important;text-underline-offset:4px}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card .wp-block-button__link::before{content:"";position:absolute;inset:0;border-radius:12px}
html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card:hover .wp-block-button__link{text-decoration-color:var(--nd-orange-500,#f39c12)!important}
@media(max-width:1000px){html:root .single-ndovu_plugin .nd-related .nd-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){html:root .single-ndovu_plugin .nd-related .nd-grid-3{grid-template-columns:minmax(0,1fr)}}

@media(prefers-reduced-motion:reduce){
  .nd-dir .nd-dir-card,.nd-dir-operators .nd-dir-card,.nd-bot-more a,.nd-bot-more a::after,:root .nd-catalogue .nd-grid .nd-card.nd-product-card,html:root .nd-main:is(:has(.nd-catalogue),:has([data-nd-dir])) .nd-cards .nd-grid .nd-card{transition:none}
  :root .nd-catalogue .nd-grid .nd-card.nd-product-card:hover,html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card:hover{transform:none}
  html:root .single-ndovu_plugin .nd-related .nd-grid .nd-card{transition:none}
}

/* =====================================================================
   Bot profile 2.0: a ruled two-column sheet (explanations | facts) and a
   product closer showing what Crawl Analytics records for this bot.
   ===================================================================== */
.nd-bot2{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);background:var(--surface)}
.nd-bot2-main,.nd-bot2-aside{display:grid;align-content:start}
.nd-bot2-cell{position:relative;padding:clamp(22px,2.6vw,32px);border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.nd-bot2-cell::before{content:"";position:absolute;top:-5px;left:-5px;width:9px;height:9px;border:1px solid var(--line-2);background:var(--bg);border-radius:1px;z-index:1}
.nd-bot2-label{display:flex;align-items:center;gap:8px;margin:0 0 14px;font:500 11.5px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.nd-bot2-label::before{content:"";width:6px;height:6px;background:var(--amber);border-radius:1px}
.nd-bot2-lead{margin:0;font-size:16px;line-height:1.6;color:var(--ink)}
.nd-bot2-callout{margin:16px 0 0;padding:12px 16px;background:var(--bg-sunk);box-shadow:inset 2px 0 0 var(--amber);font-size:14.5px;line-height:1.55;color:var(--ink-2)}
.nd-bot2-callout b{color:var(--ink);font-weight:500}
.nd-bot2-state{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;margin:0 0 16px;font-size:15px;line-height:1.55;color:var(--ink-2)}
.nd-bot2-pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font:500 12.5px/1 var(--f-body);white-space:nowrap}
.nd-bot2-pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.nd-bot2-pill.is-ok{background:var(--ok-soft);color:var(--ok)}
.nd-bot2-pill.is-bad{background:var(--bad-soft);color:var(--bad)}
.nd-bot2-pill.is-warn{background:var(--warn-soft);color:var(--amber-ink)}
.nd-bot2-pill.is-token{background:var(--bg-sunk);color:var(--ink-2)}
.nd-bot2-note{margin:0;color:var(--ink-2)}
.nd-bot2-rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.nd-bot2 .nd-code-block{margin:0;border-radius:0!important}
.nd-bot2 .nd-code-head .nd-copy{border-radius:4px}
.nd-bot2-steps{list-style:none;counter-reset:s;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line)}
.nd-bot2-steps li{counter-increment:s;position:relative;display:grid;gap:6px;align-content:start;margin:0;padding:16px 16px 18px;border-right:1px solid var(--line);font-size:14px;line-height:1.5;color:var(--ink-2)}
.nd-bot2-steps li:last-child{border-right:0}
.nd-bot2-steps li::before{content:"0" counter(s);font:500 11px/1 var(--f-mono);color:var(--ink-3)}
.nd-bot2-steps b{font-weight:500;color:var(--ink)}
.nd-bot2-steps code{font:12.5px/1.4 var(--f-mono);padding:1px 5px;background:var(--bg-sunk);border:1px solid var(--line);color:var(--ink)}
.nd-bot2-steps li.is-off{color:var(--ink-3)}
.nd-bot2-steps li.is-ok{box-shadow:inset 0 -2px 0 var(--ok)}
.nd-bot2-steps li.is-bad{box-shadow:inset 0 -2px 0 var(--bad)}
.nd-bot2-sub{margin:20px 0 8px;font:500 11.5px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.nd-bot2-sources{list-style:none;margin:0;padding:0;border:1px solid var(--line)}
.nd-bot2-sources li{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;align-items:center;margin:0;padding:10px 14px;border-top:1px solid var(--line);font-size:13.5px}
.nd-bot2-sources li:first-child{border-top:0}
.nd-bot2-sources span{color:var(--ink-3);font-size:12.5px}
.nd-bot2-sources a,.nd-bot2-sources code{font:12.5px/1.4 var(--f-mono);color:var(--ink);overflow-wrap:anywhere;text-decoration:none;background:none;border:0;padding:0}
.nd-bot2-sources a:hover{color:var(--amber-ink)}
.nd-bot2-facts{display:grid;margin:0}
.nd-bot2-facts>div{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-top:1px solid var(--line);font-size:14px}
.nd-bot2-facts>div:first-child{border-top:0;padding-top:0}
.nd-bot2-facts dt{color:var(--ink-3)}
.nd-bot2-facts dd{margin:0;text-align:right;color:var(--ink);font-weight:500}
.nd-bot2-facts dd a{display:inline-flex;align-items:center;gap:6px;color:var(--ink);text-decoration:none}
.nd-bot2-facts dd a:hover{color:var(--amber-ink)}
.nd-bot2-facts code{font:12.5px/1.4 var(--f-mono);padding:2px 6px;background:var(--bg-sunk);border:1px solid var(--line);color:var(--ink)}
.nd-bot2-facts .nd-label-logo{width:16px;height:16px}
.nd-bot2-links,.nd-bot2-more{list-style:none;margin:0;padding:0;display:grid;border:1px solid var(--line)}
.nd-bot2-links li,.nd-bot2-more li{margin:0;border-top:1px solid var(--line)}
.nd-bot2-links li:first-child,.nd-bot2-more li:first-child{border-top:0}
.nd-bot2-links a,.nd-bot2-links span,.nd-bot2-more a{display:grid;gap:3px;padding:11px 14px;font-size:14px;font-weight:500;color:var(--ink);text-decoration:none}
.nd-bot2-links small{font:400 11.5px/1.3 var(--f-mono);color:var(--ink-3)}
.nd-bot2-more a{grid-template-columns:minmax(0,1fr) auto;align-items:center}
.nd-bot2-more a span{font:400 11.5px/1 var(--f-mono);color:var(--ink-3)}
.nd-bot2-links a:hover,.nd-bot2-more a:hover{background:var(--bg-sunk);box-shadow:inset 2px 0 0 #ee6b12}
/* Closer: the product, not a banner */
.nd-bot2-cta{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);margin-top:clamp(28px,4vw,48px);background:#0a0a0a;color:#ededed;border:1px solid #262626}
.nd-bot2-cta::before,.nd-bot2-cta::after{content:"";position:absolute;top:-5px;width:9px;height:9px;border:1px solid var(--line-2);background:var(--bg);border-radius:1px}
.nd-bot2-cta::before{left:-5px}.nd-bot2-cta::after{right:-5px}
.nd-bot2-cta-copy{display:grid;gap:14px;align-content:center;padding:clamp(26px,3.4vw,44px)}
.nd-bot2-cta-copy h2{margin:0;font:500 clamp(1.5rem,2.4vw,2rem)/1.15 var(--f-display);letter-spacing:-.025em;color:#ededed}
.nd-bot2-cta-copy p{margin:0;color:#a3a3a3;font-size:15px;line-height:1.6}
.nd-bot2-cta-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px!important}
.nd-bot2-btn{display:inline-flex;align-items:center;height:42px;padding:0 20px;border-radius:999px;border:1px solid #333333;color:#ededed!important;font:500 14.5px/1 var(--f-body);text-decoration:none!important;white-space:nowrap}
.nd-bot2-btn:hover{border-color:#ededed}
.nd-bot2-btn.is-primary{background:#f39c12;border-color:transparent;color:#171717!important}
.nd-bot2-btn.is-primary:hover{background:#f7ae3a}
.nd-bot2-cta-vis{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);border-left:1px solid #262626}
.nd-bot2-chart{display:grid;grid-template-rows:auto 1fr;padding:20px;border-right:1px solid #262626}
.nd-bot2-chart p{display:grid;gap:4px;margin:0 0 12px}
.nd-bot2-chart p span{display:inline-flex;align-items:center;gap:8px;font-weight:500;font-size:14px;color:#ededed}
.nd-bot2-chart p small{font:400 11px/1 var(--f-mono);color:#737373}
.nd-bot2-chart svg{width:100%;height:120px;align-self:end;background-image:linear-gradient(#262626 1px,transparent 1px);background-size:100% 25%}
.nd-bot2-chart .line{fill:none;stroke:#f39c12;stroke-width:2;vector-effect:non-scaling-stroke}
.nd-bot2-chart .area{fill:rgba(243,156,18,.14)}
.nd-bot2-paths{list-style:none;margin:0;padding:8px 0;display:grid;align-content:center}
.nd-bot2-paths li{display:flex;justify-content:space-between;gap:10px;margin:0;padding:8px 16px;border-top:1px solid #262626}
.nd-bot2-paths li:first-child{border-top:0}
.nd-bot2-paths code{font:12.5px/1.4 var(--f-mono);color:#ededed;background:none;border:0;padding:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nd-bot2-paths span{font:500 11.5px/1 var(--f-mono)}
.nd-bot2-paths .is-ok{color:#5fbf7a}
.nd-bot2-paths .is-bad{color:#ef6b5b}
@media(max-width:1000px){
  .nd-bot2,.nd-bot2-cta{grid-template-columns:1fr}
  .nd-bot2-cta-vis{border-left:0;border-top:1px solid #262626}
}
@media(max-width:640px){
  .nd-bot2-rules,.nd-bot2-steps{grid-template-columns:1fr}
  .nd-bot2-steps li{border-right:0;border-bottom:1px solid var(--line)}
  .nd-bot2-steps li:last-child{border-bottom:0}
  .nd-bot2-cta-vis{grid-template-columns:1fr}
  .nd-bot2-chart{border-right:0;border-bottom:1px solid #262626}
  .nd-bot2-sources li{grid-template-columns:1fr;gap:4px}
}
.nd2 .nd-bot2-label{margin:0 0 14px}
.nd2 .nd-bot2-state{margin:0 0 16px}
.nd2 .nd-bot2-sub{margin:20px 0 8px}
.nd2 .nd-bot2-callout{margin:16px 0 0}
.nd2 .nd-bot2-lead,.nd2 .nd-bot2-note{margin:0}
.nd2 .nd-bot2-cta-copy h2{color:#ededed}
.nd2 .nd-bot2-cta-copy p{color:#a3a3a3}
.nd-bot2-chart svg{height:auto;min-height:150px}
