:root{
    --ink:#171614;
    --ink-2:#1e1c1a;
    --panel:#252220;
    --line:#3c3733;
    --concrete:#a9a196;
    --stone:#ece7dd;
    --stone-2:#e2dccf;
    --stone-line:#cdc4b2;
    --bronze:#b58e59;
    --bronze-soft:#8a6f47;
    --bronze-glow:#d4ac74;
    --paper:#f5f1e9;
    --paper-dim:#bdb6a8;
    --paper-dimmer:#928a7b;
    --ink-on-stone:#211f1c;
    --ink-on-stone-dim:#54493a;
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--ink);
    color:var(--paper);
    font-family:'Inter',sans-serif;
    font-weight:300;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  ::selection{background:var(--bronze);color:#0a0a0b;}
  a{color:inherit;text-decoration:none;}
  img{max-width:100%;display:block;}

  .eyebrow{
    font-family:'Fraunces',serif;
    font-style:italic;
    font-weight:400;
    font-size:15px;
    letter-spacing:.03em;
    color:var(--bronze-glow);
    display:inline-flex;
    align-items:center;
    gap:12px;
  }
  .eyebrow::before{
    content:'';
    width:26px;height:1px;
    background:var(--bronze);
    display:inline-block;
  }
  h1,h2,h3,.display{
    font-family:'Big Shoulders Display',sans-serif;
    text-transform:uppercase;
    letter-spacing:.01em;
    font-weight:700;
    line-height:.95;
  }
  .mono{font-family:'IBM Plex Mono',monospace;}

  .wrap{max-width:1280px;margin:0 auto;padding:0 48px;}
  section{position:relative;}

  /* ===== Header ===== */
  header{
    position:fixed;top:0;left:0;right:0;
    z-index:100;
    display:flex;align-items:center;justify-content:space-between;
    padding:26px 48px;
    mix-blend-mode:normal;
    transition:background .4s ease, padding .4s ease, border-color .4s ease;
    border-bottom:1px solid transparent;
    }
  header.scrolled{
    background:rgba(23,22,20,.88);
    
    padding:16px 48px;
    border-bottom:1px solid var(--line);
  }
  .brand{display:flex;align-items:center;gap:14px;}
  .brand-mark{flex-shrink:0;filter:drop-shadow(0 1px 4px rgba(0,0,0,.5));}
  .brand-text{font-family:'Big Shoulders Display',sans-serif;font-size:15px;letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim);text-shadow:0 1px 6px rgba(0,0,0,.55);}
  .brand-text b{color:var(--paper);font-weight:700;}
  nav{display:flex;align-items:center;gap:40px;}
  nav a{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--paper-dim);transition:color .25s;text-shadow:0 1px 6px rgba(0,0,0,.55);}
  nav a:hover{color:var(--bronze-glow);}
  .nav-cta{
    border:1px solid var(--bronze-soft);
    padding:10px 22px;
    color:var(--paper) !important;
    font-size:12px;letter-spacing:.1em;text-transform:uppercase;
    transition:all .3s;
  }
  .nav-cta:hover{background:var(--bronze);border-color:var(--bronze);color:#0a0a0b !important;}
  .credits-cluster{
    display:flex;flex-direction:column;align-items:flex-end;gap:6px;
    text-shadow:0 1px 6px rgba(0,0,0,.55);
  }
  .promoter-logo{height:48px;width:auto;filter:brightness(0) invert(1);opacity:.95;}
  .architect-credit{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dimmer);text-align:right;}
  .architect-credit b{color:var(--paper-dim);font-weight:500;}
  .burger{display:none;flex-direction:column;gap:5px;cursor:pointer;background:none;border:none;}
  .burger span{width:24px;height:1px;background:var(--paper);display:block;}

  /* ===== Hero ===== */
  .hero{
    min-height:100svh;
    display:flex;align-items:flex-end;
    background:#000;
    position:relative;
  }
  .hero-bg{
    position:absolute;inset:0;
    background-image:url('../images/hero2-optimized.webp');
    background-size:cover;background-position:center 55%;
    opacity:.85;
  }
  .hero-scrim{
    position:absolute;inset:0;
    background:
      linear-gradient(90deg, rgba(20,18,16,.94) 0%, rgba(20,18,16,.72) 32%, rgba(20,18,16,.1) 62%, rgba(20,18,16,.35) 100%),
      linear-gradient(0deg, rgba(20,18,16,.96) 0%, rgba(20,18,16,.05) 40%, rgba(20,18,16,0) 60%);
  }
  .hero-content{
    position:relative;z-index:2;
    width:100%;
    padding:0 48px 50px;
    max-width:1280px;margin:0 auto;
  }
  .hero-title{
    font-size:clamp(52px,9vw,132px);
    color:var(--paper);
    text-shadow:0 2px 18px rgba(0,0,0,.35);
  }
  .hero-title .accent{color:var(--bronze);}
  .hero-slogan{
    font-family:'Fraunces',serif;
    font-style:italic;
    font-weight:400;
    font-size:clamp(18px,2vw,24px);
    color:var(--bronze-glow);
    margin-top:22px;
    text-shadow:0 1px 10px rgba(0,0,0,.4);
  }
  .hero-sub{
    max-width:560px;
    margin-top:14px;
    font-size:17px;
    color:var(--paper-dim);
    font-weight:300;
    text-shadow:0 1px 10px rgba(0,0,0,.4);
  }
  .hero-actions{
    margin-top:40px;
    display:flex;align-items:center;gap:28px;flex-wrap:wrap;
  }
  .btn-primary{
    background:var(--bronze);
    color:#0a0a0b;
    padding:16px 34px;
    font-size:13px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;
    display:inline-block;
    transition:background .3s, transform .3s;
  }
  .btn-primary:hover{background:var(--bronze-glow);transform:translateY(-2px);}
  .btn-ghost{
    font-size:13px;letter-spacing:.08em;text-transform:uppercase;
    color:var(--paper-dim);
    border-bottom:1px solid var(--line);
    padding-bottom:4px;
    transition:color .3s,border-color .3s;
  }
  .btn-ghost:hover{color:var(--paper);border-color:var(--bronze);}
  .scroll-cue{
    position:absolute;right:48px;bottom:40px;z-index:2;
    display:flex;flex-direction:column;align-items:center;gap:10px;
    color:var(--paper-dimmer);font-size:11px;letter-spacing:.15em;text-transform:uppercase;
  }
  .scroll-cue .line{width:1px;height:50px;background:linear-gradient(var(--bronze),transparent);animation:scrollpulse 2s ease-in-out infinite;}
  @keyframes scrollpulse{0%,100%{opacity:.3}50%{opacity:1}}

  /* ===== Spec strip ===== */
  .specs{
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
    background:var(--ink-2);
  }
  .specs-inner{
    display:grid;grid-template-columns:repeat(4,1fr);
  }
  .spec{
    padding:44px 40px;
    border-right:1px solid var(--line);
  }
  .spec:last-child{border-right:none;}
  .spec-num{
    font-family:'Big Shoulders Display',sans-serif;
    font-weight:700;
    font-size:clamp(30px,3vw,46px);
    color:var(--paper);
    display:flex;align-items:baseline;gap:6px;
  }
  .spec-num span{color:var(--bronze);font-size:.5em;}
  .spec-label{
    margin-top:10px;
    font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dimmer);
  }

  /* ===== Section shared ===== */
  .section{padding:150px 0;}
  .section-head{
    display:flex;justify-content:space-between;align-items:flex-end;
    gap:40px;margin-bottom:80px;
    flex-wrap:wrap;
  }
  .section-title{font-size:clamp(34px,5vw,64px);max-width:640px;}
  .section-note{max-width:340px;color:var(--paper-dim);font-size:15px;padding-bottom:6px;}

  /* ===== Light "stone" section theme ===== */
  .section.on-stone{background:var(--stone);color:var(--ink-on-stone);}
  .on-stone .eyebrow{color:var(--bronze-soft);}
  .on-stone .eyebrow::before{background:var(--bronze-soft);}
  .on-stone .section-title{color:var(--ink-on-stone);}
  .on-stone .section-note{color:var(--ink-on-stone-dim);}

  /* ===== Features (blueprint style) ===== */
  .features{
    display:grid;grid-template-columns:repeat(3,1fr);
    border-top:1px solid var(--stone-line);
    border-left:1px solid var(--stone-line);
    background:var(--stone);
  }
  .feature{
    padding:48px 40px;
    border-right:1px solid var(--stone-line);
    border-bottom:1px solid var(--stone-line);
    position:relative;
    transition:background .35s;
  }
  .feature:hover{background:var(--stone-2);}
  .feature-icon{width:34px;height:34px;margin-bottom:26px;stroke:var(--bronze-soft);fill:none;stroke-width:1.3;}
  .feature h3{
    font-size:20px;
    text-transform:none;
    font-family:'Fraunces',serif;
    font-style:italic;
    font-weight:400;
    letter-spacing:0;
    color:var(--ink-on-stone);
    margin-bottom:12px;
  }
  .feature p{font-size:14px;color:var(--ink-on-stone-dim);max-width:260px;}
  .feature-tag{
    position:absolute;top:44px;right:40px;
    font-family:'IBM Plex Mono',monospace;
    font-size:11px;color:var(--ink-on-stone-dim);
    opacity:.6;
  }

  /* ===== Site plan (signature interactive element) ===== */
  .siteplan{
    background:var(--ink-2);
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
  }
  .siteplan-grid{
    display:grid;grid-template-columns:1.15fr 1fr;
    gap:0;
    align-items:stretch;
  }
  .siteplan-visual{
    position:relative;
    background:#0d0d0e;
    border-right:1px solid var(--line);
    padding:60px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:22px;
    min-height:560px;
  }
  .siteplan-svg{width:100%;max-width:600px;}
  .siteplan-caption{font-size:11px;letter-spacing:.04em;color:var(--paper-dimmer);text-align:center;}
  .plot{
    fill:rgba(181,142,89,.08);
    stroke:var(--paper-dimmer);
    stroke-width:1;
    cursor:pointer;
    transition:fill .25s, stroke .25s;
  }
  .plot:hover, .plot.active{
    fill:rgba(181,142,89,.28);
    stroke:var(--bronze-glow);
  }
  .plot:focus-visible{
    outline:2px solid var(--bronze-glow);
    outline-offset:2px;
  }
  .plot-label{
    font-family:'IBM Plex Mono',monospace;
    font-size:15px;
    fill:var(--paper-dim);
    pointer-events:none;
    user-select:none;
    transition:fill .25s;
  }
  .plot-label.active{fill:var(--paper);}
  .siteplan-info{
    padding:70px 60px;
    display:flex;flex-direction:column;justify-content:center;
  }
  .plot-detail{display:none;flex-direction:column;gap:22px;}
  .plot-detail.active{display:flex;}
  .plot-detail .pnum{
    font-family:'Big Shoulders Display',sans-serif;
    font-size:64px;font-weight:700;color:var(--bronze);line-height:1;
  }
  .plot-stats{display:grid;grid-template-columns:1fr 1fr;gap:22px 30px;margin-top:6px;}
  .plot-stats div span{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--paper-dimmer);margin-bottom:6px;}
  .plot-stats div b{font-family:'IBM Plex Mono',monospace;font-weight:400;font-size:19px;color:var(--paper);}
  .siteplan-hint{font-size:13px;color:var(--paper-dimmer);margin-top:6px;}
  .siteplan-cta{margin-top:32px;align-self:flex-start;}

  /* ===== Gallery ===== */
  .gallery{
    display:grid;grid-template-columns:1fr 1fr;
    gap:2px;
    background:var(--line);
  }
  .gallery figure{
    position:relative;overflow:hidden;
    aspect-ratio:4/3;
    background:#000;
  }
  .gallery img{
    width:100%;height:100%;object-fit:cover;
    transition:transform .8s cubic-bezier(.16,1,.3,1), filter .8s;
    filter:grayscale(.15) brightness(.86);
  }
  .gallery figure:hover img{transform:scale(1.045);filter:grayscale(0) brightness(1);}
  .gallery figcaption{
    position:absolute;left:28px;bottom:24px;
    font-family:'IBM Plex Mono',monospace;
    font-size:12px;color:var(--paper);
    background:rgba(10,10,10,.55);
    padding:6px 12px;
    backdrop-filter:blur(4px);
  }

  /* ===== Location ===== */
  .location{
    display:grid;grid-template-columns:1fr 1fr;
    gap:80px;
    align-items:center;
  }
  .location-list{list-style:none;margin-top:34px;display:flex;flex-direction:column;gap:18px;}
  .location-list li{
    display:flex;gap:16px;align-items:flex-start;
    font-size:15px;color:var(--ink-on-stone-dim);
    padding-bottom:18px;border-bottom:1px solid var(--stone-line);
  }
  .location-list li b{color:var(--ink-on-stone);font-weight:500;min-width:170px;font-family:'IBM Plex Mono',monospace;font-size:13px;}
  .map-frame{
    border:1px solid var(--stone-line);
    aspect-ratio:1/1;
    position:relative;
    overflow:hidden;
    background:var(--stone-2);
  }
  .map-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(.6) sepia(.15) contrast(.95) brightness(1.05);}
  .map-consent-gate{
    position:absolute;inset:0;z-index:3;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;
    text-align:center;padding:40px;
    background:var(--stone-2);
  }
  .map-consent-gate p{font-size:13px;color:var(--ink-on-stone-dim);max-width:260px;}
  .map-consent-gate button{
    font-family:'Inter';font-size:12px;letter-spacing:.08em;text-transform:uppercase;
    background:var(--bronze);color:#0a0a0b;border:none;padding:13px 26px;cursor:pointer;
    transition:background .3s;
  }
  .map-consent-gate button:hover{background:var(--bronze-glow);}
  .map-corner{position:absolute;width:16px;height:16px;border:1px solid var(--bronze);z-index:2;}
  .map-corner.tl{top:14px;left:14px;border-right:none;border-bottom:none;}
  .map-corner.br{bottom:14px;right:14px;border-left:none;border-top:none;}

  /* ===== Contact ===== */
  .contact-panel{
    background:var(--panel);
    border:1px solid var(--line);
    padding:70px;
    display:grid;grid-template-columns:1fr 1.15fr;
    gap:70px;
  }
  .contact-info h3{font-size:36px;margin-bottom:20px;}
  .contact-info p{color:var(--paper-dim);font-size:15px;max-width:340px;margin-bottom:36px;}
  .contact-meta{display:flex;flex-direction:column;gap:14px;font-family:'IBM Plex Mono',monospace;font-size:14px;color:var(--paper-dim);}
  .contact-meta a:hover{color:var(--bronze-glow);}
  form{display:flex;flex-direction:column;gap:22px;}
  .form-row{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
  label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dimmer);display:block;margin-bottom:9px;}
  input,textarea{
    width:100%;
    background:transparent;
    border:none;
    border-bottom:1px solid var(--line);
    color:var(--paper);
    font-family:'Inter',sans-serif;font-weight:300;
    font-size:15px;
    padding:10px 2px;
    transition:border-color .3s;
  }
  input:focus,textarea:focus{outline:none;border-color:var(--bronze);}
  textarea{resize:vertical;min-height:70px;}
  .submit-btn{
    align-self:flex-start;
    margin-top:10px;
    background:var(--bronze);
    color:#0a0a0b;
    border:none;
    padding:16px 38px;
    font-size:13px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;
    cursor:pointer;
    transition:background .3s;
    font-family:'Inter';
  }
  .submit-btn:hover{background:var(--bronze-glow);}
  .form-note{font-size:12px;color:var(--paper-dimmer);margin-top:6px;}
  .hp-field{position:absolute;left:-9999px;opacity:0;height:0;width:0;}
  .form-success{display:none;color:var(--bronze-glow);font-size:14px;margin-top:14px;}
  .form-error{display:none;color:#ffb4ab;font-size:14px;margin-top:14px;}
  .submit-btn:disabled{opacity:.65;cursor:wait;}
  .privacy-consent{display:flex;align-items:flex-start;gap:10px;font-size:13px;line-height:1.5;cursor:pointer;}
  .privacy-consent input{width:auto;margin-top:3px;flex:0 0 auto;}
  .privacy-consent a{text-decoration:underline;text-underline-offset:3px;}

  /* ===== Footer ===== */
  footer{border-top:1px solid var(--line);padding:60px 0 30px;}
  .footer-top{display:flex;justify-content:space-between;align-items:flex-start;gap:40px;flex-wrap:wrap;padding-bottom:50px;}
  .footer-brand{display:flex;align-items:center;gap:18px;}
  .footer-logo-full{
  width:150px;
  max-width:none;
  height:auto;
  display:block;
  flex-shrink:0;
}
  .footer-brand-caption{font-family:'IBM Plex Mono',monospace;font-size:12px;line-height:1.5;color:var(--paper-dimmer);}
  .footer-cols{display:flex;gap:70px;flex-wrap:wrap;}
  .footer-col h4{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dimmer);margin-bottom:16px;}
  .footer-col a,.footer-col span{display:block;font-size:14px;color:var(--paper-dim);margin-bottom:10px;}
  .footer-col a:hover{color:var(--bronze-glow);}
  
.footer-bottom a{
color:var(--bronze);
font-weight:600;
text-decoration:none;
}

.footer-bottom a:hover{
text-decoration:underline;
}

.footer-bottom{
    display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;
    padding-top:26px;border-top:1px solid var(--line);
    font-size:12px;color:var(--paper-dimmer);
  }
  .socials{display:flex;gap:16px;}
  .socials a{width:32px;height:32px;border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:border-color .3s;}
  .socials a:hover{border-color:var(--bronze);}
  .socials svg{width:14px;height:14px;stroke:var(--paper-dim);fill:none;}

  /* ===== Cookie banner ===== */
  .cookie-banner{
    position:fixed;left:24px;right:24px;bottom:24px;
    max-width:560px;
    background:var(--panel);
    border:1px solid var(--line);
    padding:26px 28px;
    z-index:200;
    box-shadow:0 20px 60px rgba(0,0,0,.5);
    transform:translateY(140%);
    transition:transform .5s cubic-bezier(.16,1,.3,1);
  }
  .cookie-banner.show{transform:translateY(0);}
  .cookie-banner p{font-size:13px;color:var(--paper-dim);margin-bottom:18px;}
  .cookie-actions{display:flex;gap:14px;flex-wrap:wrap;}
  .cookie-actions button{
    font-size:12px;letter-spacing:.06em;text-transform:uppercase;
    padding:11px 20px;cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--paper-dim);
    font-family:'Inter';transition:all .3s;
  }
  .cookie-actions .accept{background:var(--bronze);border-color:var(--bronze);color:#0a0a0b;}
  .cookie-actions button:hover{border-color:var(--bronze);}

  .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease, transform .8s ease;}
  .reveal.in{opacity:1;transform:translateY(0);}

  @media (max-width:980px){
    .wrap,.hero-content{padding:0 24px;}
    header{padding:20px 24px;}
    header.scrolled{padding:14px 24px;}
    nav{position:fixed;top:0;right:0;height:100svh;width:78%;max-width:320px;
      background:var(--ink-2);flex-direction:column;justify-content:center;align-items:flex-start;
      gap:30px;padding:40px;transform:translateX(100%);transition:transform .4s ease;border-left:1px solid var(--line);}
    nav.open{transform:translateX(0);}
    .burger{display:flex;}
    .architect-credit{display:none;}
    .promoter-logo{height:36px;}
    .specs-inner{grid-template-columns:1fr 1fr;}
    .spec{border-bottom:1px solid var(--line);}
    .features{grid-template-columns:1fr;}
    .siteplan-grid{grid-template-columns:1fr;}
    .siteplan-visual{padding:34px;min-height:auto;}
    .gallery{grid-template-columns:1fr;}
    .location{grid-template-columns:1fr;gap:50px;}
    .contact-panel{grid-template-columns:1fr;padding:34px;}
    .form-row{grid-template-columns:1fr;}
    .section{padding:90px 0;}
    .footer-top{padding-bottom:34px;}
    .hero-title{font-size:clamp(42px,13vw,64px);letter-spacing:0;}
    .hero-slogan{font-size:16px;}
    .hero-sub{font-size:15.5px;}
    .section-title{font-size:clamp(30px,8vw,42px);line-height:1.02;}
    .section-note{font-size:14px;}
    .section-head{margin-bottom:50px;}
  }
  @media (prefers-reduced-motion:reduce){
    *{animation:none !important;transition:none !important;}
  }

/* ===== SECÇÃO VISTA AÉREA ===== */

.aerial-section{
  position:relative;
  min-height:760px;
  display:flex;
  align-items:flex-end;
  overflow:hidden;
  background:#0d0d0c;
  isolation:isolate;
}

.aerial-image{
  position:absolute;
  inset:0;
  z-index:-3;
}

.aerial-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  display:block;
  transform:scale(1.01);
}

.aerial-section::before{
  content:'';
  position:absolute;
  inset:0;
  z-index:-2;
  background:
    linear-gradient(
      180deg,
      rgba(13,13,12,.10) 0%,
      rgba(13,13,12,.08) 36%,
      rgba(13,13,12,.72) 78%,
      rgba(13,13,12,.96) 100%
    );
}

.aerial-section::after{
  content:'';
  position:absolute;
  inset:0;
  z-index:-1;
  background:
    linear-gradient(
      90deg,
      rgba(13,13,12,.50) 0%,
      rgba(13,13,12,.08) 58%,
      rgba(13,13,12,.20) 100%
    );
}

.aerial-content{
  width:100%;
  max-width:1280px;
  margin:0 auto;
  padding:110px 48px 86px;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:60px;
}

.aerial-copy{
  max-width:690px;
}

.aerial-copy .eyebrow{
  margin-bottom:24px;
}

.aerial-title{
  max-width:760px;
  font-size:clamp(58px,7vw,112px);
  color:var(--paper);
  text-shadow:0 3px 22px rgba(0,0,0,.35);
}

.aerial-description{
  max-width:630px;
  margin-top:26px;
  color:var(--paper-dim);
  font-size:17px;
  line-height:1.75;
  text-shadow:0 2px 14px rgba(0,0,0,.55);
}

.aerial-action{
  flex:0 0 auto;
  padding-bottom:8px;
}

.aerial-button{
  min-width:225px;
  min-height:58px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:16px 28px;
  border:1px solid var(--bronze);
  background:rgba(181,142,89,.92);
  color:#171614;
  font-size:12px;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
  backdrop-filter:blur(6px);
  transition:
    background .25s ease,
    color .25s ease,
    transform .25s ease;
}

.aerial-button:hover{
  background:var(--paper);
  color:var(--ink);
  transform:translateY(-2px);
}

@media (max-width:980px){
  .aerial-section{
    min-height:680px;
  }

  .aerial-content{
    padding:90px 32px 64px;
    flex-direction:column;
    align-items:flex-start;
    gap:34px;
  }

  .aerial-title{
    font-size:clamp(52px,10vw,82px);
  }

  .aerial-action{
    padding-bottom:0;
  }
}

@media (max-width:640px){
  .aerial-section{
    min-height:650px;
  }

  .aerial-image img{
    object-position:center center;
  }

  .aerial-section::after{
    background:rgba(13,13,12,.20);
  }

  .aerial-content{
    padding:82px 22px 48px;
  }

  .aerial-title{
    font-size:50px;
  }

  .aerial-description{
    font-size:15px;
    line-height:1.65;
  }

  .aerial-button{
    width:100%;
  }

  .aerial-action{
    width:100%;
  }
}

/* ===== FIM SECÇÃO VISTA AÉREA ===== */

/* ===== AJUSTE VISTA AÉREA: CONTEÚDO NO TOPO ===== */

/*
 * O texto passa para o topo esquerdo.
 * O botão passa para o topo direito.
 * O degradé escurece sobretudo os edifícios exteriores,
 * deixando os módulos centrais mais visíveis.
 */

.aerial-section{
  min-height:760px;
  align-items:flex-start !important;
}

.aerial-image img{
  object-position:center center;
}

/* Retirar o degradé escuro que cobria toda a zona inferior */
.aerial-section::before{
  background:
    linear-gradient(
      180deg,
      rgba(13,13,12,.93) 0%,
      rgba(13,13,12,.78) 17%,
      rgba(13,13,12,.42) 34%,
      rgba(13,13,12,.10) 55%,
      rgba(13,13,12,.02) 100%
    ) !important;
}

/*
 * Sombra lateral apenas no canto superior esquerdo,
 * onde se encontra o texto.
 */
.aerial-section::after{
  background:
    radial-gradient(
      ellipse 72% 62% at 15% 3%,
      rgba(13,13,12,.76) 0%,
      rgba(13,13,12,.46) 42%,
      rgba(13,13,12,.10) 72%,
      transparent 100%
    ) !important;
}

.aerial-content{
  align-items:flex-start !important;
  padding-top:78px !important;
  padding-bottom:50px !important;
}

.aerial-copy{
  max-width:720px;
}

.aerial-copy .eyebrow{
  margin-bottom:16px;
}

.aerial-title{
  max-width:700px;
  font-size:clamp(54px,5.8vw,94px);
  line-height:.92;
  text-shadow:
    0 2px 8px rgba(0,0,0,.80),
    0 8px 30px rgba(0,0,0,.42);
}

.aerial-description{
  max-width:610px;
  margin-top:20px;
  color:rgba(245,241,233,.86);
  font-size:16px;
  line-height:1.65;
  text-shadow:
    0 2px 8px rgba(0,0,0,.90),
    0 4px 18px rgba(0,0,0,.52);
}

.aerial-action{
  padding-top:34px;
  padding-bottom:0 !important;
}

/*
 * Pequeno painel semitransparente apenas atrás do texto.
 * Não ocupa toda a largura nem cobre os armazéns centrais.
 */
.aerial-copy{
  position:relative;
  isolation:isolate;
}

.aerial-copy::before{
  content:'';
  position:absolute;
  z-index:-1;
  top:-34px;
  right:-42px;
  bottom:-30px;
  left:-38px;
  background:
    linear-gradient(
      110deg,
      rgba(13,13,12,.58) 0%,
      rgba(13,13,12,.37) 64%,
      rgba(13,13,12,0) 100%
    );
  filter:blur(2px);
  pointer-events:none;
}

/* Tablet */
@media (max-width:980px){
  .aerial-section{
    min-height:700px;
  }

  .aerial-content{
    padding-top:66px !important;
    padding-bottom:42px !important;
    gap:24px;
  }

  .aerial-title{
    max-width:620px;
    font-size:clamp(48px,8vw,76px);
  }

  .aerial-action{
    padding-top:6px;
  }
}

/* Telemóvel */
@media (max-width:640px){
  .aerial-section{
    min-height:680px;
  }

  .aerial-image img{
    object-position:55% center;
  }

  .aerial-section::before{
    background:
      linear-gradient(
        180deg,
        rgba(13,13,12,.94) 0%,
        rgba(13,13,12,.76) 28%,
        rgba(13,13,12,.26) 56%,
        rgba(13,13,12,.03) 100%
      ) !important;
  }

  .aerial-section::after{
    background:
      radial-gradient(
        ellipse 115% 58% at 12% 0%,
        rgba(13,13,12,.74) 0%,
        rgba(13,13,12,.34) 58%,
        transparent 100%
      ) !important;
  }

  .aerial-content{
    padding-top:52px !important;
    padding-bottom:34px !important;
  }

  .aerial-title{
    max-width:100%;
    font-size:46px;
  }

  .aerial-description{
    max-width:100%;
    font-size:14px;
    line-height:1.55;
  }

  .aerial-copy::before{
    top:-25px;
    right:-16px;
    bottom:-22px;
    left:-16px;
  }

  .aerial-action{
    width:100%;
    padding-top:4px;
  }

  .aerial-button{
    width:100%;
  }
}

/* ===== FIM AJUSTE VISTA AÉREA NO TOPO ===== */

/* ===== TRANSIÇÃO VISTA AÉREA / PLANTA ===== */

/*
 * A secção da planta começa imediatamente depois da fotografia.
 * Mantém-se apenas uma margem curta para o título respirar.
 */
.aerial-section + .siteplan{
  margin-top:0 !important;
  padding-top:0 !important;
}

/* Evita qualquer espaço criado entre as duas secções. */
.aerial-section{
  margin-bottom:0 !important;
}

.aerial-section + .siteplan > .section-head{
  padding-top:48px !important;
}

/* Tablet */
@media (max-width:980px){
  .aerial-section + .siteplan > .section-head{
    padding-top:40px !important;
  }
}

/* Telemóvel */
@media (max-width:640px){
  .aerial-section + .siteplan > .section-head{
    padding-top:32px !important;
  }
}

/* ===== FIM TRANSIÇÃO VISTA AÉREA / PLANTA ===== */

/* ===== AJUSTE GALERIA → LOCALIZAÇÃO ===== */

/* Remove o espaço no fim da galeria */
#galeria{
    padding-bottom:0 !important;
    margin-bottom:0 !important;
}

/* Remove o espaço antes da localização */
#localizacao{
    padding-top:40px !important;
    margin-top:0 !important;
}

/* Tablet */
@media (max-width:980px){
    #localizacao{
        padding-top:32px !important;
    }
}

/* Mobile */
@media (max-width:640px){
    #localizacao{
        padding-top:24px !important;
    }
}

/* ===== FIM AJUSTE GALERIA → LOCALIZAÇÃO ===== */

/* ===== MELHORIA VISUAL PLANTA INTERATIVA ===== */

/*
 * Mantém as posições e dimensões atuais dos módulos.
 * Melhora apenas profundidade, hover, seleção e transições.
 */

.siteplan-visual{
  isolation:isolate;
  overflow:hidden;
}

/* Luz ambiente muito subtil por trás da planta */
.siteplan-visual::before{
  content:'';
  position:absolute;
  width:520px;
  height:520px;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:
    radial-gradient(
      circle,
      rgba(181,142,89,.075) 0%,
      rgba(181,142,89,.025) 45%,
      transparent 72%
    );
  pointer-events:none;
  z-index:0;
}

.siteplan-svg,
.siteplan-caption{
  position:relative;
  z-index:1;
}

.siteplan-svg{
  overflow:visible;
}

/* Estado base de cada armazém */
.plot{
  vector-effect:non-scaling-stroke;
  stroke-width:1.15;
  transition:
    fill .28s ease,
    stroke .28s ease,
    stroke-width .28s ease,
    filter .28s ease,
    opacity .28s ease;
}

/* Hover: destaque elegante sem deslocar a geometria */
.plot:hover{
  fill:rgba(181,142,89,.20);
  stroke:var(--bronze-glow);
  stroke-width:1.55;
  filter:
    drop-shadow(0 0 4px rgba(212,172,116,.26))
    drop-shadow(0 7px 12px rgba(0,0,0,.30));
}

/* Módulo selecionado */
.plot.active{
  fill:rgba(181,142,89,.36);
  stroke:var(--bronze-glow);
  stroke-width:1.75;
  filter:
    drop-shadow(0 0 5px rgba(212,172,116,.38))
    drop-shadow(0 9px 16px rgba(0,0,0,.38));
}

/* Contorno de teclado mais integrado no SVG */
.plot:focus{
  outline:none;
}

.plot:focus-visible{
  stroke:#f2cf9d;
  stroke-width:2.3;
  filter:
    drop-shadow(0 0 6px rgba(242,207,157,.48))
    drop-shadow(0 8px 14px rgba(0,0,0,.34));
}

/* Números */
.plot-label{
  transition:
    fill .25s ease,
    opacity .25s ease;
}

.plot-label.active{
  fill:#fffaf1;
  font-weight:500;
}

/* Número do módulo no painel direito */
.plot-detail .pnum{
  position:relative;
  display:inline-block;
  width:max-content;
  text-shadow:0 7px 22px rgba(181,142,89,.18);
}

.plot-detail .pnum::after{
  content:'';
  position:absolute;
  left:3px;
  right:3px;
  bottom:-8px;
  height:1px;
  background:
    linear-gradient(
      90deg,
      var(--bronze),
      rgba(181,142,89,0)
    );
}

/* Animação da informação ao mudar de módulo */
.plot-detail.active{
  animation:plotDetailEnter .42s cubic-bezier(.16,1,.3,1) both;
}

@keyframes plotDetailEnter{
  from{
    opacity:0;
    transform:translateY(10px);
  }

  to{
    opacity:1;
    transform:translateY(0);
  }
}

/* Painel de informação com profundidade subtil */
.siteplan-info{
  position:relative;
  overflow:hidden;
}

.siteplan-info::before{
  content:'';
  position:absolute;
  top:0;
  left:0;
  width:1px;
  height:100%;
  background:
    linear-gradient(
      180deg,
      transparent,
      rgba(181,142,89,.42) 28%,
      rgba(181,142,89,.18) 72%,
      transparent
    );
  pointer-events:none;
}

/* Pequena indicação visual no módulo selecionado */
.siteplan-info::after{
  content:'MÓDULO SELECIONADO';
  position:absolute;
  top:26px;
  right:30px;
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  letter-spacing:.13em;
  color:var(--paper-dimmer);
  opacity:.62;
  pointer-events:none;
}

/* Respeitar preferências de acessibilidade */
@media (prefers-reduced-motion:reduce){
  .plot,
  .plot-label,
  .plot-detail.active{
    transition:none !important;
    animation:none !important;
  }
}

@media (max-width:980px){
  .siteplan-info::after{
    top:20px;
    right:22px;
  }

  .plot:hover{
    filter:none;
  }

  .plot.active{
    filter:drop-shadow(0 0 4px rgba(212,172,116,.32));
  }
}

@media (max-width:640px){
  .siteplan-info::after{
    content:'SELECIONADO';
    top:17px;
    right:17px;
    font-size:8px;
  }
}

/* ===== FIM MELHORIA VISUAL PLANTA INTERATIVA ===== */











/* ===== HERO PREMIUM V1 ===== */

/*
 * Mantém o layout original.
 * Adiciona profundidade, entrada suave e interações discretas.
 */

.hero{
  isolation:isolate;
  overflow:hidden;
}

/* A fotografia ganha margem para o movimento de parallax */
.hero-bg{
  inset:-4% !important;
  width:108% !important;
  height:108% !important;
  will-change:transform;
  transform:translate3d(0,0,0) scale(1.025);
  transition:transform .15s linear;
}

/* Melhor separação entre imagem e conteúdo */
.hero-scrim{
  background:
    linear-gradient(
      90deg,
      rgba(9,9,8,.82) 0%,
      rgba(9,9,8,.60) 34%,
      rgba(9,9,8,.17) 66%,
      rgba(9,9,8,.06) 100%
    ),
    linear-gradient(
      180deg,
      rgba(9,9,8,.20) 0%,
      rgba(9,9,8,.04) 44%,
      rgba(9,9,8,.48) 100%
    ) !important;
}

.hero-content{
  position:relative;
  z-index:3;
}

/* Entrada progressiva dos elementos */
.hero-content .eyebrow,
.hero-content .hero-title,
.hero-content .hero-slogan,
.hero-content .hero-sub,
.hero-content .hero-actions{
  opacity:0;
  transform:translateY(24px);
  animation:heroPremiumEnter .9s cubic-bezier(.16,1,.3,1) forwards;
}

.hero-content .eyebrow{
  animation-delay:.10s;
}

.hero-content .hero-title{
  animation-delay:.20s;
}

.hero-content .hero-slogan{
  animation-delay:.34s;
}

.hero-content .hero-sub{
  animation-delay:.46s;
}

.hero-content .hero-actions{
  animation-delay:.58s;
}

@keyframes heroPremiumEnter{
  from{
    opacity:0;
    transform:translateY(24px);
  }

  to{
    opacity:1;
    transform:translateY(0);
  }
}

/* Título com maior profundidade sem alterar o desenho */
.hero-title{
  text-shadow:
    0 4px 10px rgba(0,0,0,.42),
    0 18px 50px rgba(0,0,0,.28);
}

.hero-title .accent{
  position:relative;
  display:inline-block;
}

.hero-title .accent::after{
  content:'';
  position:absolute;
  left:2px;
  right:1px;
  bottom:-7px;
  height:1px;
  transform:scaleX(0);
  transform-origin:left center;
  background:
    linear-gradient(
      90deg,
      var(--bronze),
      rgba(181,142,89,0)
    );
  animation:heroAccentLine 1.15s .85s cubic-bezier(.16,1,.3,1) forwards;
}

@keyframes heroAccentLine{
  to{
    transform:scaleX(1);
  }
}

/* Texto mais legível sem aumentar demasiado o bloco */
.hero-sub{
  max-width:620px;
  text-wrap:balance;
  text-shadow:0 2px 12px rgba(0,0,0,.56);
}

/* Botões premium */
.hero-actions{
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
}

.hero-actions a{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  transition:
    transform .28s cubic-bezier(.16,1,.3,1),
    background-color .28s ease,
    border-color .28s ease,
    color .28s ease,
    box-shadow .28s ease;
}

.hero-actions a::before{
  content:'';
  position:absolute;
  z-index:-1;
  top:0;
  bottom:0;
  left:-110%;
  width:70%;
  transform:skewX(-20deg);
  background:
    linear-gradient(
      90deg,
      transparent,
      rgba(255,255,255,.22),
      transparent
    );
  transition:left .55s cubic-bezier(.16,1,.3,1);
}

.hero-actions a:hover{
  transform:translateY(-3px);
}

.hero-actions a:hover::before{
  left:145%;
}

.hero-actions .btn-primary:hover{
  box-shadow:
    0 12px 34px rgba(181,142,89,.23),
    0 2px 8px rgba(0,0,0,.18);
}

.hero-actions .btn-ghost:hover{
  border-color:var(--bronze-glow);
  box-shadow:0 12px 32px rgba(0,0,0,.18);
}

/* Indicação de scroll mais refinada */
.scroll-cue{
  opacity:.82;
}

.scroll-cue .line{
  position:relative;
  overflow:hidden;
}

.scroll-cue .line::after{
  content:'';
  position:absolute;
  top:-100%;
  left:0;
  width:100%;
  height:70%;
  background:var(--bronze-glow);
  animation:heroScrollLine 2.1s ease-in-out infinite;
}

@keyframes heroScrollLine{
  0%{
    transform:translateY(0);
  }

  70%,
  100%{
    transform:translateY(300%);
  }
}

/* Tablet */
@media (max-width:980px){
  .hero-bg{
    inset:-2% !important;
    width:104% !important;
    height:104% !important;
  }

  .hero-sub{
    max-width:560px;
  }
}

/* Telemóvel */
@media (max-width:640px){
  .hero-scrim{
    background:
      linear-gradient(
        90deg,
        rgba(9,9,8,.81) 0%,
        rgba(9,9,8,.47) 68%,
        rgba(9,9,8,.16) 100%
      ),
      linear-gradient(
        180deg,
        rgba(9,9,8,.24) 0%,
        rgba(9,9,8,.07) 42%,
        rgba(9,9,8,.58) 100%
      ) !important;
  }

  .hero-actions{
    width:100%;
    align-items:stretch;
  }

  .hero-actions a{
    width:100%;
    justify-content:center;
    text-align:center;
  }

  .hero-sub{
    text-wrap:pretty;
  }
}

/* Respeitar preferências de acessibilidade */
@media (prefers-reduced-motion:reduce){
  .hero-bg{
    transform:scale(1.025) !important;
    transition:none !important;
  }

  .hero-content .eyebrow,
  .hero-content .hero-title,
  .hero-content .hero-slogan,
  .hero-content .hero-sub,
  .hero-content .hero-actions{
    opacity:1 !important;
    transform:none !important;
    animation:none !important;
  }

  .hero-title .accent::after{
    transform:scaleX(1);
    animation:none !important;
  }

  .scroll-cue .line::after{
    display:none;
    animation:none !important;
  }
}

/* ===== FIM HERO PREMIUM V1 ===== */




/* ===== SECÇÃO INSTITUCIONAL GRUPO JAMO ===== */

.jamo-section{
  position:relative;
  overflow:hidden;
  background:
    linear-gradient(
      135deg,
      #171614 0%,
      #1e1c1a 52%,
      #252220 100%
    );
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}

.jamo-section::before{
  content:'JAMO';
  position:absolute;
  right:-2vw;
  bottom:-9vw;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:clamp(180px,27vw,470px);
  font-weight:800;
  line-height:.75;
  letter-spacing:-.04em;
  color:rgba(245,241,233,.018);
  pointer-events:none;
  user-select:none;
}

.jamo-section::after{
  content:'';
  position:absolute;
  top:-180px;
  right:-160px;
  width:520px;
  height:520px;
  border:1px solid rgba(181,142,89,.10);
  transform:rotate(18deg);
  pointer-events:none;
}

.jamo-inner{
  position:relative;
  z-index:2;
  max-width:1280px;
  margin:0 auto;
  padding:120px 48px;
  display:grid;
  grid-template-columns:.78fr 1.45fr;
  gap:90px;
  align-items:center;
}

.jamo-brand{
  display:flex;
  justify-content:center;
}

.jamo-brand-frame{
  width:min(100%,360px);
  min-height:430px;
  padding:58px 42px 38px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:34px;
  position:relative;
  border:1px solid rgba(181,142,89,.42);
  background:
    linear-gradient(
      145deg,
      rgba(255,255,255,.035),
      rgba(255,255,255,.006)
    );
  box-shadow:
    0 34px 80px rgba(0,0,0,.25),
    inset 0 1px 0 rgba(255,255,255,.035);
}

.jamo-brand-frame::before,
.jamo-brand-frame::after{
  content:'';
  position:absolute;
  width:34px;
  height:34px;
  border-color:var(--bronze);
  opacity:.75;
}

.jamo-brand-frame::before{
  top:16px;
  left:16px;
  border-top:1px solid;
  border-left:1px solid;
}

.jamo-brand-frame::after{
  right:16px;
  bottom:16px;
  border-right:1px solid;
  border-bottom:1px solid;
}

.jamo-brand-logo{
  width:min(240px,90%);
  height:auto;
  filter:brightness(0) invert(1);
  opacity:.96;
}

.jamo-brand-caption{
  font-size:11px;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
  text-align:center;
}

.jamo-content{
  max-width:760px;
}

.jamo-content .eyebrow{
  margin-bottom:25px;
}

.jamo-title{
  max-width:760px;
  font-size:clamp(54px,6.2vw,94px);
  line-height:.94;
  color:var(--paper);
  text-wrap:balance;
}

.jamo-lead{
  max-width:690px;
  margin-top:32px;
  font-size:17px;
  line-height:1.78;
  color:var(--paper-dim);
}

.jamo-pillars{
  margin-top:50px;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}

.jamo-pillar{
  position:relative;
  padding:31px 24px 34px 0;
}

.jamo-pillar + .jamo-pillar{
  padding-left:25px;
  border-left:1px solid var(--line);
}

.jamo-pillar-number{
  display:block;
  margin-bottom:18px;
  font-size:11px;
  letter-spacing:.10em;
  color:var(--bronze-glow);
}

.jamo-pillar h3{
  margin-bottom:12px;
  font-family:'Fraunces',serif;
  font-size:19px;
  font-style:italic;
  font-weight:400;
  line-height:1.25;
  text-transform:none;
  letter-spacing:0;
  color:var(--paper);
}

.jamo-pillar p{
  font-size:13px;
  line-height:1.65;
  color:var(--paper-dimmer);
}

/* Tablet */
@media (max-width:980px){
  .jamo-inner{
    padding:90px 32px;
    grid-template-columns:1fr;
    gap:60px;
  }

  .jamo-brand{
    justify-content:flex-start;
  }

  .jamo-brand-frame{
    width:100%;
    max-width:none;
    min-height:280px;
    flex-direction:row;
    justify-content:space-between;
    padding:48px;
  }

  .jamo-brand-logo{
    width:min(230px,48%);
  }

  .jamo-brand-caption{
    max-width:180px;
    text-align:right;
  }

  .jamo-title{
    max-width:720px;
  }
}

/* Telemóvel */
@media (max-width:640px){
  .jamo-inner{
    padding:72px 22px;
    gap:46px;
  }

  .jamo-brand-frame{
    min-height:250px;
    padding:42px 28px;
    flex-direction:column;
    justify-content:center;
  }

  .jamo-brand-logo{
    width:min(215px,85%);
  }

  .jamo-brand-caption{
    max-width:none;
    text-align:center;
  }

  .jamo-content .eyebrow{
    margin-bottom:20px;
  }

  .jamo-title{
    font-size:46px;
  }

  .jamo-lead{
    margin-top:25px;
    font-size:15px;
    line-height:1.68;
  }

  .jamo-pillars{
    margin-top:38px;
    grid-template-columns:1fr;
    border-bottom:0;
  }

  .jamo-pillar{
    padding:26px 0;
    border-bottom:1px solid var(--line);
  }

  .jamo-pillar + .jamo-pillar{
    padding-left:0;
    border-left:0;
  }

  .jamo-pillar h3{
    font-size:18px;
  }
}

/* ===== FIM SECÇÃO INSTITUCIONAL GRUPO JAMO ===== */




/* ===== PLANTA PREMIUM V1 ===== */

/* Secção com maior profundidade */
.siteplan{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(
      circle at 20% 25%,
      rgba(181,142,89,.055),
      transparent 34%
    ),
    linear-gradient(
      135deg,
      #171614 0%,
      #1e1c1a 52%,
      #171614 100%
    );
}

.siteplan::before{
  content:'09';
  position:absolute;
  right:-15px;
  top:20px;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:clamp(150px,22vw,360px);
  font-weight:800;
  line-height:.8;
  color:rgba(245,241,233,.018);
  pointer-events:none;
  user-select:none;
}

/* Cabeçalho da secção */
.siteplan > .section-head{
  position:relative;
  z-index:2;
}

.siteplan > .section-head .section-title{
  max-width:720px;
}

.siteplan > .section-head .section-note{
  max-width:670px;
}


/* ---------------------------------------------------------
   Faixa-resumo
--------------------------------------------------------- */

.siteplan-premium-summary{
  position:relative;
  z-index:2;
  max-width:1280px;
  margin:46px auto 0;
  padding:0 48px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
}

.siteplan-summary-item{
  min-height:126px;
  padding:27px 30px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:rgba(255,255,255,.012);
  transition:
    background .3s ease,
    border-color .3s ease,
    transform .3s cubic-bezier(.16,1,.3,1);
}

.siteplan-summary-item + .siteplan-summary-item{
  border-left:1px solid var(--line);
}

.siteplan-summary-item:hover{
  position:relative;
  z-index:2;
  transform:translateY(-4px);
  border-color:rgba(181,142,89,.52);
  background:rgba(181,142,89,.055);
}

.siteplan-summary-item strong{
  display:block;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:clamp(28px,3vw,43px);
  font-weight:700;
  line-height:1;
  letter-spacing:.01em;
  text-transform:uppercase;
  color:var(--paper);
}

.siteplan-summary-item span{
  display:block;
  margin-top:10px;
  font-family:'IBM Plex Mono',monospace;
  font-size:10px;
  line-height:1.45;
  letter-spacing:.10em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}


/* ---------------------------------------------------------
   Grelha principal
--------------------------------------------------------- */

.siteplan-grid{
  position:relative;
  z-index:2;
  max-width:1440px;
  margin:55px auto 0;
  grid-template-columns:minmax(0,1.22fr) minmax(370px,.78fr);
  border-top:1px solid var(--line);
}

.siteplan-visual{
  min-height:690px;
  padding:75px 65px 55px;
  background:
    radial-gradient(
      circle at 50% 45%,
      rgba(181,142,89,.07),
      rgba(13,13,14,.97) 58%
    );
  perspective:1200px;
}

.siteplan-svg{
  max-width:720px;
  overflow:visible;
  filter:drop-shadow(0 25px 40px rgba(0,0,0,.22));
  transform:translateZ(0);
}

.siteplan-caption{
  position:relative;
  margin-top:5px;
  padding-top:20px;
  letter-spacing:.08em;
}

.siteplan-caption::before{
  content:'';
  position:absolute;
  top:0;
  left:50%;
  width:74px;
  height:1px;
  transform:translateX(-50%);
  background:
    linear-gradient(
      90deg,
      transparent,
      var(--bronze),
      transparent
    );
}


/* ---------------------------------------------------------
   Módulos
--------------------------------------------------------- */

.plot{
  vector-effect:non-scaling-stroke;
  stroke-width:1.15;
  transform-box:fill-box;
  transform-origin:center;
  transition:
    transform .36s cubic-bezier(.16,1,.3,1),
    fill .3s ease,
    stroke .3s ease,
    filter .3s ease;
}

.plot:hover{
  transform:scale(1.025);
  fill:rgba(181,142,89,.24);
  stroke:var(--bronze-glow);
  filter:
    drop-shadow(0 0 7px rgba(212,172,116,.26))
    drop-shadow(0 12px 17px rgba(0,0,0,.20));
}

.plot.active{
  transform:scale(1.032);
  fill:rgba(181,142,89,.36);
  stroke:var(--bronze-glow);
  stroke-width:1.45;
  filter:
    drop-shadow(0 0 9px rgba(212,172,116,.34))
    drop-shadow(0 16px 22px rgba(0,0,0,.25));
}

.plot:focus-visible{
  outline:none;
  stroke:#fff;
  stroke-width:2;
  filter:
    drop-shadow(0 0 7px rgba(255,255,255,.5))
    drop-shadow(0 0 16px rgba(212,172,116,.34));
}

.plot-label{
  font-size:16px;
  font-weight:500;
  transition:
    fill .3s ease,
    filter .3s ease;
}

.plot-label.active{
  fill:#fff;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.65));
}


/* ---------------------------------------------------------
   Painel de informação
--------------------------------------------------------- */

.siteplan-info{
  min-height:690px;
  padding:82px 68px;
  background:
    linear-gradient(
      145deg,
      rgba(255,255,255,.025),
      rgba(255,255,255,.004)
    );
  border-left:1px solid rgba(255,255,255,.02);
}

.siteplan-info::after{
  content:'';
  position:absolute;
  top:42px;
  right:42px;
  width:42px;
  height:42px;
  border-top:1px solid rgba(181,142,89,.58);
  border-right:1px solid rgba(181,142,89,.58);
  pointer-events:none;
}

.plot-detail{
  position:relative;
  max-width:500px;
}

.plot-detail .pnum{
  position:relative;
  display:inline-block;
  margin-bottom:18px;
  font-size:clamp(82px,8vw,126px);
  line-height:.74;
  letter-spacing:-.02em;
  color:var(--bronze-glow);
  text-shadow:0 14px 40px rgba(0,0,0,.25);
}

.plot-detail .pnum::before{
  content:'MÓDULO';
  position:absolute;
  left:4px;
  bottom:-28px;
  font-family:'IBM Plex Mono',monospace;
  font-size:10px;
  font-weight:400;
  line-height:1;
  letter-spacing:.18em;
  color:var(--paper-dimmer);
}

.plot-detail .pnum::after{
  bottom:-42px;
  right:-76px;
}

.plot-stats{
  margin-top:68px;
  gap:0;
  border-top:1px solid var(--line);
  border-left:1px solid var(--line);
}

.plot-stats div{
  min-height:105px;
  padding:22px 20px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:rgba(255,255,255,.012);
  transition:
    background .25s ease,
    border-color .25s ease;
}

.plot-stats div:hover{
  background:rgba(181,142,89,.045);
  border-color:rgba(181,142,89,.34);
}

.plot-stats div span{
  margin-bottom:10px;
}

.plot-stats div b{
  font-size:clamp(16px,1.7vw,20px);
  line-height:1.3;
}

.siteplan-hint{
  max-width:420px;
  margin-top:24px;
  padding-left:18px;
  border-left:1px solid var(--bronze-soft);
  line-height:1.65;
}

.siteplan-cta{
  margin-top:30px;
  min-height:54px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  position:relative;
  overflow:hidden;
  transition:
    transform .28s cubic-bezier(.16,1,.3,1),
    box-shadow .28s ease;
}

.siteplan-cta:hover{
  transform:translateY(-3px);
  box-shadow:0 15px 34px rgba(181,142,89,.18);
}


/* ---------------------------------------------------------
   Tablet
--------------------------------------------------------- */

@media (max-width:980px){

  .siteplan-premium-summary{
    padding:0 32px;
    grid-template-columns:repeat(2,1fr);
  }

  .siteplan-summary-item:nth-child(3),
  .siteplan-summary-item:nth-child(4){
    border-top:0;
  }

  .siteplan-summary-item:nth-child(3){
    border-left:0;
  }

  .siteplan-grid{
    grid-template-columns:1fr;
  }

  .siteplan-visual{
    min-height:auto;
    padding:60px 34px 45px;
    border-right:0;
    border-bottom:1px solid var(--line);
  }

  .siteplan-svg{
    max-width:690px;
  }

  .siteplan-info{
    min-height:auto;
    padding:65px 45px;
  }

  .plot-detail{
    max-width:none;
  }

  .plot-detail .pnum{
    font-size:94px;
  }
}


/* ---------------------------------------------------------
   Telemóvel
--------------------------------------------------------- */

@media (max-width:640px){

  .siteplan-premium-summary{
    margin-top:34px;
    padding:0 22px;
    grid-template-columns:1fr 1fr;
  }

  .siteplan-summary-item{
    min-height:112px;
    padding:22px 17px;
  }

  .siteplan-summary-item strong{
    font-size:27px;
  }

  .siteplan-summary-item span{
    font-size:9px;
  }

  .siteplan-grid{
    margin-top:40px;
  }

  .siteplan-visual{
    padding:44px 18px 35px;
  }

  .siteplan-caption{
    max-width:270px;
    line-height:1.55;
  }

  .siteplan-info{
    padding:54px 22px;
  }

  .siteplan-info::after{
    top:22px;
    right:22px;
    width:28px;
    height:28px;
  }

  .plot-detail .pnum{
    font-size:80px;
  }

  .plot-stats{
    grid-template-columns:1fr 1fr;
  }

  .plot-stats div{
    min-height:96px;
    padding:18px 14px;
  }

  .plot-stats div b{
    font-size:15px;
  }

  .siteplan-cta{
    width:100%;
  }
}


/* ---------------------------------------------------------
   Acessibilidade
--------------------------------------------------------- */

@media (prefers-reduced-motion:reduce){

  .plot,
  .siteplan-summary-item,
  .siteplan-cta{
    transition:none !important;
  }

  .plot:hover,
  .plot.active{
    transform:none !important;
  }
}

/* ===== FIM PLANTA PREMIUM V1 ===== */




/* ===== MENU COM GRUPO JAMO ===== */

/* O novo link não deve comprimir o cabeçalho */
#mainNav{
  gap:28px;
}

#mainNav a{
  white-space:nowrap;
}

/* Compensação em ecrãs intermédios */
@media (max-width:1180px) and (min-width:981px){
  header{
    padding-left:30px;
    padding-right:30px;
  }

  header.scrolled{
    padding-left:30px;
    padding-right:30px;
  }

  #mainNav{
    gap:20px;
  }

  #mainNav a{
    font-size:11px;
  }

  .brand-text{
    font-size:13px;
  }

  .promoter-logo{
    height:42px;
  }
}

/* Melhor posicionamento ao navegar por âncoras */
#sobre,
#grupo-jamo,
#unidades,
#localizacao,
#contacto{
  scroll-margin-top:90px;
}

/* ===== FIM MENU COM GRUPO JAMO ===== */




/* ===== LOCALIZAÇÃO PREMIUM V1 ===== */

.location-premium{
  position:relative;
  overflow:hidden;
  padding-top:120px;
  padding-bottom:120px;
}

.location-premium::before{
  content:'PAREDES';
  position:absolute;
  left:-18px;
  bottom:-34px;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:clamp(150px,22vw,350px);
  font-weight:800;
  line-height:.75;
  color:rgba(33,31,28,.025);
  pointer-events:none;
  user-select:none;
}

.location-premium-head{
  position:relative;
  z-index:2;
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(310px,.75fr);
  gap:80px;
  align-items:end;
  margin-bottom:70px;
}

.location-premium-head .eyebrow{
  color:var(--bronze-soft);
}

.location-premium-head .section-title{
  max-width:790px;
  margin-top:22px;
  color:var(--ink-on-stone);
}

.location-premium-intro{
  max-width:520px;
  padding-left:26px;
  border-left:1px solid var(--bronze);
  font-size:16px;
  line-height:1.75;
  color:var(--ink-on-stone-dim);
}

.location-premium-grid{
  position:relative;
  z-index:2;
  display:grid;
  grid-template-columns:minmax(370px,.82fr) minmax(0,1.18fr);
  gap:64px;
  align-items:stretch;
}


/* Cartões */

.location-cards{
  display:grid;
  grid-template-columns:1fr 1fr;
  border-top:1px solid var(--stone-line);
  border-left:1px solid var(--stone-line);
}

.location-card{
  position:relative;
  min-height:205px;
  padding:28px 26px 30px;
  border-right:1px solid var(--stone-line);
  border-bottom:1px solid var(--stone-line);
  background:rgba(255,255,255,.12);
  transition:
    transform .3s cubic-bezier(.16,1,.3,1),
    background .3s ease,
    border-color .3s ease,
    box-shadow .3s ease;
}

.location-card:hover{
  z-index:2;
  transform:translateY(-4px);
  background:rgba(255,255,255,.34);
  border-color:rgba(181,142,89,.48);
  box-shadow:0 20px 50px rgba(33,31,28,.09);
}

.location-card-number{
  position:absolute;
  top:20px;
  right:22px;
  font-size:10px;
  letter-spacing:.12em;
  color:var(--bronze-soft);
}

.location-card-label{
  display:block;
  margin-bottom:25px;
  font-family:'IBM Plex Mono',monospace;
  font-size:10px;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--ink-on-stone-dim);
}

.location-card strong{
  display:block;
  margin-bottom:12px;
  font-family:'Fraunces',serif;
  font-size:21px;
  font-style:italic;
  font-weight:400;
  line-height:1.25;
  color:var(--ink-on-stone);
}

.location-card p{
  max-width:230px;
  font-size:13px;
  line-height:1.65;
  color:var(--ink-on-stone-dim);
}


/* Morada */

.location-address-panel{
  margin-top:26px;
  padding:22px 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:25px;
  border:1px solid var(--stone-line);
  background:rgba(255,255,255,.18);
}

.location-address-label{
  display:block;
  margin-bottom:7px;
  font-size:9px;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--ink-on-stone-dim);
}

.location-address-panel address{
  font-style:normal;
  font-size:13px;
  line-height:1.55;
  color:var(--ink-on-stone);
}

.location-copy-button{
  flex:0 0 auto;
  border:0;
  border-bottom:1px solid var(--bronze-soft);
  padding:8px 0;
  background:transparent;
  font-family:'IBM Plex Mono',monospace;
  font-size:10px;
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--ink-on-stone);
  cursor:pointer;
  transition:
    color .25s ease,
    border-color .25s ease;
}

.location-copy-button:hover{
  color:var(--bronze-soft);
  border-color:var(--bronze);
}


/* Botões */

.location-actions{
  margin-top:28px;
  display:flex;
  gap:14px;
  flex-wrap:wrap;
}

.location-button{
  min-height:54px;
  padding:15px 24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:600;
  letter-spacing:.10em;
  text-transform:uppercase;
  transition:
    transform .28s cubic-bezier(.16,1,.3,1),
    background .28s ease,
    color .28s ease,
    border-color .28s ease,
    box-shadow .28s ease;
}

.location-button:hover{
  transform:translateY(-3px);
}

.location-button-primary{
  border:1px solid var(--bronze);
  background:var(--bronze);
  color:#171614;
}

.location-button-primary:hover{
  background:var(--bronze-glow);
  box-shadow:0 14px 34px rgba(181,142,89,.20);
}

.location-button-secondary{
  border:1px solid var(--stone-line);
  background:transparent;
  color:var(--ink-on-stone);
}

.location-button-secondary:hover{
  border-color:var(--bronze-soft);
  background:rgba(255,255,255,.28);
}


/* Mapa */

.location-map-column{
  min-width:0;
  display:flex;
  flex-direction:column;
}

.map-frame-premium{
  flex:1 1 auto;
  min-height:540px;
  aspect-ratio:auto;
  border:1px solid var(--stone-line);
  box-shadow:0 28px 70px rgba(33,31,28,.13);
}

.map-frame-premium iframe{
  filter:grayscale(.45) sepia(.10) contrast(.95) brightness(1.04);
}

.map-frame-premium .map-consent-gate{
  padding:50px;
  background:
    radial-gradient(
      circle at 50% 35%,
      rgba(181,142,89,.13),
      transparent 42%
    ),
    var(--stone-2);
}

.map-gate-kicker{
  display:block;
  font-size:9px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--bronze-soft);
}

.map-consent-gate strong{
  max-width:350px;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:clamp(35px,4vw,52px);
  font-weight:700;
  line-height:.96;
  text-transform:uppercase;
  color:var(--ink-on-stone);
}

.map-consent-gate p{
  max-width:330px;
  line-height:1.65;
}

.location-map-footer{
  min-height:50px;
  padding:15px 18px;
  display:flex;
  justify-content:space-between;
  gap:20px;
  border-right:1px solid var(--stone-line);
  border-bottom:1px solid var(--stone-line);
  border-left:1px solid var(--stone-line);
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ink-on-stone-dim);
}


/* Tablet */

@media (max-width:980px){

  .location-premium{
    padding-top:90px;
    padding-bottom:90px;
  }

  .location-premium-head{
    grid-template-columns:1fr;
    gap:28px;
    margin-bottom:55px;
  }

  .location-premium-intro{
    max-width:680px;
  }

  .location-premium-grid{
    grid-template-columns:1fr;
    gap:50px;
  }

  .map-frame-premium{
    min-height:500px;
  }
}


/* Telemóvel */

@media (max-width:640px){

  .location-premium{
    padding-top:72px;
    padding-bottom:72px;
  }

  .location-premium-head{
    margin-bottom:42px;
  }

  .location-premium-head .section-title{
    font-size:42px;
  }

  .location-premium-intro{
    padding-left:18px;
    font-size:14px;
    line-height:1.65;
  }

  .location-cards{
    grid-template-columns:1fr;
  }

  .location-card{
    min-height:auto;
    padding:26px 23px 28px;
  }

  .location-card p{
    max-width:none;
  }

  .location-address-panel{
    align-items:flex-start;
    flex-direction:column;
  }

  .location-actions{
    flex-direction:column;
  }

  .location-button{
    width:100%;
  }

  .map-frame-premium{
    min-height:430px;
  }

  .map-frame-premium .map-consent-gate{
    padding:35px 24px;
  }

  .location-map-footer{
    align-items:flex-start;
    flex-direction:column;
    gap:5px;
  }
}


/* Acessibilidade */

@media (prefers-reduced-motion:reduce){

  .location-card,
  .location-button{
    transition:none !important;
  }

  .location-card:hover,
  .location-button:hover{
    transform:none !important;
  }
}

/* ===== FIM LOCALIZAÇÃO PREMIUM V1 ===== */




/* ===== LOCALIZAÇÃO FUNDO UNIFORME ===== */

/*
 * Remove exclusivamente degradés, filtros e sobreposições
 * da secção Localização Premium.
 */

.location-premium{
  background:var(--stone) !important;
  background-image:none !important;
  filter:none !important;
}

/* Remove uma eventual sobreposição acrescentada anteriormente */
.location-premium::after{
  content:none !important;
  display:none !important;
  background:none !important;
}

/*
 * Mantém apenas a decoração tipográfica PAREDES,
 * mas com uma presença muito discreta.
 */
.location-premium::before{
  color:rgba(33,31,28,.018) !important;
  background:none !important;
  filter:none !important;
}

/* Cabeçalho completamente transparente */
.location-premium-head,
.location-premium-head::before,
.location-premium-head::after{
  background:none !important;
  background-image:none !important;
  box-shadow:none !important;
  filter:none !important;
  backdrop-filter:none !important;
}

/* Garante que o conteúdo não herda transparências */
.location-premium .wrap,
.location-premium-grid,
.location-premium-info,
.location-map-column{
  opacity:1;
  background-image:none;
}

/* ===== FIM LOCALIZAÇÃO FUNDO UNIFORME ===== */




/* ===== HERO REFINAMENTO FINAL V2 ===== */

/*
 * Refinamento final:
 * - título com maior presença;
 * - dados organizados visualmente;
 * - CTA principal mais forte;
 * - fotografia e animações mantidas.
 */

.hero-content{
  padding-bottom:54px;
}

/* Maior impacto tipográfico */
.hero-title{
  max-width:1000px;
  font-size:clamp(58px,9.8vw,145px);
  line-height:.88;
  letter-spacing:-.012em;
}

/* Menor distância entre as duas linhas do título */
.hero-title br{
  line-height:.82;
}

.hero-slogan{
  margin-top:25px;
  font-size:clamp(19px,2vw,25px);
}

/* Dados principais organizados em dois blocos */
.hero-sub.hero-facts{
  max-width:670px;
  margin-top:22px;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0;
  padding:0;
  text-wrap:initial;
}

.hero-fact{
  min-height:75px;
  padding:5px 28px 5px 0;
  display:flex;
  flex-direction:column;
  justify-content:center;
}

.hero-fact + .hero-fact{
  padding-left:28px;
  border-left:1px solid rgba(181,142,89,.45);
}

.hero-fact strong{
  display:block;
  font-family:'IBM Plex Mono',monospace;
  font-size:13px;
  font-weight:500;
  line-height:1.45;
  letter-spacing:.025em;
  color:var(--paper);
}

.hero-fact small{
  display:block;
  margin-top:7px;
  font-family:'Inter',sans-serif;
  font-size:13px;
  font-weight:300;
  line-height:1.45;
  letter-spacing:.015em;
  color:var(--paper-dim);
}

/* CTA principal com proporção mais institucional */
.hero-actions{
  margin-top:34px;
}

.hero-actions .btn-primary{
  min-width:210px;
  min-height:56px;
  padding:16px 32px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-weight:600;
  letter-spacing:.12em;
}

/* Tablet */
@media (max-width:980px){

  .hero-title{
    font-size:clamp(58px,11vw,110px);
  }

  .hero-sub.hero-facts{
    max-width:620px;
  }
}

/* Telemóvel */
@media (max-width:640px){

  .hero-content{
    padding-bottom:34px;
  }

  .hero-title{
    max-width:100%;
    font-size:clamp(51px,16vw,72px);
    line-height:.89;
  }

  .hero-slogan{
    max-width:340px;
    margin-top:20px;
    font-size:17px;
    line-height:1.45;
  }

  .hero-sub.hero-facts{
    margin-top:19px;
    grid-template-columns:1fr;
    gap:0;
  }

  .hero-fact{
    min-height:auto;
    padding:12px 0;
  }

  .hero-fact + .hero-fact{
    padding-left:0;
    border-left:0;
    border-top:1px solid rgba(181,142,89,.35);
  }

  .hero-fact strong{
    font-size:12px;
  }

  .hero-fact small{
    margin-top:4px;
    font-size:12px;
  }

  .hero-actions{
    margin-top:25px;
  }

  .hero-actions .btn-primary{
    min-width:0;
  }

  .scroll-cue{
    display:none;
  }
}

/* Acessibilidade */
@media (prefers-reduced-motion:reduce){

  .hero-fact{
    transition:none !important;
  }
}

/* ===== FIM HERO REFINAMENTO FINAL V2 ===== */




/* ===== UNIDADES V2.1 — PAINEL COMERCIAL ===== */

/*
 * Esta versão reorganiza apenas os dados existentes:
 * área, tipologia, instalações e estado.
 */

/* O número selecionado aparece discretamente no fundo */
.siteplan-info{
  isolation:isolate;
}

.siteplan-info::before{
  content:attr(data-selected-plot) !important;
  position:absolute !important;
  z-index:0 !important;
  right:-12px !important;
  bottom:-42px !important;
  top:auto !important;
  width:auto !important;
  height:auto !important;
  border:0 !important;
  background:none !important;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:clamp(250px,24vw,410px);
  font-weight:800;
  line-height:.72;
  letter-spacing:-.05em;
  color:rgba(245,241,233,.018);
  pointer-events:none;
  user-select:none;
}

.siteplan-info > *{
  position:relative;
  z-index:2;
}


/* Estrutura do painel */

.plot-detail{
  width:100%;
  max-width:560px;
}

.module-v21-top{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:34px;
  align-items:end;
  padding-bottom:34px;
  border-bottom:1px solid var(--line);
}

.module-v21-top .pnum{
  margin:0 !important;
  font-size:clamp(78px,7vw,108px) !important;
  line-height:.72 !important;
}

.module-v21-top .pnum::before{
  bottom:-24px !important;
}

.module-v21-top .pnum::after{
  display:none !important;
}


/* Área e estado */

.module-v21-head{
  min-width:0;
  padding-bottom:2px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
}

.module-v21-kicker{
  display:block;
  margin-bottom:9px;
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}

.module-v21-area{
  display:block;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:clamp(38px,4vw,58px);
  font-weight:700;
  line-height:.92;
  letter-spacing:-.01em;
  color:var(--paper);
}

.module-v21-status{
  margin-top:16px;
  min-height:29px;
  padding:7px 12px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  border:1px solid rgba(181,142,89,.45);
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1;
  letter-spacing:.11em;
  text-transform:uppercase;
  color:var(--paper);
  background:rgba(181,142,89,.08);
}

.module-v21-status::before{
  content:'';
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--bronze-glow);
  box-shadow:0 0 11px rgba(212,172,116,.45);
}

.plot-detail[data-status="reservado"] .module-v21-status{
  border-color:rgba(213,164,75,.45);
}

.plot-detail[data-status="reservado"] .module-v21-status::before{
  background:#d5a44b;
}

.plot-detail[data-status="vendido"] .module-v21-status{
  color:var(--paper-dimmer);
  border-color:var(--line);
  background:rgba(255,255,255,.025);
}

.plot-detail[data-status="vendido"] .module-v21-status::before{
  background:var(--paper-dimmer);
  box-shadow:none;
}


/* Esconder a repetição da área e do estado na grelha antiga */

.module-v21-hidden-stat{
  display:none !important;
}


/* Dados técnicos restantes */

.plot-detail .plot-stats{
  margin-top:32px !important;
  display:grid;
  grid-template-columns:1fr 1fr;
  border:0 !important;
  gap:1px !important;
  background:var(--line);
}

.plot-detail .plot-stats > div{
  min-height:112px;
  padding:23px 22px;
  border:0 !important;
  background:rgba(255,255,255,.018);
}

.plot-detail .plot-stats > div:hover{
  background:rgba(181,142,89,.055);
}

.plot-detail .plot-stats > div span{
  margin-bottom:11px;
}

.plot-detail .plot-stats > div b{
  font-size:17px;
  line-height:1.45;
}


/* Lista comercial criada a partir dos dados existentes */

.module-v21-features{
  margin-top:28px;
  padding:25px 0 4px;
  border-top:1px solid var(--line);
}

.module-v21-features-title{
  display:block;
  margin-bottom:17px;
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}

.module-v21-feature-list{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:13px 24px;
  list-style:none;
}

.module-v21-feature-list li{
  position:relative;
  padding-left:21px;
  font-size:13px;
  line-height:1.5;
  color:var(--paper-dim);
}

.module-v21-feature-list li::before{
  content:'';
  position:absolute;
  left:0;
  top:.55em;
  width:8px;
  height:4px;
  border-left:1px solid var(--bronze-glow);
  border-bottom:1px solid var(--bronze-glow);
  transform:rotate(-45deg);
}


/* Informação junto ao CTA */

.module-v21-cta-context{
  display:block;
  margin-top:28px;
  margin-bottom:-18px;
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1.5;
  letter-spacing:.10em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}

.siteplan-cta{
  min-width:260px;
  padding-left:28px;
  padding-right:28px;
  font-weight:600;
  letter-spacing:.10em;
}


/* Tablet */

@media (max-width:980px){

  .plot-detail{
    max-width:none;
  }

  .module-v21-top{
    grid-template-columns:130px minmax(0,1fr);
  }

  .module-v21-feature-list{
    max-width:660px;
  }
}


/* Telemóvel */

@media (max-width:640px){

  .module-v21-top{
    grid-template-columns:92px minmax(0,1fr);
    gap:20px;
    padding-bottom:28px;
  }

  .module-v21-top .pnum{
    font-size:72px !important;
  }

  .module-v21-area{
    font-size:39px;
  }

  .module-v21-status{
    margin-top:13px;
  }

  .plot-detail .plot-stats{
    grid-template-columns:1fr;
  }

  .plot-detail .plot-stats > div{
    min-height:auto;
    padding:20px 18px;
  }

  .module-v21-feature-list{
    grid-template-columns:1fr;
    gap:12px;
  }

  .siteplan-cta{
    width:100%;
    min-width:0;
  }
}


/* Acessibilidade */

@media (prefers-reduced-motion:reduce){

  .module-v21-status::before{
    box-shadow:none !important;
  }
}

/* ===== FIM UNIDADES V2.1 ===== */




/* ===== UNIDADES V2.2 — MICROINTERAÇÕES ===== */

/* ---------------------------------------------------------
   Atenuação dos módulos não selecionados
--------------------------------------------------------- */

.siteplan-svg .plot,
.siteplan-svg .plot-label{
  transition:
    opacity .32s ease,
    transform .34s cubic-bezier(.16,1,.3,1),
    fill .28s ease,
    stroke .28s ease,
    filter .28s ease;
}

.siteplan-svg.has-selection .plot:not(.active){
  opacity:.38;
  fill:rgba(181,142,89,.035);
  stroke:rgba(189,182,168,.55);
  filter:none;
}

.siteplan-svg.has-selection .plot-label:not(.active){
  opacity:.42;
}

/*
 * O módulo sob o cursor continua claramente visível,
 * mesmo antes de receber a classe active.
 */
.siteplan-svg.has-selection .plot.is-hovered{
  opacity:1;
  transform:scale(1.026);
  fill:rgba(181,142,89,.25);
  stroke:var(--bronze-glow);
  filter:
    drop-shadow(0 0 8px rgba(212,172,116,.28))
    drop-shadow(0 12px 20px rgba(0,0,0,.24));
}

.siteplan-svg.has-selection .plot-label.is-hovered{
  opacity:1;
  fill:var(--paper);
}


/* ---------------------------------------------------------
   Feedback de clique
--------------------------------------------------------- */

.plot.is-pressed{
  animation:moduleV22Press .34s cubic-bezier(.16,1,.3,1);
}

@keyframes moduleV22Press{
  0%{
    transform:scale(1.032);
  }

  45%{
    transform:scale(.985);
  }

  100%{
    transform:scale(1.032);
  }
}


/* ---------------------------------------------------------
   Transição do painel comercial
--------------------------------------------------------- */

.plot-detail.active{
  animation:moduleV22PanelEnter .46s cubic-bezier(.16,1,.3,1) both;
}

@keyframes moduleV22PanelEnter{
  from{
    opacity:0;
    transform:translateY(14px);
    filter:blur(2px);
  }

  to{
    opacity:1;
    transform:translateY(0);
    filter:blur(0);
  }
}

.plot-detail.active .module-v21-top{
  animation:moduleV22HeaderEnter .52s .04s cubic-bezier(.16,1,.3,1) both;
}

.plot-detail.active .plot-stats{
  animation:moduleV22ContentEnter .56s .09s cubic-bezier(.16,1,.3,1) both;
}

.plot-detail.active .module-v21-features{
  animation:moduleV22ContentEnter .58s .14s cubic-bezier(.16,1,.3,1) both;
}

@keyframes moduleV22HeaderEnter{
  from{
    opacity:0;
    transform:translateX(12px);
  }

  to{
    opacity:1;
    transform:translateX(0);
  }
}

@keyframes moduleV22ContentEnter{
  from{
    opacity:0;
    transform:translateY(9px);
  }

  to{
    opacity:1;
    transform:translateY(0);
  }
}


/* ---------------------------------------------------------
   Tooltip
--------------------------------------------------------- */

.siteplan-visual{
  isolation:isolate;
}

.module-v22-tooltip{
  position:absolute;
  z-index:20;
  left:0;
  top:0;
  min-width:190px;
  max-width:240px;
  padding:15px 17px;
  border:1px solid rgba(181,142,89,.58);
  background:rgba(23,22,20,.94);
  box-shadow:
    0 18px 44px rgba(0,0,0,.34),
    inset 0 1px 0 rgba(255,255,255,.035);
  backdrop-filter:blur(10px);
  pointer-events:none;
  opacity:0;
  visibility:hidden;
  transform:translate3d(0,8px,0) scale(.97);
  transition:
    opacity .18s ease,
    visibility .18s ease,
    transform .22s cubic-bezier(.16,1,.3,1);
}

.module-v22-tooltip.is-visible{
  opacity:1;
  visibility:visible;
  transform:translate3d(0,0,0) scale(1);
}

.module-v22-tooltip::before{
  content:'';
  position:absolute;
  left:17px;
  bottom:-6px;
  width:10px;
  height:10px;
  border-right:1px solid rgba(181,142,89,.58);
  border-bottom:1px solid rgba(181,142,89,.58);
  background:rgba(23,22,20,.94);
  transform:rotate(45deg);
}

.module-v22-tooltip-kicker{
  display:block;
  margin-bottom:7px;
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--bronze-glow);
}

.module-v22-tooltip-title{
  display:block;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:28px;
  font-weight:700;
  line-height:1;
  text-transform:uppercase;
  color:var(--paper);
}

.module-v22-tooltip-area{
  display:block;
  margin-top:7px;
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
  color:var(--paper-dim);
}

.module-v22-tooltip-action{
  display:block;
  margin-top:11px;
  padding-top:10px;
  border-top:1px solid var(--line);
  font-size:10px;
  line-height:1.4;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}


/* ---------------------------------------------------------
   Cursor e foco
--------------------------------------------------------- */

.plot{
  cursor:pointer;
}

.plot:focus-visible{
  opacity:1 !important;
}

.plot:focus-visible + .plot-label{
  opacity:1 !important;
  fill:var(--paper);
}


/* ---------------------------------------------------------
   Tablet e telemóvel
--------------------------------------------------------- */

@media (max-width:980px){

  /*
   * Em dispositivos táteis não atenuamos demasiado os
   * restantes módulos, para preservar a leitura da planta.
   */
  .siteplan-svg.has-selection .plot:not(.active){
    opacity:.58;
  }

  .siteplan-svg.has-selection .plot-label:not(.active){
    opacity:.62;
  }
}

@media (max-width:640px){

  .module-v22-tooltip{
    display:none !important;
  }

  .siteplan-svg.has-selection .plot:not(.active){
    opacity:.72;
  }

  .siteplan-svg.has-selection .plot-label:not(.active){
    opacity:.76;
  }
}


/* ---------------------------------------------------------
   Redução de movimento
--------------------------------------------------------- */

@media (prefers-reduced-motion:reduce){

  .siteplan-svg .plot,
  .siteplan-svg .plot-label,
  .module-v22-tooltip,
  .plot-detail.active,
  .plot-detail.active .module-v21-top,
  .plot-detail.active .plot-stats,
  .plot-detail.active .module-v21-features{
    animation:none !important;
    transition:none !important;
    filter:none !important;
  }

  .plot.is-pressed{
    animation:none !important;
  }
}

/* ===== FIM UNIDADES V2.2 ===== */




/* ===== UNIDADES V2.3 — GALERIA POR MÓDULO ===== */

/* ---------------------------------------------------------
   Estrutura
--------------------------------------------------------- */

.module-v23-gallery{
  width:100%;
  margin-top:32px;
  padding-top:28px;
  border-top:1px solid var(--line);
}

.module-v23-gallery-head{
  margin-bottom:15px;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:20px;
}

.module-v23-gallery-title{
  display:block;
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1;
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}

.module-v23-gallery-count{
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1;
  letter-spacing:.08em;
  color:var(--paper-dimmer);
}


/* ---------------------------------------------------------
   Imagem principal
--------------------------------------------------------- */

.module-v23-stage{
  position:relative;
  min-height:265px;
  overflow:hidden;
  border:1px solid var(--line);
  background:#0d0d0e;
  isolation:isolate;
}

.module-v23-stage::after{
  content:'';
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  background:
    linear-gradient(
      180deg,
      transparent 52%,
      rgba(10,10,10,.72) 100%
    );
}

.module-v23-image{
  width:100%;
  height:100%;
  min-height:265px;
  display:block;
  object-fit:cover;
  object-position:center;
  opacity:1;
  transform:scale(1);
  transition:
    opacity .32s ease,
    transform .7s cubic-bezier(.16,1,.3,1);
}

.module-v23-stage:hover .module-v23-image{
  transform:scale(1.025);
}

.module-v23-stage.is-changing .module-v23-image{
  opacity:.15;
  transform:scale(1.015);
}


/* ---------------------------------------------------------
   Legenda
--------------------------------------------------------- */

.module-v23-caption{
  position:absolute;
  z-index:3;
  left:20px;
  right:86px;
  bottom:17px;
  font-size:11px;
  line-height:1.45;
  color:var(--paper);
  text-shadow:0 2px 10px rgba(0,0,0,.85);
}

.module-v23-caption-type{
  display:block;
  margin-bottom:4px;
  font-family:'IBM Plex Mono',monospace;
  font-size:8px;
  line-height:1;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--bronze-glow);
}


/* ---------------------------------------------------------
   Navegação anterior/seguinte
--------------------------------------------------------- */

.module-v23-nav{
  position:absolute;
  z-index:4;
  right:15px;
  bottom:14px;
  display:flex;
  gap:7px;
}

.module-v23-nav button{
  width:34px;
  height:34px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(245,241,233,.28);
  background:rgba(13,13,14,.66);
  color:var(--paper);
  font-family:'IBM Plex Mono',monospace;
  font-size:16px;
  line-height:1;
  cursor:pointer;
  backdrop-filter:blur(6px);
  transition:
    background .22s ease,
    border-color .22s ease,
    color .22s ease,
    transform .22s ease;
}

.module-v23-nav button:hover,
.module-v23-nav button:focus-visible{
  border-color:var(--bronze-glow);
  background:rgba(181,142,89,.20);
  color:var(--bronze-glow);
  transform:translateY(-2px);
  outline:none;
}


/* ---------------------------------------------------------
   Miniaturas
--------------------------------------------------------- */

.module-v23-thumbs{
  margin-top:10px;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}

.module-v23-thumb{
  position:relative;
  min-width:0;
  height:70px;
  padding:0;
  overflow:hidden;
  border:1px solid var(--line);
  background:#0d0d0e;
  cursor:pointer;
  opacity:.58;
  transition:
    opacity .24s ease,
    border-color .24s ease,
    transform .24s cubic-bezier(.16,1,.3,1);
}

.module-v23-thumb:hover{
  opacity:.88;
  transform:translateY(-2px);
}

.module-v23-thumb.is-active{
  opacity:1;
  border-color:var(--bronze-glow);
}

.module-v23-thumb img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
}

.module-v23-thumb::after{
  content:'';
  position:absolute;
  inset:0;
  border:1px solid transparent;
  pointer-events:none;
}

.module-v23-thumb.is-active::after{
  border-color:rgba(212,172,116,.34);
}


/* ---------------------------------------------------------
   Nota sobre imagens gerais
--------------------------------------------------------- */

.module-v23-note{
  margin-top:11px;
  padding-left:14px;
  border-left:1px solid rgba(181,142,89,.40);
  font-size:10px;
  line-height:1.55;
  color:var(--paper-dimmer);
}


/* ---------------------------------------------------------
   Tablet
--------------------------------------------------------- */

@media (max-width:980px){

  .module-v23-stage,
  .module-v23-image{
    min-height:340px;
  }

  .module-v23-thumbs{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
}


/* ---------------------------------------------------------
   Telemóvel
--------------------------------------------------------- */

@media (max-width:640px){

  .module-v23-gallery{
    margin-top:27px;
    padding-top:24px;
  }

  .module-v23-stage,
  .module-v23-image{
    min-height:235px;
  }

  .module-v23-caption{
    left:15px;
    right:75px;
    bottom:14px;
  }

  .module-v23-nav{
    right:11px;
    bottom:11px;
  }

  .module-v23-nav button{
    width:31px;
    height:31px;
  }

  .module-v23-thumbs{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }

  .module-v23-thumb{
    height:58px;
  }
}


/* ---------------------------------------------------------
   Redução de movimento
--------------------------------------------------------- */

@media (prefers-reduced-motion:reduce){

  .module-v23-image,
  .module-v23-nav button,
  .module-v23-thumb{
    transition:none !important;
  }

  .module-v23-stage:hover .module-v23-image,
  .module-v23-thumb:hover,
  .module-v23-nav button:hover{
    transform:none !important;
  }
}

/* ===== FIM UNIDADES V2.3 ===== */




/* ===== UNIDADES V2.3B — GALERIA HORIZONTAL ===== */

/*
 * A grelha principal passa a apresentar apenas:
 * - planta
 * - informação comercial
 *
 * A galeria selecionada é deslocada para uma faixa
 * horizontal abaixo das duas colunas.
 */

.siteplan-grid{
  margin-bottom:0;
}

/* Reduz a altura excessiva da coluna direita */
.siteplan-info{
  min-height:690px;
}

/* As galerias deixam de ocupar espaço dentro da ficha */
.plot-detail > .module-v23-gallery{
  display:none !important;
}


/* ---------------------------------------------------------
   Faixa horizontal da galeria
--------------------------------------------------------- */

.siteplan-gallery-strip{
  position:relative;
  z-index:3;
  max-width:1440px;
  margin:0 auto;
  padding:54px 64px 66px;
  border-top:1px solid var(--line);
  background:
    linear-gradient(
      180deg,
      rgba(255,255,255,.012),
      rgba(255,255,255,.002)
    );
}

.siteplan-gallery-strip::before{
  content:'';
  position:absolute;
  left:64px;
  right:64px;
  top:0;
  height:1px;
  background:
    linear-gradient(
      90deg,
      transparent,
      rgba(181,142,89,.48),
      transparent
    );
}

.siteplan-gallery-strip-head{
  margin-bottom:24px;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:30px;
}

.siteplan-gallery-strip-title{
  display:flex;
  flex-direction:column;
  gap:8px;
}

.siteplan-gallery-strip-title span{
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}

.siteplan-gallery-strip-title strong{
  font-family:'Big Shoulders Display',sans-serif;
  font-size:clamp(34px,4vw,56px);
  line-height:.95;
  font-weight:700;
  text-transform:uppercase;
  color:var(--paper);
}

.siteplan-gallery-strip-area{
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
  color:var(--bronze-glow);
}


/* Galeria em formato horizontal */

.siteplan-gallery-strip .module-v23-gallery{
  display:grid !important;
  grid-template-columns:minmax(0,1.65fr) minmax(280px,.35fr);
  grid-template-rows:auto auto;
  gap:14px 18px;
  margin:0;
  padding:0;
  border-top:0;
}

.siteplan-gallery-strip .module-v23-gallery-head{
  display:none;
}

.siteplan-gallery-strip .module-v23-stage{
  grid-column:1;
  grid-row:1 / span 2;
  min-height:460px;
  height:460px;
}

.siteplan-gallery-strip .module-v23-image{
  min-height:460px;
  height:460px;
}

.siteplan-gallery-strip .module-v23-thumbs{
  grid-column:2;
  grid-row:1;
  margin-top:0;
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  align-content:start;
}

.siteplan-gallery-strip .module-v23-thumb{
  height:118px;
}

.siteplan-gallery-strip .module-v23-note{
  grid-column:2;
  grid-row:2;
  margin:0;
  align-self:end;
  padding:18px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.015);
  font-size:11px;
  line-height:1.6;
}

.siteplan-gallery-strip .module-v23-caption{
  max-width:620px;
  font-size:12px;
}

.siteplan-gallery-strip .module-v23-nav{
  right:18px;
  bottom:18px;
}


/* Entrada suave quando muda de módulo */

.siteplan-gallery-strip.is-changing{
  animation:siteplanGallerySwap .38s cubic-bezier(.16,1,.3,1);
}

@keyframes siteplanGallerySwap{
  from{
    opacity:.35;
    transform:translateY(9px);
  }

  to{
    opacity:1;
    transform:translateY(0);
  }
}


/* Tablet */

@media (max-width:980px){

  .siteplan-gallery-strip{
    padding:46px 34px 54px;
  }

  .siteplan-gallery-strip::before{
    left:34px;
    right:34px;
  }

  .siteplan-gallery-strip .module-v23-gallery{
    grid-template-columns:1fr;
    grid-template-rows:auto auto auto;
  }

  .siteplan-gallery-strip .module-v23-stage{
    grid-column:1;
    grid-row:1;
    min-height:420px;
    height:420px;
  }

  .siteplan-gallery-strip .module-v23-image{
    min-height:420px;
    height:420px;
  }

  .siteplan-gallery-strip .module-v23-thumbs{
    grid-column:1;
    grid-row:2;
    grid-template-columns:repeat(3,1fr);
  }

  .siteplan-gallery-strip .module-v23-thumb{
    height:95px;
  }

  .siteplan-gallery-strip .module-v23-note{
    grid-column:1;
    grid-row:3;
  }
}


/* Telemóvel */

@media (max-width:640px){

  .siteplan-gallery-strip{
    padding:36px 22px 44px;
  }

  .siteplan-gallery-strip::before{
    left:22px;
    right:22px;
  }

  .siteplan-gallery-strip-head{
    align-items:flex-start;
    flex-direction:column;
    gap:10px;
  }

  .siteplan-gallery-strip .module-v23-stage{
    min-height:255px;
    height:255px;
  }

  .siteplan-gallery-strip .module-v23-image{
    min-height:255px;
    height:255px;
  }

  .siteplan-gallery-strip .module-v23-thumbs{
    grid-template-columns:repeat(3,1fr);
  }

  .siteplan-gallery-strip .module-v23-thumb{
    height:64px;
  }
}


/* Redução de movimento */

@media (prefers-reduced-motion:reduce){

  .siteplan-gallery-strip.is-changing{
    animation:none !important;
  }
}

/* ===== FIM UNIDADES V2.3B ===== */




/* ===== UNIDADES V2.4 — FORMULÁRIO INTELIGENTE ===== */

/* Melhor alinhamento ao navegar até ao contacto */
#contacto{
  scroll-margin-top:96px;
}


/* ---------------------------------------------------------
   Contexto do módulo selecionado
--------------------------------------------------------- */

.module-v24-context{
  position:relative;
  margin-bottom:30px;
  padding:22px 24px;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:20px;
  align-items:center;
  border:1px solid var(--line);
  background:
    linear-gradient(
      135deg,
      rgba(181,142,89,.09),
      rgba(255,255,255,.012)
    );
  overflow:hidden;
}

.module-v24-context::after{
  content:'';
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:1px;
  background:
    linear-gradient(
      90deg,
      var(--bronze-glow),
      rgba(181,142,89,0)
    );
}

.module-v24-number{
  min-width:58px;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:66px;
  font-weight:700;
  line-height:.78;
  color:var(--bronze-glow);
}

.module-v24-copy{
  min-width:0;
}

.module-v24-kicker{
  display:block;
  margin-bottom:7px;
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1;
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}

.module-v24-name{
  display:block;
  font-family:'Big Shoulders Display',sans-serif;
  font-size:29px;
  font-weight:700;
  line-height:1;
  text-transform:uppercase;
  color:var(--paper);
}

.module-v24-area{
  display:block;
  margin-top:7px;
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
  line-height:1.4;
  color:var(--paper-dim);
}

.module-v24-status{
  min-height:29px;
  padding:7px 11px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  border:1px solid rgba(181,142,89,.44);
  background:rgba(181,142,89,.07);
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1;
  letter-spacing:.10em;
  text-transform:uppercase;
  color:var(--paper);
}

.module-v24-status::before{
  content:'';
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--bronze-glow);
  box-shadow:0 0 10px rgba(212,172,116,.45);
}


/* ---------------------------------------------------------
   Feedback após clicar em Pedir proposta
--------------------------------------------------------- */

.module-v24-context.is-confirmed{
  animation:moduleV24Confirm .55s cubic-bezier(.16,1,.3,1);
}

@keyframes moduleV24Confirm{
  0%{
    border-color:var(--line);
    transform:translateY(0);
  }

  45%{
    border-color:var(--bronze-glow);
    transform:translateY(-3px);
  }

  100%{
    border-color:var(--line);
    transform:translateY(0);
  }
}


/* ---------------------------------------------------------
   Campo de mensagem
--------------------------------------------------------- */

#fmsg.module-v24-prefilled{
  border-bottom-color:rgba(181,142,89,.68);
}

.module-v24-form-note{
  display:block;
  margin-top:8px;
  font-family:'IBM Plex Mono',monospace;
  font-size:9px;
  line-height:1.55;
  letter-spacing:.04em;
  color:var(--paper-dimmer);
}


/* Tablet */

@media (max-width:980px){

  #contacto{
    scroll-margin-top:82px;
  }

  .module-v24-context{
    grid-template-columns:auto minmax(0,1fr);
  }

  .module-v24-status{
    grid-column:1 / -1;
    justify-self:start;
  }
}


/* Telemóvel */

@media (max-width:640px){

  .module-v24-context{
    margin-bottom:25px;
    padding:19px 18px;
    grid-template-columns:54px minmax(0,1fr);
    gap:15px;
  }

  .module-v24-number{
    min-width:0;
    font-size:58px;
  }

  .module-v24-name{
    font-size:25px;
  }

  .module-v24-status{
    grid-column:1 / -1;
  }
}


/* Redução de movimento */

@media (prefers-reduced-motion:reduce){

  .module-v24-context.is-confirmed{
    animation:none !important;
  }
}

/* ===== FIM UNIDADES V2.4 ===== */




/* ===== CONTACTO V2.4B — EQUILÍBRIO DE COLUNAS ===== */

/*
 * O resumo do módulo passa para a coluna institucional,
 * libertando o topo do formulário e preenchendo o espaço vazio.
 */

.contact-panel{
  align-items:stretch;
}

.contact-info{
  display:flex;
  flex-direction:column;
}

.contact-info .contact-meta{
  margin-bottom:34px;
}

/* Cartão adaptado à coluna esquerda */
.contact-info .module-v24-context{
  width:100%;
  margin-top:auto;
  margin-bottom:0;
  padding:28px 26px;
  grid-template-columns:auto minmax(0,1fr);
  gap:22px;
  align-items:center;
}

.contact-info .module-v24-status{
  grid-column:1 / -1;
  justify-self:start;
}

.contact-info .module-v24-number{
  font-size:82px;
}

.contact-info .module-v24-name{
  font-size:32px;
}

.contact-info .module-v24-area{
  margin-top:9px;
}

/* Pequena indicação comercial na base do cartão */
.contact-info .module-v24-context::before{
  content:'Pedido de informação preparado para este módulo';
  position:absolute;
  left:26px;
  right:26px;
  bottom:17px;
  padding-top:13px;
  border-top:1px solid rgba(255,255,255,.08);
  font-family:'IBM Plex Mono',monospace;
  font-size:8px;
  line-height:1.45;
  letter-spacing:.10em;
  text-transform:uppercase;
  color:var(--paper-dimmer);
}

.contact-info .module-v24-context{
  padding-bottom:58px;
}

/* O formulário deixa de começar com espaço reservado ao cartão */
#contactForm{
  align-content:start;
}


/* Tablet */
@media (max-width:980px){

  .contact-info .module-v24-context{
    margin-top:34px;
  }
}


/* Telemóvel */
@media (max-width:640px){

  .contact-info .contact-meta{
    margin-bottom:0;
  }

  .contact-info .module-v24-context{
    margin-top:28px;
    padding:21px 18px 55px;
    grid-template-columns:55px minmax(0,1fr);
  }

  .contact-info .module-v24-number{
    font-size:62px;
  }

  .contact-info .module-v24-name{
    font-size:26px;
  }

  .contact-info .module-v24-context::before{
    left:18px;
    right:18px;
    bottom:14px;
  }
}

/* ===== FIM CONTACTO V2.4B ===== */









/* ===== V2.4C SAFE — SELEÇÃO EXPLÍCITA ===== */

/* O cartão fica oculto até existir uma escolha real. */
.module-v24-context.is-unselected{
  display:none !important;
}

/* ===== FIM V2.4C SAFE ===== */




/* ===== V3.1 — MICROANIMAÇÕES PREMIUM ===== */

/* =========================================================
   1. MÓDULO ATIVO
========================================================= */

.siteplan-svg .plot.active{
  animation:v31PlotSelected .52s cubic-bezier(.16,1,.3,1) both;
}

@keyframes v31PlotSelected{
  0%{
    transform:scale(.985);
    filter:
      drop-shadow(0 0 0 rgba(212,172,116,0))
      drop-shadow(0 6px 10px rgba(0,0,0,.10));
  }

  55%{
    transform:scale(1.045);
    filter:
      drop-shadow(0 0 13px rgba(212,172,116,.42))
      drop-shadow(0 18px 25px rgba(0,0,0,.28));
  }

  100%{
    transform:scale(1.032);
    filter:
      drop-shadow(0 0 9px rgba(212,172,116,.34))
      drop-shadow(0 16px 22px rgba(0,0,0,.25));
  }
}

.siteplan-svg .plot-label.active{
  animation:v31LabelSelected .42s .06s cubic-bezier(.16,1,.3,1) both;
}

@keyframes v31LabelSelected{
  from{
    opacity:.25;
    transform:scale(.82);
  }

  to{
    opacity:1;
    transform:scale(1);
  }
}


/* =========================================================
   2. FICHA COMERCIAL
========================================================= */

.plot-detail.active .module-v21-top{
  animation:v31ModuleHeader .48s cubic-bezier(.16,1,.3,1) both;
}

.plot-detail.active .module-v21-area{
  animation:v31AreaEnter .56s .05s cubic-bezier(.16,1,.3,1) both;
}

.plot-detail.active .module-v21-status{
  animation:v31StatusEnter .52s .12s cubic-bezier(.16,1,.3,1) both;
}

.plot-detail.active .plot-stats > div{
  animation:v31StatEnter .45s cubic-bezier(.16,1,.3,1) both;
}

.plot-detail.active .plot-stats > div:nth-child(1){
  animation-delay:.08s;
}

.plot-detail.active .plot-stats > div:nth-child(2){
  animation-delay:.13s;
}

.plot-detail.active .plot-stats > div:nth-child(3){
  animation-delay:.18s;
}

.plot-detail.active .plot-stats > div:nth-child(4){
  animation-delay:.23s;
}

.plot-detail.active .module-v21-feature-list li{
  animation:v31FeatureEnter .42s cubic-bezier(.16,1,.3,1) both;
}

.plot-detail.active .module-v21-feature-list li:nth-child(1){
  animation-delay:.16s;
}

.plot-detail.active .module-v21-feature-list li:nth-child(2){
  animation-delay:.21s;
}

.plot-detail.active .module-v21-feature-list li:nth-child(3){
  animation-delay:.26s;
}

.plot-detail.active .module-v21-feature-list li:nth-child(4){
  animation-delay:.31s;
}

@keyframes v31ModuleHeader{
  from{
    opacity:0;
    transform:translate3d(14px,0,0);
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0);
  }
}

@keyframes v31AreaEnter{
  from{
    opacity:0;
    transform:translate3d(0,12px,0) scale(.96);
    letter-spacing:.025em;
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0) scale(1);
    letter-spacing:-.01em;
  }
}

@keyframes v31StatusEnter{
  from{
    opacity:0;
    transform:translate3d(-8px,0,0);
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0);
  }
}

@keyframes v31StatEnter{
  from{
    opacity:0;
    transform:translate3d(0,10px,0);
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0);
  }
}

@keyframes v31FeatureEnter{
  from{
    opacity:0;
    transform:translate3d(-8px,0,0);
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0);
  }
}


/* =========================================================
   3. ESTADO DISPONÍVEL
========================================================= */

.module-v21-status::before,
.module-v24-status::before{
  animation:v31StatusDot 2.8s ease-in-out infinite;
}

@keyframes v31StatusDot{
  0%,
  100%{
    opacity:.72;
    transform:scale(.88);
    box-shadow:0 0 6px rgba(212,172,116,.25);
  }

  50%{
    opacity:1;
    transform:scale(1);
    box-shadow:0 0 13px rgba(212,172,116,.52);
  }
}


/* =========================================================
   4. GALERIA HORIZONTAL
========================================================= */

.siteplan-gallery-strip-content{
  min-height:1px;
}

.siteplan-gallery-strip.is-changing
.module-v23-stage{
  animation:v31GalleryStage .52s cubic-bezier(.16,1,.3,1) both;
}

.siteplan-gallery-strip.is-changing
.module-v23-thumbs{
  animation:v31GalleryThumbs .48s .07s cubic-bezier(.16,1,.3,1) both;
}

.siteplan-gallery-strip.is-changing
.module-v23-note{
  animation:v31GalleryNote .45s .12s cubic-bezier(.16,1,.3,1) both;
}

@keyframes v31GalleryStage{
  from{
    opacity:.2;
    transform:translate3d(0,10px,0) scale(.992);
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0) scale(1);
  }
}

@keyframes v31GalleryThumbs{
  from{
    opacity:0;
    transform:translate3d(12px,0,0);
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0);
  }
}

@keyframes v31GalleryNote{
  from{
    opacity:0;
    transform:translate3d(0,8px,0);
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0);
  }
}

.module-v23-image{
  will-change:opacity,transform;
}

.module-v23-stage:hover .module-v23-image{
  transform:scale(1.035);
}

.module-v23-thumb{
  transform-origin:center bottom;
}

.module-v23-thumb.is-active{
  transform:translateY(-3px);
  box-shadow:
    0 10px 24px rgba(0,0,0,.25),
    0 0 0 1px rgba(212,172,116,.18);
}


/* =========================================================
   5. BOTÕES
========================================================= */

.siteplan-cta,
.location-button,
.submit-btn,
.hero-actions .btn-primary,
.hero-actions .btn-ghost{
  position:relative;
  isolation:isolate;
  overflow:hidden;
}

.siteplan-cta::before,
.location-button::before,
.submit-btn::before,
.hero-actions .btn-primary::before,
.hero-actions .btn-ghost::before{
  content:'';
  position:absolute;
  z-index:-1;
  top:-30%;
  bottom:-30%;
  left:-55%;
  width:36%;
  transform:skewX(-20deg);
  background:
    linear-gradient(
      90deg,
      transparent,
      rgba(255,255,255,.20),
      transparent
    );
  transition:left .58s cubic-bezier(.16,1,.3,1);
  pointer-events:none;
}

.siteplan-cta:hover::before,
.location-button:hover::before,
.submit-btn:hover::before,
.hero-actions .btn-primary:hover::before,
.hero-actions .btn-ghost:hover::before{
  left:125%;
}

.siteplan-cta:active,
.location-button:active,
.submit-btn:active,
.hero-actions .btn-primary:active,
.hero-actions .btn-ghost:active{
  transform:translateY(0) scale(.985);
}


/* =========================================================
   6. CARTÃO DO MÓDULO NO CONTACTO
========================================================= */

.contact-info .module-v24-context:not(.is-unselected){
  animation:v31ContactModule .52s cubic-bezier(.16,1,.3,1) both;
}

.contact-info .module-v24-context:not(.is-unselected)
.module-v24-number{
  animation:v31ContactNumber .58s .04s cubic-bezier(.16,1,.3,1) both;
}

@keyframes v31ContactModule{
  from{
    opacity:0;
    transform:translate3d(0,14px,0);
    border-color:rgba(181,142,89,.08);
  }

  to{
    opacity:1;
    transform:translate3d(0,0,0);
    border-color:var(--line);
  }
}

@keyframes v31ContactNumber{
  from{
    opacity:0;
    transform:scale(.82);
  }

  to{
    opacity:1;
    transform:scale(1);
  }
}


/* =========================================================
   7. FORMULÁRIO
========================================================= */

#contactForm input,
#contactForm textarea{
  transition:
    border-color .28s ease,
    background-color .28s ease,
    box-shadow .28s ease;
}

#contactForm input:focus,
#contactForm textarea:focus{
  background:
    linear-gradient(
      180deg,
      transparent,
      rgba(181,142,89,.025)
    );
  box-shadow:0 8px 24px rgba(0,0,0,.06);
}


/* =========================================================
   8. DISPOSITIVOS TÁTEIS
========================================================= */

@media (hover:none){

  .siteplan-cta::before,
  .location-button::before,
  .submit-btn::before,
  .hero-actions .btn-primary::before,
  .hero-actions .btn-ghost::before{
    display:none;
  }

  .module-v23-stage:hover .module-v23-image{
    transform:none;
  }
}


/* =========================================================
   9. REDUÇÃO DE MOVIMENTO
========================================================= */

@media (prefers-reduced-motion:reduce){

  .siteplan-svg .plot.active,
  .siteplan-svg .plot-label.active,
  .plot-detail.active .module-v21-top,
  .plot-detail.active .module-v21-area,
  .plot-detail.active .module-v21-status,
  .plot-detail.active .plot-stats > div,
  .plot-detail.active .module-v21-feature-list li,
  .module-v21-status::before,
  .module-v24-status::before,
  .siteplan-gallery-strip.is-changing .module-v23-stage,
  .siteplan-gallery-strip.is-changing .module-v23-thumbs,
  .siteplan-gallery-strip.is-changing .module-v23-note,
  .contact-info .module-v24-context,
  .contact-info .module-v24-number{
    animation:none !important;
  }

  .siteplan-cta::before,
  .location-button::before,
  .submit-btn::before,
  .hero-actions .btn-primary::before,
  .hero-actions .btn-ghost::before{
    display:none !important;
  }
}

/* ===== FIM V3.1 ===== */




/* ===== V3.2 — CORES DE DISPONIBILIDADE ===== */

:root{
  --status-available:#58b978;
  --status-available-rgb:88,185,120;

  --status-reserved:#d4ac74;
  --status-reserved-rgb:212,172,116;

  --status-sold:#c85e56;
  --status-sold-rgb:200,94,86;
}


/* =========================================================
   BADGE DA FICHA DO MÓDULO
========================================================= */

/* Disponível */
.plot-detail[data-status="disponivel"] .module-v21-status{
  color:#dff4e6;
  border-color:rgba(var(--status-available-rgb),.52);
  background:rgba(var(--status-available-rgb),.10);
}

.plot-detail[data-status="disponivel"] .module-v21-status::before{
  background:var(--status-available);
  box-shadow:0 0 12px rgba(var(--status-available-rgb),.55);
}


/* Reservado */
.plot-detail[data-status="reservado"] .module-v21-status{
  color:#f3e5cf;
  border-color:rgba(var(--status-reserved-rgb),.58);
  background:rgba(var(--status-reserved-rgb),.11);
}

.plot-detail[data-status="reservado"] .module-v21-status::before{
  background:var(--status-reserved);
  box-shadow:0 0 12px rgba(var(--status-reserved-rgb),.55);
}


/* Vendido */
.plot-detail[data-status="vendido"] .module-v21-status{
  color:#f4d9d6;
  border-color:rgba(var(--status-sold-rgb),.58);
  background:rgba(var(--status-sold-rgb),.10);
}

.plot-detail[data-status="vendido"] .module-v21-status::before{
  background:var(--status-sold);
  box-shadow:0 0 12px rgba(var(--status-sold-rgb),.52);
}


/* =========================================================
   CARTÃO DO MÓDULO NO FORMULÁRIO
========================================================= */

.module-v24-context[data-status="disponivel"] .module-v24-status{
  color:#dff4e6;
  border-color:rgba(var(--status-available-rgb),.52);
  background:rgba(var(--status-available-rgb),.10);
}

.module-v24-context[data-status="disponivel"] .module-v24-status::before{
  background:var(--status-available);
  box-shadow:0 0 12px rgba(var(--status-available-rgb),.55);
}

.module-v24-context[data-status="reservado"] .module-v24-status{
  color:#f3e5cf;
  border-color:rgba(var(--status-reserved-rgb),.58);
  background:rgba(var(--status-reserved-rgb),.11);
}

.module-v24-context[data-status="reservado"] .module-v24-status::before{
  background:var(--status-reserved);
  box-shadow:0 0 12px rgba(var(--status-reserved-rgb),.55);
}

.module-v24-context[data-status="vendido"] .module-v24-status{
  color:#f4d9d6;
  border-color:rgba(var(--status-sold-rgb),.58);
  background:rgba(var(--status-sold-rgb),.10);
}

.module-v24-context[data-status="vendido"] .module-v24-status::before{
  background:var(--status-sold);
  box-shadow:0 0 12px rgba(var(--status-sold-rgb),.52);
}


/* =========================================================
   CORES DOS MÓDULOS NA PLANTA
========================================================= */

/* Disponível */
.plot[data-status="disponivel"]{
  stroke:rgba(var(--status-available-rgb),.78);
  fill:rgba(var(--status-available-rgb),.08);
}

.plot[data-status="disponivel"]:hover,
.plot[data-status="disponivel"].active{
  stroke:var(--status-available);
  fill:rgba(var(--status-available-rgb),.25);
  filter:
    drop-shadow(0 0 9px rgba(var(--status-available-rgb),.34))
    drop-shadow(0 14px 20px rgba(0,0,0,.24));
}


/* Reservado */
.plot[data-status="reservado"]{
  stroke:rgba(var(--status-reserved-rgb),.82);
  fill:rgba(var(--status-reserved-rgb),.10);
}

.plot[data-status="reservado"]:hover,
.plot[data-status="reservado"].active{
  stroke:var(--status-reserved);
  fill:rgba(var(--status-reserved-rgb),.30);
  filter:
    drop-shadow(0 0 10px rgba(var(--status-reserved-rgb),.42))
    drop-shadow(0 14px 20px rgba(0,0,0,.24));
}


/* Vendido */
.plot[data-status="vendido"]{
  stroke:rgba(var(--status-sold-rgb),.76);
  fill:rgba(var(--status-sold-rgb),.08);
}

.plot[data-status="vendido"]:hover,
.plot[data-status="vendido"].active{
  stroke:var(--status-sold);
  fill:rgba(var(--status-sold-rgb),.26);
  filter:
    drop-shadow(0 0 10px rgba(var(--status-sold-rgb),.38))
    drop-shadow(0 14px 20px rgba(0,0,0,.24));
}


/* Os módulos não selecionados continuam legíveis */
.siteplan-svg.has-selection .plot[data-status]:not(.active){
  stroke-opacity:.72;
}


/* Respeitar a preferência de redução de movimento */
@media (prefers-reduced-motion:reduce){

  .module-v21-status::before,
  .module-v24-status::before{
    animation:none !important;
  }
}

/* ===== FIM V3.2 ===== */




/* ===== V3.2B — CORES NO HOVER E SELEÇÃO ===== */

/*
 * Este bloco fica depois das regras antigas de hover,
 * garantindo que o estado real do módulo prevalece.
 */

/* =========================================================
   DISPONÍVEL — VERDE
========================================================= */

.siteplan-svg .plot[data-status="disponivel"].is-hovered,
.siteplan-svg .plot[data-status="disponivel"]:hover,
.siteplan-svg .plot[data-status="disponivel"].active{
  opacity:1 !important;
  stroke:var(--status-available) !important;
  fill:rgba(var(--status-available-rgb),.27) !important;
  filter:
    drop-shadow(0 0 10px rgba(var(--status-available-rgb),.42))
    drop-shadow(0 15px 22px rgba(0,0,0,.25)) !important;
}

.siteplan-svg .plot-label[data-status="disponivel"].is-hovered,
.siteplan-svg .plot-label[data-status="disponivel"].active{
  opacity:1 !important;
  fill:#dff4e6 !important;
}


/* =========================================================
   RESERVADO — DOURADO
========================================================= */

.siteplan-svg .plot[data-status="reservado"].is-hovered,
.siteplan-svg .plot[data-status="reservado"]:hover,
.siteplan-svg .plot[data-status="reservado"].active{
  opacity:1 !important;
  stroke:var(--status-reserved) !important;
  fill:rgba(var(--status-reserved-rgb),.30) !important;
  filter:
    drop-shadow(0 0 10px rgba(var(--status-reserved-rgb),.44))
    drop-shadow(0 15px 22px rgba(0,0,0,.25)) !important;
}

.siteplan-svg .plot-label[data-status="reservado"].is-hovered,
.siteplan-svg .plot-label[data-status="reservado"].active{
  opacity:1 !important;
  fill:#f3e5cf !important;
}


/* =========================================================
   VENDIDO — VERMELHO
========================================================= */

.siteplan-svg .plot[data-status="vendido"].is-hovered,
.siteplan-svg .plot[data-status="vendido"]:hover,
.siteplan-svg .plot[data-status="vendido"].active{
  opacity:1 !important;
  stroke:var(--status-sold) !important;
  fill:rgba(var(--status-sold-rgb),.28) !important;
  filter:
    drop-shadow(0 0 10px rgba(var(--status-sold-rgb),.42))
    drop-shadow(0 15px 22px rgba(0,0,0,.25)) !important;
}

.siteplan-svg .plot-label[data-status="vendido"].is-hovered,
.siteplan-svg .plot-label[data-status="vendido"].active{
  opacity:1 !important;
  fill:#f4d9d6 !important;
}


/* =========================================================
   ANIMAÇÃO V3.1 SEM TROCAR A COR
========================================================= */

.siteplan-svg .plot[data-status].active{
  animation-name:v31PlotSelected !important;
}

/*
 * A animação antiga define apenas transform e filter.
 * As cores acima permanecem fixas por causa do !important.
 */

/* ===== FIM V3.2B ===== */




/* ===== V3.2C — PROPOSTA POR ESTADO ===== */

.siteplan-cta.is-disabled{
  pointer-events:none;
  cursor:not-allowed;
  opacity:.55;
  color:var(--paper-dimmer);
  background:rgba(255,255,255,.035);
  border-color:var(--line);
  box-shadow:none;
  transform:none !important;
}

.siteplan-cta.is-disabled::before{
  display:none !important;
}

.siteplan-cta.is-reserved{
  color:#f3e5cf;
  border-color:rgba(var(--status-reserved-rgb),.45);
  background:rgba(var(--status-reserved-rgb),.08);
}

.siteplan-cta.is-sold{
  color:#f4d9d6;
  border-color:rgba(var(--status-sold-rgb),.42);
  background:rgba(var(--status-sold-rgb),.07);
}

/* ===== FIM V3.2C ===== */




/* ===== V3.3 — OCULTAR GALERIA DO MÓDULO ===== */

.siteplan-gallery-strip{
    display:none !important;
}

/* ===== FIM V3.3 ===== */

/* ===== LOGÓTIPO — VOLTAR AO TOPO ===== */

.brand-home{
  text-decoration:none;
  cursor:pointer;
}

.brand-home:focus-visible{
  outline:1px solid var(--bronze);
  outline-offset:8px;
}

/* ===== FIM LOGÓTIPO — VOLTAR AO TOPO ===== */

/* ===== V4.4.1 — COMPLIANCE CONTACTOS ===== */

.phone-marker{
  position:relative;
  top:-.28em;
  margin-left:2px;
  font-size:.66em;
  line-height:0;
  color:currentColor;
}

.footer-col .phone-network-note{
  display:block;
  max-width:230px;
  margin-top:5px;
  font-family:'IBM Plex Mono',monospace;
  font-size:8px;
  line-height:1.45;
  letter-spacing:.025em;
  color:var(--paper-dimmer);
}

.footer-col .company-tax-id{
  margin-top:6px;
}

.footer-col .complaints-link{
  margin-top:5px;
}

@media (max-width:640px){
  .footer-col .phone-network-note{
    font-size:8px;
  }
}

/* ===== FIM V4.4.1 ===== */


/* V4.5 Premium polish */
html{scroll-behavior:smooth}
.btn,.button,a,button,.plot,figure img{transition:all .28s ease}
.btn:hover,button:hover{transform:translateY(-1px)}
.gallery figure{overflow:hidden}
.gallery figure img{transition:transform .5s ease,opacity .35s ease;opacity:.98}
.gallery figure:hover img{transform:scale(1.02);opacity:1}
.phone-note{font-size:.72rem;opacity:.72;margin-top:.35rem}


/* ===== V5.1 — MÓDULOS FIXOS E AGREGAÇÕES ===== */

/* Os módulos e os números permanecem fixos em todos os estados. */
.siteplan-svg .plot,
.siteplan-svg .plot:hover,
.siteplan-svg .plot.active,
.siteplan-svg .plot.is-hovered,
.siteplan-svg .plot.is-pressed {
  transform:none !important;
  animation:none !important;
}

.siteplan-svg .plot-label,
.siteplan-svg .plot-label:hover,
.siteplan-svg .plot-label.active,
.siteplan-svg .plot-label.is-hovered {
  transform:none !important;
  animation:none !important;
}

/* Hover sem movimento: apenas cor, contorno e sombra. */
.siteplan-svg .plot:hover,
.siteplan-svg .plot.is-hovered {
  opacity:1;
  fill:rgba(181,142,89,.24);
  stroke:var(--bronze-glow);
  stroke-width:1.55;
  filter:
    drop-shadow(0 0 7px rgba(212,172,116,.28))
    drop-shadow(0 10px 16px rgba(0,0,0,.25));
}

.siteplan-svg .plot.active {
  opacity:1;
  fill:rgba(181,142,89,.34);
  stroke:var(--bronze-glow);
  stroke-width:1.75;
  filter:
    drop-shadow(0 0 9px rgba(212,172,116,.34))
    drop-shadow(0 12px 20px rgba(0,0,0,.28));
}

.siteplan-svg .plot-label.is-hovered,
.siteplan-svg .plot-label.active {
  opacity:1;
  fill:var(--paper);
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.65));
}

/* Informação de agregação dentro da tooltip. */
.module-v51-tooltip-aggregation {
  display:none;
  margin-top:14px;
  padding-top:13px;
  border-top:1px solid rgba(181,142,89,.28);
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
  line-height:1.6;
  letter-spacing:.04em;
  color:var(--paper-dim);
}

.module-v51-tooltip-aggregation.is-visible {
  display:block;
}

.module-v51-tooltip-aggregation strong {
  display:block;
  margin-top:4px;
  font-weight:500;
  color:var(--bronze-glow);
}

/* Informação de agregação na ficha do módulo. */
.module-v51-aggregation {
  margin-top:20px;
  padding:17px 19px;
  border:1px solid rgba(181,142,89,.30);
  background:rgba(181,142,89,.055);
}

.module-v51-aggregation-kicker {
  display:block;
  margin-bottom:7px;
  font-family:'IBM Plex Mono',monospace;
  font-size:10px;
  line-height:1.4;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:var(--bronze-soft);
}

.module-v51-aggregation-text {
  display:block;
  font-size:14px;
  line-height:1.55;
  color:var(--paper-dim);
}

.module-v51-aggregation-total {
  display:block;
  margin-top:7px;
  font-family:'IBM Plex Mono',monospace;
  font-size:15px;
  color:var(--bronze-glow);
}

@media (max-width:640px) {
  .module-v51-aggregation {
    padding:15px 16px;
  }
}

/* ===== FIM V5.1 ===== */


/* ===== V5.1.1 — PLANTA TOTALMENTE FIXA ===== */

/*
 * Nenhum elemento estrutural da planta pode alterar posição,
 * escala ou rotação durante hover, focus, active ou seleção.
 */
.siteplan-visual,
.siteplan-visual:hover,
.siteplan-visual:focus-within,
.siteplan-svg,
.siteplan-svg:hover,
.siteplan-svg:focus,
.siteplan-svg:focus-within {
  translate:none !important;
  scale:none !important;
  rotate:none !important;
}

.siteplan-svg .plot,
.siteplan-svg .plot:hover,
.siteplan-svg .plot:focus,
.siteplan-svg .plot:active,
.siteplan-svg .plot.active,
.siteplan-svg .plot.is-hovered,
.siteplan-svg .plot.is-pressed,
.siteplan-svg [data-plot],
.siteplan-svg [data-plot]:hover,
.siteplan-svg [data-plot]:focus,
.siteplan-svg [data-plot]:active {
  translate:none !important;
  scale:none !important;
  rotate:none !important;
  animation:none !important;
}

.siteplan-svg .plot-label,
.siteplan-svg .plot-label:hover,
.siteplan-svg .plot-label:focus,
.siteplan-svg .plot-label.active,
.siteplan-svg .plot-label.is-hovered {
  translate:none !important;
  scale:none !important;
  rotate:none !important;
  animation:none !important;
}

/*
 * Impede transições geométricas, mantendo apenas transições
 * de cor, opacidade, contorno e sombra.
 */
.siteplan-svg,
.siteplan-svg g,
.siteplan-svg .plot,
.siteplan-svg .plot-label,
.siteplan-visual {
  transition-property:
    fill,
    stroke,
    stroke-width,
    opacity,
    filter,
    color,
    background-color,
    box-shadow !important;
}

/* ===== FIM V5.1.1 ===== */


/* ===== V5.1.2 — PLANTA FIXA COM PAINEL VARIÁVEL ===== */

/*
 * O painel direito pode ter alturas diferentes.
 * A planta mantém sempre a mesma posição e altura.
 */
@media (min-width:981px){

  .siteplan-grid{
    align-items:start !important;
  }

  .siteplan-visual{
    align-self:start !important;
    width:100% !important;
    height:690px !important;
    min-height:690px !important;
    max-height:690px !important;
    justify-content:center !important;
    overflow:visible !important;
  }

  .siteplan-info{
    align-self:start !important;
    width:100% !important;
    min-height:690px !important;
    height:auto !important;
  }

  /*
   * A alteração do conteúdo lateral não pode recalcular
   * nem deslocar verticalmente a planta.
   */
  .siteplan-svg{
    flex:0 0 auto !important;
  }

  .siteplan-caption{
    flex:0 0 auto !important;
  }
}

/*
 * Em tablet e mobile, as colunas ficam empilhadas
 * e voltam a usar altura automática.
 */
@media (max-width:980px){

  .siteplan-visual{
    height:auto !important;
    min-height:auto !important;
    max-height:none !important;
  }

  .siteplan-info{
    height:auto !important;
    min-height:auto !important;
  }
}

/* ===== FIM V5.1.2 ===== */


/* ===== V5.2 — TIPOLOGIA SEM REDUNDÂNCIA ===== */

/*
 * Na grelha técnica fica apenas a Tipologia.
 */
.plot-stats .module-v21-full-stat {
  grid-column:1 / -1;
  min-height:112px;
}

/*
 * O cartão da Tipologia ocupa toda a largura.
 */
.plot-stats .module-v21-full-stat b {
  max-width:100%;
  font-size:clamp(18px,2vw,23px);
}

/*
 * Mantém a grelha visual limpa quando as restantes
 * linhas técnicas estão escondidas.
 */
.plot-stats:has(.module-v21-full-stat) {
  grid-template-columns:1fr;
}

/*
 * Características passam a conter apenas instalações
 * e atributos adicionais, sem repetir a tipologia.
 */
.module-v21-feature-list {
  margin-top:18px;
}

/* ===== FIM V5.2 ===== */

/* ===== V5.3 — LISTA DE COMBINAÇÕES OFICIAIS ===== */

.module-v53-combination-list{
  list-style:none;
  margin:16px 0 0;
  padding:0;
  border-top:1px solid rgba(181,142,89,.18);
}

.module-v53-combination{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:10px 0;
  border-bottom:1px solid rgba(255,255,255,.065);
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
  line-height:1.4;
}

.module-v53-combination span{
  color:var(--paper-dim);
}

.module-v53-combination strong{
  flex:0 0 auto;
  font-weight:500;
  color:var(--bronze-glow);
}

@media(max-width:640px){
  .module-v53-combination{
    align-items:flex-start;
    gap:12px;
  }
}

/* ===== FIM V5.3 ===== */
