/* Vega 17 · Modelo 3D del edificio (extraído del diseño original) */
.v3d, .plan-viewer {
  --bg-main: var(--global-palette8, #f4f3ef); --bg-dark: var(--global-palette3, #111110);
  --text-main: var(--global-palette4, #222220); --text-muted: var(--global-palette5, #6b6963);
  --text-light: var(--global-palette8, #f4f3ef); --accent: var(--global-palette1, #9c824c);
  --accent-hover: var(--global-palette2, #b89a5c); --line: rgba(34,34,32,0.12); --line-dark: rgba(244,243,239,0.15);
  --font-title: var(--global-heading-font-family, 'Cinzel', serif); --font-body: var(--global-body-font-family, sans-serif);
}
.v3d button, .plan-viewer button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; border-radius: 0; box-shadow: none; text-transform: none; letter-spacing: normal; padding: 0; }
.v3d img, .plan-viewer img { display: block; max-width: 100%; }
.v3d .btn { display: inline-flex; align-items: center; justify-content: center; padding: 14px 24px; font-size: .75rem; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; transition: background .3s; }
.v3d .btn-gold { background: var(--accent); color: var(--bg-dark); }
.v3d .btn-gold:hover { background: var(--accent-hover); }
.v3d table { margin: 0; border: 0; }
.v3d th, .v3d td { border-left: 0; border-right: 0; border-top: 0; }
  /* ============ SECCIÓN: EL EDIFICIO · MODELO 3D ============ */

  .v3d { position: relative; height: clamp(560px, 82vh, 860px); background: radial-gradient(120% 90% at 50% 38%, #fbfaf6 0%, #f1efe8 55%, #e6e1d5 100%); border: 1px solid var(--line); box-shadow: 20px 20px 0px rgba(156, 130, 76, 0.12); overflow: hidden; font-family: var(--font-body); color: var(--text-main); }
  .v3d:fullscreen { height: 100%; box-shadow: none; border: 0; }
  .v3d canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; touch-action: pan-y; cursor: grab; }
  .v3d:fullscreen canvas { touch-action: none; }
  .v3d canvas:active { cursor: grabbing; }
  .v3d [hidden] { display: none !important; }
  .v3d-labels { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
  .v3d-lbl { position: absolute; transform: translate(-50%,-50%); white-space: nowrap; font-size: 10px; line-height: 1; color: var(--text-main); background: rgba(255,255,255,0.88); border: 1px solid var(--line); padding: 2px 5px 3px; font-variant-numeric: tabular-nums; }
  .v3d-lbl.dim { opacity: 0.35; }
  .v3d-lbl.named, .v3d-lbl.plaza { font-size: 10.5px; line-height: 1.2; text-align: center; border-color: var(--accent); }
  .v3d-lbl.named i, .v3d-lbl.plaza i { display: block; font-style: normal; color: var(--accent); font-weight: 600; }
  .v3d-lbl.named b, .v3d-lbl.plaza b { display: block; font-family: var(--font-title); letter-spacing: 0.05em; }
  .v3d-lbl.plaza.sel, .v3d-lbl.named.sel { background: var(--text-main); color: var(--text-light); border-color: var(--text-main); }
  .v3d-lbl.unit { font-size: 11.5px; padding: 5px 9px 6px; border-color: var(--accent); background: rgba(255,255,255,0.96); box-shadow: 0 2px 8px rgba(0,0,0,0.1); text-align: center; line-height: 1.25; }
  .v3d-lbl.unit b { display: block; font-family: var(--font-title); font-weight: 600; letter-spacing: 0.06em; font-size: 13px; }
  .v3d-lbl.unit span { color: var(--accent); font-weight: 600; }
  .v3d-lbl.unit.sel { background: var(--text-main); border-color: var(--text-main); color: var(--text-light); }
  .v3d-lbl.floor { font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; background: var(--text-main); color: var(--text-light); border-color: var(--text-main); }
  .v3d-loading { position: absolute; inset: 0; display: grid; place-items: center; font-size: 0.85rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); pointer-events: none; }
  .v3d-toast { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); background: rgba(17,17,16,0.78); color: var(--text-light); font-size: 0.82rem; padding: 10px 16px; pointer-events: none; opacity: 0; transition: opacity 0.25s ease; }
  .v3d-toast.on { opacity: 1; }

  .v3d-tools { position: absolute; left: 14px; right: 14px; bottom: 14px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; pointer-events: none; }
  .v3d-group { display: flex; gap: 2px; background: #fff; border: 1px solid var(--line); padding: 3px; pointer-events: auto; box-shadow: 0 2px 10px rgba(0,0,0,0.06); }
  .v3d-tools button { font: 500 0.78rem/1 var(--font-body); color: var(--text-main); background: transparent; border: 0; padding: 9px 11px; cursor: pointer; letter-spacing: 0.03em; }
  .v3d-tools button:hover { background: rgba(156,130,76,0.1); }
  .v3d-tools button[aria-pressed="true"] { background: var(--text-main); color: var(--text-light); }
  .v3d button:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
  .v3d-hint { font-size: 0.72rem; color: var(--text-muted); pointer-events: none; padding-left: 4px; }

  .v3d-panel { position: absolute; right: 14px; top: 14px; width: 300px; max-height: calc(100% - 92px); overflow: auto; background: #fff; border: 1px solid var(--line); box-shadow: 0 6px 24px rgba(0,0,0,0.08); padding: 18px 20px 16px; }
  .v3d-panel.wide { width: 350px; }
  .v3d-panel h3 { font-family: var(--font-title); font-size: 0.95rem; letter-spacing: 0.06em; margin: 0 0 4px; }
  .v3d-h4 { font-family: var(--font-title); font-size: 0.82rem; letter-spacing: 0.06em; margin: 18px 0 4px; }
  .v3d-sub { margin: 0 0 12px; font-size: 0.78rem; color: var(--text-muted); }
  .v3d-panel table { width: 100%; border-collapse: collapse; font-size: 0.8rem; font-variant-numeric: tabular-nums; }
  .v3d-panel th { font-weight: 500; color: var(--text-muted); text-align: right; padding: 4px 0 6px; font-size: 0.7rem; letter-spacing: 0.05em; text-transform: uppercase; border-bottom: 1px solid var(--line); }
  .v3d-panel th:first-child, .v3d-panel td:first-child { text-align: left; }
  .v3d-panel td { padding: 7px 0; border-bottom: 1px solid var(--line); text-align: right; }
  .v3d-panel td b { font-weight: 600; }
  .v3d-panel td small { color: var(--text-muted); }
  .v3d-panel tr.pick { cursor: pointer; }
  .v3d-panel tr.pick:hover td, .v3d-panel tr.on td { background: rgba(156,130,76,0.07); }
  .v3d-panel tr.pick:focus-visible td { outline: 2px solid var(--accent); outline-offset: -2px; }
  .v3d-panel tr.tot td { border-bottom: 0; padding-top: 10px; }
  .v3d-panel tr.tot td b { color: var(--accent); font-size: 0.92rem; }
  .v3d-note { margin: 12px 0 0; font-size: 0.7rem; line-height: 1.5; color: var(--text-muted); }
  .v3d-back { font: 500 0.75rem/1 var(--font-body); color: var(--text-main); background: none; border: 0; padding: 0 0 12px; cursor: pointer; letter-spacing: 0.04em; }
  .v3d-back:hover { color: var(--accent); }
  .v3d-detail h3 { font-size: 1.25rem; }
  .v3d-detail h3 span { color: var(--accent); }
  .v3d-tag { font: 600 0.62rem/1 var(--font-body); letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); border: 1px solid var(--accent); padding: 3px 5px; vertical-align: middle; }
  .v3d-kpi { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 12px 0; }
  .v3d-kpi div { background: rgba(156,130,76,0.07); padding: 9px 10px; }
  .v3d-kpi span { display: block; font-size: 0.68rem; color: var(--text-muted); letter-spacing: 0.04em; }
  .v3d-kpi b { font-family: var(--font-title); font-size: 1.05rem; color: var(--accent); font-variant-numeric: tabular-nums; }
  .v3d-facts { display: flex; flex-wrap: wrap; gap: 12px; font-size: 0.78rem; margin: 0 0 10px; }
  .v3d-facts b { font-weight: 600; }
  .v3d-ficha { border: 1px solid var(--line); background: #fff; margin: 0 0 12px; }
  .v3d-ficha-img { position: relative; display: block; width: 100%; padding: 0; cursor: zoom-in; }
  .v3d-ficha-img img { display: block; width: 100%; height: auto; }
  .v3d-ficha-link { display: block; width: 100%; font-size: 0.7rem; color: var(--text-muted); padding: 8px; border-top: 1px solid var(--line); text-align: left; letter-spacing: 0.04em; transition: color 0.2s; }
  .v3d-ficha-link:hover { color: var(--accent); }
  .v3d-ficha-img .plan-zoom-btn { right: 8px; bottom: 8px; padding: 6px 9px; font-size: 0.6rem; }
  .v3d-cta { display: grid; gap: 8px; margin-top: 14px; }
  .v3d-cta .btn { width: 100%; }
  .v3d-panel-toggle { display: none; }

  @media (max-width: 760px) {
    .v3d { height: 78vh; min-height: 520px; }
    .v3d-panel, .v3d-panel.wide { top: auto; bottom: 64px; left: 10px; right: 10px; width: auto; max-height: 50%; padding: 14px 16px; }
    .v3d-panel[data-collapsed="true"] .v3d-body { display: none; }
    .v3d-panel-toggle { display: flex; justify-content: space-between; width: 100%; background: none; border: 0; padding: 0; font: 600 0.72rem/1 var(--font-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-main); cursor: pointer; }
    .v3d-panel[data-collapsed="false"] .v3d-panel-toggle { margin-bottom: 12px; }
    .v3d-tools { left: 0; right: 0; bottom: 10px; gap: 6px; padding: 0 10px; flex-wrap: nowrap; overflow-x: auto; pointer-events: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
    .v3d-tools::-webkit-scrollbar { display: none; }
    .v3d-group { flex-shrink: 0; }
    .v3d-tools button { padding: 8px 9px; font-size: 0.72rem; }
    .v3d-hint { display: none; }
    .v3d-lbl { font-size: 9px; }
  }
  @media (prefers-reduced-motion: reduce) { .v3d-toast { transition: none; } }

  /* ============ VISOR DE PLANOS CON ZOOM ============ */
  .plan-zoom-btn { position: absolute; right: 10px; bottom: 10px; z-index: 2; background: rgba(17,17,16,0.82); color: var(--text-light); font-size: 0.66rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; padding: 7px 11px; line-height: 1; pointer-events: auto; transition: background 0.2s; }
  .plan-zoom-btn:hover, .v3d-ficha-img:hover .plan-zoom-btn { background: var(--accent); color: var(--bg-dark); }
  .v3d-ficha-img .plan-zoom-btn { right: 8px; bottom: 8px; padding: 6px 9px; font-size: 0.6rem; }
      .plan-viewer { position: fixed; inset: 0; z-index: 3000; background: rgba(17,17,16,0.95); }
  .plan-viewer[hidden] { display: none; }
  .pv-stage { position: absolute; inset: 0; overflow: hidden; cursor: grab; touch-action: none; }
  .pv-stage.dragging { cursor: grabbing; }
  .pv-stage img { position: absolute; left: 0; top: 0; max-width: none; transform-origin: 0 0; background: #fff; box-shadow: 0 20px 60px rgba(0,0,0,0.5); user-select: none; -webkit-user-select: none; -webkit-user-drag: none; }
  .pv-top { position: absolute; top: 0; left: 0; right: 0; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 14px 18px 30px; background: linear-gradient(rgba(17,17,16,0.9), transparent); pointer-events: none; }
  .pv-title { font-family: var(--font-title); font-size: 1.05rem; letter-spacing: 0.06em; color: var(--text-light); }
  .pv-close { pointer-events: auto; width: 44px; height: 44px; font-size: 2.2rem; line-height: 1; color: var(--text-light); transition: color 0.2s; }
  .pv-close:hover { color: var(--accent-hover); }
  .pv-tools { position: absolute; left: 50%; bottom: 20px; transform: translateX(-50%); display: flex; align-items: center; gap: 2px; padding: 5px; background: rgba(17,17,16,0.9); border: 1px solid var(--line-dark); }
  .pv-tools button { min-width: 42px; height: 38px; padding: 0 10px; font-size: 1.25rem; line-height: 1; color: var(--text-light); transition: color 0.2s; }
  .pv-tools button:hover { color: var(--accent-hover); }
  .pv-tools #pvFit { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase; }
  .pv-tools span { min-width: 52px; text-align: center; font-size: 0.75rem; color: rgba(244,243,239,0.7); font-variant-numeric: tabular-nums; }
  .pv-hint { margin-left: auto; font-size: 0.72rem; letter-spacing: 0.03em; color: rgba(244,243,239,0.6); }
  @media(max-width: 760px) { .pv-hint { display: none; } }
