/*
 * FinBedrock site header and footer (T-92). Loads on every page after design-tokens.css;
 * self-contained, because pages outside the design system don't load design-components.css.
 * The selectors carry two classes so Kadence's global a / button / h2 rules don't win.
 */
.fbds-shell-header, .fbds-shell-footer, .fbds-shell-drawer { font-family: var(--fb-font-sans); line-height: var(--fb-leading-body); }
.fbds-shell-header *, .fbds-shell-footer *, .fbds-shell-drawer * { box-sizing: border-box; }
html { scroll-padding-top: 5.5rem; } /* anchors land below the sticky header */

/* Header */
.fbds-shell-header { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 100; background: var(--fb-color-surface); border-bottom: 1px solid var(--fb-color-border); }
.fbds-shell-header .fbds-shell-header__inner { display: flex; align-items: center; gap: var(--fb-space-3); width: min(100%, var(--fb-layout-wide)); min-height: 4.5rem; margin-inline: auto; padding-inline: var(--fb-gutter); }
.fbds-shell-header .fbds-shell-logo { display: inline-flex; flex: none; color: var(--fb-color-heading); font-weight: var(--fb-weight-bold); text-decoration: none; }
.fbds-shell-header .fbds-shell-logo img { display: block; width: 44px; height: 44px; border-radius: var(--fb-radius-control); }
.fbds-shell-header .fbds-shell-nav { margin-inline-start: auto; }
.fbds-shell-header .fbds-shell-nav ul, .fbds-shell-drawer ul { display: flex; gap: var(--fb-space-1); margin: 0; padding: 0; list-style: none; }
.fbds-shell-header .fbds-shell-nav a { display: inline-flex; align-items: center; min-height: 44px; padding-inline: var(--fb-space-3); border-radius: var(--fb-radius-control); color: var(--fb-color-text); font-size: 0.9375rem; font-weight: var(--fb-weight-medium); text-decoration: none; transition: background-color var(--fb-duration-fast) var(--fb-ease), color var(--fb-duration-fast) var(--fb-ease); }
.fbds-shell-header .fbds-shell-nav a:hover { background: var(--fb-color-soft); color: var(--fb-color-action); }
.fbds-shell-header .fbds-shell-nav a[aria-current] { color: var(--fb-color-action); box-shadow: inset 0 -2px 0 var(--fb-color-action); border-radius: var(--fb-radius-control) var(--fb-radius-control) 0 0; }
.fbds-shell-header .fbds-shell-nav a:active { background: var(--fb-color-soft); color: var(--fb-color-action-pressed); }
.fbds-shell-header .fbds-shell-cta, .fbds-shell-drawer .fbds-shell-cta { display: inline-flex; align-items: center; justify-content: center; flex: none; gap: var(--fb-space-2); min-height: 44px; padding: 0.5rem 1rem; border-radius: var(--fb-radius-control); background: var(--fb-color-action); color: var(--fb-color-on-action); font-size: var(--fb-text-md); font-weight: var(--fb-weight-semibold); line-height: 1.3; text-decoration: none; transition: background-color var(--fb-duration-fast) var(--fb-ease), box-shadow var(--fb-duration-fast) var(--fb-ease); }
.fbds-shell-header .fbds-shell-cta:hover, .fbds-shell-drawer .fbds-shell-cta:hover { background: var(--fb-color-action-hover); color: var(--fb-color-on-action); box-shadow: var(--fb-shadow-btn-hover); }
.fbds-shell-drawer .fbds-shell-cta--block { width: 100%; min-height: 52px; }
.fbds-shell-header .fbds-shell-burger, .fbds-shell-drawer .fbds-shell-close { display: inline-grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: var(--fb-radius-control); background: transparent; color: var(--fb-color-heading); box-shadow: none; cursor: pointer; }
.fbds-shell-header .fbds-shell-burger { display: none; }
.fbds-shell-header .fbds-shell-burger:hover, .fbds-shell-drawer .fbds-shell-close:hover { background: var(--fb-color-soft); color: var(--fb-color-action); }
.fbds-shell-header :is(a, button):focus-visible, .fbds-shell-drawer :is(a, button):focus-visible { outline: 3px solid var(--fb-color-focus); outline-offset: 2px; }

/* Phone menu */
.fbds-shell-drawer { position: fixed; inset: 0 0 0 auto; width: min(21rem, 86vw); height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: var(--fb-color-surface); color: var(--fb-color-text); box-shadow: -8px 0 32px rgb(3 19 57 / 20%); }
.fbds-shell-drawer::backdrop { background: rgb(3 19 57 / 50%); }
/* The panel slides in from the right edge and back out (site-shell.js waits 200 ms before closing). */
.fbds-shell-drawer[open] { animation: fbds-shell-in 260ms var(--fb-ease); }
.fbds-shell-drawer[open]::backdrop { animation: fbds-shell-fade 260ms linear; }
.fbds-shell-drawer.is-closing { animation: fbds-shell-out 200ms ease-in forwards; }
.fbds-shell-drawer.is-closing::backdrop { animation: fbds-shell-fade 200ms linear reverse forwards; }
@keyframes fbds-shell-in { from { transform: translateX(100%); } to { transform: translateX(0); } }
@keyframes fbds-shell-out { from { transform: translateX(0); } to { transform: translateX(100%); } }
@keyframes fbds-shell-fade { from { opacity: 0; } to { opacity: 1; } }
.fbds-shell-drawer .fbds-shell-drawer__inner { display: grid; align-content: start; gap: var(--fb-space-4); min-height: 100%; padding: var(--fb-space-4) var(--fb-space-5) calc(var(--fb-space-5) + env(safe-area-inset-bottom, 0px)); }
.fbds-shell-drawer .fbds-shell-close { justify-self: end; }
.fbds-shell-drawer ul { flex-direction: column; gap: 0; }
.fbds-shell-drawer li + li { border-top: 1px solid var(--fb-color-border); }
.fbds-shell-drawer li a { display: flex; align-items: center; min-height: 52px; color: var(--fb-color-heading); font-size: var(--fb-text-body); font-weight: var(--fb-weight-medium); text-decoration: none; }
.fbds-shell-drawer li a:hover, .fbds-shell-drawer li a[aria-current] { color: var(--fb-color-action); }
.fbds-shell-drawer li a[aria-current] { font-weight: var(--fb-weight-semibold); }
html:has(.fbds-shell-drawer[open]) { overflow: hidden; }

/* Footer */
.fbds-shell-footer { background: var(--fb-color-result-bg); color: var(--fb-color-on-navy-muted); }
.fbds-shell-footer .fbds-shell-footer__inner { display: grid; gap: var(--fb-space-8); width: min(100%, var(--fb-layout-wide)); margin-inline: auto; padding: var(--fb-space-12) var(--fb-gutter) var(--fb-space-8); }
.fbds-shell-footer .fbds-shell-footer__cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--fb-space-8); }
.fbds-shell-footer .fbds-shell-footer__col h2 { margin: 0 0 var(--fb-space-3); color: var(--fb-color-on-result); font-size: var(--fb-text-md); font-weight: var(--fb-weight-semibold); line-height: 1.3; letter-spacing: 0; }
.fbds-shell-footer ul { display: grid; gap: var(--fb-space-1); margin: 0; padding: 0; list-style: none; }
.fbds-shell-footer li { margin: 0; }
.fbds-shell-footer li a { display: inline-block; padding-block: var(--fb-space-1); color: var(--fb-color-on-navy-muted); font-size: 0.9375rem; text-decoration: none; }
.fbds-shell-footer a:hover { color: var(--fb-color-on-result); text-decoration: underline; }
.fbds-shell-footer a:focus-visible { outline: 3px solid var(--fb-color-brand-sky); outline-offset: 2px; }
.fbds-shell-footer .fbds-shell-footer__bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--fb-space-4); padding-top: var(--fb-space-6); border-top: 1px solid rgb(190 210 236 / 25%); }
.fbds-shell-footer .fbds-shell-footer__legal { display: flex; flex-wrap: wrap; gap: var(--fb-space-1) var(--fb-space-4); margin: 0; font-size: var(--fb-text-sm); }
.fbds-shell-footer .fbds-shell-footer__legal a { color: var(--fb-color-on-navy-muted); text-decoration: underline; text-underline-offset: 0.2em; }
.fbds-shell-footer .fbds-shell-social { display: flex; gap: var(--fb-space-2); }
.fbds-shell-footer .fbds-shell-social__link { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: var(--fb-radius-control); color: var(--fb-color-on-navy-muted); }
.fbds-shell-footer .fbds-shell-social__link:hover { background: rgb(190 210 236 / 15%); color: var(--fb-color-on-result); }
.fbds-shell-footer .fbds-shell-social__link svg { width: 20px; height: 20px; }
.fbds-shell-footer .fbds-shell-footer__disclaimer { margin: 0; font-size: var(--fb-text-xs); line-height: 1.5; }

@media (max-width: 64rem) {
  .fbds-shell-header .fbds-shell-nav { display: none; }
  .fbds-shell-header .fbds-shell-cta { margin-inline-start: auto; }
  .fbds-shell-header .fbds-shell-burger { display: inline-grid; }
}
@media (max-width: 48rem) {
  .fbds-shell-header .fbds-shell-header__inner { min-height: 4rem; }
  .fbds-shell-footer .fbds-shell-footer__cols { grid-template-columns: 1fr; gap: var(--fb-space-6); }
}
@media (prefers-reduced-motion: reduce) {
  .fbds-shell-drawer[open], .fbds-shell-drawer[open]::backdrop, .fbds-shell-drawer.is-closing, .fbds-shell-drawer.is-closing::backdrop { animation: none; }
}

/* SearchWP Live Ajax Search dropdown (homepage, 404 and search card search). The plugin
   appends it to <body>; site-shell.js gives it .fb-ds-v01, so the tokens resolve.
   Moved from the Customizer's Additional CSS (Nov 2026), now on tokens. */
.searchwp-live-search-results { width: min(40rem, calc(100vw - 2rem)) !important; max-width: 40rem !important; margin-top: var(--fb-space-2) !important; border: 1px solid var(--fb-color-border) !important; border-radius: var(--fb-radius-control) !important; background: var(--fb-color-surface) !important; box-shadow: var(--fb-shadow-hover) !important; overflow: hidden !important; z-index: 999999 !important; font-family: var(--fb-font-sans); }
.searchwp-live-search-result { padding: 0 !important; border-bottom: 1px solid var(--fb-color-border) !important; background: var(--fb-color-surface) !important; }
.searchwp-live-search-result--title { margin: 0 !important; font-size: inherit !important; }
.searchwp-live-search-result:last-child { border-bottom: 0 !important; }
.searchwp-live-search-result a { display: block !important; padding: 0.8rem 1rem !important; color: var(--fb-color-heading) !important; font-size: var(--fb-text-sm) !important; font-weight: var(--fb-weight-semibold) !important; line-height: 1.35 !important; text-decoration: none !important; transition: background-color var(--fb-duration-fast) var(--fb-ease); }
.searchwp-live-search-result a:hover, .searchwp-live-search-result a:focus-visible { background: var(--fb-color-soft) !important; color: var(--fb-color-action) !important; }
.searchwp-live-search-results :is(img, .attachment-thumbnail, .searchwp-live-search-result--img, .searchwp-live-search-result--image) { display: none !important; }
.searchwp-live-search-result .searchwp-live-search-result--content { margin-left: 0 !important; padding-left: 0 !important; }
