.site-footer.portal-footer {
  padding:28px max(24px,calc((100vw - 1200px)/2)) 16px;
  background:#fcf8f4;
  color:var(--ink);
  border-top:1px solid var(--line);
}
.footer-top { display:flex; align-items:center; flex-wrap:wrap; gap:16px 28px; padding-bottom:20px; }
.footer-brand { display:flex; align-items:center; min-height:44px; }
.footer-brand img { width:180px; max-width:100%; height:auto; }
.footer-primary { display:flex; flex-wrap:wrap; gap:8px 24px; margin-right:auto; }
.footer-primary a,.footer-group-content>a { display:flex; align-items:center; min-height:44px; padding:6px 0; line-height:1.4; }
.contact-actions { display:flex; flex-wrap:wrap; gap:8px; }
.contact-action { display:flex; align-items:center; justify-content:center; gap:12px; min-height:44px; padding:10px 18px; border:1px solid var(--action); border-radius:12px; color:var(--action); font-weight:600; text-decoration:none; }
.contact-action:hover { background:var(--tint); }
.footer-groups { display:grid; grid-template-columns:1.15fr 1fr 1fr; align-items:start; gap:16px 24px; border-top:1px solid var(--line); padding:12px 0; }
.footer-group { min-width:0; }
.footer-contact-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 12px; }
.footer-contact-grid a,.footer-contact-more,.footer-social-links a { display:inline-flex; align-items:center; min-height:44px; font-size:13px; overflow-wrap:anywhere; }
.footer-social-links { display:flex; flex-wrap:wrap; align-content:flex-start; gap:4px 8px; }
.footer-social-links a { padding:6px 10px; border:1px solid var(--line); border-radius:10px; text-decoration:none; }
.footer-group summary,.footer-disclosure summary { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:44px; padding:8px 0; cursor:pointer; list-style:none; }
.footer-group summary { font-size:15px; font-weight:600; }
.footer-group summary::marker,.footer-disclosure summary::marker { content:""; }
.footer-group summary::-webkit-details-marker,.footer-disclosure summary::-webkit-details-marker { display:none; }
.footer-toggle { flex:0 0 24px; text-align:center; font-size:20px; line-height:1; }
.footer-toggle::before { content:"+"; }
.footer-group[open]>summary .footer-toggle::before,.footer-disclosure[open]>summary .footer-toggle::before { content:"−"; }
.footer-group-content { display:flex; flex-wrap:wrap; gap:0 12px; padding:0 0 8px; font-size:13px; }
.footer-group-content>a { flex:1 1 130px; overflow-wrap:anywhere; }
.footer-group-label { flex-basis:100%; margin-top:4px; color:var(--muted); font-size:12px; }
.footer-bottom { display:flex; align-items:baseline; flex-wrap:wrap; gap:0 24px; border-top:1px solid var(--line); font-size:12px; color:var(--muted); }
.footer-disclosure { flex:1; min-width:200px; }
.portal-footer .footer-disclosure p { margin:8px 0; max-width:90ch; }
.contact-dock { display:none; }
.portal-footer a:focus-visible,.portal-footer summary:focus-visible,.contact-action:focus-visible { outline:3px solid var(--action); outline-offset:3px; }
@media(max-width:600px) {
  .site-footer.portal-footer { padding:20px 20px 16px; }
  .footer-top { gap:8px 16px; padding-bottom:16px; }
  .footer-brand { flex-basis:100%; }
  .footer-brand img { width:160px; }
  .footer-primary { width:100%; gap:4px 20px; font-size:14px; }
  .footer-top .contact-actions { width:100%; }
  .footer-top .contact-action { flex:1; }
  .has-contact-dock .footer-top .contact-actions { display:none; }
  .footer-groups { grid-template-columns:1fr; gap:12px; padding:12px 0; }
  .footer-sections { border-top:1px solid var(--line); }
  .footer-bottom { gap:0 16px; }
  .footer-disclosure { min-width:0; }
  body.has-contact-dock { padding-bottom:calc(64px + env(safe-area-inset-bottom)); }
  .contact-dock { display:flex; position:fixed; inset:auto 0 0; z-index:6; gap:8px; padding:8px 16px calc(8px + env(safe-area-inset-bottom)); background:var(--paper); border-top:1px solid var(--line); }
  .contact-dock .contact-action { flex:1; }
}
@media print {
  .contact-dock { display:none; }
  body.has-contact-dock { padding-bottom:0; }
}

.public-contact-list a { display:inline-flex; align-items:center; min-height:44px; overflow-wrap:anywhere; max-width:100%; }
