/* BeGuest: mapa das casas em esboço 3D (reservar.html). Usa assets/zone-map.css e junta só o que é deste mapa. */
.pt-stage>.cm{position:absolute;inset:0;margin:0;max-width:none;}
.cm .zm-vis,.cm .zm-stage{height:100%;}
.cm .zm-stage{touch-action:pan-y;}

/* levels: Portugal (regions), region (cities), city (one sketch per house) */
.cm-reg,.cm-cid,.cm-casa{transition:opacity .45s ease;}
.cm.cm-n0 .cm-cid,.cm.cm-n0 .cm-casa,.cm:not(.cm-n0) .cm-reg,.cm-casa:not(.is-aberta),.cm-cid.is-fora{opacity:0;pointer-events:none;}
.cm.cm-n0 .cm-cid .zm-btn,.cm.cm-n0 .cm-casa .zm-btn,.cm:not(.cm-n0) .cm-reg .zm-btn,.cm-casa:not(.is-aberta) .zm-btn,.cm-cid.is-fora .zm-btn{pointer-events:none;}
.cm.cm-n2 .cm-cid:not(.is-fora){opacity:.42;}
.cm .cm-reg .zm-name,.cm.cm-n1 .cm-cid.is-major .zm-name{opacity:1;}
.cm.cm-n2 .cm-cid .zm-name{opacity:0;}

/* the open city: houses fan out from the city point with a little spring */
.cm-fan{position:absolute;left:0;top:0;width:0;height:0;transform:translate(0,0);transition:transform .75s cubic-bezier(.34,1.5,.64,1);}
.cm-casa .zm-pop{transition-delay:0s;}
.cm-casa:not(.is-aberta) .cm-fan{transition-duration:.35s;transition-timing-function:ease-in;transition-delay:0s!important;}
.cm-casa.is-on .zm-lift{transform:translateY(calc(var(--u) * -1));}
.cm-casa.is-on .zm-sk::before{background:rgba(58,200,196,.35);}

/* price tag under each house */
.cm-pr{position:absolute;left:50%;top:calc(100% - 4px);transform:translateX(-50%);display:inline-flex;align-items:baseline;gap:2px;padding:4px 8px;border-radius:999px;white-space:nowrap;
  background:#fff;border:1px solid #CFE7E6;color:var(--zd);font:700 .74rem/1 var(--font-display,'Space Grotesk',sans-serif);box-shadow:0 6px 16px -10px rgba(35,50,56,.5);pointer-events:none;transition:background .2s,color .2s;}
.cm-pr small{font:500 .62rem/1 var(--font-body,'Inter',sans-serif);color:var(--zg);}
.cm-casa .zm-btn:hover .cm-pr,.cm-casa.is-on .cm-pr{background:var(--zd);color:#fff;border-color:var(--zd);}
.cm-casa .zm-btn:hover .cm-pr small,.cm-casa.is-on .cm-pr small{color:#CFE7E6;}
.cm-casa .zm-name{bottom:calc(var(--u) * var(--sh) + 10px);left:50%;transform:translateX(-50%);}
.cm-casa .zm-btn{width:calc(var(--u) * 9);min-width:36px;}

/* idle life: houses breathe, clouds drift (only while on screen) */
.cm.zm-live .zm-bob{animation:cm-bob 3.4s ease-in-out infinite;animation-delay:calc(var(--i) * -.41s);}
@keyframes cm-bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-3px);}}
.cm.zm-live .zm-cloud{animation:cm-nuvem 46s ease-in-out infinite alternate;}
.cm.zm-live .zm-cloud.c2{animation-duration:58s;animation-direction:alternate-reverse;}
@keyframes cm-nuvem{from{transform:translateX(-30px);}to{transform:translateX(70px);}}

/* region glow (chosen or hovered region) */
.cm-rg{opacity:0;transition:opacity .45s;}
.cm[data-hov="0"] .cm-rg[data-r="0"],.cm[data-hov="1"] .cm-rg[data-r="1"],.cm[data-hov="2"] .cm-rg[data-r="2"],.cm[data-hov="3"] .cm-rg[data-r="3"],.cm[data-hov="4"] .cm-rg[data-r="4"]{opacity:1;}

/* where am I: Portugal > region > city */
.cm-bar{position:absolute;left:12px;top:12px;right:12px;z-index:6;pointer-events:none;}
.cm-bar .zm-chips{display:inline-flex;flex-wrap:nowrap;max-width:100%;overflow-x:auto;scrollbar-width:none;pointer-events:auto;}
.cm-bar .zm-chips::-webkit-scrollbar{display:none;}
.cm-bar .zm-chip{min-height:34px;padding:6px 8px 6px 13px;font-size:.8rem;white-space:nowrap;}
.cm-bar .zm-chip:disabled{cursor:default;}
.cm-voltar{flex:none;display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:999px;background:var(--zs);color:var(--zd);cursor:pointer;transition:background .2s;}
.cm-voltar:hover{background:#CFEFEE;}
.cm-voltar:focus-visible{outline:2px solid var(--zt-d);outline-offset:2px;}
.cm-hint{position:absolute;right:14px;bottom:12px;z-index:6;display:flex;align-items:center;gap:7px;margin:0;padding:6px 11px;border-radius:999px;background:rgba(255,255,255,.7);color:var(--zg);font-size:.76rem;pointer-events:none;}
.cm-hint .zm-ic{color:var(--zt-d);}
.cm-sk0 svg{width:100%;height:100%;color:var(--zt-d);}
#glCard .cm-linha:focus-visible{outline:2px solid #1A7F7B;outline-offset:2px;border-radius:8px;}

@media (max-width:640px){
  .cm-hint{display:none;}
  .cm-bar{left:8px;top:8px;right:8px;}
  .cm-pr{font-size:.68rem;padding:3px 6px;}
}
@media (prefers-reduced-motion:reduce){
  .cm .zm-bob,.cm .zm-cloud{animation:none!important;}
  .cm-fan,.cm-reg,.cm-cid,.cm-casa{transition:none!important;}
}

/* city plot: the dashed rings the houses of the open city stand on */
.cm .cm-casa{--u:calc(var(--vs) * 2.7px);}
.cm-cid.is-fora{opacity:1!important;}
.cm-cid.is-fora .zm-btn{opacity:0;pointer-events:none;}
.cm-anel{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;}
.cm-anel::before,.cm-anel::after{content:"";position:absolute;left:0;top:0;border-radius:50%;transform:translate(-50%,-50%) scale(.4);opacity:0;transition:opacity .5s ease,transform .8s cubic-bezier(.34,1.4,.64,1);
  background:radial-gradient(closest-side,rgba(58,200,196,.16),rgba(58,200,196,0));border:1.6px dashed rgba(26,127,123,.4);}
.cm-anel::before{width:calc(var(--r1,0px) * 2);height:calc(var(--r1,0px) * 1.16);}
.cm-anel::after{width:calc(var(--r2,0px) * 2);height:calc(var(--r2,0px) * 1.16);background:none;}
.cm-cid.is-fora .cm-anel::before,.cm-cid.is-fora .cm-anel::after{opacity:1;transform:translate(-50%,-50%) scale(1);}
@media (prefers-reduced-motion:reduce){.cm-anel::before,.cm-anel::after{transition:none!important;}}

/* inside a city: the neighbour cities stay as a faint backdrop, without numbers */
.cm.cm-n2 .cm-cid:not(.is-fora){opacity:.22;}
.cm.cm-n2 .cm-cid .zm-count{opacity:0;}
.cm-cid .zm-count{transition:opacity .3s;}

/* cities a little smaller than the region villages and the houses of an open city */
.cm .cm-cid{--u:calc(var(--vs) * 3px);}
