/* --------------------------------------------------------------------------
   Header & Footer Builder (src/lib/site-regions.ts)

   Loaded only where a published header or footer layout has a setting that
   needs it, so a site whose header and footer are untouched never loads this
   file — and a header or footer without settings has none of these classes.
   Every rule is switched on by a class the setting adds; the original
   header, footer, menu, phone menu and dropdowns are otherwise the same
   elements, styled by site.css and driven by site.js, as always.
   -------------------------------------------------------------------------- */

/* ---- The header inside Background & Effects / Layout & Style ------------
   section-background.css gives a framed section position: relative, which
   would stop the header staying at the top. It keeps its own. */
.cmsbg.cmsbg > .siteheader:not(.siteheader--static),
.cmsst.cmsst > .siteheader:not(.siteheader--static) { position: sticky; }
/* A video or slideshow behind it: the frame is the box that stays at the top. */
.cmsbg.cmsbg--media:has(> .siteheader:not(.siteheader--static)) { position: sticky; top: 0; z-index: 80; }

/* ---- Top bar ---------------------------------------------------------------- */
.topbar--center { justify-content: center; }
.topbar--start { justify-content: flex-start; }
.topbar--end { justify-content: flex-end; }
@media (max-width: 560px) {
  .topbar .topbar__group.topbar__group--loc > span:last-child { display: inline; }
}

/* ---- Main header -------------------------------------------------------- */
.siteheader--static { position: relative; }
.siteheader--noborder { border-bottom-color: transparent; }
.siteheader--solid { background: #fff; -webkit-backdrop-filter: none; backdrop-filter: none; }
.siteheader--clear { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
.siteheader--full .siteheader__inner { max-width: none; }
.siteheader--pad .siteheader__inner { padding-top: var(--hdr-pad); padding-bottom: var(--hdr-pad); }
.siteheader--logoh .siteheader__logo img { height: var(--hdr-logo-h); }
.siteheader--menusize .nav { font-size: calc(clamp(9.5px, .85vw, 11px) * var(--hdr-menu-size)); }
.siteheader--menucolor .nav > .nav__link,
.siteheader--menucolor .nav__item > .nav__link { color: var(--hdr-menu-color); }
.siteheader--menucolor .nav__caret { border-color: var(--hdr-menu-color); }
.siteheader--menuhover .nav > .nav__link:hover,
.siteheader--menuhover .nav__item > .nav__link:hover { color: var(--hdr-menu-hover); }

/* The logo the editor chose: one picture (the animated mark keeps its still for reduced motion). */
.siteheader__logo-after { display: contents; }

/* Arrangements — wide screens only; tablets and phones keep the site's own layout and menu. */
@media (min-width: 1201px) {
  .siteheader--right .siteheader__inner { justify-content: flex-start; }
  .siteheader--right .nav { margin-left: auto; }
  .siteheader--center .nav { flex: 1 1 auto; justify-content: center; }
  .siteheader--stacked .siteheader__inner { justify-content: center; }
  .siteheader--stacked .siteheader__logo { flex: 0 0 100%; display: flex; justify-content: center; }
}

/* "Menu" beside the phone menu button. */
.siteheader--menulabel .navtoggle { width: auto; padding: 0 12px; flex-direction: row; gap: 8px; }
.navtoggle__bars { display: flex; flex-direction: column; gap: 4px; }
.navtoggle__label { font-size: 10.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ink); }

@media (max-width: 1200px) {
  .siteheader--menusize .nav { font-size: calc(12px * var(--hdr-menu-size)); }
}
@media (max-width: 640px) {
  .siteheader--padm .siteheader__inner { padding-top: var(--hdr-padm); padding-bottom: var(--hdr-padm); }
  .siteheader--logohm .siteheader__logo img { height: var(--hdr-logo-hm); }
  .siteheader--cta-hide .siteheader__cta { display: none; }
}
@media (max-width: 560px) {
  .siteheader--cta-inline .siteheader__inner { grid-template-columns: 1fr auto auto; }
  .siteheader--cta-inline .siteheader__cta { grid-column: 2; grid-row: 1; justify-self: end; padding-inline: 14px; }
  .siteheader--cta-inline .navtoggle { grid-column: 3; }
  .siteheader--cta-inline .nav,
  .siteheader--cta-hide .nav { grid-row: 2; }
}

/* Over the top of the page. cms-chrome.js lays the header over the page's
   first section and marks it .is-over while the page is at the top and the
   phone menu is closed; without the script it is the frosted header. */
.siteheader--over { transition: background-color .25s ease, border-color .25s ease; }
.siteheader--over.is-over { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; border-bottom-color: transparent; }
.siteheader--over.is-over .nav > .nav__link,
.siteheader--over.is-over .nav__item > .nav__link { color: #fff; }
.siteheader--over.is-over .nav__caret { border-color: #fff; }
.siteheader--over.is-over .navtoggle { background: transparent; border-color: rgba(255, 255, 255, .6); }
.siteheader--over.is-over .navtoggle span { background: #fff; }
.siteheader--over.is-over .navtoggle__label { color: #fff; }
.siteheader--over.is-over .siteheader__cta.btn--ghost { color: #fff; border-color: #fff; }
.siteheader--over:not(.is-over) .siteheader__logo-over { display: none; }
.siteheader--over.is-over .siteheader__logo-after { display: none; }
@media (prefers-reduced-motion: reduce) { .siteheader--over { transition: none; } }

/* ---- Footer -------------------------------------------------------------- */
.sitefooter--custom .sitefooter__cols { grid-template-columns: var(--ftr-cols); }
.sitefooter--pad { padding-top: var(--ftr-pad); }
.sitefooter--nolegal { padding-bottom: var(--ftr-pad, 72px); }
.sitefooter--logoh .sitefooter__logo { height: var(--ftr-logo-h); }
@media (max-width: 1180px) {
  .sitefooter--custom .sitefooter__cols { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
  .sitefooter--custom .sitefooter__cols > div:first-child { grid-column: auto; }
  .sitefooter--custom.sitefooter--brand .sitefooter__cols > div:first-child { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .sitefooter--logohm .sitefooter__logo { height: var(--ftr-logo-hm); }
}

/* A footer with added sections: one <footer>, with the footer's own deep ground. */
.cmsregion--footer { display: block; background: var(--ink-deep); color: #fff; }
:where(.cmsregion--footer .cmsfx).section--ink { background-color: var(--ink-deep); }

/* ---- Site elements in a header or footer Layout section ------------------ */
.cmsfx__menu ul { list-style: none; margin: 0; padding: 0; }
.cmsfx__menu a { color: inherit; }
.cmsfx__menu a:hover, .cmsfx__menu a[aria-current="page"] { color: var(--brand); }
.section--ink .cmsfx__menu a:hover, .section--ink .cmsfx__menu a[aria-current="page"] { color: #fff; text-decoration: underline; text-underline-offset: 4px; }
.cmsfx__menu--row > ul {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px clamp(14px, 1.6vw, 28px);
  font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
}
.cmsfx__el--align.cmsfx__menu--row > ul { justify-content: var(--fx-justify, flex-start); }
.cmsfx__menu--column > ul, .cmsfx__menugroup > ul { display: flex; flex-direction: column; gap: 12px; font-size: 13px; }
.cmsfx__menu--row .cmsfx__menugroup { display: contents; }
.cmsfx__menu--row .cmsfx__menugroup > .sitefooter__head { display: none; }
.cmsfx__menu--row .cmsfx__menugroup > ul { flex-direction: row; flex-wrap: wrap; gap: 8px 24px; }
.cmsfx__menu--column { display: flex; flex-direction: column; gap: 28px; }
.cmsfx__menu--row:has(> .cmsfx__menugroup) { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.cmsfx__menu .sitefooter__head { margin-bottom: 16px; }
:not(.section--ink) > * > .cmsfx__menu .sitefooter__head { color: inherit; }
.cmsfx__menuparent { position: relative; }
.cmsfx__menuparent > details > summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 7px; }
.cmsfx__menuparent > details > summary::-webkit-details-marker { display: none; }
.cmsfx__menuparent > details > summary::after {
  content: ""; width: 5px; height: 5px; border-right: 1.5px solid var(--brand); border-bottom: 1.5px solid var(--brand);
  transform: rotate(45deg); margin-top: -3px;
}
.cmsfx__menu--row .cmsfx__menuparent > details > ul {
  position: absolute; top: calc(100% + 8px); left: -14px; z-index: 30; min-width: 220px; padding: 8px 0;
  background: var(--ink); box-shadow: 0 24px 60px rgba(0, 0, 0, .28); display: flex; flex-direction: column;
}
.cmsfx__menu--row .cmsfx__menuparent > details > ul a { display: block; padding: 11px 18px; color: rgba(255, 255, 255, .82); font-size: 10.5px; letter-spacing: .16em; }
.cmsfx__menu--row .cmsfx__menuparent > details > ul a:hover { background: var(--brand); color: #fff; text-decoration: none; }
.cmsfx__menuhead { display: block; font-weight: 700; margin-bottom: 10px; }
.cmsfx__menu--column .cmsfx__menuparent > ul { margin: 10px 0 0 14px; display: flex; flex-direction: column; gap: 10px; }

.cmsfx__social { display: flex; flex-wrap: wrap; gap: 10px; }
.cmsfx__el--align.cmsfx__social { justify-content: var(--fx-justify, flex-start); }
.cmsfx__socialicon { display: inline-flex; align-items: center; color: inherit; padding: 6px; margin: -6px 0; }
.cmsfx__socialicon svg { width: 18px; height: 18px; fill: currentColor; }
.cmsfx__socialicon:hover { color: var(--brand); }
.section--ink .cmsfx__socialicon:hover { color: #fff; opacity: .8; }
/* Boxed icons are drawn for the dark footer; on a light ground they take the page's ink. */
.section:not(.section--ink) .cmsfx__social--boxed .social__link { border-color: var(--line); color: var(--ink); }
.section:not(.section--ink) .cmsfx__social--boxed .social__link:hover { color: #fff; }

.cmsfx__contact { font-style: normal; display: flex; flex-direction: column; gap: 10px; font-size: 13px; line-height: 1.7; }
.cmsfx__contact a { color: inherit; }
.cmsfx__contact a:hover { text-decoration: underline; text-underline-offset: 3px; }
.cmsfx__hours { font-size: 13px; line-height: 1.6; }
.cmsfx__hourshead { font-size: 10px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; margin-bottom: 14px; }
.cmsfx__hours dl { display: grid; gap: 8px; margin: 0; }
.cmsfx__hours dl > div { display: flex; justify-content: space-between; gap: 18px; }
.cmsfx__hours dd { margin: 0; font-weight: 600; }
.cmsfx__logo img { display: inline-block; height: var(--fx-logo-h, 72px); width: auto; vertical-align: middle; }
.cmsfx__logo a { display: inline-block; }
.cmsfx__logo .cmsfx__logostill { display: none; }
@media (prefers-reduced-motion: reduce) {
  .cmsfx__logo--animated img:first-child { display: none; }
  .cmsfx__logo--animated .cmsfx__logostill { display: inline-block; }
}
.cmsfx__copyright { font-size: 12px; line-height: 1.7; opacity: .78; }
