:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:radial-gradient(circle at top left,rgba(14,165,233,.15),transparent 24%),linear-gradient(180deg,#08111f,#050a14);color:#e2e8f0}*{box-sizing:border-box}html,body,#root{margin:0;width:100%;height:100%;min-height:100dvh;overflow:hidden}body{background:transparent;overflow:hidden}button,input,select{font:inherit}button{border:1px solid #243247;background:#0a1220eb;color:#e2e8f0;border-radius:10px;padding:.62rem .85rem;cursor:pointer;transition:background .14s ease,border-color .14s ease,transform .14s ease,box-shadow .14s ease}button:hover:not(:disabled){background:#0f1c30fa;border-color:#3b82f6;transform:translateY(-1px)}button:disabled{opacity:.4;cursor:not-allowed;transform:none}button.active{border-color:#38bdf8;background:linear-gradient(180deg,#0c4a6eeb,#092e4afa);box-shadow:inset 0 0 0 1px #7dd3fc26}input,select{width:100%;border:1px solid #243247;border-radius:10px;background:#020a15f5;color:#e2e8f0;padding:.6rem .7rem;outline:none}input:focus,select:focus{border-color:#38bdf8;box-shadow:0 0 0 3px #38bdf81f}.app-shell{--right-dock-width: 340px;display:grid;grid-template-columns:minmax(0,1fr) var(--right-dock-width);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"topbar topbar" "viewport right";width:100%;height:100dvh;min-height:100dvh;max-height:100dvh;gap:10px;padding:10px;overflow:hidden}.app-shell.inspector-closed{--right-dock-width: 28px}.workspace-topbar,.viewport-shell,.right-dock{min-height:0;min-width:0}.workspace-topbar{grid-area:topbar;position:relative;z-index:20;display:flex;align-items:center;gap:.75rem;padding:.55rem .75rem;border:1px solid rgba(51,65,85,.6);border-radius:18px;background:linear-gradient(180deg,#050c16fa,#07101cf0);box-shadow:inset 0 1px #ffffff0a,0 12px 30px #02081740;overflow:visible}.topbar-brand{position:relative;display:flex;align-items:center;min-width:0}.topbar-brand h1{margin:0;font-size:1rem;line-height:1}.topbar-actions{display:flex;align-items:center;gap:.45rem;flex-wrap:nowrap;justify-content:flex-end;margin-left:auto}.topbar-toggle{white-space:nowrap}.icon-toolbar{display:flex;align-items:center;gap:.3rem;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:visible;padding:0 .2rem;scrollbar-width:none}.icon-toolbar::-webkit-scrollbar{display:none}.icon-toolbar.menu-open{overflow:visible}.toolbar-menu{position:relative;display:flex}.studio-launch{display:inline-flex;align-items:center;justify-content:center;gap:.3rem;padding:.35rem .5rem;border-radius:10px;white-space:nowrap}.studio-launch:after{content:"";width:.35rem;height:.35rem;border-right:1.4px solid currentColor;border-bottom:1.4px solid currentColor;transform:rotate(45deg) translateY(-1px);transition:transform .14s ease}.studio-launch.active:after{transform:rotate(-135deg) translate(-1px,-1px)}.toolbar-dropdown{position:absolute;top:calc(100% + 10px);left:0;width:min(420px,78vw);max-height:min(72vh,760px);overflow:hidden;z-index:30}.toolbar-dropdown-scroll{overflow:auto;min-height:0;max-height:calc(min(72vh,760px) - 1.8rem);padding-right:.2rem}.command-menu{width:min(260px,72vw);padding:.4rem}.command-menu-item{width:100%;display:flex;align-items:center;justify-content:flex-start;padding:.72rem .8rem;border:0;border-radius:12px;background:transparent;box-shadow:none}.command-menu-item:hover:not(:disabled),.command-menu-item.active{background:#1e293bcc;transform:none}.command-menu-separator{height:1px;margin:.35rem .15rem;background:#475569b3}.command-menu-inline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.icon-tool{display:grid;place-items:center;width:2.2rem;min-width:2.2rem;height:2.2rem;padding:0;border-radius:10px}.icon-tool svg{width:.95rem;height:.95rem}.icon-tool svg path,.icon-tool svg circle,.icon-tool svg rect,.icon-tool svg polygon,.icon-tool svg polyline{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.toolbar-separator{width:1px;height:1.35rem;margin:0 .2rem;background:#475569e6}.chip-row{display:flex;flex-wrap:wrap;gap:.45rem}.info-chip{padding:.3rem .55rem;border-radius:999px;border:1px solid rgba(56,189,248,.22);background:#0c1523e6;color:#cbd5e1;font-size:.72rem}.segmented-control{display:inline-grid;grid-auto-flow:column;gap:.35rem;padding:.2rem;border:1px solid #243247;border-radius:14px;background:#040a14e6}.segmented-control button{padding:.38rem .58rem;min-width:46px;white-space:nowrap}.left-dock{min-height:0;min-width:0}.left-dock.hidden-tray,.right-dock.hidden-tray{display:none}.left-dock.studio-tray,.right-dock{grid-area:right;display:grid;gap:10px;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.right-dock.is-collapsed{justify-items:stretch}.right-dock-toggle{min-height:100%;padding:.65rem .35rem;writing-mode:vertical-rl;text-orientation:mixed;border-radius:16px}.left-dock.studio-tray .right-dock-toggle,.right-dock:not(.is-collapsed) .right-dock-toggle{min-height:auto;writing-mode:horizontal-tb;text-orientation:initial;border-radius:14px}.dock-card{border:1px solid rgba(51,65,85,.58);border-radius:20px;background:linear-gradient(180deg,#08101ef5,#060c17f0);box-shadow:inset 0 1px #ffffff0a,0 12px 30px #02081733;padding:.85rem}.dock-fill{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0}.dock-scroll{overflow:auto;min-height:0;padding-right:.15rem;overflow-wrap:anywhere}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.55rem}.panel-header h2{margin:.12rem 0 0;font-size:.94rem}.panel-kicker{display:block;color:#38bdf8;font-size:.7rem;text-transform:uppercase;letter-spacing:.14em}.panel-subheader{margin-top:.2rem;color:#f8fafc;font-size:.8rem;text-transform:uppercase;letter-spacing:.12em}.panel-copy,.dock-card p,.dock-card li{color:#cbd5e1;font-size:.8rem}.tool-grid,.compact-grid,.stats-grid,.alignment-tool-banner{margin-top:12px;padding:10px 12px;border-radius:8px;border:1px solid rgba(167,139,250,.45);background:#581c8733}.panel-subheader.subtle{margin-top:8px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8f2}.inline-text-button{display:inline-flex;width:auto;min-height:auto;padding:2px 8px;margin:0 2px;font-size:inherit;vertical-align:baseline}.profile-mini-chart-bg{fill:#0f172ad9;stroke:#a78bfa59;stroke-width:1}.profile-mini-chart-line{stroke:#c4b5fd;stroke-width:2;vector-effect:non-scaling-stroke}.pvi-table{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow-y:auto}.pvi-row{display:grid;grid-template-columns:1fr 1fr .7fr .7fr auto;gap:6px;align-items:end}.pvi-row label{font-size:10px}.pvi-remove{margin-bottom:2px;padding:4px 8px}.kbd-hint{display:inline-block;padding:.1em .35em;font-size:.85em;font-family:ui-monospace,monospace;border:1px solid rgba(148,163,184,.5);border-radius:4px;background:#0f172a99}.inspector-actions,.bottom-grid{display:grid;gap:.55rem}.tool-grid,.compact-grid,.stats-grid,.inspector-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.studio-tray .compact-grid,.studio-tray .stats-grid,.studio-tray .inspector-actions{grid-template-columns:1fr}.studio-tray .dock-card{padding:.75rem}.studio-tray .dock-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.studio-tray .dock-tabs button,.studio-tray .inspector-actions button,.studio-tray .list-button{min-width:0;max-width:100%;white-space:normal;word-break:break-word;overflow-wrap:anywhere;line-height:1.3}.studio-tray .dock-tabs button{padding:.48rem .55rem}.studio-tray .panel-copy,.studio-tray .list-button span,.studio-tray .point-picker-item span,.studio-tray .inspector-id,.studio-tray code{overflow-wrap:anywhere}.studio-tray .form-grid,.studio-tray label,.studio-tray .panel-copy,.studio-tray .panel-subheader{min-width:0}.studio-tray .point-picker-item{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start}.bottom-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid{display:grid;gap:.6rem}.form-grid label{display:grid;gap:.32rem;font-size:.8rem;color:#cbd5e1}.checkbox-row{display:flex!important;align-items:center;gap:.5rem}.checkbox-row input{width:auto}.stat-tile{padding:.8rem;border:1px solid rgba(51,65,85,.65);border-radius:16px;background:#040a14d1}.stat-tile span{display:block;margin-bottom:.3rem;color:#94a3b8;font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}.stat-tile strong{font-size:1.2rem}.list-button{width:100%;text-align:left}.list-button span{display:block;margin-top:.26rem;color:#94a3b8;font-size:.72rem}.query-list{list-style:none;margin:0;padding:0}.query-list li+li{margin-top:.55rem}.layer-list{display:grid;gap:.55rem}.layer-list li+li{margin-top:0}.layer-row{display:grid;gap:.45rem;padding:.55rem;border:1px solid rgba(51,65,85,.72);border-radius:14px;background:#080f1cd1}.layer-row.is-active{border-color:#38bdf8b8;box-shadow:inset 0 0 0 1px #38bdf82e}.layer-row-header{display:grid;gap:.45rem}.layer-row-main{border:0;background:transparent;box-shadow:none;padding:0;transform:none!important}.layer-row-main:hover:not(:disabled){background:transparent;border-color:transparent}.layer-row-title{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.6rem;align-items:center}.layer-row-title strong{display:block;color:#f8fafc;font-size:.84rem;line-height:1.2}.layer-row-title span{display:block;margin-top:.18rem;color:#94a3b8;font-size:.72rem}.layer-color-swatch{width:.8rem;height:.8rem;border-radius:999px;border:1px solid rgba(255,255,255,.28);box-shadow:0 0 0 2px #0f172ae6}.layer-state-badges{display:flex;flex-wrap:wrap;gap:.35rem}.layer-badge{display:inline-flex;align-items:center;min-height:1.35rem;padding:0 .48rem;border-radius:999px;border:1px solid rgba(71,85,105,.7);background:#0f172ad1;color:#cbd5e1;font-size:.68rem;letter-spacing:.03em;text-transform:uppercase}.layer-badge.is-current{border-color:#38bdf885;background:#082f49d1;color:#bae6fd}.layer-quick-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.layer-quick-actions button{min-width:0;padding:.42rem .45rem;border-radius:10px;font-size:.73rem;line-height:1.15}.point-picker-list{display:grid;gap:.35rem;max-height:150px;overflow:auto;padding-right:.2rem}.point-picker-item{display:flex;align-items:center;gap:.45rem;font-size:.78rem;color:#cbd5e1}.point-picker-item input{margin:0}.surface-source-table{width:100%;border-collapse:collapse;font-size:.78rem}.surface-source-table th,.surface-source-table td{padding:.38rem .3rem;border-bottom:1px solid rgba(148,163,184,.18);text-align:left;vertical-align:top}.surface-source-table th{color:#94a3b8;font-weight:600}.surface-source-table td{color:#cbd5e1}.data-table-shell{overflow:auto;border:1px solid rgba(51,65,85,.7);border-radius:14px;background:#02081773}.editable-data-table{min-width:760px}.editable-data-table th{position:sticky;top:0;background:#0f172a;z-index:1}.editable-data-table input,.editable-data-table select{min-width:5.5rem}.point-table-editor{min-width:1280px}.table-row-actions{display:flex;gap:.35rem;flex-wrap:wrap}.table-checkbox-cell{justify-content:center}.point-table-toolbar{display:grid;grid-template-columns:minmax(220px,320px) auto;gap:.75rem;align-items:end}.superline-vertex-list{display:grid;gap:.75rem;max-height:24rem;overflow:auto;padding-right:.15rem}.superline-vertex-card{display:grid;gap:.6rem;padding:.75rem;border:1px solid rgba(51,65,85,.7);border-radius:14px;background:#02081773}.superline-vertex-card-header{display:flex;justify-content:space-between;gap:.5rem;align-items:center;color:#cbd5e1;font-size:.82rem}.surface-source-remove{min-width:0;padding:.3rem .5rem}.revision-list{margin:0;padding-left:1.1rem}.revision-list li{margin-bottom:.65rem}.revision-list span{display:block;margin-top:.18rem;color:#94a3b8;font-size:.78rem}.inspector-id{margin:0;font-size:.78rem;color:#94a3b8;word-break:break-all}.inspector-help{margin:0;font-size:.82rem;color:#cbd5e1}.dock-tabs{display:flex;gap:.45rem;flex-wrap:wrap;margin-bottom:.9rem}.dock-tabs button{padding:.52rem .72rem}.viewport-shell{grid-area:viewport;display:grid;grid-template-rows:minmax(0,1fr);height:100%;min-height:0;overflow:hidden}.viewport-stage{position:relative;height:100%;min-height:0;overflow:hidden;border:1px solid rgba(51,65,85,.58);border-radius:24px;background:radial-gradient(circle at top center,rgba(14,165,233,.08),transparent 22%),linear-gradient(180deg,#091120,#08101c);box-shadow:inset 0 1px #ffffff08,0 20px 40px #02081747;user-select:none;-webkit-user-select:none}.viewport-render-host{position:relative;width:100%;height:100%;min-height:0;background:#0b1320}.plan-cesium-basemap,.plan-pixi-bootstrap,.scene-cesium-bootstrap{position:absolute;inset:0;z-index:1;opacity:1;pointer-events:none;overflow:hidden}.plan-cesium-basemap{z-index:0}.plan-cesium-basemap canvas,.plan-pixi-bootstrap canvas,.scene-cesium-bootstrap canvas{display:block;width:100%;height:100%}.viewport-hud{position:absolute;top:14px;left:16px;z-index:3;display:flex;gap:.8rem;align-items:center;padding:.45rem .7rem;border-radius:14px;background:#040a14d6;border:1px solid rgba(51,65,85,.7);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.viewport-hud strong{font-size:.86rem}.viewport-hud span{color:#94a3b8;font-size:.78rem}.viewport-compass{position:absolute;top:14px;right:16px;z-index:3;width:74px;height:74px;display:grid;place-items:center;padding:.35rem;border-radius:50%;border:1px solid rgba(51,65,85,.72);background:#040a1470;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 26px #02081733;pointer-events:none}.viewport-compass svg{width:100%;height:100%}.compass-ring,.compass-axis,.compass-needle{fill:none;stroke-linecap:round;stroke-linejoin:round}.compass-ring{stroke:#7dd3fc73;stroke-width:1.5}.compass-axis{stroke:#94a3b8d1;stroke-width:1.4}.compass-axis-soft{stroke:#64748bad}.compass-axis-z{stroke:#38bdf8f2;stroke-width:1.8}.compass-needle{stroke:#f8fafcf5;stroke-width:1.6;fill:#f8fafc1f}.compass-needle-soft{stroke:#94a3b8c7;fill:#94a3b814}.compass-label{fill:#e2e8f0e6;font-size:8px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.viewport-compass.is-flat{background:#040a1452}.viewport-compass.is-3d{background:#040a1480}.draft-canvas{position:relative;z-index:2;width:100%;height:100%;display:block;background:transparent;touch-action:none;user-select:none;-webkit-user-select:none}.draft-canvas *{user-select:none;-webkit-user-select:none}.plan-point-overlay{position:absolute;inset:0;z-index:2;overflow:hidden;pointer-events:none;user-select:none;-webkit-user-select:none}.plan-point-overlay-item{position:absolute;width:0;height:0;overflow:visible;padding:0;margin:0;border:none;background:transparent;cursor:pointer;color:inherit;appearance:none}.plan-point-overlay-item:hover:not(:disabled),.plan-point-overlay-item:focus-visible,.plan-point-overlay-item:active{transform:none}.plan-point-overlay-item:hover:not(:disabled){background:transparent;border-color:transparent}.plan-point-overlay-item:focus-visible{outline:none}.plan-point-overlay-marker{position:absolute;left:0;top:0;width:10px;height:10px;border-radius:999px;border:2px solid #08111f;background:#22c55e;box-shadow:0 0 0 1px #0208146b,0 1px 6px #02081447;flex:none;transform:translate(-50%,-50%);opacity:0;box-shadow:none}.plan-point-overlay-marker.control{width:12px;height:12px}.plan-point-overlay-marker.is-selected{opacity:1;box-shadow:0 0 0 2px #f8fafcf0,0 1px 6px #02081457}.plan-point-overlay-marker.is-hovered{opacity:1;box-shadow:0 0 0 2px #38bdf8e6,0 1px 6px #02081457}.plan-point-overlay-label{position:absolute;left:10px;top:-8px;padding:2px 6px;border-radius:999px;background:#020814e6;border:1px solid rgba(71,85,105,.88);color:#f8fafc;font-size:11px;font-weight:600;line-height:1.15;white-space:nowrap;box-shadow:0 6px 18px #02081438}.plan-snap-indicator{position:absolute;width:0;height:0;pointer-events:none}.plan-snap-indicator-mark{position:absolute;left:0;top:0;width:12px;height:12px;border:2px solid #38bdf8;background:#08111f47;box-shadow:0 0 0 1px #0208146b;transform:translate(-50%,-50%)}.plan-snap-indicator.is-point .plan-snap-indicator-mark{border-radius:999px}.plan-snap-indicator.is-endpoint .plan-snap-indicator-mark{transform:translate(-50%,-50%) rotate(45deg)}.plan-snap-indicator.is-midpoint .plan-snap-indicator-mark{width:14px;height:4px;border-radius:999px}.plan-snap-indicator.is-nearest .plan-snap-indicator-mark{width:18px;height:18px;border-radius:999px;border-color:#22d3ee;background:#08111f94;box-shadow:0 0 0 3px #22d3ee38,0 0 18px #22d3ee6b}.plan-snap-indicator.is-center .plan-snap-indicator-mark{width:16px;height:16px;border-radius:999px;background:transparent}.plan-snap-indicator.is-intersection .plan-snap-indicator-mark{width:14px;height:14px;border-radius:4px;transform:translate(-50%,-50%) rotate(45deg)}.plan-snap-indicator.is-apparentIntersection .plan-snap-indicator-mark{width:14px;height:14px;border-style:dashed;border-radius:4px;background:transparent;transform:translate(-50%,-50%) rotate(45deg)}.plan-snap-indicator.is-perpendicular .plan-snap-indicator-mark{width:14px;height:14px;border-top:none;border-right:none;background:transparent;transform:translate(-50%,-50%) rotate(-45deg)}.plan-snap-indicator-label{position:absolute;left:12px;top:-20px;padding:2px 6px;border-radius:999px;background:#020814f2;border:1px solid rgba(56,189,248,.7);color:#e0f2fe;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.viewport-placement-overlay{pointer-events:auto;cursor:crosshair}.import-textarea{width:100%;min-height:4.5rem;resize:vertical;font-family:ui-monospace,monospace;font-size:.78rem;padding:.45rem .55rem;border-radius:10px;border:1px solid rgba(51,65,85,.75);background:#020814eb;color:#e2e8f0}.landxml-diagnostics{margin-top:.6rem;padding:.5rem .65rem;border-radius:10px;border:1px solid rgba(51,65,85,.55);background:#060e1cbf;font-size:.78rem}.landxml-diagnostics ul{margin:.35rem 0 0;padding-left:1.1rem}.landxml-diagnostics-messages{max-height:9rem;overflow:auto;margin-top:.35rem}.revision-compare-meta{margin:.25rem 0 .5rem;color:#94a3b8;font-size:.8rem}.revision-compare-ids{max-height:12rem;overflow:auto}.error{margin:0;padding:.8rem .95rem;border:1px solid #7f1d1d;border-radius:14px;background:#450a0ae0;color:#fecaca}.utility-modal-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:1.25rem;background:#0208179e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.utility-modal-backdrop.windowed-modal-backdrop{padding:0;background:#02081714;-webkit-backdrop-filter:none;backdrop-filter:none}.utility-modal{width:min(1100px,100%);max-height:min(82dvh,900px);display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:.9rem;padding:1rem;border:1px solid rgba(51,65,85,.7);border-radius:24px;background:linear-gradient(180deg,#050c16fa,#07101cf5);box-shadow:inset 0 1px #ffffff0a,0 24px 64px #0208176b}.utility-modal.is-draggable{position:absolute}.utility-modal-drag-handle{cursor:move;-webkit-user-select:none;user-select:none}.utility-modal.compact-modal{width:min(640px,100%)}.utility-modal.medium-modal{width:min(860px,100%)}.utility-modal-content{overflow:auto;min-height:0}.bottom-preview-card{min-height:100%}.scene-preview-callout{display:grid;gap:.65rem}.sheet-preview-shell{border:1px solid rgba(51,65,85,.7);border-radius:16px;overflow:hidden;background:#020617;padding:.75rem}.sheet-preview{width:100%;display:block;background:#0f172a}.sheet-paper{fill:#f8fafc;stroke:#94a3b8;stroke-width:4}.sheet-viewport{fill:#0ea5e91f;stroke:#0ea5e9;stroke-width:3}.sheet-viewport-label{fill:#0f172a;font-size:12px}.sheet-note{fill:#0f172a;font-size:11px}.draft-line{stroke:#38bdf8;stroke-width:2;vector-effect:non-scaling-stroke}.draft-line,.draft-line.preview,.tin-edge,.surface-contour,.civil-breakline,.civil-alignment,.alignment-draft-edge,.civil-superline,.superline-draft-edge,.parcel-draft-edge,.utility-run,.utility-run-draft-edge{stroke-linecap:round;stroke-linejoin:round;shape-rendering:geometricPrecision}.draft-line.selected{stroke:#fbbf24;stroke-width:3}.draft-line.preview{stroke:#f97316;stroke-dasharray:6 5}.draft-cad-stroke,.draft-cad-fill,.draft-cad-preview,.draft-cad-preview-fill{vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round;shape-rendering:geometricPrecision}.draft-cad-stroke{fill:none;stroke:#38bdf8;stroke-width:2}.draft-cad-stroke.selected{stroke:#fbbf24;stroke-width:3}.draft-cad-fill{fill:#38bdf81a;stroke:#38bdf8;stroke-width:1.8}.draft-cad-fill.selected{fill:#fbbf241f;stroke:#fbbf24;stroke-width:2.4}.draft-cad-preview{fill:none;stroke:#f97316;stroke-width:2;stroke-dasharray:6 5}.draft-cad-preview-fill{fill:#f9731614;stroke:#f97316;stroke-width:2;stroke-dasharray:6 5}.linked-reference rect{fill:#a78bfa52;stroke:#a78bfa;stroke-width:2;stroke-dasharray:8 4;vector-effect:non-scaling-stroke}.linked-reference line{stroke:#ddd6fe;stroke-width:2;vector-effect:non-scaling-stroke}.linked-reference.selected rect{fill:#c4b5fd7a;stroke:#f5f3ff}.survey-point{fill:#22c55e;stroke:#064e3b;stroke-width:2;vector-effect:non-scaling-stroke;shape-rendering:geometricPrecision}.survey-point.control{fill:#f59e0b;stroke:#78350f}.survey-point.selected{stroke:#f8fafc;stroke-width:3}.survey-point.is-hovered{stroke:#38bdf8;stroke-width:3}.surface-footprint polygon{fill:#38bdf824;stroke:#38bdf8cc;stroke-width:2;stroke-dasharray:8 4;vector-effect:non-scaling-stroke}.surface-footprint.selected polygon{fill:#fbbf2429;stroke:#fbbf24}.tin-edge{stroke:#38bdf873;stroke-width:1;vector-effect:non-scaling-stroke}.surface-contour{stroke:#94a3b88c;stroke-width:.9;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.civil-breakline{stroke:#f97316;stroke-width:2.5;vector-effect:non-scaling-stroke;cursor:pointer}.civil-breakline.selected{stroke:#fbbf24;stroke-width:3.5}.civil-alignment{stroke:#a78bfa;stroke-width:2.8;vector-effect:non-scaling-stroke;cursor:pointer}.civil-alignment.selected{stroke:#e9d5ff;stroke-width:3.6}.alignment-draft-edge{stroke:#a78bfad9;stroke-width:2;stroke-dasharray:6 4;vector-effect:non-scaling-stroke;pointer-events:none}.alignment-draft-edge.preview{stroke:#c4b5fda6}.tin-edge-review{stroke:#38bdf880;stroke-width:1.2}.surface-contour-review{stroke:#94a3b873;stroke-width:1;stroke-dasharray:5 4}.civil-breakline-review{stroke:#fb923c;stroke-width:2.2;cursor:pointer}.civil-breakline-review.selected{stroke:#fbbf24;stroke-width:3}.tin-edge-nav{stroke:#38bdf859;stroke-width:.9}.civil-breakline-nav{stroke:#fb923cd9;stroke-width:1.4}.civil-alignment-nav{stroke:#a78bfae6;stroke-width:1.5;vector-effect:non-scaling-stroke}.pvi-annotation-plan circle{fill:#fde68a;stroke:#78350f;stroke-width:1.2;vector-effect:non-scaling-stroke}.pvi-annotation-nav circle{fill:#fde68af2;stroke:#78350fe6;stroke-width:1;vector-effect:non-scaling-stroke}.pvi-annotation-review circle{fill:#fde68a;stroke:#78350f;stroke-width:1.2;vector-effect:non-scaling-stroke}.pvi-annotation-label{fill:#fef3c7;font-size:9px;font-weight:600;paint-order:stroke fill;stroke:#0f172ad9;stroke-width:2px;pointer-events:none}.pvi-annotation-nav .pvi-annotation-label{font-size:8px}.civil-alignment-review{stroke:#c4b5fd;stroke-width:2.4;vector-effect:non-scaling-stroke;cursor:pointer}.civil-alignment-review.selected{stroke:#f5f3ff;stroke-width:3.2}.civil-superline{stroke:#22d3ee;stroke-width:2.6;fill:none;vector-effect:non-scaling-stroke;cursor:pointer}.civil-superline.selected{stroke:#67e8f9;stroke-width:3.4}.civil-superline.preview{stroke:#67e8f9c7;stroke-dasharray:8 6;pointer-events:none}.superline-draft-edge{stroke:#22d3eed9;stroke-width:2;stroke-dasharray:6 4;vector-effect:non-scaling-stroke;pointer-events:none}.superline-draft-edge.preview{stroke:#67e8f9a6}.civil-superline-nav{stroke:#22d3eee6;stroke-width:1.4;fill:none;vector-effect:non-scaling-stroke}.civil-superline-review{stroke:#5eead4;stroke-width:2.2;fill:none;vector-effect:non-scaling-stroke;cursor:pointer}.civil-superline-review.selected{stroke:#ccfbf1;stroke-width:3}.civil-parcel{fill:#10b9812e;stroke:#10b981;stroke-width:2;vector-effect:non-scaling-stroke;cursor:pointer}.civil-parcel.selected{fill:#34d39947;stroke:#6ee7b7;stroke-width:2.6}.civil-parcel-label{fill:#a7f3d0;font-size:10px;font-weight:600;paint-order:stroke fill;stroke:#0f172ad9;stroke-width:2px;pointer-events:none}.parcel-draft-edge{stroke:#10b981bf;stroke-width:2;stroke-dasharray:5 4;fill:none;vector-effect:non-scaling-stroke;pointer-events:none}.parcel-draft-edge.preview{stroke:#6ee7b78c}.selection-box{fill:#60a5fa1f;stroke:#93c5fde6;stroke-width:1.5;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.utility-run{stroke:#60a5fa;stroke-width:2.4;fill:none;vector-effect:non-scaling-stroke;cursor:pointer}.utility-run.selected{stroke:#bfdbfe;stroke-width:3.2}.utility-run-draft-edge{stroke:#60a5fad1;stroke-width:2;stroke-dasharray:6 4;fill:none;vector-effect:non-scaling-stroke;pointer-events:none}.utility-run-draft-edge.preview{stroke:#bfdbfe9e}.utility-run-review{stroke:#93c5fd;stroke-width:2.2;fill:none;vector-effect:non-scaling-stroke;cursor:pointer}.utility-run-review.selected{stroke:#dbeafe;stroke-width:3}.utility-structure{fill:#facc153d;stroke:#facc15;stroke-width:1.8;vector-effect:non-scaling-stroke;cursor:pointer}.utility-structure.selected{fill:#fde04752;stroke:#fde68a;stroke-width:2.4}.utility-structure-review{fill:#facc1538;stroke:#fcd34d;stroke-width:1.8;vector-effect:non-scaling-stroke;cursor:pointer}.utility-structure-review.selected{fill:#fde68a52;stroke:#fef3c7;stroke-width:2.4}.civil-parcel-nav{fill:#10b9811f;stroke:#34d399d9;stroke-width:1.2;vector-effect:non-scaling-stroke}.civil-parcel-review{fill:#10b98126;stroke:#34d399;stroke-width:1.8;vector-effect:non-scaling-stroke;cursor:pointer}.civil-parcel-review.selected{fill:#34d39938;stroke:#6ee7b7;stroke-width:2.4}.issue-pin{fill:#ef4444;stroke:#7f1d1d;stroke-width:2;vector-effect:non-scaling-stroke}.issue-pin.resolved{fill:#10b981;stroke:#064e3b}.issue-pin.selected{stroke:#f8fafc;stroke-width:3}.overlay-label{fill:#e2e8f0;font-size:11px;font-weight:600;paint-order:stroke fill;stroke:#020814f0;stroke-width:3px;stroke-linejoin:round;pointer-events:none}.scene-line{stroke:#38bdf8;stroke-width:2;vector-effect:non-scaling-stroke}.scene-line.selected{stroke:#fbbf24}.scene-reference{fill:#a78bfa73;stroke:#c4b5fd;stroke-width:1.8}.scene-reference.selected{fill:#c4b5fda6;stroke:#f5f3ff}.scene-surface{fill:#38bdf824;stroke:#7dd3fcd1;stroke-width:1.6}.scene-surface.selected{fill:#fbbf2429;stroke:#fbbf24}.scene-survey-point{fill:#4ade80;stroke:#dcfce7;stroke-width:1.8}.scene-survey-point.selected{fill:#fbbf24;stroke:#fef3c7}.review-surface{fill:#22c55e2e;stroke:#86efacd1;stroke-width:2}.review-surface.selected{fill:#fbbf242e;stroke:#fbbf24}.scene-issue{fill:#fb7185;stroke:#fecdd3;stroke-width:1.8}.scene-issue.selected{fill:#fbbf24}@media(max-width:1240px){.app-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) minmax(220px,38vh);grid-template-areas:"topbar" "viewport" "right"}.bottom-grid{grid-template-columns:1fr}.workspace-topbar{flex-wrap:nowrap}.topbar-actions{margin-left:0;justify-content:flex-end;flex-wrap:nowrap;gap:.25rem}.toolbar-separator,.account-btn span.account-label{display:none}.utility-modal{width:100%;max-height:88dvh}}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:24px 16px}.auth-card{width:100%;max-width:400px;background:#0e1726e6;border:1px solid rgba(100,140,200,.18);border-radius:12px;padding:40px 36px 32px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 8px 40px #0009}.auth-logo{display:flex;align-items:center;gap:8px;margin-bottom:28px}.auth-logo-mark{font-size:22px;color:#38bdf8}.auth-logo-name{font-size:15px;font-weight:600;letter-spacing:.04em;color:#e2e8f0}.auth-title{font-size:18px;font-weight:600;color:#f1f5f9;margin:0 0 4px}.auth-subtitle{font-size:13px;color:#94a3b8;margin:0 0 24px}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-label{font-size:12px;font-weight:500;color:#94a3b8;letter-spacing:.04em}.auth-input{background:#ffffff0d;border:1px solid rgba(100,140,200,.2);border-radius:6px;padding:8px 12px;font-size:13px;color:#e2e8f0;outline:none;transition:border-color .15s;width:100%}.auth-input:focus{border-color:#38bdf8}.auth-error{font-size:12px;color:#f87171;margin:0}.auth-info{font-size:12px;color:#34d399;margin:0}.auth-submit{background:#0ea5e9;color:#fff;border:none;border-radius:6px;padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s;margin-top:4px}.auth-submit:hover:not(:disabled){background:#38bdf8}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-switch{font-size:12px;color:#64748b;text-align:center;margin:20px 0 0}.auth-switch-btn{background:none;border:none;color:#38bdf8;cursor:pointer;font-size:12px;padding:0;text-decoration:underline}.invite-section{margin-top:24px}.invite-form{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-top:8px}.invite-form .auth-input{flex:1;min-width:160px}.invite-link-box{margin-top:12px}.role-badge{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.role-badge--owner{background:#38bdf82e;color:#38bdf8}.role-badge--admin{background:#a78bfa2e;color:#a78bfa}.role-badge--member{background:#34d3992e;color:#34d399}.role-badge--viewer{background:#94a3b81f;color:#94a3b8}.billing-current{padding:16px;background:#ffffff0a;border:1px solid rgba(100,140,200,.14);border-radius:8px;margin-bottom:20px}.billing-current-plan{display:flex;align-items:center;gap:10px;margin-bottom:6px}.billing-plan-badge{font-size:11px;font-weight:700;letter-spacing:.08em;color:#38bdf8;background:#38bdf81f;border-radius:4px;padding:2px 8px}.billing-status{font-size:12px;font-weight:500}.billing-status--active{color:#34d399}.billing-status--past_due{color:#f87171}.billing-status--canceled{color:#94a3b8}.billing-status--trialing{color:#fbbf24}.billing-plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.billing-plan-card{padding:16px;background:#ffffff0a;border:1px solid rgba(100,140,200,.14);border-radius:8px;display:flex;flex-direction:column}.billing-plan-card--current{border-color:#38bdf859;background:#38bdf80f}.billing-plan-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.billing-plan-name{font-size:14px;font-weight:600;color:#f1f5f9}.billing-plan-price{font-size:13px;font-weight:600;color:#38bdf8}.billing-plan-desc{font-size:12px;color:#64748b;margin:0 0 12px}.billing-feature-list{list-style:none;margin:0 0 auto;padding:0;display:flex;flex-direction:column;gap:5px}.billing-feature-item{font-size:12px;color:#94a3b8;display:flex;gap:6px}.billing-feature-check{color:#34d399;flex-shrink:0}.billing-current-badge{display:inline-block;font-size:11px;font-weight:600;color:#38bdf8;text-align:center;margin-top:12px}.account-menu{position:relative}.account-btn{display:flex;align-items:center;gap:6px;background:#ffffff0f;border:1px solid rgba(100,140,200,.18);border-radius:6px;padding:4px 10px;font-size:12px;color:#cbd5e1;cursor:pointer;transition:background .15s}.account-btn:hover{background:#ffffff1a}.account-avatar{width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,#0ea5e9,#7c3aed);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}.account-dropdown{position:absolute;right:0;top:calc(100% + 6px);background:#0f1e30;border:1px solid rgba(100,140,200,.2);border-radius:8px;padding:6px;min-width:180px;z-index:200;box-shadow:0 8px 32px #00000080}.account-dropdown-item{display:block;width:100%;text-align:left;background:none;border:none;padding:7px 10px;font-size:12px;color:#cbd5e1;border-radius:5px;cursor:pointer;transition:background .12s}.account-dropdown-item:hover{background:#ffffff12}.account-dropdown-item--danger{color:#f87171}.account-dropdown-divider{height:1px;background:#648cc81f;margin:4px 0}
