/* Shared contact, validation and loading states. */
.duco-mobile-cta{display:none}
.duco-field-error{display:block;margin-top:8px;color:#a52020;font-size:13px;line-height:1.5;font-weight:400}
.contact-dialog [aria-invalid=true]{border-color:#a52020;background:#fff9f9}
.duco-form-status,.duco-form-privacy{font-size:12px;line-height:1.65;margin-top:14px;color:#55555f}
.duco-form-privacy a{text-decoration:underline;text-underline-offset:3px}
.contact-dialog .form-submit:disabled{cursor:wait;opacity:.7;transform:none;box-shadow:none}
.duco-route-error{padding-top:190px;padding-bottom:100px;min-height:70vh;max-width:900px}
.duco-route-error h1{font-size:clamp(40px,7vw,82px);line-height:1.12;margin:20px 0}
.duco-route-error>p{max-width:600px;font-size:19px;line-height:1.7}
.duco-route-error>div{display:flex;gap:28px;align-items:center;flex-wrap:wrap;margin-top:32px}
.project-image[data-image-state=loading]::after,.reference-logo[data-image-state=loading]::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(110deg,transparent 25%,#ffffff98 50%,transparent 75%);background-size:250% 100%;animation:duco-image-loading 1.6s ease-in-out infinite;pointer-events:none}
.reference-logo{position:relative}
.reference-logo.is-dark .reference-wordmark{color:#fff}
.project-image[data-image-state=error] .project-fallback{display:flex}
@keyframes duco-image-loading{from{background-position:180% 0}to{background-position:-80% 0}}
@media(prefers-reduced-motion:reduce){.project-image[data-image-state=loading]::after,.reference-logo[data-image-state=loading]::after{animation:none;background:#ffffff30}}
@media(max-width:760px){
 body{padding-bottom:calc(78px + env(safe-area-inset-bottom,0px))}
 .duco-mobile-cta{position:fixed;z-index:44;inset-inline:0;bottom:var(--duco-cookie-height,0px);display:grid;grid-template-columns:1.1fr 1fr;gap:8px;padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));background:#ffffffed;backdrop-filter:blur(14px);border-top:1px solid #ddd;box-shadow:0 -4px 24px #00000009}
 .duco-mobile-cta>a{display:flex;align-items:center;justify-content:center;gap:7px;min-height:46px;padding:10px 9px;border:1px solid #171719;border-radius:999px;font-size:12px;font-weight:500;line-height:1.3;text-align:center;background:#171719;color:#fff}
 .duco-mobile-cta>a+a{background:#fff;color:#171719}
 .duco-mobile-cta img{width:20px;height:20px;filter:brightness(0) invert(1);flex:none}
 .whatsapp-widget,.dulab-wa{bottom:calc(88px + env(safe-area-inset-bottom,0px) + var(--duco-cookie-height,0px));z-index:45}
 .whatsapp-panel{max-height:calc(100svh - 180px);overflow-y:auto}
 html[data-consent-banner=open] .duco-mobile-cta,html[data-consent-banner=open] .whatsapp-widget,html[data-consent-banner=open] .dulab-wa,body:has(dialog[open]) .duco-mobile-cta{display:none}
 .contact-dialog input,.contact-dialog textarea,.contact-dialog select{font-size:16px}
 .duco-route-error{padding-top:140px;padding-bottom:70px}
 .category-hero h1,.category-description,.service-item,.dulab-article-hero h1,.dulab-card h2{overflow-wrap:anywhere;min-width:0}
 .category-sticky-nav{max-width:100%}
 .project-filters{max-width:100%}
 .project-filters button{min-width:0}
}
@media(max-width:360px){.duco-mobile-cta>a{font-size:11px;padding-inline:6px}.project-filters button{font-size:11px;padding-inline:9px}.project-actions{gap:10px}}
