:root{--bg: #f7f4ee;--panel: #fffdf8;--ink: #2e2a24;--ink-soft: #8a8070;--line: #e3ded4;--accent: #e07b39;--accent-ink: #b85f24;--agent: #4f86b0;--danger: #c04545;--ok: #4f9e57;font-family:Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink)}.app{display:flex;flex-direction:column;height:100%}.project-page{min-height:100%;overflow:auto;padding:5vh 16px;background:var(--bg)}.project-shell{max-width:840px;margin:0 auto;display:grid;gap:20px}.project-heading{display:flex;align-items:baseline;gap:4px 12px;flex-wrap:wrap}.project-heading strong{font-size:20px}.project-heading span:last-child{color:var(--ink-soft)}.project-shell h1{margin:0;font-size:clamp(28px,7vw,36px)}.project-shell>.hint{margin:0}.project-list{display:grid;gap:10px}.project-card,.project-create,.project-error{padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--panel);min-width:0}.project-card{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap}.project-card strong,.project-card small{display:block}.project-card small{margin-top:5px;color:var(--ink-soft)}.project-card small.sample-outdated{color:var(--danger);max-width:46ch}.project-actions{display:flex;gap:7px;flex-wrap:wrap}.project-create{display:grid;gap:12px}.project-error{border-color:var(--danger);color:var(--danger)}.save-banner{padding:8px 14px;background:#fbeaea;color:#8c2f2f;font-size:12px}.header{display:grid;align-items:center;gap:8px;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"brand primary toggle" "nav nav nav" "tools tools tools";padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}.brand{grid-area:brand;display:flex;align-items:baseline;gap:8px;min-width:0}.brand-mark{color:var(--accent);font-size:18px}.brand-name{display:none;font-weight:800;font-size:17px;letter-spacing:.02em;white-space:nowrap}.brand-plan{color:var(--ink-soft);font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-toggle{grid-area:toggle;width:40px;height:36px;padding:0;font-size:16px;line-height:1}.header-nav{grid-area:nav;display:none;flex-wrap:wrap;align-items:center;gap:6px}.header-nav.open{display:flex}.header-group{display:flex;align-items:center;gap:6px}.header-tools{grid-area:tools;overflow-x:auto;scrollbar-width:none;min-width:0;margin:0 -12px;padding:0 12px;white-space:nowrap}.header-tools::-webkit-scrollbar{display:none}.header-tools>*{flex:0 0 auto}.header-primary{grid-area:primary}@media(min-width:600px){.brand-name{display:inline}}@media(min-width:1024px){.header{display:flex;flex-wrap:wrap;gap:16px;padding:8px 14px}.brand{margin-right:8px}.nav-toggle{display:none}.header-nav,.header-nav.open{display:flex;flex-wrap:nowrap}.header-tools{margin:0 0 0 auto;padding:0;overflow:visible}}button{font:inherit;font-size:13px;padding:6px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);cursor:pointer;transition:all .12s ease}button:hover{border-color:var(--accent);color:var(--accent-ink)}button.active{background:var(--accent);border-color:var(--accent);color:#fff}button.primary{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:600}button.primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}button.danger{color:var(--danger);border-color:#e5c4c4}button.danger:hover{border-color:var(--danger)}.pill{font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap}.pill.live{color:#1d6b34;border-color:#bfe3c8;background:#eefaf0}.main{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative}@media(min-width:768px){.main{flex-direction:row}}.canvas-area{flex:1 1 auto;position:relative;min-width:0;min-height:0}.editor-svg{width:100%;height:100%;display:block;background:var(--bg);touch-action:none}.sidebar{flex:0 0 auto;display:flex;flex-direction:column;background:var(--panel);border-top:1px solid var(--line);min-height:0}.sidebar-tabs{display:flex;overflow-x:auto;scrollbar-width:none;height:48px;flex:0 0 auto}.sidebar-tabs::-webkit-scrollbar{display:none}.sidebar-tabs button{flex:1 0 auto;border:none;border-radius:0;background:none;padding:6px 10px;font-size:12px;font-weight:600;color:var(--ink-soft);border-top:2px solid transparent;white-space:nowrap}.sidebar-tabs button.active{color:var(--accent-ink);border-top-color:var(--accent)}.sidebar-body{position:absolute;left:0;right:0;bottom:48px;z-index:5;max-height:62%;overflow-y:auto;padding:0 12px 12px;background:var(--panel);border-top:1px solid var(--line);box-shadow:0 -8px 24px #2e2a241f;border-radius:14px 14px 0 0}.sidebar-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:10px 0 8px;background:var(--panel);font-size:13px}.sidebar-close{width:32px;height:32px;padding:0;line-height:1}@media(min-width:768px){.sidebar{flex-direction:row-reverse;border-top:0;border-left:1px solid var(--line)}.sidebar-tabs{flex-direction:column;height:auto;width:76px;overflow:visible}.sidebar-tabs button{flex:0 0 auto;padding:12px 4px;border-top:0;border-right:2px solid transparent;display:flex;flex-direction:column;align-items:center;gap:3px}.sidebar-tabs button.active{border-right-color:var(--accent);background:#f7f1e7}.sidebar-tabs .badge{margin-left:0}.sidebar-body{inset:0 77px 0 auto;width:340px;max-height:none;border-top:0;border-left:1px solid var(--line);border-radius:0;box-shadow:-8px 0 24px #2e2a241f}}@media(min-width:1200px){.sidebar-body{position:static;width:320px;box-shadow:none}}.badge{display:inline-block;margin-left:4px;padding:0 6px;border-radius:999px;background:var(--ink);color:#fff;font-size:10px}.badge.warn{background:var(--danger)}.panel{display:flex;flex-direction:column;gap:10px}.field{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:var(--ink-soft)}input[type=text],input:not([type]),textarea,select{font:inherit;font-size:13px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}textarea{resize:vertical;font-family:ui-monospace,monospace;font-size:12px}.stat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;font-size:12px;color:var(--ink-soft)}.stat-grid strong{display:block;font-size:16px;color:var(--ink)}.hint{font-size:12px;color:var(--ink-soft);line-height:1.5}.hint code,.issue-refs{font-family:ui-monospace,monospace;font-size:11px}.ok-msg{color:var(--ok);font-size:13px;font-weight:600;line-height:1.5}.issue{font-size:12px;line-height:1.45;padding:8px 10px;border-radius:8px}.issue.error{background:#fbeaea;color:#8c2f2f}.issue.warning{background:#fdf3e2;color:#8a6420}.issue-refs{margin-top:3px;opacity:.7}.catalog-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.catalog-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px;text-align:left}.catalog-swatch{width:100%;height:26px;border-radius:5px}.catalog-label{font-weight:600;font-size:12px}.catalog-dims{font-size:11px;color:var(--ink-soft)}.note-compose{display:flex;flex-direction:column;gap:6px}.note{font-size:12px;line-height:1.5;padding:8px 10px;border-radius:8px;background:#f2efe7}.note.agent{background:#e8f0f6}.note-author{display:inline-block;margin-right:6px;font-size:10px;font-weight:700;color:var(--agent)}.note:not(.agent) .note-author{color:var(--accent-ink)}.toolrunner{display:flex;flex-direction:column;gap:8px}.toolrunner-row{display:flex;gap:6px}.toolrunner-row select{flex:1}.toolrunner-desc{font-size:11px;color:var(--ink-soft);line-height:1.5;margin:0}.toolrunner-result{margin:0;padding:8px;background:#2e2a24;color:#d8f0d8;border-radius:8px;font-size:11px;max-height:220px;overflow:auto;white-space:pre-wrap}.scene3d-wrap{position:absolute;inset:0}.scene3d{width:100%;height:100%}.placing-hint,.camera-hint{position:absolute;left:50%;transform:translate(-50%);max-width:calc(100% - 24px);text-align:center;background:#2e2a24d9;color:#f7f4ee;font-size:12px;padding:6px 14px;border-radius:999px;pointer-events:none}.placing-hint{top:14px}.camera-hint{bottom:14px;opacity:.75}.stage-toggle{position:absolute;top:14px;left:14px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;max-width:calc(100% - 28px);background:#2e2a24d9;color:#f7f4ee;font-size:12px;padding:5px 6px 5px 12px;border-radius:999px}.stage-toggle button{font:inherit;color:inherit;background:transparent;border:1px solid #f7f4ee55;border-radius:999px;padding:2px 10px;cursor:pointer}.stage-toggle button[aria-pressed=true]{background:#f7f4ee;color:#2e2a24}.activity-feed{flex:0 0 88px;overflow-y:auto;padding:6px 14px;background:var(--panel);border-top:1px solid var(--line);font-size:12px;display:flex;flex-direction:column;gap:2px}.activity-empty{color:var(--ink-soft);padding:8px 0}.activity-row{display:flex;align-items:baseline;gap:8px;padding:2px 0}.activity-row.failed .activity-summary{color:var(--danger)}.activity-badge{flex:0 0 auto;font-size:9px;font-weight:800;padding:1px 6px;border-radius:4px;background:#efe9dd;color:var(--accent-ink)}.activity-badge.agent{background:#e2edf5;color:var(--agent)}.activity-badge.system{background:#ececf4;color:#6a6a8a}.activity-tool{font-family:ui-monospace,monospace;font-size:11px;color:var(--ink);flex:0 0 auto}.activity-summary{color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-time{margin-left:auto;color:#b8b0a0;font-size:10px;flex:0 0 auto}.activity-summary{min-width:0}@media(min-width:768px){.activity-feed{flex-basis:128px}}.approval-bar{border-top:1px solid var(--line, #e6dfd4);background:#fff8ec;display:flex;flex-direction:column}.approval{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid #f0e3cc}.approval:last-child{border-bottom:none}.approval-badge{font-size:10px;font-weight:700;letter-spacing:.06em;padding:3px 8px;border-radius:999px;background:#e0812f;color:#fff;white-space:nowrap}.approval-text{flex:1 1 220px;font-size:13px;color:#4a3c28}.approval-tool{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:#8a7a5e;margin-left:8px}.approval-actions{display:flex;gap:6px}.approval-actions button{font-size:12px;padding:5px 12px}.approval-actions .approve{background:#2f7d5b;border-color:#2f7d5b;color:#fff}.approval-actions .reject{background:#fff}.toggle-row{display:flex;gap:9px;align-items:flex-start;margin-top:12px;font-size:13px;cursor:pointer}.toggle-row input{margin-top:2px}.toggle-row small{display:block;font-size:11px;opacity:.62;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.supplier-panel{display:flex;flex-direction:column;gap:10px}.supplier-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.supplier-origin{font-size:11px;opacity:.6;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.supplier-hint{font-size:12px;line-height:1.5;opacity:.8;margin:0}.supplier-frame{width:100%;height:260px;border:1px solid var(--line, #e6dfd4);border-radius:10px;background:#fff}.supplier-actions{display:flex;align-items:center;gap:10px}.supplier-transport{font-size:11px;opacity:.7}.supplier-error{font-size:12px;color:#b4462f;margin:0}.supplier-list{display:flex;flex-direction:column;gap:5px}.supplier-row{display:grid;grid-template-columns:26px 1fr auto;gap:9px;align-items:center;text-align:left;padding:6px 8px}.supplier-row:disabled{opacity:.45;cursor:not-allowed}.supplier-name{font-size:12.5px}.supplier-dims{display:block;font-size:10.5px;opacity:.6;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.supplier-price{font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}.supplier-bridge{position:absolute;width:1px;height:1px;border:0;opacity:0;pointer-events:none;left:-9999px}.catalog-thumb{width:100%;height:74px;object-fit:contain;border-radius:6px;background:linear-gradient(170deg,#f7f3ec,#eae3d7);display:block}.supplier-thumb{width:30px;height:30px;object-fit:contain;border-radius:5px;background:linear-gradient(170deg,#f7f3ec,#eae3d7)}.inspector{position:absolute;left:8px;right:8px;bottom:8px;max-height:55%;overflow:auto;z-index:4;display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 20px #2e2a2414;font-size:12px}.inspector code{font-size:11px;color:var(--ink-soft)}.inspector-field input{font:inherit;font-weight:400;padding:5px 7px;border:1px solid var(--line);border-radius:6px;font-variant-numeric:tabular-nums}.inspector-field input:focus{outline:none;border-color:var(--accent)}.inspector-error{color:var(--danger);font-weight:400}.inspector-warn{color:var(--accent-ink)}.snap-select{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-soft)}.snap-select select{font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}@media(min-width:768px){.inspector{left:12px;right:auto;bottom:12px;width:230px;max-height:calc(100% - 24px)}.inspector:has(.wall-faces),{}}.wall-faces{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:8px}.wall-faces select,.wall-faces button,.face-layer>input{font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}.face-sides{display:flex;gap:4px}.wall-tiling{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:8px}.wall-tiling select,.wall-tiling button{font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}.wall-tiling .face-sides button.active{background:var(--accent);border-color:var(--accent);color:#fff}.tile-elevation{background:#fff;border:1px solid var(--line);border-radius:6px;-webkit-user-select:none;user-select:none}.tile-nudge{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.tile-missing{margin:0;padding-left:16px;font-size:12px}.face-sides button.active{background:var(--accent);border-color:var(--accent);color:#fff}.face-field{display:grid;grid-template-columns:1fr 118px;gap:4px 6px;align-items:end}.face-field .inspector-field{display:flex;flex-direction:column;gap:2px;min-width:0}.face-field .inspector-field input{width:100%;box-sizing:border-box}.face-field .inspector-error{grid-column:1 / -1}.face-layers{display:flex;flex-direction:column;gap:6px}.face-layer{display:grid;grid-template-columns:1fr auto;gap:4px 6px;padding:6px;border:1px solid var(--line);border-radius:8px}.face-layer>input{min-width:0}.face-layer>.face-field{grid-column:1 / -1}.face-add{display:flex;gap:6px}.face-add select{flex:1;min-width:0}.face-section{background:#fbfaf7;border:1px solid var(--line);border-radius:6px}.face-table{border-collapse:collapse;font-size:11px;font-variant-numeric:tabular-nums}.face-table th,.face-table td{text-align:left;padding:3px 4px;border-bottom:1px solid var(--line);vertical-align:top}.face-table th{font-weight:600;color:var(--ink-soft)}.products-page{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;background:var(--bg, #f6f3ee);color:var(--ink);font-size:13px}.products-header{display:flex;align-items:center;gap:4px 12px;flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--panel)}.products-header button{margin-left:auto}.products-header .hint{order:3;flex-basis:100%;margin:0}.products-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);gap:16px;padding:16px;overflow:auto}@media(min-width:900px){.products-header .hint{order:0;flex-basis:auto}.products-body{grid-template-columns:320px minmax(0,1fr)}}.products-col{display:flex;flex-direction:column;gap:12px;min-width:0}.products-card{display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.products-card .field{display:flex;flex-direction:column;gap:3px}.products-page input,.products-page select,.products-page button{font:inherit;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}.products-page button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.products-request{display:flex;justify-content:space-between;gap:8px;text-align:left;cursor:pointer}.products-request.active{border-color:var(--accent)}.products-page .badge{font-size:11px;padding:1px 6px;border-radius:999px;background:#eee8dc;color:var(--ink);align-self:flex-start}.products-page .badge.status-submitted{background:#f6dcc6}.products-page .badge.status-accepted{background:#d6ead3}.products-page .badge.status-withdrawn{background:#e6e2da;color:var(--ink-soft)}.products-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.products-table th,.products-table td{text-align:left;vertical-align:top;padding:5px 6px;border-bottom:1px solid var(--line)}.products-table th{font-weight:600;color:var(--ink-soft)}.products-table td.unknown{color:var(--danger);font-style:italic}.products-table tr.reviewed-accepted td:first-child{box-shadow:inset 3px 0 #5a9a55}.products-table tr.reviewed-rejected td:first-child{box-shadow:inset 3px 0 0 var(--danger)}.review-actions{display:flex;flex-wrap:wrap;gap:4px}.review-actions input{width:130px}.products-actions{display:flex;flex-wrap:wrap;gap:8px}.products-actions input{flex:1;min-width:160px}.products-attachments{display:flex;flex-direction:column;gap:6px;padding:8px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.products-attachment{display:flex;flex-direction:column;gap:4px;padding:6px 8px;border:1px solid var(--line);border-radius:8px}.products-attachment-image{max-width:100%;max-height:480px;object-fit:contain;border:1px solid var(--line);border-radius:6px}.products-page-text{white-space:pre-wrap;max-height:220px;overflow:auto;margin:2px 0 6px;padding:6px;font-size:12px;background:var(--bg);border-radius:6px}button.linklike{padding:0;border:0;background:none;color:var(--agent);text-decoration:underline;cursor:pointer;font:inherit}.products-product summary{cursor:pointer}.products-card>button{align-self:flex-start}.product-review-summary{padding:10px;border:1px solid var(--line);border-radius:6px}.product-review-summary details{margin:10px 0}.product-review-summary summary{cursor:pointer;font-weight:600}.product-review-summary p{margin:8px 0}.fixture-panel{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:8px}.fixture-anchor{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px}.fixture-anchor .field,.fixture-point-form .field{display:flex;flex-direction:column;gap:2px;min-width:0}.fixture-panel select,.fixture-panel button,.fixture-panel input{font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);min-width:0}.fixture-actions{grid-column:1 / -1;display:flex;gap:6px}.fixture-anchor .inspector-error{grid-column:1 / -1}.fixture-point-form{display:flex;flex-direction:column;gap:4px}.fixture-point-form summary{cursor:pointer;color:var(--accent-ink)}.sheets-panel{display:flex;flex-direction:column;gap:10px;font-size:12px}.sheets-card{display:flex;flex-direction:column;gap:6px;padding:10px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.sheets-card .field{display:flex;flex-direction:column;gap:2px}.sheets-panel input,.sheets-panel button{font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}.sheets-panel button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.sheets-findings{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.sheets-finding{display:flex;flex-direction:column;gap:3px;padding:6px;border-radius:6px;background:#faf7f1}.sheets-finding.blocking{background:#fbe9e9}.sheets-finding .badge{align-self:flex-start;font-size:10px;padding:0 5px;border-radius:999px;background:#eee8dc;color:var(--ink)}.sheets-finding.blocking .badge{background:var(--danger);color:#fff}.sheets-preview{border:1px solid var(--line);background:#fff}.sheets-preview svg{width:100%;height:auto;display:block}.sheets-actions{display:flex;flex-wrap:wrap;gap:6px}.heating-panel textarea{min-height:52px;width:100%;resize:vertical}.heating-point{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;border-top:1px solid var(--line,#ddd);padding-top:8px}.heating-point>*{min-width:0}.heating-zone{display:flex;gap:8px;align-items:center}.heating-zone input{width:auto}.heating-section svg{width:100%;height:auto}.product-identity{min-width:0;overflow-wrap:anywhere}.product-identity .products-table{table-layout:fixed}.product-identity td,.product-identity th{overflow-wrap:anywhere}.product-identity .review-actions input{max-width:100%;min-width:0}.products-card fieldset{min-width:0;padding:8px;border:1px solid var(--line);border-radius:6px}.products-card fieldset .field{margin-bottom:6px}.products-request span{min-width:0;overflow-wrap:anywhere}.products-request .badge{flex-shrink:0;white-space:nowrap;overflow-wrap:normal}
