/*
 * AIEDI Nexo Inclusivo — production stylesheet
 * Author: Italo Giancarlo Alvarez Lozano
 * Owner: AIEDI - Discapacidad e Inclusión
 */

:root {
  --aiedi-navy: #071845;
  --aiedi-blue: #0758d9;
  --aiedi-blue-dark: #003eaa;
  --aiedi-logo-blue: #3992cf;
  --aiedi-orange: #df9f00;
  --aiedi-orange-bright: #ff9f0a;
  --aiedi-ice: #eef5ff;
  --aiedi-cream: #fff8ed;
  --aiedi-white: #fff;
  --aiedi-text: #14224d;
  --aiedi-muted: #53617e;
  --aiedi-border: #dbe4f2;
  --aiedi-border-strong: #b9c8de;
  --aiedi-success: #176b3a;
  --aiedi-error: #a51d2d;
  --aiedi-shadow: 0 18px 50px rgba(18, 45, 92, .10);
  --aiedi-shadow-soft: 0 8px 24px rgba(18, 45, 92, .08);
  --aiedi-radius-sm: .75rem;
  --aiedi-radius: 1.25rem;
  --aiedi-radius-lg: 2.25rem;
  --aiedi-container: 1920px;
  --aiedi-reading-width: 1180px;
  --aiedi-page-gutter: clamp(.9rem, 2vw, 2rem);
  --aiedi-shell-gutter: clamp(.9rem, 2vw, 2rem);
  --aiedi-header-height: 6.5rem;
  --aiedi-font: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--aiedi-header-height) + 1.5rem); }
body {
  margin: 0;
  color: var(--aiedi-text);
  background: var(--aiedi-white);
  font-family: var(--aiedi-font);
  font-size: 1rem;
  line-height: 1.65;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
body.menu-open { overflow: hidden; }
img, svg, video { max-width: 100%; }
img { height: auto; vertical-align: middle; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
a { color: var(--aiedi-blue); text-underline-offset: .2em; }
a:hover { color: var(--aiedi-blue-dark); }
p, ul, ol, blockquote { margin-top: 0; }
h1, h2, h3, h4, h5, h6 {
  color: var(--aiedi-navy);
  font-weight: 760;
  line-height: 1.12;
  letter-spacing: -.025em;
  margin: 0 0 1rem;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}
h1 { font-size: clamp(2.45rem, 5.2vw, 4.65rem); }
h2 { font-size: clamp(1.75rem, 3vw, 2.65rem); }
h3 { font-size: clamp(1.15rem, 1.8vw, 1.45rem); }
::selection { color: var(--aiedi-white); background: var(--aiedi-blue-dark); }

:focus {
  outline: 3px solid #111;
  outline-offset: 4px;
  box-shadow: 0 0 0 3px #fff;
}
:focus:not(:focus-visible) {
  outline: none;
  box-shadow: none;
}
:focus-visible {
  outline: 3px solid #111;
  outline-offset: 4px;
  box-shadow: 0 0 0 3px #fff;
}
input:focus-visible, select:focus-visible, textarea:focus-visible {
  border-color: var(--aiedi-blue);
  outline: 3px solid #111;
  outline-offset: 4px;
  box-shadow: 0 0 0 3px #fff;
}
:target { scroll-margin-top: calc(var(--aiedi-header-height) + 1.5rem); }

.screen-reader-text {
  border: 0;
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute !important;
  width: 1px;
  word-wrap: normal !important;
}
.screen-reader-text:focus, .skip-link:focus {
  clip: auto !important;
  clip-path: none;
  display: block;
  height: auto;
  left: 1rem;
  top: 1rem;
  width: auto;
  z-index: 100000;
  padding: .8rem 1rem;
  color: #fff;
  background: #111;
  border-radius: .5rem;
}

.container {
  width: 100%;
  max-width: none;
  margin-inline: auto;
  padding-inline: var(--aiedi-shell-gutter);
}
/* Every public template uses the same fluid viewport shell.
 * Readability is controlled by the inner component, not by narrowing the page itself. */
.site-header > .container,
.site-footer > .container,
.site-main .container { max-width: none; padding-inline: var(--aiedi-shell-gutter); }
.site-main { min-height: 50vh; overflow: clip; }
.section { padding: clamp(3.5rem, 7vw, 6.5rem) 0; position: relative; }
.section--tight { padding: clamp(2.25rem, 4vw, 3.5rem) 0; }
.section-heading { max-width: 760px; margin-bottom: 2.5rem; }
.section-heading--center { text-align: center; margin-inline: auto; }
.section-heading h2 span, .cta-banner h2 span, .hero h1 span { color: var(--aiedi-blue); }
.section-heading p { color: var(--aiedi-muted); font-size: 1.075rem; }
.eyebrow {
  color: var(--aiedi-blue);
  font-size: .82rem;
  font-weight: 800;
  letter-spacing: .035em;
  margin-bottom: .8rem;
  text-transform: uppercase;
}
.eyebrow--gold { color: #ffda7a; }
.title-accent { display: block; width: 3rem; height: .2rem; border-radius: 99px; background: var(--aiedi-orange-bright); margin: 1rem 0 1.75rem; }
.section-heading--center .title-accent { margin-inline: auto; }
.aiedi-icon { width: 1.35em; height: 1.35em; flex: 0 0 auto; }

/* Header */
.site-header {
  top: 0;
  z-index: 1000;
  min-height: var(--aiedi-header-height);
  background: rgba(255,255,255,.96);
  border-bottom: 1px solid transparent;
  transition: box-shadow .2s ease, border-color .2s ease, background-color .2s ease;
  backdrop-filter: blur(14px);
}
.site-header.is-scrolled { border-color: var(--aiedi-border); box-shadow: 0 8px 30px rgba(7, 24, 69, .08); }
.site-header__inner { min-height: var(--aiedi-header-height); display: flex; align-items: center; gap: 1.4rem; }
.site-branding { flex: 0 0 auto; }
.site-branding img, .custom-logo { display: block; width: auto; max-width: 178px; max-height: 74px; object-fit: contain; }
.custom-logo-link { display: inline-flex; align-items: center; min-height: 44px; }
.site-header__navigation { margin-left: auto; display: flex; align-items: center; gap: 1.5rem; }
.primary-navigation ul { display: flex; align-items: center; gap: clamp(.65rem, 1.5vw, 1.55rem); list-style: none; margin: 0; padding: 0; }
.primary-navigation li { position: relative; }
.primary-navigation a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: .25rem .1rem;
  color: var(--aiedi-navy);
  font-size: .94rem;
  font-weight: 680;
  text-decoration: none;
}
.primary-navigation a:hover, .primary-navigation .current-menu-item > a, .primary-navigation .current_page_item > a { color: var(--aiedi-blue); }
.primary-navigation .current-menu-item > a::after, .primary-navigation .current_page_item > a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -.2rem;
  height: 2px;
  background: var(--aiedi-orange-bright);
  border-radius: 99px;
}
.primary-navigation .sub-menu {
  position: absolute;
  display: none;
  top: calc(100% + .5rem);
  left: -.75rem;
  min-width: 220px;
  padding: .55rem;
  flex-direction: column;
  align-items: stretch;
  gap: .15rem;
  background: #fff;
  border: 1px solid var(--aiedi-border);
  border-radius: .85rem;
  box-shadow: var(--aiedi-shadow-soft);
}
.primary-navigation .sub-menu a { padding: .55rem .7rem; border-radius: .5rem; }
.primary-navigation li:hover > .sub-menu, .primary-navigation li:focus-within > .sub-menu { display: flex; }
.primary-navigation li.submenu-dismissed > .sub-menu,
.primary-navigation li.submenu-dismissed:focus-within > .sub-menu { display: none; }
.site-header__actions { display: flex; align-items: center; gap: .65rem; }
.header-action {
  min-height: 46px;
  padding: .55rem .9rem;
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  border: 1.5px solid;
  border-radius: 999px;
  font-size: .9rem;
  font-weight: 750;
  text-decoration: none;
  white-space: nowrap;
}
.header-action .aiedi-icon { width: 1.15rem; height: 1.15rem; }
.header-action--cid { color: var(--aiedi-navy); border-color: var(--aiedi-orange-bright); background: #fff; }
.header-action--cid:hover { color: var(--aiedi-navy); background: var(--aiedi-cream); }
.header-action--blog { color: #fff; border-color: var(--aiedi-blue); background: linear-gradient(135deg, var(--aiedi-blue), var(--aiedi-blue-dark)); box-shadow: 0 8px 20px rgba(7,88,217,.22); }
.header-action--blog:hover { color: #fff; background: var(--aiedi-blue-dark); }
.menu-toggle {
  display: none;
  min-width: 46px;
  min-height: 46px;
  margin-left: auto;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--aiedi-border);
  border-radius: 50%;
  background: #fff;
  cursor: pointer;
}
.menu-toggle .aiedi-icon { width: 1.5rem; height: 1.5rem; }
.language-switcher { display: inline-flex; align-items: center; gap: .25rem; padding: .2rem; border: 1px solid var(--aiedi-border); border-radius: 999px; background: #fff; }
.language-switcher__link { display: inline-flex; align-items: center; gap: .3rem; min-height: 38px; padding: .25rem .45rem; border-radius: 999px; color: var(--aiedi-navy); font-size: .72rem; font-weight: 800; text-decoration: none; }
.language-switcher__link.is-current { background: var(--aiedi-ice); color: var(--aiedi-blue-dark); }
.aiedi-flag { width: 22px; height: 15px; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0,0,0,.1); }

/* Buttons and small controls */
.aiedi-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .65rem;
  min-height: 48px;
  padding: .75rem 1.35rem;
  border: 1.5px solid transparent;
  border-radius: 999px;
  font-size: .92rem;
  font-weight: 760;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, color .18s ease;
}
.aiedi-button:hover { transform: translateY(-1px); }
.aiedi-button--primary { color: #fff; background: linear-gradient(135deg, var(--aiedi-blue), var(--aiedi-blue-dark)); box-shadow: 0 10px 24px rgba(7,88,217,.22); }
.aiedi-button--primary:hover { color: #fff; box-shadow: 0 12px 30px rgba(7,88,217,.3); }
.aiedi-button--outline { color: var(--aiedi-navy); background: #fff; border-color: var(--aiedi-orange-bright); }
.aiedi-button--outline:hover { color: var(--aiedi-navy); background: var(--aiedi-cream); }
.aiedi-button--soft { color: var(--aiedi-blue-dark); background: var(--aiedi-ice); }
.aiedi-button--gold { color: var(--aiedi-navy); background: var(--aiedi-orange-bright); }
.text-link { display: inline-flex; align-items: center; gap: .45rem; min-height: 38px; color: var(--aiedi-blue); font-weight: 760; text-decoration: none; }
.text-link:hover { text-decoration: underline; }
.circle-link, .scroller-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border: 1px solid var(--aiedi-border-strong);
  border-radius: 50%;
  color: var(--aiedi-blue);
  background: #fff;
  text-decoration: none;
  cursor: pointer;
  box-shadow: var(--aiedi-shadow-soft);
}
.circle-link:hover, .scroller-button:hover { color: #fff; background: var(--aiedi-blue); border-color: var(--aiedi-blue); }
.icon-bubble {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  flex: 0 0 4rem;
  color: var(--aiedi-blue);
  background: var(--aiedi-ice);
  border-radius: 50%;
}
.icon-bubble .aiedi-icon { width: 2rem; height: 2rem; }
.icon-bubble--blue { color: var(--aiedi-blue); background: #e8f1ff; }
.icon-bubble--gold { color: var(--aiedi-navy); background: #fff0c9; }
.icon-bubble--navy { color: #fff; background: var(--aiedi-blue); }
.count-pill, .tag { display: inline-flex; align-items: center; min-height: 30px; margin: 0; padding: .25rem .65rem; border-radius: 999px; color: var(--aiedi-blue-dark); background: var(--aiedi-ice); font-size: .76rem; font-weight: 760; text-decoration: none; }

/* Breadcrumbs */
.breadcrumbs { margin: 1rem 0 2.5rem; font-size: .84rem; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: .35rem; list-style: none; margin: 0; padding: 0; }
.breadcrumbs li { display: inline-flex; align-items: center; color: var(--aiedi-muted); }
.breadcrumbs li:not(:last-child)::after { content: "›"; margin-left: .35rem; color: #8390a7; }
.breadcrumbs a { color: var(--aiedi-blue-dark); text-decoration: none; }
.breadcrumbs a:hover { text-decoration: underline; }

/* Hero */
.hero { padding: clamp(1.5rem, 2.8vw, 3rem) 0 clamp(2.75rem, 4vw, 4.5rem); position: relative; }
.hero::before { content: ""; position: absolute; left: -5rem; top: 5rem; width: 11rem; height: 30rem; border-radius: 50%; background: linear-gradient(180deg, rgba(238,245,255,.85), rgba(238,245,255,0)); transform: rotate(16deg); pointer-events: none; }
.hero__grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(1.5rem, 3.2vw, 4rem); align-items: center; }
.hero__content { position: relative; z-index: 2; max-width: 680px; }
.hero h1 { margin-bottom: 0; }
.home .hero h1 { font-size: clamp(2.55rem, 4.15vw, 4.35rem); }
.hero:not(.hero--legal):not(.hero--archive) .hero__visual { margin-right: calc(0px - var(--aiedi-shell-gutter)); }
.hero:not(.hero--legal):not(.hero--archive) .hero__image-wrap { width: 100%; }
.hero__description { max-width: 590px; color: var(--aiedi-muted); font-size: clamp(1rem, 1.3vw, 1.13rem); }
.hero__description p:last-child { margin-bottom: 0; }
.hero__actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 2rem; }
.home .hero__actions { flex-wrap: nowrap; }
.home .hero__actions .aiedi-button { padding-inline: 1.15rem; font-size: .86rem; }
.hero__visual { position: relative; min-height: clamp(350px, 35vw, 525px); display: grid; place-items: center; }
.hero__image-wrap { position: relative; z-index: 3; width: 96%; aspect-ratio: 1.2 / 1; overflow: hidden; border-radius: 30% 18% 27% 22% / 25% 20% 30% 25%; box-shadow: var(--aiedi-shadow); background: var(--aiedi-ice); }
.hero__image { width: 100%; height: 100%; object-fit: cover; }
.hero__blob { position: absolute; pointer-events: none; }
.hero__blob--blue { right: -4%; top: 2%; width: 45%; height: 82%; border-radius: 50% 35% 42% 58%; background: linear-gradient(145deg, #005be8, #003ead); transform: rotate(11deg); }
.hero__blob--gold { right: 4%; bottom: 2%; width: 55%; height: 24%; border-radius: 50%; background: linear-gradient(130deg, #ffb000, #ff8b00); transform: rotate(-9deg); }
.hero__dot { position: absolute; z-index: 4; display: block; border-radius: 50%; background: var(--aiedi-orange-bright); }
.hero__dot--one { width: 3rem; height: 3rem; left: 1%; top: 8%; }
.hero__dot--two { width: .75rem; height: .75rem; right: 3%; bottom: 8%; box-shadow: 0 0 0 7px rgba(255,159,10,.14); }
.hero--legal { padding-top: 1rem; }
.hero--legal .hero__grid, .hero--archive .hero__grid { grid-template-columns: minmax(0, 1fr) minmax(360px, .95fr); }
.hero--legal .hero__visual, .hero--archive .hero__visual { min-height: 390px; }
.hero--legal .hero__image-wrap, .hero--archive .hero__image-wrap { aspect-ratio: 1.45 / 1; border-radius: 28% 20% 27% 24%; }
.hero--legal h1, .hero--archive h1 { font-size: clamp(2.5rem, 4.8vw, 4.25rem); }
.hero--archive .hero__description { font-size: 1rem; }

/* Home */
.section--what-we-do { padding: clamp(1.75rem, 2.5vw, 2.75rem) 0 clamp(2rem, 3.4vw, 3.25rem); border-top: 1px solid #edf1f6; }
.knowledge-grid { display: grid; grid-template-columns: 1.35fr repeat(3, 1fr); align-items: stretch; }
.knowledge-grid__intro, .knowledge-item { padding: 1.8rem 2rem; }
.knowledge-grid__intro { padding-left: 0; border-right: 1px solid var(--aiedi-border); }
.knowledge-grid__intro h2 { font-size: clamp(1.6rem, 2.5vw, 2.25rem); }
.knowledge-grid__intro p, .knowledge-item p { color: var(--aiedi-muted); }
.knowledge-item { position: relative; border-right: 1px solid var(--aiedi-border); }
.knowledge-item--last { border-right: 0; }
.knowledge-item__number { display: block; margin-bottom: 1rem; color: var(--aiedi-blue); font-size: 1.45rem; font-weight: 450; }
.knowledge-item h3 { color: var(--aiedi-blue-dark); font-size: 1rem; }
.knowledge-item .circle-link { position: absolute; right: 0; bottom: 1rem; }
.section--principles { background: #fff; padding-block: 0; overflow: hidden; }
.principles-grid { display: grid; grid-template-columns: 1.25fr repeat(3, 1fr); align-items: stretch; }
.principles-intro { position: relative; margin: 0; padding: clamp(2.75rem, 4vw, 4rem) clamp(1.75rem, 2.8vw, 3rem) clamp(2.75rem, 4vw, 4rem) 0; color: #fff; background: linear-gradient(135deg, var(--aiedi-blue), var(--aiedi-blue-dark)); border-radius: 0 4rem 0 0; }
.principles-intro::before { content: ""; position: absolute; top: 0; right: 100%; bottom: 0; width: calc(var(--aiedi-shell-gutter) + 2px); background: var(--aiedi-blue); }
.home .principles-intro::before { width: calc(var(--aiedi-shell-gutter) + 2px); }
.principles-intro h2, .principles-intro p { color: #fff; }
.principle-card { padding: clamp(2.6rem, 3.5vw, 3.5rem) clamp(1.25rem, 2vw, 2rem); background: #fff; }
.principle-card h3 { color: var(--aiedi-blue-dark); font-size: 1.12rem; margin-top: 1.3rem; }
.principle-card p { color: var(--aiedi-muted); font-size: .94rem; }
.section--stats { padding: 0 0 clamp(1.5rem, 2.6vw, 2.5rem); }
.stats-strip { display: grid; grid-template-columns: repeat(4, 1fr); padding: clamp(1.25rem, 2vw, 1.8rem); border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); background: linear-gradient(135deg, #fff, var(--aiedi-ice)); box-shadow: var(--aiedi-shadow-soft); }
.stat-item { position: relative; display: grid; margin: 0; grid-template-columns: auto 1fr; grid-template-areas: "icon number" "icon label" "icon small"; column-gap: 1rem; padding: .5rem 1.5rem; border-right: 1px solid var(--aiedi-border); }
.stat-item:last-child { border-right: 0; }
.stat-item__icon { grid-area: icon; color: var(--aiedi-blue); padding-top: .2rem; }
.stat-item__icon .aiedi-icon { width: 2.1rem; height: 2.1rem; }
.stat-item strong { grid-area: number; color: var(--aiedi-blue); font-size: 1.8rem; line-height: 1; }
.stat-item > span:not(.stat-item__icon) { grid-area: label; color: var(--aiedi-navy); font-size: .85rem; font-weight: 760; }
.stat-item small { grid-area: small; color: var(--aiedi-muted); line-height: 1.4; }

/* About */
.mission-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.feature-card { position: relative; display: grid; grid-template-columns: auto 1fr; gap: 1.5rem; min-height: 230px; padding: 2.4rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); background: #fff; box-shadow: var(--aiedi-shadow-soft); overflow: hidden; }
.feature-card::after { content: ""; position: absolute; width: 9rem; height: 9rem; border-radius: 50%; opacity: .5; right: -3rem; bottom: -4rem; }
.feature-card--blue::after { background: var(--aiedi-ice); }
.feature-card--gold::after { background: #fff0c9; }
.feature-card p:last-child { color: var(--aiedi-muted); }
.explore-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.explore-card { display: grid; grid-template-columns: auto 1fr auto; gap: 1.25rem; align-items: center; min-height: 140px; padding: 1.5rem 1.8rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); text-decoration: none; box-shadow: var(--aiedi-shadow-soft); }
.explore-card--blue { background: linear-gradient(135deg, #fff, var(--aiedi-ice)); }
.explore-card--gold { background: linear-gradient(135deg, #fff, var(--aiedi-cream)); }
.explore-card strong { display: block; color: var(--aiedi-navy); font-size: 1.3rem; }
.explore-card small { display: block; color: var(--aiedi-muted); }
/* Nosotros: el mockup usa un círculo naranja sólido con libro blanco para Historia. */
.explore-card--gold .icon-bubble--history {
  color: #fff;
  background: var(--aiedi-orange-bright);
}
.explore-card--gold .icon-bubble--history .aiedi-icon--about-history {
  width: 2.35rem;
  height: 2.35rem;
  stroke-width: 2.05;
}

/* Feedback visual real de las flechas de Equipo/Historia.
   La tarjeta completa sigue siendo el enlace; la flecha reacciona al hover,
   foco de teclado y pulsación sin añadir controles falsos. */
.explore-card {
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.explore-card .circle-link {
  transition: transform .2s ease, background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.explore-card .circle-link .aiedi-icon {
  transition: transform .2s ease;
}
.explore-card--blue .circle-link {
  color: var(--aiedi-blue);
  border-color: var(--aiedi-blue);
}
.explore-card--gold .circle-link {
  color: var(--aiedi-orange-bright);
  border-color: var(--aiedi-orange-bright);
}
.explore-card:hover,
.explore-card:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 14px 30px rgba(9, 48, 111, .12);
}
.explore-card--blue:hover .circle-link,
.explore-card--blue:focus-visible .circle-link {
  color: #fff;
  background: var(--aiedi-blue);
  border-color: var(--aiedi-blue);
  transform: translateX(3px);
}
.explore-card--gold:hover .circle-link,
.explore-card--gold:focus-visible .circle-link {
  color: #fff;
  background: var(--aiedi-orange-bright);
  border-color: var(--aiedi-orange-bright);
  transform: translateX(3px);
}
.explore-card:hover .circle-link .aiedi-icon,
.explore-card:focus-visible .circle-link .aiedi-icon {
  transform: translateX(2px);
}
.explore-card:active .circle-link {
  transform: translateX(3px) scale(.92);
}

/* Los botones del carrusel también ofrecen respuesta inmediata al pulsarlos. */
.scroller-button:not(:disabled) {
  transition: transform .16s ease, background-color .16s ease, color .16s ease, border-color .16s ease;
}
.scroller-button:not(:disabled):active {
  transform: scale(.9);
}
.scroller-button:not(:disabled):hover .aiedi-icon,
.scroller-button:not(:disabled):focus-visible .aiedi-icon {
  transform: translateX(1px);
}
.scroller-button[data-direction="prev"]:not(:disabled):hover .aiedi-icon,
.scroller-button[data-direction="prev"]:not(:disabled):focus-visible .aiedi-icon {
  transform: translateX(-1px);
}
.section--testimonials { padding-top: 3rem; }
.testimonial-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.testimonial-card { margin: 0; min-height: 320px; display: flex; flex-direction: column; padding: 1.8rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); background: #fff; box-shadow: var(--aiedi-shadow-soft); }
.testimonial-card__quote { color: var(--aiedi-logo-blue); }
.testimonial-card blockquote { margin: .5rem 0 1.5rem; flex: 1; color: var(--aiedi-muted); }
.testimonial-card figcaption { display: flex; align-items: center; gap: .9rem; }
.testimonial-card__avatar { width: 54px; height: 54px; border-radius: 50%; object-fit: cover; }
.testimonial-card figcaption span { display: flex; flex-direction: column; }
.testimonial-card figcaption strong { color: var(--aiedi-navy); }
.testimonial-card figcaption small { color: var(--aiedi-blue-dark); line-height: 1.35; }

/* Timeline */
.section--timeline { padding-top: 2rem; }
.timeline { position: relative; max-width: 830px; margin: 0 auto; padding: 1rem 0; list-style: none; }
.timeline::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 2px; transform: translateX(-50%); background: repeating-linear-gradient(to bottom, #9eb8e8 0 5px, transparent 5px 10px); }
.timeline__item { position: relative; display: grid; grid-template-columns: 1fr 90px 1fr; min-height: 210px; align-items: center; }
.timeline__item--left .timeline__card { grid-column: 1; }
.timeline__item--right .timeline__card { grid-column: 3; }
.timeline__marker { grid-column: 2; grid-row: 1; z-index: 2; display: inline-flex; align-items: center; justify-content: center; justify-self: center; width: 72px; height: 72px; border: 2px solid #ffb000; border-radius: 50%; color: var(--aiedi-blue); background: #fff; box-shadow: var(--aiedi-shadow-soft); }
.timeline__marker .aiedi-icon { width: 2rem; height: 2rem; }
.timeline__card { padding: 1.6rem 1.8rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius-sm); background: #fff; box-shadow: var(--aiedi-shadow-soft); }
.timeline__year { display: block; color: var(--aiedi-blue); font-size: 1.85rem; font-weight: 800; line-height: 1; }
.timeline__card .title-accent { margin: .75rem 0; width: 1.6rem; height: .14rem; }
.timeline__card h3 { margin-bottom: .45rem; }
.timeline__card p { color: var(--aiedi-muted); margin-bottom: 0; font-size: .92rem; }
.purpose-card { display: grid; grid-template-columns: auto 1fr; gap: 1.8rem; align-items: center; padding: 2.2rem 3rem; border: 1px solid #f4dfbd; border-radius: var(--aiedi-radius); background: linear-gradient(135deg, var(--aiedi-cream), #fff); }
.purpose-card p { color: var(--aiedi-muted); margin-bottom: 0; }
.purpose-card .title-accent { margin: .65rem 0 1rem; }

/* Team */
.section--team { padding-top: 2rem; }
.team-groups { display: flex; flex-direction: column; gap: 1rem; }
.team-group { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 2rem; padding: 2.25rem 0; border-bottom: 1px solid var(--aiedi-border); }
.team-group__intro h2 { margin: 1.2rem 0 .6rem; }
.team-group__intro .icon-bubble .aiedi-icon--team { width: 2.15rem; height: 2.15rem; }
.team-group__intro p { color: var(--aiedi-muted); font-size: .9rem; margin-top: 1rem; }
.team-group__content { min-width: 0; overflow: hidden; }
/* Carrusel de Equipo: cuatro tarjetas completas en escritorio. Las siguientes quedan fuera del viewport hasta usar las flechas. */
.team-scroller {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 3rem) / 4);
  gap: 1rem;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-inline: contain;
  scroll-snap-type: inline mandatory;
  scroll-padding-inline: 0;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding: .35rem 0 1rem;
}
.team-scroller::-webkit-scrollbar { display: none; }
.team-card { scroll-snap-align: start; scroll-snap-stop: always; min-width: 0; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius-sm); background: #fff; overflow: hidden; box-shadow: var(--aiedi-shadow-soft); }
.team-card__image { width: 100%; aspect-ratio: 1.15 / 1; object-fit: cover; background: #edf0f5; }
.team-card__content { padding: 1rem; }
.team-card__content h3 { font-size: 1rem; margin-bottom: .25rem; }
.team-card__content p { color: var(--aiedi-blue); font-size: .84rem; font-weight: 700; margin: 0; }
.scroller-controls { display: flex; justify-content: flex-end; gap: .75rem; padding-top: .6rem; border-top: 3px solid #d6dce6; position: relative; --team-progress-left: 0%; }
.scroller-controls::before {
  content: "";
  position: absolute;
  top: -3px;
  left: var(--team-progress-left, 0%);
  width: 20%;
  height: 3px;
  background: var(--aiedi-orange-bright);
  transition: left .24s ease;
}
@media (prefers-reduced-motion: reduce) {
  .scroller-controls::before { transition: none; }
}

/* Services */
.section--services { padding-top: 2.5rem; }
.services-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 1.5rem; }
.service-card { position: relative; flex: 0 1 calc(33.333% - 1rem); min-width: 280px; min-height: 360px; padding: 2rem; text-align: center; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); background: #fff; box-shadow: var(--aiedi-shadow-soft); transition: transform .18s ease, box-shadow .18s ease; }
.service-card:hover { transform: translateY(-4px); box-shadow: var(--aiedi-shadow); }
.service-card__icon { display: inline-flex; align-items: center; justify-content: center; width: 5.4rem; height: 5.4rem; color: var(--aiedi-blue); background: var(--aiedi-ice); border-radius: 50%; }
.service-card__icon .aiedi-icon { width: 2.9rem; height: 2.9rem; }
.service-card .title-accent { width: 1.8rem; margin: 1rem auto; }
.service-card h3 { font-size: 1.25rem; }
.service-card p { color: var(--aiedi-muted); font-size: .94rem; }
.service-card__link { position: absolute; inset: 0; border-radius: inherit; }

/* Research landing */
.section--research-cards { padding-top: 3rem; }
.research-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.research-card { border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); background: #fff; overflow: hidden; box-shadow: var(--aiedi-shadow-soft); }
.research-card__image-wrap { position: relative; padding: .8rem .8rem 0; }
.research-card__media {
  position: relative;
  overflow: hidden;
  aspect-ratio: 1.48 / 1;
  border-radius: .9rem;
  background: #f6f9ff;
}
.research-card__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 0;
  border-radius: 0;
  transform: scale(1.4);
  transform-origin: 50% 0;
}
.research-card__icon {
  position: absolute;
  z-index: 3;
  left: 1.28rem;
  bottom: -1.38rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border: 1.5px solid var(--aiedi-orange-bright);
  border-radius: 50%;
  color: var(--aiedi-blue);
  background: #fff;
  box-shadow: 0 0 0 2px #fff;
}
.research-card__icon .aiedi-icon {
  width: 32px;
  height: 32px;
  stroke-width: 1.9;
}
.research-card__body { padding: 1.95rem 1.6rem 1.7rem; }
.research-card__body h3 { font-size: 1.4rem; }
.research-card__body p { color: var(--aiedi-muted); }

/* Contact and forms */
.section--contact-details { padding: 0 0 2.5rem; margin-top: -2rem; }
.contact-details-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.contact-detail { display: grid; grid-template-columns: auto 1fr; gap: 1rem; padding: 1.25rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius-sm); background: #fff; box-shadow: var(--aiedi-shadow-soft); }
.contact-detail .icon-bubble { width: 3rem; height: 3rem; flex-basis: 3rem; }
.contact-detail .icon-bubble .aiedi-icon { width: 1.45rem; height: 1.45rem; }
.contact-detail strong { color: var(--aiedi-navy); }
.contact-detail p { margin: .2rem 0 0; color: var(--aiedi-muted); }
.contact-layout { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(280px, .85fr); gap: 1.5rem; align-items: start; }
.form-card, .sidebar-card, .legal-sections, .publication-directory { border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); background: #fff; box-shadow: var(--aiedi-shadow-soft); }
.form-card { padding: clamp(1.3rem, 3vw, 2.2rem); }
.form-card--large { min-width: 0; }
.contact-sidebar, .legal-sidebar, .filter-sidebar, .article-sidebar { display: flex; flex-direction: column; gap: 1rem; }
.sidebar-card { padding: 1.6rem; }
.sidebar-card--soft { background: linear-gradient(135deg, #fff, var(--aiedi-ice)); }
.sidebar-card--cream { background: linear-gradient(135deg, #fff, var(--aiedi-cream)); }
.sidebar-card h2, .sidebar-card h3 { font-size: 1.25rem; }
.sidebar-card p { color: var(--aiedi-muted); }
.schedule-card, .update-card { display: grid; grid-template-columns: auto 1fr; gap: 1rem; align-items: center; }
.social-links { display: flex; flex-wrap: wrap; gap: .65rem; list-style: none; margin: 1rem 0 0; padding: 0; }
.social-links a, .social-links button { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1.5px solid #79a5fb; border-radius: 50%; color: var(--aiedi-blue); background: #fff; cursor: pointer; text-decoration: none; }
.social-links a:hover, .social-links button:hover { color: #fff; background: var(--aiedi-blue); }
.social-links--large a, .social-links--large button { width: 48px; height: 48px; }
.x-icon { font-size: 1rem; font-weight: 850; }
.notice-card { padding: 1.5rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius-sm); background: var(--aiedi-ice); }

.aiedi-form { margin-top: 1.25rem; }
.aiedi-form fieldset { min-width: 0; margin: 0 0 1.3rem; padding: 0; border: 0; }
.aiedi-form legend { width: 100%; margin-bottom: 1rem; color: var(--aiedi-navy); font-size: 1.15rem; font-weight: 760; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.2rem; }
.form-grid--single { grid-template-columns: 1fr; }
.form-field { min-width: 0; }
.form-field--full { grid-column: 1 / -1; }
.form-field label, .filter-form label { display: block; margin-bottom: .4rem; color: var(--aiedi-navy); font-size: .86rem; font-weight: 700; }
.required { color: var(--aiedi-error); }
.aiedi-form input[type="text"], .aiedi-form input[type="email"], .aiedi-form input[type="tel"], .aiedi-form input[type="date"], .aiedi-form select, .aiedi-form textarea, .publication-search input, .filter-form select, .search-form input[type="search"] {
  width: 100%;
  min-height: 48px;
  padding: .75rem .9rem;
  color: var(--aiedi-text);
  background: #fff;
  border: 1px solid #73809a;
  border-radius: .55rem;
}
.aiedi-form textarea { min-height: 150px; resize: vertical; }
.aiedi-form input::placeholder, .aiedi-form textarea::placeholder, .publication-search input::placeholder, .search-form input::placeholder { color: #66758f; opacity: 1; }
.form-help, .file-help { display: block; margin-top: .35rem; color: var(--aiedi-muted); font-size: .78rem; }
.form-checkbox { display: grid; grid-template-columns: auto 1fr; align-items: start; gap: .7rem; margin: 1rem 0; }
.form-checkbox input { width: 24px; height: 24px; min-width: 24px; min-height: 24px; margin-top: .15rem; }
.form-actions { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; margin-top: 1.25rem; }
.form-error { display: block; margin-top: .35rem; color: var(--aiedi-error); font-size: .82rem; font-weight: 650; }
[aria-invalid="true"] { border-color: var(--aiedi-error) !important; }
.form-error-summary, .form-success { margin-bottom: 1.25rem; padding: 1rem 1.2rem; border-left: 4px solid; border-radius: .5rem; }
.form-error-summary { color: #6e1020; border-color: var(--aiedi-error); background: #fff1f3; }
.form-success { color: #0c542c; border-color: var(--aiedi-success); background: #effaf3; }
.form-error-summary h3, .form-success h3 { color: inherit; font-size: 1rem; margin-bottom: .35rem; }
.form-error-summary ul { margin-bottom: 0; }
.aiedi-honeypot { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.file-upload { padding: 1rem; text-align: center; border: 1px dashed var(--aiedi-border-strong); border-radius: .65rem; background: #fbfcff; }
.file-upload input { max-width: 100%; }

/* Claims */
.claims-layout { display: grid; grid-template-columns: minmax(260px, .78fr) minmax(0, 1.9fr); gap: 1.5rem; align-items: start; }
.claims-guide { display: flex; flex-direction: column; gap: 1rem; }
.steps-list { list-style: none; margin: 1.4rem 0 0; padding: 0; }
.steps-list li { display: grid; grid-template-columns: auto 1fr; gap: .9rem; margin-bottom: 1.2rem; }
.steps-list .icon-bubble { width: 3.15rem; height: 3.15rem; flex-basis: 3.15rem; }
.steps-list .icon-bubble .aiedi-icon { width: 1.5rem; height: 1.5rem; }
.steps-list h3 { font-size: .95rem; margin-bottom: .25rem; }
.steps-list p { font-size: .82rem; margin-bottom: 0; }
.contact-strip { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding: 1.5rem 2rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); background: linear-gradient(135deg, #fff, var(--aiedi-ice)); }
.contact-strip__message { display: flex; align-items: center; gap: 1rem; }
.contact-strip__message p { max-width: 650px; margin: 0; color: var(--aiedi-navy); font-size: 1.1rem; }
.contact-strip__links { display: flex; flex-direction: column; gap: .4rem; }
.contact-strip__links a, .inline-contact a { display: inline-flex; align-items: center; gap: .5rem; text-decoration: none; font-weight: 650; }

/* Libro de reclamaciones: iconografia y franja de contacto compactas. */
.section--claims .steps-list .icon-bubble,
.section--claims .sidebar-card--cream .icon-bubble,
.contact-strip--claims .icon-bubble {
  color: var(--aiedi-blue);
  background: #edf4ff;
  border: 1px solid #dce8fb;
}
.section--claims .steps-list .icon-bubble .aiedi-icon,
.section--claims .sidebar-card--cream .icon-bubble .aiedi-icon,
.contact-strip--claims .icon-bubble .aiedi-icon {
  width: 1.65rem;
  height: 1.65rem;
  stroke-width: 1.75;
}
.section--claims .sidebar-card--cream .icon-bubble {
  width: 3.25rem;
  height: 3.25rem;
}
.section--claims .claims-help-card > .icon-bubble {
  margin-bottom: 1rem;
}
.section--claims .claims-help-card > h2 {
  margin-top: 0;
}
.site-main .container.contact-strip--claims {
  width: min(calc(100% - (2 * var(--aiedi-shell-gutter))), 1240px);
  max-width: 1240px;
  padding-inline: clamp(1.25rem, 2.4vw, 2rem);
}
.contact-strip--claims {
  display: grid;
  grid-template-columns: minmax(0, 680px) minmax(220px, 280px);
  justify-content: center;
  align-items: center;
  column-gap: clamp(1.25rem, 2.5vw, 2.25rem);
  row-gap: 1rem;
}
.contact-strip--claims .contact-strip__message {
  min-width: 0;
  gap: .9rem;
}
.contact-strip--claims .contact-strip__message p {
  max-width: 610px;
}
.contact-strip--claims .contact-strip__links {
  min-width: 0;
  padding-left: clamp(1rem, 1.8vw, 1.5rem);
  border-left: 1px solid var(--aiedi-border);
}
.contact-strip--claims .contact-strip__links .aiedi-icon {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--aiedi-blue);
}

/* Legal and accessibility */
.legal-layout { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(280px, .82fr); gap: 1.5rem; align-items: start; }
.legal-sections { padding: 0 1.3rem; }
.legal-section { display: grid; grid-template-columns: auto 1fr; gap: 1.2rem; padding: 1.5rem 0; border-bottom: 1px solid var(--aiedi-border); }
.legal-section:last-child { border-bottom: 0; }
.legal-section .icon-bubble { width: 3.5rem; height: 3.5rem; flex-basis: 3.5rem; }
.legal-section .icon-bubble .aiedi-icon { width: 1.7rem; height: 1.7rem; }
.legal-section h2 { font-size: 1.15rem; margin-bottom: .4rem; }
.legal-section p { color: var(--aiedi-muted); margin-bottom: 0; }
.quick-links ol { list-style: none; margin: 1rem 0 0; padding: 0; }
.quick-links a { display: grid; grid-template-columns: auto 1fr; gap: .65rem; align-items: center; min-height: 42px; padding: .35rem; color: var(--aiedi-text); text-decoration: none; border-radius: .4rem; }
.quick-links a:hover { color: var(--aiedi-blue); background: var(--aiedi-ice); }
.quick-links .aiedi-icon { color: var(--aiedi-blue); }
.accessibility-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.accessibility-card { display: grid; grid-template-columns: auto 1fr; gap: 1.3rem; padding: 2rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); background: #fff; box-shadow: var(--aiedi-shadow-soft); }
.accessibility-card h2 { font-size: 1.25rem; }
.accessibility-card .title-accent { width: 1.8rem; margin: .5rem 0 1rem; }
.accessibility-card p, .accessibility-card li { color: var(--aiedi-muted); font-size: .92rem; }
.section--accessibility .accessibility-card .icon-bubble {
  color: var(--aiedi-blue);
  background: #edf4ff;
  border: 1px solid #dce8fb;
}
.section--accessibility .accessibility-card .aiedi-icon--accessibility {
  width: 2rem;
  height: 2rem;
  stroke-width: 1.7;
}
.check-list { list-style: none; padding: 0; margin: 0; }
.check-list li { position: relative; padding-left: 1.5rem; margin-bottom: .45rem; }
.check-list li::before { content: "✓"; position: absolute; left: 0; color: var(--aiedi-blue); font-weight: 800; }
.inline-contact { display: flex; flex-wrap: wrap; gap: 1rem; }

/* Publication directory */
.section--publication-directory { padding-top: 1rem; }
.publication-directory { padding: 0; overflow: hidden; }
.publication-tabs { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--aiedi-border); }
.publication-tab { position: relative; display: flex; align-items: center; gap: .8rem; min-height: 76px; padding: 1rem 1.4rem; color: var(--aiedi-navy); text-decoration: none; border-right: 1px solid var(--aiedi-border); }
.publication-tab:last-child { border-right: 0; }
.publication-tab .aiedi-icon { color: var(--aiedi-blue); }
.publication-tab span { font-size: .86rem; font-weight: 700; }
.publication-tab.is-current { color: var(--aiedi-blue-dark); background: #fbfdff; }
.publication-tab.is-current::after { content: ""; position: absolute; left: 1.4rem; right: 1.4rem; bottom: 0; height: 3px; background: var(--aiedi-blue); }
.publication-directory__intro { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 1.6rem 1.2rem .6rem; }
.publication-directory__intro h2 { font-size: 1rem; margin: 0; }
.publication-search { display: flex; align-items: center; width: min(100%, 300px); }
.publication-search input { border-radius: .55rem 0 0 .55rem; border-right: 0; }
.publication-search button { display: inline-flex; align-items: center; justify-content: center; width: 48px; min-width: 48px; height: 48px; border: 1px solid #73809a; border-left: 0; border-radius: 0 .55rem .55rem 0; color: var(--aiedi-blue); background: #fff; cursor: pointer; }
.publication-layout { display: grid; grid-template-columns: minmax(0, 1fr) 285px; gap: 1.5rem; padding: 1rem 1.2rem 1.4rem; }
.publication-list { display: flex; flex-direction: column; gap: .8rem; }
.publication-card { border: 1px solid var(--aiedi-border); border-radius: .8rem; background: #fff; overflow: hidden; }
.publication-card--row { display: grid; grid-template-columns: 160px 1fr; min-height: 160px; }
.publication-card__image { display: block; min-height: 100%; background: var(--aiedi-ice); overflow: hidden; }
.publication-card__img { width: 100%; height: 100%; object-fit: cover; }
.publication-card__img--contain { object-fit: contain; object-position: center; background: #fff; padding: .35rem; }
.publication-card__content { position: relative; padding: 1rem 1.2rem; }
.publication-card__title { font-size: 1.12rem; margin: .45rem 0; padding-right: 7rem; }
.publication-card__title a { color: var(--aiedi-navy); text-decoration: none; }
.publication-card__title a:hover { color: var(--aiedi-blue); }
.publication-card__meta { display: flex; flex-wrap: wrap; gap: .8rem; color: var(--aiedi-muted); font-size: .76rem; }
.publication-card__meta span { display: inline-flex; align-items: center; gap: .35rem; }
.publication-card__content > p { color: var(--aiedi-muted); font-size: .83rem; margin: .55rem 0 0; }
.publication-card__content > .text-link { position: absolute; right: 1rem; bottom: 1rem; min-height: 42px; padding: .3rem .7rem; border: 1px solid var(--aiedi-border); border-radius: 999px; font-size: .8rem; }
.filter-form { display: flex; flex-direction: column; }
.filter-form select { margin-bottom: 1rem; }
.filter-form .aiedi-button { width: 100%; border: 0; }
.filter-reset { display: inline-flex; justify-content: center; min-height: 42px; align-items: center; margin-top: .4rem; font-size: .82rem; text-decoration: none; }
.categories-card ul { list-style: none; margin: 1rem 0 0; padding: 0; }
.categories-card a { display: grid; grid-template-columns: auto 1fr auto; gap: .5rem; align-items: center; min-height: 38px; color: var(--aiedi-text); font-size: .8rem; text-decoration: none; }
.categories-card a:hover { color: var(--aiedi-blue); }
.categories-card .aiedi-icon { color: var(--aiedi-blue); width: 1rem; height: 1rem; }
.categories-card strong { color: var(--aiedi-muted); font-size: .75rem; }
.collaborate-card .icon-bubble { margin-bottom: .8rem; }
.pagination { margin-top: 1.5rem; }
.pagination .page-numbers, .pagination ul { display: flex; flex-wrap: wrap; justify-content: center; gap: .45rem; list-style: none; margin: 0; padding: 0; }
.pagination a, .pagination span.page-numbers, .pagination .page-numbers li > span { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; min-height: 40px; padding: .25rem .5rem; border: 1px solid var(--aiedi-border); border-radius: .45rem; text-decoration: none; }
.pagination .current { color: #fff; background: var(--aiedi-blue); border-color: var(--aiedi-blue); }

/* Single publication */
.single-publication { padding-top: 1rem; }
.article-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 2rem; align-items: start; }
.article-header { padding-bottom: 1.5rem; border-bottom: 1px solid var(--aiedi-border); }
.article-header h1 { font-size: clamp(2.2rem, 4.5vw, 4rem); max-width: 820px; }
.article-meta { display: flex; flex-wrap: wrap; gap: 1rem; color: var(--aiedi-muted); font-size: .84rem; }
.article-meta span, .article-meta time { display: inline-flex; align-items: center; gap: .4rem; }
.article-meta .aiedi-icon { color: var(--aiedi-blue); }
.article-lead { margin: 1.5rem 0 0; color: var(--aiedi-muted); font-size: 1.12rem; }
.article-featured-image { margin: 1.5rem 0; }
.article-featured-image__img { display: block; width: 100%; height: auto; max-height: none; object-fit: contain; border-radius: var(--aiedi-radius); }
.article-featured-image__credit { margin-top: .65rem; color: var(--aiedi-text-soft); font-size: .86rem; line-height: 1.5; }
.article-featured-image__credit span { font-weight: 700; color: var(--aiedi-navy); margin-right: .25rem; }
.article-featured-image__credit a { color: var(--aiedi-blue-dark); text-decoration: underline; text-underline-offset: 2px; }
.content-prose { color: var(--aiedi-text); font-size: 1.04rem; }
.content-prose > * { max-width: 780px; margin-inline: auto; }
.content-prose > .alignwide { max-width: min(100%, var(--aiedi-reading-width)); }
.content-prose > .alignfull { max-width: none; }
.content-prose h2 { margin-top: 2.2rem; font-size: 1.55rem; }
.content-prose h3 { margin-top: 1.8rem; }
.content-prose p, .content-prose li { color: #33405e; }
.content-prose a { font-weight: 650; }
.content-prose blockquote { margin: 2rem auto; padding: 1.2rem 1.5rem; border-left: 4px solid var(--aiedi-orange-bright); background: var(--aiedi-cream); }
.content-prose table { width: 100%; border-collapse: collapse; overflow-x: auto; display: block; }
.content-prose th, .content-prose td { padding: .75rem; border: 1px solid var(--aiedi-border); text-align: left; }
.citation-box { display: grid; grid-template-columns: auto 1fr auto; gap: 1rem; align-items: center; margin-top: 2rem; padding: 1.3rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius-sm); background: linear-gradient(135deg, #fff, var(--aiedi-ice)); }
.citation-box h2 { font-size: .9rem; margin: 0 0 .25rem; }
.citation-box p { margin: 0; color: var(--aiedi-muted); font-size: .82rem; }
.author-card { text-align: left; }
.author-card__image { width: 84px; height: 84px; margin: .5rem 0 1rem; border-radius: 50%; object-fit: cover; }
.author-card h3 { margin-bottom: .25rem; }
.author-card__role { color: var(--aiedi-blue) !important; font-weight: 700; }
.related-card ul { list-style: none; margin: 1rem 0; padding: 0; }
.related-card li { margin-bottom: .9rem; }
.related-card li a { display: grid; grid-template-columns: 76px 1fr; gap: .75rem; color: var(--aiedi-navy); text-decoration: none; }
.related-card__image { width: 76px; height: 68px; border-radius: .55rem; object-fit: cover; }
.related-card strong { display: block; font-size: .8rem; line-height: 1.35; }
.related-card small { color: var(--aiedi-muted); }
.copy-status { min-height: 1.5rem; margin: .5rem 0 0; color: var(--aiedi-success) !important; font-size: .78rem; }
.post-navigation { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 2.5rem 0; padding-top: 1.5rem; border-top: 1px solid var(--aiedi-border); }
.post-navigation > div:last-child { text-align: right; }
.post-navigation a { display: inline-flex; flex-direction: column; color: var(--aiedi-blue); text-decoration: none; font-size: .82rem; }
.post-navigation span { color: var(--aiedi-navy); font-weight: 700; }

/* CTA and footer */
.cta-section { padding: 0; }
.cta-section .container { padding-right: 0; }
.cta-banner { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 2rem; min-height: 150px; padding: 2rem 3rem; border-radius: var(--aiedi-radius-lg) var(--aiedi-radius-lg) 0 0; background: linear-gradient(110deg, var(--aiedi-cream), #fff 55%, var(--aiedi-ice)); overflow: hidden; }
.cta-banner::after { content: ""; position: absolute; right: -2rem; bottom: -5rem; width: 17rem; height: 12rem; border-radius: 60% 0 0 0; background: linear-gradient(135deg, var(--aiedi-blue), #003ead); transform: rotate(-8deg); }
.cta-banner__message { position: relative; z-index: 2; display: flex; align-items: center; gap: 1.4rem; }
.cta-banner__icon { display: inline-flex; align-items: center; justify-content: center; color: var(--aiedi-blue); }
.cta-banner__icon .aiedi-icon { width: 3.5rem; height: 3.5rem; }
.cta-banner h2 { max-width: 580px; margin: 0; font-size: clamp(1.55rem, 2.6vw, 2.25rem); }
.cta-banner > .aiedi-button { position: relative; z-index: 3; margin-right: 7rem; }
.site-footer { position: relative; width: 100%; padding: clamp(2.25rem, 3vw, 3rem) 0 clamp(1.5rem, 2.5vw, 2rem); background: #fff; overflow: hidden; border-top: 1px solid #edf1f6; }
.site-footer::after { content: ""; position: absolute; right: -4rem; bottom: -8rem; width: 16rem; height: 16rem; border-radius: 50%; background: var(--aiedi-blue); }
.site-footer__grid { position: relative; z-index: 2; display: grid; gap: clamp(1.25rem, 2.2vw, 3rem); align-items: start; }
.site-footer__grid--with-social { grid-template-columns: minmax(220px, 1.35fr) minmax(125px, .7fr) minmax(175px, .9fr) minmax(250px, 1.15fr) minmax(150px, .75fr); }
.site-footer__grid--without-social { grid-template-columns: minmax(240px, 1.4fr) minmax(135px, .72fr) minmax(190px, .95fr) minmax(280px, 1.25fr); }
@media (min-width: 1121px) {
  .site-footer__grid > :last-child { justify-self: end; }
}
.site-footer__brand img { width: 145px; }
.site-footer__brand p { max-width: 270px; color: var(--aiedi-muted); font-size: .82rem; }
.site-footer__copyright { color: var(--aiedi-navy) !important; font-size: .75rem !important; }
.site-footer__heading { color: var(--aiedi-blue); font-size: .85rem; letter-spacing: 0; }
.footer-menu, .footer-contact-list { list-style: none; margin: 0; padding: 0; }
.footer-menu li { margin-bottom: .35rem; }
.footer-menu a { color: var(--aiedi-text); font-size: .82rem; text-decoration: none; }
.footer-menu a:hover { color: var(--aiedi-blue); text-decoration: underline; }
.footer-contact-list li { display: grid; grid-template-columns: auto 1fr; gap: .55rem; margin-bottom: .55rem; color: var(--aiedi-muted); font-size: .78rem; }
.footer-contact-list .aiedi-icon { color: var(--aiedi-blue); width: 1rem; height: 1rem; margin-top: .12rem; }
.footer-contact-list a { color: inherit; text-decoration: none; }
.site-footer .social-links { margin-top: 0; }

/* Generic WordPress content */
.generic-shell { padding-top: 2rem; padding-bottom: 5rem; }
.generic-shell--narrow { max-width: none; }
.generic-entry__header, .archive-header { max-width: min(100%, 980px); margin-bottom: 2rem; }
.generic-entry__image { margin: 0 0 2rem; }
.generic-entry__image img { width: 100%; border-radius: var(--aiedi-radius); }
.post-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.post-card { border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius); overflow: hidden; background: #fff; box-shadow: var(--aiedi-shadow-soft); }
.post-card__image { display: block; aspect-ratio: 1.5/1; overflow: hidden; }
.post-card__image img { width: 100%; height: 100%; object-fit: cover; }
.post-card__body { padding: 1.4rem; }
.post-card__body time { color: var(--aiedi-muted); font-size: .78rem; }
.post-card__body h2 { font-size: 1.25rem; margin-top: .4rem; }
.post-card__body h2 a { color: var(--aiedi-navy); text-decoration: none; }
.post-card__body p { color: var(--aiedi-muted); }
.search-results-list { display: flex; flex-direction: column; gap: 1rem; }
.search-result { padding: 1.5rem; border: 1px solid var(--aiedi-border); border-radius: var(--aiedi-radius-sm); }
.search-result h2 { font-size: 1.35rem; }
.search-result h2 a { color: var(--aiedi-navy); text-decoration: none; }
.empty-state, .error-page__inner { max-width: 650px; margin: 0 auto; padding: 4rem 1rem; text-align: center; }
.empty-state .icon-bubble { margin-bottom: 1rem; }
.error-page__code { display: block; color: var(--aiedi-blue); font-size: clamp(5rem, 18vw, 10rem); font-weight: 850; line-height: .9; }
.comments-area { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--aiedi-border); }
.comment-list { padding-left: 1.5rem; }
.comment-body { margin-bottom: 1.5rem; padding: 1rem; border: 1px solid var(--aiedi-border); border-radius: .75rem; }

/* Editor-added content section */
.section--editor-content { background: #fbfdff; }
.section--editor-content .content-prose { width: 100%; max-width: none; margin-inline: auto; }

/* Responsive */
@media (max-width: 1120px) {
  :root { --aiedi-header-height: 5.5rem; }
  .site-branding img, .custom-logo { max-width: 150px; max-height: 64px; }
  .menu-toggle { display: inline-flex; }
  .site-header__navigation {
    position: fixed;
    inset: var(--aiedi-header-height) 0 auto 0;
    display: none;
    max-height: calc(100vh - var(--aiedi-header-height));
    overflow-y: auto;
    margin: 0;
    padding: 1rem;
    flex-direction: column;
    align-items: stretch;
    background: #fff;
    border-top: 1px solid var(--aiedi-border);
    box-shadow: var(--aiedi-shadow);
  }
  .site-header__navigation.is-open { display: flex; }
  .primary-navigation ul { flex-direction: column; align-items: stretch; gap: .15rem; }
  .primary-navigation a { width: 100%; padding: .65rem .8rem; border-radius: .5rem; }
  .primary-navigation .current-menu-item > a::after, .primary-navigation .current_page_item > a::after { display: none; }
  .primary-navigation .sub-menu { position: static; display: flex; box-shadow: none; border: 0; padding-left: 1.5rem; }
  .site-header__actions { flex-wrap: wrap; justify-content: center; padding-top: .5rem; border-top: 1px solid var(--aiedi-border); }
  .hero__grid { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .knowledge-grid { grid-template-columns: 1.2fr repeat(3, 1fr); }
  .knowledge-grid__intro, .knowledge-item { padding-inline: 1.2rem; }
  /* Tablet footer: keep the institutional footer horizontal at iPad Pro widths.
     The previous three-column layout forced Contacto onto a second row and left
     a large empty area. At 921–1120px every main footer block now remains in a
     single balanced row; narrower tablets continue using the dedicated 2-column
     layout below. */
  .site-footer__grid {
    align-items: start;
    column-gap: clamp(.9rem, 1.8vw, 1.4rem);
    row-gap: 1.25rem;
  }
  .site-footer__grid--without-social {
    grid-template-columns:
      minmax(205px, 1.25fr)
      minmax(100px, .65fr)
      minmax(150px, .92fr)
      minmax(215px, 1.28fr);
  }
  .site-footer__grid--with-social {
    grid-template-columns:
      minmax(190px, 1.15fr)
      minmax(92px, .60fr)
      minmax(135px, .84fr)
      minmax(185px, 1.12fr)
      minmax(104px, .66fr);
  }
  .site-footer__grid > * { min-width: 0; }
  .site-footer__brand { grid-row: auto; grid-column: auto; }
  .site-footer__brand img { width: clamp(118px, 13vw, 140px); }
  .site-footer__brand p { max-width: 235px; font-size: .75rem; line-height: 1.55; }
  .site-footer__heading { margin-bottom: .65rem; font-size: .76rem; }
  .footer-menu a,
  .footer-contact-list li { font-size: .73rem; }
  .footer-contact-list li {
    grid-template-columns: 1rem minmax(0, 1fr);
    gap: .4rem;
    margin-bottom: .42rem;
  }
  .footer-contact-list a,
  .footer-contact-list span { overflow-wrap: anywhere; }
  .site-footer .social-links { gap: .4rem; }
  .site-footer .social-links a,
  .site-footer .social-links button { width: 36px; height: 36px; }
}

@media (min-width: 921px) and (max-width: 1179px) {
  .team-scroller { grid-auto-columns: calc((100% - 2rem) / 3); }
}

@media (max-width: 920px) {
  .hero__grid, .hero--legal .hero__grid, .hero--archive .hero__grid { grid-template-columns: 1fr; }
  .hero__content { max-width: 760px; }
  .hero:not(.hero--legal):not(.hero--archive) .hero__visual { margin-right: 0; }
  .cta-section .container { padding-right: var(--aiedi-shell-gutter); }
  .hero__visual { min-height: 440px; }
  .hero__image-wrap { width: min(100%, 660px); }
  .knowledge-grid { grid-template-columns: 1fr 1fr; }
  .knowledge-grid__intro { grid-column: 1 / -1; border-right: 0; border-bottom: 1px solid var(--aiedi-border); padding-left: 0; }
  .knowledge-item:nth-child(3) { border-right: 0; }
  .section--principles { background: #fff; }
  .principles-grid { grid-template-columns: 1fr 1fr; }
  .principles-intro { grid-column: 1 / -1; margin: 0; padding: 3rem; border-radius: var(--aiedi-radius); }
  .principles-intro::before { display: none; }
  .stats-strip { grid-template-columns: 1fr 1fr; }
  .stat-item:nth-child(2) { border-right: 0; }
  .stat-item:nth-child(-n+2) { border-bottom: 1px solid var(--aiedi-border); padding-bottom: 1.2rem; margin-bottom: 1.2rem; }
  .testimonial-grid, .research-card-grid, .post-grid { grid-template-columns: 1fr 1fr; }
  .service-card { flex-basis: calc(50% - .75rem); }
  .contact-layout, .claims-layout, .legal-layout, .publication-layout, .article-layout { grid-template-columns: 1fr; }
  .contact-sidebar, .filter-sidebar, .article-sidebar { display: grid; grid-template-columns: 1fr 1fr; }
  .legal-sidebar { display: grid; grid-template-columns: 1fr 1fr; }
  .publication-layout { padding-inline: 1rem; }
  .filter-sidebar { grid-template-columns: repeat(3, 1fr); }
  .article-sidebar { grid-template-columns: repeat(2, 1fr); }
  .article-sidebar .share-card { grid-column: 1 / -1; }
  .team-scroller { grid-auto-columns: calc((100% - 2rem) / 3); }
  .team-group { grid-template-columns: 1fr; }
  .team-group__intro { display: grid; grid-template-columns: auto 1fr auto; gap: .8rem; align-items: center; }
  .team-group__intro h2 { margin: 0; }
  .team-group__intro p { grid-column: 1 / -1; margin-top: 0; }
  .team-group__intro .count-pill { grid-column: auto; margin: 0; }
  .cta-banner > .aiedi-button { margin-right: 3rem; }
}

@media (max-width: 720px) {
  .research-card__icon { width: 48px; height: 48px; left: 1.15rem; bottom: -1.2rem; }
  .research-card__icon .aiedi-icon { width: 29px; height: 29px; }
  .research-card__body { padding-top: 1.75rem; }

  .container { width: 100%; padding-inline: clamp(.75rem, 4vw, 1.5rem); }
  .site-header > .container, .site-footer > .container, .site-main .container { padding-inline: clamp(.9rem, 4vw, 1.25rem); }
  .section { padding-block: 3.5rem; }
  .section--stats { padding: 0 0 1.5rem; }
  .section--what-we-do { padding: 2.25rem 0 2.5rem; }
  h1 { font-size: clamp(2.2rem, 11vw, 3.25rem); }
  .hero { padding-top: 1rem; }
  .hero::before { display: none; }
  .hero__visual { min-height: 340px; }
  .hero__dot--one { width: 2.3rem; height: 2.3rem; }
  .hero__actions { flex-direction: column; align-items: stretch; }
  .hero__actions .aiedi-button { width: 100%; }
  .knowledge-grid, .principles-grid, .stats-strip, .mission-grid, .explore-grid, .testimonial-grid, .research-card-grid, .contact-details-grid, .accessibility-grid, .post-grid { grid-template-columns: 1fr; }
  .knowledge-item { border-right: 0; border-bottom: 1px solid var(--aiedi-border); }
  .principle-card { padding: 2.3rem 1.2rem; }
  .stat-item { border-right: 0; border-bottom: 1px solid var(--aiedi-border); padding: 1rem .5rem; margin: 0 !important; }
  .stat-item:last-child { border-bottom: 0; }
  .feature-card, .accessibility-card { grid-template-columns: 1fr; }
  .timeline::before { left: 34px; transform: none; }
  .timeline__item { grid-template-columns: 70px 1fr; min-height: 0; margin-bottom: 1.5rem; }
  .timeline__item--left .timeline__card, .timeline__item--right .timeline__card { grid-column: 2; }
  .timeline__marker { grid-column: 1; width: 58px; height: 58px; }
  .purpose-card { grid-template-columns: 1fr; padding: 1.5rem; }
  .team-group__intro { grid-template-columns: auto 1fr; }
  .team-group__intro .count-pill { grid-column: 2; justify-self: start; }
  .team-scroller { grid-auto-columns: 100%; }
  .service-card { flex-basis: 100%; min-width: 0; }
  .form-grid { grid-template-columns: 1fr; }
  .form-field--full { grid-column: auto; }
  .contact-sidebar, .legal-sidebar, .filter-sidebar, .article-sidebar { grid-template-columns: 1fr; }
  .publication-tabs { grid-template-columns: 1fr; }
  .publication-tab { border-right: 0; border-bottom: 1px solid var(--aiedi-border); }
  .publication-directory__intro { align-items: stretch; flex-direction: column; }
  .publication-search { width: 100%; }
  .publication-card--row { grid-template-columns: 110px 1fr; }
  .publication-card__title { padding-right: 0; font-size: 1rem; }
  .publication-card__content > .text-link { position: static; margin-top: .75rem; }
  .publication-card__content > p { display: none; }
  .citation-box { grid-template-columns: auto 1fr; }
  .citation-box .aiedi-button { grid-column: 1 / -1; }
  .post-navigation { grid-template-columns: 1fr; }
  .post-navigation > div:last-child { text-align: left; }
  .contact-strip, .cta-banner { flex-direction: column; align-items: stretch; padding: 1.5rem; }
  .contact-strip__message { align-items: flex-start; }
  .contact-strip--claims {
    grid-template-columns: 1fr;
    justify-content: stretch;
    gap: 1.25rem;
  }
  .contact-strip--claims .contact-strip__links {
    min-width: 0;
    padding: 1rem 0 0;
    border-left: 0;
    border-top: 1px solid var(--aiedi-border);
  }
  .cta-banner::after { width: 10rem; height: 8rem; }
  .cta-banner__message { align-items: flex-start; }
  .cta-banner > .aiedi-button { margin: 0; align-self: flex-start; }
  .site-footer__grid,
  .site-footer__grid--with-social,
  .site-footer__grid--without-social { grid-template-columns: 1fr 1fr; }
  .site-footer__brand { grid-row: auto; grid-column: 1 / -1; }
  .site-footer__brand p { max-width: 420px; }
  .site-footer__contact { min-width: 0; }
  .footer-contact-list a,
  .footer-contact-list span { overflow-wrap: anywhere; }
}

@media (max-width: 480px) {
  .site-branding img, .custom-logo { max-width: 132px; }
  .site-header__actions { align-items: stretch; flex-direction: column; }
  .language-switcher { align-self: center; }
  .header-action { justify-content: center; }
  .hero__visual { min-height: 285px; }
  .hero__image-wrap { width: 100%; }
  .publication-card--row { grid-template-columns: 1fr; }
  .publication-card__image { aspect-ratio: 1.8 / 1; }
  .site-footer__grid,
  .site-footer__grid--with-social,
  .site-footer__grid--without-social { grid-template-columns: 1fr; }
  .site-footer__brand { grid-column: auto; }
  .site-footer__brand p { max-width: 100%; }
  .cta-banner__message { flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .explore-card, .explore-card .circle-link, .explore-card .circle-link .aiedi-icon, .scroller-button { transition: none !important; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

@media (forced-colors: active) {
  .aiedi-button, .header-action, .circle-link, .social-links a, .social-links button, .icon-bubble { border: 1px solid ButtonText; }
  .title-accent { background: CanvasText; }
}

@media print {
  .site-header, .site-footer, .cta-section, .article-sidebar, .post-navigation, .language-switcher, .menu-toggle { display: none !important; }
  body { color: #000; background: #fff; font-size: 11pt; }
  .container { width: 100%; }
  .article-layout { display: block; }
  a { color: #000; text-decoration: underline; }
  a[href]::after { content: " (" attr(href) ")"; font-size: 8pt; }
  .article-featured-image { max-width: 70%; }
}

/* --------------------------------------------------------------------------
 * Visual fidelity layer — 1.1.0
 * The supplied AIEDI mockups are the binding visual specification. This layer
 * intentionally preserves the fluid, edge-to-edge composition while keeping
 * live HTML, accessible controls and responsive behavior.
 * -------------------------------------------------------------------------- */

:root {
  --aiedi-shell-gutter: clamp(1rem, 2.35vw, 2.85rem);
  --aiedi-header-height: 6rem;
}

@media (min-width: 1121px) {
  body { font-size: .96rem; }
  h1 { font-size: clamp(2.75rem, 3.35vw, 3.75rem); }
  h2 { font-size: clamp(1.75rem, 2.25vw, 2.4rem); }

  .site-header__inner {
    min-height: var(--aiedi-header-height);
    padding-top: .15rem;
    padding-bottom: .15rem;
  }
  .site-branding img,
  .custom-logo {
    max-width: 164px;
    max-height: 70px;
  }
  .site-header__navigation { gap: 1.25rem; }
  .primary-navigation ul { gap: clamp(.8rem, 1.35vw, 1.45rem); }
  .primary-navigation a { font-size: .9rem; }
  .site-header__actions { gap: .7rem; }

  .section { padding: clamp(2.8rem, 4vw, 4.5rem) 0; }
  .section--tight { padding: clamp(2rem, 3vw, 3.25rem) 0; }

  .hero {
    padding: 1rem 0 clamp(2.25rem, 3.2vw, 3.6rem);
    overflow: hidden;
  }
  .hero__grid {
    grid-template-columns: minmax(0, 46%) minmax(0, 54%);
    gap: clamp(.8rem, 1.6vw, 1.75rem);
  }
  .hero__content { max-width: 630px; }
  .hero__description {
    max-width: 520px;
    font-size: 1rem;
    line-height: 1.7;
  }
  .hero__actions { margin-top: 1.65rem; }
  .hero__visual { min-height: clamp(430px, 33vw, 610px); }
  .hero__image-wrap {
    width: 100%;
    aspect-ratio: 1.28 / 1;
    border-radius: 22% 15% 22% 18% / 20% 16% 24% 22%;
    box-shadow: 0 14px 42px rgba(18,45,92,.08);
  }
  .hero__blob--blue { right: -3%; top: 4%; width: 43%; height: 78%; }
  .hero__blob--gold { right: 1%; bottom: 1%; width: 50%; height: 22%; }
  .hero__dot--one { left: 2%; top: 10%; width: 2.75rem; height: 2.75rem; }
  .hero__dot--two { right: 1.5%; bottom: 8%; }

  /* Inicio: exact visual rhythm of the supplied page composition. */
  .home .hero {
    padding-top: .25rem;
    padding-bottom: 0;
  }
  .home .hero .container { padding-right: 0; }
  .home .hero__grid {
    grid-template-columns: minmax(0, 48.5%) minmax(0, 51.5%);
    gap: 0;
    align-items: stretch;
  }
  .home .hero__content {
    max-width: none;
    align-self: center;
    padding: clamp(2.8rem, 4vw, 4.6rem) clamp(1.8rem, 3vw, 3.5rem) clamp(3rem, 4vw, 4.7rem) 0;
  }
  .home .hero h1 {
    max-width: 650px;
    font-size: clamp(3rem, 3.25vw, 3.55rem);
    line-height: 1.08;
  }
  .home .hero .title-accent {
    width: 2.75rem;
    height: .18rem;
    margin: 1.15rem 0 1.7rem;
  }
  .home .hero__description { max-width: 520px; }
  .home .hero__actions { gap: 1.15rem; margin-top: 1.75rem; }
  .home .hero__actions .aiedi-button {
    min-height: 46px;
    padding-inline: 1.2rem;
    font-size: .82rem;
  }
  .home .hero__visual {
    min-height: clamp(500px, 34vw, 650px);
    place-items: stretch;
    margin-right: 0 !important;
  }
  .home .hero__image-wrap {
    align-self: stretch;
    height: 100%;
    min-height: inherit;
    aspect-ratio: auto;
    border-radius: 18% 0 0 20% / 18% 0 0 24%;
    box-shadow: none;
  }
  .home .hero__image { object-position: center center; }
  .home .hero__blob--blue {
    z-index: 2;
    right: -3%;
    top: 7%;
    width: 46%;
    height: 76%;
    border-radius: 54% 0 0 52%;
  }
  .home .hero__blob--gold {
    z-index: 4;
    right: -4%;
    bottom: -7%;
    width: 36%;
    height: 25%;
    border-radius: 56% 0 0 0;
    transform: rotate(-5deg);
  }
  .home .hero__dot--one { left: 1.5%; top: 7%; z-index: 5; }
  .home .hero__dot--two { display: none; }
  .home .hero::after {
    content: "";
    position: absolute;
    left: .1rem;
    bottom: 1.7rem;
    width: 58px;
    height: 58px;
    opacity: .9;
    background-image: radial-gradient(circle, #1c69e8 1.25px, transparent 1.35px);
    background-size: 10px 10px;
    pointer-events: none;
  }

  .section--what-we-do {
    padding: 0 0 clamp(1.4rem, 2.2vw, 2.2rem);
    border-top-color: #e9eef7;
  }
  .knowledge-grid {
    position: relative;
    grid-template-columns: 1.4fr repeat(3, .92fr);
    min-height: 245px;
    align-items: stretch;
  }
  .knowledge-grid__intro,
  .knowledge-item { padding: 2rem clamp(1.25rem, 2vw, 2.1rem); }
  .knowledge-grid__intro {
    position: relative;
    padding-left: 0;
    padding-right: clamp(2rem, 3vw, 3rem);
  }
  .knowledge-grid__intro::before {
    content: "";
    position: absolute;
    left: calc(-1 * var(--aiedi-shell-gutter));
    top: 3.25rem;
    bottom: .1rem;
    width: 2rem;
    border-left: 1.5px solid var(--aiedi-orange-bright);
    border-bottom: 1.5px solid var(--aiedi-orange-bright);
    border-radius: 0 0 0 2.2rem;
    pointer-events: none;
  }
  .knowledge-grid__intro h2 {
    max-width: 390px;
    font-size: clamp(1.75rem, 2.05vw, 2.05rem);
  }
  .knowledge-grid__intro p,
  .knowledge-item p { font-size: .88rem; line-height: 1.65; }
  .knowledge-item__number { font-size: 1.55rem; margin-bottom: .85rem; }
  .knowledge-item h3 { font-size: .96rem; margin-bottom: .75rem; }
  .knowledge-item .circle-link { right: .4rem; bottom: 1.4rem; width: 42px; height: 42px; }

  .section--principles { overflow: visible; }
  .principles-grid {
    position: relative;
    grid-template-columns: 1.35fr repeat(3, 1fr);
    min-height: 300px;
  }
  .principles-intro {
    min-height: 300px;
    padding: 3rem 3rem 3rem 0;
    border-radius: 0 3.5rem 0 0;
  }
  .principles-intro h2 {
    max-width: 380px;
    font-size: clamp(1.9rem, 2.35vw, 2.35rem);
  }
  .principles-intro p { max-width: 390px; font-size: .9rem; }
  .principle-card {
    position: relative;
    z-index: 2;
    min-height: 300px;
    padding: 3rem clamp(1.35rem, 2vw, 2rem) 2rem;
  }
  .principle-card .icon-bubble {
    width: 4.1rem;
    height: 4.1rem;
    flex-basis: 4.1rem;
    box-shadow: 0 0 0 7px #fff;
  }
  .principle-card h3 { margin-top: 1rem; font-size: 1rem; }
  .principle-card p { font-size: .84rem; line-height: 1.55; }
  .principles-connector {
    position: absolute;
    z-index: 1;
    left: 34.2%;
    right: 3.2%;
    top: 2.55rem;
    width: 62.6%;
    height: 6rem;
    overflow: visible;
    pointer-events: none;
  }
  .principles-connector path {
    fill: none;
    stroke: #6d96dc;
    stroke-width: 1.45;
    stroke-linecap: round;
    stroke-dasharray: 1.2 2.2;
    opacity: .85;
  }

  .section--stats { padding: 0 0 clamp(1.4rem, 2vw, 2rem); }
  .stats-strip {
    min-height: 132px;
    padding: 1.25rem 1.1rem;
    border-radius: 1rem;
    box-shadow: 0 8px 22px rgba(18,45,92,.06);
  }
  .stat-item { padding: .45rem clamp(.9rem, 1.6vw, 1.45rem); column-gap: .9rem; align-content: center; }
  .stat-item__icon .aiedi-icon { width: 1.9rem; height: 1.9rem; }
  .stat-item strong { font-size: 1.75rem; }
  .stat-item > span:not(.stat-item__icon) { font-size: .8rem; }
  .stat-item small { font-size: .73rem; }

  .cta-section .container { padding-right: 0; }
  .cta-banner {
    min-height: 145px;
    padding: 1.7rem clamp(2rem, 4vw, 4.5rem);
    border-radius: 2rem 2rem 0 0;
  }
  .cta-banner::before {
    content: "";
    position: absolute;
    left: calc(-1 * var(--aiedi-shell-gutter));
    top: .1rem;
    width: 3.2rem;
    height: 5.7rem;
    border-top: 1.5px solid var(--aiedi-orange-bright);
    border-right: 1.5px solid transparent;
    border-radius: 0 2.4rem 0 0;
    pointer-events: none;
  }
  .cta-banner::after {
    right: -1.5rem;
    bottom: -6rem;
    width: 21rem;
    height: 13.5rem;
    border-radius: 60% 0 0 0;
  }
  .cta-banner__message { gap: 1.3rem; }
  .cta-banner__icon .aiedi-icon { width: 3.25rem; height: 3.25rem; }
  .cta-banner h2 { max-width: 640px; font-size: clamp(1.8rem, 2.3vw, 2.2rem); }
  .cta-banner > .aiedi-button { margin-right: clamp(7rem, 13vw, 14rem); }

  .site-footer {
    padding: 2.4rem 0 1.75rem;
  }
  .site-footer::after {
    right: -5.5rem;
    bottom: -9.5rem;
    width: 18rem;
    height: 18rem;
  }
  .site-footer__grid {
    gap: clamp(1.4rem, 2.3vw, 2.8rem);
    align-items: start;
  }
  .site-footer__brand img { width: 142px; }
  .site-footer__brand p { max-width: 250px; font-size: .78rem; line-height: 1.6; }
  .site-footer__heading { margin-bottom: .8rem; font-size: .8rem; }
  .footer-menu a,
  .footer-contact-list { font-size: .78rem; }

  /* Site-wide fidelity: pages keep the broad horizontal frame shown in the mockups,
     while text blocks retain readable line lengths. */
  .mission-grid,
  .explore-grid,
  .testimonial-grid,
  .accessibility-grid,
  .services-grid,
  .research-card-grid,
  .contact-layout,
  .claims-layout,
  .legal-layout,
  .publication-layout,
  .article-layout,
  .team-groups,
  .timeline,
  .purpose-card {
    width: 100%;
  }
  .feature-card,
  .explore-card,
  .testimonial-card,
  .accessibility-card,
  .service-card,
  .research-card,
  .sidebar-card,
  .form-panel,
  .claims-guide,
  .legal-content,
  .publication-directory {
    box-shadow: 0 8px 24px rgba(18,45,92,.055);
  }
  .hero--legal .hero__grid,
  .hero--archive .hero__grid {
    grid-template-columns: minmax(0, 48%) minmax(0, 52%);
    gap: 1.5rem;
  }
  .hero--legal .hero__visual,
  .hero--archive .hero__visual { min-height: 410px; }
  .hero--legal .hero__image-wrap,
  .hero--archive .hero__image-wrap { width: 100%; }
}

@media (min-width: 1440px) {
  :root { --aiedi-shell-gutter: clamp(1.5rem, 2.4vw, 3.4rem); }
  .home .hero h1 { font-size: 3.5rem; }
  .home .hero__description { font-size: 1rem; }
}

@media (max-width: 1120px) {
  .principles-connector { display: none; }
}

@media (max-width: 920px) {
  .home .hero .container { padding-right: var(--aiedi-shell-gutter); }
  .home .hero__grid { grid-template-columns: 1fr; }
  .home .hero__content { padding: 2rem 0 2.5rem; }
  .home .hero__visual { min-height: 440px; }
  .home .hero__image-wrap {
    min-height: 440px;
    border-radius: 2.2rem;
  }
  .home .hero::after { display: none; }
  .knowledge-grid__intro::before { display: none; }
}

@media (max-width: 720px) {
  :root { --aiedi-shell-gutter: clamp(.95rem, 4vw, 1.25rem); }
  .site-header__inner { min-height: 5.25rem; }
  .home .hero h1 { font-size: clamp(2.35rem, 10.5vw, 3.15rem); }
  .home .hero__actions { flex-direction: column; }
  .home .hero__visual,
  .home .hero__image-wrap { min-height: 315px; }
  .home .hero__image-wrap { height: 315px; }
  .principles-intro { min-height: auto; }
  .cta-section .container { padding-right: var(--aiedi-shell-gutter); }
  .cta-banner { border-radius: 1.5rem; }
}

/* --------------------------------------------------------------------------
 * Home reference fidelity — 1.1.1
 * The supplied INICIO artwork is the visual source of truth for this block.
 * -------------------------------------------------------------------------- */

.home .section--principles {
  margin: 0;
  padding: 0;
  background: #fff;
}

.home .principles-grid {
  position: relative;
  isolation: isolate;
}

.home .principles-intro {
  background: linear-gradient(135deg, #075ed8 0%, #0051c4 56%, #003f9f 100%);
}

.home .principles-intro::before {
  background: #075ed8;
}

.home .principle-card {
  position: relative;
  z-index: 1;
  background: transparent;
}

.home .principle-card .icon-bubble {
  position: relative;
  z-index: 4;
  border: 0;
  box-shadow: 0 0 0 7px #fff;
}

.home .principle-card .icon-bubble--blue {
  color: #075ed8;
  background: #d5e9ff;
}

.home .principle-card .icon-bubble--gold {
  color: #fff;
  background: #ffab00;
}

.home .principle-card .icon-bubble--navy {
  color: #fff;
  background: #0756c7;
}

.home .principle-card .icon-bubble--blue .aiedi-icon,
.home .principle-card .icon-bubble--gold .aiedi-icon,
.home .principle-card .icon-bubble--navy .aiedi-icon {
  width: 2.15rem;
  height: 2.15rem;
  stroke-width: 1.65;
}

.home .principle-card h3 {
  color: #0756c7;
}

.home .principles-connector {
  z-index: 2;
  pointer-events: none;
}

.home .principles-connector path {
  fill: none;
  stroke: #6c95db;
  stroke-width: 1.45;
  stroke-linecap: round;
  stroke-dasharray: 1.15 2.15;
  opacity: .9;
}

.home .section--stats {
  margin-top: 0;
  padding-top: 0;
}

.home .stats-strip {
  background: #f3f8fe;
  border-color: #e1eaf6;
  box-shadow: 0 9px 22px rgba(18,45,92,.045);
}

.home .stat-item__icon,
.home .stat-item strong {
  color: #075ed8;
}

.home .cta-banner--reference {
  background: #fff8f0;
}

.home .cta-banner--reference .cta-banner__message {
  gap: 0;
}

.home .cta-banner--reference .cta-banner__reference-arrow {
  position: relative;
  z-index: 4;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: clamp(-1.2rem, -1vw, -.4rem);
  color: #f0a000;
}

.home .cta-banner--reference .cta-banner__reference-arrow .aiedi-icon {
  width: 2.7rem;
  height: 2.7rem;
  stroke-width: 1.35;
}

.home .cta-banner--reference .cta-banner__reference-dots {
  position: absolute;
  z-index: 3;
  right: 1rem;
  bottom: .65rem;
  width: 4.8rem;
  height: 3.8rem;
  opacity: .9;
  background-image: radial-gradient(circle, rgba(255,255,255,.82) 1.05px, transparent 1.2px);
  background-size: 9px 9px;
  pointer-events: none;
}

@media (min-width: 1121px) {
  .home .principles-grid {
    grid-template-columns: minmax(0, 33.3%) repeat(3, minmax(0, 1fr));
    min-height: 270px;
  }

  .home .principles-intro {
    min-height: 270px;
    padding: 2.6rem clamp(2.15rem, 2.9vw, 3.1rem) 2.35rem 0;
    border-radius: 0 3.35rem 0 0;
  }

  .home .principles-intro h2 {
    max-width: 350px;
    margin-bottom: 1rem;
    font-size: clamp(1.8rem, 2.05vw, 2.15rem);
    line-height: 1.18;
  }

  .home .principles-intro p {
    max-width: 360px;
    margin-bottom: 0;
    font-size: .86rem;
    line-height: 1.62;
  }

  .home .principle-card {
    min-height: 270px;
    padding: 2.25rem clamp(1.4rem, 2.2vw, 2.4rem) 1.75rem;
  }

  .home .principle-card .icon-bubble {
    width: 4.25rem;
    height: 4.25rem;
    flex-basis: 4.25rem;
  }

  .home .principle-card h3 {
    max-width: 180px;
    margin-top: 1rem;
    margin-bottom: .75rem;
    font-size: 1rem;
    line-height: 1.2;
  }

  .home .principle-card p {
    max-width: 220px;
    margin-bottom: 0;
    color: #344568;
    font-size: .8rem;
    line-height: 1.58;
  }

  .home .principles-connector {
    left: 39.8%;
    top: 2.35rem;
    width: 55.2%;
    height: 5.4rem;
  }

  .home .stats-strip {
    width: calc(100% - 11vw);
    min-height: 126px;
    margin: 0 auto;
    padding: 1.2rem 1rem;
    border-radius: .9rem;
  }

  .home .stat-item {
    padding: .35rem clamp(1rem, 1.6vw, 1.5rem);
    column-gap: .85rem;
  }

  .home .stat-item__icon .aiedi-icon {
    width: 2.05rem;
    height: 2.05rem;
    stroke-width: 1.65;
  }

  .home .stat-item strong {
    font-size: 1.8rem;
  }

  .home .stat-item > span:not(.stat-item__icon) {
    font-size: .79rem;
  }

  .home .stat-item small {
    max-width: 205px;
    font-size: .71rem;
    line-height: 1.45;
  }

  .home .cta-banner--reference {
    min-height: 142px;
    padding-left: clamp(5.5rem, 7vw, 7.5rem);
  }

  .home .cta-banner--reference h2 {
    max-width: 525px;
    font-size: clamp(1.85rem, 2.25vw, 2.2rem);
    line-height: 1.08;
  }

  .home .cta-banner--reference > .aiedi-button {
    margin-right: clamp(10rem, 17vw, 18rem);
  }
}

@media (max-width: 1120px) {
  .home .principle-card .icon-bubble--gold {
    color: #fff;
    background: #ffab00;
  }

  .home .principles-connector {
    display: none;
  }

  .home .stats-strip {
    width: calc(100% - (2 * var(--aiedi-shell-gutter)));
    margin-inline: auto;
  }

  .home .cta-banner--reference .cta-banner__reference-arrow {
    display: none;
  }
}

@media (max-width: 720px) {
  .home .stats-strip {
    width: calc(100% - (2 * var(--aiedi-shell-gutter)));
  }

  .home .cta-banner--reference .cta-banner__reference-dots {
    width: 3.5rem;
    height: 2.8rem;
    right: .5rem;
    bottom: .4rem;
  }
}

/* --------------------------------------------------------------------------
 * Home reference fidelity — 1.1.2
 * Source of truth: supplied INICIO(3).jpeg. These rules intentionally override
 * earlier home refinements so decorative geometry never overlaps real content.
 * -------------------------------------------------------------------------- */

.home .principles-grid {
  display: grid;
  grid-template-columns: minmax(280px, 33.333%) minmax(0, 66.667%);
  align-items: stretch;
  min-height: 292px;
  padding-left: var(--aiedi-shell-gutter);
  padding-right: var(--aiedi-shell-gutter);
}

.home .principles-intro {
  min-height: 292px;
  margin-left: calc(-1 * var(--aiedi-shell-gutter));
  padding: 2.7rem clamp(2.25rem, 3.25vw, 3.35rem) 2.4rem var(--aiedi-shell-gutter);
  border-radius: 0 3.55rem 0 0;
  background: linear-gradient(135deg, #075ed8 0%, #0656cd 56%, #0049b8 100%);
}

.home .principles-intro::before { display: none; }
.home .principles-intro .eyebrow--gold {
  /* Small text over the blue gradient: >= 4.5:1 at the lightest blue stop. */
  color: #ffe09a;
  margin-bottom: .95rem;
  font-size: .76rem;
  letter-spacing: .025em;
}
.home .principles-intro h2 {
  max-width: 350px;
  margin: 0 0 1.15rem;
  color: #fff;
  font-size: clamp(1.85rem, 2.15vw, 2.2rem);
  line-height: 1.2;
}
.home .principles-intro > p:last-child {
  max-width: 360px;
  margin: 0;
  color: #fff;
  font-size: .86rem;
  line-height: 1.62;
}

.home .principles-stage {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  min-height: 292px;
  background: #fff;
  isolation: isolate;
}

.home .principles-stage .principle-card {
  position: relative;
  z-index: 2;
  min-height: 292px;
  padding: 2.35rem clamp(1.5rem, 2.4vw, 2.55rem) 1.85rem;
  background: transparent;
}
.home .principles-stage .principle-card .icon-bubble {
  position: relative;
  z-index: 4;
  width: 4.15rem;
  height: 4.15rem;
  flex: 0 0 4.15rem;
  margin: 0 0 1.05rem;
  border: 0;
  box-shadow: 0 0 0 7px #fff;
}
.home .principles-stage .principle-card h3 {
  max-width: 185px;
  margin: 0 0 .8rem;
  color: #0756c7;
  font-size: 1rem;
  line-height: 1.18;
}
.home .principles-stage .principle-card p {
  max-width: 220px;
  margin: 0;
  color: #344568;
  font-size: .79rem;
  line-height: 1.58;
}

.home .principles-stage .principles-connector {
  position: absolute;
  z-index: 1;
  display: block;
  left: 4.8%;
  top: 2.42rem;
  width: 90.4%;
  height: 4.65rem;
  overflow: visible;
  pointer-events: none;
}
.home .principles-stage .principles-connector path {
  fill: none;
  stroke: #78a1e6;
  stroke-width: 1.45;
  stroke-linecap: round;
  stroke-dasharray: 2 7;
  opacity: .92;
  vector-effect: non-scaling-stroke;
}

.home .section--stats {
  margin: 0;
  padding: 0 0 clamp(1.35rem, 2vw, 2rem);
}
.home .stats-strip {
  width: calc(100% - 11.2vw);
  min-height: 124px;
  margin: 0 auto;
  padding: 1.15rem 1rem;
  border: 1px solid #e1eaf6;
  border-radius: .92rem;
  background: #f4f8fd;
  box-shadow: 0 8px 20px rgba(18,45,92,.04);
}
.home .stat-item { min-width: 0; }

.home .cta-section { padding: 0; }
.home .cta-section .container {
  padding-left: var(--aiedi-shell-gutter);
  padding-right: 0;
}
.home .cta-banner--reference {
  position: relative;
  display: grid;
  grid-template-columns: minmax(390px, 1.25fr) auto minmax(250px, .72fr);
  align-items: center;
  gap: clamp(2rem, 4vw, 5rem);
  min-height: 156px;
  padding: 1.65rem 0 1.55rem clamp(3.4rem, 5.5vw, 6.2rem);
  border-radius: 2rem 0 0 0;
  background: linear-gradient(100deg, #fff8ef 0%, #fffaf4 45%, #fff 74%);
  overflow: hidden;
}
.home .cta-banner--reference::before {
  content: "";
  position: absolute;
  z-index: 2;
  left: -1px;
  top: -1px;
  width: 4.4rem;
  height: 7.25rem;
  border-top: 1.6px solid #ff9f0a;
  border-left: 1.6px solid #ff9f0a;
  border-radius: 2rem 0 0 4.2rem;
  transform: translateX(-3.2rem) rotate(180deg);
  pointer-events: none;
}
.home .cta-banner--reference::after {
  content: "";
  position: absolute;
  z-index: 1;
  right: -1.75rem;
  bottom: -3.9rem;
  width: clamp(17rem, 24vw, 23rem);
  height: 10.4rem;
  border-radius: 72% 0 0 0;
  background: linear-gradient(135deg, #075ed8 0%, #004ab9 100%);
  transform: none;
}
.home .cta-banner--reference .cta-banner__message {
  position: relative;
  z-index: 4;
  display: block;
  min-width: 0;
}
.home .cta-banner--reference .cta-banner__copy { display: block; }
.home .cta-banner--reference h2 {
  max-width: 520px;
  margin: 0 0 .75rem;
  color: var(--aiedi-navy);
  font-size: clamp(1.75rem, 2.15vw, 2.15rem);
  line-height: 1.08;
}
.home .cta-banner--reference .cta-banner__description {
  max-width: 480px;
  margin: 0;
  color: #43506d;
  font-size: .78rem;
  line-height: 1.5;
}
.home .cta-banner--reference > .aiedi-button {
  position: relative;
  z-index: 5;
  justify-self: center;
  margin: 0;
  min-width: 145px;
}
.home .cta-banner--reference .cta-banner__reference-arrow {
  position: absolute;
  z-index: 5;
  left: 71.2%;
  top: 50%;
  margin: 0;
  color: #f0a000;
  transform: translate(-50%, -50%);
}
.home .cta-banner--reference .cta-banner__reference-arrow .aiedi-icon {
  width: 2.55rem;
  height: 2.55rem;
  stroke-width: 1.3;
}
.home .cta-banner--reference .cta-banner__reference-dots {
  position: absolute;
  z-index: 3;
  right: 1.15rem;
  bottom: .7rem;
  width: 4.75rem;
  height: 3.55rem;
  opacity: .88;
  background-image: radial-gradient(circle, rgba(255,255,255,.9) 1.05px, transparent 1.2px);
  background-size: 9px 9px;
  pointer-events: none;
}

@media (max-width: 1120px) {
  .home .principles-grid {
    grid-template-columns: 1fr;
    min-height: 0;
    padding-inline: var(--aiedi-shell-gutter);
  }
  .home .principles-intro {
    min-height: 0;
    margin-left: 0;
    padding: 2.5rem;
    border-radius: 1.5rem;
  }
  .home .principles-stage {
    grid-template-columns: repeat(3, 1fr);
    min-height: 0;
  }
  .home .principles-stage .principle-card { min-height: 250px; }
  .home .principles-stage .principles-connector { display: none; }
  .home .stats-strip { width: calc(100% - (2 * var(--aiedi-shell-gutter))); }
  .home .cta-section .container { padding-right: var(--aiedi-shell-gutter); }
  .home .cta-banner--reference {
    grid-template-columns: 1fr auto;
    padding-right: 2rem;
    border-radius: 1.5rem;
  }
  .home .cta-banner--reference::after { opacity: .92; }
  .home .cta-banner--reference .cta-banner__reference-arrow { display: none; }
}

@media (max-width: 720px) {
  .home .principles-stage { grid-template-columns: 1fr; }
  .home .principles-stage .principle-card { min-height: 0; padding: 2rem 1.25rem; }
  .home .cta-banner--reference {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.25rem;
    padding: 1.6rem;
  }
  .home .cta-banner--reference::before { display: none; }
  .home .cta-banner--reference::after { width: 11rem; height: 7rem; bottom: -3rem; }
  .home .cta-banner--reference > .aiedi-button { justify-self: auto; }
}

/* --------------------------------------------------------------------------
 * Home hero fidelity — 1.1.3
 * Source of truth: supplied INICIO reference. This final override intentionally
 * removes decorative elements that are not present in the approved artwork and
 * recreates the organic photo edge with CSS rather than rasterising the page.
 * -------------------------------------------------------------------------- */

@media (min-width: 1121px) {
  .home .hero {
    position: relative;
    padding: 0;
    overflow: hidden;
    background: #fff;
  }

  /* Soft pale shape visible on the far left of the approved composition. */
  .home .hero::before {
    content: "";
    position: absolute;
    z-index: 0;
    left: -4.8rem;
    top: 1.25rem;
    width: 10.25rem;
    height: 31.5rem;
    border-radius: 48% 52% 47% 53% / 44% 48% 52% 56%;
    background: linear-gradient(180deg, #f2f7ff 0%, #f7faff 72%, rgba(247,250,255,0) 100%);
    transform: rotate(11deg);
    pointer-events: none;
  }

  .home .hero .container {
    position: relative;
    z-index: 1;
    padding-right: 0;
  }

  .home .hero__grid {
    display: grid;
    grid-template-columns: minmax(0, 49%) minmax(0, 51%);
    gap: 0;
    align-items: stretch;
  }

  .home .hero__content {
    position: relative;
    z-index: 5;
    align-self: center;
    max-width: none;
    padding: clamp(3rem, 4.2vw, 4.4rem) clamp(2.2rem, 3.4vw, 3.9rem) clamp(3.25rem, 4.6vw, 4.8rem) clamp(.25rem, .75vw, .85rem);
  }

  .home .hero .eyebrow {
    margin-bottom: .75rem;
    font-size: .72rem;
    line-height: 1.25;
    letter-spacing: .025em;
  }

  .home .hero h1 {
    max-width: 610px;
    margin: 0;
    font-size: clamp(2.6rem, 3.02vw, 3.15rem);
    line-height: 1.08;
    letter-spacing: -.03em;
  }

  .home .hero .title-accent {
    width: 2.85rem;
    height: .17rem;
    margin: 1.15rem 0 1.55rem;
    background: #f3a300;
  }

  .home .hero__description {
    max-width: 515px;
    color: #344568;
    font-size: .92rem;
    line-height: 1.62;
  }

  .home .hero__actions {
    display: flex;
    flex-wrap: nowrap;
    gap: 1.1rem;
    margin-top: 1.7rem;
  }

  .home .hero__actions .aiedi-button {
    min-height: 42px;
    padding: .58rem 1.08rem;
    font-size: .77rem;
    gap: .55rem;
  }

  .home .hero__visual {
    position: relative;
    z-index: 2;
    display: block;
    min-height: clamp(31.5rem, 37.8vw, 39rem);
    margin: 0 !important;
    overflow: visible;
  }

  /* The photograph in the reference starts farther right at the top and sweeps
   * left toward the bottom. A polygon with many points keeps the edge smooth at
   * every desktop width without turning the artwork into a background image. */
  .home .hero__image-wrap {
    position: absolute;
    z-index: 3;
    inset: 0 0 0 -8%;
    width: 108%;
    height: 100%;
    min-height: 0;
    aspect-ratio: auto;
    overflow: hidden;
    border-radius: 0;
    box-shadow: none;
    background: #eef5ff;
    clip-path: polygon(
      15% 0%, 100% 0%, 100% 100%, 0% 100%,
      1.2% 96%, 2.5% 90%, 3.5% 82%, 3.9% 73%,
      3.2% 64%, 2.4% 55%, 2.3% 46%, 3.2% 36%,
      5.1% 26%, 7.6% 16%, 11% 7%
    );
  }

  .home .hero__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 50%;
  }

  /* The supplied photo already contains the blue organic field, yellow circle
   * and white dotted curve. Duplicating those in CSS made the live page differ
   * from the approved capture. */
  .home .hero__blob--blue,
  .home .hero__dot--one,
  .home .hero__dot--two {
    display: none;
  }

  /* Orange quarter-swoop in the lower-right corner, sized to the reference. */
  .home .hero__blob--gold {
    display: block;
    z-index: 5;
    right: -1.2%;
    bottom: -2.5%;
    width: 22%;
    height: 16.5%;
    border-radius: 100% 0 0 0;
    background: linear-gradient(135deg, #ffb000 0%, #ff9800 100%);
    transform: none;
  }

  /* Blue dot matrix on the lower-left edge of the hero. */
  .home .hero::after {
    content: "";
    position: absolute;
    z-index: 2;
    left: .1rem;
    bottom: 1.25rem;
    width: 4.6rem;
    height: 4.6rem;
    opacity: .92;
    background-image: radial-gradient(circle, #1463e5 1.15px, transparent 1.3px);
    background-size: 9px 9px;
    pointer-events: none;
  }
}

/* Keep the intended hierarchy on medium desktop/laptop widths instead of
 * allowing the hero title to grow into the photographic column. */
@media (min-width: 1121px) and (max-width: 1399px) {
  .home .hero__grid {
    grid-template-columns: minmax(0, 48%) minmax(0, 52%);
  }
  .home .hero h1 {
    max-width: 560px;
    font-size: clamp(2.45rem, 3.15vw, 2.85rem);
  }
  .home .hero__description { max-width: 475px; }
  .home .hero__content {
    padding-right: clamp(1.5rem, 2.5vw, 2.5rem);
  }
}

@media (max-width: 1120px) {
  .home .hero__blob--blue,
  .home .hero__dot--one,
  .home .hero__dot--two { display: none; }

  .home .hero__blob--gold {
    right: -2%;
    bottom: -2%;
    width: 24%;
    height: 17%;
    border-radius: 100% 0 0 0;
    transform: none;
  }
}

/* --------------------------------------------------------------------------
 * Home "Que hacemos" fidelity — 1.1.4
 * Binding reference: supplied INICIO(2).jpg. The desktop section is rebuilt
 * to preserve the exact visual rhythm: full-bleed section, inset orange corner
 * line, short vertical separators, narrower service columns and no white gap
 * before the principles block.
 * -------------------------------------------------------------------------- */
@media (min-width: 1121px) {
  .home .section--what-we-do {
    position: relative;
    padding: 0;
    border-top: 1px solid #edf1f6;
    background: #fff;
    overflow: hidden;
  }

  .home .section--what-we-do > .container {
    width: 100%;
    max-width: none;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  .home .section--what-we-do::before {
    display: none !important;
    content: none !important;
  }

  .home .knowledge-grid {
    display: grid;
    grid-template-columns: 37.6% 17.1% 18.1% 27.2%;
    min-height: 255px;
    align-items: stretch;
    background: #fff;
  }

  .home .knowledge-grid__intro,
  .home .knowledge-item {
    min-width: 0;
    border: 0;
    background: transparent;
  }

  .home .knowledge-grid__intro {
    position: relative;
    padding: 1.95rem clamp(2rem, 3.6vw, 3.8rem) 1.75rem clamp(3.1rem, 5.45vw, 5rem);
  }

  .home .knowledge-grid__intro::before {
    display: none !important;
  }

  .home .knowledge-grid__intro .eyebrow {
    margin: 0 0 .75rem;
    color: #0756c7;
    font-size: .72rem;
    line-height: 1.2;
    letter-spacing: .02em;
  }

  .home .knowledge-grid__intro h2 {
    max-width: 390px;
    margin: 0 0 1.55rem;
    color: #071744;
    font-size: clamp(1.65rem, 1.92vw, 1.92rem);
    line-height: 1.18;
    letter-spacing: -.018em;
  }

  .home .knowledge-grid__intro > p:last-child {
    max-width: 365px;
    margin: 0;
    color: #344568;
    font-size: .82rem;
    line-height: 1.58;
  }

  .home .knowledge-item {
    position: relative;
    padding: 3.75rem clamp(1.3rem, 2vw, 2.05rem) 2.7rem;
  }

  .home .knowledge-item::before {
    content: "";
    position: absolute;
    left: 0;
    top: 2.55rem;
    bottom: 2.45rem;
    width: 1px;
    background: #e3e8f0;
    pointer-events: none;
  }

  .home .knowledge-item__number {
    display: block;
    margin: 0 0 1.05rem;
    color: #1766db;
    font-size: 1.4rem;
    font-weight: 430;
    line-height: 1;
  }

  .home .knowledge-item h3 {
    margin: 0 0 .95rem;
    color: #064ab3;
    font-size: .87rem;
    line-height: 1.2;
    font-weight: 760;
  }

  .home .knowledge-item p {
    max-width: 180px;
    margin: 0;
    color: #465572;
    font-size: .76rem;
    line-height: 1.6;
  }

  .home .knowledge-item--last {
    padding-right: clamp(5.8rem, 9vw, 9rem);
  }

  .home .knowledge-item--last p {
    max-width: 180px;
  }

  .home .knowledge-item .circle-link {
    right: clamp(3.4rem, 5.3vw, 5.8rem);
    bottom: 2.8rem;
    width: 38px;
    height: 38px;
    border-color: #dce5f2;
    background: #fff;
    color: #1766db;
    box-shadow: 0 3px 10px rgba(18, 45, 92, .035);
  }

  .home .knowledge-item .circle-link .aiedi-icon {
    width: 1.05rem;
    height: 1.05rem;
  }

  /* In the approved mockup the principles panel starts immediately after the
   * service row. Never reintroduce a spacer between the two sections. */
  .home .section--principles {
    margin-top: 0;
  }
}


/* --------------------------------------------------------------------------
 * Nosotros — fidelity pass 1.1.6
 * The supplied NOSOTROS.png is the binding layout for this page.  The global
 * shell remains fluid, while the content beneath the hero uses the narrower
 * visual frame, card proportions, icon colours and decorative details shown
 * in the approved mockup.
 * -------------------------------------------------------------------------- */
.about-page > .hero {
  padding-bottom: 0;
}

.about-page .about-mission-section {
  padding: clamp(2.2rem, 3.2vw, 2.9rem) 0 clamp(1.7rem, 2.4vw, 2.35rem);
}

.about-page .about-explore-section {
  padding: clamp(.7rem, 1.2vw, 1.1rem) 0 clamp(1.8rem, 2.8vw, 2.7rem);
}

.about-page .about-testimonials-section {
  padding: clamp(.55rem, 1vw, .95rem) 0 clamp(2.2rem, 3.6vw, 3.5rem);
}

.about-page .about-mission-section > .container,
.about-page .about-explore-section > .container,
.about-page .about-testimonials-section > .container {
  width: min(83.5%, 1220px);
  padding-inline: 0;
}

.about-page .mission-grid {
  gap: clamp(1.2rem, 2.1vw, 1.55rem);
}

.about-page .feature-card {
  grid-template-columns: 5.25rem minmax(0, 1fr);
  align-items: start;
  gap: clamp(1.15rem, 1.9vw, 1.55rem);
  min-height: 228px;
  padding: clamp(1.75rem, 2.5vw, 2.15rem) clamp(1.45rem, 2.1vw, 1.9rem);
  border-color: #dce6f3;
  border-radius: 1rem;
  box-shadow: 0 8px 24px rgba(18, 45, 92, .055);
  isolation: isolate;
}

.about-page .feature-card > * {
  position: relative;
  z-index: 2;
}

.about-page .feature-card::before,
.about-page .feature-card::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

.about-page .feature-card::before {
  z-index: 0;
  opacity: 1;
}

.about-page .feature-card::after {
  z-index: 1;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 0;
  opacity: .92;
  background-color: transparent;
  background-size: .55rem .55rem;
}

.about-page .feature-card--blue::before {
  left: -3.4rem;
  right: auto;
  bottom: -4.4rem;
  width: 9.8rem;
  height: 9.8rem;
  border-radius: 50%;
  background: #e8f2ff;
}

.about-page .feature-card--blue::after {
  right: .45rem;
  bottom: .65rem;
  background-image: radial-gradient(circle, #2f7cf3 1.15px, transparent 1.3px);
}

.about-page .feature-card--gold::before {
  right: -3.55rem;
  bottom: -4.35rem;
  width: 9.6rem;
  height: 9.6rem;
  border-radius: 50%;
  background: #fff1c9;
}

.about-page .feature-card--gold::after {
  right: .45rem;
  bottom: .65rem;
  background-image: radial-gradient(circle, #f3a000 1.15px, transparent 1.3px);
}

.about-page .feature-card__icon {
  width: 4.7rem;
  height: 4.7rem;
  flex-basis: 4.7rem;
  margin-top: .05rem;
}

.about-page .feature-card__icon .aiedi-icon {
  width: 2.55rem;
  height: 2.55rem;
  stroke-width: 1.65;
}

/* Símbolos de Visión/Misión reconstruidos desde NOSOTROS.png. */
.about-page .feature-card__icon .aiedi-icon--about-symbol {
  width: 3.4rem;
  height: 3.4rem;
  stroke-width: 3.5;
}

.about-page .feature-card__icon--blue {
  color: #0b63e7;
  background: #eaf3ff;
}

.about-page .feature-card__icon--gold {
  color: #ff9f00;
  background: #fff1cd;
}

.about-page .feature-card .eyebrow {
  margin: .55rem 0 .85rem;
  color: #075ad7;
  font-size: .88rem;
  letter-spacing: .02em;
}

.about-page .feature-card p:last-child {
  max-width: 22rem;
  margin: 0;
  color: #23365f;
  font-size: .92rem;
  line-height: 1.62;
}

.about-page .section-heading {
  margin-bottom: clamp(1.55rem, 2.2vw, 2rem);
}

.about-page .section-heading h2 {
  margin-bottom: 0;
  line-height: 1.18;
}

.about-page .section-heading .title-accent {
  width: 2.55rem;
  height: .16rem;
  margin-top: .75rem;
  margin-bottom: 0;
}

.about-page .explore-grid {
  gap: clamp(1.2rem, 2.1vw, 1.55rem);
}

.about-page .explore-card {
  min-height: 112px;
  padding: 1.15rem 1.35rem;
  border-radius: 1rem;
  box-shadow: 0 7px 22px rgba(18, 45, 92, .05);
}

.about-page .explore-card .icon-bubble {
  width: 4.15rem;
  height: 4.15rem;
  flex-basis: 4.15rem;
}

.about-page .explore-card .icon-bubble .aiedi-icon {
  width: 2.15rem;
  height: 2.15rem;
}

.about-page .explore-card strong {
  font-size: 1.08rem;
  line-height: 1.2;
}

.about-page .explore-card small {
  margin-top: .25rem;
  font-size: .84rem;
  line-height: 1.45;
}

.about-page .explore-card .circle-link {
  width: 42px;
  height: 42px;
  box-shadow: none;
}

.about-page .testimonial-grid {
  gap: clamp(1.15rem, 2vw, 1.45rem);
}

.about-page .testimonial-card {
  min-height: 210px;
  padding: 1.15rem 1.2rem 1.05rem;
  border-radius: 1rem;
  box-shadow: 0 7px 22px rgba(18, 45, 92, .05);
}

.about-page .testimonial-card__quote .aiedi-icon {
  width: 1.35rem;
  height: 1.35rem;
}

.about-page .testimonial-card blockquote {
  margin: .25rem 0 .9rem;
}

.about-page .testimonial-card blockquote p {
  margin: 0;
  color: #314263;
  font-size: .8rem;
  line-height: 1.58;
}

.about-page .testimonial-card figcaption {
  gap: .75rem;
}

.about-page .testimonial-card__avatar {
  width: 46px;
  height: 46px;
}

.about-page .testimonial-card__avatar--initials {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--aiedi-blue);
  color: #fff;
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .035em;
}

.about-page .testimonial-card figcaption strong {
  font-size: .82rem;
}

.about-page .testimonial-card figcaption small {
  font-size: .74rem;
}

@media (min-width: 1121px) {
  .about-page > .hero .container {
    padding-left: clamp(2.75rem, 5.8vw, 6.2rem);
    padding-right: 0;
  }

  .about-page > .hero .hero__grid {
    grid-template-columns: minmax(0, 43.5%) minmax(0, 56.5%);
    gap: 0;
  }

  .about-page > .hero .hero__content {
    max-width: 34rem;
    padding-right: clamp(1.5rem, 3vw, 3rem);
  }

  .about-page > .hero .hero__visual {
    margin-right: 0 !important;
    min-height: clamp(470px, 34vw, 575px);
  }

  .about-page > .hero .hero__image-wrap {
    width: 100%;
    border-radius: 24% 0 0 22% / 22% 0 0 23%;
    box-shadow: none;
  }

  .about-page > .hero .hero__dot--one {
    left: 1.2%;
    top: 7%;
  }

  .about-page > .hero .hero__dot--two {
    right: 1.2%;
    bottom: 7%;
  }
}

@media (max-width: 1120px) {
  .about-page .about-mission-section > .container,
  .about-page .about-explore-section > .container,
  .about-page .about-testimonials-section > .container {
    width: 100%;
    padding-inline: var(--aiedi-shell-gutter);
  }

  .about-page > .hero {
    padding-bottom: 1rem;
  }
}

@media (max-width: 780px) {
  .about-page .about-mission-section {
    padding-top: 1.5rem;
  }

  .about-page .feature-card {
    grid-template-columns: 4.4rem minmax(0, 1fr);
    min-height: 0;
    padding: 1.4rem;
  }

  .about-page .feature-card__icon {
    width: 4rem;
    height: 4rem;
    flex-basis: 4rem;
  }

  .about-page .feature-card__icon .aiedi-icon {
    width: 2.2rem;
    height: 2.2rem;
  }

  .about-page .testimonial-card {
    min-height: 0;
  }
}

@media (max-width: 560px) {
  .about-page .feature-card {
    grid-template-columns: 1fr;
    gap: .8rem;
  }

  .about-page .feature-card .eyebrow {
    margin-top: 0;
  }
}

/* --------------------------------------------------------------------------
 * Nosotros — fidelity pass 1.1.7
 * Binding reference: NOSOTROS(1).png. The lower About layout is deliberately
 * capped to the visual width of the approved mockup instead of stretching with
 * the desktop viewport. This restores the card proportions, line wraps and
 * vertical rhythm visible in the reference.
 * -------------------------------------------------------------------------- */
@media (min-width: 1121px) {
  .about-page .about-mission-section > .container,
  .about-page .about-explore-section > .container,
  .about-page .about-testimonials-section > .container {
    width: min(880px, calc(100% - 4rem));
    max-width: 880px;
    padding-inline: 0;
  }

  .about-page .about-mission-section {
    padding-top: 2.25rem;
    padding-bottom: 2rem;
  }

  .about-page .about-explore-section {
    padding-top: 1.75rem;
    padding-bottom: 2.15rem;
  }

  .about-page .about-testimonials-section {
    padding-top: 0;
    padding-bottom: 2rem;
  }

  .about-page .section-heading {
    margin-bottom: 1.25rem;
  }

  .about-page .section-heading .title-accent {
    width: 2.35rem;
    margin-top: .65rem;
  }

  .about-page .mission-grid,
  .about-page .explore-grid {
    gap: 1.35rem;
  }

  .about-page .feature-card {
    min-height: 240px;
    padding: 1.8rem 1.45rem;
    grid-template-columns: 4.8rem minmax(0, 1fr);
    gap: 1.2rem;
  }

  .about-page .feature-card p:last-child {
    max-width: 16rem;
    font-size: .9rem;
    line-height: 1.58;
  }

  .about-page .explore-card {
    min-height: 124px;
    padding: 1rem 1.15rem;
    grid-template-columns: 4rem minmax(0, 1fr) 40px;
    gap: 1rem;
  }

  .about-page .explore-card .icon-bubble {
    width: 4rem;
    height: 4rem;
    flex-basis: 4rem;
  }

  .about-page .explore-card strong {
    font-size: 1.08rem;
  }

  .about-page .explore-card small {
    max-width: 14rem;
    font-size: .82rem;
    line-height: 1.42;
  }

  /* The approved mockup uses a solid orange history badge with a white book. */
  .about-page .explore-card--gold .icon-bubble--gold {
    color: #fff;
    background: #ff9f00;
  }

  .about-page .explore-card--gold .circle-link {
    color: #ff9f00;
    border-color: #ff9f00;
    background: #fff;
  }

  .about-page .testimonial-grid {
    gap: 1rem;
  }

  .about-page .testimonial-card {
    min-height: 238px;
    padding: 1.05rem 1.05rem 1rem;
    border-radius: .9rem;
    box-shadow: 0 6px 18px rgba(18, 45, 92, .045);
  }

  .about-page .testimonial-card blockquote {
    margin: .3rem 0 .9rem;
  }

  .about-page .testimonial-card blockquote p {
    font-size: .79rem;
    line-height: 1.56;
  }

  .about-page .testimonial-card__avatar {
    width: 44px;
    height: 44px;
  }

  .about-page .testimonial-card figcaption {
    gap: .65rem;
  }

  .about-page .testimonial-card figcaption strong {
    font-size: .8rem;
  }

  .about-page .testimonial-card figcaption small {
    font-size: .72rem;
  }
}

/* --------------------------------------------------------------------------
 * Desktop horizontal layout policy — 1.1.8
 * AIEDI's approved desktop mockups are landscape compositions. On desktop we
 * use the available viewport width and keep related cards in horizontal rows.
 * Stacking is reserved for tablet/mobile breakpoints where it is necessary.
 * -------------------------------------------------------------------------- */
@media (min-width: 1121px) {
  .about-page .about-mission-section > .container,
  .about-page .about-explore-section > .container,
  .about-page .about-testimonials-section > .container {
    width: min(92%, 1380px);
    max-width: 1380px;
    padding-inline: 0;
  }

  .about-page .about-mission-section {
    padding-top: 1.8rem;
    padding-bottom: 1.55rem;
  }

  .about-page .about-explore-section {
    padding-top: 1.2rem;
    padding-bottom: 1.55rem;
  }

  .about-page .about-testimonials-section {
    padding-top: .7rem;
    padding-bottom: 2.4rem;
  }

  .about-page .mission-grid,
  .about-page .explore-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(1.25rem, 2vw, 2rem);
  }

  .about-page .testimonial-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1.1rem, 1.6vw, 1.65rem);
  }

  .about-page .feature-card {
    min-height: 218px;
    padding: 1.7rem 1.8rem;
    grid-template-columns: 5rem minmax(0, 1fr);
    gap: 1.35rem;
  }

  .about-page .feature-card p:last-child {
    max-width: none;
    font-size: .9rem;
  }

  .about-page .explore-card {
    min-height: 112px;
    padding: 1rem 1.35rem;
    grid-template-columns: 4.1rem minmax(0, 1fr) 42px;
  }

  .about-page .explore-card small {
    max-width: none;
  }

  .about-page .testimonial-card {
    min-height: 220px;
    padding: 1.1rem 1.15rem 1.05rem;
  }

  /* Keep the page visually wide: headings are centered, but their content row
     is not constrained to the previous narrow 880px column. */
  .about-page .section-heading {
    width: 100%;
    max-width: none;
    margin-inline: auto;
    margin-bottom: 1.2rem;
  }
}

/* --------------------------------------------------------------------------
 * Nosotros — icon fidelity pass 1.1.9
 * Binding reference: NOSOTROS.png / supplied detail crop. These rules keep the
 * Equipo and Historia badges as exact solid-color circles with white local SVG
 * line art, plus the same outlined circular arrow controls and opening quotes.
 * -------------------------------------------------------------------------- */
@media (min-width: 781px) {
  .about-page .explore-card .icon-bubble {
    width: 4.15rem;
    height: 4.15rem;
    flex-basis: 4.15rem;
    border-radius: 50%;
    box-shadow: none;
  }

  .about-page .explore-card--blue .icon-bubble--navy {
    color: #ffffff;
    background: #075bd8;
  }

  .about-page .explore-card--gold .icon-bubble--gold {
    color: #ffffff;
    background: #ffa300;
  }

  .about-page .explore-card .icon-bubble .aiedi-icon {
    width: 2.55rem;
    height: 2.55rem;
    stroke-width: 1.62;
  }

  .about-page .explore-card--gold .icon-bubble .aiedi-icon {
    width: 2.5rem;
    height: 2.5rem;
    stroke-width: 1.55;
  }

  .about-page .explore-card .circle-link {
    width: 2.75rem;
    height: 2.75rem;
    border-width: 1.35px;
    background: #ffffff;
  }

  .about-page .explore-card--blue .circle-link {
    color: #075bd8;
    border-color: #075bd8;
  }

  .about-page .explore-card--gold .circle-link {
    color: #ffa300;
    border-color: #ffa300;
  }

  .about-page .explore-card .circle-link .aiedi-icon {
    width: 1.25rem;
    height: 1.25rem;
    stroke-width: 1.75;
  }
}

.about-page .testimonial-card__quote {
  display: inline-flex;
  color: #3f83ed;
}

.about-page .testimonial-card__quote .aiedi-icon {
  width: 1.55rem;
  height: 1.55rem;
  stroke-width: 1.65;
}

@media (max-width: 780px) {
  .about-page .explore-card--blue .icon-bubble--navy {
    color: #ffffff;
    background: #075bd8;
  }

  .about-page .explore-card--gold .icon-bubble--gold {
    color: #ffffff;
    background: #ffa300;
  }

  .about-page .explore-card .icon-bubble .aiedi-icon {
    width: 2.35rem;
    height: 2.35rem;
    stroke-width: 1.6;
  }
}


/* --------------------------------------------------------------------------
 * Nosotros - Vision / Mision fidelity pass 1.1.10
 * Binding reference: supplied NOSOTROS.png crop. The cards remain side by
 * side on desktop, but recover the taller proportions, constrained copy,
 * icon scale, organic corner shapes and dot matrices from the approved design.
 * -------------------------------------------------------------------------- */
@media (min-width: 1121px) {
  .about-page .about-mission-section > .container {
    width: min(83.5%, 1380px);
    max-width: 1380px;
    padding-inline: 0;
  }

  .about-page .about-mission-section {
    padding-top: clamp(2rem, 2.7vw, 2.7rem);
    padding-bottom: clamp(2rem, 2.8vw, 2.8rem);
  }

  .about-page .mission-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(1.35rem, 2.25vw, 2rem);
    align-items: stretch;
  }

  .about-page .feature-card {
    position: relative;
    overflow: hidden;
    /* 1.1.11: remove the artificial tall box. The approved mockup is a
       compact horizontal card; its height must be driven mainly by content. */
    min-height: 0;
    padding: clamp(1.65rem, 2.05vw, 2rem) clamp(1.6rem, 2.15vw, 2rem) clamp(1.7rem, 2.1vw, 2.05rem);
    grid-template-columns: 5rem minmax(0, 1fr);
    align-items: start;
    gap: clamp(1rem, 1.45vw, 1.35rem);
    border: 1px solid #dce6f3;
    border-radius: 1rem;
    box-shadow: 0 8px 24px rgba(18, 45, 92, .055);
    background: #ffffff;
  }

  .about-page .feature-card__icon {
    width: 5rem;
    height: 5rem;
    flex-basis: 5rem;
    margin-top: 0;
  }

  .about-page .feature-card__icon .aiedi-icon {
    width: 2.9rem;
    height: 2.9rem;
    stroke-width: 1.62;
  }

  .about-page .feature-card > div {
    max-width: 22rem;
    padding-top: .4rem;
  }

  .about-page .feature-card .eyebrow {
    margin: 0 0 1.05rem;
    color: #075bd8;
    font-size: clamp(.98rem, 1.05vw, 1.1rem);
    font-weight: 800;
    letter-spacing: .01em;
    line-height: 1.15;
  }

  .about-page .feature-card p:last-child {
    max-width: 21.5rem;
    margin: 0;
    color: #172957;
    font-size: clamp(.98rem, 1vw, 1.08rem);
    line-height: 1.72;
  }

  .about-page .feature-card__icon--blue {
    color: #0b63e7;
    background: #eaf3ff;
  }

  .about-page .feature-card__icon--gold {
    color: #ff9f00;
    background: #fff1cd;
  }

  /* Organic pale corner sweep, matching the approved card artwork. */
  .about-page .feature-card--blue::before,
  .about-page .feature-card--gold::before {
    width: 10.7rem;
    height: 6.8rem;
    border-radius: 50%;
    opacity: 1;
    z-index: 0;
  }

  .about-page .feature-card--blue::before {
    left: -4.3rem;
    bottom: -3.55rem;
    right: auto;
    background: #dfeeff;
    transform: rotate(27deg);
  }

  .about-page .feature-card--gold::before {
    right: -4.2rem;
    bottom: -3.55rem;
    left: auto;
    background: #fff0c5;
    transform: rotate(-27deg);
  }

  /* Four-column dotted matrix used in the supplied mockup. */
  .about-page .feature-card--blue::after,
  .about-page .feature-card--gold::after {
    width: 3.35rem;
    height: 4.6rem;
    right: .55rem;
    bottom: .55rem;
    border-radius: 0;
    background-size: .72rem .72rem;
    opacity: .95;
    z-index: 1;
  }

  .about-page .feature-card--blue::after {
    background-image: radial-gradient(circle, #2678f4 1.25px, transparent 1.45px);
  }

  .about-page .feature-card--gold::after {
    background-image: radial-gradient(circle, #f5a000 1.25px, transparent 1.45px);
  }
}

@media (min-width: 781px) and (max-width: 1120px) {
  .about-page .feature-card {
    min-height: 0;
  }

  .about-page .feature-card > div {
    max-width: 20rem;
  }

  .about-page .feature-card p:last-child {
    max-width: 20rem;
    line-height: 1.65;
  }
}


/* ==========================================================================\n   1.1.12 — Servicios: mockup is the visual specification\n   ========================================================================== */
.services-page .section--services {
  position: relative;
  overflow: hidden;
  padding: clamp(2.25rem, 4vw, 3.5rem) 0 clamp(3rem, 5vw, 4.5rem);
}
.services-page .section--services > .container {
  width: min(100%, 1240px);
  max-width: 1240px;
  margin-inline: auto;
  padding-inline: clamp(1.4rem, 3vw, 2.4rem);
}
.services-page .section--services .section-heading {
  max-width: 880px;
  margin: 0 auto clamp(2rem, 3.2vw, 2.8rem);
}
.services-page .section--services .section-heading h2 {
  margin-bottom: .35rem;
  font-size: clamp(2rem, 3vw, 2.6rem);
  line-height: 1.08;
}
.services-page .section--services .section-heading .title-accent {
  width: 2rem;
  height: 2px;
  margin-top: .65rem;
  margin-bottom: .95rem;
  background: var(--aiedi-orange-bright);
}
.services-page .section--services .section-heading p {
  max-width: 820px;
  margin: 0 auto;
  font-size: clamp(.92rem, 1.1vw, 1rem);
  line-height: 1.6;
}

.services-page .services-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1.25rem, 2vw, 1.75rem);
  width: 100%;
  max-width: 1120px;
  margin-inline: auto;
  align-items: stretch;
}
.services-page .service-card {
  grid-column: auto;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  min-width: 0;
  min-height: 390px;
  padding: 1.8rem 1.7rem 1.75rem;
  text-align: center;
  border: 1px solid #dfe7f2;
  border-radius: 1.05rem;
  background: #fff;
  box-shadow: 0 8px 24px rgba(18,45,92,.045);
  transition: none;
  cursor: default;
}
.services-page .service-card:hover {
  transform: none;
  box-shadow: 0 8px 24px rgba(18,45,92,.045);
}
.services-page .service-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 5.5rem;
  height: 5.5rem;
  flex: 0 0 5.5rem;
  margin: .1rem auto 0;
  color: #0c5bea;
  background: #eef5ff;
  border-radius: 50%;
}
.services-page .service-card__icon .aiedi-icon {
  width: 3.25rem;
  height: 3.25rem;
  stroke-width: 1.65;
}
.services-page .service-card .title-accent {
  width: 1.9rem;
  height: 2px;
  margin: 1.05rem auto 1rem;
  background: #ff9f0a;
}
.services-page .service-card h3 {
  max-width: 285px;
  margin: 0 auto .95rem;
  color: var(--aiedi-navy);
  font-size: clamp(1.18rem, 1.55vw, 1.38rem);
  line-height: 1.12;
  font-weight: 800;
  text-wrap: balance;
}
.services-page .service-card p {
  max-width: 300px;
  margin: 0 auto;
  color: #24365d;
  font-size: clamp(.86rem, 1vw, .95rem);
  line-height: 1.58;
}
.services-page .service-card__link { display: none !important; }

/* Decorative dots and pale corner shape visible in the approved design. */
.services-page .section--services::before {
  content: "";
  position: absolute;
  z-index: 0;
  left: .25rem;
  top: 49%;
  width: 3.7rem;
  height: 10.5rem;
  opacity: .9;
  pointer-events: none;
  background-image: radial-gradient(circle, #0c5bea 1.35px, transparent 1.5px);
  background-size: 10px 10px;
}
.services-page .section--services::after {
  content: "";
  position: absolute;
  z-index: 0;
  right: -6rem;
  bottom: 1.6rem;
  width: 13rem;
  height: 13rem;
  border-radius: 50%;
  background: #f4f8ff;
  pointer-events: none;
}
.services-page .section--services > .container { position: relative; z-index: 1; }

@media (max-width: 980px) {
  .services-page .services-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-width: 760px;
  }
  .services-page .service-card {
    grid-column: auto;
    min-height: 350px;
  }
  .services-page .section--services::before { display: none; }
}

@media (max-width: 640px) {
  .services-page .section--services { padding-top: 2rem; }
  .services-page .services-grid { grid-template-columns: 1fr; max-width: 480px; }
  .services-page .service-card {
    grid-column: 1;
    width: 100%;
    min-height: 0;
    padding: 1.6rem 1.35rem 1.8rem;
  }
  .services-page .service-card__icon { width: 5rem; height: 5rem; flex-basis: 5rem; }
  .services-page .service-card__icon .aiedi-icon { width: 2.9rem; height: 2.9rem; }
  .services-page .section--services::after { display: none; }
}

/* ==========================================================================
   1.1.13 — Contacto: mockup is the visual specification
   ========================================================================== */
.contact-page .section--contact-form {
  padding: clamp(2.1rem, 3.2vw, 3.2rem) 0 clamp(2.6rem, 4vw, 3.8rem);
}
.contact-page .section--contact-form > .container {
  width: 100%;
}
.contact-page .contact-form-heading {
  margin-bottom: clamp(1.7rem, 2.4vw, 2.25rem);
}
.contact-page .contact-form-heading h2 {
  margin-bottom: .35rem;
  color: var(--aiedi-navy);
  font-size: clamp(1.65rem, 2.4vw, 2.15rem);
  line-height: 1.12;
  font-weight: 800;
}
.contact-page .contact-form-heading .title-accent {
  width: 2.15rem;
  height: 2px;
  margin-top: .7rem;
  background: #ff9f0a;
}

.contact-page .contact-layout--reference {
  display: grid;
  grid-template-columns: minmax(0, 2.05fr) minmax(300px, .95fr);
  gap: clamp(1.35rem, 2.2vw, 2rem);
  align-items: stretch;
}
.contact-page .contact-form-card,
.contact-page .contact-channel-card {
  border: 1px solid #dce5f1;
  border-radius: 1.05rem;
  box-shadow: 0 7px 22px rgba(18, 45, 92, .035);
}
.contact-page .contact-form-card {
  min-width: 0;
  padding: clamp(1.2rem, 1.8vw, 1.55rem);
  background: #fff;
}

/* Keep Core validation/submission, while matching the approved compact layout. */
.contact-page .aiedi-contact-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 1.25rem;
  row-gap: 0;
  margin-top: 0;
}
.contact-page .aiedi-contact-form > .form-error-summary,
.contact-page .aiedi-contact-form > .form-success,
.contact-page .aiedi-contact-form > .form-grid {
  grid-column: 1 / -1;
}
.contact-page .aiedi-contact-form .form-grid {
  gap: .9rem 1.05rem;
}
.contact-page .aiedi-contact-form .form-field label {
  margin-bottom: .38rem;
  color: #071743;
  font-size: .84rem;
  line-height: 1.25;
  font-weight: 750;
}
.contact-page .aiedi-contact-form input[type="text"],
.contact-page .aiedi-contact-form input[type="email"],
.contact-page .aiedi-contact-form select,
.contact-page .aiedi-contact-form textarea {
  min-height: 44px;
  padding: .65rem .82rem;
  color: #142650;
  border: 1px solid #d7e0ec;
  border-radius: .46rem;
  background: #fff;
  box-shadow: inset 0 1px 1px rgba(18, 45, 92, .015);
  font-size: .88rem;
}
.contact-page .aiedi-contact-form input::placeholder,
.contact-page .aiedi-contact-form textarea::placeholder {
  color: #7b89a5;
  opacity: 1;
}
.contact-page .aiedi-contact-form select {
  color: #53617e;
}
.contact-page .aiedi-contact-form textarea {
  min-height: 116px;
  height: 116px;
  resize: vertical;
}
.contact-page .aiedi-contact-form .form-help {
  /* The same instruction is already present as the approved placeholder. */
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.contact-page .aiedi-contact-form .form-checkbox {
  grid-column: 1;
  align-self: center;
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: .65rem;
  margin: 1rem 0 0;
}
.contact-page .aiedi-contact-form .form-checkbox input {
  width: 24px;
  height: 24px;
  min-width: 24px;
  min-height: 24px;
  margin: .02rem 0 0;
  accent-color: var(--aiedi-blue);
}
.contact-page .aiedi-contact-form .form-checkbox label {
  color: #26385f;
  font-size: .79rem;
  line-height: 1.45;
}
.contact-page .aiedi-contact-form .form-checkbox a {
  color: #075bd8;
  font-weight: 650;
}
.contact-page .aiedi-contact-form .form-actions {
  grid-column: 2;
  align-self: center;
  justify-self: end;
  margin: 1rem 0 0;
}
.contact-page .aiedi-contact-form .form-actions .aiedi-button {
  min-width: 188px;
  min-height: 44px;
  justify-content: center;
  gap: .65rem;
  padding: .68rem 1.15rem;
  border: 0;
  border-radius: 999px;
  font-size: .84rem;
  font-weight: 750;
  box-shadow: 0 8px 18px rgba(7, 88, 217, .18);
}
.contact-page .aiedi-contact-form .contact-submit-icon {
  width: 1.12rem;
  height: 1.12rem;
  stroke-width: 1.7;
}

/* One unified sidebar card, as shown in the approved reference. */
.contact-page .contact-sidebar--reference {
  display: block;
  min-width: 0;
}
.contact-page .contact-channel-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 100%;
  padding: clamp(1.45rem, 2vw, 1.8rem);
  background: linear-gradient(145deg, #ffffff 0%, #f6f9ff 60%, #eef5ff 100%);
}
.contact-page .contact-channel-card > h3 {
  margin: 0;
  color: #091943;
  font-size: clamp(1.12rem, 1.55vw, 1.32rem);
  line-height: 1.25;
  font-weight: 800;
}
.contact-page .contact-channel-card > .title-accent {
  width: 2.05rem;
  height: 2px;
  margin: .8rem 0 1.2rem;
  background: #ff9f0a;
}
.contact-page .contact-channel-card > p {
  max-width: 315px;
  margin: 0;
  color: #2f4166;
  font-size: .88rem;
  line-height: 1.6;
}
.contact-page .contact-social-links {
  flex-wrap: nowrap;
  gap: .78rem;
  margin: 1.25rem 0 1.55rem;
}
.contact-page .contact-social-links li {
  margin: 0;
}
.contact-page .contact-social-links a,
.contact-page .contact-social-placeholder {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 45px;
  height: 45px;
  color: #075bd8;
  border: 1.5px solid #7ba6fb;
  border-radius: 50%;
  background: #fff;
}
.contact-page .contact-social-links .aiedi-icon {
  width: 1.45rem;
  height: 1.45rem;
  stroke-width: 1.8;
}
.contact-page .contact-social-links a:hover {
  color: #fff;
  border-color: #075bd8;
  background: #075bd8;
}
.contact-page .contact-schedule-panel {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1rem;
  align-items: start;
  margin-top: auto;
  padding: 1.15rem 1.1rem;
  border: 1px solid #d8e2f0;
  border-radius: .9rem;
  background: linear-gradient(135deg, #f7faff, #eef5ff);
}
.contact-page .contact-schedule-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  flex: 0 0 3rem;
  color: #075bd8;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 3px 10px rgba(18,45,92,.05);
}
.contact-page .contact-schedule-icon .aiedi-icon {
  width: 1.65rem;
  height: 1.65rem;
  stroke-width: 1.75;
}
.contact-page .contact-schedule-copy h3 {
  margin: .05rem 0 .55rem;
  color: #0a1b45;
  font-size: .94rem;
  line-height: 1.25;
  font-weight: 800;
}
.contact-page .contact-schedule-copy p {
  margin: 0;
  color: #32466d;
  font-size: .83rem;
  line-height: 1.55;
}
.contact-page .contact-schedule-copy p span {
  display: block;
}

@media (max-width: 920px) {
  .contact-page .contact-layout--reference {
    grid-template-columns: 1fr;
    max-width: 820px;
    margin-inline: auto;
  }
  .contact-page .contact-channel-card {
    min-height: 0;
  }
  .contact-page .contact-channel-card > p {
    max-width: 520px;
  }
  .contact-page .contact-schedule-panel {
    margin-top: .25rem;
  }
}

@media (max-width: 720px) {
  .contact-page .contact-form-card,
  .contact-page .contact-channel-card {
    padding: 1.15rem;
  }
  .contact-page .aiedi-contact-form {
    grid-template-columns: 1fr;
  }
  .contact-page .aiedi-contact-form .form-checkbox,
  .contact-page .aiedi-contact-form .form-actions {
    grid-column: 1;
  }
  .contact-page .aiedi-contact-form .form-actions {
    justify-self: stretch;
    width: 100%;
    margin-top: .85rem;
  }
  .contact-page .aiedi-contact-form .form-actions .aiedi-button {
    width: 100%;
  }
  .contact-page .contact-social-links {
    gap: .6rem;
  }
  .contact-page .contact-social-links a,
  .contact-page .contact-social-placeholder {
    width: 43px;
    height: 43px;
  }
}

/* ========================================================================== 
   1.1.14 — Contacto: hero faithful to approved CONTACTO.png
   The reference image is the visual specification. The contact details are
   part of the hero (not detached cards), and the bundled hero image already
   contains the blue/orange decorative artwork, so no duplicate CSS blobs are
   added here.
   ========================================================================== */
.contact-page .contact-hero {
  position: relative;
  padding: clamp(2.2rem, 3vw, 3.25rem) 0 clamp(2.4rem, 3.6vw, 3.75rem);
  border-bottom: 1px solid #edf1f7;
  background: #fff;
  overflow: hidden;
}
.contact-page .contact-hero__container {
  width: 100%;
}
.contact-page .contact-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: clamp(2rem, 4vw, 5rem);
  align-items: center;
}
.contact-page .contact-hero__content {
  min-width: 0;
  max-width: 650px;
  padding-left: clamp(.35rem, 1vw, 1rem);
}
.contact-page .contact-hero__eyebrow {
  margin: 0 0 1.35rem;
  color: #0758d9;
  font-size: clamp(.78rem, .85vw, .92rem);
  line-height: 1.2;
  font-weight: 800;
  letter-spacing: .01em;
}
.contact-page .contact-hero__title {
  max-width: 650px;
  margin: 0;
  color: #071845;
  font-size: clamp(2.2rem, 3vw, 3rem);
  line-height: 1.08;
  letter-spacing: -.035em;
  font-weight: 800;
  text-wrap: balance;
}
.contact-page .contact-hero__title span {
  display: block;
  color: #0758d9;
}
.contact-page .contact-hero__accent {
  width: 3rem;
  height: 3px;
  margin: 1.65rem 0 1.85rem;
  background: #ff9f0a;
}
.contact-page .contact-hero__description {
  max-width: 585px;
  color: #26385f;
  font-size: clamp(.98rem, 1.15vw, 1.08rem);
  line-height: 1.65;
}
.contact-page .contact-hero__description p {
  margin: 0;
}
.contact-page .contact-hero__details {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
  column-gap: clamp(1.4rem, 2.6vw, 2.7rem);
  row-gap: 1.35rem;
  max-width: 620px;
  margin-top: clamp(2.4rem, 3vw, 3.2rem);
}
.contact-page .contact-hero__detail {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: .85rem;
  align-items: start;
  min-width: 0;
}
.contact-page .contact-hero__detail--phone {
  grid-column: 1;
}
.contact-page .contact-hero__detail-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  color: #0758d9;
  border-radius: .8rem;
  background: #eef5ff;
}
.contact-page .contact-hero__detail-icon .aiedi-icon {
  width: 1.45rem;
  height: 1.45rem;
  stroke-width: 1.9;
}
.contact-page .contact-hero__detail .contact-hero__detail-label {
  display: block;
  margin: .02rem 0 .24rem;
  color: #071845;
  font-size: .84rem;
  line-height: 1.25;
  font-weight: 800;
}
.contact-page .contact-hero__detail p:not(.contact-hero__detail-label) {
  margin: 0;
  color: #30436a;
  font-size: .82rem;
  line-height: 1.58;
}
.contact-page .contact-hero__detail a {
  color: inherit;
  text-decoration: none;
}
.contact-page .contact-hero__detail a:hover {
  color: #0758d9;
  text-decoration: underline;
}
.contact-page .contact-hero__visual {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.contact-page .contact-hero__image {
  display: block;
  width: min(100%, 760px);
  height: auto;
  margin-left: auto;
  object-fit: contain;
  object-position: center;
  filter: none;
}

/* The approved composition keeps the message block immediately after hero. */
.contact-page .contact-hero + .section--contact-form {
  margin-top: 0;
}

@media (min-width: 1500px) {
  .contact-page .contact-hero__grid {
    grid-template-columns: minmax(570px, .92fr) minmax(720px, 1.08fr);
    gap: clamp(3rem, 5vw, 6.5rem);
  }
  .contact-page .contact-hero__content {
    max-width: 690px;
  }
  .contact-page .contact-hero__image {
    width: min(100%, 800px);
  }
}

@media (max-width: 1100px) {
  .contact-page .contact-hero__grid {
    grid-template-columns: minmax(0, .93fr) minmax(0, 1.07fr);
    gap: 1.5rem;
  }
  .contact-page .contact-hero__title {
    font-size: clamp(2rem, 3.8vw, 2.55rem);
  }
  .contact-page .contact-hero__details {
    column-gap: 1rem;
  }
}

@media (max-width: 860px) {
  .contact-page .contact-hero {
    padding-top: 1.6rem;
  }
  .contact-page .contact-hero__grid {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .contact-page .contact-hero__content {
    max-width: 680px;
    padding-left: 0;
  }
  .contact-page .contact-hero__visual {
    justify-content: center;
  }
  .contact-page .contact-hero__image {
    width: min(100%, 690px);
    margin-inline: auto;
  }
}

@media (max-width: 560px) {
  .contact-page .contact-hero__title {
    font-size: clamp(2rem, 10vw, 2.55rem);
  }
  .contact-page .contact-hero__accent {
    margin: 1.25rem 0 1.45rem;
  }
  .contact-page .contact-hero__details {
    grid-template-columns: 1fr;
    gap: 1rem;
    margin-top: 2rem;
  }
  .contact-page .contact-hero__detail--phone {
    grid-column: auto;
  }
  .contact-page .contact-hero__detail {
    grid-template-columns: 42px minmax(0, 1fr);
  }
  .contact-page .contact-hero__detail-icon {
    width: 42px;
    height: 42px;
  }
}

/* Fast publication filters (progressive enhancement). Only the result list fades;
   controls remain active so a second choice can supersede a slow request instantly. */
.section--publication-directory .publication-results {
  position: relative;
}
.section--publication-directory.is-loading .publication-results {
  cursor: progress;
}
.section--publication-directory.is-loading .publication-results::after {
  content: "";
  position: absolute;
  top: .8rem;
  right: .8rem;
  width: 1.15rem;
  height: 1.15rem;
  border: 2px solid rgba(7, 91, 216, .16);
  border-top-color: #075bd8;
  border-radius: 50%;
  animation: aiedi-filter-spin .65s linear infinite;
  pointer-events: none;
}
@keyframes aiedi-filter-spin {
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .section--publication-directory .publication-results {
    transition: none;
  }
  .section--publication-directory.is-loading .publication-results::after {
    animation: none;
  }
}

/* ================================================================
 * 1.1.23 — Desktop submenu interaction reliability
 * Keep the dropdown reachable while the pointer moves from the
 * parent item (Nosotros) to Historia / Equipo. The visual gap is
 * preserved, but an invisible hover bridge prevents the menu from
 * collapsing before the user reaches the submenu.
 * 1.2.84 extends this desktop interaction to >=921px because iPad Pro
 * now uses the complete institutional menu while iPad Air/Mini remain
 * on the compact menu.
 * ================================================================ */
@media (min-width: 921px) {
  .primary-navigation li.menu-item-has-children {
    position: relative;
  }

  .primary-navigation li.menu-item-has-children::before {
    content: "";
    position: absolute;
    top: 100%;
    left: -1rem;
    right: -1rem;
    height: .9rem;
    z-index: 1199;
  }

  .primary-navigation .sub-menu {
    top: calc(100% + .42rem);
    z-index: 1200;
  }

  .primary-navigation .sub-menu a {
    width: 100%;
    min-height: 44px;
    position: relative;
    z-index: 1201;
  }

  .primary-navigation li:hover > .sub-menu,
  .primary-navigation li:focus-within > .sub-menu,
  .primary-navigation li.is-submenu-open > .sub-menu {
    display: flex;
  }

  .primary-navigation li.submenu-dismissed > .sub-menu,
  .primary-navigation li.submenu-dismissed:hover > .sub-menu,
  .primary-navigation li.submenu-dismissed:focus-within > .sub-menu {
    display: none;
  }
}

/* --------------------------------------------------------------------------
 * Home hero artwork — 1.1.26
 * Binding source: approved replacement artwork supplied on 2026-08-20.
 * The WebP already contains the blue/orange organic forms, dotted connector,
 * accent circle and dot matrix. Do not duplicate those elements in CSS.
 * -------------------------------------------------------------------------- */
.home .hero__blob,
.home .hero__dot,
.home .hero::after {
  display: none !important;
}

@media (min-width: 1121px) {
  .home .hero__visual {
    display: flex !important;
    align-items: center;
    justify-content: flex-end;
    min-height: 0 !important;
    margin: 0 !important;
    overflow: visible;
  }

  .home .hero__image-wrap {
    position: relative !important;
    inset: auto !important;
    width: 106% !important;
    max-width: none !important;
    height: auto !important;
    min-height: 0 !important;
    aspect-ratio: auto !important;
    margin: 0 -4% 0 0 !important;
    overflow: visible !important;
    border-radius: 0 !important;
    clip-path: none !important;
    box-shadow: none !important;
    background: transparent !important;
  }

  .home .hero__image {
    display: block;
    width: 100% !important;
    height: auto !important;
    object-fit: contain !important;
    object-position: center center !important;
  }
}

@media (max-width: 1120px) {
  .home .hero__visual {
    display: flex !important;
    align-items: center;
    justify-content: center;
    min-height: 0 !important;
    overflow: visible;
  }

  .home .hero__image-wrap {
    position: relative !important;
    inset: auto !important;
    width: min(100%, 760px) !important;
    height: auto !important;
    min-height: 0 !important;
    aspect-ratio: auto !important;
    margin: 0 auto !important;
    overflow: visible !important;
    border-radius: 0 !important;
    clip-path: none !important;
    box-shadow: none !important;
    background: transparent !important;
  }

  .home .hero__image {
    display: block;
    width: 100% !important;
    height: auto !important;
    object-fit: contain !important;
    object-position: center center !important;
  }
}

/* --------------------------------------------------------------------------
 * Precomposed institutional hero artwork
 * Approved hero WebPs can contain their own blue/orange organic shapes,
 * accent circles, dotted curves and dot matrices.  When a template uses one
 * of these artwork keys (Inicio, Nosotros, Servicios, etc.), CSS must not
 * recreate the same decoration around the image.
 * -------------------------------------------------------------------------- */
.hero--shared-artwork .hero__blob,
.hero--shared-artwork .hero__dot {
  display: none !important;
}

.hero--shared-artwork .hero__visual {
  display: flex !important;
  align-items: center;
  justify-content: flex-end;
  min-height: 0 !important;
  overflow: visible;
}

.hero--shared-artwork .hero__image-wrap {
  position: relative !important;
  inset: auto !important;
  width: min(100%, 780px) !important;
  max-width: none !important;
  height: auto !important;
  min-height: 0 !important;
  aspect-ratio: auto !important;
  margin: 0 !important;
  overflow: visible !important;
  border-radius: 0 !important;
  clip-path: none !important;
  box-shadow: none !important;
  background: transparent !important;
}

.hero--shared-artwork .hero__image {
  display: block;
  width: 100% !important;
  height: auto !important;
  object-fit: contain !important;
  object-position: center center !important;
}

@media (min-width: 1121px) {
  .hero--shared-artwork:not(.hero--legal) .hero__image-wrap {
    width: 104% !important;
    margin-right: -2% !important;
  }

  .hero--archive.hero--shared-artwork .hero__grid {
    grid-template-columns: minmax(0, .92fr) minmax(420px, 1.08fr);
  }
}

@media (max-width: 1120px) {
  .hero--shared-artwork .hero__visual {
    justify-content: center;
  }

  .hero--shared-artwork .hero__image-wrap {
    width: min(100%, 720px) !important;
    margin-inline: auto !important;
  }
}

/* Contact uses a purpose-built hero wrapper rather than template-parts/hero.php,
 * but it shares the exact same optimized WebP artwork. */
.contact-page .contact-hero__image {
  width: min(100%, 780px);
  height: auto;
  object-fit: contain;
  object-position: center center;
}


/* ==========================================================================
   1.1.32 — Servicios: SVG inline refinados + hero/section compactos
   La captura aprobada es la especificacion visual. Los seis iconos son SVG
   inline con currentColor para conservar nitidez y responder al contraste.
   ========================================================================== */
.services-page > .hero {
  padding-bottom: .25rem;
}

.services-page .section--services {
  padding-top: clamp(.55rem, 1vw, .9rem);
}

.services-page .section--services .section-heading {
  margin-bottom: clamp(1.55rem, 2.3vw, 2.1rem);
}

.services-page .services-grid {
  gap: clamp(1.25rem, 1.8vw, 1.6rem);
}

.services-page .service-card {
  min-height: 0;
  padding: 1.55rem 1.55rem 1.65rem;
}

.services-page .service-card__icon {
  width: 5.35rem;
  height: 5.35rem;
  flex-basis: 5.35rem;
  color: #0c43d8;
  background: #eef5ff;
}

.services-page .service-card__icon .aiedi-icon {
  width: 3.25rem;
  height: 3.25rem;
  stroke-width: 1.8;
}

.services-page .service-card .title-accent {
  width: 2rem;
  margin-top: .8rem;
  margin-bottom: .8rem;
}

.services-page .service-card h3 {
  margin-bottom: .8rem;
}

/* Windows/high-contrast modes keep the vector symbol legible. */
@media (forced-colors: active) {
  .services-page .service-card {
    border-color: CanvasText;
    box-shadow: none;
  }

  .services-page .service-card__icon {
    color: CanvasText;
    background: Canvas;
    border: 1px solid CanvasText;
  }

  .services-page .service-card .title-accent,
  .services-page .section--services .section-heading .title-accent {
    background: Highlight;
  }
}

@media (max-width: 640px) {
  .services-page > .hero {
    padding-bottom: 0;
  }

  .services-page .section--services {
    padding-top: .75rem;
  }
}

/* ========================================================================== 
   1.1.33 — Servicios: SVGs redibujados fieles al mockup aprobado
   ========================================================================== */
.services-page .service-card__icon {
  width: 5.65rem;
  height: 5.65rem;
  flex-basis: 5.65rem;
  background: #eef5ff;
  color: #123fda;
}
.services-page .service-card__icon .aiedi-icon--service {
  width: 3.7rem;
  height: 3.7rem;
  stroke-width: 2.8;
}
@media (max-width: 640px) {
  .services-page .service-card__icon {
    width: 5.2rem;
    height: 5.2rem;
    flex-basis: 5.2rem;
  }
  .services-page .service-card__icon .aiedi-icon--service {
    width: 3.35rem;
    height: 3.35rem;
  }
}


/* ================================================================
   1.1.34 — Header: iconos semánticos para CID y Blog
   ================================================================ */
.header-action--cid > .aiedi-icon:first-child,
.header-action--blog > .aiedi-icon:first-child {
  width: 1.28rem;
  height: 1.28rem;
  flex: 0 0 1.28rem;
  stroke-width: 1.9;
}

.header-action--cid > .aiedi-icon:first-child {
  color: var(--aiedi-orange-bright);
}

.header-action--blog > .aiedi-icon:first-child {
  color: currentColor;
}

@media (forced-colors: active) {
  .header-action--cid > .aiedi-icon:first-child,
  .header-action--blog > .aiedi-icon:first-child {
    color: ButtonText;
    forced-color-adjust: auto;
  }
}

/* ========================================================================== 
   HISTORIA 1.1.38 — timeline faithful to approved HISTORIA.png reference
   The screenshot is the visual specification: compact alternating cards,
   separate circular icons, dotted axis/connectors and blue axis nodes.
   ========================================================================== */
.history-page .section--timeline {
  padding-top: 1.6rem;
  padding-bottom: 2.2rem;
}

.history-page .section--timeline > .container {
  width: min(100%, 1180px);
}

.history-page .section--timeline .section-heading {
  margin-bottom: 1.15rem;
}

.history-page .section--timeline .section-heading h2 {
  margin-bottom: 0;
}

.history-page .section--timeline .section-heading .title-accent {
  width: 2rem;
  height: 2px;
  margin-top: .55rem;
}

.history-page .timeline-wrap {
  --history-axis: #a9c3ef;
  --history-blue: #0864df;
  --history-orange: #ffa000;
  --history-card-w: 292px;
  --history-icon: 76px;
  position: relative;
  width: min(100%, 760px);
  margin: 0 auto;
}

.history-page .timeline {
  --history-axis: #a9c3ef;
  --history-blue: #0864df;
  --history-orange: #ffa000;
  --history-card-w: 292px;
  --history-icon: 76px;
  position: relative;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: .45rem 0 .35rem;
  list-style: none;
}

.history-page .timeline::before {
  content: none !important;
  display: none !important;
}

/* Eje real en el DOM: no depende de pseudo-elementos ni de fondos, por lo
   que permanece visible con el modo de contraste del plugin de AIEDI. */
.history-page .timeline__axis {
  position: absolute;
  z-index: 0;
  top: 1.2rem;
  bottom: 1.2rem;
  left: 50%;
  display: block !important;
  width: 0;
  transform: translateX(-50%);
  border-left: 2px dotted var(--history-axis);
  background: transparent !important;
  color: var(--history-axis);
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: none;
}

.history-page .timeline__item {
  position: relative;
  display: block;
  min-height: 182px;
  width: 100%;
}

.history-page .timeline__item:last-child {
  min-height: 154px;
}

.history-page .timeline__axis-dot {
  position: absolute;
  z-index: 4;
  top: 50%;
  left: 50%;
  width: 13px;
  height: 13px;
  transform: translate(-50%, -50%);
  border: 3px solid #d7e4fb;
  border-radius: 50%;
  background: var(--history-blue);
  box-shadow: 0 0 0 1px rgba(8, 100, 223, .08);
}

.history-page .timeline__connector {
  position: absolute;
  z-index: 1;
  top: 50%;
  height: 0;
  transform: translateY(-50%);
  background: none;
  border-top: 2px dotted var(--history-axis);
}

.history-page .timeline__item--left .timeline__connector {
  left: var(--history-card-w);
  width: calc(50% - var(--history-card-w) + 30px);
}

.history-page .timeline__item--right .timeline__connector {
  right: var(--history-card-w);
  left: auto;
  width: calc(50% - var(--history-card-w) + 30px);
}

.history-page .timeline__card {
  position: absolute;
  z-index: 2;
  top: 50%;
  width: var(--history-card-w);
  min-height: 132px;
  padding: 1.05rem 1.45rem 1.05rem;
  transform: translateY(-50%);
  border: 1px solid #e1e9f4;
  border-radius: 13px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(31, 65, 112, .075);
}

.history-page .timeline__item--left .timeline__card {
  left: 0;
}

.history-page .timeline__item--right .timeline__card {
  right: 0;
}

.history-page .timeline__year {
  display: block;
  margin: 0;
  color: var(--history-blue);
  font-size: 1.63rem;
  font-weight: 750;
  line-height: 1;
  letter-spacing: -.02em;
}

.history-page .timeline__card .title-accent {
  display: block;
  width: 1.55rem;
  height: 2px;
  margin: .58rem 0 .65rem;
  border-radius: 999px;
  background: var(--history-orange);
}

.history-page .timeline__card h3 {
  margin: 0 0 .42rem;
  color: var(--aiedi-navy);
  font-size: 1.03rem;
  font-weight: 760;
  line-height: 1.2;
}

.history-page .timeline__card p {
  margin: 0;
  color: #263859;
  font-size: .78rem;
  line-height: 1.48;
}

.history-page .timeline__marker {
  position: absolute;
  z-index: 3;
  top: 50%;
  display: inline-flex;
  width: var(--history-icon);
  height: var(--history-icon);
  align-items: center;
  justify-content: center;
  transform: translateY(-50%);
  border: 1.5px solid #cfddf0;
  border-radius: 50%;
  color: #1762e8;
  background: #fff;
  box-shadow: 0 5px 14px rgba(35, 74, 126, .045);
}

.history-page .timeline__marker::after {
  content: "";
  position: absolute;
  inset: -2px;
  pointer-events: none;
  border: 2px solid transparent;
  border-top-color: var(--history-orange);
  border-right-color: var(--history-orange);
  border-radius: 50%;
  transform: rotate(8deg);
}

.history-page .timeline__item--left .timeline__marker {
  left: calc(50% + 20px);
}

.history-page .timeline__item--right .timeline__marker {
  right: calc(50% + 20px);
}

.history-page .timeline__marker .aiedi-icon--history {
  width: 42px;
  height: 42px;
  color: currentColor;
}

/* Keep the central node visibly above the connector exactly as in the mockup. */
.history-page .timeline__axis-dot::after {
  content: "";
  position: absolute;
  inset: -7px;
  border-radius: 50%;
  background: rgba(8, 100, 223, .08);
  z-index: -1;
}

@media (min-width: 721px) and (max-width: 900px) {
  .history-page .timeline-wrap {
    --history-card-w: 270px;
    width: min(100%, 700px);
  }

  .history-page .timeline {
    --history-card-w: 270px;
  }

  .history-page .timeline__item--left .timeline__marker {
    left: calc(50% + 18px);
  }

  .history-page .timeline__item--right .timeline__marker {
    right: calc(50% + 18px);
  }
}

@media (max-width: 720px) {
  .history-page .section--timeline {
    padding-top: 1.25rem;
  }

  .history-page .timeline-wrap {
    width: 100%;
  }

  .history-page .timeline {
    width: 100%;
    padding-left: 0;
  }

  .history-page .timeline__axis {
    left: 37px;
    transform: none;
  }

  .history-page .timeline__item,
  .history-page .timeline__item:last-child {
    min-height: 0;
    margin-bottom: 1.25rem;
    padding-left: 86px;
  }

  .history-page .timeline__axis-dot {
    top: 38px;
    left: 37px;
    transform: translate(-50%, -50%);
  }

  .history-page .timeline__connector {
    display: none;
  }

  .history-page .timeline__card,
  .history-page .timeline__item--left .timeline__card,
  .history-page .timeline__item--right .timeline__card {
    position: relative;
    top: auto;
    right: auto;
    left: auto;
    width: 100%;
    min-height: 0;
    padding: 1rem 1.1rem;
    transform: none;
  }

  .history-page .timeline__marker,
  .history-page .timeline__item--left .timeline__marker,
  .history-page .timeline__item--right .timeline__marker {
    top: 38px;
    right: auto;
    left: 0;
    width: 74px;
    height: 74px;
    transform: translateY(-50%);
  }

  .history-page .timeline__marker .aiedi-icon--history {
    width: 39px;
    height: 39px;
  }
}

@media (forced-colors: active) {
  .history-page .timeline__axis {
    display: block !important;
    border-left-style: dotted !important;
    border-left-width: 2px !important;
    border-left-color: CanvasText !important;
    background: transparent !important;
    color: CanvasText !important;
    opacity: 1 !important;
    visibility: visible !important;
  }

  .history-page .timeline__connector {
    background: none;
    border-top-color: CanvasText;
  }

  .history-page .timeline__axis-dot {
    border-color: Canvas;
    background: Highlight;
  }

  .history-page .timeline__marker,
  .history-page .timeline__card {
    border-color: CanvasText;
    color: CanvasText;
    background: Canvas;
    box-shadow: none;
  }

  .history-page .timeline__marker::after {
    display: none;
  }
}


/* ========================================================================== 
   HISTORIA 1.1.38 — eje DOM real + conectores resistentes a contraste
   El eje vertical ya no es ::before: es .timeline__axis, un elemento HTML
   real con border dotted. Así no desaparece cuando el plugin de contraste
   neutraliza pseudo-elementos o background-image.
   ========================================================================== */
.history-page .timeline__connector {
  background-image: none !important;
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
}

.history-page .timeline__axis {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  background: transparent !important;
}

/* Selectores tolerantes a distintos plugins/modos de contraste. No fijan
   amarillo, negro o blanco: heredan el color de primer plano activo. */
:is(html, body)[class*="contrast"] .history-page .timeline__axis,
:is(html, body)[class*="contraste"] .history-page .timeline__axis,
:is(html, body)[data-contrast] .history-page .timeline__axis,
:is(html, body)[data-contraste] .history-page .timeline__axis,
:is(html, body)[class*="contrast"] .history-page .timeline__connector,
:is(html, body)[class*="contraste"] .history-page .timeline__connector,
:is(html, body)[data-contrast] .history-page .timeline__connector,
:is(html, body)[data-contraste] .history-page .timeline__connector {
  color: currentColor !important;
  opacity: 1 !important;
  visibility: visible !important;
}

:is(html, body)[class*="contrast"] .history-page .timeline__axis,
:is(html, body)[class*="contraste"] .history-page .timeline__axis,
:is(html, body)[data-contrast] .history-page .timeline__axis,
:is(html, body)[data-contraste] .history-page .timeline__axis {
  border-left-style: dotted !important;
  border-left-width: 2px !important;
  border-left-color: currentColor !important;
}

:is(html, body)[class*="contrast"] .history-page .timeline__connector,
:is(html, body)[class*="contraste"] .history-page .timeline__connector,
:is(html, body)[data-contrast] .history-page .timeline__connector,
:is(html, body)[data-contraste] .history-page .timeline__connector {
  border-top-style: dotted !important;
  border-top-width: 2px !important;
  border-top-color: currentColor !important;
}

.history-page .timeline-wrap,
.history-page .timeline,
.history-page .timeline__axis,
.history-page .timeline__connector {
  forced-color-adjust: auto;
}

/* El apretón trazado desde la referencia es una silueta SVG rellena; no debe
   heredar el stroke general del set de iconos de Historia. */
.history-page .aiedi-icon--history .history-handshake-shape {
  fill: currentColor;
  stroke: none;
}


/* Equipo 1.1.41: los grupos con cuatro integrantes o menos no son carrusel.
   Se mantienen las tarjetas completas y no se muestran flechas/progreso falso. */
.team-group--static .team-scroller {
  overflow-x: visible;
  scroll-snap-type: none;
}
.team-group--static .team-card {
  scroll-snap-align: none;
  scroll-snap-stop: normal;
}


/* ========================================================================== 
   NOSOTROS 1.1.45 — feedback SOLO en la flecha interior
   El círculo permanece visualmente estable. El movimiento/feedback se aplica
   únicamente al SVG de la flecha, tal como solicita el diseño aprobado.
   ========================================================================== */
.about-page .explore-card,
.about-page .explore-card:hover,
.about-page .explore-card:focus-visible,
.about-page .explore-card:active {
  transform: none;
}

.about-page .explore-card:hover,
.about-page .explore-card:focus-visible {
  box-shadow: var(--aiedi-shadow-soft);
}

/* Anula el hover global de .circle-link dentro de estas dos tarjetas. */
.about-page .explore-card .circle-link,
.about-page .explore-card .circle-link:hover,
.about-page .explore-card:hover .circle-link,
.about-page .explore-card:focus-visible .circle-link,
.about-page .explore-card:active .circle-link {
  transform: none;
  background: #fff;
  box-shadow: none;
}

.about-page .explore-card--blue .circle-link,
.about-page .explore-card--blue .circle-link:hover,
.about-page .explore-card--blue:hover .circle-link,
.about-page .explore-card--blue:focus-visible .circle-link,
.about-page .explore-card--blue:active .circle-link {
  color: var(--aiedi-blue);
  border-color: var(--aiedi-blue);
}

.about-page .explore-card--gold .circle-link,
.about-page .explore-card--gold .circle-link:hover,
.about-page .explore-card--gold:hover .circle-link,
.about-page .explore-card--gold:focus-visible .circle-link,
.about-page .explore-card--gold:active .circle-link {
  color: var(--aiedi-orange-bright);
  border-color: var(--aiedi-orange-bright);
}

/* Solo la flechita responde: pequeño avance a la derecha y leve escala. */
.about-page .explore-card .circle-link .aiedi-icon {
  transform: translateX(0) scale(1);
  transform-origin: center;
  transition: transform .18s ease;
  will-change: transform;
}

.about-page .explore-card:hover .circle-link .aiedi-icon,
.about-page .explore-card:focus-visible .circle-link .aiedi-icon {
  transform: translateX(4px) scale(1.08);
}

.about-page .explore-card:active .circle-link .aiedi-icon {
  transform: translateX(6px) scale(.94);
}

@media (prefers-reduced-motion: reduce) {
  .about-page .explore-card .circle-link .aiedi-icon {
    transition: none;
  }
  .about-page .explore-card:hover .circle-link .aiedi-icon,
  .about-page .explore-card:focus-visible .circle-link .aiedi-icon,
  .about-page .explore-card:active .circle-link .aiedi-icon {
    transform: none;
  }
}

/* 1.1.46 — Testimonial initials fallback remains legible in contrast modes. */
.aiedi-high-contrast .about-page .testimonial-card__avatar--initials,
[data-aiedi-contrast] .about-page .testimonial-card__avatar--initials {
  background: CanvasText;
  color: Canvas;
  border: 1px solid CanvasText;
}
@media (forced-colors: active) {
  .about-page .testimonial-card__avatar--initials {
    forced-color-adjust: auto;
    background: ButtonText;
    color: ButtonFace;
    border: 1px solid ButtonText;
  }
}

/* 1.1.48 — Nosotros: feedback de Equipo/Historia solo en el borde circular.
   La flecha permanece completamente inmóvil; no se desplaza, escala ni anima. */
.about-page .explore-card .circle-link .aiedi-icon,
.about-page .explore-card:hover .circle-link .aiedi-icon,
.about-page .explore-card:focus-visible .circle-link .aiedi-icon,
.about-page .explore-card:active .circle-link .aiedi-icon,
.about-page .explore-card .circle-link:hover .aiedi-icon {
  transform: none !important;
  transition: none !important;
}

/* El feedback ocurre únicamente cuando el puntero llega al círculo de la flecha. */
.about-page .explore-card .circle-link {
  border-width: 1.5px;
  transition: border-color .16s ease, box-shadow .16s ease !important;
}

.about-page .explore-card--blue .circle-link:hover {
  color: var(--aiedi-blue);
  background: #fff;
  border-color: var(--aiedi-orange-bright);
  box-shadow: 0 0 0 3px rgba(255, 153, 0, .12);
}

.about-page .explore-card--gold .circle-link:hover {
  color: var(--aiedi-orange-bright);
  background: #fff;
  border-color: var(--aiedi-blue);
  box-shadow: 0 0 0 3px rgba(0, 91, 211, .10);
}

/* Foco de teclado: mismo principio, borde visible y flecha quieta. */
.about-page .explore-card--blue:focus-visible .circle-link {
  color: var(--aiedi-blue);
  background: #fff;
  border-color: var(--aiedi-orange-bright);
  box-shadow: 0 0 0 3px rgba(255, 153, 0, .12);
}

.about-page .explore-card--gold:focus-visible .circle-link {
  color: var(--aiedi-orange-bright);
  background: #fff;
  border-color: var(--aiedi-blue);
  box-shadow: 0 0 0 3px rgba(0, 91, 211, .10);
}

/* En contraste/colores forzados no dependemos del color de marca. */
@media (forced-colors: active) {
  .about-page .explore-card .circle-link:hover,
  .about-page .explore-card:focus-visible .circle-link {
    border-color: Highlight;
    box-shadow: none;
  }
}


/* ========================================================================== 
   HISTORIA 1.1.49 — tarjetas de altura dinámica para la cronología real
   Mantiene la composición aprobada, pero permite textos institucionales largos
   sin solaparse entre hitos consecutivos.
   ========================================================================== */
@media (min-width: 721px) {
  .history-page .timeline__item,
  .history-page .timeline__item:last-child {
    display: grid;
    grid-template-columns: var(--history-card-w) 1fr var(--history-card-w);
    align-items: center;
    min-height: 182px;
    padding-block: .7rem;
  }

  .history-page .timeline__card,
  .history-page .timeline__item--left .timeline__card,
  .history-page .timeline__item--right .timeline__card {
    position: relative;
    top: auto;
    right: auto;
    left: auto;
    width: var(--history-card-w);
    min-height: 132px;
    transform: none;
  }

  .history-page .timeline__item--left .timeline__card {
    grid-column: 1;
  }

  .history-page .timeline__item--right .timeline__card {
    grid-column: 3;
  }
}

/* ========================================================================== 
   HISTORIA 1.1.51 — alineación exacta de eje, nodos, conectores e iconos
   Mantiene el diseño aprobado y fija todos los elementos respecto del mismo
   eje central. Los círculos ya no dependen de left/right heredados.
   ========================================================================== */
@media (min-width: 721px) {
  .history-page .timeline-wrap,
  .history-page .timeline {
    --history-marker-offset: 98px;
  }

  .history-page .timeline__item {
    position: relative;
  }

  /* Nodo: centro matemático del eje y del hito. */
  .history-page .timeline__axis-dot {
    top: 50% !important;
    left: 50% !important;
    right: auto !important;
    transform: translate(-50%, -50%) !important;
  }

  /* Los dos círculos de icono usan el mismo origen (el eje central).
     translateX(-50%) hace que `left` represente el CENTRO del círculo. */
  .history-page .timeline__marker,
  .history-page .timeline__item--left .timeline__marker,
  .history-page .timeline__item--right .timeline__marker {
    top: 50% !important;
    right: auto !important;
    margin: 0 !important;
    transform: translate(-50%, -50%) !important;
  }

  .history-page .timeline__item--left .timeline__marker {
    left: calc(50% + var(--history-marker-offset)) !important;
  }

  .history-page .timeline__item--right .timeline__marker {
    left: calc(50% - var(--history-marker-offset)) !important;
  }

  /* Una única línea atraviesa el nodo central y llega exactamente al centro
     del círculo correspondiente, como en la referencia visual. */
  .history-page .timeline__connector,
  .history-page .timeline__item--left .timeline__connector,
  .history-page .timeline__item--right .timeline__connector {
    top: 50% !important;
    right: auto !important;
    height: 0 !important;
    margin: 0 !important;
    transform: translateY(-50%) !important;
  }

  .history-page .timeline__item--left .timeline__connector {
    left: var(--history-card-w) !important;
    width: calc(50% - var(--history-card-w) + var(--history-marker-offset)) !important;
  }

  .history-page .timeline__item--right .timeline__connector {
    left: calc(50% - var(--history-marker-offset)) !important;
    width: calc(50% - var(--history-card-w) + var(--history-marker-offset)) !important;
  }

  /* Evita que reglas antiguas de grid alteren visualmente el círculo. */
  .history-page .timeline__marker {
    grid-column: auto !important;
    grid-row: auto !important;
    justify-self: auto !important;
  }
}

@media (min-width: 721px) and (max-width: 900px) {
  .history-page .timeline-wrap,
  .history-page .timeline {
    --history-marker-offset: 88px;
  }
}

/* Centrado interno estable: elimina cualquier influencia de baseline del SVG. */
.history-page .timeline__marker {
  line-height: 0;
}
.history-page .timeline__marker .aiedi-icon,
.history-page .timeline__marker .aiedi-icon--history {
  display: block;
  flex: 0 0 auto;
  margin: 0;
  transform: none;
  transform-origin: center;
}

/* ========================================================================== 
   HISTORIA 1.1.54 - eje vertical por puntos DOM reales
   El modo de contraste de algunos plugins elimina o neutraliza borders.
   Por eso el eje ya no depende de border-left: usa puntos de texto reales
   distribuidos a lo largo del eje. Al ser contenido DOM, permanecen visibles
   en contraste negro, amarillo y forced-colors.
   ========================================================================== */
.history-page .timeline__axis {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  width: 0 !important;
  border-left: 0 !important;
  background: transparent !important;
  color: inherit !important;
  opacity: .42 !important;
  overflow: visible;
}

.history-page .timeline__axis-pip {
  display: block;
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  margin-left: -4px;
  color: inherit !important;
  font-family: Arial, sans-serif;
  font-size: 8px;
  font-style: normal;
  font-weight: 700;
  line-height: 8px;
  text-align: center;
  opacity: 1 !important;
  visibility: visible !important;
}

/* En los modos de contraste dejamos que el color de texto activo del propio
   modo gobierne los puntos: blanco sobre negro, negro sobre amarillo, etc. */
:is(html, body)[class*="contrast"] .history-page .timeline__axis,
:is(html, body)[class*="contraste"] .history-page .timeline__axis,
:is(html, body)[data-contrast] .history-page .timeline__axis,
:is(html, body)[data-contraste] .history-page .timeline__axis,
:is(html, body)[class*="contrast"] .history-page .timeline__axis-pip,
:is(html, body)[class*="contraste"] .history-page .timeline__axis-pip,
:is(html, body)[data-contrast] .history-page .timeline__axis-pip,
:is(html, body)[data-contraste] .history-page .timeline__axis-pip {
  color: inherit !important;
  opacity: 1 !important;
  visibility: visible !important;
}

@media (forced-colors: active) {
  .history-page .timeline__axis,
  .history-page .timeline__axis-pip {
    color: CanvasText !important;
    opacity: 1 !important;
    forced-color-adjust: auto;
  }
}

/* ========================================================================== 
   HISTORIA 1.1.55 — cierre fiel al mockup HISTORIA.png
   Tarjeta de propósito + bloque final con dos accesos en tarjetas.
   ========================================================================== */
.history-page .history-purpose-section {
  padding: 1.25rem 0 1.9rem;
}

.history-page .history-purpose-section > .container {
  width: min(100% - (2 * var(--aiedi-shell-gutter)), 1180px);
}

.history-page .history-purpose-card {
  position: relative;
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  gap: 2.2rem;
  align-items: center;
  min-height: 178px;
  padding: 1.8rem 4.3rem 1.8rem 4rem;
  overflow: hidden;
  border: 1px solid #f0e4d3;
  border-radius: 26px;
  background: linear-gradient(110deg, #fff9f0 0%, #fff 44%, #fff 100%);
  box-shadow: 0 8px 28px rgba(29, 63, 111, .045);
}

.history-page .history-purpose-card__icon {
  position: relative;
  z-index: 2;
  display: inline-flex;
  width: 128px;
  height: 128px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #1762e8;
  background: linear-gradient(145deg, #eaf4ff 0%, #d8e9ff 100%);
}

.history-page .history-purpose-card__icon .aiedi-icon {
  width: 72px;
  height: 72px;
  stroke-width: 1.65;
}

.history-page .history-purpose-card__copy {
  position: relative;
  z-index: 2;
  max-width: 760px;
}

.history-page .history-purpose-card__copy h2 {
  margin: 0;
  color: var(--aiedi-navy);
  font-size: clamp(1.45rem, 2.2vw, 2rem);
  line-height: 1.16;
}

.history-page .history-purpose-card__copy .title-accent {
  display: block;
  width: 2rem;
  height: 3px;
  margin: .7rem 0 1rem;
  border-radius: 999px;
  background: #ffa000;
}

.history-page .history-purpose-card__copy p {
  max-width: 760px;
  margin: 0;
  color: #2a3b59;
  font-size: 1rem;
  line-height: 1.62;
}

.history-page .history-purpose-card__dots {
  position: absolute;
  z-index: 1;
  width: 86px;
  height: 86px;
  opacity: .85;
  background-image: radial-gradient(circle, #2a7fff 1.5px, transparent 1.7px);
  background-size: 13px 13px;
  pointer-events: none;
}

.history-page .history-purpose-card__dots--left {
  left: 83px;
  top: 28px;
}

.history-page .history-purpose-card__dots--right {
  right: 26px;
  bottom: 20px;
}

.history-page .history-closing {
  padding: 0;
}

.history-page .history-closing__inner {
  position: relative;
  display: grid;
  grid-template-columns: minmax(260px, .86fr) minmax(560px, 1.72fr);
  gap: clamp(2rem, 4vw, 4.5rem);
  align-items: center;
  width: min(100%, 1440px);
  min-height: 220px;
  margin: 0 auto;
  padding: 2.6rem clamp(3rem, 6vw, 7rem);
  overflow: hidden;
  border-radius: 42px 42px 0 0;
  background: linear-gradient(110deg, #fff8ee 0%, #fff 60%, #fff 100%);
}

.history-page .history-closing__copy,
.history-page .history-closing__actions {
  position: relative;
  z-index: 3;
}

.history-page .history-closing__copy h2 {
  margin: 0;
  color: var(--aiedi-navy);
  font-size: clamp(1.9rem, 3vw, 2.8rem);
  line-height: 1.08;
  letter-spacing: -.025em;
}

.history-page .history-closing__copy h2 span {
  color: var(--aiedi-blue);
}

.history-page .history-closing__actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.4rem;
}

.history-page .history-action-card {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr) 34px;
  gap: 1rem;
  align-items: center;
  min-height: 112px;
  padding: 1rem 1.25rem 1rem 1rem;
  border: 1px solid #edf0f4;
  border-radius: 16px;
  color: var(--aiedi-navy);
  background: #fff;
  box-shadow: 0 8px 20px rgba(22, 52, 96, .13);
  text-decoration: none;
  transition: border-color .18s ease, box-shadow .18s ease;
}

.history-page .history-action-card:hover,
.history-page .history-action-card:focus-visible {
  border-color: #b9c9df;
  box-shadow: 0 10px 24px rgba(22, 52, 96, .17);
}

.history-page .history-action-card__icon {
  display: inline-flex;
  width: 68px;
  height: 68px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #fff;
}

.history-page .history-action-card--team .history-action-card__icon {
  background: #0864df;
}

.history-page .history-action-card--about .history-action-card__icon {
  background: #ffa000;
}

.history-page .history-action-card__icon .aiedi-icon {
  width: 39px;
  height: 39px;
  stroke-width: 1.8;
}

.history-page .history-action-card__label {
  font-size: 1.05rem;
  font-weight: 750;
  line-height: 1.25;
}

.history-page .history-action-card__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #1762e8;
}

.history-page .history-action-card__arrow .aiedi-icon {
  width: 30px;
  height: 30px;
  stroke-width: 2.15;
}

.history-page .history-action-card--about .history-action-card__arrow {
  color: #1762e8;
}

.history-page .history-closing__curve {
  position: absolute;
  z-index: 1;
  left: -42px;
  top: 4px;
  width: 122px;
  height: 186px;
  border: 2px solid #ffa000;
  border-right: 0;
  border-radius: 70px 0 0 70px;
  transform: translateX(0);
  pointer-events: none;
}

.history-page .history-closing__blue-shape {
  position: absolute;
  z-index: 1;
  right: -78px;
  bottom: -112px;
  width: 350px;
  height: 225px;
  border-radius: 58% 0 0 0;
  background: linear-gradient(135deg, #0874f3 0%, #0050c8 78%);
  transform: rotate(-7deg);
  pointer-events: none;
}

.history-page .history-closing__dots {
  position: absolute;
  z-index: 2;
  right: 38px;
  bottom: 23px;
  width: 92px;
  height: 70px;
  opacity: .86;
  background-image: radial-gradient(circle, rgba(255,255,255,.95) 1.5px, transparent 1.7px);
  background-size: 13px 13px;
  pointer-events: none;
}

@media (max-width: 980px) {
  .history-page .history-purpose-card {
    grid-template-columns: 116px 1fr;
    gap: 1.5rem;
    padding: 1.5rem 2rem;
  }

  .history-page .history-purpose-card__icon {
    width: 104px;
    height: 104px;
  }

  .history-page .history-purpose-card__icon .aiedi-icon {
    width: 58px;
    height: 58px;
  }

  .history-page .history-closing__inner {
    grid-template-columns: 1fr;
    gap: 1.8rem;
    padding: 2.4rem 3rem 3rem;
  }

  .history-page .history-closing__copy h2 br {
    display: none;
  }
}

@media (max-width: 720px) {
  .history-page .history-purpose-section {
    padding: .8rem 0 1.35rem;
  }

  .history-page .history-purpose-card {
    grid-template-columns: 1fr;
    gap: 1rem;
    padding: 1.35rem;
    border-radius: 20px;
  }

  .history-page .history-purpose-card__icon {
    width: 86px;
    height: 86px;
  }

  .history-page .history-purpose-card__icon .aiedi-icon {
    width: 48px;
    height: 48px;
  }

  .history-page .history-purpose-card__dots--left {
    left: auto;
    right: 84px;
    top: 18px;
  }

  .history-page .history-purpose-card__dots--right {
    right: 12px;
    bottom: 10px;
  }

  .history-page .history-closing__inner {
    min-height: 0;
    padding: 2rem var(--aiedi-shell-gutter) 3rem;
    border-radius: 26px 26px 0 0;
  }

  .history-page .history-closing__actions {
    grid-template-columns: 1fr;
  }

  .history-page .history-action-card {
    min-height: 94px;
    grid-template-columns: 60px 1fr 30px;
  }

  .history-page .history-action-card__icon {
    width: 56px;
    height: 56px;
  }

  .history-page .history-action-card__icon .aiedi-icon {
    width: 32px;
    height: 32px;
  }

  .history-page .history-closing__blue-shape {
    right: -120px;
    bottom: -135px;
    width: 300px;
    height: 210px;
    opacity: .9;
  }

  .history-page .history-closing__dots {
    right: 12px;
    bottom: 15px;
  }
}

@media (forced-colors: active) {
  .history-page .history-purpose-card,
  .history-page .history-action-card,
  .history-page .history-purpose-card__icon,
  .history-page .history-action-card__icon {
    border: 1px solid CanvasText;
    background: Canvas;
    color: CanvasText;
    box-shadow: none;
  }

  .history-page .history-purpose-card__dots,
  .history-page .history-closing__dots,
  .history-page .history-closing__blue-shape,
  .history-page .history-closing__curve {
    display: none;
  }
}

/* ========================================================================== 
   HISTORIA 1.1.56 — puntos verticales idénticos a los horizontales
   Tanto el eje central como los conectores usan exactamente el mismo punto
   tipográfico real del DOM. Así coinciden en tamaño, separación y contraste.
   ========================================================================== */
.history-page .timeline__axis,
.history-page .timeline__connector {
  border: 0 !important;
  background: transparent !important;
  color: var(--history-axis) !important;
  opacity: 1 !important;
  visibility: visible !important;
  overflow: hidden;
  pointer-events: none;
}

.history-page .timeline__axis {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 2px;
  width: 6px !important;
  transform: translateX(-50%);
}

.history-page .timeline__connector,
.history-page .timeline__item--left .timeline__connector,
.history-page .timeline__item--right .timeline__connector {
  display: flex !important;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: 2px;
  height: 6px !important;
  transform: translateY(-50%) !important;
  white-space: nowrap;
}

.history-page .timeline__line-dot {
  display: block;
  flex: 0 0 4px;
  width: 4px;
  height: 4px;
  margin: 0;
  padding: 0;
  color: currentColor !important;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 4px;
  font-style: normal;
  font-weight: 700;
  line-height: 4px;
  text-align: center;
  opacity: 1 !important;
  visibility: visible !important;
  forced-color-adjust: auto;
}

.history-page .timeline__axis-pip,
.history-page .timeline__connector-pip {
  color: currentColor !important;
}

:is(html, body)[class*="contrast"] .history-page .timeline__axis,
:is(html, body)[class*="contraste"] .history-page .timeline__axis,
:is(html, body)[data-contrast] .history-page .timeline__axis,
:is(html, body)[data-contraste] .history-page .timeline__axis,
:is(html, body)[class*="contrast"] .history-page .timeline__connector,
:is(html, body)[class*="contraste"] .history-page .timeline__connector,
:is(html, body)[data-contrast] .history-page .timeline__connector,
:is(html, body)[data-contraste] .history-page .timeline__connector,
:is(html, body)[class*="contrast"] .history-page .timeline__line-dot,
:is(html, body)[class*="contraste"] .history-page .timeline__line-dot,
:is(html, body)[data-contrast] .history-page .timeline__line-dot,
:is(html, body)[data-contraste] .history-page .timeline__line-dot {
  color: inherit !important;
  opacity: 1 !important;
  visibility: visible !important;
}

@media (max-width: 720px) {
  .history-page .timeline__axis {
    left: 37px;
    transform: translateX(-50%);
  }

  .history-page .timeline__connector {
    display: none !important;
  }
}

@media (forced-colors: active) {
  .history-page .timeline__axis,
  .history-page .timeline__connector,
  .history-page .timeline__line-dot {
    color: CanvasText !important;
    opacity: 1 !important;
    forced-color-adjust: auto;
  }
}

/* ========================================================================== 
   HISTORIA 1.1.57 — eje más visible y resistente al contraste AIEDI
   Los puntos verticales y horizontales comparten exactamente el mismo tamaño,
   separación y color. Se incluyen los selectores reales del modo de contraste
   de AIEDI para que el eje vertical no desaparezca sobre negro/amarillo.
   ========================================================================== */
.history-page .timeline-wrap,
.history-page .timeline {
  --history-axis: #5f8fd8;
}

.history-page .timeline__axis,
.history-page .timeline__connector,
.history-page .timeline__item--left .timeline__connector,
.history-page .timeline__item--right .timeline__connector {
  color: var(--history-axis) !important;
  opacity: 1 !important;
  visibility: visible !important;
}

.history-page .timeline__axis {
  width: 8px !important;
  overflow: visible !important;
  gap: 2px !important;
}

.history-page .timeline__connector,
.history-page .timeline__item--left .timeline__connector,
.history-page .timeline__item--right .timeline__connector {
  height: 8px !important;
  overflow: hidden !important;
  gap: 2px !important;
}

.history-page .timeline__line-dot,
.history-page .timeline__axis-pip,
.history-page .timeline__connector-pip {
  display: block !important;
  flex: 0 0 6px !important;
  width: 6px !important;
  height: 6px !important;
  min-width: 6px !important;
  min-height: 6px !important;
  margin: 0 !important;
  padding: 0 !important;
  color: currentColor !important;
  font-family: Arial, Helvetica, sans-serif !important;
  font-size: 6px !important;
  font-weight: 900 !important;
  line-height: 6px !important;
  text-align: center !important;
  opacity: 1 !important;
  visibility: visible !important;
  -webkit-text-fill-color: currentColor !important;
  text-shadow: 0 0 0 currentColor !important;
  forced-color-adjust: auto;
}

/* El plugin AIEDI usa estas variantes para alto contraste. El eje adopta
   deliberadamente el color de texto del modo activo: blanco sobre negro y
   negro sobre amarillo. No fijamos azul dentro del contraste. */
.aiedi-high-contrast .history-page .timeline__axis,
.aiedi-high-contrast .history-page .timeline__connector,
.aiedi-high-contrast .history-page .timeline__line-dot,
[data-aiedi-contrast] .history-page .timeline__axis,
[data-aiedi-contrast] .history-page .timeline__connector,
[data-aiedi-contrast] .history-page .timeline__line-dot,
:is(html, body)[class*="contrast"] .history-page .timeline__axis,
:is(html, body)[class*="contraste"] .history-page .timeline__axis,
:is(html, body)[data-contrast] .history-page .timeline__axis,
:is(html, body)[data-contraste] .history-page .timeline__axis,
:is(html, body)[class*="contrast"] .history-page .timeline__connector,
:is(html, body)[class*="contraste"] .history-page .timeline__connector,
:is(html, body)[data-contrast] .history-page .timeline__connector,
:is(html, body)[data-contraste] .history-page .timeline__connector,
:is(html, body)[class*="contrast"] .history-page .timeline__line-dot,
:is(html, body)[class*="contraste"] .history-page .timeline__line-dot,
:is(html, body)[data-contrast] .history-page .timeline__line-dot,
:is(html, body)[data-contraste] .history-page .timeline__line-dot {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
  opacity: 1 !important;
  visibility: visible !important;
}

/* Respaldo específico para el contraste oscuro del plugin: incluso si una
   regla global cambia el color de spans, la línea conserva contraste 7:1+. */
.aiedi-high-contrast .history-page .timeline__axis,
.aiedi-high-contrast .history-page .timeline__connector {
  color: #fff !important;
}
.aiedi-high-contrast .history-page .timeline__line-dot {
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

@media (forced-colors: active) {
  .history-page .timeline__axis,
  .history-page .timeline__connector,
  .history-page .timeline__line-dot,
  .history-page .timeline__axis-pip,
  .history-page .timeline__connector-pip {
    color: CanvasText !important;
    -webkit-text-fill-color: CanvasText !important;
    opacity: 1 !important;
    visibility: visible !important;
    forced-color-adjust: auto;
  }
}


/* ==========================================================================
   HISTORIA 1.1.59 — ajustes finales solicitados
   - El eje termina exactamente con la cronologia y no invade los bloques
     posteriores.
   - Los puntos verticales y horizontales comparten el mismo nodo circular.
   - Deteccion de contraste oscuro/amarillo reforzada por JS.
   - Icono de proposito mas pequeno y con la mano completamente visible.
   - Se eliminan los patrones de puntos decorativos de la tarjeta de proposito.
   ========================================================================== */
.history-page .timeline__axis {
  overflow: hidden !important;
  justify-content: flex-start !important;
  gap: 3px !important;
}

.history-page .timeline__connector,
.history-page .timeline__item--left .timeline__connector,
.history-page .timeline__item--right .timeline__connector {
  overflow: hidden !important;
  gap: 3px !important;
}

.history-page .timeline__line-dot,
.history-page .timeline__axis-pip,
.history-page .timeline__connector-pip {
  display: inline-flex !important;
  flex: 0 0 7px !important;
  width: 7px !important;
  height: 7px !important;
  min-width: 7px !important;
  min-height: 7px !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  padding: 0 !important;
  color: currentColor !important;
  font-size: 0 !important;
  line-height: 0 !important;
  opacity: 1 !important;
  visibility: visible !important;
  forced-color-adjust: none;
}

.history-page .timeline__dot-core {
  display: block !important;
  width: 3px !important;
  height: 3px !important;
  min-width: 3px !important;
  min-height: 3px !important;
  box-sizing: border-box !important;
  border: 1px solid currentColor !important;
  border-radius: 50% !important;
  background: currentColor !important;
  color: inherit !important;
  opacity: 1 !important;
  visibility: visible !important;
  forced-color-adjust: none;
}

/* El ultimo hito cierra el eje: ningun punto puede continuar hacia la tarjeta
   de proposito ni hacia el CTA inferior. */
.history-page .timeline__item:last-child {
  margin-bottom: 0 !important;
}
.history-page .timeline-wrap {
  overflow: hidden !important;
}

/* Estado calculado segun el color realmente renderizado, independiente del
   nombre de clase que utilice el plugin de accesibilidad. */
html.aiedi-history-dark .history-page .timeline__axis,
html.aiedi-history-dark .history-page .timeline__connector,
html.aiedi-history-dark .history-page .timeline__line-dot,
html.aiedi-history-dark .history-page .timeline__dot-core {
  color: #fff !important;
  border-color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}
html.aiedi-history-yellow .history-page .timeline__axis,
html.aiedi-history-yellow .history-page .timeline__connector,
html.aiedi-history-yellow .history-page .timeline__line-dot,
html.aiedi-history-yellow .history-page .timeline__dot-core {
  color: #000 !important;
  border-color: #000 !important;
  -webkit-text-fill-color: #000 !important;
}

.history-page .history-purpose-card {
  grid-template-columns: 122px minmax(0, 1fr) !important;
  gap: 1.8rem !important;
}
.history-page .history-purpose-card__icon {
  width: 108px !important;
  height: 108px !important;
}
.history-page .history-purpose-card__icon .aiedi-icon {
  width: 50px !important;
  height: 50px !important;
  stroke-width: 1.55 !important;
  overflow: visible !important;
}
.history-page .history-purpose-card__dots,
.history-page .history-purpose-card__dots--left,
.history-page .history-purpose-card__dots--right {
  display: none !important;
}

@media (max-width: 980px) {
  .history-page .history-purpose-card {
    grid-template-columns: 100px minmax(0, 1fr) !important;
  }
  .history-page .history-purpose-card__icon {
    width: 92px !important;
    height: 92px !important;
  }
  .history-page .history-purpose-card__icon .aiedi-icon {
    width: 44px !important;
    height: 44px !important;
  }
}

@media (max-width: 720px) {
  .history-page .history-purpose-card {
    grid-template-columns: 1fr !important;
  }
  .history-page .history-purpose-card__icon {
    width: 82px !important;
    height: 82px !important;
  }
  .history-page .history-purpose-card__icon .aiedi-icon {
    width: 40px !important;
    height: 40px !important;
  }
}

@media (forced-colors: active) {
  .history-page .timeline__dot-core {
    color: CanvasText !important;
    border-color: CanvasText !important;
    background: CanvasText !important;
    forced-color-adjust: none;
  }
}

/* ========================================================================== 
   HISTORIA 1.1.60 — contraste del eje + cierre full bleed + footer limpio
   ========================================================================== */

/* El plugin de accesibilidad puede aplicar fondo a cada elemento de la
   cronologia. En ese caso el eje, si queda por debajo de los <li>, desaparece.
   Lo elevamos por encima de cualquier fondo aplicado por el plugin, manteniendo
   las tarjetas por debajo y los nodos centrales por encima. */
.history-page .timeline-wrap {
  isolation: isolate;
}

.history-page .timeline__axis {
  z-index: 3 !important;
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: none !important;
}

.history-page .timeline__card {
  z-index: 2 !important;
}

.history-page .timeline__connector {
  z-index: 3 !important;
}

.history-page .timeline__marker {
  z-index: 4 !important;
}

.history-page .timeline__axis-dot {
  z-index: 5 !important;
}

/* Contraste amarillo/oscuro: la geometria de los puntos no depende de un
   background decorativo ni queda debajo de las capas de contraste. */
html.aiedi-history-dark .history-page .timeline__axis,
html.aiedi-history-yellow .history-page .timeline__axis,
html.aiedi-history-dark .history-page .timeline__connector,
html.aiedi-history-yellow .history-page .timeline__connector,
.aiedi-high-contrast .history-page .timeline__axis,
.aiedi-high-contrast .history-page .timeline__connector,
[data-aiedi-contrast] .history-page .timeline__axis,
[data-aiedi-contrast] .history-page .timeline__connector {
  z-index: 3 !important;
  opacity: 1 !important;
  visibility: visible !important;
  mix-blend-mode: normal !important;
  filter: none !important;
}

html.aiedi-history-dark .history-page .timeline__dot-core {
  color: #fff !important;
  background: #fff !important;
  border-color: #fff !important;
  box-shadow: 0 0 0 1px #000 !important;
}

html.aiedi-history-yellow .history-page .timeline__dot-core {
  color: #000 !important;
  background: #000 !important;
  border-color: #000 !important;
  box-shadow: none !important;
}

/* El cierre de Historia debe ocupar todo el ancho de la ventana, como en el
   mockup aprobado; el contenido sigue teniendo respiracion interna. */
.history-page .history-closing {
  width: 100%;
  max-width: none;
  margin: 0;
}

.history-page .history-closing__inner {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-inline: clamp(2.5rem, 7vw, 7.5rem) !important;
  border-radius: 0 !important;
}

@media (max-width: 980px) {
  .history-page .history-closing__inner {
    padding-inline: clamp(1.5rem, 5vw, 3rem) !important;
  }
}

@media (max-width: 720px) {
  .history-page .history-closing__inner {
    padding-inline: var(--aiedi-shell-gutter) !important;
    border-radius: 0 !important;
  }
}

/* El gran circulo azul del footer no forma parte del diseño final. */
.site-footer::after {
  content: none !important;
  display: none !important;
}


/* ================================================================
   AIEDI 1.1.61 — footer institucional + cierre de Historia limpio
   ================================================================ */

/* La línea/curva amarilla lateral no forma parte del cierre aprobado. */
.history-page .history-closing__curve {
  display: none !important;
}

/* Footer: cuatro redes sociales (LinkedIn, Instagram, Facebook y TikTok).
   Los perfiles aún no configurados mantienen el icono visual sin crear
   enlaces falsos o vacíos. */
.site-footer .social-links__static {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 1.5px solid #79a5fb;
  border-radius: 50%;
  color: var(--aiedi-blue);
  background: #fff;
}

.site-footer .social-links__static .aiedi-icon {
  width: 1.25rem;
  height: 1.25rem;
}

.site-footer__contact .footer-contact-list {
  max-width: 330px;
}

@media (max-width: 1120px) {
  .site-footer .social-links__static {
    width: 36px;
    height: 36px;
  }
}

@media (forced-colors: active) {
  .site-footer .social-links__static {
    border-color: ButtonText;
    color: ButtonText;
    background: Canvas;
    forced-color-adjust: auto;
  }
}


/* ================================================================
   AIEDI 1.1.62 — redes institucionales alineadas en una sola fila
   ================================================================ */

/* El bloque social del footer debe mantenerse horizontal: cuatro iconos en
   una sola línea, sin que TikTok caiga a una segunda fila. */
.site-footer__grid--with-social {
  grid-template-columns:
    minmax(220px, 1.25fr)
    minmax(120px, .62fr)
    minmax(175px, .88fr)
    minmax(270px, 1.2fr)
    minmax(215px, .92fr);
  gap: clamp(1rem, 1.8vw, 2rem);
}

.site-footer__social {
  min-width: 0;
}

.site-footer .site-footer__social-row,
.site-footer .social-links {
  display: flex;
  flex-wrap: nowrap !important;
  align-items: center;
  justify-content: flex-start;
  gap: .55rem;
  width: max-content;
  max-width: 100%;
  margin: 0;
  padding: 0;
}

.site-footer .site-footer__social-row li,
.site-footer .social-links li {
  flex: 0 0 auto;
  margin: 0;
}

/* Contacto reutiliza las mismas cuatro redes y conserva una única fila. */
.contact-page .contact-social-links--institutional,
.contact-page .contact-social-links {
  display: flex;
  flex-wrap: nowrap !important;
  align-items: center;
  gap: .78rem;
}

.contact-page .contact-social-links--institutional li,
.contact-page .contact-social-links li {
  flex: 0 0 auto;
}

@media (max-width: 1120px) and (min-width: 921px) {
  .site-footer__grid--with-social {
    grid-template-columns:
      minmax(185px, 1.08fr)
      minmax(88px, .52fr)
      minmax(128px, .76fr)
      minmax(180px, 1.04fr)
      minmax(170px, .90fr);
    column-gap: clamp(.75rem, 1.2vw, 1rem);
  }

  .site-footer .site-footer__social-row,
  .site-footer .social-links {
    gap: .38rem;
  }

  .site-footer .site-footer__social-row a,
  .site-footer .site-footer__social-row .social-links__static,
  .site-footer .social-links a,
  .site-footer .social-links__static {
    width: 36px;
    height: 36px;
  }
}

@media (max-width: 480px) {
  .site-footer .site-footer__social-row,
  .site-footer .social-links {
    width: auto;
    max-width: 100%;
    gap: .5rem;
  }
}

/* ================================================================
   AIEDI 1.2.9 — footer blanco conservando el responsive de 1.2.8
   ================================================================ */
.site-footer {
  border-top: 1px solid #edf1f6;
  color: var(--aiedi-text);
  background: #fff;
}

.site-footer > .container {
  padding-inline: clamp(1.25rem, 4vw, 4rem);
}

.site-footer__brand > a {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  padding: 0;
  border-radius: 0;
  background: transparent;
}

.site-footer__brand p {
  color: var(--aiedi-muted) !important;
}

.site-footer__copyright {
  color: var(--aiedi-navy) !important;
}

.site-footer__heading {
  color: var(--aiedi-blue) !important;
  font-weight: 800;
}

.site-footer .footer-menu a {
  color: var(--aiedi-text) !important;
}

.site-footer .footer-contact-list li,
.site-footer .footer-contact-list a,
.site-footer .footer-contact-list span {
  color: var(--aiedi-muted) !important;
}

.site-footer .footer-menu a:hover,
.site-footer .footer-contact-list a:hover {
  color: var(--aiedi-blue) !important;
  text-decoration-thickness: 2px;
}

.site-footer .footer-contact-list .aiedi-icon {
  color: var(--aiedi-blue);
}

.site-footer .site-footer__social-row a,
.site-footer .social-links a,
.site-footer .social-links__static {
  border-color: #79a5fb;
  color: var(--aiedi-blue);
  background: #fff;
}

.site-footer .site-footer__social-row a:hover,
.site-footer .social-links a:hover {
  color: #fff;
  background: var(--aiedi-blue);
}

.site-footer__grid--with-social,
.site-footer__grid--without-social {
  min-width: 0;
}

.site-footer__grid > *,
.site-footer__column,
.site-footer__brand,
.site-footer__contact,
.site-footer__social {
  min-width: 0;
}

.site-footer .footer-menu a,
.site-footer .footer-contact-list a,
.site-footer .footer-contact-list span,
.site-footer__brand p {
  overflow-wrap: anywhere;
}

@media (max-width: 920px) {
  .site-footer {
    padding: 2.2rem 0 1.8rem;
  }

  .site-footer__grid,
  .site-footer__grid--with-social,
  .site-footer__grid--without-social {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(1.25rem, 5vw, 2.5rem);
    row-gap: 1.7rem;
    width: 100%;
  }

  .site-footer__brand {
    grid-column: 1 / -1;
  }

  .site-footer__brand p {
    max-width: 36rem;
  }

  .site-footer__contact .footer-contact-list {
    max-width: 100%;
  }

  .site-footer .site-footer__social-row,
  .site-footer .social-links {
    width: auto;
    max-width: 100%;
    flex-wrap: wrap !important;
  }
}

@media (max-width: 640px) {
  .site-footer {
    padding: 2rem 0 1.5rem;
  }

  .site-footer > .container {
    padding-inline: clamp(1rem, 5vw, 1.35rem);
  }

  .site-footer__grid,
  .site-footer__grid--with-social,
  .site-footer__grid--without-social {
    grid-template-columns: minmax(0, 1fr);
    gap: 1.45rem;
  }

  .site-footer__brand {
    grid-column: auto;
  }

  .site-footer__brand img {
    width: 126px;
  }

  .site-footer__brand p,
  .site-footer__copyright,
  .site-footer .footer-menu a,
  .site-footer .footer-contact-list li {
    font-size: .78rem;
    line-height: 1.55;
  }

  .site-footer__heading {
    margin-bottom: .55rem;
    font-size: .83rem;
  }

  .site-footer .footer-menu li,
  .site-footer .footer-contact-list li {
    margin-bottom: .42rem;
  }

  .site-footer .site-footer__social-row,
  .site-footer .social-links {
    flex-wrap: nowrap !important;
    gap: .55rem;
  }
}

/* Privacy policy 1.2.13: readable legal content aligned with Peru LPDP. */
.legal-section__content {
  color: var(--aiedi-muted);
}
.legal-section__content p {
  margin: 0;
  color: inherit;
}
.legal-section__content p + p,
.legal-section__content p + ul,
.legal-section__content ul + p {
  margin-top: .8rem;
}
.legal-section__content ul {
  margin: .8rem 0 0;
  padding-left: 1.25rem;
}
.legal-section__content li + li {
  margin-top: .45rem;
}
.legal-section__content strong {
  color: var(--aiedi-navy);
  font-weight: 700;
}
.legal-section__content a {
  color: var(--aiedi-blue);
  text-decoration-thickness: .1em;
  text-underline-offset: .18em;
}
.legal-section__content a:hover,
.legal-section__content a:focus-visible {
  text-decoration-thickness: .16em;
}

/* ========================================================================== 
   Política de privacidad 1.2.14 — iconografía semántica, única y coherente
   ========================================================================== */
.privacy-policy-page .legal-section .icon-bubble,
.privacy-policy-page .legal-sidebar .icon-bubble {
  color: var(--aiedi-blue);
  background: linear-gradient(145deg, #f4f9ff, #eaf3ff);
  border: 1px solid #d7e7fb;
  box-shadow: 0 8px 24px rgba(20, 76, 145, .08);
}

.privacy-policy-page .legal-section .aiedi-icon--privacy {
  width: 1.9rem;
  height: 1.9rem;
  stroke-width: 1.75;
  overflow: visible;
}

.privacy-policy-page .legal-sidebar .aiedi-icon--privacy {
  width: 1.55rem;
  height: 1.55rem;
  stroke-width: 1.8;
  overflow: visible;
}

.privacy-policy-page .quick-links__number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 999px;
  color: #fff;
  background: var(--aiedi-blue);
  font-size: .72rem;
  font-weight: 800;
  line-height: 1;
}

.privacy-policy-page .quick-links a:hover .quick-links__number,
.privacy-policy-page .quick-links a:focus-visible .quick-links__number {
  background: var(--aiedi-blue-dark);
}

@media (max-width: 720px) {
  .privacy-policy-page .legal-section .icon-bubble {
    width: 3.15rem;
    height: 3.15rem;
    flex-basis: 3.15rem;
  }

  .privacy-policy-page .legal-section .aiedi-icon--privacy {
    width: 1.7rem;
    height: 1.7rem;
  }
}

@media (forced-colors: active) {
  .privacy-policy-page .legal-section .icon-bubble,
  .privacy-policy-page .legal-sidebar .icon-bubble,
  .privacy-policy-page .quick-links__number {
    color: ButtonText;
    background: Canvas;
    border: 1px solid ButtonText;
    box-shadow: none;
    forced-color-adjust: none;
  }
}



@media (max-width: 920px) {
  .site-main .container.contact-strip--claims {
    width: calc(100% - (2 * var(--aiedi-shell-gutter)));
    max-width: none;
  }
  .contact-strip--claims {
    grid-template-columns: 1fr;
    justify-content: stretch;
    gap: 1.25rem;
  }
  .contact-strip--claims .contact-strip__links {
    min-width: 0;
    padding: 1rem 0 0;
    border-left: 0;
    border-top: 1px solid var(--aiedi-border);
  }
}


@media (max-width: 600px) {
  .contact-strip--claims {
    padding: 1.2rem;
  }
  .contact-strip--claims .contact-strip__message {
    gap: .8rem;
  }
  .contact-strip--claims .contact-strip__message p {
    font-size: 1rem;
    line-height: 1.55;
  }
  .contact-strip--claims .contact-strip__links {
    gap: .65rem;
  }
  .contact-strip--claims .contact-strip__links a {
    width: 100%;
    overflow-wrap: anywhere;
  }
}

/* ========================================================================== 
   1.2.41 — Normalizacion global de heroes + hover de "Que hacemos"
   Todos los heroes WebP institucionales comparten ahora el mismo canvas,
   escala, alineacion y ritmo vertical. Se evita cualquier margen negativo o
   recorte del arte precompuesto y se iguala la separacion con la primera
   seccion de contenido.
   ========================================================================== */
:root {
  --aiedi-hero-art-size: clamp(500px, 38vw, 610px);
  --aiedi-hero-space-top: clamp(1rem, 1.8vw, 1.6rem);
  --aiedi-hero-space-bottom: clamp(1.5rem, 2.3vw, 2.25rem);
  --aiedi-hero-content-gap: clamp(1.75rem, 3.4vw, 4rem);
  --aiedi-after-hero-space: clamp(1.75rem, 2.5vw, 2.35rem);
}

/* Shared hero shell: identical vertical rhythm on every standard page. */
.site-main > .hero--shared-artwork {
  padding: var(--aiedi-hero-space-top) 0 var(--aiedi-hero-space-bottom) !important;
  overflow: visible !important;
}

.site-main > .hero--shared-artwork .container {
  overflow: visible;
}

.site-main > .hero--shared-artwork .breadcrumbs {
  margin: 0 0 1rem !important;
}

.site-main > .hero--shared-artwork .hero__grid,
.site-main > .hero--legal.hero--shared-artwork .hero__grid,
.site-main > .hero--archive.hero--shared-artwork .hero__grid {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
  gap: var(--aiedi-hero-content-gap) !important;
  align-items: center !important;
  min-height: var(--aiedi-hero-art-size);
}

.site-main > .hero--shared-artwork .hero__content {
  align-self: center;
  padding-block: 0 !important;
}

/* Same right-column position and same square canvas for every 1254x1254 WebP. */
.site-main > .hero--shared-artwork .hero__visual,
.home .hero--shared-artwork .hero__visual {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  width: 100% !important;
  min-height: 0 !important;
  height: auto !important;
  margin: 0 !important;
  overflow: visible !important;
}

.site-main > .hero--shared-artwork .hero__image-wrap,
.home .hero--shared-artwork .hero__image-wrap,
.site-main > .hero--legal.hero--shared-artwork .hero__image-wrap,
.site-main > .hero--archive.hero--shared-artwork .hero__image-wrap {
  position: relative !important;
  inset: auto !important;
  width: var(--aiedi-hero-art-size) !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  aspect-ratio: 1 / 1 !important;
  margin: 0 !important;
  overflow: visible !important;
  border: 0 !important;
  border-radius: 0 !important;
  clip-path: none !important;
  box-shadow: none !important;
  background: transparent !important;
}

.site-main > .hero--shared-artwork .hero__image,
.home .hero--shared-artwork .hero__image {
  display: block;
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  object-fit: contain !important;
  object-position: center center !important;
}

/* Do not push any institutional hero outside the viewport. */
.site-main > .hero--shared-artwork:not(.hero--legal):not(.hero--archive) .hero__visual,
.site-main > .hero--shared-artwork:not(.hero--legal):not(.hero--archive) .hero__image-wrap {
  margin-right: 0 !important;
}

/* The first content section always starts at the same distance from the hero. */
.site-main > .hero--shared-artwork + .section {
  margin-top: 0 !important;
  padding-top: var(--aiedi-after-hero-space) !important;
}

/* Contact has its own markup but follows exactly the same image scale/rhythm. */
.contact-page .contact-hero {
  padding: var(--aiedi-hero-space-top) 0 var(--aiedi-hero-space-bottom) !important;
  overflow: visible !important;
}

.contact-page .contact-hero__grid {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
  gap: var(--aiedi-hero-content-gap) !important;
  align-items: center !important;
  min-height: var(--aiedi-hero-art-size);
}

.contact-page .contact-hero__visual {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  min-height: 0 !important;
  margin: 0 !important;
  overflow: visible !important;
}

.contact-page .contact-hero__image {
  display: block;
  width: var(--aiedi-hero-art-size) !important;
  max-width: 100% !important;
  height: auto !important;
  aspect-ratio: 1 / 1;
  object-fit: contain !important;
  object-position: center center !important;
  margin: 0 !important;
}

.contact-page .contact-hero + .section--contact-form {
  margin-top: 0 !important;
  padding-top: var(--aiedi-after-hero-space) !important;
}

/* The service arrow in "Que hacemos" now visibly reacts to mouse and keyboard. */
.home .knowledge-item .circle-link {
  transition: transform .2s ease, background-color .2s ease, color .2s ease,
    border-color .2s ease, box-shadow .2s ease !important;
}

.home .knowledge-item .circle-link .aiedi-icon {
  transition: transform .2s ease !important;
}

@media (hover: hover) and (pointer: fine) {
  .home .knowledge-item .circle-link:hover {
    color: #fff !important;
    background: var(--aiedi-blue) !important;
    border-color: var(--aiedi-blue) !important;
    box-shadow: 0 10px 24px rgba(7, 88, 217, .24) !important;
    transform: translateX(3px) scale(1.06);
  }

  .home .knowledge-item .circle-link:hover .aiedi-icon {
    transform: translateX(2px);
  }
}

.home .knowledge-item .circle-link:focus-visible {
  color: #fff !important;
  background: var(--aiedi-blue) !important;
  border-color: var(--aiedi-blue) !important;
  box-shadow: 0 0 0 4px rgba(7, 88, 217, .2), 0 10px 24px rgba(7, 88, 217, .2) !important;
  transform: translateX(3px) scale(1.06);
}

.home .knowledge-item .circle-link:focus-visible .aiedi-icon {
  transform: translateX(2px);
}

@media (max-width: 920px) {
  :root {
    --aiedi-hero-art-size: min(100%, 560px);
    --aiedi-hero-space-top: 1rem;
    --aiedi-hero-space-bottom: 1.6rem;
    --aiedi-hero-content-gap: 1.5rem;
    --aiedi-after-hero-space: 1.75rem;
  }

  .site-main > .hero--shared-artwork .hero__grid,
  .site-main > .hero--legal.hero--shared-artwork .hero__grid,
  .site-main > .hero--archive.hero--shared-artwork .hero__grid,
  .contact-page .contact-hero__grid {
    grid-template-columns: 1fr !important;
    min-height: 0;
  }

  .site-main > .hero--shared-artwork .hero__visual,
  .home .hero--shared-artwork .hero__visual,
  .contact-page .contact-hero__visual {
    justify-content: center !important;
  }

  .site-main > .hero--shared-artwork .hero__image-wrap,
  .home .hero--shared-artwork .hero__image-wrap,
  .contact-page .contact-hero__image {
    width: min(100%, 560px) !important;
    margin-inline: auto !important;
  }
}

@media (max-width: 720px) {
  :root {
    --aiedi-hero-space-top: .75rem;
    --aiedi-hero-space-bottom: 1.25rem;
    --aiedi-hero-content-gap: 1rem;
    --aiedi-after-hero-space: 1.5rem;
  }

  .site-main > .hero--shared-artwork .breadcrumbs {
    margin-bottom: .75rem !important;
  }

  .site-main > .hero--shared-artwork .hero__image-wrap,
  .home .hero--shared-artwork .hero__image-wrap,
  .contact-page .contact-hero__image {
    width: min(100%, 440px) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home .knowledge-item .circle-link,
  .home .knowledge-item .circle-link .aiedi-icon {
    transition: none !important;
  }

  .home .knowledge-item .circle-link:hover,
  .home .knowledge-item .circle-link:focus-visible,
  .home .knowledge-item .circle-link:hover .aiedi-icon,
  .home .knowledge-item .circle-link:focus-visible .aiedi-icon {
    transform: none !important;
  }
}


/* ========================================================================== 
   1.2.42 — Breadcrumbs en Historia/Equipo + estados interactivos de cierre
   Las tarjetas finales ahora se rellenan con un tono relacionado con su
   accion al pasar el cursor o recibir foco, sin depender solo del borde.
   ========================================================================== */
.history-page .history-action-card {
  transition: background-color .2s ease, border-color .2s ease,
    box-shadow .2s ease, transform .2s ease, color .2s ease;
}

.history-page .history-action-card--team .history-action-card__arrow {
  color: #075ed8;
}

.history-page .history-action-card--about .history-action-card__arrow {
  color: #d97d00;
}

@media (hover: hover) and (pointer: fine) {
  .history-page .history-action-card--team:hover {
    background: #eaf4ff;
    border-color: #7ab2f4;
    box-shadow: 0 12px 28px rgba(7, 94, 216, .16);
    transform: translateY(-2px);
  }

  .history-page .history-action-card--about:hover {
    background: #fff4d8;
    border-color: #f0b23d;
    box-shadow: 0 12px 28px rgba(217, 125, 0, .14);
    transform: translateY(-2px);
  }

  .history-page .history-action-card:hover .history-action-card__arrow .aiedi-icon {
    transform: translateX(3px);
  }
}

.history-page .history-action-card--team:focus-visible {
  background: #eaf4ff;
  border-color: #075ed8;
  box-shadow: 0 0 0 3px #fff, 0 12px 28px rgba(7, 94, 216, .14);
  outline: 3px solid #111;
  outline-offset: 4px;
  transform: translateY(-2px);
}

.history-page .history-action-card--about:focus-visible {
  background: #fff4d8;
  border-color: #d97d00;
  box-shadow: 0 0 0 3px #fff, 0 12px 28px rgba(217, 125, 0, .12);
  outline: 3px solid #111;
  outline-offset: 4px;
  transform: translateY(-2px);
}

.history-page .history-action-card__arrow .aiedi-icon {
  transition: transform .2s ease;
}

@media (prefers-reduced-motion: reduce) {
  .history-page .history-action-card,
  .history-page .history-action-card__arrow .aiedi-icon {
    transition: none;
  }

  .history-page .history-action-card:hover,
  .history-page .history-action-card:focus-visible,
  .history-page .history-action-card:hover .history-action-card__arrow .aiedi-icon,
  .history-page .history-action-card:focus-visible .history-action-card__arrow .aiedi-icon {
    transform: none;
  }
}

@media (forced-colors: active) {
  .history-page .history-action-card--team:hover,
  .history-page .history-action-card--about:hover,
  .history-page .history-action-card--team:focus-visible,
  .history-page .history-action-card--about:focus-visible {
    background: Canvas;
    color: CanvasText;
    border-color: Highlight;
    box-shadow: none;
  }
}

/* ========================================================================== 
   1.2.43 — Posición horizontal unificada de TODOS los heroes
   Las páginas antiguas tenían reglas propias de padding y alineación que
   desplazaban el arte WebP a izquierda/derecha. Esta capa final fuerza un
   único eje horizontal para todos los heroes institucionales.
   ========================================================================== */
:root {
  --aiedi-hero-horizontal-gutter: var(--aiedi-shell-gutter);
}

/* Mismo ancho útil del hero en todas las páginas, anulando excepciones de
   Inicio/Nosotros y cualquier padding heredado de versiones anteriores. */
.site-main > .hero--shared-artwork > .container,
.home .site-main > .hero--shared-artwork > .container,
.about-page > .hero--shared-artwork > .container,
.history-page > .hero--shared-artwork > .container,
.team-page > .hero--shared-artwork > .container,
.services-page > .hero--shared-artwork > .container,
.research-page > .hero--shared-artwork > .container,
.privacy-policy-page > .hero--shared-artwork > .container,
.contact-page .contact-hero__container {
  width: 100% !important;
  padding-left: var(--aiedi-hero-horizontal-gutter) !important;
  padding-right: var(--aiedi-hero-horizontal-gutter) !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Dos columnas exactamente iguales y un mismo hueco: así el centro de la
   columna visual coincide en Inicio, Nosotros, Historia, Equipo, Servicios,
   Investigación, Investigación 2 y páginas legales. */
.site-main > .hero--shared-artwork .hero__grid,
.site-main > .hero--legal.hero--shared-artwork .hero__grid,
.site-main > .hero--archive.hero--shared-artwork .hero__grid,
.contact-page .contact-hero__grid {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
  gap: var(--aiedi-hero-content-gap) !important;
}

/* El arte se centra en la segunda columna en lugar de apoyarse en el borde
   derecho. Todas las imágenes comparten así la misma coordenada horizontal. */
.site-main > .hero--shared-artwork .hero__visual,
.home .hero--shared-artwork .hero__visual,
.contact-page .contact-hero__visual {
  justify-content: center !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  transform: none !important;
}

.site-main > .hero--shared-artwork .hero__image-wrap,
.home .hero--shared-artwork .hero__image-wrap,
.site-main > .hero--legal.hero--shared-artwork .hero__image-wrap,
.site-main > .hero--archive.hero--shared-artwork .hero__image-wrap,
.contact-page .contact-hero__image {
  margin-left: auto !important;
  margin-right: auto !important;
  transform: none !important;
}

/* La imagen siempre ocupa el mismo canvas sin recorte ni desplazamientos
   internos provocados por object-position heredados. */
.site-main > .hero--shared-artwork .hero__image,
.home .hero--shared-artwork .hero__image,
.contact-page .contact-hero__image {
  object-position: 50% 50% !important;
}

@media (max-width: 920px) {
  :root {
    --aiedi-hero-horizontal-gutter: clamp(.9rem, 4vw, 1.25rem);
  }

  .site-main > .hero--shared-artwork .hero__visual,
  .home .hero--shared-artwork .hero__visual,
  .contact-page .contact-hero__visual {
    justify-content: center !important;
  }
}


/* ========================================================================== 
   1.2.44 — Contacto usa exactamente el mismo eje y canvas del hero global
   El hero de Contacto conserva su contenido propio, pero su WebP ahora pasa
   por el mismo wrapper, tamaño, coordenada horizontal y anclaje vertical que
   los demás heroes institucionales. Esto evita que el bloque de datos de
   contacto desplace visualmente la imagen.
   ========================================================================== */
.contact-page .contact-hero.hero--shared-artwork .contact-hero__grid {
  align-items: start !important;
}

.contact-page .contact-hero.hero--shared-artwork .contact-hero__visual {
  align-self: start !important;
  justify-self: stretch !important;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  width: 100% !important;
  min-height: var(--aiedi-hero-art-size) !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
}

.contact-page .contact-hero.hero--shared-artwork .contact-hero__image-wrap {
  position: relative !important;
  inset: auto !important;
  display: block !important;
  width: var(--aiedi-hero-art-size) !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  aspect-ratio: 1 / 1 !important;
  margin: 0 auto !important;
  padding: 0 !important;
  overflow: visible !important;
  border: 0 !important;
  border-radius: 0 !important;
  clip-path: none !important;
  box-shadow: none !important;
  background: transparent !important;
  transform: none !important;
}

.contact-page .contact-hero.hero--shared-artwork .contact-hero__image {
  display: block;
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  aspect-ratio: 1 / 1 !important;
  margin: 0 !important;
  object-fit: contain !important;
  object-position: 50% 50% !important;
  transform: none !important;
}

@media (max-width: 920px) {
  .contact-page .contact-hero.hero--shared-artwork .contact-hero__grid {
    align-items: stretch !important;
  }

  .contact-page .contact-hero.hero--shared-artwork .contact-hero__visual {
    min-height: 0 !important;
    align-self: auto !important;
    align-items: center !important;
  }

  .contact-page .contact-hero.hero--shared-artwork .contact-hero__image-wrap {
    width: min(100%, 560px) !important;
  }
}

@media (max-width: 720px) {
  .contact-page .contact-hero.hero--shared-artwork .contact-hero__image-wrap {
    width: min(100%, 440px) !important;
  }
}


/* AIEDI 1.2.57 — Phase 1 technical responsive/image-removal hardening. */
iframe, embed, object { max-width: 100%; }
.content-prose, .entry-content, .publication-content { overflow-wrap: anywhere; }
.article-content .aiedi-historical-summary {
  color: var(--aiedi-navy);
  font-size: .67em;
  font-weight: 760;
  line-height: 1.12;
  letter-spacing: -.025em;
  margin: 0 0 1rem;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}
#main-content [data-aiedi-hero-grid].aiedi-hero-image-disabled { grid-template-columns: minmax(0, 1fr) !important; min-height: 0 !important; }
#main-content [data-aiedi-hero-visual].aiedi-hero-image-disabled { display: none !important; min-height: 0 !important; margin: 0 !important; }
@media (max-width: 320px) {
  .container, .site-header > .container, .site-footer > .container, .site-main .container { padding-inline: .75rem; }
  .hero__actions, .form-actions, .site-header__actions { max-width: 100%; }
  .aiedi-button, .header-action { max-width: 100%; white-space: normal; text-align: center; }
}


/* AIEDI 1.2.58 — WCAG 2.2 A/AA technical accessibility hardening. */
@media (forced-colors: active) {
  :focus-visible,
  input:focus-visible,
  select:focus-visible,
  textarea:focus-visible {
    outline: 3px solid Highlight;
    box-shadow: none;
    forced-color-adjust: auto;
  }
}

/* ==========================================================================
   1.2.59 — Hero móvil en una sola columna
   La normalización horizontal 1.2.43 volvía a imponer dos columnas después
   del breakpoint responsive. Esta regla final restaura el flujo aprobado:
   texto primero e imagen institucional debajo en móvil/tablet estrecha.
   ========================================================================== */
@media (max-width: 920px) {
  .site-main > .hero--shared-artwork .hero__grid,
  .site-main > .hero--legal.hero--shared-artwork .hero__grid,
  .site-main > .hero--archive.hero--shared-artwork .hero__grid,
  .contact-page .contact-hero.hero--shared-artwork .contact-hero__grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  .site-main > .hero--shared-artwork .hero__content,
  .contact-page .contact-hero.hero--shared-artwork .contact-hero__content {
    grid-column: 1 !important;
    grid-row: 1 !important;
  }

  .site-main > .hero--shared-artwork .hero__visual,
  .home .hero--shared-artwork .hero__visual,
  .contact-page .contact-hero.hero--shared-artwork .contact-hero__visual {
    grid-column: 1 !important;
    grid-row: 2 !important;
    width: 100% !important;
  }
}

/* ==========================================================================
   AIEDI_POST_PHASE3_SITE_FIXES_20260904_MAIN_CSS
   Tablet artwork centring, balanced principles panel and accessible HTML badge.
   ========================================================================== */

.hero__accessibility-badge {
  position: absolute;
  z-index: 5;
  left: 50%;
  top: 56%;
  width: 58%;
  color: var(--aiedi-navy);
  text-align: center;
  transform: translateX(-50%);
  pointer-events: none;
}
.hero__accessibility-badge strong {
  display: block;
  width: fit-content;
  margin: 0 auto .55rem;
  padding: 0 .25rem .45rem;
  border-bottom: 4px solid #f3a300;
  color: #071845;
  font-size: clamp(.96rem, 2vw, 1.7rem);
  font-weight: 850;
  line-height: 1.05;
  letter-spacing: .01em;
}
.hero__accessibility-badge span {
  display: block;
  color: #243553;
  font-size: clamp(.7rem, 1vw, .9rem);
  font-weight: 760;
  line-height: 1.25;
}

@media (min-width: 721px) and (max-width: 920px) {
  .site-main > .hero--shared-artwork:not(.hero--legal):not(.hero--archive) .hero__image-wrap,
  .home .hero--shared-artwork .hero__image-wrap,
  .site-main > .hero--legal.hero--shared-artwork .hero__image-wrap,
  .site-main > .hero--archive.hero--shared-artwork .hero__image-wrap {
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

@media (min-width: 721px) and (max-width: 1120px) {
  .home .principles-intro {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(16rem, .95fr);
    grid-template-rows: auto 1fr;
    column-gap: clamp(1.5rem, 4vw, 3.5rem);
    row-gap: .65rem;
    align-items: center;
  }
  .home .principles-intro .eyebrow--gold {
    grid-column: 1 / -1;
    margin-bottom: 0;
  }
  .home .principles-intro h2,
  .home .principles-intro > p:last-child {
    max-width: none;
  }
  .home .principles-intro h2 { margin-bottom: 0; }
}

@media (max-width: 480px) {
  .hero__accessibility-badge { top: 55%; width: 60%; }
  .hero__accessibility-badge strong { margin-bottom: .35rem; border-bottom-width: 3px; }
}

@media (forced-colors: active) {
  .hero__accessibility-badge strong,
  .hero__accessibility-badge span { color: CanvasText; }
  .hero__accessibility-badge strong { border-bottom-color: Highlight; }
}

/* ========================================================================== 
   1.2.78 — Responsive hardening: no page-level horizontal overflow
   --------------------------------------------------------------------------
   Keep the document inside the CSS viewport at phone/tablet widths. Internal
   components that are intentionally scrollable (for example Team carousels)
   retain their own overflow-x behaviour; only accidental document overflow is
   clipped. This is especially important in device emulation at 768px where
   decorative/late overrides could otherwise create a page-level scrollbar.
   ========================================================================== */
html,
body {
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}

.site-header,
.site-main,
.site-footer,
.site-header__inner,
.site-header__navigation,
.site-header__actions,
.hero,
.hero__grid,
.hero__content,
.hero__visual,
.hero__image-wrap,
.knowledge-grid,
.principles-grid,
.principles-stage,
.stats-strip,
.cta-section,
.cta-banner,
.single-contact-closing,
.single-contact-closing__inner {
  min-width: 0;
  max-width: 100%;
}

.site-header__inner,
.hero__grid,
.knowledge-grid,
.principles-grid,
.stats-strip,
.site-footer__grid {
  width: 100%;
}

/* Long labels/links must shrink instead of widening the document. */
.site-header__navigation a,
.site-header__actions a,
.hero__actions a,
.footer-contact-list a,
.single-contact-card,
.aiedi-button {
  min-width: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 920px) {
  .home .hero__grid,
  .home .hero__content,
  .home .hero__visual,
  .home .hero__image-wrap,
  .home .knowledge-grid,
  .home .principles-grid,
  .home .principles-stage,
  .home .stats-strip,
  .home .cta-section,
  .home .cta-section .container,
  .home .cta-banner--reference {
    min-width: 0 !important;
    max-width: 100% !important;
  }

  /* At tablet widths the two hero CTAs may wrap instead of forcing a wider
     page. On phones the existing one-column rule still takes precedence. */
  .home .hero__actions {
    max-width: 100%;
    flex-wrap: wrap;
  }

  .home .hero__actions .aiedi-button {
    max-width: 100%;
  }

  /* Grid tracks should be allowed to shrink below min-content width. */
  .home .knowledge-grid,
  .home .principles-stage,
  .home .stats-strip {
    grid-auto-columns: minmax(0, 1fr);
  }

  .home .knowledge-grid > *,
  .home .principles-grid > *,
  .home .principles-stage > *,
  .home .stats-strip > *,
  .site-footer__grid > * {
    min-width: 0;
  }
}

@media (max-width: 720px) {
  .site-header__actions,
  .hero__actions,
  .contact-strip,
  .cta-banner,
  .single-contact-closing__inner {
    width: 100%;
    max-width: 100%;
  }

  .site-header__actions > *,
  .hero__actions > *,
  .cta-banner > *,
  .single-contact-closing__inner > * {
    min-width: 0;
    max-width: 100%;
  }
}


/* ========================================================================== 
   1.2.79 — Sticky header alignment in WordPress and tablet refinement
   --------------------------------------------------------------------------
   Keep the institutional header truly anchored to the visible viewport. When
   the WordPress admin toolbar is present, offset the sticky header and the
   mobile/tablet navigation drawer so neither sits underneath the toolbar.
   ========================================================================== */
.site-header {
  position: sticky;
  top: 0;
}

body.admin-bar .site-header {
  top: 32px;
}

@media (max-width: 1120px) {
  body.admin-bar .site-header__navigation {
    top: calc(var(--aiedi-header-height) + 32px);
  }
}

@media (max-width: 782px) {
  body.admin-bar .site-header {
    top: 46px;
  }

  body.admin-bar .site-header__navigation {
    top: calc(var(--aiedi-header-height) + 46px);
  }
}

/* WordPress stops fixing the admin toolbar at <=600px. Keeping the 46px
 * compensation below that breakpoint leaves the sticky institutional header
 * floating 46px under the top edge after the toolbar scrolls away. On phones,
 * the normal WordPress document offset already places the header correctly at
 * page load, so the sticky/fixed components must return to the viewport edge. */
@media (max-width: 600px) {
  body.admin-bar .site-header {
    top: 0;
  }

  body.admin-bar .site-header__navigation {
    top: var(--aiedi-header-height);
    max-height: calc(100dvh - var(--aiedi-header-height));
  }
}


/* ==========================================================================
   1.2.82 — Simple bilingual 404
   ========================================================================== */
.error-page {
  min-height: min(70vh, 44rem);
  display: grid;
  align-items: center;
}

.error-page__inner {
  width: min(100%, 42rem);
  box-sizing: border-box;
}

.error-page__inner h1 {
  margin: 1rem 0 .75rem;
  text-wrap: balance;
}

.error-page__description {
  max-width: 34rem;
  margin: 0 auto 1.5rem;
}

.error-page__actions {
  display: flex;
  justify-content: center;
}

.error-page__actions .button,
.error-page__actions .btn {
  max-width: 100%;
}

@media (max-width: 600px) {
  .error-page {
    min-height: 60vh;
  }

  .error-page__inner {
    padding: 3rem 1rem;
  }

  .error-page__actions > * {
    width: 100%;
    justify-content: center;
  }
}


/* ==========================================================================
   1.2.83 — 404 responsive hardening
   --------------------------------------------------------------------------
   Keep the 404 shell inside the CSS viewport at every phone/tablet width.
   The fallback overflow-x:hidden is intentionally scoped to error404 pages
   so it cannot affect intentional horizontal scrollers elsewhere.
   ========================================================================== */
body.error404 {
  width: 100%;
  max-width: 100%;
  overflow-x: visible !important;
}

body.error404 .site-header,
body.error404 .site-main,
body.error404 .site-footer,
body.error404 .site-header__inner,
body.error404 .site-footer > .container,
body.error404 .error-page,
body.error404 .error-page__inner {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

body.error404 .site-main,
body.error404 .error-page {
  overflow-x: hidden;
}

body.error404 .error-page {
  padding-inline: 0;
}

body.error404 .error-page__inner {
  width: min(100%, 42rem);
  padding-inline: clamp(1rem, 5vw, 2rem);
  margin-inline: auto;
}

body.error404 .error-page__code,
body.error404 .error-page__inner h1,
body.error404 .error-page__description {
  max-width: 100%;
  overflow-wrap: anywhere;
}

body.error404 .error-page__actions {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

body.error404 .error-page__actions .aiedi-button {
  width: auto;
  max-width: min(100%, 24rem);
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
}

@media (max-width: 600px) {
  body.error404 .error-page__inner {
    padding: 2.5rem clamp(.9rem, 4vw, 1.15rem);
  }

  body.error404 .error-page__actions .aiedi-button {
    width: 100%;
  }
}


/* ==========================================================================
   1.2.84 — Stable sticky header + iPad Pro full navigation
   --------------------------------------------------------------------------
   - Keep the institutional header sticky on every public template, including
     404 pages. Avoid making BODY a clipping/scroll ancestor because that can
     break position:sticky in Safari/WebKit. Horizontal clipping stays at the
     root and component level.
   - iPad Mini/Air (<=920px) keep the compact hamburger navigation.
   - iPad Pro portrait (1024px) and wider layouts use the full navigation.
   ========================================================================== */
html {
  overflow-x: clip;
}

body {
  overflow-x: visible;
}

.site-header {
  position: sticky !important;
  top: 0 !important;
  z-index: 1000;
  width: 100%;
}

body.admin-bar .site-header {
  top: 32px !important;
}

@media (max-width: 782px) {
  body.admin-bar .site-header {
    top: 46px !important;
  }
}

@media (max-width: 600px) {
  body.admin-bar .site-header {
    top: 0 !important;
  }
}

/* Do not turn the 404 BODY into a scroll container: that was preventing the
   header from sticking reliably on some mobile Safari/WebKit layouts. */
body.error404 {
  overflow-x: visible !important;
}

/* Full institutional navigation only on iPad Pro-size tablets and above.
   The rest of the page can still use its tablet layout from the earlier
   <=1120px responsive rules; only the header is restored to desktop mode. */
@media (min-width: 921px) and (max-width: 1120px) {
  .site-header__inner {
    min-height: var(--aiedi-header-height);
    gap: clamp(.45rem, 1vw, .75rem);
  }

  .site-branding img,
  .custom-logo {
    max-width: clamp(108px, 12vw, 132px);
    max-height: 58px;
  }

  .menu-toggle {
    display: none !important;
  }

  .site-header__navigation,
  .site-header__navigation.is-open {
    position: static;
    inset: auto;
    display: flex !important;
    flex: 1 1 auto;
    min-width: 0;
    max-width: none;
    max-height: none;
    overflow: visible;
    margin-left: auto;
    padding: 0;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: clamp(.4rem, .8vw, .7rem);
    background: transparent;
    border-top: 0;
    box-shadow: none;
  }

  .primary-navigation {
    min-width: 0;
  }

  .primary-navigation ul {
    flex-direction: row;
    align-items: center;
    gap: clamp(.3rem, .7vw, .6rem);
  }

  .primary-navigation a {
    width: auto;
    min-height: 42px;
    padding: .25rem .05rem;
    border-radius: 0;
    font-size: clamp(.72rem, 1.05vw, .82rem);
    white-space: nowrap;
  }

  .primary-navigation .current-menu-item > a::after,
  .primary-navigation .current_page_item > a::after {
    display: block;
  }

  .primary-navigation .sub-menu {
    position: absolute;
    top: calc(100% + .42rem);
    left: -.75rem;
    display: none;
    min-width: 210px;
    padding: .55rem;
    flex-direction: column;
    align-items: stretch;
    gap: .15rem;
    background: #fff;
    border: 1px solid var(--aiedi-border);
    border-radius: .85rem;
    box-shadow: var(--aiedi-shadow-soft);
  }

  .primary-navigation li:hover > .sub-menu,
  .primary-navigation li:focus-within > .sub-menu,
  .primary-navigation li.is-submenu-open > .sub-menu {
    display: flex;
  }

  .primary-navigation li.submenu-dismissed > .sub-menu,
  .primary-navigation li.submenu-dismissed:hover > .sub-menu,
  .primary-navigation li.submenu-dismissed:focus-within > .sub-menu {
    display: none;
  }

  .site-header__actions {
    flex: 0 0 auto;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: clamp(.3rem, .65vw, .55rem);
    padding-top: 0;
    border-top: 0;
  }

  .language-switcher {
    gap: .1rem;
    padding: .12rem;
  }

  .language-switcher__link {
    min-height: 34px;
    padding: .18rem .3rem;
    font-size: .66rem;
  }

  .language-switcher__link .aiedi-flag {
    width: 18px;
    height: 12px;
  }

  .header-action {
    min-height: 40px;
    padding: .42rem .55rem;
    gap: .3rem;
    font-size: clamp(.68rem, .95vw, .78rem);
  }

  .header-action .aiedi-icon {
    width: 1rem;
    height: 1rem;
  }

  body.admin-bar .site-header__navigation {
    top: auto;
  }
}


/* ==========================================================================
   1.2.85 — iPad Pro header proportions + compact 404 footer flow
   --------------------------------------------------------------------------
   The 1.2.84 breakpoint correctly restored the full menu at iPad Pro widths,
   but its typography was compressed too aggressively. This refinement keeps
   the full navigation at 921–1120px while restoring readable proportions.
   On portrait iPad Pro 404 pages, the short-page shell also uses the viewport
   height so the footer keeps its natural height instead of leaving a large
   white tail that visually reads as an oversized footer.
   ========================================================================== */
@media (min-width: 921px) and (max-width: 1120px) {
  :root {
    --aiedi-header-height: 6rem;
  }

  .site-header__inner {
    gap: .65rem;
  }

  .site-branding img,
  .custom-logo {
    max-width: 140px;
    max-height: 62px;
  }

  .site-header__navigation,
  .site-header__navigation.is-open {
    gap: .7rem;
  }

  .primary-navigation ul {
    gap: clamp(.45rem, .72vw, .65rem);
  }

  .primary-navigation a {
    min-height: 44px;
    padding: .3rem .06rem;
    font-size: .82rem;
    line-height: 1.25;
  }

  .site-header__actions {
    gap: .45rem;
  }

  .language-switcher {
    gap: .12rem;
    padding: .14rem;
  }

  .language-switcher__link {
    min-height: 36px;
    padding: .22rem .34rem;
    font-size: .72rem;
  }

  .header-action {
    min-height: 42px;
    padding: .46rem .64rem;
    gap: .34rem;
    font-size: .78rem;
  }

  .site-footer {
    padding: 1.65rem 0 1.35rem;
  }

  .site-footer__grid {
    row-gap: .9rem;
  }

  .site-footer__brand p {
    line-height: 1.48;
  }
}

@media (min-width: 921px) and (max-width: 1120px) and (orientation: portrait) {
  body.error404 {
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
  }

  body.error404 .site-header,
  body.error404 .site-footer {
    flex: 0 0 auto;
  }

  body.error404 .site-main {
    display: flex;
    flex: 1 0 auto;
    min-height: 0;
    flex-direction: column;
  }

  body.error404 .error-page {
    display: grid;
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    padding-block: clamp(3rem, 5vh, 4.5rem);
    align-items: center;
  }
}

/* 1.2.86 — SEO entity graph, breadcrumbs and private-area index control. */


/* Footer accessibility badge — compact footer placement */
.site-footer__social {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.site-footer__wcag-panel {
  width: min(100%, 220px);
  margin-top: .85rem;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.site-footer__wcag-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  min-width: 0;
  text-decoration: none;
  border-radius: .75rem;
  padding: 0;
  width: 100%;
}
.site-footer__wcag-link--compact {
  justify-content: center;
}
.site-footer__wcag-picture {
  display: block;
  width: min(100%, 205px);
}
.site-footer__wcag-picture img {
  display: block;
  width: min(100%, 205px);
  height: auto;
  margin-inline: auto;
}
.site-footer__wcag-fallback {
  display: none;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 3.25rem;
  padding: .75rem 1rem;
  border: 2px solid currentColor;
  border-radius: .85rem;
  background: Canvas;
  color: CanvasText;
  font-weight: 800;
  text-align: center;
}
.site-footer__wcag-link:hover .site-footer__wcag-picture img,
.site-footer__wcag-link:focus-visible .site-footer__wcag-picture img {
  transform: translateY(-1px);
}
.site-footer__wcag-picture img,
.site-footer__wcag-link {
  transition: transform .2s ease, box-shadow .2s ease;
}
.site-footer__wcag-link:hover,
.site-footer__wcag-link:focus-visible {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--aiedi-blue) 18%, transparent);
}
@media (max-width: 920px) {
  .site-footer__social {
    align-items: flex-start;
  }
  .site-footer__wcag-panel {
    width: min(100%, 240px);
  }
}
@media (max-width: 640px) {
  .site-footer__wcag-panel {
    width: min(100%, 220px);
    margin-top: .75rem;
    padding: .65rem;
  }
}
@media (forced-colors: active) {
  .site-footer__wcag-panel {
    background: transparent;
    box-shadow: none;
  }
  .site-footer__wcag-picture {
    display: none;
  }
  .site-footer__wcag-fallback {
    display: inline-flex;
  }
}



/* 1.2.94 — Accessibility statement hero: the supplied artwork already includes
   the WCAG wording. Render the native 3:2 asset at full useful width instead
   of shrinking it inside the global square hero canvas. */
.aiedi-statement-page > .hero--accessibility-es-artwork .hero__visual {
  min-height: 0 !important;
}
.aiedi-statement-page > .hero--accessibility-es-artwork .hero__image-wrap,
.aiedi-statement-page > .hero--legal.hero--accessibility-es-artwork .hero__image-wrap {
  width: min(100%, 720px) !important;
  max-width: 100% !important;
  height: auto !important;
  aspect-ratio: auto !important;
  overflow: visible !important;
  background: transparent !important;
}
.aiedi-statement-page > .hero--accessibility-es-artwork .hero__image {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  max-width: 100% !important;
  object-fit: contain !important;
  object-position: center center !important;
}
@media (max-width: 920px) {
  .aiedi-statement-page > .hero--accessibility-es-artwork .hero__image-wrap,
  .aiedi-statement-page > .hero--legal.hero--accessibility-es-artwork .hero__image-wrap {
    width: min(100%, 680px) !important;
    margin-inline: auto !important;
  }
}
@media (max-width: 560px) {
  .aiedi-statement-page > .hero--accessibility-es-artwork .hero__image-wrap,
  .aiedi-statement-page > .hero--legal.hero--accessibility-es-artwork .hero__image-wrap {
    width: 100% !important;
  }
}

/* ========================================================================== 
   1.3.00 — WCAG 2.2 AA contrast hardening
   Targeted fixes for SC 1.4.3 (text) and SC 1.4.11 (non-text/UI contrast).
   Keeps the institutional palette while using darker gold where the element
   itself must carry meaning or identify an interactive/stateful component.
   ========================================================================== */
:root {
  --aiedi-gold-aa: #b45a00;
  --aiedi-gold-aa-deep: #a95600;
}

/* Current-page state: the underline is a meaningful visual state cue. */
.primary-navigation .current-menu-item > a::after,
.primary-navigation .current_page_item > a::after {
  background: var(--aiedi-gold-aa);
}

/* Current language gets a high-contrast non-text state indicator as well. */
.language-switcher__link.is-current {
  box-shadow: inset 0 0 0 2px var(--aiedi-blue);
}

/* Outlined controls: their visible boundary must remain perceivable. */
.header-action--cid,
.aiedi-button--outline {
  border-color: var(--aiedi-gold-aa);
}
.header-action--cid > .aiedi-icon:first-child {
  color: var(--aiedi-gold-aa);
}

/* Gold graphical controls/icons. */
.explore-card--gold .icon-bubble--history,
.home .principle-card .icon-bubble--gold,
.about-page .explore-card--gold .icon-bubble--gold,
.history-page .history-action-card--about .history-action-card__icon {
  color: var(--aiedi-navy);
}

.about-page .feature-card__icon--gold {
  color: var(--aiedi-gold-aa-deep);
}

.explore-card--gold .circle-link {
  color: var(--aiedi-gold-aa);
  border-color: var(--aiedi-gold-aa);
}
.explore-card--gold:hover .circle-link,
.explore-card--gold:focus-visible .circle-link {
  color: #fff;
  background: var(--aiedi-gold-aa);
  border-color: var(--aiedi-gold-aa);
}

/* Nosotros intentionally keeps the circle background white in every state. */
.about-page .explore-card--gold .circle-link,
.about-page .explore-card--gold .circle-link:hover,
.about-page .explore-card--gold:hover .circle-link,
.about-page .explore-card--gold:focus-visible .circle-link,
.about-page .explore-card--gold:active .circle-link {
  color: var(--aiedi-gold-aa);
  border-color: var(--aiedi-gold-aa);
  background: #fff;
}

.home .cta-banner--reference .cta-banner__reference-arrow,
.history-page .history-action-card--about .history-action-card__arrow {
  color: var(--aiedi-gold-aa);
}

/* History hover/focus boundary uses the same AA-safe gold. */
@media (hover: hover) and (pointer: fine) {
  .history-page .history-action-card--about:hover {
    border-color: var(--aiedi-gold-aa);
  }
}
.history-page .history-action-card--about:focus-visible {
  border-color: var(--aiedi-gold-aa);
}

/* Carousel progress is a meaningful state graphic. */
.scroller-controls::before {
  background: var(--aiedi-gold-aa);
}

/* Contact form: readable placeholder and a 3:1+ visible field boundary. */
.contact-page .aiedi-contact-form input[type="text"],
.contact-page .aiedi-contact-form input[type="email"],
.contact-page .aiedi-contact-form select,
.contact-page .aiedi-contact-form textarea {
  border-color: #73809a;
}
.contact-page .aiedi-contact-form input::placeholder,
.contact-page .aiedi-contact-form textarea::placeholder {
  color: #66758f;
  opacity: 1;
}


/* ==========================================================================
   1.3.03 — Centrado del botón de menú móvil/tablet
   --------------------------------------------------------------------------
   Mantiene el área táctil de 46x46 px, centra el icono y respeta el atributo
   hidden de los iconos de abrir/cerrar para que nunca aparezcan simultáneamente.
   No modifica la lógica, el foco, ARIA ni la navegación por teclado.
   ========================================================================== */
@media (max-width: 920px) {
  .menu-toggle {
    width: 46px;
    height: 46px;
    min-width: 46px;
    min-height: 46px;
    flex: 0 0 46px;
    padding: 0;
    box-sizing: border-box;
    line-height: 0;
    align-items: center;
    justify-content: center;
  }

  .menu-toggle__open:not([hidden]),
  .menu-toggle__close:not([hidden]) {
    display: inline-flex;
    width: 24px;
    height: 24px;
    align-items: center;
    justify-content: center;
    line-height: 0;
  }

  .menu-toggle__open[hidden],
  .menu-toggle__close[hidden] {
    display: none !important;
  }

  .menu-toggle .aiedi-icon {
    display: block;
    width: 24px;
    height: 24px;
    margin: 0;
  }
}
