:root{
  --base-1:#2d4b44; --base-2:#233a34; --brand-fg:#E3E9EA; --ink:#0f1614;
  --primary:#2A4742;
  --mint:#A7D7C5; --cyan:#7FD3E0; --gold:#E8C872; --coral:#F2A49B; --violet:#CDB4DB;
  --accentA: var(--primary); --accentB: var(--mint);
}
*{box-sizing:border-box}
html,body{
  margin:0;padding:0;
  font-family:Poppins,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,'Noto Sans',sans-serif;
  color:var(--brand-fg);
  background: linear-gradient(180deg, var(--base-1), var(--base-2));
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.container{max-width:1100px;margin:0 auto;padding:20px}

/* Header */
.header{position:sticky;top:0;background:rgba(22,30,36,.85);backdrop-filter:blur(6px);z-index:60;border-bottom:1px solid rgba(227,233,234,.12)}
.header::after{content:"";display:block;height:3px;background:linear-gradient(90deg,var(--primary), var(--mint), transparent);opacity:.7}
.header-inner{display:flex;align-items:center;gap:16px;padding:10px 16px}
.header .logo{height:52px;border-radius:10px}
.nav{margin-left:auto;display:flex;gap:12px}
.nav a{padding:8px 12px;border:1px solid rgba(227,233,234,.12);border-radius:12px;font-weight:600;transition:.2s}
.nav a:hover{background:linear-gradient(135deg, rgba(42,71,66,.30), rgba(167,215,197,.22)); box-shadow:0 6px 20px rgba(0,0,0,.25)}

/* === Background floaters (esferas) === */
/* el body será el referente para el absolute */
body{ position: relative; }

/* contenedor fondo (no crea scroll propio) #0f1519 */
.bg-floaters{
  position:absolute;
  inset:0;
  min-height:100%;
  z-index:0;
  pointer-events:none;
  overflow:hidden;
}

/* Esferas */
.bg-floaters .s{
  position:absolute;
  border-radius:50%;
  filter:blur(34px);
  opacity:0; /* arranca invisible; la animación controla la opacidad */
  will-change: transform, opacity;
  animation:
    drift 26s ease-in-out infinite,
    fadeInOut 18s ease-in-out infinite;
}

/* Colores */
.bg-floaters .m1{ background:var(--mint) }
.bg-floaters .m2{ background:var(--cyan) }
.bg-floaters .m3{ background:var(--gold) }
.bg-floaters .m4{ background:var(--violet) }
.bg-floaters .m5{ background:var(--coral) }
.bg-floaters .m6{ background:var(--primary); opacity:.18 }

/* Tamaños */
.bg-floaters .sm{ width:200px; height:200px }
.bg-floaters .md{ width:260px; height:260px }
.bg-floaters .lg{ width:320px; height:320px }
.bg-floaters .xl{ width:380px; height:380px }

/* Distribución vertical (16 puntos a lo largo de la página) */
.bg-floaters .s1  { top:  4%; left: 6%;   animation-duration:28s,20s }
.bg-floaters .s2  { top: 16%; right:12%;  animation-duration:30s,22s }
.bg-floaters .s3  { top: 30%; left:18%;   animation-duration:26s,19s }
.bg-floaters .s4  { top: 42%; right: 8%;  animation-duration:32s,24s }
.bg-floaters .s5  { top: 54%; left:10%;   animation-duration:29s,21s }
.bg-floaters .s6  { top: 66%; left:60%;   animation-duration:31s,23s }
.bg-floaters .s7  { top: 78%; right:16%;  animation-duration:27s,18s }
.bg-floaters .s8  { top: 90%; left:40%;   animation-duration:33s,26s }
.bg-floaters .s9  { top:110%; right:10%;  animation-duration:28s,20s }
.bg-floaters .s10 { top:130%; left:15%;   animation-duration:30s,22s }
.bg-floaters .s11 { top:150%; right:20%;  animation-duration:26s,19s }
.bg-floaters .s12 { top:170%; left:55%;   animation-duration:32s,24s }
.bg-floaters .s13 { top:190%; right:35%;  animation-duration:29s,21s }
.bg-floaters .s14 { top:210%; left: 5%;   animation-duration:31s,23s }
.bg-floaters .s15 { top:230%; right:12%;  animation-duration:27s,18s }
.bg-floaters .s16 { top:250%; left:45%;   animation-duration:33s,26s }

/* Animaciones */
@keyframes drift{
  0%{ transform:translate3d(0,0,0) scale(1) }
  25%{ transform:translate3d(-24px, 18px,0) scale(1.04) }
  50%{ transform:translate3d( 18px,-16px,0) scale(1.07) }
  75%{ transform:translate3d( 26px, 22px,0) scale(1.03) }
  100%{ transform:translate3d(0,0,0) scale(1) }
}
@keyframes fadeInOut{
  0%,100% { opacity:0 }
  10%,90% { opacity:.26 }
  50%     { opacity:.34 }
}

/* Hero */
.hero{position:relative;display:grid;grid-template-columns:1.25fr 1fr;gap:24px;align-items:center;padding:40px 20px 10px;isolation:isolate;z-index:1}
.hero h1{font-size:clamp(36px,4.4vw,64px);letter-spacing:.05em;font-weight:800;margin:.1em 0 .2em}
.hero p{font-size:1.1rem;line-height:1.6;color:#e8eff1}
.hero .glass{background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03));border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:18px;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.badge{padding:8px 12px;border-radius:999px;font-weight:700;opacity:.95;border:0;color:#0f1614;background:linear-gradient(135deg, var(--accentA), var(--accentB))}

/* Cards */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;margin-top:24px;z-index:1;position:relative}
.card{position:relative;background:rgba(255,255,255,.04);border:1px solid rgba(227,233,234,.12);border-radius:18px;padding:18px;box-shadow:0 10px 40px rgba(0,0,0,.15);transition:transform .2s ease, box-shadow .2s ease}
.card:hover{transform:translateY(-4px);box-shadow:0 14px 60px rgba(0,0,0,.25)}
.card h3{margin:.2em 0 .6em;font-size:1.2rem}
.card p{color:#e5ecee}
.card::after{content:"";position:absolute;left:16px;right:16px;top:12px;height:4px;border-radius:999px;background:linear-gradient(90deg,var(--accentA),var(--accentB));opacity:.95}

/* Sections */
.section{padding:24px 20px;position:relative;z-index:1}
.section h2{font-size:1.8rem;margin:0 0 10px;letter-spacing:.08em}
.section h2::after{content:"";display:block;width:140px;height:6px;border-radius:999px;margin-top:10px;background:linear-gradient(90deg,var(--accentA),var(--accentB));opacity:.95}
.section .muted{opacity:.9}

/* Forms & Buttons */
.form{display:grid;gap:10px}
label{font-weight:600}
input[type=text],input[type=password],textarea,select{width:100%;padding:10px;border-radius:12px;border:1px solid rgba(227,233,234,.25);background:rgba(255,255,255,.07);color:var(--brand-fg)}
button,.btn{cursor:pointer;padding:10px 14px;border-radius:12px;border:0;font-weight:800;color:#0f1614;background:linear-gradient(135deg,var(--accentA),var(--accentB));transition:.2s}
button:hover,.btn:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(0,0,0,.22)}

/* Footer */
.footer{padding:26px 20px;border-top:1px solid rgba(227,233,234,.12);text-align:center;color:#e1e8ea}

/* Redes flotantes */
.social-fabs{position:fixed;right:18px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px;z-index:70}
.social-fabs a{position:relative;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg, rgba(255,255,255,.12), rgba(255,255,255,.04));border:1px solid rgba(227,233,234,.2);box-shadow:0 10px 25px rgba(0,0,0,.25);animation:float 5s ease-in-out infinite, pulse 3.5s ease-in-out infinite;backdrop-filter:blur(4px)}
.social-fabs a:hover{background:linear-gradient(135deg, rgba(42,71,66,.30), rgba(167,215,197,.22))}
.social-fabs svg{width:22px;height:22px}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(210,216,219,.35)}70%{box-shadow:0 0 0 10px rgba(210,216,219,0)}100%{box-shadow:0 0 0 0 rgba(210,216,219,0)}}

/* Acentos por area */
.accent{ --accentA: var(--primary); --accentB: var(--mint); }
.accent-electricidad{ --accentA: var(--cyan);    --accentB: var(--mint); }
.accent-domotica{     --accentA: var(--violet);  --accentB: var(--cyan); }
.accent-hidraulica{   --accentA: var(--mint);    --accentB: var(--cyan); }
.accent-construccion{ --accentA: var(--gold);    --accentB: var(--mint); }
.accent-electronica{  --accentA: var(--coral);   --accentB: var(--gold); }
.accent-carapp{       --accentA: var(--cyan);    --accentB: var(--violet); }

/* Hero ancho = igual al container */
.hero.hero-wide{
  grid-template-columns: 1fr;
  margin-left: 0; margin-right: 0;
  padding-left: 0; padding-right: 0;
}
.hero.hero-wide .glass{
  width: min(1100px, calc(100vw - 40px));
  margin: 0 auto;
  border-radius: 20px;
}

/* Evitar scroll horizontal */
html, body { overflow-x: hidden; }

/* Centrados en hero */
.hero.hero-wide .glass{ display:grid; row-gap:12px; }
.hero.hero-wide .glass h1{ justify-self:center; text-align:center; }
.hero.hero-wide .badges{ justify-content:center; align-content:center; margin:16px auto 0; width:fit-content; }

/* Hover para chips */
.hero.hero-wide .badges .badge{
  position:relative; display:inline-flex; align-items:center;
  padding:10px 16px; border-radius:999px;
  background:linear-gradient(135deg, var(--accentA), var(--accentB));
  box-shadow:0 6px 14px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.08);
  transition:transform .18s ease, box-shadow .18s ease, filter .18s ease, background-position .25s ease;
  background-size:180% 180%; cursor:pointer; -webkit-tap-highlight-color:transparent;
}
.hero.hero-wide .badges .badge:hover{ transform:translateY(-3px) scale(1.03); box-shadow:0 10px 24px rgba(0,0,0,.28); filter:brightness(1.05) saturate(1.05); background-position:100% 0; }
.hero.hero-wide .badges .badge:active{ transform:translateY(-1px) scale(0.99); box-shadow:0 6px 16px rgba(0,0,0,.24); }
.hero.hero-wide .badges .badge:focus-visible{ outline:2px solid rgba(167,215,197,.95); outline-offset:3px; }

/* Scroll suave + compensación header */
html { scroll-behavior: smooth; }
:root{ --header-h: 64px; }
#servicios, #proyectos, #contacto { scroll-margin-top: calc(var(--header-h) + 12px); }

/* ===== Admin limpio ===== */
.admin-wrap{ max-width:1100px; margin:0 auto; padding:20px; position:relative; z-index:1; }
.admin-title{ font-size:2rem; font-weight:800; letter-spacing:.06em; margin:14px 0 8px; }
.admin-sub{ opacity:.85; margin-bottom:12px; }

.admin-grid{ display:grid; grid-template-columns:repeat(12,1fr); gap:24px; align-items:start; }
.admin-card{ grid-column:span 4; background:rgba(255,255,255,.04); border:1px solid rgba(227,233,234,.12); border-radius:16px; padding:16px; box-shadow:0 10px 40px rgba(0,0,0,.15); }
@media (max-width:1200px){ .admin-card{ grid-column:span 6 } }
@media (max-width:720px){ .admin-card{ grid-column:1 / -1 } }

/* Fuerza dos columnas en desktop cuando el contenedor tenga .two-col */
.admin-grid.two-col .admin-card{ grid-column:span 6; }
@media (max-width:900px){ .admin-grid.two-col .admin-card{ grid-column:1 / -1 } }

.admin-card .form-row{ display:flex; gap:10px; }
.admin-card .form-row > *{ flex:1; }
.admin-card input[type=text], .admin-card input[type=password], .admin-card input[type=file],
.admin-card textarea, .admin-card select{ width:100%; min-height:38px; }

.admin-card .btn, .admin-card button{
  cursor:pointer; padding:9px 14px; border-radius:12px; border:0;
  font-weight:800; color:#0f1614; background:linear-gradient(135deg,var(--accentA),var(--accentB)); transition:.18s;
}
.admin-card .btn:hover{ transform:translateY(-1px); box-shadow:0 10px 24px rgba(0,0,0,.22); }

.admin-table{ width:100%; border-collapse:separate; border-spacing:0; }
.admin-table th, .admin-table td{ padding:10px; text-align:left; vertical-align:top; }
.admin-table thead th{ opacity:.9; font-weight:700; }
.admin-table .actions{ white-space:nowrap; display:flex; gap:8px; flex-wrap:wrap; }
.wrap{ word-break:break-word; overflow-wrap:anywhere; }
.inline{ display:flex; align-items:center; gap:8px; }

.admin-edit details{ margin-top:8px; }
.admin-edit summary{
  cursor:pointer; display:inline-block; padding:6px 10px; border-radius:10px;
  background:rgba(255,255,255,.06); border:1px solid rgba(227,233,234,.12); font-weight:600; user-select:none;
}
.admin-edit summary:focus{ outline:2px solid rgba(167,215,197,.6); outline-offset:3px; }
.admin-edit form{ margin-top:10px; }

/* Videos responsive */
.video-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-top:10px}
.video{background:rgba(255,255,255,.04);border:1px solid rgba(227,233,234,.12);border-radius:16px;overflow:hidden;box-shadow:0 10px 40px rgba(0,0,0,.15)}
.video .frame{position:relative;padding-top:56.25%}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video .meta{display:flex;justify-content:space-between;align-items:center;padding:10px 12px}
.btn-link{padding:6px 10px;border-radius:10px;border:1px solid rgba(227,233,234,.2);font-weight:700}
.btn-link:hover{background:rgba(255,255,255,.06)}

/* ============ HA-LIKE PHONE SIMULATOR ============ */
.ha-phone{width:min(420px,92vw);aspect-ratio:9/19;border-radius:28px;overflow:hidden;
  border:1px solid rgba(227,233,234,.18);box-shadow:0 24px 80px rgba(0,0,0,.35), inset 0 0 0 6px rgba(0,0,0,.35);
  background:#0e1417;display:flex;flex-direction:column}
.ha-bar{height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;
  border-bottom:1px solid rgba(227,233,234,.12);background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02))}
.ha-bar .ttl{font-weight:700;letter-spacing:.02em}
.ha-ico{width:24px;height:24px;display:grid;place-items:center;border-radius:8px;border:1px solid rgba(227,233,234,.12)}
.ha-body{flex:1;overflow:auto}
.ha-sec{padding:12px 12px 2px}
.ha-sec h4{margin:0 0 8px 4px;opacity:.9}
.ha-row{display:flex;gap:8px;flex-wrap:wrap}
.ha-chip{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;cursor:pointer;
  border:1px solid rgba(227,233,234,.14);background:rgba(255,255,255,.05);font-weight:600;transition:.18s}
.ha-chip.on{color:#0f1614;border-color:transparent;background:linear-gradient(135deg,var(--accentA),var(--accentB))}
.ha-chip small{opacity:.9}
.ha-card{background:rgba(255,255,255,.05);border:1px solid rgba(227,233,234,.12);border-radius:14px;padding:10px}
.ha-kv{display:flex;justify-content:space-between;align-items:center}
.ha-kv b{font-variant-numeric:tabular-nums}
.ha-range{appearance:none;width:100%;height:6px;border-radius:999px;background:rgba(255,255,255,.12);outline:0}
.ha-range::-webkit-slider-thumb{appearance:none;width:18px;height:18px;border-radius:50%;
  background:linear-gradient(135deg,var(--accentA),var(--accentB));border:0;box-shadow:0 0 0 4px rgba(0,0,0,.25)}
.ha-bottom{margin-top:auto;padding:10px;border-top:1px solid rgba(227,233,234,.12);display:flex;justify-content:center}
.ha-btn-link{padding:6px 10px;border-radius:10px;border:1px solid rgba(227,233,234,.2);font-weight:700}
.ha-btn-link:hover{background:rgba(255,255,255,.06)}

/* === Rejilla fija para Áreas de trabajo / Proyectos === */
#servicios .grid,
#proyectos .grid{
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)); /* 3 col en desktop */
  gap: 18px;
}
/* 2 col en tablet, 1 col en móvil */
@media (max-width: 980px){
  #servicios .grid,
  #proyectos .grid{ grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 640px){
  #servicios .grid,
  #proyectos .grid{ grid-template-columns: 1fr; }
}
/* Evita que alguna regla obligue a ocupar toda la fila */
#servicios .grid > *,
#proyectos .grid > *{
  grid-column: auto !important;
}

/* ===== Cortar la página al llegar al footer ===== */
body{ display:flex; flex-direction:column; min-height:100dvh; }
main{ flex:1 0 auto; }
.footer{ margin-top:auto; }
.section:last-of-type{ padding-bottom: 0; }
/* === Fix 1: fondo exacto original (bloquea overrides) === */
html, body{
  background: linear-gradient(180deg, var(--base-1), var(--base-2)) !important;
}

/* === Fix 2: tamaño del logo en el hero (más pequeño) === */
.hero .hero-logo{
  height: clamp(48px, 9vw, 96px) !important; /* antes: clamp(56px, 12vw, 120px) */
  width: auto;
}
/* Centrar el logo del hero en toda la fila (grid) */
.hero .hero-logo{
  display:block;
  margin:6px auto 10px;
  height: clamp(48px, 9vw, 96px); /* mismo tamaño que dejamos */
  width:auto;
  grid-column: 1 / -1 !important;   /* ocupa ambas columnas */
  justify-self: center !important;  /* y se centra */
}
/* === Fondo verde más claro (restaurado) === */
:root{
  --base-1: #2d4b44; /* parte superior: verde pizarra claro */
  --base-2: #233a34; /* parte inferior: verde carbón claro */
}
/* El gradiente ya usa estas variables:
   html, body { background: linear-gradient(180deg, var(--base-1), var(--base-2)); } */
/* ================= VIDA + COLOR (40% verde / 60% otros) ================= */
/* Pegar al FINAL del CSS */
:root{
  /* Mantengo tu verde base y lo uso como “columna vertebral” */
  --base-1:#2d4b44;   /* verde pizarra claro (arriba)  */
  --base-2:#233a34;   /* verde carbón claro (abajo)    */

  /* Paleta de “lavados” de color (RGB para usar con rgba()) */
  --mint-rgb:   191,230,215;   /* #BFE6D7 */
  --cyan-rgb:   158,228,238;   /* #9EE4EE */
  --gold-rgb:   240,215,143;   /* #F0D78F */
  --violet-rgb: 224,198,250;   /* #E0C6FA */
  --coral-rgb:  246,187,180;   /* #F6BBB4 */
}

/* Fondo multicapas: 40% verde (primary) + 60% acentos suaves en esquinas */
html,body{
  background:
    /* “lavados” de color discretos */
    radial-gradient(900px 520px at 12% 10%,  rgba(var(--cyan-rgb), .14),  transparent 60%),
    radial-gradient(900px 520px at 85% 18%,  rgba(var(--violet-rgb), .12), transparent 62%),
    radial-gradient(900px 520px at 82% 85%,  rgba(var(--gold-rgb), .12),   transparent 62%),
    radial-gradient(900px 520px at 18% 88%,  rgba(var(--coral-rgb), .10),  transparent 62%),

    /* columna vertebral verde ~40% */
    linear-gradient(180deg, var(--base-1) 0%, #2A4742 40%, var(--base-2) 100%) !important;
  /* no cambia el layout */
}

/* Un pelín más de claridad para que “levante” sin perder estilo */
.hero .glass{
  background: linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.05));
  border: 1px solid rgba(255,255,255,.18);
}
.card{
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(227,233,234,.16);
}

/* Las esferas siguen sumando color, pero sin “ahogar” en verde */
.bg-floaters .s{ opacity:.14; } /* era 0→.26 según animación; bajamos base para balance */
/* ===== FONDO "CARNAVAL" (solo color, sin mover nada) ===== */
.bg-floaters { isolation: isolate; }   /* capa propia para los pseudo-elementos */
.bg-floaters .s{ z-index: 1; }         /* las esferas quedan por encima del fondo */

.bg-floaters::before{
  content:"";
  position:absolute;
  inset:-12%;                 /* se extiende un poco fuera para que el blur no corte */
  z-index:0;
  background:
    /* manchas de color suaves (usa tu paleta) */
    radial-gradient(60% 55% at 12% 10%,  #7FD3E033 0 55%, transparent 60%), /* cyan */
    radial-gradient(65% 55% at 88% 14%,  #CDB4DB33 0 55%, transparent 60%), /* violeta */
    radial-gradient(60% 55% at 82% 86%,  #E8C87233 0 55%, transparent 60%), /* dorado */
    radial-gradient(65% 55% at 18% 88%,  #F2A49B2E 0 55%, transparent 62%), /* coral */
    radial-gradient(45% 45% at 50% 50%,  #A7D7C529 0 40%, transparent 60%), /* mint  */
    /* tu columna vertebral verde debajo */
    linear-gradient(180deg, var(--base-1), var(--base-2));
  filter: blur(40px) saturate(1.15);
  opacity:.95;
  pointer-events:none;
}

.bg-floaters::after{
  content:"";
  position:absolute;
  inset:-20%;
  z-index:0;
  background:
    repeating-conic-gradient(
      from 0deg at 50% 50%,
      #7FD3E01A 0 10deg,   /* cyan   */
      #CDB4DB1A 10deg 20deg,/* violeta*/
      #E8C8721A 20deg 30deg,/* dorado */
      #F2A49B1A 30deg 40deg,/* coral  */
      #A7D7C51A 40deg 50deg,/* mint   */
      transparent 50deg 60deg
    );
  mix-blend-mode: screen;   /* suma luz sin apagar el fondo */
  filter: blur(60px);
  opacity:.45;
  pointer-events:none;
}
