/* Quiet social marks, with the same expanding silhouette as the navigation icons.
   Keep the hit areas fixed; only the backdrop grows, so hover cannot flicker. */
.page-contact .contact-socials nav{display:flex;align-items:center;gap:16px}
.page-contact .contact-socials .contact-social-icon{--social-ink:#000;--social-hover-ink:#fff;position:relative;isolation:isolate;display:grid;place-items:center;flex:0 0 56px;width:56px;height:56px;min-height:0;padding:0;gap:0;border:0;border-radius:50%;background:transparent;color:var(--social-ink);text-decoration:none;touch-action:manipulation;transition:color .18s ease}
.contact-social-icon::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--social-ink);border-radius:48% 52% 50% 50%;opacity:0;transform:scale(.28);transition:transform .32s cubic-bezier(.22,1,.36,1),opacity .18s ease,border-radius .32s ease;pointer-events:none}
.contact-social-icon svg{display:block;width:28px;height:28px;fill:currentColor;pointer-events:none}
.page-contact .contact-socials .contact-social-icon:focus-visible{color:var(--social-hover-ink);background:transparent;outline:2px solid var(--social-ink);outline-offset:5px}
.contact-social-icon:focus-visible::before,.contact-social-icon:active::before{opacity:1;transform:scale(1);border-radius:50%}
.page-contact .contact-socials .contact-social-icon:active{color:var(--social-hover-ink)}
/* Inverse theme retains contrast without adding a permanent button container. */
html[data-theme="dark"] .page-contact .contact-social-icon{--social-ink:#fff;--social-hover-ink:#000}
@media(hover:hover) and (pointer:fine){
 .page-contact .contact-socials .contact-social-icon:hover{color:var(--social-hover-ink);background:transparent;cursor:none}
 .contact-social-icon:hover::before{opacity:1;transform:scale(1);border-radius:50%}
 .page-contact:has(.contact-social-icon:hover) :is(.entropic-pointer,.cursor-metaball,.navigation-cursor-bubble){opacity:0!important}
}
@media(max-width:600px){.page-contact .contact-socials nav{gap:12px}}
@media(prefers-reduced-motion:reduce){.page-contact .contact-socials .contact-social-icon,.contact-social-icon::before{transition:none}}
/* Equal-height channels keep the email baselines aligned even when one
   description wraps onto more lines, or editor-provided headings change. */
.page-contact .contact-channels{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.page-contact .contact-channels>div{display:flex;flex-direction:column;min-width:0}
.page-contact .contact-channels>div>p{display:flex;flex-direction:column;flex:1;min-width:0}
.page-contact .contact-channels>div>p>a{align-self:flex-start;margin-top:auto;max-width:100%;overflow-wrap:anywhere}
