/* =========================================================
   PALETAS & TOKENS
   ========================================================= */

/* -------- Base oscura (DEFAULT) -------- */
:root{
  /* Brand / acción */
  --primary:#2BAA5A;
  --primary-weak:#18d26e;
  --primary-strong:#0b0f0d;
  --primary-contrast:#0b0f0d;

  /* Superficies */
  --bg:#0f1316;
  --bg-alt:#121619;
  --card:#111111;
  --card-alt:#161b1f;

  /* Texto */
  --text:#e8e8e8;
  --text-muted:#b8c1c8;

  /* Bordes */
  --border:#222222;
  --border-alt:#1c2227;

  /* Enlaces */
  --link:#a9f0c5;
  --link-hover:#c7ffd8;

  /* Overlays / glass */
  --glass:rgba(255,255,255,.06);
  --glass-strong:rgba(255,255,255,.10);

  /* Sombras */
  --shadow:0 2px 6px rgba(0,0,0,.40);
  --shadow-strong:0 4px 12px rgba(0,0,0,.60);

  /* Extras */
  --star:#fbbc04;
  --g-blue:#4285F4; --g-red:#EA4335; --g-yellow:#FBBC05; --g-green:#34A853;

  /* Controles translúcidos */
  --ctrl-ring:rgba(255,255,255,.18);
  --ctrl-bg:rgba(0,0,0,.35);
  --ctrl-bg-hover:rgba(0,0,0,.50);

  /* Gradientes hero */
  --hero-overlay-from:rgba(0,0,0,.60);
  --hero-overlay-to:rgba(0,0,0,.45);
  --hero-bottom-shadow:rgba(0,0,0,.55);

  /* Radios */
  --radius:12px; --radius-lg:14px; --radius-xl:16px;

  /* Altura header para menú móvil */
  --header-h:56px;
}

/* -------- Paleta AZUL -------- */
:root[data-theme="blue"]{
  --primary:#2d8cf0; --primary-weak:#3da9fc; --primary-strong:#0a1d33; --primary-contrast:#0b1420;
  --bg:#0c1118; --bg-alt:#111822; --card:#151c26; --card-alt:#1a2532;
  --text:#d9e2ec; --text-muted:#9aa6b2;
  --border:#1f2a38; --border-alt:#243447;
  --link:#5db2f5; --link-hover:#89c6ff;
  --glass:rgba(255,255,255,.06); --glass-strong:rgba(255,255,255,.10);
  --ctrl-ring:rgba(255,255,255,.20); --ctrl-bg:rgba(10,21,35,.45); --ctrl-bg-hover:rgba(10,21,35,.60);
  --hero-overlay-from:rgba(5,10,18,.65); --hero-overlay-to:rgba(5,10,18,.50);
}

/* -------- Paleta VERDE CLARA -------- */
:root[data-theme="green-light"]{
  --primary:#2BAA5A; --primary-weak:#4fd180; --primary-strong:#0b3b1f; --primary-contrast:#052011;
  --bg:#e8f5e9; --bg-alt:#c8e6c9; --card:#f0f7f1; --card-alt:#e3efe6;
  --text:#1b5e20; --text-muted:#4f6f55;
  --border:#c9d9cc; --border-alt:#b7cbbd;
  --link:#1b5e20; --link-hover:#0b3b1f;
  --glass:rgba(0,0,0,.04); --glass-strong:rgba(0,0,0,.06);
  --ctrl-ring:rgba(0,0,0,.18); --ctrl-bg:rgba(0,0,0,.10); --ctrl-bg-hover:rgba(0,0,0,.16);
  --hero-overlay-from:rgba(0,0,0,.28); --hero-overlay-to:rgba(0,0,0,.18); --hero-bottom-shadow:rgba(0,0,0,.20);
}

/* =========================================================
   RESET / BASE
   ========================================================= */
*{box-sizing:border-box}
body{
  margin:0;
  font-family:Manrope,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg); color:var(--text); line-height:1.6;
}
a{color:var(--link);text-decoration:none}
a:hover{color:var(--link-hover)}
.container{max-width:1200px;margin:0 auto;padding:0 16px}
.section{padding:56px 0}

/* Apaga el contenido cuando el menú móvil está abierto */
/*#page-content{transition:opacity .2s ease}
/*body.menu-open #page-content{opacity:.25;pointer-events:none;user-select:none}

/* =========================================================
   TOPBAR / NAV
   ========================================================= */
.topbar{position:sticky;top:0;z-index:2000;background:color-mix(in oklab, var(--bg) 85%, transparent);backdrop-filter:blur(6px);border-bottom:1px solid var(--border-alt)}
.topbar .container{display:flex;align-items:center;justify-content:space-between;padding:10px 0}
.topbar__inner{min-height:var(--header-h)}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.5px;color:var(--text)}
.logo{height:32px}

.nav{display:flex;align-items:center;gap:12px}
.nav a{color:color-mix(in oklab, var(--text) 85%, transparent);padding:8px 10px;border-radius:10px}
.nav a.cta{border:1px solid var(--primary);color:var(--text)}
.nav a:hover{color:#fff}

.nav-toggle{display:none;background:transparent;border:0;width:40px;height:36px;align-items:center;justify-content:center;padding:0;z-index:2001}
.nav-toggle span{display:block;width:22px;height:2px;background:var(--text);border-radius:2px;position:relative;transition:transform .2s,opacity .2s,top .2s}
.nav-toggle span:nth-child(1){top:-6px}
.nav-toggle span:nth-child(2){top:0}
.nav-toggle span:nth-child(3){top:6px}
.nav-toggle.is-open span:nth-child(1){transform:rotate(45deg);top:0}
.nav-toggle.is-open span:nth-child(2){opacity:0}
.nav-toggle.is-open span:nth-child(3){transform:rotate(-45deg);top:0}

@media (max-width:860px){
  .logo{max-height:32px;height:auto}
  .nav-toggle{display:flex}
  /* Drawer a pantalla completa: cerrado no tapa nada */
  .nav{
    position:fixed; inset:0; top:var(--header-h);
    background:var(--bg);
    display:grid; gap:12px; padding:80px 16px 24px;
    border:0; box-shadow:none;
    transform:translateY(-100%); opacity:0; visibility:hidden; pointer-events:none;
    transition:transform .28s ease, opacity .28s ease;
    z-index:999999;
    height:fit-content;
  }
  .nav.open{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto;overflow:auto}
  .nav a{padding:14px;border:1px solid color-mix(in oklab, var(--border) 80%, transparent);border-radius:12px;background:rgba(255,255,255,.02);color:inherit}
  .nav a.cta{border-color:var(--primary);background:color-mix(in oklab, var(--primary) 10%, transparent)}
  body.menu-open{overflow:hidden;touch-action:none}
}
@media (min-width:861px){
  .nav{position:static;transform:none!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important;padding:0;gap:12px}
  .nav-toggle{display:none}
}

/* =========================================================
   CTA BAR
   ========================================================= */
.cta-bar{display:flex;gap:10px;justify-content:center;align-items:center;padding:10px;border-bottom:1px solid var(--border);background:var(--bg);font-size:14px}
.cta-bar .btn{background:var(--primary);color:var(--primary-contrast);font-weight:700;padding:8px 12px;border-radius:10px;border:1px solid transparent}
.cta-bar .btn:hover{background:color-mix(in oklab, var(--primary) 88%, black)}

/* =========================================================
   HERO VIDEO
   ========================================================= */
.hero-video{position:relative;min-height:clamp(520px,80vh,860px);display:flex;align-items:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;background:var(--bg);padding-top:env(safe-area-inset-top)}
.hero-video__media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 35%;z-index:0;filter:saturate(1.05) contrast(1.05)}
.hero-video__overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,var(--hero-overlay-from),var(--hero-overlay-to));box-shadow:inset 0 -120px 120px -60px var(--hero-bottom-shadow)}
.hero-video__content{position:relative;z-index:2;width:100%;max-width:1100px;padding:24px 16px}
.hero-video__content h1{font-size:clamp(28px,5vw,54px);line-height:1.15;margin:12px 0;font-weight:800}
.hero-video__content p{font-size:clamp(15px,2.1vw,20px);color:#d8dee3;margin:0 0 18px}
.hero-video__actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:18px}

.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border-radius:var(--radius-lg);font-weight:800;border:1px solid transparent;line-height:1}
.btn-primary{background:var(--primary);color:var(--primary-contrast);border-color:var(--primary)}
.btn-primary:hover{background:color-mix(in oklab, var(--primary) 85%, black)}
.btn-outline{background:transparent;color:var(--text);border-color:#2a333a}
.btn-outline:hover{border-color:#3a454d;background:var(--bg)}
.btn-ghost{background:var(--glass);color:var(--text);border-color:#2a333a}
.btn-ghost:hover{background:var(--glass-strong)}
@media (max-width:640px){.hero-video__actions .btn{width:100%}}

/* =========================================================
   GRID / CARDS
   ========================================================= */
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.card{background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);text-align:center;padding:18px;transition:transform .3s, box-shadow .3s;box-shadow:var(--shadow)}
.card:hover{transform:translateY(-5px);box-shadow:var(--shadow-strong)}
.card h3{margin:6px 0}

/* =========================================================
   OUR SERVICES
   ========================================================= */
.grid-services{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.card-service{padding:0;overflow:hidden;border-radius:var(--radius)}
.card-service .card-cover{margin:0;aspect-ratio:16/9;background:var(--bg-alt)}
.card-service .card-cover img{width:100%;height:100%;object-fit:cover;display:block;border-top-left-radius:inherit;border-top-right-radius:inherit}
.card-service .card-body{padding:14px 16px}
.card-service .card-body h3{margin:6px 0;font-size:1.05rem}
.card-service .card-body p{color:var(--text-muted);margin:0 0 10px}
.card-service .btn.small{padding:8px 12px;border-radius:10px;font-size:.9rem}

/* =========================================================
   OUR PROCESS
   ========================================================= */
.ourprocess .card{padding:0;overflow:hidden;border-radius:var(--radius)}
.ourprocess .card>img.icon{display:block;width:100%;height:16.5vw;max-height:220px;min-height:160px;object-fit:cover;margin:0;border-top-left-radius:inherit;border-top-right-radius:inherit}
.ourprocess .card h3{margin:10px 14px 6px;font-size:1.05rem}
.ourprocess .card p{margin:0 14px 12px;color:var(--text-muted)}

/* =========================================================
   WHY CHOOSE US
   ========================================================= */
.grid-usp{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.card-usp{padding:0;overflow:hidden;border-radius:var(--radius)}
.usp-cover{margin:0;aspect-ratio:16/9;background:var(--bg-alt);position:relative}
.usp-cover img{width:100%;height:100%;object-fit:cover;display:block}
.usp-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.35))}
.usp-body{padding:14px 16px}
.card-usp h3{margin:6px 0;font-size:1rem;letter-spacing:.5px}
.card-usp p{color:var(--text-muted);margin:0}

/* =========================================================
   CTA con MAPA
   ========================================================= */
.cta-map .container{max-width:1200px}
.cta-grid{display:grid;gap:24px;grid-template-columns:1fr;align-items:stretch}
@media (min-width:900px){.cta-grid{grid-template-columns:1.05fr 1fr}}
.cta-copy{background:var(--glass);border:1px solid color-mix(in oklab, var(--border) 80%, transparent);border-radius:var(--radius-xl);padding:24px;backdrop-filter:blur(6px)}
.cta-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.chip{font-size:.875rem;padding:6px 10px;border-radius:999px;border:1px solid color-mix(in oklab, var(--border) 70%, transparent);background:color-mix(in oklab, var(--glass) 70%, transparent);white-space:nowrap}
.cta-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}
.btn-cta{background:var(--primary-weak);color:var(--primary-contrast);border:1px solid transparent;border-radius:var(--radius);padding:12px 16px;font-weight:700}
.btn-cta:hover{background:color-mix(in oklab, var(--primary-weak) 85%, black)}
.btn-ghost{background:transparent;border:1px solid var(--ctrl-ring);color:inherit;border-radius:var(--radius);padding:12px 16px;font-weight:700}
.btn-ghost:hover{background:var(--glass)}
.cta-map-embed{position:relative;border-radius:var(--radius-xl);overflow:hidden;border:1px solid color-mix(in oklab, var(--border) 80%, transparent);min-height:280px}
.cta-map-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:contrast(1.02) saturate(1.05)}

/* =========================================================
   REFERENCES + CAROUSEL
   ========================================================= */
.references{padding:60px 0}
.reference-card{background:var(--card);border:1px solid color-mix(in oklab, var(--border) 80%, transparent);border-radius:14px;padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;transition:transform .2s, box-shadow .2s}
.reference-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-strong)}
.ref-header{display:flex;align-items:center;margin-bottom:12px}
.ref-header .avatar{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--primary-weak), color-mix(in oklab, var(--primary), #2ecc71 60%));margin-right:12px}
.stars{color:var(--star);font-size:1.1rem;letter-spacing:1px}
.ref-text{font-size:.95rem;line-height:1.5;opacity:.9}

.carousel{position:relative;user-select:none}
.carousel-viewport{overflow:hidden;border-radius:14px;outline:none}
.carousel-track{display:flex;gap:16px;will-change:transform;transition:transform .45s ease;padding:4px}
.carousel-slide{flex:0 0 calc(100% - 8px);max-width:680px;margin:0 auto}
@media (min-width:720px){.carousel-slide{flex-basis:calc(50% - 8px)}}
@media (min-width:1100px){.carousel-slide{flex-basis:calc(33.333% - 10.7px)}}
.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:1px solid var(--ctrl-ring);background:var(--ctrl-bg);color:#fff;font-size:28px;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(4px)}
.carousel-btn:hover{background:var(--ctrl-bg-hover)}
.carousel-btn.prev{left:8px}
.carousel-btn.next{right:8px}
.carousel-dots{display:flex;gap:6px;justify-content:center;margin-top:14px;flex-wrap:wrap}
.carousel-dot{width:9px;height:9px;border-radius:999px;background:rgba(255,255,255,.28);border:0;cursor:pointer}
.carousel-dot[aria-selected="true"]{background:var(--primary-weak)}
.carousel.dragging .carousel-track{transition:none;cursor:grabbing}
.reviews-header{display:grid;gap:8px;justify-items:center}
.google-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid color-mix(in oklab, var(--border) 80%, transparent);background:color-mix(in oklab, var(--glass) 80%, transparent);font-weight:700}
.google-badge strong{font-size:1.05rem}
.google-badge .count{opacity:.85;font-weight:600}
.g-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.g-blue{background:var(--g-blue)} .g-red{background:var(--g-red)} .g-yellow{background:var(--g-yellow)} .g-green{background:var(--g-green)}

/* =========================================================
   GALLERY GRID (3/2/1)
   ========================================================= */
.gallery{display:grid;gap:16px;grid-template-columns:1fr;margin-top:16px}
.gallery img{width:100%;height:250px;object-fit:cover;border-radius:12px;display:block}
@media (min-width:640px){.gallery{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1024px){.gallery{grid-template-columns:repeat(3,1fr)}}

/* =========================================================
   SERVICE AREAS (map + list)
   ========================================================= */
.areas-toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:10px 0 14px;flex-wrap:wrap}
.areas-search input{width:min(420px,90vw);padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:var(--bg);color:var(--text)}
.areas-actions .btn{padding:10px 12px;border-radius:12px}
.areas-layout{display:grid;gap:16px;grid-template-columns:1fr}
@media (min-width:980px){.areas-layout{grid-template-columns:1.3fr .9fr}}
.areas-map{height:clamp(340px,60vh,560px);border:1px solid color-mix(in oklab, var(--border) 60%, transparent);border-radius:16px;overflow:hidden}
.areas-list{display:grid;gap:12px;grid-template-columns:1fr;max-height:clamp(340px,60vh,560px);overflow:auto;padding-right:4px}
@media (min-width:520px){.areas-list{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1280px){.areas-list{grid-template-columns:1fr}}
.area-card{background:var(--glass);border:1px solid color-mix(in oklab, var(--border) 60%, transparent);border-radius:14px;padding:14px;transition:transform .15s, box-shadow .15s, border-color .15s;cursor:pointer;outline:none}
.area-card:hover,.area-card.active{transform:translateY(-2px);border-color:var(--primary);box-shadow:0 6px 16px rgba(0,0,0,.25)}
.area-card h3{margin:2px 0 6px;font-size:1.02rem}
.area-meta{display:flex;gap:6px;align-items:center;margin:8px 0}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;letter-spacing:.2px;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12)}
.badge-ok{background:rgba(39,197,110,.15);border-color:rgba(39,197,110,.25)}
.badge-danger{background:rgba(239,68,68,.15);border-color:rgba(239,68,68,.25)}
.leaflet-container{background:var(--bg)}
.leaflet-control-attribution{background:rgba(0,0,0,.35);color:#d6d6d6}
.leaflet-popup-content-wrapper{border-radius:12px}

/* =========================================================
   FALLBACKS sin color-mix
   ========================================================= */
@supports not (background: color-mix(in oklab, red 50%, white)){
  .topbar{background:var(--bg)}
  .cta-copy,.chip,.google-badge{background:var(--glass);border-color:var(--border-alt)}
  .btn-primary:hover,.btn-cta:hover{filter:brightness(.95)}
}
.hero-video__media{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center 35%;
  /* evita filtros aquí en iOS */
  /* filter:saturate(1.05) contrast(1.05);  <- quítalo del video */
}

/* Si quieres el look, aplica un tinte en la overlay */
.hero-video__overlay{
  position:absolute; inset:0; z-index:1;
  background: linear-gradient(180deg, rgba(0,0,0,.50), rgba(0,0,0,.35));
  box-shadow: inset 0 -120px 120px -60px rgba(0,0,0,.55);
}

/* iOS: desactivar cualquier filtro del video sí o sí */
@supports (-webkit-touch-callout: none) {
  .hero-video__media{ filter:none !important; }
}
