
.f-footer {
  background: var(--brand-surface-dark, #1A1A1A);
  color: rgba(255, 255, 255, 0.82);
  padding: clamp(36px, 5vw, 56px) clamp(16px, 4vw, 48px) 0;
}
.f-footer-grid {
  display: grid;
  grid-template-columns: 1fr auto auto 1fr;
  grid-template-rows: auto auto;
  column-gap: clamp(24px, 3vw, 56px);
  align-items: start;
}
.f-footer-mark {
  grid-column: 1; grid-row: 1;
  display: block;
  width: calc(var(--brand-logo-w, 100px) * var(--brand-footer-mark-scale, 0.82));
  margin-bottom: var(--brand-footer-mark-gap, 18px);
  align-self: var(--brand-footer-mark-align, start);
  color: var(--brand-ink-on-dark, #fff);
}
.f-footer-mark svg, .f-footer-mark img { display: block; width: 100%; height: auto; }
.f-footer-mark img { filter: invert(var(--brand-logo-invert, 0)); }
.f-footer-brand {
  grid-column: 1; grid-row: var(--brand-footer-content-row, 2); align-self: stretch;
  display: var(--brand-footer-brand-display, flex);
  flex-direction: column;
}
.f-footer-nav   { grid-column: 2; grid-row: var(--brand-footer-content-row, 2); align-self: stretch; margin-inline-end: clamp(8px, 2vw, 40px); }
.f-footer-map   { grid-column: 3; grid-row: var(--brand-footer-content-row, 2); align-self: stretch; }
.f-footer-act   { grid-column: 4; grid-row: var(--brand-footer-content-row, 2); justify-self: end; }
@media (min-width: 641px) {
  .f-footer-brand,
  .f-footer-nav { padding-top: var(--brand-footer-content-pad, var(--f-space-xs)); }
}
@media (min-width: 1201px) {
  .f-footer-mark {
    translate: 0 var(--brand-footer-mark-optical-y, 0px);
  }
  .f-footer-nav li:first-child {
    translate: 0 var(--brand-footer-first-link-optical-y, 0px);
  }
}
@media (max-width: 1200px) {
  .f-footer-grid { grid-template-columns: 1fr 1fr; grid-template-rows: auto auto auto; }
  .f-footer-mark { grid-column: 1; grid-row: 1; }
  .f-footer-brand {
    grid-column: 1; grid-row: 2; align-self: stretch;
    display: var(--brand-footer-brand-display-narrow, var(--brand-footer-brand-display, flex));
    flex-direction: column;
  }
  .f-footer-nav { grid-column: 2; grid-row: 2; margin-inline-end: 0; }
  .f-footer-map { grid-column: 1; grid-row: 3; align-self: start; }
  .f-footer-act { grid-column: 2; grid-row: 3; justify-self: start; }
  .f-footer-grid { row-gap: 32px; }
}
.f-footer-name {
  grid-column: 1;
  grid-row: 1;
  display: flex;
  align-items: var(--brand-footer-name-align, center);
  min-height: var(--brand-footer-name-min-h, 0px);
  margin: 0 0 var(--brand-footer-name-gap, 24px);
  padding-inline-start: var(--brand-footer-name-indent, 0px);
  font-family: var(--brand-font-display, inherit);
  font-weight: 700;
  text-transform: var(--brand-display-transform, none);
  font-size: var(--f-text-lead);
  line-height: 1.1;
  letter-spacing: 0.01em;
  color: var(--brand-ink-on-dark, #fff);
  white-space: nowrap;
}
@media (max-width: 640px) { .f-footer-name { white-space: normal; } }
.f-contact {
  grid-column: 1;
  grid-row: 2;
  list-style: none; margin: 0; padding: 0;
  flex: 1;
  display: flex; flex-direction: column; justify-content: space-between;
  gap: 18px;
}
.f-contact li { display: flex; align-items: center; gap: 16px; }
.f-contact li { gap: 12px; }
.f-contact-icon { flex: none; width: 24px; height: 24px; display: block; color: var(--brand-ink-on-dark, #fff); }
.f-contact-icon svg { display: block; width: 100%; height: 100%; }
.f-contact a, .f-contact span:last-child {
  font-size: var(--f-text-small); line-height: 1.45; text-decoration: none;
  color: rgba(255, 255, 255, 0.78);
}
.f-contact a {
  transition: color 0.35s cubic-bezier(0.33, 0, 0.2, 1);
}
.f-contact a:hover,
.f-contact a:focus-visible { color: var(--brand-accent-bright, #fff); }
@media (prefers-reduced-motion: reduce) {
  .f-contact a { transition: none; }
}
.f-footer-nav ul {
  list-style: none; margin: 0; padding: 0;
  height: 100%;
  display: flex; flex-direction: column; justify-content: space-between;
  gap: 12px;
}
.f-footer-nav a {
  font-family: var(--brand-font-display, inherit);
  font-weight: 700;
  text-transform: var(--brand-display-transform, none);
  font-size: var(--f-text);
  line-height: var(--brand-footer-row-h, normal);
  letter-spacing: 0.02em;
  color: var(--brand-ink-on-dark, #fff);
  text-decoration: none;
  transition: color 0.3s;
}
.f-footer-nav a:hover { color: var(--brand-accent-bright, #fff); }
.f-footer-map { width: clamp(240px, 26vw, 380px); }
.f-footer-map a { display: block; height: 100%; border-radius: 12px; overflow: hidden; }
.f-footer-map img {
  display: block; width: 100%; height: 100%;
  object-fit: cover;
  border-radius: 12px;
  filter: brightness(1) saturate(0.9);
  transition: filter 0.75s cubic-bezier(0.33, 0, 0.2, 1);
}
.f-footer-map a:hover img, .f-footer-map a:focus-visible img {
  filter: brightness(1.45) saturate(1.05);
}
@media (prefers-reduced-motion: reduce) {
  .f-footer-map img { transition: none; }
}
@media (max-width: 1200px) { .f-footer-map img { height: auto; aspect-ratio: 16 / 9; } }
.f-footer-act .f-cta { display: block; text-align: center; padding-inline: var(--f-cta-pad); }
.f-footer-bar {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 16px;
  margin-top: clamp(28px, 4vw, 48px);
  padding: 16px 0 20px;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  font-size: var(--f-text-caption);
  color: rgba(255, 255, 255, 0.6);
}
.f-footer-bar p { margin: 0; max-width: none; }
.f-footer-credit { justify-self: center; }
.f-footer-credit a {
  display: inline-flex; align-items: center; gap: 10px;
  text-transform: uppercase; letter-spacing: 0.08em;
  color: rgba(255, 255, 255, 0.78);
  text-decoration: none;
  transition: color 0.3s;
}
.f-footer-credit a:hover { color: var(--brand-ink-on-dark, #fff); }
.f-credit-mark { display: block; width: 22px; color: currentColor; }
.f-credit-mark svg { display: block; width: 100%; height: auto; }
.f-footer-end { justify-self: end; display: flex; align-items: center; gap: 20px; }
.f-social { list-style: none; margin: 0; padding: 0; display: flex; gap: 10px; }
.f-social a {
  display: grid; place-items: center;
  width: 30px; height: 30px;
  border: 1px solid rgba(0, 0, 0, 0.35);
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.22);
  color: rgba(255, 255, 255, 0.20);
  transition: border-color 0.3s, color 0.3s, background-color 0.3s;
}
.f-social svg { width: 14px; height: 14px; }
.f-social a:hover, .f-social a:focus-visible {
  border-color: var(--brand-accent-bright, #fff);
  color: var(--brand-accent-bright, #fff);
  background: rgba(255, 255, 255, 0.06);
}
.f-footer-policies a {
  text-transform: uppercase; letter-spacing: 0.08em; text-decoration: none;
  color: rgba(255, 255, 255, 0.78);
}
.f-footer-policies a:hover { color: var(--brand-accent-bright, #fff); }
@media (max-width: 640px) {
  .f-footer-bar {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 16px;
  }
  .f-footer-end { order: 1; flex-direction: column; gap: 16px; width: 100%; }
  .f-footer-policies { order: 1; }
  .f-social { order: 2; }
  .f-footer-credit { order: 2; }
  .f-footer-copy { order: 3; }
  .f-social { width: 100%; justify-content: space-between; gap: 0; }
  .f-social a { width: 52px; height: 52px; }
  .f-social svg { width: 20px; height: 20px; }
}
.f-social-map { display: none; }
@media (max-width: 640px) {
  .f-footer {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    row-gap: 22px;
  }
  .f-footer-grid, .f-footer-bar, .f-footer-end { display: contents; }
  .f-footer-nav, .f-footer-map, .f-contact { display: none; }
  .f-footer-mark { order: 1; align-self: center; margin-bottom: 0; }
  .f-footer-brand { order: 2; display: flex; align-items: center; }
  .f-footer-policies { order: 3; }
  .f-social { order: 4; }
  .f-footer-act { order: 5; width: 100%; }
  .f-footer-copy { order: 6; margin: 0; }
  .f-footer-credit { order: 7; }
  .f-footer-name {
    align-items: center;
    min-height: 0;
    margin-bottom: 0;
    padding-inline-start: 0;
  }
  .f-footer-act .f-cta { width: 100%; }
  .f-social-map { display: list-item; }
  .f-footer-credit {
    width: 100%;
    margin: 0;
    padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
  }
}
