/**
 * @author Alexis Bogado <alexis.bogado@s3w.es>
 * @package webinar-web
 */

/* Prevenir FOUC */
body {
  visibility: hidden;
}

 @font-face {
  font-family: 'Texta';
  src: url('../../fonts/Texta-BoldIt.woff2') format('woff2'),
      url('../../fonts/Texta-BoldIt.woff') format('woff');
  font-weight: bold;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/TextaAlt-Bold.woff2') format('woff2'),
      url('../../fonts/TextaAlt-Bold.woff') format('woff');
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/TextaAlt-Light.woff2') format('woff2'),
      url('../../fonts/TextaAlt-Light.woff') format('woff');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/TextaAlt-Book.woff2') format('woff2'),
      url('../../fonts/TextaAlt-Book.woff') format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/TextaAlt-It.woff2') format('woff2'),
      url('../../fonts/TextaAlt-It.woff') format('woff');
  font-weight: normal;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/TextaAlt-Medium.woff2') format('woff2'),
      url('../../fonts/TextaAlt-Medium.woff') format('woff');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/TextaAlt-MediumIt.woff2') format('woff2'),
      url('../../fonts/TextaAlt-MediumIt.woff') format('woff');
  font-weight: 500;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/TextaAlt-Regular.woff2') format('woff2'),
      url('../../fonts/TextaAlt-Regular.woff') format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/TextaAlt-BookIt.woff2') format('woff2'),
      url('../../fonts/TextaAlt-BookIt.woff') format('woff');
  font-weight: normal;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/Texta-Book.woff2') format('woff2'),
      url('../../fonts/Texta-Book.woff') format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/Texta-It.woff2') format('woff2'),
      url('../../fonts/Texta-It.woff') format('woff');
  font-weight: normal;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/Texta-Bold.woff2') format('woff2'),
      url('../../fonts/Texta-Bold.woff') format('woff');
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/Texta-Medium.woff2') format('woff2'),
      url('../../fonts/Texta-Medium.woff') format('woff');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/Texta-Medium.woff2') format('woff2'),
      url('../../fonts/Texta-Medium.woff') format('woff');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}


@font-face {
  font-family: 'Texta';
  src: url('../../fonts/Texta-Bold.woff2') format('woff2'),
      url('../../fonts/Texta-Bold.woff') format('woff');
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Texta';
  src: url('../../fonts/Texta-MediumIt.woff2') format('woff2'),
      url('../../fonts/Texta-MediumIt.woff') format('woff');
  font-weight: 500;
  font-style: italic;
  font-display: swap;
}

/* ========================================
   CSS Variables - Color Palette
   ======================================== */
:root {
  --color-primary: #04446c;
  --color-white: #FFFFFF;
  --color-red: #d4046c;
  --color-bg-button: #d4046c;
  --color-footer-bg: #04446c;
}

html {
    height: 100%;
    scroll-behavior: smooth;
}

/* Animación de carga suave */
body {
    animation: fadeIn 0.5s ease-in;
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

body {
    font-family: 'Montserrat', 'Texta', sans-serif;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    font-size: 16px;
    line-height: 1.6;
}

/* Mejora de legibilidad en móvil */
@media (max-width: 768px) {
    body {
        font-size: 15px;
        line-height: 1.5;
    }
    
    h1 {
        font-size: clamp(1.75rem, 5vw, 2.5rem) !important;
        line-height: 1.2 !important;
    }
    
    h2 {
        font-size: clamp(1.5rem, 4vw, 2rem) !important;
        line-height: 1.3 !important;
    }
    
    h3 {
        font-size: clamp(1.25rem, 3.5vw, 1.75rem) !important;
        line-height: 1.3 !important;
    }
    
    h6 {
        font-size: clamp(0.9rem, 2.5vw, 1.1rem) !important;
    }
    
    p, span, a {
        font-size: clamp(0.875rem, 2.5vw, 1rem) !important;
        line-height: 1.5 !important;
    }
    
    small {
        font-size: clamp(0.75rem, 2vw, 0.875rem) !important;
    }
}

*:disabled {
    cursor: not-allowed;
}

/* #main-menu .nav-link:hover {
    color: rgba(41, 34, 92, .8) !important;
} */

.welcome-title {
  padding: 0px 0px;
  /* background-color: #fff; */
  width: 70%;
  color: #242445 !important;
  margin: 0 auto;
  border-radius: 40px;
  font-size: 18px;
}

@media (max-width: 767px) {
    .welcome-title {
      padding: 0px 0px;
      /* background-color: var(--color-primary); */
      color: #242445 !important;
      width: 100%;
      color: var(--color-white);
      margin: 0 auto;
      border-radius: 40px;
      font-size: 18px;
    }
}

/* Navbar fixed-top con z-index alto para estar por encima del banner */
#main-menu {
    z-index: 1040 !important;
}

#main-menu .nav-link {
    position: relative;
    transition: color 0.3s ease;
}

#main-menu .nav-link::after {
    content: ' ';
    display: block;
    height: 3px;
    width: 0;
    transition: width .3s ease-in-out;
    background: currentColor;
}

#main-menu .nav-link:hover {
    color: rgba(255, 255, 255, 0.8);
}

#main-menu .dropdown.show .nav-link::after, #main-menu .nav-link:hover::after {
    width: 100%;
}

/* Estilo para nav-link activo */
#main-menu .nav-link.active,
#nav-menu .nav-link.active {
    font-weight: bold;
}

#main-menu .nav-link.active::after,
#nav-menu .nav-link.active::after {
    width: 100%;
    background-color: currentColor;
}

#main-menu, #main-menu img {
    transition: max-width 0.5s, background-color 0.5s;
}

#main-logo img {
    /* border-width: 30px 20px 20px 20px; */
    border-style: solid;
    border-color: transparent;
}

.menu-text {
    letter-spacing: 2px;
    font-size: 0.65rem;
    font-weight: 600;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}

/* ========================================
   Hamburger Menu - Botón Mejorado
   ======================================== */

#open-menu {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 1050;
    padding: 0.5rem;
    border-radius: 8px;
}

#open-menu:hover {
    transform: translateY(-2px);
    background-color: rgba(255, 255, 255, 0.05);
}

#open-menu:active {
    transform: scale(0.95);
}

.hamburger-box {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
}

.hamburger-inner {
    width: 28px;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.hamburger-line {
    display: block;
    width: 100%;
    height: 3px;
    background-color: #ffffff;
    border-radius: 2px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

.hamburger-line:nth-child(1) {
    transform-origin: top left;
}

.hamburger-line:nth-child(2) {
    transform-origin: center;
}

.hamburger-line:nth-child(3) {
    transform-origin: bottom left;
}

#open-menu:hover .hamburger-line:nth-child(2) {
    width: 85%;
    margin-left: auto;
}

#open-menu:hover .hamburger-line:nth-child(3) {
    width: 70%;
    margin-left: auto;
}

/* Animación de pulso sutil */
@keyframes pulse-glow {
    0%, 100% {
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    }
    50% {
        box-shadow: 0 1px 8px rgba(255, 255, 255, 0.3);
    }
}

#open-menu:hover .hamburger-line {
    animation: pulse-glow 2s infinite;
}

/* ========================================
   Sidebar Overlay
   ======================================== */

.sidebar-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(2px);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), 
                visibility 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1050;
    pointer-events: none;
}

.sidebar-overlay.active {
    opacity: 1;
    visibility: visible;
    pointer-events: all;
}

/* ========================================
   Close Button - Mejorado
   ======================================== */

#close-menu {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 10;
    cursor: pointer;
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
}

#close-menu i {
    font-size: 1.5rem;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

#close-menu:hover {
    background-color: rgba(255, 255, 255, 0.15);
    transform: scale(1.05);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

#close-menu:hover i {
    transform: rotate(90deg);
}

#close-menu:active {
    transform: scale(0.95);
}

/* ========================================
   Sidebar Navigation - Animaciones
   ======================================== */

/* ========================================
   Sidebar Navigation - Animaciones
   ======================================== */

#nav-menu {
    z-index: 1060 !important;
    overflow: hidden;
    box-shadow: 2px 0 20px rgba(0, 0, 0, 0.3);
}

#nav-menu.w-0 .navbar-nav {
    visibility: hidden;
    opacity: 0;
    transform: translateX(-20px);
}

#nav-menu .navbar-nav {
    display: visible;
    opacity: 1;
    transform: translateX(0);
    transition: visibility 0s, 
                opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1) 0.1s,
                transform 0.4s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;
}

/* Animación de entrada escalonada para items del menú */
#nav-menu .nav-link,
#nav-menu li {
    opacity: 0;
    transform: translateX(-30px);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

#nav-menu:not(.w-0) .nav-link,
#nav-menu:not(.w-0) li {
    opacity: 1;
    transform: translateX(0);
}

#nav-menu:not(.w-0) li:nth-child(1) { transition-delay: 0.1s; }
#nav-menu:not(.w-0) li:nth-child(2) { transition-delay: 0.15s; }
#nav-menu:not(.w-0) li:nth-child(3) { transition-delay: 0.2s; }
#nav-menu:not(.w-0) li:nth-child(4) { transition-delay: 0.25s; }
#nav-menu:not(.w-0) li:nth-child(5) { transition-delay: 0.3s; }
#nav-menu:not(.w-0) li:nth-child(6) { transition-delay: 0.35s; }

#nav-menu .nav-link {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: block;
    padding: 1rem 1.5rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    position: relative;
    overflow: hidden;
}

/* Efecto de barra lateral en hover */
#nav-menu .nav-link::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 4px;
    background: linear-gradient(180deg, #d4046c, #ff1493);
    transform: scaleY(0);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

#nav-menu .nav-link:hover::before {
    transform: scaleY(1);
}

#nav-menu .nav-link:hover {
    background: linear-gradient(90deg, rgba(212, 4, 108, 0.15) 0%, rgba(0, 0, 0, 0) 100%);
    padding-left: 2rem;
    color: rgba(255, 255, 255, 1) !important;
    transform: translateX(5px);
}

#nav-menu .nav-link.active {
    background: linear-gradient(90deg, rgba(212, 4, 108, 0.2) 0%, rgba(0, 0, 0, 0) 100%);
    border-left: 4px solid #d4046c;
}

/* Efecto de ripple en click */
#nav-menu .nav-link:active {
    transform: scale(0.98);
}

.navbar-collapse-left {
    transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important;
    height: 100vh;
    width: 380px;
    z-index: 1030;
    left: 0;
    top: 0;
    background: linear-gradient(135deg, #0c2c5c 0%, #04446c 50%, #0c2c5c 100%);
}

.maxw-65 {
    max-width: 65% !important;
}

.mw-65 {
    min-width: 65% !important;
}

.w-0 {
    width: 0 !important;
}

.bottom-0 {
    bottom: 0;
}

.right-0 {
    right: 0;
}

.arrow-left-position {
  left: 20px;top: 15px;
}

.hr-bold {
    border-width: 2px !important;
}

.w-28 {
    width: 28% !important;
}

section#inicio {
    background: #eaeef1;
    padding-top: 100px;
}

section#inicio.bg-index {
    background: url(../images/header_home.jpg) no-repeat, #eaeef1;
    background-size: cover;
}

section#inicio.bg-header {
    background: url(../images/header_home.jpg) no-repeat, #eaeef1;
    background-size: cover;
    background-position: left 0%;
}

section#inicio.bg-header-lite {
  background: url(../images/header_lite.png) no-repeat, #eaeef1;
  background-size: cover;
  background-position: left 0%;
}

.line-height-1 {
    line-height: 1;
}

.font-weight-ultrabold {
    font-weight: 900 !important;
}

.social-media-icons li {
    height: 45px;
    width: 45px;
}

.social-media-icons li a {
    border: 2px solid;
}

.social-media-icons li a:hover {
    background-color: #fff;
    color: #14112c !important;
    text-decoration: none;
    transition: all 110ms;
}

.arrow-icon {
    transition: transform .2s ease-in-out;
}

.transform-180deg {
    transform: rotate(180deg) !important;
}

.fs-12 {
    font-size: 12px;
}

.fs-14 {
    font-size: 14px;
}

.text-underlined {
    text-decoration: underline;
}

.border-lg-green {
    border-bottom: 10px solid #318b68;
}

.border-lg-dark-blue {
  border-bottom: 10px solid #202543;
}



.border-transparent{
  border-color: transparent;
}

a.text-dark-purple:hover {
    color: #38345c;
    opacity: .9;
    transform: translateX(3px);
    transition: all 0.3s ease;
}

a.text-cyan:hover {
    color: #00a09a;
    opacity: .9;
    transform: translateX(3px);
    transition: all 0.3s ease;
}

/* Animación general para todos los enlaces */
a {
    transition: all 0.3s ease;
}

a:hover {
    text-decoration: underline;
}

a:active {
    transform: scale(0.98);
}

footer a.nav-link:hover {
    text-decoration: underline;
}

#go-top {
    display: none;
    width: 60px;
    height: 60px;
    transition: all 0.3s ease;
    animation: fadeInUp 0.5s ease;
}

#go-top:hover {
    transform: translateY(-5px) scale(1.1);
    box-shadow: 0 8px 20px rgba(4, 68, 108, 0.4);
}

#go-top:active {
    transform: translateY(-2px) scale(1.05);
}

.nav-link.dropdown-toggle::after {
    border: 0 !important;
    margin: 0 !important;
    vertical-align: unset !important;
}

.transform-none {
    transform: none !important;
}

.download-box::after {
    width: 100%;
    content: ' ';
    background-color: rgba(255, 255, 255, 0.4);
    content: " ";
    position: absolute;
    top: 0;
    left: 0;
    height: 0%;
    transition: height .1s ease-in;
}

.download-box:hover::after {
    height: 100%;
    transition: height .1s ease-in;
}

/* Background colors */
.bg-purple {
    background-color: #301688 !important;
}

.bg-dark-purple {
    background-color: #14112c !important;
}

.bg-dark-blue {
  background-color: #202543 !important;
}

.bg-black {
  background-color: #000000 !important;
}

.bg-light-blue {
  background-color: #26b5f2 !important;
}

.bg-gray-purple {
    background-color: #38345c !important;
}

.bg-green {
    background-color: #78BA42 !important;
}

.bg-gray-green {
    background-color: #318b68 !important;
}

.bg-cyan {
    background-color: #00a09a !important;
}

.bg-blue {
    background-color: #004d6d !important;
}

.bg-red {
  background-color: #ed1c24 !important;
}

.bg-light-green {
    background-color: #318b6873 !important;
}

.bg-black-transparent {
  background-color: var(--color-primary) !important;
}

.bg-gray {
  background-color: var(--color-primary) !important;
}

.bg-light-gray {
    background-color: #f4f4f4;
}



/* Text colors */
.text-dark-purple {
    color: #242445;
}

.text-light-purple {
    color: #7419B5;
}

.text-cyan {
    color: #00a09a;
}

.text-gray {
    color: #cbc7c7 !important;
}

.text-light-gray {
    color: #f4f4f4 !important;
}

.text-light-cyan {
    color: #17cec7;
}

.text-blue {
    color: #004d6d;
}

.text-blue-light {
    color: #114878;
}

.text-low-blue {
    color: #e3ebf0;
}

.text-pink {
  color: #ff6775;
}

.text-red {
  color: var(--color-red) !important;
}

.text-red:focus{
  color: var(--color-red) !important;
}

.text-light-blue {
    color: #26b5f2;
}

.text-dark-blue {
    color: var(--color-primary);
}

.text-black {
  color: black;
}

/* Border colors */
.border-blue {
    border: 1px solid #004d6d !important;
}

.form-control.border-blue:focus {
    border-color: rgba(74, 179, 210, .4);
    box-shadow: 0 0 0 0.2rem rgba(74, 179, 210, .25);
}

/* iPad portrait (768px - 834px) - Imagen específica header_home_movile_ipad.png */
@media (min-width: 768px) and (max-width: 834px) {
    .banner-logos {
      bottom: 15px !important;
      z-index: 10 !important;
    }

    section#inicio .container-fluid {
        height: auto;
        min-height: 530px;
    }
    
    .banner-image-wrapper {
        min-height: 530px;
        display: flex;
        align-items: center;
    }
    
    .banner-image-wrapper img {
        width: 100%;
        height: auto;
        min-height: 530px;
        object-fit: cover;
        /* object-position: center; */
        object-position: 23%;
    }
    
    .banner-text-overlay {
        position: absolute !important;
        top: 72% !important;
        left: 5% !important;
        right: auto !important;
        transform: translateY(-50%) !important;
        max-width: 90% !important;
        width: 90% !important;
        z-index: 10 !important;
    }
    
    .banner-content-right {
        padding: 1rem;
        text-align: left;
        background: transparent;
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        gap: 1.5rem;
    }
    
    /* Contenedor de fecha y hora a la izquierda */
    .banner-content-right .d-flex {
        flex: 0 0 auto !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        margin-bottom: 0 !important;
    }
    
    .banner-content-right h1 {
        font-size: 2rem;
        text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.7), 0 0 20px rgba(0, 0, 0, 0.5);
    }
    
    .banner-content-right p.fs-1-2 {
        font-size: 1.5rem !important;
        margin-bottom: 0.25rem !important;
        text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.7), 0 0 20px rgba(0, 0, 0, 0.5);
    }
    
    .banner-content-right p.text-gray {
        font-size: 1rem !important;
        margin-bottom: 0 !important;
        text-shadow: 1px 1px 6px rgba(0, 0, 0, 0.7), 0 0 15px rgba(0, 0, 0, 0.5);
    }
    
    /* Círculo del mensaje "Accede próximamente" a la derecha */
    .banner-content-right p.border-accede {
        flex: 0 0 auto !important;
        /* width: 180px !important;
        height: 180px !important; */
        border-radius: 47px !important;
        border: 2px solid rgba(255, 255, 255, 0.8) !important;
        
        backdrop-filter: blur(10px) !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        text-align: center !important;
        padding: 1rem 3rem 1rem 3rem !important;
        /* margin: 0 !important; */
        font-size: 0.95rem !important;
        line-height: 1.3 !important;
        text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.7), 0 0 20px rgba(0, 0, 0, 0.5);
    }
    
    /* Ocultar separador vertical en iPad */
    .separator-vertical {
        display: none;
    }
}

/* Tablets (835px - 1024px) */
@media (min-width: 835px) and (max-width: 1024px) {
    .banner-text-overlay {
        right: 5% !important;
        top: 56% !important;
        max-width: 420px !important;
    }
    
    .banner-content-right h1 {
        font-size: 2rem;
    }
    
    .banner-content-right p {
        font-size: 1rem;
    }
    
    .banner-content-right .d-flex span {
        font-size: 0.95rem;
        margin-right: 1.5rem;
    }
    
    .separator-vertical {
        right: 50%;
    }
}

/* Pantallas medianas */
@media (min-width: 1025px) and (max-width: 1365px) {
    .banner-text-overlay {
        right: 13% !important;
    }
}

/* Pantallas grandes */
@media (min-width: 1366px) and (max-width: 1599px) {
    .banner-text-overlay {
        right: 23% !important;
    }
}

/* Pantallas muy grandes */
@media (min-width: 1600px) {
    .banner-text-overlay {
        right: 28% !important;
        max-width: 520px !important;
    }
}
/* Móviles - Banner con imagen vertical optimizada (9:16) */
@media (max-width: 767px) {
    section#inicio {
        padding-top: 80px;
        min-height: auto;
        position: relative;
        z-index: 1;
    }
    
    section#inicio .container-fluid {
        padding: 0 !important;
        position: relative;
        height: 70vh;
        max-height: 500px;
        background-color: #0c2c5c;
    }
    
    /* Banner image - imagen vertical optimizada para móvil */
    section#inicio .container-fluid img {
        width: 100%;
        height: auto;
        object-fit: contain;
        object-position: center center;
        display: block;
    }

    .banner-image-wrapper {
        position: relative;
        width: 100%;
        height: 100%;
        overflow: hidden;
        background-color: #0c2c5c;
    }

    .banner-image-wrapper::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: rgba(0, 0, 0, 0.25);
        z-index: 1;
        pointer-events: none;
    }

    .navbar-collapse-left {
        width: 100%;
        max-width: 100vw;
    }
    
    /* Hamburger menu responsive */
    #open-menu {
        padding: 0.65rem;
    }
    
    .hamburger-inner {
        width: 30px;
    }
    
    .hamburger-line {
        height: 3px;
    }
    
    /* Sidebar overlay en móvil */
    .sidebar-overlay {
        backdrop-filter: blur(3px);
    }
    
    /* Items del menú más espaciados en móvil */
    #nav-menu .nav-link {
        padding: 1.25rem 1.5rem;
        font-size: 1.1rem;
    }
    
    /* Banner responsive - Texto centrado en móvil */
    .banner-text-overlay {
        position: absolute !important;
        top: 66% !important;
        left: 50% !important;
        right: auto !important;
        transform: translate(-50%, -50%) !important;
        max-width: 90% !important;
        width: 90% !important;
        z-index: 10 !important;
    }
    
    .banner-content-right {
        background: transparent;
        padding: 1.5rem 1rem;
        border-radius: 12px;
        box-shadow: none;
        text-align: center;
    }
    
    .banner-content-right h1 {
        font-size: 1.8rem;
        color: var(--color-red);
        margin-bottom: 1rem;
        text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.7), 0 0 20px rgba(0, 0, 0, 0.5);
    }
    
    .banner-content-right p {
        font-size: 0.8rem !important;
        color: var(--color-white);
        line-height: 1.5;
        text-shadow: 1px 1px 6px rgba(0, 0, 0, 0.7), 0 0 15px rgba(0, 0, 0, 0.5);
    }

    .banner-content-right p.fs-1-2 {
        font-size: 1.2rem !important;
    }

    .banner-content-right p.border-accede {
      border: 2px solid rgba(255, 255, 255, 0.8);
      padding: 5% 0% 5% 0%;
      border-radius: 40px;
    }
    
    
    /* .banner-content-right p br {
        display: none;
    } */
    
    /* Iconos y fechas en móvil */
    .banner-content-right .d-flex {
        justify-content: center;
        flex-wrap: wrap;
    }
    
    .banner-content-right .d-flex span {
        color: var(--color-white) !important;
        margin: 0.5rem 0.75rem;
        font-size: 0.9rem;
        text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.8);
    }
    
    /* Ocultar separador vertical en móvil */
    .separator-vertical {
        display: none;
    }
    
    /* Logos centrados en móvil */
    .banner-logos {
        bottom: 20px !important;
        left: 47% !important;
        right: auto !important;
        transform: translateX(-50%) !important;
    }
    
    /* Ajustar posición para cada logo en móvil */
    .banner-logo-fabry {
        transform: translateX(-100%) translateX(-10px) !important;
    }
    
    .banner-logo-chiesi {
        transform: translateX(-50%) translateX(10px) !important;
    }
    
    .banner-logo {
        height: 40px !important;
    }

    .ancho-line {
        width: 100% !important;
        margin: 10px 0 !important;
    }

    .btn-ancho {  
        width: 100% !important;
    }
    
    /* Optimizaciones de espaciado en móvil */
    .container:not(.container-fluid) {
        padding-left: 1.25rem !important;
        padding-right: 1.25rem !important;
    }
    
    /* Mejor espaciado para agenda en móvil */
    #programa p {
        margin-bottom: 1.25rem !important;
        padding: 0 0.5rem;
    }
    
    /* Iconos mejor espaciados */
    .icon-calendar {
        width: 20px !important;
        height: 20px !important;
        margin-right: 6px !important;
    }
    
    /* Botones optimizados en móvil */
    .btn {
        min-height: 48px;
        padding: 0.75rem 1.5rem !important;
        font-size: 0.9rem !important;
    }
    
    /* Formularios mejor espaciados */
    .form-group {
        margin-bottom: 1.25rem !important;
    }
    
    /* Secciones con mejor padding */
    section:not(#inicio) {
        padding-top: 0rem !important;
        padding-bottom: 0rem !important;
        background: #f4f4f4;
    }
    
    /* Mejora de legibilidad general */
    .text-break {
        word-wrap: break-word;
        overflow-wrap: break-word;
        hyphens: auto;
    }
    
    /* Mejora de contenedores con texto largo */
    .container .text-dark-blue,
    .container .text-white {
        overflow-wrap: break-word;
    }
    
    /* Tablas responsive */
    table {
        width: 100%;
        font-size: clamp(0.8rem, 2.5vw, 0.9rem) !important;
        overflow-x: auto;
        display: block;
    }
    
    /* Mejora de hr separadores */
    hr.hr-bold {
        margin: 1rem auto;
    }
    
    .w-28 {
        width: 60% !important;
    }
    
    /* Mejora del título de sección */
    .titular-grande {
        text-align: center;
        word-wrap: break-word;
    }
    
    /* Imágenes responsive */
    img {
        max-width: 100%;
        height: auto;
    }
    
    /* Video embeds responsive */
    iframe {
        max-width: 100%;
    }
    
    /* Mejora de alertas y mensajes */
    .alert {
        font-size: clamp(0.85rem, 2.5vw, 0.95rem) !important;
        padding: 1rem;
    }
    
    /* Mejora de etiquetas small */
    small, .small {
        font-size: clamp(0.75rem, 2vw, 0.85rem) !important;
    }
    
    /* Row sin overflow */
    .row {
        margin-left: -8px;
        margin-right: -8px;
    }
    
    .row > * {
        padding-left: 8px;
        padding-right: 8px;
    }

    .margin-top-direct {
      margin-top: 15% !important;
    }
}



.icon-calendar {
    width: 23px;
    height: 23px;
    margin-right: 8px;
}

.fabry-footer {
  background-color: var(--color-footer-bg);
  color: var(--color-footer-text);
  padding: 3rem 0;
  margin-top: auto; /* Empuja el footer al final del flexbox */
}

.fabry-footer .nav-link {
    padding-left: 0 !important;
    padding-right: 0 !important;
    transition: all 0.3s ease;
}

.fabry-footer .nav-link:hover {
    color: rgba(255, 255, 255, 0.8) !important;
    transform: translateX(5px);
}

/* Responsive footer para móvil */
@media (max-width: 768px) {
    .fabry-footer {
        padding: 2rem 0.5rem;
    }
    
    .fabry-footer .container-fluid {
        padding-left: 1rem;
        padding-right: 1rem;
    }
    
    .fabry-footer .row {
        margin-left: 0;
        margin-right: 0;
    }
    
    .fabry-footer p {
        font-size: clamp(0.75rem, 2.5vw, 0.875rem) !important;
        line-height: 1.5 !important;
        padding: 0 0.5rem;
    }
    
    .fabry-footer p br {
        display: none;
    }
    
    .fabry-footer .nav-link {
        padding: 0.75rem 0 !important;
        font-size: clamp(0.8rem, 2.5vw, 0.9rem) !important;
    }
    
    .fabry-footer .text-gray {
        font-size: clamp(0.7rem, 2vw, 0.8rem) !important;
    }
    
    .fabry-footer .gx-1 {
        gap: 0;
    }
}

.banner-text-overlay {
  top: 50%;
  right: 28%;
  transform: translateY(-50%);
  z-index: 10;
  max-width: 480px;
  width: auto;
}

.banner-content-right {
  padding: 2rem;
  border-radius: 0px;
}

.banner-content-right h1 {
  font-size: 2.5rem;
  line-height: 1.2;
  color: var(--color-red);
}

.banner-content-right p {
  font-size: 1.1rem;
  line-height: 1.2;
  color: var(--color-white);
}

.banner-content-right p.fs-1-2 {
    font-size: 1.5rem;
    margin-bottom: 0.25rem;
    text-shadow: 2px 0px 8px rgba(0, 0, 0, 0.4), 0 0 20px rgba(0, 0, 0, 0.4);
}

.separator-vertical {
  position: absolute;
  top: 26%;
  right: 52%;
  transform: translateX(50%);
  width: 1px;
  height: 40%;
  background-color: rgba(255, 255, 255, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.5);
}
/* Logos del banner */
.banner-logos {
  bottom: 20px;
  z-index: 10;
}

/* Desktop: Fabry a la izquierda */
.banner-logo-fabry {
  left: 40px;
}

/* Desktop: Chiesi a la derecha */
.banner-logo-chiesi {
  right: 40px;
}

.banner-logo {
  height: 50px;
  width: auto;
  object-fit: contain;
}
.blurred-header{
  backdrop-filter: blur(10px);
  background-color: hsla(231, 35%, 19%, .9)
}

input[type=text], input[type=email], input[type=password], input[type=number], input[type=tel] {
  background-color: transparent !important;
  color: #000;
  border-radius: 30px;
  border: 1px solid var(--color-primary);
  height: 48px;
  padding: 0 15px;
  transition: all 0.3s ease;
}

input[type=text]:focus, 
input[type=email]:focus, 
input[type=password]:focus, 
input[type=number]:focus, 
input[type=tel]:focus {
  border-color: #26b5f2;
  box-shadow: 0 0 0 3px rgba(38, 181, 242, 0.1);
  transform: translateY(-1px);
}

input[type=text]::placeholder,
input[type=textarea]::placeholder,
input[type=email]::placeholder,
input[type=password]::placeholder,
input[type=number]::placeholder,
input[type=tel]::placeholder {
  color: var(--color-primary) !important;
  opacity: 0.7;
  font-weight: 500;
}

select {
  border-radius: 30px;
  border: 1px solid var(--color-primary) !important;
  width: 100%;
  min-height: 48px;
  color: var(--color-primary) !important;
  padding: 0 15px;
  border-radius: 30px !important;
  border: 1px solid var(--color-primary);
  font-weight: 500;
  transition: all 0.3s ease;
}

select:focus {
  border-color: var(--color-primary) !important;
  box-shadow: 0 0 0 3px rgba(4, 68, 108, 0.1);
  transform: translateY(-1px);
}

select option:first-child {
  color: var(--color-primary);
  font-weight: 500;
}

select option:not(:first-child) {
  color: #000;
}

select:focus-visible {
  border-color: var(--color-primary) !important;
  box-shadow: none;
}
select:focus {
  border-color: var(--color-primary) !important;
  box-shadow: none;
}

.form-control:focus{
  border-color: #26b5f2;
  box-shadow: none;
}

textarea {
  border: none !important;
  color: var(--color-primary) !important;
}

textarea::placeholder {
  color: var(--color-primary) !important;
  opacity: 0.5;
  font-weight: 500;
}

::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
  color: #9d9d9c !important;
  opacity: 1; /* Firefox */
  font-weight: 100;
}

.btn-registrese{
  position: absolute;
  bottom: 10px;
  max-width: 25vw;
  left: 50%;
  transform: translateX(-50%);
}


.btn-menu{
  background-color: white;
  color: black;
  border-radius: 0px;
  padding: 5px 20px;
}

.btn-menu-gray {
  background-color: #9E9E9E;
}

.btn-aom-light {
  background-color: #26b5f2;
  color: white;
  border-radius: 40px;
  padding: 5px 20px;
}

.btn-aom-light:hover {
  background-color: #26b5f275;
}

.btn-aom-dark {
  background-color: var(--color-bg-button);
  color: white;
  text-transform: uppercase;
  border-radius: 40px;
  padding: 5px 20px;
  transition: all 0.3s ease;
  position: relative;
  overflow: hidden;
}

.btn-aom-dark::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.2);
  transform: translate(-50%, -50%);
  transition: width 0.6s, height 0.6s;
}

/* .btn-aom-dark:hover::before {
  width: 300px;
  height: 300px;
} */

.btn-aom-dark:hover {
  background-color: #b80e63;
  color: #fff;
  border: 1px solid var(--color-bg-button);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(212, 4, 108, 0.4);
}

.btn-aom-dark:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(212, 4, 108, 0.3);
}

.btn-aom-dark-outline {
  background-color: #fff;
  color: var(--color-bg-button);
  text-transform: uppercase;
  border-radius: 40px;
  padding: 5px 20px;
  border: 1px solid var(--color-bg-button);
  transition: all 0.3s ease;
}

.btn-aom-dark-outline:hover {
  background-color: var(--color-bg-button);
  color: white;
  text-transform: uppercase;
  border-radius: 40px;
  padding: 5px 20px;
  border: 1px solid var(--color-bg-button);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(212, 4, 108, 0.3);
}

.btn-aom-dark-outline:active {
  transform: translateY(0);
}

.btn-aom-light {
  background-color: #26b5f2;
  color: white;
  border-radius: 40px;
  padding: 5px 20px;
  transition: all 0.3s ease;
}

.btn-aom-light:hover {
  background-color: #1a9dd9;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(38, 181, 242, 0.3);
}

.btn-aom-light:active {
  transform: translateY(0);
}

/* Efecto shimmer */
.placeholder-text::after {
    content: "";
    position: absolute;
    top: 0;
    left: -150px;
    height: 100%;
    width: 150px;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(255,255,255,0.6),
        transparent
    );
    animation: shimmer 1.5s infinite;
}

@keyframes shimmer {
    0% {
        left: -150px;
    }
    100% {
        left: 100%;
    }
}

/* Tamaños específicos */
.name-placeholder {
    height: 18px;
    width: 70%;
    margin: 4% auto;
}

.desc-placeholder {
    height: 14px;
    width: 90%;
    margin: 0 auto;
}



.btn-ancho {
  width: 100%;
}

.lh-1 {
  line-height: 1.2 !important;
}

/* a:hover {
  text-decoration: none;
  color: #fff !important;
} */

.btn-aom-gray {
  background-color: var(--color-primary) !important;
  color: #fff !important;
  border-radius: 40px;
  padding: 5px 20px;
  border: 1px solid var(--color-primary);
  transition: all 0.3s ease;
}

.btn-aom-gray:hover {
  background-color: #062e52 !important;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(4, 68, 108, 0.4);
}

.btn-aom-gray:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(4, 68, 108, 0.3);
}

a:hover {
  text-decoration: underline;
}

.ancho-line {
  width: 35%;
  padding: 0.5px 0.5px 0.5px 0.5px;
  margin: 5px 0px;
}


.h-48 {
  min-height: 48px;
}

.registro-container{
  background: rgb(147,39,143);
  background: linear-gradient(90deg, rgba(147,39,143,1) 20%, rgba(0,110,162,1) 100%);
}

.registro-container a {
  color: white;
  font-size: 32px;
  font-weight: bold;
  text-decoration: none;
}

.display-none{
  display: none;
}

.gradient-blue{
  background: rgb(0,110,162);
  background: linear-gradient(90deg, rgba(0,110,162,1) 20%, rgba(41,171,226,0) 80%);
}

.gradient-purple{
  background: rgb(147,39,143);
  background: linear-gradient(90deg, rgba(147,39,143,1) 20%, rgba(41,171,226,0) 80%);
} 

.gradient-pink{
  background: rgb(237,30,121);
  background: linear-gradient(90deg, rgba(237,30,121,1) 20%, rgba(41,171,226,0) 80%);
}

.gradient-red{
  background: rgb(237,28,36);
  background: linear-gradient(90deg, rgba(237,28,36,1) 20%, rgba(237,122,39,0) 80%);
}

.gradient-orange{
  background: rgb(237,158,28);
  background: linear-gradient(90deg, rgba(237,158,28) 20%, rgba(237,122,39,0) 80%);
}

.time-header{
  border-radius: 50px;
}

.mw-32{
  max-width: 32px;
}

/* Banner cookies responsive */
.banner-cookies {
  font-size: 14px !important;
  background-color: hsla(255, 0%, 0%, .95) !important;
  bottom: 0;
  left: 0;
  padding: 0 15px;
  position: fixed;
  width: 100%;
  z-index: 500;
  color: white;
  display: none;
}

.banner-cookies div:nth-child(1) {
  padding: 10px 0;
}

.banner-cookies div:nth-child(2) {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
}

.banner-cookies button {
  font-size: 14px !important;
  margin-right: 10px;
}

@media (max-width: 768px) {
  .banner-cookies {
    padding: 1rem;
    max-height: 90vh;
    overflow-y: auto;
  }
  
  .banner-cookies h6 {
    font-size: clamp(1rem, 3vw, 1.1rem) !important;
    margin-bottom: 0.75rem;
  }
  
  .banner-cookies p {
    font-size: clamp(0.8rem, 2.5vw, 0.9rem) !important;
    line-height: 1.5 !important;
    margin-bottom: 1rem;
  }
  
  .banner-cookies .botones-aprobar {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.5rem 0;
  }
  
  .banner-cookies .botones-aprobar button {
    width: 100%;
    margin: 0.25rem 0;
    font-size: clamp(0.75rem, 2.5vw, 0.85rem) !important;
    padding: 0.75rem 1rem;
  }
  
  .modal-cookies .modal-dialog {
    margin: 0.5rem;
    max-width: calc(100% - 1rem);
  }
  
  .modal-cookies .modal-content {
    font-size: clamp(0.8rem, 2.5vw, 0.9rem) !important;
  }
  
  .modal-cookies .modal-body {
    padding: 1rem;
    max-height: 70vh;
    overflow-y: auto;
  }
  
  .modal-cookies h5 {
    font-size: clamp(1rem, 3vw, 1.2rem) !important;
    margin-bottom: 0.75rem;
  }
  
  .modal-cookies .custom-control-label {
    font-size: clamp(0.75rem, 2.5vw, 0.85rem) !important;
    line-height: 1.4;
  }
}

.zi-2000 {
  z-index: 2000 !important;
}

.custom-radio {
  height: 25px;
  min-width: 25px;
  border: 2px solid;
}

.custom-radio.selected::before {
  background-color: #202543;
  content: ' ';
  display: block;
  height: 21px;
  width: 21px;
  border: 3px solid #fff;
}

@media (min-width: 768px){
  .position-md-absolute {
    position: absolute;
  }

  .h-center {
    left: 50%;
    transform: translateX(-50%);
  }

  .bg-md-transparent{
    background-color: transparent !important;
  }
}

@media (max-width: 767.98px){
  .bg-white-10{
    background-color: #ffffff10;
  }

  .btn-menu{
    border-radius: 0px;
    border-bottom: 1px solid #00000050 !important;
    border-left: 1px solid #00000050 !important;
    border-right: 1px solid #00000050 !important;
    border-top: none;
  }

  .btn-reuniendo{
    font-size: 0.8rem;
  }

  .w-28{
    width: 90% !important;
  }
}
/* ========================================
   P�gina Pr�ximamente
   ======================================== */

#proximamente .display-3 {
  font-size: 3.5rem;
  animation: fadeInDown 1s ease-in-out;
}

#proximamente .icon-calendar {
  animation: pulse 2s ease-in-out infinite;
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.1);
  }
}

#proximamente .welcome-title {
  animation: fadeIn 1.5s ease-in-out;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* Responsive para pr�ximamente */
@media (max-width: 768px) {
  #proximamente .display-3 {
    font-size: 2rem;
  }
  
  #proximamente .welcome-title {
    font-size: 1rem;
    width: 100%;
  }
}

/* ========================================
   Páginas de Políticas - Responsive
   ======================================== */

@media (max-width: 768px) {
  /* Contenedor de políticas */
  section .container.text-break {
    padding-left: 1.25rem !important;
    padding-right: 1.25rem !important;
  }
  
  /* Títulos de políticas */
  .titular-grande {
    font-size: clamp(1.75rem, 6vw, 2.25rem) !important;
    line-height: 1.2 !important;
    margin-top: 2rem !important;
    margin-bottom: 1.5rem !important;
  }
  
  /* Subtítulos h2 en políticas */
  section .text-dark-blue h2 {
    font-size: clamp(1.2rem, 4vw, 1.5rem) !important;
    line-height: 1.3 !important;
    margin-top: 1.5rem !important;
    margin-bottom: 1rem !important;
  }
  
  /* Párrafos en políticas */
  section .text-dark-blue p {
    font-size: clamp(0.875rem, 2.5vw, 0.95rem) !important;
    line-height: 1.6 !important;
    margin-bottom: 1rem !important;
    text-align: justify;
    hyphens: auto;
    word-wrap: break-word;
  }
  
  /* Enlaces en políticas */
  section .text-dark-blue a {
    word-break: break-word;
    /* color: #26b5f2 !important; */
  }
  
  /* Listas en políticas */
  section .text-dark-blue ul,
  section .text-dark-blue ol {
    padding-left: 1.25rem;
  }
  
  section .text-dark-blue li {
    font-size: clamp(0.875rem, 2.5vw, 0.95rem) !important;
    line-height: 1.6 !important;
    margin-bottom: 0.5rem;
  }
}

/* ========================================
   Streaming - Responsive
   ======================================== */

@media (max-width: 768px) {
  /* Video area */
  #video-area {
    margin-bottom: 1rem;
  }
  
  #video-area iframe,
  #video-area img {
    width: 100%;
    height: auto;
    min-height: 250px;
    aspect-ratio: 16/9;
  }
  
  /* Countdown */
  #countdown h3 {
    font-size: clamp(1.1rem, 3.5vw, 1.3rem) !important;
    margin-bottom: 1rem;
  }
  
  #countdown h2 {
    font-size: clamp(1rem, 3vw, 1.2rem) !important;
    line-height: 1.5 !important;
  }
  
  #countdown h2 span {
    display: inline-block;
    margin: 0.25rem;
  }
  
  /* Área de preguntas */
  #send-question-area textarea {
    font-size: clamp(0.875rem, 2.5vw, 0.95rem) !important;
    min-height: 80px;
  }
  
  #send-question-area button {
    width: 100%;
    margin-top: 0.5rem;
  }
  
  /* Botones de acciones */
  #special-actions button {
    width: 100%;
    margin: 0.5rem 0;
    padding: 0.75rem 1rem;
    font-size: clamp(0.85rem, 2.5vw, 0.95rem) !important;
  }
  
  /* Chat area si está visible */
  #chat-area iframe {
    min-height: 400px;
  }
}

/* ========================================
   Agenda / Index - Responsive
   ======================================== */

@media (max-width: 768px) {
  /* Título de bienvenida */
  .welcome-title {
    padding: 1rem;
    font-size: clamp(0.95rem, 3vw, 1.1rem) !important;
  }
  
  /* Programa / Agenda */
  #programa {
    padding: 0 0.5rem;
  }
  
  #programa .col-12 {
    padding: 0;
  }
  
  /* Items de agenda */
  #programa p {
    margin-bottom: 1.5rem !important;
    padding: 0rem;
    /* background: rgba(4, 68, 108, 0.03);
    border-radius: 8px;
    border-left: 3px solid var(--color-red); */
  }
  
  #programa .text-dark-blue {
    font-size: clamp(0.9rem, 2.5vw, 1rem) !important;
    line-height: 1.5 !important;
  }
  
  #programa .text-blue-light {
    font-size: clamp(0.85rem, 2.5vw, 0.95rem) !important;
    /* color: #26b5f2 !important; */
    /* font-style: italic; */
  }
  
  /* Iconos de calendario */
  .icon-calendar {
    vertical-align: middle;
    margin-right: 0.5rem;
  }
  
  /* Sección de ponentes */
  #ponentes .col-6 {
    padding: 0.5rem;
  }
  
  /* Tarjetas de ponentes responsive */
  .ponente-card {
    margin-bottom: 1rem;
  }
  
  .ponente-card img {
    max-width: 100%;
    border-radius: 8px;
  }
  
  .ponente-card p {
    font-size: clamp(0.8rem, 2.5vw, 0.9rem) !important;
    margin-top: 0.5rem;
  }
}

/* ========================================
   Checkboxes con mensajes de validación
   ======================================== */

/* Estructura de checkboxes con invalid-feedback */
#acceso .form-check {
  position: relative;
}

#acceso .form-check .d-flex {
  align-items: flex-start;
  gap: 0.5rem;
}

#acceso .form-check-input {
  flex-shrink: 0;
  margin-top: 0.15rem;
}

#acceso .form-check-label {
  flex: 1;
  user-select: none;
  line-height: 1.6;
}

/* Mensajes de error debajo de checkbox + label */
#acceso .form-check .invalid-feedback {
  display: none;
  width: 100%;
  margin-top: 0.5rem;
  padding-left: 0;
  font-size: 0.875rem;
  color: #dc3545;
}

/* Mostrar invalid-feedback cuando tiene clase d-block y texto */
#acceso .form-check .invalid-feedback.d-block:not(:empty) {
  display: block !important;
}

/* Cuando el checkbox es invalid */
#acceso .form-check-input.is-invalid ~ .invalid-feedback,
#acceso .form-check-input:invalid ~ .invalid-feedback {
  display: block;
}

/* ========================================
   Login / Registro - Responsive
   ======================================== */

@media (max-width: 768px) {
  /* Sección de acceso/registro */
  #acceso {
    padding: 0rem 0 !important;
  }
  
  #acceso .container {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  
  #acceso h1 {
    font-size: clamp(1.75rem, 5vw, 2rem) !important;
    margin-bottom: 1.5rem;
  }
  
  /* Formularios */
  #acceso .form-group {
    margin-bottom: 1.25rem;
  }
  
  #acceso input[type="text"],
  #acceso input[type="email"],
  #acceso input[type="password"],
  #acceso input[type="tel"],
  #acceso select {
    font-size: clamp(0.9rem, 2.5vw, 1rem) !important;
    padding: 0.75rem 1rem;
    height: auto;
    min-height: 48px;
  }
  
  #acceso textarea {
    font-size: clamp(0.9rem, 2.5vw, 1rem) !important;
    padding: 0.75rem 1rem;
  }
  
  #acceso ::placeholder {
    font-size: clamp(0.85rem, 2.5vw, 0.95rem) !important;
  }
  
  /* Botones en formularios */
  #acceso button[type="submit"],
  #acceso .btn {
    font-size: clamp(0.9rem, 2.5vw, 1rem) !important;
    padding: 0.875rem 1.5rem;
    min-height: 50px;
  }
  
  /* Labels y textos de ayuda */
  #acceso label {
    font-size: clamp(0.85rem, 2.5vw, 0.95rem) !important;
  }
  
  #acceso .text-dark-blue a {
    font-size: clamp(0.85rem, 2.5vw, 0.95rem) !important;
    line-height: 1.5;
  }
  
  /* Checkbox de recordar */
  #acceso .d-none.d-md-block {
    display: block !important;
  }
  
  #acceso input[type="checkbox"] {
    width: 20px;
    height: 20px;
    margin-right: 0.5rem;
  }
  
  /* Mensajes de error/validación */
  #acceso .invalid-feedback {
    font-size: clamp(0.8rem, 2.5vw, 0.9rem) !important;
  }
  
  /* Selects nativos con mejor apariencia */
  #acceso select,
  #acceso select.form-control {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2304446c' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    background-size: 12px;
    padding-right: 2.5rem;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
  }
  
  /* Checkboxes mejorados para móvil */
  #acceso .form-check {
    padding-left: 0;
    margin-bottom: 0.5rem;
  }
  
  #acceso .form-check .d-flex {
    margin-bottom: 0.25rem;
  }
  
  #acceso .form-check-input {
    position: relative;
    width: 22px;
    height: 22px;
    margin-top: 0;
    margin-right: 0;
    flex-shrink: 0;
    cursor: pointer;
  }
  
  #acceso .form-check-label {
    font-size: clamp(0.85rem, 2.5vw, 0.95rem) !important;
    line-height: 1.5;
    cursor: pointer;
    flex: 1;
  }
  
  #acceso .form-check-label a {
    text-decoration: underline;
  }
  
  /* Invalid feedback debajo de checkboxes */
  #acceso .form-check .invalid-feedback {
    margin-left: 0;
    padding-left: 0;
    display: none;
    width: 100%;
    margin-top: 0.25rem;
  }
  
  #acceso .form-check .invalid-feedback.d-block {
    display: block !important;
  }
  
  #acceso .form-check.was-validated .invalid-feedback,
  #acceso .form-check .is-invalid ~ .invalid-feedback {
    display: block;
  }
  
  /* Alert de éxito responsive */
  #acceso .alert {
    padding: 1.25rem 1rem;
  }
  
  #acceso .alert h4 {
    font-size: clamp(1.1rem, 3.5vw, 1.3rem) !important;
    margin-bottom: 0.75rem;
  }
  
  #acceso .alert p {
    font-size: clamp(0.9rem, 2.5vw, 1rem) !important;
    line-height: 1.6;
  }
  
  /* reCAPTCHA responsive */
  #acceso .g-recaptcha {
    transform: scale(0.95);
    transform-origin: center center;
  }
  
  /* Mensaje de error del reCAPTCHA centrado debajo */
  #acceso .form-group:has(.g-recaptcha) .invalid-feedback {
    display: none;
    width: 100%;
    text-align: center;
    margin-top: 0.75rem;
    font-size: clamp(0.8rem, 2.5vw, 0.9rem) !important;
  }
  
  #acceso .form-group:has(.g-recaptcha) .invalid-feedback:not(:empty) {
    display: block !important;
  }
  
  #acceso .form-group:has(.g-recaptcha.is-invalid) .invalid-feedback {
    display: block;
  }
  
  /* Mejoras de pequeños textos informativos */
  #acceso small {
    font-size: clamp(0.75rem, 2vw, 0.85rem) !important;
    line-height: 1.4;
  }
  
  /* Espaciado de párrafos informativos */
  #acceso p.text-dark-blue {
    font-size: clamp(0.9rem, 2.5vw, 1rem) !important;
    line-height: 1.6;
  }
  
  /* H3 de registro */
  #acceso h3 {
    font-size: clamp(1.3rem, 4vw, 1.6rem) !important;
    line-height: 1.3;
  }
}

/* ========================================
   Utilidades Responsive Globales
   ======================================== */

@media (max-width: 768px) {
  /* Espaciado consistente */
  .py-5 {
    padding-top: 2.5rem !important;
    padding-bottom: 2.5rem !important;
  }
  
  .py-4 {
    padding-top: 2rem !important;
    padding-bottom: 2rem !important;
  }
  
  .py-3 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  
  .my-5 {
    margin-top: 2.5rem !important;
    margin-bottom: 2.5rem !important;
  }
  
  .my-4 {
    margin-top: 2rem !important;
    margin-bottom: 2rem !important;
  }
  
  /* Contenedores más compactos */
  .container {
    max-width: 100%;
  }
  
  /* Mejora de grid */
  .col-6:not([class*="col-md-"]):not([class*="col-lg-"]) {
    flex: 0 0 50%;
    max-width: 50%;
  }
  
  /* Centrado de texto en móvil */
  .text-md-left {
    text-align: center !important;
  }
  
  /* Mejor visualización de strong y bold */
  strong, .font-weight-bold {
    font-weight: 700;
  }
  
  /* Links con mejor touch target */
  a {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
  
  a.nav-link {
    display: flex;
    justify-content: center;
    align-items: center;
  }
}

/* ========================================
   Keyframes para Animaciones
   ======================================== */

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes slideInLeft {
  from {
    opacity: 0;
    transform: translateX(-50px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes slideInRight {
  from {
    opacity: 0;
    transform: translateX(50px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes scaleIn {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
}

/* ========================================
   Animaciones para Ponentes/Cards
   ======================================== */

.ponente-card {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  animation: fadeInUp 0.8s ease-out;
  animation-fill-mode: both;
  opacity: 0;
  border-radius: 20px;
  padding: 1rem;
}

.ponente-card:hover {
  transform: translateY(-10px);
  box-shadow: 0 15px 40px rgba(4, 68, 108, 0.25);
}

.ponente-card:nth-child(1) {
  animation-delay: 0.1s;
}

.ponente-card:nth-child(2) {
  animation-delay: 0.2s;
}

.ponente-card:nth-child(3) {
  animation-delay: 0.3s;
}

.ponente-card:nth-child(4) {
  animation-delay: 0.4s;
}

.ponente-card:nth-child(5) {
  animation-delay: 0.5s;
}

.ponente-card:nth-child(6) {
  animation-delay: 0.6s;
}

/* Mejorar imágenes de ponentes */
.ponente-card img {
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s ease;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
}

.ponente-card:hover img {
  transform: scale(1.08) rotate(2deg);
  box-shadow: 0 12px 35px rgba(4, 68, 108, 0.3);
}

/* Cards generales */
.card,
.ponente-card {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.card:hover,
.ponente-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
}

/* Animación para elementos de formulario */
.form-control {
  transition: all 0.3s ease;
}

.form-control:focus {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(4, 68, 108, 0.15);
}

/* Reducir animaciones en móviles para mejor performance */
@media (max-width: 767px) {
  section,
  .container,
  h1, h2, h3, h4, h5, h6,
  img {
    animation: fadeIn 0.4s ease-out;
  }
}

/* Respetar preferencias de usuario que desactivan animaciones */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* Animaciones para secciones y contenedores - EXACTO COMO PHARMA */
section {
  animation: fadeIn 0.8s ease-out;
}

.container {
  animation: fadeInUp 0.8s ease-out;
}

/* Animación para imágenes al cargar */
img {
  animation: fadeIn 0.8s ease-out;
}

/* Animación para títulos con entrada suave */
h1, h2, h3, h4, h5, h6 {
  animation: fadeInUp 0.8s ease-out;
}

/* Animación para botones con efecto ripple */
.btn {
  position: relative;
  overflow: hidden;
  transition: all 0.3s ease;
}

.btn::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.3);
  transform: translate(-50%, -50%);
  transition: width 0.6s, height 0.6s;
}

.btn:active::before {
  width: 300px;
  height: 300px;
}

/* Animación hover para enlaces */
a {
  transition: color 0.3s ease, opacity 0.3s ease;
}

a:hover {
  opacity: 0.85;
}

/* Animación suave para el scroll to top button */
#go-top {
  transition: all 0.3s ease;
  animation: pulse 2s ease-in-out infinite;
}

#go-top:hover {
  transform: translateY(-3px) scale(1.1);
  animation: none;
}

/* ========================================
   Responsive Extra Small (Móviles < 576px)
   ======================================== */

@media (max-width: 576px) {
  /* Formularios en pantallas muy pequeñas */
  #acceso .container {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }
  
  #acceso h1 {
    font-size: 1.5rem !important;
  }
  
  #acceso h3 {
    font-size: 1.2rem !important;
  }
  
  /* Inputs más compactos pero manteniendo touch target */
  #acceso input[type="text"],
  #acceso input[type="email"],
  #acceso input[type="password"],
  #acceso select {
    font-size: 1rem !important;
    padding: 0.65rem 0.85rem;
  }
  
  /* Botones */
  #acceso button[type="submit"],
  #acceso .btn {
    font-size: 0.9rem !important;
    padding: 0.75rem 1.25rem;
  }
  
  /* reCAPTCHA más pequeño */
  #acceso .g-recaptcha {
    transform: scale(0.85);
    transform-origin: center center;
  }
  
  /* Checkboxes y labels */
  #acceso .form-check-input {
    width: 20px;
    height: 20px;
  }
  
  #acceso .form-check-label {
    font-size: 0.85rem !important;
  }
  
  /* Texto de ayuda */
  #acceso small {
    font-size: 0.75rem !important;
  }
  
  /* Espaciado reducido */
  #acceso .py-4,
  #acceso .py-5 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  
  /* Alert más compacto */
  #acceso .alert {
    padding: 1rem 0.75rem;
  }
  
  #acceso .alert h4 {
    font-size: 1.1rem !important;
  }
  
  #acceso .alert p {
    font-size: 0.9rem !important;
  }
  
  /* Menú hamburguesa en móviles pequeños */
  .hamburger-inner {
    width: 26px;
  }
  
  .hamburger-line {
    height: 2.5px;
  }
  
  #nav-menu .nav-link {
    font-size: 1rem;
    padding: 1rem 1.25rem;
  }
  
  .navbar-collapse-left {
    width: 100%;
  }
}

/* Acceso webinar */
.webinar-access-section {
    background-color: #fff;
    text-align: center;
    padding: 2rem 1rem;
}

.webinar-access-text {
    color: #22478b;
    margin-bottom: 1rem;
    font-size: 1.25rem;
    font-weight: 600;
}

.btn-webinar-access {
    background-color: #f5db89;
    color: #22478b;
    border: none;
    border-radius: 50px;
    padding: 12px 36px;
    font-weight: bold;
    font-size: 1rem;
    cursor: pointer;
    text-decoration: none;
    display: inline-block;
}

.btn-webinar-access:hover {
    background-color: #f0cf6a;
    color: #22478b;
    text-decoration: none;
}