/* ===========================================================
   Post EASL 2026 — Ipsen design system
   Style guide PDF: PY25-013053 _ IPSEN _ Evento Raras Post EASL_v_3
   Scoped under body.ipsen-body to avoid touching other tenants
   =========================================================== */

:root {
    --ipsen-navy:       #0A2C6B;
    --ipsen-navy-2:     #061E4F;
    --ipsen-navy-deep:  #051A3B;
    --ipsen-text:       #181818;
    --ipsen-white:      #FFFFFF;
    --ipsen-bg:         #F4F4F4;
    --ipsen-bg-soft:    #EDEEF1;
    --ipsen-lime:       #D5F231;
    --ipsen-lime-2:     #C7E527;
    --ipsen-blue:       #0A2C6B;
    --ipsen-line:       rgba(8, 35, 94, 0.18);
    --ipsen-input:      #E9E9EC;
    --ipsen-input-2:    #D8D9DD;
    --ipsen-radius:     22px;
    --ipsen-radius-sm:  14px;
    --ipsen-radius-pill:999px;
    --ipsen-shadow:     0 24px 60px rgba(5, 26, 59, 0.18);
    --ipsen-font:       "Inter","Helvetica Neue",Helvetica,Arial,sans-serif;
}

/* ---------- Base ---------- */
body.ipsen-body {
    background: #FFFFFF !important;
    background-image: none !important;
    color: var(--ipsen-text);
    font-family: var(--ipsen-font);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
body.ipsen-body * { -webkit-font-smoothing: antialiased; }

.ipsen-page,
body.ipsen-body .ipsen-page {
    font-family: var(--ipsen-font);
    color: var(--ipsen-text);
    background: #FFFFFF;
}
.ipsen-page * { box-sizing: border-box; }

/* ---------- Header ---------- */
body.ipsen-body .ipsen-header,
.ipsen-header {
    background: var(--ipsen-navy);
    background-image:
        radial-gradient(circle at 88% -20%, rgba(255,255,255,0.06) 0, transparent 45%),
        linear-gradient(180deg, var(--ipsen-navy) 0%, var(--ipsen-navy-2) 100%);
    padding: 18px 0;
    position: relative;
    z-index: 5;
}
.ipsen-header .ipsen-header-logo { max-height: 56px; width: auto; }
.ipsen-header .ipsen-header-actions { display: flex; gap: 14px; justify-content: flex-end; align-items: center; flex-wrap: wrap; }
.ipsen-header .ipsen-header-actions .btn { margin: 0; }

/* Header pill buttons */
.btn-ipsen-lime,
body.ipsen-body .btn-ipsen-lime {
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--ipsen-lime); color: var(--ipsen-navy);
    border: 2px solid var(--ipsen-lime);
    border-radius: var(--ipsen-radius-pill);
    padding: 10px 28px;
    font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase;
    font-size: 0.78rem; line-height: 1.2; min-height: 42px;
    transition: background .2s, color .2s, transform .15s;
    text-decoration: none;
}
.btn-ipsen-lime:hover, .btn-ipsen-lime:focus {
    background: var(--ipsen-lime-2); color: var(--ipsen-navy); text-decoration: none;
    transform: translateY(-1px);
}
.btn-ipsen-outline,
body.ipsen-body .btn-ipsen-outline {
    display: inline-flex; align-items: center; justify-content: center;
    background: transparent; color: var(--ipsen-lime);
    border: 2px solid var(--ipsen-lime);
    border-radius: var(--ipsen-radius-pill);
    padding: 10px 28px;
    font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase;
    font-size: 0.78rem; line-height: 1.2; min-height: 42px;
    transition: background .2s, color .2s, transform .15s;
    text-decoration: none;
}
.btn-ipsen-outline:hover, .btn-ipsen-outline:focus {
    background: var(--ipsen-lime); color: var(--ipsen-navy); text-decoration: none;
    transform: translateY(-1px);
}

/* ---------- Landing (index) ---------- */
.ipsen-landing-hero {
    position: relative;
    background: var(--ipsen-navy);
    background-image:
        radial-gradient(circle at 5% 10%, rgba(255,255,255,0.08) 0, transparent 30%),
        radial-gradient(circle at 95% 85%, rgba(255,255,255,0.05) 0, transparent 35%),
        linear-gradient(180deg, var(--ipsen-navy) 0%, var(--ipsen-navy-2) 100%);
    color: #FFFFFF;
    padding: 80px 20px 110px;
    text-align: center;
    overflow: hidden;
}
.ipsen-landing-hero::before,
.ipsen-landing-hero::after {
    content:''; position:absolute; pointer-events:none;
    background: rgba(255,255,255,0.04);
    border-radius: 50%;
}
.ipsen-landing-hero::before { width: 520px; height: 520px; left: -180px; top: -120px; }
.ipsen-landing-hero::after  { width: 700px; height: 700px; right: -260px; bottom: -260px; }
.ipsen-landing-hero .hero-inner { position: relative; z-index: 1; max-width: 980px; margin: 0 auto; }
.ipsen-landing-hero .hero-eyebrow {
    color: var(--ipsen-lime); font-weight: 700; letter-spacing: 0.04em;
    font-size: 1rem; margin-bottom: 22px;
}
.ipsen-landing-hero h1 {
    font-weight: 800; color: #FFFFFF;
    font-size: clamp(2.4rem, 6vw, 4.4rem); line-height: 1.05;
    margin: 0 0 18px; letter-spacing: -0.01em;
}
.ipsen-landing-hero .hero-subtitle {
    color: #FFFFFF; font-weight: 400;
    font-size: clamp(1.05rem, 2vw, 1.35rem);
    max-width: 720px; margin: 0 auto 28px;
}
.ipsen-landing-hero .hero-modality {
    color: var(--ipsen-lime); font-weight: 700;
    font-size: 1rem; margin: 0 0 36px; letter-spacing: 0.02em;
}
.ipsen-landing-hero .hero-cta {
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--ipsen-lime); color: var(--ipsen-navy);
    border: none; border-radius: var(--ipsen-radius-pill);
    padding: 18px 56px;
    font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
    font-size: 0.95rem;
    transition: background .2s, transform .15s;
    text-decoration: none; cursor: pointer;
}
.ipsen-landing-hero .hero-cta:hover {
    background: var(--ipsen-lime-2); transform: translateY(-2px); text-decoration: none; color: var(--ipsen-navy);
}
.ipsen-landing-hero .hero-secondary { margin-top: 18px; display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }
.ipsen-landing-hero .hero-secondary .btn-ipsen-outline { color:#FFFFFF; border-color:#FFFFFF; }
.ipsen-landing-hero .hero-secondary .btn-ipsen-outline:hover { background:#FFFFFF; color:var(--ipsen-navy); }

/* Info bar — gradient blue → green → lime, navy text */
.ipsen-info-bar {
    background: linear-gradient(90deg, #6BA8E8 0%, #B6DD78 50%, var(--ipsen-lime) 100%);
    padding: 30px 20px;
}
.ipsen-info-bar .info-item {
    display: flex; align-items: center; gap: 18px; line-height: 1.25;
    color: var(--ipsen-text);
}
.ipsen-info-bar .info-icon { width: 56px; height: 56px; flex-shrink: 0; }
.ipsen-info-bar .info-text strong {
    display: block; color: var(--ipsen-text); font-weight: 700;
    font-size: 1.05rem; margin-bottom: 2px;
}
.ipsen-info-bar .info-text span {
    display: block; color: var(--ipsen-text); font-weight: 400; font-size: 0.95rem;
}

/* Down arrow indicator */
.ipsen-arrow-down {
    display: flex; justify-content: center; align-items: center;
    background: #FFFFFF; padding: 56px 20px;
}
.ipsen-arrow-down .circle {
    width: 56px; height: 56px; border-radius: 50%;
    border: 1.5px solid var(--ipsen-navy);
    display: flex; align-items: center; justify-content: center;
    color: var(--ipsen-navy);
}
.ipsen-arrow-down svg { width: 22px; height: 22px; }

/* Tagline block (white) */
.ipsen-tagline {
    background: #FFFFFF;
    padding: 0 20px 56px;
    text-align: center;
}
.ipsen-tagline p {
    max-width: 920px; margin: 0 auto;
    font-size: clamp(1rem, 1.5vw, 1.25rem);
    color: var(--ipsen-text); line-height: 1.55;
}

/* Presencial / Streaming dual cards */
.ipsen-modality-cards {
    background: #FFFFFF;
    padding: 0 20px 80px;
}
.ipsen-modality-cards .grid {
    display: grid; grid-template-columns: repeat(2, 1fr);
    gap: 28px; max-width: 1080px; margin: 0 auto;
}
.ipsen-modality-cards .card-modality {
    background: var(--ipsen-navy);
    background-image: linear-gradient(180deg, var(--ipsen-navy) 0%, var(--ipsen-navy-2) 100%);
    color: #FFFFFF;
    border-radius: var(--ipsen-radius);
    padding: 56px 32px 48px;
    text-align: center;
    min-height: 320px;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    border: none;
}
.ipsen-modality-cards .card-icon {
    width: 76px; height: 76px; margin-bottom: 18px;
}
.ipsen-modality-cards .card-icon svg { width: 100%; height: 100%; }
.ipsen-modality-cards .card-title {
    font-size: clamp(1.6rem, 2.5vw, 2.2rem);
    font-weight: 700; color: #FFFFFF;
    margin: 0 0 28px;
}
.ipsen-modality-cards .card-cta {
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--ipsen-lime); color: var(--ipsen-navy);
    border: none; border-radius: var(--ipsen-radius-pill);
    padding: 14px 40px;
    font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
    font-size: 0.85rem;
    transition: background .2s, transform .15s;
    text-decoration: none; cursor: pointer;
}
.ipsen-modality-cards .card-cta:hover {
    background: var(--ipsen-lime-2); transform: translateY(-1px); text-decoration: none; color: var(--ipsen-navy);
}
@media (max-width: 720px) {
    .ipsen-modality-cards .grid { grid-template-columns: 1fr; }
}

/* ---------- Programa / Agenda block ---------- */
.ipsen-agenda-block {
    background-color: var(--ipsen-lime);
    background-image: url('../images/bg-pattern-lime.svg');
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;
    padding: 80px 20px;
    position: relative;
}
.ipsen-agenda-block .agenda-grid {
    display: grid; grid-template-columns: 1fr 1.15fr; gap: 56px;
    max-width: 1180px; margin: 0 auto;
}
@media (max-width: 900px) { .ipsen-agenda-block .agenda-grid { grid-template-columns: 1fr; gap: 32px; } }

.ipsen-agenda-block .col-title {
    font-size: clamp(1.8rem, 3vw, 2.6rem);
    font-weight: 700; color: var(--ipsen-text);
    margin: 0 0 28px; letter-spacing: -0.005em;
}
.ipsen-agenda-block .speakers-list .speaker { margin-bottom: 22px; }
.ipsen-agenda-block .speakers-list .speaker:last-child { margin-bottom: 0; }
.ipsen-agenda-block .speaker-name { font-weight: 700; color: var(--ipsen-text); font-size: 1rem; margin: 0 0 4px; }
.ipsen-agenda-block .speaker-aff   { font-weight: 400; color: var(--ipsen-text); font-size: 0.95rem; line-height: 1.45; margin: 0; }

.ipsen-agenda-block .agenda-list { border-top: 1px solid var(--ipsen-line); }
.ipsen-agenda-block .agenda-item {
    display: grid; grid-template-columns: 130px 1fr; gap: 20px;
    padding: 18px 0;
    border-bottom: 1px solid var(--ipsen-line);
    align-items: flex-start;
}
.ipsen-agenda-block .agenda-time {
    color: var(--ipsen-text); font-weight: 500; font-size: 0.95rem; padding-top: 2px;
}
.ipsen-agenda-block .agenda-content { }
.ipsen-agenda-block .agenda-title {
    color: var(--ipsen-text); font-weight: 700; font-size: 1.05rem;
    margin: 0 0 4px; line-height: 1.3;
}
.ipsen-agenda-block .agenda-speakers {
    color: var(--ipsen-text); font-weight: 400; font-size: 0.95rem; line-height: 1.4; margin: 0;
}

/* ---------- Closing tagline + feature cards ---------- */
.ipsen-closing-tagline {
    background: #FFFFFF; padding: 60px 20px 30px; text-align: center;
}
.ipsen-closing-tagline p {
    max-width: 760px; margin: 0 auto;
    font-size: clamp(1rem, 1.4vw, 1.2rem); color: var(--ipsen-text); line-height: 1.55;
}

.ipsen-feature-cards {
    background: #FFFFFF; padding: 30px 20px 80px;
}
.ipsen-feature-cards .grid {
    display: grid; grid-template-columns: repeat(3, 1fr);
    gap: 28px; max-width: 1180px; margin: 0 auto;
}
@media (max-width: 900px) { .ipsen-feature-cards .grid { grid-template-columns: 1fr; } }

.ipsen-feature-cards .feature-card {
    background: var(--ipsen-navy);
    background-image: linear-gradient(180deg, var(--ipsen-navy) 0%, var(--ipsen-navy-2) 100%);
    color: #FFFFFF;
    border-radius: var(--ipsen-radius);
    padding: 38px 32px;
    min-height: 280px;
    display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start;
}
.ipsen-feature-cards .feature-num {
    color: var(--ipsen-lime); font-weight: 800;
    font-size: clamp(2.2rem, 3vw, 2.8rem);
    line-height: 1; margin: 0 0 18px;
}
.ipsen-feature-cards .feature-title {
    color: #FFFFFF; font-weight: 700; font-size: clamp(1.4rem, 2vw, 1.8rem);
    margin: 0 0 18px;
}
.ipsen-feature-cards .feature-desc {
    color: var(--ipsen-lime); font-weight: 400; font-size: 1rem; line-height: 1.45; margin: 0;
}

/* ---------- Final CTA ---------- */
.ipsen-final-cta {
    background: #FFFFFF; padding: 20px 20px 80px; text-align: center;
}
.ipsen-final-cta .btn-final {
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--ipsen-lime); color: var(--ipsen-navy);
    border: none; border-radius: var(--ipsen-radius-pill);
    padding: 18px 56px;
    font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
    font-size: 0.95rem;
    transition: background .2s, transform .15s; text-decoration: none; cursor: pointer;
}
.ipsen-final-cta .btn-final:hover {
    background: var(--ipsen-lime-2); transform: translateY(-2px); color: var(--ipsen-navy); text-decoration: none;
}

/* ---------- Footer ---------- */
body.ipsen-body footer.ipsen-footer,
.ipsen-footer {
    background: var(--ipsen-navy);
    background-image:
        radial-gradient(circle at 95% 85%, rgba(255,255,255,0.06) 0, transparent 40%),
        linear-gradient(180deg, var(--ipsen-navy) 0%, var(--ipsen-navy-2) 100%);
    color: #FFFFFF;
    padding: 56px 0;
    position: relative; overflow: hidden;
    margin-top: 0;
}
.ipsen-footer .footer-grid {
    display: grid; grid-template-columns: 1fr 1fr 1fr;
    align-items: center; gap: 24px;
    max-width: 1180px; margin: 0 auto; padding: 0 24px;
}
.ipsen-footer .footer-logo { display: flex; flex-direction: column; align-items: center; }
.ipsen-footer .footer-logo > a img { width: 161px; height: auto; max-width: 100%; }
.ipsen-footer .footer-logo .footer-partner-logo { height: 36px; width: auto; max-width: 100%; }
.ipsen-footer .footer-code {
    text-align: center; color: #FFFFFF; font-size: 0.95rem;
    font-weight: 400; letter-spacing: 0.02em;
}
.ipsen-footer .footer-links {
    display: flex; flex-direction: column; align-items: flex-end;
    gap: 10px; font-size: 0.95rem;
}
.ipsen-footer .footer-links a {
    color: #FFFFFF; text-decoration: none; transition: opacity .2s;
}
.ipsen-footer .footer-links a:hover { opacity: 0.75; color: #FFFFFF; text-decoration: none; }

@media (max-width: 720px) {
    .ipsen-footer .footer-grid { grid-template-columns: 1fr; text-align: center; gap: 28px; }
    .ipsen-footer .footer-logo { justify-content: center; }
    .ipsen-footer .footer-links { align-items: center; }
}

/* ---------- Streaming page ---------- */
body.ipsen-body.streaming-body,
body.ipsen-body[data-page="streaming"] {
    background: var(--ipsen-navy) !important;
}
body.ipsen-body .streaming-shell {
    background: var(--ipsen-navy);
    background-image:
        radial-gradient(circle at 5% 12%, rgba(255,255,255,0.06) 0, transparent 30%),
        radial-gradient(circle at 95% 80%, rgba(255,255,255,0.04) 0, transparent 32%),
        linear-gradient(180deg, var(--ipsen-navy) 0%, var(--ipsen-navy-2) 100%);
    min-height: calc(100vh - 80px);
    color: #FFFFFF;
    padding: 24px 0 60px;
}
body.ipsen-body .streaming-shell h3 .text-program-blue,
body.ipsen-body .streaming-shell h3 span:first-child {
    color: var(--ipsen-lime) !important;
    font-weight: 700;
}
body.ipsen-body .streaming-shell h3 span.text-white,
body.ipsen-body .streaming-shell h3 .text-white {
    color: #FFFFFF !important; font-weight: 700;
}
body.ipsen-body .streaming-shell h3 {
    font-size: clamp(1.4rem, 3vw, 2.1rem);
    line-height: 1.25; letter-spacing: 0;
}
body.ipsen-body .streaming-shell .frame {
    background: #FFFFFF; border-radius: 4px;
}
body.ipsen-body .streaming-shell #source-image,
body.ipsen-body .streaming-shell .content-imagen img { background: #FFFFFF; }

body.ipsen-body .streaming-shell .form-control,
body.ipsen-body .streaming-shell #input-question,
body.ipsen-body .streaming-shell #input-edit-question {
    background: #FFFFFF; color: var(--ipsen-text);
    border: none; border-radius: var(--ipsen-radius-pill);
    padding: 14px 22px; box-shadow: none;
    min-height: 52px;
}
body.ipsen-body .streaming-shell #input-question::placeholder,
body.ipsen-body .streaming-shell #input-edit-question::placeholder { color: rgba(24,24,24,0.5); }
body.ipsen-body .streaming-shell #chars,
body.ipsen-body .streaming-shell #chars * { color: rgba(255,255,255,0.7); }
body.ipsen-body .streaming-shell .hr-blue { border-color: rgba(255,255,255,0.18); }

/* Streaming buttons */
body.ipsen-body .streaming-shell .btn-toxin-green,
body.ipsen-body .streaming-shell .btn-toxin.bg-blue {
    background: var(--ipsen-lime) !important; color: var(--ipsen-navy) !important;
    border: 2px solid var(--ipsen-lime); border-radius: var(--ipsen-radius-pill);
    padding: 12px 32px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase;
    font-size: 0.85rem; min-height: 46px;
}
body.ipsen-body .streaming-shell .btn-toxin-green:hover,
body.ipsen-body .streaming-shell .btn-toxin.bg-blue:hover {
    background: var(--ipsen-lime-2) !important; color: var(--ipsen-navy) !important;
}
body.ipsen-body .streaming-shell .btn-toxin-transparent {
    background: transparent !important; color: var(--ipsen-lime) !important;
    border: 2px solid var(--ipsen-lime); border-radius: var(--ipsen-radius-pill);
    padding: 12px 32px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase;
    font-size: 0.85rem; min-height: 46px;
}
body.ipsen-body .streaming-shell .btn-toxin-transparent:hover {
    background: var(--ipsen-lime) !important; color: var(--ipsen-navy) !important;
}

body.ipsen-body .streaming-shell .question-box {
    background: rgba(255,255,255,0.08);
    border-radius: var(--ipsen-radius-sm);
    color: #FFFFFF; padding: 14px 18px;
}
body.ipsen-body .streaming-shell .question-box.no-bg { background: rgba(255,255,255,0.04); }
body.ipsen-body .streaming-shell .question-box,
body.ipsen-body .streaming-shell .question-box * { color: #FFFFFF; }

/* Reaction buttons (emoji circles) */
body.ipsen-body .streaming-shell #reaction-box,
body.ipsen-body .streaming-shell .reaction-row {
    display: flex; gap: 10px; justify-content: flex-end; flex-wrap: wrap; margin: 10px 0;
}
body.ipsen-body .streaming-shell .reaction-row button {
    width: 44px; height: 44px; padding: 0;
    background: #FFFFFF; border-radius: 50%; border: none;
    display: inline-flex; align-items: center; justify-content: center;
    transition: transform .15s;
}
body.ipsen-body .streaming-shell .reaction-row button:hover { transform: scale(1.08); }
body.ipsen-body .streaming-shell .reaction-row img { width: 24px; height: 24px; }

/* ---------- Modals (login + register) ---------- */
body.ipsen-body .modal-backdrop.show { opacity: 0.55; background: var(--ipsen-navy-2); }

body.ipsen-body #login-modal .modal-content,
body.ipsen-body #register-modal .modal-content {
    background: #F4F4F4;
    border: none; border-radius: var(--ipsen-radius);
    box-shadow: var(--ipsen-shadow);
    padding: 12px 14px 14px;
}
body.ipsen-body #login-modal .modal-dialog,
body.ipsen-body #register-modal .modal-dialog { max-width: 1080px; }
body.ipsen-body #login-modal .modal-dialog { max-width: 720px; }

body.ipsen-body #login-modal .close-modal,
body.ipsen-body #register-modal .close-modal {
    color: var(--ipsen-lime) !important;
    opacity: 1; text-shadow: none;
    font-size: 1.6rem; font-weight: 300;
    background: transparent; border: none;
    line-height: 1; padding: 6px;
}
body.ipsen-body #login-modal .close-modal:hover,
body.ipsen-body #register-modal .close-modal:hover { opacity: 0.75; }

body.ipsen-body #login-modal h3,
body.ipsen-body #register-modal h3,
body.ipsen-body #login-modal .text-gradient,
body.ipsen-body #register-modal .text-gradient {
    color: var(--ipsen-navy) !important;
    background: none !important;
    -webkit-text-fill-color: var(--ipsen-navy) !important;
    -webkit-background-clip: initial !important;
    font-weight: 800;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    text-transform: none; letter-spacing: -0.005em;
    margin: 6px 0 22px;
    text-align: center;
    padding: 0;
}
body.ipsen-body #login-modal h3::after,
body.ipsen-body #register-modal h3::after { content: none !important; }

/* Form fields */
body.ipsen-body #login-modal label,
body.ipsen-body #register-modal label,
body.ipsen-body #login-modal .control-label,
body.ipsen-body #register-modal .control-label {
    color: var(--ipsen-navy) !important;
    font-weight: 700; text-transform: none;
    font-size: 0.95rem; letter-spacing: 0;
    margin-bottom: 6px;
}
body.ipsen-body #login-modal .form-control,
body.ipsen-body #register-modal .form-control {
    background: #E9EAEE !important;
    border: 1px solid transparent !important;
    border-radius: var(--ipsen-radius-pill) !important;
    padding: 14px 22px;
    color: var(--ipsen-text);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.6), 0 1px 0 rgba(0,0,0,0.04);
    min-height: 52px;
    font-size: 1rem;
}
body.ipsen-body #login-modal .form-control:focus,
body.ipsen-body #register-modal .form-control:focus {
    background: #FFFFFF !important;
    border-color: var(--ipsen-navy) !important;
    box-shadow: 0 0 0 3px rgba(10,44,107,0.12);
    outline: none;
}
body.ipsen-body #login-modal .form-control.is-invalid,
body.ipsen-body #register-modal .form-control.is-invalid,
body.ipsen-body #login-modal .form-control.border-red.is-invalid,
body.ipsen-body #register-modal .form-control.border-red.is-invalid {
    border-color: #dc3545 !important;
    box-shadow: 0 0 0 3px rgba(220,53,69,0.12);
}
body.ipsen-body #login-modal .form-text,
body.ipsen-body #register-modal .form-text {
    color: rgba(24,24,24,0.6) !important;
    font-size: 0.8rem; margin-top: 6px; padding-left: 18px;
}

/* Modal submit button (lime pill) */
body.ipsen-body #login-modal .btn-toxin-green,
body.ipsen-body #register-modal .btn-toxin-green,
body.ipsen-body #login-modal button[type="submit"],
body.ipsen-body #register-modal button[type="submit"] {
    background: var(--ipsen-lime) !important; color: var(--ipsen-navy) !important;
    border: none !important; border-radius: var(--ipsen-radius-pill) !important;
    padding: 14px 56px;
    font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
    font-size: 0.9rem; min-height: 52px; min-width: 200px;
    transition: background .2s, transform .15s;
}
body.ipsen-body #login-modal .btn-toxin-green:hover,
body.ipsen-body #register-modal .btn-toxin-green:hover,
body.ipsen-body #login-modal button[type="submit"]:hover,
body.ipsen-body #register-modal button[type="submit"]:hover {
    background: var(--ipsen-lime-2) !important; color: var(--ipsen-navy) !important;
    transform: translateY(-1px);
}

/* Forgot link in login */
body.ipsen-body #login-modal .text-blue { color: var(--ipsen-navy) !important; }
body.ipsen-body #login-modal a.text-blue { text-decoration: underline; font-weight: 600; font-size: 0.9rem; }
body.ipsen-body #login-modal a.text-blue:hover { color: var(--ipsen-navy-2) !important; }

/* Recaptcha alignment */
body.ipsen-body #login-modal #input-recaptcha-login,
body.ipsen-body #register-modal #input-recaptcha {
    display: inline-block; transform-origin: center;
}
body.ipsen-body #login-modal #input-recaptcha-login.is-invalid,
body.ipsen-body #register-modal #input-recaptcha.is-invalid {
    outline: 2px solid #dc3545; outline-offset: 4px; border-radius: 4px;
}
body.ipsen-body #login-modal #input-recaptcha-login.is-invalid + .invalid-feedback,
body.ipsen-body #register-modal #input-recaptcha.is-invalid + .invalid-feedback {
    display: block; text-align: center;
}

/* Register modal: legal text & checkboxes */
body.ipsen-body #register-modal .form-check {
    padding-left: 0;
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
body.ipsen-body #register-modal .form-check-input {
    position: relative;
    margin: 4px 0 0 0;
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    accent-color: var(--ipsen-navy);
}
body.ipsen-body #register-modal .form-check-label,
body.ipsen-body #register-modal .form-check-label * {
    color: rgba(24,24,24,0.7); font-size: 0.8rem; line-height: 1.5;
}
body.ipsen-body #register-modal p.text-muted,
body.ipsen-body #register-modal .text-muted {
    color: rgba(24,24,24,0.7) !important;
}
body.ipsen-body #register-modal .text-blue { color: var(--ipsen-navy) !important; font-weight: 600; }

/* Generic dialog tweaks */
body.ipsen-body .modal-content { border-radius: var(--ipsen-radius); border: none; }
body.ipsen-body .modal-body { padding: 28px 32px; }

/* ---------- Cookies banner adjustments ---------- */
body.ipsen-body .banner-cookies { background: var(--ipsen-navy-2); color: #FFFFFF; }
body.ipsen-body .banner-cookies .text-pink { color: var(--ipsen-lime); text-decoration: underline; }
body.ipsen-body .banner-cookies .btn-success { background: var(--ipsen-lime); color: var(--ipsen-navy); border: none; }
body.ipsen-body .banner-cookies .btn-success:hover { background: var(--ipsen-lime-2); color: var(--ipsen-navy); }

/* Programa standalone wrapper (when used as full page) */
.ipsen-page .ipsen-hero { display: none; }  /* Replaced by header on programa */

/* Misc */
.ipsen-page section { position: relative; }
.ipsen-page strong { font-weight: 700; }

/* Helper to hide elements scoped to ipsen */
.ipsen-only { display: block; }

/* ---------- SweetAlert2 (external link confirm) ---------- */
.swal2-popup.ipsen-swal {
    border-radius: 14px;
    font-family: 'Inter', sans-serif;
}
.swal2-popup.ipsen-swal .swal2-icon {
    width: 56px;
    height: 56px;
    border-width: 3px;
    margin: 1rem auto 0.5rem;
}
.swal2-popup.ipsen-swal .swal2-icon .swal2-icon-content { font-size: 2.25rem; }
.swal2-popup.ipsen-swal .ipsen-swal-title {
    color: var(--ipsen-navy);
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.35;
    margin-top: 0.5rem;
}
.swal2-popup.ipsen-swal .ipsen-swal-html {
    color: rgba(24,24,24,0.75);
    font-size: 0.9rem;
}
.swal2-popup.ipsen-swal .swal2-actions { gap: 8px; margin-top: 1rem; }
.swal2-popup.ipsen-swal .ipsen-swal-confirm {
    background: var(--ipsen-lime);
    color: var(--ipsen-navy);
    border: none;
    border-radius: 999px;
    padding: 10px 28px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.swal2-popup.ipsen-swal .ipsen-swal-confirm:hover { background: var(--ipsen-lime-2); }
.swal2-popup.ipsen-swal .ipsen-swal-cancel {
    background: transparent;
    color: var(--ipsen-navy);
    border: 1.5px solid var(--ipsen-navy);
    border-radius: 999px;
    padding: 10px 28px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.swal2-popup.ipsen-swal .ipsen-swal-cancel:hover { background: var(--ipsen-navy); color: #fff; }

/* ---------- Programa welcome banner ---------- */
.ipsen-programa-banner {
    background: var(--ipsen-navy);
    background-image:
        radial-gradient(circle at 80% -10%, rgba(255,255,255,0.07) 0, transparent 50%),
        linear-gradient(160deg, var(--ipsen-navy) 0%, var(--ipsen-navy-2) 100%);
}
.programa-banner-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
    max-width: 680px;
    margin: 0 auto;
    text-align: center;
}
.programa-banner-logo {
    width: 320px;
    height: auto;
}
.programa-banner-msg {
    color: #FFFFFF;
    font-size: 1.4rem;
    font-weight: 700;
    margin: 0;
    letter-spacing: 0.01em;
}

/* ======================================================
   RESPONSIVE
   ====================================================== */

/* Overflow guard � prevent horizontal scrollbar on all viewports */
html { overflow-x: hidden; }
body.ipsen-body { overflow-x: hidden; max-width: 100%; }
body.ipsen-body .ipsen-page { overflow-x: hidden; }

/* ---- 992px (laptop/notebook) ---- */
@media (max-width: 992px) {
    .ipsen-feature-cards .grid { grid-template-columns: repeat(2, 1fr); }
}

/* ---- 768px (tablet) ---- */
@media (max-width: 768px) {
    /* Hero: shrink decorative circles so they don't bleed */
    .ipsen-landing-hero { padding: 56px 16px 80px; }
    .ipsen-landing-hero::before { width: 300px; height: 300px; left: -100px; top: -80px; }
    .ipsen-landing-hero::after  { width: 400px; height: 400px; right: -140px; bottom: -140px; }

    /* Info bar */
    .ipsen-info-bar { padding: 24px 16px; }
    .ipsen-info-bar .info-icon { width: 44px; height: 44px; }

    /* Arrow / tagline */
    .ipsen-arrow-down { padding: 36px 20px; }
    .ipsen-tagline { padding: 0 16px 40px; }

    /* Modality cards */
    .ipsen-modality-cards { padding: 0 16px 56px; }
    .ipsen-modality-cards .card-modality { padding: 40px 24px 36px; min-height: auto; }

    /* Agenda */
    .ipsen-agenda-block { padding: 56px 16px; }
    .ipsen-agenda-block .agenda-item { grid-template-columns: 110px 1fr; gap: 12px; }

    /* Feature cards & CTA */
    .ipsen-closing-tagline { padding: 40px 16px 24px; }
    .ipsen-feature-cards { padding: 24px 16px 56px; }
    .ipsen-final-cta { padding: 16px 16px 56px; }

    /* Footer */
    .ipsen-footer { padding: 40px 0; }
    .ipsen-footer .footer-grid { padding: 0 16px; }

    /* Programa banner */
    .ipsen-programa-banner { padding: 80px 16px; }
    .programa-banner-logo { width: 240px; }
}

/* ---- 576px (mobile) ---- */
@media (max-width: 576px) {
    /* Header buttons */
    body.ipsen-body .ipsen-header .ipsen-header-actions .btn {
        padding: 8px 12px; font-size: 0.78rem;
    }

    /* Hero */
    .ipsen-landing-hero { padding: 48px 16px 64px; }
    .ipsen-landing-hero .hero-cta { padding: 14px 32px; width: 100%; max-width: 340px; }

    /* Info bar */
    .ipsen-info-bar { padding: 20px 16px; }
    .ipsen-info-bar .info-item { gap: 10px; }

    /* Modality cards: 1 col (override 720px rule for clarity) */
    .ipsen-modality-cards .grid { grid-template-columns: 1fr; }

    /* Agenda: stack time + content vertically */
    .ipsen-agenda-block .agenda-item { grid-template-columns: 1fr; gap: 2px; }
    .ipsen-agenda-block .agenda-time {
        font-size: 0.85rem; color: var(--ipsen-navy); font-weight: 700;
    }

    /* Feature cards */
    .ipsen-feature-cards .grid { grid-template-columns: 1fr; }
    .ipsen-feature-cards .feature-card { padding: 28px 24px; min-height: auto; }

    /* Final CTA */
    .ipsen-final-cta .btn-final { padding: 14px 32px; width: 100%; max-width: 340px; }

    /* Footer */
    .ipsen-footer .footer-grid { grid-template-columns: 1fr; }

    /* Programa banner */
    .ipsen-programa-banner { padding: 60px 16px; }
    .programa-banner-logo { width: 200px; }
    .programa-banner-msg { font-size: 1.2rem; }
    .programa-banner-logo { width: 140px; }
    .programa-banner-msg { font-size: 1rem; }
}

/* ---------- Policy pages ---------- */
body.ipsen-body .ipsen-policy-page {
    background: var(--ipsen-navy);
    min-height: 100vh;
    color: #FFFFFF;
}
body.ipsen-body .ipsen-policy-page .policy-inner {
    max-width: 720px;
    margin: 0 auto;
    padding: 60px 24px 80px;
}
body.ipsen-body .ipsen-policy-page .policy-title {
    color: var(--ipsen-lime);
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    font-weight: 800;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 40px;
}
body.ipsen-body .ipsen-policy-page .policy-subtitle {
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.9rem;
    letter-spacing: 0.06em;
    color: #FFFFFF;
    margin-bottom: 8px;
}
body.ipsen-body .ipsen-policy-page p,
body.ipsen-body .ipsen-policy-page li {
    font-size: 0.82rem;
    line-height: 1.7;
    color: rgba(255,255,255,0.9);
    margin-bottom: 12px;
}
body.ipsen-body .ipsen-policy-page .policy-section {
    margin-bottom: 28px;
}
body.ipsen-body .ipsen-policy-page .policy-section-title {
    font-weight: 700;
    font-size: 0.88rem;
    color: #FFFFFF;
    margin-bottom: 6px;
}
body.ipsen-body .ipsen-policy-page ul {
    padding-left: 0;
    list-style: none;
}
body.ipsen-body .ipsen-policy-page ul li::before {
    content: '– ';
}
body.ipsen-body .ipsen-policy-page a {
    color: var(--ipsen-lime);
    text-decoration: underline;
}
body.ipsen-body .ipsen-policy-page a:hover { color: #FFFFFF; }
body.ipsen-body .ipsen-policy-page .policy-back {
    display: inline-block;
    color: rgba(255,255,255,0.6);
    font-size: 0.82rem;
    margin-bottom: 32px;
    text-decoration: none;
}
body.ipsen-body .ipsen-policy-page .policy-back:hover { color: #FFFFFF; }
body.ipsen-body .ipsen-policy-page .policy-footer {
    margin-top: 56px;
    padding-top: 28px;
    border-top: 1px solid rgba(255,255,255,0.15);
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
}
body.ipsen-body .ipsen-policy-page .policy-footer-logo {
    width: 120px;
    height: auto;
}
body.ipsen-body .ipsen-policy-page .policy-footer-meta {
    font-size: 0.72rem;
    color: rgba(255,255,255,0.5);
    line-height: 1.5;
}

.text-destac {
    color: var(--ipsen-lime);
}