/*
Theme Name: JDE La Salle 70
Theme URI: https://lasallecdvictoria.edu.mx/
Author: Departamento de Tecnología · Colegio José de Escandón La Salle
Author URI: https://lasallecdvictoria.edu.mx/
Description: Tema institucional híbrido, responsive y personalizable para el 70 aniversario del Colegio José de Escandón La Salle. Incluye portada conmemorativa, Customizer, plantillas de páginas interiores, biblioteca amplia de patrones, estilos de bloques y compatibilidad con el plugin JDE Bloques Institucionales.
Version: 1.2.2
Requires at least: 6.4
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: jde-la-salle-70
Tags: education, custom-logo, custom-menu, featured-images, full-width-template, theme-options, translation-ready, block-styles, wide-blocks
*/

:root {
  --jde-primary: #253160;
  --jde-secondary: #172044;
  --jde-accent: #fed531;
  --jde-red: #d91522;
  --jde-bg: #f5f6fa;
  --jde-surface: #ffffff;
  --jde-text: #202538;
  --jde-muted: #68708a;
  --jde-border: rgba(37, 49, 96, .13);
  --jde-shadow: 0 18px 50px rgba(23, 32, 68, .12);
  --jde-radius: 22px;
  --jde-content: 760px;
  --jde-wide: 1200px;
  --jde-font-body: "Segoe UI", Arial, sans-serif;
  --jde-font-heading: Georgia, "Times New Roman", serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: hidden; }
body {
  margin: 0;
  background: var(--jde-bg);
  color: var(--jde-text);
  font-family: var(--jde-font-body);
  font-size: 17px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}
body.admin-bar .site-header { top: 32px; }
img { max-width: 100%; height: auto; }
a { color: var(--jde-primary); text-decoration-thickness: .08em; text-underline-offset: .18em; }
a:hover { color: var(--jde-red); }
button, input, textarea, select { font: inherit; }
button, .button, .wp-element-button { cursor: pointer; }
:focus-visible { outline: 3px solid var(--jde-accent); outline-offset: 3px; }

.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;
}
.skip-link:focus {
  clip: auto !important; clip-path: none; height: auto; width: auto; z-index: 100000;
  top: 8px; left: 8px; padding: 12px 18px; background: #fff; color: #111;
}

.jde-container { width: min(calc(100% - 36px), var(--jde-wide)); margin-inline: auto; }
.jde-content-width { width: min(calc(100% - 36px), var(--jde-content)); margin-inline: auto; }
.jde-section { padding: clamp(64px, 8vw, 112px) 0; position: relative; overflow: clip; }
.jde-section--white { background: var(--jde-surface); }
.jde-section--soft { background: var(--jde-bg); }
.jde-section--blue { background: var(--jde-primary); color: #fff; }
.jde-section-heading { max-width: 760px; margin: 0 auto 42px; text-align: center; }
.jde-kicker {
  display: inline-flex; align-items: center; gap: 9px; margin: 0 0 12px;
  color: var(--jde-red); font-weight: 800; font-size: .78rem; letter-spacing: .13em; text-transform: uppercase;
}
.jde-kicker::before { content: ""; width: 28px; height: 3px; background: var(--jde-accent); border-radius: 999px; }
.jde-section-title, h1, h2, h3, h4, h5, h6 {
  font-family: var(--jde-font-heading); color: var(--jde-primary); line-height: 1.12;
}
.jde-section-title { font-size: clamp(2rem, 4vw, 3.35rem); margin: 0 0 16px; }
.jde-section-heading p { margin: 0; color: var(--jde-muted); font-size: 1.08rem; }
.jde-section--blue .jde-section-title, .jde-section--blue h2, .jde-section--blue h3 { color: #fff; }
.jde-section--blue .jde-section-heading p { color: rgba(255,255,255,.78); }

.jde-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  min-height: 48px; padding: 12px 22px; border: 2px solid transparent; border-radius: 999px;
  background: var(--jde-accent); color: var(--jde-secondary); font-weight: 800; line-height: 1.2;
  text-decoration: none; transition: transform .22s ease, box-shadow .22s ease, background .22s ease;
}
.jde-button:hover { color: var(--jde-secondary); transform: translateY(-2px); box-shadow: 0 12px 26px rgba(0,0,0,.18); }
.jde-button--outline { background: transparent; border-color: rgba(255,255,255,.7); color: #fff; }
.jde-button--outline:hover { background: #fff; color: var(--jde-primary); }
.jde-button--blue { background: var(--jde-primary); color: #fff; }
.jde-button--blue:hover { color: #fff; }
.jde-button--ghost { background: rgba(37,49,96,.08); color: var(--jde-primary); }

/* Top bar */
.jde-topbar { position: relative; z-index: 5100; background: var(--jde-secondary); color: rgba(255,255,255,.82); font-size: .82rem; }
.jde-topbar__inner { min-height: 38px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.jde-topbar a { color: inherit; text-decoration: none; }
.jde-topbar a:hover { color: var(--jde-accent); }
.jde-topbar__contact, .jde-topbar__links { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; }
.jde-topbar__links a { padding: 3px 0; font-weight: 700; }

/* Header */
.site-header {
  position: sticky; top: 0; z-index: 5000; background: rgba(255,255,255,.96);
  border-bottom: 1px solid var(--jde-border); backdrop-filter: blur(15px);
  transition: box-shadow .25s ease;
}
.site-header.is-scrolled { box-shadow: 0 8px 32px rgba(23,32,68,.12); }
.jde-header__inner { min-height: 88px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 26px; }
.jde-brand { display: flex; align-items: center; gap: 14px; min-width: 0; text-decoration: none; }
.custom-logo-link { display: flex; align-items: center; }
.custom-logo { max-height: 64px; width: auto; }
.jde-brand__text { display: flex; flex-direction: column; line-height: 1.08; text-decoration: none; }
.jde-brand__name { color: var(--jde-primary); font-family: var(--jde-font-heading); font-weight: 800; font-size: 1.02rem; }
.jde-brand__tagline { color: var(--jde-muted); font-size: .72rem; margin-top: 5px; }
.jde-anniversary-mark { display: block; width: 116px; flex: 0 0 auto; }
.jde-anniversary-mark img { display: block; width: 100%; height: 75px; object-fit: contain; }
.primary-navigation { justify-self: end; }
.primary-navigation ul { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 4px; }
.primary-navigation li { position: relative; }
.primary-navigation a { display: block; padding: 11px 12px; color: var(--jde-text); font-size: .91rem; font-weight: 750; text-decoration: none; border-radius: 10px; }
.primary-navigation a:hover, .primary-navigation .current-menu-item > a, .primary-navigation .current-menu-ancestor > a { background: rgba(37,49,96,.07); color: var(--jde-primary); }
.primary-navigation .sub-menu {
  position: absolute; left: 0; top: calc(100% + 8px); min-width: 230px; display: none; padding: 10px;
  background: #fff; border: 1px solid var(--jde-border); border-radius: 14px; box-shadow: var(--jde-shadow);
}
.primary-navigation li:hover > .sub-menu, .primary-navigation li:focus-within > .sub-menu { display: block; }
.primary-navigation .sub-menu .sub-menu { left: 100%; top: 0; }
.jde-header-cta { white-space: nowrap; }
.jde-menu-toggle { display: none; border: 0; background: transparent; padding: 9px; border-radius: 10px; color: var(--jde-primary); }
.jde-menu-toggle span { display: block; width: 28px; height: 3px; background: currentColor; margin: 5px 0; border-radius: 99px; transition: transform .2s ease, opacity .2s ease; }

/* Hero */
.site-main { max-width: 100%; overflow-x: clip; }
.jde-hero {
  position: relative; width: 100%; max-width: 100%; min-height: clamp(560px, 72vh, 820px);
  display: grid; align-items: center; isolation: isolate; overflow: hidden; contain: paint;
  color: #fff; background: var(--jde-secondary);
}
.jde-hero__media { position: absolute; inset: 0; z-index: 0; background-position: center; background-size: cover; overflow: hidden; }
.jde-hero__media--video { background: var(--jde-secondary); }
.jde-hero__media--video .jde-hero__video { position: absolute; inset: 0; display: block; min-width: 100%; min-height: 100%; }
.jde-hero > .jde-container { position: relative; z-index: 3; }
.jde-hero__video { width: 100%; height: 100%; object-fit: cover; }
.jde-hero::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(90deg, rgba(13,19,48,.88) 0%, rgba(22,31,67,.65) 52%, rgba(22,31,67,.2) 100%); }
.jde-hero--center::after { background: linear-gradient(rgba(13,19,48,.72), rgba(13,19,48,.72)); }
.jde-hero--right::after { background: linear-gradient(270deg, rgba(13,19,48,.88) 0%, rgba(22,31,67,.65) 52%, rgba(22,31,67,.2) 100%); }
.jde-hero__content { position: relative; z-index: 3; max-width: 730px; padding-block: 90px; }
.jde-hero--center .jde-hero__content { margin-inline: auto; text-align: center; }
.jde-hero--right .jde-hero__content { margin-left: auto; text-align: right; }
.jde-hero__eyebrow { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 17px; color: var(--jde-accent); font-size: .82rem; letter-spacing: .15em; text-transform: uppercase; font-weight: 800; }
.jde-hero__eyebrow::before { content: "★"; font-size: 1rem; }
.jde-hero__title { max-width: 820px; margin: 0 0 22px; color: #fff; font-size: clamp(2.8rem, 6vw, 5.6rem); letter-spacing: -.035em; line-height: 1.02; text-wrap: balance; }
.jde-hero__text { max-width: 650px; font-size: clamp(1.08rem, 2vw, 1.35rem); color: rgba(255,255,255,.89); }
.jde-hero__text > :first-child { margin-top: 0; }
.jde-hero__text > :last-child { margin-bottom: 0; }
.jde-hero--center .jde-hero__text { margin-inline: auto; }
.jde-hero--right .jde-hero__text { margin-left: auto; }
.jde-hero__actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 32px; }
.jde-hero--center .jde-hero__actions { justify-content: center; }
.jde-hero--right .jde-hero__actions { justify-content: flex-end; }
.jde-hero__anniversary { position: absolute; z-index: 4; width: clamp(155px, 18vw, 270px); right: clamp(20px, 6vw, 92px); bottom: clamp(22px, 6vw, 74px); padding: clamp(10px, 1.5vw, 18px); border-radius: 24px; background: rgba(255,255,255,.94); border: 1px solid rgba(255,255,255,.7); box-shadow: 0 18px 40px rgba(0,0,0,.24); backdrop-filter: blur(10px); }
.jde-hero--right .jde-hero__anniversary { right: auto; left: clamp(20px, 6vw, 92px); }
.jde-hero--center .jde-hero__anniversary { display: none; }
.jde-hero--carousel.jde-carousel-active-right .jde-hero__anniversary { right: auto; left: clamp(20px, 6vw, 92px); }
.jde-hero--carousel.jde-carousel-active-center .jde-hero__anniversary { display: none; }
.jde-hero__anniversary img { display: block; }
.jde-hero__curve { position: absolute; z-index: 2; right: -72px; top: -78px; width: 430px; height: 430px; border: 18px solid var(--jde-red); border-left-color: transparent; border-bottom-color: transparent; border-radius: 50%; opacity: .82; transform: rotate(12deg); pointer-events: none; }
.jde-hero__curve::before, .jde-hero__curve::after { content: ""; position: absolute; border: inherit; border-left-color: transparent; border-bottom-color: transparent; border-radius: inherit; }
.jde-hero__curve::before { inset: 26px; }
.jde-hero__curve::after { inset: 60px; }

/* Personalizable carousel */
.jde-hero--carousel::after { display: none; }
.jde-carousel { position: absolute; inset: 0; z-index: 0; overflow: hidden; --jde-carousel-index: 0; --jde-carousel-duration: 750ms; }
.jde-carousel__track { position: relative; width: 100%; height: 100%; }
.jde-carousel__slide { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity var(--jde-carousel-duration) ease, transform var(--jde-carousel-duration) ease, visibility var(--jde-carousel-duration) linear; }
.jde-carousel__slide.is-active { opacity: 1; visibility: visible; pointer-events: auto; z-index: 2; }
.jde-carousel__media { position: absolute; inset: 0; display: block; z-index: 0; }
.jde-carousel__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.jde-carousel__slide::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(90deg, rgba(13,19,48,.88) 0%, rgba(22,31,67,.65) 52%, rgba(22,31,67,.2) 100%); }
.jde-carousel__slide.jde-hero--center::after { background: linear-gradient(rgba(13,19,48,.72), rgba(13,19,48,.72)); }
.jde-carousel__slide.jde-hero--right::after { background: linear-gradient(270deg, rgba(13,19,48,.88) 0%, rgba(22,31,67,.65) 52%, rgba(22,31,67,.2) 100%); }
.jde-carousel__slide .jde-container { position: relative; z-index: 2; height: 100%; display: grid; align-items: center; }

.jde-carousel[data-effect="fade"] .jde-carousel__slide { transform: none; }
.jde-carousel[data-effect="zoom"] .jde-carousel__slide { transform: scale(1.07); }
.jde-carousel[data-effect="zoom"] .jde-carousel__slide.is-active { transform: scale(1); }
.jde-carousel[data-effect="slide-left"] .jde-carousel__track { display: flex; transform: translate3d(0, 0, 0); transition: transform var(--jde-carousel-duration) cubic-bezier(.22,.61,.36,1); }
.jde-carousel[data-effect="slide-left"] .jde-carousel__slide { position: relative; inset: auto; flex: 0 0 100%; opacity: 1; visibility: visible; pointer-events: auto; }
.jde-carousel[data-effect="slide-up"] .jde-carousel__track { display: flex; flex-direction: column; transform: translate3d(0, 0, 0); transition: transform var(--jde-carousel-duration) cubic-bezier(.22,.61,.36,1); }
.jde-carousel[data-effect="slide-up"] .jde-carousel__slide { position: relative; inset: auto; flex: 0 0 100%; opacity: 1; visibility: visible; pointer-events: auto; }

.jde-carousel__controls { position: absolute; z-index: 7; left: 50%; bottom: 24px; transform: translateX(-50%); display: flex; gap: 9px; }
.jde-carousel__dot { width: 12px; height: 12px; padding: 0; border: 2px solid #fff; border-radius: 50%; background: transparent; box-shadow: 0 2px 8px rgba(0,0,0,.22); }
.jde-carousel__dot.is-active { background: var(--jde-accent); border-color: var(--jde-accent); }
.jde-carousel__arrow { position: absolute; z-index: 7; top: 50%; width: 48px; height: 48px; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.55); border-radius: 50%; background: rgba(13,19,48,.38); color: #fff; font-size: 2.2rem; line-height: 1; transform: translateY(-50%); backdrop-filter: blur(8px); transition: background .2s ease, transform .2s ease; }
.jde-carousel__arrow:hover { background: rgba(13,19,48,.75); transform: translateY(-50%) scale(1.05); }
.jde-carousel__arrow--prev { left: clamp(12px, 2.5vw, 34px); }
.jde-carousel__arrow--next { right: clamp(12px, 2.5vw, 34px); }

/* Cards and grids */
.jde-grid { display: grid; gap: 24px; }
.jde-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.jde-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.jde-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.jde-card { background: var(--jde-surface); border: 1px solid var(--jde-border); border-radius: var(--jde-radius); overflow: hidden; box-shadow: 0 10px 34px rgba(23,32,68,.06); transition: transform .25s ease, box-shadow .25s ease; }
.jde-card:hover { transform: translateY(-5px); box-shadow: var(--jde-shadow); }
.jde-card__media { aspect-ratio: 16 / 10; overflow: hidden; background: #e7eaf4; }
.jde-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }
.jde-card:hover .jde-card__media img { transform: scale(1.045); }
.jde-card__body { padding: 24px; }
.jde-card h3 { margin: 0 0 10px; font-size: 1.45rem; }
.jde-card p { margin: 0 0 18px; color: var(--jde-muted); }
.jde-card__link { display: inline-flex; align-items: center; gap: 7px; color: var(--jde-primary); font-weight: 800; text-decoration: none; }
.jde-card__link::after { content: "→"; transition: transform .2s ease; }
.jde-card__link:hover::after { transform: translateX(4px); }

/* Quick links */
.jde-quick-links { position: relative; z-index: 8; margin-top: -58px; }
.jde-quick-card { display: flex; align-items: flex-start; gap: 16px; min-height: 148px; padding: 24px; text-decoration: none; }
.jde-quick-card__icon { display: grid; place-items: center; flex: 0 0 48px; width: 48px; height: 48px; border-radius: 15px; background: rgba(254,213,49,.26); color: var(--jde-primary); }
.jde-quick-card__icon svg { width: 25px; height: 25px; }
.jde-quick-card h3 { margin: 1px 0 6px; font-size: 1.15rem; }
.jde-quick-card p { margin: 0; font-size: .92rem; line-height: 1.5; }

/* History */
.jde-split { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: center; gap: clamp(36px, 7vw, 86px); }
.jde-split--reverse .jde-split__media { order: 2; }
.jde-split__media { position: relative; }
.jde-split__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 30px; box-shadow: var(--jde-shadow); }
.jde-split__media::after { content: "70"; position: absolute; right: -20px; bottom: -55px; font-family: var(--jde-font-heading); font-size: clamp(7rem, 16vw, 13rem); font-weight: 900; line-height: 1; color: rgba(37,49,96,.06); z-index: -1; }
.jde-split__content h2 { font-size: clamp(2.2rem, 4.5vw, 3.7rem); margin: 0 0 18px; }
.jde-split__content p { color: var(--jde-muted); }
.jde-year-line { display: flex; align-items: center; gap: 14px; margin: 22px 0; color: var(--jde-primary); font-family: var(--jde-font-heading); font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 800; }
.jde-year-line span { width: 48px; height: 4px; border-radius: 99px; background: var(--jde-red); }

/* Education */
.jde-education-card { position: relative; min-height: 420px; display: flex; align-items: flex-end; color: #fff; border: 0; isolation: isolate; }
.jde-education-card::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(13,19,48,.92), rgba(13,19,48,.04) 75%); }
.jde-education-card .jde-card__media { position: absolute; inset: 0; z-index: -2; aspect-ratio: auto; }
.jde-education-card .jde-card__body { width: 100%; }
.jde-education-card h3 { color: #fff; font-size: 1.75rem; }
.jde-education-card p { color: rgba(255,255,255,.82); }
.jde-education-card .jde-card__link { color: var(--jde-accent); }

/* Statistics */
.jde-stats { position: relative; }
.jde-stats::before { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 10% 20%, rgba(254,213,49,.13), transparent 26%), radial-gradient(circle at 90% 80%, rgba(217,21,34,.14), transparent 24%); }
.jde-stat { position: relative; padding: 18px; text-align: center; }
.jde-stat__number { display: block; color: var(--jde-accent); font-family: var(--jde-font-heading); font-size: clamp(2.7rem, 5vw, 4.6rem); font-weight: 900; line-height: 1; }
.jde-stat__label { display: block; margin-top: 10px; color: rgba(255,255,255,.84); font-weight: 700; }

/* Events */
.jde-event-card__date { display: inline-block; margin-bottom: 10px; color: var(--jde-red); font-size: .78rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }

/* Posts */
.jde-post-card .jde-card__media { aspect-ratio: 16/9; }
.jde-post-card__meta { color: var(--jde-red); font-size: .8rem; font-weight: 750; text-transform: uppercase; letter-spacing: .08em; }

/* Campuses */
.jde-campus-card { display: grid; grid-template-columns: 42% 58%; min-height: 290px; }
.jde-campus-card .jde-card__media { aspect-ratio: auto; }
.jde-campus-card .jde-card__body { display: flex; flex-direction: column; justify-content: center; }
.jde-campus-meta { list-style: none; padding: 0; margin: 14px 0 20px; color: var(--jde-muted); font-size: .92rem; }
.jde-campus-meta li + li { margin-top: 6px; }

/* CTA */
.jde-cta { position: relative; padding: clamp(40px, 6vw, 74px); border-radius: 34px; overflow: hidden; background: var(--jde-primary); color: #fff; box-shadow: var(--jde-shadow); }
.jde-cta::before { content: "★"; position: absolute; right: 4%; top: 50%; transform: translateY(-50%); color: rgba(254,213,49,.11); font-size: clamp(9rem, 25vw, 18rem); line-height: 1; }
.jde-cta__inner { position: relative; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.jde-cta h2 { max-width: 720px; margin: 0 0 10px; color: #fff; font-size: clamp(2rem, 4vw, 3.2rem); }
.jde-cta p { margin: 0; color: rgba(255,255,255,.8); }

/* Content */
.site-main { min-height: 50vh; }
.jde-page-header { padding: clamp(70px, 10vw, 130px) 0; background: var(--jde-primary); color: #fff; text-align: center; }
.jde-page-header h1 { margin: 0; color: #fff; font-size: clamp(2.6rem, 6vw, 4.8rem); }
.jde-page-header p { max-width: 700px; margin: 14px auto 0; color: rgba(255,255,255,.8); }
.jde-entry { padding: clamp(56px, 8vw, 100px) 0; }
.jde-entry__content > * { max-width: var(--jde-content); margin-left: auto; margin-right: auto; }
.jde-entry__content > .alignwide { max-width: var(--jde-wide); }
.jde-entry__content > .alignfull { max-width: none; }
.jde-entry__content img { border-radius: 16px; }
.jde-entry__content h2 { margin-top: 1.7em; }
.jde-entry__content blockquote { border-left: 5px solid var(--jde-accent); margin-block: 2rem; padding: 18px 24px; background: rgba(37,49,96,.05); }
.jde-post-grid { padding: 70px 0 100px; }
.navigation.pagination { margin-top: 40px; }
.nav-links { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.page-numbers { display: grid; place-items: center; min-width: 42px; height: 42px; padding-inline: 10px; border: 1px solid var(--jde-border); background: #fff; border-radius: 10px; text-decoration: none; }
.page-numbers.current { background: var(--jde-primary); color: #fff; }

/* Footer */
.site-footer { background: var(--jde-footer-bg); color: var(--jde-footer-text); }
.jde-footer__main { padding: 72px 0 50px; display: grid; gap: 38px; }
.jde-footer__main--4 { grid-template-columns: 1.25fr repeat(3, minmax(0, 1fr)); }
.jde-footer__main--3 { grid-template-columns: 1.2fr repeat(2, minmax(0, 1fr)); }
.jde-footer__main--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.jde-footer__main--1 { grid-template-columns: minmax(0, 1fr); }
.jde-footer__brand img { width: 210px; max-height: 125px; padding: 10px; object-fit: contain; object-position: left center; background: #fff; border-radius: 16px; }
.jde-footer__brand h2 { color: var(--jde-footer-head); font-size: 1.45rem; }
.jde-footer__brand p, .jde-footer__description { max-width: 340px; }
.jde-footer__description p:first-child { margin-top: 0; }
.jde-footer__description p:last-child { margin-bottom: 0; }
.jde-footer__title { margin: 0 0 18px; color: var(--jde-footer-head); font-family: var(--jde-font-body); font-size: .93rem; letter-spacing: .08em; text-transform: uppercase; }
.jde-footer-menu, .jde-footer-list { list-style: none; padding: 0; margin: 0; }
.jde-footer-menu li + li, .jde-footer-list li + li { margin-top: 10px; }
.jde-footer-menu a, .jde-footer-list a { color: var(--jde-footer-text); text-decoration: none; }
.jde-footer-menu a:hover, .jde-footer-list a:hover { color: var(--jde-accent); }
.jde-footer__bottom { border-top: 1px solid rgba(255,255,255,.12); padding: 20px 0; font-size: .84rem; }
.jde-footer__bottom-inner { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.jde-social { display: flex; gap: 12px; }
.jde-social a { color: var(--jde-footer-head); text-decoration: none; }

/* Forms */
input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="search"], textarea, select {
  width: 100%; padding: 13px 15px; border: 1px solid var(--jde-border); border-radius: 12px; background: #fff; color: var(--jde-text);
}
input[type="submit"], button[type="submit"] { border: 0; padding: 13px 23px; border-radius: 999px; background: var(--jde-primary); color: #fff; font-weight: 800; }

@media (max-width: 1100px) {
  .jde-header__inner { grid-template-columns: 1fr auto auto; min-height: 78px; }
  .jde-menu-toggle { display: block; }
  .primary-navigation { display: none; position: absolute; left: 18px; right: 18px; top: calc(100% + 10px); padding: 14px; background: #fff; border: 1px solid var(--jde-border); border-radius: 18px; box-shadow: var(--jde-shadow); }
  .primary-navigation.is-open { display: block; }
  .primary-navigation ul { display: block; }
  .primary-navigation a { padding: 12px; }
  .primary-navigation .sub-menu { position: static; display: block; box-shadow: none; border: 0; padding: 0 0 0 18px; min-width: 0; }
  .jde-header-cta { display: none; }
  .jde-anniversary-mark { width: 92px; }
  .jde-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .jde-footer__main--4, .jde-footer__main--3, .jde-footer__main--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .jde-footer__main--1 { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 820px) {
  body.admin-bar .site-header { top: 46px; }
  .jde-topbar__inner { justify-content: center; padding-block: 7px; }
  .jde-topbar__contact { display: none; }
  .jde-hero { min-height: 650px; align-items: end; }
  .jde-hero::after, .jde-hero--right::after, .jde-carousel__slide::after, .jde-hero--right .jde-carousel__slide::after, .jde-hero--center .jde-carousel__slide::after { background: linear-gradient(to top, rgba(13,19,48,.95) 0%, rgba(13,19,48,.66) 58%, rgba(13,19,48,.25) 100%); }
  .jde-hero__content, .jde-hero--right .jde-hero__content, .jde-carousel__slide.jde-hero--center .jde-hero__content, .jde-carousel__slide.jde-hero--right .jde-hero__content { max-width: none; margin: 0; text-align: left; padding: 110px 0 74px; }
  .jde-hero--right .jde-hero__text, .jde-carousel__slide.jde-hero--center .jde-hero__text, .jde-carousel__slide.jde-hero--right .jde-hero__text { margin-left: 0; margin-right: 0; }
  .jde-hero--right .jde-hero__actions, .jde-carousel__slide.jde-hero--center .jde-hero__actions, .jde-carousel__slide.jde-hero--right .jde-hero__actions { justify-content: flex-start; }
  .jde-hero__anniversary { display: none; }
  .jde-hero__curve { width: 270px; height: 270px; border-width: 12px; right: -90px; top: -64px; }
  .jde-carousel__arrow { top: auto; bottom: 24px; width: 42px; height: 42px; transform: none; }
  .jde-carousel__arrow:hover { transform: scale(1.04); }
  .jde-carousel__arrow--prev { left: 16px; }
  .jde-carousel__arrow--next { right: 16px; }
  .jde-quick-links { margin-top: 0; padding-top: 28px; }
  .jde-split, .jde-split--reverse { grid-template-columns: 1fr; }
  .jde-split--reverse .jde-split__media { order: initial; }
  .jde-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .jde-campus-card { grid-template-columns: 1fr; }
  .jde-campus-card .jde-card__media { aspect-ratio: 16/9; }
  .jde-cta__inner { display: block; }
  .jde-cta__actions { margin-top: 24px; }
}

@media (max-width: 620px) {
  body { font-size: 16px; }
  .jde-container, .jde-content-width { width: min(calc(100% - 28px), var(--jde-wide)); }
  .jde-topbar__links { justify-content: center; gap: 12px; }
  .jde-header__inner { gap: 10px; min-height: 72px; }
  .jde-brand__tagline { display: none; }
  .jde-brand__name { font-size: .86rem; }
  .custom-logo { max-height: 52px; }
  .jde-anniversary-mark { width: 68px; }
  .jde-hero__title { font-size: clamp(2.55rem, 13vw, 4rem); }
  .jde-hero__actions { display: grid; }
  .jde-button { width: 100%; }
  .jde-grid--4, .jde-grid--3, .jde-grid--2 { grid-template-columns: 1fr; }
  .jde-quick-card { min-height: 0; }
  .jde-education-card { min-height: 380px; }
  .jde-footer__main { grid-template-columns: 1fr; }
  .jde-footer__bottom-inner { display: block; text-align: center; }
  .jde-social { justify-content: center; margin-top: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; animation-iteration-count: 1 !important; }
}


/* =========================================================
   JDE La Salle 70 v1.2 · Sistema de páginas y bloques
   ========================================================= */
.jde-entry__content > .wp-block-group.alignfull,
.jde-entry__content > .wp-block-cover.alignfull { width: 100%; margin-left: 0; margin-right: 0; }
.jde-entry__content > .wp-block-group.alignwide,
.jde-entry__content > .wp-block-columns.alignwide,
.jde-entry__content > .wp-block-cover.alignwide { width: min(calc(100% - 36px), var(--jde-wide)); }
.jde-template-landing .jde-entry { padding: 0; }
.jde-template-landing .jde-page-header,
.jde-template-no-title .jde-page-header { display: none; }
.jde-template-full-width .jde-entry,
.jde-template-no-title .jde-entry { padding-top: 0; }
.jde-template-page-level .jde-page-header,
.jde-template-page-history .jde-page-header,
.jde-template-page-campus .jde-page-header,
.jde-template-page-event .jde-page-header,
.jde-template-page-contact .jde-page-header { position:relative; overflow:hidden; }
.jde-template-page-history .jde-page-header::after,
.jde-template-page-event .jde-page-header::after { content:"70"; position:absolute; right:-.02em; bottom:-.3em; font:900 clamp(10rem,28vw,30rem)/1 var(--jde-font-heading); color:rgba(255,255,255,.045); pointer-events:none; }

/* Estilos de bloque registrados */
.wp-block-button.is-style-jde-blue .wp-block-button__link { background:var(--jde-primary); color:#fff; }
.wp-block-button.is-style-jde-blue .wp-block-button__link:hover { background:var(--jde-secondary); color:#fff; }
.wp-block-button.is-style-jde-outline .wp-block-button__link { background:transparent; color:var(--jde-primary); border:2px solid var(--jde-primary); }
.wp-block-button.is-style-jde-outline .wp-block-button__link:hover { background:var(--jde-primary); color:#fff; }
.wp-block-button.is-style-jde-red-outline .wp-block-button__link { background:transparent; color:var(--jde-red); border:2px solid var(--jde-red); }
.wp-block-button.is-style-jde-red-outline .wp-block-button__link:hover { background:var(--jde-red); color:#fff; }
.wp-block-group.is-style-jde-card { background:#fff; border:1px solid var(--jde-border); border-radius:var(--jde-radius); box-shadow:var(--jde-shadow); padding:clamp(24px,4vw,42px); }
.wp-block-group.is-style-jde-blue-section { background:var(--jde-primary); color:#fff; border-radius:var(--jde-radius); padding:clamp(32px,6vw,72px); overflow:hidden; }
.wp-block-group.is-style-jde-blue-section h1,.wp-block-group.is-style-jde-blue-section h2,.wp-block-group.is-style-jde-blue-section h3,.wp-block-group.is-style-jde-blue-section h4 { color:#fff; }
.wp-block-group.is-style-jde-soft-section { background:var(--jde-bg); border-radius:var(--jde-radius); padding:clamp(32px,6vw,72px); }
.wp-block-group.is-style-jde-anniversary-section { position:relative; color:#fff; background:linear-gradient(135deg,var(--jde-secondary),var(--jde-primary) 72%,var(--jde-red)); border-radius:var(--jde-radius); padding:clamp(32px,6vw,72px); overflow:hidden; }
.wp-block-group.is-style-jde-anniversary-section::after { content:"★"; position:absolute; right:-.12em; top:-.35em; font-size:clamp(12rem,28vw,30rem); color:rgba(254,213,49,.08); line-height:1; pointer-events:none; }
.wp-block-group.is-style-jde-anniversary-section > * { position:relative; z-index:1; }
.wp-block-group.is-style-jde-anniversary-section h1,.wp-block-group.is-style-jde-anniversary-section h2,.wp-block-group.is-style-jde-anniversary-section h3,.wp-block-group.is-style-jde-anniversary-section h4 { color:#fff; }
.wp-block-image.is-style-jde-rounded img { border-radius:24px; }
.wp-block-image.is-style-jde-frame img { padding:10px; border:3px solid var(--jde-accent); background:#fff; border-radius:20px; box-shadow:var(--jde-shadow); }
.wp-block-heading.is-style-jde-star-title { display:flex; align-items:center; gap:.35em; }
.wp-block-heading.is-style-jde-star-title::before { content:"★"; color:var(--jde-accent); font-size:.62em; }
.wp-block-heading.is-style-jde-line-title { position:relative; padding-bottom:.42em; }
.wp-block-heading.is-style-jde-line-title::after { content:""; display:block; width:72px; height:5px; margin-top:.35em; background:linear-gradient(90deg,var(--jde-accent) 0 58%,var(--jde-red) 58%); border-radius:999px; }
.wp-block-quote.is-style-jde-testimonial { margin:0; border:0; border-radius:22px; background:#fff; box-shadow:var(--jde-shadow); padding:clamp(24px,4vw,42px); position:relative; }
.wp-block-quote.is-style-jde-testimonial::before { content:"“"; position:absolute; right:24px; top:-12px; color:rgba(37,49,96,.1); font:700 7rem/1 var(--jde-font-heading); }
.wp-block-list.is-style-jde-check-list { list-style:none; padding-left:0; }
.wp-block-list.is-style-jde-check-list li { position:relative; padding-left:1.8em; margin:.55em 0; }
.wp-block-list.is-style-jde-check-list li::before { content:"✓"; position:absolute; left:0; top:0; width:1.25em; height:1.25em; display:grid; place-items:center; border-radius:50%; background:var(--jde-accent); color:var(--jde-secondary); font-weight:900; font-size:.82em; }
.wp-block-columns.is-style-jde-card-grid > .wp-block-column { background:#fff; border:1px solid var(--jde-border); border-radius:22px; box-shadow:var(--jde-shadow); padding:clamp(22px,3vw,34px); }
.wp-block-table.is-style-jde-table table { border-collapse:separate; border-spacing:0; overflow:hidden; border:1px solid var(--jde-border); border-radius:16px; }
.wp-block-table.is-style-jde-table th { background:var(--jde-primary); color:#fff; }
.wp-block-table.is-style-jde-table th,.wp-block-table.is-style-jde-table td { padding:14px 16px; border-color:var(--jde-border); }

/* Patrones y utilidades */
.jde-pattern-section { padding-top:clamp(56px,8vw,104px); padding-bottom:clamp(56px,8vw,104px); }
.jde-pattern-hero { overflow:hidden; }
.jde-pattern-hero .wp-block-cover__inner-container { width:min(calc(100% - 36px),var(--jde-wide)); margin-inline:auto; }
.jde-pattern-icon { width:56px; height:56px; display:grid; place-items:center; border-radius:16px; background:rgba(254,213,49,.22); color:var(--jde-primary); font-weight:900; font-size:1.45rem; }
.jde-pattern-number { font:800 clamp(3rem,7vw,5.8rem)/1 var(--jde-font-heading); color:var(--jde-primary); }
.jde-pattern-timeline { position:relative; }
.jde-pattern-timeline::before { content:""; position:absolute; left:17px; top:0; bottom:0; width:3px; background:linear-gradient(var(--jde-accent),var(--jde-red)); border-radius:99px; }
.jde-pattern-timeline > .wp-block-group { position:relative; padding-left:58px; }
.jde-pattern-timeline > .wp-block-group::before { content:"★"; position:absolute; left:0; top:.05em; width:36px; height:36px; display:grid; place-items:center; border-radius:50%; background:var(--jde-primary); color:var(--jde-accent); font-size:.85rem; }
.jde-pattern-contact-card a { text-decoration:none; }
.jde-pattern-download { transition:transform .2s ease,box-shadow .2s ease; }
.jde-pattern-download:hover { transform:translateY(-4px); box-shadow:0 24px 65px rgba(23,32,68,.18); }
.jde-pattern-page-title { text-wrap:balance; }
@media (max-width:781px) {
  .wp-block-columns.is-style-jde-card-grid > .wp-block-column { margin-bottom:18px; }
  .jde-pattern-section { padding-left:18px; padding-right:18px; }
}


/* =========================================================
   JDE 70 · ENLACES INSTITUCIONALES
   ========================================================= */
.jde-institutional-links {
    overflow: hidden;
}
.jde-institutional-links__grid {
    align-items: stretch;
}
.jde-institutional-link {
    min-height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: #fff;
    border-radius: var(--jde-radius);
    text-decoration: none;
    box-shadow: 0 12px 30px rgba(27,44,101,.08);
    transition: transform .3s ease, box-shadow .3s ease;
}
.jde-institutional-link img {
    display: block;
    width: 100%;
    max-width: 360px;
    max-height: 180px;
    height: auto;
    object-fit: contain;
    transition: transform .3s ease, opacity .3s ease;
}
.jde-institutional-link:hover {
    transform: translateY(-5px);
    box-shadow: 0 18px 38px rgba(27,44,101,.14);
}
.jde-institutional-link:hover img {
    transform: scale(1.04);
}
.jde-institutional-link:focus-visible {
    outline: 3px solid var(--jde-accent);
    outline-offset: 4px;
}
.jde-institutional-link--static:hover {
    transform: none;
    box-shadow: 0 12px 30px rgba(27,44,101,.08);
}
.jde-institutional-link--static:hover img {
    transform: none;
}
.jde-hero__anniversary {
    text-decoration: none;
}
@media (max-width: 900px) {
    .jde-institutional-link {
        min-height: 190px;
    }
}
@media (max-width: 600px) {
    .jde-institutional-link {
        min-height: 170px;
        padding: 20px;
    }
    .jde-institutional-link img {
        max-height: 150px;
    }
}
