:root{color:#17221c;font-synthesis:none;--ink:#17221c;--muted:#657169;--line:#d4ddd7;--panel:#f8f9f5;--dark:#18251e;--green:#285b41;--accent:#ed9f3b;--warning:#b96718;background:#e7ece8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0;overflow:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{grid-template:"top top top"60px"left viewport right"minmax(0,1fr)"status status status"34px/260px minmax(420px,1fr) 310px;height:100vh;display:grid}.topbar{background:var(--dark);color:#f4f7f2;z-index:20;border-bottom:1px solid #304038;grid-area:top;align-items:center;padding:0 16px;display:flex}.brand{align-items:center;gap:10px;min-width:244px;display:flex}.brand-mark{background:linear-gradient(145deg,#6d9778,#315c42);border-radius:9px;place-items:center;width:32px;height:32px;font-family:Georgia,serif;font-size:20px;display:grid}.brand strong,.brand span{display:block}.brand strong{letter-spacing:.01em;font-size:14px}.brand span{color:#aebcb3;text-transform:uppercase;letter-spacing:.12em;font-size:10px}.toolbar{gap:7px;margin-left:auto;display:flex}.button{color:#eaf0eb;background:#26342c;border:1px solid #425148;border-radius:7px;padding:7px 11px;font-size:12px;font-weight:650}.button:hover{background:#33463a}.button.primary{color:#1c2d23;background:#e9efe9;border-color:#fff}.button.wide{width:100%}.menu{position:relative}.menu-popover{min-width:210px;color:var(--ink);background:#fff;border-radius:8px;padding:6px;display:none;position:absolute;top:100%;right:0;box-shadow:0 18px 50px #0d17115e}.menu:hover .menu-popover,.menu:focus-within .menu-popover{display:grid}.menu-popover button{text-align:left;background:0 0;border:0;border-radius:5px;padding:8px 10px;font-size:12px}.menu-popover button:hover{background:#eef2ef}.left-panel{background:var(--panel);border-right:1px solid var(--line);grid-area:left;padding-bottom:16px;overflow:auto}.right-panel{background:var(--panel);border-left:1px solid var(--line);grid-area:right;position:relative;overflow:auto}.viewport{background:#dce5df;grid-area:viewport;min-width:0;position:relative;overflow:hidden}.statusbar{border-top:1px solid var(--line);color:var(--muted);background:#f9faf7;grid-area:status;align-items:center;gap:18px;padding:0 14px;font-size:11px;display:flex}.statusbar p{white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;overflow:hidden}.statusbar button{color:var(--muted);background:0 0;border:0;font-size:11px}.statusbar button span{background:#dfe6e0;border-radius:50%;place-items:center;width:18px;height:18px;margin-right:5px;display:inline-grid}.statusbar button.has-warning{color:#924913}.statusbar button.has-warning span{background:#ffe5c0}.variant-section{border-bottom:1px solid var(--line);padding:14px}.section-title{text-transform:uppercase;letter-spacing:.09em;color:#6e7972;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:11px;font-weight:750;display:flex}.section-title button{background:#e5ebe6;border:0;border-radius:5px}.variant-section select,.field select,.field input[type=number],.field textarea,.field>input[type=text]{width:100%;color:var(--ink);background:#fff;border:1px solid #cbd5ce;border-radius:7px;outline:none;padding:8px}.variant-section select:focus,.field select:focus,.field input:focus,.field textarea:focus{border-color:#5f846d;box-shadow:0 0 0 2px #87ac9329}.inline-actions{gap:4px;margin-top:6px;display:flex}.inline-actions button,.text-button{color:#647068;background:0 0;border:0;padding:4px;font-size:11px}.inline-actions button:hover,.text-button:hover{text-decoration:underline}.variant-notes{color:var(--muted);gap:4px;margin-top:8px;font-size:10px;display:grid}.variant-notes textarea{resize:vertical;border:1px solid #d1d9d4;border-radius:6px;padding:7px;font-size:11px}.hierarchy{padding:14px 9px}.tree-group{margin-bottom:14px}.tree-group>p{color:#8b958f;text-transform:uppercase;letter-spacing:.1em;margin:0 7px 4px;font-size:9px;font-weight:700}.tree-group button{text-align:left;color:#3b463f;background:0 0;border:0;border-radius:6px;grid-template-columns:12px 1fr 20px;align-items:center;gap:6px;width:100%;padding:7px 8px;font-size:12px;display:grid}.tree-group button:hover,.tree-group button.active{color:#1f4933;background:#e3ebe5}.tree-group i{border-radius:2px;width:8px;height:8px}.tree-group em{text-align:center;color:#89938d;font-size:10px;font-style:normal}.measurements-button{color:#35543f;text-align:left;background:#edf2ee;border:1px solid #c9d4cc;border-radius:7px;width:calc(100% - 20px);margin:0 10px;padding:9px;font-size:11px}.measurements-button.active{background:#dbe9df;border-color:#6e937a}.measurements-button span{float:right}.text-button{margin:10px}.scene-host{position:absolute;inset:0}.scene-host canvas{touch-action:none;width:100%;height:100%;display:block}.camera-bar{z-index:4;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#18251edb;border-radius:9px;gap:3px;padding:4px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 8px 20px #12201833}.camera-bar button{color:#bec9c1;white-space:nowrap;background:0 0;border:0;border-radius:6px;padding:6px 8px;font-size:10px}.camera-bar button.active{color:#203126;background:#f0f4ef}.viewport-legend{color:#59665d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f8faf4d9;border:1px solid #fff;border-radius:7px;gap:12px;padding:7px 9px;font-size:9px;display:flex;position:absolute;bottom:12px;left:14px}.viewport-legend span{align-items:center;gap:4px;display:flex}.dot{border-radius:50%;width:7px;height:7px}.dot.measured{background:#267a54}.dot.estimated{background:#d89330}.dot.design{background:#647caa}.editor{padding:17px}.editor-heading{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.11em;color:#7b8780;margin:0 0 3px;font-size:9px;font-weight:800}.editor h2{color:#233128;margin:0;font:600 21px/1.15 Georgia,serif}.badge-row{flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 14px;display:flex}.badge{text-transform:uppercase;letter-spacing:.07em;border-radius:30px;padding:4px 7px;font-size:8px;font-weight:800;display:inline-flex}.badge.measured{color:#246344;background:#d8eee0}.badge.estimated{color:#8c5b12;background:#fae9cb}.badge.design{color:#455c88;background:#e0e6f2}.badge.locked{color:#606660;background:#e8e9e6}.source-chip{color:#758179;max-width:210px;font-size:9px}.field{color:#56625a;gap:4px;margin:11px 0;font-size:10px;font-weight:650;display:grid}.field input,.field select,.field textarea{font-size:12px;font-weight:450}.field textarea{resize:vertical}.field-grid{grid-template-columns:1fr 1fr;gap:0 9px;display:grid}.number-wrap{background:#fff;border:1px solid #cbd5ce;border-radius:7px;align-items:center;display:flex;overflow:hidden}.number-wrap input{box-shadow:none!important;border:0!important;border-radius:0!important}.number-wrap b{color:#8a948e;padding:0 8px;font-size:9px}.switch-row{color:#4e5a52;border-top:1px solid #e1e6e2;border-bottom:1px solid #e1e6e2;justify-content:space-between;align-items:center;padding:10px 0;font-size:11px;display:flex}.switch-row input{accent-color:#2c6848}.switch-row.danger{background:#fff9ed;border:1px solid #edcda6;border-radius:8px;padding:10px}.switch-row span small{color:#8e795e;margin-top:2px;display:block}.colour-field{align-items:center;gap:8px;display:flex}.colour-field input{background:0 0;border:0;width:42px;height:30px}.colour-field code{font-size:10px}.orientation-card,.calibration-card,.change-log{background:#edf2ee;border:1px solid #d3ddd5;border-radius:9px;margin:12px 0;padding:11px}.orientation-card span,.orientation-card strong,.orientation-card small{display:block}.orientation-card strong{color:#2f5e43;margin:3px 0;font-size:15px}.orientation-card small,.calibration-card small{color:#768079;font-size:9px}.panel-copy{color:#667169;font-size:11px;line-height:1.5}.measurement-list{margin-top:12px}.field.compact{grid-template-columns:1fr 88px;align-items:center;margin:6px 0}.field.compact .number-wrap input{padding:6px}.change-log p:not(.eyebrow){color:#68746c;border-top:1px solid #d9e1db;padding-top:5px;font-size:9px}.panel-close,.mobile-toggle{display:none}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0f1b15a8;place-items:center;display:grid;position:fixed;inset:0}.compare-modal{background:#fafbf7;border-radius:14px;width:min(760px,100vw - 32px);max-height:calc(100vh - 60px);padding:20px;overflow:auto;box-shadow:0 30px 80px #07110ba6}.modal-heading{justify-content:space-between;align-items:flex-start;display:flex}.modal-heading h2{margin:0;font:600 27px Georgia,serif}.modal-heading button{background:0 0;border:0;font-size:25px}.compare-cards{grid-template-columns:1fr 1fr;gap:12px;display:grid}.compare-cards article{border:1px solid #d7dfd9;border-radius:10px;overflow:hidden}.compare-cards h3,.compare-cards p{margin:10px 12px}.compare-cards p{color:#657168;font-size:11px}.mini-scene{color:#fff;text-transform:uppercase;letter-spacing:.15em;background:linear-gradient(155deg,#dce5df,#9db2a2);place-items:center;height:110px;font-size:10px;display:grid}.mini-scene.alternate{background:linear-gradient(155deg,#d8ddd8,#778a7b)}.diff-list{grid-template-columns:1fr 1fr;gap:5px;display:grid}.diff-list p{background:#eef2ef;border-radius:5px;margin:0;padding:8px;font-size:10px}.mobile-toggle{color:#fff;background:0 0;border:0;font-size:20px}.mobile-toggle.right{margin-left:auto}.colour-field input[type=color]{background:0 0;border:0;width:42px;height:30px;padding:0}.colour-field input[type=text]{width:88px;min-width:0;height:auto;padding:7px;font:10px ui-monospace,SFMono-Regular,Menlo,monospace}.stepper-buttons{border-left:1px solid #e0e6e1;grid-template-rows:1fr 1fr;align-self:stretch;display:grid}.stepper-buttons button{color:#4d6556;background:#f2f5f2;border:0;width:31px;min-height:17px;padding:0;font-size:12px;line-height:1}.stepper-buttons button:hover,.stepper-buttons button:active{background:#dce9df}.number-wrap>input[type=text]{flex:1;min-width:0;padding:8px}.number-wrap>b{flex:none}.field.compact{grid-template-columns:1fr 116px}@media (width<=1050px){.app-shell{grid-template-columns:230px minmax(360px,1fr) 280px}.camera-bar button{padding:6px 5px}.brand{min-width:220px}}@media (width<=820px){body{overflow:hidden}.app-shell{grid-template-columns:1fr;grid-template-areas:"top""viewport""status"}.topbar{padding:0 10px}.brand{min-width:0}.brand-mark,.toolbar .button:not(.primary){display:none}.mobile-toggle,.panel-close{display:block}.left-panel,.right-panel{z-index:30;width:min(310px,88vw);transition:transform .22s;position:fixed;top:60px;bottom:34px;box-shadow:0 15px 60px #13201866}.left-panel{left:0;transform:translate(-105%)}.right-panel{right:0;transform:translate(105%)}.left-panel.mobile-open,.right-panel.mobile-open{transform:translate(0)}.panel-close{z-index:2;background:0 0;border:0;font-size:24px;position:absolute;top:6px;right:8px}.camera-bar{justify-content:flex-start;left:8px;right:8px;overflow:auto;transform:none}.viewport-legend{right:12px;overflow:auto}.statusbar small{display:none}.compare-cards,.diff-list,.field-grid{grid-template-columns:1fr}}@media (width<=480px){.brand strong{font-size:12px}.brand span{display:none}.toolbar{gap:3px}.button{padding:7px 9px}.statusbar{gap:5px}.statusbar p,.viewport-legend span:nth-child(-n+3){display:none}}.left-panel{scroll-padding-block:12px}.tree-group button{scroll-margin-block:12px}
