/* ==========================================================================
   site-footer.css — the one footer every page shares. Added 2026-10-29.

   WHY THIS FILE EXISTS
   --------------------
   Until 2026-10-29 the footer was pasted into 72 pages as a four-column block
   whose "Quick Links" column held 15 entries (site pages and the product
   family mixed together), whose Services column sent seven of nine links to
   the same page, and which had drifted into 20 slightly different copies
   (old Facebook URL, missing address, dead "#" links). The footer is now one
   piece of markup in tools/footer/footer.py, stamped onto every page by
   tools/footer/apply.py, and styled only here.

   The markup keeps the old class names the rest of the estate depends on:
   `footer` on the element (shop.css pads it under the sticky buy bar; the
   section builders lift it by that class), `footer-title`, `footer-link` and
   `footer-social-icon` (apps.css and the builders key on them). Every rule
   here is scoped under .edc-foot so it wins over the per-page inline copies
   of the old .footer-* rules without touching anything else.

   TOKENS (all taken from the existing footer and nav; nothing new)
     surface      #1F2937   band surface   #111827
     text         #F3F4F6   links          #D1D5DB   muted #9CA3AF
     gold         #E1B168   gold (hover)   #d4a84b   (site-nav gold)
     rule / chip  #374151   input border   #4B5563
     headings     Playfair Display (site heading face), body inherits Roboto
     radius       16px (nav, Pass card)  /  0.375rem (inputs, buttons)
     easing       cubic-bezier(0.22, 1, 0.36, 1)   durations 200–300ms

   MOTION: colour and a 4px nudge on hover, pointer:fine only; nothing
   animates in. motion-guard.css is linked last on every page and zeroes the
   transitions under prefers-reduced-motion; the guard below repeats that so
   this file is safe on a page that forgets the global one.
   ========================================================================== */

.edc-foot {
  --f-ease: cubic-bezier(0.22, 1, 0.36, 1);
  background-color: #1F2937;
  color: #F3F4F6;
  padding: 3.5rem 0 2rem;
  font-size: 1rem;
  line-height: 1.6;
}
.edc-foot a { text-decoration: none; }
.edc-foot a:focus-visible,
.edc-foot button:focus-visible,
.edc-foot input:focus-visible {
  outline: 2px solid #E1B168;
  outline-offset: 2px;
}

/* ---- The Pass band ---------------------------------------------------- */
.edc-foot-pass {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.25rem;
  padding: 1.75rem 1.5rem;
  margin: 0 0 3rem;
  background-color: #111827;
  border: 1px solid #374151;
  border-radius: 16px;
}
@media (min-width: 768px) {
  .edc-foot-pass {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    align-items: center;
    gap: 2rem;
    padding: 2rem 2.25rem;
  }
}
.edc-foot .edc-foot-pass-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.5rem;
  font-weight: 600;
  color: #E1B168;
  margin: 0 0 0.35rem;
}
.edc-foot-pass-text p { color: #D1D5DB; margin: 0; }
.edc-foot-pass > * { min-width: 0; }
.edc-foot-form { position: relative; margin: 0; }
.edc-foot-form-row { display: flex; width: 100%; }
.edc-foot-form input[type="email"] {
  flex: 1 1 0;
  width: 100%;
  min-width: 0;
  padding: 0.8rem 1rem;
  font: inherit;
  color: #111827;
  background-color: #fff;
  border: 1px solid #4B5563;
  border-right: 0;
  border-radius: 0.375rem 0 0 0.375rem;
}
.edc-foot-form input[type="email"]::placeholder { color: #6B7280; }
.edc-foot-btn {
  flex: 0 0 auto;
  padding: 0.8rem 1.25rem;
  font: inherit;
  font-weight: 600;
  color: #1F2937;
  background-color: #E1B168;
  border: 0;
  border-radius: 0 0.375rem 0.375rem 0;
  cursor: pointer;
  transition: background-color 200ms var(--f-ease);
}
.edc-foot-btn[disabled] { opacity: 0.7; cursor: default; }
.edc-foot .edc-news-msg {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  color: #D1D5DB;
}
.edc-foot .edc-news-msg:empty { display: none; }
.edc-foot-sr {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* ---- Brand + four link columns ---------------------------------------- */
.edc-foot-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2.25rem 1.5rem;
  margin: 0 0 2.5rem;
}
@media (min-width: 360px) {
  .edc-foot-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .edc-foot-brand { grid-column: 1 / -1; }
}
@media (min-width: 1024px) {
  .edc-foot-grid { grid-template-columns: minmax(0, 1.5fr) repeat(4, minmax(0, 1fr)); gap: 2rem 2rem; }
  .edc-foot-brand { grid-column: auto; padding-right: 1rem; }
  /* The chat launcher and back-to-top button sit fixed at the bottom right;
     keep the legal links clear of them when the page is scrolled to the end. */
  .edc-foot .edc-foot-bottom { padding-right: 6.5rem; }
}
.edc-foot-logo { display: inline-block; }
.edc-foot-logo img {
  display: block;
  width: 48px;
  height: 48px;
  border-radius: 8px;
}
.edc-foot-tagline {
  color: #D1D5DB;
  margin: 1rem 0 1.25rem;
  max-width: 32ch;
}
.edc-foot-meta {
  color: #9CA3AF;
  font-size: 0.9rem;
  line-height: 1.6;
  margin: 0 0 0.75rem;
}
.edc-foot-meta-strong { color: #F3F4F6; }
.edc-foot-mail { color: #D1D5DB; overflow-wrap: anywhere; transition: color 200ms var(--f-ease); }

.edc-foot .footer-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.125rem;
  font-weight: 600;
  color: #E1B168;
  margin: 0 0 1rem;
  line-height: 1.3;
}
.edc-foot-list { list-style: none; margin: 0; padding: 0; }
.edc-foot-list li { margin: 0 0 0.6rem; }
.edc-foot .footer-link {
  display: inline-block;
  margin: 0;
  color: #D1D5DB;
  transition: color 200ms var(--f-ease), transform 300ms var(--f-ease);
}
.edc-foot .footer-link:hover { color: #E1B168; transform: none; }
.edc-foot-sub {
  display: block;
  font-size: 0.8rem;
  color: #9CA3AF;
  line-height: 1.4;
}
.edc-foot .footer-link:hover .edc-foot-sub { color: #D1D5DB; }
.edc-foot .edc-foot-more { color: #E1B168; font-size: 0.9rem; font-weight: 500; }
.edc-foot .edc-foot-more:hover { color: #F3F4F6; }

.edc-foot-social { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.25rem; }
.edc-foot .footer-social-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  color: #F3F4F6;
  background-color: #374151;
  transition: background-color 200ms var(--f-ease), color 200ms var(--f-ease), transform 300ms var(--f-ease);
}
.edc-foot .footer-social-icon:hover { color: #1F2937; background-color: #E1B168; transform: none; }

/* ---- Bottom bar --------------------------------------------------------- */
.edc-foot .edc-foot-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 0.75rem 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid #374151;
  color: #9CA3AF;
  font-size: 0.9rem;
  text-align: left;
}
.edc-foot-copy { margin: 0; }
.edc-foot-legal { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; }
.edc-foot-legal a { color: #9CA3AF; transition: color 200ms var(--f-ease); }
.edc-foot-legal a:hover { color: #F3F4F6; }

/* Hover nudges only where there is a real pointer. */
@media (hover: hover) and (pointer: fine) {
  .edc-foot .footer-link:hover { transform: translateX(4px); }
  .edc-foot .footer-social-icon:hover { transform: translateY(-3px); }
  .edc-foot-btn:hover { background-color: #d4a84b; }
  .edc-foot-mail:hover { color: #E1B168; }
}

@media (prefers-reduced-motion: reduce) {
  .edc-foot *, .edc-foot *::before, .edc-foot *::after { transition: none !important; }
  .edc-foot .footer-link:hover,
  .edc-foot .footer-social-icon:hover { transform: none; }
}
