﻿/* ==========================================================
   ARCHIVO GENERADO por scripts/sync-brand.ps1 - NO EDITAR AQUI.
   Fuente: shared/brand/base.css
   ========================================================== */

/* ==========================================================
   BASE.CSS — Fundamentos de marca Grupo Arco
   Compartido por TODAS las páginas de constructora/ e inmobiliaria/.

   ARCHIVO FUENTE — vive en shared/brand/base.css.
   Las copias en constructora/assets/css/base.css e
   inmobiliaria/assets/css/base.css se generan con
   scripts/sync-brand.ps1 — no las edites directamente, edita este
   archivo y vuelve a ejecutar el script.
   ========================================================== */


  :root{
    --stone:#EEE7D9;
    --stone-deep:#E3D9C4;
    --card:#FBF8F1;
    --clay:#8B4038;
    --clay-deep:#6E332C;
    --olive:#5B6B45;
    --ink:#2A281F;
    --ink-soft:#585448;
    --brass:#96A88C;
    --line:rgba(42,40,31,0.14);
    --radius:2px;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  /* Los hijos de flex/grid no encogen por debajo de su contenido por
     defecto (min-width:auto implícito) — eso es lo que provocaba el
     scroll horizontal en móvil en varias secciones (.contact-grid,
     .two-col, etc.). Se neutraliza aquí, en la raíz, en vez de con
     overflow-x:hidden en cada sitio. */
  *{min-width:0;}
  html{scroll-behavior:smooth;}
  body{
    /* Textos sin espacios (emails, URLs largas) no tienen dónde
       partir la línea por defecto y empujan el ancho de su
       contenedor — permite partirlos como último recurso. */
    overflow-wrap:break-word;
    background:var(--stone);
    color:var(--ink);
    font-family:'Work Sans', sans-serif;
    font-weight:400;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3{
    font-family:'Fraunces', serif;
    font-weight:700;
    letter-spacing:-0.01em;
    color:var(--ink);
  }
  .eyebrow{
    font-family:'JetBrains Mono', monospace;
    font-size:0.72rem;
    letter-spacing:0.18em;
    text-transform:uppercase;
    color:var(--clay-deep);
    display:flex;
    align-items:center;
    gap:10px;
    margin-bottom:14px;
  }
  .eyebrow::before{
    content:"";
    width:22px;
    height:1px;
    background:var(--clay-deep);
    display:inline-block;
  }
  .wrap{
    max-width:1180px;
    margin:0 auto;
    padding:0 32px;
  }
  a{color:inherit; text-decoration:none;}
  img{max-width:100%; display:block;}

  /* ---------- BOTONES ---------- */
  .btn{
    display:inline-flex;
    align-items:center;
    gap:10px;
    font-family:'JetBrains Mono', monospace;
    font-size:0.78rem;
    letter-spacing:0.06em;
    text-transform:uppercase;
    padding:15px 26px;
    border-radius:var(--radius);
    cursor:pointer;
    border:1px solid transparent;
    transition:all .25s ease;
  }
  .btn-primary{
    background:var(--clay);
    color:var(--card);
  }
  .btn-primary:hover{background:var(--clay-deep); transform:translateY(-2px);}
  .btn-outline{
    background:transparent;
    color:var(--card);
    border:1px solid rgba(251,248,241,0.55);
  }
  .btn-outline:hover{background:rgba(251,248,241,0.12); border-color:var(--card);}
  .btn-dark-outline{
    background:transparent;
    color:var(--ink);
    border:1px solid var(--ink);
  }
  .btn-dark-outline:hover{background:var(--ink); color:var(--card);}
  .btn-whatsapp{
    background:#3f5335;
    color:var(--card);
  }
  .btn-whatsapp:hover{background:#324229;}

  /* ---------- SELECTOR DE MARCA (arriba del header) ----------
     Alterna entre las dos webs de Grupo Arco. Las URLs de destino
     se rellenan en tiempo de carga por assets/js/brand-switcher.js
     (fuente: shared/brand/brand-switcher.js — único punto de config). */
  .brand-switcher{
    border-bottom:1px solid rgba(251,248,241,0.08);
  }
  .brand-switcher-inner{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:0;
    padding:4px 0;
    font-family:'JetBrains Mono', monospace;
  }
  /* Control segmentado ("píldora"): las dos mitades comparten un único
     contorno — el hijo que quede a la izquierda (según el sitio activo,
     ver brand-switcher.js) redondea su lado izquierdo, el que quede a
     la derecha redondea el suyo, así funciona en las dos webs sin
     duplicar reglas por clase. */
  .brand-switch-current,
  .brand-switch-link{
    display:inline-flex;
    align-items:center;
    font-size:0.7rem;
    font-weight:600;
    letter-spacing:0.05em;
    text-transform:uppercase;
    padding:6px 16px;
    border:1px solid rgba(251,248,241,0.22);
    transition:background-color .22s ease, color .22s ease, border-color .22s ease, transform .12s ease;
  }
  .brand-switcher-inner > :first-child{border-radius:999px 0 0 999px; border-right:none;}
  .brand-switcher-inner > :last-child{border-radius:0 999px 999px 0; border-left:none;}
  .brand-switch-current{
    background:var(--brass);
    color:var(--ink);
    border-color:var(--brass);
  }
  .brand-switch-link{
    background:rgba(251,248,241,0.05);
    color:rgba(251,248,241,0.62);
  }
  .brand-switch-link:hover{
    background:rgba(251,248,241,0.22);
    color:var(--card);
  }
  .brand-switch-link:active{transform:scale(0.96);}
  .brand-switch-sep{display:none;}
  @media (max-width:480px){
    .brand-switch-current, .brand-switch-link{font-size:0.6rem; padding:4px 12px;}
  }

  /* ---------- HEADER ---------- */
  header{
    position:fixed; top:0; left:0; right:0; z-index:100;
    background:rgba(26,24,19,0.55);
    backdrop-filter:blur(10px);
    -webkit-backdrop-filter:blur(10px);
    border-bottom:1px solid rgba(251,248,241,0.08);
  }
  .header-inner{
    display:flex; justify-content:space-between; align-items:center;
    padding:5px 0;
  }
  /* El logo se pinta más grande que la fila del header (overflow
     visible), pero centrado — igual que los enlaces del menú — para
     que no quede descentrado respecto a la navegación. Al ser más
     alto que la caja de 66px, sobresale un poco por arriba y por abajo
     del header sin aumentar la altura de la barra. */
  .logo{display:flex; align-items:center; height:66px; overflow:visible;}
  .logo img{height:96px; width:auto; display:block;}
  nav ul{
    list-style:none;
    display:flex;
    gap:32px;
    font-family:'JetBrains Mono', monospace;
    font-size:0.72rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
  }
  nav a{color:var(--card); opacity:0.85; transition:opacity .2s;}
  nav a:hover{opacity:1;}
  .nav-toggle{
    display:none;
    color:var(--card);
    font-size:1.4rem;
    background:none;
    border:none;
    cursor:pointer;
    padding:8px 4px 8px 12px;
    line-height:1;
    flex-shrink:0;
  }

  /* ---------- HERO (genérico) ----------
     Cada página fija su propia imagen con
     style="background-image:url('...')" en el elemento .hero,
     esta regla solo aporta el degradado y la disposición. */
  .hero{
    position:relative;
    min-height:100vh;
    display:flex;
    align-items:center;
    background-color:var(--ink);
    background-size:cover;
    background-position:center 68%;
    background-repeat:no-repeat;
    overflow:hidden;
  }
  .hero::before{
    content:"";
    position:absolute; inset:0;
    background:linear-gradient(180deg, rgba(24,22,16,0.5) 0%, rgba(24,22,16,0.62) 55%, rgba(24,22,16,0.86) 100%);
  }
  .hero-plan{
    position:absolute;
    right:-8%;
    top:50%;
    transform:translateY(-50%);
    width:640px;
    max-width:70vw;
    opacity:0.16;
    stroke:var(--card);
  }
  .hero-content{
    position:relative;
    z-index:2;
    padding-top:120px;
    max-width:660px;
  }
  .hero .eyebrow{color:var(--brass);}
  .hero .eyebrow::before{background:var(--brass);}
  .hero h1{
    font-size:clamp(2.4rem, 5.2vw, 4.1rem);
    color:var(--card);
    line-height:1.06;
    margin-bottom:22px;
  }
  .hero-slogan{
    font-family:'Fraunces', serif;
    font-style:italic;
    font-weight:400;
    font-size:1.3rem;
    color:var(--brass);
    margin-bottom:20px;
  }
  .hero-sub{
    color:rgba(251,248,241,0.82);
    font-size:1.02rem;
    max-width:520px;
    margin-bottom:38px;
  }
  .hero-ctas{display:flex; gap:16px; flex-wrap:wrap;}
  .scroll-cue{
    position:absolute; bottom:34px; left:32px; z-index:2;
    font-family:'JetBrains Mono', monospace;
    font-size:0.68rem; letter-spacing:0.12em; text-transform:uppercase;
    color:rgba(251,248,241,0.6);
    display:flex; align-items:center; gap:10px;
  }
  .scroll-cue .line{width:1px; height:36px; background:rgba(251,248,241,0.4); position:relative; overflow:hidden;}
  .scroll-cue .line::after{content:""; position:absolute; top:-100%; left:0; width:100%; height:100%; background:var(--brass); animation:runline 2.2s infinite;}
  @keyframes runline{ to{top:100%;} }

  /* ---------- FOOTER ---------- */
  footer{
    background:#1c1a13;
    color:rgba(251,248,241,0.65);
    padding:70px 0 30px;
  }
  .footer-grid{
    display:grid;
    grid-template-columns:1.4fr 1fr 1fr 1fr;
    gap:40px;
    padding-bottom:50px;
    border-bottom:1px solid rgba(251,248,241,0.1);
    margin-bottom:26px;
  }
  .footer-grid h5{
    font-family:'JetBrains Mono', monospace;
    font-size:0.68rem;
    letter-spacing:0.1em;
    text-transform:uppercase;
    color:var(--brass);
    margin-bottom:18px;
  }
  .footer-grid ul{list-style:none;}
  .footer-grid li{margin-bottom:10px; font-size:0.88rem;}
  .footer-logo{font-family:'Fraunces', serif; font-size:1.3rem; color:var(--card); margin-bottom:14px;}
  .footer-logo span{color:var(--brass);}
  .footer-bottom{
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:14px;
    font-size:0.76rem;
    font-family:'JetBrains Mono', monospace;
  }
  .footer-bottom a{opacity:0.7;}

  /* ---------- WHATSAPP FLOTANTE ---------- */
  .wa-float{
    position:fixed;
    bottom:26px; right:26px;
    z-index:200;
    background:#3f5335;
    color:var(--card);
    width:58px; height:58px;
    border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 8px 24px rgba(0,0,0,0.3);
    cursor:pointer;
  }

  /* ---------- PLACEHOLDER DE IMAGEN (genérico) ---------- */
  .img-slot{
    position:relative;
    width:100%;
    border-radius:var(--radius);
    overflow:hidden;
    background:linear-gradient(135deg, #cabf9f 0%, #a9976f 100%);
    min-height:340px;
    display:flex; align-items:flex-end;
    aspect-ratio:4/5;
  }
  .img-slot.wide{aspect-ratio:16/10;}
  .img-slot::before{
    content:"";
    position:absolute; inset:0;
    background-image:
      repeating-linear-gradient(45deg, rgba(42,40,31,0.06) 0, rgba(42,40,31,0.06) 1px, transparent 1px, transparent 14px);
  }
  .img-slot.has-photo::before{background-image:none;}

  /* ---------- TARJETA DE CASO / PROYECTO (genérica) ----------
     Usada para promociones, viviendas y curiosidades/eventos.
     Ver assets/js/content-loader.js en cada web para cómo se rellena. */
  .case-card{
    position:relative;
    aspect-ratio:4/3;
    overflow:hidden;
    cursor:pointer;
    background:#3a3626;
    display:block;
  }
  .case-card img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
  .case-card .case-badge{
    position:absolute; left:16px; top:16px; z-index:10;
    font-family:'JetBrains Mono', monospace;
    font-size:0.66rem; letter-spacing:0.06em; text-transform:uppercase;
    background:var(--card); color:var(--ink);
    padding:5px 10px;
  }
  .case-card .case-badge.is-vendida{background:var(--olive); color:var(--card);}
  .case-card .case-badge.is-streetview{
    left:auto; right:16px;
    background:rgba(42,40,31,0.78); color:var(--card);
  }
  .case-plate{
    position:absolute; left:0; bottom:0; z-index:20;
    background:var(--card);
    padding:14px 18px 12px;
    max-width:80%;
  }
  .case-plate h3{
    font-size:clamp(1.05rem, 1.6vw, 1.3rem);
    line-height:1.15;
    margin-bottom:4px;
  }
  .case-plate .meta{
    font-family:'JetBrains Mono', monospace;
    font-size:0.68rem; color:var(--ink-soft); text-transform:uppercase; letter-spacing:0.03em;
  }
  .case-grid{
    display:grid;
    gap:16px;
    grid-template-columns:1fr 1fr;
  }
  .case-empty{
    font-family:'JetBrains Mono', monospace;
    font-size:0.82rem;
    color:var(--ink-soft);
    padding:40px 0;
  }

  /* ---------- HUECO SUPERIOR GENÉRICO PARA PÁGINAS INTERIORES ----------
     Deja sitio libre para el header fijo (selector de marca + logo).
     Úsalo en la primera <section> de cualquier página que no sea la
     home (fichas de detalle, listados, páginas de servicio...). */
  .page-offset{padding:180px 0 90px;}

  /* ---------- BANNER DE COOKIES ----------
     Ver shared/brand/cookie-consent.js (fuente única). */
  .cookie-banner{
    position:fixed; left:0; right:0; bottom:0; z-index:300;
    background:var(--ink); color:var(--card);
    border-top:1px solid rgba(251,248,241,0.15);
    box-shadow:0 -8px 24px rgba(0,0,0,0.3);
  }
  .cookie-banner-inner{
    padding:18px 32px;
    display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
  }
  .cookie-banner-inner p{font-size:0.86rem; color:rgba(251,248,241,0.85); max-width:760px; margin:0;}
  .cookie-banner-inner a{color:var(--brass); text-decoration:underline;}
  .cookie-banner-actions{display:flex; gap:12px; flex-shrink:0;}
  .cookie-banner .btn-dark-outline{color:var(--card); border-color:rgba(251,248,241,0.4);}
  .cookie-banner .btn-dark-outline:hover{background:rgba(251,248,241,0.12); color:var(--card);}
  @media (max-width:700px){
    .cookie-banner-inner{padding:16px 22px; flex-direction:column; align-items:stretch; text-align:left;}
    .cookie-banner-actions{justify-content:flex-end;}
  }

  /* ---------- MAPA EMBEBIDO CON CONSENTIMIENTO ----------
     El iframe real solo carga su "src" cuando hay consentimiento
     (ver cookie-consent.js). Mientras tanto se ve el aviso de abajo. */
  [data-map-wrap]{position:relative;}
  [data-map-wrap] iframe{position:absolute; inset:0; width:100%; height:100%; border:0;}
  [data-map-wrap].is-gated iframe{visibility:hidden;}
  .map-consent-gate{
    display:none;
    position:absolute; inset:0; z-index:5;
    flex-direction:column; align-items:center; justify-content:center; gap:12px;
    text-align:center; padding:24px;
    background:linear-gradient(135deg, #3a3626 0%, #232019 100%);
    color:rgba(251,248,241,0.85);
    font-size:0.86rem;
  }
  [data-map-wrap].is-gated .map-consent-gate{display:flex;}
  .map-consent-gate .btn-dark-outline{
    color:var(--card);
    border-color:rgba(251,248,241,0.55);
  }
  .map-consent-gate .btn-dark-outline:hover{
    background:rgba(251,248,241,0.12);
    color:var(--card);
  }

  /* ---------- MENÚ MÓVIL (panel lateral) ----------
     Ver shared/brand/mobile-nav.js: construye este panel clonando el
     <nav> y el selector de marca de la propia página. Solo se usa por
     debajo del breakpoint de tablet (ver regla min-width:901px al final). */
  .mobile-nav-overlay{
    position:fixed; inset:0; z-index:500;
    background:rgba(20,19,14,0.6);
    opacity:0;
    pointer-events:none;
    transition:opacity .25s ease;
    display:flex;
    justify-content:flex-end;
  }
  .mobile-nav-overlay.is-open{opacity:1; pointer-events:auto;}
  .mobile-nav-panel{
    width:min(320px, 82vw);
    height:100%;
    background:var(--ink);
    color:var(--card);
    padding:24px 28px 40px;
    display:flex;
    flex-direction:column;
    gap:36px;
    transform:translateX(100%);
    transition:transform .3s ease;
    overflow-y:auto;
  }
  .mobile-nav-overlay.is-open .mobile-nav-panel{transform:translateX(0);}
  .mobile-nav-close{
    align-self:flex-end;
    background:none;
    border:none;
    color:var(--card);
    font-size:1.4rem;
    line-height:1;
    cursor:pointer;
    padding:8px;
    margin:-8px -8px 0 0;
  }
  .mobile-nav-switcher .brand-switcher-inner{
    justify-content:flex-start;
    padding:0 0 22px;
    border-bottom:1px solid rgba(251,248,241,0.15);
  }
  /* La regla nav{display:none} del breakpoint móvil (más abajo)
     ocultaría también este <nav> clonado si no se lo indicamos
     explícitamente — misma etiqueta, distinta clase. */
  .mobile-nav-links{display:block;}
  .mobile-nav-links ul{
    list-style:none;
    display:flex;
    flex-direction:column;
    gap:24px;
  }
  .mobile-nav-links a{
    font-family:'JetBrains Mono', monospace;
    font-size:1rem;
    letter-spacing:0.05em;
    text-transform:uppercase;
    color:var(--card);
  }
  body.nav-open{overflow:hidden;}
  @media (min-width:901px){
    .mobile-nav-overlay{display:none !important;}
  }
  @media (prefers-reduced-motion: reduce){
    .mobile-nav-overlay, .mobile-nav-panel{transition:none !important;}
  }

  /* ---------- VELO DE TRANSICIÓN ENTRE WEBS ----------
     Ver shared/brand/brand-switcher.js: se añade/gestiona por JS al
     pulsar el selector "Construcción | Inmobiliaria". Por encima de
     todo (header, banner de cookies, flotante de WhatsApp). */
  .brand-transition-veil{
    position:fixed; inset:0; z-index:1000;
    background:var(--ink);
    opacity:0;
    pointer-events:none;
    transition:opacity 220ms ease;
  }
  .brand-transition-veil.is-instant{transition:none;}
  .brand-transition-veil.is-visible{opacity:1;}
  @media (prefers-reduced-motion: reduce){
    .brand-transition-veil{display:none !important;}
  }

  /* ---------- RESPONSIVE ---------- */
  @media (max-width:900px){
    nav{display:none;}
    .nav-toggle{display:block;}
    .wrap{padding:0 22px;}
    .footer-grid{grid-template-columns:1fr 1fr;}
    .case-grid{grid-template-columns:1fr;}
    .header-inner{padding:5px 0;}
    .logo{height:46px;}
    .logo img{height:68px;}
    .hero-content{padding-top:100px;}
    .page-offset{padding:140px 0 60px;}
  }

