:root{color:#1f2a37;background:#f2f5f8;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;width:100%;height:100%}button,input,textarea{font:inherit}.app-shell{width:100%;height:100%;display:grid;grid-template-columns:290px minmax(0,1fr) 360px;gap:12px;padding:12px}.workspace-panel,.render-panel,.right-panel{background:#fff;border:1px solid #d5d9de;border-radius:10px;min-width:0;min-height:0}.workspace-panel,.right-panel{padding:12px;overflow:auto}.render-panel{display:flex;flex-direction:column;overflow:hidden}h2,h3,h4{margin:0 0 8px}h2{font-size:1.15rem}h3{font-size:.95rem}h4{font-size:.82rem}.panel-section{margin-top:10px;padding:10px;border:1px solid #dbe1e7;border-radius:8px;background:#f9fbfc}.panel-section:first-of-type{margin-top:0}.panel-note{margin:0 0 8px;font-size:.8rem;color:#4a5a6a;line-height:1.35}.workflow-summary{margin-bottom:8px;padding:8px;border:1px solid #d2dbe4;border-radius:6px;background:#f3f6f9;font-size:.8rem;color:#334556;line-height:1.4;display:grid;gap:2px}.workflow-summary.template{border-color:#bfd7c5;background:#ecf7ef}.workflow-summary.instance{border-color:#bcd2e3;background:#edf4fb}.mode-toggle{background:#edf3f8;border-color:#bfd1de;color:#213649}.mode-toggle.active{background:#2f6e99;border-color:#2f6e99;color:#fff}.advanced-section summary{cursor:pointer;font-size:.85rem;font-weight:600;color:#3d4f60;margin-bottom:8px}.advanced-section[open] summary{margin-bottom:10px}.field-label{margin-top:8px;margin-bottom:4px;display:block;font-size:.82rem;color:#4a5561}input,button,textarea{width:100%;border:1px solid #c4cad2;border-radius:6px;padding:8px 10px}button{background:#2f6e99;color:#fff;border-color:#2f6e99;cursor:pointer}button:disabled{opacity:.65;cursor:not-allowed}.button-row{margin-top:8px;display:grid;grid-template-columns:1fr 1fr;gap:8px}.zone-list,.instance-list{margin-top:8px;display:grid;gap:6px}.zone-item{text-align:left;background:#edf3f8;border-color:#bfd1de;color:#213649}.zone-item.active{background:#2f6e99;border-color:#2f6e99;color:#fff}.instance-item{text-align:left;background:#edf3f8;border-color:#bfd1de;color:#213649;display:grid;gap:4px}.instance-item span{font-size:.72rem}.instance-item.active{background:#2f6e99;border-color:#2f6e99;color:#fff}.instance-current{border:1px solid #d5dde5;border-radius:6px;background:#f4f7fa;padding:8px 10px;font-size:.8rem;color:#334556}.instance-id-row{font-family:Consolas,Courier New,monospace;font-size:.72rem;color:#4d5d6d}.instance-item.active .instance-id-row{color:#ffffffe6}.instance-current-badge{justify-self:start;border:1px solid #9ec3de;border-radius:999px;padding:1px 8px;font-size:.68rem;font-weight:600;background:#e7f1f9;color:#27557a}.instance-item.active .instance-current-badge{border-color:#ffffffa6;background:#fff3;color:#fff}.instance-advanced-unavailable{margin-top:8px;border:1px dashed #c8d0d8;border-radius:6px;padding:8px;background:#f6f8fa;font-size:.75rem;color:#516171;display:grid;gap:4px}.instance-unavailable-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.instance-inline-action{width:auto;padding:4px 8px;font-size:.72rem;background:#edf3f8;border-color:#bfd1de;color:#213649}.instance-character-list{display:grid;gap:6px}.instance-character-item{border:1px solid #d5dde5;border-radius:6px;background:#f4f7fa;padding:8px 10px;display:grid;gap:3px}.instance-character-meta{font-size:.74rem;color:#506172}.zone-empty{padding:10px;border:1px dashed #c7cdd4;border-radius:6px;font-size:.88rem;color:#6f7c89}.meta-block{margin-top:12px}.meta-block pre{margin:0;max-height:160px;overflow:auto;background:#f6f8fa;border:1px solid #e0e5ea;border-radius:6px;padding:8px;font-size:.76rem}.status-row{border-bottom:1px solid #dbe0e5;padding:10px 12px;font-size:.86rem;color:#425466;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}.status-context{font-size:.74rem;color:#5b6c7c;border:1px solid #d5dde5;border-radius:999px;background:#f4f7fa;padding:2px 9px;white-space:nowrap}.dirty-indicator{border:1px solid #cad1d8;border-radius:999px;padding:3px 10px;font-size:.74rem;font-weight:600;white-space:nowrap}.dirty-indicator.clean{background:#e9f4ea;border-color:#b6d8bb;color:#235930}.dirty-indicator.dirty{background:#fdf2e6;border-color:#efc79e;color:#8b4a0f}.dirty-indicator.neutral{background:#f3f5f7;color:#516171}.editor-toolbar{border-bottom:1px solid #dbe0e5;padding:8px 12px;display:flex;flex-direction:column;align-items:start;gap:10px 12px;background:#f7fafc}.toolbar-section{position:relative;z-index:0;display:flex;flex-direction:column;gap:8px;width:100%;min-width:0;padding:10px 12px;border:1px solid #dbe0e5;border-radius:10px;background:#fff;box-shadow:0 1px #0f172a08}.toolbar-section:has(.roof-color-menu[open]){z-index:40}.toolbar-section-label{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#607284}.toolbar-section-body{display:flex;flex-direction:column;gap:8px;min-width:0}.toolbar-section-body-inline{flex-direction:row;align-items:center;flex-wrap:nowrap;overflow-x:auto}.toolbar-section-body-tools,.toolbar-section-body-properties{gap:12px}.toolbar-section-body-inline.toolbar-section-body-properties{overflow:visible}.toolbar-section-empty{font-size:.78rem;color:#607284}.toolbar-group{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.toolbar-section-body-inline .toolbar-group,.toolbar-section-body-inline .portal-subtypes,.toolbar-section-body-inline .portal-opts{flex-wrap:nowrap;flex:0 0 auto}.toolbar-section-body-inline .properties-rename-group{margin-left:auto}.toolbar-section-body-inline .property-summary-group,.toolbar-section-body-inline .building-properties-strip{flex:0 0 auto;flex-wrap:nowrap}.toolbar-button{width:auto;min-width:78px;padding:6px 10px;font-size:.82rem;background:#edf3f8;border-color:#bfd1de;color:#213649}.toolbar-button.active{background:#2f6e99;border-color:#2f6e99;color:#fff}.toolbar-snap-options{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.toolbar-snap-options .snap-option{width:auto;padding:6px 8px;font-size:.75rem}.toolbar-meta{grid-column:1 / -1;font-size:.8rem;color:#4d5d6d;padding:0 2px}.toolbar-floor-view-group{display:flex;align-items:flex-start;gap:8px;flex:0 0 auto;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}.toolbar-stacked-control{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}.toolbar-stacked-control .portal-label{margin:0;line-height:1.1}.toolbar-stacked-empty{line-height:1.3;white-space:nowrap}.toolbar-zone-secondary-grid{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:start}.toolbar-floor-stack-editor,.toolbar-underlay-editor{width:100%;min-width:0}.toolbar-floor-stack-summary{list-style:none;display:flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.toolbar-floor-stack-summary::-webkit-details-marker{display:none}.toolbar-floor-stack-summary-note{font-size:.76rem;color:#607284;font-weight:600}.toolbar-underlay-summary{list-style:none;display:flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.toolbar-underlay-summary::-webkit-details-marker{display:none}.toolbar-underlay-summary-note{font-size:.76rem;color:#607284;font-weight:600}.toolbar-floor-stack-content,.toolbar-underlay-content{display:flex;flex-direction:column;gap:8px;margin-top:8px}.toolbar-floor-stack-header,.toolbar-underlay-header{display:flex;align-items:center;gap:8px}.toolbar-floor-stack-rows,.toolbar-underlay-rows{display:flex;flex-direction:column;gap:6px}.toolbar-floor-stack-row,.toolbar-underlay-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.toolbar-floor-stack-ref-note,.toolbar-underlay-note{font-size:.72rem;color:#607284}.toolbar-underlay-enabled,.toolbar-underlay-apply-all{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;color:#334155}.toolbar-underlay-mode{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:700;color:#3d4e60;background:#e7eef5;border:1px solid #c3d4e1}.toolbar-underlay-mode.active{color:#0f3556;background:#d8e9f8;border-color:#7fb0dc}.toolbar-inline-select.floor-view-select{min-width:190px}.toolbar-inline-select.underlay-asset-tools-select{min-width:170px}.toolbar-inline-select.roof-light-tools-select{min-width:174px}.underlay-active-select{min-width:220px}.underlay-asset-select{min-width:180px}.underlay-label-input{width:180px}.underlay-opacity-tools-range,.world-opacity-tools-range{width:110px}.underlay-scale-input,.underlay-rotation-input,.underlay-anchor-input{width:88px}.portal-subtypes,.portal-opts{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.toolbar-chip{width:auto;min-width:52px;padding:5px 8px;font-size:.76rem;background:#edf3f8;border-color:#bfd1de;color:#213649}.toolbar-chip.active{background:#2f6e99;border-color:#2f6e99;color:#fff}.portal-label{font-size:.72rem;color:#4f5f6f;font-weight:600;margin-left:4px}.property-kind-badge{display:inline-flex;align-items:center;justify-content:center;min-width:62px;padding:4px 8px;border-radius:999px;background:#dcebf6;color:#174464;font-size:.72rem;font-weight:700}.property-kind-badge.building{background:#e5efe2;color:#315237}.property-kind-badge.roof{background:#ece6d9;color:#6a4d1f}.property-kind-badge.muted{background:#e5e7eb;color:#475569}.property-readout{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:8px;background:#f7fafc;color:#1f2937;font-size:.76rem;white-space:nowrap}.roof-light-readout{overflow:visible}.toolbar-inline-select{min-width:148px;padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px;font-size:.75rem;background:#fffdf7;color:#1f2937}.toolbar-inline-text{min-width:128px;padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px;font-size:.75rem;background:#fffdf7;color:#1f2937}.toolbar-inline-number{width:68px;padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px;font-size:.75rem;background:#fffdf7;color:#1f2937}.floor-stack-id-input{width:124px}.floor-stack-label-input{width:168px}.floor-stack-level-input{width:74px}.toolbar-inline-range{width:110px}.portal-note{font-size:.75rem;color:#6d4a12}.building-roof-controls{flex-wrap:nowrap;flex:0 0 auto}.building-properties-panel{display:flex;flex-direction:column;gap:8px;min-width:0;width:100%}.building-properties-main-row,.building-properties-dormer-row,.building-properties-chimney-row{display:flex;align-items:center;gap:12px;min-width:0;overflow-x:auto}.building-properties-style-row{display:flex;align-items:center;gap:12px;min-width:0;overflow:visible}.building-properties-style-row{padding-top:4px;border-top:1px solid #e4e9ee}.building-roof-style-controls{flex-wrap:nowrap;flex:0 0 auto}.building-dormer-controls,.building-chimney-controls{flex-wrap:nowrap;flex:0 0 auto;padding-top:4px;border-top:1px solid #e4e9ee}.dormer-readout{gap:8px}.dormer-side-layout{gap:8px;flex-wrap:nowrap}.dormer-count-input{width:60px}.dormer-inset-input{width:72px}.dormer-layout-note{white-space:nowrap}.chimney-readout{gap:8px}.chimney-select{min-width:120px}.chimney-layout-note{white-space:nowrap}.dormer-select{min-width:126px}.dormer-side-select{min-width:84px}.portal-link-editor{display:flex;align-items:flex-start;flex-direction:column;gap:6px;flex-wrap:wrap}.portal-link-summary,.portal-link-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.portal-link-topline{justify-content:space-between}.portal-link-field{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.portal-link-zone-field{margin-left:auto}.portal-link-input{min-width:120px;padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px;font-size:.75rem;background:#fffdf7;color:#1f2937}.properties-rename-input{min-width:148px;padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px;font-size:.75rem;background:#fffdf7;color:#1f2937}.properties-rename-input:disabled{background:#f4f7fa;color:#7b8794}.roof-color-menu{position:relative;z-index:1}.roof-color-menu.disabled{pointer-events:none;opacity:.6}.roof-color-menu-summary{list-style:none;min-width:182px;padding:4px 8px;border:1px solid #cbd5e1;border-radius:6px;font-size:.75rem;background:#fffdf7;color:#1f2937;display:inline-flex;align-items:center;gap:8px;cursor:pointer}.roof-color-menu-summary::-webkit-details-marker{display:none}.roof-color-menu-list{position:absolute;top:calc(100% + 4px);left:0;z-index:80;min-width:214px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;box-shadow:0 8px 20px #0f172a24;padding:6px;display:grid;gap:4px}.roof-color-menu-option{border:1px solid transparent;border-radius:6px;background:#fff;color:#1f2937;padding:5px 7px;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;text-align:left;font-size:.75rem}.roof-color-menu-option:hover{border-color:#bfdbfe;background:#eff6ff}.roof-color-menu-option.active{border-color:#93c5fd;background:#dbeafe}.roof-color-swatch{width:20px;height:12px;border-radius:3px;border:1px solid rgba(15,23,42,.28);display:inline-block;flex:0 0 auto}.roof-color-hex-input{width:102px;min-width:102px;padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px;font-size:.75rem;background:#fffdf7;color:#1f2937;text-transform:uppercase}.roof-color-sampler-button{min-width:56px}.portal-link-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:999px;background:#e5e7eb;color:#334155;font-size:.72rem;font-weight:700}.portal-link-badge.linked{background:#dbeafe;color:#1d4ed8}.portal-link-meta{font-size:.75rem;color:#475569}.portal-link-shared-id{font-family:Cascadia Code,Consolas,monospace;color:#0f172a}.render-surface{position:relative;flex:1;min-height:0;background:linear-gradient(180deg,#fbfcfd,#f0f4f8)}.party-strip{position:absolute;top:10px;left:12px;right:12px;z-index:3;display:flex;gap:8px;overflow-x:auto;padding:2px;pointer-events:none}.party-chip{width:auto;min-width:132px;max-width:180px;display:grid;gap:4px;text-align:left;padding:8px 10px;background:#f7fafcf0;border:1px solid #c6d3df;color:#213649;box-shadow:0 3px 10px #111d2b1f;pointer-events:auto}.party-chip.active{background:#2f6e99f0;border-color:#2f6e99;color:#fff}.party-chip-head,.party-chip-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}.party-chip-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.party-chip-hotkey{border:1px solid #b6c8d6;border-radius:999px;padding:1px 7px;font-size:.68rem;font-weight:700;background:#edf3f8;color:#355570;flex:0 0 auto}.party-chip.active .party-chip-hotkey{border-color:#fff9;background:#ffffff2e;color:#fff}.party-chip-meta{font-size:.72rem;color:#4d5d6d}.party-chip.active .party-chip-meta,.party-chip.active .instance-id-row{color:#ffffffe6}.zone-svg{width:100%;height:100%;display:block;touch-action:none;-webkit-user-select:none;user-select:none}.zone-svg.pannable{cursor:grab}.zone-svg.sample-mode{cursor:default}.roof-color-sample-box{fill:#5488bf2e;stroke:#2b6ea9;stroke-width:1.15;stroke-dasharray:5 3;pointer-events:none}.zone-svg.draw-mode{cursor:default}.zone-svg.panning{cursor:grabbing}.world-pane{fill:#fcfdfe}.zone-underlay-image{image-rendering:auto}.zone-underlay-calibration-markers{pointer-events:none}.underlay-world-anchor-cross{stroke:#0f4f8f;stroke-width:1.45;opacity:.94}.underlay-world-anchor-ring{fill:#205fa324;stroke:#2b6ea9;stroke-width:1.15}.underlay-image-anchor-ring{fill:#ffffff52;stroke:#b7601f;stroke-width:1.15}.underlay-anchor-ring-active{stroke-width:1.9}.underlay-world-anchor-marker{fill:#d9ecff;stroke:#0f4f8f;stroke-width:1.35}.underlay-image-anchor-marker{fill:#ffd9b8;stroke:#9b4b10;stroke-width:1.25}.underlay-world-anchor-hit-area,.underlay-image-anchor-hit-area{fill:transparent;stroke:none;pointer-events:auto}.underlay-world-anchor-hit-area{cursor:grab}.underlay-world-anchor-hit-area:active{cursor:grabbing}.underlay-image-anchor-hit-area{cursor:crosshair}.zone-world-geometry-layer{transition:opacity .12s ease-out}.axis-band{fill:#eef2f6}.grid-line{stroke:#d7dce1;stroke-width:1}.axis-main{stroke:#8e9ba7;stroke-width:1}.axis-tick{stroke:#7d8b97;stroke-width:1}.axis-label{fill:#5a6674;font-size:10px;pointer-events:none}.axis-unit{fill:#4d5b69;font-size:10px;font-weight:600;pointer-events:none}.building{fill:#5a616b80;stroke:#2f3640;stroke-width:.9;cursor:pointer;vector-effect:non-scaling-stroke}.building-shared-projected{stroke-dasharray:2.2 1.4}.building-shadow,.building-extrusion{pointer-events:none}.building-extrusion-face{pointer-events:none;stroke:none}.building-extrusion-face-active{filter:saturate(1.06)}.roof-plane{stroke-width:.22;vector-effect:non-scaling-stroke;opacity:1}.roof-plane-a{fill:#b68858ad}.roof-plane-b{fill:#997047c7}.roof-plane-selected{stroke-width:.32;opacity:1}.roof-ridge-underlay,.roof-ridge{stroke-linecap:round;vector-effect:non-scaling-stroke}.roof-ridge-selected{filter:saturate(1.08)}.roof-dormer-plane{stroke-width:.18;vector-effect:non-scaling-stroke;opacity:1}.roof-dormer-plane-active{stroke-width:.24}.roof-dormer-outline{fill:none;stroke-width:.18;vector-effect:non-scaling-stroke}.roof-dormer-outline-active{stroke-width:.24}.roof-dormer-ridge{stroke:#5a3310;stroke-linecap:round;vector-effect:non-scaling-stroke}.roof-dormer-ridge-active{stroke:#7e0d05}.roof-chimney-face{stroke-width:.18;vector-effect:non-scaling-stroke;opacity:1}.roof-chimney-face-active{stroke-width:.24}.roof-chimney-top,.roof-chimney-top-active,.roof-chimney-shaft,.roof-chimney-shaft-active,.roof-chimney-opening,.roof-chimney-opening-active{stroke:none}.roof-chimney-outline{fill:none;stroke-width:.16;vector-effect:non-scaling-stroke}.roof-chimney-outline-active{stroke-width:.22}.roof-chimney-roof-shadow{stroke:none}.roof-dormer-handle{fill:#fff5d9;stroke:#8d4e1b;stroke-width:.24;cursor:move}.roof-dormer-handle-active{fill:#de9132;stroke:#6c3305}.roof-handle{fill:#fff4df;stroke:#7b4f19;stroke-width:.24;cursor:move}.roof-handle-active{fill:#c98937;stroke:#5d3209}.roof-chimney-handle{fill:#f8efe2;stroke:#6f3c12;stroke-width:.24;cursor:move}.roof-chimney-handle-active{fill:#d98d35;stroke:#532908}.floor-surface{fill:#91765838;stroke:#6c533959;stroke-width:.5;vector-effect:non-scaling-stroke;cursor:pointer}.floor-selected{fill:#c85f2d61;stroke:#7e0d05;stroke-width:.7}.street-surface-area{stroke-width:.48;vector-effect:non-scaling-stroke;cursor:pointer}.street-surface-kind-street{fill:#787d8480;stroke:#555e6a9e}.street-surface-kind-sidewalk{fill:#99928473;stroke:#6f685a99}.street-surface-selected{stroke:#8b3b18f2;stroke-width:.68;filter:saturate(1.08)}.space-surface{fill:#588d9133;stroke:#39686c66;stroke-width:.5;vector-effect:non-scaling-stroke;cursor:pointer}.space-selected{fill:#3e99a454;stroke:#0f5d6a;stroke-width:.7}.space-edge{stroke-width:.28;vector-effect:non-scaling-stroke;pointer-events:none}.space-edge-wall{stroke:#1f4f59}.space-edge-opening{stroke:#1c8c95;stroke-dasharray:.7 .5}.prop{fill:#ca7b28;stroke:#7a4309;stroke-width:.35;cursor:pointer;vector-effect:non-scaling-stroke}.actor{cursor:pointer;vector-effect:non-scaling-stroke}.movement-path{fill:none;stroke:#2f6e99;stroke-width:.45;stroke-dasharray:2 1.2;vector-effect:non-scaling-stroke;pointer-events:none}.actor-player{fill:#3f7fd9;stroke:#173c73;stroke-width:.35}.actor-npc{fill:#4f7d57;stroke:#2e4c34;stroke-width:.35}.actor-selected{stroke:#7e0d05;stroke-width:.6}.selected{fill:#e9423699;stroke:#7e0d05;stroke-width:1.2}.vertex-handle{fill:#f7fbff;stroke:#1c5680;stroke-width:.28;cursor:move}.vertex-handle-active{fill:#2f6e99;stroke:#0f3550}.vertex-edge-hit-area{stroke:#0000;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:copy;stroke-linecap:round}.portal{stroke-width:2.2;vector-effect:non-scaling-stroke;pointer-events:none;stroke-linecap:round}.portal-hit-area{stroke:#0000;stroke-width:11;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:pointer;stroke-linecap:round}.portal-door{stroke:#1f4f7d;stroke-width:6.6}.portal-door-open{stroke:#1f6a47}.portal-door-closed{stroke:#1f4f7d}.portal-door-locked{stroke:#8d2d2d}.portal-window{stroke:#2b7662;stroke-dasharray:1.2 .9}.portal-gate{stroke:#6d6d6d}.portal-shared-shell{stroke-linecap:butt;stroke-dasharray:.9 .6}.portal-selected{stroke:#7e0d05}.portal-door-swing{stroke:#1f4f7d;stroke-width:.45;vector-effect:non-scaling-stroke;pointer-events:none}.portal-preview-edge{stroke:#d17c1f;stroke-width:.4;vector-effect:non-scaling-stroke}.portal-preview-span{stroke-width:2;vector-effect:non-scaling-stroke;stroke-linecap:round}.portal-preview-door{stroke:#2f6e99}.portal-preview-window{stroke:#2f876e;stroke-dasharray:1.1 .9}.portal-preview-anchor{fill:#fff;stroke:#2f6e99;stroke-width:.3;pointer-events:none}.poly-draft-line{fill:none;stroke:#22c55e;stroke-width:.56;vector-effect:non-scaling-stroke}.poly-draft-preview{stroke:#22c55e;stroke-width:.5;stroke-dasharray:1.6 1.1;vector-effect:non-scaling-stroke}.poly-draft-point{fill:#fff;stroke:#16a34a;stroke-width:.38;vector-effect:non-scaling-stroke}.poly-draft-start{fill:#d8ffe8;stroke:#15803d}.empty-overlay{position:absolute;top:42px;left:68px;background:#ffffffe0;border:1px solid #d1d8de;border-radius:8px;padding:8px 10px;font-size:.85rem;color:#526476;pointer-events:none}.underlay-calibration-overlay{position:absolute;top:42px;left:68px;z-index:2;display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border-radius:8px;background:#0d1e2fc2;color:#f7fbff;font-size:.72rem;font-weight:600;box-shadow:0 2px 10px #09141e3d;pointer-events:none}.right-panel{display:grid;grid-template-rows:minmax(180px,1fr) auto minmax(220px,1fr);gap:10px}.right-panel>*{min-width:0}.panel-block{border:1px solid #dbe1e7;border-radius:8px;padding:10px;min-width:0;min-height:0}.panel-block pre{margin:0;height:calc(100% - 24px);overflow:auto;background:#f6f8fa;border:1px solid #e0e5ea;border-radius:6px;padding:8px;font-size:.76rem}.actions-grid{display:grid;gap:8px;min-width:0}.snap-option{background:#edf3f8;border-color:#bfd1de;color:#213649;padding:6px 4px;font-size:.78rem}.snap-option.active{background:#2f6e99;border-color:#2f6e99;color:#fff}.zone-meta-summary{margin-top:8px;padding:8px;border:1px solid #d7dde4;border-radius:6px;background:#f6f8fa;color:#425466;font-size:.8rem;line-height:1.4;min-width:0;overflow-wrap:anywhere;word-break:break-word}.log-block textarea{margin-top:4px;height:calc(100% - 26px);resize:none;background:#f6f8fa;font-size:.75rem;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}@media(max-width:1250px){.app-shell{grid-template-columns:1fr;grid-template-rows:auto minmax(360px,1fr) auto}.right-panel{grid-template-rows:auto auto auto}}@media(max-width:980px){.toolbar-zone-secondary-grid{grid-template-columns:1fr}}
