:root{--ink:#0a0907;--panel:#15120d;--panel-2:#201b13;--line:#2a241a;--gold:#c9a23f;--gold-deep:#a8822a;--bone:#f4efe6;--muted:#a69c8c;--danger:#e5675a;--danger-bg:#3a1512;--ok:#5fb878;--radius:14px;--touch:48px;--display:"Fraunces", "Cooper Black", Georgia, serif;--body:"Figtree", "Segoe UI", system-ui, sans-serif;font-family:var(--body);color:var(--bone);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-text-size-adjust:100%}@font-face{font-family:Figtree;font-style:normal;font-display:swap;font-weight:300 900;src:url(/fonts/figtree-latin-wght-normal.woff2)format("woff2")}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/fraunces-latin-full-normal.woff2)format("woff2")}.brand-name,.data-head h2,.empty-card h1,.library-head h2,.install-help h2,.pdf-side h2,.pdf-name{font-family:var(--display);font-variation-settings:"SOFT" 100;letter-spacing:-.01em;font-weight:900}*{box-sizing:border-box}html,body{background:var(--ink);overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{flex-direction:column;height:100dvh;display:flex}button{font:inherit}a{color:var(--gold)}.data-link{min-height:44px;color:var(--gold);align-items:center;font-weight:700;display:inline-flex}.data-link:hover{color:var(--bone)}:focus-visible{outline-color:var(--gold)}.topbar{padding:6px 16px;padding-top:max(6px, env(safe-area-inset-top));background:var(--ink);border-bottom:1px solid var(--line);color:var(--bone);flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.brand{min-width:0;color:inherit;border-radius:12px;flex:1;align-items:center;gap:12px;text-decoration:none;display:flex}.btn-back{flex:none;padding:0 16px 0 10px}.topbar .btn-back:not(:hover){background:0 0}.brand-logo{flex:none;width:auto;height:56px;display:block}.brand-text{flex-direction:column;gap:2px;min-width:0;line-height:1.15;display:flex}.brand-name{color:var(--bone);white-space:nowrap;text-overflow:ellipsis;font-size:1.35rem;overflow:hidden}.brand-by{letter-spacing:.12em;text-transform:uppercase;color:var(--gold);white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;font-weight:600;overflow:hidden}.actions{flex:none;gap:8px;display:flex}.btn{min-height:var(--touch);border:1.5px solid var(--gold-deep);background:var(--panel);color:var(--bone);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:700;display:inline-flex}.btn:hover{background:var(--panel-2);border-color:var(--gold)}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:22px;height:22px}.btn-primary{background:var(--gold);border-color:var(--gold);color:var(--ink)}.btn-primary:hover{background:var(--bone);border-color:var(--bone);color:var(--ink)}.topbar .btn:not(.btn-primary){background:0 0}.topbar .btn:not(.btn-primary):hover{background:var(--gold);border-color:var(--gold);color:var(--ink)}.btn-large{min-height:56px;padding:0 24px;font-size:1.05rem}.btn-icon{width:var(--touch);padding:0}.stage{background:#fff;flex:1;min-height:0;position:relative}.viewer-wrap{position:absolute;top:0;bottom:0;left:0;right:0}.viewer{touch-action:none;width:100%;height:100%}.viewer canvas{display:block}.viewer-wrap.inactive{visibility:hidden;pointer-events:none}.view-bar{pointer-events:none;align-items:center;gap:8px;display:flex;position:absolute;top:12px;left:12px;right:12px}.view-bar>*{pointer-events:auto}.view-switch{background:var(--panel);border:1.5px solid var(--gold-deep);border-radius:999px;flex:none;margin-left:auto;padding:3px;display:inline-flex;box-shadow:0 2px 8px #00000040}.view-switch button{min-width:56px;min-height:42px;color:var(--muted);cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:999px;font-weight:700}.view-switch button[aria-pressed=true]{background:var(--gold);color:var(--ink)}.btn-chip{flex:none;box-shadow:0 2px 8px #00000040}.notice-3d{border:1px solid var(--gold-deep);max-width:calc(100% - 24px);color:var(--bone);text-align:center;pointer-events:none;background:#15120df0;border-radius:12px;padding:8px 14px;font-size:.9rem;position:absolute;top:72px;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #0000004d}.view-presets{flex-wrap:wrap;gap:6px;max-width:calc(100% - 100px);display:flex;position:absolute;bottom:16px;left:12px}.view-presets .btn{min-width:64px;box-shadow:0 2px 8px #00000040}.measure-card{background:var(--panel);width:min(380px,100% - 100px);color:var(--bone);border:2px solid var(--gold);border-radius:var(--radius);z-index:4;padding:14px 16px;position:absolute;bottom:16px;left:12px;box-shadow:0 4px 20px #00000059}.measure-card p{margin:0 0 10px;line-height:1.45}.measure-apply label{margin-bottom:6px;font-weight:600;display:block}.measure-apply select,.units-row select{width:100%;min-height:var(--touch);border:1px solid var(--line);font:inherit;background:var(--ink);color:var(--bone);border-radius:10px;padding:0 10px}.measure-buttons{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.btn-link{color:var(--muted);background:0 0;border:none;min-height:40px;margin-top:6px;padding:0 4px}.btn-link:hover{color:var(--gold);background:0 0}.zoom-controls .btn[aria-pressed=true]{background:var(--gold);border-color:var(--gold);color:var(--ink)}.drawing-name{min-width:0;color:var(--bone);border:1px solid var(--line);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background:#15120deb;border-radius:999px;padding:8px 14px;font-weight:600;overflow:hidden;box-shadow:0 2px 8px #00000040}.zoom-controls{flex-direction:column;gap:8px;display:flex;position:absolute;bottom:16px;right:16px}.zoom-controls .btn{width:56px;min-height:56px;box-shadow:0 2px 8px #0000004d}.empty-state{background:var(--ink);justify-content:center;align-items:flex-start;padding:24px 16px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:auto}.empty-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:100%;max-width:640px;margin:auto 0;padding:32px}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-weight:600;margin:0 0 8px!important;font-size:.8rem!important}.empty-card h1{color:var(--bone);margin:0 0 12px;font-size:2.1rem;line-height:1.08}.empty-card h1 em{color:var(--gold);font-style:normal}.empty-card p{margin:0 0 16px;font-size:1.05rem;line-height:1.5}.empty-actions{flex-wrap:wrap;gap:12px;margin:24px 0;display:flex}.hint{background:var(--ink);border-left:4px solid var(--gold);color:var(--bone);border-radius:6px;padding:12px 14px;font-size:.95rem!important}.recent h2{color:var(--muted);margin:24px 0 8px;font-size:1rem}.drawing-list{margin:0;padding:0;list-style:none}.drawing-list li{border-bottom:1px solid var(--line);align-items:center;gap:8px;display:flex}.drawing-list li:last-child{border-bottom:none}.drawing-item{text-align:left;cursor:pointer;min-width:0;min-height:60px;color:var(--bone);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:flex-start;gap:2px;padding:8px 4px;display:flex}.drawing-item:hover .drawing-title{color:var(--gold);text-decoration:underline}.drawing-title{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.drawing-meta{color:var(--muted);font-size:.85rem}.btn-remove{color:var(--muted);background:0 0;border-color:#0000}.btn-remove:hover{color:var(--danger);background:var(--danger-bg);border-color:#0000}.library{width:min(420px,100%);padding:16px;padding-top:max(16px, env(safe-area-inset-top));background:var(--panel);color:var(--bone);border-left:1px solid var(--line);z-index:20;visibility:hidden;transition:transform .2s;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-4px 0 24px #00000073}.library.open{visibility:visible;transform:none}.library-head{justify-content:space-between;align-items:center;display:flex}.library-head h2{color:var(--bone);margin:0;font-size:1.6rem}.library-note{color:var(--muted);font-size:.95rem;line-height:1.4}.scrim{z-index:10;background:#0a090799;position:fixed;top:0;bottom:0;left:0;right:0}.loading{z-index:5;background:#0a0907bf;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.loading-card{background:var(--panel);color:var(--bone);border:1px solid var(--gold-deep);border-radius:var(--radius);align-items:center;gap:14px;padding:18px 24px;font-weight:600;display:flex;box-shadow:0 4px 20px #0006}.loading-card p{margin:0}.spinner{border:4px solid var(--line);border-top-color:var(--gold);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.drop-hint{border:3px dashed var(--gold);border-radius:var(--radius);color:var(--gold);z-index:6;pointer-events:none;background:#0a0907d9;justify-content:center;align-items:center;font-size:1.3rem;font-weight:700;display:flex;position:absolute;top:16px;bottom:16px;left:16px;right:16px}.toast{background:var(--panel);width:max-content;max-width:calc(100% - 32px);color:var(--bone);border:1px solid var(--gold);z-index:30;border-radius:12px;padding:14px 18px;line-height:1.4;position:fixed;bottom:56px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #00000073}.toast-error{background:var(--danger-bg);border-color:var(--danger)}.statusbar{padding:4px 16px;padding-bottom:max(4px, env(safe-area-inset-bottom));background:var(--ink);border-top:1px solid var(--line);color:var(--muted);flex:none;justify-content:space-between;align-items:center;gap:12px;font-size:.85rem;display:flex}.net-status{align-items:center;gap:6px;display:inline-flex}.net-status .dot{background:var(--ok);border-radius:50%;width:9px;height:9px}.net-status.offline{color:var(--bone);font-weight:600}.net-status.offline .dot{background:var(--gold)}.offline-ready{color:var(--muted)}[hidden]{display:none!important}.data-panel{z-index:25;background:var(--ink);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.data-head{padding:8px 12px;padding-top:max(8px, env(safe-area-inset-top));border-bottom:1px solid var(--line);align-items:center;gap:12px;display:flex}.data-head h2{color:var(--bone);margin:0;font-size:1.35rem}.data-panel iframe{background:var(--ink);border:0;flex:1;width:100%}@media (max-width:640px){.topbar{gap:6px;padding-left:10px;padding-right:10px}.actions{gap:6px}.brand{gap:7px}.brand-logo{height:36px}.brand-name{letter-spacing:-.02em;font-size:.98rem}.brand-by{letter-spacing:.06em;font-size:.56rem}.actions .btn span,.topbar .btn-back span{display:none}.topbar .btn-back{width:var(--touch);padding:0}.has-back .brand-text{display:none}.actions .btn{width:var(--touch);padding:0}.empty-card{padding:20px}.empty-card h1{font-size:1.6rem}.empty-actions .btn{flex:100%}}@media (max-width:380px){.brand-logo{height:34px}.brand-name{font-size:.95rem}}.install-help{border:1px solid var(--gold-deep);border-radius:var(--radius);background:var(--panel);width:min(440px,100% - 32px);color:var(--bone);padding:24px;box-shadow:0 12px 40px #0009}.install-help::backdrop{background:#0a0907b3}.install-help h2{color:var(--bone);margin:0 0 12px;font-size:1.5rem}.install-help p{font-size:1.05rem;line-height:1.5}.install-help form{justify-content:flex-end;margin-top:8px;display:flex}.layers-panel{z-index:15;box-shadow:-4px 0 24px #00000059}.units-row{margin:12px 0;font-weight:600;display:block}.units-row select{margin-top:6px}.layers-actions{gap:8px;margin-bottom:8px;display:flex}.layers-actions .btn{flex:1}.layers-head{text-transform:uppercase;letter-spacing:.06em;color:var(--gold);border-bottom:1px solid var(--line);justify-content:space-between;padding:6px 2px;font-size:.8rem;font-weight:700;display:flex}.layers-list{margin:0;padding:0;list-style:none}.layer-row{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:center;gap:8px;padding:6px 0;display:grid}.layer-row label.layer-show{min-height:var(--touch);cursor:pointer;align-items:center;gap:10px;min-width:0;display:flex}.layer-row input[type=checkbox]{width:22px;height:22px;accent-color:var(--gold);flex:none}.layer-swatch{border:1px solid #f4efe64d;border-radius:4px;flex:none;width:14px;height:14px}.layer-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.layer-height{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.layer-height-input{align-items:center;gap:4px;display:flex}.layer-height input{border:1px solid var(--line);width:76px;min-height:44px;font:inherit;text-align:right;background:var(--ink);color:var(--bone);border-radius:8px;padding:0 8px}.layer-height input:focus-visible{outline:3px solid var(--gold);outline-offset:1px}.layer-source{color:var(--muted);font-size:.75rem}.layer-source.measured{color:var(--gold);font-weight:600}.layer-source.typed{color:var(--bone);font-weight:600}@media (max-width:640px){.btn-chip span{display:none}.btn-chip{width:var(--touch);padding:0}.notice-3d{font-size:.8rem;top:68px}.view-presets .btn{min-width:52px;padding:0 12px}}.paid-badge{background:var(--gold);color:var(--ink);letter-spacing:.04em;vertical-align:middle;border-radius:999px;padding:2px 9px;font-size:.75rem;font-weight:800;display:inline-block}.pdf-screen{background:var(--ink);z-index:8;flex-direction:column;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.pdf-head{background:var(--ink);border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:10px 12px;display:flex}.pdf-name{min-width:0;color:var(--bone);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:1.25rem;overflow:hidden}.pdf-head a.btn{text-decoration:none}.pdf-body{flex:1;grid-template-columns:minmax(0,1fr) minmax(320px,440px);min-height:0;display:grid}.pdf-pages{flex-direction:column;align-items:center;gap:12px;padding:12px;display:flex;overflow:auto}.pdf-page{background:#fff;width:100%;max-width:1400px;height:auto;box-shadow:0 1px 10px #00000080}.pdf-side{background:var(--panel);border-left:1px solid var(--line);padding:16px;overflow-y:auto}.pdf-side h2{color:var(--bone);margin:0 0 10px;font-size:1.45rem}.pdf-side .btn-large{width:100%}.btn-locked{border-color:var(--gold);color:var(--gold);background:0 0}.btn-locked:hover{background:var(--gold);border-color:var(--gold);color:var(--ink)}.ai-warning{background:var(--ink);border:1px solid var(--gold);color:var(--bone);border-left-width:5px;border-radius:8px;padding:10px 12px;font-weight:600;line-height:1.4}.pdf-status{min-height:1.4em;color:var(--muted);font-weight:600}.pdf-result p{line-height:1.5}.kind-banner{background:var(--ink);border:1px solid var(--gold-deep);border-radius:8px;flex-direction:column;gap:4px;margin:12px 0;padding:10px 12px;display:flex}.kind-banner.kind-other{background:var(--danger-bg);border-color:var(--danger)}.kind-banner span{color:var(--bone);font-size:.92rem}.reading-title{font-weight:700}.reading-fields{border-top:1px solid var(--line);grid-template-columns:max-content 1fr;gap:0;margin:12px 0;display:grid}.reading-fields dt,.reading-fields dd{border-bottom:1px solid var(--line);margin:0;padding:10px 6px}.reading-fields dt{color:var(--gold);padding-right:14px;font-weight:700}.reading-fields dd{flex-direction:column;gap:4px;line-height:1.4;display:flex}.reading-fields dd small{color:var(--muted)}.reading-fields dd.not-shown{color:var(--muted);font-style:italic}.pdf-result h3{color:var(--gold);margin:16px 0 6px;font-size:1rem}.pdf-result ul{margin:0 0 12px;padding-left:20px;line-height:1.45}.reading-meta{color:var(--muted);font-size:.8rem}.plan-link{color:var(--gold);font:inherit;cursor:pointer;background:0 0;border:none;min-height:40px;font-weight:600;text-decoration:underline}.plan-form{flex-direction:column;gap:10px;display:flex}.plan-choice{min-height:var(--touch);align-items:center;gap:10px;font-weight:600;display:flex}.plan-choice input{width:22px;height:22px;accent-color:var(--gold)}.plan-code{width:100%;min-height:var(--touch);border:1px solid var(--line);font:inherit;background:var(--ink);color:var(--bone);border-radius:10px;margin-top:6px;padding:0 10px}@media (max-width:900px){.pdf-body{grid-template-rows:minmax(200px,40%) 1fr;grid-template-columns:1fr}.pdf-side{border-left:none;border-top:1px solid var(--line)}}.mark-card{border-color:var(--gold)}.mark-card p{font-size:1.02rem}.notice-3d{pointer-events:auto;max-height:45%;overflow:auto}.notice-more{min-height:0;color:var(--gold);margin:0 0 0 6px;padding:0;font-weight:700;text-decoration:underline}.notice-notes{text-align:left;margin:8px 0 0;padding-left:18px;line-height:1.4}@media (max-width:640px){.notice-stats{display:none}.notice-notes{font-size:.8rem}}.notice-3d.expanded .notice-stats{display:inline}.labels3d{pointer-events:none;z-index:1;position:absolute;top:0;bottom:0;left:0;right:0}.viewer-wrap{isolation:isolate}.hide-bays .label3d.bay,.hide-levels .label3d.level{display:none!important}.label3d{border:1px solid var(--gold-deep);color:var(--bone);font:700 12px/1.3 var(--body);white-space:nowrap;background:#0a0907d1;border-radius:999px;padding:2px 7px}.label3d.level{translate:calc(50% + 10px)}.label3d.level.top,.label3d.overall,.label3d.measure{background:var(--gold);color:var(--ink);border-color:var(--gold)}.label3d.bay{padding:1px 6px;font-size:11px}.labels-off .label3d:not(.measure){display:none!important}.view-presets .btn[aria-pressed=true]{background:var(--gold);border-color:var(--gold);color:var(--ink)}.stage.split #viewer2d-wrap{border-right:2px solid var(--gold-deep);right:50%}.stage.split #viewer3d-wrap{left:50%}.stage.split .notice-3d{max-width:calc(50% - 24px);left:75%}.stage.split .view-presets{max-width:calc(50% - 100px);left:calc(50% + 12px)}@media (max-width:760px),(orientation:portrait) and (max-width:1024px){.stage.split #viewer2d-wrap{border-right:0;border-bottom:2px solid var(--gold-deep);bottom:50%;right:0}.stage.split #viewer3d-wrap{top:50%;left:0}.stage.split .notice-3d{max-width:calc(100% - 24px);max-height:22%;top:calc(50% + 8px);left:50%}.stage.split .view-presets{max-width:calc(100% - 100px);left:12px}}.notice-missing{color:var(--gold);font-weight:700}.missing-btn{color:var(--bone);line-height:1.6;font:inherit;text-align:left;cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold);text-underline-offset:3px;background:0 0;border:0;padding:0;display:inline}.missing-btn strong{color:var(--gold)}.notice-notes li:has(.missing-btn){padding:3px 0}.estimate-panel{width:min(520px,100%)}.estimate-table{border-collapse:collapse;width:100%;margin:12px 0}.estimate-table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--gold);border-bottom:1px solid var(--line);padding:6px 4px;font-size:.8rem}.estimate-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:10px 4px;line-height:1.35}.estimate-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.15rem;font-weight:800}.estimate-table th.num{font-size:.8rem}.est-detail{color:var(--bone);overflow-wrap:anywhere;margin-top:3px;font-size:.88rem}.est-source{color:var(--muted);margin-top:3px;font-size:.78rem}.estimate-panel h3{color:var(--gold);margin:18px 0 6px;font-size:1rem}.est-facts{grid-template-columns:max-content 1fr;gap:6px 12px;margin:0;font-size:.92rem;display:grid}.est-facts dt{color:var(--muted)}.est-facts dd{overflow-wrap:anywhere;margin:0}@media (max-width:640px){.est-facts{grid-template-columns:1fr;gap:2px}.est-facts dd{margin-bottom:8px}.view-switch button{min-width:44px;padding:0 8px;font-size:.9rem}}.notice-3d:not(.expanded) .notice-notes li.plain{display:none}@media (max-width:640px){.notice-3d:not(.expanded) .notice-notes{display:none}}.banner3d{background:var(--panel);border-top:1px solid var(--gold-deep);color:var(--bone);flex:none;align-items:center;gap:6px 12px;min-height:44px;padding:4px 8px 4px 14px;font-size:.88rem;display:flex}.banner3d-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.banner-warn{color:var(--gold);font-weight:700}.banner-link{color:var(--gold);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;min-height:40px;padding:0 4px;font-weight:700;text-decoration:underline}.banner-link:hover{color:var(--bone)}.banner-x{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;display:grid}.banner-x:hover{color:var(--bone);background:var(--panel-2)}.banner-x svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;width:20px;height:20px}@media (max-width:640px){.banner3d{flex-wrap:wrap;padding-left:10px;font-size:.8rem}.banner3d-text{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;flex-basis:calc(100% - 50px);display:-webkit-box}#btn-banner-hide{margin-left:auto}}.legend3d{z-index:2;pointer-events:none;flex-wrap:wrap;gap:4px;max-width:calc(100% - 24px);display:flex;position:absolute;top:68px;left:12px}.legend-item{pointer-events:auto;border:1px solid var(--line);min-height:30px;color:var(--bone);font:600 .78rem var(--body);cursor:pointer;background:#15120de0;border-radius:999px;align-items:center;gap:6px;padding:0 10px 0 7px;display:inline-flex}.legend-item .sw{border:1px solid #00000080;border-radius:3px;width:12px;height:12px}.legend-item[aria-pressed=true]{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.legend-item.dim{opacity:.45}.stage.split .legend3d{top:68px}@media (max-width:760px),(orientation:portrait) and (max-width:1024px){.stage.split .legend3d{top:8px}}@media (max-width:640px){.legend-item{min-height:26px;padding:0 8px 0 5px;font-size:.7rem}}.viewcube{perspective:320px;z-index:2;width:66px;height:66px;position:absolute;bottom:284px;right:20px}.vc-face{border:1px solid var(--gold-deep);width:52px;height:52px;color:var(--bone);font:700 10px var(--body);letter-spacing:.02em;-webkit-backface-visibility:hidden;backface-visibility:hidden;cursor:pointer;background:#15120de6;place-items:center;padding:0;display:grid;position:absolute;top:50%;left:50%}.vc-face:hover{background:var(--gold);color:var(--ink)}.vc-corner{border:2px solid var(--ink);background:var(--gold);cursor:pointer;border-radius:50%;width:16px;height:16px;padding:0;position:absolute;top:0;left:0}.vc-face{z-index:1}.vc-corner{z-index:2;width:13px;height:13px}@media (max-height:700px){.viewcube{top:112px;bottom:auto}}.label3d.pick{background:var(--gold);color:var(--ink);border-color:var(--ink);white-space:normal;text-align:center;max-width:280px;font-size:12.5px;translate:0 -24px}.view-panel{background:var(--panel);border:1px solid var(--gold-deep);border-radius:var(--radius);width:min(360px,100% - 24px);max-height:calc(100% - 160px);color:var(--bone);z-index:7;padding:12px 14px 14px;position:absolute;bottom:76px;left:12px;overflow-y:auto;box-shadow:0 8px 30px #00000073}.stage.split .view-panel{width:min(360px,50% - 24px);left:calc(50% + 12px)}@media (max-width:760px),(orientation:portrait) and (max-width:1024px){.stage.split .view-panel{width:min(360px,100% - 24px);left:12px}}.vp-head{justify-content:space-between;align-items:center;display:flex}.vp-head h2{font:900 1.25rem var(--display);font-variation-settings:"SOFT" 100;margin:0}.vp-label{letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin:12px 0 6px;font-size:.78rem;font-weight:700;display:block}.vp-hint{color:var(--muted);margin:6px 0 0;font-size:.82rem;line-height:1.35}.seg{border:1px solid var(--line);background:var(--ink);border-radius:12px;flex-wrap:wrap;gap:4px;padding:3px;display:flex}.seg button{min-height:40px;color:var(--bone);font:700 .86rem var(--body);cursor:pointer;background:0 0;border:0;border-radius:9px;flex:auto;padding:0 10px}.seg button[aria-pressed=true]{background:var(--gold);color:var(--ink)}.cut-range{width:100%;accent-color:var(--gold);min-height:32px;margin:10px 0 0}.cut-range:disabled{opacity:.35}.vp-select{width:100%;min-height:var(--touch);border:1px solid var(--line);background:var(--ink);color:var(--bone);font:inherit;border-radius:10px;padding:0 10px}.view-panel #btn-remark{width:100%;margin-top:12px}@media (max-width:640px){.view-panel,.stage.split .view-panel{width:auto;max-height:72vh;padding-bottom:max(14px, env(safe-area-inset-bottom));z-index:20;border-radius:18px 18px 0 0;position:fixed;bottom:0;left:0;right:0}}.label3d.dim,.label3d.levelmark,.label3d.tag{color:#1b1d20;font:600 12px/1.2 var(--body);letter-spacing:.01em;text-shadow:0 0 2px #fff,0 0 3px #fff,0 0 4px #ffffffe6;background:0 0;border:0;border-radius:3px;padding:0 2px}.label3d.dim.calc{color:#3c4045;font-style:italic}.label3d.dim.total{font-weight:700}.label3d.dim.overall{font-size:13.5px;font-weight:800}.label3d.levelmark{color:#24272b;font-size:11.5px;translate:calc(50% + 8px)}.label3d.tag{color:#10151a;text-shadow:none;background:#ffffffb8;padding:0 3px;font-size:11.5px}.label3d.tag.transom{background:#e8f6f8d1}.parts-card{background:var(--panel);border:1px solid var(--gold);width:min(360px,100% - 100px);color:var(--bone);z-index:3;border-radius:12px;padding:8px 10px 10px 12px;position:absolute;top:104px;left:12px;box-shadow:0 6px 20px #00000059}.pc-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.pc-head strong{color:var(--gold);font-size:1.02rem}.parts-card p{overflow-wrap:anywhere;margin:4px 0 8px;font-size:.86rem;line-height:1.4}.parts-card .btn{min-height:40px;font-size:.86rem}.parts-card .btn[aria-pressed=true]{background:var(--gold);color:var(--ink);border-color:var(--gold)}@media (max-width:640px){.parts-card{width:calc(100% - 90px);top:auto;bottom:140px}}.est-summary{border:1px solid var(--gold-deep);background:var(--ink);border-radius:10px;margin:12px 0 4px;padding:10px 12px;font-size:.92rem;line-height:1.45}.est-summary strong{color:var(--gold);margin-bottom:2px;display:block}.show-3d{border:1px solid var(--gold-deep);min-height:36px;color:var(--gold);font:700 .8rem var(--body);cursor:pointer;background:0 0;border-radius:999px;margin-top:6px;padding:0 12px}.show-3d:hover{background:var(--gold);color:var(--ink)}.est-export{flex-wrap:wrap;gap:8px;margin:10px 0 4px;display:flex}.est-export .btn{flex:160px}.vp-check{min-height:var(--touch);cursor:pointer;align-items:center;gap:10px;margin-top:8px;font-weight:600;display:flex}.vp-check input{width:22px;height:22px;accent-color:var(--gold)}.markup{color:var(--mk,#1fa64a);font:900 30px/1 var(--body);text-shadow:0 0 3px #fff,0 0 6px #fff;pointer-events:none}.markup-tick{font-size:32px}.markup-note{font:700 13px/1.3 var(--body);color:#111;border:2px solid var(--mk,#1fa64a);max-width:220px;text-shadow:none;background:#fff;border-radius:8px;padding:3px 8px;translate:0 -22px}.markup-start{color:var(--gold);font-size:16px}.markup-bar{background:var(--panel);border:1px solid var(--gold-deep);z-index:6;border-radius:14px;flex-wrap:wrap;align-items:center;gap:6px;padding:8px;display:flex;position:absolute;top:112px;left:12px;right:90px;box-shadow:0 6px 20px #00000059}.markup-bar .btn{min-height:42px;padding:0 14px}.mk-tools button{min-width:48px;font-size:1rem}.mk-colours{gap:6px;display:flex}.mk-colours button{border:3px solid var(--panel);background:var(--c);width:36px;height:36px;box-shadow:0 0 0 1px var(--line);cursor:pointer;border-radius:50%}.mk-colours button[aria-pressed=true]{box-shadow:0 0 0 3px var(--gold)}.mk-hint{color:var(--muted);flex-basis:100%;margin:2px 4px 0;font-size:.8rem}@media (max-width:640px){.markup-bar{top:100px;right:12px}.markup-bar .btn{padding:0 10px;font-size:.85rem}}.progress-card{background:var(--panel);border:1px solid var(--gold);width:min(330px,100% - 110px);color:var(--bone);z-index:5;border-radius:12px;padding:8px 10px 12px 12px;position:absolute;top:112px;right:90px;box-shadow:0 6px 20px #00000059}.pg-hint{color:var(--muted);margin:4px 0 8px;font-size:.82rem}.pg-hint .ok{color:#5fd08a;font-weight:700}.pg-hint .warn{color:#f5a65b;font-weight:700}.pg-walls{gap:6px;margin:0 0 10px;padding:0;list-style:none;display:grid}.pg-walls li{flex-wrap:wrap;align-items:center;gap:10px;font-size:.86rem;display:flex}.pg-walls small{color:var(--muted)}.ring{--p:0;background:conic-gradient(#1f9d55 calc(var(--p) * 1%), var(--line) 0);border-radius:50%;flex:none;place-items:center;width:46px;height:46px;display:grid}.ring b{background:var(--panel);border-radius:50%;place-items:center;width:36px;height:36px;font-size:.72rem;display:grid}.progress-card .btn{width:100%}.pg-h{color:var(--gold);margin:16px 0 6px;font-size:1rem}.pg-remaining{gap:6px;margin:0;padding:0;list-style:none;display:grid}.pg-remaining li{grid-template-columns:1fr 150px auto;align-items:center;gap:6px;font-size:.88rem;display:grid}.pg-add{grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;display:grid}.pg-add .btn{grid-column:span 2}.pg-notes{border:1px solid var(--line);background:var(--ink);width:100%;color:var(--bone);font:inherit;border-radius:10px;padding:10px}.label3d.wall-label{color:#111;background:#f28c28;border-color:#111;padding:3px 10px;font-size:13px}.label3d.wall-label.done{color:#fff;background:#1f9d55}@media (max-width:640px){.progress-card{width:auto;top:auto;bottom:150px;left:12px;right:12px}.pg-remaining li{grid-template-columns:1fr}}.est-how{color:var(--muted);margin-top:4px;font-size:.8rem}.est-how summary{cursor:pointer;color:var(--gold);align-items:center;min-height:32px;font-weight:700;display:inline-flex}.est-how p{color:var(--bone);margin:2px 0 4px;line-height:1.4}.labels2d{pointer-events:none;z-index:1;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.labels2d .label3d{position:absolute;top:0;left:0}.label3d.measure{background:var(--gold);color:var(--ink);border-color:var(--ink);font-size:12px}.label3d.measure.total{background:var(--ink);color:var(--gold);border-color:var(--gold);translate:0 -22px}.snapmark{border:2px solid var(--gold);color:var(--gold);font:700 11px var(--body);pointer-events:none;white-space:nowrap;background:#0a0907d9;border-radius:4px;padding:1px 6px;position:absolute;top:0;left:0;translate:0 -20px}.snapmark:before{content:"";border:2px solid var(--gold);background:#fff6;width:10px;height:10px;margin-left:-7px;position:absolute;bottom:-15px;left:50%}.snapmark.snap-mid:before{border-radius:0;transform:rotate(45deg)}.snapmark.snap-node:before,.snapmark.snap-cross:before{border-radius:50%}.loupe{border:3px solid var(--gold);z-index:9;pointer-events:none;background:#fff;border-radius:50%;width:132px;height:132px;position:absolute;box-shadow:0 6px 20px #00000073}.measure-breakdown{grid-template-columns:max-content 1fr;gap:3px 12px;margin:0 0 8px;font-size:.9rem;display:grid}.measure-breakdown dt{color:var(--muted)}.measure-breakdown dd{margin:0;font-weight:700}.measure-show{min-height:40px;margin-top:2px;font-size:.9rem}.measure-done{width:100%;margin-top:6px}@media (max-width:640px){#measure-card{width:auto;padding:8px 10px;bottom:8px;left:8px;right:8px}#measure-card #measure-text{margin-bottom:4px;font-size:.82rem}#measure-card .measure-breakdown{grid-template-columns:repeat(4,auto);gap:0 8px;margin-bottom:4px;font-size:.72rem}#measure-card .measure-breakdown dt{grid-row:1}#measure-card .measure-breakdown dd{grid-row:2;font-size:.74rem}#measure-card .measure-buttons{flex-wrap:nowrap;gap:4px;margin-top:4px}#measure-card .measure-buttons .btn{flex:1;min-height:40px;padding:0 8px;font-size:.75rem}#measure-card .measure-show{min-height:34px;font-size:.75rem}#measure-card .measure-done{min-height:40px;margin-top:2px}}#measure-card{width:min(400px,100% - 100px)}#measure-card .measure-buttons{flex-wrap:nowrap;gap:6px}#measure-card .measure-buttons .btn{flex:1;min-height:42px;padding:0 8px;font-size:.82rem}#measure-card #measure-text .layer-source{margin-top:2px;display:block}@media (max-width:640px){#measure-card{width:auto}}
