/* ═══════════════════════════════════════════════════
   MICONS – styles.css  v4.0
   ═══════════════════════════════════════════════════ */

/* ══ VARIABLES ══ */
:root {
  --bd:     #06101f;       /* background dark */
  --bm:     #0d2f6e;       /* background mid */
  --bl:     #1a5fcc;       /* blue light */
  --bg:     #2b7fff;       /* blue glow */
  --acc:    #f0a500;       /* accent gold */
  --acc2:   #f8c030;       /* accent lighter */
  --tx:     rgba(255,255,255,.88);
  --txm:    rgba(255,255,255,.48);
  --txd:    rgba(255,255,255,.22);
  --gl:     rgba(255,255,255,.05);
  --glh:    rgba(255,255,255,.09);
  --glb:    rgba(255,255,255,.10);
  --nav-h:  72px;
  --r:      7px;
  --r2:     14px;
  --ease:   cubic-bezier(.4,0,.2,1);
  --spring: cubic-bezier(.34,1.56,.64,1);
}
[data-theme="light"] {
  --bd:  #f0f4ff;
  --bm:  #c5d5f5;
  --bl:  #1248b3;
  --bg:  #1a5fcc;
  --acc: #d4890a;
  --acc2:#e89c12;
  --tx:  #06101f;           /* negro casi puro para máxima legibilidad */
  --txm: #2a3a55;           /* gris azulado oscuro */
  --txd: #5a6e8a;           /* gris medio visible */
  --gl:  rgba(7,15,30,.06);
  --glh: rgba(7,15,30,.11);
  --glb: rgba(7,15,30,.14);
}

/* ══ LIGHT THEME — overrides completos ══ */

/* Fondo y textos base */
[data-theme="light"] body { color:#06101f; }

/* Watermark */
[data-theme="light"] .watermark { color:rgba(26,95,204,.06); }

/* Preloader */
[data-theme="light"] #preloader { background:#f0f4ff; }
[data-theme="light"] .preloader-logo { color:#06101f; }
[data-theme="light"] .preloader-text { color:#2a3a55; }

/* Navbar */
[data-theme="light"] #navbar.scrolled {
  background:rgba(240,244,255,.96);
  border-bottom-color:rgba(7,15,30,.12);
}
[data-theme="light"] .nav-logo { color:#06101f; }
[data-theme="light"] .nav-links a { color:#2a3a55; }
[data-theme="light"] .nav-links a:hover { color:#06101f; }
[data-theme="light"] .nav-links a.active { color:var(--acc); }
[data-theme="light"] .hamburger span { background:#06101f; }
[data-theme="light"] .mobile-menu {
  background:rgba(240,244,255,.98);
}
[data-theme="light"] .mobile-menu a { color:#06101f; }

/* Hero */
[data-theme="light"] .hero-title-letter {
  background:linear-gradient(145deg,#06101f 10%,#1a3a7a 60%,#1a5fcc 100%);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
[data-theme="light"] .hero-tag  { color:var(--acc); }
[data-theme="light"] .hero-sub  { color:#2a3a55; }
[data-theme="light"] .badge { color:#2a3a55; background:rgba(7,15,30,.06); border-color:rgba(7,15,30,.14); }
[data-theme="light"] .scroll-indicator span { color:#5a6e8a; }
[data-theme="light"] .scroll-mouse { border-color:rgba(7,15,30,.25); }
[data-theme="light"] .hero-arrow  { color:rgba(7,15,30,.2); }

/* Stats bar */
[data-theme="light"] .stats-bar { background:rgba(18,72,179,.07); border-color:rgba(7,15,30,.12); }
[data-theme="light"] .stat-item { border-right-color:rgba(7,15,30,.12); }
[data-theme="light"] .stat-item::after { background:linear-gradient(135deg,rgba(26,95,204,.08),transparent); }
[data-theme="light"] .stat-label { color:#2a3a55; }

/* Secciones */
[data-theme="light"] .section-desc  { color:#2a3a55; }
[data-theme="light"] .section-label { color:var(--acc); }
[data-theme="light"] .section-alt {
  background:rgba(18,72,179,.05);
  border-color:rgba(7,15,30,.1);
}

/* Servicios */
[data-theme="light"] .service-card {
  background:#ffffff;
  border-top-color:transparent;
  box-shadow:0 2px 16px rgba(7,15,30,.08);
}
[data-theme="light"] .service-card:hover {
  background:#f5f8ff;
  border-top-color:var(--acc);
  box-shadow:0 8px 32px rgba(7,15,30,.12);
}
[data-theme="light"] .service-card h3 { color:#06101f; }
[data-theme="light"] .service-card p  { color:#2a3a55; }
[data-theme="light"] .service-link    { color:var(--acc); }
[data-theme="light"] .services-grid   { background:rgba(7,15,30,.1); }

/* Proceso */
[data-theme="light"] .process-step h3 { color:#06101f; }
[data-theme="light"] .process-step p  { color:#2a3a55; }
[data-theme="light"] .step-num        { color:var(--acc); }
[data-theme="light"] .step-icon-wrap  { background:#fff; border-color:rgba(7,15,30,.14); box-shadow:0 2px 12px rgba(7,15,30,.08); }
[data-theme="light"] .process-line    { background:rgba(7,15,30,.12); }

/* Galería */
[data-theme="light"] .gallery-count { color:#2a3a55; }
[data-theme="light"] .filter-btn { color:#2a3a55; background:rgba(7,15,30,.05); border-color:rgba(7,15,30,.15); }
[data-theme="light"] .filter-btn:hover { color:#06101f; border-color:rgba(7,15,30,.3); }
[data-theme="light"] .filter-btn.active { background:var(--acc); color:#fff; border-color:var(--acc); }
[data-theme="light"] .gallery-item { background:#e8eeff; border-color:rgba(7,15,30,.12); }
[data-theme="light"] .gallery-empty { color:#2a3a55; }
[data-theme="light"] .gi-title { color:#fff; }
[data-theme="light"] .gi-tag   { color:var(--acc2); }

/* Mancomunidades */
[data-theme="light"] .manco-info > p   { color:#2a3a55; }
[data-theme="light"] .section-title-left { color:#06101f; }
[data-theme="light"] .highlight-item {
  background:rgba(212,137,10,.08);
  border-left-color:var(--acc);
}
[data-theme="light"] .highlight-item:hover { background:rgba(212,137,10,.14); }
[data-theme="light"] .highlight-item span:last-child { color:#06101f; }
[data-theme="light"] .manco-card {
  background:#ffffff;
  border-color:rgba(7,15,30,.12);
  box-shadow:0 2px 12px rgba(7,15,30,.07);
}
[data-theme="light"] .manco-card:hover {
  background:#f5f8ff;
  border-color:rgba(18,72,179,.3);
  box-shadow:0 10px 30px rgba(7,15,30,.12);
}
[data-theme="light"] .manco-card h4 { color:#06101f; }
[data-theme="light"] .manco-card p  { color:#2a3a55; }

/* Testimonios */
[data-theme="light"] .testimonial-card {
  background:#ffffff;
  border-color:rgba(7,15,30,.12);
  box-shadow:0 2px 14px rgba(7,15,30,.07);
}
[data-theme="light"] .testimonial-card:hover { border-color:rgba(212,137,10,.35); box-shadow:0 10px 30px rgba(7,15,30,.12); }
[data-theme="light"] .testimonial-card blockquote { color:#2a3a55; }
[data-theme="light"] .testimonial-author strong { color:#06101f; }
[data-theme="light"] .testimonial-author span   { color:#5a6e8a; }
[data-theme="light"] .testimonial-nav {
  background:#fff; border-color:rgba(7,15,30,.15); color:#06101f;
}
[data-theme="light"] .testimonial-nav:hover { background:#fff8ed; border-color:var(--acc); color:var(--acc); }
[data-theme="light"] .tdot { background:rgba(7,15,30,.15); }
[data-theme="light"] .tdot.active { background:var(--acc); }

/* CTA banner */
[data-theme="light"] .cta-bg {
  background:linear-gradient(135deg,rgba(18,72,179,.12) 0%,rgba(26,95,204,.06) 50%,rgba(18,72,179,.12) 100%);
  border-color:rgba(18,72,179,.2);
}
[data-theme="light"] .cta-content h2 { color:#06101f; }
[data-theme="light"] .cta-content p  { color:#2a3a55; }

/* Contacto */
[data-theme="light"] .contact-info > p { color:#2a3a55; }
[data-theme="light"] .contact-item {
  background:#ffffff; border-color:rgba(7,15,30,.12);
  box-shadow:0 1px 8px rgba(7,15,30,.06);
}
[data-theme="light"] .contact-item:hover { background:#f5f8ff; border-color:rgba(18,72,179,.25); }
[data-theme="light"] .contact-item strong { color:#06101f; }
[data-theme="light"] .contact-item span  { color:#2a3a55; }
[data-theme="light"] .social-btn { background:#fff; border-color:rgba(7,15,30,.15); color:#06101f; }
[data-theme="light"] .social-btn:hover { background:#fff8ed; border-color:var(--acc); color:var(--acc); }

/* Botones en modo claro */
[data-theme="light"] .btn-outline { border-color:rgba(7,15,30,.3); color:#06101f; }
[data-theme="light"] .btn-outline:hover { border-color:#06101f; background:rgba(7,15,30,.05); }
[data-theme="light"] .btn-ghost  { color:#2a3a55; border-color:rgba(7,15,30,.18); }
[data-theme="light"] .btn-ghost:hover { color:#06101f; background:rgba(7,15,30,.06); }

/* Footer */
[data-theme="light"] footer { border-top-color:rgba(7,15,30,.12); background:#e8eeff; }
[data-theme="light"] .footer-logo { color:#06101f; }
[data-theme="light"] .footer-brand p { color:#5a6e8a; }
[data-theme="light"] .footer-social a { background:#fff; border-color:rgba(7,15,30,.14); color:#2a3a55; }
[data-theme="light"] .footer-social a:hover { background:#fff8ed; border-color:var(--acc); color:var(--acc); }
[data-theme="light"] .footer-nav a { color:#5a6e8a; }
[data-theme="light"] .footer-nav a:hover { color:#06101f; }
[data-theme="light"] .footer-contact-info p { color:#5a6e8a; }
[data-theme="light"] .footer-contact-info a:hover { color:var(--acc); }
[data-theme="light"] .footer-badge { background:rgba(212,137,10,.08); border-color:rgba(212,137,10,.25); }
[data-theme="light"] .footer-badge span:last-child { color:#2a3a55; }
[data-theme="light"] .footer-bottom { border-top-color:rgba(7,15,30,.12); }
[data-theme="light"] .footer-bottom p { color:#5a6e8a; }
[data-theme="light"] .footer-legal a { color:#5a6e8a; }
[data-theme="light"] .footer-legal a:hover { color:var(--acc); }

/* Cookie banner */
[data-theme="light"] #cookie-banner { background:rgba(240,244,255,.97); border-color:rgba(7,15,30,.15); }
[data-theme="light"] #cookie-banner p { color:#2a3a55; }

/* Back to top */
[data-theme="light"] #back-top { background:#fff; border-color:rgba(7,15,30,.18); color:#06101f; }
[data-theme="light"] #back-top:hover { background:#fff8ed; border-color:var(--acc); color:var(--acc); }

/* Theme toggle */
[data-theme="light"] #theme-toggle { background:#fff; border-color:rgba(7,15,30,.18); color:#06101f; }

/* Lightbox */
[data-theme="light"] .lb-actions button { background:#fff; border-color:rgba(7,15,30,.15); color:#06101f; }
[data-theme="light"] #lightbox-caption { color:#2a3a55; }
[data-theme="light"] .lb-counter { color:#2a3a55; }
[data-theme="light"] #lightbox-prev,[data-theme="light"] #lightbox-next {
  background:rgba(255,255,255,.9); border-color:rgba(7,15,30,.15); color:#06101f;
}
[data-theme="light"] #lightbox-prev:hover,[data-theme="light"] #lightbox-next:hover {
  background:#fff8ed; border-color:var(--acc); color:var(--acc);
}

/* ══ RESET ══ */
*,*::before,*::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; font-size:16px; }
body {
  font-family:'Montserrat',sans-serif;
  background:var(--bd);
  color:var(--tx);
  overflow-x:hidden;
  cursor:none;
  transition:background .4s,color .4s;
}
img { max-width:100%; display:block; height:auto; }
a   { color:inherit; }
button { font-family:inherit; cursor:none; }

/* ══ CURSOR ══ */
#cursor {
  position:fixed; inset:0 auto auto 0;
  width:10px; height:10px;
  background:var(--acc);
  border-radius:50%;
  pointer-events:none;
  z-index:9999;
  transform:translate(-50%,-50%);
  transition:width .18s var(--ease),height .18s,background .18s;
  mix-blend-mode:difference;
  will-change:left,top;
}
#cursor-ring {
  position:fixed; inset:0 auto auto 0;
  width:38px; height:38px;
  border:1.5px solid rgba(240,165,0,.45);
  border-radius:50%;
  pointer-events:none;
  z-index:9998;
  transform:translate(-50%,-50%);
  transition:width .22s,height .22s,border-color .2s,opacity .2s;
  will-change:left,top;
}
body.cur-hover #cursor      { width:22px; height:22px; }
body.cur-hover #cursor-ring { width:58px; height:58px; border-color:rgba(240,165,0,.22); }
body.cur-click #cursor      { width:14px; height:14px; background:var(--acc2); }

/* ══ CANVAS ══ */
#bg-canvas { position:fixed; inset:0; z-index:0; pointer-events:none; }

/* ══ WATERMARK ══ */
.watermark {
  position:fixed; top:50%; left:50%;
  transform:translate(-50%,-50%);
  pointer-events:none; z-index:0;
  user-select:none;
  will-change:transform;
}
.watermark-logo {
  width:80vw; max-width:900px;
  opacity:.13;
  filter:grayscale(100%) brightness(1.8);
}
/* ══ NOISE TEXTURE ══ */
.noise-overlay {
  position:fixed; inset:0; z-index:0;
  pointer-events:none; opacity:.032;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:180px;
}

/* ══ PROGRESS BAR ══ */
#progress-bar {
  position:fixed; top:0; left:0; height:2.5px; width:0%;
  background:linear-gradient(90deg,var(--bl),var(--acc));
  z-index:200;
}

/* ══ PRELOADER ══ */
#preloader {
  position:fixed; inset:0; z-index:1000;
  background:var(--bd);
  display:flex; align-items:center; justify-content:center;
  transition:opacity .6s var(--ease),visibility .6s;
}
#preloader.done { opacity:0; visibility:hidden; pointer-events:none; }
.preloader-inner { display:flex; flex-direction:column; align-items:center; gap:1.6rem; }
.preloader-logo {
  animation:pulseLogo 1.5s ease-in-out infinite alternate;
  display:flex; align-items:center; justify-content:center;
}
.preloader-logo-img {
  height:120px; width:auto;
  filter: brightness(0) invert(1);
}
@keyframes pulseLogo { from{opacity:.5;transform:scale(.97)} to{opacity:1;transform:scale(1)} }
.preloader-bar {
  width:220px; height:2px;
  background:var(--glb); border-radius:2px; overflow:hidden;
}
.preloader-fill {
  height:100%; width:0%;
  background:linear-gradient(90deg,var(--bl),var(--acc));
  border-radius:2px;
  animation:preload 2.2s var(--ease) forwards;
}
@keyframes preload { to { width:100%; } }
.preloader-text {
  font-size:.65rem; letter-spacing:.3em;
  text-transform:uppercase; color:var(--txm);
}

/* ══ NAVBAR ══ */
#navbar {
  position:fixed; top:0; left:0; right:0; z-index:100;
  height:var(--nav-h);
  display:flex; align-items:center; justify-content:space-between;
  padding:0 4rem;
  background:transparent;
  backdrop-filter:blur(0);
  border-bottom:1px solid transparent;
  transition:background .35s,backdrop-filter .35s,border-color .35s,transform .35s var(--ease);
}
#navbar.scrolled {
  background:rgba(6,16,31,.92);
  backdrop-filter:blur(22px) saturate(1.5);
  border-bottom-color:var(--glb);
}
#navbar.hide { transform:translateY(-100%); }

.nav-logo {
  text-decoration:none;
  transition:opacity .2s;
  display:flex; align-items:center;
}
.nav-logo-img {
  height:52px; width:auto;
  filter: drop-shadow(0 1px 4px rgba(0,0,0,.4));
}
.nav-logo:hover { opacity:.85; }
.accent { color:var(--acc); }

.nav-links { display:flex; gap:2rem; list-style:none; }
.nav-links a {
  position:relative;
  color:var(--txm); text-decoration:none;
  font-size:.72rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  transition:color .2s;
  padding-bottom:2px;
}
.nav-links a::after {
  content:''; position:absolute; bottom:-3px; left:0;
  height:1.5px; width:0; background:var(--acc);
  transition:width .28s var(--ease);
}
.nav-links a:hover       { color:var(--tx); }
.nav-links a:hover::after,
.nav-links a.active::after { width:100%; }
.nav-links a.active      { color:var(--acc); }

.nav-actions { display:flex; align-items:center; gap:.9rem; }
#theme-toggle {
  background:var(--gl); border:1px solid var(--glb);
  border-radius:50%; width:38px; height:38px;
  display:flex; align-items:center; justify-content:center;
  font-size:1rem; transition:all .22s;
}
#theme-toggle:hover { background:rgba(240,165,0,.12); border-color:var(--acc); transform:rotate(20deg); }

/* Hamburger */
.hamburger {
  display:none; flex-direction:column; gap:5px;
  background:none; border:none; padding:4px;
}
.hamburger span {
  display:block; width:24px; height:2px;
  background:var(--tx); border-radius:2px;
  transition:.3s var(--ease);
}
.hamburger.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2){ opacity:0; transform:scaleX(0); }
.hamburger.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

/* Mobile Menu */
.mobile-menu {
  position:fixed; inset:0; top:var(--nav-h); z-index:99;
  background:rgba(6,16,31,.97); backdrop-filter:blur(28px);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1.6rem;
  opacity:0; pointer-events:none; transform:translateY(-10px);
  transition:opacity .3s var(--ease),transform .3s var(--ease);
}
.mobile-menu.open { opacity:1; pointer-events:all; transform:none; }
.mobile-menu a {
  font-family:'Bebas Neue',sans-serif;
  font-size:2.8rem; letter-spacing:.1em;
  text-decoration:none; color:var(--tx);
  transition:color .2s;
}
.mobile-menu a:hover { color:var(--acc); }

/* ══ BOTONES ══ */
.btn {
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.9rem 2.2rem; border-radius:var(--r);
  font-size:.75rem; font-weight:700; letter-spacing:.17em; text-transform:uppercase;
  text-decoration:none; border:none; cursor:none;
  position:relative; overflow:hidden;
  transition:transform .22s var(--ease),box-shadow .22s,background .2s,border-color .2s,color .2s;
}
.btn::before {
  content:''; position:absolute; inset:0;
  background:linear-gradient(135deg,rgba(255,255,255,.12),transparent);
  opacity:0; transition:opacity .2s;
}
.btn:hover::before { opacity:1; }

.btn-primary { background:var(--acc); color:#06101f; }
.btn-primary:hover { background:var(--acc2); transform:translateY(-2px); }
.btn-glow:hover { box-shadow:0 8px 32px rgba(240,165,0,.38); }
.btn-lg { padding:1.1rem 2.8rem; font-size:.82rem; }
.btn-sm { padding:.65rem 1.45rem; font-size:.68rem; }
.btn-full { width:100%; justify-content:center; }
.btn-ghost {
  background:transparent; color:var(--txm);
  border:1px solid var(--glb);
}
.btn-ghost:hover { color:var(--tx); border-color:rgba(255,255,255,.3); background:var(--gl); }
.btn-outline {
  background:transparent; color:var(--tx);
  border:1.5px solid rgba(255,255,255,.28);
}
.btn-outline:hover { border-color:var(--tx); background:var(--gl); }

/* ══ SECCIONES ══ */
section { position:relative; z-index:1; }
.section-pad { padding:7rem 5rem; }
.section-alt {
  background:rgba(13,47,110,.1);
  border-top:1px solid var(--glb);
  border-bottom:1px solid var(--glb);
}
.section-header { text-align:center; margin-bottom:4.5rem; }

/* Reveal class – aplicada por JS */
.js-reveal {
  opacity:0;
  transform:translateY(28px);
  transition:opacity .65s var(--ease), transform .65s var(--ease);
}
.js-reveal.in { opacity:1; transform:none; }

.section-label {
  display:inline-block;
  font-size:.65rem; font-weight:700; letter-spacing:.35em; text-transform:uppercase;
  color:var(--acc); margin-bottom:.9rem;
}
.section-title {
  font-family:'Bebas Neue',sans-serif;
  font-size:clamp(3rem,6.5vw,5rem); letter-spacing:.06em; line-height:1;
}
.section-title-left {
  font-family:'Bebas Neue',sans-serif;
  font-size:clamp(2.6rem,5vw,4.2rem); letter-spacing:.05em; line-height:1.05;
  margin-bottom:1.5rem;
}
.section-desc {
  margin-top:1rem; color:var(--txm);
  font-size:.93rem; font-weight:300; max-width:480px;
  margin-left:auto; margin-right:auto; line-height:1.85;
}
.accent-text { color:var(--acc); }

/* ══ HERO ══ */
.hero {
  position:relative; z-index:1;
  min-height:100vh;
  display:flex; align-items:center; justify-content:center;
  text-align:center;
  padding:calc(var(--nav-h) + 3rem) 2rem 6rem;
  overflow:hidden;
}
/* Líneas de escaneo */
.hero-lines { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.hero-lines span {
  position:absolute; display:block; height:1px; width:100%;
  background:linear-gradient(90deg,transparent,rgba(26,95,204,.22),rgba(240,165,0,.08),transparent);
  animation:scanline 8s linear infinite; opacity:0;
}
.hero-lines span:nth-child(1){ top:22%; animation-delay:0s;   animation-duration:9s; }
.hero-lines span:nth-child(2){ top:48%; animation-delay:3s;   animation-duration:7s; }
.hero-lines span:nth-child(3){ top:70%; animation-delay:5.5s; animation-duration:11s; }
.hero-lines span:nth-child(4){ top:88%; animation-delay:1.5s; animation-duration:8s; }
@keyframes scanline {
  0%  { opacity:0; transform:translateX(-100%); }
  8%  { opacity:1; }
  90% { opacity:1; }
  100%{ opacity:0; transform:translateX(100%); }
}

/* Blobs de color */
.hero-mesh { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.mesh-blob {
  position:absolute; border-radius:50%;
  filter:blur(80px); opacity:.18;
  transition:transform .8s var(--ease);
}
.blob-1 { width:55vw; height:55vw; background:var(--bm); top:-15%; left:-15%; }
.blob-2 { width:45vw; height:45vw; background:var(--bl);  bottom:-10%; right:-10%; }
.blob-3 { width:32vw; height:32vw; background:var(--acc); top:30%;    right:10%;  opacity:.08; }
.blob-4 { width:28vw; height:28vw; background:var(--bg);  bottom:20%; left:15%;   opacity:.08; }

/* Hero content */
.hero-content { position:relative; z-index:2; max-width:860px; }

.hero-tag {
  display:flex; align-items:center; justify-content:center; gap:1.2rem;
  font-size:.68rem; font-weight:700; letter-spacing:.35em; text-transform:uppercase;
  color:var(--acc); margin-bottom:1.5rem;
  opacity:0; animation:fadeUp .8s .3s both;
}
.tag-line { display:block; width:40px; height:1px; background:var(--acc); opacity:.5; }

/* Título con letras individuales */
.hero-title {
  font-family:'Bebas Neue',sans-serif;
  font-size:clamp(6rem,18vw,14rem);
  letter-spacing:.06em; line-height:.85;
  display:flex; justify-content:center; gap:.02em;
  margin-bottom:.1em;
}
.hero-title-logo {
  display:block;
  font-size:0;
}
.hero-logo-img {
  width:min(700px, 85vw);
  height:auto;
  opacity:0;
  animation:heroLogoPop .8s var(--spring) .5s both;
  filter: drop-shadow(0 0 40px rgba(43,127,255,.5)) drop-shadow(0 4px 24px rgba(0,0,0,.6));
}
@keyframes heroLogoPop {
  from { opacity:0; transform:translateY(30px) scale(.9); }
  to   { opacity:1; transform:none; }
}
.hero-title-letter {
  display:inline-block;
  background:linear-gradient(145deg,#fff 20%,#a8c8ff 65%,#e0ecff 100%);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
  opacity:0;
  animation:letterPop .6s var(--spring) both;
}
.hero-title-letter:nth-child(1){ animation-delay:.5s; }
.hero-title-letter:nth-child(2){ animation-delay:.6s; }
.hero-title-letter:nth-child(3){ animation-delay:.7s; }
.hero-title-letter:nth-child(4){ animation-delay:.8s; }
.hero-title-letter:nth-child(5){ animation-delay:.9s; }
.hero-title-letter:nth-child(6){ animation-delay:1s; }
@keyframes letterPop {
  from { opacity:0; transform:translateY(40px) scale(.8); }
  to   { opacity:1; transform:none; }
}
/* Efecto glitch */
.hero-title.glitch-on .hero-title-letter {
  animation:glitch .35s steps(3) 1;
}

.hero-sub {
  margin-top:1.8rem;
  font-size:clamp(.88rem,2.2vw,1.1rem); font-weight:300;
  color:rgba(255,255,255,.58); max-width:500px; line-height:1.85;
  margin-left:auto; margin-right:auto;
  opacity:0; animation:fadeUp .9s 1.1s both;
}
.hero-sub em { font-style:normal; color:var(--tx); font-weight:400; }

.hero-cta {
  margin-top:2.8rem;
  display:flex; gap:.9rem; flex-wrap:wrap; justify-content:center;
  opacity:0; animation:fadeUp .9s 1.3s both;
}
.hero-badges {
  margin-top:2.2rem;
  display:flex; gap:.7rem; flex-wrap:wrap; justify-content:center;
  opacity:0; animation:fadeUp .9s 1.5s both;
}
.badge {
  display:flex; align-items:center; gap:.4rem;
  padding:.4rem .9rem; border-radius:100px;
  font-size:.65rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  background:var(--gl); border:1px solid var(--glb); color:var(--txm);
}
.badge svg { color:var(--acc); flex-shrink:0; }

/* Scroll indicator */
.scroll-indicator {
  position:absolute; bottom:2.5rem; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:.6rem;
  opacity:0; animation:fadeIn 1s 1.8s both;
}
.scroll-indicator span { font-size:.58rem; letter-spacing:.28em; text-transform:uppercase; color:var(--txd); }
.scroll-mouse {
  width:22px; height:34px;
  border:1.5px solid rgba(255,255,255,.2); border-radius:12px;
  position:relative;
}
.scroll-wheel {
  position:absolute; top:6px; left:50%; transform:translateX(-50%);
  width:3px; height:7px; background:var(--acc); border-radius:2px;
  animation:scrollWheel 1.9s ease-in-out infinite;
}
@keyframes scrollWheel {
  0%,100%{ transform:translateX(-50%) translateY(0); opacity:1; }
  70%    { transform:translateX(-50%) translateY(13px); opacity:0; }
}

/* Hero arrow bottom */
.hero-arrow {
  position:absolute; bottom:4rem; right:5rem;
  color:rgba(255,255,255,.15);
  animation:bounce 2s ease-in-out infinite;
}
@keyframes bounce { 0%,100%{transform:translateY(0)} 50%{transform:translateY(6px)} }

/* ══ STATS BAR ══ */
.stats-bar {
  position:relative; z-index:1;
  display:grid; grid-template-columns:repeat(4,1fr);
  background:rgba(13,47,110,.2);
  border-top:1px solid var(--glb); border-bottom:1px solid var(--glb);
}
.stat-item {
  padding:2.8rem 2rem; text-align:center;
  border-right:1px solid var(--glb);
  transition:background .3s; position:relative; overflow:hidden;
}
.stat-item::after {
  content:''; position:absolute; inset:0;
  background:linear-gradient(135deg,rgba(26,95,204,.06),transparent);
  opacity:0; transition:opacity .3s;
}
.stat-item:hover::after { opacity:1; }
.stat-item:last-child { border-right:none; }
.stat-value {
  display:flex; align-items:baseline; justify-content:center; gap:.15em;
  font-family:'Bebas Neue',sans-serif; letter-spacing:.04em; line-height:1;
}
.stat-number { font-size:clamp(2.5rem,5vw,3.8rem); color:var(--acc); }
.stat-plus   { font-size:clamp(1.4rem,2.5vw,2rem); color:var(--acc); }
.stat-label  {
  font-size:.67rem; font-weight:600; letter-spacing:.2em; text-transform:uppercase;
  color:var(--txm); margin-top:.5rem;
}

/* ══ SERVICIOS ══ */
#servicios { padding:7rem 5rem; }
.services-grid {
  display:grid; grid-template-columns:repeat(3,1fr); gap:1.2px;
  background:var(--glb); border-radius:var(--r2); overflow:hidden;
}
.service-card {
  background:rgba(6,16,31,.94);
  padding:2.6rem 2.2rem;
  display:flex; flex-direction:column; gap:.7rem;
  border-top:2.5px solid transparent;
  position:relative; overflow:hidden;
  transition:background .3s,border-color .3s,transform .2s;
}
.service-card-glow {
  position:absolute; inset:0;
  background:radial-gradient(circle at 30% 30%,rgba(26,95,204,.15),transparent 60%);
  opacity:0; transition:opacity .4s;
}
.service-card:hover { background:rgba(13,47,110,.5); border-top-color:var(--acc); }
.service-card:hover .service-card-glow { opacity:1; }
.service-card:hover { transform:translateY(-3px); }

.service-icon-wrap { margin-bottom:.3rem; }
.service-icon { font-size:2.2rem; }
.service-card h3 {
  font-family:'Bebas Neue',sans-serif;
  font-size:1.65rem; letter-spacing:.06em;
}
.service-card p { font-size:.82rem; color:var(--txm); line-height:1.7; font-weight:300; flex:1; }
.service-link {
  display:inline-flex; align-items:center; gap:.4rem;
  font-size:.68rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase;
  color:var(--acc); text-decoration:none; margin-top:.5rem;
  transition:gap .2s;
}
.service-link:hover { gap:.7rem; }

/* ══ PROCESO ══ */
#proceso { padding:7rem 5rem; }
.process-timeline {
  display:grid; grid-template-columns:repeat(4,1fr);
  gap:2rem; position:relative;
}
.process-line {
  position:absolute; top:3.8rem; left:12%; right:12%; height:2px;
  background:var(--glb);
}
.process-line-fill {
  height:100%; width:0%;
  background:linear-gradient(90deg,var(--bl),var(--acc));
  transition:width 1.5s var(--ease);
}
.process-step {
  display:flex; flex-direction:column; align-items:center;
  text-align:center; gap:.9rem; padding:1rem;
  position:relative; z-index:2;
}
.step-num {
  font-family:'Bebas Neue',sans-serif; font-size:.8rem; letter-spacing:.25em;
  color:var(--acc); opacity:.5;
}
.step-icon-wrap {
  width:72px; height:72px; border-radius:50%;
  background:var(--gl); border:1.5px solid var(--glb);
  display:flex; align-items:center; justify-content:center;
  font-size:2rem;
  transition:background .3s,border-color .3s,transform .3s var(--spring);
}
.process-step:hover .step-icon-wrap {
  background:rgba(26,95,204,.15); border-color:var(--bl);
  transform:scale(1.12);
}
.process-step h3 {
  font-family:'Bebas Neue',sans-serif;
  font-size:1.45rem; letter-spacing:.06em;
}
.process-step p { font-size:.8rem; color:var(--txm); line-height:1.7; font-weight:300; }

/* ══ GALERÍA ══ */
#reformas { padding:7rem 5rem; }
.gallery-filters {
  display:flex; gap:.6rem; justify-content:center; flex-wrap:wrap;
  margin-bottom:2.8rem;
}
.filter-btn {
  display:inline-flex; align-items:center; gap:.4rem;
  padding:.5rem 1.2rem; border-radius:100px;
  font-size:.68rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
  background:var(--gl); border:1px solid var(--glb); color:var(--txm);
  transition:all .22s var(--ease);
}
.filter-btn:hover  { color:var(--tx); border-color:rgba(255,255,255,.22); }
.filter-btn.active {
  background:var(--acc); color:#06101f;
  border-color:var(--acc); font-weight:700;
  box-shadow:0 4px 16px rgba(240,165,0,.28);
}
.filter-count {
  display:inline-flex; align-items:center; justify-content:center;
  min-width:18px; height:18px; border-radius:100px; font-size:.6rem;
  background:rgba(255,255,255,.12); padding:0 5px;
}
.filter-btn.active .filter-count { background:rgba(6,16,31,.25); }

.gallery-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1rem;
}
/* Masonry-like: primera foto más grande */
.gallery-item:nth-child(1 of .gallery-item) { grid-column:span 2; grid-row:span 2; }

.gallery-item {
  position:relative; overflow:hidden; border-radius:var(--r);
  background:var(--gl); border:1px solid var(--glb);
  aspect-ratio:4/3;
  cursor:none;
  transition:transform .35s var(--ease),box-shadow .35s,opacity .3s;
}
.gallery-item.wide { grid-column:span 2; grid-row:span 2; }
.gallery-item:hover { transform:scale(1.025); box-shadow:0 24px 60px rgba(0,0,0,.55); }

.gallery-item img {
  width:100%; height:100%; object-fit:cover;
  transition:transform .55s var(--ease),filter .3s;
  filter:brightness(.85) saturate(.9);
}
.gallery-item:hover img { transform:scale(1.07); filter:brightness(1) saturate(1); }

.gallery-item-overlay {
  position:absolute; inset:0;
  background:linear-gradient(to top,rgba(6,16,31,.92) 0%,rgba(6,16,31,.1) 45%,transparent 100%);
  display:flex; flex-direction:column; justify-content:flex-end; padding:1.2rem;
  opacity:0; transition:opacity .3s;
}
.gallery-item:hover .gallery-item-overlay { opacity:1; }

.gi-top {
  position:absolute; top:.8rem; right:.8rem;
  display:flex; gap:.4rem;
}
.gi-btn {
  width:34px; height:34px; border-radius:50%;
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.15);
  backdrop-filter:blur(8px);
  display:flex; align-items:center; justify-content:center;
  color:var(--tx); font-size:.85rem; cursor:none;
  transition:all .2s;
}
.gi-btn:hover { background:rgba(240,165,0,.2); border-color:var(--acc); color:var(--acc); }

.gi-title {
  font-family:'Bebas Neue',sans-serif;
  font-size:1.2rem; letter-spacing:.07em;
}
.gi-tag {
  font-size:.62rem; font-weight:700; letter-spacing:.18em;
  text-transform:uppercase; color:var(--acc); margin-top:.15rem;
}

/* Estado vacío */
.gallery-empty {
  display:none; text-align:center; padding:4rem 2rem;
  color:var(--txm); font-size:.88rem;
}
.gallery-empty p:first-child { font-size:2.5rem; margin-bottom:.5rem; }
.gallery-empty.show { display:block; }

.gallery-actions {
  display:flex; align-items:center; justify-content:center; gap:1.2rem;
  margin-top:2rem; flex-wrap:wrap;
}
.gallery-count {
  font-size:.7rem; color:var(--txm); letter-spacing:.1em;
}

/* ══ LIGHTBOX ══ */
#lightbox {
  display:none; position:fixed; inset:0; z-index:999;
  align-items:center; justify-content:center;
  background:rgba(0,0,0,0); backdrop-filter:blur(0);
  transition:background .35s,backdrop-filter .35s;
}
#lightbox.open { display:flex; }
#lightbox.visible { background:rgba(0,0,0,.93); backdrop-filter:blur(16px) saturate(1.2); }

#lightbox-inner {
  position:relative; max-width:92vw;
  opacity:0; transform:scale(.9);
  transition:opacity .3s var(--ease),transform .3s var(--ease);
}
#lightbox.visible #lightbox-inner { opacity:1; transform:none; }

.lightbox-toolbar {
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:.8rem; padding:0 .2rem;
}
.lb-counter { font-size:.7rem; letter-spacing:.2em; color:var(--txm); text-transform:uppercase; }
.lb-actions { display:flex; gap:.5rem; }
.lb-actions button {
  width:36px; height:36px; border-radius:50%;
  background:var(--gl); border:1px solid var(--glb);
  color:var(--txm); display:flex; align-items:center; justify-content:center;
  transition:all .2s;
}
.lb-actions button:hover { background:var(--glh); color:var(--tx); }

.lightbox-img-wrap {
  position:relative; display:flex; align-items:center; justify-content:center;
}
#lightbox-img {
  max-width:88vw; max-height:78vh;
  border-radius:var(--r); object-fit:contain;
  display:block;
  transition:opacity .2s,transform .2s;
  transform-origin:center;
}
#lightbox-img.zoomed { transform:scale(2); cursor:zoom-out; }

.lb-loader {
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none; transition:opacity .2s;
}
.lb-loader.show { opacity:1; }
.lb-spinner {
  width:36px; height:36px; border-radius:50%;
  border:2.5px solid rgba(255,255,255,.15);
  border-top-color:var(--acc);
  animation:spin .7s linear infinite;
}

.lightbox-footer {
  display:flex; align-items:center; justify-content:space-between;
  margin-top:.8rem; padding:0 .2rem;
}
#lightbox-caption { font-size:.78rem; color:var(--txm); letter-spacing:.06em; }
.lb-tag {
  font-size:.62rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  color:var(--acc);
}
#lightbox-prev,#lightbox-next {
  position:fixed; top:50%; transform:translateY(-50%);
  width:50px; height:50px; border-radius:50%;
  background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.12);
  color:var(--tx); display:flex; align-items:center; justify-content:center;
  transition:all .22s; backdrop-filter:blur(8px);
}
#lightbox-prev { left:1.5rem; }
#lightbox-next { right:1.5rem; }
#lightbox-prev:hover,#lightbox-next:hover {
  background:rgba(240,165,0,.15); border-color:var(--acc); color:var(--acc);
  transform:translateY(-50%) scale(1.08);
}

/* ══ MANCOMUNIDADES ══ */
#mancomunidades { padding:7rem 5rem; }
.manco-layout {
  display:grid; grid-template-columns:1fr 1fr;
  gap:5rem; align-items:start;
}
.manco-info > p {
  color:var(--txm); font-size:.88rem; line-height:1.9; font-weight:300;
  margin-bottom:1.1rem;
}
.highlights { display:flex; flex-direction:column; gap:.6rem; margin:1.6rem 0; }
.highlight-item {
  display:flex; align-items:center; gap:.9rem;
  padding:.85rem 1.2rem;
  background:rgba(240,165,0,.06); border-left:2.5px solid var(--acc);
  border-radius:0 var(--r) var(--r) 0;
  transition:background .25s;
}
.highlight-item:hover { background:rgba(240,165,0,.11); }
.check { color:var(--acc); font-size:.9rem; flex-shrink:0; }
.highlight-item span:last-child { font-size:.82rem; font-weight:500; color:rgba(255,255,255,.8); }
.manco-ctas { display:flex; gap:.8rem; flex-wrap:wrap; margin-top:2rem; }

.manco-services {
  display:grid; grid-template-columns:1fr 1fr; gap:.9rem;
}
.manco-card {
  background:var(--gl); border:1px solid var(--glb);
  border-radius:var(--r); padding:1.6rem;
  position:relative; overflow:hidden;
  transition:all .32s var(--ease);
}
.manco-card::before {
  content:''; position:absolute; inset:0;
  background:linear-gradient(135deg,rgba(26,95,204,.12),transparent);
  opacity:0; transition:opacity .3s;
}
.manco-card:hover {
  background:var(--glh); border-color:rgba(26,95,204,.38);
  transform:translateY(-5px);
  box-shadow:0 14px 36px rgba(0,0,0,.3);
}
.manco-card:hover::before { opacity:1; }
.manco-card .mico { font-size:2rem; margin-bottom:.6rem; }
.manco-card h4 {
  font-size:.78rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  margin-bottom:.45rem;
}
.manco-card p { font-size:.75rem; color:var(--txm); line-height:1.65; font-weight:300; }

/* ══ TESTIMONIOS ══ */
#testimonios { padding:7rem 5rem; }
.testimonials-wrap { position:relative; }
.testimonials-track-wrap {
  overflow:hidden; border-radius:var(--r2);
  margin:0 -1rem; padding:0 1rem;
}
.testimonials-track {
  display:flex; gap:1.5rem;
  transition:transform .55s var(--ease);
  will-change:transform;
}
.testimonial-card {
  background:var(--gl); border:1px solid var(--glb);
  border-radius:var(--r2); padding:2rem 1.8rem;
  min-width:calc(33.333% - 1rem);
  flex-shrink:0;
  transition:border-color .3s,box-shadow .3s;
}
.testimonial-card:hover {
  border-color:rgba(240,165,0,.28);
  box-shadow:0 12px 32px rgba(0,0,0,.3);
}
.tc-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; }
.stars { color:var(--acc); letter-spacing:.1em; font-size:1.1rem; }
.tc-verified {
  font-size:.6rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  color:rgba(34,197,94,.8);
}
.testimonial-card blockquote {
  font-size:.84rem; color:var(--txm); line-height:1.8; font-weight:300;
  font-style:italic; margin-bottom:1.4rem;
  quotes:none;
}
.testimonial-author {
  display:flex; align-items:center; gap:1rem;
}
.author-avatar {
  width:42px; height:42px; border-radius:50%;
  background:linear-gradient(135deg,var(--bm),var(--bl));
  display:flex; align-items:center; justify-content:center;
  font-size:.75rem; font-weight:700; color:var(--tx);
  flex-shrink:0;
}
.testimonial-author strong { display:block; font-size:.82rem; font-weight:600; }
.testimonial-author span { font-size:.7rem; color:var(--txm); }

.testimonials-controls {
  display:flex; align-items:center; justify-content:center; gap:1.2rem;
  margin-top:2rem;
}
.testimonial-nav {
  width:44px; height:44px; border-radius:50%;
  background:var(--gl); border:1px solid var(--glb);
  color:var(--tx); display:flex; align-items:center; justify-content:center;
  transition:all .22s;
}
.testimonial-nav:hover { background:rgba(240,165,0,.12); border-color:var(--acc); color:var(--acc); }
.testimonial-dots { display:flex; gap:.6rem; align-items:center; }
.tdot {
  width:8px; height:8px; border-radius:50%;
  background:var(--glb); border:none; cursor:none;
  transition:all .25s;
}
.tdot.active { width:24px; border-radius:4px; background:var(--acc); }

/* ══ CTA BANNER ══ */
.cta-banner {
  position:relative; z-index:1;
  display:flex; align-items:center; justify-content:space-between;
  gap:2rem; padding:4.5rem 5rem;
  overflow:hidden;
}
.cta-bg {
  position:absolute; inset:0; z-index:0;
  background:linear-gradient(135deg,rgba(13,47,110,.5) 0%,rgba(26,95,204,.2) 50%,rgba(13,47,110,.5) 100%);
  border-top:1px solid rgba(26,95,204,.25); border-bottom:1px solid rgba(26,95,204,.25);
}
.cta-content { position:relative; z-index:1; }
.cta-content h2 {
  font-family:'Bebas Neue',sans-serif;
  font-size:clamp(2rem,4vw,3.2rem); letter-spacing:.06em;
  margin-bottom:.5rem;
}
.cta-content p { font-size:.88rem; color:var(--txm); font-weight:300; }
.cta-banner .btn { position:relative; z-index:1; flex-shrink:0; }

/* ══ CONTACTO ══ */
#contacto { padding:7rem 5rem; }
.contact-layout {
  display:grid; grid-template-columns:1fr;
  max-width:680px; margin:0 auto;
}
.contact-info > p {
  font-size:.88rem; color:var(--txm); line-height:1.85; font-weight:300;
  margin:1.5rem 0;
}
.contact-details { display:flex; flex-direction:column; gap:.7rem; margin-top:1.5rem; }
.contact-item {
  display:flex; align-items:center; gap:1rem;
  padding:1rem 1.2rem;
  background:var(--gl); border:1px solid var(--glb); border-radius:var(--r);
  text-decoration:none; color:inherit; transition:all .25s;
}
.contact-item:hover { background:var(--glh); border-color:rgba(26,95,204,.3); transform:translateX(4px); }
.contact-item-icon { font-size:1.2rem; flex-shrink:0; }
.contact-item strong {
  display:block; font-size:.72rem; font-weight:700;
  letter-spacing:.08em; text-transform:uppercase; margin-bottom:.2rem;
}
.contact-item span { font-size:.82rem; color:var(--txm); }
.contact-social { display:flex; gap:.7rem; flex-wrap:wrap; margin-top:1.5rem; }
.social-btn {
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.65rem 1.2rem; border-radius:var(--r);
  font-size:.7rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  background:var(--gl); border:1px solid var(--glb);
  text-decoration:none; color:var(--tx); transition:all .25s;
}
.social-btn:hover { background:var(--glh); border-color:var(--acc); color:var(--acc); }

/* ══ FOOTER ══ */
footer { position:relative; z-index:1; border-top:1px solid var(--glb); padding:5rem 5rem 2.5rem; }
.footer-inner {
  display:grid; grid-template-columns:2fr 1fr 1fr 1.6fr; gap:3rem;
}
.footer-logo {
  margin-bottom:.8rem;
}
.footer-logo-img {
  height:70px; width:auto;
  filter: brightness(0) invert(1);
  opacity: 0.85;
}
[data-theme="light"] .footer-logo-img {
  filter: none;
}
.footer-brand p { font-size:.77rem; color:rgba(255,255,255,.26); line-height:1.7; max-width:240px; font-weight:300; }
.footer-social { display:flex; gap:.8rem; margin-top:1.3rem; }
.footer-social a {
  width:38px; height:38px; border-radius:50%;
  background:var(--gl); border:1px solid var(--glb);
  display:flex; align-items:center; justify-content:center;
  color:var(--txm); text-decoration:none; transition:all .22s;
}
.footer-social a:hover { transform:translateY(-3px); background:rgba(240,165,0,.1); border-color:var(--acc); color:var(--acc); }

.footer-nav h5 { font-size:.6rem; font-weight:700; letter-spacing:.3em; text-transform:uppercase; color:var(--acc); margin-bottom:1.1rem; }
.footer-nav a {
  display:block; font-size:.78rem; color:var(--txd);
  text-decoration:none; margin-bottom:.5rem;
  transition:color .2s,transform .2s;
}
.footer-nav a:hover { color:var(--tx); transform:translateX(4px); }

.footer-contact-info h5 { font-size:.6rem; font-weight:700; letter-spacing:.3em; text-transform:uppercase; color:var(--acc); margin-bottom:1.1rem; }
.footer-contact-info p { font-size:.78rem; color:var(--txd); margin-bottom:.5rem; }
.footer-contact-info a { text-decoration:none; color:inherit; transition:color .2s; }
.footer-contact-info a:hover { color:var(--acc); }
.footer-badge {
  display:inline-flex; align-items:center; gap:.5rem; margin-top:1rem;
  padding:.5rem .9rem; background:rgba(240,165,0,.07);
  border:1px solid rgba(240,165,0,.2); border-radius:var(--r);
  font-size:.67rem; font-weight:600;
}
.footer-badge span:first-child { color:var(--acc); }
.footer-badge span:last-child  { color:var(--txm); }

.footer-bottom {
  display:flex; justify-content:space-between; align-items:center;
  flex-wrap:wrap; gap:1rem;
  margin-top:3.5rem; padding-top:1.5rem; border-top:1px solid var(--glb);
}
.footer-bottom p { font-size:.67rem; color:var(--txd); }
.footer-legal { display:flex; gap:1.5rem; }
.footer-legal a { font-size:.67rem; color:var(--txd); text-decoration:none; transition:color .2s; }
.footer-legal a:hover { color:var(--acc); }

/* ══ TOAST ══ */
#toast {
  position:fixed; bottom:2rem; left:50%;
  transform:translateX(-50%) translateY(80px);
  padding:1rem 2rem; border-radius:100px;
  font-size:.82rem; font-weight:600; z-index:500;
  opacity:0; transition:all .4s var(--ease);
  white-space:nowrap; pointer-events:none;
  background:linear-gradient(135deg,#22c55e,#16a34a);
  color:#fff; box-shadow:0 8px 28px rgba(34,197,94,.3);
}
#toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
#toast.warn { background:linear-gradient(135deg,#f59e0b,#d97706); box-shadow:0 8px 28px rgba(245,158,11,.28); }

/* ══ BACK TO TOP ══ */
#back-top {
  position:fixed; bottom:2rem; right:2rem; z-index:90;
  width:48px; height:48px; border-radius:50%;
  border:1px solid var(--glb); background:var(--gl);
  color:var(--tx); display:flex; align-items:center; justify-content:center;
  backdrop-filter:blur(8px);
  opacity:0; transform:translateY(18px);
  transition:opacity .3s,transform .3s,background .22s,border-color .22s;
}
#back-top.visible { opacity:1; transform:translateY(0); }
#back-top:hover { background:rgba(240,165,0,.14); border-color:var(--acc); color:var(--acc); transform:translateY(-3px) !important; }

/* ══ COOKIE BANNER ══ */
#cookie-banner {
  position:fixed; bottom:1.5rem; left:1.5rem; z-index:300;
  background:rgba(6,16,31,.96); border:1px solid var(--glb);
  border-radius:var(--r2); padding:1.3rem 1.6rem;
  max-width:360px; width:calc(100% - 3rem);
  display:flex; flex-direction:column; gap:.9rem;
  backdrop-filter:blur(14px); box-shadow:0 24px 56px rgba(0,0,0,.45);
  transition:transform .45s var(--ease),opacity .45s;
}
#cookie-banner.hidden { transform:translateY(120%); opacity:0; pointer-events:none; }
#cookie-banner p { font-size:.78rem; color:var(--txm); line-height:1.6; }
#cookie-banner a { color:var(--acc); text-decoration:none; }
.cookie-actions { display:flex; gap:.7rem; }

/* ══ KEYFRAMES GLOBALES ══ */
@keyframes fadeUp  { from{opacity:0;transform:translateY(28px)}  to{opacity:1;transform:none} }
@keyframes fadeIn  { from{opacity:0} to{opacity:1} }
@keyframes glitch  {
  0%  { text-shadow: 4px 0 0 rgba(255,0,60,.75),-4px 0 0 rgba(0,180,255,.75); }
  33% { text-shadow:-5px 0 0 rgba(255,0,60,.7),  5px 0 0 rgba(0,180,255,.7);  clip-path:inset(25% 0 35% 0); }
  66% { text-shadow: 4px 3px 0 rgba(255,0,60,.7),-4px-3px 0 rgba(0,180,255,.7); clip-path:inset(65% 0 8% 0); }
  100%{ text-shadow:none; clip-path:none; }
}
@keyframes shake  {
  0%,100%{ transform:translateX(0); }
  15%    { transform:translateX(-9px); }
  30%    { transform:translateX(9px); }
  50%    { transform:translateX(-6px); }
  70%    { transform:translateX(6px); }
}

/* ══ RESPONSIVE ══ */
@media(max-width:1200px){
  .services-grid { grid-template-columns:repeat(2,1fr); }
  .footer-inner  { grid-template-columns:1fr 1fr; }
}
@media(max-width:1024px){
  .manco-layout    { grid-template-columns:1fr; gap:3.5rem; }
  .process-timeline{ grid-template-columns:repeat(2,1fr); }
  .process-line    { display:none; }
  .testimonial-card{ min-width:calc(50% - .75rem); }
}
@media(max-width:900px){
  #navbar { padding:0 1.8rem; }
  .nav-links,.nav-actions .btn { display:none; }
  .hamburger { display:flex; }
  .section-pad { padding:5rem 1.8rem; }
  #servicios,#proceso,#reformas,#testimonios,#contacto,#mancomunidades { padding:5rem 1.8rem; }
  .gallery-grid { grid-template-columns:repeat(2,1fr); }
  .gallery-item:nth-child(1 of .gallery-item) { grid-column:span 1; grid-row:span 1; }
  .stats-bar { grid-template-columns:repeat(2,1fr); }
  .cta-banner { padding:3.5rem 2rem; flex-direction:column; text-align:center; }
  footer { padding:3rem 1.8rem 1.5rem; }
  .gallery-filters { gap:.4rem; }
}
@media(max-width:580px){
  .gallery-grid { grid-template-columns:1fr; }
  .manco-services { grid-template-columns:1fr; }
  .stats-bar { grid-template-columns:1fr 1fr; }
  .services-grid { grid-template-columns:1fr; }
  .process-timeline { grid-template-columns:1fr; }
  .hero-badges { flex-direction:column; align-items:center; }
  .testimonial-card { min-width:280px; }
  .footer-inner { grid-template-columns:1fr; gap:2rem; }
  .hero-cta { flex-direction:column; align-items:center; }
  .hero-arrow { display:none; }
  #lightbox-prev { left:.5rem; }
  #lightbox-next { right:.5rem; }
}
