/* ============================================================
 * MedSpeed Events â€" consolidated stylesheet
 * All section styles in ONE file (no duplicate CSS per section).
 * ============================================================ */

/* ---------- BANNER / HERO ---------- */
.msp-banner-section { padding: 216px 20px 96px; background: #e6f5ef; }
@media (min-width: 1600px) { .msp-banner-section { padding: 216px 20px 96px; } }
.msp-banner-inner { max-width: 1336px; margin: 0 auto; position: relative; }
.msp-banner-back { display: inline-flex; align-items: center; gap: 6px; color: #022b85; font-size: 16px; font-weight: 600; text-decoration: none; margin-bottom: 64px; }
.msp-banner-layout { text-align: center; max-width: 800px; margin: 0 auto; }
.msp-banner-badge { display: inline-block; background: #022b85; color: #ffffff; font-size: 12px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; padding: 6px 12px; border-radius: 4px; margin-bottom: 24px; font-family: Manrope,sans-serif, ui-sans-serif, system-ui, sans-serif; }
.msp-banner-title { margin: 0 0 20px; color: #022b85; font-size: 56px; font-weight: 800; line-height: 1; font-family: Manrope,sans-serif; letter-spacing: -.025em; }
.msp-banner-subtitle { margin: 0 0 32px; color: #022b85e6; font-size: 20px; line-height: 1.75rem; font-weight: 400; }
.msp-banner-meta strong { color: #0f2980; }
.msp-banner-meta .sep { margin: 0 10px; opacity: .5; }
.msp-banner-date-row { color: #0f2980; font-weight: 600; font-size: 15px; display: flex; gap: 16px; justify-content: center; align-items: center; }
.msp-banner-has-image .msp-banner-layout { display: grid; grid-template-columns: 1.6fr 1fr; gap: 32px; text-align: left; align-items: center; max-width: 1376px !important; margin: 0; }
.msp-banner-has-image .msp-banner-date-row { justify-content: flex-start; }
.msp-banner-media { /*background: #ffffff;*/ border-radius: 0px; padding: 32px; display: flex; align-items: center; justify-content: center; min-height: 500px; max-width: 500px; }
.msp-banner-media img { max-width: 100%; height: auto; display: block; }
.msp-banner-meta { color: #4a5a8f; font-size: 16px; margin-bottom: 12px; display: flex; align-items: center; gap: 12px; font-family: Manrope,sans-serif, ui-sans-serif, system-ui, sans-serif; text-align: center; }
.msp-banner-location { display: flex; align-items: center; gap: 6px; font-size: 16px; font-weight: 600; color: #022b85; }
.msp-banner-location img { width: 100%; max-width: 16px !important; }
.msp-banner-meta > * { display: flex; align-items: center; }
.msp-banner-meta > *:not(:last-child)::after { content: "|"; margin-left: 12px; color: #022b8566; }
.msp-banner-date-row > *:not(:last-child)::after { content: "|"; margin-left: 12px; color: #022b8566; }
.msp-banner-date-row span { font-family: Manrope,sans-serif, ui-sans-serif, system-ui, sans-serif; font-size: 16px; display: flex; justify-content: center; gap: 8px; }
.msp-banner-date-row img { width: 100%; max-width: 16px !important; }
@media (max-width: 1024px) {
    .msp-banner-has-image .msp-banner-layout { display: grid; grid-template-columns: 1fr; row-gap: 40px; text-align: left; align-items: center; margin: 0; }
    .msp-banner-title { margin: 0 0 20px; color: #022b85; font-size: 48px; font-weight: 800; line-height: 1; font-family: Manrope,sans-serif; letter-spacing: -.025em; }
    .msp-banner-subtitle { margin: 0 0 32px; color: #022b85e6; font-size: 18px; line-height: 1.75rem; font-weight: 400; }
    .msp-banner-media { background: #ffffff; border-radius: 0px; padding: 24px; display: flex; align-items: center; justify-content: center; min-height: 280px; width: 100%; max-width: 280px; margin: auto; }
}
@media (max-width: 767px) {
    .msp-banner-section { padding: 100px 20px 64px; background: #e8f5ec; }
    .msp-banner-has-image .msp-banner-layout { grid-template-columns: 1fr; text-align: left; }
    .msp-banner-subtitle { margin: 0 0 32px; color: #022b85e6; font-size: 16px; line-height: 1.75rem; font-weight: 400; }
    .msp-banner-has-image .msp-banner-date-row { justify-content: center; }
    .msp-banner-media { background: #ffffff; border-radius: 0px; padding: 24px; display: flex; align-items: center; justify-content: center; min-height: 200px; max-width: 200px; width: 100%; }
    .msp-banner-title { font-size: 36px; margin-bottom: 24px; }
}

/* ---------- TEXT BLOCK ---------- */
.msp-tb-section { padding: 80px 20px; background: #ffffff; }
.msp-tb-section.msp-tb-columns-1 { padding: 48px 20px; }
.msp-tb-section.msp-tb-columns-1 .msp-tb-inner { max-width: 768px; }
.msp-tb-inner { max-width: 1336px; margin: 0 auto; }
.msp-tb-heading { margin: 0 0 48px; color: #0f2980; font-size: 36px; font-weight: 800; line-height: 40px; }
.msp-tb-body { color: #020817cc; font-size: 18px; line-height: 28px; font-weight: 400; }
.msp-tb-body p { margin: 0 0 20px; font-weight: 400; }
.msp-tb-body p:last-child { margin-bottom: 0; }
.msp-tb-body ul, .msp-tb-body ol { margin: 0 0 16px; padding-left: 24px; }
.msp-tb-body ul { list-style: disc; }
.msp-tb-body ol { list-style: decimal; }
.msp-tb-body li { margin-bottom: 8px; }
.msp-tb-body li:last-child { margin-bottom: 0; }
.msp-tb-body li > ul, .msp-tb-body li > ol { margin-top: 8px; margin-bottom: 0; }
.msp-tb-body a { color: #0f2980; text-decoration: underline; text-underline-offset: 2px; }
.msp-tb-body a:hover { color: #3a9d5d; }
.msp-tb-body strong, .msp-tb-body b { font-weight: 700; }
.msp-tb-body em, .msp-tb-body i { font-style: italic; }
.msp-tb-body h1, .msp-tb-body h2, .msp-tb-body h3, .msp-tb-body h4 { color: #0f2980; font-weight: 800; margin: 24px 0 12px; line-height: 1.3; }
.msp-tb-body h1:first-child, .msp-tb-body h2:first-child, .msp-tb-body h3:first-child, .msp-tb-body h4:first-child { margin-top: 0; }
.msp-tb-body blockquote { margin: 16px 0; padding-left: 20px; border-left: 3px solid #0f2980; color: #020817cc; font-style: italic; }
.msp-tb-align-center { text-align: center; }
.msp-tb-align-left { text-align: left; }
.msp-tb-columns-1.msp-tb-no-heading .msp-tb-inner { max-width: 640px; margin: 0 auto; }
.msp-tb-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; column-gap: 48px; }
.msp-tb-images { margin-top: 20px; }
.msp-tb-images.msp-tb-images-1 { display: flex; justify-content: center; }
.msp-tb-images.msp-tb-images-1 img { max-width: 50%; }
.msp-tb-images.msp-tb-images-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
.msp-tb-images img { width: 100%; height: auto; border-radius: 4px; display: block; }
@media (max-width: 767px) {
    .msp-tb-section.msp-tb-columns-1 { padding: 32px 20px; }
    .msp-tb-section { padding: 64px 20px; }
    .msp-tb-heading { font-size: 30px; font-weight: 800; line-height: 30px; margin: 0 0 24px; }
    .msp-tb-two-col { grid-template-columns: 1fr; gap: 32px; }
    .msp-tb-body { font-size: 16px; }
    .msp-tb-columns-1.msp-tb-no-heading .msp-tb-inner { max-width: 100%; }
    .msp-tb-images.msp-tb-images-1 img { max-width: 100%; }
    .msp-tb-images.msp-tb-images-2 { grid-template-columns: 1fr; }
}

/* ---------- FEATURE GRID ---------- */
.msp-fg-section { padding: 80px 20px; background: #f5f5f5; }
.msp-fg-inner { max-width: 1152px; margin: 0 auto; }
.msp-fg-heading { margin: 0 0 72px; color: #0f2980; font-size: 36px; font-weight: 800; text-align: center; line-height: 40px; }
.msp-fg-boxes { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }
.msp-fg-card { background: #ffffff; border-radius: 16px; padding: 32px 24px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; align-items: center; /*text-align: center;*/ flex-direction: column; flex: 1 1 calc(25% - 12px); max-width: calc(25% - 12px); }
.msp-fg-icon { width: 40px; height: 40px; object-fit: contain; margin-bottom: 16px; }
.msp-fg-title { margin: 0 0 8px; color: #0f2980; font-size: 17px; font-weight: 600; }
.msp-fg-body { margin: 0; color: #323232; font-size: 16px; line-height: 1.6; font-weight: 400; }
.msp-fg-icon ~ .msp-fg-body { text-align: center !important; }
@media (max-width: 991px) { .msp-fg-heading { margin: 0 0 56px !important; } .msp-fg-card { flex-basis: calc(50% - 8px); max-width: calc(50% - 8px); } }
@media (max-width: 600px) { .msp-fg-card { flex-basis: 100%; max-width: 100%; } }

/* ---------- SCHEDULE / DETAIL BOXES ---------- */
.msp-sb-section { padding: 64px 20px; background: #12307e; }
@media (min-width: 1024px) { .msp-sb-section { padding: 96px 20px; } }
.msp-sb-inner { max-width: 1152px; margin: 0 auto; }
.msp-sb-heading { margin: 0 0 40px; color: #0f2980; font-size: 28px; font-weight: 600; text-align: center; line-height: 1.111; }
@media (min-width: 1024px) { .msp-sb-heading { font-size: 36px; margin-bottom: 75px; line-height: 40px; } }
.msp-sb-boxes { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 1024px) { .msp-sb-boxes { grid-template-columns: repeat(auto-fit, minmax(320px, 368px)); gap: 24px; justify-content: center; } }

/* Fix 1: parent selector raises specificity so Elementor's regenerated
   stylesheet cannot override the mobile/flip display toggle. */
.msp-sb-section .msp-sb-mobile { display: block; background: #ffffff; border-radius: 12px; padding: 20px; box-shadow: 0 5px 12px rgba(0,0,0,.1), 0 22px 22px rgba(0,0,0,.09); }
@media (min-width: 1024px) { .msp-sb-section .msp-sb-mobile { display: none; } }

.msp-sb-mobile-header { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.msp-sb-mobile-icon-wrap { width: 56px; height: 56px; border-radius: 12px; background: #eaf5ee; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.msp-sb-mobile-icon-wrap img { width: 28px; height: 28px; object-fit: contain; }
.msp-sb-mobile-title { margin: 0; color: #0f2980; font-size: 19px; font-weight: 700; line-height: 1.25; }
.msp-sb-mobile-slots { display: flex; flex-direction: column; gap: 12px; }
.msp-sb-mobile-slot { padding: 12px 0; border-bottom: 1px solid #eceef2; }
.msp-sb-mobile-slot:last-child { border-bottom: none; }
.msp-sb-mobile-desc { margin: 16px 0 0; color: #0f2980; font-size: 14px; line-height: 1.5; }

.msp-sb-section .msp-sb-flip { display: none; }
@media (min-width: 1024px) { .msp-sb-section .msp-sb-flip { display: block; perspective: 1200px; height: 420px; } }

.msp-sb-flip-inner { position: relative; width: 100%; height: 100%; transition: transform .6s; transform-style: preserve-3d; }
.msp-sb-flip:hover .msp-sb-flip-inner { transform: rotateY(180deg); }
.msp-sb-flip.msp-sb-no-back .msp-sb-flip-inner { transition: none; }
.msp-sb-flip.msp-sb-no-back:hover .msp-sb-flip-inner { transform: none; }
.msp-sb-face { position: absolute; inset: 0; backface-visibility: hidden; background: #ffffff; border-radius: 12px; padding: 32px 24px; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2rem; overflow: hidden; border: 1px solid #0f2980; }
.msp-sb-back { transform: rotateY(180deg); justify-content: flex-start; padding-top: 32px; gap: 0; }
.msp-sb-title { color: #0f2980; font-size: 24px; line-height: 32px; font-weight: 600; }
.msp-sb-icon-wrap { width: 128px; height: 128px; border-radius: 14px; background: #eaf5ee; display: flex; align-items: center; justify-content: center; margin: 0 auto; flex-shrink: 0; }
.msp-sb-icon { width: 70px; height: 70px; object-fit: contain; }
.msp-sb-back .msp-sb-icon-wrap { width: 72px; height: 72px; margin-bottom: 20px; border-radius: 12px; }
.msp-sb-back .msp-sb-icon { width: 48px; height: 48px; }
.msp-sb-slots { width: 100%; text-align: left; max-width: 240px; border-bottom: 1px solid #e2e8f0; }
.msp-sb-slot { padding: 14px 0; border-bottom: 1px solid #eceef2; }
.msp-sb-slot:last-child { border-bottom: none; }
.msp-sb-slot-date, .msp-sb-slot-time { display: flex; align-items: center; gap: 8px; color: #0f2980; font-weight: 600; font-size: 15px; margin-bottom: 6px; }
.msp-sb-slot-date img, .msp-sb-slot-time img { width: 16px; height: 16px; flex-shrink: 0; object-fit: contain; }
.msp-sb-slot-time { font-weight: 400; margin-top: 2px; margin-bottom: 0; }
.msp-sb-back-desc { margin-top: 14px; color: #0f2980; font-size: 13px; text-align: center; max-width: 240px; line-height: 1.4; font-weight: 400; }

/* ---------- CTA ---------- */
.msp-cta-section {
    padding: 112px 32px; background: #12307e; text-align: center; color: #e2e6ef;
    background-image: url("data:image/svg+xml,%3csvg%20width=%27528%27%20height=%27473%27%20viewBox=%270%200%20528%20473%27%20fill=%27none%27%20xmlns=%27http://www.w3.org/2000/svg%27%3e%3cg%20clip-path=%27url(%23clip0_90_408)%27%3e%3cpath%20d=%27M40.4653%20-29.7425L451.692%20388.245L754.309%20386.996M320.088%20-285.995L721.893%20122.415L715.709%20424.972M98.7146%20-36.3074L474.786%20345.947L788.683%20347.584M295.179%20-245.542L679.223%20144.816L675.742%20458.698M117.845%20-79.7746L497.848%20306.476L825.885%20308.187M277.498%20-200.601L639.381%20167.231L635.744%20495.252M162.383%20-91.6972L516.653%20268.397L865.914%20268.805M232.96%20-188.679L601.001%20185.413L595.714%20534.635M175.03%20-136.035L532.661%20227.475L900.288%20229.393M218.863%20-145.814L559.824%20200.752L555.747%20568.361%27%20stroke=%27url(%23paint0_linear_90_408)%27%20stroke-opacity=%270.05%27%20stroke-width=%272.43662%27/%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id=%27paint0_linear_90_408%27%20x1=%27935.755%27%20y1=%27284.53%27%20x2=%27361.194%27%20y2=%27211.469%27%20gradientUnits=%27userSpaceOnUse%27%3e%3cstop%20stop-color=%27white%27/%3e%3cstop%20offset=%271%27%20stop-color=%27%23B1C0C7%27/%3e%3c/linearGradient%3e%3cclipPath%20id=%27clip0_90_408%27%3e%3crect%20width=%27528%27%20height=%27473%27%20fill=%27white%27/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg%20width=%27528%27%20height=%27473%27%20viewBox=%270%200%20528%20473%27%20fill=%27none%27%20xmlns=%27http://www.w3.org/2000/svg%27%3e%3cg%20clip-path=%27url(%23clip0_90_406)%27%3e%3cpath%20d=%27M507%20-33.0912L93.3514%20387.358L-210.138%20386.997M227.322%20-289.287L-176.849%20121.529L-171.538%20424.972M448.602%20-39.5042L70.3155%20345.001L-244.496%20347.568M252.184%20-248.786L-134.122%20143.871L-131.555%20458.682M429.544%20-83.0452L47.303%20305.48L-281.689%20308.162M269.784%20-203.763L-94.2305%20166.236L-91.5481%20495.228M384.912%20-94.8723L28.5559%20267.343L-321.719%20268.78M314.416%20-191.936L-55.7923%20184.359L-51.5185%20534.61M372.359%20-139.305L12.6218%20226.346L-356.076%20229.352M328.427%20-148.985L-14.5411%20199.622L-11.535%20568.32%27%20stroke=%27url(%23paint0_linear_90_406)%27%20stroke-opacity=%270.05%27%20stroke-width=%272.43662%27/%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id=%27paint0_linear_90_406%27%20x1=%27-391.808%27%20y1=%27284.758%27%20x2=%27185.042%27%20y2=%27213.08%27%20gradientUnits=%27userSpaceOnUse%27%3e%3cstop%20stop-color=%27white%27/%3e%3cstop%20offset=%271%27%20stop-color=%27%23B1C0C7%27/%3e%3c/linearGradient%3e%3cclipPath%20id=%27clip0_90_406%27%3e%3crect%20width=%27528%27%20height=%27473%27%20fill=%27white%27/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
    background-position: right top, left top; background-repeat: no-repeat, no-repeat; background-size: auto 100%, auto 100%;
}
.msp-cta-inner { max-width: 672px; margin: 0 auto; }
.msp-cta-heading { margin: 0 0 24px; color: #0f2980; font-size: 40px; font-weight: 800; line-height: 1.15; }
.msp-cta-body { margin: 0 0 40px; color: #ffffff; font-size: 18px; line-height: 28px; font-weight: 400; }
.msp-cta-btn { display: inline-block; padding: 16px 32px; background: #c4e010; color: #0f2980; font-weight: 600; font-size: 16px; text-decoration: none; border-radius: 30px; }
.msp-cta-inline-link { color: #0f2980; font-weight: 600; text-decoration: underline; font-size: 17px; }
@media (max-width: 600px) { .msp-cta-heading { font-size: 30px; } }

/* ---------- TEXT + MEDIA ---------- */
.msp-tm-section { padding: 48px 20px; background: #ffffff; }
.msp-tm-inner { max-width: 1336px; margin: 0 auto; display: flex; align-items: center; gap: 56px; flex-wrap: wrap; }
.msp-tm-text { flex: 1 1 380px; }
.msp-tm-media { flex: 1 1 420px; box-shadow: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%); }
.msp-tm-inner.msp-tm-media-left { flex-direction: row-reverse; }
.msp-tm-heading { margin: 0 0 20px; color: #0f2980; font-size: 28px; font-weight: 700; line-height: 1.3; }
.msp-tm-body { color: #020817cc; font-size: 16px; line-height: 1.7; }
.msp-tm-body p { font-size: 1.125rem; line-height: 1.75rem; margin: 0 0 16px; font-weight: 400; }
.msp-tm-body p:last-child { margin-bottom: 0; }
.msp-tm-body ul, .msp-tm-body ol { margin: 0 0 16px; padding-left: 24px; font-size: 1.125rem; line-height: 1.75rem; }
.msp-tm-body ul { list-style: disc; }
.msp-tm-body ol { list-style: decimal; }
.msp-tm-body li { margin-bottom: 8px; }
.msp-tm-body li:last-child { margin-bottom: 0; }
.msp-tm-body li > ul, .msp-tm-body li > ol { margin-top: 8px; margin-bottom: 0; }
.msp-tm-body a { color: #0f2980; text-decoration: underline; text-underline-offset: 2px; }
.msp-tm-body a:hover { color: #3a9d5d; }
.msp-tm-body strong, .msp-tm-body b { font-weight: 700; }
.msp-tm-body em, .msp-tm-body i { font-style: italic; }
.msp-tm-body h1, .msp-tm-body h2, .msp-tm-body h3, .msp-tm-body h4 { color: #0f2980; font-weight: 800; margin: 20px 0 10px; line-height: 1.3; }
.msp-tm-body h1:first-child, .msp-tm-body h2:first-child, .msp-tm-body h3:first-child, .msp-tm-body h4:first-child { margin-top: 0; }
.msp-tm-body blockquote { margin: 16px 0; padding-left: 20px; border-left: 3px solid #0f2980; color: #020817cc; font-style: italic; }
.msp-tm-media img { width: 100%; height: auto; }
.msp-tm-media iframe { width: 100%; aspect-ratio: 16/9; border-radius: 10px; }
.msp-tm-video-desc { margin: 20px 0 0; padding: 16px; border-top: 1px solid #0208171a; color: #020817a6; font-size: 14px; font-style: italic; line-height: 1.6; }
@media (max-width: 767px) {
    .msp-tm-inner, .msp-tm-inner.msp-tm-media-left { flex-direction: column; gap: 32px; }
}

/* ---------- IMAGE GALLERY ---------- */
.msp-ig-section { padding: 48px 20px; background: #f5f5f5; }
@media (min-width: 768px) { .msp-ig-section { padding: 64px 20px; } }

/* Fix 3: contain the gallery track so Elementor's parent overflow:hidden
   does not clip the scrollable carousel before the section boundary. */
.msp-ig-inner { max-width: 1336px; margin: 0 auto; overflow: hidden; }

.msp-ig-top { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; margin-bottom: 32px; }
.msp-ig-heading { margin: 0; color: #0f2980; font-size: 28px; font-weight: 800; line-height: 1.2; }
@media (min-width: 768px) { .msp-ig-heading { font-size: 36px; } }
.msp-ig-intro { margin: 16px 0 0; color: rgba(15,41,128,.8); font-size: 15px; line-height: 1.6; max-width: 768px; font-weight: 400;}
@media (min-width: 768px) { .msp-ig-intro { font-size: 18px; } }
.msp-ig-arrows { display: none; align-items: center; gap: 12px; flex-shrink: 0; }
@media (min-width: 768px) { .msp-ig-arrows { display: flex; } }
.msp-ig-arrow { width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(15,41,128,.2); background: transparent; color: #0f2980; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 18px; transition: background .2s, color .2s; }
.msp-ig-arrow:hover { background: #0f2980; color: #fff; }
.msp-ig-track { display: flex; align-items: flex-start; gap: 16px; overflow-x: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; scrollbar-width: none; -ms-overflow-style: none; }
@media (min-width: 768px) { .msp-ig-track { gap: 24px; } }
.msp-ig-track::-webkit-scrollbar { display: none; }
.msp-ig-item { flex: 0 0 auto; width: 300px; margin: 0; scroll-snap-align: start; background: #e8f5ee; border-radius: 4px; }
@media (min-width: 768px) { .msp-ig-item { width: 400px; } }
@media (min-width: 1200px) { .msp-ig-item { width: 500px; } }
.msp-ig-item img { width: 100%; object-fit: cover !important; aspect-ratio: 1 / 1; display: block; border-radius: 4px; overflow: hidden; }
.msp-ig-item figcaption { font-size: 16px;color: #4a5a8f;line-height: 1.4;padding: 10px 15px;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow: hidden; }
.msp-ig-dots { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.msp-ig-dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(15,41,128,.25); border: none; padding: 0; cursor: pointer; transition: width .2s, background .2s; }
.msp-ig-dot.is-active { width: 22px; border-radius: 4px; background: #0f2980; }
.msp-ig-section.msp-ig-display-grid .msp-ig-track { display: grid; align-items: start; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); overflow: visible; }
.msp-ig-section.msp-ig-display-grid .msp-ig-item { width: auto; }
.msp-ig-section.msp-ig-display-grid .msp-ig-dots { display: none; }

/* ---------- PANEL SESSIONS ---------- */
.msp-ps-section { padding: 48px 20px; background: #ffffff; }
@media (min-width: 1024px) { .msp-ps-section { padding: 80px 20px; } }
.msp-ps-inner { max-width: 1336px; margin: 0 auto; }
.msp-ps-heading { margin: 0 0 32px; color: #0f2980; font-size: 28px; font-weight: 800; text-align: left; line-height: 1.111; }
@media (min-width: 768px) { .msp-ps-heading { font-size: 36px; line-height: 40px; } }
@media (min-width: 1024px) { .msp-ps-heading { margin-bottom: 40px; } }
.msp-ps-list { display: grid; grid-template-columns: 1fr; gap: 24px; }
@media (min-width: 1024px) { .msp-ps-list { grid-template-columns: 1fr 1fr; gap: 32px; } }
.msp-ps-card { display: flex; flex-direction: column; border-radius: 16px; border: 1px solid rgba(15,41,128,.1); background: #f7f7f5; padding: 24px; box-shadow: 0 1px 2px rgba(16,24,40,.05); }
@media (min-width: 768px) { .msp-ps-card { padding: 32px; } }
.msp-ps-label { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; border-radius: 9999px; background: rgba(15,41,128,.05); padding: 6px 12px; font-size: 12px; font-weight: 700; color: #0f2980; text-transform: uppercase; letter-spacing: .03em; }
.msp-ps-label img { width: 12px; }
@media (min-width: 768px) { .msp-ps-label { font-size: 14px; } }
.msp-ps-title { margin: 16px 0 0; color: #0f2980; font-size: 20px; font-weight: 800; line-height: 1.25; }
@media (min-width: 768px) { .msp-ps-title { font-size: 24px; line-height: 32px; } }
.msp-ps-body { margin: 8px 0 0; color: rgb(2 8 23 / 70%); font-size: 14px; font-weight: 400; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
@media (min-width: 768px) { .msp-ps-body { font-size: 16px; } }
.msp-ps-speakers { margin-top: 32px; display: flex; flex-direction: column; gap: 32px; }
.msp-ps-speaker { display: flex; align-items: center; gap: 16px; }
@media (min-width: 640px) { .msp-ps-speaker { gap: 20px; } }
.msp-ps-speaker-headshot-wrap { position: relative; aspect-ratio: 1 / 1; width: 112px; flex-shrink: 0; overflow: hidden; background: #e8f5ee; }
@media (min-width: 640px) { .msp-ps-speaker-headshot-wrap { width: 128px; } }
@media (min-width: 768px) { .msp-ps-speaker-headshot-wrap { width: 144px; } }
.msp-ps-speaker-headshot { width: 100%; object-fit: cover; object-position: top; display: block; aspect-ratio: 1 / 1; }
.msp-ps-speaker-box { flex: 1; min-width: 0; }
.msp-ps-speaker-detail { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.msp-ps-speaker-info { min-width: 0; }
.msp-ps-speaker-name { display: block; font-weight: 800; font-size: 17px; color: #0f2980; line-height: 1.25; }
@media (min-width: 768px) { .msp-ps-speaker-name { font-size: 20px; } }
.msp-ps-speaker-role { font-size: 14px; font-weight: 600; color: #17a66d; margin-top: 2px; }
.msp-ps-speaker-linkedin { margin-top: 2px; display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; background: #0f2980; color: #fff; border-radius: 8px; font-size: 11px; text-decoration: none; flex-shrink: 0; transition: background .2s; }
.msp-ps-speaker-linkedin:hover { background: #3a9d5d; }
.msp-ps-speaker-linkedin svg { width: 16px; }
.msp-ps-speaker-bio { margin: 4px 0 0; font-size: 14px; font-weight: 400; color: rgb(2 8 23 / 70%); line-height: 1.625; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------- SCHEDULER ---------- */
.msp-sch-section { padding: 48px 20px; background: #f5f5f5; }
@media (min-width: 768px) { .msp-sch-section { padding: 80px 20px; } }
.msp-sch-heading { margin: 0 0 32px; color: #0f2980; font-size: 28px; font-weight: 800; text-align: center; }
@media (min-width: 768px) { .msp-sch-heading { font-size: 36px; margin-bottom: 48px; } }
.msp-sch-card { max-width: 1152px; margin: 0 auto; background: #ffffff; border-radius: 12px; box-shadow: 0 5px 20px rgba(0,0,0,.08); overflow: hidden; display: grid; grid-template-columns: 1fr; text-align: left; }
@media (min-width: 768px) { .msp-sch-card { grid-template-columns: minmax(0,1fr) 1.4fr; } }
.msp-sch-left { padding: 32px; display: flex; flex-direction: column; gap: 24px; border-bottom: 1px solid #e5e7eb; }
@media (min-width: 768px) { .msp-sch-left { padding: 40px; border-bottom: none; border-right: 1px solid #e5e7eb; } }
.msp-sch-logo { height: 40px; width: auto; margin: 0 auto; display: block; }
.msp-sch-logo img { height: 40px !important; width: auto; display: block; }
.msp-sch-org { color: hsl(222.2deg 84% 4.9% / 60%); font-size: 14px; font-weight: 500; margin: 0; }
.msp-sch-title { color: #0f2980; font-size: 22px; font-weight: 800; margin: 4px 0 0; line-height: 1.25; }
@media (min-width: 768px) { .msp-sch-title { font-size: 28px; } }
.msp-sch-meta { display: flex; flex-direction: column; gap: 12px; color: rgb(2 8 23 / 70%); }
.msp-sch-meta-row { display: flex; align-items: center; gap: 12px; font-size: 16px; }
.msp-sch-meta-row svg { width: 20px; height: 20px; flex-shrink: 0; }
.msp-sch-intro { margin: 0; color: rgb(2 8 23 / 70%); font-size: 16px; font-weight: 400; line-height: 1.625; }
.msp-sch-fallback-wrap { margin-top: auto; padding-top: 24px; }
.msp-sch-fallback { display: inline-block; color: #0f2980; font-weight: 600; text-decoration: underline !important; text-underline-offset: 4px; font-size: 14px; transition: color .2s; }
.msp-sch-fallback:hover { color: #3a9d5d; }
.msp-sch-right { min-height: 400px; background: #ffffff; }
@media (min-width: 768px) { .msp-sch-right { min-height: 640px; } }
.msp-sch-embed { width: 100%; height: 100%; min-height: 400px; }
@media (min-width: 768px) { .msp-sch-embed { min-height: 640px; } }

/* ---------- TEAM / "Who is going?" ---------- */
.msp-team-section { padding: 48px 20px; background: #ffffff; }
@media (min-width: 768px) { .msp-team-section { padding: 64px 20px; } }
.msp-team-inner { max-width: 1336px; margin: 0 auto; }
.msp-team-top { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; margin-bottom: 32px; }
@media (min-width: 768px) { .msp-team-top { margin-bottom: 64px; } }
.msp-team-heading { margin: 0; color: #0f2980; font-size: 28px; font-weight: 800; line-height: 1.2; }
@media (min-width: 768px) { .msp-team-heading { font-size: 34px; } }
.msp-team-intro { margin: 16px 0 0; color: hsl(226deg 79% 28% / 80%); font-size: 18px; line-height: 1.75rem; font-weight: 400; }
@media (min-width: 768px) { .msp-team-intro { font-size: 17px; } }
.msp-team-arrows { display: none; align-items: center; gap: 12px; flex-shrink: 0; }
.msp-team-arrows.is-visible { display: flex; }
.msp-team-arrow { width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(15,41,128,.2); background: transparent; color: #0f2980; cursor: pointer; font-size: 18px; display: flex; align-items: center; justify-content: center; transition: background .2s, color .2s; }
.msp-team-arrow:hover { background: #0f2980; color: #ffffff; }

/* Fix 2: remove negative margins that caused Elementor's overflow:hidden
   container to clip the team carousel. The track is already scrollable
   via overflow-x: auto on the wrapper; the bleed effect is not needed. */
.msp-team-track-wrap { overflow-x: auto; scroll-behavior: smooth; scrollbar-width: none; -ms-overflow-style: none; }

.msp-team-track-wrap::-webkit-scrollbar { display: none; }
.msp-team-track { display: flex; gap: 24px; padding-right: 20%; }
@media (min-width: 768px) { .msp-team-track { gap: 32px; } }
.msp-team-person { flex: 0 0 auto; width: 260px; display: flex; flex-direction: column; overflow: hidden; border: 1px solid rgba(15,41,128,.2); scroll-snap-align: start; background-color: #fff; }
@media (min-width: 640px) { .msp-team-person { width: 280px; } }
@media (min-width: 768px) { .msp-team-person { width: 300px; } }
.msp-team-headshot-wrap { aspect-ratio: 1 / 1; width: 100%; overflow: hidden; background: #f5f5f5; }
.msp-team-headshot { width: 100%; object-fit: cover; object-position: top; display: block; aspect-ratio: 1 / 1; }
.msp-team-info { padding: 20px; display: flex; flex-direction: column; flex: 1; }
@media (min-width: 768px) { .msp-team-info { padding: 24px; } }
.msp-team-category { font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #17a66d; margin-bottom: 8px; }
.msp-team-name { font-weight: 700; color: #0f2980; font-size: 18px; line-height: 1.25; margin-bottom: 4px; }
.msp-team-role { font-size: 14px; color: hsl(226deg 79% 28% / 70%); line-height: 1.375; font-weight: 400; margin-bottom: 16px; }
.msp-team-linkedin { align-self: flex-start; display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; background: #0f2980; color: #fff; border-radius: 8px; font-size: 11px; text-decoration: none; flex-shrink: 0; transition: background .2s; }
.msp-team-linkedin:hover { background: #3a9d5d; }
.msp-team-linkedin svg { width: 16px; }

/* ---------- STANDALONE MEDIA ---------- */
.msp-sm-section { padding: 48px 20px; background: #f5f5f5; }
@media (min-width: 1024px) { .msp-sm-section { padding: 56px 20px; } }
.msp-sm-inner { max-width: 1336px; margin: 0 auto; }
.msp-sm-inner.msp-sm-width-contained { max-width: 960px; }
.msp-sm-heading { margin: 0 0 24px; color: #0f2980; font-size: 28px; font-weight: 800; text-align: center; }
@media (min-width: 1024px) { .msp-sm-heading { font-size: 36px; margin-bottom: 40px; } }
.msp-sm-image img { width: 100%; height: auto; display: block; border-radius: 4px; }
.msp-sm-video { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: #ffffff; background-size: cover; background-position: center; box-shadow: 0 0 #0000, 0 0 #0000, 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%); }
.msp-sm-video-inner { position: relative; z-index: 1; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; }
.msp-sm-play-btn { width: 64px; height: 64px; border-radius: 50%; border: none; background: transparent; display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; color: #000000; }
.msp-sm-play-btn svg { width: 64px; height: 64px; display: block; }
.msp-sm-video.msp-sm-no-url .msp-sm-play-btn { cursor: default; }
.msp-sm-video.msp-sm-has-poster .msp-sm-play-btn { color: #ffffff; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); }
.msp-sm-coming-soon { color: #000000; font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.msp-sm-video-desc { max-width: 720px; margin: 20px auto 0; padding-top: 16px; border-top: 1px solid #0208171a; color: #020817a6; font-size: 14px; font-style: italic; line-height: 1.6; text-align: center; }
.msp-sm-video.msp-sm-has-poster .msp-sm-coming-soon { color: #ffffff; text-shadow: 0 1px 4px rgba(0,0,0,.6); }
.msp-sm-video-embed { position: absolute; inset: 0; }
.msp-sm-video-embed iframe { width: 100%; height: 100%; border: 0; }



/* ============================================================
 * BACKGROUND COLOR feature â€" msp_bg_color ACF field
 * Append this block to the END of assets/css/msp-events.css
 * (does not touch any existing rules, including your width edits)
 * ============================================================ */
.msp-bg-white {
    background-color: #ffffff;
}

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

.msp-bg-navy {
    background-color: #12307e;
}

/* Flip text to light colors automatically when a section has the
   navy background, so headings/body copy stay readable. Covers the
   heading/body/intro classes used across all section types. */
.msp-bg-navy h1,
.msp-bg-navy h2,
.msp-bg-navy .msp-tb-body,
.msp-bg-navy .msp-tm-body,
.msp-bg-navy .msp-sb-mobile-desc,
.msp-bg-navy .msp-ig-intro,
.msp-bg-navy .msp-team-intro,
.msp-bg-navy .msp-cta-inline-link,
.msp-bg-navy .msp-cta-body,
.msp-bg-navy .msp-tm-video-desc,
.msp-bg-navy .msp-sm-video-desc {
    color: #ffffff;
    border-top-color: #ffffff33;
}

/* Keep WYSIWYG links/headings inside body copy readable on a navy background too */
.msp-bg-navy .msp-tb-body a,
.msp-bg-navy .msp-tm-body a {
    color: #c4e010;
}
.msp-bg-navy .msp-tb-body h1,
.msp-bg-navy .msp-tb-body h2,
.msp-bg-navy .msp-tb-body h3,
.msp-bg-navy .msp-tb-body h4,
.msp-bg-navy .msp-tm-body h1,
.msp-bg-navy .msp-tm-body h2,
.msp-bg-navy .msp-tm-body h3,
.msp-bg-navy .msp-tm-body h4 {
    color: #ffffff;
}
.msp-bg-navy .msp-tb-body blockquote,
.msp-bg-navy .msp-tm-body blockquote {
    border-left-color: #ffffff;
    color: #ffffff;
}

/* -----------------------------------------------------------------------
 * Fix: Schedule/Detail Box titles (front card face is white) were being
 * forced to white text by the generic ".msp-bg-navy h3" rule above,
 * making them invisible on the white card face. Restore the dark navy
 * color for these titles specifically (higher specificity wins).
 * -------------------------------------------------------------------- */
.msp-bg-navy .msp-sb-title,
.msp-bg-navy .msp-sb-mobile-title {
    color: #0f2980;
}

/* -----------------------------------------------------------------------
 * Fix: Schedule section heading (h2, on navy background) was being
 * dimmed to 80%-opacity white by the generic ".msp-bg-navy h2" rule
 * above. Design calls for solid white here — override with higher
 * specificity.
 * -------------------------------------------------------------------- */
.msp-bg-navy .msp-sb-heading {
    color: #ffffff;
}

/* -----------------------------------------------------------------------
 * Fix: CTA body text was hardcoded to a light color (designed for the
 * navy background). When "White" or "Light Gray" background is selected,
 * darken the body text automatically so it stays readable.
 * -------------------------------------------------------------------- */
.msp-bg-white .msp-cta-body,
.msp-bg-light-gray .msp-cta-body {
    color: #020817cc;
}

/* -----------------------------------------------------------------------
 * Manual CTA text color override (msp_text_color ACF field). When set,
 * this wins over the automatic background-based color above.
 * -------------------------------------------------------------------- */
.msp-cta-text-dark .msp-cta-heading,
.msp-cta-text-dark .msp-cta-body,
.msp-cta-text-dark .msp-cta-inline-link {
    color: #020817cc;
}
.msp-cta-text-light .msp-cta-heading,
.msp-cta-text-light .msp-cta-body,
.msp-cta-text-light .msp-cta-inline-link {
    color: #ffffff;
}