/* Shared footer: a single native newsletter form stays in the document flow. */
.site-footer.shared-footer,
.portfolio-page .portfolio-layout > .site-footer.shared-footer {
  display: grid;
  grid-template-columns: minmax(110px, 1fr) minmax(240px, 480px) minmax(110px, 1fr);
  align-items: start;
  gap: 36px clamp(28px, 5vw, 88px);
  width: 100%;
  margin: 0;
  padding: 42px var(--section-page-gutter) max(38px, env(safe-area-inset-bottom));
  font-size: 13px;
  line-height: 1.5;
}
.shared-footer .footer-legal { display: flex; flex-direction: column; align-items: flex-start; gap: 0; }
.shared-footer .footer-legal a { display: inline-flex; align-items: center; min-height: 44px; }
.shared-footer .footer-newsletter { min-width: 0; width: 100%; max-width: 480px; }
.shared-footer h2 { margin: 0 0 14px; font-size: 17px; font-weight: 400; line-height: 1.4; }
.shared-footer .newsletter-intro { margin: 0 0 20px; font-size: 14px; line-height: 1.55; }
.shared-footer .newsletter-form { display: grid; gap: 16px; font-size: 13px; line-height: 1.55; }
.shared-footer .newsletter-email-field { display: grid; gap: 6px; }
.shared-footer .newsletter-email-field input { border: 1px solid #b5b5ac; border-radius: 0; background: transparent; padding: 10px 12px; width: 100%; min-height: 46px; font-size: 16px; }
.shared-footer .newsletter-consent { display: grid; grid-template-columns: 20px minmax(0,1fr); gap: 10px; cursor: pointer; }
.shared-footer .newsletter-consent input { width: 17px; height: 17px; margin: 3px 0 0; accent-color: #54544e; }
.shared-footer .newsletter-privacy { margin: 0; }
.shared-footer .newsletter-privacy a { text-decoration: none; border-bottom: 1px solid #b5b5ac; }
.shared-footer .newsletter-submit { justify-self: start; min-height: 44px; padding: 8px 12px; border: 1px solid #b5b5ac; background: transparent; text-decoration: none; }
.shared-footer .newsletter-submit:disabled { color: #707069; cursor: wait; }
.shared-footer .newsletter-message { margin: 0; }
.shared-footer .newsletter-retry { min-height: 44px; margin-top: 6px; text-align: left; }
.shared-footer .newsletter-honeypot { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.shared-footer .index-socials { justify-self: end; margin: 6.6px; }
.shared-footer :is(a, button):focus { text-decoration: none; }
.shared-footer :is(a, button):focus:not(:focus-visible) { outline: none; box-shadow: none; }
.shared-footer :is(a, button, input):focus-visible { outline: 1px solid #65655d; outline-offset: 4px; }
.shared-footer #newsletter-title:focus { outline: none; }
.shared-footer #newsletter-title:focus-visible { background: #e8e8e1; }
.index-socials { --social-size-number: 100.8; --social-icon-number: 19.6; --social-cross-inset: calc((15.4 - var(--social-icon-number) * .45) * 1px); --social-cross-scale: calc((var(--social-size-number) - 30.8 + var(--social-icon-number) * .9) / 100); --social-hit-cut: calc((59.9 - var(--social-size-number) / 2) * 1px); position: relative; width: calc(var(--social-size-number) * 1px); height: calc(var(--social-size-number) * 1px); margin: 0; }
/* One SVG viewport keeps every contour on the same browser raster grid.
   Logo sizes, centres and strokes use 70%; the cross is additionally trimmed
   to the actual Instagram top and TikTok bottom, including round stroke caps. */
.index-socials-graphic { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; z-index: 1; fill: none; stroke: currentColor; stroke-width: 1.05px; stroke-linecap: round; stroke-linejoin: round; opacity: 1; pointer-events: none; }
.index-socials-graphic :is(path, line) { vector-effect: non-scaling-stroke; }
.index-socials-graphic g { transform-box: view-box; transform-origin: 0 0; }
.index-socials-cross { transform: translate(var(--social-cross-inset), var(--social-cross-inset)) scale(var(--social-cross-scale)); }
.index-socials-icon { --social-brand-scale: calc(var(--social-icon-number) / 20); --social-brand-offset: calc(var(--social-icon-number) / 20 * 12px); }
.index-socials-icon-instagram { transform: translate(calc(50% - var(--social-brand-offset)), calc(15.4px - var(--social-brand-offset))) scale(var(--social-brand-scale)); }
.index-socials-icon-x { --social-brand-scale: calc(var(--social-icon-number) / 18); --social-brand-offset: calc(var(--social-icon-number) / 18 * 12px); transform: translate(calc(100% - 15.4px - var(--social-brand-offset)), calc(50% - var(--social-brand-offset))) scale(var(--social-brand-scale)); }
.index-socials-icon-tiktok { transform: translate(calc(50% - var(--social-brand-offset)), calc(100% - 15.4px - var(--social-brand-offset))) scale(var(--social-brand-scale)); }
.index-socials-icon-facebook { transform: translate(calc(15.4px - var(--social-brand-offset)), calc(50% - var(--social-brand-offset))) scale(var(--social-brand-scale)); }
.index-socials a { position: absolute; display: grid; place-items: center; width: 44px; height: 44px; color: inherit; }
.index-socials-instagram { top: -6.6px; left: calc(50% - 22px); clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--social-hit-cut)), calc(100% - var(--social-hit-cut)) 100%, var(--social-hit-cut) 100%, 0 calc(100% - var(--social-hit-cut))); }
.index-socials-x { top: calc(50% - 22px); right: -6.6px; clip-path: polygon(var(--social-hit-cut) 0, 100% 0, 100% 100%, var(--social-hit-cut) 100%, 0 calc(100% - var(--social-hit-cut)), 0 var(--social-hit-cut)); }
.index-socials-tiktok { bottom: -6.6px; left: calc(50% - 22px); clip-path: polygon(0 var(--social-hit-cut), var(--social-hit-cut) 0, calc(100% - var(--social-hit-cut)) 0, 100% var(--social-hit-cut), 100% 100%, 0 100%); }
.index-socials-facebook { top: calc(50% - 22px); left: -6.6px; clip-path: polygon(0 0, calc(100% - var(--social-hit-cut)) 0, 100% var(--social-hit-cut), 100% calc(100% - var(--social-hit-cut)), calc(100% - var(--social-hit-cut)) 100%, 0 100%); }
.index-socials a:focus-visible { outline: none; box-shadow: none; background: #e8e8e1; }

/* Preserve the last approved target sizes; never apply another percentage. */
@media (max-width: 1100px) { .shared-footer .index-socials { --social-icon-number: 16.8; } }
@media (max-width: 850px) {
  .site-footer.shared-footer, .portfolio-page .portfolio-layout > .site-footer.shared-footer {
    grid-template-columns: minmax(0,1fr) auto; gap: 28px 20px;
  }
  .shared-footer .footer-legal { grid-column: 1; grid-row: 1; flex-direction: row; flex-wrap: wrap; gap: 0 24px; }
  .shared-footer .footer-newsletter { grid-column: 1; grid-row: 2; }
  .shared-footer .index-socials { grid-column: 2; grid-row: 1 / span 2; --social-icon-number: 14; }
}
@media (max-width: 600px) {
  .site-footer.shared-footer, .portfolio-page .portfolio-layout > .site-footer.shared-footer {
    grid-template-columns: minmax(0, 1fr); padding-top: 32px;
  }
  .shared-footer .footer-newsletter { grid-column: 1; grid-row: 2; }
  .shared-footer .index-socials { grid-column: 1; grid-row: 3; }
}
@media (max-width: 450px) { .shared-footer .index-socials { --social-size-number: 92.4; --social-icon-number: 12.6; } }
