@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600&family=DM+Mono:wght@400;500&display=swap";.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:root{--bg:#f0f2f5;--ink:#0f1117;--muted:#6b7380;--grid:#6378dc17;--sidebar-bg:#1a1d23;--sidebar-border:#2a2e38;--sidebar-hover:#ffffff12;--sidebar-active:#2563eb;--sidebar-active-bg:#2563eb2e;--sidebar-label:#4b5468;--sidebar-icon:#9aa5b8;--sidebar-icon-active:#fff;--sidebar-divider:#252830;--panel:#fff;--panel-2:#f7f8fa;--panel-edge:#e5e8ee;--panel-heading:#0f1117;--panel-shadow:0 1px 3px #00000012, 0 1px 2px #0000000a;--float-panel:#fffffff7;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-light:#2563eb1a;--input-bg:#f7f8fa;--input-border:#d1d5db;--input-focus:#2563eb;--control-hover:#eef0f4;--control-hover-border:#b5bac7;--subtle-hover:#00000012;--danger:#ef4444;--danger-bg:#fee2e2;--r-sm:4px;--r-md:6px;--r-lg:8px}:root.theme-dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#111214;--ink:#edf0f5;--muted:#9ca7b6;--grid:#99a9d61f;--sidebar-bg:#0b0c0f;--sidebar-border:#24272e;--sidebar-hover:#ffffff17;--sidebar-active:#6ea8ff;--sidebar-active-bg:#6ea8ff2e;--sidebar-label:#717a8c;--sidebar-icon:#a6afbf;--sidebar-icon-active:#fff;--sidebar-divider:#20232a;--panel:#1b1d22;--panel-2:#24272e;--panel-edge:#343943;--panel-heading:#f6f7fb;--panel-shadow:0 1px 3px #0000006b, 0 8px 24px #00000038;--float-panel:#1b1d22f7;--accent:#6ea8ff;--accent-hover:#8bbaff;--accent-light:#6ea8ff29;--input-bg:#15171b;--input-border:#3c414c;--input-focus:#6ea8ff;--control-hover:#2c3038;--control-hover-border:#555d6d;--subtle-hover:#ffffff14;--danger:#f77;--danger-bg:#ff777729}*{box-sizing:border-box}body{color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px}.app{box-sizing:border-box;height:100vh;padding:.35rem;overflow:hidden}.workspace{grid-template-columns:52px 1fr 280px;gap:.4rem;min-width:0;height:calc(100vh - .7rem);display:grid}.workspace.fs-open{grid-template-columns:52px 1fr 260px 280px}.workspace.fs-open #vtoolbar{grid-area:1/1}.workspace.fs-open .canvas-area{grid-area:1/2}.workspace.fs-open #fsLeftPanel{grid-area:1/3}.workspace.fs-open .right-dock{grid-area:1/4}.right-dock{align-content:start;gap:.4rem;width:100%;min-width:0;height:100%;min-height:0;display:grid;overflow:hidden auto}.right-dock::-webkit-scrollbar{width:5px}.right-dock::-webkit-scrollbar-track{background:0 0}.right-dock::-webkit-scrollbar-thumb{background:var(--panel-edge);border-radius:10px}.legend-panel,.dock-panel{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-lg);box-shadow:var(--panel-shadow);width:100%;min-width:0;padding:.6rem .65rem .55rem}.legend-panel h2,.dock-panel h2{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid var(--panel-edge);margin:0 0 .5rem;padding-bottom:.4rem;font-size:.7rem;font-weight:600}.project-name-label{text-transform:none;letter-spacing:0;color:var(--accent);vertical-align:middle;align-items:center;gap:4px;max-width:11rem;margin-left:.45rem;font-weight:600;display:none}.project-name-label .project-name-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.project-name-label.project-name-renamable:hover .project-name-text{text-underline-offset:2px;text-decoration:underline}.project-name-label .provider-logo{width:14px;height:14px;font-size:12px}.project-name-label .provider-logo-ms{grid-template-rows:repeat(2,6px);grid-template-columns:repeat(2,6px);gap:1px}.project-name-label .provider-logo-ms i{width:6px;height:6px}.cloud-actions{align-items:center}.cloud-status{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1 1 0;font-size:.68rem;overflow:hidden}.cloud-actions .cloud-login-btn{flex:none}.cloud-admin-link{color:var(--accent);border:1px solid var(--accent-light);border-radius:var(--r-sm);flex:none;padding:2px 8px;font-size:.68rem;font-weight:600;text-decoration:none}.cloud-admin-link:hover{background:var(--accent-light);text-decoration:none}.cloud-admin-link[hidden]{display:none}.cloud-provider-menu{z-index:10030;border:1px solid var(--panel-edge);border-radius:var(--r-lg);background:var(--panel);gap:4px;width:188px;padding:6px;display:grid;position:fixed;box-shadow:0 12px 40px #00000038}.cloud-remember-row{color:var(--muted);cursor:pointer;border-bottom:1px solid var(--panel-edge);align-items:center;gap:7px;margin-bottom:2px;padding:4px 6px 6px;font-size:.72rem;display:flex}.cloud-remember-row input{cursor:pointer}.cloud-provider-option{border-radius:var(--r-md);width:100%;min-height:38px;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;grid-template-columns:26px minmax(0,1fr);align-items:center;gap:9px;padding:7px 9px;display:grid}.cloud-provider-option:hover{border-color:var(--panel-edge);background:var(--control-hover)}.provider-logo{flex:none;place-items:center;width:22px;height:22px;font-weight:700;display:inline-grid}.provider-logo-google{color:#4285f4;font-family:Arial,sans-serif;font-size:18px}.provider-logo-ms{grid-template-rows:repeat(2,9px);grid-template-columns:repeat(2,9px);gap:2px}.provider-logo-ms i{width:9px;height:9px;display:block}.provider-logo-ms i:first-child{background:#f25022}.provider-logo-ms i:nth-child(2){background:#7fba00}.provider-logo-ms i:nth-child(3){background:#00a4ef}.provider-logo-ms i:nth-child(4){background:#ffb900}.cloud-provider-picker{width:min(360px,100vw - 32px)}.cloud-provider-picker-body{gap:8px;padding:10px;display:grid}.cloud-picker-overlay{z-index:10020;background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.cloud-picker{border:1px solid var(--panel-edge);border-radius:var(--r-lg);background:var(--panel);flex-direction:column;width:min(540px,100vw - 32px);max-height:min(680px,100dvh - 32px);display:flex;overflow:hidden;box-shadow:0 18px 60px #00000047}.cloud-picker-hdr{border-bottom:1px solid var(--panel-edge);background:var(--panel-2);color:var(--panel-heading);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-weight:600;display:flex}.cloud-picker-close{width:28px;height:28px;color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0}.cloud-picker-search{border-bottom:1px solid var(--panel-edge);background:var(--panel-2);flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.cloud-picker-sort{border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel);height:34px;color:var(--ink);font:600 .78rem/1 var(--mono,ui-monospace, Consolas, monospace);cursor:pointer;white-space:nowrap;flex:none;padding:0 12px}.cloud-picker-sort:hover{border-color:var(--control-hover-border);background:var(--control-hover)}.cloud-picker-search-input{border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel);min-width:0;height:34px;color:var(--ink);flex:auto;padding:0 10px;font-size:.82rem}.cloud-picker-search-input:focus{border-color:var(--control-hover-border);outline:none}.cloud-browser-crumbs{border-bottom:1px solid var(--panel-edge);background:var(--panel-2);flex-wrap:wrap;flex:none;align-items:center;gap:2px;padding:6px 12px;display:flex}.cloud-crumb{border-radius:var(--r-sm,6px);color:var(--accent,#4285f4);cursor:pointer;background:0 0;border:0;padding:2px 6px;font-size:.74rem;font-weight:600}.cloud-crumb:disabled{color:var(--ink);cursor:default}.cloud-crumb:not(:disabled):hover{background:var(--control-hover)}.cloud-crumb-sep{color:var(--muted);font-size:.74rem}.cloud-folder-row{grid-template-columns:54px minmax(0,1fr) 18px}.cloud-folder-row .cloud-file-kind{color:var(--accent,#4285f4)}.cloud-folder-chevron{color:var(--muted);font-size:1rem}.cloud-section-head{font:700 .66rem/1 var(--mono,ui-monospace, Consolas, monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:2px;padding:10px 8px 4px}.cloud-section-head:first-child{margin-top:0}.cloud-browser-foot{border-top:1px solid var(--panel-edge);background:var(--panel-2);flex:none;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.cloud-browser-hint{color:var(--muted);font-size:.7rem}.cloud-browser-save{border:1px solid var(--accent,#4285f4);border-radius:var(--r-md);background:var(--accent,#4285f4);color:#fff;cursor:pointer;padding:6px 14px;font-size:.78rem;font-weight:600}.cloud-browser-save:disabled{opacity:.6;cursor:default}.cloud-picker-body{flex:auto;min-height:0;padding:8px;overflow:auto}.cloud-file-row{text-align:left;border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel);width:100%;min-height:48px;color:var(--ink);cursor:pointer;grid-template-columns:54px minmax(0,1fr);align-items:center;gap:10px;margin:0 0 6px;padding:8px;display:grid}.cloud-file-row:hover{border-color:var(--control-hover-border);background:var(--control-hover)}.cloud-file-kind{color:var(--muted);font:600 .62rem/1 var(--mono,ui-monospace, Consolas, monospace)}.cloud-file-main{gap:3px;min-width:0;display:grid}.cloud-file-main b,.cloud-file-main small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cloud-file-main b{font-size:.78rem;font-weight:600}.cloud-file-main small,.cloud-picker-empty{color:var(--muted);font-size:.68rem}.share-dialog{width:min(480px,100vw - 32px)}.share-body{flex-direction:column;flex:auto;gap:10px;padding:12px;display:flex;overflow-y:auto}.share-provider-note{color:var(--muted);font-size:.72rem;line-height:1.35}.share-invite{align-items:center;gap:6px;display:flex}.share-email{border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel);min-width:0;height:34px;color:var(--ink);flex:auto;padding:0 10px;font-size:.82rem}.share-email:focus{border-color:var(--control-hover-border);outline:none}.share-role-select{border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel);height:34px;color:var(--ink);padding:0 6px;font-size:.78rem}.share-invite-btn,.share-link-btn,.share-copy-btn{border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--accent,var(--panel-2));height:34px;color:var(--accent-ink,var(--ink));cursor:pointer;padding:0 12px;font-size:.78rem;font-weight:600}.share-invite-btn:disabled,.share-link-btn:disabled{opacity:.55;cursor:default}.share-section-title{color:var(--panel-heading);margin-top:4px;font-size:.74rem;font-weight:600}.share-access-list{border:1px solid var(--panel-edge);border-radius:var(--r-md);flex-direction:column;display:flex;overflow:hidden}.share-person{border-top:1px solid var(--panel-edge);align-items:center;gap:8px;padding:8px 10px;display:flex}.share-person:first-child{border-top:0}.share-person-info{flex-direction:column;flex:auto;min-width:0;display:flex}.share-person-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.share-person-email{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;overflow:hidden}.share-owner-tag,.share-role-static{color:var(--muted);font-size:.7rem}.share-remove-btn{border:1px solid var(--panel-edge);border-radius:var(--r-sm);color:var(--ink);cursor:pointer;background:0 0;padding:4px 8px;font-size:.7rem}.share-remove-btn:hover{border-color:var(--danger,#c0392b);color:var(--danger,#c0392b)}.share-empty{color:var(--muted);padding:10px;font-size:.74rem}.share-link-section{flex-direction:column;gap:6px;display:flex}.share-link-controls,.share-link-box{align-items:center;gap:6px;display:flex}.share-link-field{border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel-2);min-width:0;height:34px;color:var(--ink);flex:auto;padding:0 10px;font-size:.76rem}.share-link-hint{color:var(--muted);font-size:.68rem}.share-link-anyone-label{min-width:0;color:var(--ink);flex:auto;font-size:.74rem}.shared-readonly-banner{z-index:10030;border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel);max-width:calc(100vw - 24px);color:var(--ink);align-items:center;gap:10px;padding:7px 10px 7px 14px;font-size:.76rem;display:flex;position:fixed;top:10px;left:50%;transform:translate(-50%);box-shadow:0 8px 28px #00000038}.shared-readonly-banner .shared-readonly-copy{border:1px solid var(--panel-edge);border-radius:var(--r-sm);background:var(--accent,var(--panel-2));color:var(--accent-ink,var(--ink));cursor:pointer;white-space:nowrap;flex:none;padding:5px 10px;font-size:.74rem;font-weight:600;line-height:1.2}.shared-readonly-banner .shared-readonly-dismiss{color:var(--ink);cursor:pointer;background:0 0;border:0;flex:none;padding:2px 4px;font-size:1rem;line-height:1}body.read-only-mode #fileSaveMenuBtn,body.read-only-mode #shareProjectBtn,body.read-only-mode #addSheetBtn,body.read-only-mode #addElemBtn,body.read-only-mode #addTakeoffBtn,body.read-only-mode #addLayerPdfBtn,body.read-only-mode .tool:not([data-tool=pan]){display:none!important}.kv{border-top:1px solid var(--panel-edge);justify-content:space-between;padding:.22rem 0;font-size:.72rem;display:flex}.color-key{align-items:center;gap:.35rem;margin-bottom:.25rem;display:flex}.bar{border:1px solid var(--panel-edge);border-radius:var(--r-sm);width:10px;height:24px;display:inline-block}.bar.cut{background:linear-gradient(#bfe9ff,#3b9ddd)}.bar.fill{background:linear-gradient(#ffd4d4,#d84646)}.canvas-wrap{border:1px solid var(--panel-edge);border-radius:var(--r-lg);background:#cce4f5;justify-content:flex-start;align-items:flex-start;min-height:80vh;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px 3px #0000000f}.canvas-grid{background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);pointer-events:none;z-index:0;background-size:155px 155px;position:absolute;inset:0}.canvas-stack{transform-origin:0 0;z-index:1;will-change:transform;position:absolute;top:0;left:0}#pdfCanvas,#markupCanvas{max-width:none;display:block}#pdfCanvas{opacity:0}.canvas-busy{z-index:400;pointer-events:none;justify-content:flex-end;align-items:flex-start;animation:.12s ease-out canvas-busy-fade;display:flex;position:absolute;top:12px;right:12px}.canvas-busy[hidden]{display:none}@keyframes canvas-busy-fade{0%{opacity:0}to{opacity:1}}.canvas-busy-card{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-lg);align-items:center;gap:.7rem;max-width:80%;padding:.75rem 1.05rem;display:flex;box-shadow:0 12px 40px #00000038,0 2px 6px #00000014}.canvas-busy-spinner{border:2.5px solid var(--accent-light);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:20px;height:20px;animation:.7s linear infinite canvas-busy-spin}@keyframes canvas-busy-spin{to{transform:rotate(360deg)}}.canvas-busy-msg{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;font-weight:600;overflow:hidden}@media (prefers-reduced-motion:reduce){.canvas-busy-spinner{animation-duration:1.6s}.canvas-busy{animation:none}}.save-target-overlay{z-index:10050;-webkit-backdrop-filter:blur(2px);background:#0f11176b;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.save-target-card{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-lg);width:min(92vw,360px);padding:1rem 1rem .85rem;box-shadow:0 18px 50px #0000004d}.save-target-title{color:var(--ink);font-size:.92rem;font-weight:700}.save-target-sub{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:.72rem;overflow:hidden}.save-target-body{gap:.5rem;margin-top:.8rem;display:grid}.save-target-opt{text-align:left;border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel-2);cursor:pointer;align-items:center;gap:.7rem;padding:.7rem .8rem;display:flex}.save-target-opt:hover{background:var(--control-hover);border-color:var(--control-hover-border)}.save-target-opt:before{text-align:center;width:26px;color:var(--accent);flex-shrink:0;font-size:1.35rem}.st-txt{flex-direction:column;gap:1px;display:flex}.save-target-opt b{color:var(--ink);font-size:.82rem;font-weight:600}.save-target-opt small{color:var(--muted);font-size:.68rem}.save-target-foot{justify-content:flex-end;margin-top:.85rem;display:flex}.save-target-cancel{font-size:.74rem}.layer-render-host{pointer-events:none;z-index:1;contain:layout size;position:absolute;inset:0 auto auto 0;overflow:visible}.screen-layer{transform-origin:50%;pointer-events:none;contain:layout paint size;will-change:transform, opacity;backface-visibility:hidden;position:absolute}.screen-layer-fallback,.screen-layer-detail{image-rendering:auto;contain:strict;will-change:transform;backface-visibility:hidden;max-width:none;display:block;position:absolute}.screen-layer-fallback{width:100%;height:100%;inset:0}#markupCanvas{z-index:2;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.canvas-text-editor{z-index:60;white-space:pre;resize:none;box-sizing:content-box;caret-color:#2563eb;background:#fffffff0;border:1px dashed #2563ebf2;border-radius:3px;outline:none;min-height:1em;margin:0;padding:1px 4px;line-height:1.25;position:absolute;overflow:hidden;box-shadow:0 2px 12px #0f172a38}#canvas2dOverlay{pointer-events:none;z-index:3;width:100%;height:100%;position:absolute;top:0;left:0}.elev-toggle{z-index:4;border:1px solid var(--panel-edge);border-radius:var(--r-sm);background:var(--float-panel);color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:3px 8px;font-size:.7rem;font-weight:600;display:inline-flex;position:absolute;top:16px;left:16px;box-shadow:0 1px 2px #00000014}.elev-toggle input[type=checkbox]{cursor:pointer;accent-color:var(--accent);margin:0}.row{flex-wrap:wrap;align-items:center;gap:.3rem;width:100%;min-width:0;margin-bottom:.35rem;display:flex}.file-input{align-items:center;gap:.4rem;display:inline-flex}.check{color:var(--ink);cursor:pointer;align-items:center;gap:.35rem;margin-bottom:.3rem;font-size:.75rem;display:inline-flex}.check input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:13px;height:13px}button,select,input[type=file],input[type=text],input[type=number],input[type=color]{border:1px solid var(--input-border);background:var(--input-bg);border-radius:var(--r-sm);color:var(--ink);min-width:0;max-width:100%;padding:.28rem .5rem;font-family:DM Sans,-apple-system,sans-serif;font-size:.73rem;transition:border-color .15s,box-shadow .15s}button{cursor:pointer;background:var(--panel-2);border-color:var(--panel-edge);font-weight:500}button:hover:not(:disabled){background:var(--control-hover);border-color:var(--control-hover-border)}button:disabled,select:disabled{opacity:.45;cursor:not-allowed}select:focus,input[type=text]:focus,input[type=number]:focus{border-color:var(--input-focus);outline:none;box-shadow:0 0 0 2px #2563eb1f}input[type=color]{cursor:pointer;height:28px;padding:2px 3px}input[type=range]{width:100%;accent-color:var(--accent);margin-bottom:.25rem}label{color:var(--muted);font-size:.72rem;font-weight:500}#vtoolbar{background:var(--sidebar-bg);border:1px solid var(--sidebar-border);border-radius:var(--r-lg);flex-direction:column;align-content:start;gap:0;width:52px;padding:6px 4px;display:flex;box-shadow:0 2px 8px #0000002e}.vtool-group{border-bottom:1px solid var(--sidebar-divider);flex-direction:column;gap:1px;margin-bottom:4px;padding-bottom:5px;display:flex}.vtool-group:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.vtool-group-label{color:var(--sidebar-label);text-align:center;text-transform:uppercase;letter-spacing:.08em;-webkit-user-select:none;user-select:none;padding:2px 0 3px;font-size:.48rem;font-weight:600}.vtool{cursor:pointer;border-radius:var(--r-sm);width:100%;min-height:36px;color:var(--sidebar-icon);background:0 0;border:1px solid #0000;flex-direction:column;justify-content:center;align-items:center;padding:6px 2px 4px;font-family:inherit;font-size:1rem;line-height:1;transition:background .12s,color .12s,border-color .12s,box-shadow .12s;display:flex;position:relative}.vtool span{letter-spacing:.02em;text-transform:uppercase;margin-top:3px;font-size:.5rem;font-weight:500;line-height:1}.vt-ic{fill:none;stroke:currentColor;stroke-width:1.9px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px;display:block}.vt-ic-host{justify-content:center;align-items:center;display:flex}.vt-ic-sm{fill:none;stroke:currentColor;stroke-width:1.9px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.vtool:hover{background:var(--sidebar-hover);color:#c8d2e4;border-color:#0000}.vtool.active{background:var(--sidebar-active-bg);color:#93b8f8;border-color:#2563eb59;box-shadow:inset 2px 0 #2563ebb3}.vtool:focus-visible{outline-offset:1px;outline:2px solid #2563ebb3}.vtool:disabled{opacity:.38;cursor:default;pointer-events:none}.vtool-flyout-wrap{width:100%;position:relative}.vtool-flyout-btn{padding-right:10px;position:relative}.vtool-flyout-arr{pointer-events:none;color:var(--sidebar-label);font-size:.45rem;position:absolute;top:50%;right:3px;transform:translateY(-50%)}.vtool-flyout{z-index:200;background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-md);flex-direction:column;gap:1px;min-width:150px;padding:4px;display:flex;position:absolute;top:0;left:calc(100% + 8px);box-shadow:0 4px 16px #0000001f,0 1px 4px #00000014}.vtool-flyout[hidden]{display:none}.vtool-flyout:not([hidden]){animation:.13s vtFlyIn}@keyframes vtFlyIn{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.shape-opt,.text-opt{cursor:pointer;border-radius:var(--r-sm);color:var(--ink);white-space:nowrap;text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:7px;width:100%;padding:6px 9px;font-family:DM Sans,sans-serif;font-size:.73rem;font-weight:400;transition:background .1s;display:flex}.shape-opt:hover,.text-opt:hover{background:var(--accent-light);color:var(--accent);border-color:#0000}.shape-opt.active,.text-opt.active{background:var(--accent-light);color:var(--accent);border-color:#2563eb33;font-weight:500}.vtool-style-swatch{background:#ff2e63;border:2px solid #ffffffb8;border-radius:50%;width:16px;height:16px;margin-top:0;box-shadow:0 0 0 1px #0f172a6b}.vtool-fontsize{flex-direction:column;align-items:stretch;gap:2px;width:100%;margin-top:4px;display:flex}.vfont-label{text-align:center;text-transform:uppercase;letter-spacing:.04em;color:var(--sidebar-label);-webkit-user-select:none;user-select:none;font-size:.5rem;line-height:1}.vfont-input{text-align:center;border:1px solid var(--panel-edge);border-radius:var(--r-sm);background:var(--panel);width:100%;height:20px;color:var(--sidebar-icon);-moz-appearance:textfield;padding:0;font-family:inherit;font-size:.66rem}.vfont-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.vfont-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.vfont-btns{gap:2px;display:flex}.vfont-btn{border:1px solid var(--panel-edge);border-radius:var(--r-sm);height:18px;color:var(--sidebar-icon);cursor:pointer;background:0 0;flex:1 1 0;justify-content:center;align-items:center;font-family:inherit;font-size:.85rem;line-height:1;transition:background .12s,color .12s;display:flex}.vfont-btn:hover{background:var(--sidebar-hover);color:#c8d2e4}.draw-style-flyout{gap:6px;min-width:168px;padding:8px}.draw-style-row{color:var(--ink);grid-template-columns:56px 1fr;align-items:center;gap:8px;font-size:.72rem;display:grid}.draw-style-row span{color:var(--muted);font-weight:600}.draw-style-row input[type=color]{border:1px solid var(--panel-edge);border-radius:var(--r-sm);background:var(--panel);cursor:pointer;width:100%;min-width:56px;height:28px;padding:2px}.draw-style-row input[type=number]{border:1px solid var(--panel-edge);border-radius:var(--r-sm);background:var(--panel);min-width:0;height:28px;color:var(--ink);font:inherit;padding:3px 6px}.flyout-sep{border:none;border-top:1px solid var(--panel-edge);margin:3px 0}.tool-grid{grid-template-columns:1fr 1fr;gap:.22rem;margin-bottom:.35rem;display:grid}.tool.active{background:var(--accent-light);color:var(--accent);border-color:#2563eb4d}#finishPath,#toggleFullscreen,#export,#view3dBtn{width:100%;margin-bottom:.3rem}#view3dBtn,#zoomFitBtn{flex:1}.layer-list{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.layer-item{border:1px solid var(--panel-edge);background:var(--panel-2);border-radius:var(--r-sm);gap:.25rem;width:100%;min-width:0;padding:.3rem .4rem;transition:border-color .15s;display:grid;overflow:hidden}.layer-item.active-edit{border-color:var(--accent);box-shadow:0 0 0 2px #2563eb1f}.layer-item.pending-layer{border-style:dashed}.layer-item.hidden-layer{opacity:.4}.layer-item.source-missing{border-color:#ef444461}.layer-header{justify-content:space-between;align-items:center;gap:.2rem;min-width:0;display:flex;overflow:hidden}.layer-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.layer-source-status{color:var(--danger);font-size:.66rem;line-height:1.25}.layer-source-badge{flex:none;align-items:center;display:inline-flex}.layer-source-badge .provider-logo{width:15px;height:15px;font-size:12px}.layer-source-badge .provider-logo-ms{grid-template-rows:repeat(2,6px);grid-template-columns:repeat(2,6px);gap:1px}.layer-source-badge .provider-logo-ms i{width:6px;height:6px}.provider-logo-url,.provider-logo-embedded{color:var(--muted);font-size:13px}.layer-actions-compact{flex-shrink:0;align-items:center;gap:.15rem;display:flex}.layer-vis-btn,.layer-del-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:.72rem;line-height:1;transition:background .12s,color .12s}.layer-vis-btn:hover{background:var(--subtle-hover);color:var(--ink)}.layer-del-btn:hover{background:var(--danger-bg);color:var(--danger)}.layer-actions{flex-wrap:wrap;gap:.2rem;display:flex}.layer-actions button{white-space:nowrap;flex:auto;min-width:0;padding:.22rem .35rem;font-size:.68rem}.layer-actions button.active-edit-btn{background:var(--accent-light);color:var(--accent);border-color:#2563eb4d;font-weight:500}.layer-edit-controls{flex-direction:column;gap:.2rem;width:100%;min-width:0;display:flex}.layer-edit-controls--side>.fsp-detail:first-child{border-top:none;margin-top:0;padding-top:0}.layer-edit-controls .fsp-field-row label{min-width:54px}.layer-edit-controls .fsp-field-row input[type=range]{flex:1;min-width:0}.layer-edit-controls .fsp-field-row input[type=number],.layer-edit-controls .fsp-field-row input[type=text]{min-width:0}.layer-edit-controls .fsp-field-row button{flex-shrink:0;padding:.2rem .45rem;font-size:.66rem}.layer-edit-controls .fsp-field-row .layer-page-step-btn{width:26px;padding-left:0;padding-right:0;font-size:.8rem;line-height:1}.layer-edit-controls .layer-source-actions{margin-top:.1rem}.layer-edit-controls .layer-replace-source-wrap{flex:1}.layer-edit-controls .layer-replace-source-wrap>button{width:100%}.layer-edit-controls .layer-replace-source-menu{left:0;right:auto}.layer-edit-controls .fsp-actions button{flex:1}.layer-edit-controls .layer-source-flyout button{flex:none}.layer-edit-controls .layer-source-actions{flex-wrap:wrap}.layer-edit-controls .layer-source-actions>button,.layer-edit-controls .layer-source-actions>.layer-replace-source-wrap{flex:6rem}.layer-color-list{flex-direction:column;gap:.2rem;display:flex}.layer-color-row,.layer-color-add{align-items:center;gap:.3rem}.layer-color-swatch{border:1px solid var(--input-border);border-radius:var(--r-sm);background:var(--input-bg);cursor:pointer;flex-shrink:0;width:28px;height:22px;padding:1px}.layer-color-tol-sym{flex-shrink:0;margin:0}.layer-color-tol{width:46px;flex:0 0 46px!important}.layer-color-del{color:var(--danger);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 6px;font-size:.7rem;line-height:1}.layer-color-del:hover{background:var(--danger-bg)}.layer-color-add .fsp-add-btn{flex:1}.fsp-cancel-edit-btn{width:100%;color:var(--danger);border:1px solid var(--danger);background:var(--panel-2);border-radius:var(--r-sm);cursor:pointer;margin-top:.5rem;padding:.3rem .5rem;font-size:.7rem;font-weight:500;transition:background .12s}.fsp-cancel-edit-btn:hover{background:var(--danger-bg)}.hint{color:var(--muted);margin:.2rem 0;font-size:.72rem;line-height:1.5}.canvas-area{flex-direction:column;min-height:0;display:flex;overflow:hidden}.canvas-area .canvas-wrap{flex:1 1 0;min-height:0;position:relative}.cf-results-panel{z-index:200;background:var(--float-panel);border:1px solid var(--panel-edge);border-radius:var(--r-lg);box-shadow:var(--panel-shadow), 0 4px 14px #0f111714;color:var(--ink);pointer-events:all;white-space:nowrap;font-family:DM Mono,monospace;font-size:.75rem;position:absolute;top:10px;left:50%;overflow:hidden;transform:translate(-50%)}.cfp-hdr{background:var(--panel-2);border-bottom:1px solid var(--panel-edge);color:var(--panel-heading);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:5px 12px;font-size:.7rem;font-weight:600;display:flex}.cfp-hdr input[type=checkbox]{cursor:pointer;accent-color:var(--accent);margin:0}.cf-results-panel.cfp-collapsed .cfp-hdr{border-bottom:none}.cf-results-panel.cfp-collapsed #cfpContent{display:none}.cfp-content{background:var(--panel);flex-direction:column;display:flex}.cfp-sections{align-items:stretch;gap:0;display:flex}.cfp-disclaimer{white-space:normal;border-top:1px solid var(--panel-edge);max-width:320px;color:var(--muted);padding:6px 14px 8px;font-size:.6rem;line-height:1.45}.cfp-section{border-right:1px solid var(--panel-edge);flex-direction:column;gap:1px;padding:7px 14px 8px;display:flex}.cfp-section:last-child{border-right:none}.cfp-section-hdr{text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid;margin-bottom:3px;padding-bottom:3px;font-size:.68rem;font-weight:700}.cfp-section-hdr.s-cut{color:var(--accent)}.cfp-section-hdr.s-fill{color:#d97757}.cfp-section-hdr.s-net{color:var(--muted)}.cfp-row{justify-content:space-between;gap:10px;line-height:1.55;display:flex}.cfp-row .cfp-lbl{color:var(--muted);font-weight:400}.cfp-row .cfp-val{color:var(--ink);font-weight:600}.cfp-row .cfp-val.cut{color:var(--accent)}.cfp-row .cfp-val.fill{color:#d97757}.cfp-row .cfp-val.net-cut{color:var(--accent)}.cfp-row .cfp-val.net-fill{color:#d97757}.cfp-divider{display:none}.cfp-close{cursor:pointer;color:var(--muted);border-radius:var(--r-sm);background:0 0;border:none;margin-left:auto;padding:2px 5px;font-size:.78rem;line-height:1}.cfp-close:hover{background:var(--panel-edge);color:var(--ink)}.cfp-sheet-tag{color:var(--accent);letter-spacing:.03em;font-weight:600}.sheet-tabs-bar{background:var(--panel);border:1px solid var(--panel-edge);border-radius:0 0 var(--r-lg) var(--r-lg);scrollbar-width:thin;border-top:none;flex-shrink:0;align-items:stretch;gap:0;height:30px;display:flex;overflow-x:auto}.sheet-tab{border:none;border-right:1px solid var(--panel-edge);cursor:pointer;white-space:nowrap;color:var(--muted);background:0 0;align-items:center;gap:.3rem;min-width:64px;padding:0 .6rem;font-family:DM Sans,sans-serif;font-size:.71rem;font-weight:400;transition:background .12s,color .12s;display:inline-flex}.sheet-tab:hover{background:var(--panel-2);color:var(--ink)}.sheet-tab.active{background:var(--panel-2);color:var(--ink);border-bottom:2px solid var(--accent);font-weight:600}.sheet-tab-close{opacity:.4;cursor:pointer;border-radius:3px;padding:2px 3px;font-size:.58rem;line-height:1;transition:opacity .12s,background .12s}.sheet-tab-close:hover{opacity:1;background:#00000014}.sheet-tab.drag-over,.sheet-tab.takeoff-drop-over{background:var(--accent-light);border-color:#2563eb4d}.sheet-tab[draggable=true]{cursor:grab}.sheet-tab.dragging-sheet{opacity:.55}.sheet-tab.sheet-reorder-before{box-shadow:inset 3px 0 0 var(--accent)}.sheet-tab.sheet-reorder-after{box-shadow:inset -3px 0 0 var(--accent)}.sheet-tab-add{cursor:pointer;color:var(--muted);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0 .5rem;font-family:inherit;font-size:1rem;transition:color .12s;display:inline-flex}.sheet-tab-add .vt-ic-sm{width:15px;height:15px}.sheet-tab-add:hover{color:var(--accent)}.elements-panel h2,.takeoffs-panel h2,.layers-panel h2{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.2rem;display:flex}.panel-header-actions{align-items:center;gap:.25rem;display:flex}.panel-header-actions .takeoff-type-flyout-wrap,.panel-header-actions .layer-source-flyout-wrap,.panel-header-actions .elem-type-flyout-wrap{order:1}.panel-header-actions .panel-toggle{order:2}.panel-toggle-btn{background:var(--panel-2);border:1px solid var(--panel-edge);cursor:pointer;border-radius:var(--r-sm);color:var(--muted);justify-content:center;align-items:center;padding:3px 6px;font-size:.68rem;font-weight:600;transition:background .12s,color .12s;display:inline-flex}.panel-toggle-btn .vt-ic-sm{width:15px;height:15px}.panel-toggle-btn:hover{background:var(--accent-light);color:var(--accent);border-color:#2563eb40}.elem-type-flyout-wrap,.takeoff-type-flyout-wrap,.layer-source-flyout-wrap{position:relative}.elem-type-flyout,.takeoff-type-flyout,.layer-source-flyout{z-index:300;background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-md);min-width:230px;padding:4px;position:absolute;top:calc(100% + 5px);right:0;box-shadow:0 8px 24px #0000001a,0 2px 6px #0000000f}.elem-type-flyout[hidden],.takeoff-type-flyout[hidden],.layer-source-flyout[hidden]{display:none}.layer-source-flyout.flyout-up{top:auto;bottom:calc(100% + 5px)}.elem-type-section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;padding:5px 9px 3px;font-size:.62rem;font-weight:600}.elem-type-opt{cursor:pointer;text-align:left;border-radius:var(--r-sm);background:0 0;border:1px solid #0000;align-items:center;gap:9px;width:100%;padding:7px 9px;font-family:DM Sans,sans-serif;transition:background .1s;display:flex}.elem-type-opt:hover{background:var(--panel-2);border-color:var(--panel-edge)}.etype-icon{text-align:center;flex-shrink:0;width:20px;font-size:1.05rem}.etype-info{flex-direction:column;gap:1px;display:flex}.etype-info b{color:var(--ink);font-size:.74rem;font-weight:600}.etype-info small{color:var(--muted);font-size:.61rem}.takeoff-type-opt,.layer-source-opt{cursor:pointer;text-align:left;border-radius:var(--r-sm);background:0 0;border:1px solid #0000;align-items:center;gap:9px;width:100%;padding:7px 9px;font-family:DM Sans,sans-serif;transition:background .1s;display:flex}.takeoff-type-opt:hover,.layer-source-opt:hover{background:var(--panel-2);border-color:var(--panel-edge)}.takeoff-type-icon{text-align:center;flex-shrink:0;width:20px;font-size:1.05rem}.layer-source-icon{text-align:center;width:34px;color:var(--accent);flex-shrink:0;font-size:.68rem;font-weight:700}.takeoff-type-info,.layer-source-info{flex-direction:column;gap:1px;display:flex}.takeoff-type-info b{color:var(--ink);font-size:.74rem;font-weight:600}.takeoff-type-info small{color:var(--muted);font-size:.61rem}.layer-source-info b{color:var(--ink);font-size:.74rem;font-weight:600}.layer-source-info small{color:var(--muted);font-size:.61rem}.file-menu-bar{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem;margin-bottom:.45rem;display:grid;position:relative}.file-menu-wrap{position:static}.file-menu-trigger{border-radius:var(--r-md);justify-content:center;align-items:center;gap:.32rem;width:100%;padding:.42rem .4rem;font-size:.74rem;font-weight:600;display:flex}.file-menu-trigger:after{content:"▾";opacity:.6;font-size:.62rem;line-height:1}.file-menu-trigger[aria-expanded=true]{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-light)}.file-menu-trigger[aria-expanded=true]:after{opacity:1}.file-menu-trigger--accent{background:var(--accent);border-color:var(--accent);color:#fff}.file-menu-trigger--accent:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.file-menu-trigger--accent[aria-expanded=true]{box-shadow:0 0 0 2px var(--accent-light)}.file-menu{z-index:300;background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-md);min-width:178px;max-width:100%;padding:4px;position:absolute;top:calc(100% + 5px);left:0;right:auto;box-shadow:0 8px 24px #0000001f,0 2px 6px #0000000f}.file-menu[hidden]{display:none}.fmenu-item{border-radius:var(--r-sm);cursor:pointer;width:100%;color:var(--ink);text-align:left;white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:9px;padding:8px 10px;font-family:DM Sans,sans-serif;font-size:.76rem;font-weight:500;transition:background .1s,border-color .1s;display:flex}.fmenu-item:hover:not(:disabled){background:var(--panel-2);border-color:var(--panel-edge)}.fmenu-item[hidden]{display:none}.fmenu-item:before{text-align:center;width:18px;color:var(--accent);flex-shrink:0;font-size:.95rem}.fmi--open:before{content:"⤓"}.fmi--file:before{content:"▤"}.fmi--cloud:before{content:"☁"}.fmi--save:before{content:"⤒"}.fmi--saveas:before{content:"⤒";opacity:.55}.fmi--png:before{content:"▣"}.fmi--pdf:before{content:"▥"}.fmi--excel:before{content:"▦"}.fmi--landxml:before{content:"▲"}.fmi--ai:before{content:"✦"}.fmi--share:before{content:"⇪"}.fmi--new:before{content:"✚"}.fmi--link:before{content:"🔗"}.fmi--sync:before{content:"⟳"}.fmi--unlink:before{content:"⛌"}.fmenu-recents{border-top:1px solid var(--panel-edge);margin-top:4px;padding-top:4px}.fmenu-recents[hidden]{display:none}.fmenu-recents-label{letter-spacing:0;color:var(--muted);text-transform:uppercase;padding:5px 10px 3px;font-size:.62rem;font-weight:700}.fmi--recent{font-size:.71rem}.fmi--recent .fmi-recent-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.fmenu-item .provider-logo{flex:none;width:16px;height:16px;font-size:13px}.fmenu-item .provider-logo-ms{grid-template-rows:repeat(2,7px);grid-template-columns:repeat(2,7px);gap:1px}.fmenu-item .provider-logo-ms i{width:7px;height:7px}.provider-logo-local{color:var(--accent);font-size:15px}.file-menu-trigger--sheet{gap:.34rem}.file-menu-trigger--sheet .sheet-logo{flex-shrink:0;width:15px;height:15px;display:block}.cloud-actions{margin-bottom:.45rem}.cloud-login-btn{font-weight:500}.file-util-bar{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem;display:grid}.file-util-btn{justify-content:center;align-items:center;gap:.3rem;padding:.36rem .3rem;font-size:.72rem;font-weight:500;display:flex}.file-util-btn:before{font-size:.92rem;line-height:1}.fu--settings:before{content:"⚙"}.fu--help:before{content:"?"}.fu--fullscreen:before{content:"⛶"}.fu--advanced:before{content:"⚒"}.fu--advanced[aria-pressed=true]{background:var(--accent,#4d9de0);color:#fff;border-color:#0000}.guided-hidden{display:none!important}.empty-state-cta[hidden]{display:none}.empty-state-cta{z-index:40;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.empty-state-card{pointer-events:auto;text-align:center;background:#141821d1;border:1px dashed #ffffff47;border-radius:14px;flex-direction:column;align-items:center;gap:.75rem;max-width:360px;padding:2rem 2.4rem;display:flex;box-shadow:0 10px 40px #00000059}.empty-state-icon{font-size:2.4rem;line-height:1}.empty-state-card h2{margin:0;font-size:1.05rem;font-weight:600}.empty-state-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#4d9de0 0%,#7c4dff 100%);border:none;border-radius:9px;padding:.6rem 1.1rem;font-size:.95rem;font-weight:600}.empty-state-btn:hover{filter:brightness(1.08)}.empty-state-sub{opacity:.75;margin:0;font-size:.78rem}@keyframes guidedFlashPulse{0%,to{box-shadow:0 0 #2563eb00}25%{box-shadow:0 0 0 4px #2563eb66}}.guided-flash{border-radius:5px;animation:.7s ease-in-out 2 guidedFlashPulse;border-color:var(--accent,#2563eb)!important;color:var(--accent,#2563eb)!important}.fu--ai{color:#fff;background:linear-gradient(135deg,#7c4dff 0%,#4d9de0 100%);border:none;font-weight:600}.fu--ai:hover:not(:disabled){filter:brightness(1.08)}.fu--ai:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.5)}.layer-ai-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:.72rem;line-height:1;transition:background .12s,color .12s,opacity .12s}.layer-ai-btn:hover:not(:disabled){background:var(--subtle-hover)}.layer-ai-btn:disabled{opacity:.35;cursor:not-allowed}.ai-menu{z-index:9500;background:var(--panel,#fff);border:1px solid var(--panel-edge,#e5e8ee);border-radius:8px;flex-direction:column;min-width:200px;padding:4px;display:flex;position:fixed;box-shadow:0 8px 28px #00000038}.ai-menu[hidden]{display:none}.ai-menu-item{text-align:left;cursor:pointer;color:var(--ink,#0f1117);background:0 0;border:none;border-radius:6px;padding:.5rem .6rem;font-size:.8rem}.ai-menu-item:hover{background:var(--subtle-hover,#eef2f8)}.ai-modal{width:460px;max-width:calc(100vw - 2rem);max-height:88vh}.ai-modal .settings-body{flex:auto;min-height:0;overflow-y:auto}.ai-modal .scope-cat{border-top:1px solid var(--panel-edge,#e2e8f0);gap:.15rem;padding-top:.35rem}.ai-modal .scope-cat:first-of-type{border-top:none}.ai-modal .scope-cat-head{cursor:pointer;align-items:center;gap:.4rem;font-size:.8rem;display:flex}.ai-modal .scope-cat .ai-radio{margin-left:1.2rem}.ai-modal .scope-captured{color:#2e7d52}.ai-modal .scope-notice-page{margin:.1rem 0 .35rem 1.2rem}.ai-modal .scope-notice{margin:.12rem 0;font-size:.78rem}.ai-modal .notice-type{min-width:70px;color:var(--muted,#6b7a88);text-transform:uppercase;letter-spacing:.03em;font-size:.6rem;display:inline-block}.ai-modal .notice-pri{text-transform:uppercase;border-radius:4px;padding:0 4px;font-size:.6rem}.ai-modal .notice-high{color:#c0392b;font-weight:600}.ai-modal .notice-medium{color:#b8860b}.ai-modal .notice-low{color:#6b7a88}.ai-task-dock{z-index:9500;pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;top:56px;right:12px}.ai-task-chip{pointer-events:auto;background:var(--panel,#fff);max-width:340px;color:var(--ink,#1b2530);border:1px solid var(--panel-edge,#d9e2ec);border-radius:999px;align-items:center;gap:8px;padding:7px 12px;font-size:.78rem;transition:opacity .2s,transform .2s;display:inline-flex;box-shadow:0 6px 18px #0000002e}.ai-task-chip.leaving{opacity:0;transform:translateY(6px)}.ai-task-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ai-task-spin{border:2px solid var(--panel-edge,#c9d6e2);text-align:center;border-top-color:#2f6fed;border-radius:50%;flex:none;width:14px;height:14px;animation:.7s linear infinite ai-task-spin;display:inline-block}.ai-task-chip.done .ai-task-spin,.ai-task-chip.error .ai-task-spin{border:none;width:auto;height:auto;font-weight:700;animation:none}.ai-task-chip.done{border-color:#2e7d52}.ai-task-chip.done .ai-task-spin{color:#2e7d52}.ai-task-chip.error{border-color:#c0392b}.ai-task-chip.error .ai-task-spin{color:#c0392b}.ai-task-close{pointer-events:auto;cursor:pointer;color:var(--muted,#6b7a88);background:0 0;border:none;padding:2px;font-size:.72rem;line-height:1}@keyframes ai-task-spin{to{transform:rotate(360deg)}}.ai-modal .ai-radio{cursor:pointer;margin:.25rem 0;font-size:.78rem;display:block}.ai-modal textarea{width:100%;font:inherit;border:1px solid var(--input-border,#d1d5db);background:var(--input-bg,#fff);color:var(--ink,#0f1117);resize:vertical;box-sizing:border-box;border-radius:6px;padding:.4rem;font-size:.78rem}.ai-review-list{background:var(--input-bg,#f7f8fa);border:1px solid var(--input-border,#e5e8ee);border-radius:6px;max-height:38vh;margin:.5rem 0;padding:.5rem .6rem;font-size:.78rem;overflow:auto}.ai-warning-list{color:#6f4200;background:#fff7e6;border:1px solid #d68a1c;border-radius:6px;max-height:22vh;margin:.5rem 0;padding:.5rem .6rem;font-size:.78rem;line-height:1.45;overflow:auto}.ai-report-text{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--input-bg,#f7f8fa);border:1px solid var(--input-border,#e5e8ee);max-height:56vh;color:var(--ink,#0f1117);border-radius:6px;margin:0;padding:.6rem;font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;overflow:auto}.takeoff-list{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.list-toolbar{align-items:center;gap:4px;margin-bottom:6px;display:flex}.list-toolbar[hidden]{display:none}.list-toolbar .list-search{min-width:0;font:inherit;border:1px solid var(--panel-edge,#cbd5e1);background:var(--input-bg,#fff);color:var(--ink,#0f1117);border-radius:6px;flex:auto;padding:3px 7px;font-size:.72rem}.list-toolbar .list-filter,.list-toolbar .list-sort{min-width:0;font:inherit;border:1px solid var(--panel-edge,#cbd5e1);background:var(--input-bg,#fff);color:var(--ink,#0f1117);border-radius:6px;flex:0 auto;padding:3px 2px;font-size:.66rem}.panel-header-actions .panel-toggle-btn.active{color:var(--accent,#2563eb);background:#2563eb1f;border-radius:5px}.takeoff-item{border:1px solid var(--panel-edge);background:var(--panel-2);border-radius:var(--r-sm);gap:.22rem;min-width:0;padding:.35rem .4rem;transition:border-color .15s,box-shadow .15s;display:grid}.takeoff-item.hidden-takeoff{opacity:.4}.takeoff-item.active-takeoff{border-color:var(--accent);box-shadow:0 0 0 2px #2563eb1f}.takeoff-item.editing-takeoff{border-color:var(--accent);background:#2563eb0f;box-shadow:0 0 0 2px #2563eb59}.takeoff-color-dot{border:1px solid var(--panel-edge,#cbd5e1);cursor:pointer;appearance:none;background:0 0;border-radius:50%;flex:none;width:15px;height:15px;padding:0}.takeoff-color-dot::-webkit-color-swatch-wrapper{padding:0}.takeoff-color-dot::-webkit-color-swatch{border:none;border-radius:50%}.takeoff-color-dot::-moz-color-swatch{border:none;border-radius:50%}.takeoff-item[draggable=true]{cursor:grab}.takeoff-item.dragging{opacity:.55;cursor:grabbing}.takeoff-header{justify-content:space-between;align-items:center;gap:.2rem;min-width:0;display:flex}.takeoff-type-tag{color:#fff;letter-spacing:.02em;border-radius:20px;flex-shrink:0;align-items:center;gap:3px;padding:2px 6px;font-size:.6rem;font-weight:600;display:inline-flex}.takeoff-type-tag[data-takeoff-type=distance]{background:#0ea5e9}.takeoff-type-tag[data-takeoff-type=area]{background:#10b981}.takeoff-type-tag[data-takeoff-type=count]{background:#8b5cf6}.takeoff-name-input{flex:1;min-width:0;font-size:.72rem;font-weight:600}.takeoff-actions{flex-shrink:0;align-items:center;gap:.15rem;display:flex}.takeoff-vis-btn,.takeoff-del-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:.72rem;line-height:1;transition:background .12s,color .12s}.takeoff-vis-btn:hover{background:var(--subtle-hover);color:var(--ink)}.takeoff-del-btn:hover{background:var(--danger-bg);color:var(--danger)}.takeoff-details{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.67rem;display:flex}.takeoff-total{color:var(--ink);font-family:DM Mono,monospace;font-weight:600}.takeoff-edit-btn{border-radius:var(--r-sm);width:100%;margin-top:.15rem;padding:.14rem .35rem;font-size:.65rem}.takeoff-edit-btn.active{background:var(--accent-light);color:var(--accent);border-color:#2563eb4d;font-weight:500}.element-list{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.element-item{border:1px solid var(--panel-edge);background:var(--panel-2);border-radius:var(--r-sm);gap:.22rem;padding:.35rem .4rem;transition:border-color .15s;display:grid}.element-item.hidden-el{opacity:.4}.existing-sheet-inline-hint{color:#4c1d95;border-radius:var(--r-sm);background:#8b5cf614;border:1px solid #8b5cf638;padding:.35rem .45rem;font-size:.72rem;line-height:1.35}.elem-header{justify-content:space-between;align-items:center;gap:.2rem;display:flex}.elem-type-tag{color:#fff;letter-spacing:.02em;border-radius:20px;flex-shrink:0;align-items:center;gap:3px;padding:2px 6px;font-size:.6rem;font-weight:600;display:inline-flex}.takeoff-type-tag.icon-only,.elem-type-tag.icon-only{gap:0;padding:2px 6px;font-size:.78rem;line-height:1}.elem-type-tag[data-etype=platform]{background:#3b82f6}.elem-type-tag[data-etype=slope]{background:#10b981}.elem-type-tag[data-etype=reduce]{background:#ef4444}.elem-type-tag[data-etype=raise]{color:#1a1a1a;background:#f59e0b}.elem-type-tag[data-etype=feature-surface]{background:#8b5cf6}.elem-name-input{flex:1;min-width:0;font-size:.72rem;font-weight:600}.elem-actions{flex-shrink:0;align-items:center;gap:.15rem;display:flex}.elem-move-btn,.elem-vis-btn,.elem-del-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:.72rem;line-height:1;transition:background .12s,color .12s}.elem-move-btn:hover:not(:disabled),.elem-vis-btn:hover{background:var(--subtle-hover);color:var(--ink)}.elem-del-btn:hover{background:var(--danger-bg);color:var(--danger)}.elem-move-btn:disabled{opacity:.25;cursor:default}.elem-details{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.67rem;display:flex}.elem-details input[type=number]{width:55px;padding:.12rem .2rem;font-size:.67rem}.elem-stats{color:var(--muted);gap:.5rem;font-size:.64rem;display:flex}.elem-pick-btn{border-radius:var(--r-sm);width:100%;margin-top:.15rem;padding:.14rem .35rem;font-size:.65rem}.elem-pick-btn.picking{background:var(--accent-light);color:var(--accent);border-color:#2563eb4d;font-weight:500}.estimate-panel.collapsed .estimate-panel-body{display:none}.estimate-list{gap:.25rem;margin:0;padding:0;list-style:none;display:grid}.estimate-item{border:1px solid var(--panel-edge);background:var(--panel-2);border-radius:var(--r-sm);min-width:0;transition:border-color .15s,box-shadow .15s}.estimate-item.est-drop{border-color:var(--accent);box-shadow:0 -2px 0 var(--accent) inset}.estimate-item.dragging{opacity:.5}.est-row{cursor:pointer;grid-template-columns:auto auto 1fr auto;align-items:center;gap:.35rem;min-width:0;padding:.3rem .4rem;display:grid}.est-drag{cursor:grab;color:var(--muted);-webkit-user-select:none;user-select:none;font-size:.8rem;line-height:1}.est-drag:active{cursor:grabbing}.est-type-tag{color:#fff;background:var(--muted);border-radius:5px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;font-size:.8rem;line-height:1;display:inline-flex}.est-type-cut{background:#ef4444}.est-type-fill{background:#3b82f6}.est-type-distance{background:#0ea5e9}.est-type-area{background:#10b981}.est-type-count{background:#8b5cf6}.est-type-volume{background:#d97706}.est-type-scope{background:#6b7280}.est-main{flex-direction:column;gap:1px;min-width:0;display:flex}.est-name{text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.est-meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.6rem;overflow:hidden}.est-right{flex-direction:column;flex:none;align-items:flex-end;gap:1px;display:flex}.est-qty{color:var(--ink);white-space:nowrap;font-family:DM Mono,monospace;font-size:.68rem;font-weight:600}.est-qty.est-calc{color:var(--muted);font-style:italic;font-weight:400}.est-cost{color:var(--accent);white-space:nowrap;font-family:DM Mono,monospace;font-size:.62rem}.est-drawer{border-top:1px dashed var(--panel-edge);gap:.35rem;padding:.45rem .45rem .5rem;display:grid}.est-ctrl{color:var(--muted);justify-content:space-between;align-items:center;gap:.4rem;font-size:.64rem;display:flex}.est-sel,.est-num,.est-text,.est-dur{padding:.12rem .2rem;font-size:.66rem}.est-sel,.est-text{max-width:150px}.est-num,.est-dur{width:64px}.est-manual{border-bottom:1px dashed var(--panel-edge);gap:.25rem;padding-bottom:.3rem;display:grid}.est-rate-sec{border-top:1px dashed var(--panel-edge);gap:.3rem;padding-top:.25rem;display:grid}.est-rate-head{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.62rem;font-weight:700}.est-flat{align-items:center;gap:.3rem;display:flex}.est-flat-rate{width:80px}.est-flat-unit{color:var(--muted);font-size:.62rem}.est-buildup{gap:.25rem;display:grid}.est-bu-row{grid-template-columns:auto 1fr auto auto;align-items:center;gap:.25rem;display:grid}.est-bu-kind{padding:.1rem;font-size:.6rem}.est-bu-desc{min-width:0;padding:.1rem .2rem;font-size:.64rem}.est-bu-rate{width:58px;padding:.1rem .2rem;font-size:.64rem}.est-bu-add{flex-wrap:wrap;gap:.2rem;display:flex}.est-bu-total{color:var(--ink);font-family:DM Mono,monospace;font-size:.64rem;font-weight:600}.est-lib{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.est-lib-sel{max-width:140px}.est-mini-btn{border:1px solid var(--panel-edge);background:var(--panel);color:var(--muted);cursor:pointer;border-radius:4px;padding:.1rem .3rem;font-size:.6rem;line-height:1.3}.est-mini-btn:hover{color:var(--accent);border-color:var(--accent)}.est-bu-del{background:0 0;border:none;padding:0 2px}.est-bu-del:hover{color:var(--danger)}.est-link-btn{color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:none;padding:.12rem 0;font-size:.62rem}.est-link-btn:hover{text-decoration:underline}.est-del-line{color:var(--danger)}.est-drawer-foot{justify-content:space-between;align-items:center;display:flex}.est-stage-group{border-bottom:1px solid var(--panel-edge);grid-template-columns:1fr auto auto;align-items:center;gap:.35rem;padding:.4rem .2rem .18rem;list-style:none;display:grid}.est-stage-group.est-drop{background:var(--accent-light)}.est-stage-name{text-transform:uppercase;letter-spacing:.05em;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:.64rem;font-weight:700;overflow:hidden}.est-stage-sub{color:var(--muted);white-space:nowrap;font-family:DM Mono,monospace;font-size:.58rem}.est-stage-ctrls{gap:1px;display:inline-flex}.est-stage-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:3px;padding:1px 3px;font-size:.62rem;line-height:1}.est-stage-btn:hover:not(:disabled){background:var(--subtle-hover);color:var(--ink)}.est-stage-btn:disabled{opacity:.25;cursor:default}.est-stage-del:hover{background:var(--danger-bg);color:var(--danger)}.est-actions{gap:.3rem;padding:.3rem 0;list-style:none;display:flex}.est-add-btn{border-radius:var(--r-sm);border:1px dashed var(--panel-edge);color:var(--muted);cursor:pointer;background:0 0;flex:1;padding:.22rem;font-size:.64rem}.est-add-btn:hover{color:var(--accent);border-color:var(--accent)}.est-siteai{flex-wrap:wrap;align-items:center;gap:.3rem;padding:.2rem .1rem;list-style:none;display:flex}.est-siteai-label{color:var(--muted);margin-right:auto;font-size:.62rem}.est-siteai-sync{font-weight:600}.gantt-overlay{z-index:4000;background:#00000080;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.gantt-card{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-lg);box-shadow:var(--panel-shadow);flex-direction:column;width:min(900px,96vw);max-height:86vh;display:flex;overflow:hidden}.gantt-head{border-bottom:1px solid var(--panel-edge);align-items:center;gap:.6rem;padding:.7rem .9rem;display:flex}.gantt-title{color:var(--ink);font-size:.85rem;font-weight:700}.gantt-sub{color:var(--muted);margin-right:auto;font-family:DM Mono,monospace;font-size:.7rem}.gantt-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 .3rem;font-size:1.2rem;line-height:1}.gantt-close:hover{color:var(--ink)}.gantt-body{padding:.8rem .9rem 1rem;overflow:auto}.gantt-empty{color:var(--muted);margin:.5rem 0;font-size:.78rem;line-height:1.5}.gantt-note{color:var(--muted);margin:0 0 .6rem;font-size:.64rem;line-height:1.4}.gantt-grid{grid-template-columns:130px 1fr;align-items:center;row-gap:.35rem;display:grid}.gantt-corner{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.62rem;font-weight:700}.gantt-axis{border-bottom:1px solid var(--panel-edge);height:1.15rem;position:relative}.gantt-tick{color:var(--muted);font-family:DM Mono,monospace;font-size:.58rem;position:absolute;top:0;transform:translate(-50%)}.gantt-tick:after{content:"";background:var(--panel-edge);width:1px;height:5px;position:absolute;top:.95rem;left:50%}.gantt-rowlabel{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;padding-right:.4rem;font-size:.72rem;overflow:hidden}.gantt-track{background:var(--panel-2);border-radius:4px;height:1.4rem;position:relative}.gantt-bar{color:#fff;white-space:nowrap;border-radius:4px;align-items:center;padding:0 .35rem;font-size:.6rem;font-weight:600;display:flex;position:absolute;top:2px;bottom:2px;overflow:hidden}.gantt-none{color:var(--muted);padding-left:.3rem;font-size:.7rem}.gantt-stage-label.gantt-clickable{cursor:pointer}.gantt-stage-label.gantt-clickable:hover{color:var(--accent)}.gantt-line-label{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;padding-left:.85rem;font-size:.64rem;overflow:hidden}.gantt-line-track{background:0 0;height:1.1rem}.gantt-line-bar{opacity:.78;font-size:.55rem}.gantt-dep{color:var(--accent);font-size:.56rem}.exch-overlay{z-index:4000;background:#00000080;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.exch-card{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-lg);box-shadow:var(--panel-shadow);flex-direction:column;width:min(420px,96vw);max-height:86vh;display:flex;overflow:hidden}.exch-head{border-bottom:1px solid var(--panel-edge);align-items:center;padding:.7rem .9rem;display:flex}.exch-title{color:var(--ink);margin-right:auto;font-size:.85rem;font-weight:700}.exch-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 .3rem;font-size:1.2rem;line-height:1}.exch-close:hover{color:var(--ink)}.exch-body{padding:.8rem .9rem;overflow:auto}.exch-hint{color:var(--muted);margin:0 0 .6rem;font-size:.72rem}.exch-group{border-top:1px solid var(--panel-edge);gap:.3rem;padding:.4rem 0;display:grid}.exch-group:first-of-type{border-top:none}.exch-group-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:.1rem;font-size:.62rem;font-weight:700}.exch-cb{color:var(--ink);cursor:pointer;align-items:center;gap:.4rem;font-size:.76rem;display:flex}.exch-foot{border-top:1px solid var(--panel-edge);flex-wrap:wrap;gap:.4rem;padding:.7rem .9rem;display:flex}.exch-btn{border-radius:var(--r-sm);border:1px solid var(--panel-edge);background:var(--panel-2);color:var(--ink);cursor:pointer;padding:.35rem .6rem;font-size:.72rem}.exch-btn:hover{border-color:var(--accent)}.exch-primary{background:var(--accent);color:#fff;border-color:var(--accent);margin-right:auto}.exch-primary:hover{filter:brightness(1.05)}.est-ai-btn{color:var(--accent);border-style:solid;border-color:var(--accent)}.est-ai-btn:hover{background:var(--accent);color:#fff}.ai-plan-preview{font-size:.78rem}.ai-plan-summary{margin-bottom:.5rem;font-weight:600}.ai-plan-warn{background:var(--danger-bg);color:var(--danger);border-radius:var(--r-sm);margin-bottom:.6rem;padding:.4rem .5rem;font-size:.72rem}.ai-plan-stages{gap:.5rem;max-height:50vh;display:grid;overflow:auto}.ai-plan-stage{border:1px solid var(--panel-edge);border-radius:var(--r-sm);padding:.4rem .5rem}.ai-plan-stage-name{text-transform:uppercase;letter-spacing:.04em;color:var(--ink);margin-bottom:.25rem;font-size:.72rem;font-weight:700}.ai-plan-line{justify-content:space-between;gap:.6rem;padding:.1rem 0;font-size:.72rem;display:flex}.ai-plan-line-meta{color:var(--muted);white-space:nowrap;font-family:DM Mono,monospace;font-size:.66rem}.estimate-footer{border-top:1px solid var(--panel-edge);color:var(--ink);margin-top:.45rem;padding-top:.4rem;font-family:DM Mono,monospace;font-size:.64rem;font-weight:600}.estimate-footer:empty{display:none}.estimate-disclaimer{color:var(--muted);margin-top:.35rem;font-size:.6rem;line-height:1.4}a.js-open-terms{color:inherit;cursor:pointer;text-decoration:underline}a.js-open-terms:hover{color:var(--ink)}.coord-display{color:var(--muted);pointer-events:none;flex-shrink:0;align-items:center;gap:.8rem;margin-left:auto;padding:0 .7rem;font-family:DM Mono,monospace;font-size:.63rem;display:flex}#fsLeftPanel{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-lg);min-height:0;box-shadow:var(--panel-shadow);flex-direction:column;display:flex;overflow:hidden}#fsLeftPanel[hidden]{display:none}.fsp-hdr{color:#c8d5ec;border-radius:var(--r-lg) var(--r-lg) 0 0;background:#1e2128;flex-shrink:0;align-items:center;gap:.4rem;padding:.42rem .6rem;font-size:.72rem;font-weight:600;display:flex}.fsp-hdr span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.fsp-hdr button{color:#9aa8c0;cursor:pointer;border-radius:var(--r-sm);background:#ffffff14;border:1px solid #ffffff26;flex-shrink:0;margin-left:auto;padding:2px 6px;font-family:inherit;font-size:.65rem;transition:background .12s}.fsp-hdr button:hover{background:#ffffff26}.fsp-tabs{background:var(--panel-2);border-bottom:1px solid var(--panel-edge);flex-shrink:0;display:flex}.fsp-tab{cursor:pointer;color:var(--muted);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.32rem .55rem;font-family:DM Sans,sans-serif;font-size:.65rem;font-weight:500;transition:color .12s}.fsp-tab:hover{color:var(--ink)}.fsp-tab.active{background:var(--panel);color:var(--accent);border-bottom:2px solid var(--accent);font-weight:600}.fsp-body{flex-direction:column;flex:1;gap:.45rem;min-height:0;padding:.5rem;display:flex;overflow-y:auto}.fsp-section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:.25rem;font-size:.58rem;font-weight:600}.fsp-item-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.fsp-item-row{background:var(--panel-2);cursor:pointer;border-radius:var(--r-sm);border:1px solid #0000;align-items:center;gap:.3rem;padding:.25rem .4rem;font-size:.68rem;transition:background .1s,border-color .1s;display:flex}.fsp-item-row.active{background:var(--accent-light);color:var(--accent);border-color:#2563eb40;font-weight:500}.fsp-item-row:hover:not(.active){background:var(--control-hover);border-color:var(--panel-edge)}.fsp-item-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.fsp-item-del{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:3px;flex-shrink:0;padding:0 2px;font-size:.62rem;transition:color .1s}.fsp-item-del:hover{color:var(--danger)}.fsp-item-batter{color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:.18rem;padding:0 2px;font-size:.6rem;display:flex}.fsp-item-batter input{cursor:pointer;margin:0}.fsp-item-batter:has(input:checked){color:var(--accent)}.fsp-actions{gap:.3rem;display:flex}.fsp-add-btn,.fsp-draw-btn{border-radius:var(--r-sm);flex:1;padding:.22rem .4rem;font-size:.65rem}.fsp-draw-btn.drawing{background:var(--accent-light);color:var(--accent);border-color:#2563eb4d;font-weight:500}.fsp-detail{border-top:1px solid var(--panel-edge);flex-direction:column;gap:.28rem;margin-top:.1rem;padding-top:.4rem;display:flex}.fsp-field-row{align-items:center;gap:.3rem;font-size:.68rem;display:flex}.fsp-field-row label{min-width:46px;color:var(--muted);flex-shrink:0;font-weight:600}.fsp-field-row input,.fsp-field-row select,.fsp-field-row textarea{background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--r-sm);flex:1;padding:.18rem .35rem;font-family:inherit;font-size:.68rem}.fsp-field-row textarea{resize:vertical;min-height:2.5rem}.takeoff-label-settings{margin-top:0}.takeoff-label-checks{flex-wrap:wrap;gap:.28rem .55rem;font-size:.68rem;display:flex}.takeoff-label-checks label{color:var(--ink);align-items:center;gap:.22rem;font-weight:500;display:inline-flex}.fsp-table-wrap{border:1px solid var(--panel-edge);border-radius:var(--r-sm);background:var(--panel-2);min-height:180px;max-height:calc(100vh - 260px);overflow:hidden auto}.fsp-coord-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:.67rem}.fsp-coord-table th{background:var(--control-hover);text-align:left;border-bottom:1px solid var(--panel-edge);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap;padding:.2rem .25rem;font-size:.62rem;font-weight:600;position:sticky;top:0;overflow:hidden}.fsp-coord-table td{border-bottom:1px solid var(--panel-edge);padding:.12rem .25rem;overflow:hidden}.fsp-coord-table th:first-child,.fsp-coord-table td:first-child{text-align:right;width:26px;padding-right:.3rem}.fsp-coord-table th:last-child,.fsp-coord-table td:last-child{text-align:center;width:22px;padding:0}.fsp-coord-table tr:hover td{background:#2563eb0a}.fsp-coord-table tr:focus-within td{background:#2563eb2e}.fsp-coord-table input[type=number]{box-sizing:border-box;width:100%;min-width:0;color:var(--ink);background:0 0;border:none;padding:0;font-family:DM Mono,monospace;font-size:.67rem}.fsp-coord-table input[type=number]:focus{outline:1px solid var(--accent);background:#fff;border-radius:2px}.fsp-coord-table tr.fsp-row-new td{background:#2563eb24}.fsp-coord-table input.fsp-z-pending{outline:1px solid var(--accent);background:#fff;border-radius:2px;font-size:.78rem;font-weight:600}.fsp-pt-del{cursor:pointer;color:var(--muted);background:0 0;border:none;padding:0 2px;font-size:.62rem;transition:color .1s}.fsp-pt-del:hover{color:var(--danger)}.fsp-coord-table td.fsp-pt-actions,.fsp-coord-table th.fsp-pt-actions{white-space:nowrap;text-align:center;width:42px;padding:0}.fsp-pt-actions{white-space:nowrap}.fsp-pt-add{cursor:pointer;color:var(--accent,#4a6a9a);opacity:.45;background:0 0;border:none;padding:0 3px;font-size:.7rem;line-height:1;transition:opacity .1s}.fsp-pt-add:hover{opacity:1}.fsp-hint{color:var(--muted);font-size:.68rem;font-style:italic;line-height:1.5}.fsp-prop-group{border-top:1px solid var(--panel-edge);flex-direction:column;gap:.2rem;margin-top:.1rem;padding-top:.3rem;display:flex}.fsp-prop-row{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.fsp-prop-lbl{color:var(--muted);flex:1;min-width:0;font-size:.62rem}.fsp-prop-input{border:1px solid var(--input-border);background:var(--input-bg);border-radius:var(--r-sm);width:72px;color:var(--ink);padding:.12rem .25rem;font-family:DM Mono,monospace;font-size:.7rem}.fsp-prop-input-sm{width:52px}textarea.fsp-prop-input{resize:vertical;width:100%;min-height:2.6rem;font-family:inherit}.fsp-color-input{border:1px solid var(--input-border);cursor:pointer;background:0 0;border-radius:4px;width:36px;height:24px;padding:1px 2px}.fsp-prop-range{accent-color:var(--accent,#4a6a9a);flex:1;margin:0 .3rem}.fsp-prop-unit{color:var(--muted);font-size:.62rem}.fsp-prop-select{border:1px solid var(--input-border);background:var(--input-bg);border-radius:var(--r-sm);width:100%;color:var(--ink);padding:.16rem .35rem;font-family:inherit;font-size:.68rem}.fsp-vol-section{background:var(--panel-2);border-radius:var(--r-sm);border:1px solid var(--panel-edge);padding:.35rem .4rem}.fsp-vol-table{border-collapse:collapse;width:100%;font-size:.65rem}.fsp-vol-table td{vertical-align:middle;padding:.14rem .2rem}.fsp-vol-table td:nth-child(2){text-align:right;color:var(--ink);font-family:DM Mono,monospace;font-weight:500}.fsp-vol-table td:nth-child(3){color:var(--muted);padding-left:.2rem}.fsp-vol-table tr.vol-cut td:nth-child(2){color:#ef4444}.fsp-vol-table tr.vol-fill td:nth-child(2){color:#10b981}.sheet-tab.ground-sheet-tab{color:#4c1d95;border-top:2px solid #8b5cf6;font-weight:600}.sheet-tab.ground-sheet-tab.active{border-top-color:#7c3aed}.totals-panel h2{justify-content:space-between;align-items:center;display:flex}.totals-panel.collapsed .totals-panel-body{display:none}.totals-table{border-collapse:collapse;width:100%;font-size:.67rem}.totals-table th{background:var(--panel-2);text-align:left;border-bottom:1px solid var(--panel-edge);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:.2rem .35rem;font-size:.62rem;font-weight:600}.totals-table td{border-bottom:1px solid var(--panel-edge);padding:.17rem .35rem}.totals-table .totals-cut{text-align:right;color:#2563eb;font-family:DM Mono,monospace;font-weight:500}.totals-table .totals-fill{text-align:right;color:#059669;font-family:DM Mono,monospace;font-weight:500}.totals-table .totals-ground-row td{color:var(--muted);font-style:italic}.totals-table tfoot .totals-grand td{border-top:2px solid var(--panel-edge);background:var(--panel-2);font-weight:700}.totals-table tfoot .totals-grand .totals-cut{color:#1d4ed8}.totals-table tfoot .totals-grand .totals-fill{color:#047857}.panel-toggle{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:3px;padding:1px 4px;font-size:.58rem;transition:transform .15s,color .12s}.panel-toggle:hover{color:var(--ink)}.layers-panel.collapsed .panel-toggle{transform:rotate(180deg)}.layers-panel.collapsed .layers-panel-body,.takeoffs-panel.collapsed .takeoffs-panel-body,.elements-panel.collapsed .elements-panel-body{display:none}.view3d-overlay{z-index:1000;background:#101923;flex-direction:column;display:flex;position:fixed;inset:0}.view3d-overlay[hidden]{display:none}.view3d-toolbar{color:#8ea3ba;background:#111923;border-bottom:1px solid #223244;flex-shrink:0;justify-content:flex-start;align-items:center;gap:.5rem;padding:.46rem 3.25rem .46rem 1rem;font-size:.75rem;display:flex}.view3d-toolbar>span:first-child{flex:1;min-width:14rem}.view3d-vexag-btn{color:#b8c8d9;cursor:pointer;border-radius:var(--r-sm);white-space:nowrap;background:#e2ecf612;border:1px solid #9db1c638;padding:4px 12px;font-family:inherit;font-size:.71rem;transition:background .12s}.view3d-vexag-btn:hover{background:#e2ecf621}#close3dBtn{color:#dbe8f5;background:#e2ecf614;border:1px solid #9db1c638;margin-left:.25rem}#close3dBtn:hover{color:#fde2e2;background:#f871712e;border-color:#f8717166}.view3d-canvas-wrap{flex:1;min-height:0;display:flex;position:relative}#canvas3d{cursor:grab;flex:1;width:100%;min-height:0;display:block}#canvas3d:active{cursor:grabbing}#canvas3dOverlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.view3d-sheet-tabs{scrollbar-width:thin;background:#111923;border-top:1px solid #223244;flex-shrink:0;align-items:stretch;height:28px;display:flex;overflow-x:auto}.view3d-sheet-tab{cursor:pointer;color:#7f94aa;white-space:nowrap;background:0 0;border:none;border-right:1px solid #223244;align-items:center;padding:0 .6rem;font-family:DM Sans,sans-serif;font-size:.71rem;transition:background .12s,color .12s;display:inline-flex}.view3d-sheet-tab:hover{color:#a0b4d0;background:#ffffff0d}.view3d-sheet-tab.active{color:#93b8f8;background:#2563eb26;border-bottom:2px solid #2563eb;font-weight:600}.view3d-layers-panel{z-index:1010;background:#1a2235;border:1px solid #2e3f5c;border-radius:6px;min-width:190px;padding:.5rem .75rem .6rem;position:fixed;top:42px;right:90px;box-shadow:0 4px 16px #00000080}.view3d-layers-title{color:#7a90b4;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #2e3f5c;margin-bottom:.4rem;padding-bottom:.3rem;font-size:.68rem;font-weight:600}.view3d-layer-row{color:#a0b4d0;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.45rem;padding:.2rem 0;font-size:.75rem;display:flex}.view3d-layer-row input[type=checkbox]{accent-color:#2563eb;cursor:pointer}.view3d-layers-panel[hidden]{display:none}.coord-z{color:#6366f1;font-weight:600}.xyz-tooltip{z-index:500;color:#c8d5ec;border-radius:var(--r-md);pointer-events:none;white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f1117e6;border:1px solid #6482c833;flex-direction:column;gap:2px;padding:5px 9px;font-family:DM Mono,monospace;font-size:.66rem;line-height:1.45;display:flex;position:fixed;box-shadow:0 4px 12px #0006}.xyz-tooltip[hidden]{display:none}.xyz-tooltip .tip-z{color:#818cf8;font-weight:600}.canvas-wrap:fullscreen{background:#eaedf2;padding:.6rem}@media (max-width:1180px){.app{height:100dvh;min-height:100dvh;overflow:hidden auto}.workspace,.workspace.fs-open{grid-template-rows:auto minmax(360px,58dvh) auto auto;grid-template-columns:minmax(0,1fr);height:auto;min-height:calc(100dvh - .7rem)}#vtoolbar,.workspace.fs-open #vtoolbar{z-index:500;scrollbar-width:thin;flex-flow:row;grid-area:1/1;align-items:stretch;gap:2px;width:100%;max-width:100%;padding:4px;position:sticky;top:.35rem;overflow:auto hidden}.canvas-area,.workspace.fs-open .canvas-area{grid-area:2/1;min-height:360px;overflow:hidden}.canvas-wrap{min-height:0}#fsLeftPanel,.workspace.fs-open #fsLeftPanel{grid-area:3/1;max-height:70dvh}.right-dock,.workspace.fs-open .right-dock{grid-area:4/1;grid-template-columns:minmax(0,1fr);height:auto;overflow:visible}.dock-panel{width:100%}.vtool-group{border-bottom:none;border-right:1px solid var(--sidebar-divider);flex-direction:row;flex:none;margin-bottom:0;margin-right:3px;padding-bottom:0;padding-right:4px}.vtool-group:last-child{border-right:none;margin-right:0;padding-right:0}.vtool{width:48px;min-width:48px}.vtool-fontsize{flex:none;align-self:center;width:auto;min-width:52px;margin-top:0}.vtool-group-label{writing-mode:sideways-lr;align-self:center;min-width:28px;padding:0 4px}.vtool-flyout-wrap{width:auto;position:static}.vtool-flyout{z-index:900;min-width:0;max-height:calc(100dvh - 92px);position:fixed;top:70px;left:.7rem;right:.7rem;overflow-y:auto}}@media (max-width:640px){.app{padding:.25rem}.workspace,.workspace.fs-open{grid-template-rows:auto minmax(320px,54dvh) auto auto;gap:.3rem;min-height:calc(100dvh - .5rem)}#vtoolbar,.workspace.fs-open #vtoolbar{top:.25rem}.canvas-area{min-height:320px}.canvas-wrap{min-height:0}.right-dock{gap:.3rem}.dock-panel{padding:.5rem}.view3d-toolbar{flex-flow:wrap}.view3d-toolbar>span:first-child{flex-basis:100%;min-width:0}}.settings-overlay{z-index:9000;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.settings-overlay[hidden]{display:none}.settings-modal{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r-lg);flex-direction:column;width:380px;max-width:calc(100vw - 2rem);display:flex;overflow:hidden;box-shadow:0 8px 32px #00000038}.settings-hdr{border-bottom:1px solid var(--panel-edge);background:var(--panel-2);justify-content:space-between;align-items:center;padding:.65rem .8rem .55rem;display:flex}.settings-title{color:var(--panel-heading);letter-spacing:.01em;font-size:.82rem;font-weight:600}.settings-close{cursor:pointer;color:var(--muted);border-radius:var(--r-sm);background:0 0;border:none;padding:.15rem .3rem;font-size:.85rem;line-height:1}.settings-close:hover{background:var(--panel-edge);color:var(--ink)}.settings-body{flex-direction:column;gap:.55rem;padding:.75rem .9rem;display:flex}.settings-body[hidden]{display:none}.settings-tabs{border-bottom:1px solid var(--panel-edge);gap:.25rem;padding:0 .9rem;display:flex}.settings-tab{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:.5rem .6rem;font-size:.8rem}.settings-tab:hover{color:var(--panel-heading)}.settings-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.settings-template-controls{flex-direction:column;gap:.45rem;display:flex}.settings-template-current{font-size:.82rem}.settings-template-buttons{gap:.4rem;display:flex}.settings-row{flex-direction:column;gap:.28rem;display:flex}.settings-toggle-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:.75rem;display:grid}.settings-toggle-row>label:first-child{grid-column:1}.settings-toggle-row .settings-toggle{grid-area:1/2/span 2;justify-self:end}.settings-toggle-row .settings-hint{grid-column:1}.settings-row>label:first-child{color:var(--ink);text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:600}.settings-row input[type=text],.settings-row input[type=number],.settings-row select{border:1px solid var(--input-border);border-radius:var(--r-sm);background:var(--input-bg);width:100%;color:var(--ink);outline:none;padding:.3rem .45rem;font-size:.78rem;transition:border-color .15s}.settings-row input[type=text]:focus,.settings-row input[type=number]:focus,.settings-row select:focus{border-color:var(--input-focus)}.settings-hint{color:var(--muted);font-size:.68rem}.settings-color-row{align-items:center;gap:.6rem;display:flex}.settings-color-row input[type=color]{border:1px solid var(--input-border);border-radius:var(--r-sm);background:var(--input-bg);cursor:pointer;flex-shrink:0;width:38px;height:30px;padding:2px 3px}.settings-color-swatches{flex-wrap:wrap;gap:5px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;outline:none;width:22px;height:22px;padding:0;transition:border-color .12s,transform .1s}.swatch:hover{border-color:var(--accent);transform:scale(1.15)}.swatch.active{border-color:var(--accent)}.settings-toggle{cursor:pointer;align-items:center;gap:.5rem;display:flex}.settings-toggle input[type=checkbox]{display:none}.toggle-track{background:var(--panel-edge);border-radius:9px;flex-shrink:0;width:34px;height:18px;transition:background .2s;position:relative}.settings-toggle input:checked+.toggle-track{background:var(--accent)}.toggle-knob{background:#fff;border-radius:50%;width:14px;height:14px;transition:left .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000040}.settings-toggle input:checked+.toggle-track .toggle-knob{left:18px}.settings-label-controls{gap:.45rem;display:grid}.settings-number-row{color:var(--muted);grid-template-columns:minmax(0,1fr) 72px;align-items:center;gap:.45rem;font-size:.72rem;display:grid}.settings-check-row{flex-wrap:wrap;gap:.35rem .65rem;display:flex}.settings-check-row label{color:var(--ink);align-items:center;gap:.25rem;font-size:.72rem;font-weight:500;display:inline-flex}.settings-sep{background:var(--panel-edge);height:1px;margin:.15rem 0}.palette-stops-row{align-items:center;gap:6px;display:flex}.palette-stops-row input[type=color].palette-stop{border:1px solid var(--input-border);border-radius:var(--r-sm);background:var(--input-bg);cursor:pointer;flex-shrink:0;width:38px;height:30px;padding:2px 3px}#paletteLivePreview{border-radius:var(--r-sm);width:100%;max-width:280px;height:18px;display:block}.palette-contrast-row{align-items:center;gap:.5rem;display:flex}.palette-contrast-row input[type=range]{flex:1;max-width:160px}.palette-sub-label{color:var(--muted);font-size:.72rem;text-transform:none!important;letter-spacing:0!important;font-weight:500!important}#settingPaletteContrastVal{color:var(--muted);text-align:right;min-width:2.5em;font-family:monospace;font-size:.72rem}.palette-reset-btn{border:1px solid var(--input-border);border-radius:var(--r-sm);background:var(--input-bg);color:var(--ink);cursor:pointer;padding:.2rem .55rem;font-size:.7rem}.palette-reset-btn:hover{border-color:var(--accent)}.settings-ftr{border-top:1px solid var(--panel-edge);background:var(--panel-2);justify-content:space-between;align-items:center;gap:.5rem;padding:.55rem .9rem .65rem;display:flex}.settings-reset{color:var(--muted);border:1px solid var(--panel-edge);border-radius:var(--r-sm);cursor:pointer;background:0 0;padding:.25rem .6rem;font-size:.72rem}.settings-reset:hover{border-color:var(--control-hover-border);color:var(--ink)}.settings-done{background:var(--accent);color:#fff;border-radius:var(--r-sm);cursor:pointer;border:none;padding:.3rem 1.1rem;font-size:.78rem;font-weight:600;transition:background .15s}.settings-done:hover{background:var(--accent-hover)}.startup-help-modal{width:min(760px,100vw - 32px);max-height:calc(100dvh - 32px)}.startup-help-body{min-height:0;overflow:auto}.startup-help-video{aspect-ratio:16/9;border:1px solid var(--panel-edge);border-radius:var(--r-md);background:linear-gradient(135deg, #1f6feb1f, #10b9811a), var(--panel-2);width:100%;overflow:hidden}.startup-help-video iframe{border:0;width:100%;height:100%;display:block}.startup-video-placeholder{text-align:center;height:100%;color:var(--ink);place-items:center;padding:1rem;display:grid}.startup-video-placeholder strong{color:var(--panel-heading);margin-bottom:.25rem;font-size:.95rem;display:block}.startup-video-placeholder span{max-width:30rem;color:var(--muted);font-size:.78rem;line-height:1.45;display:block}.startup-help-tabs{flex-wrap:wrap;gap:.4rem;display:flex}.startup-help-tab{border:1px solid var(--panel-edge);background:var(--panel-2);color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:.35rem;padding:.34rem .62rem;font-size:.74rem;font-weight:600;line-height:1;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.startup-help-tab:hover{border-color:var(--accent)}.startup-help-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.startup-help-tab.is-active{border-color:var(--accent);background:#1f6feb29;background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--panel-heading)}.startup-help-tab-icon{font-size:.9rem;line-height:1}.startup-help-steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;display:grid}.startup-step-card{border:1px solid var(--panel-edge);border-radius:var(--r-md);background:var(--panel-2);cursor:pointer;grid-template-columns:34px minmax(0,1fr);gap:.55rem;padding:.65rem;transition:border-color .15s,box-shadow .15s,background .15s;display:grid}.startup-step-card:hover{border-color:var(--accent)}.startup-step-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.startup-step-card.is-active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;background:var(--panel)}.startup-step-icon{border-radius:var(--r-sm);background:#1f6feb29;background:color-mix(in srgb, var(--accent) 18%, transparent);width:30px;height:30px;color:var(--ink);place-items:center;font-size:1.02rem;line-height:1;display:grid}.startup-step-card h3{color:var(--panel-heading);margin:0 0 .24rem;font-size:.82rem;line-height:1.2}.startup-step-card p{color:var(--ink);margin:0;font-size:.74rem;line-height:1.42}.startup-step-card .startup-step-note{color:var(--muted);margin-top:.25rem}.startup-help-ftr{flex-wrap:wrap}.startup-help-dismiss{min-width:0;color:var(--muted);cursor:pointer;align-items:center;gap:.4rem;font-size:.74rem;display:inline-flex}.startup-help-dismiss input{width:14px;height:14px;accent-color:var(--accent);margin:0}.startup-help-actions{justify-content:flex-end;align-items:center;gap:.45rem;display:flex}.startup-help-watch{align-items:center;text-decoration:none;display:inline-flex}.startup-help-watch[hidden]{display:none}@media (max-width:640px){.startup-help-modal{width:calc(100vw - 18px);max-height:calc(100dvh - 18px)}.startup-help-body{padding:.65rem}.startup-help-steps{grid-template-columns:minmax(0,1fr)}.startup-help-ftr{align-items:stretch}.startup-help-dismiss,.startup-help-actions{width:100%}.startup-help-actions{justify-content:flex-end}}.about-modal{width:620px;max-height:calc(100vh - 2rem)}.about-body{min-height:0;overflow:auto}.about-product{align-items:baseline;gap:.45rem;display:flex}.about-product strong{letter-spacing:0;color:var(--panel-heading);font-size:1.15rem}.about-product span,.about-version,.about-copyright{color:var(--muted);font-size:.75rem}.about-copyright{color:var(--ink)}.about-terms{white-space:pre-wrap;border:1px solid var(--panel-edge);border-radius:var(--r-sm);background:var(--input-bg);max-height:44vh;color:var(--ink);margin:0;padding:.65rem;font:.68rem/1.45 DM Mono,ui-monospace,SFMono-Regular,Consolas,monospace;overflow:auto}html:not(.is-mobile) #mobileBar,html:not(.is-mobile) #mobileSheetHost,html:not(.is-mobile) #mobilePanelsBackdrop{display:none!important}.is-mobile .app{height:100dvh;min-height:100dvh;padding:.25rem;padding-left:max(.25rem, env(safe-area-inset-left));padding-right:max(.25rem, env(safe-area-inset-right));padding-bottom:calc(52px + env(safe-area-inset-bottom));flex-direction:column;display:flex;overflow:hidden}.is-mobile .workspace,.is-mobile .workspace.fs-open{flex-direction:column;flex:auto;gap:4px;height:auto;min-height:0;display:flex}.is-mobile #vtoolbar,.is-mobile .workspace.fs-open #vtoolbar{flex-flow:row;flex:none;align-items:center;gap:2px;width:100%;max-width:100%;padding:3px 4px;position:static;overflow:auto hidden}.is-mobile .vtool-group{flex-direction:row}.is-mobile .canvas-area,.is-mobile .workspace.fs-open .canvas-area{flex:auto;min-height:0;overflow:hidden}.is-mobile .canvas-wrap{min-height:0}.is-mobile #vtoolbar .vtool-group-label{display:none}.is-mobile #vtoolbar .vtool{min-height:44px;font-size:1.02rem}.is-mobile .vtool-fontsize{flex-direction:row;align-self:center;align-items:center;gap:2px;width:auto;min-width:0;margin-top:0}.is-mobile .vfont-label{display:none}.is-mobile .vfont-btns{display:contents}.is-mobile .vfont-input{order:2;width:38px;height:38px;font-size:.95rem}.is-mobile .vfont-btn{width:30px;height:38px;font-size:1.25rem}.is-mobile #fontMinus{order:1}.is-mobile #fontPlus{order:3}@media (max-height:480px){.is-mobile #vtoolbar .vtool{min-height:38px;font-size:.95rem}.is-mobile .vfont-input,.is-mobile .vfont-btn{height:32px}.is-mobile .app{padding-bottom:calc(46px + env(safe-area-inset-bottom))}.is-mobile #mobileBar button{min-height:46px;font-size:1.1rem}.is-mobile #mobileBar button span{font-size:.56rem}.is-mobile .sheet-tabs-bar{height:26px}}.is-mobile #canvas3d{touch-action:none}#mobileBar{z-index:1300;color:#e8edf5;padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);background:#1b2330;border-top:1px solid #ffffff14;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 18px #00000047}#mobileBar button{min-height:52px;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:2px;font-size:1.25rem;line-height:1;display:flex}#mobileBar button span{letter-spacing:.02em;opacity:.85;font-size:.62rem}#mobileBar button:active{background:#ffffff1a}#mobileSheetHost{z-index:1410;position:fixed;inset:0}#mobileSheetHost[hidden]{display:none}#mobileSheetHost .m-sheet-backdrop{opacity:0;background:#0000006b;transition:opacity .2s;position:absolute;inset:0}#mobileSheetHost.m-open .m-sheet-backdrop{opacity:1}#mobileSheetHost .m-sheet{color:#1b2330;max-height:82dvh;padding:8px 14px calc(14px + env(safe-area-inset-bottom));background:#fff;border-radius:16px 16px 0 0;flex-direction:column;transition:transform .24s cubic-bezier(.22,.61,.36,1);display:flex;position:absolute;bottom:0;left:0;right:0;transform:translateY(100%);box-shadow:0 -8px 28px #00000052}#mobileSheetHost.m-open .m-sheet{transform:translateY(0)}#mobileSheetHost .m-sheet-grip{background:#0000002e;border-radius:4px;flex:none;width:40px;height:4px;margin:2px auto 8px}#mobileSheetHost .m-sheet-hd{flex:none;justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}#mobileSheetHost .m-sheet-title{font-size:1rem;font-weight:600}#mobileSheetHost .m-sheet-x{color:inherit;cursor:pointer;background:0 0;border:0;padding:6px 8px;font-size:1.1rem}#mobileSheetHost .m-sheet-body{-webkit-overflow-scrolling:touch;overflow-y:auto}#mobileSheetHost .m-list{flex-direction:column;gap:6px;display:flex}#mobileSheetHost .m-list-item,#mobileSheetHost .m-action{width:100%;min-height:48px;color:inherit;text-align:left;cursor:pointer;background:#f5f7fa;border:1px solid #0000001a;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-size:.95rem;display:flex}#mobileSheetHost .m-list-item.active{background:#e9f0ff;border-color:#3a7afe;font-weight:600}#mobileSheetHost .m-recents-actions{gap:8px;margin-bottom:12px;display:flex}#mobileSheetHost .m-recents-actions .m-action{justify-content:center}#mobileSheetHost .m-recents-hd{text-transform:uppercase;letter-spacing:.04em;opacity:.6;margin:4px 0 8px;font-size:.78rem}#mobileSheetHost .m-recent-ic{flex:none}#mobileSheetHost .m-recent-nm{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}#mobileSheetHost .m-recent-tm{opacity:.55;flex:none;font-size:.75rem}#mobileSheetHost .m-empty{opacity:.6;padding:8px 2px;font-size:.9rem}#mobileSheetHost .m-zoom{gap:10px;display:grid}#mobileSheetHost .m-zoom-value{min-width:86px;color:inherit;text-align:center;background:#eef2f7;border:1px solid #0000001a;border-radius:8px;justify-self:center;padding:6px 10px;font:700 1rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace}#mobileSheetHost .m-zoom-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}#mobileSheetHost .m-zoom-grid .m-action{text-align:center;justify-content:center}#mobileSheetHost .m-zoom-step{justify-content:center;font-size:1.35rem;font-weight:700}.is-mobile .right-dock{z-index:1200;background:var(--panel-bg,#fff);-webkit-overflow-scrolling:touch;max-height:78dvh;padding:14px 12px calc(70px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;margin:0;transition:transform .24s cubic-bezier(.22,.61,.36,1);position:fixed;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(102%);box-shadow:0 -8px 28px #00000052}.is-mobile .right-dock.right-dock--open{transform:translateY(0)}#mobilePanelsBackdrop{z-index:1150;opacity:0;pointer-events:none;background:#0000006b;transition:opacity .2s;position:fixed;inset:0}#mobilePanelsBackdrop.show{opacity:1;pointer-events:auto}.is-mobile.theme-dark #mobileSheetHost .m-sheet{color:#e8edf5;background:#1d242f}.is-mobile.theme-dark #mobileSheetHost .m-list-item,.is-mobile.theme-dark #mobileSheetHost .m-action{background:#2a3340;border-color:#ffffff1f}.is-mobile.theme-dark #mobileSheetHost .m-zoom-value{background:#26303d;border-color:#ffffff1f}.is-mobile.theme-dark #mobileSheetHost .m-list-item.active{background:#2c3c5c;border-color:#5a8dff}.is-mobile.theme-dark #mobileSheetHost .m-sheet-grip{background:#ffffff38}.tour-ring{z-index:10060;pointer-events:none;outline:2px solid var(--accent,#2563eb);outline-offset:2px;border-radius:10px;transition:left .18s,top .18s,width .18s,height .18s;position:fixed;box-shadow:0 0 0 9999px #0000008c}.tour-tooltip{z-index:10060;box-sizing:border-box;background:var(--panel,#fff);width:340px;max-width:calc(100vw - 1.5rem);color:var(--ink,#0f1117);border:1px solid var(--panel-edge,#e5e8ee);border-radius:var(--r-lg,8px);pointer-events:auto;flex-direction:column;gap:.5rem;padding:.9rem 1rem 1rem;display:none;position:fixed;box-shadow:0 8px 32px #00000038}.tour-counter{letter-spacing:.04em;text-transform:uppercase;opacity:.6;font-size:.72rem;font-weight:600}.tour-title{margin:0;font-size:1rem;font-weight:700;line-height:1.25}.tour-body{opacity:.92;margin:0;font-size:.86rem;line-height:1.45}.tour-actions{justify-content:space-between;align-items:center;gap:.75rem;margin-top:.35rem;display:flex}.tour-skip,.tour-next{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:6px;min-height:32px;padding:.4rem .9rem;transition:background .15s,opacity .15s}.tour-skip{color:var(--ink,#0f1117);opacity:.6;background:0 0;padding-left:.25rem;padding-right:.25rem}.tour-skip:hover{opacity:.9}.tour-next{background:var(--accent,#2563eb);color:#fff;font-weight:600}.tour-next:hover{filter:brightness(1.05)}.tour-tooltip:focus-within,.tour-next:focus-visible,.tour-skip:focus-visible{outline:2px solid var(--accent,#2563eb);outline-offset:2px}.tour-tooltip:after{content:"";background:var(--panel,#fff);border:1px solid var(--panel-edge,#e5e8ee);width:10px;height:10px;position:absolute;transform:rotate(45deg)}.tour-tooltip[data-placement=right]:after{border-top:none;border-right:none;top:28px;left:-6px}.tour-tooltip[data-placement=left]:after{border-bottom:none;border-left:none;top:28px;right:-6px}.tour-tooltip[data-placement=bottom]:after{border-bottom:none;border-right:none;top:-6px;left:28px}.tour-tooltip[data-placement=top]:after{border-top:none;border-left:none;bottom:-6px;left:28px}.tour-tooltip[data-placement=center]:after,.tour-tooltip[data-placement=mobile]:after{display:none}html.is-mobile .tour-tooltip{width:100%;max-width:100%;padding-bottom:calc(1rem + env(safe-area-inset-bottom,0px));border-radius:14px 14px 0 0;bottom:0;top:auto!important;left:0!important;right:0!important}html.is-mobile .tour-skip,html.is-mobile .tour-next{min-height:44px;padding:.6rem 1.1rem}@media (prefers-reduced-motion:reduce){.tour-ring{transition:none}}
