/* ═══════════════════════════════════════════════════════════════
   WEBSOFTWARE — components.css  (Enterprise Edition)
   ═══════════════════════════════════════════════════════════════ */

/* ── Stats strip (fondo azul corporativo) ────────────────────── */
.stats-strip {
  background: var(--color-primary);
  padding-block: var(--space-16);
}
.stats-strip .container {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: var(--space-2);
}
.stat-item {
  text-align: center;
  padding: var(--space-6);
  border-right: 1px solid rgba(255,255,255,.15);
}
.stat-item:last-child { border-right: none; }

.stat-item__value {
  font-size: clamp(var(--text-3xl), 3.5vw, var(--text-5xl));
  font-weight: 800; line-height: 1;
  color: #fff;
  margin-bottom: var(--space-2);
}
.stat-item__label { font-size: var(--text-sm); color: rgba(255,255,255,.75); font-weight: 500; }

@media (max-width: 768px) { .stats-strip .container { grid-template-columns: repeat(2,1fr); } .stat-item { border-right: none; border-bottom: 1px solid rgba(255,255,255,.12); } .stat-item:last-child { border-bottom: none; } }
@media (max-width: 480px) { .stats-strip .container { grid-template-columns: 1fr; } }

/* ── Tarjeta de servicio ─────────────────────────────────────── */
.service-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: var(--space-8);
  transition: all var(--transition-base);
  position: relative;
  overflow: hidden;
  border-top: 3px solid transparent;
}
.service-card:hover {
  border-top-color: var(--color-primary);
  box-shadow: var(--shadow-card-hover);
  transform: translateY(-4px);
}

.service-card__icon {
  width: 52px; height: 52px;
  background: var(--color-primary-light);
  border-radius: var(--radius-lg);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem;
  margin-bottom: var(--space-6);
  transition: background var(--transition-base);
}
.service-card:hover .service-card__icon { background: var(--color-primary); }
.service-card:hover .service-card__icon { filter: grayscale(0); }

.service-card__title {
  font-size: var(--text-lg); font-weight: 700;
  color: var(--color-text);
  margin-bottom: var(--space-3);
}
.service-card__desc {
  font-size: var(--text-sm); color: var(--color-text-muted); line-height: 1.75;
}
.service-card__link {
  display: inline-flex; align-items: center; gap: var(--space-1);
  margin-top: var(--space-5);
  font-size: var(--text-sm); font-weight: 600;
  color: var(--color-primary);
  transition: gap var(--transition-fast);
}
.service-card:hover .service-card__link { gap: var(--space-2); }

/* ── Tarjeta de formación ────────────────────────────────────── */
.formacion-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: var(--space-6);
  display: flex; flex-direction: column; gap: var(--space-4);
  transition: all var(--transition-base);
  position: relative;
}
.formacion-card:hover {
  border-color: var(--color-primary-mid);
  box-shadow: var(--shadow-card-hover);
  transform: translateY(-3px);
}
.formacion-card__header {
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3);
}
.formacion-card__title {
  font-size: var(--text-base); font-weight: 700;
  color: var(--color-text); line-height: 1.4; flex: 1;
}
.formacion-card__meta {
  display: flex; flex-wrap: wrap; gap: var(--space-2);
  font-size: var(--text-xs); color: var(--color-text-muted);
}
.formacion-card__meta-item { display: flex; align-items: center; gap: 4px; }
.formacion-card__footer {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: auto; padding-top: var(--space-4);
  border-top: 1px solid var(--color-border);
}
.formacion-card__instructor { font-size: var(--text-xs); color: var(--color-text-muted); }

/* ── Filtros del catálogo ─────────────────────────────────────── */
.filter-bar {
  display: flex; flex-wrap: wrap; gap: var(--space-4);
  align-items: center; margin-bottom: var(--space-6);
}
.filter-search { flex: 1; min-width: 200px; position: relative; }
.filter-search__icon {
  position: absolute; left: var(--space-3); top: 50%; transform: translateY(-50%);
  color: var(--color-text-light); pointer-events: none;
}
.filter-search .input { padding-left: var(--space-10); }

.filter-tabs { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.filter-tab {
  padding: var(--space-2) var(--space-4);
  font-size: var(--text-xs); font-weight: 600;
  border-radius: var(--radius-full);
  border: 1px solid var(--color-border);
  color: var(--color-text-muted);
  background: #fff;
  cursor: pointer;
  transition: all var(--transition-fast);
}
.filter-tab:hover { border-color: var(--color-primary); color: var(--color-primary); }
.filter-tab.active {
  background: var(--color-primary); border-color: var(--color-primary);
  color: #fff;
}
.filter-tab--category.active {
  background: var(--color-text); border-color: var(--color-text); color: #fff;
}

/* ── Verificador ─────────────────────────────────────────────── */
.verificador { max-width: 640px; margin-inline: auto; }
.verificador__box {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: var(--space-10);
  box-shadow: var(--shadow-card);
}
.verificador__form { display: flex; gap: var(--space-3); margin-bottom: var(--space-6); }
@media (max-width: 480px) { .verificador__form { flex-direction: column; } }

.verificador__input-wrapper { flex: 1; position: relative; }
.verificador__prefix {
  position: absolute; left: var(--space-4); top: 50%; transform: translateY(-50%);
  font-size: var(--text-sm); color: var(--color-primary);
  font-family: var(--font-mono); font-weight: 700; pointer-events: none;
}
.verificador__input {
  padding-left: 3.5rem;
  font-family: var(--font-mono);
  letter-spacing: .05em; text-transform: uppercase;
}
.verificador__hint { text-align: center; font-size: var(--text-xs); color: var(--color-text-light); }

/* Tarjeta de certificado */
.cert-result { margin-top: var(--space-8); animation: fadeInUp 350ms ease both; }

.cert-result--error {
  background: var(--color-error-light);
  border: 1px solid #f5b8b8; border-radius: var(--radius-xl);
  padding: var(--space-8); text-align: center;
}

.cert-card {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.cert-card__header {
  background: var(--color-primary);
  padding: var(--space-5) var(--space-8);
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);
}
.cert-card__logo { font-size: var(--text-xl); font-weight: 800; color: #fff; letter-spacing: -0.03em; }
.cert-card__valid-badge {
  display: flex; align-items: center; gap: var(--space-2);
  background: rgba(255,255,255,.2); color: #fff;
  padding: var(--space-2) var(--space-4); border-radius: var(--radius-full);
  font-size: var(--text-xs); font-weight: 700; border: 1px solid rgba(255,255,255,.35);
}
.cert-card__body {
  padding: var(--space-8);
  display: grid; grid-template-columns: 1fr auto; gap: var(--space-8); align-items: start;
  background: #fff;
}
@media (max-width: 560px) { .cert-card__body { grid-template-columns: 1fr; } }

.cert-card__title-label {
  font-size: var(--text-xs); text-transform: uppercase; letter-spacing: .1em;
  color: var(--color-text-light); margin-bottom: var(--space-2); font-weight: 600;
}
.cert-card__course-name {
  font-size: var(--text-xl); font-weight: 700; color: var(--color-text);
  margin-bottom: var(--space-6); line-height: 1.3;
}
.cert-card__person {
  font-size: var(--text-2xl); font-weight: 800; color: var(--color-primary); margin-bottom: var(--space-6);
}
.cert-card__details { display: grid; grid-template-columns: repeat(2,1fr); gap: var(--space-5); }
.cert-detail { display: flex; flex-direction: column; gap: 3px; }
.cert-detail__label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .1em;
  color: var(--color-text-light); font-weight: 600;
}
.cert-detail__value { font-size: var(--text-sm); font-weight: 600; color: var(--color-text); }

.cert-card__qr { display: flex; flex-direction: column; align-items: center; gap: var(--space-3); }
.cert-card__qr-frame {
  background: #fff; padding: var(--space-3); border-radius: var(--radius-lg);
  border: 1px solid var(--color-border);
  width: 120px; height: 120px;
  display: flex; align-items: center; justify-content: center;
}
.cert-card__qr canvas, .cert-card__qr img { width: 96px !important; height: 96px !important; }
.cert-card__qr-label { font-size: 10px; color: var(--color-text-light); text-align: center; max-width: 100px; }
.cert-card__footer {
  padding: var(--space-4) var(--space-8);
  border-top: 1px solid var(--color-border);
  display: flex; align-items: center; justify-content: space-between;
  background: var(--color-surface);
}
.cert-card__id { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--color-text-muted); }

/* ── About grid ─────────────────────────────────────────────── */
.about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-20); align-items: center; }
@media (max-width: 768px) { .about-grid { grid-template-columns: 1fr; gap: var(--space-10); } }

.about__feature { display: flex; gap: var(--space-4); align-items: flex-start; margin-bottom: var(--space-6); }
.about__feature-icon {
  width: 44px; height: 44px; min-width: 44px;
  background: var(--color-primary-light);
  border-radius: var(--radius-md);
  display: flex; align-items: center; justify-content: center; font-size: 1.25rem;
}
.about__feature-title { font-size: var(--text-base); font-weight: 700; color: var(--color-text); margin-bottom: var(--space-1); }
.about__feature-desc  { font-size: var(--text-sm); color: var(--color-text-muted); line-height: 1.7; }

/* Panel decorativo lado izquierdo "about" */
.about__panel {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  overflow: hidden;
}
.about__panel-header {
  background: var(--color-primary);
  padding: var(--space-5) var(--space-6);
  display: flex; align-items: center; gap: var(--space-3);
}
.about__panel-title { font-size: var(--text-sm); font-weight: 600; color: #fff; }
.about__panel-body { padding: var(--space-6); }

.timeline-item {
  display: flex; gap: var(--space-4);
  padding-bottom: var(--space-5);
  border-left: 2px solid var(--color-border);
  padding-left: var(--space-5);
  margin-left: var(--space-2);
  position: relative;
}
.timeline-item::before {
  content: '';
  position: absolute;
  left: -5px; top: 4px;
  width: 8px; height: 8px;
  background: var(--color-primary);
  border-radius: 50%;
}
.timeline-item:last-child { border-left: 2px solid transparent; padding-bottom: 0; }
.timeline-year { font-size: var(--text-xs); font-weight: 700; color: var(--color-primary); white-space: nowrap; margin-top: 2px; }
.timeline-text { font-size: var(--text-sm); color: var(--color-text-muted); line-height: 1.6; }
.timeline-text strong { color: var(--color-text); font-weight: 600; }

/* ── Tecnologías ────────────────────────────────────────────── */
.tech-grid { display: flex; flex-wrap: wrap; gap: var(--space-3); justify-content: center; }
.tech-tag {
  padding: var(--space-2) var(--space-4);
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: var(--text-sm); color: var(--color-text-muted);
  font-weight: 500;
  transition: all var(--transition-fast);
}
.tech-tag:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: var(--color-primary-light);
}

/* ── CTA Banner ─────────────────────────────────────────────── */
.cta-banner {
  background: var(--color-primary);
  border-radius: var(--radius-xl);
  padding: var(--space-16) var(--space-12);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-banner::after {
  content: '';
  position: absolute;
  right: -60px; top: -60px;
  width: 240px; height: 240px;
  background: rgba(255,255,255,.06);
  border-radius: 50%;
}
.cta-banner::before {
  content: '';
  position: absolute;
  left: -40px; bottom: -40px;
  width: 180px; height: 180px;
  background: rgba(255,255,255,.04);
  border-radius: 50%;
}
.cta-banner__title { font-size: clamp(var(--text-2xl),3.5vw,var(--text-4xl)); color: #fff; margin-bottom: var(--space-4); position: relative; z-index: 1; }
.cta-banner__desc { font-size: var(--text-lg); max-width: 520px; margin: 0 auto var(--space-8); color: rgba(255,255,255,.8); position: relative; z-index: 1; }
.cta-banner__actions { display: flex; gap: var(--space-4); justify-content: center; flex-wrap: wrap; position: relative; z-index: 1; }

/* ── Hero de subpágina ───────────────────────────────────────── */
.page-hero {
  padding-top: var(--nav-height);
  background: var(--color-primary);
  position: relative;
  overflow: hidden;
}
.page-hero::after {
  content: '';
  position: absolute;
  right: -80px; top: -80px;
  width: 320px; height: 320px;
  background: rgba(255,255,255,.05); border-radius: 50%;
}
.page-hero__inner {
  padding-block: var(--space-16);
  position: relative; z-index: 1;
}
.page-hero__eyebrow {
  display: inline-flex; align-items: center; gap: var(--space-2);
  font-size: var(--text-xs); font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(255,255,255,.7); margin-bottom: var(--space-4);
}
.page-hero__title { color: #fff; margin-bottom: var(--space-4); }
.page-hero__desc { color: rgba(255,255,255,.8); font-size: var(--text-lg); max-width: 560px; }
.page-hero__badges { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-6); }
.page-hero__badge {
  padding: var(--space-2) var(--space-4); border-radius: var(--radius-full);
  background: rgba(255,255,255,.15); color: #fff;
  font-size: var(--text-xs); font-weight: 600; border: 1px solid rgba(255,255,255,.25);
}

/* ── Loader ─────────────────────────────────────────────────── */
@media print {
  .nav, .nav__mobile-menu, .footer, .verify-left,
  .btn--ghost, .page-loader { display: none !important; }
  .cert-card { box-shadow: none !important; border: 1px solid #ccc !important; }
}
