/* ===== FICHA DE TIENDA (página) ===== */
.ficha-page{max-width:var(--maxw);margin:0 auto;padding:18px 16px 70px}
.breadcrumb{font-size:.82rem;color:var(--muted);margin-bottom:18px}
.breadcrumb a{color:var(--muted)}
.breadcrumb a:hover{color:var(--brand-bright)}
.breadcrumb span{color:var(--text);font-weight:600}

.fp-top{display:grid;grid-template-columns:1.3fr 1fr;gap:40px;align-items:start;margin-bottom:34px}
.fp-info h1{font-size:clamp(1.8rem,3.4vw,2.6rem);font-weight:800;letter-spacing:-.02em;margin-bottom:12px}
.fp-desc{color:#555;line-height:1.6;margin-bottom:22px;max-width:54ch}
.fp-meta{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;margin-bottom:20px}
.m-block h4{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--brand-bright);font-weight:800;margin-bottom:4px}
.m-block p{font-size:.95rem;color:var(--text)}
.m-block a{color:var(--text);text-decoration:underline;text-underline-offset:2px}
.m-block a:hover{color:var(--brand-bright)}
.m-block .m-contact{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:.88rem;font-weight:700;color:#fff;background:var(--brand-bright);border:none;border-radius:22px;padding:8px 15px;cursor:pointer;transition:transform .15s,filter .15s}
.m-block .m-contact:hover{filter:brightness(.93);transform:translateY(-1px)}
.m-block .m-contact svg{width:15px;height:15px;flex:none}
.cat-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:middle}
.fp-redes{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.fp-redes .fr-lbl{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--brand-bright);font-weight:800;margin-right:2px}
.soc-ic{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--surface);border:1px solid var(--line);color:var(--text);transition:transform .15s,background .15s,color .15s,border-color .15s}
.soc-ic svg{width:20px;height:20px}
.soc-ic:hover{background:var(--brand-bright);border-color:var(--brand-bright);color:#fff;transform:translateY(-2px)}
.soc-ic.wa:hover{background:#25D366;border-color:#25D366}

/* Carrusel de fotos/logo en la tarjeta de la ficha */
.fp-carousel{position:relative;width:100%;aspect-ratio:4/3;border-radius:14px;overflow:hidden;background:#fff;margin-bottom:18px;border:1px solid var(--line)}
.car-slide{position:absolute;inset:0;opacity:0;transition:opacity .35s ease;background:#fff center/cover no-repeat}
.car-slide.on{opacity:1}
.car-slide.is-logo{background-size:contain;background-repeat:no-repeat;background-position:center;padding:14px}
.car-slide.is-ph{display:grid;place-items:center}
.car-slide.is-ph span{color:#fff;font-weight:800;font-size:1.3rem;text-align:center;padding:18px;overflow-wrap:anywhere}
.car-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 2px 8px rgba(0,0,0,.2);font-size:1.4rem;line-height:1;color:#222;display:grid;place-items:center;transition:background .15s}
.car-nav:hover{background:#fff}
.car-nav.prev{left:8px}
.car-nav.next{right:8px}
.car-dots{position:absolute;bottom:10px;left:0;right:0;z-index:3;display:flex;justify-content:center;gap:6px}
.car-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.7);box-shadow:0 0 0 1px rgba(0,0,0,.18);transition:background .15s}
.car-dot.on{background:#ff255b;box-shadow:0 0 0 1px rgba(0,0,0,.1)}

.fp-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--sh-sm,0 2px 8px rgba(0,0,0,.06));text-align:center}
.fp-logo{height:160px;background:#fff center/contain no-repeat;display:grid;place-items:center;margin-bottom:18px}
.fp-logo.ph{font-size:1.5rem;font-weight:800;color:#fff;border-radius:16px;text-align:center;padding:16px;line-height:1.2;overflow-wrap:anywhere}
.fp-tour{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:.9rem;padding:11px 20px;border:1px solid var(--line);border-radius:999px;color:var(--text)}
.fp-tour:hover{border-color:var(--brand-bright);color:var(--brand-bright)}
.tour-ic{font-size:1.1rem}

/* ===== MAPA 3D→2D ===== */
.fp-mapa{border-top:1px solid var(--line);padding-top:26px;margin-bottom:40px}
.mapa-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap:10px}
.mapa-title{font-size:.95rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.mapa-tools{display:flex;align-items:center;gap:12px}
.mapa-toggle{font-size:.82rem;font-weight:700;padding:8px 16px;border-radius:999px;background:var(--brand-bright);color:#fff;transition:.15s}
.mapa-toggle:hover{background:var(--brand-dark)}
.planta-selector{display:flex;gap:3px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px}
.planta-selector button{width:36px;height:28px;border-radius:999px;font-size:.82rem;font-weight:700;color:var(--muted);background:none}
.planta-selector button.on{background:#222;color:#fff}

.escena{position:relative;height:clamp(440px,46vw,560px);background:radial-gradient(120% 90% at 50% 18%,#fbfbfc 0%,#eceef1 100%);border-radius:18px;overflow:hidden;perspective:1600px;perspective-origin:50% 40%;transition:perspective-origin .28s ease-out;cursor:pointer}
.maqueta{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.4,.05,.2,1);display:grid;place-items:center;padding:20px}
.svg-host{width:86%;height:86%}
.escena.is-3d .maqueta{transform:rotateX(43deg) rotateZ(-1deg) scale(.82)}
.escena.is-3d .svg-host{filter:drop-shadow(0 30px 30px rgba(0,0,0,.28))}
.escena.is-2d .maqueta{transform:none}
.escena.is-2d .svg-host{width:100%;height:100%}
.escena.is-2d{cursor:grab}
.escena.is-2d.grabbing{cursor:grabbing}
.escena.is-2d.grabbing .map-lbl{opacity:.55}
.escena.no-map{cursor:default}
/* control de zoom (visible en vista plana) */
.zoom-ctl{position:absolute;right:12px;bottom:12px;z-index:6;display:flex;flex-direction:column;gap:7px}
.zoom-ctl button{width:40px;height:40px;border-radius:12px;background:#fff;color:#222;font-size:1.25rem;font-weight:700;box-shadow:0 3px 12px rgba(0,0,0,.18);display:grid;place-items:center;line-height:1;transition:transform .12s,background .12s,color .12s}
.zoom-ctl button:hover{background:var(--brand-bright);color:#fff;transform:translateY(-1px)}
.zoom-ctl button:active{transform:translateY(0)}
.mapa-hint{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);background:rgba(20,20,20,.8);color:#fff;
  font-size:.78rem;font-weight:600;padding:7px 14px;border-radius:999px;pointer-events:none;z-index:4}
.mk-halo{fill:#ff255b;opacity:.35;animation:mkpulse 1.7s ease-out infinite}
.mk-dot{fill:#ff255b;stroke:#fff;stroke-width:1.5}
@keyframes mkpulse{0%{r:5;opacity:.5}100%{r:24;opacity:0}}

.map-lbl{position:absolute;transform:translate(-50%,-50%);z-index:3;font-size:.62rem;font-weight:600;color:#555;
  background:rgba(255,255,255,.75);padding:1px 5px;border-radius:4px;white-space:nowrap;pointer-events:none;max-width:80px;overflow:hidden;text-overflow:ellipsis}
.map-lbl.principal{z-index:5;font-size:.78rem;font-weight:800;color:#111;background:#fff;border:1px solid var(--line);
  padding:5px 11px;border-radius:8px;box-shadow:0 3px 10px rgba(0,0,0,.16);transform:translate(-50%,-150%)}
.map-lbl.principal::after{content:"";position:absolute;left:50%;bottom:-12px;transform:translateX(-50%);
  width:12px;height:12px;background:var(--brand-bright);border:2px solid #fff;border-radius:50% 50% 50% 0;rotate:45deg}

.mapa-estado{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:18px;color:var(--muted)}
.mapa-estado .me-ic{font-size:1.8rem}
.mapa-estado p{font-size:.88rem;max-width:32ch}
.planta-aviso{font-size:.82rem;color:var(--muted);margin-top:10px}
.planta-aviso a{color:var(--brand-bright);font-weight:600}
.ver-plano{display:inline-block;margin-top:10px;font-size:.82rem;font-weight:600;color:var(--brand-bright)}
.ver-plano:hover{text-decoration:underline}

/* ===== RELACIONADAS ===== */
.fp-related h2{font-size:1.4rem;font-weight:800;margin-bottom:18px}
.fp-related .mosaico{margin-top:0}

@media(max-width:760px){
  .fp-top{grid-template-columns:1fr;gap:24px}
  .fp-card{order:-1}
  .fp-meta{grid-template-columns:1fr 1fr}
  .escena{height:360px}
}
