/* PL Botón Contacto Elementor — estructura base inspirada en la referencia.
 * No se fuerzan colores ni textos: todo queda bajo control de Elementor. */
.plbce-contact-wrap{
    display:flex;
    width:100%;
    align-items:center;
}
.plbce-contact{
    display:inline-flex;
    align-items:center;
    position:relative;
    max-width:100%;
    min-height:68px;
    text-decoration:none !important;
    line-height:1.1;
    isolation:isolate;
    box-sizing:border-box;
    transition:transform .22s ease, filter .22s ease;
}
.plbce-contact:focus-visible{
    outline:2px solid currentColor;
    outline-offset:4px;
}
/* Cuerpo exterior: abarca icono principal + bloque de textos.
 * El relleno y el borde se controlan desde "Cuerpo del botón". */
.plbce-contact::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:0;
    box-sizing:border-box;
    pointer-events:none;
    background-color:transparent;
    transition:background-color .22s ease, border-color .22s ease, box-shadow .22s ease;
}
/* Capa independiente para un borde degradado que puede terminar en transparente. */
.plbce-contact::after{
    content:"";
    position:absolute;
    inset:0;
    z-index:5;
    box-sizing:border-box;
    pointer-events:none;
    padding:var(--plbce-shell-gradient-width, 2px);
    background:linear-gradient(
        var(--plbce-shell-gradient-angle, 90deg),
        var(--plbce-shell-gradient-start, transparent),
        var(--plbce-shell-gradient-end, transparent)
    );
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite:xor;
    mask-composite:exclude;
    opacity:0;
    transition:opacity .22s ease, background .22s ease;
}
/* Círculo grande izquierdo, superpuesto al cuerpo como en la referencia */
.plbce-contact__primary{
    position:relative;
    z-index:3;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 66px;
    width:66px;
    height:66px;
    box-sizing:border-box;
    border-radius:50%;
    overflow:visible;
    transition:transform .22s ease, background-color .22s ease, border-color .22s ease;
}
.plbce-contact__primary i{font-size:30px;line-height:1}
.plbce-contact__primary svg{width:30px;height:30px}
.plbce-contact__primary i,
.plbce-contact__primary svg,
.plbce-contact__secondary i,
.plbce-contact__secondary svg{display:block}
/* El cuerpo entra debajo del círculo. No tiene color por defecto. */
.plbce-contact__body{
    position:relative;
    z-index:2;
    display:flex;
    align-items:center;
    min-width:190px;
    min-height:64px;
    margin-left:-22px;
    box-sizing:border-box;
    transition:background-color .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.plbce-contact__content{
    display:flex;
    flex-direction:column;
    justify-content:center;
    width:100%;
    min-width:0;
    gap:0;
}
/* Línea superior independiente, desplazada para arrancar después del círculo. */
.plbce-contact__top{
    display:block;
    min-height:18px;
    padding:0 18px 0 32px;
    box-sizing:border-box;
    white-space:normal;
    line-height:1.05;
}
/* Franja inferior tipo cápsula; el lado izquierdo queda oculto bajo el círculo. */
.plbce-contact__mainrow{
    display:flex;
    align-items:center;
    min-width:0;
    min-height:40px;
    padding:7px 18px 7px 32px;
    gap:9px;
    box-sizing:border-box;
    border-radius:0 999px 999px 0;
    transition:background-color .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.plbce-contact__secondary{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
}
.plbce-contact__secondary i{font-size:20px;line-height:1}
.plbce-contact__secondary svg{width:20px;height:20px}
.plbce-contact__maintext{
    min-width:0;
    white-space:nowrap;
    word-break:normal;
    transition:color .22s ease;
}
.plbce-contact--lift:hover{transform:translateY(-3px)}
.plbce-contact--pulse .plbce-contact__primary::before{
    content:"";
    position:absolute;
    inset:calc(var(--plbce-pulse-distance, 10px) * -1);
    border:2px solid currentColor;
    border-radius:inherit;
    opacity:0;
    pointer-events:none;
    animation:plbce-pulse 2s ease-out infinite;
}
@keyframes plbce-pulse{
    0%{transform:scale(.75);opacity:.75}
    70%{transform:scale(1);opacity:0}
    100%{transform:scale(1);opacity:0}
}
.plbce-contact--floating{
    position:fixed;
    right:20px;
    bottom:20px;
    z-index:9999;
}
@media(max-width:767px){
    .plbce-contact{max-width:calc(100vw - 24px)}
    .plbce-contact__body{min-width:0}
    .plbce-contact__maintext{white-space:normal}
}
@media (prefers-reduced-motion:reduce){
    .plbce-contact,
    .plbce-contact__primary,
    .plbce-contact__body,
    .plbce-contact__mainrow,
    .plbce-contact__maintext{transition:none !important}
    .plbce-contact--pulse .plbce-contact__primary::before{animation:none !important;display:none}
}
