/*
Theme Name: Evan Digital Media
Theme URI: https://evandigitalmedia.com
Author: Evan Digital Media
Description: Tema personalizado para EDM — Agencia 360° de Marketing y Publicidad Digital. Panel de control visual con fondo dinámico en los colores de marca y paneles de servicio con efecto de relieve al pasar el mouse.
Version: 1.0
Text Domain: evandigitalmedia
*/

/* ===========================================================
   TOKENS
=========================================================== */
:root{
  --ink:        #0B0B10;   /* negro del logo */
  --ink-soft:   #16161f;
  --signal:     #2740EA;   /* azul del logo */
  --signal-deep:#101a6e;
  --signal-glow: rgba(39,64,234,.35);
  --paper:      #F6F6F3;   /* fondo claro tipo logo */
  --panel:      #FFFFFF;
  --mist:       #E8EAF3;
  --ash:        #6A6D78;
  --ash-soft:   #9497A2;
  --line:       #DEE0E9;

  --display: "Space Grotesk", "Arial Narrow", sans-serif;
  --body: "Inter", -apple-system, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, monospace;

  --radius: 18px;
  --ease: cubic-bezier(.16,.84,.32,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  font-family:var(--body);
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; margin:0; padding:0; }
h1,h2,h3,h4{ font-family:var(--display); margin:0; line-height:1.05; letter-spacing:-.01em; }
p{ margin:0; }
button{ font-family:inherit; cursor:pointer; }

.container{ max-width:1220px; margin:0 auto; padding:0 32px; }
.eyebrow{
  font-family:var(--mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--signal); display:flex; align-items:center; gap:10px; font-weight:600;
}
.eyebrow::before{ content:""; width:22px; height:2px; background:var(--signal); display:inline-block; }

/* reduced motion */
@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

/* ===========================================================
   FONDO PUNTILLISTA — trama densa de puntitos azules en toda la web,
   con relieve iluminado 3D que se "levanta" siguiendo el ratón.
   Signature element #1
=========================================================== */
.edm-field{
  position:fixed; inset:0; z-index:-1; overflow:hidden; pointer-events:none;
  background:var(--paper);
  /* posición del ratón (la actualiza el JS) */
  --mx:50%; --my:50%;
}

/* Capa base: trama de puntitos azules muy sutiles, como un detalle de fondo.
   Puntos cada 22px → con más aire entre ellos. */
.edm-field .edm-dots{
  position:absolute; inset:0;
  background-color:var(--paper);
  background-image:
    radial-gradient(circle, rgba(39,64,234,.10) 1.4px, transparent 1.8px),
    radial-gradient(circle, rgba(16,26,110,.07) 1.1px, transparent 1.5px),
    radial-gradient(circle, rgba(90,120,255,.08) 1px, transparent 1.3px);
  background-size:22px 22px, 22px 22px, 34px 34px;
  background-position:0 0, 11px 11px, 6px 17px;
  transition:background-color .8s var(--ease), background-image .8s var(--ease);
}

/* Relieve iluminado 3D bajo el cursor: los puntos se agrandan e iluminan.
   - capa 1: cuerpo del punto (azul intenso, agrandado)
   - capa 2: sombra inferior-derecha (da profundidad, "levanta" el punto)
   - capa 3: highlight superior-izquierdo (brillo, el punto refleja luz) */
.edm-field .edm-lift{
  position:absolute; inset:0;
  background-image:
    radial-gradient(circle, rgba(39,64,234,.6) 2.2px, transparent 2.8px),
    radial-gradient(circle, rgba(11,15,60,.32) 2.4px, transparent 3px),
    radial-gradient(circle, rgba(200,215,255,.6) 1px, transparent 1.5px);
  background-size:22px 22px, 22px 22px, 22px 22px;
  /* highlight y sombra ligeramente desplazados respecto al cuerpo → efecto 3D */
  background-position:0 0, .9px .9px, -.7px -.7px;
  /* la máscara hace que SOLO se vean los puntos intensos cerca del ratón */
  -webkit-mask-image:radial-gradient(200px circle at var(--mx) var(--my), #000 0%, rgba(0,0,0,.5) 40%, transparent 72%);
          mask-image:radial-gradient(200px circle at var(--mx) var(--my), #000 0%, rgba(0,0,0,.5) 40%, transparent 72%);
  /* sombra proyectada global → sensación de que la zona entera se levanta */
  filter:drop-shadow(0 2px 3px rgba(16,26,110,.28));
  opacity:0;
  transform:scale(1);
  transition:opacity .35s var(--ease);
  will-change:opacity;
}
.edm-field.is-active .edm-lift{ opacity:.7; }

/* Halo de luz azul bajo el cursor: refuerza la iluminación y el volumen */
.edm-field .edm-halo{
  position:absolute; inset:0;
  background:
    radial-gradient(120px circle at var(--mx) var(--my), rgba(90,120,255,.10), transparent 60%),
    radial-gradient(280px circle at var(--mx) var(--my), rgba(39,64,234,.06), transparent 70%);
  opacity:0; transition:opacity .35s var(--ease);
  mix-blend-mode:multiply;
}
.edm-field.is-active .edm-halo{ opacity:1; }

/* Cuando el ratón pasa por una tarjeta de cliente, el fondo de TODA la web
   se anima: los puntos se desplazan en diagonal (sup-izq → inf-der) y
   van cambiando entre tonalidades de azul. */
.edm-field.is-tinted{ transition:background .6s var(--ease); }
.edm-field.is-tinted .edm-dots{
  background-color:#EEF1FF;
  animation:dots-move 30s linear infinite, dots-hue 12s ease-in-out infinite;
}

/* desplazamiento diagonal de la trama de puntos */
@keyframes dots-move{
  0%{ background-position:0 0, 11px 11px, 6px 17px; }
  100%{ background-position:88px 88px, 99px 99px, 94px 105px; }
}

/* ciclo de tonalidades de azul en los puntos */
@keyframes dots-hue{
  0%,100%{
    background-image:
      radial-gradient(circle, rgba(39,64,234,.28) 1.5px, transparent 1.9px),
      radial-gradient(circle, rgba(16,26,110,.18) 1.2px, transparent 1.6px),
      radial-gradient(circle, rgba(90,120,255,.20) 1px, transparent 1.4px);
  }
  50%{
    background-image:
      radial-gradient(circle, rgba(120,190,255,.30) 1.5px, transparent 1.9px),
      radial-gradient(circle, rgba(150,110,255,.20) 1.2px, transparent 1.6px),
      radial-gradient(circle, rgba(39,64,234,.22) 1px, transparent 1.4px);
  }
}

/* ===========================================================
   PROYECTO ABIERTO — el fondo de toda la web pasa a negro con
   puntos blancos moviéndose lento. Transición suave de entrada/salida.
=========================================================== */
.edm-field{ transition:background-color .8s var(--ease); }
body.project-open{ background:#050507; }
body.project-open .edm-field{ background:#050507; }
body.project-open .edm-dots{
  background-color:#050507;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.55) 1.4px, transparent 1.8px),
    radial-gradient(circle, rgba(255,255,255,.30) 1.1px, transparent 1.5px),
    radial-gradient(circle, rgba(255,255,255,.18) 1px, transparent 1.3px);
  animation:dots-move 24s linear infinite;
}
/* apaga el relieve azul y el halo mientras el proyecto está abierto */
body.project-open .edm-lift,
body.project-open .edm-halo{ opacity:0 !important; }

/* bloquea el scroll de la página mientras hay un proyecto abierto */
body.project-open{ overflow:hidden; }

/* ===========================================================
   RELIEVE — paneles que se "levantan" al pasar el mouse
   Signature element #2 (control panel / switchboard)
=========================================================== */
.relief{
  position:relative;
  background:var(--panel);
  border-radius:var(--radius);
  border:1px solid var(--line);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.9),
    0 1px 2px rgba(11,11,16,.04),
    0 10px 20px rgba(11,11,16,.05);
  transform:translateY(0) scale(1);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s var(--ease);
}
.relief::after{
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:linear-gradient(150deg, var(--signal-glow), transparent 45%);
  opacity:0; transition:opacity .45s var(--ease);
}
.relief:hover, .relief:focus-within{
  transform:translateY(-10px) scale(1.015);
  border-color:transparent;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.95),
    0 2px 4px rgba(11,11,16,.06),
    0 30px 50px -12px rgba(20,25,90,.28),
    0 0 0 1px var(--signal-glow);
}
.relief:hover::after{ opacity:1; }

/* ===========================================================
   HEADER (oscuro: negro con letras blancas)
=========================================================== */
.site-header{
  position:sticky; top:0; z-index:50;
  background:rgba(11,11,16,.9); backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(255,255,255,.1);
}
.site-header .container{
  display:flex; align-items:center; justify-content:space-between;
  height:130px;
}
.site-logo img{ height:104px; width:auto; }
.main-nav ul{ display:flex; gap:30px; align-items:center; }
.main-nav a{
  font-family:var(--mono); font-size:12px; letter-spacing:.08em; text-transform:uppercase;
  color:#fff; position:relative; padding:6px 12px; font-weight:500; border-radius:8px;
  transition:color .25s var(--ease), background .25s var(--ease);
}
.main-nav a::after{
  content:""; position:absolute; left:12px; bottom:2px; width:0; height:2px; background:var(--signal);
  transition:width .3s var(--ease);
}
.main-nav a:hover{ background:rgba(255,255,255,.1); color:#fff; }
.main-nav a:hover::after{ width:calc(100% - 24px); }
.btn{
  font-family:var(--mono); font-size:12px; letter-spacing:.08em; text-transform:uppercase; font-weight:700;
  padding:13px 22px; border-radius:999px; display:inline-flex; align-items:center; gap:8px;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), background .35s var(--ease);
}
.btn-primary{
  background:var(--ink); color:#fff;
  box-shadow:0 10px 24px rgba(11,11,16,.18);
}
.btn-primary:hover{ transform:translateY(-4px); background:var(--signal); box-shadow:0 18px 30px var(--signal-glow); }
.btn-ghost{ border:1px solid var(--line); color:var(--ink); }
.btn-ghost:hover{ transform:translateY(-4px); border-color:var(--signal); color:var(--signal); }
.menu-toggle{ display:none; background:none; border:0; }

/* botón del header sobre fondo negro */
.site-header .btn-primary{ background:var(--signal); color:#fff; box-shadow:0 10px 24px var(--signal-glow); }
.site-header .btn-primary:hover{ background:#fff; color:var(--ink); }
.site-header .menu-toggle{ color:#fff; font-size:26px; }

/* --- Al abrir una tarjeta de cliente, el header se invierte a BLANCO --- */
body.project-open .site-header{
  background:rgba(255,255,255,.92);
  border-bottom-color:var(--line);
  transition:background .6s var(--ease), border-color .6s var(--ease);
}
body.project-open .site-header .main-nav a{ color:var(--ink); }
body.project-open .site-header .main-nav a:hover{ background:var(--mist); color:var(--ink); }
body.project-open .site-header .btn-primary{ background:var(--ink); color:#fff; }
body.project-open .site-header .btn-primary:hover{ background:var(--signal); color:#fff; }
body.project-open .site-header .menu-toggle{ color:var(--ink); }
body.project-open .site-logo img{ filter:invert(1); }
.site-header, .site-logo img{ transition:background .6s var(--ease), border-color .6s var(--ease), filter .6s var(--ease); }

/* ===========================================================
   HERO
=========================================================== */
.hero{ padding:120px 0 90px; position:relative; }
.hero-grid{ display:grid; grid-template-columns:1.15fr .85fr; gap:60px; align-items:end; }
.hero h1{
  font-size:clamp(42px,6vw,84px);
  font-weight:700;
  margin-top:20px;
}
.hero h1 em{ font-style:normal; color:var(--signal); }
.hero p.lede{
  font-size:18px; color:var(--ash); max-width:46ch; margin-top:22px; line-height:1.6;
}
.hero-cta{ display:flex; gap:14px; margin-top:36px; flex-wrap:wrap; }
.hero-panel{
  padding:30px; display:flex; flex-direction:column; gap:18px;
}
.hero-panel .stat{ display:flex; justify-content:space-between; align-items:baseline; padding:14px 0; border-top:1px solid var(--line); }
.hero-panel .stat:first-child{ border-top:0; }
.hero-panel .stat b{ font-family:var(--display); font-size:26px; }
.hero-panel .stat span{ font-family:var(--mono); font-size:11px; color:var(--ash); text-transform:uppercase; letter-spacing:.06em; }

/* ===========================================================
   SERVICES — panel de control (7 switches)
=========================================================== */
.services{ padding:90px 0; }
.section-head{ max-width:640px; margin-bottom:50px; }
.section-head h2{ font-size:clamp(30px,4vw,46px); margin-top:16px; }
.section-head p{ color:var(--ash); margin-top:16px; font-size:16px; line-height:1.6; }

.panel-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:18px;
}
.service-panel{ padding:30px 26px; display:flex; flex-direction:column; gap:16px; min-height:210px; }
.service-panel .icon{
  width:46px; height:46px; border-radius:12px; display:flex; align-items:center; justify-content:center;
  background:var(--mist); color:var(--signal);
  transition:background .4s var(--ease), color .4s var(--ease), transform .4s var(--ease);
}
.service-panel .icon svg{ width:24px; height:24px; }
.relief:hover .icon{ background:var(--signal); color:#fff; transform:rotate(-6deg) scale(1.08); }
.service-panel h3{ font-size:18px; letter-spacing:.01em; }
.service-panel p{ font-size:14px; color:var(--ash); line-height:1.55; }
.service-panel .tag{
  margin-top:auto; font-family:var(--mono); font-size:10px; letter-spacing:.1em; color:var(--ash-soft); text-transform:uppercase;
}
.service-panel.wide{ grid-column:span 2; }

/* ===========================================================
   PROCESO
=========================================================== */
.process{ padding:90px 0; background:var(--ink); color:#fff; border-radius:40px; margin:0 24px; position:relative; overflow:hidden; }
.process > .container{ position:relative; z-index:1; }
.process .container{ padding-top:10px; padding-bottom:10px; }
.process .eyebrow{ color:#8fa0ff; }
.process .eyebrow::before{ background:#8fa0ff; }
.process h2{ color:#fff; font-size:clamp(30px,4vw,46px); margin-top:16px; max-width:600px; }
.process-list{ margin-top:50px; display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:rgba(255,255,255,.12); border-radius:20px; overflow:hidden; }
.process-step{ background:var(--ink-soft); padding:30px 24px; }
.process-step .n{ font-family:var(--mono); color:var(--signal); font-size:13px; }
.process-step h4{ color:#fff; font-size:18px; margin-top:14px; }
.process-step p{ color:#a9adbb; font-size:14px; margin-top:10px; line-height:1.55; }

/* ===========================================================
   PARTÍCULAS DE POLVO (canvas) para secciones oscuras (Proceso + CTA)
   Puntos de azul que flotan y se dispersan al pasar el mouse.
=========================================================== */
.dust-canvas{
  position:absolute; inset:0; z-index:0; width:100%; height:100%;
  pointer-events:none; display:block;
}

/* ===========================================================
   POR QUÉ EDM
=========================================================== */
.why{ padding:100px 0; }
.why-grid{ display:grid; grid-template-columns:.9fr 1.1fr; gap:60px; align-items:center; }
.why-list{ display:flex; flex-direction:column; gap:0; margin-top:30px; }
.why-item{ display:flex; gap:18px; padding:22px 0; border-top:1px solid var(--line); }
.why-item:first-child{ border-top:0; }
.why-item .num{ font-family:var(--mono); color:var(--signal); font-size:13px; padding-top:4px; }
.why-item h4{ font-size:17px; }
.why-item p{ color:var(--ash); font-size:14px; margin-top:8px; line-height:1.55; }
.why-visual{ padding:10px; }
.why-visual img{ border-radius:calc(var(--radius) - 6px); }

/* ===========================================================
   NUESTROS CLIENTES
=========================================================== */
.clients{ padding:40px 0 90px; }
.clients .container{ max-width:1500px; }
.clients-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:26px;
}
.client-card{
  padding:0; display:flex; flex-direction:column; overflow:hidden;
}
.client-shot{
  width:100%; aspect-ratio:16 / 10; overflow:hidden;
  background:var(--mist); border-bottom:1px solid var(--line);
}
.client-shot img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s var(--ease); }
.relief:hover .client-shot img{ transform:scale(1.04); }
.client-body{ padding:24px 26px 28px; display:flex; flex-direction:column; gap:10px; }
.client-card h3{ font-size:19px; }
.client-card p{ font-size:14px; color:var(--ash); line-height:1.55; }
/* las tarjetas de cliente no llevan el tinte azul del relieve, solo se levantan */
.client-card.relief::after{ display:none; }
.client-card{ cursor:pointer; }

/* botón "Más clientes" debajo de la grilla */
.clients-more{ display:flex; justify-content:center; margin-top:40px; }
.btn-more{
  font-family:var(--mono); font-size:13px; letter-spacing:.1em; text-transform:uppercase; font-weight:700;
  color:#fff; background:var(--ink);
  padding:18px 44px; border-radius:12px;
  box-shadow:0 12px 26px rgba(11,11,16,.18);
  transition:transform .35s var(--ease), background .35s var(--ease), box-shadow .35s var(--ease);
}
.btn-more:hover{
  transform:translateY(-4px);
  background:var(--signal);
  box-shadow:0 20px 36px var(--signal-glow);
}

/* --- Archivo /clientes: grilla de 4 columnas + scroll infinito --- */
.clients-grid--4{ grid-template-columns:repeat(4,1fr); }
.clients-archive{ padding-top:70px; }
.clients-loadmore{
  display:flex; justify-content:center; align-items:center; min-height:60px; margin-top:40px;
}
.clients-spinner{
  width:34px; height:34px; border-radius:50%;
  border:3px solid var(--line); border-top-color:var(--signal);
  opacity:0; transition:opacity .25s var(--ease);
  animation:edm-spin .8s linear infinite;
}
.clients-loadmore.is-loading .clients-spinner{ opacity:1; }
@keyframes edm-spin{ to{ transform:rotate(360deg); } }

/* --- Paginación (blog) --- */
.clients-pagination{
  display:flex; justify-content:center; flex-wrap:wrap; gap:8px; margin-top:46px;
}
.clients-pagination .page-numbers{
  font-family:var(--mono); font-size:13px; font-weight:600;
  min-width:44px; height:44px; padding:0 14px;
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--line); border-radius:10px; background:#fff; color:var(--ink);
  transition:background .25s var(--ease), color .25s var(--ease), transform .25s var(--ease), border-color .25s var(--ease);
}
.clients-pagination .page-numbers:hover{ transform:translateY(-3px); border-color:var(--signal); color:var(--signal); }
.clients-pagination .page-numbers.current{ background:var(--ink); color:#fff; border-color:var(--ink); }
.clients-pagination .dots{ border:0; background:transparent; }

/* --- Tarjetas de blog (reusan el estilo de las de cliente, pero son enlaces) --- */
.blog-card{ cursor:default; }
.blog-card .blog-link{ display:flex; flex-direction:column; height:100%; color:inherit; }
.blog-card h3{ transition:color .25s var(--ease); }
.blog-card:hover h3{ color:var(--signal); }
.blog-noimg{
  width:100%; height:100%; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg, var(--ink), var(--signal-deep));
}
.blog-noimg span{
  font-family:var(--display); color:rgba(255,255,255,.5); font-size:15px; letter-spacing:.05em;
}

/* ===========================================================
   ENTRADA INDIVIDUAL (single)
=========================================================== */
.container--narrow{ max-width:820px; }
.single-post{ padding:70px 0 90px; }
.post-head{ margin-bottom:34px; }
.post-title{ font-size:clamp(30px,4.5vw,54px); margin-top:16px; line-height:1.08; }
.post-meta{ margin-top:18px; display:flex; gap:10px; align-items:center; font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--ash); }
.post-cover{ overflow:hidden; margin-bottom:40px; }
.post-cover img{ width:100%; height:auto; display:block; border-radius:calc(var(--radius) - 4px); }
.post-content{ font-size:17px; line-height:1.8; color:#2b2c33; }
.post-content > * + *{ margin-top:22px; }
.post-content h2{ font-size:28px; margin-top:44px; }
.post-content h3{ font-size:22px; margin-top:36px; }
.post-content a{ color:var(--signal); text-decoration:underline; }
.post-content img{ border-radius:12px; margin:30px 0; }
.post-content blockquote{
  border-left:3px solid var(--signal); padding:6px 0 6px 22px; margin:30px 0;
  color:var(--ash); font-style:italic; font-size:19px;
}
.post-content ul, .post-content ol{ padding-left:22px; }
.post-content ul li, .post-content ol li{ margin-top:10px; list-style:disc; }
.post-content ol li{ list-style:decimal; }
.post-tags{ margin-top:40px; display:flex; flex-wrap:wrap; gap:10px; }
.post-tags a{
  font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.06em;
  padding:8px 14px; border:1px solid var(--line); border-radius:999px; color:var(--ash);
  transition:border-color .25s var(--ease), color .25s var(--ease);
}
.post-tags a:hover{ border-color:var(--signal); color:var(--signal); }
.post-nav{ margin-top:50px; padding-top:26px; border-top:1px solid var(--line); display:flex; justify-content:space-between; gap:20px; }
.post-nav a{ font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink); }
.post-nav a:hover{ color:var(--signal); }
.post-nav-next{ text-align:right; margin-left:auto; }
.post-back{ margin-top:44px; display:flex; justify-content:center; }

/* --- Escenario que contiene la grilla y el panel de detalle --- */
.clients-stage{ position:relative; }
.clients-stage.is-open .clients-grid,
.clients-stage.is-open .clients-more{ opacity:0; pointer-events:none; transition:opacity .4s var(--ease); }
.clients-grid{ transition:opacity .4s var(--ease); }

/* --- Panel de detalle: modal centrado sobre la pantalla --- */
.client-detail{
  position:fixed; inset:0; z-index:60;
  display:flex; align-items:center; justify-content:center;
  padding:100px 24px 40px;
  background:rgba(5,5,7,.55); backdrop-filter:blur(4px);
  opacity:0; visibility:hidden;
  transition:opacity .4s var(--ease), visibility .4s;
}
.clients-stage.is-open .client-detail{
  opacity:1; visibility:visible;
}
.detail-inner{
  position:relative; z-index:1;
  width:100%; max-width:1000px;
  background:#fff; color:var(--ink);
  border:1px solid var(--line); border-radius:var(--radius);
  padding:34px;
  max-height:calc(100vh - 140px); overflow-y:auto;
  box-shadow:0 40px 90px -20px rgba(0,0,0,.7);
  transform:translateY(16px) scale(.98);
  transition:transform .4s var(--ease);
}
.clients-stage.is-open .detail-inner{ transform:translateY(0) scale(1); }
.client-detail-close{
  position:sticky; top:0; float:right; z-index:65; margin:-6px -6px 0 0;
  width:42px; height:42px; border-radius:50%; border:1px solid var(--line);
  background:#fff; color:var(--ink); font-size:24px; line-height:1;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 4px 14px rgba(11,11,16,.12);
  transition:background .25s var(--ease), transform .25s var(--ease);
}
.client-detail-close:hover{ background:var(--mist); transform:rotate(90deg); }

/* top: imagen arriba-izquierda + datos a la derecha */
.detail-top{ display:grid; grid-template-columns:1.1fr .9fr; gap:30px; align-items:start; }
.detail-cover{ border-radius:14px; overflow:hidden; border:1px solid var(--line); background:var(--mist); }
.detail-cover img{ width:100%; height:100%; object-fit:cover; display:block; }
.detail-meta{ padding-top:6px; }
.detail-title{ font-size:clamp(24px,3vw,36px); color:var(--ink); }
.detail-facts{ margin-top:22px; display:flex; flex-direction:column; gap:0; }
.detail-facts li{ display:flex; justify-content:space-between; gap:16px; padding:14px 0; border-top:1px solid var(--line); }
.detail-facts li:first-child{ border-top:0; }
.detail-facts span{ font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--signal); }
.detail-facts b, .detail-facts a{ font-size:14px; color:var(--ink); text-align:right; }
.detail-facts a:hover{ color:var(--signal); text-decoration:underline; }

/* descripción larga debajo */
.detail-desc{ margin-top:28px; color:var(--ash); font-size:15px; line-height:1.7; max-width:70ch; }

/* galería de imágenes */
.detail-gallery{ margin-top:28px; display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.detail-gallery img{
  width:100%; aspect-ratio:16/11; object-fit:cover; border-radius:10px;
  border:1px solid var(--line); transition:transform .4s var(--ease);
}
.detail-gallery img:hover{ transform:scale(1.03); }

/* imagen principal y de galería: clicables para ampliar */
.detail-cover img, .detail-gallery img{ cursor:zoom-in; }

/* --- Lightbox --- */
.lightbox{
  position:fixed; inset:0; z-index:120;
  display:flex; align-items:center; justify-content:center;
  background:rgba(5,5,7,.9); backdrop-filter:blur(8px);
  padding:40px;
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease), visibility .3s;
}
.lightbox.is-open{ opacity:1; visibility:visible; }
.lightbox-img{
  max-width:92vw; max-height:88vh; width:auto; height:auto;
  border-radius:12px; box-shadow:0 30px 80px rgba(0,0,0,.6);
  transform:scale(.96); transition:transform .3s var(--ease); cursor:zoom-out;
}
.lightbox.is-open .lightbox-img{ transform:scale(1); }
.lightbox-close{
  position:absolute; top:22px; right:26px;
  width:48px; height:48px; border-radius:50%; border:1px solid rgba(255,255,255,.25);
  background:rgba(255,255,255,.1); color:#fff; font-size:28px; line-height:1;
  display:flex; align-items:center; justify-content:center;
  transition:background .25s var(--ease), transform .25s var(--ease);
}
.lightbox-close:hover{ background:rgba(255,255,255,.25); transform:rotate(90deg); }

@media (max-width: 720px){
  .detail-top{ grid-template-columns:1fr; gap:20px; }
  .detail-gallery{ grid-template-columns:1fr 1fr; }
  .detail-inner{ padding:24px; max-height:85vh; }
}

/* ===========================================================
   CTA CONTACTO
=========================================================== */
.cta{ padding:70px 0 100px; }
.cta-panel{
  padding:60px; text-align:center; position:relative; overflow:hidden;
  background:linear-gradient(135deg, var(--ink), var(--signal-deep));
  color:#fff; border-radius:32px;
}
.cta-panel::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(circle at 80% 20%, var(--signal-glow), transparent 55%);
}
.cta-panel .eyebrow{ color:#8fa0ff; justify-content:center; position:relative; z-index:1; }
.cta-panel .eyebrow::before{ background:#8fa0ff; }
.cta-panel h2{ color:#fff; font-size:clamp(28px,4vw,48px); margin-top:18px; position:relative; z-index:1; }
.cta-panel p{ color:#c3c6db; margin-top:14px; position:relative; z-index:1; }
.cta-panel .hero-cta{ justify-content:center; margin-top:34px; position:relative; z-index:1; }
.cta-panel .btn-ghost{ border-color:rgba(255,255,255,.3); color:#fff; }
.cta-panel .btn-primary{ background:#fff; color:var(--ink); box-shadow:0 10px 24px rgba(0,0,0,.25); }
.cta-panel .btn-primary:hover{ background:var(--signal); color:#fff; }

/* ===========================================================
   FOOTER
=========================================================== */
.site-footer{ padding:60px 0 40px; border-top:1px solid var(--line); }
.footer-grid{ display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr; gap:40px; }
.footer-grid img{ height:36px; mix-blend-mode:multiply; margin-bottom:14px; }
.footer-grid p{ color:var(--ash); font-size:13px; line-height:1.6; max-width:32ch; }
.footer-col h5{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--ash-soft); margin-bottom:16px; }
.footer-col ul li{ margin-bottom:10px; }
.footer-col a{ font-size:14px; color:var(--ink); display:inline-block; padding:2px 8px; margin:-2px -8px; border-radius:6px; transition:color .25s var(--ease), background .25s var(--ease); }
.footer-col a:hover{ background:#fff; color:var(--ink); box-shadow:0 2px 10px rgba(11,11,16,.12); }
.footer-bottom{ margin-top:50px; padding-top:24px; border-top:1px solid var(--line); display:flex; justify-content:space-between; font-size:12px; color:var(--ash-soft); font-family:var(--mono); flex-wrap:wrap; gap:10px; }

/* ===========================================================
   RESPONSIVE
=========================================================== */
@media (max-width: 1000px){
  .hero-grid, .why-grid{ grid-template-columns:1fr; }
  .panel-grid{ grid-template-columns:repeat(2,1fr); }
  .service-panel.wide{ grid-column:span 2; }
  .process-list{ grid-template-columns:repeat(2,1fr); }
  .clients-grid{ grid-template-columns:repeat(2,1fr); }
  .clients-grid--4{ grid-template-columns:repeat(3,1fr); }
  .footer-grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width: 720px){
  .main-nav{ display:none; }
  .menu-toggle{ display:block; }
  .panel-grid{ grid-template-columns:1fr; }
  .service-panel.wide{ grid-column:span 1; }
  .process-list{ grid-template-columns:1fr; }
  .clients-grid{ grid-template-columns:1fr; }
  .clients-grid--4{ grid-template-columns:1fr; }
  .process{ margin:0 12px; border-radius:24px; }
  .footer-grid{ grid-template-columns:1fr; }
  .cta-panel{ padding:40px 24px; }
}
@media (min-width:721px) and (max-width:900px){
  .clients-grid--4{ grid-template-columns:repeat(2,1fr); }
}

/* keyboard focus visibility */
a:focus-visible, button:focus-visible{ outline:2px solid var(--signal); outline-offset:3px; }


/* ===== Menú móvil desplegable ===== */
@media (max-width: 720px){
  .main-nav{
    position:absolute;
    top:100%;
    left:0;
    right:0;
    display:none;
    background:rgba(11,11,16,.98);
    border-bottom:1px solid rgba(255,255,255,.1);
    padding:10px 0;
  }
  .main-nav.is-open{
    display:block;
  }
  .main-nav ul{
    flex-direction:column;
    gap:0;
    align-items:stretch;
  }
  .main-nav a{
    display:block;
    padding:16px 32px;
    border-radius:0;
  }
}

.site-header{
  border-radius: 0 0 100px 100px;
}