/* Global interaction defaults for ordinary Winsane controls.
 * Primary CTAs (.button/.wp-element-button/.elementor-button) and third-party
 * cookie/review widgets retain their own interaction styles.
 * A component can set --winsane-control-state-bg / --winsane-control-state-color
 * to opt into another state color without adding another hover override.
 * The narrow !important reset defeats legacy builder button:hover/focus rules;
 * existing component-specific important styles still take precedence.
 */
body.winsane-site button:not(:where(.button,.wp-element-button,.elementor-button,[class*="cky-"],[class*="cr-"],[class*="ivole-"])):not(:disabled):is(:hover,:focus,:active){
    background:var(--winsane-control-state-bg,#f0f2f4)!important;
    color:var(--winsane-control-state-color,#12151a)!important;
    box-shadow:none!important;
}
/* Disabled controls keep the same quiet appearance in every pointer state. */
body.winsane-site button:not(:where(.button,.wp-element-button,.elementor-button,[class*="cky-"],[class*="cr-"],[class*="ivole-"])):disabled,
body.winsane-site button:not(:where(.button,.wp-element-button,.elementor-button,[class*="cky-"],[class*="cr-"],[class*="ivole-"])):disabled:is(:hover,:focus,:active){
    background:var(--winsane-control-disabled-bg,transparent)!important;
    color:var(--winsane-control-disabled-color,#a3a9b2)!important;
    border-color:var(--winsane-control-disabled-border,transparent)!important;
    opacity:1!important;
    box-shadow:none!important;
    text-shadow:none!important;
    filter:none!important;
    transform:none!important;
    transition:none!important;
    cursor:not-allowed!important;
}
/* Selected controls remain visibly selected during pointer/keyboard interaction. */
body.winsane-site .patch-topic-filters button[aria-pressed="true"]{
    --winsane-control-state-bg:#c4f541;
}
/* Keep dark announcement controls legible even when newly added. */
body.winsane-site .announcement button{
    --winsane-control-state-bg:#ffffff0d;
    --winsane-control-state-color:#c4f541;
}
/* Retain a visible keyboard focus indicator, including on future plain buttons. */
body.winsane-site button:not(:where(.button,.wp-element-button,.elementor-button,[class*="cky-"],[class*="cr-"],[class*="ivole-"])):focus-visible{
    outline:2px solid var(--winsane-control-focus-color,#657a28);
    outline-offset:3px;
}

.winsane-cart-patch-preview{display:flex;align-items:center;justify-content:center;width:100%;min-height:72px;padding:8px;background:#f2f3ee;overflow:hidden}.winsane-cart-patch-preview>span{display:block;width:100%;padding:8px 4px;background:#151515;color:#fff;font:700 9px/1.3 Arial,Helvetica,sans-serif;letter-spacing:.01em;text-align:center;white-space:normal;overflow-wrap:anywhere;border:2px solid #353535}.winsane-cart-patch-preview small{display:inline-block;font:700 12px/1 Arial,sans-serif;margin-right:3px}
.ws-cart-photo .winsane-cart-patch-preview{min-height:92px}
.winsane-personalization-link{display:inline-block;padding:8px 0;text-decoration:underline!important}
