/* Hover / active states for bundled components. Inline styles cannot express pseudo-states,
   so these hooks are keyed off the data attributes the components emit. */
.osw-button[data-osw-button="primary"]:hover:not(:disabled){background:var(--action-primary-bg-hover)!important;border-color:var(--action-primary-bg-hover)!important}
.osw-button[data-osw-button="accent"]:hover:not(:disabled){background:var(--action-accent-bg-hover)!important;border-color:var(--action-accent-bg-hover)!important}
.osw-button[data-osw-button="secondary"]:hover:not(:disabled){background:var(--navy-050)!important;border-color:var(--navy-800)!important}
.osw-button[data-osw-button="ghost"]:hover:not(:disabled){background:var(--action-ghost-bg-hover)!important}
.osw-button[data-osw-button="inverse"]:hover:not(:disabled){background:var(--sand-500)!important;border-color:var(--sand-500)!important}
.osw-button[data-osw-button="link"]:hover:not(:disabled){color:var(--text-link-hover)!important;text-decoration:underline;text-underline-offset:.2em}
.osw-button:active:not(:disabled){transform:translateY(1px)}
.osw-button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.osw-navlink{position:relative}
.osw-navlink::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--rule-accent);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-base) var(--ease-out)}
.osw-navlink:hover::after,.osw-navlink[aria-current="page"]::after{transform:scaleX(1)}
.osw-card-link{transition:box-shadow var(--duration-base) var(--ease-standard),transform var(--duration-base) var(--ease-standard)}
.osw-card-link:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.osw-input:focus{border-color:var(--focus-ring)!important;box-shadow:var(--ring-focus);outline:none}
.osw-accordion-trigger:hover{color:var(--text-link)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
