/* Emil Kowalski's motion guidance: brief, interruptible, purposeful transitions. */
:root{
  --ease-out:cubic-bezier(0.23,1,0.32,1);
  --motion-press:140ms;
  --motion-menu:180ms;
  --motion-dialog:240ms;
}
:is(.pill,.round-close,.public-contact-link,.public-menu-button,.review-controls button,.contact-select-trigger,.discovery-controls button){
  transition:transform var(--motion-press) var(--ease-out),background-color var(--motion-press) ease,border-color var(--motion-press) ease,color var(--motion-press) ease;
}
.contact-select-trigger::after{transition:transform var(--motion-menu) var(--ease-out)}
@media(hover:hover) and (pointer:fine){
  .pill:hover:not(:disabled),.public-contact-link:hover{transform:translateY(-1px)}
}
html:not([data-motion-input="keyboard"]) :is(.pill,.round-close,.public-contact-link,.public-menu-button,.review-controls button,.contact-select-trigger,.discovery-controls button):active:not(:disabled){transform:scale(.97)}

/* Native dialog/popover lifecycle keeps Escape, focus return and rapid toggles.
   Unsupported engines simply retain their existing instant open/close. */
@supports (transition-behavior:allow-discrete){
  :is(#contact-dialog,#service-dialog,#case-dialog){
    opacity:0;
    transform:scale(.96);
    transform-origin:center;
    transition:opacity var(--motion-dialog) var(--ease-out),transform var(--motion-dialog) var(--ease-out),display var(--motion-dialog) allow-discrete,overlay var(--motion-dialog) allow-discrete;
  }
  :is(#contact-dialog,#service-dialog,#case-dialog)[open]{opacity:1;transform:none}
  :is(#contact-dialog,#service-dialog,#case-dialog)::backdrop{
    opacity:0;
    transition:opacity var(--motion-dialog) var(--ease-out),display var(--motion-dialog) allow-discrete,overlay var(--motion-dialog) allow-discrete;
  }
  :is(#contact-dialog,#service-dialog,#case-dialog)[open]::backdrop{opacity:1}
  .contact-select-list{
    opacity:0;
    transform:scale(.96);
    transition:opacity var(--motion-menu) var(--ease-out),transform var(--motion-menu) var(--ease-out),display var(--motion-menu) allow-discrete,overlay var(--motion-menu) allow-discrete;
  }
  .contact-select-list:popover-open{opacity:1;transform:none}
  @starting-style{
    :is(#contact-dialog,#service-dialog,#case-dialog)[open]{opacity:0;transform:scale(.96)}
    :is(#contact-dialog,#service-dialog,#case-dialog)[open]::backdrop{opacity:0}
    .contact-select-list:popover-open{opacity:0;transform:scale(.96)}
  }
}

/* Cancel legacy hover movement on touch, including sticky emulated hovers. */
@media(hover:none),(pointer:coarse){
  :is(.pill,.review-card,.question-card,.resource-card,.insight-card,.home-lecture-card):hover{transform:none}
  .question-card:hover::after,.question-card:hover .question-arrow,.case-row:hover .case-arrow,.resource-card:hover .read-link::after,.insight-card:hover .read-link::after,.home-lecture-card:hover img{transform:none}
}

/* Keyboard navigation never waits for an animated surface. */
html[data-motion-input="keyboard"] :is(#contact-dialog,#service-dialog,#case-dialog,.contact-select-list,.contact-select-trigger,.pill,.public-menu-button,.public-menu-button span){transition:none!important}
html[data-motion-input="keyboard"] :is(#contact-dialog,#service-dialog,#case-dialog)::backdrop{transition:none!important}

@media(prefers-reduced-motion:reduce){
  :is(#contact-dialog,#service-dialog,#case-dialog,.contact-select-list){transform:none!important}
  :is(.pill,.round-close,.public-contact-link,.public-menu-button,.review-controls button,.contact-select-trigger,.discovery-controls button):is(:hover,:active){transform:none!important}
  :is(.review-card,.question-card,.resource-card,.insight-card,.home-lecture-card):hover,.question-card:hover::after,.question-card:hover .question-arrow,.case-row:hover .case-arrow,.resource-card:hover .read-link::after,.insight-card:hover .read-link::after,.home-lecture-card:hover img{transform:none!important}
}
