:root{--bg:#060a12;--bg2:#0a101c;--panel:#0d1320d1;--panel-solid:#0d1320;--panel-2:#111a2b;--line:#94a3b821;--line-2:#94a3b838;--text:#e7edf7;--muted:#8592a8;--dim:#5d6a80;--accent:#5ee7ff;--accent-2:#3b82f6;--accent-soft:#5ee7ff24;--warm:#ffae5c;--danger:#ff6b6b;--radius:14px;--font:"Manrope Variable", "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:13px;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:disabled{opacity:.35;cursor:default}input,select,textarea{font:inherit;color:inherit}kbd{font-family:var(--mono);border:1px solid var(--line-2);color:var(--muted);background:#ffffff0a;border-radius:6px;padding:1px 6px;font-size:11px}hr{border:0;border-top:1px solid var(--line);margin:6px 0}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#94a3b82e;border-radius:8px}::-webkit-scrollbar-track{background:0 0}.glass{background:var(--panel);-webkit-backdrop-filter:blur(18px)saturate(140%);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 20px 50px #00000059}.app{flex-direction:column;height:100%;display:flex}.main{flex:1;min-height:0;display:flex;position:relative}.center{flex-direction:column;flex:1;min-width:0;display:flex}.views{background:var(--line);flex:1;gap:1px;min-height:0;display:flex}.pane{background:var(--bg2);flex:1;min-width:0;position:relative;overflow:hidden}.loading3d{color:var(--muted);place-items:center;display:grid;position:absolute;inset:0}.topbar{border-bottom:1px solid var(--line);z-index:30;background:linear-gradient(#0c1322,#090e19);align-items:center;gap:10px;height:52px;padding:0 12px;display:flex;position:relative}.brand{align-items:center;gap:8px;margin-right:4px;display:flex}.brand-name{letter-spacing:-.01em;font-size:16px;font-weight:600}.brand-name b{background:linear-gradient(90deg,#5ee7ff,#3b82f6);color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:800}.project-name{width:210px;color:var(--text);background:0 0;border:1px solid #0000;border-radius:8px;outline:none;padding:6px 8px;font-weight:600}.project-name:hover,.project-name:focus{border-color:var(--line-2);background:#ffffff08}.tb-btn{color:var(--text);white-space:nowrap;border-radius:10px;align-items:center;gap:7px;padding:7px 12px;font-weight:600;display:inline-flex}.tb-btn:hover{background:#ffffff0f}.tb-btn.accent{background:linear-gradient(135deg,#5ee7ff2e,#3b82f638);border:1px solid #5ee7ff59}.tb-btn.accent:hover{background:linear-gradient(135deg,#5ee7ff47,#3b82f652)}.tb-group{gap:2px;display:flex}.tb-icon{width:32px;height:32px;color:var(--muted);border-radius:9px;flex:none;place-items:center;display:inline-grid}.tb-icon:hover:not(:disabled){color:var(--text);background:#ffffff12}.tb-icon.app-update{color:#f59e0b;animation:2.4s ease-in-out infinite app-update-pulse}.tb-icon.app-update:hover{color:#fbbf24;background:#ffffff1a;animation:none}@keyframes app-update-pulse{0%,to{opacity:1}50%{opacity:.45}}.tb-icon.danger:hover{color:var(--danger);background:#ff6b6b1f}.spacer{flex:1}.saved{color:var(--dim);text-align:right;width:80px;font-size:11px}.seg{border:1px solid var(--line);background:#ffffff0a;border-radius:11px;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--muted);white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:5px 10px;font-weight:600;display:inline-flex}.seg button:hover{color:var(--text)}.seg button.on{color:#0a0f1a;background:#fffffff2}.seg.small button{padding:4px 8px;font-size:12px}.topbar[data-c1] .seg.modes button:not(.on) span,.topbar[data-c1] .saved .tb-label,.topbar[data-c2] .seg.views button:not(.on) span,.topbar[data-c2] .tb-btn.accent .tb-label,.topbar[data-c3] .seg span,.topbar[data-c3] .brand-name,.topbar[data-c4] .lv-add .tb-label{display:none}.topbar[data-c1] .saved{width:auto}.topbar[data-c2] .project-name{width:150px}.topbar[data-c3] .project-name{width:110px}.topbar[data-c4]{gap:6px;padding:0 8px}.topbar[data-c4] .seg button{padding:5px 8px}.menu-wrap{position:relative}.menu{z-index:50;flex-direction:column;min-width:250px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0}.menu>button{text-align:left;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.menu>button kbd{margin-left:auto}.menu>button:hover{background:#ffffff12}.menu.glass{background:#0d1320f7}.layers-menu{gap:2px;min-width:220px;left:auto;right:0}.layers-menu label{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:5px 8px;display:flex}.layers-menu label:hover{background:#ffffff0d}.menu-sub{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;padding:6px 8px 4px;font-size:11px}input[type=checkbox]{accent-color:var(--accent)}.toolbar{border-right:1px solid var(--line);background:#090e19;flex-direction:column;flex:none;align-items:center;gap:3px;width:52px;padding:10px 0;display:flex}.tool{width:38px;height:38px;color:var(--muted);border-radius:11px;place-items:center;transition:background .12s,color .12s;display:grid}.tool:hover{color:var(--text);background:#ffffff0f}.tool.on{color:#04121a;background:linear-gradient(135deg,#5ee7ff,#4aa8ff);box-shadow:0 6px 18px #5ee7ff40}.tool-options{border-bottom:1px solid var(--line);z-index:20;background:#0a0f1b;flex:none;align-items:center;gap:10px;height:44px;padding:0 10px;display:flex;position:relative}.opt-content{scrollbar-width:none;flex:1;align-items:center;gap:8px;min-width:0;display:flex;overflow:auto hidden}.opt-content::-webkit-scrollbar{display:none}.opt-content>*{flex:none}.opt-right{flex:none;align-items:center;gap:6px;display:flex}.opt-label{color:var(--muted);font-size:12px}.opt-hint{color:var(--dim);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.chips{flex-wrap:wrap;gap:4px;display:flex}.tool-options .chips{flex-wrap:nowrap}.chip{border:1px solid var(--line);color:var(--muted);white-space:nowrap;background:#ffffff06;border-radius:8px;align-items:center;gap:5px;padding:4px 9px;font-size:12px;font-weight:600;display:inline-flex}.chip:hover{color:var(--text);border-color:var(--line-2)}.chip.on{color:#04121a;background:var(--accent);border-color:var(--accent)}.route-dot{border-radius:50%;width:9px;height:9px;display:inline-block}.mini-select,.select{border:1px solid var(--line);color:var(--text);background:#ffffff0a;border-radius:8px;outline:none;padding:4px 6px;font-size:12px}.select{width:100%;padding:6px 8px}.mini-select option,.select option{background:#0d1320}select optgroup{color:var(--muted);background:#0d1320;font-weight:700}select option{color:var(--text);background:#0d1320}.numfield{border:1px solid var(--line);background:#ffffff0a;border-radius:8px;flex:1;align-items:center;min-width:0;max-width:110px;height:28px;padding:0 6px;display:inline-flex}.numfield:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #5ee7ff1f}.numfield input{width:100%;min-width:30px;font-family:var(--mono);background:0 0;border:0;outline:none;font-size:12px}.numfield i{color:var(--dim);margin-left:3px;font-size:11px;font-style:normal}.numfield.disabled{opacity:.4}.tool-options .numfield{max-width:90px}.catalog{border-right:1px solid var(--line);background:#0a0f1b;flex-direction:column;flex:none;width:252px;min-height:0;display:flex}.cat-head{align-items:center;gap:6px;padding:10px 8px 6px 10px;display:flex}.cat-head .seg{flex:1}.cat-head .seg button{flex:1;justify-content:center}.search{border:1px solid var(--line);height:32px;color:var(--dim);background:#ffffff08;border-radius:10px;align-items:center;gap:6px;margin:4px 10px 8px;padding:0 10px;display:flex}.search input{color:var(--text);background:0 0;border:0;outline:none;flex:1}.cat-scroll{flex:1;padding:0 8px 20px 10px;overflow-y:auto}.cat-group{width:100%;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:6px;padding:10px 2px 6px;font-size:11px;font-weight:700;display:flex}.cat-group i{color:var(--dim);margin-left:auto;font-style:normal;font-weight:500}.cat-sub{color:var(--dim);align-items:center;gap:6px;padding:8px 2px 5px;font-size:11px;font-weight:600;display:flex}.cat-sub:after{content:"";background:var(--line);flex:1;order:1;height:1px}.cat-sub i{order:2;font-style:normal;font-weight:500}.cat-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.cat-tile{border:1px solid var(--line);cursor:grab;background:#ffffff05;border-radius:11px;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:6px 4px 7px;display:flex}.cat-tile:hover{background:#5ee7ff0d;border-color:#5ee7ff66}.cat-tile.on{border-color:var(--accent);background:#5ee7ff1f}.cat-tile span{text-align:center;color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:25px;font-size:10.5px;line-height:1.2;display:-webkit-box;overflow:hidden}.cat-sym{width:54px;height:46px}.catalog-open{z-index:25;background:var(--panel);border:1px solid var(--line);width:28px;height:28px;color:var(--muted);border-radius:8px;place-items:center;display:grid;position:absolute;top:52px;left:58px}.empty{color:var(--dim);text-align:center;padding:20px 0}.plan-sym,.editor2d.plan-dark{--sym-stroke:#c9d4e3;--sym-fill:#172338;--sym-fill2:#22324e;--sym-elec:#ffb547;--sym-light:#ffe08a;--sym-cold:#38bdf8;--sym-hot:#fb5170;--sym-sewer:#b08c70;--sym-bg:#0b1220;--sym-glass:#7dc8f047;--wall-fill:#d6dce6}.props{border-left:1px solid var(--line);background:#0a0f1b;flex:none;width:296px;overflow-y:auto}.p-body{flex-direction:column;gap:8px;padding:14px 14px 30px;display:flex}.p-head{align-items:flex-start;gap:8px;margin-bottom:6px;display:flex}.p-head>div:first-child{flex:1;min-width:0}.p-title{letter-spacing:-.01em;font-size:16px;font-weight:700}.p-sub{color:var(--muted);margin-top:2px;font-size:12px}.p-actions{gap:2px;display:flex}.p-row{align-items:center;gap:8px;min-height:30px;display:flex}.p-label{width:104px;color:var(--muted);flex:none;font-size:12px;line-height:1.2}.p-val{flex:1;align-items:center;gap:5px;min-width:0;display:flex}.p-val .numfield{max-width:none}.p-sec{border-top:1px solid var(--line);color:var(--muted);letter-spacing:.09em;text-transform:uppercase;margin-top:10px;padding-top:10px;font-size:11px;font-weight:700}.p-chips{margin:-2px 0 2px 112px}.p-size{align-items:flex-start;margin-top:-2px}.p-size .p-label{padding-top:5px}.p-size .chips{flex:1;min-width:0}.p-note{color:var(--muted);font-family:var(--mono);font-size:12px}.p-hint{color:var(--dim);margin:6px 0 0;font-size:12px;line-height:1.45}.p-error{color:var(--danger);font-size:12px}.p-btns{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.p-list{color:var(--muted);margin:0;padding-left:18px}.btn{border:1px solid var(--line-2);white-space:nowrap;background:#ffffff0a;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:7px 11px;font-size:12px;font-weight:600;display:inline-flex}.btn:hover:not(:disabled){background:#ffffff17}.btn.small{padding:3px 8px}.btn.danger:hover{color:var(--danger);border-color:#ff6b6b66}.btn.accent{color:#04121a;background:linear-gradient(135deg,#5ee7ff,#3b82f6);border:0}.btn.accent:hover:not(:disabled){filter:brightness(1.08);background:linear-gradient(135deg,#5ee7ff,#3b82f6)}.btn.big{padding:12px 16px;font-size:14px}.text{border:1px solid var(--line);resize:vertical;background:#ffffff0a;border-radius:8px;outline:none;width:100%;padding:6px 8px}.text:focus{border-color:var(--accent)}.stats{grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:6px;display:grid}.stats>div{border:1px solid var(--line);background:#ffffff08;border-radius:11px;padding:10px}.stats b{font-size:18px;font-family:var(--mono);font-weight:600;display:block}.stats span{color:var(--muted);font-size:11px}.room-list{flex-direction:column;gap:2px;display:flex}.room-row{border-radius:8px;justify-content:space-between;padding:7px 9px;display:flex}.room-row:hover{background:#ffffff0d}.room-row b{font-family:var(--mono);color:var(--muted);font-weight:500}.mat-btn{border:1px solid var(--line);text-align:left;background:#ffffff06;border-radius:11px;align-items:center;gap:10px;width:100%;padding:6px;display:flex}.mat-btn:hover{border-color:var(--line-2)}.mat-btn img,.mat-none{object-fit:cover;width:40px;height:40px;color:var(--dim);background:#ffffff0a;border-radius:8px;flex:none;place-items:center;display:grid}.mat-txt{flex-direction:column;min-width:0;display:flex}.mat-txt i{color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-size:10.5px;font-style:normal}.mat-txt b{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.mat-txt em{color:var(--muted);font-style:normal;font-family:var(--mono);font-size:11px}.mat-pop{z-index:200;background:#0d1320f7;max-height:440px;padding:10px;position:fixed;overflow-y:auto}.mat-cats{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}.mat-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.mat-cell{border:1px solid #0000;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:4px;display:flex}.mat-cell:hover{border-color:var(--line-2)}.mat-cell.on{border-color:var(--accent)}.mat-cell img,.mat-none.big{aspect-ratio:1;object-fit:cover;border-radius:8px;width:100%;font-size:20px}.mat-cell span{color:var(--muted);text-align:center;font-size:10px;line-height:1.15}.mat-tint{margin-top:10px}.mat-sub{color:var(--muted);margin-bottom:6px;font-size:11px}.palette{flex-wrap:wrap;gap:5px;display:flex}.pal{border:1px solid #ffffff26;border-radius:6px;width:22px;height:22px}.pal.on{outline:2px solid var(--accent);outline-offset:1px}.pal.custom{cursor:pointer;background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);position:relative;overflow:hidden}.pal.custom input{opacity:0;cursor:pointer;position:absolute;inset:0}.editor2d{-webkit-user-select:none;user-select:none;touch-action:none;position:absolute;inset:0;overflow:hidden}.editor2d svg{font-family:var(--font);display:block}.plan-dark{--demolish:#ff5b6b;--new-wall-bg:#d6dce6;--new-wall-line:#3b82f6;--zone-line:#c4b5fd;--ceil-line:#ffe08a8c;--bg-plan:#0b1220;--grid-minor:#94a3b80e;--grid-major:#94a3b821;--grid-axis:#5ee7ff47;--wall-fill:#d6dce6;--wall-stroke:#fff;--wall-hatch:#0003;--room-fill:#121c30;--open-fill:#0e1626;--open-stroke:#c9d4e3;--glass-fill:#7dc8f038;--glass-stroke:#8fd3f5;--dim-line:#5ee7ff;--dim-ext:#5ee7ff73;--dim-text:#b6f4ff;--guide:#f472b6;--text-plan:#eef3fa;--label-halo:#090f1beb}.plan-light{--demolish:#dc2626;--new-wall-bg:#fff;--new-wall-line:#1d4ed8;--zone-line:#7c3aed;--ceil-line:#a162078c;--bg-plan:#f6f4ef;--grid-minor:#0f172a0d;--grid-major:#0f172a1a;--grid-axis:#2563eb4d;--wall-fill:#2b2f36;--wall-stroke:#0f1115;--wall-hatch:#fff3;--room-fill:#fff;--open-fill:#f6f4ef;--open-stroke:#333a44;--glass-fill:#4696d229;--glass-stroke:#2a6f9e;--sym-stroke:#3a4250;--sym-fill:#fff;--sym-fill2:#ece8df;--sym-elec:#d97706;--sym-light:#b58900;--sym-cold:#0284c7;--sym-hot:#e11d48;--sym-sewer:#8a6a4f;--sym-bg:#fff;--sym-glass:#4696d233;--dim-line:#2563eb;--dim-ext:#2563eb80;--dim-text:#1e3a8a;--guide:#db2777;--text-plan:#111827;--label-halo:#ffffffe6;--accent:#0891b2;--accent-soft:#0891b224}.room-label text{paint-order:stroke;stroke:var(--label-halo);stroke-width:3.5px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.room-name{fill:var(--text-plan);font-weight:700}.room-area{fill:var(--text-plan);opacity:.85;font-family:var(--mono);paint-order:stroke;stroke:var(--label-halo);stroke-width:3px;vector-effect:non-scaling-stroke}.wall-len{fill:var(--dim-text);font-family:var(--mono);paint-order:stroke;stroke:var(--label-halo);stroke-width:3px;vector-effect:non-scaling-stroke;opacity:.9}.dim-text{fill:var(--dim-text);font-family:var(--mono);paint-order:stroke;stroke:var(--bg-plan);stroke-width:3px;vector-effect:non-scaling-stroke}.dim-outer{opacity:.85}.dim-live .dim-text{fill:#fff;font-weight:600}.dim-live path{stroke:var(--accent)!important}.dim-user{cursor:pointer}.dim-sel path{stroke:var(--accent)!important}.item-height{fill:var(--sym-elec);font-family:var(--mono);paint-order:stroke;stroke:var(--label-halo);stroke-width:3px;vector-effect:non-scaling-stroke}.plan-label{fill:var(--text-plan);paint-order:stroke;stroke:var(--label-halo);stroke-width:3px;vector-effect:non-scaling-stroke;font-weight:600}.plan-label.sel{fill:var(--accent)}.node-handle{fill:#0000;stroke:#0000;cursor:move}.node-handle:hover,.node-handle.on{fill:var(--bg-plan);stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke}.wall-poly{cursor:pointer}.handle{fill:var(--bg-plan);stroke:var(--accent);stroke-width:1.6px;vector-effect:non-scaling-stroke;cursor:pointer}.handle.rot{fill:var(--accent);cursor:grab}.snap-dot{fill:none;stroke:var(--accent);stroke-width:1.5px;vector-effect:non-scaling-stroke}.snap-node,.snap-corner{fill:var(--accent)}.snap-wall{stroke:#facc15}.marquee{fill:#5ee7ff12;stroke:var(--accent);stroke-dasharray:5 4;stroke-width:1px;vector-effect:non-scaling-stroke}.sd-line{stroke:var(--accent);stroke-width:1.2px;fill:none}.sd-label{cursor:text}.sd-label rect{fill:var(--accent)}.sd-label text{fill:#04121a;font-family:var(--mono);font-weight:700}.sd-label:hover rect{fill:#fff}.typed-input{pointer-events:none;border:1px solid var(--accent);font-family:var(--mono);color:var(--muted);white-space:nowrap;z-index:5;background:#0a101ceb;border-radius:8px;padding:5px 9px;font-size:12px;position:absolute}.typed-input b{color:#fff}.label-input,.dim-edit{z-index:10;border:1px solid var(--accent);background:#0b1220;border-radius:8px;outline:none;width:160px;padding:5px 8px;position:absolute;box-shadow:0 0 0 4px #5ee7ff26}.dim-edit{width:90px;font-family:var(--mono);text-align:center}.calib-box{z-index:10;color:var(--muted);flex-direction:column;gap:6px;padding:10px;font-size:12px;display:flex;position:absolute}.calib-box input{border:1px solid var(--accent);font-family:var(--mono);background:#0b1220;border-radius:8px;outline:none;padding:6px 8px}.scale-bar{font-family:var(--mono);color:var(--muted);pointer-events:none;align-items:center;gap:14px;font-size:11px;display:flex;position:absolute;bottom:10px;left:12px}.plan-light .scale-bar{color:#4b5563}.scalebar{align-items:center;gap:6px;display:inline-flex}.scalebar .bar{border:1.5px solid;border-top:0;height:6px;display:inline-block}.legend{z-index:4;width:290px;max-height:calc(100% - 24px);padding:12px;position:absolute;top:12px;right:12px;overflow-y:auto}.legend-title{margin-bottom:8px;font-weight:700}.legend-row{grid-template-columns:28px 1fr auto auto;align-items:center;gap:8px;padding:3px 0;font-size:12px;display:grid}.legend-name{color:var(--text);line-height:1.2}.legend-h,.legend-n{font-family:var(--mono);color:var(--muted);font-size:11px}.legend-empty{color:var(--dim);font-size:12px}.viewer3d{position:absolute;inset:0}.viewer3d canvas{outline:none}.overlay3d{pointer-events:none;position:absolute;inset:0}.overlay3d>*{pointer-events:auto}.mood{width:280px;max-height:calc(100% - 150px);padding:16px;position:absolute;top:14px;left:14px;overflow-y:auto}.view-split .mood{display:none}.mood-kicker{letter-spacing:.12em;text-transform:uppercase;font-size:13px;font-weight:800}.mood-title{letter-spacing:-.02em;background:linear-gradient(90deg,#5ee7ff,#3b9bff);color:#0000;-webkit-background-clip:text;background-clip:text;margin-bottom:8px;font-size:34px;font-weight:800;line-height:1}.mood-desc{color:#c7d0de;margin:0 0 12px;font-size:12.5px;line-height:1.5}.preset-row{grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px;display:grid}.preset{border:1px solid var(--line);text-align:left;background:#ffffff08;border-radius:11px;flex-direction:column;gap:6px;padding:8px;display:flex}.preset:hover{color:#0a0f1a;background:#fffffff2}.preset-sw{border-radius:4px;height:14px;display:flex;overflow:hidden}.preset-sw img{object-fit:cover;flex:1;min-width:0}.preset b{font-size:12px}.moodboard{border:1px solid var(--line);background:#ffffff06;border-radius:12px;padding:10px}.mb-head{letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;margin-bottom:8px;font-size:10.5px;font-weight:700;display:flex}.mb-hint{color:var(--dim);font-family:var(--mono);letter-spacing:0;text-transform:none;text-overflow:ellipsis;white-space:nowrap;max-width:55%;font-weight:500;overflow:hidden}.mb-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.mb-slot{border:1px solid #0000;border-radius:10px;flex-direction:column;align-items:center;gap:3px;padding:4px;display:flex}.mb-slot:hover{border-color:var(--line-2)}.mb-slot.on{border-color:var(--accent);background:#5ee7ff14}.mb-slot img{aspect-ratio:1;object-fit:cover;border-radius:9px;width:100%;box-shadow:0 6px 14px #00000059}.mb-kicker{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:9px;overflow:hidden}.mb-slot b{text-align:center;font-size:11px;line-height:1.15}.daylight{flex-direction:column;gap:6px;width:210px;padding:12px;display:flex;position:absolute;top:64px;right:14px}.dl-head{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:baseline;margin-bottom:2px;font-size:11px;font-weight:700;display:flex}.dl-head b{font-family:var(--mono);color:var(--text);letter-spacing:0;font-size:16px}.dl-preset{text-align:left;color:var(--muted);border:1px solid #0000;border-radius:11px;align-items:center;gap:10px;padding:8px 10px;display:flex}.dl-preset span{flex-direction:column;display:flex}.dl-preset b{color:var(--text);font-weight:700}.dl-preset i{font-style:normal;font-family:var(--mono);font-size:11px}.dl-preset:hover{background:#ffffff0d}.dl-preset.on{border-color:var(--line-2);color:var(--warm);background:#ffffff14}.dl-slider{accent-color:#f8fafc;appearance:none;background:linear-gradient(90deg,#ffb46b,#fff3e0 40%,#ffb46b 70%,#3b4a8a);border-radius:4px;width:100%;height:4px;margin:6px 0 2px}.dl-slider::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#fff;border-radius:50%;width:16px;height:16px;box-shadow:0 0 0 4px #ffffff26}.dl-row{gap:4px;margin-top:4px;display:flex}.dl-row .chip{flex:1;justify-content:center}.tools3d{gap:6px;display:flex;position:absolute;top:14px;right:14px}.icon-btn{color:#dbe3ef;border-radius:12px;place-items:center;width:40px;height:40px;display:grid}.icon-btn:hover{background:#1e283ce6}.icon-btn.on{color:var(--accent)}.ui-toggle{pointer-events:auto;place-items:center;width:40px;height:40px;display:grid;position:absolute;top:14px;right:14px}.dock{max-width:min(760px,100% - 28px);padding:8px 10px 10px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.dock-tabs{scrollbar-width:none;gap:2px;padding-bottom:6px;display:flex;overflow-x:auto}.dock-tab{color:var(--muted);white-space:nowrap;border-radius:9px;padding:5px 11px;font-weight:600}.dock-tab:hover{color:var(--text)}.dock-tab.on{color:#0a0f1a;background:#fff}.dock-swatches{gap:8px;padding:2px 2px 4px;display:flex;overflow-x:auto}.dock-sw{cursor:grab;flex-direction:column;flex:none;align-items:center;gap:4px;width:70px;display:flex}.dock-sw img{object-fit:cover;border:2px solid #0000;border-radius:11px;width:62px;height:62px;transition:transform .12s;box-shadow:0 6px 14px #0006}.dock-sw:hover img{transform:translateY(-3px)}.dock-sw.on img{border-color:var(--accent)}.dock-sw span{color:var(--muted);text-align:center;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:70px;font-size:10.5px;line-height:1.15;display:-webkit-box;overflow:hidden}.view-split .dock{max-width:calc(100% - 28px)}.view-split .daylight{width:180px;top:64px}.callout{white-space:nowrap;background:#0c121ee0;border:1px solid #ffffff24;border-radius:10px;align-items:center;gap:8px;padding:5px 10px 5px 5px;display:flex;position:relative;transform:translateY(-34px);box-shadow:0 10px 20px #00000059}.callout:after{content:"";background:#fff9;width:1px;height:28px;position:absolute;top:100%;left:50%}.callout img{border-radius:6px;width:30px;height:30px}.callout div{flex-direction:column;display:flex}.callout b{color:#fff;font-size:12px}.callout span{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:9px}.walk-hint{color:var(--muted);align-items:center;gap:12px;padding:10px 14px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.walk-start{color:#0a0f1a;background:#fff;border-radius:9px;padding:8px 12px;font-weight:700}.walking .props{display:none}.modal-back{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#03060c99;place-items:center;display:grid;position:fixed;inset:0}.modal{background:#0c121ef7;flex-direction:column;width:min(720px,100vw - 40px);max-height:calc(100vh - 60px);display:flex}.modal.wide{width:min(1100px,100vw - 40px)}.modal.import{width:min(1240px,100vw - 40px);height:min(820px,100vh - 40px)}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:10px;padding:16px 18px 12px;display:flex}.modal-title{font-size:18px;font-weight:800}.modal-sub{color:var(--muted);margin-top:3px;font-size:12.5px}.modal-body{padding:16px 18px 18px;overflow-y:auto}.import-body{flex:1;min-height:0;display:flex}.import-preview{border-bottom-left-radius:var(--radius);background:repeating-conic-gradient(#0f1626 0% 25%,#0c1220 0% 50%) 50%/24px 24px;flex:1;place-items:center;min-width:0;padding:16px;display:grid;overflow:hidden}.drop-zone{color:var(--muted);border:2px dashed #5ee7ff59;border-radius:18px;flex-direction:column;align-items:center;gap:10px;padding:60px 80px;display:flex}.drop-zone b{color:var(--text);font-size:16px}.drop-zone:hover{background:#5ee7ff0d}.preview-wrap{width:100%;height:100%;position:relative}.preview-wrap img,.preview-wrap svg{width:100%;height:100%;position:absolute;inset:0}.preview-wrap img{object-fit:contain}.busy{background:#060a1280;place-items:center;font-weight:700;display:grid;position:absolute;inset:0}.import-side{border-left:1px solid var(--line);flex-direction:column;flex:none;gap:8px;width:330px;padding:16px;display:flex;overflow-y:auto}.legend-inline{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:11px;display:flex}.legend-inline i{border-radius:3px;width:10px;height:10px;display:inline-block}.slider-row{color:var(--muted);grid-template-columns:1fr 110px 26px;align-items:center;gap:8px;font-size:12px;display:grid}.slider-row input{accent-color:var(--accent)}.slider-row i{font-style:normal;font-family:var(--mono);text-align:right}.field{color:var(--muted);flex-direction:column;gap:5px;font-size:12px;display:flex}.field.row{flex-direction:row;justify-content:space-between;align-items:center}.field .text{font-family:var(--mono);padding:8px 10px;font-size:14px}.check{cursor:pointer;align-items:center;gap:8px;font-size:12.5px;display:flex}.spec-tabs{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.spec-scroll{max-height:60vh;overflow-y:auto}table.spec{border-collapse:collapse;width:100%;font-size:12.5px}table.spec th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line-2);background:#0c121e;padding:6px 8px;font-weight:600;position:sticky;top:0}table.spec td{border-bottom:1px solid var(--line);padding:7px 8px}table.spec td small{color:var(--dim);font-size:11px;display:block}table.spec td.num{font-family:var(--mono);text-align:right;white-space:nowrap}table.spec tr.total td{font-weight:700}table.spec.keys td:first-child{width:190px}h4{margin:18px 0 6px;font-size:13px}.help-steps{color:#c7d0de;margin:0 0 16px;padding-left:20px;line-height:1.55}.help-steps li{margin-bottom:6px}.proj-list{flex-direction:column;gap:6px;display:flex}.proj-row{border:1px solid var(--line);border-radius:11px;align-items:center;gap:10px;padding:10px 12px;display:flex}.proj-row.on{border-color:var(--accent)}.proj-row>div{flex-direction:column;flex:1;display:flex}.proj-row span{color:var(--muted);font-size:12px}.toast{z-index:300;max-width:70vw;padding:10px 16px;font-weight:600;animation:.2s ease-out toast-in;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.opera-tip{flex-direction:column;align-items:flex-start;gap:8px;font-weight:500;display:flex}.opera-tip>.btn{align-self:flex-end}.opera-tip-hint,.copy-addr-hint{color:var(--muted);font-size:12px}.copy-addr{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.copy-addr code{-webkit-user-select:all;user-select:all;word-break:break-all;background:#7f7f7f2e;border-radius:4px;padding:2px 6px;font-size:12px}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}@media print{.topbar,.toolbar,.catalog,.props,.tool-options,.pane-3d,.scale-bar,.toast,.opera-tip,.catalog-open{display:none!important}.views,.pane{background:#fff!important}}.crash{color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:20px;display:flex;position:absolute;inset:0}.crash b{color:var(--danger)}.album-stub{color:var(--muted);flex:1;place-items:center;display:grid}.ceil-label{fill:var(--sym-light);font-family:var(--mono);paint-order:stroke;stroke:var(--label-halo);stroke-width:3px;vector-effect:non-scaling-stroke}.link-hint{z-index:6;padding:8px 14px;font-size:12.5px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.est-modal{width:min(1320px,100vw - 32px);height:min(880px,100vh - 40px)}.est-body{flex-direction:column;flex:1;min-height:0;padding:12px 18px 0;display:flex}.est-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.est-hint{color:var(--muted);font-size:12.5px}.est-hint span{color:var(--warm)}.est-actions{gap:6px;display:flex}.est-scroll{border:1px solid var(--line);border-radius:10px;flex:1;min-height:0;overflow:auto}.est-table{table-layout:fixed;min-width:1000px}.est-table col.c-no{width:46px}.est-table col.c-unit{width:56px}.est-table col.c-qty{width:86px}.est-table col.c-waste{width:74px}.est-table col.c-packs{width:170px}.est-table col.c-price{width:128px}.est-table col.c-sum{width:112px}.est-table th.num{text-align:right}.est-table td{vertical-align:top;padding:6px 8px}.est-table .est-sec td{cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle;border-bottom:1px solid var(--line-2);background:#ffffff09;padding:8px}.est-table .est-sec:hover td{background:#5ee7ff0f}.est-sec .num{font-weight:700}.est-count{color:var(--dim);margin-left:10px;font-size:11.5px}.est-table .est-sec-hint td{color:var(--dim);padding-top:4px;padding-bottom:4px;font-size:11.5px}.est-table .est-no{color:var(--dim);font-family:var(--mono);font-size:11px}.est-name>span{overflow-wrap:anywhere}.est-badge{color:var(--warm);background:#ffae5c26;border-radius:6px;margin-left:6px;padding:1px 6px;font-size:10px;font-style:normal;font-weight:700}.est-link{color:var(--accent);vertical-align:-2px;margin-left:6px}.est-table .est-unit{color:var(--muted)}.est-table .est-packs{color:#c7d0de;font-size:11.5px}.est-split{color:var(--muted);white-space:nowrap;margin-top:3px;font-size:10.5px;line-height:1.3;display:block}.est-print .est-split{color:#555;font-size:8pt}.est-dim{color:var(--dim)}.est-input{border:1px solid var(--line);background:#ffffff0a;border-radius:7px;outline:none;width:100%;height:26px;padding:3px 6px;font-size:12px}.est-input.num{text-align:right;font-family:var(--mono)}.est-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #5ee7ff1f}.est-input.changed{border-color:#ffae5c8c}.est-input::placeholder{color:var(--dim)}.est-table .est-price small{text-align:right;margin-top:2px}.est-locked{font-family:var(--mono);color:var(--accent)}.est-table td.est-sum{font-weight:600}.est-table td.est-sum.zero{color:var(--dim);font-weight:400}.est-del.tb-icon{width:26px;height:26px}.est-table .est-add td{padding:8px}.est-totalbar{justify-content:space-between;align-items:center;gap:16px;padding:12px 0 14px;display:flex}.est-totals{color:var(--muted);flex-wrap:wrap;gap:4px 14px;font-size:11.5px;display:flex}.est-totals b{color:var(--text);font-family:var(--mono);font-weight:600}.est-grand{white-space:nowrap;font-size:15px}.est-grand b{font-family:var(--mono);color:var(--accent);font-size:18px}.est-print{font-family:var(--font);color:#000;background:#fff;font-size:9.5pt;display:none}.est-print h1{margin:0 0 2mm;font-size:15pt}.est-print .est-print-sub{color:#444;margin:0 0 4mm}.est-print table{border-collapse:collapse;width:100%}.est-print th,.est-print td{text-align:left;vertical-align:top;border:.5pt solid #999;padding:1.2mm 1.6mm}.est-print th{background:#eee}.est-print thead{display:table-header-group}.est-print td.num{text-align:right;white-space:nowrap}.est-print td small{color:#555;font-size:8pt;display:block}.est-print tr{break-inside:avoid}.est-print tr.sec td{background:#f2f2f2;font-weight:700}.est-print tfoot td{font-size:11pt;font-weight:800}@media print{html.est-printing,body.est-printing{color:#000!important;background:#fff!important;height:auto!important;overflow:visible!important}body.est-printing>:not(.est-print){display:none!important}body.est-printing>.est-print{-webkit-print-color-adjust:exact;print-color-adjust:exact;display:block!important}}.v3-col{scrollbar-width:none;flex-direction:column;gap:8px;width:210px;max-height:calc(100% - 78px);display:flex;position:absolute;top:64px;right:14px;overflow-y:auto}.v3-col::-webkit-scrollbar{display:none}.v3-col>.daylight{flex:none;width:auto;position:static}.v3-panel{flex-direction:column;flex:none;gap:7px;padding:10px 12px;display:flex}.v3-panel-title,.v3-collapse{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700}.v3-panel-head{justify-content:space-between;align-items:center;display:flex}.v3-collapse{align-items:center;gap:4px;display:inline-flex}.v3-collapse:hover{color:var(--text)}.v3-collapse i{font-style:normal;font-family:var(--mono);letter-spacing:0;color:var(--dim)}.v3-chips{flex-wrap:wrap;gap:4px;display:flex}.v3-chips .chip{flex:1;justify-content:center;padding:4px 6px}.v3-panel .chip:disabled{opacity:.75;cursor:default}.v3-wide{justify-content:center;width:100%}.v3-mini{width:22px;height:22px;color:var(--muted);border-radius:6px;flex:none;place-items:center;display:grid}.v3-mini:hover{color:var(--text);background:#ffffff14}.v3-empty{color:var(--dim);font-size:11px;line-height:1.35}.v3-empty svg{vertical-align:-2px;margin-right:2px}.v3-views{flex-direction:column;gap:1px;max-height:210px;margin:0 -4px;display:flex;overflow-y:auto}.v3-view{border-radius:8px;align-items:center;gap:1px;padding-right:2px;display:flex}.v3-view:hover{background:#ffffff0d}.v3-view .v3-mini{opacity:0}.v3-view:hover .v3-mini,.v3-view.editing .v3-mini{opacity:1}.v3-view-go{text-align:left;min-width:0;color:var(--text);flex:1;align-items:baseline;gap:6px;padding:5px 6px;font-size:12.5px;font-weight:600;display:flex}.v3-view-go span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.v3-view-go i{font-style:normal;font-family:var(--mono);color:var(--dim);margin-left:auto;font-size:10.5px}.v3-view.editing input{border:1px solid var(--accent);background:#00000040;border-radius:7px;outline:none;flex:1;min-width:0;margin:2px 0 2px 4px;padding:4px 6px;font-size:12.5px}.v3-shot{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:5px;padding-top:7px;font-size:12px;font-weight:600;display:flex}.v3-shot span{flex:1}.v3-itembar{white-space:nowrap;pointer-events:auto;-webkit-user-select:none;user-select:none;background:#0c121eeb;border:1px solid #ffffff24;border-radius:10px;gap:2px;padding:3px;display:flex;box-shadow:0 8px 18px #00000059}.v3-itembar button{color:#dbe3ef;border-radius:7px;place-items:center;width:28px;height:28px;display:grid}.v3-itembar button:hover:not(:disabled){color:var(--accent);background:#5ee7ff24}.v3-itembar .v3-ib-del:hover:not(:disabled){color:var(--danger);background:#ff6b6b29}.v3-ib-lock{color:var(--warm);align-items:center;gap:4px;padding:5px 8px;font-size:11.5px;display:inline-flex}.v3-cat-upload{border:1px dashed var(--line-2);width:100%;color:var(--muted);border-radius:10px;justify-content:center;align-items:center;gap:6px;margin-bottom:8px;padding:7px 10px;font-size:12px;font-weight:600;display:flex}.v3-cat-upload:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.v3-tile-wrap{min-width:0;display:flex;position:relative}.v3-tile-wrap>.cat-tile{flex:1;min-width:0}.v3-tile-del{width:18px;height:18px;color:var(--muted);opacity:0;background:#0a101cd9;border-radius:6px;place-items:center;display:grid;position:absolute;top:3px;right:3px}.v3-tile-wrap:hover .v3-tile-del{opacity:1}.v3-tile-del:hover{color:var(--danger)}.v3-photo-cell .mat-none.big{border:1px dashed var(--line-2);color:var(--muted);place-items:center;font-size:22px;display:grid}.v3-photo-cell:hover .mat-none.big{border-color:var(--accent);color:var(--accent)}.v3-photo-form{border:1px solid var(--line-2);background:#ffffff08;border-radius:10px;grid-template-columns:1fr 1fr;gap:6px 10px;margin-bottom:10px;padding:10px;display:grid}.v3-photo-form img{object-fit:cover;border-radius:8px;grid-row:span 3;width:76px;height:76px}.v3-photo-form .v3-photo-preview{background:#00000038;border-radius:8px;grid-column:1/-1;place-items:center;min-height:90px;padding:6px;display:grid;position:relative}.v3-photo-tiles{background-repeat:repeat;border-radius:4px;box-shadow:0 1px 6px #00000059}.v3-photo-wait,.v3-photo-cap{color:var(--muted);font-size:10.5px}.v3-photo-cap{background:#0c121eb3;border-radius:5px;padding:1px 5px;position:absolute;bottom:5px;right:8px}.v3-photo-form .v3-photo-wide{grid-column:1/-1}.v3-photo-size{color:var(--muted);align-self:center;font-size:11px}.v3-photo-form .v3-photo-check{color:var(--text);cursor:pointer;flex-direction:row;align-items:center;gap:6px;font-size:12px}.v3-photo-form .v3-photo-check input{accent-color:var(--accent);padding:0}.v3-photo-form label{color:var(--muted);flex-direction:column;gap:2px;font-size:10.5px;display:flex}.v3-photo-form input,.v3-photo-form select{border:1px solid var(--line-2);min-width:0;color:var(--text);background:#00000040;border-radius:7px;outline:none;padding:4px 7px;font-size:12px}.v3-photo-form input:focus,.v3-photo-form select:focus{border-color:var(--accent)}.v3-model-dlg{width:min(560px,100vw - 40px)}.v3-model-body{grid-template-columns:170px 1fr;align-items:start;gap:18px;display:grid}.v3-model-scale{border:1px solid var(--line);background:#ffffff08;border-radius:10px;width:170px;height:200px}.v3-model-fields{flex-direction:column;gap:10px;min-width:0;display:flex}.v3-model-fields select.text{font-family:var(--font);padding:6px 8px;font-size:13px}.v3-model-size{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:8px;font-size:12px;display:flex}.v3-model-size b{font-family:var(--mono);color:var(--text);font-size:15px}.v3-model-size i{color:var(--dim);font-style:normal}.v3-model-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.v3-model-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.v3-photo-actions{grid-column:1/-1;justify-content:flex-end;gap:6px;display:flex}.v3-itembar{align-items:center;transform:translate(-50%,calc(-100% - 10px))}.v3-ib-mat{border-right:1px solid #ffffff1f;align-items:center;gap:6px;max-width:170px;margin-right:2px;padding:0 8px 0 3px;display:inline-flex}.v3-ib-mat img{border-radius:5px;flex:none;width:22px;height:22px}.v3-ib-mat b{text-overflow:ellipsis;color:#fff;font-size:11.5px;font-weight:600;overflow:hidden}.view-split .dock,.view-split .v3-panel{display:none}.view-split .v3-col{width:168px}.view-split .dl-preset{padding:5px 8px}.view-split .dl-preset i{display:none}.view-split .tools3d .icon-btn{width:34px;height:34px}.est-table tr.est-off td:not(.est-no){opacity:.45}.est-table tr.est-off .est-name>span{text-decoration:line-through}.est-opt{vertical-align:-2px;accent-color:var(--accent);cursor:pointer;margin:0 6px 0 0}.est-pack-edit{color:var(--muted);white-space:nowrap;align-items:center;gap:4px;margin-top:3px;font-size:11px;display:flex}.est-input.est-mini{height:22px;padding:2px 5px;font-size:11px}.est-unit-toggle{color:var(--accent);cursor:pointer;background:0 0;border:0;margin:2px 0 0 auto;padding:0 2px;font-size:11px;display:block}.est-unit-toggle:hover{text-decoration:underline}.est-plumb-set{align-items:center;gap:4px;display:inline-flex}.glass-swatch i{vertical-align:-2px;border:1px solid #7f7f7f99;border-radius:3px;width:12px;height:12px;display:inline-block}.glass-swatch i+*,.glass-swatch i:not(:last-child){margin-right:4px}.p-glass{flex-direction:column;gap:6px;margin:2px 0 6px;display:flex}.p-glass .chips{flex-wrap:wrap}.p-warn{background:#ef44441a;border:1px solid #ef444473;border-radius:10px;flex-direction:column;gap:6px;margin:8px 0 10px;padding:10px 12px;font-size:12px;line-height:1.4;display:flex}.p-warn b{color:#f87171}.p-warn span{color:var(--muted)}.p-warn .btn{align-self:flex-start}.pk-check{flex-direction:column;gap:6px;margin:8px 0 4px;display:flex}.pk-item{border:1px solid var(--line);color:var(--muted);background:#ffffff08;border-radius:9px;grid-template-columns:14px 1fr;gap:8px;padding:7px 9px;font-size:12px;line-height:1.4;display:grid}.pk-item svg{margin-top:1px}.pk-item.error{color:var(--text);background:#ef44441a;border-color:#ef444473}.pk-item.error svg{color:#f87171}.pk-item.warn{color:var(--text);background:#ffae5c14;border-color:#ffae5c66}.pk-item.warn svg{color:var(--warm)}.pk-item.ok svg{color:#4ade80}.pk-item.info svg{color:var(--accent)}.cl-bar{flex-shrink:0;align-items:center;gap:8px;display:flex}.cl-avatar{color:#0b1220;letter-spacing:-.02em;box-shadow:0 0 0 2px var(--panel-solid);-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:800;display:inline-flex}.cl-peers{display:inline-flex}.cl-peers .cl-avatar+.cl-avatar{margin-left:-6px}.cl-more{color:var(--muted);align-self:center;margin-left:4px;font-size:11px}.cl-conn{color:var(--dim);align-items:center;display:inline-flex}.cl-conn.online{color:#4ade80}.cl-conn.connecting{color:var(--warm)}.cl-conn.offline{color:var(--danger)}.cl-badge{border:1px solid var(--line-2);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;display:inline-flex}.cl-me{cursor:pointer;background:0 0;border:none;border-radius:50%;padding:2px;display:inline-flex}.cl-menu{min-width:230px;left:auto;right:0}.cl-menu-head{align-items:center;gap:10px;padding:6px 10px 8px;font-size:12.5px;display:flex}.cl-menu-head>div{flex-direction:column;min-width:0;display:flex}.cl-menu-head>div>*{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cl-menu-head>div>span{color:var(--muted);font-size:11.5px}.pf{flex-direction:column;max-width:420px;display:flex}.pf-part+.pf-part{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.pf .cl-actions{margin-bottom:0}.pf-photo{align-items:center;gap:14px;display:flex}.pf-photo-side{flex-direction:column;gap:6px;min-width:0;display:flex}.pf-photo-side .p-hint{margin:0}.pf-btns{flex-wrap:wrap;gap:6px;display:flex}.pf-crop-wrap{flex-direction:column;align-items:center;gap:8px;display:flex}.pf-crop-wrap .p-hint{text-align:center;max-width:300px;margin:0}.pf-crop{aspect-ratio:1;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:#0b1220;border-radius:12px;width:240px;max-width:100%;position:relative;overflow:hidden}.pf-crop:active{cursor:grabbing}.pf-crop:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pf-crop canvas{width:100%;height:100%;display:block}.pf-crop:after{content:"";pointer-events:none;border:2px solid #ffffffd9;border-radius:50%;position:absolute;inset:0;box-shadow:0 0 0 400px #03060c99}.pf-zoom{width:240px;max-width:100%;color:var(--muted);align-items:center;gap:10px;font-size:12px;display:flex}.pf-zoom input{min-width:0;accent-color:var(--accent);flex:1}.pf-mail{color:var(--muted);margin-top:-6px;font-size:12px}.pf-check{align-items:flex-start;line-height:1.4}.pf-check input{margin-top:2px}.pf-part>.p-hint{margin:6px 0 0}.cl-opening{z-index:250;background:#060a1273;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.cl-opening>div{align-items:center;gap:10px;padding:14px 18px;font-weight:600;display:flex}@keyframes cl-spin{to{transform:rotate(360deg)}}.spin{animation:.9s linear infinite cl-spin}.cl-form{flex-direction:column;gap:12px;max-width:420px;display:flex}.cl-form .text{padding:8px 10px;font-size:14px}.cl-actions{flex-wrap:wrap;gap:8px;margin:4px 0 12px;display:flex}.cl-err{color:var(--danger);margin:0;font-size:12.5px}.cl-consent{color:var(--muted);align-items:flex-start;line-height:1.4}.cl-textlink{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;font-size:12.5px}.cl-textlink:hover{text-decoration:underline}.cl-note{color:var(--text);align-items:flex-start;gap:8px;margin:0;font-size:13px;line-height:1.45;display:flex}.cl-note svg{color:var(--accent);flex:none;margin-top:2px}.cl-form .text.cl-code{max-width:160px;font-family:var(--mono);letter-spacing:4px;font-size:18px}.cl-confirm{flex-direction:column;gap:8px;display:flex}.cl-confirm .cl-actions{margin:0}.cl-invites .cl-confirm{border:1px solid var(--line-2);border-radius:10px;padding:10px 12px}.pf-email{color:var(--warm);align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.pf-email.ok{color:#4ade80}.pf-email-part{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.pf .pf-email-part>.p-hint{margin:0}.cl-tabs{align-self:flex-start;width:max-content;margin-bottom:12px}.cl-tabs button{align-items:center;gap:6px;display:inline-flex}.cl-share-add{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.cl-share-add .text{flex:200px;min-width:0;padding:7px 10px}.cl-link{border:1px solid var(--line);color:var(--muted);border-radius:10px;align-items:center;gap:8px;margin:12px 0 4px;padding:8px 10px;font-size:12px;display:flex}.cl-link code{text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-family:var(--mono);flex:1;overflow:hidden}.proj-row>.seg{flex-direction:row;flex:none}.cl-peer{cursor:pointer;background:0 0;border:none;border-radius:50%;padding:0;display:inline-flex}.cl-peer+.cl-peer{margin-left:-6px}.cl-peer.following .cl-avatar{box-shadow:0 0 0 2px var(--panel-solid), 0 0 0 4px var(--peer)}.proj-row>.pl-main{gap:2px;min-width:0}.pl-name{align-items:center;gap:4px;min-width:0;display:flex}.pl-name b{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tb-icon.pl-mini{border-radius:7px;width:24px;height:24px}.pl-name .pl-mini{opacity:.55}.pl-row:hover .pl-name .pl-mini,.pl-name .pl-mini:focus-visible{opacity:1}.pl-meta,.pl-access{line-height:1.4}.pl-access{align-items:flex-start;gap:5px;display:flex}.pl-access svg{flex:none;margin-top:2px}.proj-row .cl-avatar{color:#0b1220}.pl-faces{flex:none;margin-top:1px;display:inline-flex}.pl-faces .cl-avatar+.cl-avatar{margin-left:-5px}.pl-meta>.cl-avatar{vertical-align:-3px;margin-right:5px}.pl-more{color:var(--accent);text-underline-offset:2px;font-size:12px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.proj-row>.pl-acts{flex-direction:row;flex:none;align-items:center;gap:2px}.pl-acts>.btn{margin-right:4px}.pl-edit{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.pl-edit .text{padding:4px 8px;font-weight:700}.proj-row .pl-err,.pl-err{color:var(--danger);font-size:11.5px}.pl-folder{border:1px solid var(--line);background:#ffffff04;border-radius:11px}.pl-folder-head{align-items:center;gap:4px;padding:5px 8px 5px 5px;display:flex}.pl-fold{text-align:left;border-radius:8px;flex:1;align-items:center;gap:7px;min-width:0;padding:5px 6px;display:flex}.pl-fold:hover{background:#ffffff0d}.pl-fold.editing{flex:none}.pl-fold svg{color:var(--muted);flex:none}.pl-fold b{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.pl-chev{transition:transform .15s}.pl-folder.open .pl-chev{transform:rotate(90deg)}.pl-count{min-width:20px;color:var(--muted);text-align:center;background:#ffffff12;border-radius:999px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.pl-folder-body{flex-direction:column;gap:6px;padding:0 8px 8px;display:flex}.pl-folder-body .proj-row{background:#ffffff05}.pl-empty{margin:0 4px 2px}.pl-newfolder{border-style:dashed;border-color:var(--accent)}.proj-row.fresh{border-color:var(--accent);background:var(--accent-soft);animation:1.6s ease-out pl-fresh}@keyframes pl-fresh{0%{box-shadow:0 0 0 4px #5ee7ff59}to{box-shadow:0 0 #5ee7ff00}}.menu.pl-menu{z-index:150;min-width:220px;max-width:min(320px,100vw - 16px);max-height:min(380px,100vh - 16px);position:fixed;overflow-y:auto}.pl-menu>button.on{color:var(--accent)}.pl-noicon{flex:none;width:15px;display:inline-block}.pl-menu-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.pl-menu-new{padding:4px 6px 6px}.cl-share-list{margin-top:12px}.proj-row>.cl-who{min-width:0}.cl-who b,.cl-who>span:not(.cl-invite-text){text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.proj-row>.cl-ctrls{flex-direction:row;flex:none;align-items:center;gap:6px}.check.cl-copy{border:1px solid var(--line);white-space:nowrap;border-radius:8px;gap:5px;padding:3px 8px 3px 6px}.proj-row .cl-copy span,.cl-share-add .cl-copy span{color:var(--dim);font-size:12px;font-weight:600}.check.cl-copy.on{background:var(--accent-soft);border-color:#5ee7ff73}.proj-row .cl-copy.on span,.cl-share-add .cl-copy.on span{color:var(--text)}.cl-copy input{margin:0}.cl-avatar.cl-mail{width:28px;height:28px;color:var(--muted);border:1px dashed var(--line-2);box-shadow:none;background:0 0}.proj-row .cl-wait{color:var(--warm);align-items:center;gap:4px;display:inline-flex}.proj-row .cl-invite-text{color:var(--text);font-size:13px;line-height:1.4}.cl-invites{margin-bottom:14px}.cl-invites h4{color:var(--accent);margin:0 0 8px;font-size:13px;font-weight:700}@media (width<=560px){.proj-row.cl-member{flex-wrap:wrap}.proj-row.cl-member>.cl-who{flex:1 1 0}.proj-row.cl-member>.cl-ctrls{flex-wrap:wrap;justify-content:flex-end;width:100%}.proj-row.pl-row{flex-wrap:wrap}.proj-row>.pl-main{flex-basis:100%}.proj-row>.pl-acts{justify-content:flex-end;width:100%}}.cl-3d-label{color:#0b1220;white-space:nowrap;border-radius:6px;padding:3px 8px;font-size:12px;font-weight:700;box-shadow:0 2px 8px #00000059}.overlay3d.photo .walk-hint{bottom:96px}.photo-frame-layer{position:absolute;inset:0;pointer-events:none!important}.photo-dim{background:#03060c6b;position:absolute}.photo-frame{border:1px solid #ffffffd9;position:absolute;box-shadow:0 0 0 1px #00000059}.photo-frame i{background:#ffffff38;position:absolute}.photo-bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 8px;max-width:calc(100% - 28px);padding:8px 10px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.photo-fov{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.photo-fov input{width:110px;accent-color:var(--accent)}.photo-fov b{min-width:30px;color:var(--text);font-family:var(--mono);font-size:11.5px}.photo-aspects{gap:3px;display:inline-flex}.photo-go{background:var(--accent);color:#04121a;border-radius:9px;align-items:center;gap:6px;padding:6px 13px;font-weight:700;display:inline-flex}.photo-go:hover{filter:brightness(1.08)}.photo-back{z-index:40;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#03060c8c;place-items:center;padding:8px;display:grid;position:absolute;inset:0}.photo-modal{background:#0c121ef5;flex-direction:column;gap:10px;width:min(980px,100%);max-height:100%;padding:12px;display:flex;overflow-y:auto}.photo-head{align-items:center;gap:10px;display:flex}.photo-head b{font-size:14px}.photo-head span{color:var(--muted);font-family:var(--mono);flex:1;font-size:11.5px}.photo-view{background:#05080e;border-radius:10px;height:min(56vh,540px);min-height:160px;position:relative;overflow:hidden}.photo-canvas{object-fit:contain;width:100%;height:100%;display:block;position:absolute;inset:0}.photo-wait,.photo-error{z-index:1;text-align:center;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;display:flex;position:absolute;inset:0}.photo-error{color:var(--danger);background:#05080ed9;line-height:1.4}.photo-error>span{max-width:640px}.photo-error-details{max-width:640px;color:var(--muted);font-family:var(--mono);overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;font-size:11px}.photo-unsupported{color:var(--warm)}.photo-spin{border:2px solid #ffffff26;border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:.9s linear infinite photo-spin}@keyframes photo-spin{to{transform:rotate(360deg)}}.photo-progress{color:var(--muted);flex-direction:column;gap:5px;font-size:12px;display:flex}.photo-bar-track{background:#ffffff14;border-radius:4px;height:4px;overflow:hidden}.photo-bar-track i{background:var(--accent);height:100%;transition:width .25s;display:block}.photo-bar-track.neural i{background:var(--warm)}.photo-note{color:var(--warm);font-size:11.5px}.photo-gpu{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:11.5px;display:flex}.photo-gpu-more{color:var(--accent);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.gpu-help{font-size:12px;line-height:1.45}.photo-modal .gpu-help{background:#7f7f7f1a;border-radius:8px;padding:8px 10px}.gpu-help p,.gpu-help ol{margin:4px 0}.gpu-help ol{padding-left:18px}.gpu-help li+li{margin-top:4px}.gpu-help-note{color:var(--muted)}.photo-controls{flex-direction:column;gap:7px;display:flex}.photo-row{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.photo-label{width:70px;color:var(--muted);font-size:12px}.photo-chips{flex-wrap:wrap;gap:4px;display:flex}.photo-chips .chip small{opacity:.7;font-size:10.5px;font-weight:500}.photo-ev{width:160px;accent-color:var(--accent)}.photo-ev-val{min-width:34px;font-family:var(--mono);font-size:11.5px}.photo-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.photo-actions .chip{padding:6px 12px}@media (width<=700px){.photo-back{z-index:200;padding:6px;position:fixed}}@media (width<=560px){.photo-label{width:100%}.photo-view{height:42vh}.photo-fov input{width:84px}.photo-modal{padding:10px}}.gl-status{pointer-events:none;z-index:4;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.gl-card{pointer-events:auto;text-align:left;max-width:420px;color:var(--text);flex-direction:column;gap:8px;padding:18px 20px;display:flex}.gl-card b{font-size:15px}.gl-card p{color:#c3ccdb;margin:0;font-size:13px;line-height:1.45}.gl-card .gl-retry{color:var(--accent);font-family:var(--mono);font-size:12px}.gl-card .gl-note{color:var(--muted);font-size:12px}.gl-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.q3d-menu{gap:2px;min-width:250px;left:auto;right:0}.q3d-head{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:4px 10px 6px;font-size:11px}.q3d-menu>button{align-items:flex-start}.q3d-dot{border:1.5px solid var(--line-2);border-radius:50%;flex:none;width:12px;height:12px;margin-top:3px}.q3d-menu>button.on .q3d-dot{border-color:var(--accent);background:radial-gradient(circle, var(--accent) 0 3px, transparent 3.5px)}.q3d-text{flex-direction:column;gap:2px;display:flex}.q3d-text b{font-size:13px}.q3d-text i{color:var(--muted);font-size:11.5px;font-style:normal}.view-split .gl-status{place-items:center start}.view-split .gl-card{max-width:min(330px,100% - 200px);padding:14px 16px}.view-split .gl-card p{font-size:12px}.cl-viewlink{border-top:1px solid var(--line);margin:16px 0 0;padding:14px 0 0}.cl-viewlink h3{align-items:center;gap:7px;margin:0;font-size:13.5px;font-weight:650;display:flex}.cl-vl-row{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0;display:flex}.cl-vl-term{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.cl-vl-term select{min-width:110px;padding:4px 8px}.cl-vl-status.expired{color:var(--warm)}.cl-viewlink .cl-err{margin:8px 0 0}.pl-viewlink{color:var(--accent);align-items:center;gap:3px;display:inline-flex}.cl-viewer-bar{left:calc(env(safe-area-inset-left) + 8px);right:calc(env(safe-area-inset-right) + 8px);bottom:calc(env(safe-area-inset-bottom) + 8px);z-index:140;background:#0d1320f7;border-radius:12px;align-items:center;gap:8px;padding:8px 8px 8px 12px;display:flex;position:fixed}.cl-vb-text{flex:auto;min-width:0;font-size:13px;line-height:1.3}.cl-viewer-bar .btn{flex:none;align-items:center;min-height:36px;padding:0 12px;text-decoration:none;display:inline-flex}.cl-viewer-bar .tb-icon{flex:none;width:36px;height:36px}.tilings{pointer-events:none}.tiling-hit{pointer-events:visiblePainted;cursor:pointer}.tiling-hit.sel{cursor:move}.tiling-outline,.tiling-outline-halo{fill:none;vector-effect:non-scaling-stroke;pointer-events:none;stroke-linejoin:round}.tiling-outline-halo{stroke:var(--bg-plan);stroke-width:3.5px;stroke-opacity:.75}.tiling-outline{stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:8 5}.handle.tiling-vertex{cursor:move}.handle.tiling-mid{fill:var(--accent);fill-opacity:.55;stroke-width:1.2px;cursor:copy}.handle.tiling-mid:hover{fill-opacity:1}.tiling-origin{cursor:move}.tiling-origin-hit{fill:#0000}.tiling-origin-halo,.tiling-origin-cross{fill:none;vector-effect:non-scaling-stroke}.tiling-origin-halo{stroke:var(--bg-plan);stroke-width:3.5px;stroke-opacity:.8}.tiling-origin-cross{stroke:var(--accent);stroke-width:1.3px}.tiling-origin-corner{fill:none;stroke:var(--accent);stroke-width:2.6px;stroke-linejoin:miter;vector-effect:non-scaling-stroke}.tiling-origin-dot{fill:var(--bg-plan);stroke:var(--accent);stroke-width:1.6px;vector-effect:non-scaling-stroke}.tiling-origin:hover .tiling-origin-dot{fill:var(--accent)}.tiling-guide{stroke:var(--guide);stroke-width:1.6px;vector-effect:non-scaling-stroke}.legend-swatch{object-fit:cover;box-sizing:border-box;border:1px solid #94a3b859;border-radius:4px;width:26px;height:26px;display:block}.legend-size{color:var(--muted);font-family:var(--mono);white-space:nowrap;margin-left:4px;font-size:11px}.legend-foot{color:var(--muted);border-top:1px solid #94a3b82e;margin-top:6px;padding-top:6px;font-size:11px}
