:root{color-scheme:light dark;--paper: #f7f6f3;--surface: #ffffff;--surface-raised: #ffffff;--surface-sunken: #eeece7;--border: #d9d5cc;--border-strong: #b8b2a6;--ink: #1d1b17;--ink-muted: #5f5a51;--ink-faint: #8a8478;--accent: #b5551f;--accent-ink: #ffffff;--accent-soft: #fbeee6;--timber: #c99a5b;--timber-dark: #8a6432;--concrete: #9c9c97;--steel: #6d7b86;--pass: #2f7d4f;--advisory: #4a6fa5;--warning: #b07d1a;--failure: #b3402c;--engineering: #7a4499;--radius: 6px;--radius-lg: 10px;--shadow: 0 1px 2px rgb(29 27 23 / 8%), 0 4px 12px rgb(29 27 23 / 6%);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--rail: 56px;--topbar: 52px;--statusbar: 30px;--panel: 320px}@media(prefers-color-scheme:dark){:root{--paper: #17161a;--surface: #1f1e23;--surface-raised: #26252b;--surface-sunken: #131217;--border: #34323a;--border-strong: #4a4753;--ink: #eceaf0;--ink-muted: #a8a3b0;--ink-faint: #78737f;--accent: #e08048;--accent-ink: #17161a;--accent-soft: #33241b;--timber: #b98c50;--timber-dark: #7a5a2d;--concrete: #6b6b68;--steel: #7f8f9c;--pass: #5cb083;--advisory: #7ea3d8;--warning: #d8a83f;--failure: #e0705a;--engineering: #b083d0;--shadow: 0 1px 2px rgb(0 0 0 / 40%), 0 4px 12px rgb(0 0 0 / 30%)}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);font-size:13px;line-height:1.45;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{display:grid;grid-template-rows:var(--topbar) 1fr var(--statusbar);height:100%;overflow:hidden}.workspace{display:grid;grid-template-columns:var(--rail) 1fr auto;min-height:0}.canvas-area{position:relative;min-width:0;background:var(--surface-sunken);overflow:hidden}.topbar{display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--border)}.logo{display:flex;align-items:center;gap:8px;font-weight:650;letter-spacing:-.01em;white-space:nowrap}.logo svg{display:block}.project-name{min-width:0;padding:4px 8px;font:inherit;font-weight:500;color:inherit;background:transparent;border:1px solid transparent;border-radius:var(--radius);max-width:260px}.project-name:hover{border-color:var(--border)}.project-name:focus{background:var(--surface-raised);border-color:var(--accent);outline:none}.topbar-spacer{flex:1}.save-state{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;font-size:12px;color:var(--ink-muted);white-space:nowrap}.save-dot{width:7px;height:7px;border-radius:50%;background:var(--ink-faint)}.save-state[data-state=saved] .save-dot{background:var(--pass)}.save-state[data-state=saving] .save-dot,.save-state[data-state=offline] .save-dot{background:var(--warning)}.save-state[data-state=conflict] .save-dot,.save-state[data-state=error] .save-dot{background:var(--failure)}.btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);white-space:nowrap}.btn:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-sunken)}.btn:disabled{opacity:.4;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:550}.btn.primary:hover:not(:disabled){filter:brightness(1.06);background:var(--accent)}.btn.subtle{background:transparent;border-color:transparent}.btn.subtle:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--border)}.btn.icon{padding:5px 7px}.segmented{display:inline-flex;padding:2px;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius)}.segmented button{padding:3px 12px;background:transparent;border:0;border-radius:4px;color:var(--ink-muted)}.segmented button[aria-pressed=true]{background:var(--surface-raised);color:var(--ink);font-weight:550;box-shadow:0 1px 2px #00000014}.rail{display:flex;flex-direction:column;gap:2px;padding:6px 4px;background:var(--surface);border-right:1px solid var(--border);overflow-y:auto}.rail button{display:grid;place-items:center;width:100%;aspect-ratio:1;background:transparent;border:1px solid transparent;border-radius:var(--radius);color:var(--ink-muted)}.rail button:hover{background:var(--surface-sunken);color:var(--ink)}.rail button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.rail-separator{height:1px;margin:4px 6px;background:var(--border)}.panel{display:flex;flex-direction:column;width:var(--panel);background:var(--surface);border-left:1px solid var(--border);min-height:0}.panel-tabs{display:flex;border-bottom:1px solid var(--border);flex:none}.panel-tabs button{flex:1;padding:8px 4px;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--ink-muted);font-size:12px}.panel-tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent);font-weight:550}.panel-body{flex:1;min-height:0;overflow-y:auto;padding:12px}.panel-section{margin-bottom:18px}.panel-section>h3{margin:0 0 8px;font-size:11px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.prop{display:grid;grid-template-columns:1fr 128px;align-items:center;gap:8px;padding:3px 0}.prop>label{color:var(--ink-muted);font-size:12px}.prop input,.prop select{width:100%;padding:4px 6px;font:inherit;font-family:var(--mono);font-size:12px;color:inherit;background:var(--surface-raised);border:1px solid var(--border);border-radius:4px}.prop input:focus,.prop select:focus{border-color:var(--accent);outline:none}.prop input[data-invalid=true]{border-color:var(--failure)}.prop-note{grid-column:1 / -1;font-size:11px;color:var(--failure)}.prop-readout{font-family:var(--mono);font-size:12px;text-align:right;color:var(--ink-muted)}.derived-badge{display:inline-block;padding:1px 5px;font-size:10px;border-radius:3px;background:var(--surface-sunken);color:var(--ink-faint);border:1px solid var(--border)}.derived-badge[data-mode=manual]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}details.disclosure{margin-top:6px;border-top:1px solid var(--border);padding-top:6px}details.disclosure>summary{cursor:pointer;color:var(--ink-muted);font-size:12px;list-style:none}details.disclosure>summary::-webkit-details-marker{display:none}details.disclosure>summary:before{content:"▸ ";color:var(--ink-faint)}details.disclosure[open]>summary:before{content:"▾ "}.finding{margin-bottom:8px;border:1px solid var(--border);border-left:3px solid var(--ink-faint);border-radius:var(--radius);background:var(--surface-raised);overflow:hidden}.finding[data-severity=advisory]{border-left-color:var(--advisory)}.finding[data-severity=warning]{border-left-color:var(--warning)}.finding[data-severity=prescriptive-failure]{border-left-color:var(--failure)}.finding[data-severity=engineering-required]{border-left-color:var(--engineering)}.finding[data-severity=cannot-evaluate]{border-left-color:var(--ink-faint)}.finding-head{display:flex;flex-direction:column;gap:5px;align-items:flex-start;width:100%;padding:8px 10px;background:transparent;border:0;text-align:left}.finding-head:hover{background:var(--surface-sunken)}.finding-title{font-weight:550;line-height:1.35}.finding-body{padding:0 10px 10px;font-size:12px;color:var(--ink-muted)}.severity-chip{flex:none;padding:1px 6px;font-size:10px;font-weight:600;letter-spacing:.02em;border-radius:3px;white-space:nowrap;background:var(--surface-sunken);color:var(--ink-muted);border:1px solid var(--border)}.severity-chip[data-severity=advisory]{color:var(--advisory);border-color:var(--advisory)}.severity-chip[data-severity=warning]{color:var(--warning);border-color:var(--warning)}.severity-chip[data-severity=prescriptive-failure]{color:var(--failure);border-color:var(--failure)}.severity-chip[data-severity=engineering-required]{color:var(--engineering);border-color:var(--engineering)}.measurements{display:grid;grid-template-columns:1fr auto;gap:2px 10px;margin:8px 0;padding:8px;background:var(--surface-sunken);border-radius:4px;font-size:11px}.measurements dt{color:var(--ink-faint)}.measurements dd{margin:0;font-family:var(--mono);text-align:right}.fixes{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.fixes .btn{font-size:12px;padding:4px 8px}.citation{margin-top:8px;font-size:11px;color:var(--ink-faint);line-height:1.4}.citation .unverified{color:var(--warning);font-weight:550}.review-summary{display:grid;gap:4px;margin-bottom:14px;padding:10px;background:var(--surface-sunken);border-radius:var(--radius)}.review-line{display:flex;gap:8px;align-items:baseline;font-size:12px}.review-line b{font-family:var(--mono);font-size:13px;min-width:2ch;text-align:right}.material-section h4{margin:14px 0 6px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.material-row{display:grid;grid-template-columns:auto 3.5ch 1fr;gap:8px;align-items:baseline;padding:5px 4px;border-bottom:1px solid var(--border);font-size:12px}.material-row:hover{background:var(--surface-sunken)}.material-row .qty{font-family:var(--mono);font-weight:600;text-align:right}.material-row .desc{min-width:0}.material-row .desc small{display:block;color:var(--ink-faint);font-size:11px}.material-row.checked .desc{text-decoration:line-through;color:var(--ink-faint)}.waste-summary{margin-top:14px;padding:10px;background:var(--surface-sunken);border-radius:var(--radius);font-size:12px}.waste-summary div{display:flex;justify-content:space-between;gap:12px}.waste-summary span:last-child{font-family:var(--mono)}.statusbar{display:flex;align-items:center;gap:14px;padding:0 12px;font-family:var(--mono);font-size:11px;color:var(--ink-muted);background:var(--surface);border-top:1px solid var(--border);overflow-x:auto;white-space:nowrap}.statusbar .divider{color:var(--border-strong)}.statusbar button{font-family:var(--mono);font-size:11px;background:transparent;border:0;color:inherit;padding:0;text-decoration:underline dotted}.statusbar .status-failure{color:var(--failure)}.statusbar .status-warning{color:var(--warning)}.statusbar .status-pass{color:var(--pass)}.start{display:grid;place-items:center;min-height:100%;padding:32px 20px;background:radial-gradient(ellipse at top,color-mix(in srgb,var(--accent) 7%,transparent),transparent 60%),var(--paper);overflow-y:auto}.start-card{width:100%;max-width:460px;padding:28px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.start-card h1{margin:0 0 4px;font-size:26px;letter-spacing:-.02em}.start-card .tagline{margin:0 0 22px;color:var(--ink-muted)}.field{margin-bottom:14px}.field>label{display:block;margin-bottom:4px;font-size:12px;font-weight:550;color:var(--ink-muted)}.field input,.field select{width:100%;padding:8px 10px;font:inherit;font-family:var(--mono);color:inherit;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius)}.field input:focus,.field select:focus{border-color:var(--accent);outline:none}.field .hint{margin-top:4px;font-size:11px;color:var(--ink-faint)}.field .error{margin-top:4px;font-size:11px;color:var(--failure)}.radio-group{display:grid;gap:6px}.radio-option{display:flex;gap:8px;align-items:flex-start;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.radio-option:hover{border-color:var(--border-strong)}.radio-option[data-selected=true]{border-color:var(--accent);background:var(--accent-soft)}.radio-option small{display:block;color:var(--ink-muted)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.start-actions{display:flex;gap:10px;align-items:center;margin-top:22px}.start-actions .btn.primary{flex:1;justify-content:center;padding:10px;font-size:14px}.disclaimer{margin-top:20px;padding-top:16px;border-top:1px solid var(--border);font-size:11px;line-height:1.5;color:var(--ink-faint)}.recent-list{margin-top:16px;border-top:1px solid var(--border);padding-top:12px}.recent-list h2{margin:0 0 8px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.recent-item{display:flex;justify-content:space-between;gap:10px;width:100%;padding:7px 8px;background:transparent;border:1px solid transparent;border-radius:var(--radius);text-align:left}.recent-item:hover{background:var(--surface-sunken);border-color:var(--border)}.recent-item small{color:var(--ink-faint);font-family:var(--mono)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#00000073;z-index:50}.dialog{width:100%;max-width:460px;max-height:85vh;overflow-y:auto;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.dialog h2{margin:0 0 10px;font-size:17px}.dialog p{color:var(--ink-muted);line-height:1.5}.dialog-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}.link-box{display:flex;gap:6px;margin:12px 0}.link-box input{flex:1;min-width:0;padding:8px;font-family:var(--mono);font-size:12px;color:inherit;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius)}.callout{padding:10px 12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-sunken);font-size:12px;line-height:1.5}.callout[data-tone=warning]{border-color:var(--warning);background:color-mix(in srgb,var(--warning) 12%,transparent)}.canvas-overlay{position:absolute;top:10px;left:10px;display:flex;gap:6px;pointer-events:none}.canvas-overlay>*{pointer-events:auto}.zoom-controls{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:4px}.zoom-controls .btn{justify-content:center;min-width:30px;background:var(--surface);box-shadow:var(--shadow)}.empty-state{display:grid;place-items:center;height:100%;padding:20px;text-align:center;color:var(--ink-muted)}.dimension-editor{position:absolute;z-index:10;padding:3px;background:var(--surface);border:1px solid var(--accent);border-radius:4px;box-shadow:var(--shadow)}.dimension-editor input{width:110px;padding:3px 5px;font-family:var(--mono);font-size:12px;color:inherit;background:var(--surface-raised);border:1px solid var(--border);border-radius:3px}.dimension-editor input:focus{outline:none;border-color:var(--accent)}@media(max-width:860px){:root{--panel: 100%;--rail: 46px}.workspace{grid-template-columns:var(--rail) 1fr}.panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;border-left:0}.panel[hidden]{display:none}.topbar{gap:6px;padding:0 8px}.hide-narrow{display:none!important}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
