/* Piezas de interfaz comunes (site-ui.js): globo de idioma, eclipse de contacto y aviso de cookies. */

/* 1. Idioma ------------------------------------------------------------- */
.header-lang-switcher.ctd-lang-ready { padding-right: 0 !important; }
.header-lang-switcher.ctd-lang-ready::after { content: none !important; display: none !important; }
.header-lang-switcher.ctd-lang-ready > select { display: none !important; }
.ctd-lang { position: relative; display: inline-flex; }
.ctd-lang__btn { display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: #0D0D0D; cursor: pointer; transition: background-color .2s, transform .3s; }
.header-dark .ctd-lang__btn { color: #fff; }
.ctd-lang__btn:hover, .ctd-lang.is-open .ctd-lang__btn { background: rgba(25, 84, 237, .1); }
.header-dark .ctd-lang__btn:hover, .header-dark .ctd-lang.is-open .ctd-lang__btn { background: rgba(255, 255, 255, .12); }
.ctd-lang__btn svg { transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.ctd-lang__btn:hover svg, .ctd-lang.is-open .ctd-lang__btn svg { transform: rotate(-25deg); }
.ctd-lang__menu { position: absolute; top: calc(100% + 10px); right: 0; z-index: 1002; min-width: 168px; margin: 0; padding: 6px; list-style: none; background: #fff; border-radius: 14px; box-shadow: 0 20px 44px -16px rgba(13, 30, 80, .35), 0 0 0 1px rgba(13, 30, 80, .06); opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity .2s, transform .2s, visibility .2s; }
.ctd-lang.is-open .ctd-lang__menu { opacity: 1; visibility: visible; transform: none; }
.ctd-lang__menu a { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 9px; color: #0D0D0D !important; font-size: 15px; font-weight: 500; text-decoration: none; }
.ctd-lang__menu a:hover { background: #F2F4F7; }
.ctd-lang__menu a[aria-current] { color: #1954ED !important; }
.ctd-lang__menu a svg { margin-left: auto; }
.ctd-lang__code { display: inline-grid; place-items: center; width: 28px; height: 22px; border-radius: 6px; background: #F2F4F7; font-size: 11px; font-weight: 700; letter-spacing: .04em; color: #626E7B; }

/* 2. Eclipse de contacto -------------------------------------------------- */
.ctd-orbit { position: fixed; inset: 0; z-index: 100000; pointer-events: none; }
.ctd-orbit__veil { position: absolute; inset: 0; background: radial-gradient(circle at var(--vx, 50%) var(--vy, 50%), rgba(11, 18, 32, .18), rgba(11, 18, 32, .42)); opacity: 0; transition: opacity .35s; pointer-events: auto; }
.ctd-orbit.is-open .ctd-orbit__veil { opacity: 1; }
.ctd-orbit__center { position: absolute; width: 0; height: 0; pointer-events: none; }
.ctd-eclipse { position: absolute; left: -46px; top: -46px; width: 92px; height: 92px; padding: 0; border: 0; border-radius: 50%; cursor: pointer; pointer-events: auto; background: radial-gradient(circle at 42% 38%, #1B2436 0%, #0B1220 62%); box-shadow: 0 0 0 2px rgba(255, 255, 255, .06), 0 0 22px 6px rgba(255, 196, 120, .85), 0 0 60px 18px rgba(255, 140, 60, .35), 0 0 110px 40px rgba(25, 84, 237, .35); transform: scale(.35); opacity: 0; transition: transform .45s cubic-bezier(.2, 1.2, .3, 1), opacity .3s; }
.ctd-eclipse::before { content: ""; position: absolute; inset: -3px; border-radius: 50%; background: conic-gradient(from 0deg, rgba(255, 220, 160, .0), rgba(255, 220, 160, .9), rgba(255, 220, 160, 0) 40%); -webkit-mask: radial-gradient(circle, transparent 60%, #000 61%); mask: radial-gradient(circle, transparent 60%, #000 61%); animation: ctd-corona 6s linear infinite; }
@keyframes ctd-corona { to { transform: rotate(360deg); } }
.ctd-orbit.is-open .ctd-eclipse { transform: scale(1); opacity: 1; }
.ctd-eclipse__x { position: absolute; inset: 0; }
.ctd-eclipse__x::before, .ctd-eclipse__x::after { content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 2px; margin: -1px 0 0 -11px; background: rgba(255, 255, 255, .85); border-radius: 2px; transform: rotate(45deg); }
.ctd-eclipse__x::after { transform: rotate(-45deg); }
.ctd-planet { position: absolute; left: -50px; top: -50px; width: 100px; height: 100px; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: #fff !important; text-decoration: none !important; font-size: 13px; font-weight: 600; line-height: 1.1; text-align: center; pointer-events: auto; transform: translate(0, 0) scale(.2); opacity: 0; transition: transform .7s cubic-bezier(.2, 1.35, .35, 1), opacity .35s, box-shadow .3s; }
.ctd-planet span { max-width: 80px; }
.ctd-planet--form { background: radial-gradient(circle at 32% 28%, #6E95FF 0%, #1954ED 55%, #0F3BB5 100%); box-shadow: inset -10px -12px 24px rgba(0, 0, 0, .28), 0 14px 30px -10px rgba(25, 84, 237, .7); }
.ctd-planet--wa { background: radial-gradient(circle at 32% 28%, #7EF0A8 0%, #25D366 55%, #128C4A 100%); box-shadow: inset -10px -12px 24px rgba(0, 0, 0, .25), 0 14px 30px -10px rgba(18, 140, 74, .7); }
.ctd-orbit.is-open .ctd-planet { transform: translate(var(--tx), var(--ty)) scale(1); opacity: 1; }
.ctd-orbit.is-open .ctd-planet--wa { transition-delay: .09s; }
.ctd-planet:hover, .ctd-planet:focus-visible { box-shadow: inset -10px -12px 24px rgba(0, 0, 0, .25), 0 0 0 4px rgba(255, 255, 255, .55), 0 18px 34px -10px rgba(0, 0, 0, .45); outline: none; }
.ctd-orbit.is-open .ctd-planet:hover { transform: translate(var(--tx), var(--ty)) scale(1.06); }
@media (prefers-reduced-motion: reduce) {
	.ctd-planet, .ctd-eclipse { transition-duration: .01s !important; }
	.ctd-eclipse::before { animation: none; }
}

/* 3. Cookies --------------------------------------------------------------- */
.ctd-cookies { position: fixed; left: 24px; bottom: 24px; z-index: 99999; max-width: 420px; padding: 22px 22px 18px; background: #fff; border-radius: 18px; box-shadow: 0 30px 60px -24px rgba(13, 30, 80, .45), 0 0 0 1px rgba(13, 30, 80, .06); font-family: "DM Sans", system-ui, sans-serif; opacity: 0; transform: translateY(20px); transition: opacity .35s, transform .35s; }
.ctd-cookies.is-in { opacity: 1; transform: none; }
.ctd-cookies p { margin: 0; font-size: 14px; line-height: 1.55; color: #3B4552; }
.ctd-cookies p a { color: #1954ED; text-decoration: underline; }
.ctd-cookies__btns { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 16px; }
.ctd-cookies__btns button { display: flex; align-items: center; justify-content: center; text-align: center; font-family: inherit; padding: 12px 14px; border-radius: 10px; font-size: 15px; font-weight: 600; cursor: pointer; border: 1px solid #1954ED; transition: background-color .2s, color .2s; }
.ctd-cookies__btns button[data-v="denied"] { background: #fff; color: #1954ED; }
.ctd-cookies__btns button[data-v="denied"]:hover { background: #EEF2FF; }
.ctd-cookies__btns button[data-v="granted"] { background: #1954ED; color: #fff; }
.ctd-cookies__btns button[data-v="granted"]:hover { background: #1446CC; }
@media (max-width: 600px) {
	.ctd-cookies { left: 12px; right: 12px; bottom: 12px; max-width: none; }
}

/* 5. Tarjetas de casos de éxito (home "Trabajos destacados", listado y "Más proyectos") */
/* KPIs centrados */
.brx-grid > .brxe-div:has(> h5.h5 + .brxe-text-basic) { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; text-align: center; }
.brx-grid > .brxe-div:has(> h5.h5 + .brxe-text-basic) > * { text-align: center; }
/* Misma altura de imagen aunque el título ocupe una o dos líneas: la imagen va al pie de la tarjeta */
/* Entrada desde los laterales */
@keyframes ctdInLeft { from { opacity: 0; transform: translate3d(-80px, 0, 0); } to { opacity: 1; transform: none; } }
@keyframes ctdInRight { from { opacity: 0; transform: translate3d(80px, 0, 0); } to { opacity: 1; transform: none; } }
.ctd-case-card.ctd-from-left.brx-animated { animation-name: ctdInLeft !important; animation-duration: .9s !important; }
.ctd-case-card.ctd-from-right.brx-animated { animation-name: ctdInRight !important; animation-duration: .9s !important; }
@media (prefers-reduced-motion: reduce) { .ctd-case-card.brx-animated { animation: none !important; opacity: 1 !important; } }
