:root{--ink:#2b2620;--muted:#7a7163;--divider:#e7ddcf;--bg:#f5f1ea;--paper:#fff;--accent:#6f7a45;--accent-2:#a85a38}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--ink);background:var(--bg);font-family:Manrope,Inter,system-ui,-apple-system,sans-serif}.app{flex-direction:column;height:100vh;display:flex}.topbar{background:var(--paper);border-bottom:1px solid var(--divider);align-items:center;gap:16px;padding:12px 20px;display:flex}.brand{flex-direction:column;line-height:1.1;display:flex}.brand strong{letter-spacing:-.3px;font-size:1.1rem}.brand-sub{color:var(--muted);font-size:.72rem}.phase-badge{color:var(--accent);background:#ecefe0;border:1px solid #d8e0c2;border-radius:999px;margin-left:auto;padding:4px 10px;font-size:.7rem;font-weight:700}.phase-badge.connected{color:#2e7d32;background:#e7f3e8;border-color:#bfe0c2}.splash{height:100vh;color:var(--muted);text-align:center;justify-content:center;align-items:center;padding:24px;font-size:1rem;display:flex}.splash.error{color:var(--accent-2)}.banner-error{color:#9a5b2e;background:#f7e8e2;border-bottom:1px solid #ecd6c9;padding:8px 16px;font-size:.82rem}.readonly{border:1px solid var(--divider);background:#f6f1e9;border-radius:9px;padding:7px 9px;font-weight:700}.cost{background:#ecefe0;border:1px solid #d8e0c2;border-radius:10px;margin-bottom:10px;padding:10px 12px}.cost-total{color:#2b3a1f;font-size:1.2rem;font-weight:800}.cost-qty{color:var(--muted);font-size:.78rem;font-weight:600}.cost-rows{color:#55603a;flex-wrap:wrap;gap:4px 14px;margin-top:4px;font-size:.76rem;display:flex}.cost-err{color:#9a5b2e;margin-bottom:8px;font-size:.78rem}.body{flex:1;min-height:0;display:flex}.sidebar{background:var(--paper);border-right:1px solid var(--divider);flex-direction:column;flex-shrink:0;gap:10px;width:320px;padding:16px;display:flex;overflow-y:auto}.section{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:12px 0 2px;font-size:.8rem}.field{flex-direction:column;gap:4px;display:flex}.field-label{color:var(--muted);font-size:.78rem;font-weight:700}select,input[type=number],input[type=text]{font:inherit;border:1px solid var(--divider);color:var(--ink);background:#fff;border-radius:9px;width:100%;padding:7px 9px}select:focus,input:focus{border-color:var(--accent);outline:none}.attr-form{flex-direction:column;gap:7px;display:flex}.attr-row{grid-template-columns:1fr 96px;align-items:center;gap:8px;display:grid}.attr-label{font-size:.82rem}.color-input{cursor:pointer;border-radius:8px;width:100%;height:30px;padding:2px}.elem-map{flex-direction:column;gap:4px;margin:0;padding:0;font-size:.82rem;list-style:none;display:flex}.elem-map li{align-items:center;gap:6px;display:flex}.elem-map .elem{min-width:72px;font-weight:700}.elem-map .arrow,.elem-map .tech{color:var(--muted)}.note{color:var(--muted);margin:2px 0 0;font-size:.72rem}.bom{border-top:1px solid var(--divider);margin-top:8px;padding-top:10px}.bom-head{margin-bottom:6px;font-size:.85rem;font-weight:700}.bom-empty{color:var(--muted);font-size:.82rem}.bom-table{border-collapse:collapse;width:100%;font-size:.78rem}.bom-table th,.bom-table td{text-align:left;border-bottom:1px solid #f0e9dc;padding:4px 6px}.bom-table th{color:var(--muted);font-weight:700}.bom-table .num{text-align:right;font-variant-numeric:tabular-nums}.bom-table .muted{color:var(--muted)}.warnings{color:#9a5b2e;flex-direction:column;gap:3px;margin:8px 0 0;padding:0 0 0 2px;font-size:.76rem;list-style:none;display:flex}.stage{flex:1;grid-template-columns:1fr 1fr;min-width:0;display:grid}.pane{border-right:1px solid var(--divider);flex-direction:column;min-width:0;display:flex}.pane:last-child{border-right:none}.pane-title{color:var(--muted);border-bottom:1px solid var(--divider);background:var(--paper);margin:0;padding:8px 14px;font-size:.78rem;font-weight:700}.editor{flex-direction:column;flex:1;min-height:0;display:flex}.editor-toolbar{border-bottom:1px solid var(--divider);background:#fbf8f2;align-items:center;gap:8px;padding:8px 12px;display:flex}.editor-toolbar .hint{color:var(--muted);font-size:.76rem}.editor-toolbar .spacer{flex:1}.editor-toolbar button{font:inherit;border:1px solid var(--divider);cursor:pointer;background:#fff;border-radius:8px;padding:6px 11px;font-size:.78rem;font-weight:600}.editor-toolbar button:disabled{opacity:.45;cursor:default}.brushes{flex-wrap:wrap;gap:6px;display:flex}.brush{font:inherit;border:1.5px solid var(--divider);color:var(--muted);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:.78rem;font-weight:700;display:inline-flex}.brush.active{background:#fff}.brush .swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.canvas2d{touch-action:none;background:#fff;flex:1;width:100%;min-height:0}.preview3d{flex:1;min-height:0;position:relative}.preview3d canvas{display:block}.preview3d-empty{color:var(--muted);pointer-events:none;justify-content:center;align-items:center;font-size:.85rem;display:flex;position:absolute;inset:0}
