/* The footer at every width: the full site map on a page the reader is
   browsing, one row under a screen they are meant to finish. Columns break
   4 -> 2x2 below 1100px and into a list below 720px. */
.dfooter {
  margin-top: auto;
  background: var(--surface-warm); color: var(--text-primary);
}
.dfooter-in {
  width: min(calc(100% - 48px), 1240px); margin: 0 auto;
  display: grid; grid-template-columns: 1fr; gap: 26px 32px;
  padding: 32px 0 26px; font-size: 14px;
}
.dfooter .brand-logo-horizontal { width: 200px; }
.dfooter .brand-logo-mark { width: 56px; height: 56px; }
.dfooter-tagline {
  margin: 14px 0 0;
  font-family: var(--font-ui); font-size: 10px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--text-muted);
}
.dfooter-about { margin: 8px 0 0; max-width: 30em; line-height: 1.6; font-size: 13.5px; color: var(--text-secondary); }
.dfooter-col-h {
  margin-bottom: 13px;
  font-family: var(--font-ui); font-size: 10px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--text-muted);
}
.dfooter-col { display: flex; flex-direction: column; gap: 9px; }
.dfooter-col a { color: var(--text-secondary); }
.dfooter-col a:hover { color: var(--action-primary); }
.dfooter-base { border-top: 1px solid var(--border-subtle); }
.dfooter-base-in {
  width: min(calc(100% - 48px), 1240px); margin: 0 auto;
  padding: 15px 0;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 14px;
  font-family: var(--font-ui); font-size: 11px; letter-spacing: .04em;
  color: var(--text-muted);
}
.dfooter-legal {
  width: min(calc(100% - 48px), 1240px); margin: 0 auto;
  padding-bottom: 18px;
  font-size: 11.5px; line-height: 1.6; color: var(--text-secondary);
}
/* The profile row sits in the base band, opposite the copyright. A 34px circle
   keeps the three icons a pointer target without shouting over the legal line. */
.dfooter-social { display: flex; gap: 6px; }
.dfooter-social a {
  display: grid; place-items: center; width: 34px; height: 34px;
  border: 1px solid var(--border-subtle); border-radius: var(--radius-pill);
  color: var(--text-secondary);
}
.dfooter-social a:hover { color: var(--action-primary); border-color: var(--action-primary); }
/* The shortened footer: one row under a screen the reader is meant to finish. */
.dfooter-short .brand-logo-horizontal { width: 132px; }
.dfooter-mini { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.dfooter-mini a { color: var(--text-secondary); }
.dfooter-mini a:hover { color: var(--action-primary); }
@media (min-width: 720px) {
  .dfooter-in { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dfooter-brand { grid-column: 1 / -1; }
}
@media (min-width: 1100px) {
  .dfooter-in { grid-template-columns: 1.5fr repeat(4, minmax(0, 1fr)); }
  .dfooter-brand { grid-column: auto; }
}
/* Under 900px the fixed bar owns the last 64px of the viewport, so the footer
   ends above it — not behind it. A linear flow draws no bar and needs none. */
@media (max-width: 899px) {
  .dfooter { padding-bottom: calc(var(--nav-h) + env(safe-area-inset-bottom)); }
  body[data-flow] .dfooter { padding-bottom: env(safe-area-inset-bottom); }
}
