/* =========================================================
   R:SGI — Fuentes auto-hospedadas (fusionadas desde fonts.css)
   Subsets: latin-ext + latin  (óptimo para ES-GT)
   ========================================================= */

/* Bricolage Grotesque — Blog headings */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url('../fonts/bricolage-grotesque-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
                 U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF,
                 U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
                 U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url('../fonts/bricolage-grotesque-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC,
                 U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
                 U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Fraunces — Display / Headings */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/fraunces-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F,
                 U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0,
                 U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/fraunces-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC,
                 U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
                 U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Geist — Body / UI */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('../fonts/geist-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F,
                 U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0,
                 U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('../fonts/geist-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC,
                 U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
                 U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}

/* JetBrains Mono — Code / Labels */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url('../fonts/jetbrains-mono-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F,
                 U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0,
                 U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url('../fonts/jetbrains-mono-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC,
                 U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
                 U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                 U+2212, U+2215, U+FEFF, U+FFFD;
}

/* =========================================================
   R:SGI — Estilos del tema
   ========================================================= */

:root {
      --midnight: #0A1628;
      --midnight-deep: #050D1A;
      --steel: #1E3A5F;
      --steel-light: #2D4F7A;
      --cyan: #38BDF8;
      --cyan-deep: #0EA5E9;
      --amber: #F59E0B;
      --amber-deep: #D97706;
      --green: #10B981;
      --slate-900: #0F172A;
      --slate-700: #334155;
      --slate-500: #64748B;
      --slate-400: #94A3B8;
      --slate-300: #CBD5E1;
      --slate-200: #E2E8F0;
      --slate-100: #F1F5F9;
      --slate-50: #F8FAFC;
      --white: #FFFFFF;

      --font-display: 'Fraunces', Georgia, serif;
      --font-body: 'Geist', -apple-system, BlinkMacSystemFont, sans-serif;
      --font-mono: 'JetBrains Mono', 'SF Mono', Consolas, monospace;

      --radius-sm: 6px;
      --radius-md: 10px;
      --radius-lg: 16px;

      --container: 1200px;
      --container-narrow: 960px;

      /* Aliases for blog templates */
      --dark: var(--midnight);
      --accent: var(--amber);
      --font-blog: 'Bricolage Grotesque', system-ui, sans-serif;
    }

    *, *::before, *::after { box-sizing: border-box; }
    html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

    body {
      margin: 0;
      font-family: var(--font-body);
      font-size: 16px;
      line-height: 1.6;
      color: var(--slate-700);
      background: var(--white);
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    img { max-width: 100%; height: auto; display: block; }
    a { color: var(--cyan-deep); text-decoration: none; transition: color .2s ease; }
    a:hover { color: var(--steel); }

    h1, h2, h3, h4 {
      font-family: var(--font-display);
      font-weight: 500;
      color: var(--slate-900);
      letter-spacing: -0.02em;
      line-height: 1.15;
      margin: 0 0 .75em;
    }
    h1 { font-size: clamp(2.5rem, 5.5vw, 4.5rem); font-weight: 400; }
    h2 { font-size: clamp(2rem, 4vw, 3rem); }
    h3 { font-size: clamp(1.25rem, 2vw, 1.5rem); font-weight: 500; }
    h4 { font-size: 1.05rem; font-weight: 500; }

    p { margin: 0 0 1em; }

    .container {
      width: 100%;
      max-width: var(--container);
      margin: 0 auto;
      padding: 0 24px;
    }

    /* Eyebrow */
    .eyebrow {
      font-family: var(--font-mono);
      font-size: 0.75rem;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      color: var(--cyan-deep);
      font-weight: 500;
      margin-bottom: 1rem;
      display: inline-flex;
      align-items: center;
      gap: 0.5rem;
    }
    .eyebrow::before {
      content: '';
      width: 24px;
      height: 1px;
      background: var(--cyan-deep);
      display: inline-block;
    }
    .eyebrow.on-dark { color: var(--cyan); }
    .eyebrow.on-dark::before { background: var(--cyan); }

    /* Buttons */
    .btn {
      display: inline-flex;
      align-items: center;
      gap: 0.5rem;
      padding: 14px 28px;
      font-family: var(--font-body);
      font-size: 0.95rem;
      font-weight: 500;
      border-radius: var(--radius-sm);
      border: 1px solid transparent;
      cursor: pointer;
      transition: all .25s ease;
      text-decoration: none;
      letter-spacing: 0.01em;
    }
    .btn-primary { background: var(--amber); color: var(--midnight); border-color: var(--amber); }
    .btn-primary:hover { background: var(--amber-deep); border-color: var(--amber-deep); color: var(--white); transform: translateY(-1px); }
    .btn-ghost { background: transparent; color: var(--white); border-color: rgba(255,255,255,0.25); }
    .btn-ghost:hover { border-color: var(--cyan); color: var(--cyan); }
    .btn-outline { background: transparent; color: var(--midnight); border-color: var(--slate-200); }
    .btn-outline:hover { border-color: var(--midnight); background: var(--midnight); color: var(--white); }
    .btn .arrow { transition: transform .25s ease; }
    .btn:hover .arrow { transform: translateX(3px); }

    /* HEADER */
    .site-header {
      position: fixed;
      top: 0; left: 0; right: 0;
      z-index: 100;
      padding: 18px 0;
      background: rgba(10, 22, 40, 0.85);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      border-bottom: 1px solid rgba(255,255,255,0.06);
      transition: background .3s ease;
    }
    .site-header.scrolled { background: rgba(10, 22, 40, 0.96); }
    .header-inner { display: flex; align-items: center; justify-content: space-between; gap: 32px; }
    .logo {
      font-family: var(--font-display);
      font-size: 1.5rem;
      font-weight: 600;
      color: var(--white);
      letter-spacing: -0.02em;
      text-decoration: none;
      display: flex;
      align-items: baseline;
      gap: 2px;
    }
    .logo .colon { color: var(--cyan); }
    .nav { display: flex; align-items: center; gap: 32px; }
    .nav a { color: rgba(255,255,255,0.75); font-size: 0.9rem; text-decoration: none; transition: color .2s ease; }
    .nav a:hover { color: var(--white); }
    .nav .btn { padding: 10px 20px; font-size: 0.85rem; }
    .menu-toggle {
      display: none;
      background: transparent;
      border: 1px solid rgba(255,255,255,0.2);
      color: var(--white);
      padding: 8px 12px;
      border-radius: var(--radius-sm);
      cursor: pointer;
      font-family: var(--font-mono);
      font-size: 0.75rem;
    }

    /* HERO */
    .hero {
      position: relative;
      min-height: 100vh;
      background: var(--midnight);
      color: var(--white);
      padding: 120px 0 80px;
      overflow: hidden;
      display: flex;
      align-items: center;
    }
    .hero::before {
      content: '';
      position: absolute;
      inset: 0;
      background-image:
        radial-gradient(circle at 20% 30%, rgba(56, 189, 248, 0.12) 0%, transparent 45%),
        radial-gradient(circle at 80% 70%, rgba(245, 158, 11, 0.08) 0%, transparent 50%);
      pointer-events: none;
    }
    .hero::after {
      content: '';
      position: absolute;
      inset: 0;
      background-image:
        linear-gradient(rgba(56, 189, 248, 0.04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(56, 189, 248, 0.04) 1px, transparent 1px);
      background-size: 60px 60px;
      mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%);
      -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%);
      pointer-events: none;
    }
    .hero-inner {
      position: relative;
      z-index: 2;
      width: 100%;
      display: grid;
      grid-template-columns: 1fr 380px;
      grid-template-rows: auto auto;
      gap: 0 72px;
      align-items: start;
    }
    .hero-copy { grid-column: 1; grid-row: 1; }
    .hero h1 {
      color: var(--white);
      max-width: 18ch;
      margin-bottom: 1.5rem;
      animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) both;
    }
    .hero h1 em { font-style: italic; font-weight: 400; color: var(--cyan); }
    .hero-lead {
      font-size: clamp(1.05rem, 1.6vw, 1.25rem);
      color: rgba(255,255,255,0.78);
      max-width: 60ch;
      margin-bottom: 2.5rem;
      animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) .15s both;
    }
    .hero-actions { display: flex; flex-wrap: wrap; gap: 16px; animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) .3s both; }
    /* ---- Disciplines card strip ---- */
    .hero-disciplines {
      grid-column: 1 / -1;
      grid-row: 2;
      margin-top: clamp(36px, 5vh, 56px);
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 12px;
      animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) .45s both;
    }
    .hero-discipline {
      position: relative;
      display: flex;
      flex-direction: column;
      padding: 22px 22px 18px;
      background: rgba(255,255,255,0.03);
      border: 1px solid rgba(255,255,255,0.08);
      border-radius: 14px;
      text-decoration: none;
      overflow: hidden;
      transition: background 0.3s ease, border-color 0.3s ease,
                  transform 0.25s ease, box-shadow 0.3s ease;
    }
    .hero-discipline:hover {
      background: var(--d-bg, rgba(56,189,248,0.06));
      border-color: color-mix(in srgb, var(--d-color, #38BDF8) 40%, transparent);
      transform: translateY(-3px);
      box-shadow: 0 14px 36px rgba(0,0,0,0.32),
                  0 0 0 1px color-mix(in srgb, var(--d-color, #38BDF8) 15%, transparent);
    }

    /* Colored top accent bar */
    .hd-accent-bar {
      position: absolute;
      top: 0; left: 0; right: 0;
      height: 2px;
      background: var(--d-color, #38BDF8);
      opacity: 0.45;
      border-radius: 14px 14px 0 0;
      transition: opacity 0.3s, height 0.25s;
    }
    .hero-discipline:hover .hd-accent-bar { opacity: 1; height: 3px; }

    /* Icon pill */
    .hd-icon {
      width: 42px; height: 42px;
      border-radius: 10px;
      background: color-mix(in srgb, var(--d-color, #38BDF8) 11%, transparent);
      border: 1px solid color-mix(in srgb, var(--d-color, #38BDF8) 22%, transparent);
      display: flex;
      align-items: center;
      justify-content: center;
      color: var(--d-color, #38BDF8);
      margin-bottom: 14px;
      flex-shrink: 0;
      transition: background 0.3s, box-shadow 0.3s;
    }
    .hd-icon svg { width: 20px; height: 20px; display: block; }
    .hero-discipline:hover .hd-icon {
      background: color-mix(in srgb, var(--d-color, #38BDF8) 18%, transparent);
      box-shadow: 0 0 22px color-mix(in srgb, var(--d-color, #38BDF8) 30%, transparent);
    }

    /* Index / category label */
    .hd-num {
      font-family: var(--font-mono);
      font-size: 0.62rem;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: var(--d-color, #38BDF8);
      opacity: 0.75;
      margin-bottom: 4px;
      display: block;
    }

    /* Service title */
    .hd-title {
      font-family: var(--font-display);
      font-size: 0.96rem;
      font-weight: 600;
      color: var(--white);
      line-height: 1.25;
      margin-bottom: 8px;
      display: block;
      transition: color 0.25s;
    }
    .hero-discipline:hover .hd-title { color: var(--d-color, #38BDF8); }

    /* Short descriptor */
    .hd-desc {
      font-size: 0.78rem;
      color: rgba(255,255,255,0.38);
      line-height: 1.55;
      display: block;
      flex: 1;
      margin-bottom: 14px;
    }

    /* Navigation arrow */
    .hd-arrow {
      display: inline-block;
      font-size: 0.78rem;
      color: var(--d-color, #38BDF8);
      opacity: 0.38;
      transform: translateX(0);
      transition: opacity 0.25s, transform 0.25s;
    }
    .hero-discipline:hover .hd-arrow { opacity: 1; transform: translateX(5px); }

    /* HERO VISUAL PANEL */
    .hero-visual-panel {
      grid-column: 2;
      grid-row: 1;
      background: rgba(255,255,255,0.04);
      border: 1px solid rgba(255,255,255,0.1);
      border-radius: 16px;
      padding: 28px;
      position: relative;
      overflow: hidden;
      animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) .3s both;
    }
    .hero-visual-panel::before {
      content: '';
      position: absolute;
      top: -30%; right: -20%;
      width: 70%; height: 70%;
      background: radial-gradient(circle, rgba(56,189,248,0.14) 0%, transparent 70%);
      pointer-events: none;
    }
    .hvp-status {
      display: flex;
      align-items: center;
      gap: 10px;
      margin-bottom: 24px;
      padding-bottom: 20px;
      border-bottom: 1px solid rgba(255,255,255,0.1);
    }
    .hvp-dot {
      width: 8px; height: 8px;
      border-radius: 50%;
      background: #22C55E;
      flex-shrink: 0;
      box-shadow: 0 0 0 0 rgba(34,197,94,0.4);
      animation: pulse-green 2s infinite;
    }
    @keyframes pulse-green {
      0%   { box-shadow: 0 0 0 0 rgba(34,197,94,0.5); }
      70%  { box-shadow: 0 0 0 8px rgba(34,197,94,0); }
      100% { box-shadow: 0 0 0 0 rgba(34,197,94,0); }
    }
    .hvp-status-text {
      font-family: var(--font-mono);
      font-size: 0.65rem;
      letter-spacing: 0.12em;
      color: rgba(255,255,255,0.55);
      text-transform: uppercase;
    }
    .hvp-metrics { display: flex; flex-direction: column; gap: 20px; margin-bottom: 24px; }
    .hvp-metric-val {
      font-family: var(--font-display);
      font-size: 1.9rem;
      font-weight: 400;
      color: var(--white);
      line-height: 1;
      margin-bottom: 3px;
    }
    .hvp-unit { font-size: 0.95rem; color: var(--cyan); margin-left: 2px; font-style: italic; }
    .hvp-metric-label {
      font-family: var(--font-mono);
      font-size: 0.62rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: rgba(255,255,255,0.45);
      margin-bottom: 8px;
    }
    .hvp-bar { height: 3px; background: rgba(255,255,255,0.1); border-radius: 2px; overflow: hidden; }
    .hvp-bar-fill {
      height: 100%;
      background: linear-gradient(90deg, var(--cyan-deep), var(--cyan));
      border-radius: 2px;
      transform-origin: left;
      animation: bar-grow 1.8s cubic-bezier(.2,.8,.2,1) .5s both;
    }
    @keyframes bar-grow {
      from { transform: scaleX(0); }
      to   { transform: scaleX(1); }
    }
    .hvp-footer {
      display: flex;
      justify-content: space-between;
      padding-top: 18px;
      border-top: 1px solid rgba(255,255,255,0.1);
      font-family: var(--font-mono);
      font-size: 0.6rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: rgba(255,255,255,0.3);
    }
    .hero-discipline-num {
      font-family: var(--font-mono);
      font-size: 0.7rem;
      color: var(--cyan);
      letter-spacing: 0.15em;
      display: block;
      margin-bottom: 8px;
    }
    .hero-discipline-name {
      font-family: var(--font-display);
      font-size: 1rem;
      color: var(--white);
      line-height: 1.3;
      display: flex;
      flex-direction: column;
      gap: 12px;
    }

    /* Icono SVG inline en tarjetas de disciplina del hero */
    .discipline-icon-inline {
      display: block;
      width: 24px;
      height: 24px;
      flex-shrink: 0;
    }
    .discipline-icon-inline svg {
      width: 24px;
      height: 24px;
      display: block;
    }

    /* Icono SVG inline en títulos de servicios */
    .discipline-icon-title {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 40px;
      height: 40px;
      border-radius: var(--radius-md);
      background: rgba(56,189,248,0.12);
      color: var(--cyan);
      vertical-align: middle;
      margin-right: 12px;
      flex-shrink: 0;
    }
    .discipline-icon-title svg {
      width: 20px;
      height: 20px;
      display: block;
    }

    @keyframes fadeUp {
      from { opacity: 0; transform: translateY(24px); }
      to { opacity: 1; transform: translateY(0); }
    }

    section { padding: 100px 0; }
    .section-header { max-width: 720px; margin-bottom: 64px; }
    .section-header h2 { margin-bottom: 1rem; }
    .section-lead {
      font-size: 1.15rem;
      color: var(--slate-500);
      line-height: 1.6;
      max-width: 60ch;
    }

    /* TRUST BAR */
    .trust-bar {
      background: var(--slate-900);
      border-bottom: 1px solid rgba(255,255,255,0.06);
    }
    .trust-bar-inner {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      border-left: 1px solid rgba(255,255,255,0.07);
    }
    .trust-stat {
      padding: 32px 32px;
      border-right: 1px solid rgba(255,255,255,0.07);
      display: flex;
      flex-direction: column;
      gap: 8px;
      transition: background .2s ease;
    }
    .trust-stat:hover { background: rgba(255,255,255,0.03); }
    .trust-num {
      font-family: var(--font-display);
      font-size: 2rem;
      font-weight: 400;
      color: var(--cyan);
      line-height: 1;
      letter-spacing: -0.02em;
    }
    .trust-sup { font-size: 1.1rem; color: var(--cyan); font-style: normal; vertical-align: super; }
    .trust-label {
      font-family: var(--font-mono);
      font-size: 0.68rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: rgba(255,255,255,0.45);
    }

    /* CONFIANZA / PARTNERS STRIP */
    .confianza {
      background: var(--midnight);
      padding: 64px 0;
      border-top: 1px solid rgba(255,255,255,0.06);
      border-bottom: 1px solid rgba(255,255,255,0.06);
    }
    .confianza-block {
      display: grid;
      grid-template-columns: 180px 1fr;
      gap: 48px;
      align-items: center;
    }
    .confianza-block--marcos {
      margin-top: 32px;
      padding-top: 32px;
      border-top: 1px solid rgba(255,255,255,0.08);
    }
    .confianza-label {
      font-family: var(--font-mono);
      font-size: 0.72rem;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      color: rgba(255,255,255,0.4);
      line-height: 1.7;
    }
    .partners-grid {
      display: grid;
      grid-template-columns: repeat(5, 1fr);
      grid-template-rows: repeat(2, 72px);
      gap: 16px;
    }
    .partners-grid--single {
      grid-template-rows: 72px;
    }
    .partner-slot {
      background: rgba(255,255,255,0.06);
      border: 1px solid rgba(255,255,255,0.1);
      border-radius: 8px;
      display: flex;
      align-items: center;
      justify-content: center;
      font-family: var(--font-mono);
      font-size: 0.7rem;
      color: rgba(255,255,255,0.3);
      text-align: center;
      padding: 12px 16px;
      transition: border-color .25s ease, background .25s ease;
    }
    .partner-slot:hover {
      border-color: rgba(255,255,255,0.22);
      background: rgba(255,255,255,0.09);
    }
    .partner-slot img {
      display: block;
      max-width: 100%;
      max-height: 40px;
      width: auto;
      height: auto;
      object-fit: contain;
      filter: grayscale(100%) brightness(10) opacity(0.38);
      transition: filter .3s ease, transform .3s ease;
    }
    .partner-slot:hover {
      border-color: rgba(255,255,255,0.3);
      background: rgba(255,255,255,0.1);
    }
    /* Tecnologías: color real en hover */
    .partner-slot:hover img {
      filter: grayscale(0%) brightness(1) opacity(1);
      transform: scale(1.05);
    }
    /* Estándares (confianza-block--marcos): solo más visibles, sin color */
    .confianza-block--marcos .partner-slot:hover img {
      filter: grayscale(100%) brightness(10) opacity(0.9);
      transform: scale(1.05);
    }

    /* SERVICIOS */
    .servicios { background: var(--slate-50); }
    .servicios .section-header { margin-bottom: 48px; }
    .servicio-block {
      padding: 52px 0 52px 24px;
      border-top: 1px solid var(--slate-200);
      border-left: 3px solid transparent;
      display: grid;
      grid-template-columns: 1fr 1.5fr;
      gap: 56px;
      align-items: start;
      transition: background .25s ease;
    }
    .servicio-block:first-of-type { border-top: none; padding-top: 40px; }
    .servicio-block:hover { background: rgba(0,0,0,0.015); }
    .servicio-meta { position: sticky; top: 100px; }
    .servicio-num {
      font-family: var(--font-mono);
      font-size: 0.75rem;
      color: var(--cyan-deep);
      letter-spacing: 0.15em;
      margin-bottom: 18px;
      display: block;
    }
    .servicio-title {
      display: flex;
      align-items: center;
      margin-bottom: 20px;
    }
    .servicio-promise {
      font-family: var(--font-display);
      font-style: italic;
      font-size: 1.05rem;
      color: var(--slate-600);
      line-height: 1.6;
      padding: 14px 18px;
      border-left: 2px solid var(--cyan);
      background: rgba(56,189,248,0.04);
      border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
      margin: 0;
    }
    .servicio-deliverables {
      list-style: none;
      padding: 0;
      margin: 0 0 20px;
      display: flex;
      flex-direction: column;
      border-top: 1px solid var(--slate-200);
    }
    .servicio-deliverables li {
      padding: 14px 0;
      border-bottom: 1px solid var(--slate-200);
      display: flex;
      gap: 12px;
      align-items: center;
      font-size: 0.93rem;
      color: var(--slate-700);
    }
    .servicio-deliverables li:nth-child(odd) { padding-right: 0; border-right: none; }
    .servicio-deliverables li:nth-child(even) { padding-left: 0; }
    .servicio-deliverables .check {
      flex-shrink: 0;
      width: 16px;
      height: 16px;
      color: var(--green);
    }
    .servicio-tech {
      font-family: var(--font-mono);
      font-size: 0.72rem;
      color: var(--slate-400);
      letter-spacing: 0.07em;
      padding: 14px 0 20px;
      border-top: 1px solid var(--slate-200);
      display: flex;
      align-items: center;
      gap: 6px;
      flex-wrap: wrap;
    }
    .servicio-tech strong {
      color: var(--slate-500);
      font-weight: 500;
      margin-right: 4px;
      text-transform: uppercase;
      font-size: 0.68rem;
    }
    /* CTA row */
    .servicio-ctas {
      display: flex;
      align-items: center;
      gap: 20px;
      flex-wrap: wrap;
    }
    .btn-small {
      padding: 9px 20px;
      font-size: 0.83rem;
    }
    .servicio-link {
      font-family: var(--font-mono);
      font-size: 0.75rem;
      letter-spacing: 0.06em;
      color: var(--steel);
      text-decoration: none;
      border-bottom: 1px solid var(--slate-300);
      padding-bottom: 2px;
      transition: color .2s ease, border-color .2s ease;
      white-space: nowrap;
    }
    .servicio-link:hover { color: var(--midnight); border-color: var(--midnight); }

    /* MODELO OPERATE */
    .operate { background: var(--midnight); color: var(--white); position: relative; overflow: hidden; }
    .operate::before {
      content: '';
      position: absolute;
      inset: 0;
      background-image: linear-gradient(rgba(56, 189, 248, 0.04) 1px, transparent 1px);
      background-size: 100% 80px;
      pointer-events: none;
    }
    .operate-inner { position: relative; z-index: 2; }
    .operate h2 { color: var(--white); }
    .operate-lead { color: rgba(255,255,255,0.75); font-size: 1.15rem; max-width: 64ch; }
    .operate-brand {
      display: inline-flex;
      align-items: center;
      gap: 12px;
      font-family: var(--font-mono);
      font-size: 0.8rem;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      color: var(--cyan);
      margin-bottom: 20px;
    }
    .operate-brand-mark {
      width: 32px;
      height: 32px;
      border: 1px solid var(--cyan);
      border-radius: 50%;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      font-family: var(--font-display);
      font-size: 0.9rem;
      color: var(--cyan);
    }
    .fases {
      display: grid;
      grid-template-columns: repeat(5, 1fr);
      gap: 0;
      margin-top: 64px;
    }
    .fase {
      padding: 32px 24px;
      border-right: 1px solid rgba(255,255,255,0.12);
      position: relative;
    }
    .fase:first-child { padding-left: 0; }
    .fase:last-child { border-right: none; padding-right: 0; }
    .fase-num {
      font-family: var(--font-mono);
      font-size: 0.7rem;
      color: var(--cyan);
      letter-spacing: 0.15em;
      margin-bottom: 16px;
      display: block;
    }
    .fase-name {
      font-family: var(--font-display);
      font-size: 1.35rem;
      color: var(--white);
      font-weight: 500;
      margin-bottom: 12px;
    }
    .fase-desc {
      font-size: 0.9rem;
      color: rgba(255,255,255,0.65);
      margin-bottom: 16px;
      line-height: 1.55;
    }
    .fase-output {
      font-family: var(--font-mono);
      font-size: 0.7rem;
      color: var(--amber);
      letter-spacing: 0.05em;
      text-transform: uppercase;
    }
    .fase-output::before { content: '→ '; }

    /* SLAs */
    .slas { background: var(--white); }
    .slas-grid {
      display: grid;
      grid-template-columns: 1fr 1.4fr;
      gap: 80px;
      align-items: start;
    }
    .slas-table { border-top: 1px solid var(--slate-200); }
    .sla-row {
      display: grid;
      grid-template-columns: 1.3fr 1fr;
      gap: 24px;
      padding: 22px 0;
      border-bottom: 1px solid var(--slate-200);
      align-items: center;
    }
    .sla-categoria { font-size: 0.95rem; color: var(--slate-700); }
    .sla-categoria small {
      display: block;
      color: var(--slate-500);
      font-size: 0.8rem;
      margin-top: 4px;
    }
    .sla-valor {
      font-family: var(--font-mono);
      font-size: 1rem;
      color: var(--steel);
      font-weight: 500;
      text-align: right;
    }
    .sla-valor.highlight { color: var(--green); }
    .sla-note {
      font-family: var(--font-mono);
      font-size: 0.75rem;
      color: var(--slate-500);
      letter-spacing: 0.05em;
      margin-top: 24px;
      padding: 16px 20px;
      background: var(--slate-50);
      border-left: 2px solid var(--cyan-deep);
      line-height: 1.6;
    }

    /* DIFERENCIADORES */
    .diferenciadores { background: var(--white); border-top: 1px solid var(--slate-200); border-bottom: 1px solid var(--slate-200); }
    .dif-layout {
      display: grid;
      grid-template-columns: 1fr 1.4fr;
      gap: 80px;
      align-items: start;
    }
    /* Pills de keywords en columna izquierda */
    .dif-tags {
      list-style: none;
      padding: 0;
      margin: 32px 0 0;
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .dif-tags li {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-family: var(--font-mono);
      font-size: 0.72rem;
      letter-spacing: 0.08em;
      color: var(--slate-500);
      padding: 7px 14px;
      border: 1px solid var(--slate-200);
      border-radius: 100px;
      width: fit-content;
      transition: border-color .2s, color .2s;
    }
    .dif-tags li::before {
      content: '';
      width: 6px; height: 6px;
      border-radius: 50%;
      background: var(--cyan);
      flex-shrink: 0;
    }
    .dif-list { list-style: none; padding: 0; margin: 0; }
    .dif-item {
      padding: 20px 0;
      border-bottom: 1px solid var(--slate-200);
      display: grid;
      grid-template-columns: 52px 1fr;
      gap: 20px;
      align-items: start;
    }
    .dif-item:last-child { border-bottom: none; }

    /* Ícono SVG en diferenciadores */
    .dif-icon {
      width: 44px;
      height: 44px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: var(--slate-100);
      border-radius: var(--radius-md);
      color: var(--cyan-deep);
      flex-shrink: 0;
      transition: background .25s ease, color .25s ease;
    }
    .dif-icon svg { width: 20px; height: 20px; }
    .dif-item:hover .dif-icon { background: var(--midnight); color: var(--cyan); }

    .dif-content h3 { font-size: 1.05rem; margin-bottom: 6px; }
    .dif-content p { color: var(--slate-500); margin: 0; font-size: 0.9rem; line-height: 1.55; }

    /* STATS */
    .stats { background: var(--midnight); color: var(--white); position: relative; overflow: hidden; }
    .stats::before {
      content: '';
      position: absolute;
      inset: 0;
      background-image: linear-gradient(rgba(56, 189, 248, 0.05) 1px, transparent 1px);
      background-size: 100% 60px;
      pointer-events: none;
    }
    .stats-inner { position: relative; z-index: 2; }
    .stats h2 { color: var(--white); }
    .stats-lead { color: rgba(255,255,255,0.7); font-size: 1.1rem; max-width: 60ch; margin-bottom: 64px; }
    .stats-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
      gap: 0;
      border-top: 1px solid rgba(255,255,255,0.12);
    }
    .stat { padding: 40px 24px 0 0; border-right: 1px solid rgba(255,255,255,0.12); }
    .stat:last-child { border-right: none; }
    .stat-figure {
      display: flex;
      align-items: baseline;
      gap: 2px;
      margin-bottom: 12px;
    }
    .stat-num {
      font-family: var(--font-display);
      font-size: clamp(3rem, 6vw, 4.5rem);
      font-weight: 400;
      color: var(--white);
      line-height: 1;
      letter-spacing: -0.03em;
    }
    .stat-plus {
      font-family: var(--font-display);
      font-size: clamp(1.8rem, 3.5vw, 2.6rem);
      font-weight: 400;
      color: var(--cyan);
      line-height: 1;
      letter-spacing: -0.02em;
    }
    .stat-label {
      font-family: var(--font-mono);
      font-size: 0.75rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: rgba(255,255,255,0.6);
    }

    /* SOBRE */
    .sobre { background: var(--white); }
    .sobre-layout {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 80px;
      align-items: center;
    }
    .sobre-text h2 { margin-bottom: 24px; }
    .sobre-text p {
      font-size: 1.05rem;
      color: var(--slate-700);
      line-height: 1.7;
      margin-bottom: 1.25em;
    }
    .sobre-visual {
      background: var(--midnight);
      border-radius: var(--radius-lg);
      padding: 48px;
      color: var(--white);
      position: relative;
      overflow: hidden;
    }
    .sobre-visual::before {
      content: '';
      position: absolute;
      top: -50%;
      right: -30%;
      width: 80%;
      height: 200%;
      background: radial-gradient(circle, rgba(56, 189, 248, 0.15) 0%, transparent 50%);
      pointer-events: none;
    }
    .sobre-visual-inner { position: relative; z-index: 2; }
    .sobre-visual-label {
      font-family: var(--font-mono);
      font-size: 0.7rem;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      color: var(--cyan);
      margin-bottom: 24px;
    }
    .sobre-visual-quote {
      font-family: var(--font-display);
      font-size: 1.4rem;
      font-weight: 400;
      line-height: 1.4;
      color: var(--white);
      margin-bottom: 32px;
    }
    .sobre-visual-quote em { color: var(--cyan); font-style: italic; }
    /* Stats separados de la quote en Nosotros */
    .sobre-stats-bar {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      background: rgba(255,255,255,0.04);
      border: 1px solid rgba(255,255,255,0.1);
      border-radius: 0 0 var(--radius-lg) var(--radius-lg);
      overflow: hidden;
    }
    .sobre-stat-item {
      padding: 20px 18px;
      border-right: 1px solid rgba(255,255,255,0.08);
      text-align: center;
    }
    .sobre-stat-item:last-child { border-right: none; }
    .sobre-stat-num { font-family: var(--font-display); font-size: 1.8rem; color: var(--cyan); line-height: 1; margin-bottom: 5px; }
    .sobre-stat-label { font-family: var(--font-mono); font-size: 0.65rem; letter-spacing: 0.1em; text-transform: uppercase; color: rgba(255,255,255,0.55); }

    /* CONTACTO */
    .contacto {
      background: var(--midnight);
      color: var(--white);
      position: relative;
      overflow: hidden;
    }
    .contacto::before {
      content: '';
      position: absolute; inset: 0;
      background-image:
        radial-gradient(circle at 75% 20%, rgba(56, 189, 248, 0.08) 0%, transparent 50%),
        radial-gradient(circle at 10% 80%, rgba(245, 158, 11, 0.05) 0%, transparent 40%);
      pointer-events: none;
    }
    .contacto .container { position: relative; z-index: 2; }

    /* Layout 2 columnas */
    .contacto-layout {
      display: grid;
      grid-template-columns: 1fr 1.3fr;
      gap: 80px;
      align-items: start;
    }

    /* Sidebar izquierda */
    .contacto-sidebar h2 {
      color: var(--white);
      margin-bottom: 20px;
    }
    .contacto-lead {
      color: rgba(255,255,255,0.7);
      font-size: 1.05rem;
      max-width: 44ch;
      margin-bottom: 40px;
      line-height: 1.65;
    }
    .contacto-datos {
      display: flex;
      flex-direction: column;
      gap: 0;
      margin-bottom: 40px;
      border-top: 1px solid rgba(255,255,255,0.1);
    }
    .contacto-dato {
      padding: 18px 0;
      border-bottom: 1px solid rgba(255,255,255,0.08);
      display: grid;
      grid-template-columns: 90px 1fr;
      gap: 16px;
      align-items: baseline;
    }
    .contacto-dato-label {
      font-family: var(--font-mono);
      font-size: 0.68rem;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--cyan);
      padding-top: 3px;
    }
    .contacto-dato-value {
      font-size: 0.95rem;
      color: rgba(255,255,255,0.85);
      line-height: 1.5;
    }
    .contacto-dato-value a { color: rgba(255,255,255,0.85); transition: color .2s; }
    .contacto-dato-value a:hover { color: var(--cyan); }

    .contacto-linkedin {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      font-family: var(--font-mono);
      font-size: 0.78rem;
      letter-spacing: 0.08em;
      color: rgba(255,255,255,0.5);
      text-decoration: none;
      border: 1px solid rgba(255,255,255,0.12);
      padding: 10px 18px;
      border-radius: var(--radius-sm);
      transition: all .25s ease;
    }
    .contacto-linkedin:hover {
      color: var(--cyan);
      border-color: var(--cyan);
    }

    /* Panel del formulario */
    .contacto-form-panel {
      background: rgba(255,255,255,0.04);
      border: 1px solid rgba(255,255,255,0.1);
      border-radius: var(--radius-lg);
      padding: 40px;
      backdrop-filter: blur(8px);
      -webkit-backdrop-filter: blur(8px);
    }
    .contacto-form-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 28px;
      padding-bottom: 20px;
      border-bottom: 1px solid rgba(255,255,255,0.1);
    }
    .contacto-form-title {
      font-family: var(--font-display);
      font-size: 1.15rem;
      color: var(--white);
      font-weight: 500;
    }
    .contacto-form-resp {
      font-family: var(--font-mono);
      font-size: 0.68rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--green);
    }

    /* FOOTER */
    .site-footer {
      background: var(--midnight-deep);
      color: rgba(255,255,255,0.6);
      padding: 64px 0 32px;
      font-size: 0.9rem;
    }
    .footer-grid {
      display: grid;
      grid-template-columns: 1.5fr 1fr 1fr 1fr;
      gap: 48px;
      margin-bottom: 48px;
    }
    .footer-brand .logo { font-size: 1.75rem; margin-bottom: 16px; }
    .footer-brand p { font-size: 0.9rem; line-height: 1.6; max-width: 32ch; }
    .footer-col h4 {
      font-family: var(--font-mono);
      font-size: 0.7rem;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      color: var(--cyan);
      margin-bottom: 16px;
      font-weight: 500;
    }
    .footer-col ul { list-style: none; padding: 0; margin: 0; }
    .footer-col li { margin-bottom: 10px; }
    .footer-col a { color: rgba(255,255,255,0.65); }
    .footer-col a:hover { color: var(--white); }
    .footer-bottom {
      padding-top: 24px;
      border-top: 1px solid rgba(255,255,255,0.08);
      display: flex; justify-content: space-between; align-items: center;
      flex-wrap: wrap; gap: 16px;
      font-family: var(--font-mono); font-size: 0.75rem;
      color: rgba(255,255,255,0.4);
    }
    .footer-social { display: flex; gap: 16px; }
    .footer-social a {
      color: rgba(255,255,255,0.5);
      width: 36px; height: 36px;
      border: 1px solid rgba(255,255,255,0.15);
      border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      transition: all .25s ease;
    }
    .footer-social a:hover { color: var(--cyan); border-color: var(--cyan); }

    /* RESPONSIVE */
    @media (max-width: 980px) {
      .servicio-block { grid-template-columns: 1fr; gap: 28px; padding-left: 16px; }
      .servicio-meta { position: static; }
      .servicio-ctas { flex-wrap: wrap; gap: 14px; }
      .fases { grid-template-columns: repeat(2, 1fr); }
      .fase { border-right: 1px solid rgba(255,255,255,0.12); border-bottom: 1px solid rgba(255,255,255,0.12); padding-bottom: 32px; }
      .fase:nth-child(2n) { border-right: none; }
      .slas-grid { grid-template-columns: 1fr; gap: 48px; }
      .confianza-inner { grid-template-columns: 1fr; gap: 24px; }
      .confianza-label { max-width: none; }
      .partners-grid { grid-template-columns: repeat(3, 1fr); gap: 16px; }
      .hero-disciplines { grid-template-columns: repeat(2, 1fr); }
    }
    @media (max-width: 900px) {
      .nav { gap: 16px; }
      .nav a:not(.btn) { display: none; }
      .menu-toggle { display: inline-flex; }
      .dif-layout { grid-template-columns: 1fr; gap: 48px; }
      .sobre-layout { grid-template-columns: 1fr; gap: 48px; }
      .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
    }
    @media (max-width: 768px) {
      .hero-inner { grid-template-columns: 1fr; }
      .hero-visual-panel { display: none; }
      .trust-bar-inner { grid-template-columns: 1fr 1fr; }
      .sobre-stats-bar { grid-template-columns: repeat(2, 1fr); }
      .sobre-stat-item:nth-child(2) { border-right: none; }
      .sobre-stat-item:nth-child(1),
      .sobre-stat-item:nth-child(2) { border-bottom: 1px solid rgba(255,255,255,0.08); }
    }
    @media (max-width: 600px) {
      section { padding: 72px 0; }
      .hero { padding: 100px 0 60px; min-height: auto; }
      .hero-inner { min-height: auto; }
      .hero-copy { margin-bottom: 40px; }
      .hero-disciplines { grid-template-columns: 1fr; gap: 8px; }
      .trust-bar-inner { grid-template-columns: 1fr 1fr; }
      .stat { padding: 32px 16px 0 0; border-right: none; border-bottom: 1px solid rgba(255,255,255,0.12); padding-bottom: 24px; }
      .stat:last-child { border-bottom: none; }
      .footer-grid { grid-template-columns: 1fr; }
      .fases { grid-template-columns: 1fr; }
      .fase { border-right: none; padding: 24px 0; }
      .sobre-visual { padding: 32px; }
    }

    .reveal { opacity: 0; transform: translateY(10px); transition: opacity .55s ease, transform .55s ease; }
    .reveal.in-view { opacity: 1; transform: translateY(0); }

    /* En móvil los partner-slots son siempre visibles (no dependen del IntersectionObserver) */
    @media (max-width: 900px) {
      .partner-slot.reveal { opacity: 1 !important; transform: none !important; }
    }

/* ============ ADDITIONS FOR WORDPRESS ============ */

/* Skip link for accessibility */
.skip-link {
  position: absolute;
  left: -9999px;
  z-index: 999;
  padding: 8px 16px;
  background: var(--midnight);
  color: var(--white);
  text-decoration: none;
  border-radius: var(--radius-sm);
}
.skip-link:focus {
  left: 16px;
  top: 16px;
}

.screen-reader-text {
  position: absolute !important;
  clip: rect(1px, 1px, 1px, 1px);
  width: 1px;
  height: 1px;
  overflow: hidden;
  word-wrap: normal !important;
}

.screen-reader-text:focus {
  background-color: var(--white);
  clip: auto !important;
  color: var(--midnight);
  display: block;
  font-size: 0.875rem;
  font-weight: 700;
  height: auto;
  left: 5px;
  line-height: normal;
  padding: 15px 23px 14px;
  text-decoration: none;
  top: 5px;
  width: auto;
  z-index: 100000;
}

/* WordPress nav menu styles */
.nav-menu {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: 32px;
}
.nav-menu li { position: relative; }
.nav-menu li a {
  color: rgba(255,255,255,0.75);
  font-size: 0.9rem;
  text-decoration: none;
  transition: color .2s ease;
}
.nav-menu li a:hover { color: var(--white); }

/* Custom logo support */
.custom-logo-link {
  display: inline-block;
}
.custom-logo {
  max-height: 48px;
  width: auto;
}

/* Inner page (page.php) */
.page-content-inner {
  padding: 160px 0 100px;
  max-width: 800px;
  margin: 0 auto;
}
.page-content-inner h1 {
  font-size: clamp(2rem, 4vw, 3rem);
  margin-bottom: 1.5rem;
  color: var(--slate-900);
}
.page-content-inner p,
.page-content-inner li {
  font-size: 1.05rem;
  line-height: 1.7;
  color: var(--slate-700);
}
.page-content-inner a { color: var(--cyan-deep); }
.page-content-inner a:hover { color: var(--steel); }

/* Blog */
.blog-wrap { padding: 160px 0 100px; }
.blog-wrap .post-card {
  padding: 32px 0;
  border-bottom: 1px solid var(--slate-200);
}
.blog-wrap .post-card h2 {
  font-size: 1.75rem;
  margin-bottom: 12px;
}
.blog-wrap .post-card h2 a { color: var(--slate-900); text-decoration: none; }
.blog-wrap .post-card h2 a:hover { color: var(--steel); }
.blog-wrap .post-meta {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--slate-500);
  margin-bottom: 16px;
}

/* 404 */
.error-404 {
  text-align: center;
  padding: 200px 24px 120px;
}
.error-404 h1 {
  font-size: clamp(4rem, 10vw, 8rem);
  font-style: italic;
  color: var(--steel);
  margin-bottom: 0;
  font-family: var(--font-display);
  font-weight: 400;
}
.error-404 p {
  font-size: 1.1rem;
  color: var(--slate-500);
  margin-bottom: 32px;
}

/* Search form */
.search-form {
  display: flex;
  gap: 8px;
  margin-bottom: 32px;
}
.search-form input[type="search"] {
  flex: 1;
  padding: 12px 16px;
  border: 1px solid var(--slate-300);
  border-radius: var(--radius-sm);
  font-family: var(--font-body);
  font-size: 0.95rem;
}
.search-form input[type="search"]:focus {
  outline: none;
  border-color: var(--cyan-deep);
}

/* ============================================================
   DYNAMIC ENHANCEMENTS
   ============================================================ */

/* --- Hero parallax background --- */
.hero-bg {
  position: absolute;
  inset: -30% 0 0 0;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(56, 189, 248, 0.12) 0%, transparent 45%),
    radial-gradient(circle at 80% 70%, rgba(245, 158, 11, 0.08) 0%, transparent 50%),
    linear-gradient(rgba(56, 189, 248, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(56, 189, 248, 0.04) 1px, transparent 1px);
  background-size: auto, auto, 60px 60px, 60px 60px;
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%);
  pointer-events: none;
  will-change: transform;
}

/* --- Hover: servicio-block --- */
.servicio-block {
  transition: background .25s ease;
}

/* --- Hover: fases --- */
.fase {
  border-radius: var(--radius-sm);
  transition: background .25s ease, padding .25s ease;
}
.fase:hover {
  background: rgba(56, 189, 248, 0.06);
  padding-bottom: 8px;
}
.fase:hover .fase-name {
  color: var(--cyan);
}

/* --- Hover: diferenciadores --- */
.dif-item {
  transition: padding-left .25s ease;
}
.dif-item:hover {
  padding-left: 10px;
}
.dif-item:hover .dif-num {
  color: var(--cyan-deep);
}

/* --- Scroll spy: active nav link --- */
.nav-menu li a.active,
.nav a.active {
  color: var(--white) !important;
  position: relative;
}
.nav-menu li a.active::after,
.nav a.active::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--cyan);
}

/* --- Mobile menu overlay --- */
@media (max-width: 900px) {
  .nav-menu.nav-open,
  .nav.nav-open {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 28px;
    position: fixed;
    inset: 0;
    background: rgba(10, 22, 40, 0.98);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    z-index: 99;
  }
  .nav-menu.nav-open li a,
  .nav.nav-open a:not(.btn) {
    display: block;
    font-size: 1.5rem;
    font-family: var(--font-display);
    color: var(--white);
    letter-spacing: -0.01em;
  }
  .nav-menu.nav-open li a:hover,
  .nav.nav-open a:not(.btn):hover {
    color: var(--cyan);
  }
  .nav-menu.nav-open .btn,
  .nav.nav-open .btn {
    padding: 14px 32px;
    font-size: 1rem;
  }
  body.menu-active {
    overflow: hidden;
  }
}

/* --- Contact Form 7 — panel styles --- */
.contacto-form .wpcf7-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* Grupos de dos campos en la misma fila */
.contacto-form .wpcf7-form .cf7-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

/* Labels */
.contacto-form label {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.45);
  margin-bottom: 6px;
}

/* Inputs y textarea */
.contacto-form input[type="text"],
.contacto-form input[type="email"],
.contacto-form input[type="tel"],
.contacto-form textarea {
  width: 100%;
  padding: 13px 16px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: var(--radius-sm);
  color: var(--white);
  font-family: var(--font-body);
  font-size: 0.9rem;
  transition: border-color .2s ease, background .2s ease;
  box-sizing: border-box;
}
.contacto-form input::placeholder,
.contacto-form textarea::placeholder {
  color: rgba(255, 255, 255, 0.4);
  font-size: 0.88rem;
}
.contacto-form input:focus,
.contacto-form textarea:focus {
  outline: none;
  border-color: rgba(56, 189, 248, 0.5);
  background: rgba(56, 189, 248, 0.04);
}
.contacto-form textarea {
  min-height: 40px;
  resize: vertical;
}

/* Submit */
.contacto-form input[type="submit"] {
  align-self: flex-start;
  padding: 13px 28px;
  background: var(--amber);
  color: var(--midnight);
  border: none;
  border-radius: var(--radius-sm);
  font-family: var(--font-body);
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: all .25s ease;
  letter-spacing: 0.01em;
}
.contacto-form input[type="submit"]:hover {
  background: var(--amber-deep);
  transform: translateY(-1px);
}

/* Validación y respuesta */
.contacto-form .wpcf7-not-valid-tip {
  color: #f87171;
  font-size: 0.75rem;
  margin-top: 4px;
  display: block;
  font-family: var(--font-mono);
}
.contacto-form .wpcf7-response-output {
  padding: 12px 16px;
  border-radius: var(--radius-sm);
  font-size: 0.85rem;
  margin-top: 4px;
  border: 1px solid;
}
.contacto-form .wpcf7-mail-sent-ok {
  border-color: var(--green);
  color: var(--green);
  background: rgba(16, 185, 129, 0.08);
}
.contacto-form .wpcf7-validation-errors,
.contacto-form .wpcf7-mail-sent-ng {
  border-color: #f87171;
  color: #f87171;
  background: rgba(248, 113, 113, 0.08);
}

/* Responsive contacto */
@media (max-width: 768px) {
  .contacto-layout {
    grid-template-columns: 1fr;
    gap: 56px;
  }
  .contacto-lead { max-width: none; }
}
@media (max-width: 600px) {
  .contacto-form-panel { padding: 28px 24px; }
  .contacto-form .cf7-row { grid-template-columns: 1fr; }
}

/* ============================================================
   CLIENTES — Logo strip (dark proof band)
   ============================================================ */
.clientes-strip {
  background: var(--midnight);
  padding: 52px 0 48px;
  border-top: 1px solid rgba(255,255,255,0.06);
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.clientes-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
  text-align: center;
}
.clientes-label {
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.35);
  white-space: nowrap;
  max-width: none;
  line-height: 1.6;
}
.clientes-logos {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 64px;
  flex-wrap: wrap;
  flex: 1;
}
.cliente-logo {
  flex: none;
  min-width: 100px;
  max-width: 160px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cliente-logo img {
  width: 100%;
  height: 44px;
  object-fit: contain;
  filter: grayscale(100%) brightness(10) opacity(0.35);
  transition: filter .35s ease, transform .35s ease;
}
.cliente-logo:hover img {
  filter: grayscale(0%) brightness(1) opacity(1);
  transform: scale(1.05);
}
/* PriceSmart: logotipo oscuro, necesita más brillo en dark bg */
.cliente-logo--pricesmart img {
  filter: grayscale(100%) brightness(10) opacity(0.55);
}
.cliente-logo--pricesmart:hover img {
  filter: grayscale(0%) brightness(1) opacity(1);
  transform: scale(1.05);
}

/* Placeholder slot */
.cliente-logo--placeholder {
  cursor: default;
}
.cliente-placeholder {
  width: 100%;
  height: 72px;
  border: 1.5px dashed var(--slate-300);
  border-radius: var(--radius-md);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: var(--slate-300);
  transition: border-color .25s ease, color .25s ease;
}
.cliente-placeholder svg {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}
.cliente-placeholder span {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.cliente-logo--placeholder:hover .cliente-placeholder {
  border-color: var(--slate-400);
  color: var(--slate-400);
}

@media (max-width: 900px) {
  .clientes-inner { gap: 24px; }
  .clientes-logos { gap: 40px; }
}
@media (max-width: 600px) {
  .clientes-strip { padding: 40px 0 36px; }
  .clientes-logos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; width: 100%; justify-items: center; }
  .cliente-logo { max-width: none; width: 100%; }
  .trust-bar-inner { grid-template-columns: repeat(2, 1fr); }
  .trust-stat:nth-child(2) { border-right: none; }
  .trust-stat:nth-child(1),
  .trust-stat:nth-child(2) { border-bottom: 1px solid rgba(255,255,255,0.07); }
}

/* ============================================================
   BACK TO TOP
   ============================================================ */
.back-to-top {
  position: fixed;
  bottom: 32px;
  right: 32px;
  z-index: 90;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--midnight);
  color: var(--cyan);
  border: 1px solid rgba(56, 189, 248, 0.25);
  border-radius: 50%;
  cursor: pointer;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .35s ease, transform .35s ease, background .25s ease, border-color .25s ease;
  pointer-events: none;
}
.back-to-top.visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.back-to-top:hover {
  background: var(--steel);
  border-color: var(--cyan);
}
.back-to-top:hover svg {
  transform: translateY(-2px);
}
.back-to-top svg {
  transition: transform .25s ease;
}
@media (max-width: 600px) {
  .back-to-top { bottom: 20px; right: 20px; width: 44px; height: 44px; }
}

/* ============================================================
   WHATSAPP FLOAT — Fixed bottom-left call-to-action pill
   ============================================================ */
.whatsapp-float {
  position: fixed;
  bottom: 28px;
  left: 28px;
  z-index: 200;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  background: #25d366;
  color: #fff;
  text-decoration: none;
  border-radius: 50%;
  box-shadow: 0 4px 16px rgba(37, 211, 102, 0.40), 0 2px 6px rgba(0,0,0,0.14);
  transition: transform .2s ease, box-shadow .2s ease;
}
.whatsapp-float:hover {
  transform: translateY(-3px) scale(1.06);
  box-shadow: 0 8px 28px rgba(37, 211, 102, 0.55), 0 2px 8px rgba(0,0,0,0.16);
  color: #fff;
  text-decoration: none;
}
.whatsapp-icon {
  flex-shrink: 0;
  display: block;
  width: 26px;
  height: 26px;
}
.whatsapp-text { display: none; }
@media (max-width: 640px) {
  .whatsapp-float { bottom: 20px; left: 20px; width: 46px; height: 46px; }
}

/* ============================================================
   CTA MID — Conversion strip (between diferenciadores & stats)
   ============================================================ */
.cta-mid {
  background: var(--steel);
  padding: 80px 0;
  position: relative;
  overflow: hidden;
}
.cta-mid::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 85% 50%, rgba(56,189,248,0.14) 0%, transparent 55%),
    radial-gradient(circle at 10% 80%, rgba(245,158,11,0.07) 0%, transparent 40%);
  pointer-events: none;
}
.cta-mid-inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 64px;
  align-items: center;
}
.cta-mid-eyebrow {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cyan);
  display: block;
  margin-bottom: 14px;
}
.cta-mid h2 {
  color: var(--white);
  font-size: clamp(1.5rem, 2.8vw, 2.1rem);
  margin-bottom: 12px;
  line-height: 1.2;
}
.cta-mid p {
  color: rgba(255,255,255,0.65);
  font-size: 1rem;
  margin: 0;
  max-width: 54ch;
  line-height: 1.65;
}
.cta-mid-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  flex-shrink: 0;
  min-width: 200px;
}
@media (max-width: 860px) {
  .cta-mid-inner { grid-template-columns: 1fr; gap: 40px; }
  .cta-mid-actions { flex-direction: row; flex-wrap: wrap; }
}

/* ============================================================
   SOBRE — CTA group beneath the text column
   ============================================================ */
.sobre-cta-group {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 32px;
  padding-top: 32px;
  border-top: 1px solid var(--slate-200);
}

/* ============================================================
   STATS — hover tint on individual stat items
   ============================================================ */
.stat {
  transition: padding-left .3s ease;
  cursor: default;
}
.stat:hover { padding-left: 8px; }
.stat:hover .stat-num { color: var(--cyan); transition: color .25s ease; }

/* ============================================================
   STAGGER GRID — keep partner-slot cells from collapsing
   JS adds .reveal (opacity:0) to grid children; min-height holds the row
   ============================================================ */
.partners-grid.stagger .partner-slot { min-height: 72px; }

/* ============================================================
   LOW PRIORITY IMPROVEMENTS
   ============================================================ */

/* 1. Scroll padding — compensate for fixed header (≈75px + 15px buffer) */
html { scroll-padding-top: 90px; }

/* 2. Text selection — brand colours */
::selection {
  background: var(--cyan);
  color: var(--midnight);
}
::-moz-selection {
  background: var(--cyan);
  color: var(--midnight);
}

/* 3. Custom scrollbar (Webkit / Chromium) */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--midnight-deep); }
::-webkit-scrollbar-thumb {
  background: var(--steel);
  border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover { background: var(--steel-light); }

/* 4. Page load fade-in */
@keyframes pageFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
body { animation: pageFadeIn .35s ease both; }

/* 5. Per-discipline colour accents */
#infraestructura.servicio-block              { border-left-color: var(--cyan); }
#infraestructura .servicio-num               { color: var(--cyan); }
#infraestructura .servicio-promise           { border-left-color: var(--cyan); background: rgba(56,189,248,0.04); }
#infraestructura .discipline-icon-title      { background: rgba(56,189,248,0.12); color: var(--cyan); }
#infraestructura .servicio-deliverables .check { color: var(--cyan); }

#perimetral.servicio-block                   { border-left-color: var(--amber); }
#perimetral .servicio-num                    { color: var(--amber); }
#perimetral .servicio-promise                { border-left-color: var(--amber); background: rgba(251,191,36,0.04); }
#perimetral .discipline-icon-title           { background: rgba(251,191,36,0.12); color: var(--amber); }
#perimetral .servicio-deliverables .check    { color: var(--amber); }

#ciberseguridad.servicio-block               { border-left-color: var(--green); }
#ciberseguridad .servicio-num                { color: var(--green); }
#ciberseguridad .servicio-promise            { border-left-color: var(--green); background: rgba(52,211,153,0.04); }
#ciberseguridad .discipline-icon-title       { background: rgba(52,211,153,0.12); color: var(--green); }
#ciberseguridad .servicio-deliverables .check { color: var(--green); }

#administrados.servicio-block                { border-left-color: var(--steel-light); }
#administrados .servicio-num                 { color: var(--steel-light); }
#administrados .servicio-promise             { border-left-color: var(--steel-light); background: rgba(148,163,184,0.06); }
#administrados .discipline-icon-title        { background: rgba(148,163,184,0.12); color: var(--steel-light); }
#administrados .servicio-deliverables .check { color: var(--steel-light); }

#perimetral .servicio-num::after,
#infraestructura .servicio-num::after,
#ciberseguridad .servicio-num::after,
#administrados .servicio-num::after { content: ''; }

/* 6. Decorative oversized quote mark on Sobre card */
.sobre-visual-quote {
  position: relative;
  padding-top: 12px;
}
.sobre-visual-quote::before {
  content: '\201C';
  font-family: var(--font-display);
  font-size: 6rem;
  line-height: 0.6;
  color: rgba(56, 189, 248, 0.18);
  display: block;
  margin-bottom: 20px;
  letter-spacing: -0.05em;
  pointer-events: none;
  user-select: none;
}

/* =========================================================
   IMPACTO REAL — Mini-Casos / Resultados comprobables
   ========================================================= */

.impacto-real {
  background: var(--slate-50);
  padding: 100px 0;
}

/* Grid 3 columnas */
.impacto-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 28px;
  margin-top: 56px;
}

/* Tarjeta */
.impacto-card {
  background: var(--white);
  border: 1px solid var(--slate-200);
  border-radius: var(--radius-lg);
  padding: 36px 32px;
  display: flex;
  flex-direction: column;
  gap: 0;
  transition: box-shadow .25s ease, transform .25s ease;
  position: relative;
  overflow: hidden;
}

.impacto-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--cyan), var(--cyan-deep));
  opacity: 0;
  transition: opacity .25s ease;
}

.impacto-card:hover {
  box-shadow: 0 8px 32px rgba(10, 22, 40, 0.1);
  transform: translateY(-3px);
}

.impacto-card:hover::before {
  opacity: 1;
}

/* Tarjeta con cliente nombrado (C807) */
.impacto-card--cliente {
  border-color: var(--cyan-deep);
  background: linear-gradient(135deg, var(--white) 0%, rgba(56,189,248,0.03) 100%);
}

.impacto-card--cliente::before {
  opacity: 1;
  background: linear-gradient(90deg, var(--cyan), var(--cyan-deep));
}

.impacto-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
}

.impacto-card-header .impacto-icon {
  margin-bottom: 0;
}

/* Badge "Cliente activo" */
.impacto-badge {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--cyan-deep);
  background: rgba(56, 189, 248, 0.1);
  border: 1px solid rgba(56, 189, 248, 0.25);
  border-radius: 100px;
  padding: 3px 10px;
  white-space: nowrap;
}

/* El sector en tarjeta de cliente nombrado va en negrita */
.impacto-card--cliente .impacto-sector {
  color: var(--midnight);
  font-weight: 600;
  font-family: var(--font-body);
  font-size: 0.8rem;
  letter-spacing: 0;
  text-transform: none;
}

/* CF7 — fieldset contenedor de hidden fields: quitar borde de navegador */
.wpcf7 .hidden-fields-container {
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
  min-width: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
}
/* CF7 — screen reader response: visually hidden */
.wpcf7 .screen-reader-response {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
/* Campo hidden CF7 */
.wpcf7 input[type="hidden"],
.wpcf7 span[style*="display:none"],
.wpcf7 .wpcf7-hidden { display: none !important; }
/* Ocultar el response-output vacío inicial */
.wpcf7-response-output:empty { display: none !important; }
/* El input sin label visible al fondo del form */
.contacto-form .wpcf7-form > p:last-of-type:empty,
.contacto-form .wpcf7-form > br:last-of-type { display: none !important; }

/* WhatsApp CTA en sidebar de contacto */
.contacto-wa-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.75);
  text-decoration: none;
  border: 1px solid rgba(37,211,102,0.4);
  background: rgba(37,211,102,0.07);
  padding: 11px 18px;
  border-radius: var(--radius-sm);
  transition: all .25s ease;
  margin-bottom: 36px;
}
.contacto-wa-btn svg { flex-shrink: 0; color: #25d366; }
.contacto-wa-btn:hover {
  background: rgba(37,211,102,0.14);
  border-color: rgba(37,211,102,0.7);
  color: #fff;
}

/* Trust micro-copy bajo el submit */
.form-trust {
  display: flex;
  align-items: center;
  gap: 7px;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  color: rgba(255,255,255,0.3);
  margin-top: 12px;
  margin-bottom: 0;
}
.form-trust svg { flex-shrink: 0; opacity: 0.5; }
/* Input text vacío fuera de .cf7-row */
.contacto-form .wpcf7-form > input[type="text"]:not([name]):not([id]),
.contacto-form .wpcf7-form input.wpcf7-text:not([class*="cf7"]):last-child { display: none !important; }

/* Ícono SVG en tarjetas de resultado */
.impacto-icon {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--slate-100);
  border-radius: var(--radius-md);
  color: var(--cyan-deep);
  margin-bottom: 20px;
  flex-shrink: 0;
  overflow: hidden;
}
.impacto-icon svg {
  width: 24px !important;
  height: 24px !important;
  min-width: 24px;
  min-height: 24px;
  max-width: 24px;
  max-height: 24px;
  display: block;
  flex-shrink: 0;
}

/* Contenido */
.impacto-content {
  display: flex;
  flex-direction: column;
  flex: 1;
}

/* Etiqueta de sector */
.impacto-sector {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cyan-deep);
  font-weight: 500;
  margin-bottom: 10px;
  display: block;
}

/* Título del caso */
.impacto-title {
  font-family: var(--font-display);
  font-size: clamp(1.1rem, 1.6vw, 1.3rem);
  font-weight: 500;
  color: var(--slate-900);
  margin: 0 0 14px;
  line-height: 1.25;
}

/* Descripción */
.impacto-desc {
  font-size: 0.9rem;
  color: var(--slate-500);
  line-height: 1.65;
  margin: 0;
  flex: 1;
}

/* Métrica destacada */
.impacto-metric {
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid var(--slate-200);
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.impacto-metric strong {
  font-family: var(--font-display);
  font-size: clamp(1.6rem, 2.5vw, 2rem);
  font-weight: 400;
  color: var(--cyan-deep);
  letter-spacing: -0.03em;
  line-height: 1;
}

.impacto-metric-label {
  font-size: 0.82rem;
  color: var(--slate-500);
  font-weight: 500;
}

/* Responsive */
@media (max-width: 900px) {
  .impacto-grid { grid-template-columns: 1fr; gap: 20px; }
  .impacto-card { padding: 28px 24px; }
  .impacto-card-header { margin-bottom: 16px; }
}

/* =========================================================
   DISCIPLINAS — Páginas de servicio
   ========================================================= */

/* --- 1. Acento por tema (custom property) --- */
.disciplina-theme-infra      { --disciplina-accent: var(--cyan);        --disciplina-accent-deep: var(--cyan-deep); }
.disciplina-theme-perimetral { --disciplina-accent: var(--amber);       --disciplina-accent-deep: var(--amber-deep); }
.disciplina-theme-ciber      { --disciplina-accent: var(--green);       --disciplina-accent-deep: #059669; }
.disciplina-theme-admin      { --disciplina-accent: var(--steel-light); --disciplina-accent-deep: var(--steel); }

/* --- 1b. Breadcrumb --- */
.disciplina-breadcrumb {
  margin-bottom: 28px;
}
.disciplina-breadcrumb a {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.52);
  text-decoration: none;
  text-transform: uppercase;
  transition: color .2s ease;
}
.disciplina-breadcrumb a:hover { color: rgba(255,255,255,0.85); }
.disciplina-breadcrumb svg { flex-shrink: 0; }

/* --- 2. Hero --- */
.disciplina-hero {
  min-height: auto;
  padding: 100px 0 80px;
}

/* Override hero-inner grid: una columna que ocupa todo el ancho */
.disciplina-hero-inner {
  grid-template-columns: 1fr !important;
  grid-template-rows: auto !important;
}

/* El grid real: izq (icono+título+CTAs) | der (eyebrow+lead+nota) */
.disciplina-hero-main {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 64px;
  align-items: center;
  padding-top: 16px;
}

.disciplina-hero-left {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.disciplina-hero-left h1 {
  color: var(--white);
  max-width: 22ch;
  margin: 0;
  animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) .1s both;
}

.disciplina-hero-left .hero-actions {
  animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) .25s both;
}

/* Icono de disciplina */
.disciplina-icon {
  width: 60px;
  height: 60px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: var(--radius-md);
  color: var(--disciplina-accent, var(--cyan));
  animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) both;
  flex-shrink: 0;
}

.disciplina-icon svg {
  width: 30px;
  height: 30px;
  stroke: currentColor;
}

/* Columna derecha del hero — glass card */
.disciplina-hero-right {
  display: flex;
  flex-direction: column;
  gap: 18px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.10);
  border-top: 2px solid var(--disciplina-accent, var(--cyan));
  border-radius: var(--radius-lg);
  padding: 32px 36px;
  animation: fadeUp .9s cubic-bezier(.2,.8,.2,1) .2s both;
}

.disciplina-hero-right .eyebrow.on-dark {
  color: var(--disciplina-accent, var(--cyan));
}

.disciplina-hero-right .hero-lead {
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  color: rgba(255,255,255,0.82);
  max-width: 52ch;
  margin: 0;
  animation: none;
  line-height: 1.65;
}

.disciplina-cta-note {
  font-family: var(--font-mono);
  font-size: 0.70rem;
  letter-spacing: 0.04em;
  color: rgba(255,255,255,0.38);
  margin: 0;
  padding-top: 4px;
  border-top: 1px solid rgba(255,255,255,0.08);
}

/* WhatsApp icon in CTA ghost button */
.disciplina-wa-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

/* --- 3. KPI strip --- */
.disciplina-kpi-strip {
  background: var(--slate-900);
  padding: 52px 0 28px;
  border-top: 1px solid rgba(255,255,255,0.06);
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.disciplina-kpi-grid {
  display: flex;
  gap: 0;
  padding-bottom: 28px;
}

.disciplina-kpi-item {
  flex: 1;
  padding: 0 40px 0 0;
  border-right: 1px solid rgba(255,255,255,0.08);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.disciplina-kpi-item:first-child { padding-left: 0; }
.disciplina-kpi-item:last-child  { border-right: none; padding-right: 0; }

.disciplina-kpi-value {
  font-family: var(--font-display);
  font-size: clamp(2.2rem, 4vw, 3.2rem);
  font-weight: 400;
  color: var(--disciplina-accent, var(--cyan));
  line-height: 1;
  letter-spacing: -0.03em;
}

.disciplina-kpi-label {
  font-size: 0.83rem;
  color: rgba(255,255,255,0.50);
  line-height: 1.4;
  max-width: 22ch;
}

.disciplina-kpi-note {
  font-family: var(--font-mono);
  font-size: 0.69rem;
  letter-spacing: 0.03em;
  color: rgba(255,255,255,0.25);
  padding-bottom: 0;
}

/* --- 4. Contenido principal --- */
.disciplina-content {
  background: var(--white);
  padding: 88px 0 80px;
}

/* Grid 2 columnas para las tarjetas */
.disciplina-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  margin-bottom: 48px;
}

/* Tarjetas */
.disciplina-card {
  background: var(--white);
  border: 1px solid var(--slate-200);
  border-top: 3px solid var(--disciplina-accent, var(--cyan));
  border-radius: var(--radius-lg);
  padding: 36px 32px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04);
}

.disciplina-card h2 {
  font-size: clamp(1.1rem, 1.6vw, 1.25rem);
  color: var(--slate-900);
  margin-bottom: 20px;
}

/* Lista con check SVG */
.disciplina-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.disciplina-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 0.95rem;
  color: var(--slate-700);
  line-height: 1.5;
}

.disciplina-list li .check {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: 2px;
  color: var(--disciplina-accent, var(--cyan));
  stroke: currentColor;
}

/* Meta: stack + objetivo */
.disciplina-meta {
  background: var(--slate-100);
  border-radius: var(--radius-md);
  padding: 28px 32px;
  margin-bottom: 40px;
  border-left: 3px solid var(--disciplina-accent, var(--cyan));
}

.disciplina-meta .servicio-tech {
  font-size: 0.88rem;
  color: var(--slate-700);
  margin-bottom: 10px;
}

.disciplina-meta .servicio-tech strong {
  color: var(--slate-900);
}

.disciplina-meta .section-lead {
  font-size: 0.95rem;
  color: var(--slate-600, var(--slate-700));
  margin: 0;
  line-height: 1.6;
}

/* Tarjeta de impacto — usa colores claros para no cortar el flujo */
.disciplina-impacto-card {
  background: var(--slate-50);
  border: 1px solid var(--slate-200);
  border-left: 4px solid var(--disciplina-accent, var(--cyan));
  border-radius: var(--radius-lg);
  padding: 40px 40px 40px 36px;
  margin-top: 0;
}

.disciplina-impacto-card h2 {
  font-size: clamp(1.1rem, 1.6vw, 1.25rem);
  color: var(--slate-900);
  margin-bottom: 20px;
}

/* Lista de impacto */
.disciplina-impacto-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.disciplina-impacto-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 0.95rem;
  color: var(--slate-700);
  line-height: 1.5;
}

.disciplina-impacto-list li .check {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: 2px;
  color: var(--disciplina-accent, var(--cyan));
  stroke: currentColor;
}

/* --- 5. CTA final --- */
.disciplina-cta {
  padding: 88px 0;
}

.disciplina-cta-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 24px;
}

.disciplina-cta-inner h2 {
  color: var(--white);
  max-width: 28ch;
  margin: 0;
  font-size: clamp(1.8rem, 3.5vw, 2.8rem);
}

.disciplina-cta-inner .contacto-lead {
  max-width: 48ch;
  margin: 0;
}

.disciplina-cta-inner .hero-actions {
  animation: none;
  justify-content: center;
}

/* --- 6. Responsive --- */
@media (max-width: 900px) {
  .disciplina-hero-main {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .disciplina-hero { padding: 48px 0 64px; }

  .disciplina-hero-right {
    padding: 24px 28px;
  }

  .disciplina-kpi-grid {
    flex-direction: column;
    gap: 0;
  }

  .disciplina-kpi-item {
    border-right: none;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    padding: 24px 0;
  }

  .disciplina-kpi-item:first-child { padding-top: 0; }
  .disciplina-kpi-item:last-child { border-bottom: none; padding-bottom: 0; }

  .disciplina-grid {
    grid-template-columns: 1fr;
  }

  .disciplina-meta { padding: 24px 20px; }
  .disciplina-impacto-card { padding: 32px 24px 32px 20px; }
}

@media (max-width: 640px) {
  .disciplina-hero-left h1 { font-size: clamp(2rem, 7vw, 2.8rem); }
  .disciplina-content { padding: 60px 0 56px; }
  .disciplina-cta { padding: 64px 0; }
  .disciplina-card { padding: 28px 20px; }
}

/* ==========================================================
   BLOG — single.php & archive.php
   ========================================================== */

/* --- Reading progress bar --- */
.reading-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  width: 0%;
  background: var(--accent);
  z-index: 9999;
  transition: width 0.1s linear;
}

/* --- Article Hero --- */
.article-hero {
  background: var(--midnight);
  padding: 110px 0 0;
  position: relative;
}

.article-back {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: rgba(255,255,255,0.4);
  text-decoration: none;
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  margin-bottom: 24px;
  transition: color 0.2s;
}
.article-back:hover { color: var(--cyan); }
.article-back svg { flex-shrink: 0; }

.article-hero-meta {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}

.article-tag {
  background: rgba(56,189,248,0.08);
  border: 1px solid rgba(56,189,248,0.18);
  color: var(--cyan);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 3px 10px;
  border-radius: 100px;
}

.article-read-time {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: rgba(255,255,255,0.38);
  font-size: 0.78rem;
}
.article-read-time svg { opacity: 0.6; }

.article-title {
  font-family: var(--font-blog);
  font-size: clamp(1.5rem, 2.8vw, 2.2rem);
  font-weight: 700;
  color: var(--white);
  line-height: 1.25;
  max-width: 22ch;
  margin: 0 0 24px;
  letter-spacing: -0.01em;
}

.article-byline {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 32px;
}

.article-author-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--accent);
  color: var(--dark);
  font-weight: 700;
  font-size: 0.82rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.article-author {
  display: block;
  color: rgba(255,255,255,0.85);
  font-weight: 500;
  font-size: 0.84rem;
}

.article-date {
  display: block;
  color: rgba(255,255,255,0.38);
  font-size: 0.78rem;
  margin-top: 1px;
}

.article-hero-bar {
  height: 2px;
  background: linear-gradient(90deg, rgba(56,189,248,0.5) 0%, transparent 60%);
  opacity: 1;
}

/* --- Article Layout (2-column) --- */
.article-layout {
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: 48px;
  align-items: start;
  padding-top: 48px;
  padding-bottom: 80px;
}

/* Dark background for all blog pages (body classes added by WordPress) */
body.blog,
body.single,
body.archive,
body.category,
body.tag {
  background: var(--midnight);
  color: var(--white);
}

/* --- Featured image --- */
.article-featured-img {
  border-radius: 12px;
  overflow: hidden;
  margin-bottom: 40px;
  border: 1px solid rgba(255,255,255,0.06);
}
.article-featured-img img {
  width: 100%;
  height: auto;
  display: block;
}

/* --- Article Body typography --- */
.article-body {
  font-size: 1.08rem;
  line-height: 1.8;
  color: rgba(255,255,255,0.82);
}

.article-body h2 {
  font-family: var(--font-blog);
  font-size: clamp(1.35rem, 2.5vw, 1.9rem);
  font-weight: 700;
  color: var(--white);
  margin: 2.4em 0 0.7em;
  line-height: 1.25;
}

.article-body h3 {
  font-family: var(--font-blog);
  font-size: clamp(1.1rem, 2vw, 1.45rem);
  font-weight: 600;
  color: var(--white);
  margin: 2em 0 0.6em;
}

.article-body h4 {
  font-size: 1.05rem;
  font-weight: 600;
  color: rgba(255,255,255,0.9);
  margin: 1.6em 0 0.5em;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.article-body p {
  margin: 0 0 1.4em;
}

.article-body a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.article-body a:hover { text-decoration: none; }

.article-body strong { color: var(--white); font-weight: 600; }

.article-body ul,
.article-body ol {
  margin: 0 0 1.4em 1.4em;
  padding: 0;
}

.article-body li {
  margin-bottom: 0.5em;
}

.article-body blockquote {
  border-left: 3px solid var(--accent);
  margin: 2em 0;
  padding: 16px 24px;
  background: rgba(255,255,255,0.04);
  border-radius: 0 8px 8px 0;
  font-style: italic;
  color: rgba(255,255,255,0.7);
}

.article-body pre,
.article-body code {
  font-family: 'Courier New', monospace;
  font-size: 0.9rem;
  background: rgba(255,255,255,0.06);
  border-radius: 6px;
}

.article-body pre {
  padding: 20px 24px;
  overflow-x: auto;
  margin: 1.6em 0;
  border: 1px solid rgba(255,255,255,0.08);
}

.article-body code {
  padding: 2px 7px;
}

.article-body hr {
  border: none;
  border-top: 1px solid rgba(255,255,255,0.08);
  margin: 2.5em 0;
}

.article-body img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  display: block;
  margin: 1.6em auto;
}

/* --- Article CTA --- */
.article-cta {
  display: flex;
  gap: 24px;
  align-items: flex-start;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.1);
  border-left: 4px solid var(--accent);
  border-radius: 12px;
  padding: 28px 32px;
  margin: 48px 0 40px;
}

.article-cta-icon {
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  background: rgba(255,255,255,0.06);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--accent);
}

.article-cta h3 {
  font-family: var(--font-blog);
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--white);
  margin: 0 0 8px;
}

.article-cta p {
  color: rgba(255,255,255,0.6);
  font-size: 0.92rem;
  margin: 0 0 16px;
  line-height: 1.6;
}

.article-cta .btn { display: inline-flex; }

/* --- Share buttons --- */
.article-share {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  padding-top: 32px;
  border-top: 1px solid rgba(255,255,255,0.08);
}

.article-share > span {
  color: rgba(255,255,255,0.45);
  font-size: 0.85rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-right: 4px;
}

.share-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 16px;
  border-radius: 8px;
  font-size: 0.85rem;
  font-weight: 500;
  text-decoration: none;
  transition: all 0.2s;
  border: 1px solid transparent;
}

.share-linkedin {
  background: rgba(10,102,194,0.15);
  border-color: rgba(10,102,194,0.35);
  color: #5baaea;
}
.share-linkedin:hover {
  background: rgba(10,102,194,0.3);
  border-color: rgba(10,102,194,0.6);
  color: #fff;
}

.share-whatsapp {
  background: rgba(37,211,102,0.1);
  border-color: rgba(37,211,102,0.3);
  color: #4ddb87;
}
.share-whatsapp:hover {
  background: rgba(37,211,102,0.22);
  border-color: rgba(37,211,102,0.55);
  color: #fff;
}

/* --- Sidebar --- */
.article-sidebar {
  display: flex;
  flex-direction: column;
  gap: 24px;
  position: sticky;
  top: 96px;
}

.sidebar-card {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 14px;
  padding: 28px 24px;
}

.sidebar-brand { margin-bottom: 24px; }

.sidebar-brand-logo {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--white);
  letter-spacing: -0.02em;
  display: block;
  margin-bottom: 10px;
}
.sidebar-brand-logo span { color: var(--accent); }

.sidebar-brand p {
  color: rgba(255,255,255,0.5);
  font-size: 0.88rem;
  line-height: 1.55;
  margin: 0;
}

.sidebar-stats {
  list-style: none;
  padding: 0;
  margin: 0 0 24px;
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 10px;
  overflow: hidden;
}

.sidebar-stats li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
.sidebar-stats li:last-child { border-bottom: none; }

.sidebar-stats strong {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--accent);
}

.sidebar-stats span {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.45);
  text-align: right;
}

.sidebar-btn {
  width: 100%;
  justify-content: center;
  text-align: center;
}

.sidebar-services h4 {
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(255,255,255,0.4);
  margin: 0 0 14px;
}

.sidebar-services ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.sidebar-services li a {
  display: block;
  color: rgba(255,255,255,0.7);
  text-decoration: none;
  font-size: 0.88rem;
  padding: 8px 12px;
  border-radius: 8px;
  transition: all 0.2s;
  border: 1px solid transparent;
}
.sidebar-services li a:hover {
  color: var(--white);
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.1);
}

/* --- Related posts --- */
.related-posts {
  background: rgba(255,255,255,0.02);
  border-top: 1px solid rgba(255,255,255,0.07);
  padding: 64px 0 80px;
}

.related-title {
  font-family: var(--font-blog);
  font-size: clamp(1.4rem, 2.5vw, 2rem);
  font-weight: 700;
  color: var(--white);
  margin: 0 0 36px;
}

.related-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

.related-card {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 14px;
  padding: 28px 24px;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: all 0.25s;
}
.related-card:hover {
  background: rgba(255,255,255,0.07);
  border-color: rgba(255,255,255,0.15);
  transform: translateY(-3px);
}

.related-card-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.related-card-meta span {
  font-size: 0.78rem;
  color: rgba(255,255,255,0.35);
}

.related-card h3 {
  font-family: var(--font-blog);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--white);
  margin: 0;
  line-height: 1.3;
}

.related-card p {
  font-size: 0.87rem;
  color: rgba(255,255,255,0.5);
  line-height: 1.6;
  margin: 0;
  flex: 1;
}

.related-read {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--accent);
  margin-top: auto;
}

/* ==========================================================
   BLOG ARCHIVE — archive.php
   ========================================================== */

.blog-hero {
  background: var(--midnight);
  padding: 120px 0 56px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}

.blog-hero-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  padding-right: 0.06em;
  text-transform: uppercase;
  color: var(--cyan);
  margin-bottom: 20px;
}
.blog-hero-label::before {
  content: '';
  display: block;
  width: 24px;
  height: 2px;
  background: var(--cyan);
  flex-shrink: 0;
}

.blog-hero h1 {
  font-family: var(--font-blog);
  font-size: clamp(2.2rem, 5vw, 3.8rem);
  font-weight: 700;
  color: var(--white);
  margin: 0 0 16px;
  line-height: 1.1;
}

.blog-hero p {
  font-size: 1.05rem;
  color: rgba(255,255,255,0.55);
  max-width: 52ch;
  margin: 0;
  line-height: 1.65;
}

.blog-content {
  background: var(--midnight);
  color: var(--white);
  padding: 64px 0 96px;
}

/* ---- Filter pills ---- */
.blog-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 36px;
}

.blog-filter-pill {
  padding: 7px 20px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.12);
  background: rgba(255,255,255,0.04);
  color: rgba(255,255,255,0.5);
  font-family: var(--font-blog, system-ui, sans-serif);
  font-size: 0.82rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s, color 0.2s, transform 0.15s;
  user-select: none;
  -webkit-appearance: none;
  appearance: none;
}

.blog-filter-pill:hover {
  border-color: rgba(255,255,255,0.28);
  color: rgba(255,255,255,0.9);
  background: rgba(255,255,255,0.08);
  transform: translateY(-1px);
}

.blog-filter-pill.active {
  background: var(--pill-color, #38BDF8);
  border-color: var(--pill-color, #38BDF8);
  color: #0A1628;
  font-weight: 600;
  box-shadow: 0 0 16px color-mix(in srgb, var(--pill-color, #38BDF8) 35%, transparent);
}

.blog-filter-pill.active:hover {
  transform: translateY(-1px);
  opacity: 0.92;
}

/* Transición del grid al filtrar */
#blogGrid {
  transition: opacity 0.15s ease;
}

/* Featured post (first article) */
.blog-featured {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 16px;
  overflow: hidden;
  margin-bottom: 56px;
  text-decoration: none;
  transition: all 0.25s;
}
.blog-featured:hover {
  border-color: rgba(255,255,255,0.2);
  transform: translateY(-3px);
  box-shadow: 0 16px 48px rgba(0,0,0,0.4);
}

.blog-featured-img {
  background: rgba(255,255,255,0.03);
  min-height: 280px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.blog-featured-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
  transition: transform 0.4s;
}
.blog-featured:hover .blog-featured-img img {
  transform: scale(1.03);
}
.blog-featured-img-placeholder {
  width: 100%;
  height: 100%;
  min-height: 280px;
  background: linear-gradient(135deg, #1E3A5F 0%, #0A1628 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}
.blog-featured-img-placeholder::before {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    45deg,
    transparent,
    transparent 40px,
    rgba(255,255,255,0.02) 40px,
    rgba(255,255,255,0.02) 41px
  );
}
.blog-featured-img-placeholder svg {
  opacity: 0.25;
  position: relative;
  z-index: 1;
  color: #38BDF8;
}

.blog-featured-body {
  padding: 40px 40px 36px;
  display: flex;
  flex-direction: column;
}

.blog-featured-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--cyan);
  margin-bottom: 16px;
}

.blog-featured-body h2 {
  font-family: var(--font-blog);
  font-size: clamp(1.4rem, 2.5vw, 2rem);
  font-weight: 700;
  color: var(--white);
  line-height: 1.2;
  margin: 0 0 16px;
}

.blog-featured-body p {
  color: rgba(255,255,255,0.55);
  font-size: 0.95rem;
  line-height: 1.7;
  margin: 0 0 24px;
  flex: 1;
}

.blog-featured-meta {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.blog-featured-meta span {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.35);
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.blog-featured-read {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}

/* Grid uniforme — todos los posts igual */
.blog-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

.blog-grid--uniform {
  gap: 28px;
}

/* Card base */
.blog-card {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 16px;
  overflow: hidden;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  transition: all 0.28s ease;
}
.blog-card:hover {
  background: rgba(255,255,255,0.07);
  border-color: rgba(255,255,255,0.18);
  transform: translateY(-5px);
  box-shadow: 0 20px 48px rgba(0,0,0,0.4);
}

/* ---- Placeholder inteligente por categoría ---- */
.blog-card-visual {
  height: 200px;
  position: relative;
  overflow: hidden;
  background: var(--card-gradient, linear-gradient(135deg,#1E3A5F 0%,#0A1628 100%));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  flex-shrink: 0;
  transition: background 0.3s;
}

.blog-card--uniform .blog-card-visual { height: 220px; }

/* Patrón de puntos de fondo */
.blog-card-visual::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(255,255,255,0.06) 1px, transparent 1px);
  background-size: 28px 28px;
  z-index: 0;
}

/* Glow de color detrás del ícono */
.blog-card-visual::after {
  content: '';
  position: absolute;
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background: var(--card-color, #38BDF8);
  opacity: 0.08;
  filter: blur(32px);
  z-index: 0;
  transition: opacity 0.3s, transform 0.3s;
}
.blog-card:hover .blog-card-visual::after {
  opacity: 0.15;
  transform: scale(1.3);
}

.blog-card-visual-inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  border-radius: 20px;
  background: var(--card-bg, rgba(56,189,248,0.07));
  border: 1px solid color-mix(in srgb, var(--card-color, #38BDF8) 25%, transparent);
  transition: transform 0.3s, background 0.3s;
}
.blog-card:hover .blog-card-visual-inner {
  transform: scale(1.08);
  background: var(--card-bg, rgba(56,189,248,0.12));
}

.blog-card-visual-icon {
  color: var(--card-color, #38BDF8);
  opacity: 0.85;
}

.blog-card-visual-label {
  position: relative;
  z-index: 1;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--card-color, #38BDF8);
  opacity: 0.7;
  padding-right: 0.1em;
}

/* ---- Banner de categoría en single.php ---- */
.article-category-banner {
  border-radius: 12px;
  overflow: hidden;
  margin-bottom: 40px;
  background: var(--card-gradient, linear-gradient(135deg,#1E3A5F 0%,#0A1628 100%));
  border: 1px solid color-mix(in srgb, var(--card-color, #38BDF8) 20%, transparent);
  padding: 36px 40px;
  display: flex;
  align-items: center;
  position: relative;
}
.article-category-banner::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(255,255,255,0.05) 1px, transparent 1px);
  background-size: 28px 28px;
}
.article-category-banner::after {
  content: '';
  position: absolute;
  right: 40px;
  top: 50%;
  transform: translateY(-50%);
  width: 160px;
  height: 160px;
  border-radius: 50%;
  background: var(--card-color, #38BDF8);
  opacity: 0.06;
  filter: blur(40px);
}

.article-category-banner-inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 20px;
}
.article-category-banner-inner svg {
  color: var(--card-color, #38BDF8);
  flex-shrink: 0;
  opacity: 0.8;
}
.article-category-banner-inner span {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--card-color, #38BDF8);
  opacity: 0.75;
  padding-right: 0.1em;
}

/* Cuerpo de la card */
.blog-card-body {
  padding: 24px 26px 22px;
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 12px;
}

.blog-card-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.blog-card-meta span {
  font-size: 0.76rem;
  color: rgba(255,255,255,0.35);
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.blog-card h2 {
  font-family: var(--font-blog);
  font-size: 1.12rem;
  font-weight: 700;
  color: var(--white);
  line-height: 1.28;
  margin: 0;
  transition: color 0.2s;
}
.blog-card:hover h2 { color: #38BDF8; }

.blog-card p {
  font-size: 0.88rem;
  color: rgba(255,255,255,0.5);
  line-height: 1.68;
  margin: 0;
  flex: 1;
}

.blog-card-read {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
  transition: gap 0.2s;
}
.blog-card:hover .blog-card-read { gap: 10px; }

/* Pagination */
.blog-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding-top: 56px;
}

.blog-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 12px;
  border-radius: 8px;
  font-size: 0.88rem;
  font-weight: 500;
  text-decoration: none;
  color: rgba(255,255,255,0.5);
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  transition: all 0.2s;
}
.blog-pagination .page-numbers:hover,
.blog-pagination .page-numbers.current {
  color: var(--dark);
  background: var(--accent);
  border-color: var(--accent);
}

/* No posts state */
.blog-empty {
  text-align: center;
  padding: 80px 24px;
  color: rgba(255,255,255,0.4);
}
.blog-empty h2 {
  font-family: var(--font-blog);
  color: var(--white);
  margin-bottom: 12px;
}

/* ==========================================================
   BLOG Responsive
   ========================================================== */

@media (max-width: 1024px) {
  .article-layout {
    grid-template-columns: 1fr 260px;
    gap: 36px;
  }
  .related-grid { grid-template-columns: repeat(2, 1fr); }
  .blog-grid { grid-template-columns: repeat(2, 1fr); }
  .blog-hero { padding: 100px 0 48px; }
}

@media (max-width: 900px) {
  .article-layout {
    grid-template-columns: 1fr;
  }
  .article-sidebar {
    position: static;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
  }
}

@media (max-width: 640px) {
  .article-title { max-width: none; }
  .article-cta {
    flex-direction: column;
    gap: 16px;
    padding: 24px 20px;
  }
  .related-grid { grid-template-columns: 1fr; }
  .article-sidebar {
    grid-template-columns: 1fr;
  }
  .blog-grid { grid-template-columns: 1fr; }
  .blog-hero { padding: 100px 0 40px; }
  .blog-card--uniform .blog-card-img { height: 200px; }
}

/* =================================================================
   UI/UX PRO MAX — Mejoras aplicadas v1.8
   ================================================================= */

/* ---- 1. FOCUS VISIBLE — Accesibilidad por teclado ---- */
/* Anillo de foco visible para navegación con teclado */
:focus-visible {
  outline: 2px solid var(--cyan);
  outline-offset: 3px;
  border-radius: 4px;
}
/* Quitar outline por defecto solo cuando focus-visible está soportado */
:focus:not(:focus-visible) {
  outline: none;
}
/* Botones y links que ya tienen estilos propios */
.btn:focus-visible,
.hero-discipline:focus-visible,
.blog-card:focus-visible,
.whatsapp-float:focus-visible,
.back-to-top:focus-visible,
.share-btn:focus-visible,
.blog-filter-pill:focus-visible {
  outline: 2px solid var(--cyan);
  outline-offset: 3px;
  border-radius: 6px;
}
/* Inputs del formulario — usar box-shadow en lugar de outline */
.contacto-form input:focus-visible,
.contacto-form textarea:focus-visible,
.contacto-form select:focus-visible {
  outline: none;
  border-color: var(--cyan) !important;
  box-shadow: 0 0 0 3px rgba(56,189,248,0.18);
}
/* Sobrescribir el outline:none antiguo solo cuando no hay focus-visible */
.contacto-form input:focus:not(:focus-visible),
.contacto-form textarea:focus:not(:focus-visible) {
  outline: none;
}

/* ---- 2. TOUCH TARGETS — Mínimo 44×44px en elementos interactivos ---- */
/* Menu toggle en mobile */
.menu-toggle {
  min-width: 44px;
  min-height: 44px;
  padding: 10px 14px;
}
/* Footer social links */
.footer-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  border-radius: 8px;
  transition: background 0.2s;
}
.footer-social a:hover {
  background: rgba(255,255,255,0.08);
}
/* Servicio links inline */
.servicio-link {
  display: inline-block;
  padding: 8px 0;
  min-height: 44px;
  line-height: 28px;
}
/* Nav links — padding mínimo en desktop */
@media (min-width: 901px) {
  .nav a:not(.btn) {
    padding: 10px 4px;
  }
}

/* ---- 3. CF7 FORM — Estado de campo inválido ---- */
/* Borde rojo en el campo cuando CF7 lo marca como inválido */
.contacto-form .wpcf7-not-valid {
  border-color: rgba(248, 113, 113, 0.7) !important;
  background: rgba(248, 113, 113, 0.04) !important;
}
/* Submit deshabilitado durante el envío */
.contacto-form input[type="submit"]:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  transform: none !important;
  pointer-events: none;
}
/* Spinner de CF7 alineado al tema
   visibility:hidden por defecto — CF7 JS lo muestra con inline style en submit.
   display:inline-block se mantiene para evitar reflow del botón. */
.wpcf7-spinner {
  display: inline-block;
  visibility: hidden;        /* oculto en reposo; CF7 pone visibility:visible al enviar */
  width: 18px;
  height: 18px;
  border: 2px solid rgba(255,255,255,0.15);
  border-top-color: var(--amber);
  border-radius: 50%;
  animation: cf7-spin 0.7s linear infinite;
  vertical-align: middle;
  margin-left: 8px;
}
@keyframes cf7-spin {
  to { transform: rotate(360deg); }
}

/* ---- 4. WHATSAPP FLOAT — Pill con badge de disponibilidad ---- */
/* Desktop: pill expandido */
.whatsapp-float {
  width: auto;
  height: auto;
  padding: 11px 18px 11px 14px;
  border-radius: 40px;
  gap: 10px;
  justify-content: flex-start;
}
.whatsapp-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.whatsapp-text {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  color: #fff;
  line-height: 1.2;
  white-space: nowrap;
}
.whatsapp-avail {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.67rem;
  color: rgba(255,255,255,0.8);
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.whatsapp-avail-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #fff;
  flex-shrink: 0;
  animation: pulse-wa 2.2s ease-in-out infinite;
}
@keyframes pulse-wa {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.55; transform: scale(0.85); }
}
/* Mobile: volver a círculo compacto */
@media (max-width: 640px) {
  .whatsapp-float {
    width: 50px;
    height: 50px;
    padding: 0;
    border-radius: 50%;
    gap: 0;
    justify-content: center;
  }
  .whatsapp-body { display: none; }
}

/* ---- 5. TRUST BAR — Stat de <15min ---- */
/* El sup del trust-num necesita ajuste de tamaño cuando muestra "min" */
.trust-sup {
  font-size: 0.75rem;
  vertical-align: super;
}

/* ---- 6. SOBRE — Atribución de cita ---- */
.sobre-quote-attr {
  font-family: var(--font-mono);
  font-size: 0.67rem;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.35);
  text-transform: uppercase;
  margin-top: -20px;
  margin-bottom: 28px;
  display: block;
}
