:root{--font-ui:"SF Pro Text", "SF Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", sans-serif;--tracking-ui:-.15px;--text-xs:12px;--text-sm:13px;--text-md:14px;--text-lg:24px;--ink:#292929;--ink-muted:#5d5d5d;--ink-faint:#9e9e9e;--surface:#fff;--surface-subtle:#f7f7f7;--surface-hover:#f3f3f3;--border:#e5e5e5;--accent:#3b82f6;--accent-soft:#dbeafe;--success:#22c55e;--danger:#dc2626;--status-attention:#b45309;--radius-nav:8px;--radius-card:16px;--radius-panel:24px;--radius-thumb:14px;--radius-pill:9999px;--shadow-soft:0 8px 30px #0000000f;--shadow-float:0 12px 40px #00000014;--icon-nav:14px;--icon-card:20px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--dur-instant:.15s;--dur-quick:.2s;--dur-enter:.34s;--dur-exit:.26s;--stagger:26ms;color:var(--ink);background:var(--surface-subtle);font-family:var(--font-ui);font-synthesis:none;letter-spacing:var(--tracking-ui)}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh;overflow:hidden}button,input{font:inherit;letter-spacing:inherit}button{color:inherit}@media (prefers-reduced-motion:reduce){:root{--dur-instant:.01ms;--dur-quick:.01ms;--dur-enter:.01ms;--dur-exit:.01ms;--stagger:0s}}.sp-dialog{width:min(520px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--ink,#292929);background:var(--surface,#fff);border:1px solid var(--border,#e5e5e5);border-radius:var(--radius-panel,24px);box-shadow:var(--shadow-float,0 12px 40px #00000014);font-family:var(--font-ui,"SF Pro Text", -apple-system, sans-serif);font-size:var(--text-md,14px);letter-spacing:var(--tracking-ui,-.15px);opacity:0;transition:opacity var(--dur-exit,.26s) var(--ease-in,cubic-bezier(.4, 0, 1, 1)), transform var(--dur-exit,.26s) var(--ease-in,cubic-bezier(.4, 0, 1, 1)), display var(--dur-exit,.26s) allow-discrete, overlay var(--dur-exit,.26s) allow-discrete;padding:0;overflow:visible;transform:translateY(16px)scale(.98)}.sp-dialog[open]{opacity:1;transition-duration:var(--dur-enter,.34s);transition-timing-function:var(--ease-out,cubic-bezier(.22, 1, .36, 1));transform:none}.sp-dialog[open]::backdrop{opacity:1;transition-duration:var(--dur-enter,.34s)}.sp-dialog::backdrop{background:var(--sp-dialog-scrim,#14141673);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@starting-style{.sp-dialog[open]{opacity:0}.sp-dialog[open]::backdrop{opacity:0}.sp-dialog[open]{transform:translateY(16px)scale(.98)}}.sp-dialog:focus-visible{outline:none}.sp-dialog__body{max-height:calc(100dvh - 32px);padding:24px;overflow-y:auto}.sp-dialog__close{border-radius:var(--radius-nav,8px);width:28px;height:28px;color:var(--ink-faint,#9e9e9e);cursor:pointer;transition:background-color var(--dur-instant,.15s) var(--ease-out,ease-out), color var(--dur-instant,.15s) var(--ease-out,ease-out);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:16px;right:16px}.sp-dialog__close:hover{background:var(--surface-hover,#f3f3f3);color:var(--ink,#292929)}.sp-dialog__title{font-size:var(--text-lg,24px);letter-spacing:inherit;margin:0 0 8px;padding-right:32px;font-weight:500;line-height:1.2}.sp-dialog__desc{color:var(--ink-muted,#5d5d5d);font-size:var(--text-sm,13px);margin:0 0 20px;line-height:1.55}.sp-dialog__actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.sp-dialog__actions button{border-radius:var(--radius-pill,9999px);font:500 var(--text-md,14px) / 1.2 inherit;letter-spacing:inherit;cursor:pointer;transition:background-color var(--dur-instant,.15s) var(--ease-out,ease-out);border:1px solid #0000;padding:10px 18px}.sp-dialog__cancel{color:var(--ink-muted,#5d5d5d);border-color:var(--border,#e5e5e5);background:0 0}.sp-dialog__cancel:hover{background:var(--surface-hover,#f3f3f3);color:var(--ink,#292929)}.sp-dialog__confirm{background:var(--sp-dialog-confirm,var(--ink,#292929));color:var(--sp-dialog-confirm-ink,#fff)}.sp-dialog__confirm:hover{filter:brightness(1.08)}.sp-dialog__confirm--danger{background:var(--sp-dialog-danger,#dc2626);color:#fff}.sp-dialog :focus-visible{outline:2px solid var(--sp-dialog-focus,var(--accent,#3b82f6));outline-offset:2px}@media (max-width:480px){.sp-dialog__actions{flex-direction:column-reverse}.sp-dialog__actions button{width:100%}}@media (prefers-reduced-motion:reduce){.sp-dialog{transition:none}.sp-dialog::backdrop{transition:none}}.sp-dialog{--ink:#292929;--ink-muted:#5d5d5d;--ink-faint:#9e9e9e;--surface:#fff;--surface-hover:#f3f3f3;--border:#e5e5e5;--radius-nav:8px;--radius-panel:24px;--radius-pill:9999px;--font-ui:"SF Pro Text", "SF Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--tracking-ui:-.15px;--text-sm:13px;--text-md:14px;--text-lg:24px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--dur-instant:.15s;--dur-enter:.34s;--dur-exit:.26s;--shadow-float:0 12px 40px #00000014;--sp-dialog-confirm:#292929;--sp-dialog-confirm-ink:#fff;--sp-dialog-danger:#dc2626;--sp-dialog-scrim:#141416e0;--sp-dialog-focus:#3b82f6}:root.dark .sp-dialog,[data-theme=dark] .sp-dialog{--ink:#ededed;--ink-muted:#a5a5a5;--ink-faint:#767676;--surface:#1c1c1e;--surface-hover:#252528;--border:#2c2c2f;--shadow-float:0 12px 40px #00000080;--sp-dialog-confirm:#ededed;--sp-dialog-confirm-ink:#1c1c1e;--sp-dialog-danger:#f05252;--sp-dialog-scrim:#0009}.sp-dialog :disabled{cursor:not-allowed;opacity:.5}.sp-dialog__close:disabled:hover{color:var(--ink-faint,#9e9e9e);background:0 0}.sp-dialog__cancel:disabled:hover{color:var(--ink-muted,#5d5d5d);background:0 0}.sp-dialog__confirm:disabled:hover{filter:none}.catalogue-room-field input,.catalogue-room-field textarea{border:1px solid var(--border);border-radius:var(--radius-nav);background:var(--surface);width:100%;min-height:44px;color:var(--ink);font:inherit;padding:0 12px}.catalogue-room-field textarea{resize:vertical;min-height:108px;padding-block:10px;line-height:1.45}.catalogue-room-field__hint{color:var(--ink-faint);font-size:var(--text-xs)}.catalogue-extra-fields{border:1px solid var(--border);border-radius:var(--radius-nav);background:var(--surface-subtle);gap:12px;padding:11px 12px;display:grid}.catalogue-extra-fields summary{color:var(--ink-muted);cursor:pointer;font-size:var(--text-sm);font-weight:500}.catalogue-extra-fields summary span{color:var(--ink-faint);font-weight:400}.catalogue-extra-fields[open] summary{color:var(--ink)}.catalogue-extra-fields summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-nav)}@media (max-width:480px){.sp-dialog__close{width:44px;height:44px;top:8px;right:8px}.sp-dialog__title{padding-right:48px}.sp-dialog__actions button{min-height:44px}}.sp-segmented{background:var(--surface-subtle,#f7f7f7);border-radius:var(--radius-pill,9999px);font-family:var(--font-ui,"SF Pro Text", -apple-system, sans-serif);letter-spacing:var(--tracking-ui,-.15px);align-items:center;gap:2px;padding:3px;display:inline-flex}.sp-segmented__option{border-radius:var(--radius-pill,9999px);color:var(--ink-faint,#9e9e9e);font-size:var(--text-xs,12px);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-quick,.2s) var(--ease-out,cubic-bezier(.22, 1, .36, 1)), color var(--dur-quick,.2s) var(--ease-out,cubic-bezier(.22, 1, .36, 1)), box-shadow var(--dur-quick,.2s) var(--ease-out,cubic-bezier(.22, 1, .36, 1));align-items:center;gap:5px;padding:5px 10px;font-weight:400;line-height:1.2;display:inline-flex;position:relative}.sp-segmented__option input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:0;padding:0;position:absolute;overflow:hidden}.sp-segmented__option:hover{color:var(--ink-muted,#5d5d5d)}.sp-segmented__option:has(input:checked){background:var(--sp-segmented-active,var(--surface,#fff));color:var(--ink,#292929);box-shadow:var(--sp-segmented-lift,0 1px 3px #00000014)}.sp-segmented__option:has(input:focus-visible){outline:2px solid var(--sp-segmented-focus,var(--accent,#3b82f6));outline-offset:1px}.sp-segmented__option:has(input:disabled){opacity:.4;cursor:not-allowed}.sp-segmented__option svg{width:var(--icon-nav,14px);height:var(--icon-nav,14px);flex:none}.sp-segmented--fill{width:100%;display:flex}.sp-segmented--fill .sp-segmented__option{flex:1 1 0;justify-content:center}@media (prefers-reduced-motion:reduce){.sp-segmented__option{transition:none}}.sp-segmented{--ink:#292929;--ink-muted:#5d5d5d;--ink-faint:#9e9e9e;--surface:#fff;--surface-subtle:#f7f7f7;--radius-pill:9999px;--icon-nav:14px;--font-ui:"SF Pro Text", "SF Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--tracking-ui:-.15px;--text-xs:12px;--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-quick:.2s;--sp-segmented-active:#fff;--sp-segmented-lift:0 1px 3px #00000014;--sp-segmented-focus:#3b82f6}:root.dark .sp-segmented,[data-theme=dark] .sp-segmented{--ink:#ededed;--ink-muted:#a5a5a5;--ink-faint:#767676;--surface:#1c1c1e;--surface-subtle:#161618;--sp-segmented-active:#2f2f33;--sp-segmented-lift:0 1px 3px #0006}.sp-switch{cursor:pointer;flex:none;align-items:center;display:inline-flex;position:relative}.sp-switch input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.sp-switch__track{width:var(--sp-switch-width,42px);height:var(--sp-switch-height,24px);border-radius:var(--radius-pill,9999px);background:var(--sp-switch-off,#e5e5e5);transition:background-color var(--dur-quick,.2s) var(--ease-out,cubic-bezier(.22, 1, .36, 1));padding:2px;display:block}.sp-switch__thumb{width:calc(var(--sp-switch-height,24px) - 4px);height:calc(var(--sp-switch-height,24px) - 4px);background:var(--sp-switch-thumb,#fff);transition:transform var(--dur-quick,.2s) var(--ease-out,cubic-bezier(.22, 1, .36, 1));border-radius:50%;display:block;box-shadow:0 1px 3px #0003}.sp-switch input:checked~.sp-switch__track{background:var(--sp-switch-on,#3b82f6)}.sp-switch input:checked~.sp-switch__track .sp-switch__thumb{transform:translateX(calc(var(--sp-switch-width,42px) - var(--sp-switch-height,24px)))}.sp-switch input:focus-visible~.sp-switch__track{outline:2px solid var(--sp-switch-focus,var(--accent,#3b82f6));outline-offset:2px}.sp-switch input:disabled~.sp-switch__track{opacity:.45;cursor:not-allowed}.sp-switch input:disabled{cursor:not-allowed}.sp-switch.is-locked{cursor:default;opacity:.55}.sp-switch.is-locked .sp-switch__track{background:var(--sp-switch-on,#3b82f6)}.sp-switch.is-locked .sp-switch__thumb{transform:translateX(calc(var(--sp-switch-width,42px) - var(--sp-switch-height,24px)))}.sp-switch__sr{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.sp-switch__track,.sp-switch__thumb{transition:none}}.sp-switch{--radius-pill:9999px;--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-quick:.2s;--sp-switch-width:42px;--sp-switch-height:24px;--sp-switch-on:#3b82f6;--sp-switch-off:#e5e5e5;--sp-switch-thumb:#fff;--sp-switch-focus:#3b82f6}:root.dark .sp-switch,[data-theme=dark] .sp-switch{--sp-switch-off:#3a3a3d;--sp-switch-thumb:#ededed}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;font-size:var(--text-xs);border:0;margin:-1px;padding:0;position:absolute;overflow:hidden}.lm{flex:none;place-items:center;line-height:0;display:inline-grid}.lm svg{width:100%;height:100%;display:block}.workbench-shell{height:100vh;background:#f3f4f2;height:100dvh;min-height:0;display:flex;overflow:hidden}.workbench-main{flex-direction:column;flex:1;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--border);background:#ffffffeb;flex:0 0 64px;align-items:center;gap:18px;height:64px;padding:0 22px;display:flex}.breadcrumb{min-width:0;font-size:var(--text-sm);color:var(--ink-faint);align-items:center;gap:8px;display:flex}.breadcrumb strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.breadcrumb i{color:var(--border);font-style:normal}.topbar-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.save-state{color:var(--ink-faint);font-size:var(--text-xs);align-items:center;gap:7px;display:inline-flex}.save-state i{background:var(--ink-faint);border-radius:50%;width:6px;height:6px}.mobile-status-bar{display:none}.button,.icon-button{cursor:pointer;transition:background-color var(--dur-instant) var(--ease-out), color var(--dur-instant) var(--ease-out), opacity var(--dur-instant) var(--ease-out), transform var(--dur-instant) var(--ease-out);border:0}.button{border-radius:var(--radius-pill);min-height:38px;font-size:var(--text-sm);white-space:nowrap;justify-content:center;align-items:center;gap:7px;padding:0 16px;font-weight:500;display:inline-flex}.button--primary{color:#fff;background:var(--ink)}.button--primary:hover:not(:disabled){background:#111;transform:translateY(-1px)}.button--secondary{border:1px solid var(--border);background:var(--surface);color:var(--ink-muted)}.button--secondary:hover:not(:disabled){background:var(--surface-hover);color:var(--ink)}.button:focus-visible,.icon-button:focus-visible,.sidebar-close:focus-visible,.sheet-close:focus-visible,.nav-item:focus-visible,.opening-row:focus-visible,.job-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.button:disabled,.nav-item:disabled,.job-card:disabled,.sidebar-section-heading button:disabled,.opening-row:disabled{cursor:not-allowed;opacity:.42;transform:none}.icon-button{border-radius:var(--radius-nav);background:0 0;place-items:center;width:38px;height:38px;display:grid}.icon-button:hover{background:var(--surface-hover)}.status-badge{border-radius:var(--radius-pill);min-height:26px;font-size:var(--text-xs);white-space:nowrap;align-items:center;gap:5px;padding:0 9px;font-weight:500;display:inline-flex}.status-badge--estimate{background:var(--surface-hover);color:var(--ink-muted)}.status-badge--verified{color:#287343;background:#eaf7ee}.job-sidebar{z-index:20;border-right:1px solid var(--border);background:var(--surface);flex-direction:column;flex:0 0 236px;width:236px;padding:16px 12px 12px;display:flex}.brand{align-items:center;gap:10px;padding:4px 7px 19px;display:flex}.brand-mark{border-radius:var(--radius-nav);background:var(--ink);color:#fff;place-items:center;width:34px;height:34px;display:grid}.brand>span:nth-child(2),.sidebar-footer>span:nth-child(2){flex-direction:column;gap:2px;display:flex}.brand strong{font-size:var(--text-md);font-weight:500}.brand small,.sidebar-footer small{color:var(--ink-faint);font-size:var(--text-xs)}.sidebar-close{border-radius:var(--radius-nav);background:0 0;border:0;place-items:center;width:36px;height:36px;margin-left:auto;display:none}.primary-nav{border-bottom:1px solid var(--border);gap:3px;padding-bottom:18px;display:grid}.nav-item{border-radius:var(--radius-nav);width:100%;height:38px;color:var(--ink-muted);font-size:var(--text-sm);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:9px;padding:0 10px;display:flex}.nav-item>span:last-child{color:var(--ink-faint);font-size:var(--text-xs);margin-left:auto}.nav-item:hover,.nav-item.is-active{background:var(--surface-hover);color:var(--ink)}.sidebar-section-heading{color:var(--ink-faint);font-size:var(--text-xs);text-transform:uppercase;justify-content:space-between;align-items:center;padding:21px 8px 8px;display:flex}.sidebar-section-heading button{border-radius:var(--radius-nav);cursor:pointer;background:0 0;border:0;width:28px;height:28px}.job-card{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);text-align:left;cursor:pointer;gap:5px;width:100%;padding:13px;display:grid}.job-card strong{font-size:var(--text-sm);font-weight:500}.job-card>span{color:var(--ink-faint);font-size:var(--text-xs)}.rename-opening{width:100%;margin-top:10px}.catalogue-gate{background:var(--surface-subtle);min-height:100vh;color:var(--ink-muted);text-align:center;place-content:center;justify-items:center;gap:6px;padding:24px;display:grid}.catalogue-gate>strong{color:var(--ink);font-size:var(--text-md);font-weight:500}.catalogue-gate>span{color:var(--ink-faint);font-size:var(--text-sm)}.catalogue-gate--issues{gap:16px}.catalogue-gate__actions{gap:8px;margin-top:8px;display:flex}.catalogue-workbench{height:100vh;background:#f3f4f2;flex-direction:column;height:100dvh;min-height:0;display:flex;overflow:hidden}.catalogue-workbench>.workbench-shell{flex:1;height:auto;min-height:0}.catalogue-issues{min-height:38px;color:var(--ink-muted);text-align:center;background:#fffaf2;border-bottom:1px solid #eadbc5;flex:none;justify-content:center;align-items:center;gap:9px;padding:8px 16px;display:flex}.catalogue-issues__icon{color:var(--status-attention)}.catalogue-issues__content{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2px 6px;min-width:0;display:flex}.catalogue-issues strong{color:var(--ink);font-size:var(--text-sm);font-weight:500}.catalogue-issues p{font-size:var(--text-xs);margin:0;line-height:1.45}.catalogue-issues--empty{justify-content:initial;border-radius:var(--radius-card);width:min(100%,480px);min-height:0;box-shadow:var(--shadow-soft);text-align:left;border:1px solid #eadbc5;grid-template-columns:20px minmax(0,1fr);gap:12px;padding:20px;display:grid}.catalogue-issues--empty .catalogue-issues__content{justify-content:initial;gap:5px;display:grid}.catalogue-notice{z-index:30;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);max-width:360px;box-shadow:var(--shadow-soft);color:var(--ink-muted);font-size:var(--text-sm);padding:12px 16px;position:fixed;bottom:20px;right:20px}.job-progress{grid-template-columns:56px 1fr;align-items:center;gap:7px;margin-top:4px;display:grid}.job-progress:before{content:"";border-radius:var(--radius-pill);background:var(--surface-hover);grid-area:1/1;height:4px}.job-progress i{z-index:1;border-radius:var(--radius-pill);background:var(--accent);grid-area:1/1;height:4px}.opening-list{overscroll-behavior:contain;flex:auto;align-content:start;gap:3px;min-height:0;padding-top:12px;display:grid;overflow-y:auto}.opening-row{border-radius:var(--radius-nav);text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:35px minmax(0,1fr);align-items:center;gap:8px;width:100%;min-height:52px;padding:5px 8px;display:grid}.opening-row:hover:not(:disabled),.opening-row.is-active{background:var(--surface-hover)}.opening-number{border:1px solid var(--border);border-radius:var(--radius-nav);width:31px;height:31px;color:var(--ink-muted);font-size:var(--text-xs);place-items:center;display:grid}.opening-row>span:nth-child(2){gap:3px;min-width:0;display:grid}.opening-row strong{font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.opening-row small{color:var(--ink-faint);font-size:var(--text-xs)}.opening-row .status-badge{display:none}.opening-switch-note{border-radius:var(--radius-nav);background:var(--surface-subtle);color:var(--ink-muted);font-size:var(--text-xs);margin:10px 8px 0;padding:9px 10px;line-height:1.45}.sidebar-footer-wrap{border-top:1px solid var(--border);flex:none;margin-top:auto}.sidebar-footer{align-items:center;gap:9px;padding:12px 8px 8px;display:flex}.sidebar-footer strong{color:var(--ink-muted);font-size:var(--text-xs);font-weight:500}.storage-protection{border-radius:var(--radius-nav);background:var(--surface-subtle);gap:8px;padding:8px;display:grid}.storage-protection>span{gap:3px;display:grid}.storage-protection strong{color:var(--ink-muted);font-size:var(--text-xs);font-weight:500}.storage-protection small{color:var(--ink-faint);font-size:var(--text-xs);line-height:1.35}.storage-protection .button{width:100%;min-height:34px}.sync-dot{background:var(--success);border-radius:50%;width:8px;height:8px}.sidebar-scrim{display:none}@media (max-width:760px){.catalogue-issues:not(.catalogue-issues--empty){text-align:left;justify-content:flex-start;align-items:flex-start;padding:8px 12px}.catalogue-issues:not(.catalogue-issues--empty) .catalogue-issues__content{justify-content:initial;gap:2px;display:grid}}.workbench-body{flex:1;grid-template-columns:minmax(480px,1fr) 346px;gap:12px;min-height:0;padding:12px;display:grid;overflow:hidden}.canvas-column,.inspector-panel{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);min-height:0;box-shadow:var(--shadow-soft)}.canvas-column{flex-direction:column;display:flex;overflow:hidden}.canvas-toolbar{border-bottom:1px solid var(--border);grid-template-columns:minmax(160px,1fr) minmax(310px,430px) minmax(160px,1fr);align-items:center;gap:16px;min-height:74px;padding:13px 18px;display:grid}.canvas-toolbar>div:first-child{gap:3px;display:grid}.canvas-toolbar small{color:var(--ink-faint);font-size:var(--text-xs)}.canvas-toolbar h1{font-size:var(--text-lg);margin:0;font-weight:500;line-height:1.1}.canvas-toolbar .sp-segmented{justify-self:center}.canvas-stage{background-color:#f4f3f0;background-image:radial-gradient(#d7d6d1 .8px,#0000 .8px);background-size:18px 18px;flex:1;place-items:center;min-height:0;padding:22px;display:grid;overflow:hidden}.canvas-footer{border-top:1px solid var(--border);min-height:43px;color:var(--ink-faint);font-size:var(--text-xs);justify-content:space-between;align-items:center;gap:18px;padding:0 18px;display:flex}.canvas-footer>span:last-child{text-overflow:ellipsis;white-space:nowrap;max-width:36%;overflow:hidden}kbd{border:1px solid var(--border);border-radius:var(--radius-nav);background:var(--surface);min-width:20px;height:20px;color:var(--ink-muted);font-family:var(--font-ui);font-size:var(--text-xs);border-bottom-color:#cacaca;place-items:center;margin:0 1px;padding:0 5px;display:inline-grid}.dropzone-wrap{width:min(620px,100%)}.canvas-blocked{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);width:min(420px,100%);color:var(--ink-muted);box-shadow:var(--shadow-soft);text-align:center;justify-items:center;gap:8px;padding:24px;display:grid}.canvas-blocked strong{color:var(--ink);font-size:var(--text-md);font-weight:500}.canvas-blocked span{font-size:var(--text-sm);line-height:1.45}.canvas-blocked .button{margin-top:4px}.photo-dropzone{border-radius:var(--radius-card);text-align:center;min-height:390px;transition:border-color var(--dur-quick) var(--ease-out), background-color var(--dur-quick) var(--ease-out), transform var(--dur-quick) var(--ease-out);background:#ffffffe6;border:1px dashed #c8c8c8;flex-direction:column;justify-content:center;align-items:center;padding:38px;display:flex}.photo-dropzone.is-dragging{border-color:var(--accent);background:#f0f6ff;transform:scale(1.005)}.dropzone-icon{border-radius:var(--radius-card);background:var(--surface-hover);width:50px;height:50px;color:var(--ink-muted);place-items:center;display:grid}.photo-dropzone h2{font-size:var(--text-lg);margin:17px 0 7px;font-weight:500}.photo-dropzone p{max-width:390px;color:var(--ink-muted);font-size:var(--text-md);margin:0;line-height:1.55}.dropzone-actions{align-items:center;gap:12px;margin-top:24px;display:flex}.dropzone-actions>span{color:var(--ink-faint);font-size:var(--text-xs)}.dropzone-wrap>.field-error{text-align:center;margin:10px 0 0}.photo-editor{border-radius:var(--radius-card);background:var(--surface);width:min(920px,100%);height:100%;min-height:380px;max-height:690px;box-shadow:var(--shadow-float);position:relative;overflow:hidden}.photo-editor-frame{width:min(920px,100%);height:100%;min-height:380px;max-height:690px;position:relative}.photo-editor-frame .photo-editor{width:100%;max-height:none}.photo-replacement{z-index:3;justify-items:end;gap:7px;display:grid;position:absolute;top:14px;right:14px}.photo-replacement .field-error{border-radius:var(--radius-nav);background:var(--surface);max-width:280px;box-shadow:var(--shadow-soft);text-align:right;margin:0;padding:7px 10px}.photo-editor__svg{touch-action:pinch-zoom;width:100%;height:100%;display:block}.photo-editor__svg>image{filter:saturate(.88)contrast(.98)brightness(.97)}.photo-editor--annotated .photo-editor__svg>image{filter:saturate(.65)contrast(.94)brightness(.78)}.canvas-corner-label{z-index:2;border-radius:var(--radius-pill);color:#fff;font-size:var(--text-xs);background:#141414c7;padding:7px 11px;position:absolute;bottom:14px;left:14px}.opening-overlay text{fill:#fff;paint-order:stroke;stroke:#000000ad;stroke-width:.8px;font-family:var(--font-ui);letter-spacing:0;pointer-events:none;font-size:3px;font-weight:500}.opening-overlay line{stroke:#fff;stroke-width:.7px;stroke-dasharray:2 1;vector-effect:non-scaling-stroke}.opening-overlay__wash{fill:#3b82f624;stroke:none}.opening-overlay__line{fill:none;stroke:#fff;stroke-width:1.25px;vector-effect:non-scaling-stroke}.opening-handle__halo{fill:#fff;stroke:var(--accent);stroke-width:.5px;vector-effect:non-scaling-stroke;pointer-events:none}.opening-handle__dot{fill:var(--accent);pointer-events:none}.opening-handle__target{fill:#0000;cursor:grab;touch-action:pinch-zoom}.opening-handle__target:active{cursor:grabbing}.opening-handle__target[data-active]+.opening-handle__number{fill:#fff}.opening-handle__target[data-active]{stroke:#ffffffbf;stroke-width:.7px}.opening-handle__target:focus-visible{outline-offset:2px;stroke:var(--accent);stroke-width:1.5px;outline:2px solid #fff}.opening-handle__number{fill:#fff;stroke:none;font-family:var(--font-ui);pointer-events:none;font-size:2.5px;font-weight:500}.technical-window{fill:none;stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25px}.technical-window text{fill:var(--ink-muted);stroke:none;font-family:var(--font-ui);letter-spacing:0;font-size:3px}.inspector-wrap,.inspector-panel{height:100%;min-height:0;overflow:hidden}.inspector-panel{flex-direction:column;display:flex}.inspector{flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.inspector-heading{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:19px 20px 17px;display:flex}.inspector-heading>span:first-child{gap:3px;min-width:0;display:grid}.inspector-heading small{color:var(--ink-faint);font-size:var(--text-xs)}.inspector-heading h2{font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:500;overflow:hidden}.inspector-section{border-bottom:1px solid var(--border);padding:18px 20px}.section-kicker{align-items:center;gap:9px;display:flex}.section-kicker>span{background:var(--surface-hover);width:24px;height:24px;color:var(--ink-muted);font-size:var(--text-xs);border-radius:50%;place-items:center;display:grid}.section-kicker strong{font-size:var(--text-sm);font-weight:500}.inspector-section>p:not(.order-gate,.corner-progress,.verification-blockers){color:var(--ink-muted);font-size:var(--text-xs);margin:9px 0 13px 33px;line-height:1.5}.corner-guide{grid-template-columns:1fr 1fr;gap:6px;margin-left:33px;display:grid}.corner-guide span{border-radius:var(--radius-nav);background:var(--surface-subtle);color:var(--ink-muted);font-size:var(--text-xs);padding:7px 8px}.corner-progress{border-radius:var(--radius-nav);background:var(--surface-subtle);color:var(--ink-muted);font-size:var(--text-xs);align-items:center;gap:8px;margin:10px 0 0 33px;padding:8px 11px;line-height:1.35;display:flex}.corner-progress:before{content:"";background:var(--ink-faint);width:7px;height:7px;transition:background-color var(--dur-instant) var(--ease-out);border-radius:50%;flex:0 0 7px}.corner-progress[data-corners-complete=true]{color:#287343;background:#eaf7ee}.corner-progress[data-corners-complete=true]:before{background:var(--success)}.measurement-grid{grid-template-columns:1fr 1fr;gap:10px;margin-left:33px;display:grid}.measurement-field{min-width:0;color:var(--ink);font-size:var(--text-xs);align-content:start;gap:6px;display:grid}.measurement-field>small{min-height:28px;color:var(--ink-faint);font-size:var(--text-xs);line-height:1.3}.measurement-input{border:1px solid var(--border);border-radius:var(--radius-nav);background:var(--surface);height:41px;transition:border-color var(--dur-instant) var(--ease-out), box-shadow var(--dur-instant) var(--ease-out);align-items:center;display:flex}.measurement-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.measurement-input.has-error{border-color:var(--danger)}.measurement-input input{width:100%;min-width:0;height:100%;color:var(--ink);font-size:var(--text-md);background:0 0;border:0;outline:0;padding:0 5px 0 10px}.measurement-input input::placeholder{color:var(--ink-faint)}.measurement-input small{color:var(--ink-faint);font-size:var(--text-xs);padding-right:9px}.field-error,.measurement-field>small.field-error{color:var(--danger);font-size:var(--text-xs)}.confirmation-row{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:44px;margin-left:33px;display:flex}.confirmation-row .sp-switch{justify-content:center;min-width:44px;min-height:44px}.confirmation-row>span:first-child{gap:4px;display:grid}.confirmation-row strong,.verification-note strong{font-size:var(--text-xs);font-weight:500}.confirmation-row small,.verification-note small{color:var(--ink-faint);font-size:var(--text-xs);line-height:1.35}.confirmation-row.is-disabled{cursor:not-allowed}.verification-blockers{border-left:2px solid var(--border);border-radius:0 var(--radius-nav) var(--radius-nav) 0;background:var(--surface-subtle);color:var(--ink-muted);font-size:var(--text-xs);margin:12px 0 0 33px;padding:10px 12px;line-height:1.5}.verification-note{border-radius:var(--radius-nav);background:var(--surface-subtle);color:var(--ink-muted);gap:9px;margin:14px 0 0 33px;padding:11px;display:flex}.verification-note.is-complete{color:#287343;background:#eaf7ee}.verification-note>span{gap:3px;display:grid}.order-gate{border-left:2px solid var(--border);color:var(--ink-faint);font-size:var(--text-xs);margin:12px 0 0 33px;padding-left:10px;line-height:1.45}.order-gate strong{color:var(--ink-muted);font-weight:500}.inspector-actions{border-top:1px solid var(--border);background:#fffffff5;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:auto;padding:14px 20px;display:grid;position:sticky;bottom:0}.inspector-actions .button--primary{grid-column:1/-1}.mobile-sheet-head{display:none}.notice{z-index:80;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--ink);color:#fff;max-width:calc(100vw - 32px);box-shadow:var(--shadow-float);font-size:var(--text-sm);animation:notice-enter var(--dur-enter) var(--ease-out);align-items:center;gap:9px;padding:10px 11px 10px 14px;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.notice button{color:#fff;cursor:pointer;background:#ffffff1f;border:0;border-radius:50%;place-items:center;width:28px;height:28px;display:grid}.notice--error{background:#7f1d1d}.notice--warning{background:#713f12}@keyframes notice-enter{0%{opacity:0;transform:translate(-50%,8px)}}.mobile-menu,.mobile-inspector{display:none}@media (max-width:1120px){.job-sidebar{width:270px;transition:transform var(--dur-enter) var(--ease-out);box-shadow:var(--shadow-float);position:fixed;inset:0 auto 0 0;transform:translate(-104%)}.job-sidebar.is-open{transform:translate(0)}.sidebar-close{display:grid}.sidebar-scrim{z-index:19;opacity:0;pointer-events:none;transition:opacity var(--dur-exit) var(--ease-in);background:#14141440;border:0;display:block;position:fixed;inset:0}.sidebar-scrim.is-open{opacity:1;pointer-events:auto}.mobile-menu{display:grid}.canvas-toolbar{grid-template-columns:minmax(140px,1fr) minmax(300px,420px)}}@media (max-width:860px){body{overflow:auto}.workbench-shell{min-height:100dvh}.button,.storage-protection .button{min-height:44px}.icon-button,.sidebar-close,.sheet-close{width:44px;height:44px}.sp-segmented__option{min-height:44px}.measurement-input{height:44px}.notice button{width:44px;height:44px}.topbar{z-index:10;flex-basis:58px;height:58px;padding:0 12px;position:sticky;top:0}.breadcrumb span,.breadcrumb i,.save-state,.topbar-actions .status-badge{display:none}.mobile-status-bar{border-bottom:1px solid var(--border);background:#fffffff5;flex:0 0 58px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;min-height:58px;padding:7px 12px;display:grid}.mobile-save-state{min-width:0;color:var(--ink-faint);font-size:var(--text-xs);align-items:center;gap:7px;display:flex}.mobile-save-state>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.mobile-save-state i{background:var(--ink-faint);border-radius:50%;flex:0 0 6px;width:6px;height:6px}.mobile-save-action{white-space:nowrap;min-width:72px;min-height:44px;padding-inline:12px}.workbench-body{min-height:calc(100dvh - 116px);padding:0;display:block}.canvas-column{min-height:calc(100dvh - 116px);box-shadow:none;border:0;border-radius:0}.canvas-toolbar{grid-template-columns:1fr auto;gap:12px;min-height:auto;padding:12px}.canvas-toolbar>div:first-child{grid-column:1}.canvas-toolbar h1{font-size:var(--text-md)}.canvas-toolbar .sp-segmented{grid-area:2/1/auto/-1;width:100%}.mobile-inspector{grid-area:1/2;display:inline-flex}.top-export-job{display:none}.canvas-stage{overscroll-behavior:contain;min-height:0;padding:12px;display:block;overflow-y:auto}.canvas-footer{min-height:42px;padding:0 12px}.canvas-footer span:first-child{display:none}.canvas-footer>span:last-child{max-width:100%}.photo-editor,.photo-editor-frame{width:100%;min-height:0;max-height:none}.photo-editor select[aria-label="Proposed window frame finish"]{min-height:44px!important}.photo-dropzone{min-height:58vh;padding:26px}.photo-capture-stage{gap:14px;width:100%;display:grid}.mobile-measurement-card{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow-soft);gap:8px;padding:18px;display:grid}.mobile-measurement-card__eyebrow{color:var(--ink-faint);font-size:var(--text-xs)}.mobile-measurement-card h2{color:var(--ink);font-size:var(--text-lg);margin:0;font-weight:500;line-height:1.2}.mobile-measurement-card p{color:var(--ink-muted);font-size:var(--text-sm);margin:0;line-height:1.45}.mobile-measurement-card__fields{grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;display:grid}.mobile-measurement-card__fields label{color:var(--ink);font-size:var(--text-sm);gap:6px;display:grid}.mobile-measurement-card__fields label>small{color:var(--danger);font-size:var(--text-xs);line-height:1.35}.inspector-wrap{z-index:50;pointer-events:none;position:fixed;inset:0}.inspector-wrap.is-open{pointer-events:auto}.inspector-scrim{opacity:0;width:100%;transition:opacity var(--dur-exit) var(--ease-in);background:#14141447;border:0;position:absolute;inset:0}.inspector-wrap.is-open .inspector-scrim{opacity:1}.inspector-panel{border-radius:var(--radius-panel) var(--radius-panel) 0 0;height:auto;box-shadow:var(--shadow-float);transition:transform var(--dur-enter) var(--ease-out);position:absolute;inset:8vh 0 0;transform:translateY(104%)}.inspector-wrap.is-open .inspector-panel{transform:translateY(0)}.mobile-sheet-head{border-bottom:1px solid var(--border);justify-content:center;align-items:center;height:44px;display:flex}.mobile-sheet-head>span{border-radius:var(--radius-pill);background:var(--border);width:40px;height:4px}.mobile-sheet-head button{border-radius:var(--radius-nav);background:0 0;border:0;place-items:center;width:44px;height:44px;display:grid;position:absolute;right:4px}.inspector{overscroll-behavior:contain;height:calc(92vh - 44px);padding-bottom:env(safe-area-inset-bottom)}.inspector-heading{padding-top:15px}}@media (max-width:520px){.topbar{gap:9px}.breadcrumb{font-size:var(--text-xs)}.top-export-job{padding:0 10px}.top-export-job__label{display:none}.photo-dropzone h2{font-size:var(--text-lg)}.dropzone-actions{flex-direction:column}.photo-editor{border-radius:var(--radius-nav)}.corner-guide,.measurement-grid,.confirmation-row,.verification-note,.order-gate,.corner-progress,.verification-blockers,.spec-reuse,.spec-copied,.inspector-section>p:not(.order-gate,.corner-progress,.verification-blockers){margin-left:0}.measurement-grid,.inspector-actions{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.job-sidebar,.sidebar-scrim,.inspector-panel,.inspector-scrim,.notice{transition:none;animation:none}}.spec-editor{color:var(--ink);gap:13px;margin:13px 0 0 33px;display:grid}.spec-choice{border:0;min-width:0;margin:0;padding:0}.spec-choice>legend,.spec-text-field>label{color:var(--ink);font-size:var(--text-xs);margin:0 0 6px;font-weight:500}.spec-choice .sp-segmented__option{min-height:38px}.spec-empty,.spec-hint{color:var(--ink-muted);font-size:var(--text-xs);margin:0;line-height:1.45}.spec-standard,.spec-special,.spec-lights,.spec-glazing{gap:11px;min-width:0;display:grid}.spec-schematic{grid-template-columns:repeat(var(--spec-light-count), minmax(0, 1fr));border:1px solid var(--border);border-radius:var(--radius-nav);background:var(--surface);min-height:70px;display:grid;overflow:hidden}.spec-schematic>span{text-align:center;place-content:center;gap:3px;min-width:0;display:grid}.spec-schematic>span+span{border-left:1px solid var(--border)}.spec-schematic b{color:var(--ink);font-size:var(--text-xs);font-weight:500}.spec-schematic small{color:var(--ink-faint);font-size:var(--text-xs);text-overflow:ellipsis;overflow:hidden}.spec-light,.spec-glazing{border:1px solid var(--border);border-radius:var(--radius-nav);background:var(--surface-subtle);padding:11px}.spec-light{gap:10px;display:grid}.spec-light__head{justify-content:space-between;align-items:center;gap:8px;min-height:32px;display:flex}.spec-light__head>strong{font-size:var(--text-sm);font-weight:500}.spec-remove{border-radius:var(--radius-nav);min-height:32px;color:var(--ink-muted);font-size:var(--text-xs);cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;padding:0 7px;display:inline-flex}.spec-remove:hover:not(:disabled){background:var(--surface-hover);color:var(--ink)}.spec-remove:focus-visible,.spec-add:focus-visible,.spec-text-field textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.spec-remove:disabled,.spec-add:disabled{cursor:not-allowed;opacity:.42}.spec-light__handing{padding-top:1px}.spec-add{width:100%;min-height:38px}.spec-limit{color:var(--ink-faint);font-size:var(--text-xs);text-align:center}.spec-glazing{gap:12px}.spec-text-field{min-width:0;display:grid}.spec-text-field textarea{resize:vertical;border:1px solid var(--border);border-radius:var(--radius-nav);background:var(--surface);width:100%;min-height:82px;color:var(--ink);font:inherit;font-size:var(--text-sm);letter-spacing:inherit;transition:border-color var(--dur-instant) var(--ease-out), box-shadow var(--dur-instant) var(--ease-out);outline:0;padding:9px 10px;line-height:1.45}.spec-text-field textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.spec-text-field textarea[aria-invalid=true]{border-color:var(--danger)}.spec-text-field>small{color:var(--ink-faint);font-size:var(--text-xs);margin-top:5px;line-height:1.35}.spec-count{justify-self:end}.spec-errors{color:var(--danger);font-size:var(--text-xs);gap:3px;line-height:1.35;display:grid}.spec-kind-dialog .sp-dialog__body{max-width:460px}.spec-kind-dialog .sp-dialog__actions button{min-height:44px}.spec-reuse{gap:7px;margin:13px 0 0 33px;display:grid}.spec-reuse__action{text-align:left;white-space:normal;justify-content:flex-start;width:100%;min-height:44px;padding:9px 13px;line-height:1.35}.spec-reuse__hint{color:var(--ink-faint);font-size:var(--text-xs);margin:0;line-height:1.45}.spec-reuse__confirm{border:1px solid var(--border);border-radius:var(--radius-nav);background:var(--surface-subtle);gap:9px;padding:11px;display:grid}.spec-reuse__confirm p{color:var(--ink-muted);font-size:var(--text-xs);margin:0;line-height:1.45}.spec-reuse__confirm-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.spec-copied{border-radius:var(--radius-nav);background:var(--surface-subtle);color:var(--ink-muted);font-size:var(--text-xs);gap:5px;margin:11px 0 0 33px;padding:11px;line-height:1.45;display:grid}.spec-copied strong{color:var(--ink);font-size:var(--text-xs);font-weight:500}.spec-copied ul{gap:3px;margin:0;padding-left:17px;display:grid}.spec-copied small{color:var(--ink-faint);font-size:var(--text-xs);line-height:1.4}@media (max-width:860px){.spec-choice .sp-segmented__option,.spec-add,.spec-remove{min-height:44px}}@media (max-width:520px){.spec-editor{margin-left:0}.spec-light,.spec-glazing{padding:10px}}@media (prefers-reduced-motion:reduce){.spec-text-field textarea,.corner-progress:before{transition:none}}.inspector-section--measurements .measurement-grid,.inspector-section--measurements>p,.inspector-section--photo>p,.inspector-section--details>p{margin-left:0}.section-kicker em{color:var(--ink-faint);font-size:var(--text-xs);font-style:normal;font-weight:400}.measurement-field__label{font-size:var(--text-md);font-weight:500}.measurement-input{height:48px;min-height:48px}.measurement-input input{font-size:var(--text-md)}.inspector-section{padding:16px 18px}.inspector-heading{padding:16px 18px 14px}.inspector-actions{background:var(--surface);margin-top:0;padding:6px 18px}.inspector-actions .order-gate{color:var(--ink-faint);border-left:0;grid-column:1/-1;margin:0;padding:0;line-height:1.35}.photo-dropzone__optional{color:var(--ink-faint);font-size:var(--text-sm);font-weight:400}.photo-capture-stage{width:min(620px,100%)}.mobile-measurement-card{display:none}.inspector-disclosure>summary{cursor:pointer;list-style:none}.inspector-disclosure>summary::-webkit-details-marker{display:none}.inspector-disclosure>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-nav)}.inspector-disclosure>summary:after{content:"+";color:var(--ink-faint);font-size:var(--text-lg);margin-left:auto;font-weight:400;line-height:1}.inspector-disclosure[open]>summary:after{content:"−"}.inspector-disclosure__body{gap:10px;margin-top:12px;display:grid}.inspector-disclosure__body>p{color:var(--ink-muted);font-size:var(--text-xs);margin:0;line-height:1.5}.catalogue-gate{place-content:center;gap:10px;min-height:100vh}.catalogue-gate:before{content:"Window survey";color:var(--ink-faint);font-size:var(--text-sm);margin-bottom:4px;display:block}.catalogue-gate>strong{font-size:var(--text-lg)}.catalogue-gate>span{max-width:32ch;line-height:1.45}.catalogue-gate__actions{margin-top:10px}.catalogue-gate__actions .button{min-height:46px;padding-inline:20px}@media (min-width:861px){.workbench-body{grid-template-columns:minmax(0,1fr) minmax(360px,400px)}}@media (max-width:860px){.mobile-measurement-card{display:grid}.inspector-section{padding:16px 20px}.inspector-section--measurements .measurement-grid{margin-left:0}.measurement-input{height:52px;min-height:52px}.inspector-actions{padding:14px 20px}}.save-state--dirty i,.save-state--saving i{background:var(--status-attention)}.save-state--saved i{background:var(--success)}.save-state--error i{background:var(--danger)}
