/*! ELlipserWeb | Copyright (c) 2026 ai2-3D. All rights reserved. Unauthorized copying, modification, or redistribution is prohibited. */
:root{--black: #000000;--grey-980: #070707;--grey-950: #0d0d0d;--grey-900: #141414;--grey-850: #1a1a1a;--grey-800: #212121;--grey-750: #282828;--grey-700: #303030;--grey-600: #3d3d3d;--grey-500: #4f4f4f;--text: #f4f4f5;--text-muted: #a1a1a6;--text-dim: #7c7c82;--orange: #f09a35;--orange-dark: #c97115;--cyan: #19c9d2;--danger: #e06a6a;--shadow: 0 8px 24px rgba(0,0,0,.55);color-scheme: dark;font-family: Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color: var(--text);background: var(--black)}*{box-sizing: border-box}[hidden]{display: none !important}html,body{margin: 0;width: 100%;height: 100%;overflow: hidden}button,input,textarea,select{font: inherit}button{cursor: pointer}button:disabled{cursor: not-allowed;opacity: .45}.app-shell{height: 100dvh;min-width: 860px;display: grid;grid-template-rows: 64px 1fr 40px}.topbar{display: flex;align-items: center;gap: 24px;padding: 0 18px;background: var(--grey-900);color: var(--text);border-bottom: 1px solid var(--grey-700)}.brand{display: flex;align-items: center;gap: 11px;min-width: 230px;font-size: 1.45rem;font-weight: 750;letter-spacing: -.02em}.brand > span:last-child > span{color: var(--orange)}.brand-mark{width: 31px;height: 21px;border: 2px solid var(--orange);border-radius: 50%;transform: rotate(-22deg);position: relative}.brand-mark::after{content: "";position: absolute;width: 5px;height: 5px;border-radius: 50%;background: var(--orange);top: 6px;left: 11px}.top-actions{display: flex;gap: 8px;margin-left: auto}.top-actions .button{font-weight: 400}.button{min-height: 36px;padding: 7px 13px;border-radius: 6px;border: 1px solid transparent;font-weight: 650;font-size: .875rem}.button.primary{background: var(--orange);color: #1a1a1a;border-color: #f5aa4d}.button.primary:hover{background: #f4a444}.button.ghost{color: var(--text);background: var(--grey-800);border-color: var(--grey-600)}.button.ghost:hover:not(:disabled){border-color: var(--orange);color: var(--orange)}.button.icon-only{width: 36px;min-width: 36px;padding: 0;display: grid;place-items: center}.button.icon-only svg{width: 18px;height: 18px;fill: none;stroke: currentColor;stroke-width: 1.8;stroke-linecap: round;stroke-linejoin: round}.workspace{--tool-width: 78px;--left-panel-width: 270px;--right-panel-width: 292px;min-height: 0;display: grid;grid-template-columns: var(--tool-width) var(--left-panel-width) minmax(360px,1fr) var(--right-panel-width);background: var(--black);transition: grid-template-columns .18s ease}.workspace.left-collapsed{--left-panel-width: 32px}.workspace.right-collapsed{--right-panel-width: 32px}.tool-rail{background: var(--grey-900);border-right: 1px solid var(--grey-700);padding: 8px 6px;display: flex;flex-direction: column;gap: 3px;overflow-y: auto}.tool{min-height: 58px;color: var(--text-muted);background: transparent;border: 1px solid transparent;border-radius: 6px;font-size: .75rem;display: flex;flex-direction: column;align-items: center;justify-content: center;gap: 3px}.tool span{font-size: 1.35rem;line-height: 1}.tool-svg{width: 30px;height: 23px;fill: none;stroke: currentColor;stroke-width: 2.3;stroke-linecap: round;stroke-linejoin: round}.tool:hover{background: var(--grey-750);color: var(--text)}.tool.active{color: var(--text);background: var(--grey-800);border-color: var(--orange);box-shadow: inset 3px 0 0 var(--orange)}.tool .tool-name{font-size: .75rem;line-height: 1.1}.tool-group{position: relative;display: flex}.tool-group .tool{flex: 1}.tool-variant{position: absolute;right: 0;bottom: 0;width: 18px;height: 18px;display: grid;place-items: end;padding: 0 3px 3px 0;border: 0;background: transparent;color: var(--text-dim)}.tool-variant::after{content: "";width: 8px;height: 8px;background: currentColor;clip-path: polygon(100% 0,100% 100%,0 100%)}.tool-variant:hover,.tool-variant[aria-expanded="true"]{color: var(--orange)}.tool-group:hover .tool-variant{color: var(--text)}.tool-group:hover .tool-variant:hover,.tool-group .tool-variant[aria-expanded="true"]{color: var(--orange)}.tool-flyout{position: fixed;z-index: 40;display: grid;gap: 2px;width: 182px;padding: 5px;border: 1px solid var(--grey-600);border-radius: 8px;background: var(--grey-800);box-shadow: var(--shadow)}.tool-flyout button{display: grid;grid-template-columns: 34px minmax(0,1fr);gap: 9px;align-items: center;padding: 8px 9px;border: 1px solid transparent;border-radius: 6px;text-align: left;font-size: .82rem;color: var(--text-muted);background: transparent}.tool-flyout button:hover{background: var(--grey-750);color: var(--text)}.tool-flyout button.active{color: var(--text);border-color: var(--orange);background: var(--grey-750)}.tool-flyout svg{width: 30px;height: 23px;fill: none;stroke: currentColor;stroke-width: 2.1;stroke-linecap: round;stroke-linejoin: round}.tool-flyout button.active svg{stroke: var(--orange)}.object-sidebar,.details-sidebar{position: relative;min-width: 0;min-height: 0;background: var(--grey-850);color: var(--text);display: flex;flex-direction: column}.object-sidebar{border-right: 1px solid var(--grey-700)}.details-sidebar{border-left: 1px solid var(--grey-700)}.panel-collapse{position: absolute;z-index: 8;top: 10px;width: 25px;height: 34px;padding: 0;border: 1px solid var(--grey-600);background: var(--grey-800);color: var(--text-muted);font-size: 1.25rem;line-height: 1;box-shadow: var(--shadow)}.panel-collapse:hover{color: var(--orange);border-color: var(--orange)}.panel-collapse-left{right: -25px;border-radius: 0 7px 7px 0;border-left: 0}.panel-collapse-right{left: -25px;border-radius: 7px 0 0 7px;border-right: 0}.panel-collapse-bottom{top: auto;right: 10px;bottom: var(--filmstrip-height);width: 34px;height: 25px;display: grid;place-items: center;border-radius: 7px 7px 0 0;border-bottom: 0}.panel-collapse-bottom span{display: block;transform: rotate(-90deg)}.workspace.left-collapsed .object-sidebar,.workspace.right-collapsed .details-sidebar{background: var(--grey-900)}.workspace.left-collapsed .object-sidebar .panel,.workspace.right-collapsed .details-sidebar .panel{display: none}.panel{min-height: 0;padding: 0 12px 14px;border-bottom: 1px solid var(--grey-700)}.panel-heading{min-height: 45px;display: flex;align-items: center;justify-content: space-between}.panel h2{margin: 0;font-size: .96rem;color: var(--text)}.structure-panel{flex: .9;overflow: hidden;display: flex;flex-direction: column}.properties-panel{flex: 1.1;overflow: auto;box-shadow: inset 0 5px 10px rgba(0,0,0,.35)}.project-panel{flex: 0 0 auto}.calibration-panel{flex: 0 0 auto}.measurements-panel{flex: 1;overflow: hidden;display: flex;flex-direction: column}.icon-button{width: 30px;height: 30px;border: 1px solid var(--grey-600);color: var(--text);background: var(--grey-800);border-radius: 5px;font-size: 1.2rem}.empty-small{color: var(--text-dim);font-size: .82rem;line-height: 1.45;padding: 8px 0}.structure-list{margin: 0 -6px;overflow-y: auto}.structure-item{display: grid;grid-template-columns: 30px minmax(0,1fr);gap: 5px;align-items: center;min-height: 39px;border-radius: 4px;border-left: 3px solid transparent;padding: 3px 6px;font-size: .86rem;color: var(--text);cursor: pointer}.structure-item:hover{background: var(--grey-750)}.structure-item.selected{background: var(--grey-700);color: var(--text);border-left-color: var(--orange)}.structure-item .name{overflow: hidden;text-overflow: ellipsis;white-space: nowrap;cursor: pointer}.structure-icon{width: 26px;height: 26px;display: grid;place-items: center;color: var(--text-muted)}.structure-item.selected .structure-icon{color: var(--orange)}.structure-icon svg{width: 22px;height: 22px;fill: none;stroke: currentColor;stroke-width: 1.8;stroke-linecap: round;stroke-linejoin: round}.structure-icon img{width: 26px;height: 26px;border-radius: 3px;object-fit: cover}.properties-form{display: grid;gap: 11px}.properties-form label{display: grid;grid-template-columns: minmax(90px,.9fr) minmax(0,1.2fr);gap: 8px;align-items: center;font-size: .8rem;color: var(--text-muted)}.details-sidebar label{display: grid;gap: 5px;font-size: .8rem;color: var(--text-muted)}.properties-form input,.properties-form select,.details-sidebar input,.details-sidebar textarea{width: 100%;border: 1px solid var(--grey-600);border-radius: 5px;padding: 7px 8px;color: var(--text);background: var(--grey-800)}.properties-form input:focus,.properties-form select:focus,.details-sidebar input:focus,.details-sidebar textarea:focus{outline: none;border-color: var(--orange)}.properties-form input[readonly]{background: var(--grey-900);color: var(--text-muted)}.properties-form .field-row{display: grid;grid-template-columns: 1fr 86px;gap: 8px;align-items: end}.properties-form .inline{display: flex;align-items: center;justify-content: space-between;min-height: 28px;font-size: .82rem}.properties-form input[type="checkbox"]{width: 18px;height: 18px;accent-color: var(--orange)}.properties-form input[type="color"]{width: 46px;height: 32px;padding: 3px}.property-title{font-weight: 750;color: var(--text);padding-bottom: 2px}.center-stage{--filmstrip-height: 88px;position: relative;min-width: 0;min-height: 0;display: grid;grid-template-rows: 1fr var(--filmstrip-height);background: var(--black)}.canvas-wrap{position: relative;overflow: hidden;min-height: 0;background-color: var(--black);background-image: linear-gradient(45deg,var(--grey-950) 25%,transparent 25%),linear-gradient(-45deg,var(--grey-950) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--grey-950) 75%),linear-gradient(-45deg,transparent 75%,var(--grey-950) 75%);background-size: 24px 24px;background-position: 0 0,0 12px,12px -12px,-12px 0}.canvas-fit{position: absolute;left: 12px;bottom: 12px;z-index: 6;width: 38px;height: 38px;display: grid;place-items: center;padding: 0;border: 1px solid var(--grey-600);border-radius: 7px;color: var(--text-muted);background: rgba(20,20,20,.9);box-shadow: var(--shadow)}.canvas-fit:hover:not(:disabled){color: var(--orange);border-color: var(--orange)}.canvas-fit svg{width: 20px;height: 20px;fill: none;stroke: currentColor;stroke-width: 2;stroke-linecap: round;stroke-linejoin: round}#measurementCanvas{display: block;width: 100%;height: 100%;touch-action: none}.empty-state{position: absolute;inset: 0;display: flex;flex-direction: column;align-items: center;justify-content: center;color: var(--text);text-align: center;pointer-events: none}.empty-state > *{pointer-events: auto}.empty-state h1{font-size: 1.25rem;margin: 0 0 4px}.empty-state p{margin: 0 0 18px;color: var(--text-dim);font-size: .9rem}.drawing-hint{position: absolute;left: 50%;top: 16px;transform: translateX(-50%);color: var(--text);background: rgba(20,20,20,.94);border: 1px solid var(--grey-600);padding: 8px 12px;border-radius: 6px;font-size: .8rem;box-shadow: var(--shadow)}.filmstrip-bar{display: flex;align-items: stretch;gap: 6px;padding: 6px 7px;border-top: 1px solid var(--grey-700);background: var(--grey-900);overflow: hidden}.center-stage.bottom-collapsed{--filmstrip-height: 0px}.center-stage.bottom-collapsed .filmstrip-bar{display: none}.filmstrip{min-width: 0;min-height: 0;display: flex;flex: 1;align-items: flex-start;gap: 7px;overflow-x: auto;overflow-y: hidden;scrollbar-width: thin;scrollbar-gutter: stable}.filmstrip::-webkit-scrollbar{height: 6px}.thumb{flex: 0 0 112px;width: 112px;height: calc(100% - 9px);min-width: 0;min-height: 0;display: grid;grid-template-columns: 1fr;grid-template-rows: minmax(18px,auto) minmax(0,1fr);align-items: stretch;gap: 3px;padding: 4px;overflow: hidden;background: var(--grey-800);color: var(--text);border: 1px solid var(--grey-600);border-radius: 5px;text-align: left}.thumb.active{border-color: var(--orange);box-shadow: inset 0 -3px 0 var(--orange)}.thumb img{width: 100%;height: 100%;min-height: 0;object-fit: cover;border-radius: 3px;background: var(--black)}.thumb span{min-width: 0;overflow: hidden;color: var(--text);font-size: .68rem;line-height: 1.08;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow-wrap: anywhere}.details-sidebar label{margin-bottom: 10px}.details-sidebar textarea{resize: vertical;min-height: 52px}.data-row{display: flex;justify-content: space-between;gap: 10px;min-height: 28px;align-items: center;font-size: .8rem;color: var(--text-muted);border-bottom: 1px solid var(--grey-700)}.data-row strong{font-size: .78rem;color: var(--text)}.count{color: var(--text);background: var(--grey-700);border-radius: 999px;min-width: 24px;text-align: center;padding: 2px 7px;font-size: .72rem}.measurement-list{margin: 0 -6px;overflow-y: auto}.measurement-item{display: grid;grid-template-columns: 1fr auto;gap: 7px;padding: 9px 7px;border-bottom: 1px solid var(--grey-700);font-size: .8rem;cursor: pointer}.measurement-item:hover,.measurement-item.selected{background: var(--grey-750)}.measurement-name{color: var(--text)}.measurement-value{color: var(--text-dim)}.statusbar{display: grid;grid-template-columns: minmax(0,1fr) auto;align-items: center;gap: 16px;padding: 0 16px;color: var(--text-muted);background: var(--grey-980);border-top: 1px solid var(--grey-700);font-size: .75rem}.statusbar strong{color: var(--text)}.divider{color: var(--grey-500);margin: 0 9px}.local-status{justify-self: end}.local-status span{display: inline-block;width: 8px;height: 8px;margin-right: 6px;background: #51d87a;border-radius: 50%}.project-dialog{width: min(460px,calc(100vw - 32px));padding: 0;border: 1px solid var(--grey-600);border-radius: 10px;color: var(--text);background: var(--grey-850);box-shadow: 0 22px 70px rgba(0,0,0,.7)}.project-dialog::backdrop{background: rgba(0,0,0,.7);backdrop-filter: blur(2px)}.dialog-form{display: grid;gap: 14px;padding: 20px}.dialog-heading{display: flex;align-items: flex-start;justify-content: space-between;gap: 18px}.dialog-heading h2{margin: 0;color: var(--text);font-size: 1.2rem}.dialog-heading p{margin: 5px 0 0;color: var(--text-dim);font-size: .85rem}.dialog-close{width: 32px;height: 32px;padding: 0;border: 0;border-radius: 5px;background: transparent;color: var(--text-dim);font-size: 1.5rem;line-height: 1}.dialog-close:hover{background: var(--grey-700);color: var(--text)}.dialog-form label{display: grid;gap: 5px;color: var(--text-muted);font-size: .83rem}.dialog-form input,.dialog-form textarea{width: 100%;border: 1px solid var(--grey-600);border-radius: 5px;padding: 9px 10px;color: var(--text);background: var(--grey-800)}.dialog-form input:focus,.dialog-form textarea:focus{outline: none;border-color: var(--orange)}.dialog-form textarea{resize: vertical;min-height: 88px}.text-style-row{display: grid;grid-template-columns: auto 1fr;gap: 14px;align-items: end}.text-style-row input[type="color"]{width: 46px;height: 36px;padding: 3px}.dialog-warning{margin: 0;padding: 9px 11px;border-left: 3px solid var(--orange);background: var(--grey-800);color: var(--orange);font-size: .8rem;line-height: 1.4}.dialog-actions{display: flex;justify-content: flex-end;gap: 8px;margin-top: 3px}.button.dialog-secondary{color: var(--text);background: var(--grey-800);border-color: var(--grey-600)}.button.dialog-secondary:hover{border-color: var(--orange);color: var(--orange)}.dialog-form select{width: 100%;border: 1px solid var(--grey-600);border-radius: 5px;padding: 9px 10px;color: var(--text);background: var(--grey-800)}.dialog-form select:focus{outline: none;border-color: var(--orange)}.settings-dialog{width: min(640px,calc(100vw - 32px));max-height: calc(100vh - 48px);overflow: hidden}.settings-dialog .dialog-form{max-height: calc(100vh - 48px);overflow: hidden}.settings-section{display: grid;gap: 10px;min-height: 0}.settings-section .button{justify-self: start}.settings-section h3{margin: 0;font-size: .9rem;font-weight: 650;color: var(--text)}.settings-note{margin: 0;color: var(--text-dim);font-size: .8rem;line-height: 1.4}.settings-style-list{display: grid;border: 1px solid var(--grey-700);border-radius: 8px;background: var(--grey-900);overflow: auto;max-height: min(46vh,420px)}.style-row{display: flex;flex-wrap: wrap;align-items: center;gap: 8px 10px;padding: 6px 10px;border-bottom: 1px solid var(--grey-700)}.style-row:last-child{border-bottom: 0}.style-row .structure-icon{width: 22px;height: 22px;color: var(--text)}.style-row .structure-icon svg{width: 20px;height: 20px}.style-row .style-name{min-width: 92px;color: var(--text);font-size: .82rem}.style-row .style-field{display: flex;align-items: center;gap: 6px;margin: 0;color: var(--text-muted);font-size: .75rem}.style-row .style-field input,.style-row .style-field select{width: auto;padding: 5px 6px}.style-row input[type="color"]{width: 36px;height: 28px;padding: 2px}.style-row input[type="number"]{width: 58px}.style-row input[type="checkbox"]{width: 16px;height: 16px;accent-color: var(--orange)}.settings-actions{justify-content: space-between}@media (max-width: 1180px){.workspace{--tool-width: 72px;--left-panel-width: 230px;--right-panel-width: 250px}.workspace.left-collapsed{--left-panel-width: 32px}.workspace.right-collapsed{--right-panel-width: 32px}.top-actions .button{padding-inline: 9px}}@media (max-width: 900px){.app-shell{min-width: 720px}.workspace{grid-template-columns: 68px 220px minmax(360px,1fr)}.details-sidebar{display: none}.brand{min-width: 180px}.top-actions .button:nth-child(1),.top-actions .button:nth-child(4){display: none}}