/* Neurosalud - Professionals directory, profile and shared footer.
   Work item: professionals-directory-v1. Loads after hero.css, reusing the
   same tokens; nothing here touches the accepted Home hero. */

.nsp,
.nsp-profile{
  --nsp-radius:18px;
  --nsp-card:#fff;
  --nsp-panel:#fff;
  --nsp-ink:var(--ns-text,#173F66);
  --nsp-blue:var(--ns-primary,#1764C0);
  --nsp-deep:var(--ns-primary-deep,#0B3D91);
  --nsp-teal:var(--ns-accent,#19A7D1);
  --nsp-line:var(--ns-line,#D9E8F2);
  --nsp-muted:var(--ns-muted,#667F96);
  --nsp-sans:var(--ns-sans,"Poppins",system-ui,sans-serif);
  --nsp-serif:"Lora",Georgia,serif;

  /* one action system: every interactive target shares these */
  --nsp-action-h:44px;
  --nsp-tint:rgba(23,100,192,.07);
  --nsp-grad:linear-gradient(94deg,var(--ns-cta-blue,#005FC3) 0%,#1487CE 58%,#31C1D0 100%);
}

.nsp-i{ width:18px; height:18px; flex:0 0 auto; }

/* ==================== 1. FILTER PANEL ==================== */

.nsp-filters{
  display:grid;
  /* Was search + 3 selects (Especialidad, Modalidad, Ubicación) + actions.
     Ubicación split into two dependent selects (Provincia, Cantón), so
     there are now 4 selects instead of 3. */
  grid-template-columns:minmax(220px,1.15fr) repeat(4,minmax(160px,1fr)) auto;
  gap:20px 22px;
  align-items:end;
  background:var(--nsp-panel);
  border:1px solid var(--nsp-line);
  border-radius:var(--nsp-radius);
  box-shadow:0 10px 30px rgba(23,63,102,.05);
  padding:22px 26px;
  margin:0 0 42px;
}
.nsp-filters__field{ margin:0; display:flex; flex-direction:column; gap:8px; min-width:0; }
.nsp-filters__field--disabled .nsp-select{ opacity:.55; }
.nsp-filters__field--disabled .nsp-select__input{ cursor:not-allowed; }

.nsp-filters__label{
  font-family:var(--nsp-sans);
  font-size:13px;
  font-weight:500;
  color:var(--nsp-muted);
}
/* the search input carries its own placeholder, so its label is SR-only */
.nsp-filters__field--search .nsp-filters__label{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap;
}
.nsp-filters__field--search{ justify-content:flex-end; }

.nsp-search{ position:relative; display:block; }
.nsp-search .nsp-i{
  position:absolute; left:16px; top:50%; transform:translateY(-50%);
  color:var(--nsp-blue); pointer-events:none;
}
.nsp .nsp-search__input,
.nsp-search__input{
  width:100%;
  font-family:var(--nsp-sans);
  font-size:15px;
  color:var(--nsp-ink);
  padding:13px 18px 13px 48px !important;
  border:1px solid var(--nsp-line);
  border-radius:999px;
  background:#fff;
  min-height:48px;
}
.nsp-search__input::placeholder{ color:#8FA6BC; }

.nsp-select{ position:relative; display:block; }
.nsp-select .nsp-i{
  position:absolute; right:14px; top:50%;
  transform:translateY(-50%) rotate(90deg);
  color:var(--nsp-blue); pointer-events:none; width:15px; height:15px;
}
.nsp .nsp-select__input,
.nsp-select__input{
  width:100%;
  font-family:var(--nsp-sans);
  font-size:14.5px;
  color:var(--nsp-ink);
  padding:12px 38px 12px 15px !important;
  border:1px solid var(--nsp-line);
  border-radius:10px;
  background:#fff;
  min-height:48px;
  appearance:none;
  -webkit-appearance:none;
}

.nsp-filters__actions{
  margin:0; display:flex; align-items:center; gap:14px; min-height:48px;
}
/* With JS the selects auto-submit, so the explicit button is redundant. */
.nsp-filters--js .nsp-filters__apply{ display:none; }
.nsp-filters__apply{
  display:inline-flex; align-items:center; justify-content:center;
  font-family:var(--nsp-sans); font-size:14px; font-weight:500;
  color:#fff; background:var(--nsp-grad);
  border:0; border-radius:999px; padding:0 22px;
  min-height:var(--nsp-action-h); cursor:pointer;
}
.nsp-filters__clear{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:var(--nsp-action-h);
  padding:0 14px;
  border-radius:999px;
  font-family:var(--nsp-sans); font-size:14px; font-weight:500;
  color:var(--nsp-blue); text-decoration:none; white-space:nowrap;
  transition:background-color .2s ease, color .2s ease;
}
.nsp-filters__clear:hover,
.nsp-filters__clear:focus-visible{ color:var(--nsp-deep); background:var(--nsp-tint); }
.nsp-filters__clear.is-idle{ opacity:.55; }

/* ==================== 2. RESULTS + GRID ==================== */

.nsp-results__count{
  font-family:var(--nsp-sans); font-size:14px; color:var(--nsp-muted); margin:0 0 16px;
}

.nsp-grid{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(3,1fr); gap:26px;
}
.nsp-card{ margin:0; display:flex; }
.nsp-card__inner{
  display:flex; gap:20px; width:100%;
  background:var(--nsp-card);
  border:1px solid var(--nsp-line);
  border-radius:var(--nsp-radius);
  box-shadow:0 10px 28px rgba(23,63,102,.05);
  padding:24px;
  transition:box-shadow .25s ease, transform .25s ease;
}
.nsp-card__inner:hover{ box-shadow:0 14px 34px rgba(23,63,102,.10); transform:translateY(-2px); }

.nsp-card__body{ display:flex; flex-direction:column; min-width:0; flex:1; }

.nsp-card__name{
  font-family:var(--nsp-serif); font-size:20px; font-weight:500;
  line-height:1.25; margin:0 0 6px; color:var(--nsp-deep);
  overflow-wrap:anywhere;
}
.nsp-card__name a{ color:inherit; text-decoration:none; }
.nsp-card__name a:hover,
.nsp-card__name a:focus-visible{ text-decoration:underline; }

.nsp-card__role{
  font-family:var(--nsp-sans); font-size:14px; font-weight:500;
  color:var(--nsp-teal); margin:0 0 10px; overflow-wrap:anywhere;
}
.nsp-card__summary{
  font-family:var(--nsp-sans); font-size:14px; line-height:1.55;
  color:var(--nsp-ink); margin:0 0 14px; overflow-wrap:anywhere;
}
.nsp-card__meta{
  display:flex; align-items:flex-start; gap:8px;
  font-family:var(--nsp-sans); font-size:13.5px; line-height:1.45;
  color:var(--nsp-blue); margin:0 0 8px; overflow-wrap:anywhere;
}
.nsp-card__meta .nsp-i{ margin-top:1px; width:16px; height:16px; }

.nsp-card__action{
  margin:auto 0 0; padding-top:12px;
  border-top:1px solid var(--nsp-line);
}
/* Card-level text button: elegant, but a real 44px target with its own
   hover/focus treatment so it reads as interactive. */
.nsp-card__link{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  min-height:var(--nsp-action-h);
  padding:0 10px;
  margin-inline:-10px;
  border-radius:10px;
  font-family:var(--nsp-sans); font-size:14.5px; font-weight:500;
  line-height:1;
  color:var(--nsp-blue); text-decoration:none;
  transition:background-color .2s ease, color .2s ease;
}
.nsp-card__link:hover,
.nsp-card__link:focus-visible{
  color:var(--nsp-deep);
  background:var(--nsp-tint);
}
/* fixed icon box keeps every arrow on the same optical line across cards */
.nsp-card__arrow{
  display:inline-flex; align-items:center; justify-content:center;
  width:24px; height:24px; flex:0 0 24px;
  transition:transform .25s ease;
}
.nsp-card__arrow .nsp-i{ width:18px; height:18px; }
.nsp-card__link:hover .nsp-card__arrow,
.nsp-card__link:focus-visible .nsp-card__arrow{ transform:translateX(3px); }

/* ==================== 3. PORTRAIT + FALLBACK ==================== */

.nsp-avatar{
  flex:0 0 104px; width:104px; height:104px; align-self:flex-start;
  border-radius:50%; overflow:hidden;
  background:linear-gradient(150deg,#EAF3FB,#DCEAF7);
  border:1px solid var(--nsp-line);
  display:flex; align-items:center; justify-content:center;
}
.nsp-avatar__img{ width:100%; height:100%; object-fit:cover; display:block; }
.nsp-avatar__initials{
  display:flex; align-items:center; justify-content:center;
  width:100%; height:100%;
  font-family:var(--nsp-serif); font-size:30px; font-weight:500;
  letter-spacing:.02em; color:var(--nsp-blue);
}
.nsp-avatar--lg{ flex-basis:150px; width:150px; height:150px; }
.nsp-avatar--lg .nsp-avatar__initials{ font-size:44px; }

/* ==================== 4. EMPTY STATE ==================== */

.nsp-empty{
  border:1px dashed var(--nsp-line); border-radius:var(--nsp-radius);
  background:rgba(255,255,255,.7);
  padding:44px 28px; text-align:center;
}
.nsp-empty__title{
  font-family:var(--nsp-serif); font-size:20px; color:var(--nsp-deep); margin:0 0 8px;
}
.nsp-empty__text{
  font-family:var(--nsp-sans); font-size:15px; color:var(--nsp-muted); margin:0 0 18px;
}
.nsp-empty__clear{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:var(--nsp-action-h); padding:0 24px;
  font-family:var(--nsp-sans); font-size:14.5px; font-weight:500;
  color:#fff; background:var(--nsp-grad);
  border-radius:999px; text-decoration:none;
}

/* ==================== 5. FOCUS VISIBILITY ==================== */

.nsp a:focus-visible,
.nsp button:focus-visible,
.nsp input:focus-visible,
.nsp select:focus-visible,
.nsp-profile a:focus-visible,
.ns-footer a:focus-visible,
.ns-footer input:focus-visible,
.ns-footer button:focus-visible{
  outline:3px solid var(--nsp-teal);
  outline-offset:3px;
  border-radius:6px;
}

/* ==================== 6. INDIVIDUAL PROFILE ==================== */

.nsp-profile-main{ display:block; background:var(--ns-surface,#F5F6F8); }
.nsp-profile__shell{
  max-width:1100px; margin:0 auto; padding:120px 24px 80px;
}
.nsp-crumbs{
  display:flex; flex-wrap:wrap; gap:8px; align-items:center;
  font-family:var(--nsp-sans); font-size:14px; color:var(--nsp-muted); margin-bottom:26px;
}
.nsp-crumbs a{ color:var(--nsp-blue); text-decoration:none; }
.nsp-crumbs a:hover{ text-decoration:underline; }

.nsp-profile__head{
  display:flex; gap:32px; align-items:flex-start; flex-wrap:wrap;
  background:#fff; border:1px solid var(--nsp-line); border-radius:22px;
  padding:32px; box-shadow:0 12px 34px rgba(23,63,102,.05);
}
.nsp-profile__ident{ flex:1; min-width:260px; }
.nsp-profile__name{
  font-family:var(--nsp-serif); font-size:34px; line-height:1.2; font-weight:500;
  color:var(--nsp-deep); margin:0 0 8px; overflow-wrap:anywhere;
}
.nsp-profile__role{
  font-family:var(--nsp-sans); font-size:16px; font-weight:500;
  color:var(--nsp-teal); margin:0 0 12px;
}
.nsp-profile__summary{
  font-family:var(--nsp-sans); font-size:16px; line-height:1.6;
  color:var(--nsp-ink); margin:0 0 14px; max-width:60ch;
}
.nsp-profile__avail{
  display:inline-flex; align-items:center; gap:8px; margin:0 0 18px;
  font-family:var(--nsp-sans); font-size:14px; font-weight:500;
  padding:7px 14px; border-radius:999px;
  background:#EAF6FA; color:#0E7C93;
}
.nsp-profile__avail--waitlist{ background:#FFF4E5; color:#8A5A12; }
.nsp-profile__avail--unavailable{ background:#F1F3F6; color:#5C6B7C; }

.nsp-profile__actions{ display:flex; flex-wrap:wrap; gap:12px; margin:0; }
.nsp-btn{
  display:inline-flex; align-items:center; justify-content:center;
  font-family:var(--nsp-sans); font-size:14.5px; font-weight:500;
  border-radius:999px; padding:13px 24px; text-decoration:none; min-height:46px;
}
.nsp-btn--primary{
  color:#fff; background:linear-gradient(94deg,var(--ns-cta-blue,#005FC3),#1487CE 60%,#31C1D0);
}
.nsp-btn--ghost{
  color:var(--nsp-blue); background:#fff; border:1.5px solid #9EC3E8;
}

.nsp-profile__grid{
  display:grid; grid-template-columns:1.6fr .9fr; gap:34px; margin-top:34px;
}
.nsp-profile__content{
  font-family:var(--nsp-sans); font-size:16px; line-height:1.7; color:var(--nsp-ink);
}
.nsp-profile__content h2,
.nsp-profile__content h3{ font-family:var(--nsp-serif); color:var(--nsp-deep); }
.nsp-profile__pending{ color:var(--nsp-muted); font-style:italic; }

.nsp-profile__side{ display:flex; flex-direction:column; gap:22px; }
.nsp-profile__block{
  background:#fff; border:1px solid var(--nsp-line); border-radius:16px; padding:20px 22px;
}
.nsp-profile__blockTitle{
  font-family:var(--nsp-sans); font-size:13px; font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; color:var(--nsp-muted); margin:0 0 12px;
}
.nsp-taglist{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px; }
.nsp-taglist li{
  font-family:var(--nsp-sans); font-size:13.5px; color:var(--nsp-blue);
  background:#EEF6FC; border-radius:999px; padding:6px 13px; overflow-wrap:anywhere;
}

.nsp-profile__back{ margin:36px 0 0; }
.nsp-profile__back a{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--nsp-sans); font-size:15px; color:var(--nsp-blue); text-decoration:none;
}
.nsp-profile__back a:hover{ text-decoration:underline; }

/* ==================== 7. RESPONSIVE ==================== */

@media (max-width:1024px){
  .nsp-filters{
    grid-template-columns:1fr 1fr;
    gap:18px;
  }
  .nsp-filters__field--search{ grid-column:1 / -1; }
  .nsp-filters__actions{ grid-column:1 / -1; justify-content:flex-start; }
  .nsp-grid{ grid-template-columns:repeat(2,1fr); gap:22px; }
  .nsp-profile__grid{ grid-template-columns:1fr; gap:26px; }
  .nsp-profile__shell{ padding:100px 24px 70px; }
}

@media (max-width:767px){
  .nsp-filters{
    grid-template-columns:1fr;
    padding:18px;
    border-radius:16px;
    margin-bottom:30px;
  }
  .nsp-filters__actions{ flex-wrap:wrap; gap:12px; }
  .nsp-filters__apply{ flex:1 1 auto; }
  .nsp-grid{ grid-template-columns:1fr; gap:18px; }
  .nsp-card__inner{ padding:20px; gap:16px; }
  .nsp-avatar{ flex:0 0 76px; width:76px; height:76px; }
  .nsp-avatar__initials{ font-size:24px; }
  .nsp-card__name{ font-size:18px; }

  .nsp-profile__shell{ padding:92px 20px 60px; }
  .nsp-profile__head{ padding:22px; gap:20px; }
  .nsp-profile__name{ font-size:26px; }
  .nsp-avatar--lg{ flex-basis:104px; width:104px; height:104px; }
  .nsp-avatar--lg .nsp-avatar__initials{ font-size:32px; }
  .nsp-btn{ width:100%; }
}

/* Small phones: keep the card readable by stacking the portrait. */
@media (max-width:400px){
  .nsp-card__inner{ flex-direction:column; align-items:flex-start; }
}

/* ==================== 8. PROFESSIONALS PAGE SHELL ==================== */

.nsx-hero{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  background-color:var(--ns-surface,#F5F6F8);
  background-image:var(--ns-hero-bg);
  background-size:100% 640px;
  background-repeat:no-repeat;
  --padding-block-start:132px;
  --padding-block-end:26px;
  --padding-inline-start:0px;
  --padding-inline-end:0px;
}
.nsx-hero > .nsx-hero__inner{
  position:relative;
  z-index:3;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,.85fr);
  align-items:center;
  gap:40px;
  --width:100%;
  max-width:1240px;
  margin-inline:auto;
  --padding-inline-start:24px;
  --padding-inline-end:24px;
  --row-gap:0px;
  --column-gap:0px;
}
.nsx-hero__inner > .nsx-hero__intro{
  --width:auto;
  --row-gap:0px;
  --column-gap:0px;
  --padding-block-start:0px;
  --padding-block-end:0px;
  --padding-inline-start:0px;
  --padding-inline-end:0px;
}

/* decorative botanicals: quiet, never over the copy */
.nsx-hero > .nsx-decor{
  position:absolute;
  --width:auto;
  padding:0;
  pointer-events:none;
  mix-blend-mode:multiply;
  filter:saturate(1.5) hue-rotate(42deg) brightness(1.04);
  opacity:.5;
  z-index:1;
}
.nsx-hero > .nsx-decor--left{
  left:-120px; top:40px; width:min(330px,24vw); aspect-ratio:1171/912;
  background-position:left center !important;
}
.nsx-hero > .nsx-decor--right{
  right:-110px; top:20px; width:min(340px,25vw); aspect-ratio:1116/944;
  background-position:right center !important;
}

.nsx-crumbs{
  display:flex; flex-wrap:wrap; align-items:center; gap:9px;
  font-family:var(--ns-sans); font-size:14px; color:var(--ns-muted,#667F96);
  margin:0 0 18px;
}
.nsx-crumbs a{ color:var(--ns-primary,#1764C0); text-decoration:none; }
.nsx-crumbs a:hover,.nsx-crumbs a:focus-visible{ text-decoration:underline; }
.nsx-crumbs__sep{ color:#A9BED2; }

.nsx-hero__title .elementor-heading-title,
.nsx-hero__title{
  font-family:"Lora",Georgia,serif;
  font-size:clamp(32px,3.2vw,46px);
  line-height:1.16;
  font-weight:500;
  color:var(--ns-primary-deep,#0B3D91);
  margin:0 0 18px;
  max-width:14ch;
  overflow-wrap:anywhere;
}
.nsx-hero__lead p{
  font-family:var(--ns-sans);
  font-size:16.5px; line-height:1.62; color:var(--ns-primary,#1764C0);
  margin:0; max-width:46ch;
}

/* ---- circular identity motif: static, 1:1, secondary to the title ---- */
.nsx-hero__motifcol{ --width:auto; align-items:center; }
.nsx-hero__motifwrap{ display:flex; justify-content:center; width:100%; }

.nsx-motif{
  --nsx-motif-size:min(232px,19vw);
  position:relative;
  width:var(--nsx-motif-size);
  aspect-ratio:1/1;                    /* never distorts */
  display:grid; place-items:center;
  flex:0 0 auto;
}
.nsx-motif__halo,
.nsx-motif__ring,
.nsx-motif__disc,
.nsx-motif__svg{ position:absolute; inset:0; border-radius:50%; pointer-events:none; }
.nsx-motif__halo{ inset:-6%; border:1px solid rgba(110,158,206,.18); }
.nsx-motif__ring--outer{ inset:2%;  border:1px solid rgba(104,152,202,.34); }
.nsx-motif__ring--inner{ inset:10%; border:1px solid rgba(104,152,202,.24); }
.nsx-motif__disc{
  inset:13%;
  background:radial-gradient(circle at 42% 34%, rgba(255,255,255,.95) 0%, rgba(255,255,255,.62) 55%, rgba(240,246,251,.28) 100%);
  box-shadow:inset 0 1px 2px rgba(255,255,255,.85), 0 10px 30px rgba(23,63,102,.05);
}
.nsx-motif__svg{ overflow:visible; }
.nsx-motif__track{ fill:none; stroke:rgba(116,162,208,.20); stroke-width:2; }
.nsx-motif__arc{
  fill:none; stroke:#7FB6DC; stroke-width:2.6; stroke-linecap:round;
  stroke-dasharray:150 441;            /* a quiet partial sweep, not a progress UI */
}
.nsx-motif__dot{ fill:var(--ns-accent,#19A7D1); }
.nsx-motif__label{
  position:relative; z-index:2;
  display:flex; flex-direction:column; gap:4px;
  font-family:var(--ns-sans); font-size:14.5px; line-height:1.4;
  color:var(--ns-primary,#1764C0); text-align:center;
}

/* ==================== 9. DIRECTORY SECTION ==================== */

/* Elementor pins .elementor-widget to max-width:100%, so the 1240px measure is
   applied as container padding (a control Elementor owns) instead of fighting
   that rule on the widget itself. */
.nsx-directory{
  background:var(--ns-surface,#F5F6F8);
  --padding-block-start:8px;
  --padding-block-end:52px;
  --padding-inline-start:max(24px, calc((100% - 1240px) / 2));
  --padding-inline-end:max(24px, calc((100% - 1240px) / 2));
}

/* ==================== 10. SUPPORT CTA ==================== */

.nsx-cta{
  background:var(--ns-surface,#F5F6F8);
  --padding-block-start:0px;
  --padding-block-end:64px;
  --padding-inline-start:0px;
  --padding-inline-end:0px;
}
.nsx-cta > .nsx-cta__inner{
  display:grid;
  grid-template-columns:1.35fr auto;
  align-items:center;
  gap:36px;
  width:100%; max-width:1240px; margin-inline:auto;
  --width:100%;
  --row-gap:0px; --column-gap:0px;
  background:linear-gradient(105deg,#EAF2FA 0%,#E4EEF8 55%,#E9F3FA 100%);
  border:1px solid var(--ns-line,#D9E8F2);
  border-radius:20px;
  --padding-block-start:30px;
  --padding-block-end:30px;
  --padding-inline-start:34px;
  --padding-inline-end:34px;
}
.nsx-cta__inner > .nsx-cta__left{
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-rows:auto auto auto;
  column-gap:22px;
  align-items:start;
  --width:auto;
  --row-gap:0px; --column-gap:0px;
  --padding-block-start:0px; --padding-block-end:0px;
  --padding-inline-start:0px; --padding-inline-end:0px;
}
.nsx-cta__icon{
  grid-row:1 / span 3; grid-column:1;
  width:74px; height:74px; border-radius:50%; overflow:hidden;
  background:#fff; border:1px solid var(--ns-line,#D9E8F2);
  display:flex; align-items:center; justify-content:center;
  align-self:center;
}
.nsx-cta__icon img{ width:100%; height:100%; object-fit:cover; mix-blend-mode:multiply; }
.nsx-cta__title .elementor-heading-title,
.nsx-cta__title{
  grid-column:2; grid-row:1;
  font-family:"Lora",Georgia,serif; font-size:23px; line-height:1.25; font-weight:500;
  color:var(--ns-primary-deep,#0B3D91); margin:0 0 6px;
}
.nsx-cta__text{ grid-column:2; grid-row:2; }
.nsx-cta__text p{
  font-family:var(--ns-sans); font-size:15px; line-height:1.55;
  color:var(--ns-text,#173F66); margin:0 0 10px;
}
.nsx-cta__link{ grid-column:2; grid-row:3; }
/* The clearest next step in the section: compact rounded blue/teal button. */
.nsx-cta__link{ margin-top:14px; }
.nsx-cta__link .elementor-button{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:44px; padding:0 22px;
  border:0; border-radius:999px;
  font-family:var(--ns-sans); font-size:14.5px; font-weight:500; line-height:1;
  color:#fff;
  background:linear-gradient(94deg,var(--ns-cta-blue,#005FC3) 0%,#1487CE 58%,#31C1D0 100%);
  box-shadow:0 8px 20px rgba(0,95,195,.22);
  transition:transform .25s ease, box-shadow .25s ease;
}
.nsx-cta__link .elementor-button:hover,
.nsx-cta__link .elementor-button:focus-visible{
  color:#fff;
  transform:translateY(-1px);
  box-shadow:0 10px 26px rgba(0,95,195,.30);
}
/* Elementor nests label+icon in .elementor-button-content-wrapper, which keeps
   its own alignment; without this the arrow sticks to the first line whenever
   the label wraps (visible at 390px). */
.nsx-cta__link .elementor-button-content-wrapper{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
}
.nsx-cta__link .elementor-button-text{ text-align:center; }
.nsx-cta__link .elementor-button-icon{
  display:inline-flex; align-items:center; justify-content:center;
  width:18px; height:18px; flex:0 0 18px;
  transition:transform .25s ease;
}
.nsx-cta__link .elementor-button-icon svg{ width:16px; height:16px; fill:currentColor; display:block; }
.nsx-cta__link .elementor-button-icon svg path{ fill:currentColor; }
.nsx-cta__link .elementor-button:hover .elementor-button-icon{ transform:translateX(3px); }

.nsx-cta__inner > .nsx-cta__right{
  --width:auto;
  border-left:1px solid rgba(23,63,102,.12);
  --padding-inline-start:34px;
  --padding-inline-end:0px;
  --padding-block-start:0px; --padding-block-end:0px;
}
.nsx-cta__contact{ display:flex; align-items:center; gap:18px; }
.nsx-cta__phoneicon{
  flex:0 0 auto; width:56px; height:56px; border-radius:50%;
  background:#fff; border:1px solid var(--ns-line,#D9E8F2);
  display:flex; align-items:center; justify-content:center;
  color:var(--ns-primary,#1764C0);
}
.nsx-cta__phoneicon svg{ width:24px; height:24px; }
.nsx-cta__contactLabel{
  font-family:var(--ns-sans); font-size:14px; color:var(--ns-muted,#667F96); margin:0 0 2px;
}
.nsx-cta__phone{
  font-family:var(--ns-sans); font-size:22px; font-weight:500;
  color:var(--ns-primary-deep,#0B3D91); margin:0 0 2px;
}
.nsx-cta__hours{
  font-family:var(--ns-sans); font-size:13.5px; color:var(--ns-muted,#667F96); margin:0;
}

/* ==================== 11. SHARED GLOBAL FOOTER ====================
   Column proportions measured from prototype/refProfesionals.png (heading
   x-starts 183/441/581/754/912/1087, content ends 1266 -> deltas
   258/140/173/158/175/179). Rendered on the page's 1240px measure so the
   footer stays aligned with the hero, cards and CTA above it. */

/* #footer IS the .ct-footer element, so the tokens live directly on it. */
#footer,
#footer.ct-footer{
  --nsf-heading:#1E56BE;
  --nsf-link:#3E5FA5;
  --nsf-body:#4E6BA6;
  --nsf-legal:#8090B4;
  --nsf-rule:rgba(23,63,102,.10);
  background:#FCFDFE;
}

#footer [data-row="middle"] > .ct-container,
#footer [data-row="middle"] > .ct-container-fluid{
  max-width:1288px;            /* 1288 - 48 padding = 1240 content box */
  margin-inline:auto;
  /* Interior frame lives on the shared row container, never on the widgets,
     so all six columns stay top-aligned. */
  padding-block:40px 32px;
  padding-inline:24px;
  /* 1240 content - 5x26 gaps = 1110px of column space, near the prototype's
     proportions. Binding minimum per column: social row 4x44+3x12 = 212 |
     "Contacto" 64 | "Nuestras especialidades" 167 | "Guías y herramientas" 145 |
     address+icon 168 | pill+placeholder 198. Sum 954 leaves comfortable slack. */
  grid-template-columns:2.17fr 1fr 1.44fr 1.26fr 1.4fr 1.61fr;
  column-gap:26px;
  align-items:start;          /* top-align every column */
}
#footer [data-row="middle"] [data-column]{ min-width:0; align-self:start; }

/* ---- headings: elegant blue serif, matching the prototype ---- */
#footer .ct-widget .ns-footer__h,
#footer .ns-footer__h,
#footer .widget h3,
#footer .wp-block-heading{
  font-family:"Lora",Georgia,serif;
  font-size:15.5px;
  font-weight:600;
  line-height:1.3;
  letter-spacing:.01em;
  color:var(--nsf-heading);
  margin:0 0 18px;
}

/* ---- link lists ---- */
#footer .ns-footer__list{ list-style:none; margin:0; padding:0; }
#footer .ns-footer__list li{ margin:0 0 13px; }
#footer .ns-footer__list li:last-child{ margin-bottom:0; }
#footer .ct-widget .ns-footer__list a,
#footer .ns-footer__list a{
  font-family:var(--ns-sans);
  font-size:13.5px;
  line-height:1.5;
  color:var(--nsf-link);
  text-decoration:none;
  transition:color .2s ease;
}
#footer .ns-footer__list a:hover,
#footer .ns-footer__list a:focus-visible{ color:var(--ns-primary-deep,#0B3D91); }

/* ---- brand column ---- */
#footer .ns-footer__logo{ margin:0 0 16px; }
#footer .ns-footer__logo img{ mix-blend-mode:multiply; max-width:186px; height:auto; display:block; }
#footer .ct-widget .ns-footer__about,
#footer .ns-footer__about{
  font-family:var(--ns-sans);
  font-size:13px;
  line-height:1.62;
  color:var(--nsf-body);
  margin:0 0 20px;
  max-width:30ch;
}

/* ---- social: identical circles, one normalised glyph box ---- */
#footer .ns-footer__social{
  list-style:none; margin:0; padding:0;
  display:flex; flex-wrap:wrap; align-items:center; gap:12px;
}
#footer .ns-footer__socialItem{ margin:0; padding:0; display:flex; }
#footer .ns-social{
  display:inline-flex; align-items:center; justify-content:center;
  width:44px; height:44px; flex:0 0 44px;
  box-sizing:border-box; padding:0; line-height:0;
  border-radius:50%;
  background:rgba(23,100,192,.05);
  border:1px solid rgba(23,100,192,.24);
  color:var(--ns-primary,#1764C0);
  text-decoration:none;
  transition:background-color .2s ease, border-color .2s ease, color .2s ease, transform .2s ease;
}
#footer .ns-social svg{ display:block; width:19px; height:19px; flex:0 0 19px; }
#footer .ns-social:hover,
#footer .ns-social:focus-visible{
  color:#fff;
  background:var(--ns-primary,#1764C0);
  border-color:var(--ns-primary,#1764C0);
  transform:translateY(-1px);
}

/* ---- contact list ---- */
#footer .ns-footer__contact{ list-style:none; margin:0; padding:0; }
#footer .ct-widget .ns-footer__contact li,
#footer .ns-footer__contact li{
  display:flex; gap:9px; align-items:flex-start; margin:0 0 13px;
  font-family:var(--ns-sans); font-size:13.5px; line-height:1.5; color:var(--nsf-link);
}
#footer .ns-footer__contact li:last-child{ margin-bottom:0; }
#footer .ns-footer__ci{ color:var(--ns-primary,#1764C0); flex:0 0 auto; line-height:1.4; }

/* ---- newsletter: real, validated, honest ---- */
#footer .ns-news{ margin:0; }
#footer .ct-widget .ns-news__label,
#footer .ns-news__label{
  display:block;
  font-family:var(--ns-sans); font-size:13.5px; line-height:1.62;
  color:var(--nsf-body); margin:0 0 16px; max-width:26ch;
}
#footer .ns-news__field{
  position:relative; display:block; width:100%; max-width:100%;
}
#footer .ns-news__input{
  width:100%; box-sizing:border-box;
  font-family:var(--ns-sans); font-size:12.5px;
  color:var(--ns-text,#173F66);
  padding:0 47px 0 15px;
  height:46px; line-height:46px;
  border:1px solid rgba(23,100,192,.22);
  border-radius:999px;
  background:#fff;
}
#footer .ns-news__input::placeholder{ color:#94A5C3; }
/* The visible disc is the button's own background (a ::before disc does not
   paint reliably inside a <button> here). ::after only widens the pointer
   target to 44px without drawing anything. */
#footer .ns-news__btn{
  position:absolute; top:50%; right:4px;
  transform:translateY(-50%);
  width:38px; height:38px;
  min-height:0; min-width:0; line-height:0;
  display:flex; align-items:center; justify-content:center;
  padding:0; border:0; border-radius:50%; cursor:pointer;
  box-sizing:border-box;
  background:var(--ns-cta-blue,#005FC3); color:#fff;
  transition:background-color .2s ease;
}
#footer .ns-news__btn::after{
  content:"";
  position:absolute; top:50%; left:50%;
  width:44px; height:44px; margin:-22px 0 0 -22px;
  border-radius:50%;
}
#footer .ns-news__btn svg{ display:block; width:17px; height:17px; }
#footer .ns-news__btn:hover,
#footer .ns-news__btn:focus-visible{ background:var(--ns-primary-deep,#0B3D91); }
#footer .ns-news__btn:focus-visible{ outline:3px solid var(--ns-accent,#19A7D1); outline-offset:3px; }

/* message only occupies space once there is something to say */
#footer .ns-news__msg{
  font-family:var(--ns-sans); font-size:12.5px; line-height:1.5;
  margin:0; max-width:26ch; color:var(--nsf-legal);
}
#footer .ns-news[data-state] .ns-news__msg{ margin-top:10px; }
#footer .ns-news[data-state="error"] .ns-news__msg{ color:#B4462F; }
#footer .ns-news[data-state="error"] .ns-news__input{ border-color:#C9704F; }
#footer .ns-news[data-state="pending"] .ns-news__msg{ color:var(--ns-primary,#1764C0); }

/* ---- legal row ---- */
#footer [data-row="bottom"]{ border-top:1px solid var(--nsf-rule); }
#footer [data-row="bottom"] > .ct-container,
#footer [data-row="bottom"] > .ct-container-fluid{
  max-width:1288px; margin-inline:auto;
  padding-block:24px;
  padding-inline:24px;
}
#footer .ct-footer-copyright{
  font-family:var(--ns-sans); font-size:13px; line-height:1.6; color:var(--nsf-legal);
}
#footer .ct-footer-copyright a{
  color:var(--nsf-legal); text-decoration:none; margin-left:26px;
}
#footer .ct-footer-copyright a:hover{ color:var(--ns-primary,#1764C0); text-decoration:underline; }

/* ==================== 12. PAGE RESPONSIVE ==================== */

@media (max-width:1024px){
  .nsx-hero > .nsx-hero__inner{
    grid-template-columns:1fr;
    justify-items:center;
    text-align:center;
    gap:30px;
    --padding-block-start:0px;
  }
  .nsx-hero{ --padding-block-start:120px; --padding-block-end:20px; }
  .nsx-crumbs{ justify-content:center; }
  .nsx-hero__title{ max-width:20ch; margin-inline:auto; }
  .nsx-hero__lead p{ margin-inline:auto; }
  .nsx-motif{ --nsx-motif-size:200px; }
  .nsx-hero > .nsx-decor{ opacity:.35; }

  .nsx-cta{
    --padding-inline-start:24px;
    --padding-inline-end:24px;
  }
  .nsx-cta > .nsx-cta__inner{ grid-template-columns:1fr; gap:26px; }

  /* Blocksy only emits the desktop --grid-template-columns, so the tablet and
     mobile footer grids are declared here. */
  /* Tablet: two balanced columns. Three was too tight for the newsletter
     field and the 4 x 44px social row; two keeps every group unwrapped. */
  /* Blocksy adds its own container inset below the desktop breakpoint; reset
     it so the footer gutters match the cards/CTA above (24px at tablet). */
  #footer [data-row="middle"] > .ct-container,
  #footer [data-row="middle"] > .ct-container-fluid{
    width:100%;
    max-width:100%;
    margin-inline:0;
    grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:32px;
    row-gap:30px;
    padding-block:38px;
    padding-inline:24px;
  }
  #footer [data-row="bottom"] > .ct-container,
  #footer [data-row="bottom"] > .ct-container-fluid{
    width:100%;
    max-width:100%;
    margin-inline:0;
    padding-block:24px;
    padding-inline:24px;
  }
  #footer .ns-news__field{ max-width:100%; }
  #footer .ns-footer__about,
  #footer .ns-news__label,
  #footer .ns-news__msg{ max-width:34ch; }
  .nsx-cta__inner > .nsx-cta__right{
    border-left:0; border-top:1px solid rgba(23,63,102,.12);
    --padding-inline-start:0px;
    --padding-block-start:24px;
  }
}

@media (max-width:767px){
  .nsx-hero{ --padding-block-start:104px; }
  .nsx-hero > .nsx-hero__inner{ --padding-inline-start:20px; --padding-inline-end:20px; }
  .nsx-hero__title{ font-size:29px; max-width:none; }
  .nsx-hero__lead p{ font-size:15.5px; }
  .nsx-motif{ --nsx-motif-size:168px; }
  .nsx-motif__label{ font-size:12.5px; }
  .nsx-hero > .nsx-decor--left{ width:52vw; left:-22vw; }
  .nsx-hero > .nsx-decor--right{ width:50vw; right:-22vw; }

  .nsx-directory{
    --padding-inline-start:20px;
    --padding-inline-end:20px;
  }
  .nsx-cta{
    --padding-inline-start:20px;
    --padding-inline-end:20px;
  }
  .nsx-cta > .nsx-cta__inner{
    --padding-inline-start:20px; --padding-inline-end:20px;
    border-radius:16px;
  }
  /* Mobile: single column, ~30px between groups, full-width newsletter. */
  #footer [data-row="middle"] > .ct-container,
  #footer [data-row="middle"] > .ct-container-fluid{
    width:100%;
    max-width:100%;
    margin-inline:0;
    grid-template-columns:minmax(0,1fr);
    column-gap:0;
    row-gap:30px;
    padding-block:40px 32px;
    padding-inline:20px;
  }
  #footer [data-row="bottom"] > .ct-container,
  #footer [data-row="bottom"] > .ct-container-fluid{
    width:100%;
    max-width:100%;
    margin-inline:0;
    padding-block:26px;
    padding-inline:20px;
  }
  #footer .ns-footer__h{ margin-bottom:14px; }
  #footer .ns-news__field{ max-width:100%; }
  #footer .ns-news__label,
  #footer .ns-news__msg,
  #footer .ct-widget .ns-footer__about,
#footer .ns-footer__about{ max-width:100%; }
  #footer .ct-footer-copyright{ line-height:2; }
  #footer .ct-footer-copyright a{ margin-left:0; margin-right:20px; }
  .nsx-cta__inner > .nsx-cta__left{
    grid-template-columns:1fr;
    row-gap:12px;
  }
  .nsx-cta__icon{ grid-row:auto; grid-column:1; }
  .nsx-cta__title, .nsx-cta__text, .nsx-cta__link{ grid-column:1; grid-row:auto; }
  .nsx-cta__link .elementor-button{ padding:11px 20px; }
  .nsx-cta__phone{ font-size:19px; }
  /* Brand block reads as one centred group on mobile. */
  #footer [data-row="middle"] [data-column]:first-child{ text-align:center; }
  #footer .ns-footer__logo{ display:flex; justify-content:center; }
  #footer .ns-footer__logo img{ margin-inline:auto; }
  #footer .ct-widget .ns-footer__about,
#footer .ns-footer__about{ margin-inline:auto; }
  #footer .ns-footer__social{ justify-content:center; }
}

/* ==================== 13. REDUCED MOTION ==================== */

@media (prefers-reduced-motion:reduce){
  .nsp-card__inner,
  .nsp-card__arrow,
  .nsp-card__link,
  .nsp-filters__clear,
  .nsx-cta__link .elementor-button,
  .nsx-cta__link .elementor-button-icon,
  #footer .ns-social{ transition:none; }
  .nsx-cta__link .elementor-button:hover,
  #footer .ns-social:hover{ transform:none; }
}

/* ==================== 13a. FOCUS VISIBILITY (form + footer) ====================
   Blocksy resets form controls to `outline: 2px solid transparent`, and the
   original `.ns-footer a` selector never matched (no such element exists), so
   both needed explicit, higher-specificity rings. */
.nsp .nsp-filters .nsp-search__input:focus-visible,
.nsp .nsp-filters .nsp-select__input:focus-visible,
.nsp .nsp-filters input[type="search"]:focus-visible,
.nsp .nsp-filters select:focus-visible{
  /* Blocksy forces `outline-color: transparent !important` on form controls,
     which cannot be overridden, so the visible ring is drawn with box-shadow.
     Verified visible with a real keyboard Tab. */
  outline-style:solid !important;
  outline-width:3px !important;
  outline-color:#19A7D1 !important;
  outline-offset:2px !important;
  border-color:#1764C0 !important;
  box-shadow:0 0 0 3px rgba(25,167,209,.55) !important;
}
#footer .ns-social:focus-visible,
#footer .ns-footer__list a:focus-visible,
#footer .ct-footer-copyright a:focus-visible{
  outline:3px solid var(--ns-accent,#19A7D1);
  outline-offset:3px;
}

/* ==================== 13b. FOCUS VISIBILITY (page-level actions) ====================
   Elementor gives its buttons a white focus ring, which disappears on the
   light CTA panel. Every action in the system gets the same visible ring. */
.nsx-cta__link .elementor-button:focus-visible,
.nsx-crumbs a:focus-visible,
.nsx-hero__crumbs a:focus-visible,
.nsp-card__name a:focus-visible{
  outline:3px solid var(--ns-primary-deep,#0B3D91);
  outline-offset:3px;
  border-radius:999px;
}
.nsp-card__name a:focus-visible{ border-radius:6px; }

/* ==================== 14. ACTIVE NAV STATE ==================== */
/* The reference underlines the current section in the global header. */
#header .header-menu-1 .current-menu-item > .ct-menu-link,
#header .header-menu-1 .current_page_item > .ct-menu-link,
#header .header-menu-1 .current-menu-ancestor > .ct-menu-link{
  color:var(--ns-deep,#0640CA);
  position:relative;
}
#header .header-menu-1 .current-menu-item > .ct-menu-link::after,
#header .header-menu-1 .current_page_item > .ct-menu-link::after,
#header .header-menu-1 .current-menu-ancestor > .ct-menu-link::after{
  content:"";
  position:absolute;
  left:0; right:0; bottom:-6px;
  height:2px;
  border-radius:2px;
  background:linear-gradient(90deg,var(--ns-primary,#1764C0),var(--ns-accent,#19A7D1));
}
