:root{--cp-bg: #e8eeeb;--cp-bg-deep: #101f1d;--cp-surface: #fbfdfc;--cp-surface-raised: #ffffff;--cp-surface-muted: #f1f6f4;--cp-surface-dark: #142522;--cp-surface-dark-2: #1a302c;--cp-text: #14201d;--cp-text-muted: #65746f;--cp-text-inverse: #f8fffc;--cp-border: #cfdbd6;--cp-border-strong: #aebfba;--cp-accent: #0f766e;--cp-accent-strong: #0b5f58;--cp-accent-soft: #dff3ef;--cp-warning: #b7791f;--cp-danger: #c2413a;--cp-radius: 8px;--cp-radius-sm: 6px;--cp-shadow-soft: 0 18px 44px rgba(20, 32, 29, .12);--cp-shadow-panel: 0 1px 0 rgba(255, 255, 255, .9) inset, 0 16px 42px rgba(14, 33, 29, .12);--cp-shadow-control: 0 1px 0 rgba(255, 255, 255, .95) inset, 0 1px 2px rgba(14, 33, 29, .08);color:var(--cp-text);background:var(--cp-bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top left,rgba(15,118,110,.14),transparent 30rem),linear-gradient(135deg,#dce7e2,#eef3f0 45%,#d9e4df)}button,input,select{font:inherit}button{align-items:center;border:1px solid var(--cp-border);background:linear-gradient(180deg,#fff,#f4f8f6);border-radius:var(--cp-radius-sm);box-shadow:var(--cp-shadow-control);color:var(--cp-text);cursor:pointer;display:inline-flex;height:2.5rem;justify-content:center;min-width:2.5rem;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease,transform .12s ease}button:hover{border-color:var(--cp-accent);box-shadow:0 0 0 3px #0f766e14,var(--cp-shadow-control)}button:active{transform:translateY(1px)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid rgba(15,118,110,.55);outline-offset:2px}button:disabled{box-shadow:none;color:#8b9993;cursor:not-allowed;opacity:.55;transform:none}.app-shell{display:grid;grid-template-rows:auto 1fr;min-height:100vh}.topbar{align-items:center;background:linear-gradient(180deg,#172825fa,#101f1dfa),var(--cp-bg-deep);border-bottom:1px solid rgba(194,215,207,.22);box-shadow:0 18px 44px #0a16132e;display:flex;gap:1rem;justify-content:space-between;min-height:4.5rem;padding:.75rem 1.1rem;position:relative;z-index:10}.brand-logo{background:#fffffff5;border:1px solid rgba(255,255,255,.72);border-radius:var(--cp-radius);box-shadow:0 10px 28px #0000002e;display:block;height:clamp(2.05rem,4.2vw,3.1rem);max-width:min(19rem,54vw);object-fit:contain;padding:.18rem .32rem}.primary-action{background:linear-gradient(180deg,#0f8c82,#0b625b);border-color:#82dccd8c;box-shadow:0 0 0 1px #ffffff29 inset,0 12px 28px #0f766e47;color:#fff;font-weight:850;min-height:2.35rem;padding:0 1.05rem}.primary-action:hover{border-color:#c1fff5d1;box-shadow:0 0 0 1px #fff3 inset,0 0 0 3px #38bdac38,0 16px 34px #0f766e57}.topbar-actions,.account-control{align-items:center;display:flex;gap:.55rem}.project-save-action,.project-delete-action{align-items:center;display:inline-flex;gap:.42rem;min-height:2rem;padding:0 .72rem;white-space:nowrap}.project-save-action{background:#16403be0;border-color:#69beb06b;color:#ecfffb}.project-save-action:hover{background:#1a524af5;border-color:#91ddd0ad}.project-delete-action{background:#432627b8;border-color:#d3817e6b;color:#ffeceb}.project-delete-action:hover{background:#5d2d2fe0;border-color:#eb9b97ad}.project-context-control{align-items:center;background:#ffffff14;border:1px solid rgba(210,231,224,.18);border-radius:var(--cp-radius-sm);color:#b9cbc5;display:grid;gap:.08rem .5rem;grid-template-columns:auto minmax(7rem,15rem);min-height:2.8rem;padding:.25rem .5rem}.project-context-control>span,.project-context-control>small{font-size:.65rem;font-weight:750}.project-context-control>small{grid-column:2}.project-context-control select{background:#f7fbf9;border:0;border-radius:4px;color:#17332e;font-size:.75rem;font-weight:800;min-width:0;padding:.2rem .35rem;width:100%}.account-control{border-left:1px solid rgba(210,231,224,.18);padding-left:.65rem}.account-identity{color:var(--cp-text-inverse);display:grid;line-height:1.15;max-width:10rem;text-align:right}.account-identity strong,.account-identity small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-identity strong{font-size:.78rem}.account-identity small{color:#b9cbc5;font-size:.68rem}.account-logout{background:#ffffff14;border-color:#d2e7e033;color:var(--cp-text-inverse);height:2.25rem;min-width:2.25rem;width:2.25rem}.auth-shell{background-color:#e8eeeb;color:var(--cp-text);min-height:100vh}.auth-system-bar{align-items:center;background:var(--cp-bg-deep);border-bottom:1px solid #35504a;color:#b9cbc5;display:flex;gap:1rem;min-height:4.5rem;padding:.75rem 1.1rem}.auth-brand-logo{background:#fff;border:1px solid #d9e3df;border-radius:var(--cp-radius-sm);display:block;height:3rem;max-width:min(18rem,68vw);object-fit:contain;padding:.18rem .32rem}.auth-workspace{align-items:center;background-image:linear-gradient(rgba(92,118,109,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(92,118,109,.08) 1px,transparent 1px);background-size:32px 32px;display:grid;min-height:calc(100vh - 4.5rem);padding:2rem 1rem;place-items:center}.auth-form{background:var(--cp-surface-raised);border:1px solid var(--cp-border-strong);border-radius:var(--cp-radius);box-shadow:var(--cp-shadow-panel);display:grid;gap:1rem;padding:1.4rem;width:min(100%,26rem)}.auth-form-heading{align-items:center;border-bottom:1px solid var(--cp-border);display:flex;gap:.8rem;padding-bottom:1rem}.auth-form-heading h1,.auth-form-heading p{margin:0}.auth-form-heading h1{font-size:1.15rem}.auth-form-heading p{color:var(--cp-text-muted);font-size:.8rem;margin-top:.2rem}.auth-form-icon{align-items:center;background:var(--cp-accent-soft);border:1px solid #b7ddd6;border-radius:var(--cp-radius-sm);color:var(--cp-accent-strong);display:inline-flex;height:2.5rem;justify-content:center;width:2.5rem}.auth-form label{color:#3f504b;display:grid;font-size:.78rem;font-weight:750;gap:.35rem}.auth-form input{background:#fff;border:1px solid var(--cp-border-strong);border-radius:var(--cp-radius-sm);color:var(--cp-text);min-height:2.65rem;padding:0 .75rem;width:100%}.auth-submit{min-height:2.65rem;width:100%}.auth-error{background:#fff3f1;border-left:3px solid var(--cp-danger);color:#8f2f2a;font-size:.8rem;margin:0;padding:.65rem .75rem}.auth-state-shell{align-content:center;display:grid;gap:1rem;justify-items:center;padding:1.5rem;text-align:center}.auth-state-shell p{margin:0}.project-start-shell,.project-state-shell{align-items:center;background-color:#e8eeeb;display:grid;min-height:100vh;padding:1.5rem;place-items:center}.project-start-form{background:var(--cp-surface-raised);border:1px solid var(--cp-border-strong);border-radius:var(--cp-radius);box-shadow:var(--cp-shadow-panel);display:grid;gap:1rem;padding:1.4rem;width:min(100%,28rem)}.project-start-heading{align-items:center;border-bottom:1px solid var(--cp-border);color:var(--cp-accent-strong);display:flex;gap:.75rem;padding-bottom:1rem}.project-start-heading h1,.project-start-heading p{margin:0}.project-start-heading h1{color:var(--cp-text);font-size:1.1rem}.project-start-heading p{color:var(--cp-text-muted);font-size:.78rem;margin-top:.2rem}.project-start-form label{color:#3f504b;display:grid;font-size:.78rem;font-weight:750;gap:.35rem}.project-start-form input{border:1px solid var(--cp-border-strong);border-radius:var(--cp-radius-sm);min-height:2.65rem;padding:0 .75rem}.project-state-shell{align-content:center;gap:1rem;justify-items:center;text-align:center}.viewport-readout{align-items:center;display:flex;flex:1;gap:.75rem;justify-content:flex-start;min-width:0}.viewport-readout span{background:#ffffff14;border:1px solid rgba(210,231,224,.18);border-radius:var(--cp-radius-sm);color:var(--cp-text-inverse);font-size:.88rem;font-weight:800;min-height:2rem;padding:.35rem .65rem;white-space:nowrap}.workspace-layout-control{align-items:center;background:#ffffff17;border:1px solid rgba(210,231,224,.18);border-radius:var(--cp-radius-sm);display:flex;gap:.45rem;min-height:2rem;padding:.25rem .5rem}.workspace-layout-control span{border:0;color:#b9cbc5;font-size:.72rem;min-height:0;padding:0;text-transform:uppercase}.workspace-layout-control select{border:0;background:transparent;color:var(--cp-text-inverse);font-size:.82rem;font-weight:800;min-height:1.4rem;padding:0}.workspace-layout-option{background:#f7fbf9;color:#17332e}.workspace-visibility-controls{align-items:center;display:flex;flex-wrap:wrap;gap:.35rem}.workspace-visibility-controls label{align-items:center;background:#ffffff14;border:1px solid rgba(210,231,224,.16);border-radius:var(--cp-radius-sm);display:inline-flex;gap:.3rem;min-height:2rem;padding:0 .45rem}.workspace-visibility-controls input{appearance:none;background:#ffffff14;border:1px solid rgba(210,231,224,.42);border-radius:4px;display:grid;height:.82rem;margin:0;place-content:center;width:.82rem}.workspace-visibility-controls input:before{background:#dffdf8;border-radius:2px;box-shadow:0 0 12px #2dd4bf6b;content:"";height:.44rem;transform:scale(0);transition:transform .12s ease;width:.44rem}.workspace-visibility-controls input:checked{background:var(--cp-accent);border-color:#55d9c9}.workspace-visibility-controls input:checked:before{transform:scale(1)}.workspace-visibility-controls span{border:0;color:#eefaf6;font-size:.76rem;font-weight:800;min-height:0;padding:0}.editor-layout{display:grid;grid-template-columns:minmax(14rem,17rem) minmax(0,1fr) minmax(18rem,21rem);height:calc(100vh - 4.5rem);min-height:0;overflow:hidden}.side-panel::-webkit-scrollbar,.inspector-panel::-webkit-scrollbar,.device-picker::-webkit-scrollbar{width:.55rem}.side-panel::-webkit-scrollbar-track,.inspector-panel::-webkit-scrollbar-track,.device-picker::-webkit-scrollbar-track{background:transparent}.side-panel::-webkit-scrollbar-thumb,.inspector-panel::-webkit-scrollbar-thumb,.device-picker::-webkit-scrollbar-thumb{background:#65746f61;border:2px solid transparent;border-radius:999px;background-clip:padding-box}.side-panel::-webkit-scrollbar-thumb:hover,.inspector-panel::-webkit-scrollbar-thumb:hover,.device-picker::-webkit-scrollbar-thumb:hover{background:#0f766e8a;border:2px solid transparent;background-clip:padding-box}.editor-layout-collapsed{grid-template-columns:4.25rem minmax(0,1fr) minmax(18rem,21rem)}.editor-layout-inspector-collapsed{grid-template-columns:minmax(14rem,17rem) minmax(0,1fr) 4.25rem}.editor-layout-collapsed.editor-layout-inspector-collapsed{grid-template-columns:4.25rem minmax(0,1fr) 4.25rem}.workspace-maximized{grid-template-columns:0 minmax(0,1fr) 0}.workspace-maximized .side-panel,.workspace-maximized .inspector-panel{display:none}.side-panel{background:linear-gradient(180deg,#fffffff5,#f3f8f6fa),var(--cp-surface);border-right:1px solid var(--cp-border);box-shadow:10px 0 34px #14201d14;display:flex;flex-direction:column;gap:.85rem;min-height:0;overflow-y:auto;padding:.8rem}.inspector-panel{background:linear-gradient(180deg,#fafdfcfa,#eef5f2fa),var(--cp-surface-muted);border-left:1px solid var(--cp-border);box-shadow:-10px 0 34px #14201d14;display:flex;flex-direction:column;gap:.9rem;min-height:0;overflow-y:auto;padding:.8rem}.inspector-header{align-items:center;background:linear-gradient(180deg,#1b322efa,#0f1f1cfa),var(--cp-surface-dark);border:1px solid rgba(154,190,179,.34);border-radius:var(--cp-radius);box-shadow:0 1px #ffffff1a inset,0 .75rem 1.85rem #0b1c1929;display:grid;gap:.6rem;grid-template-columns:auto minmax(0,1fr) auto;min-height:3.25rem;min-width:0;padding:.55rem}.panel-dock-header{overflow:hidden;position:relative}.panel-dock-header:before{background:linear-gradient(90deg,#27d2bd,#27d2bd00);content:"";height:2px;inset:0 0 auto;position:absolute}.panel-dock-header>svg{color:#cce9e2}.panel-dock-title{display:grid;gap:.05rem;min-width:0}.panel-dock-title span{color:#9fc9bf;display:block;font-size:.72rem;font-weight:850;line-height:1.1;text-transform:uppercase}.panel-dock-title strong{color:var(--cp-text-inverse);display:block;font-size:.95rem;line-height:1.18;min-width:0;overflow-wrap:anywhere}.panel-edge-toggle{background:linear-gradient(180deg,#fff,#eef5f2);border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);box-shadow:var(--cp-shadow-control);font-size:1rem;font-weight:900;height:2rem;min-width:2rem;padding:0}.panel-dock-toggle{background:linear-gradient(180deg,#2ee2cf2e,#ffffff14),#ffffff14;border-color:#c3e8e047;box-shadow:0 1px #ffffff24 inset,0 0 0 1px #ffffff0d,0 .65rem 1.45rem #0000002e;color:#d9fff8;isolation:isolate;overflow:hidden;position:relative}.panel-dock-toggle:before{background:linear-gradient(180deg,#7ff7e9,#2dd4bf47);border-radius:999px;content:"";height:1.05rem;inset-inline-start:.22rem;position:absolute;top:50%;transform:translateY(-50%);width:.18rem}.panel-dock-toggle svg{stroke-width:2.35}.panel-dock-toggle:hover,.panel-dock-toggle:focus-visible{background:linear-gradient(180deg,#46f5e247,#ffffff1c),#ffffff1f;border-color:#80f7e994;box-shadow:0 1px #ffffff2e inset,0 0 0 3px #2dd4bf29,0 .8rem 1.7rem #0003}.inspector-toggle{justify-self:end}.inspector-panel-collapsed{align-items:stretch;gap:.55rem;overflow-x:hidden;padding:.65rem .45rem}.inspector-panel-collapsed .inspector-header{grid-template-columns:1fr;justify-items:center;padding:0}.inspector-panel-collapsed .inspector-header>svg,.inspector-panel-collapsed .inspector-header div,.inspector-panel-collapsed .inspector-section{display:none}.inspector-panel-collapsed .inspector-toggle{height:2.25rem;justify-self:center;min-width:2.25rem;width:2.25rem}.inspector-panel-collapsed .panel-toggle-icon{display:block}.inspector-header span{color:#9fc9bf;display:block;font-size:.72rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.inspector-header strong{color:var(--cp-text-inverse);display:block;font-size:.95rem;line-height:1.2;min-width:0;overflow-wrap:anywhere}.inspector-section{background:#ffffff85;border:1px solid rgba(207,219,214,.82);border-radius:var(--cp-radius);box-shadow:0 1px #ffffffd1 inset;display:grid;gap:.65rem;padding:.65rem}.layer-list{display:grid;gap:.45rem;list-style:none;margin:0;padding:0}.layer-list li{background:var(--cp-surface-raised);border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);box-shadow:var(--cp-shadow-control);display:grid;gap:.2rem;min-width:0;padding:.55rem .65rem}.layer-list strong{font-size:.82rem;line-height:1.2;overflow-wrap:anywhere}.layer-list span,.empty-inspector-note{color:var(--cp-text-muted);font-size:.82rem;line-height:1.35}.empty-inspector-note{margin:0}.side-panel-collapsed{align-items:stretch;gap:.55rem;overflow-x:hidden;padding:.65rem .45rem}.sidebar-toolbar{align-items:center;background:linear-gradient(180deg,#1b322efa,#0f1f1cfa),var(--cp-surface-dark);border:1px solid rgba(154,190,179,.34);border-radius:var(--cp-radius);box-shadow:0 1px #ffffff1a inset,0 .75rem 1.85rem #0b1c1929;display:grid;gap:.6rem;grid-template-columns:auto minmax(0,1fr) auto;min-height:3.25rem;padding:.55rem}.sidebar-toggle{font-size:1rem;font-weight:900;height:2rem;min-width:2rem;padding:0}.side-panel-collapsed .sidebar-toolbar{grid-template-columns:1fr;justify-items:center;padding:.45rem}.sidebar-summary{gap:.55rem}.sidebar-summary-grid{display:grid;gap:.45rem;grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar-summary-grid div{background:var(--cp-surface-raised);border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);box-shadow:var(--cp-shadow-control);display:grid;gap:.16rem;min-width:0;padding:.48rem .55rem}.sidebar-summary-grid span{color:var(--cp-text-muted);font-size:.72rem;font-weight:800}.sidebar-summary-grid strong{font-size:.82rem;line-height:1.2;min-width:0;overflow-wrap:anywhere}.upload-control{align-items:center;background:linear-gradient(180deg,#fff,#f5faf8);border:1px solid var(--cp-border);border-radius:var(--cp-radius);box-shadow:var(--cp-shadow-control);cursor:pointer;display:flex;font-weight:700;gap:.6rem;min-height:2.75rem;padding:0 .85rem}.upload-control input{height:1px;opacity:0;overflow:hidden;position:absolute;width:1px}.control-with-help{align-items:stretch;display:grid;gap:.45rem;grid-template-columns:1fr}.panel-section{background:#ffffff7a;border:1px solid rgba(207,219,214,.82);border-radius:var(--cp-radius);box-shadow:0 1px #ffffffd1 inset;display:grid;gap:.75rem;padding:.65rem;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.section-heading{align-items:center;color:var(--cp-text-muted);display:flex;font-size:.78rem;font-weight:800;justify-content:space-between;letter-spacing:0;text-transform:uppercase}.collapsible-section-body{display:grid;gap:.65rem;min-width:0}.collapsible-section-collapsed{gap:0}.collapsible-section-heading{gap:.45rem}.section-collapse-button{align-items:center;background:linear-gradient(180deg,#ffffffeb,#f7fbf9c2),var(--cp-surface);border:1px solid rgba(207,219,214,.58);border-radius:var(--cp-radius);box-shadow:0 1px #ffffffe6 inset,0 .45rem 1.2rem #0f172a09;color:inherit;cursor:pointer;display:inline-flex;flex:1;font:inherit;gap:.35rem;justify-content:flex-start;letter-spacing:inherit;min-height:2.45rem;min-width:0;padding:0 .7rem;text-align:left;text-transform:inherit;transition:border-color .16s ease,box-shadow .16s ease,color .16s ease}.section-collapse-button span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.section-collapse-button:hover,.section-collapse-button:focus-visible{border-color:#0f766e52;box-shadow:0 1px #fffffff5 inset,0 .65rem 1.5rem #0f766e14;color:var(--cp-accent)}.section-collapse-icon{color:var(--cp-text-muted);display:inline-flex;flex:0 0 auto;line-height:0}.section-collapse-button:hover .section-collapse-icon,.section-collapse-button:focus-visible .section-collapse-icon{color:var(--cp-accent)}.tool-group{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(2.5rem,1fr))}.calibration-panel,.scene-panel,.entrance-panel,.constraint-panel,.device-panel{background:#ffffff7a;border:1px solid rgba(207,219,214,.82);border-radius:var(--cp-radius);box-shadow:0 1px #ffffffd1 inset;display:grid;gap:.75rem;padding:.65rem}.scene-tools{display:grid;gap:.45rem}.tool-with-help{align-items:stretch;display:grid;gap:.45rem;grid-template-columns:1fr}.scene-kind-button{gap:.45rem;justify-content:flex-start;min-height:2.35rem;padding:0 .65rem;text-align:left;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease}.scene-kind-button svg,.device-category-button svg,.upload-control svg,.secondary-action svg{color:var(--cp-accent);stroke-width:2}.scene-kind-button span,.upload-control span,.secondary-action span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-kind-button[aria-pressed=true]{background:linear-gradient(180deg,#f2fffb,#dff3ef);border-color:var(--cp-accent);box-shadow:inset 3px 0 0 var(--cp-accent),0 0 0 3px #0f766e14}.scene-kind-button:hover,.device-category-button:hover,.device-picker-option:hover{background:linear-gradient(180deg,#fff,#f0faf6);border-color:#0f766e61;box-shadow:0 1px #ffffffeb inset,0 .55rem 1.35rem #0f766e14}.scene-status{color:var(--cp-text-muted);display:grid;font-size:.85rem;gap:.25rem}.scene-object-list{display:grid;gap:.45rem;list-style:none;margin:0;padding:0}.scene-object-list li{background:var(--cp-surface-raised);border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);box-shadow:var(--cp-shadow-control);display:grid;gap:.2rem;padding:.55rem .65rem}.scene-object-list strong{font-size:.76rem;letter-spacing:0}.scene-object-name-field{display:grid;gap:.25rem}.scene-object-name-field span{color:var(--cp-text-muted);font-size:.74rem;font-weight:800}.scene-object-name-field input{border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);color:var(--cp-text);font-size:.86rem;font-weight:800;min-height:2rem;padding:0 .5rem;width:100%}.scene-object-list span{color:var(--cp-text-muted);font-size:.82rem}.device-category-list{display:grid;gap:.5rem;grid-template-columns:1fr}.device-category-button{align-items:center;background:linear-gradient(180deg,#fffffff5,#f6fbf9d1),var(--cp-surface-raised);border-color:#c0d2ccdb;border-radius:var(--cp-radius);box-shadow:0 1px #ffffffe6 inset,0 .45rem 1.2rem #0f172a0b;display:grid;gap:.35rem;grid-template-columns:auto 1fr auto;justify-content:stretch;min-height:3rem;min-width:0;padding:0 .62rem;text-align:left;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease}.device-category-button span{font-size:.92rem;font-weight:760;line-height:1.2;min-width:0;overflow-wrap:anywhere}.device-category-button small{align-items:center;background:#0f766e14;border:1px solid rgba(15,118,110,.16);border-radius:999px;color:var(--cp-accent);display:inline-flex;font-size:.72rem;font-weight:850;justify-content:center;min-inline-size:1.45rem;padding:.06rem .34rem}.device-kind-button{min-height:2.2rem}.device-object-list li{gap:.45rem}.device-field-label{gap:.25rem}.device-field-label select{min-height:2rem}.selected-inspector-item{border-color:var(--cp-accent);box-shadow:inset 3px 0 0 var(--cp-accent),0 0 0 3px #0f766e14}.device-properties-card,.camera-warning-card,.catalog-profile-card{background:var(--cp-surface-raised);border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);box-shadow:var(--cp-shadow-control);display:grid;gap:.35rem;padding:.65rem}.device-properties-card strong{font-size:.9rem}.device-properties-card span,.camera-warning-card span,.catalog-profile-card span{color:var(--cp-text-muted);font-size:.82rem;line-height:1.35}.camera-warning-card{background:#fff8e8;border-color:#e5b75b}.camera-warning-card strong{color:#805500}.catalog-project-field{margin-bottom:.65rem}.catalog-profile-card{background:#eef9f6;border-color:#9bcfc5}.catalog-profile-card strong{color:#0b5e56}.catalog-profile-card .catalog-profile-warning,.catalog-error{color:#8a4b08}.catalog-error{font-size:.8rem;margin:0 0 .65rem}.modal-backdrop{align-items:flex-start;background:#0c191657;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;inset:0;justify-content:flex-start;padding:5.5rem 1rem 1rem 20rem;position:fixed;z-index:80}.device-picker{background:linear-gradient(180deg,#fff,#f2f8f5);border:1px solid var(--cp-border);border-radius:var(--cp-radius);box-shadow:0 1.5rem 4rem #0f172a47;display:grid;gap:.85rem;max-height:min(72vh,42rem);overflow:auto;padding:1rem;width:min(34rem,calc(100vw - 2rem))}.device-picker-header{align-items:start;display:flex;gap:1rem;justify-content:space-between}.device-picker-kicker{color:var(--cp-text-muted);display:block;font-size:.74rem;font-weight:900;text-transform:uppercase}.device-picker h2{font-size:1.05rem;line-height:1.2;margin:.1rem 0 0}.icon-action{height:2rem;min-width:2rem;padding:0}.device-picker-note{color:var(--cp-text-muted);font-size:.86rem;font-weight:700;line-height:1.35;margin:0}.device-picker-search{display:grid;gap:.35rem}.device-picker-search span{color:var(--cp-text-muted);font-size:.76rem;font-weight:850}.device-picker-search input{width:100%}.device-picker-empty{color:var(--cp-text-muted);font-size:.85rem;margin:0;padding:.85rem .25rem}.device-picker-options{display:grid;gap:.55rem}.device-picker-option{align-items:start;display:grid;gap:.25rem .6rem;grid-template-columns:auto 1fr;height:auto;justify-content:stretch;min-height:3.2rem;padding:.65rem .75rem;text-align:left}.device-picker-option span{font-weight:850;line-height:1.2}.device-picker-option small{color:var(--cp-text-muted);font-size:.78rem;font-weight:650;grid-column:2;line-height:1.3}.side-panel-collapsed .section-heading span,.side-panel-collapsed .sidebar-summary,.side-panel-collapsed .panel-dock-title,.side-panel-collapsed .sidebar-toolbar>svg,.side-panel-collapsed .upload-control span,.side-panel-collapsed .scene-kind-button span,.side-panel-collapsed .secondary-action span,.side-panel-collapsed .field-label,.side-panel-collapsed .style-controls,.side-panel-collapsed .scene-status,.side-panel-collapsed .calibration-status,.side-panel-collapsed .scale-readout,.side-panel-collapsed .state-readout,.side-panel-collapsed .device-category-button span,.side-panel-collapsed .device-category-button small{display:none}.side-panel-collapsed .control-with-help,.side-panel-collapsed .tool-with-help,.side-panel-collapsed .tool-group,.side-panel-collapsed .device-category-list{grid-template-columns:1fr}.side-panel-collapsed .upload-control,.side-panel-collapsed .scene-kind-button,.side-panel-collapsed .secondary-action,.side-panel-collapsed .device-category-button{justify-content:center;min-width:2.75rem;padding:0}.calibration-status{color:var(--cp-text-muted);display:grid;font-size:.85rem;gap:.25rem}.field-label{display:grid;font-size:.85rem;font-weight:700;gap:.35rem}.field-label input{background:#fff;border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);min-height:2.35rem;padding:0 .7rem}.field-label select{background:#fff;border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);color:var(--cp-text);min-height:2.35rem;padding:0 .7rem}.field-label input[type=color]{cursor:pointer;min-height:2.35rem;padding:.2rem}.field-label input[type=range]{padding:0}.style-controls{background:#f1f6f4d1;border:1px solid var(--cp-border);border-radius:var(--cp-radius-sm);display:grid;gap:.65rem;padding:.7rem}.secondary-action{justify-content:flex-start;padding:0 .75rem}.scale-readout{color:var(--cp-accent);font-size:.9rem;font-weight:700;margin:0}.state-readout{border-top:1px solid var(--cp-border);display:grid;gap:.75rem;margin:0;padding-top:1rem}.state-readout div{display:grid;gap:.2rem}.state-readout dt{color:var(--cp-text-muted);font-size:.78rem;font-weight:700}.state-readout dd{align-items:center;display:flex;gap:.35rem;font-size:.95rem;margin:0}.workspace-stage{background:linear-gradient(90deg,rgba(15,118,110,.075) 1px,transparent 1px),linear-gradient(rgba(15,118,110,.075) 1px,transparent 1px),radial-gradient(circle at 50% 35%,rgba(255,255,255,.82),transparent 32rem),#dfe9e5;background-size:32px 32px;display:grid;gap:.35rem;min-height:calc(100vh - 4.5rem);min-width:0;overflow:hidden;padding:.35rem}.workspace-stage-source{grid-template-columns:1fr}.workspace-stage-split_vertical{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-stage-triple{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);grid-template-rows:repeat(2,minmax(0,1fr))}.workspace-stage-triple .workspace-viewport:first-child{grid-row:1 / span 2}.workspace-stage-quad{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.workspace-viewport{border:1px solid rgba(174,191,186,.72);border-radius:var(--cp-radius);box-shadow:0 1px #fffffff2 inset,0 18px 44px #101f1d14;min-height:0;min-width:0;overflow:hidden;position:relative}.workspace-source-viewport{display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.workspace-viewport-hidden{display:none}.workspace-viewport-maximized{grid-column:1 / -1;grid-row:1 / -1}.workspace-viewport-header{align-items:center;background:linear-gradient(180deg,#182b28,#12221f);border-bottom:1px solid rgba(210,231,224,.18);color:var(--cp-text-inverse);display:flex;gap:.5rem;justify-content:space-between;min-height:2.25rem;padding:.25rem .5rem;z-index:8}.workspace-viewport-header strong{font-size:.82rem;letter-spacing:0}.workspace-viewport-header .icon-action{background:#ffffff14;border-color:#d2e7e02e;box-shadow:none;color:#d9eee8}.workspace-viewport-header .icon-action:hover,.workspace-viewport-header .icon-action:focus-visible{border-color:#2dd4bfb8;color:#fff}.workspace-placeholder{background:linear-gradient(135deg,#ffffffeb,#ecf6f2e6),var(--cp-surface);display:grid;grid-template-rows:auto 1fr}.workspace-placeholder p{align-self:center;color:var(--cp-text-muted);font-size:.9rem;font-weight:700;line-height:1.45;margin:0;max-width:34rem;padding:1rem}.raster-stage{align-items:center;cursor:default;display:flex;justify-content:center;overflow:hidden;touch-action:none}.workspace-source-canvas{background:linear-gradient(90deg,rgba(15,118,110,.055) 1px,transparent 1px),linear-gradient(rgba(15,118,110,.055) 1px,transparent 1px),#e7efeb;background-size:24px 24px;min-height:0;min-width:0}.raster-stage:active{cursor:grabbing}.plan-image{display:block;height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;width:100%}.plan-layer{background:#f7fbf9;border:1px solid rgba(174,191,186,.7);box-shadow:0 1px #fffffff2 inset,0 18px 52px #101f1d29;max-height:min(78vh,960px);max-width:min(78vw,1280px);position:relative;transform-origin:0 0}.plan-selection-frame{border:1.5px solid rgba(37,99,235,.9);box-shadow:0 0 0 1px #fffc,0 0 0 5px #2563eb1f;inset:0;pointer-events:none;position:absolute;z-index:4}.plan-resize-handle{background:#fff;border:2px solid #2563eb;border-radius:999px;box-shadow:0 1px 4px #0f172a38,0 0 0 3px #ffffffd1;height:.7rem;min-width:0;padding:0;pointer-events:all;position:absolute;transition:background .12s ease,transform .12s ease;width:.7rem}.plan-resize-handle:hover,.plan-resize-handle:focus-visible{background:#dbeafe;outline:none}.plan-resize-handle-nw{cursor:nwse-resize;left:-.35rem;top:-.35rem}.plan-resize-handle-n{cursor:ns-resize;left:50%;top:-.35rem;transform:translate(-50%)}.plan-resize-handle-n:hover,.plan-resize-handle-n:focus-visible{transform:translate(-50%) scale(1.18)}.plan-resize-handle-ne{cursor:nesw-resize;right:-.35rem;top:-.35rem}.plan-resize-handle-e{cursor:ew-resize;right:-.35rem;top:50%;transform:translateY(-50%)}.plan-resize-handle-e:hover,.plan-resize-handle-e:focus-visible{transform:translateY(-50%) scale(1.18)}.plan-resize-handle-se{cursor:nwse-resize;bottom:-.35rem;right:-.35rem}.plan-resize-handle-s{bottom:-.35rem;cursor:ns-resize;left:50%;transform:translate(-50%)}.plan-resize-handle-s:hover,.plan-resize-handle-s:focus-visible{transform:translate(-50%) scale(1.18)}.plan-resize-handle-sw{bottom:-.35rem;cursor:nesw-resize;left:-.35rem}.plan-resize-handle-w{cursor:ew-resize;left:-.35rem;top:50%;transform:translateY(-50%)}.plan-resize-handle-w:hover,.plan-resize-handle-w:focus-visible{transform:translateY(-50%) scale(1.18)}.plan-resize-handle-nw:hover,.plan-resize-handle-nw:focus-visible,.plan-resize-handle-ne:hover,.plan-resize-handle-ne:focus-visible,.plan-resize-handle-se:hover,.plan-resize-handle-se:focus-visible,.plan-resize-handle-sw:hover,.plan-resize-handle-sw:focus-visible{transform:scale(1.18)}.scene-overlay{height:100%;inset:0;overflow:visible;pointer-events:none;position:absolute;width:100%}.scene-polygon{fill:#12695d2e;stroke:#12695d;stroke-width:2}.scene-polygon-building{fill:#375b9129;stroke:#375b91}.scene-polygon-obstacle{fill:#8058282e;stroke:#805828}.scene-polygon-critical-zone{fill:#ab364929;stroke:#ab3649}.scene-polygon-excluded-zone{fill:#282d312e;stroke:#282d31}.scene-draft-line{fill:none;stroke:#f5c542;stroke-dasharray:7 5;stroke-width:2}.scene-draft-line-building{stroke:#375b91}.scene-draft-line-obstacle{stroke:#805828}.scene-draft-line-critical-zone{stroke:#ab3649}.scene-draft-line-excluded-zone{stroke:#282d31}.scene-draft-point{cursor:grab;fill:#f5c542;pointer-events:all;stroke:#17211d;stroke-width:2}.scene-draft-point:active{cursor:grabbing}.scene-draft-point-building{fill:#8fb0e4}.scene-draft-point-obstacle{fill:#d3a35f}.scene-draft-point-critical-zone{fill:#e58b99}.scene-draft-point-excluded-zone{fill:#8a949a}.scene-object-label{fill:#17211d;font-size:16px;font-weight:800;paint-order:stroke;pointer-events:none;stroke:#fff;stroke-width:4px}.entrance-crossing-line{stroke:#2b6cb0;stroke-linecap:round;stroke-width:4}.entrance-vector-line{stroke:#d1495b;stroke-dasharray:8 5;stroke-linecap:round;stroke-width:3}.access-point-pedestrian-entry .entrance-crossing-line{stroke:#0f766e}.access-point-pedestrian-entry .entrance-vector-line{stroke:#7c3aed}.access-point-interior-door .entrance-crossing-line{stroke:#6b7280}.access-point-interior-door .entrance-vector-line{stroke:#0f766e}.access-point-label{fill:#10201c;font-size:13px;font-weight:900;paint-order:stroke;pointer-events:none;stroke:#ffffffe0;stroke-width:4}.entrance-vector-line:after{content:""}.entrance-draft-point{cursor:grab;fill:#fff;pointer-events:all;stroke:#d1495b;stroke-width:2}.constraint-point circle{cursor:grab;fill:#fff;pointer-events:all;stroke-width:3}.constraint-point circle:active{cursor:grabbing}.constraint-point-mounting-point circle{fill:#e7f5f1;stroke:#12695d}.constraint-point-power-point circle{fill:#fff4df;stroke:#b7791f}.constraint-point-network-point circle{fill:#edf4ff;stroke:#375b91}.constraint-point-icon{fill:#17211d;font-size:10px;font-weight:900;pointer-events:none;text-anchor:middle}.project-device-marker{cursor:grab;filter:drop-shadow(0 1px 2px rgba(15,23,42,.35));pointer-events:all}.project-device-marker:active{cursor:grabbing}.project-device-marker-selected{filter:drop-shadow(0 0 .28rem rgba(18,105,93,.85)) drop-shadow(0 1px 2px rgba(15,23,42,.35))}.project-device-camera-body,.project-device-node-body{stroke:#fff;stroke-linejoin:round;stroke-width:2}.project-device-symbol{vector-effect:non-scaling-stroke}.project-device-direction-arrow{fill:#12695d4d;stroke:#0f766e;stroke-linejoin:round;stroke-width:1.5}.project-device-camera-lens{fill:#fff;stroke:#0f172a59;stroke-width:1}.project-device-camera-bracket,.project-device-access-lines,.project-device-infra-lines{fill:none;stroke:#fff;stroke-linecap:round;stroke-width:2}.project-device-alarm-dot{fill:#fff}.project-device-terminal{fill:#fff;pointer-events:none}.project-device-marker-video .project-device-camera-body{fill:#0f766e}.project-device-marker-access-control .project-device-node-body{fill:#7c3aed}.project-device-marker-alarm .project-device-node-body{fill:#be123c}.project-device-marker-infrastructure .project-device-node-body{fill:#1d4ed8}.access-control-link-line{fill:none;pointer-events:none;stroke:#7c3aed;stroke-dasharray:5 4;stroke-linecap:round;stroke-width:3}.access-controller-link-line{fill:none;pointer-events:none;stroke:#0f766e;stroke-dasharray:3 4;stroke-linecap:round;stroke-width:2.5}.access-power-link-line{fill:none;pointer-events:none;stroke:#b45309;stroke-dasharray:8 4 2 4;stroke-linecap:round;stroke-width:2.5}.alarm-panel-link-line{fill:none;pointer-events:none;stroke:#9f1239;stroke-dasharray:3 5;stroke-linecap:round;stroke-width:2.5}.camera-poe-link-line,.camera-recorder-link-line{fill:none;pointer-events:none;stroke-linecap:round;stroke-width:2.5}.camera-poe-link-line{stroke:#0f766e;stroke-dasharray:7 4}.camera-recorder-link-line{stroke:#375b91;stroke-dasharray:2 5}.preliminary-route-line{fill:none;pointer-events:all;stroke-linecap:round;stroke-width:3}.preliminary-route-line-network{stroke:#375b91;stroke-dasharray:10 6}.preliminary-route-line-power{stroke:#b45309;stroke-dasharray:12 5 2 5}.preliminary-route-line-poe{stroke:#0f766e;stroke-dasharray:9 5}.preliminary-route-line-access-control{stroke:#7c3aed;stroke-dasharray:5 4}.preliminary-route-line-low-voltage{stroke:#475569;stroke-dasharray:3 5}.calibration-marker-dot{cursor:grab;fill:#f5c542;pointer-events:all;stroke:#17211d;stroke-width:2}.calibration-marker-label{fill:#17211d;font-size:12px;font-weight:800;pointer-events:none;text-anchor:middle}.empty-plan{aspect-ratio:4 / 3;background:linear-gradient(135deg,#17211d0d,#12695d1a),#f9fbfa;border:1px dashed #9eaaa4;width:min(70vw,48rem)}@media(max-width:760px){.topbar{align-items:flex-start;gap:.75rem;flex-wrap:wrap}.viewport-readout{flex-basis:100%;order:3}.editor-layout{grid-template-columns:1fr;height:auto;overflow:visible}.editor-layout-inspector-collapsed,.editor-layout-collapsed.editor-layout-inspector-collapsed{grid-template-columns:1fr}.side-panel{border-bottom:1px solid #d6ded9;border-right:0;max-height:45vh}.inspector-panel{border-left:0;border-top:1px solid #d6ded9;max-height:none}.raster-stage{min-height:58vh;order:2}.inspector-panel{order:3}}
