:root{--wall: #e7e1d6;--wall-shadow: rgba(40, 30, 15, .1);--page: #efeae1;--panel: #ffffff;--ink: #19140d;--ink-2: #4a3f30;--muted: #8f8579;--rule: #ddd3c2;--rule-2: #ecdfc8;--accent: #b16a2b;--accent-soft: #f4ead8;--frame: #1a1612;--mat: #f6f1e6;--good: #517a4a;--danger: #9a3a2a;--shadow-md: 0 1px 2px rgba(20, 15, 5, .04), 0 8px 24px -8px rgba(20, 15, 5, .1);--shadow-lg: 0 2px 6px rgba(20, 15, 5, .05), 0 24px 60px -20px rgba(20, 15, 5, .18);color:var(--ink);background:var(--page);font-family:Geist,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"ss01","cv11"}.serif{font-family:"Instrument Serif",Times New Roman,serif;font-weight:400}.mono{font-family:Geist Mono,ui-monospace,monospace;font-feature-settings:"tnum","ss01"}.eyebrow{font-family:Geist Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500}.scroll{overflow-y:auto}.scroll::-webkit-scrollbar{width:8px;height:8px}.scroll::-webkit-scrollbar-thumb{background:#00000014;border-radius:8px}.scroll::-webkit-scrollbar-thumb:hover{background:#00000029}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{border:1px solid var(--rule);background:#fff;color:var(--ink);border-radius:6px;min-height:30px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13px;font-weight:500;line-height:1.15;cursor:pointer}button:hover{border-color:var(--ink-2)}button:disabled{opacity:.45;cursor:not-allowed}input,select{width:100%;border:1px solid var(--rule);background:#fff;color:var(--ink);border-radius:6px;min-height:30px;padding:6px 8px;font-size:13px}label{display:grid;gap:5px;color:var(--ink-2);font-size:11px;font-weight:600;letter-spacing:0}.app{display:grid;grid-template-rows:56px minmax(0,1fr) 28px;grid-template-columns:296px minmax(0,1fr) 336px;grid-template-areas:"topbar topbar topbar" "library canvas inspector" "status status status";height:100vh;min-height:800px;min-width:1320px;background:var(--page)}.small-screen-banner{display:none;position:fixed;top:0;left:0;right:0;background:var(--accent);color:#fff;padding:8px 12px;text-align:center;font-family:var(--font-mono);font-size:13px;letter-spacing:.01em;z-index:100;box-shadow:0 2px 8px #0000002e}@media(max-width:1319px){.small-screen-banner{display:block}}.app>.topbar{grid-area:topbar}.app>.library-panel{grid-area:library;min-height:0}.app>.canvas-wrap{grid-area:canvas;min-height:0}.app>.side-panel{grid-area:inspector;min-height:0}.app>.statusbar{grid-area:status}.tb-bar{grid-area:topbar;display:flex;align-items:center;gap:16px;padding:0 16px 0 18px;background:#fbf8f1;border-bottom:1px solid var(--rule)}.tb-left{display:flex;align-items:center;gap:16px;flex:0 0 auto}.tb-brand{display:flex;align-items:center;gap:10px}.tb-brand-mark{width:36px;height:36px;position:relative;flex:0 0 36px}.tb-wordmark{font-family:"Instrument Serif",Times New Roman,serif;font-size:22px;line-height:1;letter-spacing:-.01em;font-weight:400;margin:0;color:var(--ink)}.tb-tagline{margin-top:3px}.tb-divider{width:1px;height:28px;background:var(--rule)}.tb-proj{display:flex;align-items:center;gap:8px}.tb-proj-input{border:none;background:transparent;outline:none;font-size:14px;font-weight:500;padding:4px 0;min-width:180px;min-height:0;border-radius:0;border-bottom:1px dashed transparent;color:var(--ink)}.tb-proj-input:focus{border-bottom-color:var(--rule)}.tb-saved-dot{width:7px;height:7px;border-radius:99px;background:var(--good);margin-left:4px}.tb-saved-label{font-size:11px;color:var(--muted);white-space:nowrap}.tb-center{flex:1;display:flex;align-items:center;justify-content:center;gap:8px}.tb-center>.tb-times{color:var(--muted);margin:0 4px}.tb-unit-badge{font-size:10px;color:var(--muted);font-family:Geist Mono,monospace;letter-spacing:.08em;text-transform:uppercase}.tb-wall-dim-label{display:flex;align-items:center;gap:6px;color:inherit;font-weight:500;grid-template-columns:none}.tb-wall-dim-input{width:56px;height:30px;min-height:30px;padding:0 8px;border:1px solid var(--rule);border-radius:6px;background:#fff;font-size:13px;font-family:Geist Mono,monospace;font-feature-settings:"tnum";text-align:right}.tb-right{display:flex;align-items:center;gap:6px;flex:0 0 auto}.tb-icon-btn{width:30px;height:30px;min-height:30px;padding:0;border:1px solid var(--rule);border-radius:6px;background:#fff;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);gap:0}.tb-ghost-btn{height:30px;min-height:30px;padding:0 12px;border:1px solid var(--rule);border-radius:6px;background:#fff;font-size:13px;font-weight:500;display:inline-flex;align-items:center;gap:6px;color:var(--ink)}.tb-primary-btn{height:30px;min-height:30px;padding:0 12px 0 14px;border:1px solid #14110b;border-radius:6px;background:var(--ink);color:#fbf8f1;font-size:13px;font-weight:500;display:inline-flex;align-items:center;gap:6px}.tb-primary-btn:hover{border-color:var(--ink);background:#2a2218}.tb-vline{width:1px;height:24px;background:var(--rule);margin:0 4px}.tb-segmented{display:inline-flex;background:#f1ece2;border:1px solid var(--rule);border-radius:8px;padding:2px}.tb-segmented-btn{padding:5px 12px;border:none;border-radius:6px;background:transparent;color:var(--ink-2);font-size:12.5px;font-weight:500;letter-spacing:-.005em;min-height:0}.tb-segmented-btn-active{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px #0000000f}.tb-segmented-compact{padding:1px;margin-left:4px}.tb-segmented-compact .tb-segmented-btn{padding:3px 8px;font-size:11px;font-family:Geist Mono,monospace;letter-spacing:.04em;text-transform:lowercase}.tb-sr-heading{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.lp-panel{grid-area:library;background:var(--panel);border-right:1px solid var(--rule);display:flex;flex-direction:column;min-height:0}.lp-tabs{display:flex;gap:18px;padding:0 16px;border-bottom:1px solid var(--rule);flex:0 0 auto}.lp-tab{padding:14px 0 11px;background:none;border:none;border-bottom:1.5px solid transparent;border-radius:0;font-size:13px;font-weight:500;letter-spacing:-.005em;color:var(--muted);min-height:0}.lp-tab-active{color:var(--ink);border-bottom-color:var(--ink)}.lp-body{flex:1;min-height:0;overflow-y:auto}.lp-tab-pane{padding:14px 16px 24px;display:flex;flex-direction:column;gap:14px}.lp-section-header{display:flex;flex-direction:column;gap:3px}.lp-section-title{font-family:"Instrument Serif",Times New Roman,serif;font-weight:400;font-size:18px;line-height:1.15;letter-spacing:-.01em;margin:0;color:var(--ink)}.lp-section-sub{font-size:11.5px;color:var(--muted)}.lp-footer{padding:12px 16px 14px;border-top:1px solid var(--rule);background:#fbf8f1}.lp-tip-body{font-size:12px;color:var(--ink-2);line-height:1.45}.lp-tip-body strong{color:var(--ink)}.lp-template-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.lp-template-card{padding:0;border:1px solid var(--rule);border-radius:8px;background:#fff;text-align:left;overflow:hidden;transition:border-color .15s;min-height:0;display:flex;flex-direction:column;gap:0}.lp-template-card:hover{border-color:var(--ink-2)}.lp-template-preview{aspect-ratio:16 / 11;background:var(--wall);border-bottom:1px solid var(--rule)}.lp-template-meta{padding:8px 10px}.lp-template-name{font-size:13px;font-weight:500}.lp-template-sub{font-size:11px;color:var(--muted)}.lp-frame-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lp-frame-tile{width:100%;border:1px solid var(--rule);border-radius:6px;background:#fff;padding:8px;display:flex;flex-direction:column;gap:6px;align-items:stretch;text-align:left;cursor:pointer;min-height:0}.lp-frame-tile:hover{border-color:var(--ink-2)}.lp-frame-tile.active{border-color:var(--ink);background:var(--accent-soft)}.lp-frame-tile-swatch{width:100%;aspect-ratio:1 / 1;background:var(--wall);border-radius:3px;display:flex;align-items:center;justify-content:center}.lp-frame-tile-swatch-inner{display:flex;align-items:center;justify-content:center;padding:8%;border:1px solid rgba(17,24,39,.2)}.lp-frame-tile-name{font-size:12px;font-weight:500;color:var(--ink)}.lp-frame-tile-sub{font-size:10px;color:var(--muted);font-family:Geist Mono,monospace}.lp-style-row{display:flex;gap:6px;flex-wrap:wrap}.lp-style-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 9px 5px 6px;border:1px solid var(--rule);border-radius:99px;background:#fff}.lp-style-chip-swatch{width:12px;height:12px;border-radius:2px;box-shadow:inset 0 0 0 1px #0000001a}.lp-style-chip-label{font-size:11.5px}.lp-upload-card{width:100%;border:1.5px dashed var(--rule);border-radius:8px;padding:20px 12px;background:transparent;color:var(--ink-2);display:flex;flex-direction:column;align-items:center;gap:4px}.lp-photo-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.lp-photo-swatch{aspect-ratio:1 / 1;border-radius:4px;overflow:hidden;position:relative}.lp-add-button{width:100%;background:var(--ink);border-color:var(--ink);color:#fbf8f1;height:32px}.lp-add-button:hover{background:#2a2218;border-color:var(--ink)}.lp-field{display:grid;gap:4px}.lp-field-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lp-field-row>label{display:grid;gap:4px}.lp-section-divider{height:1px;background:var(--rule);margin:6px 0 2px}.lp-button-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.lp-list{display:flex;flex-direction:column;gap:6px}.lp-list-item{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border:1px solid var(--rule);border-radius:6px;background:#fff;gap:6px;font-size:12px}.lp-shape-icons{display:inline-flex;align-items:center;color:var(--ink-2)}.ip-panel{grid-area:inspector;background:var(--panel);border-left:1px solid var(--rule);display:flex;flex-direction:column;min-height:0}.ip-header{padding:18px 18px 14px;border-bottom:1px solid var(--rule)}.ip-header-row{display:flex;justify-content:space-between;align-items:flex-start}.ip-title-serif{font-family:"Instrument Serif",Times New Roman,serif;font-weight:400;font-size:24px;line-height:1.15;letter-spacing:-.01em;margin:2px 0 0;color:var(--ink)}.ip-title-sub{font-size:11px;color:var(--muted);margin-top:1px}.ip-body{flex:1;min-height:0;overflow-y:auto}.ip-footer{padding:14px;border-top:1px solid var(--rule);background:#fbf8f1;display:flex;gap:8px}.ip-tabs{display:flex;gap:14px;padding:6px 18px 0;border-bottom:1px solid var(--rule)}.ip-tab{padding:8px 0 7px;background:none;border:none;border-bottom:1.5px solid transparent;border-radius:0;font-size:12px;font-weight:500;color:var(--muted);min-height:0}.ip-tab-active{color:var(--ink);border-bottom-color:var(--ink)}.ip-close-btn{width:28px;height:28px;min-height:28px;padding:0;border:1px solid var(--rule);border-radius:6px;background:#fff;color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center}.ip-primary{flex:1;height:38px;min-height:38px;padding:0 12px;border:1px solid #14110b;border-radius:6px;background:var(--ink);color:#fbf8f1;font-size:13px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:8px}.ip-primary:hover{background:#2a2218}.ip-secondary{flex:1;height:36px;min-height:36px;border:1px solid var(--rule);border-radius:6px;background:#fff;font-size:12.5px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;color:var(--ink)}.ip-danger{flex:1;height:36px;min-height:36px;border:1px solid var(--rule);border-radius:6px;background:#fff;font-size:12.5px;font-weight:500;color:var(--danger);display:inline-flex;align-items:center;justify-content:center;gap:6px}.ip-callout{background:var(--accent-soft);border:1px solid rgba(177,106,43,.25);border-radius:6px;padding:8px 10px;margin-top:4px}.ip-callout-body{font-size:12.5px;margin-top:2px;color:var(--ink)}.ip-style-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.ip-style-opt{border:1px solid var(--rule);border-radius:6px;padding:7px 9px;background:#fff;display:inline-flex;align-items:center;gap:7px;font-size:12px;text-align:left;cursor:pointer;min-height:0;justify-content:flex-start;color:var(--ink)}.ip-style-opt-active{border-color:var(--ink);background:var(--accent-soft)}.ip-style-opt-swatch{width:14px;height:14px;border-radius:3px;box-shadow:inset 0 0 0 1px #0000001f;flex:0 0 14px}.ip-mat-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0}.ip-group{padding:16px 18px;border-bottom:1px solid var(--rule)}.ip-group-header{display:flex;justify-content:space-between;align-items:baseline}.ip-group-sub{font-size:11px;color:var(--muted)}.ip-group-body{margin-top:10px;display:flex;flex-direction:column;gap:8px}.ip-stat-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.ip-stat-label{font-size:12.5px;color:var(--ink-2);white-space:nowrap}.ip-stat-value-wrap{display:flex;flex-direction:column;align-items:flex-end}.ip-stat-value{font-size:13px;font-weight:500;white-space:nowrap;color:var(--ink)}.ip-stat-value.mono{font-family:Geist Mono,monospace}.ip-stat-hint{font-size:10.5px;color:var(--good);margin-top:1px}.ip-row-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ip-num-field{display:block}.ip-num-field-wrap{margin-top:4px;display:flex;align-items:center;gap:4px;border:1px solid var(--rule);border-radius:6px;background:#fff;padding-right:8px}.ip-num-field-wrap input{width:100%;border:none;outline:none;background:transparent;padding:7px 8px;font-size:13px;font-family:Geist Mono,monospace;font-feature-settings:"tnum";min-height:0}.ip-num-field-suffix{font-size:10px;color:var(--muted);font-family:Geist Mono,monospace;letter-spacing:.06em}.ip-empty{font-size:12px;color:var(--muted);padding:4px 0}.ip-plan-actions{padding:16px 18px;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;gap:8px}.ip-plan-actions label{color:var(--ink-2);font-size:11px}.ip-status-message{margin:6px 0 0;padding:8px 10px;color:var(--ink-2);background:var(--accent-soft);border:1px solid rgba(177,106,43,.25);border-radius:6px;font-size:12px;line-height:1.35}.ip-status-message:empty{display:none}.ip-balance-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;aspect-ratio:16 / 9;margin-top:2px;border:1px solid var(--rule);border-radius:6px;padding:4px;background:#fbf8f1}.ip-balance-cell{border-radius:3px;display:flex;align-items:center;justify-content:center;font-family:Geist Mono,monospace;font-size:10px;color:var(--ink-2)}.panel-section{padding:14px 18px;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;gap:8px;background:transparent;border-radius:0}.panel-section h2{margin:0 0 4px;color:var(--ink);font-family:"Instrument Serif",Times New Roman,serif;font-weight:400;font-size:17px;line-height:1.15;letter-spacing:-.01em}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.icon-button{width:30px;min-height:30px;padding:0}.button-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.orientation-field{display:grid;gap:6px}.orientation-field>span{color:var(--ink-2);font-size:11px;font-weight:600}.segmented-control{display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:2px;background:#f1ece2;border:1px solid var(--rule);border-radius:8px}.segmented-control button{border-color:transparent;background:transparent;min-height:26px;font-size:12px}.segmented-control button.active{background:#fff;border-color:transparent;color:var(--ink);font-weight:600;box-shadow:0 1px 2px #0000000f}.sidebar-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:6px;background:#f1ece2;border:1px solid var(--rule);border-radius:8px}.sidebar-tabs button{min-height:28px;padding:0 6px;font-size:11px;gap:4px;border-color:transparent;background:transparent}.sidebar-tabs button.active{background:#fff;border-color:transparent;color:var(--ink);font-weight:600}.primary-button{width:100%;background:var(--ink);border-color:var(--ink);color:#fbf8f1;height:32px}.primary-button:hover{background:#2a2218}.active-tool{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}.shape-kind-icons{min-height:30px;display:flex;align-items:end;justify-content:center;color:var(--ink-2)}.template-list{display:grid;gap:8px;max-height:256px;overflow-y:auto;padding-right:4px}.template-card{width:100%;min-height:58px;padding:8px;justify-content:flex-start;text-align:left;background:#fff;display:grid;grid-template-columns:42px 1fr;align-items:center;gap:10px}.template-card.active{border-color:var(--ink);background:var(--accent-soft)}.template-swatch{width:42px;max-height:42px;min-height:30px;display:grid;place-items:center;flex:0 0 42px;padding:3px;border:1px solid rgba(17,24,39,.25);color:var(--ink);font-size:12px;font-weight:700}.template-swatch-mat{width:100%;height:100%;min-height:22px;display:grid;place-items:center;border:1px solid rgba(17,24,39,.2)}.template-swatch-mat span{min-width:16px;min-height:16px;display:grid;place-items:center;background:#f9fafb;border:1px solid var(--ink)}.template-card strong,.template-card small{display:block}.template-card small{margin-top:3px;color:var(--muted);font-size:11px;font-weight:500}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.placed-list,.guide-list,.obstacle-list{display:grid;gap:6px;max-height:180px;overflow:auto}.placed-row{display:grid;grid-template-columns:18px minmax(34px,.4fr) minmax(0,1.6fr);gap:8px;align-items:center;min-height:32px;padding:6px 8px;border:1px solid var(--rule);border-radius:6px;background:#fff}.placed-row input{min-height:16px;width:16px;padding:0}.placed-row span{color:var(--ink);font-size:12px;font-weight:600}.placed-row small{color:var(--muted);font-size:11px;text-align:right}.guide-list{grid-template-columns:1fr 1fr}.obstacle-list{max-height:220px}.obstacle-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,.8fr) minmax(0,.8fr) 32px;gap:6px;align-items:center}.obstacle-row input{min-width:0}.hole-row{display:grid;grid-template-columns:54px 1fr 1fr;gap:8px;align-items:end}.hole-row strong{color:var(--ink-2);font-size:12px;padding-bottom:8px}.microcopy{margin:0;color:var(--muted);font-size:12px;line-height:1.35}.status-message{margin:0;padding:8px 10px;color:var(--ink-2);background:var(--accent-soft);border:1px solid rgba(177,106,43,.25);border-radius:6px;font-size:12px;line-height:1.35}.coordinate-table{max-height:220px;overflow:auto;border:1px solid var(--rule);border-radius:6px}.table-head,.table-row{display:grid;grid-template-columns:.8fr 1.25fr 1.05fr 1.05fr;gap:6px;align-items:center;min-height:30px;padding:0 8px;font-size:12px}.table-head{position:sticky;top:0;background:#fbf8f1;color:var(--ink-2);font-size:11px;font-weight:600}.table-row:nth-child(odd){background:#fff}.empty-state{margin:0;padding:12px;color:var(--muted);font-size:12px}.hidden-file-input{display:none}.canvas-wrap{min-height:0;display:grid;place-items:start center;padding:24px 28px 36px;overflow:auto;background:var(--page);border:none;border-radius:0;box-shadow:none;position:relative}.wc-page-bg{background-image:radial-gradient(circle at 1px 1px,rgba(0,0,0,.06) .6px,transparent 1px);background-size:16px 16px;background-color:var(--page)}.wall-canvas{width:min(100%,1120px);min-width:640px;max-height:calc(100vh - 160px);background:transparent;border:none;border-radius:0;box-shadow:none;overflow:visible;touch-action:none}.wall-background{fill:var(--wall);transition:fill .2s ease}.wall-vignette{pointer-events:none}.grid-line{stroke:#140f050b;stroke-width:.1;pointer-events:none}.wc-ruler{pointer-events:none}.wc-ruler-tick{stroke-linecap:square}.wc-ruler-tick-minor{stroke:var(--rule);stroke-width:.12}.wc-ruler-tick-medium{stroke:var(--rule);stroke-width:.18}.wc-ruler-tick-major{stroke:var(--ink-2);stroke-width:.22}.wc-ruler-label{fill:var(--ink-2);font-family:Geist Mono,ui-monospace,monospace;font-size:2.4px;font-weight:500;letter-spacing:0;-webkit-user-select:none;user-select:none}.wc-wall-dim-rule{stroke:var(--rule);stroke-width:.18}.wc-wall-dim-label-h,.wc-wall-dim-label-v{fill:var(--muted);font-family:Geist Mono,ui-monospace,monospace;font-size:2.6px;font-weight:500;-webkit-user-select:none;user-select:none;pointer-events:none}.wc-eye-line-group{pointer-events:none}.wc-eye-line{stroke:#b16a2b8c;stroke-width:.22;stroke-dasharray:1.4 1.1}.wc-eye-label-bg{fill:#f4ead8d9;stroke:#b16a2b40;stroke-width:.12}.wc-eye-label{fill:var(--accent);font-family:Geist Mono,ui-monospace,monospace;font-size:2.4px;font-weight:500;letter-spacing:.04em;-webkit-user-select:none;user-select:none}.wc-zoom-chip{position:absolute;left:16px;bottom:16px;display:flex;align-items:center;gap:8px;padding:5px 10px;background:#ffffffeb;border:1px solid var(--rule);border-radius:6px;color:var(--ink-2);box-shadow:var(--shadow-md);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:2}.wc-zoom-chip-text{font-size:11px;color:var(--ink-2)}.wc-zoom-chip-sep{width:1px;height:12px;background:var(--rule)}.wc-zoom-chip-zoom{display:inline-flex;align-items:center;gap:4px;color:var(--ink-2);font-size:11px;font-weight:500;margin:0}.wc-zoom-chip-zoom select{border:none;background:transparent;padding:0;min-height:0;width:auto;font-size:11.5px;color:var(--ink);font-family:Geist Mono,ui-monospace,monospace;cursor:pointer}.wc-zoom-chip-zoom select:focus{outline:none}.working-area{fill:#b16a2b08;stroke:var(--rule-2);stroke-width:.22;stroke-dasharray:1.4 1;pointer-events:none}.guide-group{cursor:grab;touch-action:none}.guide-group:active{cursor:grabbing}.guide-hit{stroke:#b16a2b00;stroke-width:3;pointer-events:stroke}.guide-line{stroke:var(--accent);stroke-width:.22;stroke-dasharray:1.2 1;pointer-events:none;opacity:.85}.guide-label{fill:var(--accent);font-family:Geist Mono,ui-monospace,monospace;font-size:2.6px;font-weight:500;pointer-events:none}.shape-path{fill:#b16a2b0d;stroke:var(--accent);stroke-width:.32;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1.8 1.1;pointer-events:none;opacity:.85}.selection-marquee-group{pointer-events:none}.selection-marquee{fill:#b16a2b0f;stroke:var(--accent);stroke-width:.3;stroke-dasharray:1.4 1;animation:marching-ants .65s linear infinite}.selection-handle{fill:#fff;stroke:var(--accent);stroke-width:.22}.axis-line{stroke:var(--rule);stroke-width:.2}.reference-marker{stroke:var(--accent);stroke-width:.45;pointer-events:none}.origin-label,.frame-label{font-size:3.4px;fill:var(--ink);text-anchor:middle;dominant-baseline:middle;-webkit-user-select:none;user-select:none;pointer-events:none;font-family:Geist Mono,ui-monospace,monospace;font-weight:500}.origin-label{text-anchor:start;font-size:3px;fill:var(--muted)}.frame-label{fill:var(--ink-2)}.frame-group{cursor:grab}.frame-group:active{cursor:grabbing}.frame-shell{stroke:#140f0573;stroke-width:.12;filter:drop-shadow(0 .5px .7px rgba(20,15,5,.22))}.frame-group.finish-white .frame-shell{stroke:#d9d1c1;stroke-width:.16}.frame-group.locked{cursor:not-allowed}.frame-group.locked .frame-shell{stroke-dasharray:1.8 1.1}.frame-mat{stroke:#140f050d;stroke-width:.12;pointer-events:none}.photo-aperture{fill:#ffffffd9;stroke:#140f052e;stroke-width:.1;pointer-events:none}.frame-selection-outline{fill:none;stroke:var(--accent);stroke-width:.32;pointer-events:none;filter:url(#frame-selected-shadow)}.frame-group:hover .frame-shell{stroke:#b16a2b80;stroke-width:.18}.frame-group.selected .frame-shell{stroke:var(--accent);stroke-width:.18}.nail-dot{fill:var(--accent);stroke:#fff;stroke-width:.28;pointer-events:none}.obstacle-group{pointer-events:none}.obstacle-zone{fill:#9a3a2a1a;stroke:var(--danger);stroke-width:.22;stroke-dasharray:1.1 .8}.obstacle-label{fill:var(--danger);font-family:Geist Mono,ui-monospace,monospace;font-size:2.8px;font-weight:600;text-anchor:middle;dominant-baseline:middle}.side-panel{max-height:100vh;overflow:auto;display:flex;flex-direction:column;background:var(--panel);border-left:1px solid var(--rule);min-height:0}.sb-bar{grid-area:status;display:flex;justify-content:space-between;align-items:center;padding:0 14px;background:#fbf8f1;border-top:1px solid var(--rule);color:var(--ink-2)}.sb-left{display:flex;align-items:center;gap:16px}.sb-right{display:flex;align-items:center;gap:12px;color:var(--muted)}.sb-pill{display:flex;align-items:center;gap:6px;font-size:11px}.sb-pill-value{font-family:Geist Mono,monospace;color:var(--ink-2);font-weight:500}.sb-pill.accent .sb-pill-value{color:var(--accent)}.sb-shortcut{display:inline-flex;align-items:center;gap:5px;font-size:11px}.sb-kbd{font-family:Geist Mono,monospace;font-size:10px;padding:1px 5px;border:1px solid var(--rule);background:#fff;border-radius:3px;color:var(--ink-2)}@keyframes marching-ants{to{stroke-dashoffset:-4.8}}.ip-wall-color-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:4px}.ip-wall-color-label{font-size:12.5px;color:var(--ink-2)}.ip-wall-color-swatches{display:inline-flex;gap:4px}.ip-wall-color-swatch{width:24px;height:24px;border-radius:4px;border:1px solid rgba(0,0,0,.15);padding:0;min-height:0;cursor:pointer;box-shadow:inset 0 0 0 1px #ffffff1f}.ip-wall-color-swatch-active{outline:2px solid var(--ink);outline-offset:1px;border-color:#fff}.wc-measure-overlay,.wc-hang-overlay{pointer-events:none}.wc-measure-label-bg{fill:#e7e1d6eb;stroke:#140f052e;stroke-width:.1}.wc-measure-label{fill:var(--ink-2);font-family:Geist Mono,ui-monospace,monospace;font-size:2.2px;font-weight:500;-webkit-user-select:none;user-select:none}.wc-measure-oc-bg{fill:#b16a2bf2;stroke:#b16a2bf2;stroke-width:.1}.wc-measure-oc-label{fill:#fbf8f1;font-family:Geist Mono,ui-monospace,monospace;font-size:2.2px;font-weight:500;-webkit-user-select:none;user-select:none}.wc-hang-dot-outer{fill:#fffffff2;stroke:var(--accent);stroke-width:.32;filter:drop-shadow(0 .4px .6px rgba(20,15,5,.35))}.wc-hang-dot-inner{fill:var(--accent);stroke:none}.wc-hang-label-bg{fill:var(--ink);stroke:var(--ink);stroke-width:.1}.wc-hang-label{fill:#fbf8f1;font-family:Geist Mono,ui-monospace,monospace;font-size:2.2px;font-weight:500;-webkit-user-select:none;user-select:none}button:focus,input:focus,select:focus,textarea:focus,[role=tab]:focus{outline:none}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role=tab]:focus-visible,.lp-tab:focus-visible,.tb-icon-btn:focus-visible,.tb-ghost-btn:focus-visible,.tb-primary-btn:focus-visible,.tb-segmented-btn:focus-visible,.tb-wall-dim-input:focus-visible,.tb-proj-input:focus-visible,.ip-close-btn:focus-visible,.ip-wall-color-swatch:focus-visible,.ip-style-opt:focus-visible,.wc-zoom-btn:focus-visible,.collapsible-summary:focus-visible,.pm-trigger:focus-visible,.pm-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.collapsible{border-bottom:1px solid var(--rule)}.collapsible:last-of-type{border-bottom:none}.collapsible-summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:12px 0;-webkit-user-select:none;user-select:none}.collapsible-summary::-webkit-details-marker{display:none}.collapsible-summary:hover .collapsible-title{color:var(--ink)}.collapsible-chevron{display:inline-flex;width:14px;color:var(--muted);transition:transform .12s ease}.collapsible[open]>.collapsible-summary .collapsible-chevron{transform:rotate(90deg)}.collapsible-title-wrap{display:flex;flex-direction:column;gap:1px;flex:1}.collapsible-title{font-size:11px}.collapsible-sub{font-size:11px;color:var(--muted)}.collapsible-body{padding:0 0 14px;display:flex;flex-direction:column;gap:8px}.pm-wrap{position:relative}.pm-trigger{width:100%;justify-content:space-between;border:1px solid var(--rule);background:#fff;padding:0 10px 0 12px}.pm-trigger-caret{color:var(--muted);display:inline-flex}.pm-popover{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:30;background:#fff;border:1px solid var(--rule);border-radius:8px;box-shadow:var(--shadow-lg);padding:6px;display:flex;flex-direction:column;gap:2px}.pm-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:transparent;border:none;border-radius:6px;min-height:0;font-size:13px;font-weight:500;color:var(--ink);cursor:pointer;text-align:left;justify-content:flex-start}.pm-item:hover{background:var(--accent-soft);border-color:transparent}.pm-item:disabled{opacity:.5;cursor:not-allowed}.pm-item-flash,.pm-item-flash:disabled{background:var(--accent-soft);color:var(--good);opacity:1}.pm-divider{height:1px;background:var(--rule);margin:4px 2px}.pm-load-label{font-family:Geist Mono,monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:6px 10px 2px}.pm-load-select{margin:0 4px 4px;width:calc(100% - 8px)}
