/* Brillos y footer animado adaptados al lenguaje visual de construcción. */
@property --construction-angle {
    syntax: "<angle>";
    initial-value: 0deg;
    inherits: false;
}

.button {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}

.button::before {
    position: absolute;
    top: -25%;
    bottom: -25%;
    left: -45%;
    z-index: 2;
    width: 24%;
    background: rgba(255,255,255,.34);
    content: "";
    filter: blur(9px);
    pointer-events: none;
    transform: skewX(-18deg);
    transition: transform .7s ease;
}

.button:hover::before,
.button:focus-visible::before {
    transform: translateX(620%) skewX(-18deg);
}

.service-card,
.review-card,
.service-detail,
.gallery-card,
.quote-form,
.form-aside,
.about-media,
.company-profile-card,
.credential-card,
.project-card-image-wrap,
.cta .container {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}

.service-card::after,
.review-card::after,
.service-detail::after,
.gallery-card::after,
.quote-form::after,
.form-aside::after,
.about-media::after,
.company-profile-card::after,
.credential-card::after,
.project-card-image-wrap::after,
.cta .container::after {
    position: absolute;
    top: -30%;
    bottom: -30%;
    left: -55%;
    z-index: 3;
    width: 18%;
    background: rgba(255,255,255,.16);
    content: "";
    filter: blur(16px);
    pointer-events: none;
    transform: skewX(-16deg);
    transition: transform .85s ease;
}

.service-card:hover::after,
.review-card:hover::after,
.service-detail:hover::after,
.gallery-card:hover::after,
.quote-form:hover::after,
.form-aside:hover::after,
.about-media:hover::after,
.company-profile-card:hover::after,
.credential-card:hover::after,
.project-card-image-wrap:hover::after,
.project-card-image-wrap:focus-visible::after,
.cta .container:hover::after {
    transform: translateX(850%) skewX(-16deg);
}

.hero-copy .button:hover,
.cta .button:hover,
.quote-form .button:hover {
    box-shadow: 0 16px 38px color-mix(in srgb, var(--primary) 46%, transparent), 0 0 24px rgba(255,255,255,.22);
}

.footer-glow {
    position: relative;
    overflow: hidden;
    background: var(--footer-background, #111412);
}

.site-footer.footer-glow {
    padding: 34px 0;
}

.footer-shell {
    width: min(1180px, calc(100% - 40px));
    margin-inline: auto;
}

.footer-frame {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: 48px 50px 22px;
    border: 0;
    border-radius: calc(var(--radius, 8px) + 14px);
    background: rgba(255,255,255,.07);
    box-shadow: 0 0 28px color-mix(in srgb, var(--footer-glow-color, var(--secondary)) 18%, transparent);
}

.footer-frame::before {
    position: absolute;
    inset: -45%;
    z-index: -2;
    background: conic-gradient(from var(--construction-angle), transparent 0 68deg, var(--footer-glow-color, var(--secondary)) 102deg, rgba(255,255,255,.9) 126deg, var(--footer-glow-color, var(--secondary)) 154deg, transparent 202deg 360deg);
    content: "";
    animation: construction-spin-border 4.5s linear infinite;
}

.footer-frame::after {
    position: absolute;
    inset: 1px;
    z-index: -1;
    border-radius: calc(var(--radius, 8px) + 13px);
    background: var(--footer-background, #111412);
    content: "";
}

.footer-frame .footer-grid {
    gap: 55px;
}

.footer-frame .footer-bottom {
    margin-top: 42px;
}

.footer-credit {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.footer-credit > span:last-child {
    line-height: 1.45;
}

body:not(.theme-button-shine) .button::before,
body:not(.theme-button-shine) .service-card::after,
body:not(.theme-button-shine) .review-card::after,
body:not(.theme-button-shine) .service-detail::after,
body:not(.theme-button-shine) .gallery-card::after,
body:not(.theme-button-shine) .quote-form::after,
body:not(.theme-button-shine) .form-aside::after,
body:not(.theme-button-shine) .about-media::after,
body:not(.theme-button-shine) .company-profile-card::after,
body:not(.theme-button-shine) .credential-card::after,
body:not(.theme-button-shine) .project-card-image-wrap::after,
body:not(.theme-button-shine) .cta .container::after {
    display: none;
}

body:not(.theme-footer-glow) .footer-frame {
    border: 1px solid rgba(255,255,255,.12);
    box-shadow: none;
}

body:not(.theme-footer-glow) .footer-frame::before {
    display: none;
}

@keyframes construction-spin-border { to { --construction-angle: 360deg; } }

@media (max-width: 980px) {
    .footer-frame { padding: 38px 34px 22px; }
}

@media (max-width: 650px) {
    .site-footer.footer-glow { padding: 24px 0; }
    .footer-shell { width: min(100% - 28px, 1180px); }
    .footer-frame { padding: 30px 22px 20px; }
    .footer-credit { align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
    .footer-frame::before { animation: none !important; }
    .button::before,
    .service-card::after,
    .review-card::after,
    .service-detail::after,
    .gallery-card::after,
    .quote-form::after,
    .form-aside::after,
    .about-media::after,
    .company-profile-card::after,
    .credential-card::after,
    .project-card-image-wrap::after,
    .cta .container::after { transition: none !important; }
}
