/* Shared interaction feedback, including touch and keyboard activation. */
button,a.button{transition:transform .32s cubic-bezier(.22,1,.36,1),scale .18s ease,background-color .25s ease,color .25s ease,border-color .25s ease,box-shadow .32s ease;transform-origin:center}
button:active:not(:disabled),a.button:active{scale:.97}
button:disabled{cursor:wait}
@media(hover:hover){button:hover:not(:disabled),a.button:hover{transform:translateY(-2px);box-shadow:0 5px 14px #37333012}button.close:hover{transform:rotate(8deg);box-shadow:none}}
.button>span,.text-link>span,.contact>span{display:inline-block;transition:transform .35s cubic-bezier(.22,1,.36,1)}
@media(hover:hover){.button:hover>span,.contact:hover>span{transform:translate(3px,-3px)}}
details>summary{transition:background-color .25s ease,color .25s ease}
details>summary b,details>summary .fe-chevron{transition:transform .35s cubic-bezier(.22,1,.36,1)}
.details-motion-body{display:flow-root}
details[data-animating]{overflow:hidden;will-change:height}
details[data-animating]>.details-motion-body{pointer-events:none}
@media(prefers-reduced-motion:reduce){button,a.button,.button>span,.text-link>span,.contact>span,details>summary,details>summary b,details>summary .fe-chevron{transition:none!important}button:active:not(:disabled),a.button:active{scale:1}button:hover:not(:disabled),a.button:hover{transform:none}}

/* Text actions need their own breathing room, including on touch layouts. */
button.text-link{padding:22px 20px;line-height:1.65;min-height:60px;box-shadow:none}
@media(hover:hover){button.text-link:hover:not(:disabled){box-shadow:none;background-color:#e5e7da80;transform:translateY(-1px)}}
@media(max-width:650px){button.text-link{padding:18px 16px;min-height:56px}}
@media(prefers-reduced-motion:reduce){button.text-link:hover:not(:disabled){transform:none}}
