@charset "UTF-8";
/*!
 * Bootstrap v5.1.3 (https://getbootstrap.com/)
 * Bootstrap-Dark v1.1.3 (https://vinorodrigues.github.io/bootstrap-dark-5/)
 *
 * This file contains the default (light mode) styles.
 */

/* Base Variables and Settings for Light Mode */
:root {
  color-scheme: light dark;
}

:root {
  --bs-primary: #005b7f;
  --bs-secondary: #a6bbc8;
  --bs-success: #179C7d;
  --bs-info: #f58220;
  --bs-warning: #b2d235;
  --bs-danger: #dc3545;
  --bs-light: #f8f9fa;
  --bs-dark: #212529;
  --bs-primary-rgb: 0, 91, 127;
  --bs-secondary-rgb: 166, 187, 200;
  --bs-success-rgb: 23, 156, 125;
  --bs-info-rgb: 245, 130, 32;
  --bs-warning-rgb: 178, 210, 53;
  --bs-danger-rgb: 220, 53, 69;
  --bs-light-rgb: 248, 249, 250;
  --bs-dark-rgb: 33, 37, 41;
  --bs-white-rgb: 255, 255, 255;
  --bs-black-rgb: 0, 0, 0;
  --bs-body-color-rgb: 33, 37, 41;
  --bs-body-bg-rgb: 240, 244, 247;
  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
  --bs-body-font-family: var(--bs-font-sans-serif);
  --bs-body-font-size: 1rem;
  --bs-body-font-weight: 400;
  --bs-body-line-height: 1.5;
  --bs-body-color: #212529;
  --bs-body-bg: #f0f4f7;
  --bs-body-bg-rgb: 240, 244, 247;
  --bs-lightgray: #cccccc;
  --bs-table-bg: var(--bs-body-bg);
}

/* Light Mode Utility Classes (wrapped in a media query for clarity) */
@media (prefers-color-scheme: light) {
  .d-light-inline { display: inline !important; }
  .d-light-inline-block { display: inline-block !important; }
  .d-light-block { display: block !important; }
  .d-light-grid { display: grid !important; }
  .d-light-table { display: table !important; }
  .d-light-table-row { display: table-row !important; }
  .d-light-table-cell { display: table-cell !important; }
  .d-light-flex { display: flex !important; }
  .d-light-inline-flex { display: inline-flex !important; }
  .d-light-none { display: none !important; }
}
.site-footer .attribution .row .col,
  .site-footer a,
  .site-footer .text-end,
  .site-footer .attribution p,
  .site-footer label,
  .site-footer .footer-attr-label { color: var(--bs-light) !important; }

/* Common Styles */
*,
*::before,
*::after {
  box-sizing: border-box;
}

@media (prefers-reduced-motion: no-preference) {
  :root { scroll-behavior: smooth; }
}

body {
  margin: 0;
  font-family: var(--bs-body-font-family);
  font-size: var(--bs-body-font-size);
  font-weight: var(--bs-body-font-weight);
  line-height: var(--bs-body-line-height);
  color: var(--bs-body-color);
  text-align: var(--bs-body-text-align);
  background-color: rgba(var(--bs-body-bg-rgb), 1.0);
  -webkit-text-size-adjust: 100%;
  flex-direction: column !important;
  min-height: 100vh !important;
  display: flex !important;
}

.main {
  background: none;
}

.bg-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(var(--bs-body-bg-rgb), 0.5);
  /* change the alpha value as needed */
  z-index: -1;
  mix-blend-mode: multiply;
  opacity: 0.05;
}

a {
  color: var(--bs-primary);
  text-decoration: none;
}

a:hover {
  color: var(--bs-primary);
  text-decoration: underline;
}

.nav-link:hover {
  color: var(--bs-light) !important;
}

.counter-link:hover {
  color: var(--bs-dark);
  text-decoration: none;
}

.module-narrow .nav-item > a,
.module-narrow .nav-aside li a {
  color: var(--bs-body-color);
}

.dataset-heading a {
  color: inherit;
}

.homepage .module-promotion {
  background: var(--bs-light);
}

.banner {
  background-size: 100% 100%;
}

.index-logo {
  max-height: 36px;
  width: auto;
}

.navbar-nav li a {
  display: block;
  width: 100%;
  padding: 0.5rem;
  clear: both;
  font-weight: 400;
  text-align: inherit;
  white-space: nowrap;
  background-color: transparent;
  border: 0;
  color: var(--bs-light);
}

.dropdown-menu {
  background-color: var(--bs-body-bg) !important;
}

.dropdown-menu li a {
  color: var(--bs-body-color);
}

aside {
  background: var(--bs-light);
}

.page-row {
  background-color: rgba(var(--bs-light-rgb), 1.0);
}

.wrapper {
  position: relative;
  min-height: 300px;
  background-color: var(--bs-body-bg);
}

.theme-counter {
  display: inline;
}

.invisible {
  visibility: hidden;
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.popup {
  animation-duration: 2s;
  animation-fill-mode: both;
  animation-name: fadeIn;
}

.editor .editor-info-block {
  background-color: var(--bs-secondary);
  color: var(--bs-light);
}

.form-switch .form-check-input,
.form-switch .form-check-input:checked {
  background-color: rgba(var(--bs-primary-rgb), 0.7);
  border-color: var(--bs-primary);
}

.form-select {
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
}

table.dataTable thead tr > .dtfc-fixed-left,
table.dataTable thead tr > .dtfc-fixed-right {
  background-color: inherit !important;
}

table.dataTable tbody tr > .dtfc-fixed-left,
table.dataTable tbody tr > .dtfc-fixed-right {
  background-color: inherit !important;
}

.module-heading {
  color: var(--bs-body-color);
  background-color: rgba(var(--bs-body-bg-rgb), 0.4);
}

.module {
  background-color: rgba(var(--bs-light-rgb), 0.6);
}

.page-header {
  background-color: rgba(var(--bs-light-rgb), 0.6);
}

.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
  color: var(--bs-dark);
  background-color: rgba(var(--bs-light-rgb), 0.2) !important;
  border-color: #dee2e6 #dee2e6 #fff;
}

.counter-row {
  background-color: rgba(var(--bs-light-rgb), 0.1) !important;
}

.counter-link,
.counter-link > a:hover {
  display: block;
  padding: 0.5rem 1rem;
  color: var(--bs-primary);
  text-decoration: none;
}

.resource-item .heading {
  color: var(--bs-body-color);
}

.resource-item:hover {
  background-color: rgba(var(--bs-primary-rgb), 0.2);
}

.js .table-toggle-more .toggle-seperator td {
  height: 11px;
  padding: 0;
  mix-blend-mode: multiply;
}

.slug-preview-value {
  background-color: var(--bs-light-rgb);
  color: var(--bs-info);
}

.site-footer {
  background-size: 100% 100%;
  padding: 20px 0;
}

/* Non-homepage footer: fixed 130px — same structure as homepage footer */
body:not(.homepage) .wrapper {
  flex-grow: 1;
}
body:not(.homepage) .site-footer {
  height: 130px !important;
  min-height: 0 !important;
  flex-shrink: 0 !important;
  flex-grow: 0 !important;
  background-size: 100% 100% !important;
  overflow: hidden;
  padding: 0 !important;
}
body:not(.homepage) .site-footer .container {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  overflow: hidden;
}
body:not(.homepage) .site-footer .footer-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: repeat(3, 1fr);
  height: 130px;
}
body:not(.homepage) .site-footer .footer-links {
  grid-column: 1;
  grid-row: 1 / 3;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 0 0.7rem;
  overflow: hidden;
  padding: 0.25rem 0.5rem 0 0;
  max-height: calc(130px * 2 / 3);
}
body:not(.homepage) .site-footer .footer-badge-cell {
  grid-column: 1;
  grid-row: 3;
  display: flex;
  align-items: center;
  overflow: hidden;
}
body:not(.homepage) .site-footer .footer-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.4rem;
  overflow: hidden;
  white-space: nowrap;
  color: var(--bs-light);
  padding: 0 0 0 0.5rem;
}
body:not(.homepage) .site-footer .footer-attr-label {
  font-size: 0.75rem;
  opacity: 0.75;
}
body:not(.homepage) .site-footer .footer-attr-logo {
  max-height: 1.6rem;
  height: auto;
  width: auto;
  display: block;
}
body:not(.homepage) .site-footer .footer-badge {
  max-height: 1.1rem;
  height: auto;
  width: auto;
  display: block;
}
body:not(.homepage) .site-footer a:not(.btn) {
  font-size: 0.75rem !important;
  color: var(--bs-light) !important;
  text-decoration: none;
  white-space: nowrap;
}
body:not(.homepage) .site-footer a:not(.btn):hover {
  text-decoration: underline;
}
body:not(.homepage) .site-footer .btn {
  font-size: 0.75rem !important;
  padding: 0.15rem 0.55rem !important;
  line-height: 1.4;
}
body:not(.homepage) .site-footer .footer-attr-item {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}
body:not(.homepage) .site-footer .lang-select {
  display: inline-flex !important;
  align-items: center !important;
  margin: 0 !important;
  padding: 0 !important;
}
body:not(.homepage) .site-footer .lang-select .form-group {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  gap: 0.4rem !important;
  margin: 0 !important;
}
body:not(.homepage) .site-footer .lang-select label {
  display: inline !important;
  font-size: 0.75rem !important;
  color: #fff !important;
  opacity: 0.7;
  white-space: nowrap !important;
  margin: 0 !important;
  padding: 0 !important;
}
body:not(.homepage) .site-footer .select2-container {
  display: none !important;
}
body:not(.homepage) .site-footer .lang-select select {
  display: inline-block !important;
  font-size: 0.75rem !important;
  padding: 0.1rem 0.3rem !important;
  background: rgba(0,0,0,0.45) !important;
  color: #fff !important;
  border: 1px solid rgba(255,255,255,0.5) !important;
  border-radius: 0.25rem !important;
  cursor: pointer !important;
  width: auto !important;
  max-width: 9rem !important;
  appearance: auto !important;
  -webkit-appearance: auto !important;
}
body:not(.homepage) .site-footer .lang-select select option {
  background: #222;
  color: #fff;
}

.page-header .nav-tabs li.active a,
.page-header .nav-tabs a:hover {
  background-color: var(--bs-light);
}

.nav-link,
.page-header .nav-tabs li a {
  color: var(--bs-body-color);
}

.media-grid,
.module-grid {
  background: rgba(var(--bs-light-rgb), 0.2);
}

.module-footer {
  background-color: var(--bs-light);
}

.main .primary {
  background-color: var(--bs-light);
}

.badge[data-format="csv"],
.badge[data-format*="csv"] {
  background-color: var(--bs-info);
}

.badge[data-format="json"],
.badge[data-format*="json"] {
  background-color: var(--bs-warning);
}

.badge[data-format="pdf"],
.badge[data-format*="pdf"] {
  background-color: var(--bs-danger);
}

.badge[data-format="rdf"],
.badge[data-format*="rdf"],
.badge[data-format*="nquad"],
.badge[data-format*="ntriples"],
.badge[data-format*="turtle"] {
  background-color: var(--bs-primary);
}

.badge[data-format="zip"],
.badge[data-format*="zip"] {
  background-color: var(--bs-secondary);
}

.form-control {
  border: 1px solid var(--bs-body-color);
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg) !important;
}

.controls > .form-control,
.input-group > .form-control,
.input-group > .form-select {
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
}

.search-form .control-order-by .form-control {
  background-color: var(--bs-body-bg);
}

.select2-container .select2-choice {
  color: inherit !important;
  border-radius: 4px;
  background-color: var(--bs-body-bg);
  background-image: linear-gradient(to top, var(--bs-light) 0%, var(--bs-body-bg) 50%) !important;
}

.select2-container-multi.select2-container .select2-choices {
  color: inherit;
  background-color: var(--bs-body-bg);
}

.select2-drop-mask {
  background: var(--bs-body-bg);
  color: inherit;
}

.select2-container .select2-choice {
  background-color: var(--bs-body-bg);
  color: inherit;
}

.select2-search .select2-drop {
  background: var(--bs-body-bg);
  color: inherit;
}

.select2-choice {
  background-color: var(--bs-body-bg);
  color: inherit;
}

.select2-search {
  background-color: var(--bs-body-bg);
  color: inherit;
}

.select2-search input {
  background-color: var(--bs-body-bg);
  color: inherit;
}

.select2-results {
  background-color: var(--bs-body-bg);
  color: var(--bs-body-color);
}

.page-item.disabled .page-link {
  color: var(--bs-body-color);
  pointer-events: none;
  background-color: var(--bs-body-bg);
  border-color: var(--bs-body-color);
}

.btn-outline-light {
  color: var(--bs-light) !important;
  border-color: var(--bs-light);
}

.btn-outline-light:hover {
  color: var(--bs-light);
  border-color: var(--bs-dark);
  background-color: var(--bs-dark);
}

.btn-light,
.btn-default {
  color: var(--bs-primary);
  background-color: var(--bs-light);
  border-color: var(--bs-border-color, #dee2e6);
}
.btn-light:hover,
.btn-default:hover {
  color: #fff;
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.btn-primary {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.badge {
  color: var(--bs-light);
}

.tag-list {
  background-color: rgba(var(--bs-body-bg));
}

.tag {
  color: var(--bs-light);
  background-color: var(--bs-primary);
  border: var(--bs-primary);
  box-shadow: inset 0 1px 0 rgba(var(--bs-body-color-rgb), 0.15),
              0 1px 1px rgba(var(--bs-body-bg-rgb), 0.075);
}

.table {
  --bs-table-bg: transparent;
  --bs-table-accent-bg: transparent;
  --bs-table-striped-color: var(--bs-body-color);
  --bs-table-striped-bg: rgba(var(--bs-primary-rgb), 0.2);
  color: var(--bs-body-color);
}

.tab-content > .tab-pane {
  display: none;
}

.tab-content > .active {
  display: block;
}

/* End of light.css */

/* ============================================================
   Product Catalog Styles
   ============================================================ */

/* ════════════════════════════════════════════════
   Homepage: all sections fit in one viewport.
   Adjust the four --hp-*-vh variables below to
   redistribute space.  They must sum to 100.
     hero + counter + tags + footer = 100vh
   ════════════════════════════════════════════════ */
body.homepage {
  /* Section heights in viewport-height units — must sum to 100.
     Golden ratio: hero (focal) : rest ≈ 40 : 60
     Within rest: counter (glance) : tags (browse) : footer (anchor)
                        12         :      32        :       16          */
  /* hero 33 + counter 12 (pulled up 3vh over hero) + tags 37 + footer 18 = 100 */
  --hp-hero-vh:    33;
  --hp-counter-vh: 12;
  --hp-tags-vh:    37;
  --hp-footer-vh:  18;
  --hp-overlap-vh:  3;  /* how many vh the counter cards lift into the hero */

  /* Three text sizes used throughout — do not add more.
     title:subtitle ≈ 1.6:1 (golden), subtitle:small ≈ 1.4:1 */
  --txt-lg: clamp(1.4rem, 2.8vh, 2rem);      /* hero title, counter numbers */
  --txt-md: clamp(0.9rem, 1.9vh, 1.15rem);   /* subtitle, counter labels, search */
  --txt-sm: clamp(0.65rem, 1.3vh, 0.8rem);   /* tag pills, footer, meta  */

  overflow: hidden;   /* hard stop — nothing scrolls past 100vh */
  height: 100dvh;
}

/* Hero section */
.hero-section {
  height: calc(var(--hp-hero-vh) * 1vh);
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* Inner row expands to fill the fixed-height hero, columns vertically centred */
.hero-section > .row {
  flex: 1;
  min-height: 0;
  align-items: center;
}

/* Logo in hero — scales with viewport height */
.index-logo {
  max-height: clamp(80px, 13vh, 150px);
  width: auto;
}

/* Counter row — lifts up over the hero gradient */
.homepage .counter-row {
  height: calc(var(--hp-counter-vh) * 1vh);
  margin-top: calc(var(--hp-overlap-vh) * -1vh);
  position: relative;
  z-index: 10;
  flex-shrink: 0;
  flex-wrap: nowrap !important;
  overflow: hidden;
  padding: 0 !important;
  gap: 0 !important;
  align-items: center !important;
}
.homepage .counter-row > .col {
  /* Override Bootstrap row-cols-1 (flex-basis:100%) — always show 3 equal columns */
  flex: 0 0 33.333% !important;
  max-width: 33.333% !important;
  padding: 0 !important;
  align-items: center !important;
}
.homepage .counter-row h1 {
  font-size: var(--txt-lg);
  margin: 0;
  line-height: 1;
}
.homepage .counter-row h3 {
  font-size: var(--txt-md);
  margin: 0;
  margin-top: 0.15em;
}
.homepage .counter-row .counter-link {
  margin: 0 !important;
  padding: 0.4rem 0.75rem;
  text-align: center;
}

/* Tag cloud / main section — vertically centered, no dead space */
.homepage .main {
  height: calc(var(--hp-tags-vh) * 1vh);
  flex-grow: 0 !important;   /* override Bootstrap flex-grow-1 on this element */
  flex-shrink: 0;
  overflow: hidden;
  padding: 0 !important;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
/* Collapse Bootstrap m-3 margin so the row doesn't add empty outer space */
.homepage .main > .row {
  flex-shrink: 0;
  margin: 0 !important;
}
/* Column: flex column with gap — spacing comes from gap, not h5 margins */
.homepage .main > .row > .col-md-auto {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0 1rem !important;
}
/* Heading — zero margins, gap above handles spacing */
.homepage .main h5 {
  font-size: var(--txt-sm) !important;
  margin: 0 !important;
  letter-spacing: 0.08em;
}
/* Pills — no per-pill margin; container gap spaces them */
.homepage .theme-tag-pill {
  padding: 0.18rem 0.55rem !important;
  font-size: var(--txt-sm) !important;
  margin: 0 !important;
}
/* Pill container — wrapping grid with badge padding */
.homepage .main .d-flex.flex-wrap {
  gap: 0.35rem;
  padding-top: 0.7rem;    /* room for the position-absolute badge above first row */
  padding-bottom: 0.2rem;
  align-content: flex-start;
  overflow: hidden;
  max-height: calc(var(--hp-tags-vh) * 1vh - 3.5rem);
}

/* Footer — fit all content into --hp-footer-vh without clipping */
.homepage .site-footer {
  height: calc(var(--hp-footer-vh) * 1vh);
  flex-grow: 0 !important;
  flex-shrink: 0;
  overflow: hidden;
  padding: 0 !important;
}
.homepage .site-footer .container {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  overflow: hidden;
}

/* CSS Grid: 2 columns × 3 rows.
   Height is set directly here so the grid doesn't depend on the container's h-100. */
.homepage .site-footer .footer-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: repeat(3, 1fr);
  height: calc(var(--hp-footer-vh) * 1vh);
}

/* Left-top: links stack vertically, wrap into extra column when height runs out */
.homepage .site-footer .footer-links {
  grid-column: 1;
  grid-row: 1 / 3;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 0 0.7rem;
  overflow: hidden;
  padding: 0.25rem 0.5rem 0 0;
  /* max-height = 2 grid rows = 2/3 of the footer height */
  max-height: calc(var(--hp-footer-vh) * 1vh * 2 / 3);
}

/* Left-bottom: Open Data badge, row 3 */
.homepage .site-footer .footer-badge-cell {
  grid-column: 1;
  grid-row: 3;
  display: flex;
  align-items: center;
  overflow: hidden;
}

/* Right column cells — right-aligned, vertically centred */
.homepage .site-footer .footer-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.4rem;
  overflow: hidden;
  white-space: nowrap;
  color: var(--bs-light);
  padding: 0 0 0 0.5rem;
}

.homepage .site-footer .footer-attr-label {
  font-size: var(--txt-sm);
  opacity: 0.75;
}

/* Logos: capped by max-height so they don't push rows taller */
.homepage .site-footer .footer-attr-logo {
  max-height: 1.6rem;
  height: auto;
  width: auto;
  display: block;
}
.homepage .site-footer .footer-badge {
  max-height: 1.1rem;
  height: auto;
  width: auto;
  display: block;
}

/* Links */
.homepage .site-footer a:not(.btn) {
  font-size: var(--txt-sm) !important;
  color: var(--bs-light) !important;
  text-decoration: none;
  white-space: nowrap;
}
.homepage .site-footer a:not(.btn):hover {
  text-decoration: underline;
}
.homepage .site-footer .btn {
  font-size: var(--txt-sm) !important;
  padding: 0.15rem 0.55rem !important;
  line-height: 1.4;
}

/* Attribution items — inline label+logo pairs */
.homepage .site-footer .footer-attr-item {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}

/* Language selector — label + native select inline, right-aligned */
/* The outer element is <form class="lang-select"> */
.homepage .site-footer .lang-select {
  display: inline-flex !important;
  align-items: center !important;
  margin: 0 !important;
  padding: 0 !important;
}
.homepage .site-footer .lang-select .form-group {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  gap: 0.4rem !important;
  margin: 0 !important;
}
/* Label inline, muted */
.homepage .site-footer .lang-select label {
  display: inline !important;
  font-size: var(--txt-sm) !important;
  color: #fff !important;
  opacity: 0.7;
  white-space: nowrap !important;
  margin: 0 !important;
  padding: 0 !important;
}
/* Hide the Select2 generated container; keep native <select> */
.homepage .site-footer .select2-container {
  display: none !important;
}
/* Show and style the native select with a visible dark fill */
.homepage .site-footer .lang-select select {
  display: inline-block !important;
  font-size: var(--txt-sm) !important;
  padding: 0.1rem 0.3rem !important;
  background: rgba(0,0,0,0.45) !important;
  color: #fff !important;
  border: 1px solid rgba(255,255,255,0.5) !important;
  border-radius: 0.25rem !important;
  cursor: pointer !important;
  width: auto !important;
  max-width: 9rem !important;
  appearance: auto !important;
  -webkit-appearance: auto !important;
}
.homepage .site-footer .lang-select select option {
  background: #222;
  color: #fff;
}

/* ── Narrow / portrait viewport fallback ────────────────────────────────
   When aspect ratio is below 4:3 (portrait tablets, mobile, narrow
   browser window), release the 100dvh lock so the page scrolls
   naturally. Only height/overflow is changed — no layout shifts.
   ──────────────────────────────────────────────────────────────────────── */
@media (max-aspect-ratio: 4/3) {
  body.homepage {
    height: auto !important;
    overflow: auto !important;
  }
  .hero-section {
    height: auto !important;
    min-height: 25vh;
  }
  .homepage .counter-row {
    height: auto !important;
  }
  .homepage .main {
    height: auto !important;
    flex-grow: 1 !important;   /* fill remaining height so no white gap */
    flex-shrink: 1 !important;
  }
  .homepage .site-footer {
    height: auto !important;
  }
  .homepage .site-footer .footer-grid {
    height: auto !important;
    grid-template-rows: auto !important;  /* 1fr needs definite height — reset to auto */
  }
}

/* Banner — uses background-image set via inline style from config */
.banner {
  position: relative;
  background-size: cover;
  background-position: center;
}

/* Navbar — primary-coloured background with white links */
.navbar {
  background-color: var(--bs-primary) !important;
}
.navbar .nav-link,
.navbar .navbar-brand,
.navbar-nav li a {
  color: #fff !important;
}
.navbar .nav-link:hover,
.navbar .navbar-brand:hover {
  color: rgba(255,255,255,0.8) !important;
  text-decoration: none;
}
.navbar .dropdown-menu {
  background-color: #fff !important;
}
.navbar .dropdown-menu li a {
  color: var(--bs-body-color) !important;
}

/* Page wrapper — thin primary accent line on top */
.wrapper {
  border-top: 3px solid var(--bs-primary);
}

/* Card/module backgrounds — white so they pop against the grey body */
.module,
.page-header,
aside,
.page-row {
  background-color: #fff !important;
}

/* ---- Homepage category pills ---- */
.theme-tag-pill {
  font-size: 0.875rem;
  padding: 0.4rem 1rem;
  transition: background-color 0.15s ease, transform 0.1s ease;
}
.theme-tag-pill:hover {
  transform: translateY(-1px);
}

/* ---- Product list items (search results) ---- */
.dataset-list-item {
  border-radius: 0.5rem;
  padding: 1rem 1.25rem !important;
  margin-bottom: 0.5rem;
  background-color: var(--bs-body-bg);
  border: 1px solid rgba(var(--bs-primary-rgb), 0.1) !important;
  transition: box-shadow 0.15s ease, border-color 0.15s ease;
  list-style: none;
}
.dataset-list-item:hover {
  box-shadow: 0 4px 16px rgba(var(--bs-primary-rgb), 0.12);
  border-color: rgba(var(--bs-primary-rgb), 0.3) !important;
}

/* Product icon in list */
.dataset-icon-col {
  width: 3rem;
  height: 3rem;
  border-radius: 0.5rem;
  background: rgba(var(--bs-primary-rgb), 0.08);
  margin-top: 0.25rem;
}
.dataset-icon {
  font-size: 1.5rem;
  color: var(--bs-primary);
}

/* Product title link */
.dataset-title-link {
  color: var(--bs-primary);
  font-weight: 600;
  font-size: 1.1rem;
  text-decoration: none;
}
.dataset-title-link:hover {
  text-decoration: underline;
  color: var(--bs-primary);
}

/* Organization badge */
.org-badge {
  display: inline-flex;
  align-items: center;
  font-size: 0.8rem;
  color: var(--bs-primary);
  background: rgba(var(--bs-primary-rgb), 0.08);
  border-radius: 2rem;
  padding: 0.15rem 0.65rem;
  text-decoration: none;
  font-weight: 500;
  border: 1px solid rgba(var(--bs-primary-rgb), 0.25);
}
.org-badge:hover {
  background: rgba(var(--bs-primary-rgb), 0.15);
  border-color: rgba(var(--bs-primary-rgb), 0.45);
}

/* Product notes in list (2-line clamp) */
.dataset-notes {
  font-size: 0.9rem;
  color: var(--bs-body-color);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.5;
}

/* Color-coded format badges */
.format-badge {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  padding: 0.25em 0.6em;
  text-decoration: none;
  border-radius: 0.3rem;
}
.format-csv            { background-color: #28a745; color: #fff; }
.format-pdf            { background-color: #dc3545; color: #fff; }
.format-md,
.format-markdown       { background-color: #6f42c1; color: #fff; }
.format-html           { background-color: #fd7e14; color: #fff; }
.format-json,
.format-application-ld-json,
.format-json-ld        { background-color: #17a2b8; color: #fff; }
.format-text-turtle,
.format-text-turtle--charset-utf-8,
.format-ttl            { background-color: #795548; color: #fff; }
.format-sparql         { background-color: #9c27b0; color: #fff; }
.format-xml            { background-color: #e91e63; color: #fff; }
.format-xlsx,
.format-xls            { background-color: #1d6f42; color: #fff; }
.format-badge:not([class*="format-"]) { background-color: #6c757d; color: #fff; }

/* ---- Product detail page ---- */
.dataset-detail-header {
  background: linear-gradient(135deg,
    rgba(var(--bs-primary-rgb), 0.06) 0%,
    rgba(var(--bs-success-rgb), 0.04) 100%);
  border-radius: 0.75rem;
  border: 1px solid rgba(var(--bs-primary-rgb), 0.12);
  padding: 1.5rem;
}
.dataset-detail-icon {
  width: 4rem;
  height: 4rem;
  border-radius: 0.75rem;
  background: rgba(var(--bs-primary-rgb), 0.1);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  color: var(--bs-primary);
}
.dataset-detail-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--bs-primary);
}

/* Section headings on detail page */
.section-heading {
  font-size: 1rem;
  font-weight: 600;
  color: var(--bs-primary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  border-bottom: 2px solid rgba(var(--bs-primary-rgb), 0.15);
  padding-bottom: 0.5rem;
  margin-bottom: 1rem;
}
.section-heading-sm {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--bs-primary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  border-bottom: 1px solid rgba(var(--bs-primary-rgb), 0.15);
  padding-bottom: 0.4rem;
  margin-bottom: 0.75rem;
}

/* Product files panel */
.resources-panel {
  background: rgba(var(--bs-primary-rgb), 0.03);
  border: 1px solid rgba(var(--bs-primary-rgb), 0.1);
  border-radius: 0.5rem;
  padding: 1.25rem;
}

/* Product details card */
.dataset-details-card {
  background: rgba(var(--bs-primary-rgb), 0.02);
  border: 1px solid rgba(var(--bs-primary-rgb), 0.08);
  border-radius: 0.5rem;
  padding: 1.25rem;
  margin-bottom: 1rem;
}

/* Utility: min-width-0 for flex children to allow text truncation */
.min-width-0 { min-width: 0; }

/* ---- Homepage tagline spacing ---- */
.ls-1 { letter-spacing: 0.05em; }

/* Counter row — white card strip between hero and tags */
.counter-row {
  background-color: #fff !important;
  box-shadow: 0 2px 12px rgba(var(--bs-primary-rgb), 0.08);
}
