/* One signature, two readings. Both occupy the same quiet line in the footer. */
[data-contact]{position:relative;display:inline-grid;grid-template-columns:minmax(0,256px);align-items:center;justify-content:center;min-height:44px;max-width:100%;min-width:0;font-family:var(--sans,Plex,Arial,sans-serif)}
[data-contact] [hidden]{display:none!important}
[data-contact-reveal],[data-contact-panel]{grid-area:1/1;justify-self:center;min-width:0;max-width:100%}
[data-contact-reveal]{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:8px 6px;border:0;background:none;color:var(--dim,#9e9e9f);font:400 11px/1.4 var(--sans,Plex,Arial,sans-serif);letter-spacing:.075em;white-space:nowrap;cursor:pointer;transition:color .25s}
[data-contact-reveal]::after{content:'';position:absolute;bottom:7px;left:calc(50% - 15px);width:30px;height:1px;background:var(--accent,#d6a98a);opacity:.35;transform:scaleX(.65);transition:transform .35s,opacity .35s}
[data-contact-reveal]>span{display:inline-grid;place-items:center;width:17px;height:17px;border:1px solid currentColor;border-radius:50%;font-size:10px;letter-spacing:0;opacity:.55;transition:transform .35s,opacity .35s}
[data-contact-reveal]:hover{color:var(--paper,#eae5d9)}
[data-contact-reveal]:hover::after{transform:scaleX(1.6);opacity:.7}
[data-contact-reveal]:hover>span{transform:rotate(12deg);opacity:1}
[data-contact-state=rest] [data-contact-reveal]{animation:contact-signature-in .25s ease both}
[data-contact-state=revealed]{grid-template-columns:minmax(0,320px)}
[data-contact-panel]{display:flex;align-items:center;justify-content:center;gap:9px;min-height:44px;color:var(--paper,#eae5d9);isolation:isolate}
[data-contact-link]{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:0;min-height:44px;max-width:calc(100% - 45px);padding:9px 0;color:inherit;font:400 12px/1.6 var(--sans,Plex,Arial,sans-serif);font-variant-ligatures:none;letter-spacing:0;text-decoration:none;white-space:nowrap;cursor:pointer}
[data-contact-link]::after{content:'';position:absolute;bottom:9px;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--accent,#d6a98a) 22%,var(--accent,#d6a98a) 78%,transparent);opacity:.55;transform-origin:center;animation:contact-thread-in .55s cubic-bezier(.2,.75,.2,1) both;transition:opacity .2s}
[data-contact-link]:hover::after{opacity:1}
[data-contact-link]>span{display:inline-block;animation:contact-unfurl .32s cubic-bezier(.2,.75,.2,1) both;animation-delay:calc(var(--contact-distance,0)*7ms)}
[data-contact-panel]:has([data-contact-github]) [data-contact-link]{max-width:calc(100% - 98px)}
[data-contact-github]{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-width:44px;min-height:44px;padding:8px 4px;color:var(--dim,#9e9e9f);font:400 10px/1.4 var(--sans,Plex,Arial,sans-serif);letter-spacing:.025em;text-decoration:none;transition:color .25s;animation:contact-signature-in .35s ease both}
[data-contact-github]::before{content:'';position:absolute;left:-5px;top:calc(50% - 6px);height:12px;width:1px;background:currentColor;opacity:.22}
[data-contact-github]:hover{color:var(--paper,#eae5d9)}
[data-contact-close]{display:grid;place-items:center;flex-shrink:0;width:36px;height:44px;border:0;padding:8px;background:none;color:var(--dim,#9e9e9f);cursor:pointer;transition:color .25s}
[data-contact-close] svg{display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s}
[data-contact-close]:hover{color:var(--accent,#d6a98a)}
[data-contact-close]:hover svg{transform:translateX(-2px)}
[data-contact] :is(button,a):focus-visible{outline:1px solid var(--accent,#d6a98a);outline-offset:1px;border-radius:2px}
@keyframes contact-signature-in{from{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}
@keyframes contact-unfurl{from{opacity:0;transform:translate(var(--contact-shift,0),2px)}to{opacity:1;transform:translate(0,0)}}
@keyframes contact-thread-in{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:380px){[data-contact]{grid-template-columns:minmax(0,244px)}[data-contact-state=revealed]{grid-template-columns:minmax(0,288px)}[data-contact-panel]{gap:6px}[data-contact-link]{font-size:11.5px}[data-contact-panel]:has([data-contact-github]) [data-contact-link]{max-width:calc(100% - 92px)}[data-contact-github]::before{left:-3px}}
@media(prefers-reduced-motion:reduce){[data-contact] *,[data-contact] *::after{animation:none!important;transition:none!important}}
@media print{[data-contact-panel]{display:none!important}[data-contact-reveal][hidden]{display:inline-flex!important}}
