/* Privacy UI (newsroom-core Privacy.php, D-114): footer links, click-to-load embeds, the consent banner (built-in or
   Complianz). Uses the theme's colour tokens (--nr-*, with neutral fallbacks), currentColor and inherit so it fits every
   design profile. */
.nr-footer-bottom .nr-privacy-links { font-size: .8125rem; margin: .25rem 0; }
.nr-embed { border: 1px solid currentColor; border-radius: 6px; padding: 1rem; margin: 1.5rem 0; }
.nr-embed-notice p { margin: 0 0 .75rem; font-size: .9375rem; }
.nr-embed-notice p:last-child { margin-bottom: 0; }
.nr-embed-load, .nr-choices .nr-button { font: inherit; cursor: pointer; padding: .5rem 1rem; border: 1px solid currentColor; border-radius: 4px; background: transparent; color: inherit; }
.nr-placeholder { background: #fff3bf; color: #3d3000; padding: 0 .2em; }
.nr-table-scroll { overflow-x: auto; }
.nr-cookie-table { border-collapse: collapse; width: 100%; font-size: .875rem; }
.nr-cookie-table th, .nr-cookie-table td { border: 1px solid rgba(127, 127, 127, .4); padding: .4rem .5rem; text-align: left; vertical-align: top; }
/* D-225: the consent banner is a compact bar along the bottom of the screen in the site's colours (the theme's --nr-*
   tokens, so it follows the brand and the reader's light or dark mode): one short row of text and three buttons of equal
   weight beside it on wide screens, a few lines and a row of buttons on phones. What is asked, the equal choices and what
   stays blocked until consent are unchanged (Privacy.php, newsroom.js). */
.nr-consent { position: fixed; z-index: 99999; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: .35rem 1.5rem;
  align-items: center; max-height: min(85vh, 36rem); overflow-y: auto; box-sizing: border-box;
  padding: .65rem max(1rem, calc((100% - var(--nr-container, 1200px)) / 2)) calc(.7rem + env(safe-area-inset-bottom, 0px));
  background: var(--nr-bg, #fff); color: var(--nr-text, #1a1a1a); border-top: 3px solid var(--nr-accent, #767676);
  box-shadow: 0 -4px 18px rgba(0, 0, 0, .14); font-size: .8125rem; line-height: 1.45; }
.nr-consent[hidden], .nr-consent [hidden] { display: none; }
.nr-consent h2 { font-size: .9375rem; line-height: 1.3; margin: 0; }
.nr-consent p { margin: 0; }
.nr-consent a { color: var(--nr-link, inherit); }
.nr-consent fieldset { border: 0; padding: 0; margin: .25rem 0; display: grid; gap: .25rem; }
.nr-consent-buttons { display: flex; flex-wrap: wrap; gap: .5rem; }
/* Accept, Reject and Preferences look the same: no nudging (EDPB cookie banner taskforce report, 2023). */
.nr-consent-buttons button { flex: 1 1 auto; min-width: min(6.5rem, 100%); min-height: 44px; font: inherit; font-weight: 700; font-size: .875rem; padding: .45rem .9rem; text-wrap: balance; overflow-wrap: break-word;
  border: 2px solid var(--nr-primary, #1a1a1a); border-radius: var(--wp--custom--radius--small, 4px); background: var(--nr-primary, #1a1a1a);
  color: var(--nr-on-primary, #fff); cursor: pointer; }
.nr-consent-buttons button:hover { background: color-mix(in srgb, var(--nr-primary, #1a1a1a) 84%, #000); }
.nr-consent-buttons button:focus-visible, .nr-consent a:focus-visible, .nr-embed-load:focus-visible { outline: 3px solid var(--nr-accent-text, #005fcc); outline-offset: 2px; }
@media (min-width: 768px) {
  .nr-consent { grid-template-columns: minmax(0, 1fr) auto; }
  .nr-consent > :not(.nr-consent-buttons) { grid-column: 1; }
  .nr-consent-buttons { grid-column: 2; grid-row: 1 / span 4; flex-wrap: nowrap; }
}

/* D-225: the same bar for Complianz's banner. Its own colours and sizes are custom properties (banner-*.css), set here
   from the theme's tokens; every button gets the same colours (no nudging, as Privacy.php also stores them). The ID in
   the selector outranks Complianz's stylesheet whatever the load order. */
#cmplz-cookiebanner-container .cmplz-cookiebanner {
  --cmplz_banner_background_color: var(--nr-bg, #fff); --cmplz_banner_border_color: var(--nr-accent, #767676); --cmplz_text_color: var(--nr-text, #1a1a1a);
  --cmplz_hyperlink_color: var(--nr-link, #1a1a1a);
  --cmplz_button_accept_background_color: var(--nr-primary, #1a1a1a); --cmplz_button_accept_border_color: var(--nr-primary, #1a1a1a); --cmplz_button_accept_text_color: var(--nr-on-primary, #fff);
  --cmplz_button_deny_background_color: var(--nr-primary, #1a1a1a); --cmplz_button_deny_border_color: var(--nr-primary, #1a1a1a); --cmplz_button_deny_text_color: var(--nr-on-primary, #fff);
  --cmplz_button_settings_background_color: var(--nr-primary, #1a1a1a); --cmplz_button_settings_border_color: var(--nr-primary, #1a1a1a); --cmplz_button_settings_text_color: var(--nr-on-primary, #fff);
  --cmplz_slider_active_color: var(--nr-primary, #1a1a1a); --cmplz_button_border_radius: var(--wp--custom--radius--small, 4px);
  --cmplz_category_header_always_active_color: var(--nr-accent-text, #1a1a1a);
  --cmplz_title_font_size: .9375rem; --cmplz_text_font_size: .8125rem; --cmplz_link_font_size: .8125rem; --cmplz_button_font_size: .875rem;
  --cmplz_category_body_font_size: .8125rem; --cmplz_category_header_title_font_size: .875rem; --cmplz_text_line_height: 1.45;
  left: 0; right: 0; top: auto; bottom: 0; transform: none; width: auto; min-width: 0; max-width: none; margin: 0; max-height: min(85vh, 36rem);
  grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "body close" "buttons buttons" "docs docs"; gap: .4rem 1rem; align-items: center;
  padding: .65rem max(1rem, calc((100% - var(--nr-container, 1200px)) / 2)) calc(.7rem + env(safe-area-inset-bottom, 0px));
  border-width: 3px 0 0; border-style: solid; border-radius: 0; box-shadow: 0 -4px 18px rgba(0, 0, 0, .14);
  font-family: var(--wp--preset--font-family--body, inherit); }
#cmplz-cookiebanner-container .cmplz-cookiebanner.cmplz-show:hover { box-shadow: 0 -4px 18px rgba(0, 0, 0, .14); }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-header { display: contents; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-logo,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-divider { display: none; }
/* Phones: the title stays the dialog's name (aria-labelledby) but is not drawn, so the text starts beside the close button. */
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-close { grid-area: close; display: grid; place-items: center; width: 2.25rem; height: 2.25rem;
  margin: -.25rem 0 0 0; align-self: start; border-radius: var(--wp--custom--radius--small, 4px); }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-close svg { width: 1rem; height: 1rem; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-body { grid-area: body; min-width: 0; width: auto; max-height: 50vh; }
#cmplz-cookiebanner-container .cmplz-cookiebanner :is(.cmplz-message, .cmplz-categories) { width: auto; margin: 0; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-categories .cmplz-category { background: color-mix(in srgb, var(--nr-text, #1a1a1a) 5%, transparent); }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons { grid-area: buttons; flex-direction: row; flex-wrap: wrap; gap: .5rem; }
/* Each button is at least as wide as its words and wraps rather than spilling over its edge ("View preferences" ran past
   its button on phones, owner 2026-10-19); the row still shares the width evenly when the words fit. */
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons .cmplz-btn { flex: 1 1 auto; width: auto; min-width: min(6.5rem, 100%); min-height: 44px; height: auto;
  padding: .45rem .6rem; font-weight: 700; line-height: 1.2; white-space: normal; text-wrap: balance; overflow-wrap: break-word; text-align: center; border-width: 2px; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons .cmplz-btn:hover { filter: brightness(.9); }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-documents { grid-area: docs; justify-content: flex-start; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-documents ul { justify-content: flex-start; flex-wrap: wrap; gap: .25rem 1rem; }
#cmplz-cookiebanner-container .cmplz-cookiebanner :is(.cmplz-btn, .cmplz-close, .cmplz-link, .cmplz-category-toggle):focus-visible {
  outline: 3px solid var(--nr-accent-text, #005fcc); outline-offset: 2px; }
@media (min-width: 768px) {
  #cmplz-cookiebanner-container .cmplz-cookiebanner { grid-template-columns: minmax(0, 1fr) auto auto; gap: .35rem 1.5rem;
    grid-template-areas: "title buttons close" "body buttons close" "docs buttons close"; }
  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-title { position: static; width: auto; height: auto; overflow: visible; clip: auto; white-space: normal;
    display: block; grid-area: title; justify-self: start; font-weight: 700; margin: 0; }
  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons { flex-wrap: nowrap; align-self: center; }
  /* One line per label beside the text: the buttons' column is sized from them, so they never spill into the close
     button's column (a percentage minimum, as on phones, is ignored while that column is sized; owner, 2026-10-19). */
  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons .cmplz-btn { flex: 0 0 auto; min-width: 6.5rem; white-space: nowrap; }
  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-close { align-self: start; }
}
/* Dark mode (the theme's data-nr-mode, or the system setting): a light edge keeps a dark brand colour's buttons visible. */
:root[data-nr-mode="dark"] :is(.nr-consent-buttons button, #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons .cmplz-btn) {
  border-color: color-mix(in srgb, var(--nr-on-primary, #fff) 40%, var(--nr-primary, #1a1a1a)); }
@media (prefers-color-scheme: dark) {
  :root:not([data-nr-dark="off"]):not([data-nr-mode]) :is(.nr-consent-buttons button, #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons .cmplz-btn) {
    border-color: color-mix(in srgb, var(--nr-on-primary, #fff) 40%, var(--nr-primary, #1a1a1a)); }
}
/* Ad placements wait hidden for marketing consent (Ads.php, D-138): the theme's display rule must not show them early. */
.nr-ad[hidden], .nr-ad-anchor[hidden] { display: none !important; }
