/* ═══════════════════════════════════════════════════════════════════════════
   CAPA AURA — clientesya.lat
   ---------------------------------------------------------------------------
   Toma el lenguaje visual de la página "Aura" (lienzo oscuro continuo, luz
   ambiente que sigue al ratón, grano, tipografía enorme con revelado por
   máscara, marquesina inclinada, filas de hover, botón píldora que se rellena
   desde abajo, cursor propio) y lo traduce a LA PALETA DE CLIENTESYA.

   Los colores de la marca NO se tocan. Sigue mandando DIRECCION.md:
     fondo    linear-gradient(135deg, #0f172a, #1e1b4b 60%, #0f172a)
     botón    linear-gradient(135deg, #2563eb, #7c3aed)
     titular  linear-gradient(135deg, #60a5fa, #a78bfa)

   Equivalencias con el original de Aura:
     --bg-color #050505  →  el azul marino de la marca
     --accent   #ff3366  →  #60a5fa
     --accent-2 #33ccff  →  #a78bfa

   Se carga DESPUÉS de styles.css. Todo cuelga de `body.aura`, así que se
   desactiva entero quitando esa clase del <body>. No modifica styles.css
   (que se genera con `npm run css`) ni el HTML de contenido.
   ═══════════════════════════════════════════════════════════════════════════ */

body.aura {
  --au-bg:       #0b1020;
  --au-ink:      #f2f5ff;
  --au-muted:    #97a6c9;
  --au-accent:   #60a5fa;
  --au-accent-2: #a78bfa;
  --au-line:     rgba(255, 255, 255, .10);
  --au-ease:     cubic-bezier(.19, 1, .22, 1);
}

/* ───────────────────────────────────────────────────────────────────────────
   1. EL LIENZO ÚNICO
   Aura es una sola superficie oscura de arriba abajo. Aquí el sitio alternaba
   bandas blancas y oscuras; esa alternancia es lo que lo hacía parecer una
   plantilla. Se neutralizan los fondos claros de Tailwind y el degradado de
   marca pasa a ser el fondo del documento entero.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura {
  background: var(--au-bg);
  color: var(--au-ink);
}

body.aura::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -3;
  background: linear-gradient(135deg, #0f172a 0%, #1e1b4b 60%, #0f172a 100%);
}

body.aura .bg-white,
body.aura .bg-gray-50,
body.aura .bg-gray-100,
body.aura .bg-slate-50,
body.aura .bg-slate-100,
body.aura .bg-slate-900,
body.aura .bg-gray-900 {
  background-color: transparent !important;
}

/* las secciones oscuras ya no necesitan pintar su propio fondo: lo hereda todo */
body.aura .hero-bg {
  background: transparent;
}

/* una regla finísima donde antes había un cambio de color de banda */
body.aura main > section + section {
  border-top: 1px solid rgba(255, 255, 255, .055);
}

/* ───────────────────────────────────────────────────────────────────────────
   2. GRANO Y LUZ AMBIENTE  (.noise / .ambient-glow de Aura)
   El azul marino plano es un plano muerto. Con dos manchas radiales que
   siguen al ratón y un grano al 4 % el mismo color se lee como un material.
   ─────────────────────────────────────────────────────────────────────────── */

.au-glow {
  position: fixed;
  top: 50%;
  left: 50%;
  width: 78vw;
  height: 78vw;
  max-width: 1300px;
  max-height: 1300px;
  transform: translate(-50%, -50%);
  z-index: -2;
  pointer-events: none;
  filter: blur(80px);
  background:
    radial-gradient(circle, rgba(96, 165, 250, .20) 0%,
                            rgba(167, 139, 250, .14) 40%,
                            rgba(15, 23, 42, 0) 70%);
}

.au-noise {
  position: fixed;
  inset: 0;
  z-index: -1;
  opacity: .045;
  pointer-events: none;
  background-image: url('data:image/svg+xml,%3Csvg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"%3E%3Cfilter id="n"%3E%3CfeTurbulence type="fractalNoise" baseFrequency="0.65" numOctaves="3" stitchTiles="stitch"/%3E%3C/filter%3E%3Crect width="100%25" height="100%25" filter="url(%23n)"/%3E%3C/svg%3E');
}

/* La retícula tenue que ya existía, atenuada.
   OJO: `grid-faint` se usa de dos formas en este sitio. En la portada y en
   páginas web es una capa aparte, absoluta y vacía; ahí bajarle la opacidad es
   lo que se quiere. Pero en prospección y en estudio de mercado la clase va
   sobre la propia <section>, con el titular y los botones dentro: bajarle la
   opacidad ahí apagaba la portada entera. Por eso la regla solo alcanza a la
   capa, nunca al contenido. */
body.aura .grid-faint.absolute {
  opacity: .5;
}

/* ───────────────────────────────────────────────────────────────────────────
   3. TIPOGRAFÍA
   Aura usa Syne 800. Aquí se mantiene Archivo 900, que es la cara de display
   que la marca ya tiene y llega al mismo peso. Lo que se importa de Aura es
   el TRATAMIENTO: mucho más tamaño, tracking muy cerrado, interlineado corto.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura h1 {
  font-size: clamp(2.2rem, 4.2vw, 3.6rem);
  line-height: 1.0;
  letter-spacing: -.042em;
  font-weight: 900;
}

body.aura h2 {
  font-size: clamp(1.95rem, 3.9vw, 3.35rem);
  line-height: 1.03;
  letter-spacing: -.038em;
  font-weight: 900;
}

/* los h2 de dentro de una tarjeta o de un informe de ejemplo no son titulares
   de sección: se quedan como estaban */
body.aura .card-pro h2,
body.aura .glass h2,
body.aura .svc-card h2,
body.aura [class*="rounded-"] > h2 {
  font-size: revert;
  line-height: revert;
  letter-spacing: -.03em;
}

body.aura .eyebrow {
  letter-spacing: .18em;
  font-size: .74rem;
}

/* ───────────────────────────────────────────────────────────────────────────
   4. COLOR DEL TEXTO SOBRE EL LIENZO OSCURO
   Se remapean los grises de Tailwind que quedaban ilegibles al invertir.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura .text-gray-900,
body.aura .text-gray-800,
body.aura .text-slate-900,
body.aura .text-slate-800 { color: var(--au-ink) !important; }

body.aura .text-gray-700,
body.aura .text-gray-600,
body.aura .text-slate-700,
body.aura .text-slate-600 { color: #b9c6e4 !important; }

body.aura .text-gray-500,
body.aura .text-gray-400,
body.aura .text-slate-500 { color: var(--au-muted) !important; }

body.aura .text-gray-300 { color: rgba(255, 255, 255, .25) !important; }

body.aura .text-blue-700,
body.aura .text-blue-600,
body.aura .text-blue-800 { color: var(--au-accent) !important; }

body.aura .text-green-600,
body.aura .text-green-700 { color: #4ade80 !important; }

body.aura .text-indigo-600,
body.aura .text-indigo-700 { color: var(--au-accent-2) !important; }

body.aura .text-emerald-600,
body.aura .text-emerald-700 { color: #34d399 !important; }

body.aura .border-gray-100,
body.aura .border-gray-200,
body.aura .border-slate-100,
body.aura .border-slate-200 { border-color: var(--au-line) !important; }

body.aura strong { color: var(--au-ink); }

/* ───────────────────────────────────────────────────────────────────────────
   5. SUPERFICIES DE VIDRIO  (.service-card de Aura)
   Las tarjetas blancas pasan a vidrio: fondo translúcido, borde claro,
   desenfoque y el levantamiento de 10 px al pasar por encima.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura .card-pro,
body.aura .svc-card,
body.aura .svc-bd {
  background: rgba(255, 255, 255, .038) !important;
  border: 1px solid rgba(255, 255, 255, .075);
  border-radius: 20px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .07),
              0 32px 64px -24px rgba(0, 0, 0, .55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

body.aura .svc-card { overflow: hidden; }
body.aura .svc-bd {
  border: 0;
  border-radius: 0;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  background: transparent !important;
}

@media (hover: hover) and (pointer: fine) {
  body.aura .card-pro:hover,
  body.aura .svc-card:hover {
    background: rgba(255, 255, 255, .075) !important;
    transform: translateY(-10px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .10),
                0 48px 88px -28px rgba(0, 0, 0, .65);
  }
}

/* las fichas de vidrio que ya existían se alinean con el mismo radio */
body.aura .glass,
body.aura .glass-soft { border-radius: 20px; }

@media (prefers-reduced-transparency: reduce) {
  body.aura .card-pro,
  body.aura .svc-card {
    background: #141c31 !important;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

/* campos de formulario: el blanco sobre el lienzo oscuro era un agujero */
body.aura .field {
  background: rgba(255, 255, 255, .05);
  border: 1.5px solid rgba(255, 255, 255, .14);
  color: var(--au-ink);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .06);
}
body.aura .field::placeholder { color: var(--au-muted); }
body.aura .field:focus {
  border-color: var(--au-accent);
  box-shadow: 0 0 0 4px rgba(96, 165, 250, .16);
}
body.aura select.field option { background: #131a2c; color: var(--au-ink); }

/* ───────────────────────────────────────────────────────────────────────────
   6. CABECERA  (header de Aura)
   Aura usa mix-blend-mode: difference y un subrayado que entra por la
   izquierda. La barra aquí es pegajosa y lleva un botón de color, así que el
   blend se descarta (rompería el degradado del botón) y se queda el
   subrayado, que es el gesto que se reconoce.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura #navbar { background: transparent; }
body.aura #navbar .border-b { border-color: transparent; }
body.aura #navbar.nav-scrolled {
  background: rgba(11, 16, 32, .82) !important;
  border-bottom: 1px solid var(--au-line);
}

body.aura #navbar a:not(.grad-btn) {
  position: relative;
  overflow: hidden;
  padding-bottom: 4px;
}

body.aura #navbar a:not(.grad-btn)::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: -100%;
  width: 100%;
  height: 2px;
  background: linear-gradient(90deg, var(--au-accent), var(--au-accent-2));
  transition: left .3s ease;
}

@media (hover: hover) and (pointer: fine) {
  body.aura #navbar a:not(.grad-btn):hover::after { left: 0; }
}

/* ───────────────────────────────────────────────────────────────────────────
   7. PORTADA  (.hero de Aura)
   Altura casi de pantalla y revelado por máscara: el titular sube desde
   debajo de su propia caja con un giro de 4°, en 1 s con la curva de Aura.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura .au-hero {
  min-height: 92vh;
  display: flex;
  align-items: center;
}

.au-line { overflow: hidden; display: block; }

.au-line > span {
  display: block;
  transform: translateY(110%) rotate(4deg);
  transform-origin: left top;
  opacity: 0;
  transition: transform 1s var(--au-ease), opacity 1s var(--au-ease);
}

.au-reveal.is-in .au-line > span {
  transform: translateY(0) rotate(0);
  opacity: 1;
}

/* ───────────────────────────────────────────────────────────────────────────
   8. MARQUESINA  (.marquee de Aura)
   Banda clara inclinada -2°, palabras alternando relleno y contorno. Aquí las
   palabras son los servicios que se venden, no adornos.
   ─────────────────────────────────────────────────────────────────────────── */

.au-marquee-wrap {
  width: 100%;
  padding: 3.2rem 0;
  margin: 4.5rem 0;
  overflow: hidden;
  display: flex;
  white-space: nowrap;
  transform: rotate(-2deg) scale(1.08);
  background: linear-gradient(135deg, #60a5fa, #a78bfa);
  color: #0f172a;
}

.au-marquee {
  font-family: var(--font-display, "Archivo", system-ui, sans-serif);
  font-size: clamp(2rem, 4.4vw, 4rem);
  font-weight: 900;
  letter-spacing: -.04em;
  text-transform: uppercase;
  display: flex;
  gap: 2.6rem;
  padding-right: 2.6rem;
  animation: auScroll 26s linear infinite;
}

.au-marquee span.stroke {
  color: transparent;
  -webkit-text-stroke: 2px #0f172a;
}

@keyframes auScroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* ───────────────────────────────────────────────────────────────────────────
   9. LISTA DE SERVICIOS EN FILAS  (.work-item de Aura)
   Las filas enormes que se iluminan y empujan 2 rem al pasar por encima, con
   la imagen que sigue al ratón. Es el gesto más reconocible de Aura y aquí
   sirve de índice a las tres páginas de servicio.
   ─────────────────────────────────────────────────────────────────────────── */

.au-worklist { position: relative; }

.au-work {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1.5rem;
  padding: 2.4rem 0;
  border-bottom: 1px solid var(--au-line);
  text-decoration: none;
  position: relative;
}

.au-work:first-child { border-top: 1px solid var(--au-line); }

.au-work h3 {
  font-size: clamp(1.9rem, 4.6vw, 4rem);
  font-weight: 900;
  letter-spacing: -.045em;
  line-height: 1;
  text-transform: uppercase;
  color: var(--au-muted);
  margin: 0;
  transition: color .4s ease, padding-left .4s ease;
}

.au-work .au-work-meta {
  font-family: var(--font-sans, system-ui, sans-serif);
  font-size: .95rem;
  font-weight: 600;
  color: var(--au-accent);
  text-transform: none;
  letter-spacing: 0;
  opacity: 0;
  transition: opacity .4s ease;
  flex-shrink: 0;
}

@media (hover: hover) and (pointer: fine) {
  .au-work:hover h3 { color: var(--au-ink); padding-left: 2rem; }
  .au-work:hover .au-work-meta { opacity: 1; }
}

/* en táctil no hay hover: la información se enseña siempre */
@media (hover: none), (pointer: coarse) {
  .au-work h3 { color: var(--au-ink); }
  .au-work .au-work-meta { opacity: 1; }
}

/* el rótulo flotante que persigue al ratón */
.au-follow {
  position: fixed;
  top: 0;
  left: 0;
  width: 300px;
  height: 200px;
  z-index: 40;
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%, -50%) scale(.85);
  transition: opacity .4s ease, transform .4s ease;
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1.6rem;
  border: 1px solid rgba(255, 255, 255, .18);
  box-shadow: 0 40px 80px -20px rgba(0, 0, 0, .7);
  background: linear-gradient(135deg, #1e3a8a, #2563eb 55%, #7c3aed);
}

.au-follow.is-on { opacity: 1; transform: translate(-50%, -50%) scale(1); }

.au-follow .au-follow-price {
  font-family: var(--font-display, "Archivo", system-ui, sans-serif);
  font-size: 3.2rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.05em;
  color: #fff;
  font-variant-numeric: tabular-nums;
}

.au-follow .au-follow-note {
  color: rgba(255, 255, 255, .82);
  font-size: .9rem;
  margin-top: .45rem;
  line-height: 1.35;
}

@media (hover: none), (pointer: coarse) { .au-follow { display: none; } }

/* ───────────────────────────────────────────────────────────────────────────
   10. CIERRE  (.footer / .huge-text / .btn-large de Aura)
   ─────────────────────────────────────────────────────────────────────────── */

.au-close {
  min-height: 78vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 5rem 1.5rem;
}

.au-huge {
  font-family: var(--font-display, "Archivo", system-ui, sans-serif);
  font-size: clamp(3rem, 11vw, 9.5rem);
  font-weight: 900;
  line-height: .92;
  letter-spacing: -.055em;
  text-transform: uppercase;
  margin-bottom: 2rem;
  background: linear-gradient(135deg, #60a5fa, #a78bfa);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.au-btn-large {
  display: inline-block;
  padding: 1.35rem 3.5rem;
  border: 1px solid rgba(255, 255, 255, .45);
  border-radius: 9999px;
  font-size: 1.05rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--au-ink);
  text-decoration: none;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: color .3s ease, border-color .3s ease;
}

.au-btn-large::before {
  content: "";
  position: absolute;
  inset: 0;
  top: 100%;
  background: linear-gradient(135deg, #60a5fa, #a78bfa);
  transition: top .3s ease;
  z-index: -1;
}

@media (hover: hover) and (pointer: fine) {
  .au-btn-large:hover { color: #0f172a; border-color: transparent; }
  .au-btn-large:hover::before { top: 0; }
}

.au-btn-large:active { transform: scale(.975); }

/* ───────────────────────────────────────────────────────────────────────────
   11. CURSOR PROPIO  (.cursor / .cursor-dot de Aura)
   Solo en ratón fino. En táctil no existe y el cursor del sistema se respeta.
   ─────────────────────────────────────────────────────────────────────────── */

@media (hover: hover) and (pointer: fine) {
  body.aura.au-cursor-on,
  body.aura.au-cursor-on * { cursor: none; }

  .au-cursor {
    position: fixed;
    top: 0; left: 0;
    width: 22px; height: 22px;
    border: 2px solid rgba(255, 255, 255, .85);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
    z-index: 9998;
    transition: width .3s, height .3s, background-color .3s, border-color .3s;
  }

  .au-cursor.is-hover {
    width: 62px; height: 62px;
    background: rgba(96, 165, 250, .22);
    border-color: rgba(167, 139, 250, .9);
  }

  .au-dot {
    position: fixed;
    top: 0; left: 0;
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--au-accent);
    transform: translate(-50%, -50%);
    pointer-events: none;
    z-index: 9999;
    transition: opacity .3s;
  }
}

@media (hover: none), (pointer: coarse) {
  .au-cursor, .au-dot { display: none; }
}

/* ───────────────────────────────────────────────────────────────────────────
   12. ENTRADA  (.loader de Aura)
   Aura se para 1,5 s a propósito. Aquí se vende algo: se acorta a 1 s y se
   enseña UNA vez por sesión, para que navegar entre las cuatro páginas no
   cueste un telón cada vez.
   ─────────────────────────────────────────────────────────────────────────── */

.au-loader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #0f172a 0%, #1e1b4b 60%, #0f172a 100%);
  transition: transform 1s cubic-bezier(.77, 0, .175, 1);
}

.au-loader.is-gone { transform: translateY(-100%); }

.au-loader-text {
  font-family: var(--font-display, "Archivo", system-ui, sans-serif);
  font-size: clamp(1.9rem, 5.5vw, 4.2rem);
  font-weight: 900;
  letter-spacing: -.05em;
  text-transform: uppercase;
  overflow: hidden;
  display: flex;
  background: linear-gradient(135deg, #60a5fa, #a78bfa);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.au-loader-text span {
  display: inline-block;
  transform: translateY(100%);
  animation: auRise .85s cubic-bezier(.77, 0, .175, 1) forwards;
}

@keyframes auRise { to { transform: translateY(0); } }

/* ───────────────────────────────────────────────────────────────────────────
   13. RESPETO A LAS PREFERENCIAS DEL SISTEMA
   ─────────────────────────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .au-marquee { animation: none; }
  .au-line > span { transform: none !important; opacity: 1 !important; transition: none !important; }
  .au-loader { display: none; }
  .au-follow { display: none; }
  .au-cursor, .au-dot { display: none; }
  body.aura.au-cursor-on, body.aura.au-cursor-on * { cursor: auto; }
  .au-work:hover h3 { padding-left: 0; }
  body.aura .card-pro:hover, body.aura .svc-card:hover { transform: none; }
  .au-btn-large::before { transition: none; }
}

/* ───────────────────────────────────────────────────────────────────────────
   14. MÓVIL
   ─────────────────────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  body.aura .au-hero { min-height: auto; }
  .au-marquee-wrap { padding: 2.2rem 0; margin: 3rem 0; }
  .au-work { padding: 1.6rem 0; }
  .au-close { min-height: auto; padding: 4rem 1.5rem; }
  .au-btn-large { padding: 1.1rem 2.4rem; font-size: .95rem; }
}

/* ───────────────────────────────────────────────────────────────────────────
   15. SUPERFICIES DE COLOR SOBRE EL LIENZO OSCURO
   El sitio usa recuadros de aviso teñidos (verde para lo que sí se comprueba,
   rojo para lo que no, ámbar para las advertencias). Sobre negro esos pasteles
   se convierten en manchas que ciegan. Se conserva el TONO, que es el que
   comunica, y se cambia el peso: translúcidos, con su borde del mismo color.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura .bg-green-50,
body.aura .bg-emerald-50   { background-color: rgba( 74, 222, 128, .07) !important; }
body.aura .bg-green-100,
body.aura .bg-emerald-100  { background-color: rgba( 74, 222, 128, .13) !important; }

body.aura .bg-red-50,
body.aura .bg-rose-50      { background-color: rgba(248, 113, 113, .07) !important; }
body.aura .bg-red-100,
body.aura .bg-rose-100     { background-color: rgba(248, 113, 113, .13) !important; }

body.aura .bg-blue-50,
body.aura .bg-sky-50       { background-color: rgba( 96, 165, 250, .07) !important; }
body.aura .bg-blue-100,
body.aura .bg-sky-100      { background-color: rgba( 96, 165, 250, .13) !important; }

body.aura .bg-purple-50,
body.aura .bg-violet-50,
body.aura .bg-indigo-50    { background-color: rgba(167, 139, 250, .07) !important; }
body.aura .bg-purple-100,
body.aura .bg-violet-100,
body.aura .bg-indigo-100   { background-color: rgba(167, 139, 250, .13) !important; }

body.aura .bg-amber-50,
body.aura .bg-yellow-50    { background-color: rgba(251, 191,  36, .07) !important; }
body.aura .bg-amber-100,
body.aura .bg-yellow-100   { background-color: rgba(251, 191,  36, .13) !important; }

body.aura .bg-orange-50    { background-color: rgba(251, 146,  60, .07) !important; }
body.aura .bg-orange-100   { background-color: rgba(251, 146,  60, .13) !important; }

body.aura .bg-gray-200,
body.aura .bg-slate-200    { background-color: rgba(255, 255, 255, .10) !important; }

/* los mismos tonos, en el texto */
body.aura .text-green-800,
body.aura .text-green-900,
body.aura .text-emerald-800 { color: #86efac !important; }

body.aura .text-red-600,
body.aura .text-red-700,
body.aura .text-red-800,
body.aura .text-red-900     { color: #fca5a5 !important; }

body.aura .text-amber-600,
body.aura .text-amber-700,
body.aura .text-amber-800,
body.aura .text-amber-900,
body.aura .text-yellow-600,
body.aura .text-yellow-700,
body.aura .text-yellow-800,
body.aura .text-yellow-900   { color: #fcd34d !important; }

body.aura .text-orange-600,
body.aura .text-orange-700   { color: #fdba74 !important; }

body.aura .text-purple-600,
body.aura .text-purple-700,
body.aura .text-violet-600    { color: #c4b5fd !important; }

body.aura .text-blue-900      { color: #93c5fd !important; }

/* bordes teñidos */
body.aura .border-green-200,
body.aura .border-green-300  { border-color: rgba( 74, 222, 128, .28) !important; }
body.aura .border-red-100,
body.aura .border-red-200    { border-color: rgba(248, 113, 113, .28) !important; }
body.aura .border-blue-100,
body.aura .border-blue-200   { border-color: rgba( 96, 165, 250, .28) !important; }
body.aura .border-amber-200,
body.aura .border-yellow-200 { border-color: rgba(251, 191,  36, .28) !important; }
body.aura .border-gray-300   { border-color: rgba(255, 255, 255, .18) !important; }

/* ───────────────────────────────────────────────────────────────────────────
   16. AJUSTES DE LA PORTADA
   El titular de Aura ocupa 8vw porque detrás no hay nada que vender. Aquí sí:
   se queda muy por encima del tamaño anterior, pero cabiendo con los botones
   y la fila de precios dentro de la primera pantalla.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura .au-hero h1 {
  font-size: clamp(2.3rem, 4.5vw, 3.9rem);
  line-height: 1.0;
}

@media (min-width: 1024px) {
  body.aura .au-hero { min-height: 88vh; }
}

/* ───────────────────────────────────────────────────────────────────────────
   17. LOS RECUADROS DE AVISO CON DEGRADADO EN EL ATRIBUTO style
   Tres tarjetas llevan el degradado escrito a mano en el HTML, así que ganan
   a cualquier clase. Se las alcanza por el propio valor y se les da el mismo
   tratamiento translúcido, conservando el tono que comunica.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura [style*="#f0fdf4"] {       /* lo que sí se comprueba, verde */
  background: rgba( 74, 222, 128, .085) !important;
  border-color: rgba( 74, 222, 128, .28) !important;
}
body.aura [style*="#fffbeb"] {       /* la advertencia, ámbar */
  background: rgba(251, 191,  36, .085) !important;
  border-color: rgba(251, 191,  36, .28) !important;
}
body.aura [style*="#eff6ff"]:not(.pkg) {   /* la nota, azul */
  background: rgba( 96, 165, 250, .085) !important;
  border-color: rgba( 96, 165, 250, .28) !important;
}

/* piezas del carrito y de los planes definidas en el <style> de cada página */
body.aura .modal-box { background: #131a2c !important; color: var(--au-ink); }
body.aura .plan      { background: rgba(255,255,255,.038) !important;
                       border-color: rgba(255,255,255,.10) !important; }
body.aura .btn-line  { background: rgba(255,255,255,.05) !important;
                       border-color: rgba(255,255,255,.22) !important;
                       color: var(--au-ink) !important; }
body.aura .pkg       { border-color: rgba(255,255,255,.14) !important; }
body.aura .pkg.sel   { border-color: var(--au-accent) !important;
                       background: rgba(96,165,250,.12) !important; }
body.aura .progress  { background: rgba(255,255,255,.12) !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   18. LO QUE NO SE OSCURECE: LAS MAQUETAS DEL ENTREGABLE
   `.epanel` y `.cover-mock` no son interfaz: son la foto del informe en PDF
   que el cliente compra. Son papel, y el papel es blanco. En Aura las piezas
   de obra también son objetos claros sobre el lienzo oscuro, así que esto no
   rompe el lenguaje: lo completa. Aquí se deshacen todos los remapeos.
   ═══════════════════════════════════════════════════════════════════════════ */

body.aura .epanel,
body.aura .cover-mock { color: #111827; }

body.aura .epanel .bg-white,
body.aura .cover-mock .bg-white     { background-color: #fff     !important; }
body.aura .epanel .bg-gray-50,
body.aura .cover-mock .bg-gray-50   { background-color: #f9fafb  !important; }
body.aura .epanel .bg-gray-100      { background-color: #f3f4f6  !important; }
body.aura .epanel .bg-slate-50      { background-color: #f8fafc  !important; }
body.aura .epanel .bg-slate-100     { background-color: #f1f5f9  !important; }
body.aura .epanel .bg-gray-200      { background-color: #e5e7eb  !important; }
body.aura .epanel .bg-slate-200     { background-color: #e2e8f0  !important; }
body.aura .epanel .bg-green-50      { background-color: #f0fdf4  !important; }
body.aura .epanel .bg-green-100     { background-color: #dcfce7  !important; }
body.aura .epanel .bg-red-50        { background-color: #fef2f2  !important; }
body.aura .epanel .bg-red-100       { background-color: #fee2e2  !important; }
body.aura .epanel .bg-blue-50       { background-color: #eff6ff  !important; }
body.aura .epanel .bg-blue-100      { background-color: #dbeafe  !important; }
body.aura .epanel .bg-amber-50      { background-color: #fffbeb  !important; }
body.aura .epanel .bg-amber-100     { background-color: #fef3c7  !important; }
body.aura .epanel .bg-yellow-50     { background-color: #fefce8  !important; }
body.aura .epanel .bg-yellow-100    { background-color: #fef9c3  !important; }
body.aura .epanel .bg-orange-50     { background-color: #fff7ed  !important; }
body.aura .epanel .bg-orange-100    { background-color: #ffedd5  !important; }
body.aura .epanel .bg-purple-50     { background-color: #faf5ff  !important; }
body.aura .epanel .bg-purple-100    { background-color: #f3e8ff  !important; }

body.aura .epanel .text-gray-900,
body.aura .cover-mock .text-gray-900 { color: #111827 !important; }
body.aura .epanel .text-gray-800     { color: #1f2937 !important; }
body.aura .epanel .text-gray-700     { color: #374151 !important; }
body.aura .epanel .text-gray-600     { color: #4b5563 !important; }
body.aura .epanel .text-gray-500     { color: #6b7280 !important; }
body.aura .epanel .text-gray-400     { color: #9ca3af !important; }
body.aura .epanel .text-gray-300     { color: #d1d5db !important; }
body.aura .epanel .text-blue-600     { color: #2563eb !important; }
body.aura .epanel .text-blue-700     { color: #1d4ed8 !important; }
body.aura .epanel .text-blue-800     { color: #1e40af !important; }
body.aura .epanel .text-blue-900     { color: #1e3a8a !important; }
body.aura .epanel .text-green-600    { color: #16a34a !important; }
body.aura .epanel .text-green-700    { color: #15803d !important; }
body.aura .epanel .text-green-800    { color: #166534 !important; }
body.aura .epanel .text-green-900    { color: #14532d !important; }
body.aura .epanel .text-red-600      { color: #dc2626 !important; }
body.aura .epanel .text-red-700      { color: #b91c1c !important; }
body.aura .epanel .text-red-800      { color: #991b1b !important; }
body.aura .epanel .text-red-900      { color: #7f1d1d !important; }
body.aura .epanel .text-amber-600    { color: #d97706 !important; }
body.aura .epanel .text-amber-700    { color: #b45309 !important; }
body.aura .epanel .text-amber-800    { color: #92400e !important; }
body.aura .epanel .text-amber-900    { color: #78350f !important; }
body.aura .epanel .text-yellow-600   { color: #ca8a04 !important; }
body.aura .epanel .text-yellow-700   { color: #a16207 !important; }
body.aura .epanel .text-yellow-800   { color: #854d0e !important; }
body.aura .epanel .text-yellow-900   { color: #713f12 !important; }
body.aura .epanel .text-orange-600   { color: #ea580c !important; }
body.aura .epanel .text-orange-700   { color: #c2410c !important; }
body.aura .epanel .text-purple-600   { color: #9333ea !important; }
body.aura .epanel .text-purple-700   { color: #7e22ce !important; }
body.aura .epanel .text-indigo-600   { color: #4f46e5 !important; }
body.aura .epanel .text-emerald-600  { color: #059669 !important; }
body.aura .epanel .text-slate-600    { color: #475569 !important; }
body.aura .epanel .text-slate-700    { color: #334155 !important; }
body.aura .epanel .text-slate-800    { color: #1e293b !important; }
body.aura .epanel .text-slate-900    { color: #0f172a !important; }

body.aura .epanel .border-gray-100   { border-color: #f3f4f6 !important; }
body.aura .epanel .border-gray-200   { border-color: #e5e7eb !important; }
body.aura .epanel .border-gray-300   { border-color: #d1d5db !important; }
body.aura .epanel .border-slate-100  { border-color: #f1f5f9 !important; }
body.aura .epanel .border-slate-200  { border-color: #e2e8f0 !important; }
body.aura .epanel .border-green-200  { border-color: #bbf7d0 !important; }
body.aura .epanel .border-green-300  { border-color: #86efac !important; }
body.aura .epanel .border-red-100    { border-color: #fee2e2 !important; }
body.aura .epanel .border-red-200    { border-color: #fecaca !important; }
body.aura .epanel .border-blue-100   { border-color: #dbeafe !important; }
body.aura .epanel .border-blue-200   { border-color: #bfdbfe !important; }

body.aura .epanel strong,
body.aura .cover-mock strong         { color: inherit; }

/* las maquetas conservan su relieve de objeto sobre el lienzo */
body.aura .epanel,
body.aura .cover-mock {
  box-shadow: 0 44px 88px -24px rgba(0, 0, 0, .65);
}

/* ═══════════════════════════════════════════════════════════════════════════
   19. LOS DOS ARTÍCULOS DEL BLOG
   Su cuerpo de texto se define en el <style> de cada página con colores fijos
   (#374151 para el párrafo, #111827 para el h2). Sobre el lienzo oscuro eso
   es texto negro sobre azul marino: ilegible. Se remapea entero, y de paso el
   texto gana el aire que pide una lectura larga.
   ═══════════════════════════════════════════════════════════════════════════ */

body.aura .prose               { color: #c3d0ea; line-height: 1.85; }
body.aura .prose h2            { color: var(--au-ink); letter-spacing: -.03em; }
body.aura .prose h3            { color: var(--au-ink); }
body.aura .prose strong        { color: #fff; }
body.aura .prose a             { color: var(--au-accent); }
body.aura .prose li            { color: #c3d0ea; }

body.aura .prose blockquote {
  background: rgba(96, 165, 250, .085);
  border-left-color: var(--au-accent);
  color: #cfe0ff;
}

body.aura .callout {
  background: rgba( 74, 222, 128, .085);
  border-color: rgba( 74, 222, 128, .34);
  color: #d6e6da;
}
body.aura .callout-warn {
  background: rgba(251, 191,  36, .085);
  border-color: rgba(251, 191,  36, .34);
  color: #ece0c6;
}
body.aura .callout-blue {
  background: rgba( 96, 165, 250, .085);
  border-color: rgba( 96, 165, 250, .34);
  color: #cfe0ff;
}
body.aura .callout strong,
body.aura .callout-warn strong,
body.aura .callout-blue strong { color: #fff; }

body.aura .toc-link            { color: var(--au-accent); }

body.aura .score-high { background: rgba( 74, 222, 128, .18) !important; color: #86efac !important; }
body.aura .score-mid  { background: rgba(251, 191,  36, .18) !important; color: #fcd34d !important; }
body.aura .score-low  { background: rgba(248, 113, 113, .18) !important; color: #fca5a5 !important; }

/* ───────────────────────────────────────────────────────────────────────────
   20. EL RECUADRO DE LA MUESTRA GRATUITA
   Usa un degradado de utilidades (from-green-50 → to-emerald-50), que no es
   un background-color y se escapaba de las reglas de arriba. Mismo criterio:
   se conserva el verde, que es el que dice "esto no cuesta nada".
   ─────────────────────────────────────────────────────────────────────────── */

body.aura .from-green-50 {
  background-image: linear-gradient(to right,
                      rgba( 74, 222, 128, .12),
                      rgba( 52, 211, 153, .07)) !important;
}

/* ───────────────────────────────────────────────────────────────────────────
   21. QUE NADA SE SALGA POR EL LADO
   La marquesina va girada y escalada a propósito, así que sus esquinas
   sobresalen: es el efecto. Lo que no puede pasar es que eso genere barra de
   scroll horizontal. `clip` recorta sin crear un contenedor de scroll, que es
   lo que rompería la barra pegajosa de arriba.
   Y en el móvil la fila de servicio se apila, porque su etiqueta de precio no
   cabe al lado del rótulo.
   ─────────────────────────────────────────────────────────────────────────── */

html:has(body.aura) { overflow-x: clip; }
body.aura           { overflow-x: clip; }

@media (max-width: 768px) {
  .au-marquee-wrap { transform: rotate(-2deg) scale(1.02); }

  .au-work {
    flex-direction: column;
    align-items: flex-start;
    gap: .45rem;
  }
  .au-work .au-work-meta { flex-shrink: 1; font-size: .85rem; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   22. EL INTERRUPTOR
   Quitar la clase `aura` del <body> devuelve la página anterior: se apaga
   todo el remapeo (que cuelga de `body.aura`) y además se esconden las piezas
   que esta capa añadió, que sin su CSS se verían sueltas. El titular se
   destapa, porque su máscara solo tiene sentido con el revelado.
   Es una vuelta atrás de una línea por archivo. La vuelta atrás completa es
   la carpeta _respaldo-aura-2026-09-20 (ver RESTAURAR-AURA.md).
   ═══════════════════════════════════════════════════════════════════════════ */

body:not(.aura) .au-marquee-wrap,
body:not(.aura) .au-worklist,
body:not(.aura) .au-close,
body:not(.aura) .au-loader,
body:not(.aura) .au-cursor,
body:not(.aura) .au-dot,
body:not(.aura) .au-glow,
body:not(.aura) .au-noise   { display: none !important; }

body:not(.aura) .au-line          { overflow: visible; }
body:not(.aura) .au-line > span   { opacity: 1; transform: none; transition: none; }

/* ───────────────────────────────────────────────────────────────────────────
   23. EL DEGRADADO DEL TITULAR, CUANDO PARTE LÍNEA
   `-webkit-background-clip: text` reparte un solo degradado entre todas las
   líneas, así que la última palabra de un titular de tres líneas se queda en
   la cola del degradado y parece cortada. Con `box-decoration-break: clone`
   cada línea recibe el degradado entero.
   ─────────────────────────────────────────────────────────────────────────── */

body.aura .grad-text {
  -webkit-box-decoration-break: clone;
          box-decoration-break: clone;
  /* el recorte a texto corta lo que sobresalga de la caja del <span>, y con el
     tracking tan cerrado de los titulares el remate de la ultima letra se
     quedaba fuera. Se ensancha la caja y se compensa con el margen, asi que el
     recorte respira sin que nada se mueva de sitio. */
  padding-right: .08em;
  margin-right: -.08em;
}
