/* ═══════════════════════════════════════════════════════
   home.css  —  Portafolio Telemática · Cruz Roja NS
   Tema: Moderno, fresco, claro
   ═══════════════════════════════════════════════════════ */

/* ── Variables ── */
:root {
  --rojo:       #DC2626;
  --rojo-dark:  #B91C1C;
  --rojo-xs:    #FEF2F2;
  --rojo-sm:    #FECACA;
  --slate-50:   #F8FAFC;
  --slate-100:  #F1F5F9;
  --slate-200:  #E2E8F0;
  --slate-300:  #CBD5E1;
  --slate-400:  #94A3B8;
  --slate-500:  #64748B;
  --slate-600:  #475569;
  --slate-700:  #334155;
  --slate-800:  #1E293B;
  --slate-900:  #0F172A;
  --blanco:     #FFFFFF;
  --r:          14px;           /* border-radius base */
  --t:          .25s ease;      /* transition base */
  --shadow-sm:  0 1px 3px rgba(15,23,42,.07), 0 1px 2px rgba(15,23,42,.05);
  --shadow-md:  0 4px 20px rgba(15,23,42,.08);
  --shadow-lg:  0 12px 40px rgba(15,23,42,.12);
  --shadow-xl:  0 24px 60px rgba(15,23,42,.15);
}

/* ── Reset ── */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; }
body { font-family:'Inter',system-ui,sans-serif; background:var(--blanco); color:var(--slate-800); line-height:1.6; -webkit-font-smoothing:antialiased; }
h1,h2,h3,h4 { font-weight:700; line-height:1.2; letter-spacing:-.02em; }
p { color:var(--slate-500); }
img { max-width:100%; display:block; }
a { color:inherit; text-decoration:none; }

/* ── Layout ── */
.wrap        { max-width:1180px; margin:0 auto; padding:0 24px; }
.wrap-full   { width:100%; padding:0 40px; }
.section     { padding:96px 0; }
.section-alt { background:var(--slate-50); }

.section-head { text-align:center; margin-bottom:56px; }
.section-head h2 { font-size:clamp(1.75rem,3.5vw,2.5rem); color:var(--slate-900); margin-top:10px; }
.section-head p  { font-size:1rem; max-width:520px; margin:10px auto 0; color:var(--slate-500); }

/* ── Eyebrow ── */
.eyebrow {
  display:inline-flex; align-items:center; gap:7px;
  background:var(--rojo-xs); border:1px solid var(--rojo-sm); color:var(--rojo);
  font-size:.73rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  padding:5px 13px; border-radius:999px;
}
.eyebrow-dot { width:6px; height:6px; background:var(--rojo); border-radius:50%; animation:pulse-dot 2s ease infinite; }
@keyframes pulse-dot { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.4;transform:scale(.65)} }

/* ════════════════════════════════════════
   NAVBAR
════════════════════════════════════════ */
.nav {
  position:fixed; inset:0 0 auto 0; z-index:1000;
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(20px);
  border-bottom:1px solid var(--slate-200);
  box-shadow:var(--shadow-sm);
}
.nav .nav-links a { color:var(--slate-500); transition:color var(--t); }
.nav .nav-links a:hover { color:var(--slate-900); }
.nav .nav-logo-text strong { color:var(--slate-900); }
.nav .nav-hamburger { color:var(--slate-700); }

.nav-inner {
  max-width:1180px; margin:0 auto; padding:0 24px;
  display:flex; align-items:center; justify-content:space-between; height:62px;
}

.nav-logo { display:flex; align-items:center; gap:10px; }
.nav-logo-img { height:47px; width:auto; display:block; }
.nav-logo-text { font-size:1.17rem; font-weight:700; color:var(--slate-900); }

.nav-links { display:flex; align-items:center; gap:28px; list-style:none; }
.nav-links a { font-size:.85rem; font-weight:500; color:var(--slate-500); transition:color var(--t); }
.nav-links a:hover { color:var(--slate-900); }

.nav-cta {
  background:var(--rojo) !important; color:#fff !important;
  padding:8px 18px; border-radius:8px; font-weight:600 !important;
  border:1px solid var(--rojo) !important;
  transition:background var(--t), transform var(--t) !important;
}
.nav-cta:hover { background:var(--rojo-dark) !important; transform:translateY(-1px); color:#fff !important; }
.nav.scrolled .nav-cta { background:var(--slate-900) !important; border-color:var(--slate-900) !important; }

.nav-hamburger { display:none; background:none; border:none; cursor:pointer; padding:4px; color:var(--slate-700); font-size:1.35rem; }

/* ════════════════════════════════════════
   HERO  —  diseño oscuro animado
════════════════════════════════════════ */
.hero {
  position:relative; overflow:hidden;
  min-height:100vh;
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  background:url('images/hero-bg.jpg') center center / cover no-repeat;
  padding-top:62px;
}

/* Overlay oscuro para legibilidad del contenido */
.hero::before {
  content:'';
  position:absolute; inset:0;
  background:
    linear-gradient(to bottom, rgba(5,8,15,.25) 0%, rgba(5,8,15,.18) 50%, rgba(5,8,15,.40) 100%),
    radial-gradient(ellipse 80% 60% at 15% 50%, rgba(220,38,38,.07) 0%, transparent 60%),
    radial-gradient(ellipse 60% 50% at 85% 25%, rgba(6,182,212,.04) 0%, transparent 60%);
  animation:hero-pulse 14s ease-in-out infinite alternate;
  pointer-events:none;
}
@keyframes hero-pulse {
  from { opacity:1; }
  to   { opacity:.85; }
}

/* Rejilla sutil */
.hero::after {
  content:'';
  position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
  background-size:56px 56px;
  pointer-events:none;
}

/* Orbes de luz flotantes */
.hero-orb {
  position:absolute; border-radius:50%;
  filter:blur(90px); pointer-events:none; will-change:transform;
}
.hero-orb-1 {
  width:700px; height:700px;
  background:radial-gradient(circle, rgba(220,38,38,.22) 0%, transparent 70%);
  top:-220px; left:-220px;
  animation:orb1 22s ease-in-out infinite;
}
.hero-orb-2 {
  width:600px; height:600px;
  background:radial-gradient(circle, rgba(6,182,212,.14) 0%, transparent 70%);
  bottom:-180px; right:-120px;
  animation:orb2 28s ease-in-out infinite;
}
.hero-orb-3 {
  width:450px; height:450px;
  background:radial-gradient(circle, rgba(139,92,246,.1) 0%, transparent 70%);
  top:50%; left:50%; transform:translate(-50%,-50%);
  animation:orb3 20s ease-in-out infinite;
}
@keyframes orb1 { 0%,100%{transform:translate(0,0)} 33%{transform:translate(120px,90px)} 66%{transform:translate(70px,-70px)} }
@keyframes orb2 { 0%,100%{transform:translate(0,0)} 33%{transform:translate(-90px,-70px)} 66%{transform:translate(-50px,90px)} }
@keyframes orb3 { 0%,100%{transform:translate(-50%,-50%) scale(1)} 50%{transform:translate(-50%,-50%) scale(1.35)} }

/* Líneas decorativas (bordes diagonales) */
.hero-lines {
  position:absolute; inset:0; pointer-events:none; overflow:hidden;
}
.hero-lines::before, .hero-lines::after {
  content:'';
  position:absolute;
  width:1px; height:200px;
  background:linear-gradient(to bottom, transparent, rgba(220,38,38,.4), transparent);
}
.hero-lines::before { left:15%; top:10%; animation:line-float 6s ease-in-out infinite; }
.hero-lines::after  { right:18%; bottom:15%; animation:line-float 6s ease-in-out infinite reverse; }
@keyframes line-float {
  0%,100%{transform:translateY(0) scaleY(1); opacity:.6}
  50%    {transform:translateY(-30px) scaleY(1.4); opacity:1}
}

/* ── Contenido central ── */
.hero-inner {
  position:relative; z-index:2;
  display:flex; flex-direction:column;
  align-items:center; text-align:center;
  gap:28px; padding:0 24px;
  max-width:860px;
}

/* Badge */
.hero-badge {
  display:inline-flex; align-items:center; gap:9px;
  background:rgba(255,255,255,.05);
  border:1px solid rgba(255,255,255,.1);
  color:rgba(255,255,255,.65);
  font-size:.72rem; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase;
  padding:8px 20px; border-radius:999px;
  backdrop-filter:blur(12px);
  animation:fade-up .7s ease both;
}
.hero-badge-dot {
  width:6px; height:6px; background:#DC2626; border-radius:50%;
  box-shadow:0 0 10px rgba(220,38,38,.7);
  animation:pulse-dot 2s ease infinite;
}

/* Heading principal */
.hero-heading {
  font-size:clamp(3.2rem,8vw,6rem);
  font-weight:800;
  line-height:1.0;
  letter-spacing:-.045em;
  color:#fff;
  animation:fade-up .7s ease .1s both;
}
.hero-heading-accent {
  display:inline-block;
  background:linear-gradient(135deg, #FF6B6B 0%, #DC2626 45%, #FF8C8C 100%);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  position:relative;
}
.hero-heading-accent::after {
  content:'';
  position:absolute;
  bottom:-6px; left:0; right:0;
  height:3px;
  background:linear-gradient(90deg, #DC2626, rgba(220,38,38,0));
  border-radius:2px;
}

/* Tagline monospace */
.hero-tagline {
  font-family:'JetBrains Mono','Courier New',monospace;
  font-size:clamp(.78rem,1.8vw,.95rem);
  color:rgba(255,255,255,.38);
  letter-spacing:.1em;
  animation:fade-up .7s ease .2s both;
}

/* Stats glassmorphism */
.hero-stats {
  display:flex; align-items:stretch;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.09);
  border-radius:18px;
  backdrop-filter:blur(24px);
  overflow:hidden;
  animation:fade-up .7s ease .3s both;
  box-shadow:0 0 60px rgba(220,38,38,.06), inset 0 1px 0 rgba(255,255,255,.07);
}
.hero-stat {
  display:flex; flex-direction:column; align-items:center;
  padding:22px 36px; gap:4px;
  transition:background .2s;
}
.hero-stat:hover { background:rgba(255,255,255,.04); }
.hero-stat-num {
  font-size:clamp(1.8rem,4vw,2.4rem);
  font-weight:800; color:#fff;
  line-height:1; font-variant-numeric:tabular-nums;
}
.hero-stat-lbl {
  font-size:.68rem; font-weight:600;
  color:rgba(255,255,255,.35);
  letter-spacing:.07em; text-transform:uppercase;
}
.hero-stat-sep {
  width:1px; background:rgba(255,255,255,.08);
  align-self:stretch; flex-shrink:0;
}

/* Botones de acción */
.hero-actions {
  display:flex; gap:14px; flex-wrap:wrap; justify-content:center;
  animation:fade-up .7s ease .4s both;
}
.hero-btn-primary {
  background:#DC2626; color:#fff;
  padding:14px 32px; border-radius:11px;
  font-weight:700; font-size:.95rem;
  box-shadow:0 0 35px rgba(220,38,38,.35), inset 0 1px 0 rgba(255,255,255,.15);
  transition:all .25s ease;
}
.hero-btn-primary:hover {
  background:#B91C1C; color:#fff;
  transform:translateY(-3px);
  box-shadow:0 0 55px rgba(220,38,38,.5), inset 0 1px 0 rgba(255,255,255,.2);
}
.hero-btn-ghost {
  background:rgba(255,255,255,.06); color:rgba(255,255,255,.8);
  padding:14px 32px; border-radius:11px;
  font-weight:600; font-size:.95rem;
  border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(10px);
  transition:all .25s ease;
}
.hero-btn-ghost:hover {
  background:rgba(255,255,255,.11); color:#fff;
  border-color:rgba(255,255,255,.28);
  transform:translateY(-3px);
}

/* Stack de tecnologías */
.hero-stack {
  display:flex; flex-wrap:wrap; gap:7px; justify-content:center;
  animation:fade-up .7s ease .5s both;
}
.stack-pill {
  background:rgba(255,255,255,.05); color:rgba(255,255,255,.5);
  font-size:.68rem; font-weight:600;
  padding:5px 13px; border-radius:999px;
  border:1px solid rgba(255,255,255,.1);
  letter-spacing:.04em;
  transition:all .2s;
}
.stack-pill:hover {
  background:rgba(220,38,38,.15);
  border-color:rgba(220,38,38,.3);
  color:rgba(255,255,255,.8);
}

/* Indicador de scroll */
.hero-scroll {
  position:absolute; bottom:32px; left:50%;
  transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:6px;
  z-index:2;
  animation:fade-up .7s ease .7s both;
}
.hero-scroll-label {
  font-size:.62rem; color:rgba(255,255,255,.25);
  letter-spacing:.12em; text-transform:uppercase;
}
.hero-scroll-line {
  width:1px; height:48px;
  background:linear-gradient(to bottom, rgba(220,38,38,.6), transparent);
  animation:scroll-line 2s ease-in-out infinite;
  transform-origin:top;
}
@keyframes scroll-line {
  0%   { transform:scaleY(0); transform-origin:top; opacity:0; }
  40%  { transform:scaleY(1); transform-origin:top; opacity:1; }
  100% { transform:scaleY(1); transform-origin:bottom; opacity:0; }
}

/* Animaciones de entrada */
@keyframes fade-up {
  from { opacity:0; transform:translateY(24px); }
  to   { opacity:1; transform:translateY(0); }
}

/* ── Botones legacy (fuera del hero) ── */
.btn-red {
  background:var(--rojo); color:#fff;
  padding:13px 26px; border-radius:10px; font-weight:600; font-size:.9rem;
  display:inline-flex; align-items:center; gap:8px;
  transition:all var(--t); box-shadow:0 4px 16px rgba(220,38,38,.3);
}
.btn-red:hover { background:var(--rojo-dark); transform:translateY(-2px); color:#fff; }

/* ════════════════════════════════════════
   STATS BAND
════════════════════════════════════════ */
.stats-band {
  background: #f8fafc;
  padding: 64px 40px;
  width: 100%;
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 20px;
}

.stat-item {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 20px;
  padding: 28px 24px;
  position: relative;
  overflow: hidden;
  transition: all .25s ease;
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.stat-item::before {
  content:'';
  position:absolute; left:0; top:0; bottom:0; width:4px;
  background: linear-gradient(to bottom, #DC2626, #F87171);
  border-radius: 20px 0 0 20px;
}
.stat-item:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 48px rgba(15,23,42,.1);
  border-color: #cbd5e1;
}

.stat-icon {
  width: 52px; height: 52px; flex-shrink: 0;
  background: linear-gradient(135deg, #fef2f2, #fee2e2);
  border: 1px solid #fecaca;
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem;
}

.stat-body { flex: 1; }

.stat-val {
  font-size: 2.6rem; font-weight: 800;
  color: #0f172a;
  letter-spacing: -.04em; line-height: 1; display: block;
}
.stat-val em { color: #DC2626; font-style: normal; }
.stat-lbl {
  font-size: .72rem; color: #94a3b8;
  margin-top: 7px; text-transform: uppercase;
  letter-spacing: .08em; font-weight: 600;
}

/* ════════════════════════════════════════
   PROYECTOS
════════════════════════════════════════ */
.filters {
  display:flex; gap:8px; flex-wrap:wrap; justify-content:center; margin-bottom:44px;
}
.filter-btn {
  background:var(--blanco); border:1.5px solid var(--slate-200);
  color:var(--slate-500); padding:7px 18px; border-radius:999px;
  font-size:.82rem; font-weight:500; cursor:pointer;
  transition:all var(--t);
}
.filter-btn:hover  { border-color:var(--slate-400); color:var(--slate-800); }
.filter-btn.active { background:var(--slate-900); border-color:var(--slate-900); color:#fff; }

.projects-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.project-card-hidden { display:none !important; }

/* Estado (usado fuera de pcards) */
.status {
  font-size:.68rem; font-weight:700; padding:3px 10px; border-radius:999px;
  text-transform:uppercase; letter-spacing:.05em;
}
.status-activo     { background:#DCFCE7; color:#15803D; }
.status-desarrollo { background:#FEF9C3; color:#854D0E; }
.status-finalizado { background:var(--slate-100); color:var(--slate-500); }
.status-pausado    { background:#FEE2E2; color:#B91C1C; }

/* ════════════════════════════════════════
   IMPACTO
════════════════════════════════════════ */
.impact-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }

.icard {
  background:var(--blanco); border:1px solid var(--slate-200);
  border-radius:var(--r); padding:30px 22px; text-align:center;
  transition:box-shadow var(--t), transform var(--t);
  position:relative; overflow:hidden;
}
.icard:hover { box-shadow:var(--shadow-md); transform:translateY(-4px); }
.icard::before {
  content:''; position:absolute; bottom:0; left:0; right:0; height:3px;
  background:var(--rojo); transform:scaleX(0); transition:transform .35s ease;
}
.icard:hover::before { transform:scaleX(1); }

.icard-icon { font-size:2rem; margin-bottom:14px; }
.icard-num {
  font-size:2.6rem; font-weight:800; color:var(--slate-900);
  line-height:1; letter-spacing:-.03em; display:block; margin-bottom:8px;
}
.icard-num sup { font-size:1.2rem; color:var(--rojo); }
.icard-lbl  { font-size:.84rem; font-weight:600; color:var(--slate-700); }
.icard-sub  { font-size:.75rem; color:var(--slate-400); margin-top:4px; }

/* ════════════════════════════════════════
   TIMELINE
════════════════════════════════════════ */
.timeline-wrap { position:relative; max-width:760px; margin:0 auto; }

/* Línea central */
.timeline-wrap::before {
  content:''; position:absolute; left:50%; top:0; bottom:0; width:2px;
  background:linear-gradient(to bottom, var(--rojo) 0%, var(--slate-200) 100%);
  transform:translateX(-50%);
}

.tl-year {
  text-align:center; position:relative; z-index:1; margin:0 0 36px;
}
.tl-year-badge {
  display:inline-block; background:var(--rojo); color:#fff;
  font-size:.8rem; font-weight:800; padding:6px 22px; border-radius:999px;
}

.tl-item {
  display:grid; grid-template-columns:1fr 40px 1fr;
  align-items:center; margin-bottom:32px;
  opacity:0; transform:translateY(24px);
  transition:opacity .55s ease, transform .55s ease;
}
.tl-item.visible { opacity:1; transform:translateY(0); }

.tl-content {
  background:var(--blanco); border:1px solid var(--slate-200);
  border-radius:var(--r); padding:18px 20px;
  box-shadow:var(--shadow-sm);
  transition:box-shadow var(--t);
}
.tl-content:hover { box-shadow:var(--shadow-md); }

.tl-item:nth-child(odd) .tl-content { grid-column:1; text-align:right; }
.tl-item:nth-child(odd) .tl-dot     { grid-column:2; }
.tl-item:nth-child(odd) .tl-empty   { grid-column:3; }

.tl-item:nth-child(even) .tl-empty   { grid-column:1; }
.tl-item:nth-child(even) .tl-dot     { grid-column:2; }
.tl-item:nth-child(even) .tl-content { grid-column:3; }

.tl-dot {
  width:40px; height:40px; background:var(--rojo); border-radius:50%;
  display:flex; align-items:center; justify-content:center; font-size:1.1rem;
  box-shadow:0 0 0 5px var(--blanco), 0 0 0 7px var(--rojo-sm);
  z-index:1; justify-self:center;
}

.tl-date  { font-size:.72rem; font-weight:700; color:var(--rojo); text-transform:uppercase; letter-spacing:.07em; margin-bottom:4px; }
.tl-title { font-size:.95rem; font-weight:700; color:var(--slate-900); margin-bottom:4px; }
.tl-desc  { font-size:.8rem; color:var(--slate-500); line-height:1.5; }

/* ════════════════════════════════════════
   ROADMAP
════════════════════════════════════════ */
.roadmap-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }

.rcard {
  background:var(--blanco); border:1px solid var(--slate-200);
  border-radius:var(--r); padding:26px;
  display:flex; gap:18px;
  transition:box-shadow var(--t), transform var(--t);
}
.rcard:hover { box-shadow:var(--shadow-md); transform:translateY(-3px); }

.rcard-icon-wrap {
  width:50px; height:50px; background:var(--rojo-xs); border-radius:12px;
  display:flex; align-items:center; justify-content:center; font-size:1.5rem;
  flex-shrink:0;
}
.rcard-quarter { font-size:.7rem; font-weight:700; color:var(--rojo); text-transform:uppercase; letter-spacing:.08em; margin-bottom:3px; }
.rcard-title   { font-size:.95rem; font-weight:700; color:var(--slate-900); margin-bottom:7px; }
.rcard-desc    { font-size:.83rem; color:var(--slate-500); line-height:1.55; margin-bottom:12px; }

.rcard-status {
  display:inline-block; font-size:.68rem; font-weight:700;
  padding:3px 10px; border-radius:999px; text-transform:uppercase; letter-spacing:.05em;
}
.rcard-status-planificado { background:#DCFCE7; color:#15803D; }
.rcard-status-evaluacion  { background:#FEF9C3; color:#854D0E; }

/* ════════════════════════════════════════
   FOOTER
════════════════════════════════════════ */
.footer { background:var(--slate-900); padding:60px 0 28px; }
.footer-grid { display:grid; grid-template-columns:2fr 1fr 1fr; gap:48px; margin-bottom:48px; }

.footer-brand { display:flex; align-items:center; gap:10px; margin-bottom:14px; }
.footer-brand-mark {
  width:36px; height:36px; background:var(--rojo); border-radius:9px;
  display:flex; align-items:center; justify-content:center;
  color:#fff; font-size:.95rem; font-weight:800;
}
.footer-brand-name  { font-size:.9rem; font-weight:700; color:#fff; }
.footer-brand-sub   { font-size:.68rem; color:var(--slate-500); }
.footer-desc        { font-size:.84rem; color:var(--slate-500); line-height:1.7; max-width:280px; }

.footer-col h4 {
  font-size:.75rem; font-weight:700; color:var(--slate-300);
  text-transform:uppercase; letter-spacing:.07em; margin-bottom:14px;
}
.footer-col ul { list-style:none; display:flex; flex-direction:column; gap:8px; }
.footer-col a  { font-size:.84rem; color:var(--slate-500); transition:color var(--t); }
.footer-col a:hover { color:#fff; }

.footer-bottom {
  border-top:1px solid rgba(255,255,255,.07); padding-top:24px;
  display:flex; justify-content:space-between; align-items:center;
  font-size:.78rem; color:var(--slate-600);
}
.footer-bottom strong { color:var(--rojo); }

/* ════════════════════════════════════════
   SCROLL REVEAL
════════════════════════════════════════ */
[data-reveal] {
  opacity:0; transform:translateY(28px);
  transition:opacity .65s cubic-bezier(.4,0,.2,1), transform .65s cubic-bezier(.4,0,.2,1);
}
[data-reveal].visible { opacity:1; transform:translateY(0); }

/* ════════════════════════════════════════
   TARJETAS DE PROYECTOS
════════════════════════════════════════ */
.projects-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 26px;
}

.pcard {
  background: #fff;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 1px 4px rgba(15,23,42,.05), 0 8px 32px rgba(15,23,42,.08);
  border: 1px solid #E8EEF4;
  display: flex;
  flex-direction: column;
  transition: transform .3s ease, box-shadow .3s ease;
  opacity: 0;
  transform: translateY(22px);
}
.pcard.visible {
  opacity: 1; transform: translateY(0);
  transition: opacity .5s ease, transform .5s ease, box-shadow .3s ease;
}
.pcard:hover {
  transform: translateY(-7px);
  box-shadow: 0 20px 50px rgba(15,23,42,.12), 0 4px 14px rgba(15,23,42,.06);
}
.pcard.project-card-hidden { display: none !important; }

/* ── Cabecera visual (imagen o gradiente) ── */
.pcard-head {
  position: relative;
  height: 190px;
  background-size: cover;
  background-position: center;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 16px 20px;
  flex-shrink: 0;
}
.pcard-head-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(160deg, rgba(0,0,0,.28) 0%, rgba(0,0,0,.62) 100%);
  transition: opacity .3s ease;
}
.pcard:hover .pcard-head-overlay { opacity: .82; }

.pcard-head-top {
  position: relative; z-index: 1;
  display: flex; align-items: center; justify-content: space-between;
}
.pcard-num {
  font-size: 1.85rem; font-weight: 900;
  color: rgba(255,255,255,.85); line-height: 1;
  letter-spacing: -.05em;
  text-shadow: 0 2px 10px rgba(0,0,0,.25);
}
.pcard-status-pill--glass {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: .67rem; font-weight: 700;
  padding: 5px 11px; border-radius: 999px;
  background: rgba(255,255,255,.15);
  color: #fff; border: 1px solid rgba(255,255,255,.28);
  backdrop-filter: blur(10px);
}
.pcard-status-pill--glass .dot {
  width: 6px; height: 6px; background: #4ade80; border-radius: 50%;
  animation: blink-dot 2s ease infinite; box-shadow: 0 0 5px #4ade80;
}
.pcard-status-pill--glass .dot--off { background: rgba(255,255,255,.5); box-shadow: none; animation: none; }
@keyframes blink-dot { 0%,100%{opacity:1} 50%{opacity:.3} }

.pcard-head-bottom {
  position: relative; z-index: 1;
  display: flex; align-items: center; gap: 11px;
}
.pcard-icon-wrap {
  width: 48px; height: 48px;
  background: rgba(255,255,255,.18);
  border: 2px solid rgba(255,255,255,.32);
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.55rem;
  backdrop-filter: blur(10px);
  flex-shrink: 0;
}
.pcard-area-label {
  font-size: .65rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase;
  color: rgba(255,255,255,.82);
  text-shadow: 0 1px 4px rgba(0,0,0,.3);
}

/* ── Cuerpo ── */
.pcard-body {
  flex: 1;
  padding: 22px 24px 20px;
  display: flex; flex-direction: column; gap: 12px;
}
.pcard-name {
  font-size: 1.18rem; font-weight: 800;
  color: #0F172A; line-height: 1.3; letter-spacing: -.02em;
}
.pcard-desc { font-size: .855rem; color: #64748B; line-height: 1.72; }

/* Checklist */
.pcard-checklist { list-style: none; display: flex; flex-direction: column; gap: 7px; margin: 0; padding: 0; }
.pcard-checklist li {
  display: flex; align-items: flex-start; gap: 8px;
  font-size: .82rem; color: #334155; line-height: 1.5; font-weight: 500;
}
.pcard-check {
  display: inline-flex; align-items: center; justify-content: center;
  width: 16px; height: 16px; border-radius: 4px;
  color: #fff; font-size: .55rem; font-weight: 900;
  flex-shrink: 0; margin-top: 2px;
}

/* Chips de métricas */
.pcard-metrics-row { display: flex; gap: 8px; flex-wrap: wrap; }
.pcard-metric-chip {
  display: flex; align-items: baseline; gap: 5px;
  padding: 6px 12px; border-radius: 8px;
  border: 1px solid; flex: 1; min-width: 0;
}
.pcard-metric-val { font-size: 1.05rem; font-weight: 800; line-height: 1; white-space: nowrap; }
.pcard-metric-lbl { font-size: .66rem; color: #94A3B8; font-weight: 500; }

/* Footer */
.pcard-footer {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 10px; margin-top: auto;
  padding-top: 14px; border-top: 1px solid #F1F5F9;
}
.pcard-tags { display: flex; flex-wrap: wrap; gap: 5px; }
.pcard-tag {
  font-size: .65rem; font-weight: 600; color: #64748B;
  background: #F8FAFC; border: 1px solid #E2E8F0;
  padding: 3px 9px; border-radius: 6px;
}
.pcard-btn {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: .77rem; font-weight: 700; padding: 8px 17px; border-radius: 9px;
  color: #fff; text-decoration: none;
  transition: filter .2s, transform .2s;
  white-space: nowrap; flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(0,0,0,.18);
}
.pcard-btn:hover { filter: brightness(1.12); transform: translateX(2px); color: #fff; }

/* Restos de versiones anteriores */
.pcard-visual  { display: none; }
.pcard-left    { display: none; }
.pcard-content { display: none; }

/* ════════════════════════════════════════
   RESPONSIVE
════════════════════════════════════════ */

/* ── Tablet grande ── */
@media(max-width:1024px) {
  .stats-grid    { grid-template-columns:repeat(2,1fr); }
  .impact-grid   { grid-template-columns:repeat(2,1fr); }
  .wrap-full     { padding:0 24px; }
  .hero-stats    { gap:0; }
  .hero-stat     { padding:18px 22px; }
  .hero-stat-num { font-size:clamp(1.5rem,3.5vw,2rem); }

  .projects-list { gap: 18px; }
  .pcard-num     { font-size: 2.4rem; }
}

/* ── Tablet / móvil grande ── */
@media(max-width:768px) {

  /* Nav */
  .nav-links      { display:none; }
  .nav-hamburger  { display:block; }
  .nav-links.open {
    display:flex; flex-direction:column;
    position:fixed; top:62px; inset:62px 0 0;
    background:#fff; padding:32px 24px; gap:20px; z-index:999;
    border-top:1px solid var(--slate-100); overflow-y:auto;
  }
  .nav-links.open a { font-size:1rem; color:var(--slate-700); }

  /* Hero */
  .hero           { min-height:100svh; padding-top:62px; }
  .hero-inner     { gap:20px; padding:0 20px; width:100%; }
  .hero-badge     { font-size:.65rem; padding:6px 14px; }
  .hero-heading   { font-size:clamp(2.4rem,9vw,3.5rem); letter-spacing:-.03em; }
  .hero-tagline   { font-size:.75rem; letter-spacing:.06em; }
  .hero-stats     { display:grid; grid-template-columns:1fr 1fr; width:100%; border-radius:14px; }
  .hero-stat      { padding:16px 14px; }
  .hero-stat-num  { font-size:1.7rem; }
  .hero-stat-lbl  { font-size:.6rem; }
  .hero-stat-sep  { display:none; }
  .hero-stats .hero-stat:nth-child(1) { border-bottom:1px solid rgba(255,255,255,.08); border-right:1px solid rgba(255,255,255,.08); }
  .hero-stats .hero-stat:nth-child(3) { border-right:1px solid rgba(255,255,255,.08); }
  .hero-stats .hero-stat:nth-child(2) { border-bottom:1px solid rgba(255,255,255,.08); }
  .hero-actions   { gap:10px; width:100%; }
  .hero-btn-primary,
  .hero-btn-ghost { padding:13px 20px; font-size:.88rem; flex:1; text-align:center; justify-content:center; }
  .hero-stack     { gap:6px; }
  .stack-pill     { font-size:.65rem; padding:4px 10px; }
  .hero-scroll    { display:none; }
  .hero-orb-1     { width:400px; height:400px; }
  .hero-orb-2     { width:350px; height:350px; }
  .hero-orb-3     { width:280px; height:280px; }

  /* Stats band */
  .stats-band     { padding:40px 20px; }
  .stats-grid     { grid-template-columns:repeat(2,1fr); gap:14px; }
  .stat-item      { padding:22px 16px; gap:12px; }
  .stat-icon      { width:42px; height:42px; font-size:1.2rem; border-radius:11px; }
  .stat-val       { font-size:2rem; }
  .stat-lbl       { font-size:.65rem; }

  /* Proyectos */
  .section        { padding:64px 0; }
  .wrap-full      { padding:0 16px; }
  .projects-list  { grid-template-columns: 1fr; gap: 18px; }
  .pcard-head     { height: 160px; }
  .pcard-body     { padding: 18px 20px; }
  .pcard-name     { font-size: 1.1rem; }
  .pcard-footer   { flex-direction: column; align-items: flex-start; }

  /* Impact, roadmap, footer */
  .impact-grid    { grid-template-columns:repeat(2,1fr); gap:14px; }
  .roadmap-grid   { grid-template-columns:1fr; }
  .footer-grid    { grid-template-columns:1fr; gap:28px; }
  .footer-bottom  { flex-direction:column; gap:8px; text-align:center; }

  /* Timeline */
  .timeline-wrap::before { left:20px; transform:none; }
  .tl-item { grid-template-columns:40px 1fr !important; }
  .tl-item:nth-child(odd) .tl-content,
  .tl-item:nth-child(even) .tl-content { grid-column:2 !important; text-align:left !important; }
  .tl-item:nth-child(odd) .tl-dot,
  .tl-item:nth-child(even) .tl-dot     { grid-column:1 !important; justify-self:start; }
  .tl-item:nth-child(odd) .tl-empty,
  .tl-item:nth-child(even) .tl-empty   { display:none; }
}

/* ── Móvil pequeño ── */
@media(max-width:480px) {
  .nav-logo-text  { font-size:1rem; }
  .nav-logo-img   { height:38px; }
  .hero-heading   { font-size:clamp(2rem,10vw,2.8rem); }
  .hero-badge     { display:none; }
  .hero-tagline   { display:none; }
  .stats-grid     { grid-template-columns:1fr 1fr; gap:10px; }
  .stat-item      { padding:18px 12px; border-radius:14px; }
  .stat-val       { font-size:1.7rem; }
  .impact-grid    { grid-template-columns:1fr 1fr; }
  .section        { padding:52px 0; }
  .pcard-tags     { display:none; }
  .hero-stack     { display:none; }
}
