:root{--app-bg:oklch(98% .004 95);--app-surface:oklch(100% .002 95);--app-fg:oklch(20% .018 70);--app-muted:oklch(48% .012 70);--app-border:oklch(90% .006 95);--app-accent:oklch(52% .1 28);--app-stage:color-mix(in oklch, var(--app-surface) 94%, var(--app-bg));--app-stage-soft:color-mix(in oklch, var(--app-surface) 92%, var(--app-bg));--font-display:"Iowan Old Style", Charter, Georgia, serif;--font-body:-apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", "IBM Plex Mono", ui-monospace, Menlo, monospace;font-family:var(--font-body);color:var(--app-fg);background:var(--app-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-weight:400;line-height:1.45}*{box-sizing:border-box}body{color:var(--app-fg);background:radial-gradient(circle at top left, color-mix(in oklch, var(--app-accent) 7%, transparent) 0, transparent 30%), linear-gradient(180deg, color-mix(in oklch, var(--app-bg) 78%, white) 0%, var(--app-bg) 100%);min-height:100vh;margin:0}body:before{content:none;pointer-events:none;background:linear-gradient(90deg, color-mix(in srgb, var(--app-accent) 5%, transparent) 1px, transparent 1px), linear-gradient(0deg, color-mix(in srgb, var(--app-accent) 4%, transparent) 1px, transparent 1px);opacity:.42;background-size:64px 64px;animation:18s linear infinite driftGrid;position:fixed;inset:0}body:has(.auth-layout){background:radial-gradient(circle at top left, color-mix(in oklch, var(--app-accent) 7%, transparent), transparent 30%), linear-gradient(180deg, color-mix(in oklch, var(--app-bg) 94%, white) 0%, var(--app-bg) 100%)}@keyframes driftGrid{0%{transform:translate(0,0)}to{transform:translate(32px,18px)}}h1{margin:.35rem 0 .75rem;font-size:clamp(1.5rem,4vw,2.4rem)}h2{letter-spacing:.01em;margin:0 0 .75rem}code{background:#dbeafe;border-radius:6px;padding:.05rem .4rem}.app-layout{--btn-radius:10px;--btn-border:#94a3b8;--btn-bg:#f8fafc;--btn-bg-hover:#f1f5f9;--btn-text:#0f172a;--btn-focus:#3b82f659;--btn-shadow:0 10px 18px -16px #0f172ad9;--btn-primary-bg:linear-gradient(180deg, #0f766e, #115e59);--btn-primary-bg-hover:linear-gradient(180deg, #0f766e, #134e4a);--btn-primary-border:#0f766e;--btn-primary-text:#f0fdfa;--btn-danger-bg:linear-gradient(180deg, #ef4444, #dc2626);--btn-danger-bg-hover:linear-gradient(180deg, #dc2626, #b91c1c);--btn-danger-border:#dc2626}.layout{width:min(1180px,94vw);margin:0 auto;padding:1.8rem 0 3rem}.layout.layout-editor{--editor-canvas-height:clamp(520px, calc(100vh - 216px), 980px);--editor-canvas-min-height:500px;--editor-info-panels-max-height:clamp(180px, calc(100vh - 740px), 320px);width:min(100vw - 24px,1920px);padding-left:.35rem;padding-right:.35rem}.app-layout{padding-top:5.2rem}.app-topbar{grid-template-columns:1fr auto auto;align-items:center;gap:1rem;margin-bottom:1rem;display:grid}.topbar-left{align-items:center;gap:.6rem;display:flex}.topbar-title{color:#e2e8f0;margin:0;font-size:.95rem;font-weight:600}.topbar-nav{background:#0f172a73;border:1px solid #94a3b861;border-radius:999px;gap:.35rem;padding:.2rem;display:inline-flex}.nav-link{color:#e2e8f0;box-shadow:none;background:0 0;border:none;border-radius:999px;padding:.35rem .65rem;font-size:.85rem}.nav-link:hover{box-shadow:none;background:#ffffff2e;transform:none}.nav-link.active{background:#ffffff38}.topbar-right{align-items:center;gap:.55rem;display:flex}.user-login{color:#cbd5e1;margin:0;font-size:.82rem}.plan-chip{color:#e2e8f0;background:#0f172a94;border:1px solid #94a3b880;border-radius:999px;padding:.38rem .72rem;font-size:.78rem}.auth-layout{place-items:center;min-height:100vh;display:grid}.hero{color:#eff6ff;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:linear-gradient(135deg,#0e749073,#155e754d);border:1px solid #bae6fd4d;border-radius:14px;margin-bottom:.7rem;padding:1rem 1.1rem;animation:.45s ease-out fadeIn}.subtitle{max-width:65ch;margin:0}.auth-hero{flex-direction:column;justify-content:center;max-width:none;display:flex}.brand-header{align-items:center;margin:0;display:flex}.fixed-brand{z-index:20;position:fixed;top:20px;left:24px}.brand-logo{background:radial-gradient(circle at 30% 30%,#38bdf8,#0c4a6e);border-radius:999px;place-items:center;width:42px;height:42px;animation:4.8s ease-in-out infinite floatLogo;display:grid;position:relative;box-shadow:0 8px 18px -12px #06b6d4d9}.brand-ring{border:2px solid #e0f2fef2;border-radius:999px;width:25px;height:25px}.brand-core{background:#e0f2fe;border-radius:999px;width:8px;height:8px;position:absolute}.fixed-lang{z-index:20;color:#dbeafe;align-items:center;gap:.18rem;padding:.1rem .2rem;display:inline-flex;position:fixed;top:20px;right:24px}.lang-link{color:#cbd5e1;cursor:pointer;background:0 0;border:none;padding:0;font-size:.86rem}.lang-link:hover{color:#f8fafc;background:0 0}.lang-link.active{color:#f8fafc;text-underline-offset:2px;text-decoration:underline}.card{background:#fff;border:1px solid #dbeafe;border-radius:14px;margin-top:1rem;padding:1rem 1.25rem;animation:.45s ease-out fadeUp;box-shadow:0 20px 35px -30px #030712cc}.health-grid{gap:.35rem;display:grid}.error{color:#b91c1c}.notice{color:#166534}.auth-card{align-self:center;width:min(520px,92vw);margin:0 auto}.glass-card{-webkit-backdrop-filter:blur(14px)saturate(130%);backdrop-filter:blur(14px)saturate(130%);background:linear-gradient(145deg,#fff3,#ffffff1f);border:1px solid #e2e8f061;box-shadow:0 28px 60px -34px #020817db,inset 0 1px #ffffff52}.auth-message{margin-top:.4rem}form{gap:.55rem;display:grid}input,textarea,select,button{font:inherit}input,textarea,select{color:#0f172a;background:#ffffffeb;border:1px solid #cbd5e1e6;border-radius:8px;padding:.62rem .72rem}input::placeholder{color:#64748b}input:focus,textarea:focus,select:focus{border-color:#60a5fa;outline:none;box-shadow:0 0 0 3px #60a5fa38}.auth-card h1{color:#f8fafc;margin-bottom:.5rem;font-size:clamp(1.25rem,3.2vw,1.8rem)}.auth-card .subtitle{color:#e2e8f0;margin-bottom:.85rem}.auth-card h2,.auth-card h3{color:#f8fafc;margin-bottom:.2rem}button{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--btn-text);border-radius:var(--btn-radius);cursor:pointer;min-height:38px;box-shadow:var(--btn-shadow);padding:.5rem .8rem;font-weight:600;transition:transform .16s,box-shadow .2s,background .2s,border-color .2s,color .2s}button:hover{background:var(--btn-bg-hover);transform:translateY(-1px);box-shadow:0 14px 24px -20px #0f172ad9}button:focus-visible{box-shadow:0 0 0 3px var(--btn-focus), var(--btn-shadow);outline:none}button:disabled{opacity:.56;cursor:not-allowed;transform:none}.btn-primary{border-color:var(--btn-primary-border);background:var(--btn-primary-bg);color:var(--btn-primary-text)}.btn-primary:hover{background:var(--btn-primary-bg-hover)}.btn-secondary{color:#0f172a;background:#f8fafc;border-color:#cbd5e1}.btn-secondary:hover{background:#f1f5f9}.btn-ghost{color:#e2e8f0;background:#ffffff24;border-color:#94a3b8a6}.btn-ghost:hover{background:#ffffff3d}.btn-danger:hover{background:var(--btn-danger-bg-hover)}.btn-icon{border-radius:10px;width:40px;height:40px;min-height:40px;padding:0}.btn-toggle.active-btn{background:var(--btn-primary-bg);border-color:var(--btn-primary-border);color:var(--btn-primary-text);box-shadow:inset 0 0 0 1px #f0fdfa40,0 0 0 1px #0f766e8c}.ghost-btn{color:#e2e8f0;background:#ffffff24;border:1px solid #94a3b8a6}.ghost-btn:hover{background:#ffffff3d}.text-link-btn{color:#bfdbfe;text-underline-offset:3px;box-shadow:none;background:0 0;border:none;justify-self:start;padding:0;font-weight:500;-webkit-text-decoration:underline #bfdbfebf;text-decoration:underline #bfdbfebf}.text-link-btn:hover{color:#e0f2fe;box-shadow:none;background:0 0;text-decoration-color:#e0f2fef2;transform:none}.social-grid{gap:.45rem;animation:.22s ease-out fadeIn;display:grid}.social-btn{text-align:left;justify-content:center;align-items:center;gap:.5rem;width:100%;font-weight:600;display:inline-flex}.social-btn img{width:20px;height:20px}.social-btn.google,.social-btn.yandex,.social-btn.vk{color:#0f172a;background:#ffffffeb;border-color:#d1d5dbeb}.social-btn:hover{background:#f8fafc}.register-block{border-top:1px dashed #bfdbfe8c;margin-top:1rem;padding-top:.9rem}.service-pill{border:1px solid #0000;border-radius:999px;align-items:center;width:fit-content;margin-top:.75rem;padding:.28rem .62rem;font-size:.82rem;animation:3.5s ease-in-out infinite pulseSoft;display:inline-flex}.service-pill.down-corner{z-index:20;color:#e2e8f0;background:0 0;border-color:#0000;margin-top:0;padding:0;position:fixed;bottom:16px;right:18px}.service-pill.down-corner.up{color:#bbf7d0}.service-pill.down-corner.down{color:#fde68a}.service-pill.up{color:#064e3b;background:#10b98129;border-color:#10b9815c}.service-pill.down{color:#78350f;background:#f59e0b2e;border-color:#f59e0b66;animation-name:pulseWarn}.slim-card{margin-top:.75rem;padding:.7rem .95rem}.inline-form{flex-wrap:wrap;gap:.5rem;display:flex}.inline-form input{flex:1;min-width:260px}.project-list li{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.project-item.active{border-color:#3b82f6;box-shadow:inset 0 0 0 1px #3b82f6}.small-muted{color:#475569;margin-top:0}.logout-btn{margin-top:.5rem}.editor-toolbar{flex-wrap:wrap;gap:.5rem;margin:.6rem 0 .8rem;display:flex}.compact-toolbar{margin:.45rem 0 .55rem}.shortcut-help-panel{background:#f8fbff;border:1px solid #dbeafe;border-radius:10px;margin:0 0 .75rem;padding:.55rem .7rem}.shortcut-help-panel .small-muted{margin:.15rem 0}.editor-full{padding:.8rem}.editor-shell{gap:.7rem;display:grid;position:relative}.editor-workzone{grid-template-columns:56px 1fr;align-items:start;gap:.7rem;display:grid;position:relative}.editor-info-panels{max-height:var(--editor-info-panels-max-height);gap:.55rem;padding:.1rem .22rem .2rem 0;display:grid;overflow:auto}.tool-rail{background:#0f172abd;border:1px solid #94a3b873;border-radius:12px;flex-direction:column;gap:.52rem;width:56px;padding:.42rem .38rem;display:flex;position:sticky;top:92px}.tool-group-block{border-top:1px solid #94a3b84f;gap:.35rem;padding-top:.5rem;display:grid}.tool-group-block:first-child{border-top:none;padding-top:0}.tool-group-title{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tool-group{justify-items:center;gap:.38rem;display:grid}.tool-sep{background:#94a3b86b;height:1px;margin:.08rem 0}.tool-rail button{place-items:center;width:40px;height:40px;min-height:40px;padding:0;font-size:18px;display:inline-grid}.tool-grid-step{color:#e2e8f0;background:#0f172a8c;border:1px solid #94a3b8a6;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;min-height:40px;padding:0;display:inline-flex;position:relative}.tool-grid-step svg{pointer-events:none}.tool-grid-step select{appearance:none;color:#0000;background:0 0;border:none;width:40px;min-width:0;height:40px;padding:0;position:absolute;inset:0}.tool-grid-step select option{color:#0f172a}.tool-grid-step select:focus{box-shadow:none}.node-palette-popover{z-index:16;background:#fffffff7;border:1px solid #cbd5e1;border-radius:10px;width:min(320px,100vw - 96px);padding:.65rem;position:absolute;top:0;left:68px;box-shadow:0 18px 30px -22px #020817db}.node-palette-popover h3{margin:0 0 .45rem}.node-palette-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;display:grid}.node-palette-item{text-align:left;min-height:40px;box-shadow:none;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:.45rem;padding:.45rem .55rem;display:grid}.node-palette-item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.node-palette-item.active{color:#0f3f3a;background:#dff3ef;border-color:#0f766e}.hidden-file{display:none}.node-popover{z-index:12;background:#fffffff5;border:1px solid #cbd5e1e6;border-radius:12px;width:260px;padding:.55rem .65rem;position:absolute;overflow:hidden;box-shadow:0 18px 30px -24px #020817db}.node-popover h3{margin:0 0 .35rem}.node-popover select,.node-popover input{width:100%;max-width:100%}.node-properties-panel{background:#fffffff5;border:1px solid #cbd5e1e6;border-radius:12px;width:100%;margin-top:.6rem;padding:.55rem .65rem}.node-properties-panel h3{margin:0 0 .35rem}.selection-context-panel{background:linear-gradient(#f8fbff,#f1f5f9);border-color:#cbd5e1}.selection-context-head{gap:.2rem;display:grid}.selection-context-head .small-muted{margin:0}.node-properties-panel select,.node-properties-panel input{width:100%;max-width:100%}.structure-opening-list{gap:.45rem;margin-top:.6rem;display:grid}.structure-opening-item{text-align:left;cursor:pointer;background:#f8fbff;border:1px solid #dbeafe;border-radius:9px;grid-template-columns:minmax(0,1fr) auto;justify-content:space-between;align-items:start;gap:.6rem;padding:.45rem .55rem;display:grid}.structure-opening-item.selected{border-color:#fb923c;box-shadow:inset 0 0 0 1px #fb923c}.structure-opening-meta{gap:.28rem;display:grid}.node-more-details{margin-top:.55rem}.node-more-details summary{cursor:pointer;color:#0f766e;font-weight:600}.edge-popover{z-index:13;max-width:min(360px,100% - 24px);top:auto;bottom:12px;left:12px}.side-panel{position:sticky;top:92px}.active-btn{background:var(--btn-primary-bg);border-color:var(--btn-primary-border);color:var(--btn-primary-text)}.canvas-panel{z-index:0;min-width:0;position:relative}.editor-context-menu{z-index:24;background:#fff;border:1px solid #cbd5e1;border-radius:8px;gap:.2rem;min-width:180px;padding:.35rem;display:grid;position:absolute;box-shadow:0 18px 34px -22px #0f172aeb}.editor-context-menu button{width:100%;min-height:34px;box-shadow:none;text-align:left;background:0 0;border:none;border-radius:6px;justify-content:flex-start}.editor-context-menu button:hover{box-shadow:none;background:#f1f5f9;transform:none}.editor-context-menu .danger-menuitem{color:#b91c1c}.canvas-rulers-shell{height:var(--editor-canvas-height);min-height:var(--editor-canvas-min-height);grid-template-rows:26px 1fr;grid-template-columns:26px 1fr;align-items:stretch;display:grid}.canvas-ruler-corner{background:linear-gradient(#eff6ff,#e2e8f0);border:none;border-top:1px solid #cbd5e1;border-left:1px solid #cbd5e1;border-top-left-radius:10px;grid-area:1/1/2/2}.canvas-ruler{color:#334155;background:linear-gradient(#f8fbff,#f1f5f9);position:relative;overflow:hidden}.canvas-ruler-x{border:1px solid #cbd5e1;border-bottom:none;border-top-right-radius:10px;grid-area:1/2/2/3}.canvas-ruler-y{border:1px solid #cbd5e1;border-right:none;border-bottom-left-radius:10px;grid-area:2/1/3/2}.canvas-ruler-tick{position:absolute}.canvas-ruler-x .canvas-ruler-tick{border-left:1px solid #64748b59;top:0;bottom:0}.canvas-ruler-y .canvas-ruler-tick{border-top:1px solid #64748b59;left:0;right:0}.canvas-ruler-tick.major{border-color:#0f172a7a}.canvas-ruler-x .canvas-ruler-tick span{font-size:10px;font-weight:600;line-height:1;position:absolute;top:3px;left:3px}.canvas-ruler-y .canvas-ruler-tick span{transform-origin:0 0;font-size:9px;font-weight:600;line-height:1;position:absolute;top:3px;left:2px;transform:rotate(-90deg)translate(-100%)}.canvas-wrap{overflow-anchor:none;overscroll-behavior:contain;background-color:#0000;background-image:linear-gradient(0deg,#94a3b821 1px,#0000 1px),linear-gradient(90deg,#94a3b821 1px,#0000 1px);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:20px 20px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;border:1px solid #cbd5e1;border-radius:0 0 10px;grid-area:2/2/3/3;width:100%;overflow:auto}.canvas-wrap.pan-mode{cursor:grab;touch-action:none}.canvas-wrap.pan-mode:active{cursor:grabbing}.canvas-surface{position:relative}.canvas-stage-viewport{position:sticky;top:0;left:0;overflow:hidden}.canvas-minimap{z-index:14;cursor:pointer;background:#0f172acc;border:1px solid #94a3b8b3;border-radius:10px;padding:6px;position:absolute;bottom:12px;right:12px;box-shadow:0 16px 28px -20px #020817e6}.canvas-minimap:focus-visible{outline:none;box-shadow:0 0 0 3px #60a5fa59,0 16px 28px -20px #020817e6}.canvas-minimap-inner{background:#0f172a59;border-radius:7px;position:relative}.canvas-minimap-content{background-color:#0000;background-image:linear-gradient(0deg,#94a3b826 1px,#0000 1px),linear-gradient(90deg,#94a3b826 1px,#0000 1px);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:8px 8px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;border:1px solid #bfdbfe99;border-radius:5px;position:absolute}.canvas-minimap-viewport{box-sizing:border-box;pointer-events:none;background:#22d3ee26;border:2px solid #22d3ee;border-radius:4px;position:absolute}.editor-panels{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.75rem;margin:.4rem 0 .8rem;display:grid}.editor-panels.single-row{grid-template-columns:1fr}.editor-panel{background:#f8fbff;border:1px solid #dbeafe;border-radius:10px;padding:.65rem .75rem}.editor-panel h3{margin:0 0 .45rem}.catalog-editor-panel{background:linear-gradient(#fbfdff,#f4f8fc)}.catalog-form-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.8rem;display:grid}.catalog-form-section{background:#ffffffeb;border:1px solid #d9e7f5;border-radius:12px;padding:.8rem}.catalog-form-section h4{margin:0 0 .25rem}.catalog-form-section .small-muted{margin-top:0}.catalog-photo-editor{align-items:start;gap:.5rem;display:grid}.catalog-photo-editor img,.catalog-photo-placeholder{aspect-ratio:4/3;object-fit:cover;background:#f8fafc;border:1px solid #d9e7f5;border-radius:8px;width:min(100%,220px)}.catalog-photo-placeholder{color:#64748b;text-align:center;box-sizing:border-box;place-items:center;padding:.6rem;font-size:.88rem;display:grid}.catalog-thumb{object-fit:cover;background:#f8fafc;border:1px solid #d9e7f5;border-radius:6px;width:44px;height:34px;display:block}.catalog-thumb.placeholder:before{content:"";background:#cbd5e1;border-radius:3px;width:18px;height:12px;margin:10px auto;display:block}.catalog-section-head{justify-content:space-between;align-items:flex-start;gap:.8rem;margin-bottom:.8rem;display:flex}.catalog-badges{flex-wrap:wrap;justify-content:flex-end;gap:.35rem;display:flex}.catalog-badge{color:#115e59;background:#dff3ef;border-radius:999px;align-items:center;padding:.22rem .55rem;font-size:.76rem;font-weight:700;display:inline-flex}.camera-specs-section{margin-top:.8rem}.catalog-spec-groups{gap:.8rem;display:grid}.catalog-spec-card{background:linear-gradient(#fff,#f8fbfe);border:1px solid #dbe7f3;border-radius:12px;padding:.8rem}.catalog-spec-card h5{color:#0f3c5f;margin:0 0 .65rem;font-size:.88rem}.camera-spec-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;display:grid}.catalog-spec-item{align-content:start;gap:.32rem;display:grid}.catalog-spec-item .field-label{margin:0}.catalog-toggle-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.6rem;margin-top:.85rem;display:grid}.catalog-toggle{background:#f8fbff;border:1px solid #d9e7f5;border-radius:10px;align-items:center;gap:.55rem;min-height:44px;padding:.65rem .75rem;display:flex}.catalog-toggle input{width:16px;height:16px;margin:0}.connection-scheme{background:#f8fbff;border:1px solid #dbeafe;border-radius:10px;margin-top:.8rem;padding:.7rem .8rem}.connection-scheme h3{margin:0 0 .35rem}.scheme-toolbar{flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.55rem;display:flex}.scheme-toolbar button{border-radius:9px;width:34px;height:34px;padding:0}.scheme-zoom-value{color:#0f172a;min-width:56px;font-size:.84rem;font-weight:700}.scheme-zoom-hint{margin:0}.scheme-canvas-wrap{overscroll-behavior:contain;touch-action:pan-x pan-y;background:linear-gradient(#f8fbff,#f1f5f9);border:1px solid #cbd5e1;border-radius:10px;width:100%;max-height:min(70vh,720px);margin-top:.5rem;overflow:auto}.scheme-canvas-wrap.zoomed{cursor:grab}.scheme-canvas-wrap.zoomed:active{cursor:grabbing}.scheme-canvas{display:block}.scheme-wire{stroke-width:2px;stroke-linecap:round;stroke-linejoin:miter}.uplink-wire{stroke-width:3.4px}.scheme-legend{flex-wrap:wrap;gap:.45rem .8rem;margin-top:.55rem;display:flex}.scheme-legend-item{color:#334155;align-items:center;gap:.35rem;font-size:.82rem;display:inline-flex}.scheme-legend-swatch{border:1px solid #0f172a38;border-radius:3px;width:12px;height:12px}.scheme-cross-bg{fill:#f8fbff}.scheme-cross-bridge{fill:none;stroke:#2563eb;stroke-width:1.8px;stroke-linecap:round}.scheme-device-box{fill:#fff;stroke:#94a3b8;stroke-width:1.2px}.scheme-device-title-text{fill:#0f172a;font-size:12px;font-weight:700}.scheme-port-dot{fill:#e2e8f0;stroke:#475569;stroke-width:1px}.scheme-port-dot.used{fill:#60a5fa;stroke:#1d4ed8}.scheme-port-text{fill:#334155;font-size:11px}.scheme-port-text.used{fill:#0f172a;font-weight:600}.scheme-endpoint{fill:#eef2ff;stroke:#a5b4fc;stroke-width:1px}.scheme-endpoint-text{fill:#1e1b4b;font-size:11px;font-weight:600}.scheme-conflicts{background:#fff1f2;border:1px solid #fecaca;border-radius:10px;margin-top:.65rem;padding:.5rem .6rem}.scheme-conflicts p{color:#b91c1c;margin:.2rem 0;font-weight:600}@media (width<=720px){.scheme-toolbar{gap:.35rem}.scheme-zoom-hint{width:100%}}.field-label{margin:0 0 .25rem;font-weight:600;display:block}.estimate-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem;display:grid}.estimate-grid p{margin:0}.estimate-settings-panel{gap:.65rem;margin-bottom:.85rem;display:grid}.estimate-settings-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;display:grid}.estimate-settings-grid label{color:#475569;gap:.25rem;font-size:.82rem;font-weight:700;display:grid}.manual-estimate-list{gap:.45rem;display:grid}.manual-estimate-row{grid-template-columns:minmax(160px,1fr) 5.5rem 5.5rem 6rem 5.5rem auto;align-items:center;gap:.4rem;display:grid}.manual-estimate-row input{min-width:0}@media (width<=760px){.estimate-settings-grid,.manual-estimate-row{grid-template-columns:1fr 1fr}}.table-wrap{margin-top:.65rem;overflow-x:auto}.billing-plans-grid,.data-health-grid,.settings-scope-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.75rem;display:grid}.billing-plan-card,.data-health-card{background:#f8fbff;border:1px solid #dbeafe;border-radius:10px;padding:.85rem}.billing-plan-card.current{border-color:#0f766e;box-shadow:inset 0 0 0 1px #0f766e59}.billing-plan-head{justify-content:space-between;align-items:start;gap:.75rem;display:flex}.billing-plan-head h3{margin:0}.billing-plan-head strong{color:#0f766e;white-space:nowrap}.billing-feature-list{gap:.35rem;margin:.7rem 0;padding-left:1.1rem;display:grid}.data-health-card{gap:.25rem;display:grid}.data-health-card span{color:#475569;font-size:.82rem}.data-health-card strong{color:#0f172a;font-size:1.55rem}.settings-scope-grid{align-items:stretch}.settings-pill-row,.estimate-assumptions{flex-wrap:wrap;gap:.4rem;margin:.55rem 0;display:flex}.settings-pill-row span,.estimate-assumptions span{color:#334155;background:#eff6ff;border:1px solid #dbeafe;border-radius:999px;padding:.24rem .55rem;font-size:.8rem;font-weight:600}.estimate-table{border-collapse:collapse;width:100%;font-size:.92rem}.estimate-table th,.estimate-table td{text-align:left;border-bottom:1px solid #dbeafe;padding:.35rem .45rem}.estimate-table th{background:#eff6ff;font-weight:700}.proposal-list p{margin:.2rem 0}.proposal-print-surface{color:#172033;background:#fff;border:1px solid #dbeafe;border-radius:8px;margin-top:1rem;padding:1.2rem}.proposal-print-cover{border-bottom:2px solid #2563eb;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:1rem;margin-bottom:1rem;padding-bottom:1rem;display:grid}.proposal-print-cover h3{margin:0 0 .35rem}.proposal-print-cover p,.proposal-print-cover span{color:#64748b;margin:0}.proposal-print-cover div:last-child{text-align:right}.proposal-print-cover strong,.proposal-print-cover span{display:block}.proposal-print-info{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem 1rem;display:grid}.proposal-print-info p,.proposal-print-totals p{margin:0}.proposal-print-info span,.proposal-print-totals span{color:#64748b;text-transform:uppercase;font-size:.75rem;font-weight:700;display:block}.proposal-print-surface h4{margin:1rem 0 .45rem}.proposal-print-totals{justify-items:stretch;gap:.45rem;max-width:24rem;margin:.85rem 0 0 auto;display:grid}.proposal-print-totals p{justify-content:space-between;gap:1rem;display:flex}.proposal-print-totals strong{font-size:1.1rem}@media print{@page{size:A4;margin:14mm}body.proposal-print-mode{background:#fff}body.proposal-print-mode *{visibility:hidden!important}body.proposal-print-mode .proposal-print-surface,body.proposal-print-mode .proposal-print-surface *{visibility:visible!important}body.proposal-print-mode .proposal-print-surface{box-sizing:border-box;width:100%;box-shadow:none;border:0;margin:0;padding:0;position:absolute;top:0;left:0}}.projects-shell{gap:.9rem;display:grid}.projects-topbar{grid-template-columns:minmax(0,1fr) minmax(320px,460px);align-items:end;gap:.8rem;display:grid}.projects-title-block h2{margin:0}.projects-title-block .small-muted{margin:.25rem 0 0}.projects-create-trigger{justify-self:end}.projects-controls{grid-template-columns:minmax(220px,1fr) auto auto auto;align-items:center;gap:.55rem;display:grid}.projects-filters,.projects-view-toggle{flex-wrap:wrap;gap:.35rem;display:inline-flex}.projects-sort{align-items:center;gap:.35rem;display:inline-flex}.projects-sort label{color:#475569;font-size:.78rem}.projects-sort select{min-width:150px}.projects-found-count{grid-column:1/-1;margin:0}.projects-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;display:grid}.projects-onboarding{background:linear-gradient(#f8fbff,#eff6ff);border:1px solid #bfdbfe;border-radius:12px;gap:.45rem;padding:.75rem;display:grid}.projects-onboarding-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.projects-onboarding-head h3{margin:0}.projects-onboarding-steps{gap:.3rem;margin:0;padding-left:1.1rem;display:grid}.projects-onboarding-steps li.done{color:#166534;font-weight:600}.projects-metric-card{background:linear-gradient(#f8fbff,#f1f5f9);border:1px solid #dbeafe;border-radius:10px;padding:.55rem .65rem}.projects-metric-card p{color:#475569;margin:0;font-size:.8rem}.projects-metric-card strong{color:#0f172a;font-size:1.15rem}.projects-card-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;display:grid}.project-work-card{background:#fff;border:1px solid #d8e0ea;border-radius:8px;gap:.65rem;min-width:0;padding:.8rem;display:grid}.project-work-card.active{border-color:#2563eb;box-shadow:inset 0 0 0 1px #2563eb,0 12px 24px -22px #0f172abf}.project-work-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.project-work-head h3{overflow-wrap:anywhere;min-width:0;margin:0;font-size:1rem;line-height:1.25}.project-work-head-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.35rem;display:inline-flex}.project-active-dot{color:#166534;background:#dcfce7;border:1px solid #86efac;border-radius:999px;padding:.08rem .46rem;font-size:.68rem;font-weight:700}.project-status-badge{color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:999px;padding:.12rem .5rem;font-size:.72rem}.project-status-badge.status-draft{color:#92400e;background:#fffbeb;border-color:#fcd34d}.project-status-badge.status-active,.project-status-badge.status-in-progress{color:#1d4ed8;background:#eff6ff;border-color:#93c5fd}.project-status-badge.status-completed,.project-status-badge.status-done{color:#166534;background:#ecfdf5;border-color:#86efac}.project-status-badge.status-archived{color:#475569;background:#f1f5f9;border-color:#cbd5e1}.project-card-address{color:#475569;overflow-wrap:anywhere;margin:0;font-size:.86rem;line-height:1.35}.project-card-meta{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;display:grid}.project-card-meta p{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;gap:.1rem;min-width:0;margin:0;padding:.45rem .5rem;display:grid}.project-card-meta span{color:#64748b;font-size:.72rem}.project-card-meta strong{color:#0f172a;overflow-wrap:anywhere;font-size:.88rem}.project-work-actions{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.projects-status-select{color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:10px;min-height:34px;padding:0 .5rem}.project-card-menu{position:relative}.project-card-menu summary{cursor:pointer;color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:.48rem .68rem;font-weight:600;list-style:none}.project-card-menu summary::-webkit-details-marker{display:none}.project-card-menu-body{z-index:14;background:#fff;border:1px solid #dbeafe;border-radius:10px;gap:.25rem;margin-top:.3rem;padding:.35rem;display:grid;position:absolute;right:0;box-shadow:0 14px 28px -20px #0f172ad9}.projects-table-wrap{overflow-x:auto}.projects-table{border-collapse:collapse;width:100%}.projects-table th,.projects-table td{text-align:left;border-bottom:1px solid #dbeafe;padding:.42rem .44rem}.projects-table th{color:#334155;background:#eff6ff;font-size:.82rem}.projects-row-active{background:#f0f9ff}.projects-table-actions{flex-wrap:wrap;gap:.25rem;display:flex}.projects-empty{background:#f8fbff;border:1px dashed #cbd5e1;border-radius:10px;padding:.75rem}.projects-empty h3{margin:0 0 .35rem}.projects-empty-actions{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.projects-modal-backdrop{z-index:55;background:#0f172a73;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.projects-modal-card{background:#fff;border:1px solid #bfdbfe;border-radius:14px;gap:.7rem;width:min(640px,100%);padding:.9rem;display:grid;box-shadow:0 24px 64px -24px #0f172a99}.projects-modal-head{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.projects-modal-head h3{margin:0}.projects-create-form{gap:.6rem;display:grid}.projects-create-form label{color:#334155;gap:.3rem;font-size:.82rem;display:grid}.projects-create-next-action{background:#f8fbff;border:1px solid #dbeafe;border-radius:10px;gap:.35rem;padding:.55rem .65rem;display:grid}.projects-create-next-action p{color:#1e293b;margin:0;font-weight:600}.projects-create-next-action label{align-items:center;gap:.35rem;font-size:.82rem;display:flex}.projects-create-actions{justify-content:flex-end;gap:.4rem;display:flex}.form-error{color:#b91c1c;margin:0;font-size:.82rem;font-weight:600}@media (width<=760px){.layout{width:min(98vw,1180px);padding-top:1rem}.layout.layout-editor{--editor-canvas-height:clamp(420px, calc(100vh - 190px), 760px);--editor-canvas-min-height:420px;--editor-info-panels-max-height:clamp(180px, calc(100vh - 680px), 320px);width:min(100vw - 10px,1920px);padding-left:0;padding-right:0}.app-layout{padding-top:4.6rem}.app-topbar{grid-template-columns:1fr}.topbar-nav{justify-content:space-between;width:100%}.editor-workzone{grid-template-columns:1fr}.editor-info-panels{max-height:none;padding-right:0;overflow:visible}.tool-rail{scrollbar-width:thin;flex-direction:row;align-items:stretch;gap:.5rem;width:auto;padding:.5rem;display:flex;position:static;overflow-x:auto}.tool-group-block{min-width:max-content}.node-palette-popover{top:64px;left:.5rem}.tool-group{flex-wrap:nowrap;gap:.4rem;display:flex}.side-panel{position:static}.canvas-minimap{transform-origin:100% 100%;bottom:8px;right:8px;transform:scale(.92)}.canvas-rulers-shell{grid-template-rows:22px 1fr;grid-template-columns:22px 1fr}.canvas-ruler-x .canvas-ruler-tick span{font-size:9px}.canvas-ruler-y .canvas-ruler-tick span{display:none}.node-popover{width:100%;margin-top:.6rem;position:static}.topbar-right{justify-content:space-between}.fixed-brand{top:10px;left:12px}.fixed-lang{top:10px;right:10px}.service-pill.down-corner{font-size:.74rem;bottom:10px;right:10px}.projects-topbar,.projects-controls{grid-template-columns:1fr}.projects-filters,.projects-sort,.projects-view-toggle,.projects-create-trigger{z-index:8;background:#fff;padding:.45rem 0;position:sticky;bottom:0}.projects-metrics,.projects-card-grid,.project-card-meta{grid-template-columns:1fr}.hero{padding:.8rem .85rem}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes floatLogo{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes pulseSoft{0%,to{box-shadow:0 0 #10b98100}50%{box-shadow:0 0 0 6px #10b98114}}@keyframes pulseWarn{0%,to{box-shadow:0 0 #f59e0b00}50%{box-shadow:0 0 0 6px #f59e0b14}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.stage{background:#ffffffbf;display:block}.editor-performance-overlay{z-index:1200;color:#e2e8f0;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f172ae0;border:1px solid #0f172a47;border-radius:16px;width:min(340px,100vw - 36px);padding:.8rem .9rem;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:.72rem;line-height:1.45;position:fixed;bottom:18px;right:18px;box-shadow:0 18px 46px #0f172a42}.editor-performance-overlay strong{color:#86efac}.editor-performance-overlay__title{color:#f8fafc;letter-spacing:.04em;text-transform:uppercase;margin-bottom:.35rem;font-size:.78rem;font-weight:800}.editor-performance-overlay__hint{color:#93c5fd;margin-top:.35rem}.diagram-history-list{gap:.65rem;display:grid}.diagram-history-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:.65rem;display:grid}.diagram-history-item p{margin:0}.project-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.project-list li{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:.8rem .9rem}.project-list h3{margin:0 0 .35rem}.project-list p{margin:0}.app-layout{--bg:var(--app-bg);--surface:var(--app-surface);--fg:var(--app-fg);--muted:var(--app-muted);--border:var(--app-border);--accent:var(--app-accent);--success:#17a34a;--warn:#eab308;--danger:#dc2626;--stage:var(--app-stage);--stage-soft:var(--app-stage-soft);--radius:18px;--shadow:0 20px 40px color-mix(in srgb, var(--fg) 12%, transparent);--toolbar-width:88px;--inspector-width:392px;--btn-radius:14px;--btn-border:color-mix(in oklch, var(--border) 88%, white);--btn-bg:var(--surface);--btn-bg-hover:color-mix(in oklch, var(--bg) 74%, white);--btn-text:var(--fg);--btn-focus:color-mix(in oklch, var(--accent) 34%, transparent);--btn-shadow:none;--btn-primary-bg:color-mix(in oklch, var(--accent) 18%, white);--btn-primary-bg-hover:color-mix(in oklch, var(--accent) 25%, white);--btn-primary-border:color-mix(in oklch, var(--accent) 44%, white);--btn-primary-text:color-mix(in oklch, var(--accent) 58%, var(--fg));color:var(--fg)}.layout.app-layout{width:min(100vw - 32px,1920px);margin:0 auto;padding:16px 0 24px}.layout.layout-editor.app-layout{--editor-canvas-height:clamp(520px, calc(100vh - 246px), 900px);--editor-canvas-min-height:460px;width:min(100vw - 24px,1920px);min-height:100dvh;padding:14px 0 18px}.app-topbar{border:1px solid color-mix(in oklch, var(--border) 82%, white);background:color-mix(in oklch, var(--surface) 88%, white);box-shadow:0 18px 34px color-mix(in srgb, var(--fg) 8%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:24px;grid-template-columns:minmax(240px,360px) minmax(260px,1fr) auto;align-items:center;gap:20px;margin:0 0 18px;padding:12px 16px;display:grid}.brand-block,.search-shell,.tool-button,.node-button,.metric-card,.panel-section,.detail-card,.property-row,.property-group,.tab-button,.view-chip,.quick-action,.status-chip,.top-action,.property-badge,.legend-chip,.mobile-panel-button,.floating-toggle,.canvas-toolbar,.canvas-footer{border:1px solid color-mix(in oklch, var(--border) 88%, white);background:var(--surface)}.brand-block{border-radius:18px;min-width:0;padding:8px 14px}.brand-logo{background:linear-gradient(135deg, color-mix(in oklch, var(--accent) 72%, white), color-mix(in oklch, var(--accent) 30%, white));width:40px;height:40px;box-shadow:none;border-radius:14px;animation:none}.brand-ring{border-color:#fffffff0;width:22px;height:22px}.brand-core{background:#fff}.title-stack{min-width:0}.eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 4px;font-size:11px;line-height:1.2}.topbar-title{color:var(--fg);font-family:var(--font-display);margin:0;font-size:clamp(18px,2vw,24px);font-weight:750;line-height:1.15}.topbar-nav{border:1px solid color-mix(in oklch, var(--border) 88%, white);background:var(--surface);border-radius:16px;justify-self:stretch;align-items:center;gap:8px;min-height:48px;padding:5px;display:flex;overflow-x:auto}.nav-link{min-height:38px;color:var(--muted);white-space:nowrap;box-shadow:none;border:1px solid #0000;border-radius:999px;padding:0 12px}.nav-link:hover{background:color-mix(in oklch, var(--accent) 8%, white);color:var(--fg);transform:translateY(-1px)}.nav-link.active{border-color:color-mix(in oklch, var(--accent) 40%, white);background:color-mix(in oklch, var(--accent) 16%, white);color:color-mix(in oklch, var(--accent) 54%, var(--fg))}.topbar-right{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.user-login,.plan-chip,.status-chip,.top-action,.view-chip{white-space:nowrap;border-radius:999px;align-items:center;gap:8px;min-height:38px;margin:0;padding:0 12px;font-size:13px;display:inline-flex}.user-login{border:1px solid color-mix(in oklch, var(--border) 88%, white);background:var(--surface);color:var(--muted)}.plan-chip{color:color-mix(in oklch, var(--accent) 54%, var(--fg));border-color:color-mix(in oklch, var(--accent) 38%, white);background:color-mix(in oklch, var(--accent) 12%, white)}.account-menu-shell{min-width:0;position:relative}.account-menu-toggle{border-color:color-mix(in oklch, var(--border) 88%, white);background:var(--surface);max-width:min(260px,34vw);min-height:38px;color:var(--fg);box-shadow:none;border-radius:999px;align-items:center;gap:8px;padding:0 12px 0 6px;display:inline-flex}.account-menu-toggle:hover,.account-menu-toggle[aria-expanded=true]{border-color:color-mix(in oklch, var(--accent) 40%, white);background:color-mix(in oklch, var(--accent) 10%, white);transform:translateY(-1px)}.account-avatar{background:color-mix(in oklch, var(--accent) 18%, white);width:28px;height:28px;color:color-mix(in oklch, var(--accent) 62%, var(--fg));font:700 12px/1 var(--font-mono);border-radius:999px;flex:0 0 28px;place-items:center;display:grid}.account-email{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.account-menu{z-index:32;border:1px solid color-mix(in oklch, var(--border) 88%, white);background:color-mix(in oklch, var(--surface) 98%, white);width:min(260px,100vw - 32px);box-shadow:0 18px 34px color-mix(in srgb, var(--fg) 14%, transparent);border-radius:8px;gap:4px;padding:6px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.account-menu-item{width:100%;min-height:40px;color:var(--fg);box-shadow:none;text-align:left;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:0 10px;display:flex}.account-menu-item:hover{background:color-mix(in oklch, var(--accent) 10%, white);transform:none}.account-menu-item span{color:var(--muted);font-size:12px}.account-menu-item strong{font-size:13px}.account-menu-item.danger{color:var(--danger);justify-content:flex-start}.account-menu-item.danger:hover{background:color-mix(in srgb, var(--danger) 10%, white)}.fixed-lang{color:var(--muted);top:20px;right:24px}.app-topbar .fixed-lang{z-index:auto;border:1px solid color-mix(in oklch, var(--border) 88%, white);background:var(--surface);min-height:38px;color:var(--muted);border-radius:999px;gap:2px;padding:3px;position:static}.lang-link{color:var(--muted)}.app-topbar .lang-link{min-height:30px;color:var(--muted);border-radius:999px;padding:0 9px;font-size:12px;line-height:1;text-decoration:none}.app-topbar .fixed-lang>span{display:none}.lang-link.active,.lang-link:hover{color:var(--fg)}.app-topbar .lang-link.active,.app-topbar .lang-link:hover{border-color:color-mix(in oklch, var(--accent) 40%, white);background:color-mix(in oklch, var(--accent) 16%, white);color:color-mix(in oklch, var(--accent) 54%, var(--fg));text-decoration:none}.card{border:1px solid color-mix(in oklch, var(--border) 84%, white);background:color-mix(in oklch, var(--surface) 92%, white);box-shadow:var(--shadow);border-radius:18px}input,textarea,select{border:1px solid color-mix(in oklch, var(--border) 92%, white);background:color-mix(in oklch, var(--surface) 96%, white);color:var(--fg);border-radius:12px}input:focus,textarea:focus,select:focus,button:focus-visible,.canvas-minimap:focus-visible{outline:2px solid color-mix(in oklch, var(--accent) 48%, white);outline-offset:2px;box-shadow:none}button{letter-spacing:0}.btn-primary,.active-btn,.btn-toggle.active-btn{border-color:var(--btn-primary-border);background:var(--btn-primary-bg);color:var(--btn-primary-text);box-shadow:inset 0 0 0 1px color-mix(in oklch, var(--accent) 20%, white)}.btn-secondary,.top-action,.view-chip{border-color:color-mix(in oklch, var(--border) 88%, white);background:var(--surface);color:var(--fg)}.btn-danger{border-color:color-mix(in srgb, var(--danger) 55%, white);background:color-mix(in srgb, var(--danger) 14%, white);color:var(--danger)}.editor-page-card{box-shadow:none;background:0 0;border:0;margin-top:0;padding:0}.editor-page-head{justify-content:space-between;align-items:start;gap:14px;margin:0 0 12px;display:flex}.editor-page-head h2{color:var(--fg);margin:0;font-size:clamp(24px,2.6vw,34px);line-height:1.04}.editor-status-copy{border:1px solid color-mix(in oklch, var(--border) 88%, white);background:var(--surface);border-radius:16px;flex-wrap:wrap;gap:8px;margin:0 0 12px;padding:10px 12px;display:flex}.editor-shell{grid-template-columns:1fr;gap:18px;min-height:0;display:grid;position:relative}.editor-workzone{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;align-items:stretch;gap:18px;min-width:0;height:calc(100dvh - 204px);min-height:0;display:grid}.tool-rail{border:1px solid color-mix(in oklch, var(--border) 84%, white);background:color-mix(in oklch, var(--surface) 88%, white);width:auto;min-width:0;box-shadow:var(--shadow);border-radius:18px;flex-flow:row;grid-area:1/1/auto/-1;align-items:center;gap:6px;padding:6px 10px;display:flex;overflow:auto hidden}.tool-group-block{box-shadow:none;background:0 0;border:none;border-radius:12px;flex-shrink:0;align-items:center;gap:4px;padding:4px 6px;display:flex}.tool-group-title{display:none}.tool-group{align-items:center;gap:4px;display:flex}.tool-rail button,.tool-grid-step{background:var(--surface);width:40px;height:36px;min-height:36px;color:var(--fg);box-shadow:none;border-radius:10px}.tool-rail button{align-content:center;justify-items:center;gap:0;padding:4px;display:grid}.tool-rail .tool-group-block+.tool-group-block{border-left:1px solid color-mix(in oklch, var(--border) 72%, white);padding-left:10px}.tool-label{display:none}.tool-icon{place-items:center;line-height:1;display:inline-grid}.tool-label{letter-spacing:0;text-align:center;overflow-wrap:anywhere;max-width:100%;font-size:10.5px;font-weight:700;line-height:1.05;display:block}.snap-control-group{border:1px solid color-mix(in oklch, var(--border) 88%, white);background:color-mix(in oklch, var(--bg) 72%, white);border-radius:14px;align-items:center;gap:4px;min-width:0;padding:4px 6px;display:flex}.tool-rail button:hover,.tool-grid-step:hover,.tab-button:hover,.view-chip:hover,.quick-action:hover,.node-palette-item:hover{border-color:color-mix(in oklch, var(--accent) 28%, var(--border));transform:translateY(-1px)}.tool-grid-step select{text-align:center;border-radius:7px;width:100%;min-width:0;height:18px;padding:0 2px;font-size:10px}.tool-grid-step{align-content:center;justify-items:center;gap:3px;padding:5px;display:grid}.node-palette-popover{border-color:color-mix(in oklch, var(--border) 84%, white);box-shadow:var(--shadow);border-radius:18px;left:14px}.canvas-column{border:1px solid color-mix(in oklch, var(--border) 84%, white);background:color-mix(in oklch, var(--surface) 88%, white);min-width:0;min-height:0;box-shadow:var(--shadow);border-radius:24px;grid-area:2/1;grid-template-rows:auto minmax(0,1fr);gap:16px;padding:16px;display:grid}.canvas-toolbar{border-radius:18px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:10px 12px;display:flex}.toolbar-main,.toolbar-side{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.status-dot{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 4px color-mix(in oklch, var(--accent) 18%, transparent);border-radius:50%}.status-dot.warn{background:var(--warn);box-shadow:0 0 0 4px color-mix(in srgb, var(--warn) 22%, transparent)}.status-dot.live{animation:1.8s ease-in-out infinite pulseSoft}.blueprint-shell{border:1px solid color-mix(in oklch, var(--border) 84%, white);background:color-mix(in oklch, var(--app-surface) 96%, var(--app-bg));border-radius:22px;min-height:clamp(420px,62vh,760px);position:relative;overflow:hidden;container-type:inline-size}.blueprint-shell:before,.blueprint-shell:after{content:"";pointer-events:none;z-index:0;position:absolute;inset:0}.blueprint-shell:after{background:radial-gradient(circle at 80% 18%, color-mix(in oklch, var(--accent) 6%, transparent), transparent 28%), radial-gradient(circle at 10% 92%, #ffffff0a, transparent 24%)}.canvas-rulers-shell{z-index:1;height:var(--editor-canvas-height);min-height:var(--editor-canvas-min-height);grid-template-rows:24px 1fr;grid-template-columns:24px 1fr;position:relative}.canvas-ruler-corner,.canvas-ruler{background:color-mix(in oklch, var(--stage-soft) 72%, black);color:#ffffffad;border-color:#ffffff1a}.canvas-wrap{border-color:color-mix(in oklch, var(--border) 84%, white);background:linear-gradient(0deg, color-mix(in oklch, var(--app-muted) 22%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in oklch, var(--app-muted) 22%, transparent) 1px, transparent 1px);border-radius:0 0 18px}.full-canvas{height:var(--editor-canvas-height);min-height:var(--editor-canvas-min-height)}.stage,.canvas-stage-viewport{background:0 0}.canvas-minimap{z-index:14;background:color-mix(in oklch, var(--surface) 10%, black);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-color:#ffffff1a;border-radius:18px;bottom:18px;right:18px;box-shadow:0 18px 30px #0003}.canvas-minimap-inner{background:linear-gradient(180deg, color-mix(in oklch, var(--fg) 60%, black), color-mix(in oklch, var(--fg) 76%, black))}.canvas-minimap-content{background-color:#0000;background-image:linear-gradient(0deg,#ffffff0d 1px,#0000 1px),linear-gradient(90deg,#ffffff0d 1px,#0000 1px);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:8px 8px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;border-color:#ffffff47}.canvas-minimap-viewport{border-color:color-mix(in oklch, var(--accent) 54%, transparent);background:color-mix(in oklch, var(--accent) 12%, transparent)}.editor-context-menu,.node-popover{border-color:color-mix(in oklch, var(--border) 84%, white);background:color-mix(in oklch, var(--surface) 96%, white);box-shadow:var(--shadow);border-radius:16px}.editor-info-panels{width:var(--inspector-width);z-index:100;border:none;border-left:1px solid color-mix(in oklch, var(--border) 84%, white);background:color-mix(in oklch, var(--surface) 96%, white);min-width:0;max-height:100dvh;box-shadow:-8px 0 30px color-mix(in srgb, var(--fg) 10%, transparent);border-radius:0;flex-direction:column;padding:0;transition:transform .28s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;right:0;overflow:visible;transform:translate(100%)}.editor-info-panels.inspector-open{transform:translate(0)}.inspector-scroll{scrollbar-gutter:stable;flex-direction:column;flex:1;gap:12px;display:flex;overflow:hidden auto}.inspector-toggle{z-index:101;border:1px solid color-mix(in oklch, var(--border) 84%, white);background:color-mix(in oklch, var(--surface) 92%, white);width:28px;height:56px;color:var(--muted);cursor:pointer;box-shadow:-4px 0 12px color-mix(in srgb, var(--fg) 6%, transparent);border-right:none;border-radius:12px 0 0 12px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;left:-32px;transform:translateY(-50%)}.inspector-toggle:hover{background:color-mix(in oklch, var(--surface) 100%, white);color:var(--fg)}.inspector-toggle svg{width:14px;height:14px}.inspector-head{z-index:2;border-bottom:1px solid color-mix(in oklch, var(--border) 80%, white);background:color-mix(in oklch, var(--surface) 92%, white);justify-content:space-between;align-items:start;gap:12px;padding:18px 18px 14px;display:flex;position:sticky;top:0}.inspector-summary{overflow-wrap:anywhere;min-width:0}.inspector-summary h3{margin:0 0 6px;font-size:20px;line-height:1.15}.node-properties-panel{border:1px solid color-mix(in oklch, var(--border) 88%, white);background:var(--surface);box-shadow:none;overflow-wrap:anywhere;border-radius:18px;gap:12px;min-width:0;margin:0 12px 12px;padding:16px;display:grid}.node-properties-panel h3{letter-spacing:-.01em;margin:0;font-size:15px}.node-properties-panel .small-muted{overflow-wrap:anywhere;margin:0}.selection-context-head,.structure-opening-meta,.diagram-history-item{overflow-wrap:anywhere;min-width:0}.inspector-status-list{flex-wrap:wrap;gap:8px;margin:0 12px 12px;display:flex}.inspector-status-chip{border:1px solid color-mix(in oklch, var(--border) 88%, white);background:color-mix(in oklch, var(--surface) 94%, white);min-width:0;max-width:100%;color:var(--muted);overflow-wrap:anywhere;border-radius:999px;padding:6px 9px;font-size:12px;line-height:1.25}.selection-context-panel{border-color:color-mix(in oklch, var(--accent) 36%, white);background:linear-gradient(180deg, color-mix(in oklch, var(--accent) 10%, white), var(--surface));order:1}.diagram-history-panel{order:20}.diagram-history-older{gap:10px;display:grid}.diagram-history-older summary{cursor:pointer;color:color-mix(in oklch, var(--accent) 54%, var(--fg));font-weight:700}.diagram-history-item,.structure-opening-item,.billing-plan-card,.data-health-card,.project-work-card,.projects-metric-card,.editor-panel,.catalog-spec-card{border-color:color-mix(in oklch, var(--border) 88%, white);background:var(--surface);border-radius:14px}.project-work-card{border-radius:8px}.projects-onboarding,.connection-scheme,.scheme-canvas-wrap,.projects-modal-card{border-color:color-mix(in oklch, var(--border) 84%, white);background:color-mix(in oklch, var(--surface) 92%, white)}.estimate-table th,.projects-table th{background:color-mix(in oklch, var(--accent) 10%, white)}@media (width<=1280px){.app-layout{--inspector-width:348px}.app-topbar{grid-template-columns:minmax(200px,320px) minmax(220px,1fr) auto}}@media (width<=900px){.layout.layout-editor.app-layout{--editor-canvas-height:clamp(480px, 58vh, 760px)}.app-topbar{grid-template-columns:1fr}}@media (width<=760px){.editor-workzone{flex-direction:column;display:flex}.tool-rail,.canvas-column,.editor-info-panels{grid-area:auto}.canvas-column{order:1}.tool-rail{flex-direction:row;order:2;max-height:none;padding-bottom:4px;display:flex;position:static;overflow:auto hidden}.tool-group-block{flex-direction:row;min-width:max-content}.tool-group{display:flex}.tool-rail button,.tool-grid-step{width:44px;height:36px;min-height:36px}.editor-info-panels{order:3;max-height:none;position:fixed}}@media (width<=900px){.layout.app-layout,.layout.layout-editor.app-layout{width:min(100vw - 16px,1180px);padding-top:10px}.app-topbar{gap:12px;padding:12px}.topbar-right{justify-content:flex-start}}@media (width<=760px){.canvas-column,.editor-info-panels,.tool-group-block{border-radius:22px}.canvas-column{padding:12px}.blueprint-shell{min-height:clamp(360px,58vh,520px)}.canvas-rulers-shell,.full-canvas{height:clamp(360px,58vh,520px);min-height:360px}.canvas-minimap{transform-origin:100% 100%;bottom:12px;right:12px;transform:scale(.92)}}@media (width<=620px){.editor-page-head h2{font-size:24px}.hidden-mobile{display:none}.blueprint-shell{min-height:clamp(320px,56vh,420px)}.canvas-rulers-shell,.full-canvas{height:clamp(320px,56vh,420px);min-height:320px}.view-chip,.top-action,.status-chip,.user-login,.plan-chip,.account-menu-toggle{white-space:normal;min-width:0;max-width:100%}}:is(body:has(.installer-landing),body:has(.auth-layout)){background:radial-gradient(circle at top left, color-mix(in oklch, var(--app-accent) 7%, transparent), transparent 30%), linear-gradient(180deg, color-mix(in oklch, var(--app-bg) 94%, white) 0%, var(--app-bg) 100%)}body:has(.installer-landing):before{content:none}body:has(.auth-layout):before{content:none}.installer-landing,.auth-layout{--bg:oklch(98% .004 95);--surface:oklch(100% .002 95);--fg:oklch(20% .018 70);--muted:oklch(48% .012 70);--border:oklch(90% .006 95);--accent:oklch(52% .1 28);--btn-radius:8px;--btn-border:color-mix(in oklch, var(--border) 88%, white);--btn-bg:var(--surface);--btn-bg-hover:color-mix(in oklch, var(--bg) 74%, white);--btn-text:var(--fg);--btn-focus:color-mix(in oklch, var(--accent) 34%, transparent);--btn-shadow:none;--btn-primary-bg:color-mix(in oklch, var(--accent) 18%, white);--btn-primary-bg-hover:color-mix(in oklch, var(--accent) 25%, white);--btn-primary-border:color-mix(in oklch, var(--accent) 44%, white);--btn-primary-text:color-mix(in oklch, var(--accent) 58%, var(--fg));color:var(--fg)}.installer-landing{background:radial-gradient(circle at top left, color-mix(in oklch, var(--accent) 7%, transparent), transparent 30%), linear-gradient(180deg, color-mix(in oklch, var(--bg) 94%, white) 0%, var(--bg) 100%);align-items:center;min-height:100dvh;padding:5.5rem min(5vw,4rem) 2rem;display:grid}.installer-hero{grid-template-columns:minmax(430px,.95fr) minmax(420px,1.05fr);align-items:center;gap:clamp(1.5rem,4vw,4rem);width:min(1180px,100%);margin:0 auto;display:grid}.installer-hero-copy{grid-template-columns:minmax(0,1fr);gap:1.1rem;min-width:0;display:grid}.installer-kicker{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;margin:0;font-size:.78rem;font-weight:700}.installer-hero h1{width:100%;max-width:100%;color:var(--fg);overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;margin:0;font:600 clamp(2.25rem,5.2vw,5.05rem)/.96 Iowan Old Style,Charter,Georgia,serif}.installer-hero p{max-width:58ch;color:var(--muted);margin:0;font-size:1.02rem;line-height:1.7}.installer-hero-actions{flex-wrap:wrap;gap:.75rem;display:flex}.installer-hero-actions .btn-primary,.installer-hero-actions .btn-secondary{border-radius:8px;min-height:44px;padding:0 1rem}.installer-hero-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;max-width:520px;display:grid}.installer-hero-metrics span{border:1px solid var(--border);background:color-mix(in oklch, var(--surface) 98%, white);min-height:68px;color:var(--muted);border-radius:8px;align-content:center;gap:.35rem;padding:.75rem;font-size:.82rem;display:grid}.installer-hero-metrics strong{color:var(--fg);font-family:var(--font-mono);font-size:1rem}.installer-preview,.auth-preview-panel{border:1px solid var(--border);background:color-mix(in oklch, var(--surface) 97%, white);border-radius:8px;overflow:hidden;box-shadow:0 28px 80px -58px #462c209e}.installer-preview{min-height:540px}.preview-topbar{border-bottom:1px solid var(--border);height:58px;color:var(--muted);justify-content:space-between;align-items:center;padding:0 1rem;font-size:.86rem;display:flex}.preview-topbar strong{color:var(--fg);font-family:var(--font-mono)}.preview-grid{grid-template-columns:74px minmax(0,1fr);min-height:482px;display:grid}.preview-rail{border-right:1px solid var(--border);align-content:start;gap:.75rem;padding:1rem .8rem;display:grid}.preview-rail span{border:1px solid var(--border);background:color-mix(in oklch, var(--accent) 8%, var(--surface));border-radius:8px;width:46px;height:46px}.preview-canvas{background:linear-gradient(to right, color-mix(in oklch, var(--border) 70%, transparent) 1px, transparent 1px), linear-gradient(to bottom, color-mix(in oklch, var(--border) 70%, transparent) 1px, transparent 1px), color-mix(in oklch, var(--surface) 94%, var(--bg));background-size:32px 32px;min-width:0;padding:1rem}.preview-canvas svg{width:100%;height:100%;min-height:420px;display:block}.preview-wall,.preview-partition{fill:none;stroke:color-mix(in oklch, var(--fg) 80%, white);stroke-width:10px;stroke-linecap:square}.preview-partition{stroke-width:6px;stroke:color-mix(in oklch, var(--fg) 58%, white)}.preview-cable{fill:none;stroke:oklch(54% .11 160);stroke-width:4px;stroke-linecap:round}.preview-cone{fill:oklch(59% .14 215/.15);stroke:oklch(76.22% .0812 215);stroke-width:2px}.preview-camera{fill:oklch(92.62% .0252001 215);stroke:oklch(59% .14 215);stroke-width:3px}.preview-device{fill:var(--surface);stroke:color-mix(in oklch, var(--fg) 62%, white);stroke-width:2px}.preview-label{fill:var(--fg);font:700 18px/1 var(--font-mono)}.auth-layout{place-items:center stretch;min-height:100dvh;padding:5.5rem min(5vw,4rem) 2rem;display:grid}.auth-portal{grid-template-columns:minmax(320px,.85fr) minmax(380px,1fr);align-items:center;gap:clamp(1.25rem,4vw,3.5rem);width:min(1080px,100%);margin:0 auto;display:grid}.auth-copy{gap:1rem;display:grid}.auth-copy h1{max-width:10ch;color:var(--fg);margin:0;font:600 clamp(2.3rem,6vw,4.9rem)/.94 Iowan Old Style,Charter,Georgia,serif}.auth-copy p{max-width:56ch;color:var(--muted);margin:0;line-height:1.7}.auth-form{border:1px solid var(--border);background:color-mix(in oklch, var(--surface) 97%, white);border-radius:8px;gap:.72rem;max-width:420px;padding:1rem;display:grid}.auth-form.compact{padding-bottom:.8rem}.auth-form input{border-radius:8px;min-height:44px}.auth-form.register-block{border-top-style:solid;border-color:var(--border);margin-top:0;padding-top:1rem}.auth-preview-panel{grid-template-rows:58px minmax(0,1fr);min-height:470px;display:grid}.auth-preview-panel .preview-canvas{align-items:center;display:grid}.auth-back-link{justify-self:start;margin-bottom:.35rem}.auth-layout .text-link-btn{color:color-mix(in oklch, var(--accent) 64%, var(--fg));-webkit-text-decoration-color:color-mix(in oklch, var(--accent) 34%, transparent);text-decoration-color:color-mix(in oklch, var(--accent) 34%, transparent)}.auth-layout .text-link-btn:hover{color:color-mix(in oklch, var(--accent) 76%, var(--fg));-webkit-text-decoration-color:color-mix(in oklch, var(--accent) 52%, transparent);text-decoration-color:color-mix(in oklch, var(--accent) 52%, transparent)}.auth-message{max-width:420px}@media (width<=1200px){.installer-hero,.auth-portal{grid-template-columns:1fr}.installer-hero h1{max-width:15ch}.installer-preview{min-height:420px}}@media (width<=640px){.installer-landing,.auth-layout{padding:5rem 1rem 1.25rem}.installer-hero-metrics{grid-template-columns:1fr}.preview-grid{grid-template-columns:58px minmax(0,1fr)}.preview-rail span{width:34px;height:34px}.auth-preview-panel{min-height:360px}}
