/* ============================================================
   M.E.C. — Sistema de diseño
   Identidad: naranja + bordó + cuadrillé (gingham). Mobile-first.
   ============================================================ */

:root {
  --orange: #E8551E;
  --orange-soft: #F39A6B;
  --orange-light: #FBE7DA;
  --bordo: #8A1C1C;
  --bordo-deep: #5E1212;
  --ink: #2B2118;
  --ink-soft: #6B5D4F;
  --paper: #FFFDFB;
  --cream: #FBF4ED;
  --line: #ECDED2;
  --white: #ffffff;
  --gingham: #f7c9b8;

  --radius: 16px;
  --radius-lg: 26px;
  --radius-sm: 10px;
  --shadow: 0 10px 30px -12px rgba(138, 28, 28, .25);
  --shadow-lg: 0 28px 60px -22px rgba(138, 28, 28, .35);
  --shadow-soft: 0 6px 22px -10px rgba(43, 33, 24, .22);

  --maxw: 1180px;
  --ease: cubic-bezier(.22, 1, .36, 1);

  --font-head: 'Fraunces', 'Playfair Display', Georgia, serif;
  --font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--paper);
  line-height: 1.65;
  overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: var(--orange); text-decoration: none; }
h1, h2, h3, h4 { font-family: var(--font-head); line-height: 1.1; font-weight: 600; color: var(--ink); margin: 0 0 .4em; }
h1 { font-size: clamp(2.1rem, 5vw, 3.9rem); letter-spacing: -.02em; }
h2 { font-size: clamp(1.6rem, 3vw, 2.5rem); letter-spacing: -.015em; }
h3 { font-size: clamp(1.1rem, 2vw, 1.4rem); }
p { margin: 0 0 1rem; }

/* ---------- Cuadrillé (gingham) ---------- */
.gingham {
  background-color: var(--orange-light);
  background-image:
    linear-gradient(45deg, transparent 46%, rgba(232,85,30,.10) 46% 54%, transparent 54%),
    linear-gradient(-45deg, transparent 46%, rgba(232,85,30,.10) 46% 54%, transparent 54%),
    linear-gradient(rgba(232,85,30,.16), rgba(232,85,30,.16)),
    linear-gradient(90deg, rgba(232,85,30,.16), rgba(232,85,30,.16));
  background-size: 38px 38px, 38px 38px, 38px 100%, 100% 38px;
}
.gingham-soft {
  background-color: #fff;
  background-image:
    linear-gradient(rgba(232,85,30,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(232,85,30,.06) 1px, transparent 1px);
  background-size: 26px 26px;
}

/* ---------- Layout helpers ---------- */
.container { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: clamp(1.1rem, 4vw, 2.4rem); }
.section { padding-block: clamp(2.6rem, 5vw, 4.6rem); }
.section--tight { padding-block: clamp(1.8rem, 4vw, 3rem); }
.bg-cream { background: var(--cream); }
.bg-ink { background: var(--ink); color: #f4ece4; }
.bg-bordo { background: linear-gradient(135deg, var(--bordo), var(--bordo-deep)); color: #fdeee8; }
.text-center { text-align: center; }
.grid { display: grid; gap: clamp(1.1rem, 2.5vw, 2rem); }
@media (min-width: 640px){ .grid-2 { grid-template-columns: repeat(2,1fr); } }
@media (min-width: 880px){ .grid-3 { grid-template-columns: repeat(3,1fr); } .grid-4 { grid-template-columns: repeat(4,1fr); } }
.grid-2 { grid-template-columns: 1fr; }
.grid-3, .grid-4 { grid-template-columns: 1fr; }
@media (min-width:640px){ .grid-4 { grid-template-columns: repeat(2,1fr); } }

/* ---------- Eyebrow / titles ---------- */
.eyebrow {
  display: inline-flex; align-items: center; gap: .5rem;
  font-family: var(--font-body); font-weight: 700; font-size: .78rem;
  letter-spacing: .18em; text-transform: uppercase; color: var(--orange);
  margin-bottom: 1rem;
}
.eyebrow::before { content: ""; width: 28px; height: 2px; background: var(--orange); display: inline-block; }
.lead { font-size: clamp(1.05rem, 2vw, 1.3rem); color: var(--ink-soft); max-width: 60ch; }
.section-head { max-width: 64ch; margin-bottom: clamp(2rem,4vw,3rem); }
.section-head.center { margin-inline: auto; text-align: center; }

/* ---------- Buttons ---------- */
.btn {
  --bg: var(--orange); --fg: #fff;
  display: inline-flex; align-items: center; justify-content: center; gap: .55rem;
  padding: .9rem 1.6rem; border-radius: 100px; font-weight: 600; font-size: .98rem;
  background: var(--bg); color: var(--fg); border: 2px solid transparent; cursor: pointer;
  white-space: nowrap;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), background .25s;
  box-shadow: 0 10px 24px -12px rgba(232,85,30,.7);
}
.btn:hover { transform: translateY(-3px); box-shadow: 0 18px 34px -14px rgba(232,85,30,.8); }
.btn--ghost { background: transparent; color: var(--orange); border-color: var(--orange); box-shadow: none; }
.btn--ghost:hover { background: var(--orange); color: #fff; }
.btn--light { background: #fff; color: var(--bordo); box-shadow: var(--shadow-soft); }
.btn--bordo { background: var(--bordo); box-shadow: 0 10px 24px -12px rgba(138,28,28,.7); }
.btn--wa { background: #25D366; box-shadow: 0 10px 24px -12px rgba(37,211,102,.8); }
.btn--block { width: 100%; }
.btn--sm { padding: .6rem 1.1rem; font-size: .86rem; }
.btn svg { width: 1.15em; height: 1.15em; flex: 0 0 auto; }

/* ---------- Header / Nav ---------- */
.site-header {
  position: fixed; inset: 0 0 auto 0; z-index: 100;
  transition: background .4s var(--ease), box-shadow .4s, padding .4s;
  padding-block: 1rem;
}
.site-header.scrolled { background: rgba(255,253,251,.92); backdrop-filter: blur(12px); box-shadow: 0 6px 22px -16px rgba(43,33,24,.5); padding-block: .55rem; }
.nav { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.brand { display: flex; align-items: center; gap: .6rem; font-family: var(--font-head); font-weight: 700; font-size: 1.4rem; color: #fff; letter-spacing: .02em; transition: color .3s; flex-shrink: 0; }
.brand .dot { color: var(--orange-soft); }
.brand small { display:block; font-family: var(--font-body); font-weight:600; font-size:.5rem; letter-spacing:.16em; text-transform:uppercase; color: rgba(255,255,255,.7); transition: color .3s; }
.site-header.scrolled .brand { color: var(--bordo); }
.site-header.scrolled .brand small { color: var(--ink-soft); }
.site-header.scrolled .brand .dot { color: var(--orange); }
.nav-links { display: none; align-items: center; gap: .1rem; list-style: none; margin: 0; padding: 0; }
.nav-links a { color: rgba(255,255,255,.82); font-weight: 500; font-size: .88rem; padding: .45rem .62rem; border-radius: 100px; transition: color .2s, background .2s; }
.nav-links a:hover, .nav-links a.active { color: #fff; background: rgba(255,255,255,.14); }
.site-header.scrolled .nav-links a { color: var(--ink); }
.site-header.scrolled .nav-links a:hover, .site-header.scrolled .nav-links a.active { color: var(--orange); background: var(--orange-light); }
.nav-cta { display: none; flex-shrink: 0; }
.nav-toggle span { background: #fff; }
.site-header.scrolled .nav-toggle span { background: var(--ink); }
.nav-toggle { display: inline-flex; flex-direction: column; gap: 5px; background: none; border: 0; cursor: pointer; padding: 8px; }
.nav-toggle span { width: 26px; height: 2px; background: #fff; border-radius: 2px; transition: .3s; }
@media (min-width: 1024px){
  .nav-links { display: flex; }
  .nav-cta { display: inline-flex; }
  .nav-toggle { display: none; }
}
/* mobile drawer */
.mobile-nav { position: fixed; inset: 0; z-index: 99; background: var(--paper); padding: 6rem 1.6rem 2rem; transform: translateX(100%); transition: transform .45s var(--ease); display: flex; flex-direction: column; gap: .3rem; overflow-y:auto; }
.mobile-nav.open { transform: translateX(0); }
.mobile-nav a { font-family: var(--font-head); font-size: 1.5rem; color: var(--ink); padding: .55rem 0; border-bottom: 1px solid var(--line); }
.mobile-nav a:hover { color: var(--orange); }
.mobile-nav .btn { margin-top: 1.2rem; }
body.nav-open { overflow: hidden; }

/* ---------- HERO (home) ---------- */
.hero { position: relative; min-height: 100svh; display: flex; align-items: center; overflow: hidden; color: #fff; }
.hero__bg { position: absolute; inset: 0; z-index: 0; background: radial-gradient(120% 120% at 70% 20%, #F8743A 0%, var(--orange) 32%, var(--bordo) 78%, var(--bordo-deep) 100%); }
.hero__canvas { position: absolute; inset: 0; z-index: 1; opacity: .9; }
.hero__grid { position: absolute; inset: 0; z-index: 1; opacity: .12;
  background-image: linear-gradient(#fff 1px, transparent 1px), linear-gradient(90deg, #fff 1px, transparent 1px);
  background-size: 60px 60px; mask-image: radial-gradient(120% 90% at 50% 30%, #000 30%, transparent 80%); }
.hero__inner { position: relative; z-index: 2; padding-block: 8rem 4rem; max-width: 50rem; }
.hero h1 { color: #fff; text-shadow: 0 6px 30px rgba(94,18,18,.35); }
.hero h1 .accent { color: #ffe2c9; font-style: italic; }
.hero__lead { font-size: clamp(1.05rem,2.2vw,1.4rem); color: #ffe9dd; max-width: 44ch; margin-bottom: 2rem; }
.hero__cta { display: flex; flex-wrap: wrap; gap: .9rem; }
.hero__scroll { position: absolute; bottom: 1.6rem; left: 50%; transform: translateX(-50%); z-index: 2; color: #ffd9c5; font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; display: flex; flex-direction: column; align-items: center; gap: .5rem; }
.hero__scroll .line { width: 1px; height: 42px; background: linear-gradient(#ffd9c5, transparent); animation: scrolldown 1.8s var(--ease) infinite; }
@keyframes scrolldown { 0%{transform:scaleY(0);transform-origin:top} 40%{transform:scaleY(1);transform-origin:top} 41%{transform-origin:bottom} 100%{transform:scaleY(0);transform-origin:bottom} }

/* marquee */
.marquee { overflow: hidden; white-space: nowrap; background: var(--ink); color: #f4ece4; padding: .9rem 0; }
.marquee__track { display: inline-flex; gap: 2.5rem; animation: marquee 22s linear infinite; }
.marquee span { font-family: var(--font-head); font-size: 1.1rem; opacity: .85; display:inline-flex; align-items:center; gap:2.5rem; }
.marquee span::after { content: "✦"; color: var(--orange-soft); }
@keyframes marquee { to { transform: translateX(-50%); } }

/* ---------- Cards ---------- */
.card { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow-soft); overflow: hidden; transition: transform .4s var(--ease), box-shadow .4s; border: 1px solid var(--line); display:flex; flex-direction:column; }
.card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
.card__media { aspect-ratio: 16/9; background: var(--orange-light); position: relative; overflow: hidden; }
.card__media img { width:100%; height:100%; object-fit: cover; transition: transform .6s var(--ease); }
.card:hover .card__media img { transform: scale(1.06); }
.card__media--ph { display:flex; align-items:center; justify-content:center; background: linear-gradient(135deg, var(--orange-soft), var(--orange)); color:#fff; font-family:var(--font-head); font-size:2.4rem; }
.card__body { padding: 1.3rem 1.4rem 1.5rem; display:flex; flex-direction:column; gap:.5rem; flex:1; }
.card__tag { align-self:flex-start; font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color: var(--orange); background: var(--orange-light); padding:.3rem .7rem; border-radius:100px; }
.card__title { font-family: var(--font-head); font-size: 1.25rem; margin:0; }
.card__desc { color: var(--ink-soft); font-size:.94rem; margin:0; flex:1; }
.card__meta { display:flex; flex-wrap:wrap; gap:.4rem .9rem; font-size:.82rem; color:var(--ink-soft); margin-top:.3rem; }
.card__meta b { color: var(--ink); font-weight:600; }
.card__actions { display:flex; gap:.6rem; margin-top:.7rem; flex-wrap:wrap; }

/* feature / value chips */
.chip { display:inline-flex; align-items:center; gap:.5rem; background:#fff; border:1px solid var(--line); border-radius:100px; padding:.6rem 1.1rem; font-weight:600; font-size:.95rem; box-shadow: var(--shadow-soft); }
.chip .ic { width:26px;height:26px; display:grid;place-items:center; border-radius:50%; background:var(--orange-light); color:var(--orange); font-size:.8rem; }
.chips { display:flex; flex-wrap:wrap; gap:.7rem; }

/* feature blocks */
.feature { display:flex; gap:1rem; align-items:flex-start; }
.feature--center { flex-direction:column; text-align:center; align-items:center; }
.feature__ic { flex:0 0 52px; width:52px; height:52px; border-radius:14px; background:var(--orange-light); color:var(--orange); display:grid; place-items:center; }
.feature__ic svg { width:24px; height:24px; }
.feature__ic--lg { width:66px; height:66px; border-radius:20px; }
.feature__ic--lg svg { width:30px; height:30px; stroke-width:1.5; }
.feature h3 { margin:.1rem 0 .3rem; }
.feature p { color: var(--ink-soft); margin:0; font-size:.95rem; }
.medallion { width:170px; height:170px; border-radius:50%; display:grid; place-items:center; color:#fff;
  background:radial-gradient(circle at 35% 28%, var(--orange-soft), var(--orange) 45%, var(--bordo) 100%);
  box-shadow:0 30px 70px -22px rgba(232,85,30,.7), inset 0 3px 12px rgba(255,255,255,.35); animation: float 5s var(--ease) infinite; }
.medallion svg { width:74px; height:74px; stroke-width:1.3; }
@keyframes float { 0%,100%{ transform:translateY(-8px); } 50%{ transform:translateY(8px); } }
/* chips con icono svg */
.chip .ic svg { width:14px; height:14px; }

/* split / two column */
.split { display:grid; gap: clamp(1.6rem,4vw,3.4rem); align-items:center; }
@media(min-width:900px){ .split { grid-template-columns: 1fr 1fr; } .split--media-first .media{order:-1;} }
.media-frame { border-radius: var(--radius-lg); overflow:hidden; box-shadow: var(--shadow-lg); aspect-ratio: 4/3; background: var(--orange-light); }
.media-frame img { width:100%;height:100%;object-fit:cover; }

/* team */
.team-card { text-align:center; background:#fff; border-radius:var(--radius); padding:1.6rem 1.3rem; box-shadow:var(--shadow-soft); border:1px solid var(--line); transition: transform .4s var(--ease), box-shadow .4s; }
.team-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
.team-card__photo { width:120px;height:120px;border-radius:50%;margin:0 auto 1rem;overflow:hidden;background:linear-gradient(135deg,var(--orange-soft),var(--bordo));display:grid;place-items:center;color:#fff;font-family:var(--font-head);font-size:2.4rem;border:4px solid #fff;box-shadow:var(--shadow); }
.team-card__photo img{width:100%;height:100%;object-fit:cover;}
.team-card__role{color:var(--orange);font-weight:700;font-size:.84rem;text-transform:uppercase;letter-spacing:.05em;}
.team-card__form{font-size:.85rem;color:var(--ink-soft);}

/* person card (equipo) */
.person { position:relative; border-radius:var(--radius); overflow:hidden; aspect-ratio:3/4; box-shadow:var(--shadow-soft); transition:transform .4s var(--ease), box-shadow .4s; }
.person:hover { transform:translateY(-6px); box-shadow:var(--shadow-lg); }
.person__media { position:absolute; inset:0; }
.person__media img { width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.person:hover .person__media img { transform:scale(1.07); }
.person__media--ph { display:grid; place-items:center; background:linear-gradient(140deg,var(--orange),var(--bordo)); color:#fff; font-family:var(--font-head); font-size:3.4rem; }
.person__overlay { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:flex-end; padding:1.2rem; color:#fff; background:linear-gradient(transparent 35%, rgba(40,16,8,.55) 60%, rgba(30,11,6,.92)); }
.person__name { color:#fff; margin:0; font-size:1.12rem; }
.person__role { color:var(--orange-soft); font-size:.74rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; margin-top:.15rem; }
.person__formation { font-size:.78rem; opacity:.82; margin:.4rem 0 0; }
.person__bio { font-size:.82rem; opacity:0; max-height:0; overflow:hidden; margin:0; transition:max-height .55s var(--ease), opacity .4s, margin .4s; }
.person:hover .person__bio { opacity:.92; max-height:180px; margin-top:.5rem; }

/* ---- Card de equipo directivo (editorial: foto + credenciales) ---- */
.team-grid { display:grid; gap:1.5rem; grid-template-columns:repeat(auto-fill, minmax(258px, 1fr)); }
.team-card { background:var(--paper); border:1px solid var(--line); border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-soft); display:flex; flex-direction:column; transition:transform .4s var(--ease), box-shadow .4s var(--ease); }
.team-card:hover { transform:translateY(-6px); box-shadow:var(--shadow-lg); }
.team-card__photo { position:relative; aspect-ratio:4/5; overflow:hidden; background:linear-gradient(140deg,var(--orange-soft),var(--bordo)); }
.team-card__photo img { width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.team-card:hover .team-card__photo img { transform:scale(1.06); }
.team-card__photo.is-ph { display:grid; place-items:center; color:#fff; font-family:var(--font-head); font-size:3rem; }
.team-card__area { display:inline-flex; align-self:flex-start; align-items:center; gap:.4rem; color:var(--bordo); font-size:.64rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; margin-bottom:.55rem; }
.team-card__area::before { content:""; width:14px; height:2px; border-radius:2px; background:var(--orange); }
.team-card__body { padding:1.1rem 1.2rem 1.3rem; display:flex; flex-direction:column; flex:1; }
.team-card__name { font-family:var(--font-head); font-size:1.3rem; line-height:1.15; margin:0; color:var(--ink); }
.team-card__role { color:var(--orange); font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; margin-top:.35rem; }
.team-card__bio { color:var(--ink-soft); font-size:.9rem; line-height:1.5; margin:.7rem 0 0; }
.team-card__creds { margin-top:auto; padding-top:1rem; border-top:1px solid var(--line); }
.team-card__creds-label { display:inline-flex; align-items:center; gap:.35rem; color:var(--ink); font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; }
.team-card__creds-label svg { width:15px; height:15px; color:var(--orange); }
.team-card__creds ul { list-style:none; margin:.6rem 0 0; padding:0; display:flex; flex-wrap:wrap; gap:.4rem; }
.team-card__creds li { font-size:.72rem; font-weight:600; color:var(--bordo); background:var(--orange-light); border:1px solid #f3d9c8; padding:.28rem .62rem; border-radius:999px; line-height:1.25; }

/* ---- Mapa de egresados (Comunidad) ---- */
.map-wrap { display:grid; gap:2rem; align-items:center; }
@media(min-width:860px){ .map-wrap { grid-template-columns:1.25fr .75fr; } }
.ar-map { position:relative; width:100%; max-width:540px; margin-inline:auto; aspect-ratio:1/1; overflow:hidden; border-radius:16px; cursor:grab; touch-action:none; }
.ar-map.is-zoomed:active { cursor:grabbing; }
.ar-map__zoom { position:absolute; inset:0; transform-origin:0 0; will-change:transform; }
.ar-map__svg { width:100%; height:100%; display:block; filter:drop-shadow(0 24px 40px rgba(138,28,28,.28)); }
.ar-map__pins { position:absolute; inset:0; }
.ar-map__ctrl { position:absolute; right:10px; bottom:10px; z-index:6; display:flex; flex-direction:column; gap:6px; }
.ar-map__ctrl button { width:34px; height:34px; border-radius:9px; border:1px solid rgba(255,255,255,.28); background:rgba(40,16,8,.55); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); color:#fff; font-size:1.15rem; line-height:1; cursor:pointer; transition:background .2s; }
.ar-map__ctrl button:hover { background:var(--orange); border-color:var(--orange); }
.ar-pin { position:absolute; transform:translate(-50%,-50%); width:34px; height:34px; padding:0; border:0; background:none; cursor:pointer; }
.ar-pin.is-dim { opacity:0; pointer-events:none; transition:opacity .3s; }
.ar-pin__avatar { display:block; width:34px; height:34px; border-radius:50%; border:2.5px solid #fff; overflow:hidden; background:var(--bordo); box-shadow:0 5px 12px rgba(40,16,8,.45); position:relative; z-index:2; transition:transform .3s var(--ease), border-color .3s; }
.ar-pin__avatar img { width:100%; height:100%; object-fit:cover; }
.ar-pin:hover .ar-pin__avatar, .ar-pin.is-active .ar-pin__avatar { transform:scale(1.3); border-color:var(--orange); }
.ar-pin__pulse { position:absolute; left:50%; top:50%; width:34px; height:34px; margin:-17px 0 0 -17px; border-radius:50%; border:2px solid var(--orange-soft); animation:pinpulse 2.4s ease-out infinite; pointer-events:none; }
@keyframes pinpulse { 0%{ transform:scale(.5); opacity:.8;} 100%{ transform:scale(2); opacity:0;} }
.map-side { align-self:center; }
.map-stat__n { font-family:var(--font-head); font-size:clamp(2.4rem,6vw,3.4rem); color:var(--orange); line-height:1; display:block; }
.map-stat__l { color:var(--ink-soft); font-size:.9rem; }
.map-list { list-style:none; padding:0; margin:1rem 0 0; display:flex; flex-direction:column; gap:.15rem; max-height:260px; overflow:auto; }
.map-list__item { width:100%; text-align:left; background:none; border:0; font:inherit; padding:.5rem .6rem; border-radius:8px; cursor:pointer; display:flex; align-items:center; gap:.55rem; color:var(--ink); transition:background .2s; }
.map-list__item:hover { background:var(--orange-light); }
.map-list__dot { width:9px; height:9px; border-radius:50%; background:var(--orange); flex-shrink:0; }

/* banner oscuro con persona (presentación) */
.hero-banner { position:relative; overflow:hidden; background:linear-gradient(120deg,#1c0a05 0%,#3a190d 70%,#5e1212 100%); color:#fff; }
.hero-banner__grid { display:grid; grid-template-columns:1fr; gap:1.5rem; align-items:center; padding-block:clamp(2.4rem,5vw,4.5rem); }
@media(min-width:860px){ .hero-banner__grid { grid-template-columns:1.15fr .85fr; } }
.hero-banner__text h2 { color:#fff; }
.hero-banner__text p { color:#ecdcd0; max-width:54ch; }
.hero-banner__list { display:flex; flex-wrap:wrap; gap:.7rem 1.6rem; list-style:none; padding:0; margin:1.3rem 0 0; }
.hero-banner__list li { display:flex; align-items:center; gap:.5rem; color:#fff; font-weight:600; font-size:.95rem; }
.hero-banner__list svg { width:18px; height:18px; color:var(--orange-soft); }
.hero-banner__media { position:relative; align-self:end; display:flex; align-items:flex-end; justify-content:center; margin-bottom:calc(-1 * clamp(2.4rem,5vw,4.5rem)); }
.hero-banner__media img { width:100%; height:auto; max-height:540px; object-fit:contain; object-position:center bottom; display:block; -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 38%); mask-image:linear-gradient(90deg, transparent 0, #000 38%); }
@media(max-width:859px){ .hero-banner__media { margin-bottom:calc(-1 * clamp(2.4rem,5vw,4.5rem)); } .hero-banner__media img { mask-image:none; -webkit-mask-image:none; max-height:380px; } }

/* mapa full-width con panel flotante */
.comm-map { position:relative; padding-block:clamp(2.6rem,5vw,4.5rem); background:radial-gradient(120% 120% at 72% 8%, #3a190d, #190a05); color:#fff; overflow:hidden; }
.comm-map__head { max-width:900px; margin:0 auto clamp(1rem,3vw,2rem); padding-inline:clamp(1.1rem,4vw,2.4rem); text-align:center; }
.comm-map__head h2 { color:#fff; }
@media(min-width:760px){ .comm-map__head h2 { white-space:nowrap; } }
.comm-map__head .eyebrow { color:var(--orange-soft); justify-content:center; }
.comm-map__head .eyebrow::before { background:var(--orange-soft); }
.comm-map__head p { color:#e9d8cc; max-width:60ch; margin-inline:auto; }
.comm-map__stage { position:relative; max-width:1140px; margin:0 auto; padding-inline:clamp(1.1rem,4vw,2.4rem); }
@media(min-width:920px){ .comm-map__stage { display:flex; align-items:center; justify-content:center; gap:clamp(1.5rem,4vw,3.5rem); } }
.comm-map .ar-map { width:100%; max-width:clamp(340px,42vw,560px); margin-inline:auto; }
@media(min-width:920px){ .comm-map .ar-map { flex:1 1 auto; margin:0; } }
.comm-map .ar-map__svg { filter:drop-shadow(0 30px 55px rgba(0,0,0,.55)) drop-shadow(0 0 30px rgba(232,85,30,.25)); }
.comm-map__panel { margin-top:1.6rem; background:rgba(255,255,255,.09); -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px); border:1px solid rgba(255,255,255,.2); border-radius:22px; padding:1.8rem; box-shadow:0 26px 54px -22px rgba(0,0,0,.65); }
@media(min-width:920px){ .comm-map__panel { flex:0 0 clamp(360px,30vw,440px); align-self:stretch; margin-top:0; display:flex; flex-direction:column; } }
.comm-map__panel p { color:#e9d8cc; font-size:.9rem; }
.comm-map .map-stat__n { color:var(--orange-soft); }
.comm-map .map-stat__l { color:#e9d8cc; }
/* lista de ciudades + scrollbar finita */
.comm-map .map-list { max-height:300px; flex:1; padding-right:6px; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.4) transparent; }
.comm-map .map-list::-webkit-scrollbar { width:4px; }
.comm-map .map-list::-webkit-scrollbar-track { background:transparent; }
.comm-map .map-list::-webkit-scrollbar-thumb { background:rgba(255,255,255,.4); border-radius:4px; }
.comm-map .map-list__item { color:#fff; gap:.7rem; padding:.6rem .7rem; }
.comm-map .map-list__item:hover { background:rgba(255,255,255,.12); }
.comm-map .map-list__item.is-active { background:rgba(232,85,30,.28); }
.map-list__city { flex:1; }
.comm-map .map-list__prov { color:rgba(255,255,255,.55); font-weight:400; }
.map-list__count { flex:0 0 auto; background:rgba(255,255,255,.16); border-radius:100px; padding:.12rem .55rem; font-size:.74rem; font-weight:700; }
.comm-map .map-list__item.is-active .map-list__count { background:var(--orange); }
/* info de filtro */
.map-filterinfo { display:flex; align-items:center; justify-content:space-between; gap:.6rem; margin:.4rem 0 .8rem; padding:.55rem .8rem; border-radius:12px; background:rgba(232,85,30,.2); border:1px solid rgba(232,85,30,.45); font-size:.86rem; color:#fff; }
.map-filterinfo[hidden] { display:none; }
.map-filterinfo button { background:none; border:0; color:var(--orange-soft); font-weight:700; font-size:.8rem; cursor:pointer; white-space:nowrap; }
.map-panel-hint[hidden] { display:none; }

/* modal egresado */
.grad-modal { position:fixed; inset:0; z-index:9000; display:grid; place-items:center; padding:1.2rem; }
.grad-modal[hidden] { display:none; }
.grad-modal__backdrop { position:absolute; inset:0; background:rgba(40,16,8,.6); backdrop-filter:blur(4px); animation:fadein .3s; }
.grad-modal__card { position:relative; z-index:1; width:100%; max-width:440px; background:#fff; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-lg); display:grid; grid-template-columns:140px 1fr; animation:popin .4s var(--ease); }
@media(max-width:520px){ .grad-modal__card { grid-template-columns:1fr; } }
.grad-modal__photo { background:linear-gradient(140deg,var(--orange),var(--bordo)); min-height:160px; }
.grad-modal__photo img { width:100%; height:100%; object-fit:cover; }
.grad-modal__body { padding:1.4rem; }
.grad-modal__course { display:flex; align-items:center; gap:.6rem; margin:.4rem 0 .6rem; flex-wrap:wrap; }
.grad-modal__close { position:absolute; top:.5rem; right:.7rem; background:rgba(255,255,255,.85); border:0; width:32px; height:32px; border-radius:50%; font-size:1.4rem; line-height:1; cursor:pointer; z-index:2; }
@keyframes fadein { from{opacity:0;} to{opacity:1;} }
@keyframes popin { from{opacity:0; transform:translateY(20px) scale(.97);} to{opacity:1; transform:none;} }
/* testimonios mini */
.quote-ic { color:var(--orange-soft); font-family:var(--font-head); font-size:2.6rem; line-height:.2; display:inline-block; height:1.1rem; }
.mini-ava { width:42px; height:42px; border-radius:50%; overflow:hidden; background:linear-gradient(135deg,var(--orange-soft),var(--bordo)); flex-shrink:0; }
.mini-ava img { width:100%; height:100%; object-fit:cover; }

/* timeline */
.timeline { position:relative; padding-left:1.6rem; }
.timeline::before { content:""; position:absolute; left:5px; top:6px; bottom:6px; width:2px; background:linear-gradient(var(--orange),var(--orange-soft)); }
.timeline__item { position:relative; padding-bottom:2rem; }
.timeline__item::before { content:""; position:absolute; left:-1.6rem; top:5px; width:12px;height:12px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 4px var(--orange-light); }
.timeline__year { color:var(--orange); font-weight:700; font-family:var(--font-head); }

/* valores: UN módulo unificado (imagen a todo el ancho + bordó continuo con alpha) */
.values { position:relative; width:100%; overflow:hidden; background:var(--bordo-deep); color:#fff; }
.values__bg { position:absolute; inset:0; background-size:cover; background-position:center; opacity:0; transition:opacity .8s var(--ease); }
.values__bg.is-active { opacity:1; }
.values__veil { position:absolute; inset:0; z-index:1; background:linear-gradient(100deg, var(--bordo-deep) 0%, var(--bordo-deep) 36%, rgba(94,18,18,.74) 56%, rgba(94,18,18,.2) 100%); }
.values__inner { position:relative; z-index:2; display:grid; grid-template-columns:1fr; }
@media(min-width:880px){ .values__inner { grid-template-columns:minmax(270px,30%) 1fr; align-items:stretch; } }
.values__list { list-style:none; margin:0; padding:clamp(1rem,2vw,1.5rem) clamp(1.1rem,3vw,2.2rem); display:flex; flex-direction:column; justify-content:center; gap:0; }
.values__item { width:100%; display:flex; align-items:center; gap:.85rem; background:none; border:0; border-left:2px solid rgba(255,255,255,.18); padding:.48rem .9rem; font:inherit; font-weight:600; color:rgba(255,255,255,.66); cursor:pointer; text-align:left; transition:color .2s, border-color .2s; }
.values__item:hover { color:#fff; }
.values__item.is-active { color:var(--orange-soft); border-left-color:var(--orange-soft); }
.values__num { font-family:var(--font-head); font-size:.88rem; opacity:.7; min-width:2.4ch; text-align:right; font-variant-numeric:tabular-nums; flex-shrink:0; }
.values__name { flex:1; }
.values__detail { position:relative; min-height:280px; }
.values__panel { position:absolute; inset:0; padding:clamp(1.4rem,3vw,2.8rem); display:flex; flex-direction:column; justify-content:center; opacity:0; transform:translateY(12px); transition:opacity .55s var(--ease), transform .55s var(--ease); pointer-events:none; }
.values__panel.is-active { opacity:1; transform:none; pointer-events:auto; }
.values__index { color:var(--orange-soft); font-size:.76rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; }
.values__title { color:#fff; font-size:clamp(1.7rem,3.2vw,2.6rem); margin:.3rem 0 .5rem; }
.values__desc { color:#ffe9dd; font-size:clamp(1rem,1.5vw,1.15rem); max-width:42ch; margin:0; }
.values__progress { position:absolute; left:0; bottom:0; height:3px; background:var(--orange-soft); width:0; z-index:3; }
.values__detail.is-playing .values__progress { animation: vprog 5s linear forwards; }
@keyframes vprog { from{width:0;} to{width:100%;} }

/* stats */
.stat { text-align:center; }
.stat__num { font-family:var(--font-head); font-size: clamp(2.4rem,6vw,3.6rem); color:var(--orange); line-height:1; }
.stat__lbl { color:var(--ink-soft); font-size:.9rem; }

/* badges / pills list */
.pill-list { display:flex; flex-wrap:wrap; gap:.5rem; list-style:none; padding:0; margin:.6rem 0; }
.pill-list li { background:var(--cream); border:1px solid var(--line); border-radius:100px; padding:.4rem .9rem; font-size:.86rem; }

/* ---------- Forms ---------- */
.form { display:flex; flex-direction:column; gap:1rem; }
.form-row { display:grid; gap:1rem; }
@media(min-width:600px){ .form-row.cols-2 { grid-template-columns:1fr 1fr; } }
.field label { display:block; font-weight:600; font-size:.88rem; margin-bottom:.35rem; }
.field input, .field textarea, .field select {
  width:100%; padding:.8rem 1rem; border:1px solid var(--line); border-radius:var(--radius-sm);
  font:inherit; background:#fff; color:var(--ink); transition:border .2s, box-shadow .2s;
}
.field input:focus, .field textarea:focus, .field select:focus { outline:none; border-color:var(--orange); box-shadow:0 0 0 3px var(--orange-light); }
.field textarea { min-height:130px; resize:vertical; }
.note { font-size:.85rem; color:var(--ink-soft); }
.alert { padding:.9rem 1.1rem; border-radius:var(--radius-sm); font-size:.92rem; margin-bottom:1rem; }
.alert--ok { background:#e7f6ec; color:#1c7a3e; border:1px solid #bce4c9; }
.alert--err { background:#fdeaea; color:#b3261e; border:1px solid #f3c9c6; }
.alert--info { background:var(--orange-light); color:var(--bordo); border:1px solid #f2cdb9; }

/* ---------- WhatsApp floating ---------- */
.wa-float { position:fixed; right:18px; bottom:18px; z-index:120; width:60px;height:60px;border-radius:50%;
  background:#25D366; display:grid;place-items:center; box-shadow:0 12px 30px -8px rgba(37,211,102,.7); color:#fff;
  transition:transform .3s var(--ease); }
.wa-float:hover { transform:scale(1.08); }
.wa-float svg { width:32px;height:32px;fill:#fff; }
.wa-float::after { content:""; position:absolute; inset:0; border-radius:50%; box-shadow:0 0 0 0 rgba(37,211,102,.5); animation:pulse 2.2s infinite; }
@keyframes pulse { 0%{box-shadow:0 0 0 0 rgba(37,211,102,.5);} 70%{box-shadow:0 0 0 16px rgba(37,211,102,0);} 100%{box-shadow:0 0 0 0 rgba(37,211,102,0);} }

/* ---------- Footer ---------- */
.footer { background: var(--ink); color:#cbbfae; padding-block: clamp(3rem,6vw,4.5rem) 2rem; }
.footer a { color:#e7dccd; }
.footer a:hover { color:var(--orange-soft); }
.footer__grid { display:grid; gap:2rem; grid-template-columns:1fr; }
@media(min-width:760px){ .footer__grid { grid-template-columns: 1.4fr 1fr 1fr; } }
.footer h4 { color:#fff; font-family:var(--font-body); font-weight:700; font-size:.85rem; letter-spacing:.12em; text-transform:uppercase; margin-bottom:1rem; }
.footer ul { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:.5rem; font-size:.94rem; }
.footer__brand { font-family:var(--font-head); font-size:1.8rem; color:#fff; }
.footer__brand .dot{color:var(--orange);}
.footer__social { display:flex; gap:.7rem; margin-top:1rem; }
.footer__social a { width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.08);display:grid;place-items:center;transition:background .25s; }
.footer__social a:hover { background:var(--orange); }
.footer__map { grid-column: 1 / -1; }
.footer__map-frame { border-radius:14px; overflow:hidden; height:220px; border:1px solid rgba(255,255,255,.14); margin-top:.3rem; }
.footer__map-frame iframe { width:100%; height:100%; border:0; filter:grayscale(.15) contrast(1.05) brightness(.95); }
.footer__bottom { border-top:1px solid rgba(255,255,255,.1); margin-top:2.4rem; padding-top:1.4rem; font-size:.84rem; display:flex; flex-wrap:wrap; gap:.6rem; justify-content:space-between; color:#9a8d7c; }

/* event list (compacto) */
.ev-list { display:flex; flex-direction:column; gap:.9rem; }
.ev-row { display:grid; grid-template-columns:auto auto 1fr auto; gap:1.1rem; align-items:center; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:.9rem 1.1rem; box-shadow:var(--shadow-soft); transition:transform .3s var(--ease), box-shadow .3s; }
.ev-row:hover { transform:translateY(-3px); box-shadow:var(--shadow); }
.ev-row__date { display:flex; flex-direction:column; align-items:center; justify-content:center; width:62px; height:62px; border-radius:14px; background:linear-gradient(150deg,var(--orange),var(--bordo)); color:#fff; line-height:1; }
.ev-row__date.is-past { background:var(--cream); color:var(--ink-soft); border:1px solid var(--line); }
.ev-row__day { font-family:var(--font-head); font-size:1.5rem; }
.ev-row__mon { font-size:.66rem; font-weight:700; letter-spacing:.08em; }
.ev-row__yr { font-size:.58rem; opacity:.8; }
.ev-row__thumb { width:84px; height:62px; border-radius:10px; overflow:hidden; background:var(--orange-light); }
.ev-row__thumb img { width:100%; height:100%; object-fit:cover; }
.ev-row__thumb.is-ph { background:linear-gradient(135deg,var(--orange-soft),var(--orange)); }
.ev-row__tags { display:flex; flex-wrap:wrap; gap:.4rem; margin-bottom:.3rem; }
.ev-row__title { font-size:1.15rem; margin:0; }
.ev-row__sub { color:var(--ink-soft); font-size:.9rem; margin:.15rem 0 .35rem; }
.ev-row__meta { display:flex; flex-wrap:wrap; gap:.3rem 1rem; font-size:.82rem; color:var(--ink-soft); }
.ev-row__meta span { display:inline-flex; align-items:center; gap:.35rem; }
.ev-row__meta svg { width:15px; height:15px; }
.ev-row__actions { display:flex; flex-direction:column; gap:.4rem; }
.tag { font-size:.68rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; padding:.25rem .6rem; border-radius:100px; background:var(--cream); color:var(--ink-soft); }
.tag--live { background:var(--orange); color:#fff; }
.tag--muted { background:var(--line); color:var(--ink-soft); }
@media(max-width:680px){
  .ev-row { grid-template-columns:auto 1fr; }
  .ev-row__thumb { display:none; }
  .ev-row__actions { grid-column:1/-1; flex-direction:row; }
}

/* novedades (revista) */
.news-feat { display:grid; gap:0; grid-template-columns:1fr; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow); border:1px solid var(--line); background:#fff; color:inherit; margin-bottom:2rem; transition:box-shadow .3s, transform .3s var(--ease); }
.news-feat:hover { box-shadow:var(--shadow-lg); transform:translateY(-3px); }
@media(min-width:780px){ .news-feat { grid-template-columns:1fr 1fr; align-items:stretch; } }
.news-feat__media { position:relative; aspect-ratio:16/10; max-height:340px; background:var(--orange-light); overflow:hidden; }
@media(min-width:780px){ .news-feat__media { aspect-ratio:auto; height:100%; min-height:260px; } }
.news-feat__media img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.news-feat__media.is-ph { background:linear-gradient(135deg,var(--orange),var(--bordo)); }
.news-feat__body { padding:clamp(1.4rem,3vw,2.4rem); display:flex; flex-direction:column; justify-content:center; }
.link-arrow { display:inline-flex; align-items:center; gap:.4rem; color:var(--orange); font-weight:700; margin-top:.6rem; }
.link-arrow svg { width:18px; height:18px; transition:transform .3s var(--ease); }
.news-feat:hover .link-arrow svg, .news-item:hover .news-item__arrow svg { transform:translateX(5px); }
.news-list { display:flex; flex-direction:column; gap:.7rem; }
.news-item { display:grid; grid-template-columns:120px 1fr auto; gap:1.1rem; align-items:center; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:.7rem .9rem; color:inherit; transition:transform .3s var(--ease), box-shadow .3s; }
.news-item:hover { transform:translateY(-2px); box-shadow:var(--shadow-soft); }
.news-item__media { width:120px; height:78px; border-radius:10px; overflow:hidden; background:var(--orange-light); }
.news-item__media img { width:100%; height:100%; object-fit:cover; }
.news-item__media.is-ph { background:linear-gradient(135deg,var(--orange-soft),var(--orange)); }
.news-item__date { font-size:.76rem; color:var(--orange); font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
.news-item h3 { margin:.15rem 0; font-size:1.1rem; }
.news-item p { margin:0; color:var(--ink-soft); font-size:.88rem; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.news-item__arrow svg { width:20px; height:20px; color:var(--orange); transition:transform .3s var(--ease); }
@media(max-width:600px){ .news-item { grid-template-columns:84px 1fr; } .news-item__arrow { display:none; } }

/* ---------- Page hero (interior) ---------- */
.page-hero { position:relative; padding: 8rem 0 3rem; color:#fff; overflow:hidden; }
.page-hero--sm { padding: 7.5rem 0 2.4rem; }
.page-hero__bg { position:absolute; inset:0; z-index:0; background:linear-gradient(135deg,var(--orange),var(--bordo)); }
.page-hero .container { position:relative; z-index:1; }
.page-hero h1 { color:#fff; }
.page-hero .lead { color:#ffe9dd; }
.breadcrumb { font-size:.84rem; color:#ffd9c5; margin-bottom:.6rem; }
.breadcrumb a { color:#fff; }

/* ---------- Reveal animation ---------- */
.reveal { opacity:0; transform: translateY(28px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
.reveal.in { opacity:1; transform:none; }
.reveal.d1 { transition-delay:.08s; } .reveal.d2{transition-delay:.16s;} .reveal.d3{transition-delay:.24s;} .reveal.d4{transition-delay:.32s;}
@media (prefers-reduced-motion: reduce){ .reveal{opacity:1;transform:none;transition:none;} .hero__scroll .line, .wa-float::after, .marquee__track{animation:none;} }

/* ---------- Misc ---------- */
.divider { height:1px; background:var(--line); border:0; margin-block: 2rem; }
.tag-row { display:flex; flex-wrap:wrap; gap:.5rem; }
.filter-bar { display:inline-flex; flex-wrap:wrap; gap:.3rem; background:var(--cream); border:1px solid var(--line); border-radius:14px; padding:.35rem; margin-bottom:2rem; }
.filter-bar button { background:none; border:0; border-radius:9px; padding:.6rem 1.05rem; cursor:pointer; font:inherit; font-weight:600; font-size:.92rem; color:var(--ink-soft); transition:color .2s, background .2s; }
.filter-bar button:hover { color:var(--ink); background:#fff; }
.filter-bar button.active { color:#fff; background:var(--orange); box-shadow:0 2px 8px rgba(232,85,30,.28); }
.empty { text-align:center; padding:3rem 1rem; color:var(--ink-soft); }
.prose p { max-width:68ch; }
.prose h3 { margin-top:1.6rem; }

/* ============================================================
   CAPA PREMIUM: cursor, transiciones, hero 3D, tipografía cinética
   ============================================================ */

/* ---- Cursor personalizado ---- */
@media (pointer: fine) {
  body { cursor: none; }
  a, button, input, textarea, select, summary, .card, label { cursor: none; }
}
.cursor-dot, .cursor-ring { position: fixed; top: 0; left: 0; pointer-events: none; z-index: 10000; border-radius: 50%; will-change: transform; margin-left: -4px; margin-top: -4px; }
.cursor-dot { width: 8px; height: 8px; background: var(--orange); transition: opacity .2s; }
.cursor-ring { width: 42px; height: 42px; margin-left: -21px; margin-top: -21px; border: 1.5px solid var(--orange); transition: width .3s var(--ease), height .3s var(--ease), margin .3s var(--ease), background .3s, border-color .3s; }
body.cursor-hover .cursor-ring { width: 64px; height: 64px; margin-left: -32px; margin-top: -32px; background: rgba(232,85,30,.12); border-color: var(--orange-soft); }
body.cursor-down .cursor-ring { width: 30px; height: 30px; margin-left: -15px; margin-top: -15px; }

/* ---- Transición de página ---- */
.page-transition { position: fixed; inset: 0; z-index: 9999; background: linear-gradient(160deg, var(--orange), var(--bordo) 60%, var(--bordo-deep)); display: grid; place-items: center; transform: translateY(-100%); pointer-events: none; animation: pt-reveal .9s var(--ease) both; }
.page-transition__logo { font-family: var(--font-head); font-size: clamp(2.5rem,8vw,5rem); color: #fff; letter-spacing: .04em; opacity: 0; }
.page-transition__logo .dot { color: #ffd9a0; }
.page-transition.is-active { animation: none; transform: translateY(0); transition: transform .62s var(--ease); }
@keyframes pt-reveal { 0%{ transform: translateY(0);} 100%{ transform: translateY(-100%);} }
@keyframes pt-logo { 0%,12%{opacity:0;transform:translateY(14px);} 40%,70%{opacity:1;transform:none;} 100%{opacity:0;} }
.page-transition__logo { animation: pt-logo .9s var(--ease) both; }
.page-transition.is-active .page-transition__logo { animation: ptlogo2 .6s var(--ease) both; }
@keyframes ptlogo2 { from{opacity:0;transform:translateY(14px);} to{opacity:1;transform:none;} }

/* ---- HERO cinematográfico (override) ---- */
.hero { background: #1a0f0a; }
.hero__bg { background: radial-gradient(130% 120% at 50% 35%, #3a1b10 0%, #260f08 45%, #160b06 100%); }
.hero__inner { z-index: 3; pointer-events: none; }
.hero__inner .btn, .hero__inner a { pointer-events: auto; }
.hero__grid { z-index: 2; mix-blend-mode: screen; opacity: .08; }

/* Orbes de luz cálida (estáticos, sutiles) */
.hero__orbs { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.hero__orbs::before, .hero__orbs::after { content: ""; position: absolute; border-radius: 50%; filter: blur(70px); }
.hero__orbs::before { width: 48vw; height: 48vw; right: -8vw; top: -12vw; background: radial-gradient(circle, rgba(248,116,58,.42), transparent 68%); }
.hero__orbs::after { width: 40vw; height: 40vw; left: -10vw; bottom: -14vw; background: radial-gradient(circle, rgba(232,85,30,.30), transparent 70%); }

/* Sello M.E.C. (SVG, estático) */
.hero__seal { position: absolute; z-index: 1; top: 50%; right: clamp(2.5rem, 7vw, 7rem); transform: translateY(-50%); width: clamp(240px, 26vw, 360px); aspect-ratio: 1; pointer-events: none; opacity: .92; filter: drop-shadow(0 10px 40px rgba(0,0,0,.45)); }
.hero__seal svg { width: 100%; height: 100%; display: block; }
.seal-ln { fill: none; }
.seal-ln--1 { stroke: rgba(224,169,74,.55); stroke-width: 1.5; }
.seal-ln--2 { stroke: rgba(224,169,74,.32); stroke-width: 1; }
.seal-ln--dash { stroke: rgba(255,217,160,.42); stroke-width: 1; stroke-dasharray: 1 6; stroke-linecap: round; }
.seal-circ { fill: #ffd9a8; font-family: var(--font-body); font-size: 10px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; }
.seal-star { fill: rgba(224,169,74,.7); font-size: 11px; text-anchor: middle; }
.seal-mono { fill: #fff; font-family: var(--font-head, Georgia, serif); font-size: 38px; font-weight: 700; letter-spacing: .02em; text-anchor: middle; }
.seal-div { stroke: rgba(224,169,74,.6); stroke-width: 1; }
.seal-sub { fill: #ffd9a8; font-family: var(--font-body); font-size: 8.5px; font-weight: 600; letter-spacing: 2.5px; text-anchor: middle; }
@media (max-width: 1023px) { .hero__seal { display: none; } }

/* Tipografía cinética del hero */
.hero__title { margin: 0 0 1.2rem; }
.hero__title .line { display: block; overflow: hidden; padding-bottom: .04em; }
.hero__title .line > span { display: inline-block; transform: translateY(115%); transition: transform 1.05s var(--ease); }
body.is-ready .hero__title .line:nth-child(1) > span { transition-delay: .55s; }
body.is-ready .hero__title .line:nth-child(2) > span { transition-delay: .68s; }
body.is-ready .hero__title .line:nth-child(3) > span { transition-delay: .81s; }
body.is-ready .hero__title .line > span { transform: translateY(0); }
.hero__fade { opacity: 0; transform: translateY(20px); transition: opacity 1s var(--ease) .95s, transform 1s var(--ease) .95s; }
body.is-ready .hero__fade { opacity: 1; transform: none; }

/* Reveal con máscara (clip) para imágenes y bloques */
[data-reveal="mask"] { clip-path: inset(0 100% 0 0); transition: clip-path 1.1s var(--ease); }
[data-reveal="mask"].in { clip-path: inset(0 0 0 0); }
[data-reveal="up"] { opacity: 0; transform: translateY(40px); transition: opacity .9s var(--ease), transform .9s var(--ease); }
[data-reveal="up"].in { opacity: 1; transform: none; }
[data-reveal="scale"] img { transform: scale(1.18); transition: transform 1.4s var(--ease); }
[data-reveal="scale"].in img { transform: scale(1); }

/* Botón con relleno animado al hover */
.btn { position: relative; overflow: hidden; }
.btn > * { position: relative; z-index: 1; }

@media (prefers-reduced-motion: reduce) {
  .page-transition { display: none; }
  .cursor-dot, .cursor-ring { display: none; }
  body { cursor: auto; }
  .hero__title .line > span, .hero__fade { transform: none; opacity: 1; transition: none; }
}

/* utilities */
.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.6rem}.mb-0{margin-bottom:0}
.center{ text-align:center }
.muted{ color:var(--ink-soft) }
.flex{display:flex}.gap{gap:.7rem}.wrap{flex-wrap:wrap}.items-center{align-items:center}.between{justify-content:space-between}

/* ============================================================
   BIBLIOTECA 3D (estantería + lomos de libros)
   ============================================================ */
.lib-controls { display:flex; flex-wrap:wrap; gap:1rem; align-items:center; justify-content:space-between; margin-bottom:1.6rem; }
.lib-search { display:flex; align-items:center; gap:.5rem; background:#fff; border:1px solid var(--line); border-radius:100px; padding:.5rem 1rem; flex:1; min-width:240px; }
.lib-search svg { width:18px; height:18px; color:var(--orange); }
.lib-search input { border:0; outline:0; font:inherit; width:100%; background:none; }
.lib-filters { display:flex; gap:.5rem; flex-wrap:wrap; }
.lib-filters select { padding:.55rem .8rem; border:1px solid var(--line); border-radius:8px; font:inherit; background:#fff; }
.lib-az { display:flex; flex-wrap:wrap; gap:.2rem; width:100%; }
.lib-az button { min-width:24px; height:26px; border:0; background:none; border-radius:6px; font:inherit; font-size:.8rem; font-weight:600; color:var(--ink-soft); cursor:pointer; transition:.18s; }
.lib-az button:hover { color:var(--orange); }
.lib-az button.is-active { background:var(--orange); color:#fff; }

.book-grid { display:grid; gap:2rem 1.7rem; grid-template-columns:repeat(auto-fill, minmax(158px, 1fr)); padding:.5rem .2rem 1rem; }
.book3d { position:relative; background:none; border:0; padding:0; cursor:pointer; }
.book3d__cover { position:relative; aspect-ratio:1/1.46; border-radius:3px 7px 7px 3px; overflow:hidden; display:flex; flex-direction:column; padding:16px 16px 15px; color:#f6ead2;
  background:linear-gradient(135deg, var(--c1), var(--c2));
  border-right:7px solid rgba(244,232,206,.92);
  box-shadow: inset -11px 0 16px -7px rgba(0,0,0,.45), inset 5px 0 7px -2px rgba(255,255,255,.2), 8px 14px 28px -8px rgba(40,16,8,.55);
  transform:perspective(1100px) rotateY(-13deg); transform-origin:left center;
  transition:transform .5s var(--ease), box-shadow .5s; }
.book3d:hover .book3d__cover, .book3d:focus-visible .book3d__cover { transform:perspective(1100px) rotateY(-3deg) translateY(-8px); box-shadow:inset -11px 0 16px -7px rgba(0,0,0,.4), 16px 24px 42px -10px rgba(40,16,8,.6); }
.book3d__cover::before { content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:repeating-linear-gradient(135deg, rgba(255,255,255,.05) 0 1px, transparent 1px 8px); }
.book3d__wm { position:absolute; right:.04em; bottom:-.18em; z-index:0; font-family:var(--font-head); font-weight:700; font-size:7.5rem; line-height:.7; color:rgba(255,255,255,.08); pointer-events:none; }
.book3d__top, .book3d__line, .book3d__title, .book3d__author { position:relative; z-index:1; }
.book3d__top { display:flex; justify-content:space-between; align-items:center; font-size:.56rem; letter-spacing:.1em; text-transform:uppercase; opacity:.88; }
.book3d__brand { font-family:var(--font-head); letter-spacing:.02em; }
.book3d__line { width:26px; height:3px; background:#e7b25a; border-radius:2px; margin:.7rem 0 .5rem; }
.book3d__title { font-family:var(--font-head); font-size:1rem; line-height:1.18; display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; overflow:hidden; text-shadow:0 1px 3px rgba(0,0,0,.35); }
.book3d__author { font-size:.7rem; opacity:.82; margin-top:auto; }
.book3d__reveal { position:absolute; left:0; right:0; bottom:0; z-index:3; display:flex; align-items:center; gap:.6rem; padding:.7rem .8rem; color:#fff;
  background:linear-gradient(transparent, rgba(26,9,4,.94)); transform:translateY(108%); opacity:0; transition:transform .42s var(--ease), opacity .42s; }
.book3d:hover .book3d__reveal, .book3d:focus-visible .book3d__reveal { transform:translateY(0); opacity:1; }
.book3d__ico { width:32px; height:32px; border-radius:9px; background:rgba(255,255,255,.16); display:grid; place-items:center; flex:0 0 32px; }
.book3d__ico svg { width:17px; height:17px; }
.book3d__fmt { flex:1; font-size:.74rem; font-weight:600; line-height:1.05; }
.book3d__fmt small { display:block; font-weight:400; opacity:.7; font-size:.64rem; text-transform:uppercase; letter-spacing:.05em; }
.book3d__act { font-size:.64rem; color:var(--orange-soft); font-weight:700; text-transform:uppercase; letter-spacing:.05em; display:inline-flex; align-items:center; gap:.25rem; }
.book3d__act svg { width:13px; height:13px; }
.lib-empty-msg { text-align:center; color:var(--ink-soft); padding:2rem; grid-column:1/-1; }

/* Biblioteca en celular: 2 columnas compactas (evita la tapa-libro a pantalla completa) */
@media (max-width:560px){
  .book-grid { grid-template-columns:repeat(2, 1fr); gap:1.1rem .9rem; }
  .book3d__cover { padding:12px 12px 11px; }
  .book3d__wm { font-size:4.6rem; }
  .book3d__title { font-size:.86rem; -webkit-line-clamp:3; }
  .book3d__top { font-size:.5rem; }
  .book3d__author { font-size:.62rem; }
}

/* modal libro */
.book-modal { position:fixed; inset:0; z-index:9000; display:grid; place-items:center; padding:1.2rem; }
.book-modal[hidden] { display:none; }
.book-modal__backdrop { position:absolute; inset:0; background:rgba(36,21,9,.65); backdrop-filter:blur(4px); animation:fadein .3s; }
.book-modal__card { position:relative; z-index:1; width:100%; max-width:560px; background:#fff; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-lg); display:grid; grid-template-columns:170px 1fr; animation:popin .4s var(--ease); }
@media(max-width:560px){ .book-modal__card { grid-template-columns:1fr; } }
.book-cover { position:relative; min-height:240px; display:flex; flex-direction:column; align-items:center; justify-content:space-between; padding:18px 14px; color:#f5ead2; background:linear-gradient(120deg,var(--c1,#8A1C1C),var(--c2,#5E1212)); box-shadow:inset -8px 0 18px rgba(0,0,0,.35); }
.book-cover__band { width:100%; height:9px; background:repeating-linear-gradient(90deg,#e7b25a 0,#e7b25a 6px,#c79136 6px,#c79136 12px); }
.book-cover__title { font-family:var(--font-head); font-size:1.3rem; text-align:center; line-height:1.2; padding:0 4px; text-shadow:0 2px 4px rgba(0,0,0,.4); }
.book-cover__author { font-size:.82rem; opacity:.85; }
.book-modal__body { padding:1.6rem; }
.book-modal__close { position:absolute; top:.5rem; right:.7rem; background:rgba(255,255,255,.85); border:0; width:32px; height:32px; border-radius:50%; font-size:1.4rem; line-height:1; cursor:pointer; z-index:2; }
.book-modal__actions { display:flex; gap:.6rem; flex-wrap:wrap; margin-top:1rem; }

/* ============================================================
   CAPACITACIONES (catálogo con personalidad)
   ============================================================ */
.cap-feat { display:grid; grid-template-columns:1fr; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow); border:1px solid var(--line); background:#fff; margin-bottom:2.4rem; }
@media(min-width:820px){ .cap-feat { grid-template-columns:1.05fr 1fr; } }
.cap-feat__media { position:relative; min-height:260px; background:linear-gradient(135deg,var(--orange),var(--bordo)); overflow:hidden; }
.cap-feat__media img { width:100%; height:100%; object-fit:cover; }
.cap-feat__badge { position:absolute; top:1rem; left:1rem; background:#fff; color:var(--bordo); font-weight:700; font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; padding:.35rem .8rem; border-radius:100px; box-shadow:var(--shadow-soft); }
.cap-feat__body { padding:clamp(1.4rem,3vw,2.4rem); display:flex; flex-direction:column; justify-content:center; }
.cap-meta { display:flex; flex-wrap:wrap; gap:.5rem 1.2rem; margin:.6rem 0 1.1rem; font-size:.88rem; color:var(--ink-soft); }
.cap-meta span { display:inline-flex; align-items:center; gap:.4rem; }
.cap-meta svg { width:17px; height:17px; color:var(--orange); }
.cap-meta--sm { margin:.5rem 0 0; font-size:.82rem; }
.cap-cta { display:flex; flex-wrap:wrap; gap:.6rem; }

.cap-grid { display:grid; gap:1.4rem; grid-template-columns:1fr; }
@media(min-width:620px){ .cap-grid { grid-template-columns:repeat(2,1fr); } }
@media(min-width:980px){ .cap-grid { grid-template-columns:repeat(3,1fr); } }
.cap-card { display:flex; flex-direction:column; background:#fff; border:1px solid var(--line); border-top:3px solid var(--orange); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-soft); transition:transform .35s var(--ease), box-shadow .35s; }
.cap-card:hover { transform:translateY(-6px); box-shadow:var(--shadow-lg); }
.cap-card__head { position:relative; height:118px; overflow:hidden; background:linear-gradient(135deg,var(--orange-soft),var(--bordo)); display:flex; align-items:flex-end; padding:.8rem 1rem; }
.cap-card__head img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.cap-card__head::after { content:""; position:absolute; inset:0; background:linear-gradient(transparent, rgba(40,16,8,.55)); }
.cap-card__num { position:absolute; top:.3rem; right:.7rem; z-index:1; font-family:var(--font-head); font-size:2.4rem; color:rgba(255,255,255,.35); line-height:1; }
.cap-card__cat { position:relative; z-index:1; background:#fff; color:var(--orange); font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; padding:.25rem .65rem; border-radius:100px; }
.cap-card__body { padding:1.1rem 1.2rem .6rem; flex:1; }
.cap-card__body h3 { margin:0 0 .35rem; font-size:1.18rem; }
.cap-card__desc { color:var(--ink-soft); font-size:.9rem; margin:0; }
.cap-card__footer { display:flex; align-items:center; gap:.5rem; padding:0 1.2rem 1.2rem; }
.cap-card__wa { margin-left:auto; width:38px; height:38px; border-radius:50%; background:#25D366; display:grid; place-items:center; color:#fff; flex-shrink:0; }
.cap-card__wa svg { width:20px; height:20px; }

.cap-side-cover { border-radius:var(--radius-sm); overflow:hidden; aspect-ratio:16/9; margin-bottom:1.1rem; }
.cap-side-cover img { width:100%; height:100%; object-fit:cover; }

/* acordeón plan de estudios */
.acc { border:1px solid var(--line); border-radius:var(--radius-sm); margin-bottom:.7rem; background:#fff; overflow:hidden; }
.acc summary { list-style:none; cursor:pointer; display:flex; align-items:center; gap:.8rem; padding:1rem 1.2rem; font-family:var(--font-head); font-size:1.05rem; }
.acc summary::-webkit-details-marker { display:none; }
.acc__title { flex:1; }
.acc__chevron { width:11px; height:11px; border-right:2px solid var(--ink-soft); border-bottom:2px solid var(--ink-soft); transform:rotate(45deg); transition:transform .3s var(--ease); flex-shrink:0; }
.acc[open] .acc__chevron { transform:rotate(-135deg); }
.acc__list { list-style:none; margin:0; padding:0 1.2rem 1rem; display:flex; flex-direction:column; gap:.45rem; }
.acc__list li { display:flex; justify-content:space-between; gap:1rem; font-size:.92rem; color:var(--ink-soft); border-top:1px dashed var(--line); padding-top:.45rem; }
.acc__list li:first-child { border-top:0; }
.acc__list li span:first-child { display:inline-flex; align-items:center; gap:.5rem; color:var(--ink); }
.acc__list svg { width:15px; height:15px; color:var(--orange); flex-shrink:0; }

/* ============================================================
   PARALLAX con imagen + 3D Campus
   ============================================================ */
.pbg { position:relative; overflow:hidden; color:#fff; }
.pbg__img { position:absolute; left:0; right:0; top:-32%; bottom:-32%; background-size:cover; background-position:center; z-index:0; will-change:transform; }
.pbg__overlay { position:absolute; inset:0; z-index:1; }
.pbg--dark .pbg__overlay { background:linear-gradient(120deg, rgba(26,10,5,.8) 0%, rgba(40,16,8,.5) 50%, rgba(110,30,12,.28) 100%); }
.pbg--warm .pbg__overlay { background:linear-gradient(120deg, rgba(232,85,30,.78) 0%, rgba(138,28,28,.5) 60%, rgba(138,28,28,.3) 100%); }
.pbg--soft .pbg__overlay { background:linear-gradient(120deg, rgba(255,253,251,.9), rgba(251,231,218,.7)); }
.pbg > .container { position:relative; z-index:2; }
.feat-dark .feature h3 { color:#fff; }
.feat-dark .feature p { color:#ecdcd0; }
.feat-dark .feature__ic { background:rgba(255,255,255,.13); color:var(--orange-soft); }
.campus-cta { padding-block:clamp(4rem,8vw,7rem); }
.campus-cta__inner { max-width:520px; }
/* parallax multicapa */
.plx { position:relative; }
.plx__obj { position:absolute; z-index:2; background-size:cover; background-position:center; border-radius:50%; pointer-events:none;
  -webkit-mask-image:radial-gradient(closest-side, #000 58%, transparent 100%); mask-image:radial-gradient(closest-side, #000 58%, transparent 100%);
  box-shadow:0 30px 60px -20px rgba(0,0,0,.6); will-change:transform; }
.plx__obj--a { width:min(38vw,330px); height:min(38vw,330px); right:4%; bottom:-8%; }
.plx__obj--b { width:min(24vw,200px); height:min(24vw,200px); right:30%; top:6%; }
.plx__glow { position:absolute; z-index:1; right:8%; top:24%; width:min(40vw,360px); height:min(40vw,360px); border-radius:50%; pointer-events:none;
  background:radial-gradient(circle, rgba(255,196,138,.4), transparent 68%); will-change:transform; }
@media(max-width:760px){ .plx__obj--b { display:none; } .plx__obj--a { right:-6%; bottom:-12%; opacity:.55; } }

/* timeline animada */
.timeline__item { opacity:0; transform:translateX(18px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.timeline__item.in { opacity:1; transform:none; }
.timeline::before { transform:scaleY(0); transform-origin:top; transition:transform 1.2s var(--ease); }
.timeline.in::before { transform:scaleY(1); }
.timeline__item::before { transition:transform .4s var(--ease); }
.timeline__item.in::before { animation:dotpop .5s var(--ease) both; }
@keyframes dotpop { 0%{ transform:scale(0);} 60%{ transform:scale(1.4);} 100%{ transform:scale(1);} }

.quote-figure { position:relative; margin:0; border-radius:var(--radius-lg); overflow:hidden; aspect-ratio:4/3; box-shadow:var(--shadow-lg); }
.quote-figure img { width:100%; height:100%; object-fit:cover; }
.quote-figure figcaption { position:absolute; inset:0; display:flex; align-items:flex-end; padding:1.6rem; font-family:var(--font-head); font-size:clamp(1.4rem,2.6vw,2.1rem); line-height:1.15; color:#fff; background:linear-gradient(transparent 38%, rgba(40,16,8,.82)); text-shadow:0 2px 10px rgba(0,0,0,.45); }

/* ============================================================
   EVENTOS — filas full-width
   ============================================================ */
.evrows { width:100%; border-top:1px solid var(--line); }
.evrow { display:grid; grid-template-columns:1fr; text-decoration:none; color:inherit; background:#fff; border-bottom:1px solid var(--line); transition:background .3s; }
.evrow:hover { background:var(--cream); }
@media(min-width:780px){ .evrow { grid-template-columns:140px 1fr 36%; align-items:stretch; } }
.evrow__date { display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:1.1rem; gap:.05rem; }
@media(min-width:780px){ .evrow__date { border-right:1px solid var(--line); } }
.evrow__day { font-family:var(--font-head); font-size:clamp(2.4rem,3.8vw,3.5rem); line-height:.9; color:var(--orange); }
.evrow__mon { font-weight:700; letter-spacing:.12em; text-transform:uppercase; font-size:.8rem; }
.evrow__lbl { font-size:.72rem; color:var(--ink-soft); letter-spacing:.06em; }
.evrow__body { padding:1.3rem 1.6rem; display:flex; flex-direction:column; justify-content:center; gap:.4rem; }
.evrow__tags { display:flex; flex-wrap:wrap; gap:.4rem; }
.evrow__title { font-family:var(--font-head); font-size:clamp(1.15rem,1.7vw,1.45rem); margin:.1rem 0 0; }
.evrow__sub { color:var(--ink-soft); font-size:.92rem; margin:0; }
.evrow__meta { display:flex; flex-wrap:wrap; gap:.25rem 1rem; font-size:.84rem; color:var(--ink-soft); }
.evrow__meta span { display:inline-flex; align-items:center; gap:.35rem; } .evrow__meta svg { width:15px; height:15px; }
.evrow__btn { display:inline-flex; align-items:center; gap:.4rem; color:var(--orange); font-weight:700; font-size:.9rem; margin-top:.3rem; }
.evrow__btn svg { width:17px; height:17px; transition:transform .3s var(--ease); }
.evrow:hover .evrow__btn svg { transform:translateX(5px); }
.evrow__media { position:relative; min-height:188px; overflow:hidden; background:var(--orange-light); }
.evrow__media img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
.evrow:hover .evrow__media img { transform:scale(1.05); }
.evrow__media.is-ph { background:linear-gradient(135deg,var(--orange-soft),var(--bordo)); }
.evrow.is-past .evrow__media { filter:saturate(.85); }
@media(max-width:779px){ .evrow__media { order:-1; min-height:150px; } }

/* ============================================================
   CURSOS — cards estilo "bootcamp"
   ============================================================ */
.course-grid { display:grid; gap:1.4rem; grid-template-columns:1fr; }
@media(min-width:560px){ .course-grid { grid-template-columns:repeat(2,1fr); } }
@media(min-width:1000px){ .course-grid { grid-template-columns:repeat(3,1fr); } }
.course-grid--4 { }
@media(min-width:1100px){ .course-grid--4 { grid-template-columns:repeat(4,1fr); } }
.course-card { background:#fff; border:1px solid var(--line); border-radius:18px; overflow:hidden; box-shadow:var(--shadow-soft); display:flex; flex-direction:column; transition:transform .35s var(--ease), box-shadow .35s; }
.course-card:hover { transform:translateY(-6px); box-shadow:var(--shadow-lg); }
.course-card__media { position:relative; display:block; aspect-ratio:16/10; overflow:hidden; background:linear-gradient(135deg,var(--g1,var(--orange-soft)),var(--g2,var(--bordo))); }
.course-card__media::after { content:""; position:absolute; inset:0; pointer-events:none;
  background-image:
    linear-gradient(rgba(255,255,255,.14) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.14) 1px, transparent 1px),
    radial-gradient(120% 80% at 75% 15%, rgba(255,255,255,.22), transparent 55%);
  background-size:24px 24px, 24px 24px, 100% 100%;
  -webkit-mask-image:linear-gradient(120deg, #000 55%, transparent 100%); mask-image:linear-gradient(120deg, #000 55%, transparent 100%); }
.course-card__fig { position:absolute; right:0; bottom:0; top:auto; height:95%; width:auto; max-width:52%; object-fit:contain; object-position:bottom right; z-index:1; filter:drop-shadow(-5px 8px 12px rgba(0,0,0,.28)); transition:transform .5s var(--ease); }
.course-card:hover .course-card__fig { transform:translateY(-3px) scale(1.03); }
/* props (libro/objeto): más chicos y al borde inferior, no chocan con el título */
.course-card__fig--prop { top:auto; bottom:7%; height:auto; width:46%; max-width:46%; right:5%; }
.course-card__level { position:absolute; top:.8rem; left:.9rem; z-index:3; background:#fff; color:var(--ink); font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; padding:.28rem .7rem; border-radius:100px; box-shadow:var(--shadow-soft); }
.course-card__ov { position:absolute; left:1rem; top:2.5rem; right:37%; z-index:2; color:#fff; font-family:var(--font-body); font-weight:800; font-size:clamp(.72rem,.9vw,.86rem); line-height:1.2; text-transform:uppercase; letter-spacing:0; text-shadow:0 2px 10px rgba(0,0,0,.5); overflow-wrap:break-word; word-break:normal; hyphens:none; display:-webkit-box; -webkit-line-clamp:5; -webkit-box-orient:vertical; overflow:hidden; }
.course-card__body { padding:1rem 1.2rem 1.2rem; display:flex; flex-direction:column; gap:.45rem; flex:1; }
.course-card__title { font-family:var(--font-body); font-weight:600; font-size:1rem; margin:0; line-height:1.3; }
.course-card__title a { color:var(--ink); }
.course-card__title a:hover { color:var(--orange); }
.course-card__by { font-size:.78rem; color:var(--ink-soft); }
.course-card__meta { display:flex; gap:.25rem 1rem; flex-wrap:wrap; font-size:.82rem; color:var(--ink-soft); }
.course-card__meta span { display:inline-flex; align-items:center; gap:.35rem; } .course-card__meta svg { width:15px; height:15px; color:var(--orange); }
.course-card__btn { margin-top:auto; border-radius:10px; padding:.5rem 1rem; font-weight:600; }

/* ============================================================
   TESTIMONIOS — burbujas flotantes + rotación
   ============================================================ */
.tfloat { display:grid; gap:2rem; align-items:center; }
@media(min-width:860px){ .tfloat { grid-template-columns:1fr 1fr; } }
.tfloat__bubbles { position:relative; min-height:250px; }
.tfloat__bubble { position:absolute; border-radius:50%; overflow:hidden; border:5px solid #fff; box-shadow:0 16px 30px -12px rgba(138,28,28,.4); animation:bubfloat 6s ease-in-out infinite; }
.tfloat__bubble img { width:100%; height:100%; object-fit:cover; }
@keyframes bubfloat { 0%,100%{ transform:translateY(-10px);} 50%{ transform:translateY(12px);} }
.tfloat__stage { display:flex; gap:1.2rem; align-items:flex-start; }
.tfloat__dots { display:flex; flex-direction:column; gap:.6rem; padding-top:.4rem; }
.tfloat__dot { width:11px; height:11px; border-radius:50%; border:2px solid var(--orange); background:transparent; cursor:pointer; padding:0; transition:.2s; }
.tfloat__dot.is-active { background:var(--orange); }
.tfloat__content { position:relative; flex:1; min-height:150px; }
.tfloat__quote { display:block; color:var(--orange-soft); font-family:var(--font-head); font-size:3rem; line-height:.6; height:1.4rem; }
.tfloat__item { position:absolute; inset:0; top:2rem; opacity:0; transform:translateY(16px); transition:opacity .6s var(--ease), transform .6s var(--ease); pointer-events:none; }
.tfloat__item.is-active { opacity:1; transform:none; pointer-events:auto; }
.tfloat__text { font-family:var(--font-head); font-size:clamp(1.1rem,1.8vw,1.4rem); line-height:1.4; color:var(--ink); margin:0 0 1rem; }
.tfloat__name { font-weight:700; }
.tfloat__role { color:var(--ink-soft); font-size:.9rem; }
