/* Liberty Defense base styles: rules shared by every component.
   Values come from tokens.css. Enqueue after WordPress global styles. */
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; }
figure.wp-block-image { margin: 0; }
[class*="__media"] img { display: block; object-fit: cover; }

/* Eyebrow: the wide-tracked kicker above section titles. Tone follows the section background. */
.ld-eyebrow {
  margin: 0;
  font-family: var(--ld-font-brand);
  font-size: var(--ld-fs-eyebrow);
  font-weight: var(--ld-fw-semibold);
  letter-spacing: var(--ld-ls-eyebrow);
  text-transform: uppercase;
  color: var(--ld-blue-700);
}
.ld-is-dark .ld-eyebrow { color: var(--ld-ice); }

/* Arrow after a text link. The icon is a mask so it takes the link color. */
.ld-has-arrow a { display: inline-flex; align-items: center; gap: var(--ld-sp-8); }
.ld-has-arrow a::after {
  content: "";
  inline-size: var(--ld-size-16);
  block-size: var(--ld-size-16);
  flex: none;
  background: currentColor;
  -webkit-mask: url("../assets/icons/ld-icon-arrow-right.svg") center / contain no-repeat;
  mask: url("../assets/icons/ld-icon-arrow-right.svg") center / contain no-repeat;
}

/* Links */
a { color: var(--ld-link); text-underline-offset: var(--ld-sp-3); }
a:hover { color: var(--ld-link-hover); }
a:focus-visible { outline: var(--ld-border-2) solid var(--ld-focus); outline-offset: var(--ld-sp-2); }
.ld-is-dark a:not(.wp-block-button__link) { color: var(--ld-ice); }
.ld-is-dark a:not(.wp-block-button__link):hover { color: var(--ld-white); }
.ld-is-dark a:focus-visible { outline-color: var(--ld-focus-on-dark); }

/* Buttons: defaults for any core Button. Component rules refine size and color. */
.wp-block-button__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--ld-size-48);
  padding: 0 var(--ld-sp-22);
  border: var(--ld-border-1) solid transparent;
  border-radius: var(--ld-radius-sm);
  background: var(--ld-btn-primary-bg);
  color: var(--ld-btn-primary-fg);
  font-family: var(--ld-font-brand);
  font-size: var(--ld-fs-15);
  font-weight: var(--ld-fw-semibold);
  text-decoration: none;
  transition: background-color var(--ld-dur) var(--ld-ease), color var(--ld-dur) var(--ld-ease), border-color var(--ld-dur) var(--ld-ease);
}
.wp-block-button__link:hover { background: var(--ld-btn-primary-bg-hover); color: var(--ld-btn-primary-fg); }
.wp-block-button__link:active { background: var(--ld-btn-primary-bg-active); }
.wp-block-button__link:focus-visible { outline: var(--ld-border-2) solid var(--ld-focus); outline-offset: var(--ld-sp-3); }
.wp-block-button__link[aria-disabled="true"], .wp-block-button__link:disabled { background: var(--ld-btn-disabled-bg); color: var(--ld-btn-disabled-fg); pointer-events: none; }
.is-style-outline .wp-block-button__link { background: transparent; border-color: var(--ld-navy); color: var(--ld-navy); }
.is-style-outline .wp-block-button__link:hover { background: var(--ld-navy); color: var(--ld-white); }
.ld-is-dark .wp-block-button__link { background: var(--ld-btn-dark-bg); color: var(--ld-btn-dark-fg); }
.ld-is-dark .wp-block-button__link:hover { background: var(--ld-btn-dark-bg-hover); }
.ld-is-dark .is-style-outline .wp-block-button__link { background: transparent; border-color: var(--ld-ice-a600); color: var(--ld-white); }
.ld-is-dark .wp-block-button__link:focus-visible { outline-color: var(--ld-white); }

/* Skip link */
.ld-skip-link { position: absolute; inset-inline-start: var(--ld-sp-8); inset-block-start: calc(-1 * var(--ld-size-52)); z-index: 1000; padding: var(--ld-sp-8) var(--ld-sp-12); background: var(--ld-white); color: var(--ld-navy); }
.ld-skip-link:focus { inset-block-start: var(--ld-sp-8); }

/* Anchors land below the sticky header */
html { scroll-padding-top: var(--ld-header-h); }

/* Visually hidden text for screen readers */
.ld-visually-hidden { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

/* Dynamic blocks inside components */
.wp-block-post-excerpt__excerpt { margin: 0; }
.wp-block-post-template { list-style: none; margin: 0; padding: 0; }
.wp-block-post-featured-image { margin: 0; overflow: hidden; }
.wp-block-post-featured-image img { inline-size: 100%; block-size: 100%; object-fit: cover; }
.wp-block-post-terms a { color: inherit; text-decoration: none; }
.ld-meta-pair { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--ld-sp-6); }
.ld-meta-pair > * { margin: 0; }
.ld-meta-pair > * + *::before { content: "· "; }
.ld-meta-pair > :empty { display: none; }
.is-style-link .wp-block-button__link { min-height: 0; padding: 0; border: 0; background: none; color: var(--ld-link); font-weight: var(--ld-fw-bold); text-decoration: underline; text-underline-offset: var(--ld-sp-4); }
.is-style-link .wp-block-button__link:hover { background: none; color: var(--ld-link-hover); }

/* Filter buttons (ld-filter.js builds them; hidden without JavaScript) */
.ld-filter { display: flex; flex-wrap: wrap; gap: var(--ld-sp-6); }
.ld-filter:empty { display: none; }
.ld-filter__button { min-height: var(--ld-size-40); padding: 0 var(--ld-sp-14); border: var(--ld-border-1) solid var(--ld-grey-300); border-radius: var(--ld-radius-sm); background: var(--ld-white); color: var(--ld-navy); font: var(--ld-fw-semibold) var(--ld-fs-small)/1 var(--ld-font-brand); cursor: pointer; }
.ld-filter__button[aria-pressed="true"] { border-color: var(--ld-navy); background: var(--ld-navy); color: var(--ld-white); }
.ld-filter__button:focus-visible { outline: var(--ld-border-2) solid var(--ld-focus); outline-offset: var(--ld-sp-2); }
.ld-filter-empty { display: none; }
.ld-filter-empty.is-visible { display: block; }
[data-ld-filter-hidden] { display: none !important; }

/* Pagination */
.ld-pagination { margin-block-start: var(--ld-sp-32); gap: var(--ld-sp-8); font-weight: var(--ld-fw-semibold); }
.ld-pagination a, .ld-pagination .current { display: inline-flex; align-items: center; justify-content: center; min-inline-size: var(--ld-size-40); min-block-size: var(--ld-size-40); border: var(--ld-border-1) solid var(--ld-grey-300); border-radius: var(--ld-radius-sm); color: var(--ld-navy); text-decoration: none; }
.ld-pagination .current { border-color: var(--ld-navy); background: var(--ld-navy); color: var(--ld-white); }

/* Disclosure (ld-accordion.js): without JavaScript every answer shows */
.ld-accordion__button { display: flex; inline-size: 100%; align-items: center; justify-content: space-between; gap: var(--ld-sp-16); padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: start; cursor: pointer; }
.ld-accordion__button::after { content: "+"; flex: none; font-size: var(--ld-fs-h3); line-height: 1; color: var(--ld-blue-700); }
.ld-accordion__button[aria-expanded="true"]::after { content: "−"; }
.ld-accordion__button:focus-visible { outline: var(--ld-border-2) solid var(--ld-focus); outline-offset: var(--ld-sp-4); }
.ld-accordion__panel[hidden] { display: none; }

/* Tabs (ld-tabs.js): without JavaScript each panel shows under its heading */
.ld-tabs__list { display: flex; flex-wrap: wrap; gap: var(--ld-sp-6); margin-block-end: var(--ld-sp-24); }
.ld-tabs__tab { min-height: var(--ld-size-40); padding: 0 var(--ld-sp-16); border: var(--ld-border-1) solid var(--ld-grey-300); border-radius: var(--ld-radius-sm); background: var(--ld-white); color: var(--ld-navy); font: var(--ld-fw-semibold) var(--ld-fs-small)/1 var(--ld-font-brand); cursor: pointer; }
.ld-tabs__tab[aria-selected="true"] { border-color: var(--ld-navy); background: var(--ld-navy); color: var(--ld-white); }
.ld-tabs__tab:focus-visible { outline: var(--ld-border-2) solid var(--ld-focus); outline-offset: var(--ld-sp-2); }
.ld-tabs.is-ready .ld-tabs__heading { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); }

/* Configuration row highlight on arrival (ld-anchors.js) */
[id$="-configuration"] { transition: background-color var(--ld-dur-highlight) ease; }
[id$="-configuration"].is-arrived { background-color: var(--ld-bright-blue-a120); }

/* Linked titles in listings keep the title color; the card's stretched link covers the card */
.wp-block-post-title a { color: inherit; text-decoration: none; }
.wp-block-post-title a:hover { text-decoration: underline; }
