:root{color-scheme:dark;--bg:#0a1222;--panel:#101e33;--panel2:#192c46;--line:#293d58;--muted:#a8b8cf;--text:#edf5ff;--accent:#57d7d0;--red:#f78d9a;font-family:'Segoe UI',Arial,sans-serif;font-size:13px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,textarea,select{font:inherit}button{color:inherit;cursor:pointer;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:9px 12px;transition:background .15s,border-color .15s}button:hover{background:#243e5f;border-color:#4e6c8d}button:disabled{opacity:.35;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,select,textarea{background:#0b1729;border:1px solid var(--line);border-radius:8px;color:var(--text);padding:10px;width:100%;min-width:0}textarea{resize:vertical;min-height:80px}input[type=color]{padding:3px;height:38px}input[type=checkbox]{width:17px;accent-color:var(--accent)}input[type=range]{padding:0;accent-color:var(--accent)}label{display:grid;gap:7px;color:var(--muted);font-size:12px;margin-bottom:16px}h1,h2,h3,p{margin-top:0}h1{font-size:34px;letter-spacing:-1.2px;font-weight:500}h2{font-size:23px;font-weight:500;letter-spacing:-.6px}h3{font-size:14px;font-weight:600}p{line-height:1.65;color:var(--muted)}small{font-size:11px;color:var(--muted)}a{color:var(--accent)}.primary{background:var(--accent);color:#08252a;border-color:var(--accent);font-weight:600}.primary:hover{background:#8ce9e1;border-color:#8ce9e1}.ghost{background:transparent;border-color:transparent}.danger{color:var(--red)}.row{display:flex;align-items:center;gap:9px}.between{justify-content:space-between}.stack{display:grid;gap:12px}.muted{color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:1.8px;color:var(--muted);text-transform:uppercase}.brand{display:flex;align-items:center;gap:11px;white-space:nowrap;letter-spacing:4px;font-size:12px;font-weight:500}.brand-mark{font-size:28px;letter-spacing:-8px;padding-right:10px;color:var(--accent);line-height:1}.local-tag{letter-spacing:1px;font-size:9px;border:1px solid #355571;border-radius:4px;padding:3px 5px;color:var(--muted)}.topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid var(--accent);background:#0d192c;gap:24px}.mainnav{display:flex;gap:4px}.mainnav button{background:none;border:0;border-radius:10px;padding:12px 16px;color:var(--muted);font-size:14px}.mainnav .active{background:var(--accent);color:#092b35}.saved{color:var(--muted);font-size:11px;white-space:nowrap}.saved:before{content:'●';font-size:9px;color:var(--accent);margin-right:6px}.subbar{height:49px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 21px;background:var(--panel);gap:12px}.tabs{display:flex;gap:20px;height:100%;align-items:stretch}.tabs button{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;padding:0;color:var(--muted);white-space:nowrap}.tabs button.active{color:var(--text);border-color:var(--accent)}.subbar select{width:160px;padding:6px 10px;border-radius:20px}.workspace{display:grid;grid-template-columns:128px 235px minmax(200px,1fr) 274px;height:calc(100dvh - 117px)}.scene-rail{background:#0c192c;border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.scene-rail header{padding:17px 12px 10px}.scene-list{padding:0 10px;overflow:auto;flex:1}.scene-card{width:100%;padding:4px;margin-bottom:12px;background:none;text-align:left;border:1px solid transparent;border-radius:9px;display:block}.scene-card.active{border-color:var(--accent)}.scene-card img{width:100%;height:64px;object-fit:cover;border-radius:6px;background:var(--panel2)}.scene-card span{display:block;font-size:11px;margin:5px 2px 1px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rail-bottom{padding:12px 9px;border-top:1px solid var(--line)}.rail-bottom button{width:100%;font-size:11px;padding:8px 3px}.rail-bottom p{font-size:10px;margin:10px 2px 0;line-height:1.5}.layers-panel,.properties{background:var(--panel);display:flex;flex-direction:column;overflow:auto}.layers-panel{border-right:1px solid var(--line)}.panel-title{padding:17px 16px;border-bottom:1px solid var(--line);margin:0;font-size:12px;font-weight:600}.tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:12px}.tools-grid button{font-size:11px;background:transparent}.layer-list{padding:5px 10px;flex:1}.layer-row{display:flex;align-items:center;gap:7px;border:1px solid transparent;padding:10px 7px;border-radius:7px;cursor:pointer;margin-bottom:3px}.layer-row:hover{background:var(--panel2)}.layer-row.active{background:#183e50;border-color:#378d9c}.layer-row span:nth-child(2){flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.layer-row button{padding:0 4px;background:none;border:0}.panel-footer{padding:14px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}.canvas-area{position:relative;background:#14273c;overflow:hidden;min-width:0}.pano{position:absolute;inset:0;touch-action:none}.canvas-overlay{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:hidden}.canvas-overlay svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.canvas-overlay polygon{pointer-events:all;cursor:pointer;stroke-width:2;vector-effect:non-scaling-stroke}.layer-anchor{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;user-select:none;touch-action:none;cursor:grab}.layer-anchor.selected{outline:1px dashed var(--accent);outline-offset:7px}.layer-anchor.hotspot{width:42px;height:42px;background:#092638b8;border:2px solid white;border-radius:50%;display:grid;place-items:center;color:white;font-size:22px;box-shadow:0 3px 15px #0005}.layer-anchor.text{font-weight:600;text-shadow:0 2px 6px #000a;white-space:pre-wrap;max-width:320px;text-align:center}.layer-anchor.image img{max-width:180px;max-height:130px;border-radius:8px}.lot-label{position:absolute;transform:translate(-50%,-50%);color:white;text-shadow:0 2px 4px #000b;font-weight:600;pointer-events:none}.vertex{position:absolute;width:12px;height:12px;background:var(--accent);border:2px solid #133544;border-radius:50%;transform:translate(-50%,-50%);pointer-events:auto;cursor:move;touch-action:none}.view-controls{position:absolute;right:16px;top:14px;display:flex;gap:6px;z-index:5}.view-controls button{width:34px;height:34px;padding:0;border-radius:50%;font-size:18px;background:#0a2038d9;backdrop-filter:blur(8px)}.view-caption{position:absolute;bottom:17px;left:18px;z-index:4;background:#0a2038e0;backdrop-filter:blur(8px);padding:9px 14px;border-radius:25px;pointer-events:none;font-size:11px;display:flex;align-items:center;gap:10px}.live-dot{height:6px;width:6px;background:var(--accent);border-radius:50%;display:inline-block}.canvas-instruction{position:absolute;top:16px;left:50%;transform:translateX(-50%);background:var(--accent);color:#08252a;padding:10px 18px;border-radius:10px;font-size:12px;z-index:6;white-space:nowrap}.properties{border-left:1px solid var(--line)}.property-body{padding:20px 17px}.property-body .row label{flex:1}.property-body .divider{height:1px;background:var(--line);margin:20px 0}.empty-props{padding:28px 23px}.empty-props .icon{font-size:26px;margin-bottom:17px;color:#6689af}.hint{font-size:11px;color:var(--muted);line-height:1.65}.pill{background:#14394b;color:#8be5e0;border:1px solid #2d6578;border-radius:20px;padding:5px 9px;font-size:10px;display:inline-flex;align-items:center;gap:5px}.page{max-width:1200px;margin:0 auto;padding:52px 40px}.page-title{margin-bottom:30px;display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.page-title p{margin:8px 0 0}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:22px}.project-card{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--panel);transition:transform .2s}.project-card:hover{transform:translateY(-3px)}.project-card .cover{height:174px;position:relative;background:linear-gradient(120deg,#1c5376,#0d1c35)}.project-card .cover img{width:100%;height:100%;object-fit:cover}.project-card .cover .pill{position:absolute;bottom:12px;left:13px;background:#0b243cde}.project-card .body{padding:20px}.project-card h3{font-size:18px;font-weight:500;margin-bottom:6px}.project-card footer{margin-top:22px;display:flex;justify-content:space-between;align-items:center}.new-card{border:1px dashed #355675;border-radius:16px;min-height:322px;background:transparent;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;color:var(--muted)}.new-card b{font-size:34px;color:var(--accent);font-weight:300}.welcome{border:1px solid #2d526c;border-radius:15px;padding:24px 28px;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(110deg,#153653,#11243c);margin-bottom:30px;gap:25px}.welcome h2{margin-bottom:8px}.welcome p{margin:0;font-size:12px;max-width:640px}.form-page{display:grid;grid-template-columns:1fr 1fr;gap:32px}.box{padding:25px;background:var(--panel);border:1px solid var(--line);border-radius:14px}.box .eyebrow{margin-bottom:22px}.preview-swatch{height:230px;border-radius:12px;background:linear-gradient(130deg,#286580,#19395c);display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:20px}.preview-swatch img{max-width:130px;max-height:65px;margin-bottom:15px}.preview-swatch h2{color:white}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:15px}.media-item{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px}.media-item img{width:100%;height:100px;object-fit:cover;border-radius:8px}.media-item p{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:8px 0 0}.center-page{position:absolute;inset:0;overflow:auto;padding:30px;background:var(--bg)}.center-page h2{font-size:22px}.pano-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:16px}.pano-tile{padding:8px;text-align:left}.pano-tile img{width:100%;height:115px;object-fit:cover;border-radius:6px}.pano-tile span{display:block;padding:10px 3px 2px}.map-stage{position:absolute;inset:0;background-color:#0d1e34;background-image:radial-gradient(#2b4563 1px,transparent 1px);background-size:24px 24px}.map-stage svg{width:100%;height:100%;position:absolute}.map-node{position:absolute;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:8px;touch-action:none;cursor:grab}.map-node img{width:90px;height:90px;object-fit:cover;border-radius:50%;border:4px solid var(--accent);box-shadow:0 0 0 12px #57d7d019}.map-node span{background:#0c233de3;padding:5px 10px;border-radius:8px;white-space:nowrap}.map-node small{color:#aec5df}.lot-table{width:100%;border-collapse:collapse;font-size:11px}.lot-table th,.lot-table td{text-align:left;border-bottom:1px solid var(--line);padding:10px}.lot-table th{color:var(--muted);font-weight:400}.lot-table select{padding:6px}.lot-table input{max-width:110px;padding:6px}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin:25px 0}.stat{background:var(--panel2);border-radius:10px;padding:17px}.stat b{display:block;font-size:25px;font-weight:400;margin-bottom:5px}.progress{display:flex;height:9px;border-radius:8px;overflow:hidden;margin:15px 0}.legend{display:flex;gap:16px;font-size:11px;color:var(--muted);flex-wrap:wrap}.legend i{width:8px;height:8px;display:inline-block;border-radius:50%;margin-right:5px}dialog{border:1px solid #385875;border-radius:17px;color:var(--text);background:#14263d;padding:28px;max-width:560px;width:calc(100% - 40px);box-shadow:0 35px 100px #0009}dialog::backdrop{background:#000a;backdrop-filter:blur(5px)}dialog h2{font-size:23px}dialog footer{display:flex;justify-content:flex-end;gap:9px;margin-top:25px}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);padding:12px 20px;border:1px solid #3d748c;background:#163b51;box-shadow:0 8px 35px #0006;border-radius:10px;z-index:100;opacity:0;pointer-events:none;transition:.2s;max-width:90%;font-size:12px}#toast.show{opacity:1;transform:translate(-50%,0)}.viewer-mode{position:fixed;inset:0;background:#0b192c;z-index:50}.tour-top{position:absolute;top:24px;left:28px;right:28px;display:flex;align-items:center;justify-content:space-between;z-index:6;pointer-events:none}.tour-brand{color:white;text-shadow:0 2px 10px #0008;font-size:20px}.tour-brand img{max-height:55px;max-width:160px;display:block;margin-bottom:9px}.tour-top button,.tour-top a{pointer-events:auto}.tour-bottom{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);z-index:7;display:flex;gap:9px;background:#0b243ce6;padding:10px;border:1px solid #ffffff24;backdrop-filter:blur(12px);border-radius:15px;max-width:90vw;overflow:auto;align-items:center}.tour-thumb{padding:3px;width:82px;flex-shrink:0;background:transparent}.tour-thumb img{width:72px;height:43px;object-fit:cover;border-radius:5px}.tour-thumb.active{border-color:var(--accent)}.tour-thumb span{font-size:9px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-top:3px}.tour-controls{position:absolute;bottom:28px;right:25px;z-index:8;display:flex;gap:7px}.contact-btn{text-decoration:none;background:var(--accent);color:#08252a;padding:11px 18px;border-radius:24px;font-size:12px;pointer-events:auto}.tour-info{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:20;width:360px;max-width:90vw;padding:25px;background:#102941f5;border:1px solid #ffffff25;border-radius:15px;box-shadow:0 15px 60px #0008}.tour-info img,.tour-info video{width:100%;border-radius:8px;max-height:300px;object-fit:contain}.tour-info h2{font-size:22px}.tour-info .close{float:right}.kbd{font-size:10px;padding:2px 5px;border:1px solid var(--line);border-radius:4px}.mobile-tip{display:none}.error-banner{background:#452838;color:#ffcad4;padding:12px;border-radius:10px;margin-bottom:15px}.drawing-point{position:absolute;height:10px;width:10px;background:var(--accent);border:2px solid #0a3240;border-radius:50%;transform:translate(-50%,-50%)}
@media(min-width:1600px){.workspace{grid-template-columns:140px 252px minmax(200px,1fr) 290px}}
@media(max-width:1150px){.topbar{padding:0 14px;gap:10px}.mainnav button{padding:11px 9px;font-size:12px}.workspace{grid-template-columns:105px 190px minmax(180px,1fr) 230px}.tabs{gap:12px;font-size:11px}.brand{letter-spacing:2px}.saved{display:none}.tools-grid{padding:9px;gap:4px}.tools-grid button{padding:8px 3px}.property-body{padding:16px 12px}}
@media(max-width:850px){.workspace{grid-template-columns:90px minmax(160px,1fr) 235px}.layers-panel{display:none}.subbar>.row:first-child{display:none}.subbar{padding:0 12px}.topbar .brand .local-tag{display:none}.mainnav{gap:0}.mainnav button{padding:11px 7px;font-size:11px}.page{padding:35px 20px}.form-page{grid-template-columns:1fr}.welcome{align-items:flex-start;flex-direction:column}.tour-controls{bottom:115px}.properties .tools-grid{display:grid}.page-title{align-items:flex-start}.topbar .preview-label{display:none}}
@media(min-width:851px){.properties .tools-grid{display:none}}
@media(max-width:600px){.topbar{height:auto;min-height:64px;flex-wrap:wrap;padding:12px;gap:10px}.topbar .brand{font-size:10px}.mainnav{order:3;width:100%;overflow:auto;justify-content:center}.mainnav button{font-size:11px;flex:1}.subbar{height:45px;overflow:auto}.subbar select{display:none}.tabs{gap:18px}.workspace{height:calc(100dvh - 151px);grid-template-columns:68px minmax(130px,1fr)}.properties{position:absolute;right:10px;top:164px;width:220px;max-height:55vh;border:1px solid var(--line);border-radius:12px;z-index:10;box-shadow:0 15px 40px #0008;display:none}.properties.mobile-open{display:flex}.scene-card img{height:40px}.scene-card span{font-size:9px}.scene-rail header{font-size:10px;padding:14px 6px}.scene-list{padding:0 4px}.rail-bottom{padding:8px 3px}.rail-bottom p{display:none}.rail-bottom button{font-size:9px}.view-controls{right:8px;gap:4px;top:10px}.view-controls button{width:29px;height:29px}.view-caption{font-size:9px;padding:7px 10px;left:10px;bottom:11px}.view-caption .muted{display:none}.mobile-tip{display:block}.page-title{flex-direction:column;gap:18px}.page-title h1{font-size:28px}.project-grid{grid-template-columns:1fr}.tour-top{top:16px;left:16px;right:16px}.tour-brand{font-size:16px}.stat-grid{gap:6px}.stat{padding:12px}.stat b{font-size:20px}.canvas-instruction{font-size:10px;white-space:normal;max-width:80%;text-align:center}.center-page{padding:20px}.map-node img{height:60px;width:60px}.map-node span{font-size:10px}.tour-bottom{bottom:15px}.contact-btn{padding:9px 12px;font-size:10px}}

@media(any-hover:hover){.canvas-overlay .tour-surface:hover{fill-opacity:min(1,calc(var(--surface-opacity,.3) + .22));stroke-width:3.5}}
@media(any-hover:hover) and (prefers-reduced-motion:no-preference){.canvas-overlay .tour-surface{transition:fill-opacity .14s ease,stroke-width .14s ease}}

/* Project 360 · Soft warm-gray light surfaces. Dark mode overrides these semantic colors. */
:root{color-scheme:light;--bg:#d5d3cc;--panel:#e3e1da;--panel2:#d9d7d0;--field:#d6d4cd;--line:#bfc0b8;--line-strong:#929b93;--text:#27332f;--text-secondary:#3c4841;--muted:#4d5b53;--subtle:#505e56;--accent:#35665e;--action:#35665e;--action-hover:#29564f;--action-ink:#f0efe9;--action-text:#f0efe9;--accent-rgb:53,102,94;--accent-soft:#c7d5cd;--accent-border:#8ba89b;--hover:#cecec5;--map-bg:#d0d4cd;--grid:#b2bcb1;--topbar:#e3e1daed;--floating:#e3e1daf5;--red:#ab3434;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:14px}
body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
button{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:10px;font-weight:500;box-shadow:none;transition:background .16s,border-color .16s,box-shadow .16s}
button:hover{background:var(--hover);border-color:var(--line-strong)}button:disabled{opacity:.4}
.primary{background:var(--action);border-color:var(--action);color:var(--panel);font-weight:600;box-shadow:0 3px 9px rgba(var(--accent-rgb),0.071)}.primary:hover{background:var(--action-hover);border-color:var(--action-hover);color:var(--panel)}
.ghost{background:transparent;border-color:transparent}.ghost:hover{background:var(--hover);border-color:transparent}.danger{color:var(--red)}
input,select,textarea{color:var(--text);background:var(--field);border-color:var(--line);border-radius:9px;box-shadow:none}input:hover,select:hover,textarea:hover{border-color:var(--line-strong)}input:focus,select:focus,textarea:focus{background:var(--panel)}
input[type=range],input[type=checkbox]{accent-color:var(--action)}input[type=color]{background:var(--panel);border-color:var(--line)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--action);outline-offset:3px}
label,small,p,.muted{color:var(--muted)}a{color:var(--action)}h1,h2,h3{color:var(--text)}h1,h2{font-weight:550;letter-spacing:-1px}
.topbar{height:76px;background:var(--topbar);border-bottom:1px solid var(--line);padding:0 26px;gap:20px;box-shadow:none;backdrop-filter:blur(20px)}
.brand{gap:10px;letter-spacing:0;min-width:142px}.brand-mark{width:43px;height:43px;display:block;padding:0}.brand-word{font-size:27px;letter-spacing:-1.5px;font-weight:650;line-height:1;color:var(--text)}.brand-word small{display:block;font-size:8px;letter-spacing:2.3px;margin:7px 0 0 2px;color:var(--subtle);font-weight:500}
.mainnav{display:flex;gap:5px;background:var(--bg);border:1px solid var(--line);border-radius:13px;padding:4px}.mainnav button{padding:10px 13px;font-size:12px;color:var(--muted);border:0;border-radius:9px;white-space:nowrap;background:transparent}.mainnav button.active{background:var(--panel);color:var(--action);box-shadow:0 1px 5px #1d1d1f12;font-weight:600}.mainnav button:hover:not(.active){background:var(--hover);color:var(--text)}
.topbar>.row{gap:7px}.saved{padding:6px 8px;font-size:10px;max-width:190px;text-align:left;color:var(--subtle);white-space:normal;line-height:1.5}.saved:before{color:var(--action);font-size:7px}.saved[data-state=error]{color:#ad2727;border-color:#efcbcb;background:#fff5f5}.saved[data-state=error]:before{color:#c93434}.saved[data-state=pending]:before,.saved[data-state=saving]:before{color:var(--subtle)}.saved[data-state=saving]:before{animation:save-pulse 1s infinite alternate}@keyframes save-pulse{to{opacity:.3}}
.help-button{height:31px;width:31px;border:1px solid var(--line);border-radius:50%;padding:0;color:var(--muted);background:var(--panel)}
.subbar{height:54px;background:var(--panel2);border-bottom:1px solid var(--line);padding:0 20px;box-shadow:none}.subbar small{font-size:11px}.subbar select{background:var(--panel);border-color:var(--line);color:var(--text)}.tabs{gap:19px;font-size:12px}.tabs button{color:var(--muted);border-bottom-width:2px}.tabs button.active{color:var(--action);border-color:var(--action);font-weight:600}
.workspace{height:calc(100dvh - 130px);grid-template-columns:128px 220px minmax(200px,1fr) 286px}
.scene-rail{background:var(--bg);border-color:var(--line)}.scene-rail header{padding:18px 13px 14px;font-size:12px;color:var(--text)}.scene-card{padding:5px;margin-bottom:14px;border-radius:12px;background:transparent}.scene-card:hover{background:var(--hover);border-color:transparent}.scene-card.active{background:var(--accent-soft);border-color:rgba(var(--accent-rgb),0.502);box-shadow:none}.scene-card img{height:65px;border-radius:7px}.scene-card span{font-size:11px;margin-top:8px;line-height:1.4;color:var(--text-secondary)}.scene-card.active span{color:var(--action)}.rail-bottom p{color:var(--subtle)}.rail-bottom{border-color:var(--line)}
.layers-panel,.properties{background:var(--panel);border-color:var(--line)}.panel-title{font-size:12px;letter-spacing:.1px;padding:19px 15px;background:var(--panel);border-color:var(--line);color:var(--text)}
.tools-grid{gap:7px;padding:14px 11px}.tools-grid button{background:var(--panel);font-size:11px;padding:10px 5px;border-color:var(--line);color:var(--text-secondary)}.tools-grid button:hover{background:var(--hover);border-color:rgba(var(--accent-rgb),0.4);color:var(--action)}
.layer-list{padding:5px 9px}.layer-row{padding:11px 8px;border-radius:9px}.layer-row:hover{background:var(--bg)}.layer-row.active{border-color:var(--accent-border);background:var(--accent-soft)}.layer-row:focus-visible{outline:2px solid var(--action)}.layer-row span:nth-child(2){font-size:11px;color:var(--text-secondary)}.layer-row.active span:nth-child(2),.layer-row.active>span:first-child{color:var(--action)}.layer-row button{color:var(--subtle)}
.panel-footer{padding:10px;background:var(--panel2);border-color:var(--line)}.panel-footer .row{gap:3px}.panel-footer small{font-size:10px;color:var(--subtle)}.panel-footer button{padding:8px 10px;color:var(--muted)}
.empty-props{padding:12px 4px 22px}.empty-props .icon{color:var(--subtle);margin-bottom:13px;font-size:33px}.empty-props h3{font-size:15px;font-weight:500}.empty-props p{font-size:12px}.property-body{padding:20px}.property-body label{font-size:11px;gap:8px;margin-bottom:17px;color:var(--muted)}.property-body input,.property-body select,.property-body textarea{background:var(--field);border-color:var(--line);color:var(--text)}.property-body input:focus,.property-body textarea:focus{background:var(--panel)}.property-body button{font-size:12px}.property-body .divider{background:var(--line)}.hint{font-size:12px;line-height:1.7;color:var(--muted)}.layer-picker-label{display:none;margin:13px 15px 0;font-size:11px}
.canvas-area{background:var(--map-bg)}.view-controls button{width:35px;height:35px;background:var(--floating);border-color:#ffffff90;color:var(--text);box-shadow:0 2px 10px #1d1d1f14;backdrop-filter:blur(16px)}.view-controls button:hover{background:var(--panel);color:var(--action)}
.view-caption{border:1px solid #ffffff26;background:var(--floating);color:var(--panel);border-radius:10px;font-size:11px;box-shadow:0 4px 15px #0001;backdrop-filter:blur(16px)}.view-caption .muted{color:var(--muted)}.live-dot{background:var(--action)}
.canvas-instruction{border:1px solid #ffffffb3;box-shadow:0 4px 20px #1d1d1f1c;background:var(--floating);color:var(--text);backdrop-filter:blur(18px);pointer-events:auto;max-width:80%;white-space:normal;line-height:1.5;text-align:center}.vertex{background:var(--action);border-color:var(--panel);box-shadow:0 0 0 2px rgba(var(--accent-rgb),0.267)}.drawing-point{border-color:var(--panel);background:var(--action)}.layer-anchor.selected{outline-color:var(--action)}
.page{max-width:1220px;padding:48px 38px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--subtle)}.page-title{margin-bottom:32px}.page-title h1{font-size:39px;font-weight:550;letter-spacing:-1.8px}.page-title p{font-size:13px}.page-title .eyebrow{color:var(--subtle)}
.welcome{position:relative;overflow:hidden;border-radius:20px;padding:32px;border:1px solid var(--line);background:var(--panel);gap:28px;min-height:160px;box-shadow:0 4px 20px #1d1d1f03}.welcome:after{content:'';position:absolute;width:200px;height:200px;border:1px solid rgba(var(--accent-rgb),0.071);border-radius:50%;right:180px;top:-100px;box-shadow:0 0 0 25px rgba(var(--accent-rgb),0.016),0 0 0 50px rgba(var(--accent-rgb),0.012);pointer-events:none}.welcome h2{color:var(--text);font-size:27px;letter-spacing:-.9px;font-weight:550}.welcome p{color:var(--muted);font-size:13px;max-width:660px}.welcome button{background:var(--bg);color:var(--text);border-color:var(--line);white-space:nowrap;z-index:1}.welcome button:hover{background:var(--accent-soft);color:var(--action);border-color:var(--accent-border)}
.project-search{display:flex;gap:15px;align-items:center;margin:28px 0}.project-search label{margin:0;font-size:12px;white-space:nowrap}.project-search input{max-width:320px;background:var(--panel);padding:11px 14px}.project-search small{margin-left:auto;color:var(--subtle)}
.project-card{border-radius:20px;background:var(--panel);border-color:var(--line);box-shadow:0 4px 20px #1d1d1f04;overflow:hidden}.project-card:hover{border-color:var(--line-strong);transform:translateY(-3px);box-shadow:0 10px 28px #1d1d1f0a}.project-card .cover{height:183px;background:var(--panel2)}.project-card .cover img{opacity:1}.project-card .cover .pill{background:var(--floating);border-color:#ffffff80;color:var(--text);padding:7px 11px;font-size:10px;backdrop-filter:blur(14px)}.project-card .body{padding:22px}.project-card h3{font-size:18px;line-height:1.35;color:var(--text);font-weight:550}.project-card footer{margin-top:23px}.project-card footer .ghost{color:var(--subtle);font-size:17px}.project-card footer .ghost:hover{color:var(--text)}
.new-card{border-radius:20px;min-height:330px;background:var(--panel2);border-color:var(--line-strong)}.new-card:hover{background:var(--panel);border-color:rgba(var(--accent-rgb),0.4);box-shadow:0 8px 25px var(--hover)}.new-card b{background:var(--accent-soft);color:var(--action);border-radius:50%;width:55px;height:55px;line-height:50px}.new-card span{color:var(--muted)}.new-card small{color:var(--subtle)}
.box{background:var(--panel);border-color:var(--line);border-radius:18px;box-shadow:0 3px 15px #1d1d1f03}.box h2{line-height:1.25}.box p{color:var(--muted)}.box .eyebrow{color:var(--subtle)}.preview-swatch{background:linear-gradient(135deg,var(--panel2),var(--bg));box-shadow:none;border-color:var(--line)!important}.preview-swatch h2{color:var(--text)}
.map-stage{background-color:var(--bg);background-image:radial-gradient(var(--line-strong) 1px,transparent 1px)}.map-node img{box-shadow:0 0 0 10px rgba(var(--accent-rgb),0.031),0 6px 20px #1d1d1f0a;border-color:var(--action)}.map-node span{background:var(--floating);color:var(--text);border:1px solid var(--line);border-radius:9px;box-shadow:0 2px 8px #1d1d1f08}.map-node small{color:var(--muted)}.stat{background:var(--bg)}.lot-table th{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--subtle)}.lot-table td{padding:12px 10px;color:var(--text)}.lot-table tr:hover td{background:var(--bg)}.lot-table th,.lot-table td{border-color:var(--line)}
.pill{background:var(--bg);border-color:var(--line);color:var(--muted)}.property-body .pill{color:var(--action);background:var(--accent-soft);border-color:var(--accent-border)}.layer-anchor.hotspot{background:#1d1d1f99;border-color:#ffffffdf;color:var(--panel);box-shadow:0 0 0 5px #ffffff10,0 5px 15px #0002}.layer-anchor:focus-visible{outline:3px solid var(--action);outline-offset:6px}
.media-item{background:var(--panel);border-color:var(--line)}.pano-tile{background:var(--panel);border-color:var(--line)}.pano-tile:hover{background:var(--hover)}.kbd{border-color:var(--line);background:var(--bg);color:var(--muted)}
dialog{background:var(--floating);border-color:var(--line);padding:30px;border-radius:22px;box-shadow:0 24px 90px #1d1d1f24;color:var(--text)}dialog::backdrop{background:#1d1d1f38;backdrop-filter:blur(8px)}dialog h2{font-size:26px;letter-spacing:-.7px}dialog p{font-size:13px;color:var(--muted)}.shortcut-list{margin:25px 0}.shortcut-list p{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 0;margin:0}.shortcut-list kbd{padding:3px 8px;background:var(--bg);border:1px solid var(--line);border-radius:6px;font-size:11px;color:var(--text)}.shortcut-list span{font-size:12px;color:var(--muted)}
#toast{background:var(--floating);border-color:var(--line);color:var(--text);padding:13px 21px;font-size:12px;border-radius:12px;box-shadow:0 8px 30px #1d1d1f14;backdrop-filter:blur(16px)}.error-banner{background:#fff2f2;border:1px solid #f1cccc;color:#ad2727}
.viewer-mode{background:var(--text)}.tour-brand{color:var(--panel)}.tour-brand div{color:var(--panel)}.tour-bottom{background:var(--floating);border-color:#ffffff80;border-radius:16px;box-shadow:0 6px 25px #1d1d1f20}.tour-thumb{background:transparent;color:var(--text);border-color:transparent}.tour-thumb:hover{background:var(--hover)}.tour-thumb.active{background:var(--accent-soft);border-color:var(--accent)}.tour-controls button{background:var(--floating);border-color:#ffffff80;color:var(--text);min-width:38px;box-shadow:0 3px 12px #1d1d1f16}.tour-controls button:hover{background:var(--panel);color:var(--action)}.tour-info{background:var(--floating);border-color:var(--line);box-shadow:0 15px 60px #1d1d1f26;color:var(--text)}.tour-info h2{color:var(--text)}.tour-info p{color:var(--muted)}.contact-btn{background:var(--accent);color:var(--panel)}
@media(min-width:1600px){.workspace{grid-template-columns:140px 235px minmax(200px,1fr) 300px}}
@media(max-width:1190px){.topbar{padding:0 15px;gap:12px}.mainnav button{padding:10px 9px;font-size:11px}.saved{display:none}.workspace{grid-template-columns:112px 190px minmax(200px,1fr) 250px}.tabs{gap:12px;font-size:11px}.brand{min-width:123px}.brand-word{font-size:25px}.brand-mark{width:37px;height:37px}.hint{font-size:11px}.property-body{padding:17px 14px}.panel-footer small{font-size:9px}.scene-card img{height:58px}}
@media(max-width:900px){.workspace{grid-template-columns:90px minmax(180px,1fr) 250px}.layers-panel{display:none}.layer-picker-label{display:grid}.properties .tools-grid{display:grid}.mainnav{gap:1px}.mainnav button{padding:9px 7px;font-size:10px}.brand{min-width:111px}.brand-word{font-size:23px}.help-button{display:none}.topbar .preview-label{display:none}.page{padding:30px 22px}.welcome{padding:25px;min-height:175px}.welcome:after{right:35px}.form-page{grid-template-columns:1fr}.tabs{gap:13px}.subbar>.row:first-child{display:none}.subbar{padding:0 14px}.subbar select{width:135px}}
@media(min-width:901px){.layer-picker-label{display:none}}
@media(max-width:600px){.topbar{height:112px;min-height:112px;padding:11px 14px;gap:9px;align-content:center}.brand{min-width:0}.brand-word{font-size:24px}.brand-word small{font-size:7px;letter-spacing:2px}.brand-mark{width:36px;height:36px}.topbar>.row{margin-left:auto}.mainnav{width:100%;border-radius:9px;padding:3px;justify-content:stretch;overflow:auto}.mainnav button{font-size:10px;padding:8px 7px;flex:1}.subbar{height:49px;padding:0 11px;overflow-x:auto;justify-content:flex-start}.tabs{gap:20px;flex-shrink:0;font-size:11px}.workspace{height:calc(100dvh - 161px);grid-template-columns:74px minmax(0,1fr)}.scene-rail header{font-size:10px;padding:13px 7px}.scene-card{padding:4px;margin-bottom:11px;border-radius:9px}.scene-card img{height:42px}.scene-card span{font-size:9px;margin-top:5px}.scene-list{padding:0 4px}.properties{top:171px;right:10px;width:min(285px,calc(100vw - 93px));max-height:calc(100dvh - 190px);border-color:var(--line-strong);background:var(--panel);box-shadow:0 20px 60px #1d1d1f26;z-index:10}.panel-title{padding:14px}.property-body{padding:15px}.properties .tools-grid{padding:12px}.empty-props{padding:8px 0 12px}.view-controls{right:9px;top:11px}.view-controls button{width:31px;height:31px}.view-caption{max-width:calc(100% - 20px);font-size:9px;padding:7px 9px}.rail-bottom button{font-size:9px;padding:9px 3px;border-radius:8px}.project-search{gap:9px;flex-wrap:wrap}.project-search label{width:100%;font-size:11px}.project-search input{flex:1;min-width:100px}.project-search small{font-size:10px}.page-title h1{font-size:31px}.page{padding:29px 18px}.welcome{align-items:flex-start;gap:20px;padding:24px}.welcome h2{font-size:24px}.welcome p{font-size:12px}.project-grid{grid-template-columns:1fr}.tour-top{gap:15px}.tour-brand{font-size:16px}.tour-controls{bottom:114px;right:16px}.tour-controls button{min-width:32px;padding:8px}.tour-bottom{bottom:15px}.tour-info{padding:20px}.layer-picker-label{display:grid}.saved[data-state=error]{display:block;max-width:110px;font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Product wordmark */
.brand-word{font-size:25px;letter-spacing:-.8px}.brand-word small{font-size:8px;letter-spacing:.7px;font-weight:400;margin-top:7px}.brand{min-width:178px}
@media(max-width:1190px){.brand{min-width:155px}.brand-word{font-size:23px}.brand-word small{font-size:7px;letter-spacing:.6px}}
@media(max-width:900px){.brand{min-width:145px}.brand-word{font-size:22px}}
@media(max-width:600px){.brand{min-width:0}.brand-word{font-size:23px}.brand-word small{font-size:7px;letter-spacing:.5px}}

/* Project 360 wordmark */
.project360-brand{min-width:0;flex-shrink:0}
.brand-logo-image{display:block;width:210px;height:auto;filter:invert(1)}

/* Role-specific contrast, including overlays above photographs. */
.primary{background:var(--action);border-color:var(--action);color:var(--action-ink)}.primary:hover{background:var(--action-hover);border-color:var(--action-hover);color:var(--action-ink)}
.mainnav button.active{background:var(--accent-soft);color:var(--action);box-shadow:none}
.map-stage{background-color:var(--map-bg);background-image:radial-gradient(var(--grid) 1px,transparent 1px)}
.map-stage svg line{stroke:var(--action)}.map-node img{border-color:var(--action)}
.map-node span{background:var(--floating);color:var(--text);border-color:var(--line)}
.view-caption{color:var(--text);background:var(--floating);border-color:var(--line)}
.view-caption .muted{color:var(--muted)}
.tour-brand,.tour-brand div{color:#ffffff}.layer-anchor.hotspot{color:#ffffff;border-color:#ffffffdf}
.contact-btn{background:var(--accent);color:#ffffff}.tour-info{color:var(--text)}
input[type=color]{background:var(--panel)}

/* Project 360 · Charcoal and silver dark palette supplied by the user. */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:33px;padding:0 10px;border-radius:9px;background:transparent;border-color:var(--line);white-space:nowrap}
.theme-toggle>span:first-child{font-size:18px;line-height:1}.theme-label{font-size:10px;font-weight:500}
:root[data-theme=dark]{color-scheme:dark;--bg:#212429;--panel:#2b3036;--panel2:#30363d;--field:#353a40;--line:#41484f;--line-strong:#6c757e;--text:#e8ecef;--text-secondary:#cfd4da;--muted:#b8c0c8;--subtle:#a7b0b9;--accent:#cfd4da;--action:#e8ecef;--action-hover:#ffffff;--action-ink:#212429;--action-text:#212429;--accent-rgb:207,212,218;--accent-soft:#3d444c;--accent-border:#6c757e;--hover:#3a4149;--map-bg:#24292e;--grid:#3b4249;--topbar:#2b3036ed;--floating:#2b3036f5;--red:#f1a2a8}
[data-theme=dark] .mainnav button.active{background:var(--action);color:var(--action-ink)}
[data-theme=dark] .mainnav button:hover:not(.active){background:var(--hover);color:var(--text)}
[data-theme=dark] .help-button,[data-theme=dark] .theme-toggle{background:transparent;color:var(--text);border-color:var(--line-strong)}
[data-theme=dark] .saved[data-state=error]{color:#ffc3c8;background:#3c2429;border-color:#81434d}
[data-theme=dark] .error-banner{background:#3c2429;border-color:#81434d;color:#ffc3c8}
[data-theme=dark] .primary,[data-theme=dark] .primary:hover{color:var(--action-ink)}
[data-theme=dark] .view-controls button{border-color:var(--line-strong)}
[data-theme=dark] .vertex,[data-theme=dark] .drawing-point{border-color:var(--panel)}
[data-theme=dark] .canvas-instruction{border-color:var(--line-strong)}
[data-theme=dark] .welcome{background:linear-gradient(115deg,var(--panel2),var(--panel));border-color:var(--line)}
[data-theme=dark] .welcome button{background:var(--accent-soft);border-color:var(--accent-border);color:var(--text)}
[data-theme=dark] .project-card .cover .pill{border-color:var(--line-strong)}
[data-theme=dark] .new-card{background:var(--panel)}
[data-theme=dark] .preview-swatch{background:linear-gradient(135deg,var(--panel2),var(--bg));border-color:var(--line)!important}
[data-theme=dark] dialog{border-color:var(--line-strong);box-shadow:0 24px 90px #0005}
[data-theme=dark] dialog::backdrop{background:#060c10ad}
[data-theme=dark] .tour-bottom,[data-theme=dark] .tour-controls button{border-color:var(--line-strong)}
[data-theme=dark] .tour-thumb.active{background:var(--accent-soft);border-color:var(--accent)}
[data-theme=dark] .brand-logo-image{filter:none}

@media(max-width:900px){.theme-label{display:none}.theme-toggle{width:32px;padding:0}}
@media(max-width:600px){[data-theme=dark] .properties{background:var(--panel);border-color:var(--line-strong);box-shadow:0 20px 60px #0005}.theme-toggle{height:32px;width:32px}.theme-toggle>span:first-child{font-size:19px}}

/* Neutral surfaces and interaction highlights throughout the dark workspace. */
[data-theme=dark] .view-controls button{background:#353a40e8;color:#e8ecef;border-color:#6c757e}
[data-theme=dark] .view-controls button:hover{background:#454d56;border-color:#cfd4da}
[data-theme=dark] .view-controls button[aria-pressed=true]{background:#e8ecef;color:#212429;border-color:#e8ecef;box-shadow:0 0 0 3px #cfd4da24}
[data-theme=dark] .view-caption{background:#2b3036ed;border-color:#41484f}
[data-theme=dark] .hotspot-align-guide{background:#e8ecef}
[data-theme=dark] .hotspot-align-guide>span{background:#212429e6;color:#e8ecef}
[data-theme=dark] .hotspot-height-guide{stroke:#cfd4da}
[data-theme=dark] .plan-point.destination{box-shadow:0 0 0 5px #cfd4da55}
[data-theme=dark] .plan-point.active>i{background:conic-gradient(from -30deg,var(--plan-radar-color,#cfd4da80) 0deg 60deg,transparent 60deg)}
[data-theme=dark] .plan-orientation-mode .plan-point.active>i{background:conic-gradient(from calc(var(--radar-fov,60deg) / -2),var(--plan-radar-color,#cfd4da55) 0deg var(--radar-fov,60deg),transparent var(--radar-fov,60deg))}
[data-theme=dark] .hotspot-library-dialog{--library-bg:#212429;--library-panel:#353a40;--library-line:#41484f;--library-text:#e8ecef;--library-muted:#cfd4da}
[data-theme=dark] .hotspot-library-dialog>footer,[data-theme=dark] .hotspot-library-placement{background:#2b3036}
[data-theme=dark] .hotspot-library-body nav button[aria-pressed=true]{background:#353a40;border-color:#6c757e;color:#e8ecef}
[data-theme=dark] .hotspot-library-item[aria-pressed=true]>span:nth-child(2),[data-theme=dark] .hotspot-library-item>small{color:#e8ecef}
[data-theme=dark] .hotspot-library-dialog .primary{background:#e8ecef;color:#212429;border-color:#e8ecef}
[data-theme=dark] .hotspot-library-dialog .primary:hover{background:#fff;border-color:#fff}
[data-theme=dark] .hotspot-library-dialog button:focus-visible{outline-color:#e8ecef}
[data-theme=dark] .tour-plan-radar{background:conic-gradient(from calc(var(--radar-fov,60deg) / -2),var(--plan-radar-color,#cfd4da60) 0deg var(--radar-fov,60deg),transparent var(--radar-fov,60deg))}

.tools-grid [data-tool=gallery]{grid-column:1 / -1}
.advanced-details{border:1px solid var(--line);border-radius:10px;padding:12px;margin:18px 0;background:var(--panel2)}
.advanced-details summary{cursor:pointer;font-size:11px;font-weight:600;color:var(--text)}
.advanced-details[open] summary{margin-bottom:16px}.advanced-details .row{align-items:flex-start}.advanced-details .row label{width:50%;min-width:0}
.ground-status{font-size:11px;color:var(--text);padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);margin:15px 0}
.ground-link-box{margin-top:15px}.ground-link-box .eyebrow{font-size:9px}.ground-link-box p b{font-weight:600;color:var(--text)}
.route-list{margin:18px 0;display:grid;gap:12px}.route-item{border:1px solid var(--line);background:var(--panel2);border-radius:11px;padding:10px}.route-item .row label{margin:10px 0;width:50%;min-width:0;font-size:10px}.route-item .row{gap:6px}.route-item button{padding:7px 8px;font-size:10px}.route-goto{display:flex;width:100%;align-items:center;gap:9px;text-align:left;background:transparent;border-color:transparent}.route-goto b{display:grid;place-content:center;width:25px;height:25px;flex-shrink:0;border:1px solid var(--line);border-radius:50%;color:var(--accent)}.route-goto span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.route-goto small{display:block;font-size:9px;font-weight:400;margin-top:4px;overflow:hidden;text-overflow:ellipsis}
.precision-lens{position:absolute;width:208px;height:208px;z-index:10;pointer-events:none;border:2px solid var(--accent);border-radius:50%;overflow:hidden;box-shadow:0 8px 35px #0005;background:#25313a}
.lens-pano{position:absolute;inset:0;pointer-events:none}.lens-crosshair{position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%);filter:drop-shadow(0 0 2px #000)}.lens-crosshair:before,.lens-crosshair:after{content:'';position:absolute;background:#fff}.lens-crosshair:before{left:0;right:0;top:16px;height:1px}.lens-crosshair:after{top:0;bottom:0;left:16px;width:1px}.lens-scale,.lens-coordinates{position:absolute;left:50%;transform:translateX(-50%);border:1px solid #fff3;border-radius:15px;background:#1d252be6;color:#fff;font-size:9px;padding:4px 8px;white-space:nowrap}.lens-scale{top:14px;font-size:11px;font-weight:600}.lens-coordinates{bottom:13px}
#precision-tool[aria-pressed=true]{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.preparation-progress{position:fixed;right:22px;bottom:23px;width:330px;max-width:calc(100vw - 35px);background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;z-index:35;box-shadow:0 8px 40px #0002}.preparation-progress b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--text)}.preparation-progress small{display:block;font-size:10px;line-height:1.6;margin-top:8px;color:var(--muted)}.preparation-progress progress{display:block;width:100%;height:8px;margin-top:14px;accent-color:var(--accent)}.preparation-progress p{font-size:11px;line-height:1.6;margin:10px 0 0}.preparation-progress button{padding:0 5px}
.gallery-editor-list{display:grid;gap:14px;margin:18px 0}.gallery-editor-list article{background:var(--panel2);border:1px solid var(--line);padding:10px;border-radius:10px}.gallery-editor-list img{width:100%;height:100px;object-fit:cover;border-radius:6px;margin-bottom:10px}.gallery-editor-list label{font-size:10px;margin-bottom:10px}.gallery-editor-list .row button{font-size:10px;padding:7px 10px}
.gallery-dialog{width:min(960px,94vw);max-width:960px;padding:22px;max-height:92vh;overflow:auto;background:var(--panel);color:var(--text)}.gallery-dialog header{margin-bottom:15px}.gallery-dialog h2{font-size:21px;margin:0;padding-right:20px}.gallery-stage{position:relative;background:#1d1d1f08;border-radius:10px;overflow:hidden;min-height:180px;display:grid;place-items:center}.gallery-photo{width:100%;height:min(58vh,570px);object-fit:contain;display:block}.gallery-prev,.gallery-next{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:48px;padding:0;font-size:32px;background:var(--panel);border-color:var(--line);z-index:2;box-shadow:0 3px 15px #0002}.gallery-prev{left:12px}.gallery-next{right:12px}.gallery-dialog .gallery-caption{font-size:12px;margin:13px 0;max-width:85%}.gallery-count{white-space:nowrap}.gallery-thumbnails{display:flex;gap:7px;overflow:auto;padding-top:4px}.gallery-thumbnails button{padding:3px;background:transparent;border:1px solid var(--line);flex-shrink:0;border-radius:7px}.gallery-thumbnails button.active{border-color:var(--accent)}.gallery-thumbnails img{display:block;width:72px;height:49px;object-fit:cover;border-radius:4px}
.metric-masterplan{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--bg);color:var(--text)}.masterplan-toolbar{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--line);background:var(--panel)}.masterplan-toolbar h2{margin:9px 0 0;font-size:19px;font-weight:500}.masterplan-toolbar .eyebrow{font-size:9px;letter-spacing:1.2px}.masterplan-toolbar button{font-size:10px;padding:8px 10px;white-space:nowrap}.masterplan-stage{position:relative;flex:1;min-height:180px;overflow:hidden;background-color:var(--bg);background-image:radial-gradient(var(--line) 1px,transparent 1px);background-size:23px 23px}.masterplan-stage svg{width:100%;height:100%;touch-action:none;display:block;user-select:none;color:var(--text);cursor:grab}.masterplan-stage svg:active{cursor:grabbing}.metric-lot{cursor:pointer;outline:none}.metric-lot polygon{stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke;fill-opacity:.38}.metric-lot:hover polygon,.metric-lot:focus polygon{fill-opacity:.66;stroke:var(--accent);stroke-width:3}.metric-lot text,.metric-camera text,.map-distance text,.plan-measurement text{fill:var(--text);text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--panel);stroke-width:.25;stroke-linejoin:round;pointer-events:none;font-weight:600}.metric-camera{cursor:pointer}.metric-camera circle{fill:var(--accent);stroke:var(--panel);stroke-width:2;vector-effect:non-scaling-stroke}.map-distance line{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:5 5;vector-effect:non-scaling-stroke}.plan-measurement line{stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke}.masterplan-note{position:absolute;bottom:12px;left:14px;right:14px;pointer-events:none;font-size:10px;color:var(--muted);padding:9px 12px;background:var(--panel);border:1px solid var(--line);border-radius:9px;line-height:1.5}.masterplan-legend{display:flex;align-items:center;gap:17px;padding:11px 18px;border-top:1px solid var(--line);background:var(--panel);font-size:10px;color:var(--muted);flex-wrap:wrap}.masterplan-legend span{white-space:nowrap}.masterplan-legend i{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:5px}.masterplan-legend button{margin-left:auto;font-size:10px;padding:5px}
[data-theme=dark] .gallery-stage{background:#0002}
@media(max-width:1100px){.masterplan-toolbar{align-items:flex-start;flex-direction:column;padding:15px;gap:13px}.masterplan-toolbar .row{flex-wrap:wrap}.masterplan-toolbar h2{font-size:17px}}
@media(max-width:600px){.masterplan-toolbar{padding:13px;gap:11px}.masterplan-toolbar .row{gap:5px}.masterplan-toolbar button{padding:7px 8px;font-size:9px}.masterplan-note{font-size:9px;left:9px;right:9px;bottom:9px}.masterplan-legend{padding:10px;font-size:9px;gap:10px}.masterplan-legend button{margin-left:0}.gallery-dialog{padding:16px}.gallery-dialog h2{font-size:18px}.gallery-photo{height:46vh}.gallery-prev,.gallery-next{width:31px;height:42px}.gallery-prev{left:7px}.gallery-next{right:7px}.preparation-progress{right:12px;bottom:12px}}

.tour-terrain-map{width:min(880px,94vw);max-width:94vw;max-height:92dvh;padding:clamp(12px,3vw,22px);background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:18px}
.tour-terrain-map::backdrop{background:#000a}
.tour-terrain-map header{flex-wrap:wrap}
.tour-terrain-map h2{margin:0;font-size:clamp(16px,3vw,22px)}
.tour-terrain-map svg{display:block;width:100%;height:min(54dvh,490px);margin:14px 0;border:1px solid var(--line);border-radius:12px;background:var(--bg) radial-gradient(var(--line) 1px,transparent 1px) 0 0/20px 20px}
.tour-terrain-map .metric-camera:focus{outline:none}
.tour-terrain-map .metric-camera circle{fill:var(--panel);stroke:var(--action,var(--accent));stroke-width:2.5}
.tour-terrain-map .metric-camera.active circle{fill:var(--action,var(--accent));stroke:#fff}
.tour-terrain-map .metric-camera:is(:hover,:focus-visible) circle{stroke-width:4}
.tour-terrain-map .metric-camera:focus-visible circle{stroke-dasharray:3 2}
.tour-terrain-map .metric-lot[aria-pressed=true] polygon{fill-opacity:.72;stroke:var(--text);stroke-width:3}
.terrain-map-details{min-height:36px;color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.terrain-map-details strong{display:block;margin-bottom:5px;color:var(--text)}
.terrain-map-details p{margin:0 0 5px;white-space:pre-wrap}
.terrain-map-details a{display:inline-block;margin-top:4px}
.lot-measures-editor{margin-top:16px;border:1px solid var(--line);border-radius:12px;padding:11px}
.lot-measures-editor summary{cursor:pointer;font-weight:600}
.lot-batch-form h3{margin:0}
.lot-batch-form button{width:100%;margin-top:12px}
.lot-measures-editor + label{margin-top:16px}
.lot-metric-summary .hint{margin:12px 0 0}
.canvas-overlay .tour-surface.batch-selected{stroke:var(--action);stroke-width:3;stroke-dasharray:6 3}
.lot-diagram-preview{margin-top:10px}
.lot-measure-inputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:280px;overflow:auto;padding:3px}
.lot-measure-inputs label{margin:0}
.lot-diagram{display:block;width:100%;max-height:220px}
.lot-diagram polygon{fill:#52c8ad28;stroke:#52c8ad;stroke-width:1.5;stroke-linejoin:round}
.lot-diagram polyline{fill:none;stroke:var(--text);stroke-width:3;stroke-linecap:round}
.lot-diagram text{text-anchor:middle;dominant-baseline:middle;fill:var(--text);stroke:var(--bg);stroke-width:4;stroke-linejoin:round;paint-order:stroke;font-size:10px;font-weight:650}
.lot-diagram text.active{fill:#52c8ad}
.tour-lot-card{width:min(460px,calc(100vw - 28px));max-height:90dvh;padding:20px;border-radius:19px;border:1px solid var(--line-strong,var(--line));background:var(--panel);color:var(--text)}
.tour-lot-card::backdrop{background:#10141658;backdrop-filter:blur(2px)}
.lot-card-close{padding:5px 9px}
.lot-card-title{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin:10px 0 14px}
.lot-card-title h2{margin:0;font-size:clamp(20px,4vw,28px);overflow-wrap:anywhere}
.lot-card-status{padding:5px 9px;border:1px solid var(--line);border-radius:20px;background:var(--panel2);font-size:11px}
.lot-card-status[data-status=Disponible]{border-color:#52c8ad99}
.lot-card-status[data-status=Apartado]{border-color:#efb56599}
.lot-card-status[data-status=Vendido]{border-color:#f37d8b99}
.lot-card-diagram{padding:4px 10px 10px;border:1px solid var(--line);border-radius:13px;text-align:center;background:var(--bg) radial-gradient(var(--line) 1px,transparent 1px) 0 0/16px 16px}
.lot-card-diagram small{color:var(--muted);font-size:10px}
.lot-card-facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.lot-card-facts>div{flex:1;padding:9px 11px;border:1px solid var(--line);border-radius:10px}
.lot-card-facts span,.lot-card-facts strong{display:block}
.lot-card-facts span{font-size:10px;color:var(--muted);margin-bottom:3px}
.lot-card-facts strong{font-size:15px}
.lot-card-description{margin:10px 0 0;white-space:pre-wrap}
.lot-card-links{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px}
.terrain-map-details .lot-card-diagram .lot-diagram{height:auto;margin:0 auto;border:0;background:none;max-width:390px}


.workspace:has(.metric-masterplan){grid-template-columns:128px minmax(0,1fr)}.workspace:has(.metric-masterplan)>.layers-panel,.workspace:has(.metric-masterplan)>.properties{display:none}.masterplan-stage svg{position:absolute;top:0;left:0;height:calc(100% - 47px)}@media(max-width:900px){.workspace:has(.metric-masterplan){grid-template-columns:90px minmax(0,1fr)}}@media(max-width:600px){.workspace:has(.metric-masterplan){grid-template-columns:74px minmax(0,1fr)}}

/* Panorama connection map: viewport controls remain fixed while the world moves. */
.navigable-map{overflow:hidden;touch-action:none;cursor:grab;user-select:none;outline-offset:-3px}
.navigable-map .map-world{position:absolute;inset:0;transform-origin:0 0;will-change:transform}
.navigable-map .map-world svg{pointer-events:none}.navigable-map .map-world line{stroke:var(--accent)}
.navigable-map .map-node img{pointer-events:none;-webkit-user-drag:none}.navigable-map .map-node:focus-visible{outline:2px solid var(--accent);outline-offset:8px;border-radius:10px}
.navigable-map.map-dragging,.navigable-map.map-dragging .map-node{cursor:grabbing}
.tour-map-toolbar{position:absolute;top:18px;left:18px;right:18px;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:none}
.tour-map-toolbar .eyebrow{max-width:55%;line-height:1.6;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.tour-map-toolbar>.row{pointer-events:auto;gap:5px;padding:5px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 18px #0001}
.tour-map-toolbar button{width:30px;height:30px;padding:0;font-size:18px;background:transparent;border-color:transparent}
.map-zoom-level{font-size:11px;min-width:43px;text-align:center;color:var(--text);font-variant-numeric:tabular-nums}
.tour-map-help{white-space:normal;line-height:1.6;max-width:calc(100% - 36px);color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:10px}
@media(max-width:1100px){.tour-map-toolbar{flex-wrap:wrap;align-items:flex-start}.tour-map-toolbar .eyebrow{max-width:100%;font-size:9px}}
@media(max-width:600px){.tour-map-toolbar{top:11px;left:10px;right:10px;gap:7px}.tour-map-toolbar button{width:28px;height:28px}.tour-map-help{left:10px;bottom:10px;max-width:calc(100% - 20px);font-size:9px}}

/* Independent additions informed by the observed authoring workflows. */
.scene-settings-thumbnail{display:block;width:100%;height:120px;object-fit:cover;border:1px solid var(--line);border-radius:10px;margin:10px 0}.property-body output{min-width:36px;text-align:right;color:var(--text);font-variant-numeric:tabular-nums;font-size:11px}
.actions-editor{margin-top:16px}.actions-editor>.eyebrow{margin-bottom:15px}.actions-editor label{margin-top:12px}.action-editor-list{display:grid;gap:12px}.action-editor-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel2)}.action-editor-card label{margin-bottom:12px}.action-editor-controls button{font-size:11px;padding:6px 10px}.action-editor-add{padding-top:12px}.action-editor-add>button{width:100%}.action-editor-card textarea{min-height:70px}
.action-media-dialog{width:min(840px,94vw);padding:22px;background:var(--panel);border-color:var(--line);color:var(--text)}.action-media-dialog::backdrop{background:#000a}.action-media-dialog h2{margin:0;font-size:21px}.action-media-dialog img,.action-media-dialog video{display:block;width:100%;max-height:68vh;object-fit:contain;border-radius:10px;margin-top:18px}.action-media-dialog audio{width:100%;margin:24px 0 10px}.action-media-dialog p{margin:15px 0 0}
.tour-scene-caption{position:absolute;left:28px;bottom:130px;max-width:min(400px,75%);z-index:7;color:#fff;padding:12px 16px;background:#101416bb;backdrop-filter:blur(12px);border:1px solid #ffffff25;border-radius:12px;pointer-events:none}.tour-scene-caption strong,.tour-scene-caption span{display:block}.tour-scene-caption strong{font-size:14px;margin-bottom:5px}.tour-scene-caption span{font-size:12px;line-height:1.5}
.publication-page{max-width:1100px;margin:auto;padding:44px 34px}.publication-options{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:25px 0}.publication-option{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line);padding:20px;border-radius:15px;background:var(--panel);cursor:pointer;text-align:left}.publication-option.active{border-color:var(--action);background:var(--accent-soft)}.publication-option h3{margin:0 0 8px;font-size:17px}.publication-option p{margin:0;font-size:12px}.publication-option input[type=radio]{width:18px;flex-shrink:0}.publication-progress{border:1px solid var(--line);background:var(--panel);padding:20px;border-radius:13px;margin-top:20px}.publication-progress progress{width:100%;height:10px;accent-color:var(--action)}.publication-results{border:1px solid var(--accent-border);padding:22px;background:var(--panel);border-radius:15px;margin:22px 0}.publication-results .row{flex-wrap:wrap}.publication-results a{display:inline-block;text-decoration:none;padding:10px 15px;border-radius:9px;border:1px solid var(--line)}.publication-results .primary{color:var(--action-ink)}.publication-size-summary{display:flex;gap:24px;flex-wrap:wrap;margin:16px 0}.publication-size-summary strong{font-size:23px;font-weight:500;color:var(--text)}.publication-preview{margin-top:14px}.publication-page .box{margin-top:22px}
@media(max-width:700px){.publication-page{padding:28px 18px}.publication-options{grid-template-columns:1fr}.tour-controls{max-width:calc(100vw - 32px);flex-wrap:wrap;justify-content:flex-end}.tour-scene-caption{left:16px;bottom:170px;max-width:70%;padding:9px 12px}.tour-scene-caption span{font-size:11px}}

.publication-option{flex-direction:column;gap:10px}.publication-option strong{font-size:18px;color:var(--text)}.publication-option>span:last-child{font-size:12px;line-height:1.6;color:var(--muted)}.publication-results .contact-btn{background:var(--action);color:var(--action-ink);border-color:var(--action)}.route-item>label{font-size:10px;margin:10px 0}.route-item>label input,.route-item>label select{font-size:11px;padding:8px}
.plan-empty{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:28px;text-align:center;gap:14px;color:var(--text)}.plan-empty>span{font-size:50px;color:var(--action)}.plan-empty p{max-width:330px;line-height:1.7;color:var(--muted)}.plan-editor{height:100%;display:flex;flex-direction:column}.plan-editor>header{padding:18px 24px;border-bottom:1px solid var(--line);background:var(--panel)}.plan-editor h2{font-size:19px;margin:8px 0}.plan-editor header p{font-size:11px;color:var(--muted);margin:6px 0}.plan-editor-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:32px;overflow:auto;background:var(--map-bg)}.plan-image-frame{position:relative;max-width:100%;width:fit-content;border-radius:12px;box-shadow:0 8px 40px #0002;cursor:crosshair}.plan-image-frame>img{display:block;max-width:100%;max-height:calc(100dvh - 340px);width:auto;object-fit:contain;border-radius:12px;user-select:none}.plan-points{position:absolute;inset:0;pointer-events:none}.plan-point{position:absolute;transform:translate(-50%,-50%);width:25px;height:25px;padding:0;border-radius:50%;background:var(--plan-point-fill,var(--panel));border:3px solid var(--plan-point-color,var(--action));box-shadow:0 2px 8px #0005;pointer-events:auto;touch-action:none;cursor:grab}.plan-point.active{background:var(--plan-active-color,var(--action));border-color:#fff}.plan-point>span{position:absolute;top:30px;left:50%;transform:translateX(-50%);padding:4px 6px;border-radius:5px;white-space:nowrap;font-size:10px;color:var(--text);background:var(--panel);box-shadow:0 2px 5px #0002}.plan-point.active>i{position:absolute;left:50%;top:50%;width:55px;height:55px;background:conic-gradient(from -30deg,var(--plan-radar-color,#22d3ee80) 0deg 60deg,transparent 60deg);transform:translate(-50%,-50%) rotate(var(--heading,0deg));pointer-events:none;border-radius:50%}.plan-point-row{font-size:11px;padding:6px 0}.plan-point-row>span{overflow:hidden;text-overflow:ellipsis;max-width:190px}.floor-hotspot{pointer-events:all;cursor:pointer;outline:none;filter:drop-shadow(0 1px 2px #0009)}.floor-hotspot:hover,.floor-hotspot:focus{fill-opacity:1;stroke:var(--action);stroke-width:2}.hotspot-appearance-dot{width:17px!important;height:17px!important;min-width:17px!important;min-height:17px!important;background:currentColor!important;box-shadow:0 0 0 6px #ffffff26!important;border:2px solid #fff!important}.hotspot-appearance-label{width:auto!important;height:auto!important;min-width:0!important;padding:10px 14px!important;border-radius:8px!important;max-width:180px;font-size:12px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hotspot-appearance-portal{box-shadow:0 0 0 7px #22d3ee35,0 4px 16px #0005!important;border-color:var(--action)!important;background:#10252dcc!important}.hotspot-appearance-door{border-radius:9px!important;border-width:2px!important}.hotspot-appearance-stairs-up,.hotspot-appearance-stairs-down{border-radius:9px!important;border-style:dashed!important}.panorama-load-status{position:absolute;left:50%;top:24px;transform:translateX(-50%);z-index:18;display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--line);border-radius:12px;max-width:90%;background:var(--panel);color:var(--text);font-size:12px;box-shadow:0 6px 25px #0003}.panorama-load-status[hidden]{display:none}.panorama-load-status button{font-size:11px;padding:6px 9px;white-space:nowrap}.walk-transition-label{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);z-index:19;pointer-events:none;background:#101416dd;color:#fff;padding:13px 23px;border-radius:30px;font-size:13px;box-shadow:0 8px 32px #0003}.tour-walking .canvas-overlay{pointer-events:none}.tour-walking .canvas-overlay>*{pointer-events:none!important}.tour-floorplan{position:absolute;left:20px;bottom:110px;width:250px;max-width:calc(100% - 40px);z-index:15;border:1px solid var(--line);border-radius:13px;background:var(--panel);box-shadow:0 8px 32px #0004;overflow:hidden}.tour-floorplan>header{padding:7px;display:flex;align-items:center;gap:5px}.tour-floorplan select{font-size:11px;min-width:0;flex:1;padding:7px}.tour-floorplan header button{padding:5px 8px;flex:none}.tour-plan-image{position:relative;overflow:hidden}.tour-plan-image>img{width:100%;height:auto;display:block}.tour-plan-point{position:absolute;left:50%;top:50%;width:15px!important;height:15px!important;min-width:15px!important;padding:0!important;transform:translate(-50%,-50%);border-radius:50%!important;background:var(--plan-point-fill,#fff)!important;border:3px solid var(--plan-point-color,var(--action))!important;box-shadow:0 1px 4px #0005;z-index:1}.tour-plan-point.active{background:var(--plan-active-color,var(--action))!important;border-color:#fff!important;z-index:2}.tour-plan-radar{position:absolute;left:50%;top:50%;width:85px;height:85px;transform:translate(-50%,-50%) rotate(var(--heading,0deg));background:conic-gradient(from calc(var(--radar-fov,60deg) / -2),var(--plan-radar-color,#22d3ee60) 0deg var(--radar-fov,60deg),transparent var(--radar-fov,60deg));border-radius:50%;pointer-events:none;z-index:-1}.tabs{overflow-x:auto;max-width:100%;scrollbar-width:thin}.tabs>button{flex-shrink:0}@media(max-width:700px){.tour-floorplan{width:190px;left:12px;bottom:150px}.plan-editor-stage{padding:20px}.plan-image-frame>img{max-height:calc(100dvh - 350px)}.plan-editor>header{padding:14px}.panorama-load-status{top:65px;max-width:95%;font-size:11px}.walk-transition-label{max-width:90%;text-align:center;white-space:normal}}

.floor-hotspot-ring{pointer-events:none;filter:drop-shadow(0 1px 2px #0009)}
.block-curve-handle{pointer-events:all;cursor:grab;touch-action:none;outline:none;filter:drop-shadow(0 1px 3px #0008)}.block-curve-handle:focus,.block-curve-handle:hover{stroke:var(--action);stroke-width:3}.block-curve-tangent{pointer-events:none;stroke-dasharray:4 3}.block-curve-properties{margin-top:12px}.block-curve-properties .row>button{font-size:10px;padding:8px}.block-curve-properties>.primary{width:100%;font-size:11px;line-height:1.6}.curve-workbench{width:min(1120px,95vw)!important;max-width:1120px!important;padding:24px!important;max-height:94dvh!important;background:var(--panel);color:var(--text)}.curve-workbench>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.curve-workbench h2{font-size:24px;margin:8px 0}.curve-workbench>p{font-size:12px;color:var(--muted);line-height:1.8;max-width:800px}.curve-workbench-stage{border:1px solid var(--line);border-radius:16px;background-color:var(--bg);background-image:radial-gradient(var(--line-strong) 1px,transparent 1px);background-size:24px 24px;overflow:hidden;margin-top:18px}.curve-workbench svg{display:block;width:100%;max-height:58dvh;min-height:240px;touch-action:none;user-select:none}.curve-workbench>footer{align-items:center;justify-content:space-between!important;gap:15px}.curve-workbench footer .hint{margin:0;font-size:11px}.curve-lot-label{fill:var(--text);font-size:13px;text-anchor:middle;dominant-baseline:middle;pointer-events:none;paint-order:stroke;stroke:var(--panel);stroke-width:2px;stroke-linejoin:round}@media(max-width:700px){.curve-workbench{padding:16px!important}.curve-workbench h2{font-size:20px}.curve-workbench footer .hint{max-width:200px}.curve-workbench svg{max-height:52dvh}.block-curve-handle{r:8px}}
.floor-pointer-preview{position:absolute;inset:0;width:100%;height:100%;pointer-events:none!important;z-index:5;overflow:hidden}.floor-pointer-preview path{fill:#fff;opacity:.74;stroke:#ffffffc0;stroke-width:.4;filter:drop-shadow(0 1px 3px #0009);pointer-events:none!important}.floor-pointer-preview.placing path{fill:var(--action);opacity:.65}.tour-floorplan{padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}.tour-floorplan .tour-plan-image{margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important}.tour-plan-selector{max-width:160px;min-width:70px;width:auto;font-size:11px;padding:8px;border-radius:9px;align-self:center}@media(max-width:700px){.tour-plan-selector{max-width:110px;font-size:10px}}

/* Compact published viewer: optional carousel and one map control. */
.tour-gallery{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);z-index:7;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:calc(100vw - 280px)}
.tour-gallery[hidden],.tour-bottom[hidden]{display:none!important}.tour-gallery .tour-bottom{position:static;transform:none;max-width:100%;width:max-content;margin:0}
.tour-gallery-toggle{flex:none;white-space:nowrap;padding:8px 15px;border-radius:20px;font-size:11px;background:var(--floating);color:var(--text);border:1px solid var(--line-strong);box-shadow:0 3px 15px #0002;backdrop-filter:blur(12px)}
.viewer-mode.gallery-collapsed .tour-floorplan{bottom:80px}.viewer-mode>.tour-controls button{font-size:12px;min-width:76px;padding:10px 13px}.tour-floorplan>.tour-plan-selector{position:absolute;top:8px;left:8px;z-index:3;max-width:calc(100% - 16px);background:var(--floating);border:1px solid var(--line);color:var(--text)}
@media(max-width:700px){.tour-gallery{bottom:15px;max-width:calc(100vw - 24px)}.tour-gallery .tour-bottom{max-width:100%;padding:8px;gap:6px}.tour-gallery-toggle{font-size:10px;padding:7px 12px}.viewer-mode.gallery-collapsed>.tour-controls{bottom:16px}.viewer-mode.gallery-open>.tour-controls{bottom:140px}.viewer-mode>.tour-controls button{min-width:66px;padding:9px 11px}}
.hotspot-symbol{display:block;width:24px;height:24px;flex-shrink:0;pointer-events:none}.layer-anchor.hotspot>.hotspot-symbol{position:static;inset:auto;overflow:visible;width:24px;height:24px}.hotspot-icon-library{margin:12px 0 16px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.hotspot-icon-library>summary{list-style:none;display:flex;align-items:center;gap:12px;padding:12px;cursor:pointer}.hotspot-icon-library>summary::-webkit-details-marker{display:none}.hotspot-icon-current{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;color:var(--text);flex-shrink:0}.hotspot-icon-library summary strong{display:block;font-size:12px;font-weight:600}.hotspot-icon-library summary small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.hotspot-icon-disclosure{margin-left:auto;color:var(--muted)}.hotspot-icon-library[open] .hotspot-icon-disclosure{transform:rotate(180deg)}.hotspot-icon-picker{border-top:1px solid var(--line);padding:12px}.hotspot-icon-picker>label{margin-bottom:12px}.hotspot-icon-results{max-height:350px;overflow-y:auto;scrollbar-width:thin;padding:0 3px 4px}.hotspot-icon-results h4{color:var(--muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin:15px 0 10px;font-weight:500}.hotspot-icon-results section:first-child h4{margin-top:0}.hotspot-icon-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.hotspot-icon-grid button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:68px;padding:8px 3px;background:transparent;border:1px solid var(--line);border-radius:9px;color:var(--text)}.hotspot-icon-grid button span{font-size:9px;line-height:1.25;text-align:center;overflow-wrap:anywhere}.hotspot-icon-grid button:hover,.hotspot-icon-grid button[aria-pressed=true]{border-color:var(--action,var(--accent));color:var(--action,var(--accent));background:color-mix(in srgb,var(--action,var(--accent)) 9%,transparent)}.hotspot-icon-grid [hidden],.hotspot-icon-results [hidden]{display:none!important}.hotspot-icon-picker>p{margin-bottom:0;font-size:10px}
.hotspot-icon-launcher{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:12px;margin:12px 0;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.hotspot-icon-launcher>span:nth-child(2){flex:1}.hotspot-icon-launcher strong{display:block;font-size:12px}.hotspot-icon-launcher small{display:block;font-size:10px;margin-top:5px;color:var(--muted)}.hotspot-motion-options{margin-bottom:20px}.hotspot-motion-options>button{font-size:11px}.canvas-overlay .layer-anchor.hotspot.marker-icon .hotspot-symbol{width:var(--marker-size,36px);height:var(--marker-size,36px);position:static;inset:auto;overflow:visible;flex:none}.canvas-overlay .layer-anchor.hotspot.marker-plain{background:none;border:0;border-radius:0;box-shadow:none;filter:drop-shadow(0 2px 3px #0009);width:auto;height:auto;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;padding:4px}.canvas-overlay .layer-anchor.hotspot.marker-plain:hover{background:none;box-shadow:none}.canvas-overlay .layer-anchor.hotspot.marker-icon.selected{outline:2px dashed var(--action);outline-offset:7px}.canvas-overlay .layer-anchor.hotspot.marker-framed{box-sizing:border-box;width:var(--marker-size,70px);height:var(--marker-size,70px);min-width:0;min-height:0;aspect-ratio:1;display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%!important;border:1.5px solid #ffffffe6!important;background:#1d1d1f80!important;box-shadow:0 2px 10px #0003!important;font-size:calc(var(--marker-size,70px) * .5);line-height:1}.canvas-overlay .layer-anchor.hotspot.marker-icon.marker-framed>.hotspot-symbol{width:60%;height:60%;flex:none}
.hotspot-library-dialog{--library-bg:#202428;--library-panel:#282d32;--library-line:#3a4248;--library-text:#f5f7f8;--library-muted:#aab7be;width:min(1080px,calc(100vw - 40px));max-width:none;height:min(720px,calc(100dvh - 48px));max-height:none;padding:0;border:1px solid var(--library-line);border-radius:14px;background:var(--library-bg);color:var(--library-text);box-shadow:0 24px 100px #0009;overflow:hidden;color-scheme:dark}.hotspot-library-dialog::backdrop{background:#080d1266;backdrop-filter:blur(3px)}.hotspot-library-dialog>header{height:76px;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--library-line)}.hotspot-library-dialog h2{font-size:18px;letter-spacing:-.3px;color:var(--library-text);margin:0 0 6px}.hotspot-library-dialog header p{font-size:11px;color:var(--library-muted);margin:0}.hotspot-library-dialog button,.hotspot-library-dialog input,.hotspot-library-dialog select{color:var(--library-text);background:var(--library-panel);border-color:var(--library-line)}.hotspot-library-dialog header button{padding:7px 10px;font-size:16px;background:transparent}.hotspot-library-body{display:grid;grid-template-columns:184px minmax(0,1fr);height:calc(100% - 198px);min-height:0}.hotspot-library-body>aside{border-right:1px solid var(--library-line);padding:22px 14px;overflow-y:auto}.hotspot-library-caption{text-transform:uppercase;color:var(--library-muted);letter-spacing:.12em;font-size:10px;padding-left:10px}.hotspot-library-body nav{display:grid;gap:4px;margin:14px 0 22px}.hotspot-library-body nav button{display:flex;align-items:center;justify-content:space-between;text-align:left;border:1px solid transparent;background:transparent;padding:10px;font-size:11px}.hotspot-library-body nav button[aria-pressed=true]{background:#22d3ee13;border-color:#22d3ee66;color:#67e5f7}.hotspot-library-body nav button small{color:var(--library-muted);font-size:10px}.hotspot-library-body aside label{font-size:10px;color:var(--library-muted)}.hotspot-library-body aside select{font-size:11px;margin-top:8px}.hotspot-library-body aside p{font-size:10px;line-height:1.7;color:var(--library-muted);margin:20px 10px}.hotspot-library-body>main{display:flex;flex-direction:column;min-width:0;min-height:0}.hotspot-library-search{padding:16px 20px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--library-line)}.hotspot-library-search input{font-size:12px;flex:1;padding:11px}.hotspot-library-search span{font-size:10px;white-space:nowrap;color:var(--library-muted)}.hotspot-library-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;padding:18px;overflow-y:auto;align-content:start;scrollbar-width:thin;flex:1}.hotspot-library-item{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:126px;gap:12px;padding:14px 6px;background:transparent!important;border:1px solid transparent!important;border-radius:8px;position:relative}.hotspot-library-item>span:nth-child(2){font-size:10px;line-height:1.4;color:var(--library-muted);text-align:center}.hotspot-library-art{width:54px;height:54px;display:grid;place-items:center;color:#fff;filter:drop-shadow(0 2px 3px #0006)}.hotspot-library-art .hotspot-symbol{width:42px;height:42px}.hotspot-library-item[aria-pressed=true]{border-color:#eaf4f5!important;background:#ffffff08!important}.hotspot-library-item[aria-pressed=true]>span:nth-child(2){color:#67e5f7}.hotspot-library-item:hover{background:#ffffff08!important;border-color:#ffffff33!important}.hotspot-library-item>small{position:absolute;top:6px;right:6px;color:#8de9f5;font-size:8px}.hotspot-library-grid>[hidden]{display:none!important}.hotspot-library-grid>p{grid-column:1/-1;font-size:12px;color:var(--library-muted);padding:40px;text-align:center}
.hotspot-library-dialog>footer{height:122px;margin:0;padding:16px 22px;display:flex;gap:18px;align-items:center;border-top:1px solid var(--library-line);background:#1a1f23}.hotspot-library-selection{display:flex;align-items:center;gap:12px;min-width:180px;flex:1}.hotspot-library-selection strong{font-size:11px;color:var(--library-text);display:block;max-width:160px}.hotspot-library-selection small{font-size:9px;color:var(--library-muted);display:block;margin-top:7px}.hotspot-library-sample{width:54px;height:54px;display:grid;place-items:center;flex:none;filter:drop-shadow(0 2px 3px #0009)}.hotspot-library-sample .hotspot-symbol{width:36px;height:36px}.hotspot-library-sample.with-frame{border:1px solid currentColor;border-radius:50%;background:#ffffff0a}.hotspot-library-dialog footer label{font-size:10px;margin:0;color:var(--library-muted)}.hotspot-library-dialog footer select{font-size:11px;width:140px;margin-top:8px;padding:9px}.hotspot-library-color>div{display:flex;gap:4px;margin-top:8px}.hotspot-library-color input{width:38px;height:34px;padding:2px}.hotspot-library-color button{padding:6px 8px;font-size:10px}.hotspot-library-frame{display:flex;align-items:center;gap:7px;max-width:80px;line-height:1.5}.hotspot-library-frame input{width:16px;height:16px;flex:none}.hotspot-library-confirm{display:flex;gap:8px;align-items:center}.hotspot-library-confirm button{font-size:11px;padding:10px;white-space:nowrap}.hotspot-library-dialog .primary{background:#22d3ee;color:#101416;border-color:#22d3ee}.hotspot-library-dialog button:focus-visible{outline:2px solid #22d3ee;outline-offset:3px}
[data-animation=float]>.hotspot-symbol{animation:hotspot-float 2.4s ease-in-out infinite;animation-delay:var(--hotspot-phase,0s)}[data-animation=pulse]>.hotspot-symbol{animation:hotspot-pulse 2.4s ease-in-out infinite;animation-delay:var(--hotspot-phase,0s)}[data-animation=ripple]>.hotspot-symbol{animation:hotspot-ripple 2.4s ease-out infinite;animation-delay:var(--hotspot-phase,0s);transform-origin:center}@keyframes hotspot-float{0%,100%{transform:translateY(3px)}50%{transform:translateY(-5px)}}@keyframes hotspot-pulse{0%,100%{transform:scale(.92);opacity:.75}50%{transform:scale(1.08);opacity:1}}@keyframes hotspot-ripple{0%,100%{transform:scale(.9);opacity:.65;filter:drop-shadow(0 0 0 currentColor)}55%{transform:scale(1.06);opacity:1;filter:drop-shadow(0 0 5px currentColor)}}@media(prefers-reduced-motion:reduce){[data-animation]>.hotspot-symbol{animation:none!important}}
@media(max-width:1000px){.hotspot-library-dialog>footer{gap:10px;padding:12px}.hotspot-library-selection{min-width:130px}.hotspot-library-selection strong{max-width:110px}.hotspot-library-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.hotspot-library-dialog footer select{width:110px}.hotspot-library-frame{display:none!important}}@media(max-width:700px){.hotspot-library-dialog{width:calc(100vw - 16px);height:calc(100dvh - 24px)}.hotspot-library-dialog>header{padding:12px 16px;height:68px}.hotspot-library-body{grid-template-columns:1fr;height:calc(100% - 252px)}.hotspot-library-body>aside{padding:8px;border:0;border-bottom:1px solid var(--library-line);overflow-x:auto;overflow-y:hidden}.hotspot-library-body>aside>span,.hotspot-library-body aside>label,.hotspot-library-body aside>p{display:none}.hotspot-library-body nav{display:flex;gap:4px;margin:0}.hotspot-library-body nav button{white-space:nowrap;gap:8px;padding:8px}.hotspot-library-body{grid-template-rows:51px minmax(0,1fr)}.hotspot-library-grid{grid-template-columns:repeat(3,minmax(0,1fr));padding:10px;gap:4px}.hotspot-library-item{min-height:110px}.hotspot-library-search{padding:10px}.hotspot-library-search input{font-size:11px}.hotspot-library-dialog>footer{height:184px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:12px}.hotspot-library-selection{grid-column:1/-1;min-width:0;justify-content:center}.hotspot-library-sample{height:38px;width:42px}.hotspot-library-sample .hotspot-symbol{width:30px;height:30px}.hotspot-library-selection strong{max-width:none}.hotspot-library-selection small{margin-top:3px}.hotspot-library-confirm{grid-column:1/-1;justify-content:flex-end}.hotspot-library-color{grid-column:1/2}.hotspot-library-dialog footer>label:not(.hotspot-library-color):not(.hotspot-library-frame){grid-column:2/4}.hotspot-library-dialog footer select{width:100%;margin-top:4px}.hotspot-library-color>div{margin-top:4px}}

.hotspot-library-sample.with-frame{box-sizing:border-box;aspect-ratio:1;width:54px;height:54px;padding:0;display:flex;align-items:center;justify-content:center;border:1.5px solid #ffffffe6;background:#1d1d1f80;box-shadow:0 2px 8px #0003}.hotspot-library-sample.with-frame>.hotspot-symbol{width:60%;height:60%;flex:none}@media(max-width:700px){.hotspot-library-sample.with-frame{width:38px;height:38px}}
.viewer-mode .tour-floorplan{width:min(380px,40vw);max-width:calc(100% - 40px)}.viewer-mode .tour-plan-image>img{opacity:.82;transition:opacity .2s ease}.viewer-mode .tour-floorplan:hover .tour-plan-image>img,.viewer-mode .tour-floorplan:focus-within .tour-plan-image>img{opacity:.96}@media(max-width:700px){.viewer-mode .tour-floorplan{width:min(250px,calc(100vw - 32px));max-width:calc(100% - 24px)}}
.hotspot-alignment-tools{padding:13px;margin:14px 0 18px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.hotspot-alignment-tools>.eyebrow{margin-bottom:10px}.hotspot-alignment-tools>button{width:100%;font-size:11px;padding:10px 6px}.hotspot-alignment-tools>label{font-size:11px;margin:12px 0 8px;gap:8px}.hotspot-alignment-tools>p{font-size:10px;line-height:1.7;margin:0}.hotspot-alignment-dialog{width:min(500px,calc(100vw - 32px));max-height:85dvh}.hotspot-alignment-dialog h2{font-size:22px}.hotspot-alignment-dialog>p{line-height:1.6;font-size:12px}.hotspot-align-list{display:grid;gap:5px;max-height:38dvh;overflow-y:auto;margin:18px 0;padding:6px;border:1px solid var(--line);border-radius:10px}.hotspot-align-list label{display:flex;gap:12px;align-items:center;padding:12px 10px;margin:0;font-size:12px;border-radius:7px;cursor:pointer}.hotspot-align-list label:hover{background:var(--hover)}.hotspot-align-list input{width:17px;height:17px;flex:none}.hotspot-alignment-dialog>footer{gap:10px}.hotspot-align-guide{position:absolute;left:0;right:0;height:1px;z-index:20;pointer-events:none;background:#22d3ee;box-shadow:0 0 0 1px #10141644}.hotspot-align-guide>span{position:absolute;right:12px;bottom:7px;background:#101416e6;color:#b8f5ff;font-size:10px;padding:5px 8px;border-radius:5px}
.hotspot-height-tools{padding:13px;border:1px solid var(--line);border-radius:10px;margin:14px 0;background:var(--panel2)}.hotspot-height-tools>.eyebrow{margin-bottom:12px}.hotspot-height-tools>label{font-size:11px}.hotspot-height-tools .hint{font-size:10px;line-height:1.6;margin:8px 0}.hotspot-height-tools .row{align-items:stretch}.hotspot-height-tools button{font-size:10px;flex:1;padding:8px 5px}.hotspot-placement-height{display:flex;gap:10px;align-items:flex-end;margin-top:10px;text-align:left}.hotspot-placement-height label{font-size:10px;margin:0;flex:1}.hotspot-placement-height input{width:90px}.hotspot-placement-height select,.hotspot-placement-height input{padding:8px;font-size:11px;margin-top:4px}.hotspot-placement-height button{padding:8px;white-space:nowrap;font-size:10px}.hotspot-height-guide{fill:none;stroke:#22d3ee;stroke-width:1.5;stroke-dasharray:7 5;pointer-events:none;filter:drop-shadow(0 1px 1px #0009)}.hotspot-library-placement{height:76px;display:flex;gap:20px;align-items:center;padding:10px 24px;border-bottom:1px solid var(--library-line);background:#1a1f23}.hotspot-library-placement label{font-size:10px;color:var(--library-muted);margin:0}.hotspot-library-placement select,.hotspot-library-placement input{margin-top:5px;padding:7px;font-size:11px}.hotspot-library-placement input{width:80px}.hotspot-library-placement p{font-size:10px;line-height:1.7;margin:0;color:var(--library-muted)}.hotspot-library-dialog.has-placement-height .hotspot-library-body{height:calc(100% - 274px)}@media(max-width:700px){.hotspot-library-placement{height:104px;padding:10px 14px;gap:10px;flex-wrap:wrap}.hotspot-library-placement label:first-child{flex:1}.hotspot-library-placement p{width:100%;font-size:9px}.hotspot-library-placement p br{display:none}.hotspot-library-dialog.has-placement-height .hotspot-library-body{height:calc(100% - 356px)}.hotspot-placement-height{flex-wrap:wrap;gap:7px}.hotspot-placement-height input{width:75px}}
.viewer-mode>.tour-controls{left:20px;right:auto;justify-content:flex-start}@media(max-width:700px){.viewer-mode>.tour-controls{left:12px;right:auto}.viewer-mode.gallery-collapsed .tour-gallery{left:auto;right:12px;transform:none}.viewer-mode.gallery-open .tour-floorplan{bottom:196px}}

/* Keep the selected point icon within reach while editing long property panels. */
.hotspot-quick-icon{position:sticky;top:0;z-index:4;background:var(--panel);padding:12px 0 10px;margin:0 0 18px;border-bottom:1px solid var(--line)}.hotspot-quick-icon .hotspot-icon-launcher{margin:10px 0 0;border-color:var(--action,var(--accent))}.hotspot-quick-icon .eyebrow{font-size:9px}

/* Consistent vector controls for the editor UI. */
.ui-icon{display:inline-block;vertical-align:middle;flex-shrink:0;pointer-events:none;width:18px;height:18px}
.tools-grid button{display:flex;align-items:center;justify-content:flex-start;gap:8px;padding:10px 9px;min-height:38px;text-align:left}.tools-grid .ui-icon{width:16px;height:16px}
.view-controls{gap:7px}.view-controls button{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid #ffffff40;background:#142024d9;color:#fff;box-shadow:0 2px 9px #0002;transition:background .15s,border-color .15s,box-shadow .15s}.view-controls button:hover{background:#263e44f0;border-color:var(--action,var(--accent))}.view-controls button[aria-pressed=true]{color:var(--action,var(--accent));border-color:currentColor;box-shadow:0 0 0 3px #22d3ee20}.view-controls .ui-icon{width:19px;height:19px}
.layer-row>.muted .ui-icon{width:15px;height:15px}.layer-row [data-visible]{display:grid;place-items:center;padding:5px}.layer-row [data-visible] .ui-icon{width:15px;height:15px}
.pill:has(.ui-icon){align-items:center;gap:6px}.panel-footer .ui-icon{width:17px;height:17px}.tour-map-toolbar button{display:inline-flex;align-items:center;justify-content:center}.primary>.ui-icon,.rail-bottom button>.ui-icon{margin-right:4px}

.view-controls .mobile-tip{display:none}@media(max-width:600px){.view-controls .mobile-tip{display:inline-flex}}
.tour-map-toolbar .ui-icon{position:static;inset:auto;width:18px;height:18px;overflow:visible}

.precision-cursor-on .pano,.precision-cursor-on .canvas-overlay,.precision-cursor-on .layer-anchor,.precision-cursor-on .vertex,.precision-cursor-on .floor-hotspot{cursor:none}.precision-lens[hidden]{display:none}
.masterplan-view-switch{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.masterplan-view-switch button{border-color:transparent;background:transparent;color:var(--muted)}
.masterplan-view-switch button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:650}
.masterplan-stage-3d{background-image:radial-gradient(ellipse at 50% 45%,var(--panel),var(--bg) 78%);background-size:100% 100%}
.masterplan-grid rect{fill:var(--panel2);fill-opacity:.66;stroke:var(--line-strong);vector-effect:non-scaling-stroke}
.masterplan-grid path{fill:none;stroke:var(--line-strong);stroke-opacity:.58;vector-effect:non-scaling-stroke;pointer-events:none}
.masterplan-stage-3d .masterplan-height-line{stroke:var(--accent);stroke-width:1.7;stroke-dasharray:4 4;opacity:.82;pointer-events:none}
.masterplan-stage-3d .masterplan-camera-foot{fill:var(--bg);stroke:var(--accent);stroke-width:1.6;opacity:.85}
.masterplan-stage-3d .masterplan-elevated-camera text{stroke:var(--panel);stroke-width:5px}
.masterplan-stage .metric-camera:focus{outline:none}
.masterplan-stage .masterplan-camera-head{fill:var(--panel);stroke:var(--action);stroke-width:2.5}
.masterplan-stage .metric-camera.active .masterplan-camera-head{fill:var(--action);stroke:#fff}
.masterplan-stage .metric-camera:is(:hover,:focus-visible) .masterplan-camera-head{stroke-width:4}
.masterplan-stage .metric-camera:focus-visible .masterplan-camera-head{stroke-dasharray:3 2}
.masterplan-stage.locating .connection-hit{pointer-events:none}
.masterplan-body{display:flex;flex:1;min-height:0}
.masterplan-stage{min-width:0}
.masterplan-camera-panel{flex:0 0 230px;min-width:0;overflow:auto;padding:17px;background:var(--panel);border-left:1px solid var(--line)}
.masterplan-camera-panel h3{margin:8px 0 15px;overflow-wrap:anywhere}
.masterplan-camera-panel p{margin-top:10px}
.masterplan-camera-panel form{display:grid;gap:7px}
.masterplan-camera-panel button{font-size:11px}
.masterplan-camera-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.masterplan-camera-fields label{margin:0 0 5px;font-size:11px}
.masterplan-camera-fields label:last-child{grid-column:1/-1}
.masterplan-stage.locating svg,.masterplan-stage.locating svg *{cursor:crosshair}
.masterplan-link-settings{border-top:1px solid var(--line);margin-top:15px;padding-top:12px}
.masterplan-link-settings summary{cursor:pointer;font-size:12px;font-weight:600}
.masterplan-link-settings #masterplan-connections{margin-top:14px}
@media(max-width:800px){
 .masterplan-body.has-camera-panel{flex-direction:column}
 .masterplan-body.has-camera-panel .masterplan-stage{min-height:100px}
 .masterplan-camera-panel{flex:0 0 auto;max-height:42%;padding:9px 13px;border-left:0;border-top:1px solid var(--line)}
 .masterplan-camera-panel h3{display:inline;margin:0 0 0 8px;font-size:12px}
 .masterplan-camera-panel form{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:5px}
 .masterplan-camera-fields{grid-template-columns:repeat(3,minmax(0,1fr));grid-column:1/-1}
 .masterplan-camera-fields label:last-child{grid-column:auto}
 .masterplan-camera-fields input,.masterplan-camera-panel button{padding:6px;font-size:10px}
}
.masterplan-toolbar .masterplan-clear-measures{display:inline-flex;align-items:center;gap:6px;color:var(--red);border-color:color-mix(in srgb,var(--red) 45%,var(--line));background:color-mix(in srgb,var(--red) 10%,var(--panel))}
.masterplan-toolbar .masterplan-clear-measures:hover:not(:disabled){background:color-mix(in srgb,var(--red) 20%,var(--panel))}
.masterplan-clear-measures .ui-icon{width:14px;height:14px;flex:none}
.masterplan-actions{flex-wrap:wrap}
.masterplan-public-lots{display:inline-flex;align-items:center;gap:7px;margin:0;padding:7px 9px;border:1px solid var(--line);border-radius:9px;cursor:pointer;font-size:11px;color:var(--text)}
.masterplan-public-lots input{margin:0;width:auto}
.masterplan-base{cursor:move}
.masterplan-base rect{fill:none;stroke:transparent;stroke-width:2;stroke-dasharray:7 5;vector-effect:non-scaling-stroke;pointer-events:none}
.masterplan-base:is(.selected,:focus-visible) rect{stroke:var(--accent)}
.masterplan-base:focus{outline:none}
.masterplan-scale-handle{display:none;fill:var(--panel);stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke;cursor:nwse-resize}
.masterplan-base.selected .masterplan-scale-handle{display:block}
.masterplan-stage.locating .masterplan-scale-handle{pointer-events:none}
.tour-preload{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(13px,3vh,28px);padding:22px;color:#f6f7f9;background:#111419;text-align:center}
.viewer-mode .tour-preload{position:absolute}
.tour-starting > :not(.tour-preload,.pano){visibility:hidden}
.tour-preload [hidden]{display:none}
.tour-preload-logo{display:block;max-width:min(64%,250px);max-height:clamp(38px,15vh,100px);object-fit:contain}
.tour-preload-name{font-size:clamp(16px,4vw,25px);font-weight:600;overflow-wrap:anywhere}
.tour-preload-progress{--tour-load:0%;position:relative;display:grid;place-items:center;font-size:clamp(31px,8vw,57px);font-weight:350;font-variant-numeric:tabular-nums;line-height:1}
.tour-preload[data-style=ring] .tour-preload-progress{width:min(160px,54vw,41vh);aspect-ratio:1;border-radius:50%;background:conic-gradient(#f6f7f9 var(--tour-load),#3a4149 0)}
.tour-preload[data-style=ring] .tour-preload-progress::before{content:"";position:absolute;inset:5px;border-radius:50%;background:#111419}
.tour-preload[data-style=ring] .tour-preload-progress span{position:relative}
.tour-preload[data-style=bar] .tour-preload-progress{width:min(70%,300px);padding-bottom:22px}
.tour-preload[data-style=bar] .tour-preload-progress::after{content:"";position:absolute;inset:auto 0 0;height:5px;border-radius:99px;background:linear-gradient(to right,#f6f7f9 var(--tour-load),#3a4149 0)}
.tour-preload p{margin:0;color:#c3c8d0;font-size:11px;letter-spacing:.15em;text-transform:uppercase}
.tour-preload button{color:#f6f7f9;border-color:#4a535e;background:#242a32}
.tour-preload-close{position:absolute;top:14px;right:14px}
