:root { --ink:#122136; --muted:#637187; --line:#e5e9ef; --blue:#1769e0; --navy:#0d1b30; }
* { box-sizing:border-box; }
body { margin:0; min-width:320px; background:#07101d; font-family:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; color:var(--ink); }
.app-shell { min-height:100vh; display:grid; grid-template-columns:minmax(0, 1fr) 390px; }
.tour { min-height:100vh; position:relative; overflow:hidden; background:#0c1726; }
#panorama { position:absolute; inset:0; width:100%; height:100%; cursor:grab; touch-action:none; }
#panorama:active { cursor:grabbing; }
.tour-overlay { position:absolute; inset:0; pointer-events:none; padding:28px 32px; color:white; background:linear-gradient(180deg,rgba(3,12,23,.6),transparent 32%,transparent 74%,rgba(3,12,23,.55)); }
.brand { display:inline-flex; align-items:center; gap:8px; color:#fff; font-size:14px; font-weight:750; letter-spacing:.08em; text-decoration:none; pointer-events:auto; }
.brand span,.avatar { display:grid; place-items:center; width:30px; height:30px; border-radius:9px; background:#fff; color:#1769e0; font-weight:800; letter-spacing:0; }
.brand b { color:#7ec0ff; }
.property-card { margin-top:54px; max-width:470px; text-shadow:0 2px 14px rgba(0,0,0,.5); }
.eyebrow { margin:0 0 9px; font-size:11px; font-weight:700; letter-spacing:.12em; color:#bfe0ff; }
h1 { font-size:clamp(25px,3vw,40px); line-height:1.07; margin:0; letter-spacing:-.035em; }
.price { margin:14px 0 0; font-size:19px; font-weight:700; }.price span { font-size:13px; font-weight:500; opacity:.9; }
.scene-label { position:absolute; left:32px; bottom:23px; font-size:13px; font-weight:600; }
.panorama-help { position:absolute; left:50%; bottom:25px; transform:translateX(-50%); color:#fff; font-size:12px; padding:8px 12px; border-radius:20px; background:rgba(4,12,24,.52); backdrop-filter:blur(5px); }
.hotspots { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.hotspot { position:absolute; display:grid; place-items:center; width:48px; height:48px; transform:translate(-50%,-50%); border:2px solid #fff; color:#fff; background:rgba(20,108,229,.94); box-shadow:0 3px 18px #001a3b88; padding:0; border-radius:50%; font:600 22px/1 Inter,ui-sans-serif,system-ui,sans-serif; cursor:pointer; pointer-events:auto; transition:transform .2s,background .2s; }
.hotspot:hover { background:#2580ff; transform:translate(-50%,-50%) scale(1.1); }.hotspot .arrow { font-size:24px; transform:translateY(-1px); }
.hotspot::after { content:attr(data-label); position:absolute; top:54px; left:50%; transform:translateX(-50%); max-width:156px; overflow:hidden; text-overflow:ellipsis; padding:4px 7px; border-radius:6px; color:#fff; background:#0b192ce8; font:600 10px/1 Inter,ui-sans-serif,system-ui,sans-serif; white-space:nowrap; opacity:1; pointer-events:none; }
.hotspot.label-above::after { top:auto; bottom:54px; }
.viewer-controls { position:absolute; right:27px; bottom:25px; display:grid; overflow:hidden; border-radius:10px; box-shadow:0 3px 12px #0004; }.viewer-controls button,.round { border:0; color:#fff; background:rgba(11,25,44,.86); cursor:pointer; font-size:20px; }.viewer-controls button { width:40px; height:38px; border-bottom:1px solid #ffffff25; }.viewer-controls button:last-child { border:0; font-size:17px; }
.navigation { position:absolute; bottom:76px; left:50%; transform:translateX(-50%); display:flex; align-items:center; gap:10px; }.round { width:35px; height:35px; border-radius:50%; }.round:hover,.viewer-controls button:hover { background:#1769e0; }.round:disabled,.scene-dots button:disabled { opacity:.28; cursor:default; pointer-events:none; }
.scene-dots { display:flex; max-width:295px; flex-wrap:wrap; justify-content:center; gap:5px; }.scene-dots button { padding:0; width:8px; height:8px; border:1px solid #fff; opacity:.8; border-radius:50%; background:transparent; cursor:pointer; }.scene-dots button.active { background:#fff; transform:scale(1.25); }
.assistant-panel { display:flex; flex-direction:column; min-height:100vh; background:#fff; }.assistant-header { height:58px; padding:9px 14px; display:flex; align-items:center; gap:11px; border-bottom:1px solid var(--line); }.avatar { width:31px; height:31px; border-radius:50%; color:#fff; background:linear-gradient(145deg,#3e9fff,#1554c1); }.assistant-header strong { display:block; font-size:12px; }.assistant-header small { display:flex; align-items:center; gap:4px; margin-top:1px; color:var(--muted); font-size:10px; }.assistant-header i { width:7px;height:7px;background:#2fc36f;border-radius:50%; }.more { margin-left:auto; border:0;background:transparent;color:var(--muted);font-size:20px;cursor:pointer; }
.house-map{padding:14px 18px 11px;border-bottom:1px solid var(--line);background:#fff}.map-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.map-heading span{display:block;color:#1769e0;font-size:9px;font-weight:800;letter-spacing:.11em}.map-heading strong{display:block;margin-top:2px;font-size:13px}.map-heading i{padding:4px 6px;border-radius:5px;background:#eef4fe;color:#51709b;font-style:normal;font-size:9px;font-weight:700}.house-map svg{display:block;width:100%;height:156px;border:1px solid #dbe4ef;border-radius:9px;background:#f8fafc}.map-outline{fill:#f2f6fb;stroke:#8ea2bc;stroke-width:2}.map-wall{fill:none;stroke:#b0c0d1;stroke-width:1.5}.house-map text{fill:#718198;font:700 8px Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:.04em}.map-zone{fill:transparent;cursor:pointer}.map-zone:hover{fill:#1769e018}.map-marker{fill:#e63946;stroke:#fff;stroke-width:3;filter:drop-shadow(0 2px 3px #8c243280)}.house-map p{margin:6px 0 0;color:#718198;font-size:10px;line-height:1.35}.map-floor-tabs{display:flex;gap:5px;overflow:auto;margin:0 0 8px;padding-bottom:1px}.map-floor-tabs button{border:1px solid #d6e0ee;background:#fff;color:#536b8d;border-radius:6px;padding:5px 7px;font:700 10px Inter,ui-sans-serif,system-ui,sans-serif;white-space:nowrap;cursor:pointer}.map-floor-tabs button.active{background:#1769e0;color:#fff;border-color:#1769e0}.published-map{height:156px;border:1px solid #dbe4ef;border-radius:9px;background:#f8fafc;overflow:hidden}.published-map-svg{display:block;width:100%;height:100%}.published-space{fill:#dcecff;stroke:#1769e0;stroke-width:2;cursor:pointer;transition:fill .16s}.published-space:hover{fill:#bad8ff}.published-space.is-active{fill:#8fc0ff;stroke:#0e54bd}.house-map .published-space-label{fill:#294969;font:500 var(--map-label-size,9px)/1 Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:0;pointer-events:none}.published-map-marker{fill:#e63946;stroke:#fff;stroke-width:3;filter:drop-shadow(0 2px 3px #8c243280);pointer-events:none}.published-map-empty{height:100%;display:grid;place-items:center;padding:18px;text-align:center;color:#718198;font-size:11px;line-height:1.4}.published-map{position:relative}.published-map .published-space:hover + .published-space-label{fill:#0e54bd;font-weight:600}.map-hover-name{position:absolute;z-index:2;left:50%;bottom:7px;max-width:calc(100% - 18px);transform:translateX(-50%) translateY(4px);padding:5px 8px;border-radius:6px;background:#10233fe8;color:#fff;font:800 14px/1.1 Inter,ui-sans-serif,system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s}.map-hover-name.visible{opacity:1;transform:translateX(-50%) translateY(0)}.map-heading-actions{display:flex;align-items:center;gap:6px}.map-heading-actions button{border:1px solid #cbd9ed;background:#fff;color:#225eae;border-radius:6px;padding:4px 6px;font:700 10px Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer}.map-heading-actions button:hover{background:#eef5ff}.map-modal[hidden]{display:none}.map-modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:28px}.map-modal-backdrop{position:absolute;inset:0;background:#061326a8;backdrop-filter:blur(4px)}.map-modal-card{position:relative;z-index:1;width:min(1000px,92vw);height:min(760px,86vh);display:flex;flex-direction:column;padding:22px;background:#fff;border-radius:16px;box-shadow:0 24px 80px #0007}.map-modal-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.map-modal-card header span{display:block;color:#1769e0;font-size:10px;font-weight:800;letter-spacing:.1em}.map-modal-card header strong{display:block;margin-top:3px;color:#17233a;font-size:18px}.map-modal-card header button{width:36px;height:36px;border:1px solid #d6e0ed;border-radius:8px;background:#fff;color:#52637c;font-size:25px;line-height:1;cursor:pointer}.map-modal-tabs{display:flex;gap:7px;overflow:auto;margin-bottom:14px}.map-modal-tabs button{border:1px solid #d6e0ee;background:#fff;color:#536b8d;border-radius:7px;padding:8px 11px;font:700 12px Inter,ui-sans-serif,system-ui,sans-serif;white-space:nowrap;cursor:pointer}.map-modal-tabs button.active{background:#1769e0;color:#fff;border-color:#1769e0}.map-modal-canvas{flex:1;min-height:0;border:1px solid #dbe4ef;border-radius:11px;background:#f8fafc;overflow:hidden}.map-modal-canvas .published-map-svg{width:100%;height:100%;border:0;border-radius:0}.map-modal-canvas .published-space-label{font-size:13px}.map-modal-card p{margin:12px 0 0;color:#718198;font-size:12px;text-align:center}.map-modal-open{overflow:hidden}@media(max-width:600px){.map-modal{padding:12px}.map-modal-card{width:100%;height:calc(100vh - 24px);padding:16px}.map-modal-card header strong{font-size:16px}.map-modal-canvas .published-space-label{font-size:10px}}.header-tools{margin-left:auto;display:flex;gap:6px;align-items:center}.editor-link{margin-left:0}.messages { flex:none; max-height:148px; overflow:auto; padding:9px 14px; display:flex; flex-direction:column; gap:7px; background:#fbfcfe; }.message { width:fit-content; max-width:94%; padding:8px 10px; line-height:1.32; font-size:12px; border-radius:5px 14px 14px 14px; }.message.bot { background:#eef4fe; color:#27364c; }.message.user { align-self:flex-end; background:#1769e0; color:white; border-radius:14px 5px 14px 14px; }.message strong { font-weight:750; }
.suggestions { padding:3px 14px 9px; display:flex; gap:5px; flex-wrap:wrap; border-top:1px solid var(--line); }.suggestions button { padding:5px 7px; background:white; border:1px solid #cdd9ec; border-radius:99px; color:#225eae; font-size:10px; cursor:pointer; }.suggestions button:hover { background:#eef5ff; }
.chat-form { display:flex; gap:7px; padding:7px 14px 3px; }.chat-form textarea { min-width:0; flex:1; min-height:52px; resize:none; padding:9px 10px; border:1px solid #d5dce7; border-radius:8px; outline:none; font:inherit; font-size:12px; line-height:1.35; }.chat-form textarea:focus { border-color:#1769e0; box-shadow:0 0 0 3px #1769e01a; }.chat-form button { width:34px; align-self:stretch; border:0; border-radius:8px; background:#1769e0;color:#fff;font-size:18px;cursor:pointer; } footer { padding:0 14px 8px; color:#98a3b3; font-size:10px; text-align:center; }
@media (max-width:850px) { .app-shell { grid-template-columns:1fr; }.tour { min-height:63vh; }.assistant-panel { min-height:37vh; }.property-card { margin-top:26px; }.tour-overlay { padding:20px; }.scene-label { left:20px; }.panorama-help { display:none; }.navigation { bottom:21px; }.viewer-controls { right:18px; bottom:18px; } .messages { min-height:0; max-height:148px; } }
.editor-link{margin-left:auto;padding:5px 7px;border:1px solid #cbd6e5;border-radius:6px;color:#225eae;text-decoration:none;font-size:10px;font-weight:700}
.tour-editor{position:fixed;inset:0;z-index:20;background:#f5f7fa;color:#122136;overflow:auto}.tour-editor[hidden]{display:none}.editor-bar{position:sticky;top:0;z-index:1;min-height:73px;padding:12px 5vw;background:#0d1b30;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:18px}.editor-bar p{margin:0 0 3px;color:#7ec0ff;font-size:10px;font-weight:800;letter-spacing:.1em}.editor-bar strong{font-size:15px}.editor-bar>div:last-child{display:flex;gap:8px}.editor-primary,.editor-secondary{padding:9px 12px;border-radius:8px;font:700 12px Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer}.editor-primary{border:0;background:#1769e0;color:#fff}.editor-secondary{border:1px solid #ffffff36;background:#ffffff14;color:#fff}.editor-body{max-width:950px;margin:0 auto;padding:32px 24px 70px}.editor-instructions{margin:0 0 18px;color:#5c6b80;font-size:14px}.editor-scene-list{display:grid;gap:10px}.editor-scene-card{display:grid;grid-template-columns:24px 150px 1fr 32px;gap:14px;align-items:center;min-height:118px;padding:10px 15px;background:#fff;border:1px solid #dce3ed;border-radius:12px;box-shadow:0 2px 8px #17345a0a}.editor-scene-card.dragging{opacity:.45}.editor-scene-card.over{border-color:#1769e0;box-shadow:0 0 0 3px #1769e022}.editor-drag{color:#8491a5;font-size:22px;cursor:grab}.editor-scene-card img{width:150px;height:94px;object-fit:cover;border-radius:8px}.editor-scene-content{display:grid;gap:5px}.editor-scene-content .scene-number,.editor-scene-content .source{color:#8090a5;font-size:12px}.editor-scene-content label{font-size:12px;font-weight:700}.editor-scene-content .scene-name{display:block;width:min(100%,360px);margin-top:5px;padding:8px 10px;border:1px solid #dce3ed;border-radius:7px;font:inherit;font-size:14px;color:#122136}.editor-scene-content .scene-name:focus{outline:2px solid #1769e033;border-color:#1769e0}.editor-scene-card .remove{border:0;background:none;color:#9ba7b7;font-size:26px;cursor:pointer}.editor-scene-card .remove:hover{color:#d8334a}#editor-notice{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);padding:11px 15px;border-radius:9px;background:#122136;color:#fff;opacity:0;transition:opacity .2s;pointer-events:none}#editor-notice.visible{opacity:1}@media(max-width:600px){.editor-bar{padding:12px 15px;align-items:start;flex-direction:column}.editor-body{padding:24px 15px}.editor-scene-card{grid-template-columns:18px 94px 1fr 25px;gap:8px}.editor-scene-card img{width:94px;height:82px}.editor-scene-content .scene-name{width:100%}}
.editor-workspace{display:grid;grid-template-columns:minmax(0,1fr) 315px;gap:22px;align-items:start}.connection-panel{position:sticky;top:96px;padding:19px;background:#fff;border:1px solid #dce3ed;border-radius:12px;box-shadow:0 2px 8px #17345a0a}.connection-kicker{margin:0 0 5px;color:#1769e0;font-size:10px;font-weight:800;letter-spacing:.1em}.connection-panel h2{margin:0;font-size:17px}.connection-help{margin:8px 0 15px;color:#617086;font-size:12px;line-height:1.4}.connection-panel label{display:grid;gap:5px;margin:12px 0;color:#34445b;font-size:12px;font-weight:700}.connection-panel select,.connection-panel input{width:100%;padding:9px 10px;border:1px solid #dce3ed;border-radius:7px;background:#fff;color:#122136;font:inherit;font-size:13px}.connection-panel .editor-primary{width:100%;margin-top:3px}.connection-list{display:grid;gap:7px;margin-top:18px}.connection-row{display:flex;align-items:center;gap:8px;padding:8px 9px;border-radius:7px;background:#f0f5fc;color:#2d4d78;font-size:12px}.connection-row span{min-width:0;flex:1}.connection-row button{border:0;background:transparent;color:#7c8ba0;font-size:19px;cursor:pointer}.connection-empty{margin:0;color:#8794a6;font-size:12px}.editor-scene-card.selected{border-color:#1769e0;box-shadow:0 0 0 3px #1769e022}.editor-scene-card.selected::after{content:"ORIGEN";align-self:start;padding:4px 6px;border-radius:4px;background:#1769e0;color:#fff;font-size:9px;font-weight:800;letter-spacing:.05em}@media(max-width:850px){.editor-workspace{grid-template-columns:1fr}.connection-panel{position:static}}
.vision-panel{margin-top:22px;padding-top:17px;border-top:1px solid #e4e9f0}.vision-button{width:100%;border-color:#cbd6e5;color:#225eae;background:#fff}.vision-button:disabled{opacity:.65;cursor:wait}.visual-analysis-result{display:grid;gap:5px;margin-top:10px;color:#607187;font-size:11px;line-height:1.35}.visual-analysis-result strong{color:#32465f;font-size:12px}.analysis-colors{display:flex;gap:5px;margin-top:2px}.analysis-colors i{width:17px;height:17px;border:1px solid #d6dce5;border-radius:50%}








.published-connection{cursor:pointer}.published-connection-halo{stroke:#fff;stroke-width:11;stroke-linecap:round;opacity:.98;vector-effect:non-scaling-stroke}.published-connection-line{stroke:#075fc9;stroke-width:4.5;stroke-linecap:round;opacity:1;vector-effect:non-scaling-stroke}.published-connection-head{fill:#075fc9;stroke:#fff;stroke-width:2;stroke-linejoin:round;vector-effect:non-scaling-stroke}.published-connection-source-halo{fill:#fff}.published-connection-source{fill:#075fc9}.published-connection-label rect{fill:#075fc9;stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke}.published-connection-label text{fill:#fff;font:700 11px/1 Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:0}.published-map .published-connection-label{display:none}.published-connection:hover .published-connection-line{stroke:#063f94;stroke-width:6}.published-connection:hover .published-connection-head,.published-connection:hover .published-connection-source{fill:#063f94}.map-modal-canvas .published-connection-label{display:block}.map-modal-canvas .published-connection-line{stroke-width:4}.map-modal-canvas .published-connection-halo{stroke-width:10}.map-modal-canvas .published-connection-label text{font-size:12px}


/* Información inmobiliaria compacta: la panorámica mantiene el protagonismo. */
.property-card{margin-top:18px;max-width:310px;padding:9px 11px;border:1px solid #ffffff35;border-radius:10px;background:#07132278;backdrop-filter:blur(5px)}.property-card .eyebrow{margin:0 0 4px;font-size:8px;letter-spacing:.1em}.property-card h1{font-size:17px;line-height:1.18;letter-spacing:-.02em}.property-card h1 br{display:none}.property-card .price{margin:5px 0 0;font-size:13px}.property-card .price span{font-size:10px}.scene-label{padding:5px 8px;border-radius:6px;background:#07132272;font-size:10px;backdrop-filter:blur(4px)}