:root{--bg:#f2f2f7;--surface:#fff;--surface-2:#f2f2f6;--fg:#1c1c1e;--muted:#6c6c72;--faint:#aeaeb2;--sep:#3c3c432b;--bar:#f8f8fad6;--accent:#006fae;--accent-fill:#00adef;--on-accent:#1c1c1e;--accent-soft:#00adef24;--green:#1e7f38;--green-soft:#34c75926;--red:#c9001a;--red-soft:#ff3b301c;--blue:#0a5fc7;--blue-soft:#0a84ff1f;--teal:#0b6f79;--teal-soft:#30b0c726;--gray-soft:#78788024;--fill:#7676801f;--seg-on:#fff;--av1:#a9aeb8;--av2:#868b95;--toast-bg:#1c1c1e;--toast-fg:#f2f2f7;--ink:#e5261c;--shadow:0 12px 40px #0000002e;--font:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue",system-ui,"Segoe UI",Roboto,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#000;--surface:#1c1c1e;--surface-2:#2c2c2e;--fg:#f2f2f7;--muted:#9a9aa1;--faint:#636366;--sep:#54545899;--bar:#161618d1;--accent:#33bff5;--accent-fill:#00adef;--on-accent:#1c1c1e;--accent-soft:#00adef33;--green:#30d158;--green-soft:#30d1582b;--red:#ff5a50;--red-soft:#ff453a2b;--blue:#4aa2ff;--blue-soft:#409cff2e;--teal:#4fcfe6;--teal-soft:#40c8e029;--gray-soft:#8e8e9338;--fill:#76768042;--seg-on:#636366;--av1:#6e727b;--av2:#4d5159;--toast-bg:#f2f2f7;--toast-fg:#1c1c1e;--ink:#ff4b3e;--shadow:0 12px 40px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#000;--surface:#1c1c1e;--surface-2:#2c2c2e;--fg:#f2f2f7;--muted:#9a9aa1;--faint:#636366;--sep:#54545899;--bar:#161618d1;--accent:#33bff5;--accent-fill:#00adef;--on-accent:#1c1c1e;--accent-soft:#00adef33;--green:#30d158;--green-soft:#30d1582b;--red:#ff5a50;--red-soft:#ff453a2b;--blue:#4aa2ff;--blue-soft:#409cff2e;--teal:#4fcfe6;--teal-soft:#40c8e029;--gray-soft:#8e8e9338;--fill:#76768042;--seg-on:#636366;--av1:#6e727b;--av2:#4d5159;--toast-bg:#f2f2f7;--toast-fg:#1c1c1e;--ink:#ff4b3e;--shadow:0 12px 40px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--fg);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-size:17px}button,input{font-family:var(--font);color:inherit}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--muted)}.loading,.empty{color:var(--muted);text-align:center;padding:48px 16px}.nav{z-index:20;background:var(--bar);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-bottom:.5px solid var(--sep);padding-top:env(safe-area-inset-top,0px);position:sticky;top:0}.nav-in{max-width:760px;height:52px;padding:0 max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px));justify-content:space-between;align-items:center;gap:10px;margin:0 auto;display:flex}.nav.wide .nav-in{max-width:none}.nav-l,.nav-r{flex:none;align-items:center;gap:6px;min-width:0;display:flex}.back{color:var(--accent);align-items:center;gap:4px;padding:6px 4px 6px 0;font-size:17px;text-decoration:none;display:flex}.brand{align-items:center;gap:8px;font-size:15px;font-weight:600;display:flex}.brand i{background:var(--accent-fill);width:20px;height:20px;color:var(--on-accent);border-radius:6px;place-items:center;font-size:11px;font-style:normal;font-weight:800;display:grid}.title,.title-in{text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:17px;font-weight:600;overflow:hidden}.title-in{background:0 0;border:0;border-radius:8px;outline:none;padding:6px 8px}.title-in:hover,.title-in:focus{background:var(--fill)}.icon-btn{width:36px;height:36px;color:var(--accent);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;display:grid}.icon-btn:disabled{color:var(--faint);cursor:default}.icon-btn.sm{width:32px;height:32px;color:var(--muted)}.icon-btn:hover:not(:disabled){background:var(--fill)}.danger,.icon-btn.danger{color:var(--red)}.seg{background:var(--fill);border-radius:9px;gap:2px;padding:2px;display:inline-flex}.seg button{cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:6px;padding:6px 12px;font-size:14px;font-weight:500;display:flex}.seg button.on{background:var(--seg-on);box-shadow:0 1px 3px #0000001f}.seg button svg{width:16px;height:16px}.pill{background:var(--surface);color:var(--accent);cursor:pointer;white-space:nowrap;box-shadow:inset 0 0 0 .5px var(--sep);border:0;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:14px;font-weight:500;display:inline-flex}.pill svg{width:16px;height:16px}.pill.on{background:var(--accent-fill);color:var(--on-accent);box-shadow:none}.pill.warn{background:var(--red-soft);color:var(--red);box-shadow:none}.pill.danger{color:var(--red)}.shell{max-width:760px;padding:4px max(16px,env(safe-area-inset-right,0px)) 72px max(16px,env(safe-area-inset-left,0px));margin:0 auto}.largetitle{align-items:baseline;gap:10px;display:flex}h1{letter-spacing:-.022em;margin:8px 0 4px;font-size:34px;font-weight:700}.count{color:var(--muted)}.sub{color:var(--muted);margin:0 0 18px;font-size:15px}.new-btn{background:var(--accent-fill);width:100%;color:var(--on-accent);cursor:pointer;border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;margin-bottom:20px;padding:13px;font-size:17px;font-weight:600;display:flex}.group{background:var(--surface);border-radius:12px;overflow:hidden}.row-item{align-items:center;gap:2px;padding-right:8px;display:flex;position:relative}.row-item+.row-item:before{content:"";background:var(--sep);height:.5px;position:absolute;top:0;left:16px;right:0}.row-main{min-width:0;color:var(--fg);flex-direction:column;flex:1;gap:2px;padding:12px 16px;text-decoration:none;display:flex}.row-title{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.row-sub{color:var(--muted);font-size:14px}.foot{color:var(--muted);text-align:center;margin:28px 16px 0;font-size:13px}.editor{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.bar{border-bottom:.5px solid var(--sep);background:var(--bg);scrollbar-width:none;flex:none;align-items:center;gap:8px;padding:8px 16px;display:flex;overflow-x:auto}.bar::-webkit-scrollbar{display:none}.tabs{flex:1;gap:6px;min-width:0;display:flex}.tab{background:var(--surface);cursor:pointer;white-space:nowrap;border:0;border-radius:999px;align-items:center;gap:4px;padding:6px 14px;font-size:14px;font-weight:500;display:flex}.tab.on{background:var(--fg);color:var(--bg)}.tab.add{color:var(--accent);box-shadow:inset 0 0 0 1px var(--sep);background:0 0}.tab.add svg{width:16px;height:16px}.toggle{color:var(--muted);white-space:nowrap;cursor:pointer;align-items:center;gap:6px;font-size:14px;display:flex}.tools{background:var(--surface)}.page-name{background:var(--fill);border:0;border-radius:8px;flex:none;width:140px;padding:6px 10px;font-size:14px}.room-size{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:14px;display:flex}.feet{background:var(--fill);text-align:center;border:0;border-radius:8px;width:64px;padding:6px 8px;font-size:14px}.spacer{flex:1}.work{flex:1;grid-template-columns:1fr 320px;min-height:0;display:grid}.plan-wrap{min-width:0;min-height:0;position:relative}.plan{background:var(--surface-2);touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.stage{transform-origin:0 0;background:#fff;position:absolute;top:0;left:0;box-shadow:0 2px 12px #0000001f}.stage img{pointer-events:none;width:100%;height:100%;display:block}.stage.grid{background-color:#fff;background-image:linear-gradient(90deg,#00000029 1.5px,#0000 1.5px),linear-gradient(#00000029 1.5px,#0000 1.5px),linear-gradient(90deg,#0000000f 1px,#0000 1px),linear-gradient(#0000000f 1px,#0000 1px);box-shadow:0 0 0 8px #3a3a3c,0 4px 24px #0003}.roomdim{color:var(--muted);pointer-events:none;white-space:nowrap;font-size:13px;font-weight:600;position:absolute;transform:translate(-50%,-50%)}.roomdim.top{transform:translate(-50%,-100%)}.roomdim.side{transform:translate(-50%,-50%)rotate(-90deg)}.dims{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.dim line{stroke:#e5261c;stroke-width:2px}.dim line.hit{stroke:#0000;stroke-width:16px;pointer-events:stroke;cursor:pointer}.dim.sel line:not(.hit){stroke:var(--accent-fill);stroke-width:3px}.dim.scale line:not(.hit){stroke:var(--accent-fill);stroke-dasharray:6 4}.dimlabel{color:#c9001a;white-space:nowrap;cursor:pointer;font-variant-numeric:tabular-nums;background:#fff;border:1.5px solid #e5261c;border-radius:6px;padding:2px 6px;font-size:12px;font-weight:700;position:absolute;transform:translate(-50%,-50%)}.dimlabel.sel{border-color:var(--accent-fill);color:#006fae}.is-view .dimlabel{cursor:inherit}.pin{touch-action:none;position:absolute;transform:translate(-50%,-50%)}.pin.movable{cursor:move}.dot{background:var(--c);min-width:30px;height:30px;color:var(--ink);letter-spacing:.02em;border:2.5px solid #fff;border-radius:15px;place-items:center;padding:0 6px;font-size:11px;font-weight:800;display:grid;box-shadow:0 1px 5px #0006}.tag{white-space:nowrap;color:#fff;pointer-events:none;background:#1c1c1ee0;border-radius:6px;padding:3px 7px;font-size:12px;font-weight:500;position:absolute;top:calc(100% + 3px);left:50%;transform:translate(-50%)}.pin.sel .dot{box-shadow:0 0 0 3px var(--accent-fill),0 1px 6px #0006}.pin.sel{z-index:2}.zoom{background:var(--surface);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;display:flex;position:absolute;bottom:12px;right:12px;overflow:hidden}.zoom button{width:40px;height:40px;color:var(--fg);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.zoom button+button{border-top:.5px solid var(--sep)}.hint{background:var(--toast-bg);color:var(--toast-fg);pointer-events:none;white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:calc(100% - 24px);padding:8px 14px;font-size:14px;position:absolute;top:12px;left:50%;overflow:hidden;transform:translate(-50%)}.hint.soft{background:var(--surface);color:var(--muted);box-shadow:0 1px 6px #0000001f}.card{background:var(--surface);box-shadow:var(--shadow);border-radius:14px}.selcard{z-index:5;flex-direction:column;gap:10px;width:min(360px,100% - 76px);padding:12px;display:flex;position:absolute;bottom:12px;left:12px}.selcard input{background:var(--fill);border:0;border-radius:9px;outline:none;padding:9px 11px;font-size:16px}.selcard .types{flex-wrap:wrap;gap:6px;display:flex}.selcard .row{align-items:center;gap:8px;display:flex}.selcard .row .muted{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;overflow:hidden}.selcard.small .row span{flex:1;font-size:14px}.sw{background:var(--c);min-width:34px;height:26px;color:var(--ink);cursor:pointer;border:0;border-radius:13px;flex:none;place-items:center;padding:0 6px;font-size:11px;font-weight:800;display:grid;position:relative}button.sw.on{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--accent-fill)}.legend{border-left:.5px solid var(--sep);background:var(--bg);padding:14px 12px 24px;overflow-y:auto}.lg-head{align-items:center;gap:8px;margin:0 4px 10px;display:flex}.lg-head h2{margin:0;font-size:20px;font-weight:700}.lg-total{color:var(--muted);flex:1;font-size:13px}.lg-list{background:var(--surface);border-radius:12px;overflow:hidden}.lg-row{align-items:center;gap:4px;padding-right:6px;display:flex;position:relative}.lg-row+.lg-row:before{content:"";background:var(--sep);height:.5px;position:absolute;top:0;left:56px;right:0}.lg-main{text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:10px;min-width:0;padding:10px 4px 10px 12px;font-size:15px;display:flex}.lg-main .lg-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.lg-n{color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.lg-row.placing{background:var(--accent-soft)}.lg-row.placing .lg-main{font-weight:600}.lg-row.off .lg-main{opacity:.4}.lg-row.edit{gap:6px;padding:8px 4px 8px 12px}.lg-row.edit .sw input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.lg-code,.lg-row.edit .lg-name{background:var(--fill);border:0;border-radius:8px;outline:none;min-width:0;padding:6px 8px;font-size:15px}.lg-code{text-transform:uppercase;width:52px;font-weight:600}.lg-row.edit .lg-name{flex:1}.lg-add{color:var(--accent);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:12px 4px;font-size:15px;display:flex}.lg-add svg{width:18px;height:18px}.lg-hint,.lg-empty{color:var(--muted);margin:10px 4px;font-size:13px;line-height:1.4}.scrim{z-index:50;background:#00000059;place-items:end center;display:grid;position:fixed;inset:0}@media (width>=700px){.scrim{place-items:center}}.sheet{background:var(--bg);width:min(440px,100%);padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px));border-radius:16px 16px 0 0;flex-direction:column;gap:10px;display:flex}@media (width>=700px){.sheet{border-radius:16px}}.sheet h3{margin:0 0 4px;font-size:20px}.sheet-sec{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:8px;font-size:13px}.field{color:var(--muted);flex-direction:column;flex:1;gap:4px;font-size:13px;display:flex}.field input,.field select{background:var(--surface);color:var(--fg);font-size:16px;font-family:var(--font);border:0;border-radius:10px;padding:10px 12px}.sheet-note{color:var(--muted);margin:-4px 2px 0;font-size:13px;line-height:1.4}.field-row{gap:10px;display:flex}.btn{background:var(--surface);color:var(--accent);cursor:pointer;border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:12px;font-size:16px;font-weight:600;display:flex}.btn.primary{background:var(--accent-fill);color:var(--on-accent)}.btn:disabled{opacity:.5;cursor:default}.btn.plain{background:0 0;font-weight:400}@media (width<=820px){.work{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr}.legend{border-left:0;border-top:.5px solid var(--sep);max-height:38dvh}.hide-sm{display:none}.nav-in{padding-left:10px;padding-right:10px}.back span{display:none}}.print{display:none}.objs{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.objs.live .obj{pointer-events:all;cursor:move}.obj rect{fill:currentColor;fill-opacity:.22;stroke:currentColor;stroke-width:2px;vector-effect:non-scaling-stroke}.obj.sel rect{stroke:var(--accent-fill);stroke-width:3px;fill-opacity:.3}.obj text{text-anchor:middle;fill:#1c1c1e;font-family:var(--font);paint-order:stroke;stroke:#ffffffd9;stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none;font-weight:600}.obj text.obj-size{fill:#3a3a3c;font-weight:400}.side-tabs{margin:0 0 14px;display:flex}.side-tabs button{flex:1;justify-content:center}.ob-group{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin:14px 4px 6px;font-size:13px;font-weight:600}.ob-sw{background:var(--c);opacity:.75;border-radius:4px;flex:none;width:22px;height:16px}.lg-main:disabled{opacity:.4;cursor:default}.objsw{border-radius:9px;min-width:34px;height:34px}.objsw input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.selcard .grow{flex:1;min-width:0}.selcard .muted-l{color:var(--muted);font-size:14px}.selcard .spacer{flex:1}.selcard .feet{flex:none}.cov{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.cov-far{fill:currentColor;fill-opacity:.07;stroke:currentColor;stroke-opacity:.55;stroke-width:1.5px;stroke-dasharray:6 5;vector-effect:non-scaling-stroke}.cov-near{fill:currentColor;fill-opacity:.16;stroke:currentColor;stroke-opacity:.7;stroke-width:1.5px;vector-effect:non-scaling-stroke}.cov-cam{fill:currentColor;fill-opacity:.16;stroke:currentColor;stroke-opacity:.7;stroke-width:1.5px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.aim-line{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.aim-line line{stroke:var(--accent-fill);stroke-width:2px}.aim{border:3px solid var(--accent-fill);cursor:grab;z-index:3;touch-action:none;background:#fff;border-radius:50%;width:22px;height:22px;margin:-11px 0 0 -11px;position:absolute;box-shadow:0 1px 5px #00000059}.aim:after{content:"";border-radius:50%;position:absolute;inset:-12px}.icon-pick{background:var(--fill);width:32px;height:26px;color:var(--fg);cursor:pointer;border:0;border-radius:8px;flex:none;place-items:center;font-size:12px;font-weight:700;display:grid}.icon-pick.on{background:var(--accent-soft);color:var(--accent)}.icon-grid{flex-wrap:wrap;gap:6px;padding:0 8px 10px 54px;display:flex}.icon-grid button{background:var(--c);width:32px;height:32px;color:var(--ink);cursor:pointer;border:2px solid #0000;border-radius:50%;place-items:center;padding:0;font-size:10px;font-weight:800;display:grid}.icon-grid button.on{box-shadow:0 0 0 2px var(--accent-fill)}.lg-edit+.lg-edit{border-top:.5px solid var(--sep)}.lg-cov{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;padding:0 6px 10px 54px;font-size:13px;display:flex}.lg-cov select{background:var(--fill);color:var(--fg);font-size:13px;font-family:var(--font);border:0;border-radius:8px;max-width:100%;padding:5px 6px}.lg-cov-note{color:var(--muted);flex-basis:100%;font-size:12px}.prod-filter{gap:6px;margin:0 0 8px;display:flex}.prod-filter input,.prod-filter select{background:var(--surface);color:var(--fg);font-size:14px;font-family:var(--font);border:0;border-radius:9px;min-width:0;padding:8px 10px}.prod-filter input{flex:1}.prod-filter select{width:42%}.lg-main.prod .lg-name{white-space:normal;flex-direction:column;display:flex}.lg-main.prod .lg-name small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.lg-main.prod .lg-n{white-space:nowrap;font-size:12px}.lg-cov-f{white-space:nowrap;align-items:center;gap:4px;display:flex}.lg-num{background:var(--fill);text-align:center;border:0;border-radius:8px;outline:none;width:56px;padding:5px 6px;font-size:13px}.pp-note{color:#666;width:200px;margin:6px 4px 0;font-size:9px;line-height:1.35}@media print{@page{size:landscape;margin:12mm}body{color:#000;background:#fff}.editor{height:auto;display:block;overflow:visible}.editor>:not(.print){display:none!important}.print{display:block}.pp{break-after:page;page-break-after:always}.pp:last-child{break-after:auto}.pp header{border-bottom:1px solid #ccc;justify-content:space-between;align-items:flex-end;margin-bottom:10px;padding-bottom:6px;display:flex}.pp h1{margin:0;font-size:20px}.pp h2{color:#555;margin:2px 0 0;font-size:14px;font-weight:500}.pp-brand{text-align:right;font-size:12px;font-weight:600}.pp-brand span{color:#666;font-weight:400}.pp-body{align-items:flex-start;gap:14px;display:flex}.pp-fit{flex:1;min-width:0}.pp-stage{-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1px solid #ccc;position:relative}.pp-stage.grid{background:#fff;border:3px solid #333}.pp-stage img{width:100%;height:100%;display:block}.pp-stage svg{width:100%;height:100%;position:absolute;inset:0}.pp-stage svg line{stroke:#e5261c;stroke-width:2px;vector-effect:non-scaling-stroke}.pp-stage .dot{border-width:1.5px;min-width:20px;height:20px;font-size:8px}.pp-stage .tag{padding:1px 4px;font-size:8px}.pp-stage .dimlabel{padding:0 3px;font-size:8px}.pp-key{border-collapse:collapse;-webkit-print-color-adjust:exact;print-color-adjust:exact;width:200px;font-size:11px}.pp-key th{text-align:left;border-bottom:1px solid #999;padding:4px}.pp-key td{border-bottom:.5px solid #ddd;padding:3px 4px}.pp-key td:last-child,.pp-key th:last-child{text-align:right}.pp-key .sw{min-width:28px;height:18px;font-size:8px}}
