:root{--bg:#eceff3;--panel:#fff;--ink:#1d2733;--muted:#6b7684;--line:#d9dee5;--accent:#1f6feb;--accent-soft:#e6efff;--select:var(--accent);--row:52px;--bar:76px;--top:38px;--shadow:0 6px 24px #141e2d29;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body,.ui,.ui *,.measure-layer{touch-action:manipulation}#app{position:fixed;inset:0}#view{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;height:100%;display:block;position:absolute;inset:0}.ui{pointer-events:none;position:absolute;inset:0}.ui>*{pointer-events:auto}.title{top:12px;left:calc(12px + var(--top) + 8px + var(--top) + 10px);max-width:calc(100% - 140px);height:var(--top);box-shadow:none;color:var(--ink);text-align:left;cursor:default;pointer-events:none;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:flex-start;gap:1px;padding:0;font-size:15px;font-weight:600;display:flex;position:absolute}.title-name{align-items:center;gap:4px;display:inline-flex}.title-name svg{color:var(--muted)}.title-status{color:var(--accent);font-size:13px;font-weight:500}.title-status:empty{display:none}.gear{width:var(--top);height:var(--top);border:1px solid var(--line);color:var(--muted);box-shadow:var(--shadow);cursor:pointer;-webkit-tap-highlight-color:transparent;background:#fffffff2;border-radius:999px;justify-content:center;align-items:center;display:flex;position:absolute;top:12px;left:12px}.hover-tip{z-index:2000;border:1px solid color-mix(in srgb, #ffc233 60%, var(--line));max-width:260px;color:var(--ink);pointer-events:none;background:#fff;border-radius:9px;padding:7px 11px;font-size:12px;line-height:1.45;animation:.25s ease-out hover-tip-in;position:fixed;top:0;left:0;box-shadow:0 8px 22px #0000002e}.hover-tip-mark{color:#a87400;margin-right:6px}@keyframes hover-tip-in{0%{opacity:0}to{opacity:1}}.view-dirs{top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));border:1px solid var(--line);box-shadow:var(--shadow);background:#fffffff2;border-radius:14px;flex-direction:column;gap:2px;padding:4px;display:flex;position:absolute}.view-dirs[hidden]{display:none}.view-dir{min-width:56px;height:30px;color:var(--ink);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:10px;padding:0 10px;font-size:13px}.view-dir:hover{background:var(--accent-soft);color:var(--accent)}.view-dir:active{background:var(--accent-soft)}.ui:not(.desk) .view-dir{height:38px;font-size:14px}.gear.active{color:var(--accent);background:var(--accent-soft)}:is(.ui:not(.desk):has(.panel:not([hidden])) .title,.ui:not(.desk):has(.panel:not([hidden])) .gear,.ui:not(.desk):has(.panel:not([hidden])) .back){display:none}.back{left:calc(12px + var(--top) + 8px)}.back svg{stroke-width:2.6px;width:22px;height:22px}.back:active{color:var(--accent);background:var(--accent-soft)}.ui.framed .title{left:calc(12px + var(--top) + 10px)}.pref{padding:14px 16px 6px}.pref-head{justify-content:space-between;margin-bottom:8px;font-size:16px;font-weight:600;display:flex}.pref-value{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:400}.pref input[type=range]{width:100%;height:32px;accent-color:var(--accent);touch-action:pan-y;margin:0}.pref-scale{color:var(--muted);justify-content:space-between;margin-top:-2px;font-size:12px;display:flex}.pref-hint{color:var(--muted);margin-top:8px;font-size:13px;line-height:1.35}.pref-foot{padding:4px 16px 16px}.row.pref-reset{border:1px solid var(--line);background:var(--panel);width:calc(100% - 32px);min-height:48px;color:var(--accent);border-radius:999px;justify-content:center;margin:10px 16px 0;font-weight:600}button.pref-reset:active{background:var(--accent-soft)}.pref-section{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:18px 16px 2px;font-size:12px;font-weight:700}.pref-section:not(:first-child){border-top:1px solid var(--line);margin-top:8px}.seg{border:1px solid var(--line);border-radius:999px;display:flex;overflow:hidden}.seg-btn{min-height:40px;color:var(--ink);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex:1;font-size:15px;font-weight:600}.seg-btn+.seg-btn{border-left:1px solid var(--line)}.seg-btn.on{background:var(--accent);color:#fff}.toolbar{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));border:1px solid var(--line);height:64px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);background:#fffffff2;border-radius:999px;gap:2px;padding:5px;display:flex;position:absolute;translate:-50%}.tool{width:88px;height:54px;color:var(--ink);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;flex-direction:column;flex:none;justify-content:center;align-items:center;gap:1px;display:flex}.tool-icon{justify-content:center;align-items:center;height:24px;display:flex}.tool-label{font-size:12px}.tool.active{color:var(--accent);background:var(--accent-soft)}.desk{--bar:58px}.desk .toolbar{height:46px;translate:calc(var(--main-w,100%) / -2) 0;max-width:calc(50% + var(--main-w,0px) / 2 - 12px);align-items:center;padding:4px}.desk .tool{flex-direction:row;gap:6px;width:auto;height:38px;padding:0 13px}.desk .tool-icon{height:18px}.desk .tool-icon svg{width:18px;height:18px}.desk .tool-label{font-size:13px;font-weight:500}.desk .toolbar .measure-bar{border:0;border-left:1px solid var(--line);min-width:0;max-width:none;height:38px;box-shadow:none;background:0 0;border-radius:0;flex:0 auto;gap:6px;margin-left:4px;padding:0 2px 0 10px;position:static;translate:none}.desk .axis-group{gap:4px}.desk .axis-btn{border-width:1.5px;gap:4px;min-width:0;height:30px;padding:0 9px;font-size:13px}.desk .axis-key{font-size:11px}.desk .bar-btn{height:30px;padding:0 11px;font-size:13px}.desk .bar-btn svg{vertical-align:-3px;width:15px;height:15px;margin-right:4px}.desk .measure-spacer{flex:0 0 2px}.desk .measure-hint{bottom:calc(var(--bar) + 10px + env(safe-area-inset-bottom));padding:5px 11px;font-size:12px}.desk.mbar-stacked .measure-bar{height:46px;bottom:calc(var(--bar) + 8px + env(safe-area-inset-bottom));gap:4px;max-width:calc(100% - 24px);padding:0 6px}.desk.mbar-stacked .measure-bar .bar-btn{padding:0 8px}.desk.mbar-stacked .measure-bar .axis-btn{padding:0 6px}.desk.mbar-stacked .measure-bar .axis-group{gap:3px}.desk.mbar-stacked .measure-bar .seg-btn{padding-left:10px;padding-right:10px}.desk.mbar-stacked .measure-hint{bottom:calc(var(--bar) + 8px + 46px + 10px + env(safe-area-inset-bottom))}.panel[hidden]{display:none}.panel{top:12px;left:12px;bottom:calc(var(--bar) + 12px + env(safe-area-inset-bottom));width:var(--panel-w,340px);background:var(--panel);border:1px solid var(--line);max-width:calc(100% - 24px);box-shadow:var(--shadow);border-radius:18px;flex-direction:column;display:flex;position:absolute;overflow:hidden}@media (max-width:700px){.panel:not(.dock-bottom):not(.force-side){width:auto;height:55%;top:auto;right:12px}}.panel-head{height:var(--row);border-bottom:1px solid var(--line);touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;align-items:center;gap:2px;padding:0 6px 0 16px;font-size:17px;font-weight:600;display:flex}.panel-title{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.panel-btn{width:44px;height:44px;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;display:flex}.panel-btn:active{background:var(--accent-soft);color:var(--accent)}.panel-body{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-gutter:stable;scrollbar-color:#9aa3ad transparent;flex:1;padding:6px 0;overflow-y:auto}.panel-body::-webkit-scrollbar{width:10px}.panel-body::-webkit-scrollbar-track{background:0 0}.panel-body::-webkit-scrollbar-thumb{border:2px solid var(--panel);background:#9aa3ad;border-radius:5px}.row{width:100%;min-height:var(--row);color:var(--ink);font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-items:center;gap:10px;padding:0 12px;font-size:16px;display:flex}button.row:active,label.row:active{background:var(--accent-soft)}.row-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.row-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.row-name.dim{color:var(--muted)}.row-count{color:var(--muted);font-size:13px}.row-folder{font-weight:600}.row input[type=checkbox]{width:24px;height:24px;accent-color:var(--accent);flex:none;margin:0}.disc{width:44px;height:48px;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:none;margin-left:-8px;font-size:22px}.empty{color:var(--muted);padding:24px 16px}.measure-layer{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:absolute;inset:0;overflow:hidden}.measure-layer>*{will-change:transform;position:absolute;top:0;left:0}.measure-layer [hidden]{display:none!important}.m-svg{width:100%;height:100%;overflow:visible}.m-line .m-halo{stroke:#fff;stroke-width:6px;stroke-linecap:round;opacity:.85}.m-line .m-core{stroke:var(--ink);stroke-width:2.5px;stroke-linecap:round}.m-line.selected .m-core{stroke:var(--select)}.m-line .m-witness{stroke:var(--ink);stroke-width:1.5px}.m-line .m-whalo{stroke:#fff;stroke-width:5px;stroke-linecap:round;opacity:.85}.m-line .m-tick{stroke:var(--ink);stroke-width:2.5px;stroke-linecap:round}.m-line .m-thalo{stroke:#fff;stroke-width:6px;stroke-linecap:round;opacity:.85}.m-line.selected .m-witness,.m-line.selected .m-tick{stroke:var(--select)}.m-rubber{stroke:var(--ink);stroke-width:2px;stroke-dasharray:6 4;opacity:.85}.m-line .m-ref{stroke:var(--muted);stroke-width:1.25px;stroke-dasharray:4 3}.m-line.selected .m-ref{stroke:var(--select)}.m-ref-dot{--snap:var(--muted);background:var(--snap);pointer-events:none;border:2px solid #fff;border-radius:50%;width:10px;height:10px;margin:-5px 0 0 -5px;box-shadow:0 0 0 1px #0000004d}.measure-layer.hide-measurements .m-ref-dot{display:none}.m-handle-pending{border-color:var(--snap,var(--ink));color:var(--snap,var(--ink))}.m-leader{stroke:var(--muted);stroke-width:1.5px;stroke-dasharray:4 3}.m-handle{border:2px solid var(--ink);pointer-events:auto;touch-action:none;cursor:grab;background:0 0;border-radius:50%;width:36px;height:36px;margin:-18px 0 0 -18px;box-shadow:0 0 0 1px #fffc,inset 0 0 0 1px #fffc}.m-handle:after{content:"";background:var(--ink);border-radius:50%;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute;top:50%;left:50%}.m-handle{border-color:var(--snap,var(--ink))}.m-handle:after{background:var(--snap,var(--ink))}.m-handle.dragging{opacity:0;cursor:grabbing}.m-tip{--snap:var(--muted);transform-origin:0 0;background:var(--snap);color:#fff;white-space:nowrap;pointer-events:none;border-radius:6px;padding:2px 7px;font-size:11px;font-weight:600;box-shadow:0 1px 3px #0003}.m-handle.passive{background:var(--snap,var(--ink));pointer-events:none;border-color:#fff;width:12px;height:12px;margin:-6px 0 0 -6px;box-shadow:0 0 0 1px #00000059}.m-handle.passive:after{display:none}.m-handle-pending{color:var(--ink);text-shadow:0 0 2px #fff,0 0 2px #fff;border-style:dashed;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.m-handle-pending:after{display:none}.m-label{transform-origin:50%;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:auto;touch-action:none;cursor:grab;background:#fff;border-radius:8px;margin-left:-1px;padding:6px 10px;font-size:15px;font-weight:700;box-shadow:0 1px 6px #0000002e}.m-label.selected{background:var(--select);color:#fff}.m-lock{margin-right:4px;line-height:0;display:none}.m-label.saved .m-lock{display:inline-flex}.m-label{align-items:center;display:inline-flex}.measure-layer.hide-measurements .m-line,.measure-layer.hide-measurements .m-label,.measure-layer.hide-measurements .m-handle:not(.m-handle-pending){display:none}.row-measurements{border-bottom:1px solid var(--line);background:var(--accent-soft);margin-bottom:4px;font-weight:600;padding-left:16px!important}.bar-on{background:var(--accent-soft);border-color:var(--accent)}.snap-marker{--snap:var(--accent);pointer-events:none}.snap-name:empty{display:none}.snap-source{--snap:var(--accent);pointer-events:none}.snap-source .snap-dot{width:12px;height:12px;margin:-6px 0 0 -6px}.snap-source .snap-name{opacity:.9;padding:3px 7px;font-size:12px;top:12px}.snap-dot{background:var(--snap);border:2px solid #fff;border-radius:50%;width:16px;height:16px;margin:-8px 0 0 -8px;position:absolute;box-shadow:0 0 0 1px #00000040}.snap-name{background:var(--snap);color:#fff;white-space:nowrap;border-radius:6px;padding:4px 8px;font-size:13px;font-weight:600;position:absolute;top:-34px;left:0;translate:-50%}.measure-bar{left:50%;bottom:calc(var(--bar) + 8px + env(safe-area-inset-bottom));border:1px solid var(--line);max-width:calc(100% - 24px);height:56px;box-shadow:var(--shadow);scrollbar-width:none;background:#fffffff2;border-radius:999px;align-items:center;gap:8px;padding:0 8px;display:flex;position:absolute;overflow:auto hidden;translate:-50%}.measure-bar::-webkit-scrollbar{display:none}.measure-bar>*{flex:none}.measure-spacer{flex:0 0 4px}.measure-hint{left:50%;bottom:calc(var(--bar) + 8px + 56px + 10px + env(safe-area-inset-bottom));color:#fff;white-space:nowrap;pointer-events:none;background:#1d2733c7;border-radius:999px;padding:6px 12px;font-size:13px;position:absolute;translate:-50%}.axis-group{gap:6px;display:flex}.axis-btn{--axis:var(--ink);border:2px solid var(--axis);min-width:46px;height:42px;color:var(--axis);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#fff;border-radius:999px;font-size:16px;font-weight:700}.axis-btn.on{background:var(--axis);color:#fff}.axis-btn{justify-content:center;align-items:center;gap:5px;padding:0 10px;display:inline-flex}.axis-key{opacity:.75;font-size:13px;font-weight:400}.mode-group{border:1px solid var(--line);background:#fff;border-radius:999px;flex:none;display:flex;overflow:hidden}.mode-btn{height:42px;color:var(--ink);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0 14px;font-size:15px}.mode-btn+.mode-btn{border-left:1px solid var(--line)}.mode-btn.on{background:var(--select);color:#fff}.desk .mode-btn{height:30px;padding:0 10px;font-size:13px}.tape-zero{border:2px solid var(--ink);width:30px;height:30px;color:var(--ink);pointer-events:none;background:#fff;border-radius:50%;justify-content:center;align-items:center;margin:-15px 0 0 -15px;font-size:14px;font-weight:700;display:flex}.m-svg .tape-line{stroke-width:3px;stroke-linecap:round;opacity:.9}.m-svg .tape-tick{stroke:var(--ink);stroke-width:1.25px;stroke-dasharray:4 3;opacity:.8}.m-svg .tape-ext{stroke:var(--ink);stroke-width:1.5px}.m-svg .tape-ext.picked{stroke:var(--select)}.tape-dot{pointer-events:none;background:0 0;border-radius:50%;width:18px;height:18px;margin:-9px 0 0 -9px}.m-svg .tape-cross{stroke:var(--ink);stroke-width:1.5px;stroke-linecap:round}.m-svg .tape-cross.picked{stroke:var(--select);stroke-width:2px}.m-svg .tape-x{stroke:var(--ink);stroke-width:1.2px;stroke-linecap:round}.m-svg .tape-x.picked{stroke:var(--select)}.tape-end{background:var(--muted);pointer-events:none;border:1.5px solid #fff;border-radius:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px}.tape-end.picked{background:var(--select)}.tape-label{transform-origin:50% 100%;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;background:#fff;border-radius:7px;padding:4px 8px;font-size:14px;font-weight:700;box-shadow:0 1px 6px #0000002e}.snap-marker.off-axis .snap-name{color:#fff;background:#8a94a0}.tape-zero,.tape-dot,.tape-label{pointer-events:auto;cursor:grab;touch-action:none}.tape-zero.picked,.tape-label.picked{background:var(--select);color:#fff;border-color:var(--select)}.m-svg .tape-line.picked{stroke-width:5px}.m-svg .tape-core{stroke:var(--ink);stroke-width:1px;stroke-linecap:round;pointer-events:none}.area-label{color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;background:#fff;border-radius:8px;align-items:center;gap:8px;padding:5px 10px;font-size:15px;font-weight:700;display:flex;box-shadow:0 1px 6px #0000002e}.area-label.area-lit{background:#e6efff}.area-add{pointer-events:auto;background:var(--select);color:#fff;height:34px;font:inherit;cursor:pointer;border:0;border-radius:999px;padding:0 12px;font-size:14px;font-weight:600}.measure-layer.hide-measurements .tape-zero,.measure-layer.hide-measurements .tape-dot,.measure-layer.hide-measurements .tape-end,.measure-layer.hide-measurements .tape-label,.measure-layer.hide-measurements .area-label{display:none}.snap-marker.aiming .snap-dot{border:2px solid var(--snap);background:0 0;width:30px;height:30px;margin:-15px 0 0 -15px;box-shadow:0 0 0 1px #ffffffe6,inset 0 0 0 1px #ffffffe6}.snap-marker.aiming .snap-dot:after{content:"";background:var(--snap);border-radius:50%;width:3px;height:3px;margin:-1.5px 0 0 -1.5px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 1px #fff}.snap-marker.aiming .snap-dot:before{content:"";border-top:2px solid var(--snap);width:44px;height:0;margin-top:-1px;position:absolute;top:50%;left:-9px;-webkit-mask:linear-gradient(90deg,#000 0 7px,#0000 7px 37px,#000 37px);mask:linear-gradient(90deg,#000 0 7px,#0000 7px 37px,#000 37px)}.snap-marker.aiming .snap-name{padding:6px 10px;font-size:15px;top:-44px}.measure-layer.mouse .snap-marker:not(.aiming) .snap-dot,.measure-layer.mouse .m-handle:not(.passive):not(.m-handle-pending){width:22px;height:22px;box-shadow:none;background:linear-gradient(var(--snap), var(--snap)) center / 100% 1.5px no-repeat, linear-gradient(var(--snap), var(--snap)) center / 1.5px 100% no-repeat;filter:drop-shadow(0 0 .75px #fffffff2);border:0;margin:-11px 0 0 -11px}.measure-layer.mouse .snap-marker:not(.aiming) .snap-dot:before{display:none}.measure-layer.mouse .snap-marker:not(.aiming) .snap-dot:after,.measure-layer.mouse .m-handle:not(.passive):not(.m-handle-pending):after{content:"";box-sizing:border-box;border:1.5px solid var(--snap,var(--ink));width:9px;height:9px;box-shadow:none;background:0 0;border-radius:50%;margin:-4.5px 0 0 -4.5px;position:absolute;top:50%;left:50%}.measure-layer.mouse .snap-marker:not(.aiming) .snap-name{padding:3px 7px;font-size:12px;top:-30px;left:16px;translate:0}.measure-layer.mouse .snap-source .snap-dot{border:1.5px solid var(--snap);width:8px;height:8px;box-shadow:none;background:0 0;margin:-4px 0 0 -4px}.measure-layer.mouse .m-handle.passive{width:7px;height:7px;box-shadow:none;filter:drop-shadow(0 0 .75px #fffffff2);border:0;margin:-3.5px 0 0 -3.5px}.measure-layer.mouse .m-handle-pending{width:24px;height:24px;box-shadow:none;border-width:1.5px;margin:-12px 0 0 -12px;font-size:11px}.bar-btn{border:1px solid var(--line);height:42px;color:var(--accent);font:inherit;cursor:pointer;white-space:nowrap;background:#fff;border-radius:999px;padding:0 14px;font-size:15px;font-weight:600}.bar-danger{color:#c0262a}.bar-btn:disabled{color:var(--muted);opacity:.5;cursor:default}.bar-done{background:var(--accent);border-color:var(--accent);color:#fff}.overlay{text-align:center;background:#fffffff2;border-radius:12px;max-width:80%;padding:14px 20px;font-size:16px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.start{flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex;position:absolute;inset:0}.start h1{margin:0 0 12px;font-size:26px}.start-btn{border:1px solid var(--line);background:var(--panel);width:min(360px,100%);min-height:56px;color:var(--ink);font:inherit;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;font-size:17px;display:flex}.start-file{color:var(--accent)}.start-file input{display:none}.panel-resize{width:18px;height:72px;color:var(--line);cursor:ew-resize;touch-action:none;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;right:0;translate:0 -50%}.panel-resize:active{color:var(--accent)}.panel.dock-bottom .panel-resize,.panel.force-side.dock-bottom .panel-resize{display:none}.panel.dock-bottom:not(.force-side){width:auto;max-width:none;height:108px;top:auto;left:12px;right:12px;bottom:calc(var(--bar) + 12px + env(safe-area-inset-bottom))}.panel.dock-bottom:not(.force-side) .panel-head{height:40px;font-size:15px}.panel.dock-bottom:not(.force-side) .panel-body{touch-action:pan-x;scrollbar-width:none;flex-direction:row;align-items:center;gap:8px;padding:8px 12px;scroll-padding-left:12px;display:flex;overflow:auto hidden}.panel.dock-bottom:not(.force-side) .panel-body::-webkit-scrollbar{display:none}.panel.dock-bottom:not(.force-side) .empty{white-space:nowrap;padding:0}.chip{border:1px solid var(--line);height:44px;color:var(--ink);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap;background:#fff;border-radius:999px;flex:none;align-items:center;gap:8px;padding:0 14px;font-size:15px;display:inline-flex}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.chip input[type=checkbox]{width:22px;height:22px;accent-color:var(--accent);margin:0}.chip.active input[type=checkbox]{accent-color:#fff}.chip-count{color:var(--muted);font-size:12px}.chip.active .chip-count{color:#ffffffd9}.chip-folder{padding-right:4px;font-weight:600}.chip-more{width:36px;height:36px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;display:flex}.chip-measurements{background:var(--accent-soft);border-color:#0000;font-weight:600}.chip-name.dim{color:var(--muted)}.tag-pop{bottom:calc(var(--bar) + 12px + 108px + 8px + env(safe-area-inset-bottom));background:var(--panel);border:1px solid var(--line);max-height:50vh;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;display:flex;position:absolute;overflow:hidden}.tag-pop-head{border-bottom:1px solid var(--line);padding:10px 16px;font-weight:600}.tag-pop-body{touch-action:pan-y;padding:4px 0;overflow-y:auto}.tour{top:calc(12px + env(safe-area-inset-top));border:1px solid var(--line);width:min(440px,100% - 136px);box-shadow:var(--shadow);z-index:5;background:#fffffff7;border-radius:14px;padding:12px 16px 14px;position:absolute;left:50%;transform:translate(-50%)}.tour-row{align-items:center;gap:8px;min-height:28px;display:flex}.tour-count{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex:1;font-size:12px;font-weight:700}.tour-btn{border:1px solid var(--line);min-height:32px;color:var(--muted);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:999px;padding:0 14px;font-size:14px;font-weight:600}.tour-done{background:var(--accent);border-color:var(--accent);color:#fff;margin-left:auto}.tour-text{color:var(--ink);margin-top:4px;font-size:19px;font-weight:600;line-height:1.3}.tour-tip{color:var(--muted);margin-top:6px;padding-right:36px;font-size:14px;line-height:1.35}.tour-tick{background:var(--accent);color:#fff;opacity:0;border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;font-size:18px;font-weight:700;transition:opacity .15s,scale .2s;display:flex;position:absolute;bottom:10px;right:14px;scale:.6}.tour-tick.show{opacity:1;scale:1}@media (max-width:600px){.tour{top:calc(66px + env(safe-area-inset-top));width:calc(100% - 24px)}}:root{--bg:#eef3ee;--ink:#1f2a1f;--muted:#6d7d6d;--line:#d3dcd3;--accent:#2e7d32;--accent-soft:#e4f0e4;--select:#1f6feb;--shadow:inset 0 1px 0 #ffffffe6, 0 0 0 1px #2e7d3224, 0 6px 24px #1e321e24}.tour-extra{margin-top:10px}.invite{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.tour-go{background:var(--accent);border-color:var(--accent);color:#fff;min-height:40px;padding:0 18px;font-size:15px}.invite-hint{color:var(--muted);padding-right:36px;font-size:14px;line-height:1.35}.invite-settings{display:block}.start-sub{color:var(--muted);margin:-6px 0 16px;font-size:15px}.start-list{flex-direction:column;gap:10px;width:min(420px,100%);margin-bottom:18px;display:flex}.start-row{align-items:stretch;gap:8px;display:flex}.start-open{border:1px solid var(--line);background:var(--panel);min-height:60px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;box-shadow:var(--shadow);-webkit-tap-highlight-color:transparent;border-radius:14px;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:10px 16px;display:flex}.start-open:active{background:var(--accent-soft)}.start-name{font-size:17px;font-weight:600}.start-meta{color:var(--muted);font-size:13px}.start-remove{border:1px solid var(--line);background:var(--panel);width:44px;color:var(--muted);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:14px;font-size:22px}.start-remove:active{color:#b4251a;border-color:#b4251a}.start-empty{color:var(--muted);text-align:center;padding:12px}.start-hint{width:min(420px,100%);color:var(--muted);text-align:center;margin-top:10px;font-size:13px;line-height:1.4}.start-btn{box-shadow:var(--shadow);border-radius:999px;font-weight:600}.invite-ios{align-items:stretch;gap:4px}.invite-head{font-size:15px;font-weight:700}.invite-settings .invite-head{padding:0 16px}.invite-steps{margin:4px 0 0;padding-left:22px;font-size:15px;line-height:1.5}.invite-settings .invite-steps{padding-left:38px}.invite-steps svg{vertical-align:-3px;color:var(--accent)}.overlay-fail{text-align:center;flex-direction:column;align-items:center;gap:14px;max-width:min(440px,100% - 40px);line-height:1.4;display:flex}.m-guide{stroke-width:1.5px;stroke-dasharray:6 5;opacity:.85}.m-contact-halo{stroke:#fff;stroke-width:6px;stroke-linecap:round;opacity:.9}.m-contact{stroke-width:3px;stroke-linecap:round}.axes{left:14px;bottom:calc(4px + env(safe-area-inset-bottom));pointer-events:none;width:80px;height:80px;position:absolute;overflow:visible}.axes line{stroke-width:2.5px;stroke-linecap:round}.axes text{text-anchor:middle;paint-order:stroke;stroke:#ffffffe6;stroke-width:3px;font-size:11px;font-weight:700}.bar-btn svg{vertical-align:-4px;margin-right:5px}@keyframes tour-arrive{0%{box-shadow:0 0 0 0 #2e7d3200, var(--shadow);transform:translate(-50%)scale(1)}20%{box-shadow:0 0 0 6px #2e7d3273, var(--shadow);transform:translate(-50%)scale(1.04)}to{box-shadow:0 0 0 0 #2e7d3200, var(--shadow);transform:translate(-50%)scale(1)}}.tour{transform:translate(-50%)}.tour.arrive{animation:.9s ease-out tour-arrive}@keyframes tour-wait{0%,to{box-shadow:0 0 0 0 #2e7d3200, var(--shadow)}50%{box-shadow:0 0 0 5px #2e7d324d, var(--shadow)}}.tour.waiting{animation:1.8s ease-in-out infinite tour-wait}.tour.arrive.waiting{animation:.9s ease-out tour-arrive,1.8s ease-in-out .9s infinite tour-wait}.tour-live{color:var(--accent);margin-top:6px;padding-right:36px;font-size:16px;font-weight:600;animation:1.4s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.45}}.proj-head{align-items:center;gap:6px;margin:14px 4px 2px;display:flex}.proj-head:first-child{margin-top:0}.proj-name{letter-spacing:.02em;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:15px;font-weight:700;overflow:hidden}.proj-btn{border:1px solid var(--line);background:var(--panel);width:36px;height:32px;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:10px;justify-content:center;align-items:center;display:flex}.proj-btn:active{color:var(--accent);border-color:var(--accent)}.start-icon{justify-content:center;align-items:center;font-size:0;display:flex}.start-icon:active{color:var(--accent);border-color:var(--accent)}.start-archived-toggle{color:var(--accent);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-self:center;margin-top:8px;font-size:14px;font-weight:600}.panel.panel-scenes:not(.dock-bottom),.panel.panel-tags:not(.dock-bottom){-webkit-backdrop-filter:blur(10px);background:#ffffff94;max-height:min(60%,560px);bottom:auto}.panel.panel-scenes:not(.dock-bottom){width:232px}.panel.panel-tags:not(.dock-bottom){background:rgba(255, 255, 255, var(--tags-alpha,.58))}.panel.panel-scenes:not(.dock-bottom){background:rgba(255, 255, 255, var(--scenes-alpha,.7))}.card-menu{z-index:60;resize:none;width:220px;padding:10px 12px;position:fixed}.card-menu-row{align-items:center;gap:8px;font-size:13px;display:flex}.card-menu-row input{flex:1;min-width:0}.card-menu-val{text-align:right;font-variant-numeric:tabular-nums;width:38px}.panel.panel-scenes:not(.dock-bottom) .panel-head,.panel.panel-tags:not(.dock-bottom) .panel-head{background:0 0;height:44px;font-size:15px}.panel.panel-scenes:not(.dock-bottom) .row,.panel.panel-tags:not(.dock-bottom) .row{min-height:42px;font-size:15px}.panel.panel-scenes:not(.dock-bottom) .panel-resize{display:none}.panel.sized:not(.dock-bottom){height:var(--panel-h);max-height:calc(100% - 24px);bottom:auto}.panel-hgrip{width:72px;height:16px;color:var(--line);cursor:ns-resize;touch-action:none;justify-content:center;align-items:center;display:flex;position:absolute;bottom:0;left:50%;translate:-50%}.panel-hgrip svg{rotate:90deg}.panel-hgrip:active{color:var(--accent)}.panel.dock-bottom .panel-hgrip{display:none}.panel-body{padding-bottom:14px}.no-tips .snap-name,.no-tips .m-tip,.no-tips .measure-hint{display:none!important}@keyframes target-pulse{0%,to{background-color:var(--accent-soft);box-shadow:0 0 #2e7d3200}50%{background-color:var(--accent-soft);box-shadow:0 0 0 6px #2e7d3259}}.tour-target{z-index:1;border-radius:999px;animation:1.2s ease-in-out infinite target-pulse;position:relative}.desk .panel.floating.floating{max-width:calc(100% - 24px);bottom:auto;right:auto}.desk .panel.floating.panel-tags{width:var(--panel-w,260px);height:auto;max-height:min(50%,420px)}.desk .panel.floating.floating.panel-tags.sized{height:var(--panel-h);max-height:calc(100% - 24px)}.desk .panel.floating.panel-scenes.dock-bottom{width:max-content;height:auto}.desk .panel.floating.panel-scenes:not(.dock-bottom){width:var(--panel-w,220px);height:auto;max-height:min(60%,520px)}.desk .panel.floating.floating.panel-scenes:not(.dock-bottom).sized{height:var(--panel-h);max-height:calc(100% - 24px)}.desk .panel.floating.floating.panel-scenes:not(.dock-bottom) .panel-resize{display:flex}.desk .panel.floating:not(.dock-bottom) .row{min-height:30px;font-size:13px}.desk .panel.floating .panel-head{height:34px;padding:0 2px 0 12px;font-size:13px}.desk .panel.floating .panel-btn{width:30px;height:30px}.desk .panel.floating .panel-btn svg{width:16px;height:16px}.desk .panel.floating.panel-tags .row{min-height:30px;font-size:13px}.desk .panel.floating.panel-scenes .panel-body{gap:6px;padding:6px 8px 8px}.desk .panel.floating .chip{height:30px;padding:0 12px;font-size:13px}@media (hover:hover){.tool:not(.active):hover,.panel-btn:hover,.chip-more:hover,.back:hover,.gear:not(.active):hover,button.row:not(.row-active):hover,label.row:hover{cursor:pointer;background-color:#1d273312}.chip:not(.active):hover,.bar-btn:not(.bar-done):not(.bar-on):not(:disabled):hover,.tour-btn:not(.tour-done):hover,.seg-btn:not(.on):hover,.axis-btn:not(.on):hover,.row.pref-reset:hover,.start-btn:hover{cursor:pointer;background-color:#eceff2;border-color:#b9c1c9}.chip.active:hover,.tool.active:hover,.gear.active:hover,.row-active:hover,.bar-done:hover,.bar-on:hover,.tour-done:hover,.seg-btn.on:hover,.axis-btn.on:hover{filter:brightness(.94);cursor:pointer}}.ui .row input[type=checkbox],.ui .chip input[type=checkbox]{appearance:none;cursor:pointer;background:#fff 50%/12px 12px no-repeat;border:1.5px solid #9aa3ad;border-radius:5px;flex:none;width:18px;height:18px;margin:0;transition:background-color .12s,border-color .12s}.desk .row input[type=checkbox],.desk .chip input[type=checkbox]{background-size:10px 10px;border-radius:4px;width:14px;height:14px}.ui .row input[type=checkbox]:checked,.ui .chip input[type=checkbox]:checked{background-color:var(--accent);border-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.ui .chip.active input[type=checkbox]{border-color:#fff}.ui .chip.active input[type=checkbox]:checked{background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%231d2733' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.ui .row input[type=checkbox]:disabled,.ui .chip input[type=checkbox]:disabled{opacity:.4;cursor:default}.ui .row input[type=checkbox]:focus-visible,.ui .chip input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (hover:hover){.ui .row input[type=checkbox]:not(:checked):not(:disabled):hover{border-color:var(--ink)}}.desk .panel.floating.floating.panel-scenes.dock-bottom{background:rgba(255, 255, 255, var(--scenes-alpha,.7));-webkit-backdrop-filter:blur(8px);border-radius:999px;flex-direction:row;align-items:center;gap:2px;height:36px;padding:0 3px 0 12px;box-shadow:0 2px 10px #141e2d1a}.desk .panel.floating.floating.panel-scenes.dock-bottom .panel-head{display:contents}.desk .panel.floating.floating.panel-scenes.dock-bottom .panel-title{color:var(--muted);cursor:grab;flex:none;order:0;padding-right:6px;font-size:12px;font-weight:600}.desk .panel.floating.floating.panel-scenes.dock-bottom .panel-body{flex:0 auto;order:1;gap:3px;min-width:0;padding:0 2px}.desk .panel.floating.floating.panel-scenes.dock-bottom .panel-btn{flex:none;order:2;width:26px;height:26px}.desk .panel.floating.floating.panel-scenes.dock-bottom .panel-btn svg{width:14px;height:14px}.desk .panel.floating.floating.panel-scenes.dock-bottom .chip{background:0 0;border-color:#0000;height:26px;padding:0 10px;font-size:12px}.desk .panel.floating.floating.panel-scenes.dock-bottom .chip.active{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent);font-weight:600}.desk .panel.floating.floating.panel-scenes.dock-bottom .chip{position:relative}.desk .panel.floating.floating.panel-scenes.dock-bottom .chip+.chip:before{content:"";background:var(--line);width:1px;position:absolute;top:7px;bottom:7px;left:-2px}.desk .panel.floating.floating.panel-scenes.dock-bottom .chip.active:before,.desk .panel.floating.floating.panel-scenes.dock-bottom .chip.active+.chip:before{background:0 0}.panel.panel-scenes .chip.active{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent);font-weight:600}.vm{z-index:900;border:1px solid var(--line);width:256px;box-shadow:var(--shadow);color:var(--ink);resize:both;cursor:move;background:#fffffffa;border-radius:12px;min-width:220px;max-width:calc(100vw - 16px);min-height:120px;max-height:calc(100vh - 16px);padding:6px;font-size:13px;position:fixed;overflow:auto}.vm button,.vm input,.vm label{cursor:pointer}.vm-grip{background:var(--line);border-radius:3px;width:36px;height:6px;margin:0 auto 4px}.vm-item{width:100%;height:32px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;padding:0 10px;display:flex}.vm-key{color:var(--muted);font-size:12px}.vm-sep{background:var(--line);height:1px;margin:6px 4px}.vm-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.vm-name.vm-on{color:var(--accent);font-weight:600}.vm-name.dim{color:var(--muted)}.vm-check{accent-color:var(--accent);flex:none;margin:0 8px 0 0}.vm-more{color:var(--muted);flex:none;margin-left:8px;font-size:15px}.vm-item.vm-has-sub{cursor:default}.vm-note{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;padding:6px 10px 2px;font-size:11px;font-weight:600}.vm.vm-sub{resize:none;cursor:default;z-index:901;width:auto;min-width:180px;max-width:320px;min-height:0;overflow-y:auto}.vm.vm-sub .vm-item{height:30px}.vc{flex-direction:column;gap:8px;padding:4px 10px 8px;display:flex}.vc-label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-top:2px;font-size:11px;font-weight:600}.vc-seg{border:1px solid var(--line);border-radius:999px;display:flex;overflow:hidden}.vc-seg button{height:28px;color:var(--ink);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex:1;font-size:12px}.vc-seg button+button{border-left:1px solid var(--line)}.vc-seg button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.vc-range{align-items:center;gap:8px;display:flex}.vc-name{font-size:12px}.vc-range input{min-width:0;accent-color:var(--accent);flex:1;margin:0}.vc-value{width:36px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:12px}.vc-hint{color:var(--muted);font-size:12px;line-height:1.35}@media (hover:hover){.vm-item:hover{background:#1d273312}.vc-seg button:not(.on):hover{background:#1d27330f}}.panel .vc{border-bottom:1px solid var(--line);padding:10px 16px 12px}.ui:not(.desk) .vc-seg button{height:40px;font-size:15px}.ui:not(.desk) .vc-name,.ui:not(.desk) .vc-value{font-size:14px}.ui:not(.desk) .vc-range input{height:32px}.vc-nudge{border:1px solid var(--line);width:26px;height:26px;color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:999px;flex:none;padding:0;font-size:15px;line-height:1}.vc-cut{width:62px}.vc-toggles{flex-wrap:wrap;gap:6px;display:flex}.vc-tex{flex-direction:column;gap:4px;display:flex}.vc-tex-note{color:var(--muted);font-size:11px}.vc-tex-note:empty{display:none}.vc-toggle{white-space:nowrap;border:1px solid var(--line);height:28px;color:var(--ink);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:999px;flex:1;padding:0 8px;font-size:12px}.vc-toggle.on{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent);font-weight:600}@media (hover:hover){.vc-nudge:hover,.vc-toggle:not(.on):hover{background:#1d27330f}}.ui:not(.desk) .vc-nudge{width:40px;height:40px;font-size:20px}.ui:not(.desk) .vc-toggle{height:40px;font-size:15px}.ui:not(.desk) .vc-cut{width:76px}.vc-value{flex:none}.vc-cut{white-space:nowrap;width:70px}.toolbar[hidden]{display:none!important}.plan-dialog{z-index:60;background:var(--panel);width:min(440px,100vw - 32px);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:10px;padding:16px 18px 14px;display:flex;position:absolute;top:50%;left:50%;translate:-50% -50%}.plan-title{font-size:16px;font-weight:650}.plan-sub,.plan-key{color:var(--muted);font-size:13px;line-height:1.35}.plan-row{flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.plan-label{min-width:104px;font-weight:550}.plan-num{width:64px;font:inherit;border:1px solid var(--line);border-radius:6px;padding:5px 6px}.plan-num:disabled{opacity:.45}.plan-scale{font:inherit;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:6px;padding:5px 6px}.plan-name{min-width:0;font:inherit;border:1px solid var(--line);border-radius:6px;flex:1;padding:5px 8px}.plan-after{color:var(--muted);font-size:13px}.plan-err{color:#b42318;font-size:13px}.plan-foot{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.fv-toast{left:50%;bottom:calc(var(--bar) + 64px);z-index:55;background:var(--ink);color:#fff;max-width:calc(100vw - 32px);box-shadow:var(--shadow);pointer-events:none;border-radius:10px;padding:8px 14px;font-size:13px;position:absolute;translate:-50%}.fv-toast:not([hidden]):has(button){pointer-events:auto;align-items:center;gap:12px;display:flex}.fv-toast button{color:var(--ink)}.measure-layer.tape-snap .tape-zero,.measure-layer.tape-snap .tape-dot,.measure-layer.tape-snap .tape-label{pointer-events:none}.vm.measure-kinds{resize:none;width:auto;min-width:140px;min-height:0;overflow:visible}canvas.tape-add{cursor:copy!important}.toolbar-grip{box-sizing:content-box;cursor:grab;touch-action:none;background:radial-gradient(circle, var(--muted) 1.3px, transparent 1.7px) 0 0 / 5px 5px;opacity:.6;background-origin:content-box;background-clip:content-box;flex:none;align-self:center;width:10px;height:15px;margin:0 2px 0 6px;padding:4px}.toolbar-grip:hover{opacity:.9}.desk.bar-placed .toolbar{border-radius:23px;flex-wrap:wrap;row-gap:4px;height:auto;min-height:46px}.ui,.ui *,.measure-layer,.measure-layer *,.vm,.vm *,.plan-dialog,.fv-toast{-webkit-user-select:none;user-select:none}.ui input,.ui textarea,.ui [contenteditable=true],.plan-dialog input,.vm input{-webkit-user-select:text;user-select:text}::selection{background:#f0913a52}.sec-frame{z-index:50;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.sec-paper{z-index:50;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.sec-shade{fill:#141e2d47;fill-rule:evenodd;pointer-events:none}.sec-body{fill:#0000;stroke:var(--accent);stroke-width:2px;stroke-dasharray:8 4;pointer-events:all;cursor:move}.sec-edge{stroke:#0000;stroke-width:14px;pointer-events:stroke}.sec-corner{fill:#fff;stroke:var(--accent);stroke-width:2px;pointer-events:all;cursor:nwse-resize}.plan-dialog.sec-panel{width:min(380px,100vw - 32px);top:16px;translate:-50%}@media (pointer:coarse){.toolbar{height:40px;bottom:calc(4px + env(safe-area-inset-bottom));padding:3px}.tool{gap:1px;width:64px;height:34px}.tool-icon{height:16px}.tool-label{font-size:10px}.gear{--top:34px;top:8px;left:8px}}.measure-layer>.takeoff-box{border:1.5px solid var(--select);pointer-events:none;will-change:auto;background:#1f6feb14}.measure-layer>.takeoff-box.crossing{background:#2fb34414;border-style:dashed;border-color:#2fb344}.measure-layer>.takeoff-panel{left:auto;right:12px;top:calc(var(--top) + 24px);width:340px;max-width:calc(100% - 24px);max-height:calc(100% - var(--top) - var(--bar) - 48px);background:var(--panel);color:var(--ink);box-shadow:var(--shadow);pointer-events:auto;will-change:auto;border-radius:12px;flex-direction:column;font-size:14px;display:flex;overflow:hidden}.measure-layer>.takeoff-panel.pill{border-radius:10px;width:auto;padding:6px}.takeoff-pill{font-weight:600}.takeoff-head{flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px 6px;display:flex}.takeoff-title{flex:1;font-size:16px;font-weight:700}.takeoff-btn{border:1px solid var(--line);height:30px;color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:8px;padding:0 10px;font-size:13px}.takeoff-btn:hover{background:var(--accent-soft)}.takeoff-waste{color:var(--muted);align-items:center;gap:6px;padding:0 12px 8px;display:flex}.takeoff-waste input{border:1px solid var(--line);width:56px;height:28px;font:inherit;color:var(--ink);border-radius:6px;padding:0 6px}.takeoff-list{padding:0 6px 8px;overflow-y:auto}.takeoff-section{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:10px 6px 4px;font-size:12px;font-weight:700}.takeoff-row{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:1fr auto;gap:0 10px;padding:6px 8px;display:grid}.takeoff-row:hover{background:var(--accent-soft)}.takeoff-row.lit{background:#2fb34429;box-shadow:inset 0 0 0 1.5px #2fb344}.takeoff-what{font-weight:600}.takeoff-order{font-variant-numeric:tabular-nums;text-align:right;font-weight:700}.takeoff-measured{color:var(--muted);grid-column:1/-1;font-size:12px}.takeoff-empty{color:var(--muted);padding:10px 8px}.takeoff-lit{background:#2fb3441a;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px;margin:0 12px 8px;padding:8px;display:flex;box-shadow:inset 0 0 0 1px #2fb34480}.takeoff-lit-head{flex:100%;font-weight:600}.takeoff-lit-btns{flex-wrap:wrap;gap:6px;display:flex}.takeoff-adjust{flex-wrap:wrap;flex:100%;align-items:center;gap:6px;display:flex}.takeoff-adjust input{border:1px solid var(--line);height:28px;font:inherit;color:var(--ink);background:#fff;border-radius:6px;min-width:0;padding:0 6px;font-size:13px}.takeoff-adjust input[data-f=size]{width:96px}.takeoff-adjust input[data-f=qty]{text-align:right;font-variant-numeric:tabular-nums;width:64px}.takeoff-adjust-label{color:var(--muted);font-size:12px}.takeoff-wrow{flex:100%;align-items:center;gap:8px;display:flex}.takeoff-wlabel{color:var(--muted);font-size:12px}.takeoff-wrow input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.takeoff-wval{text-align:right;font-variant-numeric:tabular-nums;min-width:34px;font-size:13px}.takeoff-wrow .takeoff-btn{height:26px;font-size:12px}.vm.vm-popup{resize:none;cursor:default;z-index:902;width:auto;min-width:200px;max-width:320px;min-height:0;overflow:visible}.vm.vm-popup .vm-item{height:30px}.takeoff-relabel{border:1px solid var(--line);height:30px;color:var(--ink);font:inherit;background:#fff;border-radius:8px;flex:100%;padding:0 6px;font-size:13px}.takeoff-name{flex:100%;gap:6px;display:flex}.takeoff-name input{border:1px solid var(--line);min-width:0;height:30px;font:inherit;color:var(--ink);background:#fff;border-radius:8px;flex:1;padding:0 8px;font-size:13px}.takeoff-head .takeoff-btn{padding:0 8px}.takeoff-btn.on{background:var(--accent);border-color:var(--accent);color:#fff}.takeoff-row.added .takeoff-what{font-style:italic}.takeoff-erow{border-radius:8px;padding:6px 8px}.takeoff-erow+.takeoff-erow{border-top:1px solid var(--line)}.takeoff-etop{align-items:center;gap:6px;display:flex}.takeoff-etop .takeoff-what{flex:1}.takeoff-ebottom{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.takeoff-editing input,.takeoff-esection{border:1px solid var(--line);height:28px;font:inherit;color:var(--ink);background:#fff;border-radius:6px;min-width:0;padding:0 6px;font-size:13px}.takeoff-ewhat{flex:1;font-weight:600}.takeoff-esize{width:96px}.takeoff-eqty{text-align:right;font-variant-numeric:tabular-nums;width:64px}.takeoff-eunit{color:var(--muted);font-size:13px}.takeoff-ewas{color:var(--muted);flex:100%;font-size:12px}.takeoff-esection{flex:1}.takeoff-x{width:28px;height:28px;padding:0;font-size:16px;line-height:1}.takeoff-add{margin:8px 8px 2px}.takeoff-gone{align-items:center;gap:6px;padding:4px 8px;display:flex}.takeoff-gone .takeoff-what{color:var(--muted);flex:1;font-weight:400;text-decoration:line-through}.takeoff-tabs{background:#00000012;border-radius:9px;flex:1;gap:2px;padding:2px;display:flex}.takeoff-tab:not(.on){color:var(--muted)}.takeoff-tab{height:28px;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;font-size:14px;font-weight:600}.takeoff-tab.on{background:var(--panel);box-shadow:0 1px 2px #0000001f}.takeoff-btns{flex-wrap:wrap;gap:6px;padding:0 12px 8px;display:flex}.takeoff-sub{color:var(--muted);padding:0 12px 8px;font-size:12px}.takeoff-head .takeoff-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.takeoff-dup,.takeoff-left{color:#8a5300;background:#fff4e0;border-radius:8px;align-items:center;gap:6px;margin:0 8px 4px;padding:4px 8px;font-size:12px;display:flex}.takeoff-dup>div:first-child,.takeoff-left>div:first-child{flex:1}.takeoff-dup .takeoff-btn,.takeoff-left .takeoff-btn{height:24px;font-size:12px}.takeoff-source{background:var(--accent-soft);border-radius:8px;margin:2px 8px 6px;padding:6px 8px;font-size:12px;font-weight:600}.takeoff-out{background:#fff4e0;border-radius:8px;align-items:center;gap:8px;margin:0 8px 4px;padding:6px 8px;display:flex}.takeoff-out>div:first-child{flex:1;min-width:0}.takeoff-out .takeoff-what{color:#8a5300}.takeoff-out .takeoff-btn{flex:none;height:26px;font-size:12px}.takeoff-out{cursor:pointer}.takeoff-out:hover{filter:brightness(.98)}.takeoff-out.lit{box-shadow:inset 0 0 0 1.5px #2fb344}.takeoff-out-head{color:#8a5300}.takeoff-dup-warn{color:#8a5300;background:#fff4e0;border-radius:8px;margin:6px 12px;padding:6px 8px;font-size:12px}.takeoff-save{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding:8px 12px 12px;display:flex}.takeoff-save:empty{display:none}.takeoff-save input{border:1px solid var(--line);height:30px;font:inherit;color:var(--ink);border-radius:8px;padding:0 8px}.takeoff-save-label{color:var(--muted);font-size:12px;font-weight:600}.takeoff-save-btns{justify-content:flex-end;gap:6px;display:flex}.takeoff-save .takeoff-dup-warn{margin:0}.takeoff-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.takeoff-btn.primary:hover{filter:brightness(1.08);background:var(--accent)}.takeoff-btn.danger{color:#fff;background:#c62828;border-color:#c62828}@media (pointer:coarse){.ui.framed .title{display:none}}.ui:not(.desk).measuring .toolbar{display:none}.ui:not(.desk).measuring .measure-bar{bottom:calc(4px + env(safe-area-inset-bottom));height:48px}.ui:not(.desk).measuring .measure-hint{bottom:calc(4px + 48px + 8px + env(safe-area-inset-bottom))}.m-perp-ref{fill:none;stroke:#f06595;stroke-width:2.5px;stroke-dasharray:6 4;stroke-linecap:round}.sw-backdrop{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1c1a1657;justify-content:center;align-items:center;padding:24px;animation:.14s ease-out sw-fade;display:flex;position:fixed;inset:0}@keyframes sw-fade{0%{opacity:0}}.sw{--sw-paper:#fcfbf8;--sw-side:#f4f2ed;--sw-card:#f3f1ec;--sw-line:#3c342817;--sw-ink:#23211d;--sw-muted:#7a766e;--sw-hover:#3c34280f;--sw-btn:#e9e6df;--sw-btn-hover:#dedad1;background:var(--sw-paper);width:min(780px,100%);height:min(580px,100%);color:var(--sw-ink);border-radius:14px;font-size:14px;animation:.16s ease-out sw-rise;display:flex;overflow:hidden;box-shadow:0 24px 64px #14120e4d,0 0 0 1px #3c342814}@keyframes sw-rise{0%{opacity:0;transform:translateY(6px)scale(.99)}}.sw-side{background:var(--sw-side);border-right:1px solid var(--sw-line);flex-direction:column;flex:0 0 204px;gap:2px;padding:16px 10px;display:flex;overflow-y:auto}.sw-group{color:var(--sw-muted);letter-spacing:.08em;text-transform:uppercase;padding:12px 10px 6px;font-size:11px;font-weight:600}.sw-group:first-child{padding-top:2px}.sw-nav{width:100%;color:var(--sw-ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;padding:7px 10px;font-size:14px;transition:background .12s;display:flex}.sw-nav .icon{color:var(--sw-muted);flex:none}.sw-nav:hover{background:var(--sw-hover)}.sw-nav[aria-current=page]{background:#3c342817;font-weight:500}.sw-nav[aria-current=page] .icon{color:var(--sw-ink)}.sw-main{flex:1;min-width:0;padding:30px 36px 32px;position:relative;overflow-y:auto}.sw-close{width:32px;height:32px;color:var(--sw-muted);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;transition:background .12s;display:flex;position:absolute;top:12px;right:12px}.sw-close:hover{background:var(--sw-hover);color:var(--sw-ink)}.sw-title{letter-spacing:-.01em;margin:0 0 20px;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-size:28px;font-weight:400}.sw-card{background:var(--sw-card);border-radius:12px;margin-bottom:16px;padding:2px 18px}.sw-card-pad{padding:16px 18px}.sw-row{border-top:1px solid var(--sw-line);flex-wrap:wrap;align-items:center;gap:8px 18px;padding:14px 0;display:flex}.sw-row:first-child{border-top:0}.sw-text{flex:220px;min-width:0}.sw-label{font-size:14px;font-weight:600}.sw-hint{color:var(--sw-muted);margin-top:3px;font-size:13px;line-height:1.4}.sw-control{flex:none;align-items:center;gap:8px;display:flex}.sw-btn{background:var(--sw-btn);min-width:96px;height:34px;color:var(--sw-ink);font:inherit;cursor:pointer;border:0;border-radius:8px;padding:0 16px;font-size:13.5px;font-weight:500;transition:background .12s}.sw-btn:hover{background:var(--sw-btn-hover)}.sw-select{appearance:none;min-width:168px;height:34px;color:var(--sw-ink);font:inherit;cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237a766e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 11px center/13px no-repeat;border:1px solid #3c342829;border-radius:8px;padding:0 34px 0 12px;font-size:13.5px;transition:border-color .12s}.sw-select:hover,.sw-select:focus-visible{border-color:var(--sw-ink);outline:none}.sw-switch{cursor:pointer;background:#d8d4cb;border:0;border-radius:999px;width:38px;height:22px;padding:0;transition:background .15s;position:relative}.sw-switch:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #0003}.sw-switch:hover{background:#cdc8be}.sw-switch[aria-checked=true]{background:var(--accent)}.sw-switch[aria-checked=true]:hover{filter:brightness(.95)}.sw-switch[aria-checked=true]:after{transform:translate(16px)}.sw-switch:focus-visible,.sw-btn:focus-visible,.sw-nav:focus-visible,.sw-close:focus-visible{outline:2px solid var(--sw-ink);outline-offset:2px}.sw-value{color:var(--sw-muted);font-variant-numeric:tabular-nums;font-size:13.5px}.sw-slider{flex:100%}.sw-range{width:100%;height:24px;accent-color:var(--accent);touch-action:pan-y;margin:2px 0 0}.sw-ends{color:var(--sw-muted);justify-content:space-between;font-size:12px;display:flex}.sw-keys{gap:4px;display:inline-flex}.sw-kbd{min-width:26px;height:26px;font:inherit;background:#fff;border:1px solid #3c342824;border-radius:6px;justify-content:center;align-items:center;padding:0 8px;font-size:12.5px;font-weight:500;display:inline-flex;box-shadow:0 1px #3c34281f}.sw .invite-settings .row.pref-reset{width:auto}@media (pointer:coarse){.sw-btn,.sw-select{height:42px}.sw-nav{padding:11px 12px}.sw-switch{width:46px;height:28px}.sw-switch:after{width:22px;height:22px}.sw-switch[aria-checked=true]:after{transform:translate(18px)}}@media (max-width:640px){.sw-backdrop{padding:0}.sw{border-radius:0;flex-direction:column;width:100%;height:100%}.sw-side{border-right:0;border-bottom:1px solid var(--sw-line);flex-direction:row;flex:none;gap:4px;padding:10px 52px 10px 10px;overflow-x:auto}.sw-group{display:none}.sw-nav{white-space:nowrap;width:auto}.sw-main{padding:22px 18px 28px}.sw-close{position:fixed;top:10px;right:10px}}.sw.sw-float{resize:both;min-width:520px;max-width:calc(100vw - 16px);min-height:340px;max-height:calc(100vh - 16px);position:fixed}.sw.sw-float .sw-side{cursor:grab}.sw.sw-float .sw-side:active{cursor:grabbing}.sw-backdrop.sw-moved{-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none;background:0 0}.sw-backdrop.sw-moved .sw{pointer-events:auto;box-shadow:0 12px 40px #14120e47,0 0 0 1px #3c34281a}
