/* ==========================================================================
   WaveNeuro × Elementor
   Design presets for native Elementor elements. Apply them in Elementor via
   Advanced → CSS Classes. Anything set in Elementor's own Style tab wins over
   these (Elementor's selectors are more specific), so every value stays
   editable per element.
   ========================================================================== */

.wn-builder { overflow-x: clip; }
.elementor .wn-z1 { position: relative; z-index: 1; }
.elementor .wn-center { text-align: center; }
.elementor .wn-mb-40 { margin-bottom: 40px; }

/* Text ------------------------------------------------------------------- */
.elementor .wn-eyebrow .elementor-heading-title { margin: 0 0 28px; font: 400 13px/1.4 var(--f-sans); letter-spacing: .2em; text-transform: uppercase; color: var(--c-faint); }
.elementor .wn-eyebrow--hero .elementor-heading-title { font-size: 14px; letter-spacing: .14em; color: #fff; }
.elementor .wn-h .elementor-heading-title { margin: 0 0 24px; font-family: var(--f-serif); font-weight: 300; line-height: 1.15; color: var(--c-ink); }
.elementor .wn-h-hero .elementor-heading-title { margin: 0 0 38px; font-size: clamp(34px, 4vw, 68px); line-height: 1.1; color: #fff; }
.elementor .wn-h-xl .elementor-heading-title { font-size: clamp(40px, 4.4vw, 64px); line-height: 1.1; }
.elementor .wn-h-lg .elementor-heading-title { font-size: clamp(36px, 3.6vw, 56px); line-height: 1.1; }
.elementor .wn-h-md .elementor-heading-title { max-width: 720px; margin: 0 auto clamp(40px, 5vw, 70px); font-size: clamp(28px, 3vw, 44px); line-height: 1.25; }
.elementor .wn-subtitle .elementor-heading-title { margin: -8px 0 34px; font: 500 16px/1.5 var(--f-sans); color: var(--c-accent2); }
.elementor .wn-lead { font-size: 17px; line-height: 1.75; color: var(--c-muted); }
.elementor .wn-lead p { margin: 0; }
.elementor .wn-lead p + p { margin-top: 1em; }
.elementor .wn-lead--spaced { margin-bottom: 40px; }
.elementor .wn-lead--gap { margin: 30px 0 50px; }
.elementor .wn-mb-40 .elementor-heading-title { margin-bottom: 40px; }

.elementor .wn-on-dark { color: #fff; }
.elementor .wn-on-dark .wn-eyebrow .elementor-heading-title { color: var(--c-on-dark-muted); }
.elementor .wn-on-dark .wn-h .elementor-heading-title { color: #fff; }
.elementor .wn-on-dark .wn-lead { color: var(--c-on-dark-muted); }
.elementor .wn-on-dark a:not(.elementor-button) { color: #fff; }
.elementor .wn-on-dark a:not(.elementor-button):hover { color: var(--c-accent); }

/* Buttons ---------------------------------------------------------------- */
.elementor [class*="wn-btn-"] .elementor-button { display: inline-block; padding: 20px 40px; border: 1px solid transparent; border-radius: 4px; font: 600 15px/1.2 var(--f-sans); transition: background-color .25s, border-color .25s, color .25s, transform .25s, box-shadow .25s, filter .25s; }
.elementor .wn-btn-accent .elementor-button { background: var(--c-accent); color: var(--c-on-accent); }
.elementor .wn-btn-accent .elementor-button:hover { color: var(--c-on-accent); filter: brightness(.95); }
.elementor .wn-btn-outline .elementor-button { background: transparent; border-color: var(--c-line); color: var(--c-ink); }
.elementor .wn-btn-outline-bg .elementor-button { background: var(--c-bg); border-color: var(--c-line); color: var(--c-ink); }
.elementor .wn-btn-ink .elementor-button { background: transparent; border-color: var(--c-ink); color: var(--c-ink); }
.elementor :is(.wn-btn-outline, .wn-btn-outline-bg, .wn-btn-ink) .elementor-button:hover { background: var(--c-accent2); border-color: var(--c-accent2); color: #fff; }
.elementor .wn-btn-light .elementor-button { background: transparent; border-color: #fff; color: #fff; }
.elementor .wn-btn-light .elementor-button:hover { background: #fff; color: var(--c-dark); }
@media (prefers-reduced-motion: no-preference) {
	.elementor [class*="wn-btn-"] .elementor-button:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(var(--c-dark-rgb), .14); }
}

/* Images ----------------------------------------------------------------- */
.elementor .wn-img-rounded img { display: block; width: 100%; height: auto; border-radius: 16px; }
.elementor .wn-img-square img { aspect-ratio: 1; object-fit: cover; }
.elementor .wn-img-fill, .elementor .wn-img-fill img { height: 100%; }
.elementor .wn-img-fill img { object-fit: cover; }
.elementor .wn-avatar img { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; }

/* Banner placeholder (until a Smart Slider is placed) --------------------- */
.elementor .wn-hero-box { position: relative; overflow: hidden; }
.elementor .wn-hero-box::before { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; background: linear-gradient(90deg, rgba(20, 30, 40, .45), rgba(20, 30, 40, 0) 55%); }
.elementor .wn-hero-box > .elementor-element { position: relative; z-index: 1; }

/* Condition cards (Image Box) --------------------------------------------- */
.elementor .wn-card-grid { margin-bottom: clamp(40px, 5vw, 70px); }
.elementor .wn-card { height: 100%; min-height: clamp(230px, 20vw, 290px); padding: clamp(22px, 2.4vw, 34px) clamp(20px, 2.4vw, 34px); border: 1px solid var(--c-line); border-radius: 12px; background: var(--c-bg); transition: border-color .3s, box-shadow .3s, transform .35s; }
.elementor .wn-card:hover { border-color: var(--c-accent); box-shadow: 0 12px 30px rgba(var(--c-dark-rgb), .08); }
.elementor .wn-card .elementor-image-box-wrapper { text-align: left; }
.elementor .wn-card .elementor-image-box-img { width: clamp(56px, 5.5vw, 72px) !important; margin: 0 0 clamp(40px, 4vw, 70px) !important; transition: transform .35s; }
.elementor .wn-card .elementor-image-box-title { margin: 0; font: 500 clamp(17px, 1.5vw, 20px)/1.4 var(--f-sans); color: var(--c-ink); transition: color .25s; }
.elementor .wn-card:hover .elementor-image-box-title { color: var(--c-accent2); }
.elementor .wn-card .elementor-image-box-description { margin: 10px 0 0; font-size: clamp(14px, 1.2vw, 16px); line-height: 1.65; color: var(--c-muted); }
.wn-tinted { display: block; aspect-ratio: 1; background: var(--c-accent-text); -webkit-mask: var(--wn-mask) left top / contain no-repeat; mask: var(--wn-mask) left top / contain no-repeat; }
.wn-tinted img { opacity: 0; }

/* FAQ (native Accordion with class wn-faq) --------------------------------- */
.elementor .wn-faq .e-n-accordion { display: flex; flex-direction: column; gap: 10px; }
.elementor .wn-faq .e-n-accordion-item { background: var(--c-bg); border: 1px solid var(--c-line); border-radius: 12px; overflow: hidden; transition: border-color .25s, box-shadow .25s; }
.elementor .wn-faq .e-n-accordion-item:hover { border-color: var(--c-accent); box-shadow: 0 8px 24px rgba(var(--c-dark-rgb), .06); }
.elementor .wn-faq .e-n-accordion-item-title { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 26px 30px; border: 0 !important; background: none !important; cursor: pointer; }
.elementor .wn-faq .e-n-accordion-item-title-text { margin: 0; font: 500 18px/1.45 var(--f-sans); color: var(--c-ink); transition: color .2s; }
.elementor .wn-faq .e-n-accordion-item-title:hover .e-n-accordion-item-title-text { color: var(--c-accent2); }
.elementor .wn-faq .e-n-accordion-item-title-icon { flex: none; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--c-accent); color: var(--c-on-accent); transition: background-color .25s, color .25s, transform .35s; }
.elementor .wn-faq .e-n-accordion-item-title-icon svg { width: 14px; height: 14px; fill: currentColor; }
.elementor .wn-faq .e-n-accordion-item[open] .e-n-accordion-item-title-icon { background: var(--c-accent2); color: #fff; transform: rotate(180deg); }
.elementor .wn-faq .e-n-accordion-item > .e-con { padding: 0 30px 28px !important; border: 0 !important; font-size: 16px; line-height: 1.7; color: var(--c-muted); }
.elementor .wn-faq .e-n-accordion-item > .e-con p { margin: 0; }

/* Team cards (Container as link, class wn-team-card) ---------------------- */
.elementor .wn-team-card { display: flex; flex-direction: column; height: 100%; overflow: hidden; border: 1px solid var(--c-line); border-radius: 12px; background: var(--c-bg); color: inherit; text-align: left; transition: box-shadow .35s, transform .35s; }
.elementor .wn-team-card:hover { color: inherit; box-shadow: var(--shadow); }
.elementor .wn-team-card__img { overflow: hidden; }
.elementor .wn-team-card__img img { display: block; width: 100%; height: 400px; object-fit: cover; transition: transform .6s; }
.elementor .wn-team-card:hover .wn-team-card__img img { transform: scale(1.05); }
.elementor .wn-team-card__name .elementor-heading-title { margin: 0; font: 500 20px/1.3 var(--f-sans); color: var(--c-ink); transition: color .25s; }
.elementor .wn-team-card:hover .wn-team-card__name .elementor-heading-title { color: var(--c-accent2); }
.elementor .wn-team-card__role .elementor-heading-title { margin: 8px 0 0; font: 400 14px/1.5 var(--f-sans); color: var(--c-muted); }
.elementor .wn-readmore-el .elementor-heading-title { display: flex; justify-content: space-between; align-items: center; margin-top: 30px; font: 600 15px/1 var(--f-sans); color: var(--c-ink); }
.elementor .wn-readmore-el .elementor-heading-title::after { content: ""; flex: none; width: 36px; height: 36px; border-radius: 50%; background: var(--c-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%232b1e15' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14m-6-6 6 6-6 6'/%3E%3C/svg%3E") center / 16px no-repeat; transition: transform .3s; }
.elementor .wn-team-card:hover .wn-readmore-el .elementor-heading-title::after { transform: translateX(4px); }

/* Service photo cards (Container with background image, class wn-photo-card) */
.elementor .wn-photo-card { position: relative; aspect-ratio: 1 / 1; overflow: hidden; border-radius: 14px; color: #fff; transition: transform .35s, box-shadow .35s; }
.elementor .wn-photo-card::before { content: ""; position: absolute; inset: 0; z-index: 0; background: linear-gradient(180deg, rgba(var(--c-dark-rgb), 0) 55%, rgba(var(--c-dark-rgb), .75)); transition: opacity .35s; }
.elementor .wn-photo-card > .elementor-element { position: relative; z-index: 1; transition: transform .35s; }
.elementor .wn-photo-card:hover { color: #fff; box-shadow: 0 18px 40px rgba(var(--c-dark-rgb), .22); }
.elementor .wn-photo-card:hover > .elementor-element { transform: translateY(-6px); }
.elementor .wn-photo-card__title-el .elementor-heading-title { margin: 0; font: 500 19px/1.4 var(--f-sans); color: #fff; }
.elementor .wn-photo-card__text-el { margin-top: 6px; font-size: 15px; line-height: 1.6; color: rgba(255, 255, 255, .9); }
.elementor .wn-photo-card__text-el p { margin: 0; }

/* Areas of specialty carousel (Image Carousel, class wn-photo-carousel) ---- */
.elementor .wn-photo-carousel .swiper-slide-inner { position: relative; margin: 0; overflow: hidden; border-radius: 16px; }
.elementor .wn-photo-carousel .swiper-slide-image { display: block; width: 100%; aspect-ratio: 445 / 557; object-fit: cover; transition: transform .6s; }
.elementor .wn-photo-carousel .swiper-slide-inner::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(var(--c-dark-rgb), .25), rgba(var(--c-dark-rgb), .1) 40%, rgba(var(--c-dark-rgb), .75)); pointer-events: none; }
.elementor .wn-photo-carousel .elementor-image-carousel-caption { position: absolute; left: 30px; right: 30px; bottom: 34px; z-index: 1; margin: 0; font: 500 19px/1.4 var(--f-sans); color: #fff; text-align: left; }
.elementor .wn-photo-carousel .swiper-slide:hover .swiper-slide-image { transform: scale(1.05); }
.elementor .wn-photo-carousel .swiper-pagination { position: static; margin-top: 40px; }
.elementor .wn-photo-carousel .swiper-pagination-bullet { width: 10px; height: 10px; background: transparent; border: 1px solid var(--c-faint); opacity: 1; }
.elementor .wn-photo-carousel .swiper-pagination-bullet-active { background: var(--c-muted); }

/* Testimonials ------------------------------------------------------------ */
.elementor .wn-reviews-sub .elementor-heading-title { margin: 0 0 70px; font: 400 16px/1.5 var(--f-sans); color: var(--c-muted); }
.wn-reviews__grid { max-width: 1820px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 20px; align-items: start; }
.wn-reviews__item .elementor { height: 100%; }
.elementor .wn-review-card { align-items: center; padding: 60px 50px; border: 1px solid var(--c-line); border-radius: 30px; text-align: center; transition: transform .35s, box-shadow .35s, border-color .35s; }
.elementor .wn-review-card:hover { border-color: var(--c-accent); box-shadow: var(--shadow); }
.elementor .wn-stars .elementor-heading-title { margin: 0; font: 400 24px/1 var(--f-sans); letter-spacing: 4px; color: var(--c-accent); }
.elementor .wn-review-quote { margin: 24px 0 30px; font-size: 16px; line-height: 1.75; color: var(--c-muted); }
.elementor .wn-review-quote p { margin: 0; }
.elementor .wn-review-name .elementor-heading-title { margin: 0; font: 500 17px/1.3 var(--f-sans); color: var(--c-ink); }
.wn-testimonial-canvas { max-width: 520px; margin: 80px auto; padding: 0 20px; }

/* Form box ------------------------------------------------------------------ */
.elementor .wn-form-box { border: 1px solid var(--c-line); border-radius: 16px; }
.elementor .wn-form-box .wn-eyebrow, .elementor .wn-form-box .wn-h { text-align: center; }
.elementor .wn-form-box .wn-cf7 :is(input:not([type="submit"]), select) { background-color: var(--c-soft); }

/* Contact ------------------------------------------------------------------ */
.elementor .wn-kv-label .elementor-heading-title { margin: 0 0 12px; font: 400 13px/1.4 var(--f-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--c-faint); }
.elementor .wn-kv-value { font-size: 16px; line-height: 1.7; color: var(--c-ink); }
.elementor .wn-kv-value p { margin: 0; }
.elementor .wn-map iframe { display: block; border-radius: 4px; filter: grayscale(1); }

/* Service / doctor body text ------------------------------------------------ */
.elementor .wn-prose-el { font-size: 17px; line-height: 1.75; color: var(--c-muted); }
.elementor .wn-prose-el > * { margin: 0 0 24px; }
.elementor .wn-prose-el :is(h2, h3) { margin-top: 40px; font-family: var(--f-serif); font-weight: 300; color: var(--c-ink); }
.elementor .wn-prose-el h2 { font-size: clamp(28px, 2.6vw, 40px); line-height: 1.3; }
.elementor .wn-prose-el ul { padding-left: 1.2em; }

/* Footer (Elementor template "Site Footer") -------------------------------- */
.elementor .wn-footer-el { color: #fff; }
.elementor .wn-footer-mark img { width: 74px; mix-blend-mode: screen; }
.elementor .wn-footer-logotext .elementor-heading-title { font-family: var(--f-serif); font-size: 32px; line-height: 1; color: #fff; }
.elementor .wn-footer-address { margin-top: 40px; font-size: 16px; line-height: 1.8; color: var(--c-on-dark-muted); }
.elementor .wn-footer-address p { margin: 0 0 10px; }
.elementor .wn-footer-address strong { font-weight: 500; }
.elementor .wn-footer-phone .elementor-heading-title { margin: 50px 0 16px; font: 300 30px/1.2 var(--f-serif); color: #fff; }
.elementor .wn-footer-email, .elementor .wn-footer-text { font-size: 16px; line-height: 1.7; color: var(--c-on-dark-muted); }
.elementor .wn-footer-email p, .elementor .wn-footer-text p { margin: 0; }
.elementor .wn-footer-text { margin: 0 0 30px; }
.elementor .wn-footer-title .elementor-heading-title { margin: 0 0 40px; font: 500 18px/1.4 var(--f-sans); color: #fff; }
.elementor .wn-footer-links .elementor-icon-list-items { display: flex; flex-direction: column; gap: 22px; }
.elementor .wn-footer-links .elementor-icon-list-item { margin: 0 !important; padding: 0 !important; }
.elementor .wn-footer-links .elementor-icon-list-text { font-size: 16px; line-height: 1.6; color: #fff; transition: color .25s, transform .25s; }
.elementor .wn-footer-links a:hover .elementor-icon-list-text { color: var(--c-accent); transform: translateX(4px); }
.elementor .wn-footer-links .elementor-icon-list-icon { display: none; }
.elementor .wn-footer-social .elementor-social-icon { width: 42px; height: 42px; padding: 0; display: inline-flex; align-items: center; justify-content: center; background: var(--c-accent); color: var(--c-on-accent); font-size: 16px; transition: background-color .25s, color .25s, transform .25s; }
.elementor .wn-footer-social .elementor-social-icon svg { width: 16px; height: 16px; fill: currentColor; }
.elementor .wn-footer-social .elementor-social-icon:hover { background: var(--c-accent2); color: #fff; transform: translateY(-3px); }
.elementor .wn-footer-bottom { border-top: 1px solid rgba(255, 255, 255, .12); text-align: center; }
.elementor .wn-footer-copy { font-size: 14px; color: var(--c-on-dark-muted); }
.elementor .wn-footer-copy p { margin: 0; }
.wn-footer-fallback { padding: 40px 20px; text-align: center; background: var(--c-dark); color: var(--c-on-dark-muted); font-size: 14px; }

/* Lifts (motion) ------------------------------------------------------------ */
@media (prefers-reduced-motion: no-preference) {
	.elementor .wn-card:hover, .elementor .wn-team-card:hover, .elementor .wn-review-card:hover { transform: translateY(-6px); }
	.elementor .wn-photo-card:hover { transform: translateY(-4px); }
	.elementor .wn-card:hover .elementor-image-box-img { transform: scale(1.08) rotate(-4deg); }
}

/* Ribbon host containers (Layout → WaveNeuro ribbon) ------------------------ */
.elementor .wn-has-ribbon { position: relative; overflow-y: clip; }
.elementor .wn-has-ribbon > .e-con-inner, .elementor .wn-has-ribbon > .elementor-element { position: relative; z-index: 1; }
.elementor .wn-has-ribbon > .wn-ribbon { position: absolute !important; top: -22%; height: 144%; z-index: 0; margin: 0; max-width: none; }
@media (max-width: 767px) {
	.elementor .wn-has-ribbon > .wn-ribbon { width: min(160px, 40vw) !important; opacity: .3; }
}

/* WN Gallery widget inside Elementor ------------------------------------------ */
.elementor .wn-gallery--widget { padding: 0; }
.elementor .wn-gallery__link img { width: 100%; height: 100%; max-width: none; object-fit: cover; }
.wn-ribbon { position: absolute; top: -22%; height: 144%; pointer-events: none; will-change: transform; }
.wn-ribbon svg { display: block; width: 100%; height: 100%; }
