@layer interaction {
    .zam-legal-links :is(a,button) { text-underline-offset: .2em; transition: color var(--zu-hover-fast) ease, text-decoration-color var(--zu-hover-fast) ease; cursor: pointer; }
    .zam-legal-links :is(a,button):is(:hover,:focus-visible) { color: var(--zam-text); text-decoration-color: currentColor; text-decoration-thickness: 2px; }
    :root {
        --zu-hover-fast: var(--zam-motion-fast);
        --zu-hover-ui: var(--zam-motion-ui);
        --zu-hover-fill: rgba(var(--zam-gold-rgb), .13);
        --zu-hover-line: rgba(var(--zam-gold-rgb), .75);
        --zu-media-scale: 1.025;
    }

    /* Gold actions and outline controls share feedback without changing geometry. */
    :is(.butt_big:not(.zhn-button-secondary), .usl_butt_vn, .etaps_butt, .usl_zakaz,
        .proj_butt, .post_butt, .form_col .form_butt, .wpcf7-submit, .zam-cookie-notice button) {
        transition: filter var(--zu-hover-fast) ease, box-shadow var(--zu-hover-ui) ease,
            background-position var(--zu-hover-ui) var(--zam-motion-ease),
            translate var(--zu-hover-ui) var(--zam-motion-ease), scale var(--zu-hover-fast) ease;
    }
    :is(.butt_big:not(.zhn-button-secondary), .usl_butt_vn, .etaps_butt, .usl_zakaz,
        .proj_butt, .post_butt, .form_col .form_butt, .wpcf7-submit, .zam-cookie-notice button):not(:disabled):is(:hover, :focus-visible) {
        color: var(--zam-on-gold);
        filter: brightness(var(--zam-hover-brightness));
        box-shadow: var(--zam-button-active-shadow);
        background-position: var(--zam-action-background-active);
    }
    :is(.zhn-button-secondary, .zhn-company-link, .butts_line > .butt_small, .zhn-actions > .butt_small,
        .soc_row .soc_ico, .zu-dialog-close, .zam-lightbox button, .spoiler-head,
        .owl-prev, .owl-next, .pag_left, .pag_right, .zhn-poster-icon) {
        transition: background-color var(--zu-hover-fast) ease, border-color var(--zu-hover-fast) ease,
            color var(--zu-hover-fast) ease, translate var(--zu-hover-ui) var(--zam-motion-ease),
            scale var(--zu-hover-fast) ease;
    }
    :is(.zhn-button-secondary, .zhn-company-link, .butts_line > .butt_small, .zhn-actions > .butt_small,
        .soc_row .soc_ico, .zu-dialog-close, .zam-lightbox button, .spoiler-head,
        .owl-prev, .owl-next, .pag_left, .pag_right):not(:disabled):is(:hover, :focus-visible),
    .zhn-poster:is(:hover, :focus-visible) .zhn-poster-icon {
        color: var(--zam-gold-light);
        background-color: var(--zu-hover-fill);
        border-color: var(--zu-hover-line);
        text-decoration: none;
    }
    :is(.port_gall, #otz_block, .proj_carus) .owl-buttons > div:is(:hover, :focus-visible),
    :is(.pag_left, .pag_right):is(:hover, :focus-visible) {
        box-shadow: 0 0 0 1px var(--zu-hover-line);
        opacity: 1;
    }
    .proj_carus .owl-page:is(:hover, :focus-visible) span { background-color: var(--zam-gold); opacity: 1; }
    .zd-project-filter a:not([aria-current]):is(:hover, :focus-visible) { color: var(--zam-gold-light); border-color: var(--zu-hover-line); background-color: var(--zu-hover-fill); }
    .vid_lay:is(:hover, :focus-visible) { filter: brightness(var(--zam-hover-brightness)); }

    /* A single thin indicator for the header, including phone and callback. */
    .site-header :where(.main-menu .menu > li > a, .phone, .zakaz) {
        border-bottom: 0;
        background-image: linear-gradient(currentColor, currentColor);
        background-size: 0 1px;
        background-position: left bottom;
        background-repeat: no-repeat;
        text-decoration: none;
        transition: color var(--zu-hover-fast) ease, background-size var(--zu-hover-ui) var(--zam-motion-ease);
    }
    .site-header .main-menu .menu > li > a { color: var(--zam-navigation-text); }
    .site-header .zakaz,
    .site-header :is(.main-menu .menu > li > a, .phone, .zakaz):is(:hover, :focus-visible),
    .site-header .main-menu .menu > .current-menu-item > a {
        background-size: 100% 1px;
    }
    .site-header :is(.main-menu .menu > li > a, .phone, .zakaz):is(:hover, :focus-visible),
    .site-header .main-menu .menu > .current-menu-item > a { color: var(--zam-gold); }

    /* Rows respond across their full width. The hero perimeter is independent. */
    :is(.site-header .sub-menu a, .site-header .spoiler-body a, .zhn-quick-directions a, .zhn-faq summary, .zam-accordion summary) {
        transition: background-color var(--zu-hover-fast) ease, color var(--zu-hover-fast) ease;
    }
    :is(.site-header .sub-menu a, .site-header .spoiler-body a, .zhn-quick-directions a, .zhn-faq summary, .zam-accordion summary):is(:hover, :focus-visible) {
        color: var(--zam-gold-light);
        background-color: var(--zu-hover-fill);
        text-decoration: none;
    }
    .zhn-quick-directions a > .zhn-direction-arrow { transition: translate var(--zu-hover-ui) var(--zam-motion-ease); }

    :is(.zhn-link, .butt_small, .usl_butt, .usl_zag, .post_name, .cont_tel, .cont_mail, .cont_adr,
        .pol_row a, .zu-cta-consent a, .zu-request-privacy a, footer a:not(.foot_logo, .soc_ico), .pag_p, .zam-map-credit) {
        text-decoration-thickness: 1px;
        transition: color var(--zu-hover-fast) ease, text-decoration-color var(--zu-hover-fast) ease;
    }
    :is(.zhn-link, .butt_small:not(.butts_line > *, .zhn-actions > *), .usl_butt, .usl_zag, .post_name,
        .cont_tel, .cont_mail, .cont_adr, .pol_row a, .zu-cta-consent a, .zu-request-privacy a,
        footer a:not(.foot_logo, .soc_ico), .pag_p, .zam-map-credit):is(:hover, :focus-visible) {
        color: var(--zam-gold-light);
        text-decoration: underline;
        text-underline-offset: .2em;
    }
    .zhn-cards-brief .zhn-card:is(:hover, :focus-visible) .zhn-link {
        color: var(--zam-gold-light);
    }

    /* Interactive cards have one edge. Photo controls keep a fixed frame. */
    :is(.zhn-card, .zhn-poster, .proj_block, .blog_post, .usl_block, .zam-service-card, .zam-project-card, .zam-gallery-photo) {
        transition: border-color var(--zu-hover-fast) ease, background-color var(--zu-hover-fast) ease,
            box-shadow var(--zu-hover-ui) ease, translate var(--zu-hover-ui) var(--zam-motion-ease);
    }
    :is(.zhn-card, .zhn-poster, .proj_block, .blog_post, .usl_block, .zam-service-card, .zam-project-card, .zam-gallery-photo):is(:hover, :focus-within) {
        border-color: var(--zu-hover-line);
        box-shadow: var(--zam-surface-active-shadow);
        text-decoration: none;
    }
    :is(.zhn-card, .proj_block, .blog_post, .usl_block, .zam-service-card):is(:hover, :focus-within) {
        background-color: rgba(var(--zam-gold-rgb), .045);
    }
    :is(.zhn-poster, .zam-gallery-photo, .zam-home-project-photo, .zam-project-cover, .zam-service-photo) img {
        transition: scale var(--zu-hover-ui) var(--zam-motion-ease);
    }
    :is(.zhn-part, .zhn-faq, .zam-accordion) > summary:focus-visible { outline-offset: -3px; }

    .form_col :is(input, select, textarea):not([type="submit"], [type="checkbox"]) {
        transition: border-color var(--zu-hover-fast) ease, box-shadow var(--zu-hover-fast) ease;
    }
    .form_col :is(input, select, textarea):not([type="submit"], [type="checkbox"]):focus {
        border-color: var(--zam-gold-light);
        outline: none;
        box-shadow: 0 0 0 3px rgba(var(--zam-gold-rgb), .2);
    }
    .form_col :is(input, select, textarea).wpcf7-not-valid { border-color: var(--zam-error); }
    .form_col :is(input, select, textarea):not([type="submit"], [type="checkbox"], .wpcf7-not-valid, :focus, :disabled):hover {
        border-color: var(--zu-hover-line);
    }

    :is(a.logo, a.custom-logo-link) img {
        transform-origin: center;
        transition: filter var(--zu-hover-fast) ease, translate var(--zu-hover-ui) var(--zam-motion-ease),
            scale var(--zu-hover-ui) var(--zam-motion-ease);
    }
    :is(a.logo, a.custom-logo-link):is(:hover, :focus-visible) img {
        filter: brightness(1.2) saturate(1.12) drop-shadow(0 0 5px rgba(var(--zam-gold-rgb), .45));
    }
    @media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
        :is(.butt_big, .usl_butt_vn, .etaps_butt, .usl_zakaz, .proj_butt, .post_butt, .form_col .form_butt,
            .wpcf7-submit, .zhn-company-link, .butts_line > .butt_small, .zhn-actions > .butt_small):not(:disabled):hover {
            translate: 0 var(--zam-action-lift);
        }
        :is(.butt_big, .usl_butt_vn, .etaps_butt, .usl_zakaz, .proj_butt, .post_butt, .form_col .form_butt,
            .wpcf7-submit, .zhn-company-link, .butts_line > .butt_small, .zhn-actions > .butt_small):not(:disabled):active {
            translate: none;
            scale: var(--zam-press-scale);
        }
        :is(a.zhn-card, .proj_block, .blog_post, .usl_block, .zam-service-card):hover { translate: 0 var(--zam-action-lift); }
        :is(.zhn-poster, .zam-gallery-photo, .zam-home-project-photo, .zam-project-cover, .zam-service-photo):hover img {
            scale: var(--zu-media-scale);
        }
        .zhn-quick-directions a:hover > .zhn-direction-arrow { translate: 3px 0; }
        :is(a.logo, a.custom-logo-link):hover img { translate: 0 var(--zam-action-lift); scale: 1.06; }
        :is(a.logo, a.custom-logo-link):active img { translate: none; scale: var(--zam-press-scale); }
    }
    @media (prefers-reduced-motion: reduce) {
        :root { --zu-hover-fast: 0ms; --zu-hover-ui: 0ms; }
    }
}
