/* Paper & Ink, final sgModern adapter. After Bootstrap, css.php, layout.css
   and shared-theme.css. Existing source owns geometry; measured guards at end. */
.sg-modern {
  --sg-bg:var(--simp-paper); --sg-bg-soft:var(--simp-soft); --sg-page-glow:none;
  --sg-surface:var(--simp-surface); --sg-surface-soft:var(--simp-soft); --sg-surface-muted:var(--simp-soft); --sg-surface-well:var(--simp-soft);
  --sg-text:var(--simp-ink); --sg-muted:var(--simp-muted); --sg-border:var(--simp-line); --sg-border-strong:var(--simp-control-border);
  --sg-link:var(--simp-action-text); --sg-link-hover:var(--simp-action-active); --sg-link-quiet:var(--simp-action-text); --sg-term:var(--simp-action-text);
  --sg-accent:var(--simp-action); --sg-accent-rgb:70,84,163; --sg-accent-soft:var(--simp-action-soft);
  --sg-header-ink:var(--simp-navy); --sg-header-bg:var(--simp-navy); --sg-header-border:var(--simp-nav-chip); --sg-header-link:var(--simp-nav-muted);
  --sg-header-chip-bg:var(--simp-nav-chip); --sg-header-chip-border:var(--simp-nav-border); --sg-header-chip-text:var(--simp-nav-muted); --sg-header-chip-hover-bg:var(--simp-navy);
  --sg-chip-bg:var(--simp-soft); --sg-chip-text:var(--simp-ink); --sg-chip-border:var(--simp-control-border); --sg-chip-hover-bg:var(--simp-action-soft); --sg-chip-active-bg:var(--simp-action-soft); --sg-chip-active-text:var(--simp-action-text);
  --sg-topbar:var(--simp-navy); --sg-tagbar:var(--simp-navy); --sg-tag-pill:var(--simp-nav-chip);
  --sg-code-bg:var(--simp-code-bg); --sg-code-border:var(--simp-line); --sg-code-text:var(--simp-code-text);
  --sg-info-bg:var(--simp-info-soft); --sg-info-border:var(--simp-info-border); --sg-tip-bg:var(--simp-success-soft); --sg-tip-border:var(--simp-success-border); --sg-warn-bg:var(--simp-warning-soft); --sg-warn-border:var(--simp-warning-border); --sg-alert-bg:var(--simp-danger-soft); --sg-alert-border:var(--simp-danger-border);
  --sg-radius:var(--simp-radius-control); --sg-radius-lg:var(--simp-radius-surface); --sg-shadow:var(--simp-shadow-popover); --sg-shadow-sm:var(--simp-shadow); --sg-shadow-xs:var(--simp-shadow); --sg-shadow-hover:var(--simp-shadow);
}
body.sg-modern {background-image:none;background-color:var(--simp-paper);}
.sg-modern .sg-site-navbar .nav-link {color:var(--simp-nav-muted);}
.sg-modern .sg-site-navbar .nav-link:hover {color:var(--simp-on-navy);}
.sg-modern .sg-category-navbar .nav-link:hover,.sg-modern .sg-category-navbar .nav-link:focus {color:var(--simp-on-navy)!important;border-color:var(--simp-nav-border);}
/* Namespace-specific inline colors are superseded without changing active logic. */
.sg-modern .sg-category-primary .nav-link[style],.sg-modern .sg-category-primary .nav-link.active,.sg-modern .sg-category-primary .nav-link.is-active {color:var(--simp-action-text)!important;background:var(--simp-action-soft)!important;border-color:var(--simp-action)!important;}
.sg-modern .sg-category-menu-trigger {color:var(--simp-navy);background:var(--simp-surface);border-color:var(--simp-surface);box-shadow:var(--simp-shadow);}
.sg-modern .sg-category-menu[open] .sg-category-menu-trigger,.sg-modern .sg-category-menu-trigger:hover {color:var(--simp-action-text);background:var(--simp-action-soft);border-color:var(--simp-action);}
.sg-modern .sg-category-menu-panel {background:var(--simp-surface);border-color:var(--simp-line);box-shadow:var(--simp-shadow-popover);}
.sg-modern .sg-category-menu-link {color:var(--simp-ink);}
.sg-modern .sg-category-menu-link:hover,.sg-modern .sg-category-menu-link:focus,.sg-modern .sg-category-menu-link.is-active {color:var(--simp-action-text);background:var(--simp-action-soft);}
.sg-modern .content.separator {background:var(--simp-surface);border-color:var(--simp-line);box-shadow:var(--simp-shadow);}
.sg-modern div.dokuwiki {color:var(--simp-ink);}
.sg-modern div.dokuwiki a.wikilink1 {color:var(--simp-action-text);}
.sg-modern div.dokuwiki a.wikilink1:hover {color:var(--simp-action-active);}
.sg-modern div.dokuwiki div.level2>ol>li::before {color:var(--simp-action-text);background:var(--simp-action-soft);border-color:var(--simp-action);}
.sg-modern div.dokuwiki .sg-code {color:var(--simp-code-text);background:var(--simp-code-bg);border-color:var(--simp-line);}
.sg-modern div.dokuwiki .sg-code-head {color:var(--simp-muted);background:var(--simp-soft);border-color:var(--simp-line);}
.sg-modern div.dokuwiki .sg-code-label {color:var(--simp-muted);}
.sg-modern div.dokuwiki .sg-code-label::before {background:var(--simp-muted);box-shadow:.75rem 0 0 var(--simp-muted),1.5rem 0 0 var(--simp-muted);}
.sg-modern div.dokuwiki .sg-code-copy {color:var(--simp-ink);background:var(--simp-surface);border-color:var(--simp-control-border);border-radius:var(--simp-radius-control);}
.sg-modern div.dokuwiki .sg-code-copy:hover {color:var(--simp-ink);background:var(--simp-soft);border-color:var(--simp-muted);}
.sg-modern div.dokuwiki .sg-code-copy:focus-visible {box-shadow:var(--simp-focus-shadow);}
.sg-modern div.dokuwiki .sg-code-copy.is-copied {color:var(--simp-success-text);background:var(--simp-success-soft);border-color:var(--simp-success-border);}
.sg-modern div.dokuwiki pre.code,.sg-modern div.dokuwiki dl.code,.sg-modern div.dokuwiki dl.file {color:var(--simp-code-text);background:var(--simp-code-bg);border-color:var(--simp-line);}
.sg-modern div.dokuwiki pre.code :is(.sg-prompt,.sg-out) {color:var(--simp-muted);}
.sg-modern div.dokuwiki pre.code .sg-cmd {color:var(--simp-code-text);}
.sg-modern div.dokuwiki table.inline th,.sg-modern .table thead th {color:var(--simp-muted);background:var(--simp-soft);border-color:var(--simp-line);}
.sg-modern div.dokuwiki table.inline td {color:var(--simp-ink);background:var(--simp-surface);border-color:var(--simp-line);}
.sg-modern div.dokuwiki img {border-color:var(--simp-line);box-shadow:none;}
.sg-modern .dokuwiki div.wrap_info.sg-related {background:var(--simp-surface);border-color:var(--simp-line);border-radius:var(--simp-radius-control);box-shadow:none;}
.sg-modern .dokuwiki div.wrap_info.sg-related a.wikilink1 {color:var(--simp-ink)!important;}
.sg-modern .dokuwiki div.wrap_info.sg-related a.wikilink1:hover,.sg-modern .dokuwiki div.wrap_info.sg-related a.wikilink1:focus {color:var(--simp-action-text)!important;background:var(--simp-action-soft);}
/* Explicit semantic text, icon, label, background and edge; no inherited blue. */
.sg-modern .dokuwiki div.wrap_info:not(.sg-related),.sg-modern .dokuwiki div.wrap_notice {--sg-note-tone:var(--simp-info);--sg-note-ink:var(--simp-info-text);color:var(--simp-info-text);background:var(--simp-info-soft);border-color:var(--simp-info-border);}
.sg-modern .dokuwiki div.wrap_tip,.sg-modern .dokuwiki div.wrap_todo,.sg-modern .dokuwiki div.wrap_download {--sg-note-tone:var(--simp-success);--sg-note-ink:var(--simp-success-text);color:var(--simp-success-text);background:var(--simp-success-soft);border-color:var(--simp-success-border);}
.sg-modern .dokuwiki div.wrap_important {--sg-note-tone:var(--simp-warning);--sg-note-ink:var(--simp-warning-text);color:var(--simp-warning-text);background:var(--simp-warning-soft);border-color:var(--simp-warning-border);}
.sg-modern .dokuwiki div.wrap_alert {--sg-note-tone:var(--simp-danger);--sg-note-ink:var(--simp-danger-text);color:var(--simp-danger-text);background:var(--simp-danger-soft);border-color:var(--simp-danger-border);}
/* Native controls and DataTables UI retain their exact dimensions. */
.sg-modern :is(.sg-directory-search,.sg-directory-sort),.sg-modern div.dt-container :is(.dt-input,.dt-length select,.dt-search input) {color:var(--simp-ink);background-color:var(--simp-surface);border-color:var(--simp-control-border);box-shadow:none;}
.sg-modern :is(.sg-directory-search,.sg-directory-sort):focus,.sg-modern div.dt-container .dt-input:focus {border-color:var(--simp-focus);box-shadow:var(--simp-focus-shadow);}
.sg-modern .sg-directory-search::placeholder {color:var(--simp-muted);opacity:1;}
.sg-modern .dokuwiki .dt-container table.dataTable tbody td {color:var(--simp-ink);background:var(--simp-surface);border-color:var(--simp-line);box-shadow:none!important;}
.sg-modern .dokuwiki .dt-container table.dataTable tbody td:hover {color:var(--simp-action-text);background:var(--simp-action-soft);border-color:var(--simp-action);}
.sg-modern div.dt-container .dt-paging .dt-paging-button {color:var(--simp-action-text)!important;background:var(--simp-surface);border-color:var(--simp-control-border);}
.sg-modern div.dt-container .dt-paging .dt-paging-button:hover {color:var(--simp-action-text)!important;background:var(--simp-action-soft);border-color:var(--simp-action);}
.sg-modern div.dt-container .dt-paging .dt-paging-button.current,.sg-modern div.dt-container .dt-paging .dt-paging-button.current:hover {color:var(--simp-on-action)!important;background:var(--simp-action);border-color:var(--simp-action);}
.sg-modern div.dt-container .dt-paging .dt-paging-button.disabled,.sg-modern div.dt-container .dt-paging .dt-paging-button.disabled:hover {color:var(--simp-muted)!important;background:var(--simp-soft);border-color:var(--simp-control-border);}
.sg-modern footer,.sg-modern footer a {color:var(--simp-nav-muted);}
.sg-modern footer {background:var(--simp-navy);}
.sg-modern footer a:hover {color:var(--simp-on-navy);}
.sg-modern .sg-category-menu-trigger:focus-visible {outline-color:var(--simp-focus-on-dark);box-shadow:none;}
/* Bootstrap 5.3.8 measured geometry guards follow. These restore existing
   sgModern values; they introduce no new page layout. */
/* Bootstrap 5.3.8 geometry guards, measured against sgModern without Bootstrap.
   Existing sgModern container/grid/nav/ad rules already win; do not duplicate them.
   Reboot exposes .table-bordered row borders; table padding and list margins differ. */
.sg-modern div.dokuwiki thead,
.sg-modern div.dokuwiki tbody,
.sg-modern div.dokuwiki tfoot,
.sg-modern div.dokuwiki tr {
  border-width: 0;
  vertical-align: middle;
}
.sg-modern div.dokuwiki tr { padding: 0; }
.sg-modern div.dokuwiki table.inline:not(.dataTable) > :is(thead, tbody, tfoot) > tr > :is(th, td) {
  padding: 1px;
}
.sg-modern div.dokuwiki ol { margin-top: 1em; margin-bottom: 1em; }

/* Refined article, code and directory paint: preserve source reading measure. */
.sg-modern .content.separator {border-color:transparent;box-shadow:var(--simp-shadow);}
.sg-modern div.dokuwiki :is(h2,h3) {letter-spacing:-.015em;}
.sg-modern div.dokuwiki .sg-code-label {text-transform:none;letter-spacing:.02em;}
.sg-modern div.dokuwiki .sg-code-copy {color:var(--simp-action-text);background:var(--simp-action-soft);border-color:transparent;box-shadow:none;}
.sg-modern div.dokuwiki .sg-code-copy:hover {background:var(--simp-soft);border-color:transparent;}
.sg-modern .dokuwiki div.wrap_info.sg-related {border-color:transparent transparent var(--simp-line);border-radius:0;}
.sg-modern .dokuwiki .dt-container table.dataTable tbody td {border-color:transparent transparent var(--simp-line)!important;}
.sg-modern .dokuwiki .dt-container table.dataTable tbody td:hover {border-color:transparent transparent var(--simp-action)!important;}

/* Existing namespace matching retained; source inline colors are paint only. */
body.sg-modern.sg-ns-aws :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-aws,
body.sg-modern.sg-ns-anaconda :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-anaconda,
body.sg-modern.sg-ns-anythingllm :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-anythingllm,
body.sg-modern.sg-ns-apache-cassandra :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-apache-cassandra,
body.sg-modern.sg-ns-apache-hadoop :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-apache-hadoop,
body.sg-modern.sg-ns-apache :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-apache,
body.sg-modern.sg-ns-apache-spark :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-apache-spark,
body.sg-modern.sg-ns-tomcat :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-tomcat,
body.sg-modern.sg-ns-appium :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-appium,
body.sg-modern.sg-ns-bash :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-bash,
body.sg-modern.sg-ns-css :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-css,
body.sg-modern.sg-ns-ceph :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-ceph,
body.sg-modern.sg-ns-certbot :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-certbot,
body.sg-modern.sg-ns-checkmk :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-checkmk,
body.sg-modern.sg-ns-claude :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-claude,
body.sg-modern.sg-ns-codex :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-codex,
body.sg-modern.sg-ns-cpanel :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-cpanel,
body.sg-modern.sg-ns-curl :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-curl,
body.sg-modern.sg-ns-debian :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-debian,
body.sg-modern.sg-ns-detox :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-detox,
body.sg-modern.sg-ns-dig :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-dig,
body.sg-modern.sg-ns-docker :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-docker,
body.sg-modern.sg-ns-drbd :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-drbd,
body.sg-modern.sg-ns-eclipse :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-eclipse,
body.sg-modern.sg-ns-elastic :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-elastic,
body.sg-modern.sg-ns-espresso :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-espresso,
body.sg-modern.sg-ns-firewalld :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-firewalld,
body.sg-modern.sg-ns-gekko :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-gekko,
body.sg-modern.sg-ns-gentoo :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-gentoo,
body.sg-modern.sg-ns-git :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-git,
body.sg-modern.sg-ns-glusterfs :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-glusterfs,
body.sg-modern.sg-ns-gmail :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-gmail,
body.sg-modern.sg-ns-screen :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-screen,
body.sg-modern.sg-ns-google-ads :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-google-ads,
body.sg-modern.sg-ns-google-adsense :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-google-adsense,
body.sg-modern.sg-ns-google-analytics :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-google-analytics,
body.sg-modern.sg-ns-google-chrome :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-google-chrome,
body.sg-modern.sg-ns-google-workspace :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-google-workspace,
body.sg-modern.sg-ns-grafana :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-grafana,
body.sg-modern.sg-ns-grep-awk-sed-regex :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-grep-awk-sed-regex,
body.sg-modern.sg-ns-haproxy :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-haproxy,
body.sg-modern.sg-ns-haystack :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-haystack,
body.sg-modern.sg-ns-homebrew :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-homebrew,
body.sg-modern.sg-ns-html :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-html,
body.sg-modern.sg-ns-hyperledger-fabric :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-hyperledger-fabric,
body.sg-modern.sg-ns-imagemagick :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-imagemagick,
body.sg-modern.sg-ns-influxdb :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-influxdb,
body.sg-modern.sg-ns-iphone-ipad :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-iphone-ipad,
body.sg-modern.sg-ns-iproute2 :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-iproute2,
body.sg-modern.sg-ns-iptables :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-iptables,
body.sg-modern.sg-ns-iterm :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-iterm,
body.sg-modern.sg-ns-java :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-java,
body.sg-modern.sg-ns-javascript :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-javascript,
body.sg-modern.sg-ns-jetbrains :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-jetbrains,
body.sg-modern.sg-ns-jmeter :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-jmeter,
body.sg-modern.sg-ns-jupyterlab :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-jupyterlab,
body.sg-modern.sg-ns-jupyter-notebook :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-jupyter-notebook,
body.sg-modern.sg-ns-kate :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-kate,
body.sg-modern.sg-ns-keras :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-keras,
body.sg-modern.sg-ns-kubernetes :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-kubernetes,
body.sg-modern.sg-ns-kubuntu :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-kubuntu,
body.sg-modern.sg-ns-langchain :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-langchain,
body.sg-modern.sg-ns-langgraph :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-langgraph,
body.sg-modern.sg-ns-langsmith :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-langsmith,
body.sg-modern.sg-ns-linux :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-linux,
body.sg-modern.sg-ns-llama-cpp :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-llama-cpp,
body.sg-modern.sg-ns-llamaindex :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-llamaindex,
body.sg-modern.sg-ns-lm-studio :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-lm-studio,
body.sg-modern.sg-ns-lvm :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-lvm,
body.sg-modern.sg-ns-loki :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-loki,
body.sg-modern.sg-ns-macos :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-macos,
body.sg-modern.sg-ns-mastodon :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-mastodon,
body.sg-modern.sg-ns-matplotlib :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-matplotlib,
body.sg-modern.sg-ns-microsoft-edge :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-microsoft-edge,
body.sg-modern.sg-ns-microsoft-teams :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-microsoft-teams,
body.sg-modern.sg-ns-microsoft-windows :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-microsoft-windows,
body.sg-modern.sg-ns-mikrotik-routeros :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-mikrotik-routeros,
body.sg-modern.sg-ns-mimir :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-mimir,
body.sg-modern.sg-ns-mozilla-firefox :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-mozilla-firefox,
body.sg-modern.sg-ns-mysql-mariadb :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-mysql-mariadb,
body.sg-modern.sg-ns-nagios :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-nagios,
body.sg-modern.sg-ns-netcat :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-netcat,
body.sg-modern.sg-ns-nfs :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-nfs,
body.sg-modern.sg-ns-network-security :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-network-security,
body.sg-modern.sg-ns-nextcloud :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-nextcloud,
body.sg-modern.sg-ns-nginx :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-nginx,
body.sg-modern.sg-ns-nmap :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-nmap,
body.sg-modern.sg-ns-nodejs :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-nodejs,
body.sg-modern.sg-ns-numpy :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-numpy,
body.sg-modern.sg-ns-ollama :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-ollama,
body.sg-modern.sg-ns-opencv :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-opencv,
body.sg-modern.sg-ns-opennebula :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-opennebula,
body.sg-modern.sg-ns-openssl :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-openssl,
body.sg-modern.sg-ns-suse :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-suse,
body.sg-modern.sg-ns-opentelemetry :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-opentelemetry,
body.sg-modern.sg-ns-open-webui :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-open-webui,
body.sg-modern.sg-ns-pacemaker :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-pacemaker,
body.sg-modern.sg-ns-pandas :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-pandas,
body.sg-modern.sg-ns-parallels-desktop :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-parallels-desktop,
body.sg-modern.sg-ns-php :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-php,
body.sg-modern.sg-ns-php-curl :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-php-curl,
body.sg-modern.sg-ns-phpmyadmin :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-phpmyadmin,
body.sg-modern.sg-ns-phpstorm :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-phpstorm,
body.sg-modern.sg-ns-playonlinux :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-playonlinux,
body.sg-modern.sg-ns-playwright :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-playwright,
body.sg-modern.sg-ns-postgresql :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-postgresql,
body.sg-modern.sg-ns-postman :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-postman,
body.sg-modern.sg-ns-prometheus :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-prometheus,
body.sg-modern.sg-ns-proxmox :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-proxmox,
body.sg-modern.sg-ns-putty :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-putty,
body.sg-modern.sg-ns-python :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-python,
body.sg-modern.sg-ns-pytorch :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-pytorch,
body.sg-modern.sg-ns-r :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-r,
body.sg-modern.sg-ns-raspberrypi-os :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-raspberrypi-os,
body.sg-modern.sg-ns-redhat-centos-fedora :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-redhat-centos-fedora,
body.sg-modern.sg-ns-redmine :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-redmine,
body.sg-modern.sg-ns-rsync :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-rsync,
body.sg-modern.sg-ns-rust :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-rust,
body.sg-modern.sg-ns-scikit-learn :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-scikit-learn,
body.sg-modern.sg-ns-scipy :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-scipy,
body.sg-modern.sg-ns-scrapy :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-scrapy,
body.sg-modern.sg-ns-ssh :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-ssh,
body.sg-modern.sg-ns-selenium :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-selenium,
body.sg-modern.sg-ns-sentence-transformers :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-sentence-transformers,
body.sg-modern.sg-ns-smb-cifs :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-smb-cifs,
body.sg-modern.sg-ns-snapd :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-snapd,
body.sg-modern.sg-ns-snort :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-snort,
body.sg-modern.sg-ns-spotify :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-spotify,
body.sg-modern.sg-ns-sudo :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-sudo,
body.sg-modern.sg-ns-suricata :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-suricata,
body.sg-modern.sg-ns-symfony :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-symfony,
body.sg-modern.sg-ns-syslog :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-syslog,
body.sg-modern.sg-ns-systemd :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-systemd,
body.sg-modern.sg-ns-tcpdump :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-tcpdump,
body.sg-modern.sg-ns-teamviewer :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-teamviewer,
body.sg-modern.sg-ns-tempo :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-tempo,
body.sg-modern.sg-ns-tensorflow :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-tensorflow,
body.sg-modern.sg-ns-tmux :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-tmux,
body.sg-modern.sg-ns-traceroute :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-traceroute,
body.sg-modern.sg-ns-ubuntu :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-ubuntu,
body.sg-modern.sg-ns-vim :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-vim,
body.sg-modern.sg-ns-virtualbox :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-virtualbox,
body.sg-modern.sg-ns-vmware-fusion :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-vmware-fusion,
body.sg-modern.sg-ns-vmware-vsphere :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-vmware-vsphere,
body.sg-modern.sg-ns-vmware-workstation :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-vmware-workstation,
body.sg-modern.sg-ns-webmaster :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-webmaster,
body.sg-modern.sg-ns-wget :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-wget,
body.sg-modern.sg-ns-whois :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-whois,
body.sg-modern.sg-ns-wireshark :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-wireshark,
body.sg-modern.sg-ns-wordpress :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-wordpress,
body.sg-modern.sg-ns-xcuitest :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-xcuitest,
body.sg-modern.sg-ns-zsh :is(.sg-category-primary,.sg-category-menu-panel) .sg-category-link-zsh {color:var(--simp-action-text)!important;background:var(--simp-action-soft)!important;border-color:var(--simp-action)!important;}
.sg-modern .dokuwiki div.wrap_info:not(.sg-related){border-color:transparent;border-left-color:var(--simp-info-border);}
.sg-modern .dokuwiki div.wrap_tip{border-color:transparent;border-left-color:var(--simp-success-border);}
.sg-modern .dokuwiki div.wrap_important{border-color:transparent;border-left-color:var(--simp-warning-border);}
.sg-modern .dokuwiki div.wrap_alert{border-color:transparent;border-left-color:var(--simp-danger-border);}

/* Restore DokuWiki content metrics that Bootstrap Reboot otherwise replaces.
   Search result definitions and native search controls retain their original
   browser metrics; shell, columns and ad geometry remain owned by layout.css. */
.sg-modern div.dokuwiki h1 {
  font-size: 2em;
  font-weight: 700;
  line-height: inherit;
  margin-block: 0.67em;
}
.sg-modern div.dokuwiki h4 {
  font-size: 1em;
  line-height: inherit;
}
.sg-modern div.dokuwiki ul {
  margin-block: 1em;
  padding-inline-start: 40px;
}
.sg-modern div.dokuwiki dl.search_results { margin-block: 1em; }
.sg-modern div.dokuwiki dl.search_results dt { font-weight: 400; }
.sg-modern div.dokuwiki dl.search_results dd {
  margin-bottom: 0;
  margin-left: 40px;
}
.sg-modern .search-results-form :is(input, button) { font: revert; }
.sg-modern .search-results-form fieldset {
  margin: revert;
  padding: revert;
  border: revert;
}

/* Native DokuWiki forms share Paper & Ink paint without changing their metrics. */
.sg-modern :is(#dw__search, .search-results-form, #dw__login) :is(input:not([type=hidden]):not([type=checkbox]):not([type=radio]), textarea, select) {
  appearance: none;
  color: var(--simp-ink);
  background-color: var(--simp-surface);
  border-style: solid;
  border-color: var(--simp-control-border);
  border-radius: var(--simp-radius-control);
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) :is(input, textarea)::placeholder {
  color: var(--simp-muted);
  opacity: 1;
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) :is(button, input[type=submit], input[type=button], input[type=reset]) {
  appearance: none;
  color: var(--simp-on-action);
  background: var(--simp-action);
  border-style: solid;
  border-color: var(--simp-action);
  border-radius: var(--simp-radius-control);
  cursor: pointer;
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) :is(button, input[type=submit], input[type=button], input[type=reset]):hover {
  color: var(--simp-on-action);
  background: var(--simp-action-hover);
  border-color: var(--simp-action-hover);
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) :is(button, input[type=submit], input[type=button], input[type=reset]):active {
  background: var(--simp-action-active);
  border-color: var(--simp-action-active);
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) :is(input, button, textarea, select):focus-visible {
  border-color: var(--simp-focus) !important;
  outline: 2px solid var(--simp-focus);
  outline-offset: 2px;
  box-shadow: var(--simp-focus-shadow) !important;
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) label { color: var(--simp-ink); }
.sg-modern :is(#dw__search, .search-results-form, #dw__login) input:is([type=checkbox], [type=radio]) { accent-color: var(--simp-action); }
.sg-modern :is(#dw__search, .search-results-form, #dw__login) input[type=checkbox] {
  appearance: none;
  width: 13px;
  height: 13px;
  color: var(--simp-on-action);
  background: var(--simp-surface);
  border: 1px solid var(--simp-control-border);
  border-radius: 3px;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  background-position: center;
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) input[type=checkbox]:checked {
  background-color: var(--simp-action);
  border-color: var(--simp-action);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m3 8 3 3 7-7'/%3E%3C/svg%3E");
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) input[type=checkbox]:indeterminate {
  background-color: var(--simp-action);
  border-color: var(--simp-action);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");
}
.sg-modern :is(#dw__search, .search-results-form, #dw__login) :is(input, button, textarea, select):disabled {
  color: var(--simp-muted);
  background-color: var(--simp-soft);
  border-color: var(--simp-control-border);
  opacity: 1;
}
.sg-modern .search-results-form fieldset { border-color: transparent; }
.sg-modern .sg-site-navbar #dw__search label { color: var(--simp-nav-muted); }
.sg-modern .sg-site-navbar #dw__search :is(input, button):focus-visible { outline-color: var(--simp-focus-on-dark); }
/* Keep long search excerpts readable within their existing boxes. No wrapping,
   height reservation or shell overflow clipping; each snippet scrolls itself. */
.sg-modern div.dokuwiki dl.search_results dd.snippet { overflow-x: auto; }
