/* Hallmark · component: shared site navigation and footer
 * genre: modern-minimal · tone: direct · theme: adaptive custom (landing-codex)
 * coral-light / blue-dark accent · homepage header + grouped feature-index footer
 * User-selected homepage navigation + compact workflow-hub link; no page redesign.
 * Existing tokens, logo and hierarchy. Native details work without JavaScript.
 * States: default, hover, focus-visible, active, current, expanded/collapsed.
 * Legal publication status is noninteractive; no loading/error/success state
 * applies to these ordinary navigation links. No animation or fake destinations.
 * Pre-emit critique: P5 H4 E5 S5 R5 V4 (user-selected family consistency).
 * QA: 162 responsive layout checks + 6 expanded-menu checks; editorial
 * links stay white and underlined, while footer links omit the underline.
 * Ten sampled text/surface pairs pass
 * contrast (minimum 5.08:1); native menu dismissal and focus verified.
 * Header and footer are statically rendered. */

.g-site-header, .g-site-footer { font-family: var(--g-sans); color: var(--g-text); line-height: 1.5; text-align: left; }
.g-site-header *, .g-site-footer * { box-sizing: border-box; }
.g-site-header a, .g-site-footer a { color: var(--g-text-2); text-decoration: none; white-space: nowrap; }
.g-site-header a:hover, .g-site-footer a:hover { color: var(--g-text); }
.g-site-header :is(a, summary):focus-visible, .g-site-footer :is(a, button):focus-visible { outline: 3px solid var(--fp-color-focus); outline-offset: 3px; }
.g-site-header :is(a, summary):active, .g-site-footer a:active { color: var(--theme-active-text); }
.g-site-header ul, .g-site-footer ul { list-style: none; padding: 0; margin: 0; }
.g-site-header p, .g-site-footer p { margin: 0; }
.g-site-header summary { cursor: pointer; list-style: none; }
.g-site-header summary::-webkit-details-marker { display: none; }
.g-site-header summary::marker { content: ""; }
.g-site-header details:not([open]) > :not(summary) { display: none; }
.g-site-header { position: fixed; inset: 0 0 auto; z-index: var(--fp-z-sticky, 200); background: var(--g-bg); border-bottom: 1px solid var(--g-border-soft); }
/* Explicitly reset the homepage's old global nav rule for both components. */
.g-site-header .gsn, .g-site-footer .gsf__index { position: static; inset: auto; z-index: auto; background: none; backdrop-filter: none; border: 0; transform: none; }
.g-site-header .gsn { max-width: 1080px; min-height: 60px; margin: 0 auto; padding: 0 32px; display: flex; align-items: center; gap: 28px; }
.g-site-header .gsn__brand { display: inline-flex; align-items: center; min-height: 44px; gap: 10px; font-size: 15px; font-weight: 700; color: var(--g-text); }
.gsn__brand svg { width: 26px; height: 26px; padding: 4px; flex-shrink: 0; }
.gsn__desktop { display: flex; align-items: center; gap: 22px; margin-left: 8px; font-size: 13.5px; }
.gsn__desktop > a, .gsn__features > summary { display: inline-flex; align-items: center; min-height: 44px; gap: 7px; color: var(--g-text-2); }
.gsn__features { position: relative; }
.g-site-header summary:hover, .gsn__features[open] > summary { color: var(--g-text); }
.gsn__caret { width: 7px; height: 7px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); margin-top: -3px; }
.g-site-header details[open] > summary > .gsn__caret { transform: rotate(225deg); margin-top: 3px; }
.gsn__dropdown { position: absolute; top: calc(100% + 8px); left: -16px; width: 600px; max-height: calc(100dvh - 84px); overflow-y: auto; overscroll-behavior: contain; background: var(--g-card); border: 1px solid var(--g-border); border-radius: 14px; padding: 12px; }
.g-site-header .gsn__category { padding: 10px 11px 3px; font-family: var(--g-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--g-text-2); }
.gsn__group ul { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 14px; }
.g-site-header .gsn__group a { display: block; min-height: 44px; padding: 9px 11px; border-radius: 9px; white-space: normal; }
.gsn__group a:hover { background: var(--g-chip); }
.gsn__group b { display: block; font-size: 13px; font-weight: 600; color: var(--g-text); white-space: nowrap; }
.gsn__group small { display: block; font-size: 11.5px; color: var(--g-text-2); margin-top: 2px; line-height: 1.4; }
.g-site-header a[aria-current="page"]:not(.gsn__brand), .g-site-header a[aria-current="page"]:not(.gsn__brand) b { color: var(--g-link); text-decoration: underline; text-underline-offset: .2em; }
.g-site-header .gsn__cta { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin-left: auto; padding: 8px 14px; border-radius: 8px; background: var(--g-blue); color: var(--g-bg); font-size: 12px; font-weight: 700; }
.g-site-header .gsn__cta:hover, .g-site-header .gsn__cta:active { background: var(--fp-color-accent-strong); color: var(--fp-color-accent-ink); }
.gsn__mobile { display: none; margin-left: auto; }
.gsn__burger { width: 44px; height: 44px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; }
.gsn__burger span { display: block; width: 20px; height: 1.6px; background: var(--g-text); }
.gsn__mobile[open] > .gsn__burger span:first-child { transform: translateY(6.6px) rotate(45deg); }
.gsn__mobile[open] > .gsn__burger span:nth-child(2) { opacity: 0; }
.gsn__mobile[open] > .gsn__burger span:last-child { transform: translateY(-6.6px) rotate(-45deg); }
.gsn__sheet { position: fixed; inset: 60px 0 auto; max-height: calc(100dvh - 60px); overflow-y: auto; overscroll-behavior: contain; padding: 12px 20px 24px; background: var(--g-bg); border-bottom: 1px solid var(--g-border); }
.gsn__mobile-features > summary { display: flex; align-items: center; gap: 8px; min-height: 44px; font-size: 15px; }
.gsn__more a { display: flex; align-items: center; min-height: 48px; border-top: 1px solid var(--g-border-soft); font-size: 15px; }
.gsn__sheet .gsn__group ul { grid-template-columns: 1fr; }
.gsn__sheet .gsn__category { padding-inline: 0; }
.gsn__sheet .gsn__group a { padding-inline: 0; }
.gsn__sheet .gsn__group a:hover { background: none; }
.gsn__sheet .gsn__group a:hover b { color: var(--g-link); text-decoration: underline; text-underline-offset: .2em; }

.g-site-footer { padding: 0; background: var(--g-bg); border-top: 1px solid var(--g-border); scroll-margin-top: 60px; }
.g-site-footer a[href] { color: var(--g-link); text-decoration: none; }
.gsf__shell { max-width: var(--fp-shell); margin: 0 auto; padding: 0 var(--fp-gutter); }
.gsf__intro { display: flex; align-items: baseline; gap: 4rem; padding: 3rem 0 2.5rem; }
.g-site-footer .gsf__brand { min-height: 44px; display: inline-flex; align-items: center; font-size: 1.5625rem; font-weight: 700; color: var(--g-text); letter-spacing: -.03em; }
.g-site-footer .gsf__intro h2 { margin: 0 0 .4rem; font-size: 1.25rem; font-weight: 500; line-height: 1.3; letter-spacing: -.02em; text-wrap: pretty; }
.gsf__intro p { color: var(--g-text-2); font-size: 14px; }
.g-site-footer .gsf__index { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 2rem 1.5rem; padding: 0 0 3rem; }
.g-site-footer .gsf__group h3 { margin: 0 0 .75rem; font-size: 14px; font-weight: 600; line-height: 1.5; text-wrap: pretty; }
.gsf__group a { display: inline-flex; align-items: center; min-height: 44px; font-size: 14px; white-space: nowrap; }
.g-site-footer .gsf__group a[aria-current="page"] { color: var(--g-link); font-weight: 600; }
.gsf__bottom { display: flex; align-items: baseline; flex-wrap: wrap; gap: 1rem 2rem; padding: 1.5rem 0 2rem; border-top: 1px solid var(--g-border); color: var(--g-text-2); font-size: 12px; }
.gsf__legal { display: flex; align-items: baseline; flex-wrap: wrap; gap: 1rem; }
.gsf__legal li { display: flex; flex-wrap: wrap; gap: .35rem; }
.gsf__legal span { color: var(--g-text-2); }
.gsf__legal span::before { content: "· "; }
.gsf__theme { width: 44px; height: 44px; display: inline-grid; flex: 0 0 auto; place-items: center; padding: 0; border: 1px solid var(--g-border); border-radius: 999px; background: var(--g-card); color: var(--g-text-2); cursor: pointer; }
.gsf__theme:hover { background: var(--g-chip); color: var(--g-text); }
.gsf__theme:active { transform: translateY(1px); }
.gsf__theme:disabled { opacity: .55; cursor: not-allowed; }
.gsf__theme-icon { width: 18px; height: 18px; }
.gsf__theme-icon--sun { display: none; }
.gsf__theme[data-theme-next="light"] .gsf__theme-icon--moon { display: none; }
.gsf__theme[data-theme-next="light"] .gsf__theme-icon--sun { display: block; }
.g-site-footer .gsf__location { margin-left: auto; text-align: right; white-space: nowrap; }
@media (max-width: 1100px) { .g-site-footer .gsf__index { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) {
  .g-site-header .gsn { padding-inline: 20px; gap: 12px; }
  .gsn__desktop { display: none; }
  .gsn__mobile { display: block; }
  .gsn__burger { margin-right: -8px; }
}
@media (max-width: 560px) {
  .g-site-header .gsn { padding-inline: 16px; gap: 8px; }
  .g-site-header .gsn__cta { padding-inline: 12px; }
  body:not(.home-light) > .g-site-header + main { padding-top: 1rem; }
  .gsf__intro { flex-direction: column; align-items: flex-start; gap: 1rem; padding-block: 2.5rem 2rem; }
  .g-site-footer .gsf__index { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem 1rem; }
  .gsf__bottom { gap: 1rem; }
  .gsf__legal { width: 100%; }
  .g-site-footer .gsf__location { width: 100%; }
}
@media (forced-colors: active) {
  .g-site-header .gsn__cta { border: 1px solid ButtonText; }
  .gsn__burger span { background: ButtonText; }
}

/* Shared editorial link treatment. Keep branded buttons and the top menu's
 * existing look; ordinary content links stay white and underlined in
 * every state, even on pages with their own older accent-link selectors. */
body a[href]:not(.btn):not(.amn-button):not(.gsn__brand):not(.gsn__cta):not(.gsf__brand):not(.gf-skip):not(:where(.g-site-header a, .g-site-footer a)) {
  color: var(--g-link);
  text-decoration-line: underline;
  text-decoration-color: currentColor;
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
}
body a[href]:not(.btn):not(.amn-button):not(.gsn__brand):not(.gsn__cta):not(.gsf__brand):not(.gf-skip):not(:where(.g-site-header a, .g-site-footer a)):hover { text-decoration-thickness: 2px; }

/* Brand SVGs isolate their animation styles and use theme-matched artwork. */
.brand-on-dark { display: none; }
.brand-on-light { display: block; }
:root[data-theme="dark"] .brand-on-dark { display: block; }
:root[data-theme="dark"] .brand-on-light { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .brand-on-dark { display: block; }
  :root:not([data-theme]) .brand-on-light { display: none; }
}
.gsn__brand img { width: 26px; height: 26px; flex-shrink: 0; }
