/* One shared footer for the public site, customer portal and identity pages.
   W-083 direction A is dark only, so the footer carries its own palette and looks
   the same whichever layout's tokens are loaded. Unpublished documents remain named
   and flagged, never linked. */
footer.site {
  --footer-ground:#0b0b0c;
  --footer-text:#f2efe7;
  --footer-support:#cfc8b6;
  --footer-muted:#aaa393;
  --footer-fine:#9d968a;
  --footer-gold:#e8cf8a;
  --footer-rule:rgba(255,255,255,.07);
  --footer-gold-rule:rgba(232,207,138,.22);
  /* Form boundaries need stronger contrast than decorative separators. */
  --footer-control-border:#77715f;
  /* rgba(0,0,0,.35) over the footer ground, kept as opaque hex so its contrast stays testable. */
  --footer-field:#070707;
  --footer-sans:"Manrope", "Instrument Sans", system-ui, sans-serif;
  --footer-serif:"Cormorant Garamond", "Palatino Linotype", Palatino, "Book Antiqua", Baskerville, Georgia, serif;
  display:block;
  margin-top:0;
  padding:0;
  border-top:1px solid var(--footer-gold-rule);
  background:var(--footer-ground);
  color:var(--footer-text);
  font:400 14px/1.6 var(--footer-sans);
}
footer.site .wrap {
  box-sizing:border-box; max-width:1440px; margin:0 auto;
  padding:48px clamp(20px,5vw,72px) 0;
  display:grid; grid-template-columns:1.2fr .75fr .95fr 1fr 1.45fr; gap:0 26px;
}
footer.site .wrap > * { min-width:0; }
footer.site .footer-brand {
  grid-column:1; grid-row:1 / span 2; padding-bottom:28px;
  display:flex; flex-direction:column; align-items:flex-start; gap:12px;
}
footer.site .footer-group { grid-row:1 / span 2; padding-bottom:28px; }
footer.site .footer-capture { grid-column:5; grid-row:1; }
footer.site .footer-social { grid-column:5; grid-row:2; padding-bottom:28px; }
footer.site .footer-wordmark { display:inline-flex; flex-direction:column; flex-shrink:0; }
footer.site .footer-wordmark b {
  font-family:var(--footer-serif); font-size:30px; font-weight:600; line-height:1.1; letter-spacing:.1em;
  color:var(--footer-text);
}
footer.site .footer-wordmark span {
  font-size:11px; font-weight:600; letter-spacing:.36em; margin-top:6px; color:var(--footer-gold);
}
footer.site .footer-brand p { max-width:32ch; margin:0; font-size:14px; line-height:1.55; color:var(--footer-support); }
footer.site h4 {
  display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:4px 0 14px;
  font-family:var(--footer-sans); font-size:11px; font-weight:600; line-height:1.3;
  letter-spacing:.16em; text-transform:uppercase; color:var(--footer-gold);
}
footer.site ul { list-style:none; margin:0; padding:0; color:inherit; }
footer.site li { margin:0 0 6px; font-size:14px; line-height:1.5; color:var(--footer-support); }
footer.site li a { display:inline-block; padding-block:3px; }
footer.site a { color:inherit; text-decoration:none; }
footer.site a:hover { color:var(--footer-gold); text-decoration:underline; text-underline-offset:3px; }
footer.site a:focus-visible, footer.site input:focus-visible, footer.site button:focus-visible {
  outline:2px solid var(--footer-gold); outline-offset:3px;
}
footer.site .later { color:var(--footer-muted); }
/* Define flags here too: not every layout that renders the footer loads the public tokens. */
footer.site .flag, footer.site .footer-soon {
  display:inline-block; margin-left:6px; padding:2px 7px; vertical-align:1px;
  border:1px solid var(--footer-gold-rule); border-radius:999px;
  font-family:var(--footer-sans); font-size:11px; font-weight:600; line-height:1.3;
  letter-spacing:.06em; text-transform:uppercase; white-space:nowrap; color:var(--footer-muted);
}
footer.site .footer-soon { margin-left:0; }
footer.site .footer-capture h2 {
  font-family:var(--footer-serif); font-size:28px; font-weight:600; line-height:1.15;
  letter-spacing:-.01em; margin:0 0 8px; color:var(--footer-text);
}
footer.site .footer-capture > p { font-size:14px; line-height:1.5; margin:0 0 14px; color:var(--footer-muted); }
footer.site .footer-newsletter { margin:0 0 24px; }
footer.site .footer-newsletter label { display:block; font-size:13px; font-weight:600; margin-bottom:6px; color:var(--footer-support); }
footer.site .footer-newsletter-row { display:flex; align-items:stretch; gap:8px; }
footer.site .footer-newsletter input[type="email"] {
  box-sizing:border-box; min-width:0; width:100%; min-height:44px;
  border:1px solid var(--footer-control-border); border-radius:12px; padding:0 14px;
  background:var(--footer-field); color:var(--footer-text);
  font:inherit; font-size:16px;
}
footer.site .footer-newsletter input[type="email"]::placeholder { color:var(--footer-fine); }
footer.site .footer-newsletter input[type="email"]:focus { border-color:var(--footer-gold); box-shadow:0 0 0 3px rgba(232,207,138,.18); }
footer.site .footer-newsletter input[aria-invalid="true"] { border-color:#e39a8b; }
footer.site .footer-newsletter button {
  flex-shrink:0; min-height:44px; border:0; border-radius:999px; padding:0 20px;
  background:linear-gradient(100deg, #c9a24a, #f0d78e); color:#141210;
  font:inherit; font-size:14px; font-weight:600; cursor:pointer;
}
footer.site .footer-newsletter button:hover { filter:brightness(1.06); }
footer.site .footer-newsletter p { font-size:12px; line-height:1.5; margin:8px 0 0; color:var(--footer-fine); }
footer.site .footer-newsletter [role="alert"] { color:#e39a8b; }
footer.site .footer-newsletter [role="status"] { border-left:2px solid var(--footer-gold); padding-left:12px; color:var(--footer-text); }
footer.site .footer-social h4 { margin-bottom:10px; }
footer.site .footer-social ul { display:flex; flex-wrap:wrap; gap:6px 18px; }
footer.site .footer-social li { margin:0; color:var(--footer-muted); }
/* Price-source notes (homepage only) stay the final full-width row, as tests/js/public-footer.test.mjs requires. */
footer.site .metals-notes {
  grid-column:1/-1; margin:0; padding:14px 0 24px; border-top:1px solid var(--footer-rule);
  font:400 12px/1.55 var(--footer-sans); color:var(--footer-fine);
}
footer.site .metals-notes p { margin:2px 0; }
footer.site .metals-notes a { color:var(--footer-gold); text-decoration:underline; text-underline-offset:3px; }
/* The full-width rule is independent of the readable legal text measure. */
footer.site .legalline {
  grid-column:1/-1; border-top:1px solid var(--footer-rule); padding:16px 0 20px;
  display:flex; align-items:flex-start; justify-content:space-between; gap:24px;
}
footer.site .legalline p {
  font-family:var(--footer-sans); font-size:12px; line-height:1.55; margin:0; max-width:900px; color:var(--footer-fine);
}
footer.site .legalline b { font-weight:600; color:var(--footer-support); }
footer.site .footer-top {
  flex-shrink:0; display:inline-flex; align-items:center; gap:.3em; min-height:44px; margin-top:-12px;
  font-size:13px; font-weight:600; white-space:nowrap; color:var(--footer-gold);
}
/* Staff retains the compact identity/build footer. */
footer.site .wrap.footer-staff { display:block; padding:20px clamp(20px,5vw,56px); }
footer.site .footer-staff .legalline { border:0; padding:0; }
@media (max-width:1100px) and (min-width:801px) {
  footer.site .wrap { grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 32px; }
  footer.site .footer-brand { grid-column:1/-1; grid-row:auto; }
  footer.site .footer-group { grid-row:auto; }
  footer.site .footer-capture { grid-column:1 / span 2; grid-row:auto; padding-bottom:28px; }
  footer.site .footer-social { grid-column:3; grid-row:auto; }
}
@media (max-width:800px) {
  footer.site .wrap { grid-template-columns:repeat(2,minmax(0,1fr)); padding-top:40px; gap:0 24px; }
  footer.site .footer-brand, footer.site .footer-capture, footer.site .footer-social { grid-column:1/-1; grid-row:auto; }
  footer.site .footer-group { grid-row:auto; }
  footer.site .footer-newsletter-row { flex-direction:column; }
  footer.site li { margin:0; }
  footer.site li a { display:inline-flex; align-items:center; min-height:44px; padding-block:0; }
  footer.site .legalline { flex-direction:column; gap:4px; }
  footer.site .footer-top { margin-top:0; }
}
@media (max-width:520px) {
  footer.site .footer-legal { grid-column:1/-1; }
  footer.site .footer-newsletter-row { flex-direction:column; }
}
