/* ============================================================
   PÁGINAS DE SERVICIO — /servicios/<servicio>/
   Se apoya en article.css (colores, tipografías, botones y pie) y suma lo propio de estas
   páginas. Todas tienen la misma estructura: portada con el "plano" del servicio (un dibujo
   técnico propio de cada una, hecho en SVG), qué incluye, para quién, cómo trabajamos,
   preguntas frecuentes y cierre.
   nginx no le da regla de caché a este archivo: al cambiarlo, subir el ?v= en las páginas.
   ============================================================ */
.sv{max-width:1180px;margin-inline:auto;padding-inline:var(--pad)}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.btn svg{width:17px;height:17px;flex:none}

/* ---------- migas ---------- */
.sv-migas{padding-top:clamp(20px,3vw,34px);font-family:var(--f-mono);font-size:12px;letter-spacing:.04em;color:var(--muted-2)}
.sv-migas a{color:var(--muted)}
.sv-migas a:hover{color:var(--green)}
.sv-migas span{margin-inline:7px}

/* ---------- portada ---------- */
.sv-hero{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(28px,5vw,72px);align-items:center;
  padding-top:clamp(26px,4.5vw,56px)}
.sv-kick{font-family:var(--f-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--green);margin-bottom:16px}
.sv-hero h1{font-family:var(--f-display);font-weight:700;font-size:clamp(36px,5vw,58px);line-height:1.04;letter-spacing:-.03em;text-wrap:balance}
.sv-linea{display:block;text-wrap:balance}   /* la parte en degradé va en su propio renglón */
.sv-sub{color:var(--muted);font-size:clamp(16px,1.55vw,18.5px);line-height:1.62;margin-top:20px;max-width:50ch}
.sv-acc{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.sv-datos{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:24px;list-style:none;font-family:var(--f-mono);font-size:12px;
  letter-spacing:.04em;color:var(--muted)}
.sv-datos li{display:flex;align-items:center;gap:8px}
.sv-datos li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--green)}

/* ---------- el plano (lo propio de cada servicio) ---------- */
.plano{position:relative;border:1px solid var(--line-2);border-radius:18px;background:#0c1118;overflow:hidden;
  box-shadow:0 40px 90px -40px rgba(0,0,0,.95),0 0 120px -44px rgba(4,206,120,.3)}
.plano__barra{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 14px;padding:11px 12px 11px 16px;
  border-bottom:1px solid var(--line)}
.plano__tit{font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.plano__cambio{display:inline-flex;padding:3px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.04)}
.plano__cambio button{font-family:var(--f-display);font-weight:500;font-size:13px;color:var(--muted);padding:6px 12px;min-height:32px;
  border-radius:7px;border:0;background:none;cursor:pointer;transition:background-color .25s,color .25s}
.plano__cambio button:hover{color:var(--ink)}
.plano__cambio button[aria-pressed="true"]{background:rgba(4,206,120,.16);color:var(--ink)}
.plano__svg{display:block;width:100%;height:auto}
.plano__pie{display:flex;flex-wrap:wrap;gap:8px 18px;justify-content:space-between;align-items:center;padding:11px 16px;
  border-top:1px solid var(--line);font-family:var(--f-mono);font-size:11px;letter-spacing:.03em;color:var(--muted-2)}
.plano__ref{display:flex;flex-wrap:wrap;gap:6px 14px;list-style:none;color:var(--muted)}
.plano__ref li{display:flex;align-items:center;gap:6px}
.plano__ref i{width:8px;height:8px;border-radius:50%;background:var(--pl-ok)}
.plano__ref .es-debil i{background:var(--pl-debil)}
.plano__ref .es-nada i{background:none;box-shadow:inset 0 0 0 1.5px var(--pl-nada)}
.plano__ref .es-boca i{border-radius:2px;background:#0c1118;box-shadow:inset 0 0 0 1.5px rgba(234,240,246,.85)}
.plano__ref .es-cable i{width:14px;height:2px;border-radius:1px;background:#3E9BFF}
.plano__ref .es-luz i{background:#FFC857}
.plano__ref .es-mal i{background:var(--pl-mal)}

/* el dibujo: las vistas están una arriba de la otra y se cruzan con un fundido */
.plano{--pl-ok:#2BE08F;--pl-debil:#F5A524;--pl-nada:#8C98A8;--pl-mal:#FF7A6B}
.pl-pared{fill:none;stroke:rgba(234,240,246,.42);stroke-width:1.6;stroke-linecap:square}
.pl-nombre{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;fill:rgba(234,240,246,.62)}
.pl-estado{font-family:var(--f-display);font-weight:600;font-size:12.5px}
.pl-estado.es-ok{fill:var(--pl-ok)}
.pl-estado.es-debil{fill:var(--pl-debil)}
.pl-estado.es-nada{fill:var(--pl-nada)}
.pl-rotulo{font-family:var(--f-mono);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;fill:rgba(234,240,246,.7)}
.pl-cable{fill:none;stroke:rgba(46,155,255,.6);stroke-width:1.2;stroke-dasharray:3 4}
.pl-lio path{fill:none;stroke-width:1.5;stroke-linecap:round}                                    /* cables sueltos */
.pl-tendido path{fill:none;stroke:#3E9BFF;stroke-width:1.6;stroke-linejoin:round}                 /* cables tendidos */
.pl-boca rect{fill:#0c1118;stroke:#EAF0F6;stroke-opacity:.85;stroke-width:1.2}                    /* boca de red o puerto */
.pl-num{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.04em;fill:var(--ink)}
.pl-eje{fill:none;stroke:rgba(234,240,246,.4);stroke-width:1}                                    /* eje y marcas de una línea de tiempo */
.pl-apagado{fill:none;stroke:rgba(234,240,246,.42);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}   /* lo que está apagado */
.pl-dato{font-family:var(--f-display);font-weight:500;font-size:11px;fill:rgba(234,240,246,.86)}  /* el estado de una cosa, al lado */
.pl-dato.es-ok{fill:var(--pl-ok)}
.pl-cono{fill:rgba(43,224,143,.2);stroke:rgba(43,224,143,.55);stroke-width:1}                     /* lo que ve una cámara */
.pl-chip{font-family:var(--f-display);font-weight:600;font-size:9.5px;fill:var(--ink)}            /* etiqueta chica dentro del dibujo */
/* hasta tres vistas por plano (.pl-a, .pl-b, .pl-c): data-vista dice cuál se ve */
.pl-a,.pl-b,.pl-c{transition:opacity .6s ease}
.plano[data-vista="a"] :is(.pl-b,.pl-c),.plano[data-vista="b"] :is(.pl-a,.pl-c),.plano[data-vista="c"] :is(.pl-a,.pl-b){opacity:0}
/* las antenas se prenden de a una (--espera) y cada una late a su tiempo (--onda) */
.pl-ap{transition:opacity .45s ease,transform .45s cubic-bezier(.34,1.4,.44,1);transform-box:fill-box;transform-origin:center}
.plano[data-vista="a"] .pl-ap{opacity:0;transform:scale(.4)}
.plano[data-vista="b"] .pl-ap{transition-delay:var(--espera,0s)}
.pl-onda{fill:none;stroke:var(--pl-ok);stroke-width:1;opacity:0;transform-box:fill-box;transform-origin:center}
.plano[data-vista="b"] .pl-onda{animation:plOnda 3.4s ease-out var(--onda,0s) infinite}
@keyframes plOnda{0%{opacity:.55;transform:scale(1)}100%{opacity:0;transform:scale(4.2)}}
/* al entrar en pantalla las paredes se dibujan (el script pone .is-prep y después .is-on;
   sin script no hay ninguna de las dos y las paredes están siempre) */
.plano.is-prep .pl-pared{stroke-dasharray:1;stroke-dashoffset:1}
.plano.is-prep.is-on .pl-pared{stroke-dashoffset:0;transition:stroke-dashoffset 1.3s cubic-bezier(.4,0,.2,1)}

/* ---------- secciones ---------- */
.sv-sec{margin-top:clamp(68px,9.5vw,116px)}
.sv-sec h2{font-family:var(--f-display);font-weight:700;font-size:clamp(26px,3.4vw,38px);letter-spacing:-.02em;line-height:1.1}
.sv-bajada{color:var(--muted);font-size:17px;line-height:1.6;max-width:60ch;margin-top:12px}

/* qué incluye: lista con filete, sin tarjetas */
.sv-lista{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:0 40px;margin-top:26px}
.sv-lista li{padding:18px 0 20px;border-top:1px solid var(--line);color:var(--muted);font-size:15.5px;line-height:1.6}
.sv-lista b{display:block;color:var(--ink);font-family:var(--f-display);font-weight:600;font-size:17px;margin-bottom:5px}
.sv-lista a,.sv-texto a{color:var(--green);white-space:nowrap}
.sv-lista a:hover,.sv-texto a:hover{color:var(--green-bright)}

/* para quién */
.sv-quien{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:28px}
.sv-quien article{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:24px 24px 26px}
.sv-quien h3{font-family:var(--f-display);font-weight:600;font-size:19px;line-height:1.2;color:var(--ink)}
.sv-quien p{color:var(--muted);font-size:15px;line-height:1.6;margin-top:10px}
.sv-nota{font-family:var(--f-mono);font-size:12.5px;letter-spacing:.02em;color:var(--muted);margin-top:22px}

/* dos columnas: foto + texto */
.sv-doble{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center}
.sv-fig{position:relative;margin:0}
.sv-fig img{width:100%;height:auto;border-radius:16px;border:1px solid var(--line)}
.sv-fig figcaption{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.03em;color:var(--muted-2);margin-top:12px}
.sv-fig--luz::before{content:"";position:absolute;inset:10% 6% -2%;z-index:-1;border-radius:50%;
  background:radial-gradient(closest-side,rgba(46,155,255,.22),rgba(4,206,120,.10) 55%,transparent);filter:blur(30px)}
.sv-fig--luz img{border:0;border-radius:0}
.sv-texto p{color:var(--muted);font-size:17px;line-height:1.65;margin-top:14px;max-width:50ch}
.sv-texto .btn{margin-top:24px}

/* trabajos reales: fotos de instalaciones propias (fuentes/servicios/trabajos.json) */
.sv-trabajos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:26px 20px;margin-top:26px}
.sv-trabajo{margin:0;min-width:0}
.sv-trabajo img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:14px;border:1px solid var(--line);background:var(--card)}
.sv-trabajo figcaption{margin-top:12px;color:var(--muted);font-size:15px;line-height:1.55}
.sv-trabajo b{display:block;color:var(--ink);font-family:var(--f-display);font-weight:600;font-size:16.5px;margin-bottom:3px}
.sv-trabajo a{color:var(--green);white-space:nowrap;font-size:14px}
.sv-trabajo a:hover{color:var(--green-bright)}

/* cómo trabajamos: los pasos van numerados porque el orden es real */
.sv-pasos{list-style:none;counter-reset:paso;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:26px;margin-top:32px}
.sv-pasos li{counter-increment:paso;position:relative;padding-top:40px;color:var(--muted);font-size:15px;line-height:1.6}
.sv-pasos li::before{content:"0" counter(paso);position:absolute;top:0;left:0;font-family:var(--f-mono);font-size:13px;
  letter-spacing:.1em;color:var(--green)}
.sv-pasos li::after{content:"";position:absolute;top:9px;left:34px;right:-26px;height:1px;
  background:linear-gradient(90deg,var(--line-2),rgba(255,255,255,.04))}
.sv-pasos li:last-child::after{right:0;background:linear-gradient(90deg,var(--line-2),transparent)}
.sv-pasos b{display:block;color:var(--ink);font-family:var(--f-display);font-weight:600;font-size:17.5px;line-height:1.25;margin-bottom:6px}

/* preguntas frecuentes */
.sv-faq{max-width:840px;margin-top:22px}
.sv-faq details{border-top:1px solid var(--line)}
.sv-faq details:last-child{border-bottom:1px solid var(--line)}
.sv-faq summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:19px 0;
  font-family:var(--f-display);font-weight:600;font-size:17.5px;line-height:1.3;color:var(--ink)}
.sv-faq summary::-webkit-details-marker{display:none}
.sv-faq summary::after{content:"+";flex:none;font-family:var(--f-mono);font-weight:400;font-size:22px;line-height:1;color:var(--green);
  transition:transform .25s ease}
.sv-faq details[open] summary::after{transform:rotate(45deg)}
.sv-faq summary:hover{color:var(--green-bright)}
.sv-faq details p{color:var(--muted);font-size:16px;line-height:1.65;padding:0 40px 22px 0;max-width:70ch}

/* cierre */
.sv-cierre{position:relative;overflow:hidden;text-align:center;border-radius:22px;border:1px solid var(--line);
  padding:clamp(36px,6vw,64px) clamp(22px,5vw,56px);
  background:radial-gradient(600px 300px at 15% 0%,rgba(4,206,120,.12),transparent 60%),
             radial-gradient(600px 320px at 90% 100%,rgba(46,155,255,.14),transparent 60%),var(--card)}
.sv-cierre p{color:var(--muted);font-size:17px;line-height:1.6;max-width:52ch;margin:14px auto 0}
.sv-cierre .sv-acc{justify-content:center}

/* los otros servicios */
.sv-otros{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:12px;margin-top:22px}
.sv-otros a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 18px;border-radius:12px;
  border:1px solid var(--line);background:var(--card);font-family:var(--f-display);font-weight:600;font-size:16px;color:var(--ink);
  transition:transform .2s,border-color .2s,background-color .2s}
.sv-otros a::after{content:"→";color:var(--green);transition:transform .2s}
.sv-otros a:hover{transform:translateY(-2px);border-color:rgba(4,206,120,.35);background:var(--card-2)}
.sv-otros a:hover::after{transform:translateX(3px)}

@media (max-width:980px){
  .sv-hero{grid-template-columns:1fr}
  .sv-quien{grid-template-columns:1fr}
  .sv-doble{grid-template-columns:1fr}
  .sv-pasos{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 26px}
  .sv-pasos li:nth-child(2n)::after{right:0;background:linear-gradient(90deg,var(--line-2),transparent)}
}
@media (max-width:560px){
  .sv-pasos{grid-template-columns:1fr}
  .sv-pasos li::after{right:0;background:linear-gradient(90deg,var(--line-2),transparent)}
  .sv-acc .btn{flex:1 1 100%;justify-content:center}
  .sv-faq details p{padding-right:0}
  .plano__barra{padding-left:12px}
  .plano__cambio{width:100%}
  .plano__cambio button{flex:1}
}
@media (prefers-reduced-motion:reduce){
  .pl-a,.pl-b,.pl-ap{transition:none}
  .plano[data-vista="b"] .pl-onda{animation:none}
}
