.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}:root{--bg: #0d1524;--bg-raise: #131e33;--panel: #16223a;--panel-2: #1b2a46;--line: rgba(148, 170, 210, .14);--line-strong: rgba(148, 170, 210, .28);--text: #e9eef8;--text-dim: #96a5c0;--text-faint: #64748f;--gold: #e8b23a;--gold-strong: #d99a14;--blue: #4d8df5;--green: #37b26c;--red: #e5484d;--purple: #9775fa;--teal: #2bb8c4;--radius: 10px;--font: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:13.5px;overflow:hidden}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#94aad238;border-radius:6px}::-webkit-scrollbar-track{background:transparent}a{color:var(--gold);text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}.app{display:flex;height:100vh}.sidebar{width:218px;flex:none;background:#0a111e;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:14px 10px;gap:2px;overflow-y:auto}.sidebar .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px}.sidebar .brand .logo{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:linear-gradient(135deg,var(--gold),var(--gold-strong));color:#14100a;font-weight:800;font-size:15px}.sidebar .brand .name{font-weight:700;font-size:14.5px;line-height:1.15}.sidebar .brand .name small{display:block;font-weight:500;color:var(--text-faint);font-size:10.5px;letter-spacing:.08em}.nav-section{font-size:10px;letter-spacing:.12em;color:var(--text-faint);text-transform:uppercase;padding:14px 10px 5px}.nav-item{display:flex;align-items:center;gap:9px;padding:7.5px 10px;border-radius:8px;color:var(--text-dim);font-size:13px;font-weight:500;border:0;background:none;width:100%;text-align:left}.nav-item:hover{background:#94aad214;color:var(--text)}.nav-item.active{background:#e8b23a21;color:var(--gold)}.nav-item .ico{width:18px;text-align:center;flex:none}.nav-item .unpin{margin-left:auto;opacity:0;border:0;background:none;color:var(--text-faint);font-size:11px;padding:2px}.nav-item:hover .unpin{opacity:1}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:50px;flex:none;display:flex;align-items:center;gap:14px;padding:0 18px;border-bottom:1px solid var(--line);background:var(--bg-raise)}.topbar h1{font-size:15.5px;margin:0;font-weight:650}.topbar .crumb{color:var(--text-faint);font-weight:400}.topbar .spacer{flex:1}.content{flex:1;overflow:auto;padding:18px}.content.no-pad{padding:0;overflow:hidden}.btn{border:1px solid var(--line-strong);background:var(--panel-2);color:var(--text);border-radius:8px;padding:7px 14px;font-size:12.5px;font-weight:600}.btn:hover{border-color:var(--gold)}.btn.primary{background:linear-gradient(135deg,var(--gold),var(--gold-strong));color:#14100a;border:0}.btn.primary:hover{filter:brightness(1.08)}.btn.danger{color:#ff8a8e}.btn.small{padding:4px 10px;font-size:11.5px}.btn.ghost{background:none;border-color:transparent;color:var(--text-dim)}.btn.ghost:hover{color:var(--text);border-color:var(--line-strong)}.input,select.input,textarea.input{background:#0f1930;border:1px solid var(--line-strong);color:var(--text);border-radius:7px;padding:7px 10px;font-size:12.5px;outline:none}.input:focus{border-color:var(--gold)}.input.sm{padding:4px 7px;font-size:12px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.card h3{margin:0 0 10px;font-size:13px;font-weight:650;color:var(--text)}.card .sub{color:var(--text-faint);font-size:11.5px}.badge{display:inline-block;padding:2.5px 9px;border-radius:20px;font-size:10.5px;font-weight:650;letter-spacing:.02em}.badge.gold{background:#e8b23a29;color:var(--gold)}.badge.blue{background:#4d8df529;color:#7fadf8}.badge.green{background:#37b26c2e;color:#5fd396}.badge.red{background:#e5484d29;color:#ff8a8e}.badge.gray{background:#94aad221;color:var(--text-dim)}.badge.purple{background:#9775fa29;color:#b79cff}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.toolbar .spacer{flex:1}.tbl-wrap{border:1px solid var(--line);border-radius:var(--radius);overflow:auto;background:var(--panel)}table.tbl{width:100%;border-collapse:collapse;font-size:12.5px}.tbl th{text-align:left;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);font-weight:600;padding:9px 10px;border-bottom:1px solid var(--line-strong);position:sticky;top:0;background:var(--panel-2);z-index:2;white-space:nowrap}.tbl td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl tr:hover td{background:#94aad20b}.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}.tbl td.mono{font-family:var(--mono);font-size:11.5px}.tbl .div-row td{background:#e8b23a12;font-weight:700;color:var(--gold);border-top:1px solid var(--line-strong);font-size:12px}.tbl .total-row td{background:var(--panel-2);font-weight:700;border-top:2px solid var(--line-strong)}.tbl input.cell{width:100%;min-width:52px;background:transparent;border:1px solid transparent;color:var(--text);border-radius:5px;padding:3px 6px;font-size:12.5px;font-variant-numeric:tabular-nums}.tbl input.cell:hover{border-color:var(--line-strong)}.tbl input.cell:focus{border-color:var(--gold);background:#0f1930;outline:none}.tbl input.cell.num{text-align:right}.tbl select.cell{background:transparent;border:1px solid transparent;color:var(--text);border-radius:5px;padding:3px 4px;font-size:12px}.tbl select.cell:hover{border-color:var(--line-strong)}.tbl select.cell option{background:var(--panel-2)}td .link-dot{cursor:pointer}.qty-linked{color:#7fadf8;font-weight:600}.qty-linked:after{content:" ⟲";font-size:10px;opacity:.8}.kpi{display:flex;flex-direction:column;gap:3px}.kpi .label{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);font-weight:600}.kpi .value{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.kpi .delta{font-size:11.5px;color:var(--text-dim)}.grid{display:grid;gap:14px}.cols-2{grid-template-columns:1fr 1fr}.cols-3{grid-template-columns:repeat(3,1fr)}.cols-4{grid-template-columns:repeat(4,1fr)}.react-grid-item.react-grid-placeholder{background:#e8b23a40!important;border-radius:10px}.widget{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);height:100%;display:flex;flex-direction:column;overflow:hidden}.widget-head{display:flex;align-items:center;gap:8px;padding:10px 12px 8px;flex:none;font-size:11.5px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim)}.widget-head .drag{cursor:grab}.widget-head .x{margin-left:auto;border:0;background:none;color:var(--text-faint);font-size:13px;opacity:0;padding:0 2px}.widget:hover .widget-head .x{opacity:1}.widget-body{flex:1;min-height:0;overflow:auto;padding:4px 12px 12px}.editing-hint{border:1px dashed rgba(232,178,58,.5)}.takeoff-layout{display:flex;height:100%;min-height:0}.takeoff-left{width:232px;flex:none;border-right:1px solid var(--line);display:flex;flex-direction:column;background:#0d1626;transition:width .15s ease;overflow:hidden}.takeoff-left.collapsed{width:0;border:0}.takeoff-right{width:280px;flex:none;border-left:1px solid var(--line);display:flex;flex-direction:column;background:#0d1626;transition:width .15s ease;overflow:hidden}.takeoff-right.collapsed{width:0;border:0}.panel-head{padding:10px 12px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);display:flex;align-items:center;gap:8px;flex:none;border-bottom:1px solid var(--line)}.panel-scroll{flex:1;overflow-y:auto;padding:6px}.dwg-folder{margin-bottom:2px}.dwg-folder>.folder-head{display:flex;align-items:center;gap:7px;padding:6px 8px;font-size:12px;font-weight:650;color:var(--text-dim);cursor:pointer;border-radius:6px}.dwg-folder>.folder-head:hover{background:#94aad212}.dwg-page{display:flex;align-items:center;gap:7px;padding:5.5px 8px 5.5px 24px;border-radius:6px;cursor:pointer;color:var(--text-dim);font-size:12px}.dwg-page:hover{background:#94aad212}.dwg-page.active{background:#e8b23a21;color:var(--gold)}.dwg-page .no{font-family:var(--mono);font-size:11px;flex:none}.dwg-page .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.dwg-page .flag{flex:none;font-size:9px}.cond-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;cursor:pointer;margin-bottom:1px}.cond-row:hover{background:#94aad212}.cond-row.active{background:#e8b23a24;outline:1px solid rgba(232,178,58,.4)}.cond-row .swatch{width:13px;height:13px;border-radius:4px;flex:none}.cond-row .info{flex:1;min-width:0}.cond-row .info .nm{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cond-row .info .qt{font-size:10.5px;color:var(--text-faint);font-variant-numeric:tabular-nums}.cond-row .type-badge{font-size:9px;padding:2px 5px;border-radius:4px;background:#94aad224;color:var(--text-dim);flex:none}.takeoff-canvas-area{flex:1;min-width:0;position:relative;background:#232b3b;overflow:hidden}.takeoff-canvas-area canvas{position:absolute;top:0;right:0;bottom:0;left:0}.canvas-toolbar{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;gap:4px;padding:5px;background:#0a111eeb;border:1px solid var(--line-strong);border-radius:11px;z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.tool-btn{border:0;background:none;color:var(--text-dim);width:38px;height:34px;border-radius:8px;font-size:15px;display:grid;place-items:center;position:relative}.tool-btn:hover{background:#94aad21f;color:var(--text)}.tool-btn.active{background:#e8b23a33;color:var(--gold)}.tool-btn .tip{position:absolute;top:40px;left:50%;transform:translate(-50%);background:#0a111e;border:1px solid var(--line-strong);border-radius:6px;color:var(--text);font-size:10.5px;padding:3px 8px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s}.tool-btn:hover .tip{opacity:1}.canvas-status{position:absolute;bottom:12px;left:12px;z-index:10;display:flex;gap:8px;align-items:center;background:#0a111eeb;border:1px solid var(--line);border-radius:9px;padding:6px 12px;font-size:11.5px;color:var(--text-dim);font-variant-numeric:tabular-nums}.canvas-status b{color:var(--gold)}.panel-toggle{position:absolute;top:14px;z-index:11;width:26px;height:30px;display:grid;place-items:center;background:#0a111eeb;border:1px solid var(--line-strong);color:var(--text-dim);border-radius:8px;font-size:12px}.panel-toggle:hover{color:var(--gold)}.panel-toggle.left{left:12px}.panel-toggle.right{right:12px}.legend-box{position:absolute;top:58px;right:12px;z-index:9;background:#fdfdfbf2;color:#1b2233;border:1.5px solid #333;border-radius:4px;padding:8px 12px;font-size:11px;min-width:200px}.legend-box h4{margin:0 0 6px;font-size:10px;letter-spacing:.1em}.legend-box .lg-row{display:flex;align-items:center;gap:7px;padding:2px 0;font-variant-numeric:tabular-nums}.legend-box .lg-row .sw{width:14px;height:9px;border-radius:2px;flex:none}.sum-row{display:flex;justify-content:space-between;padding:6.5px 0;border-bottom:1px solid var(--line);font-size:12.5px}.sum-row .lbl{color:var(--text-dim)}.sum-row .val{font-variant-numeric:tabular-nums;font-weight:600}.sum-row.section{border-bottom:1px solid var(--line-strong)}.sum-row.section .lbl{color:var(--gold);font-weight:700;text-transform:uppercase;font-size:10.5px;letter-spacing:.08em}.sum-row.grand{border:0;padding-top:12px}.sum-row.grand .lbl{font-weight:700;font-size:14px;color:var(--text)}.sum-row.grand .val{font-size:20px;color:var(--gold);font-weight:800}.plug-cell{background:#4d8df521!important;position:relative}.plug-cell:after{content:"";position:absolute;top:0;right:0;border-style:solid;border-width:0 8px 8px 0;border-color:transparent var(--blue) transparent transparent}.low-bid{outline:1.5px solid var(--green);outline-offset:-1.5px;border-radius:4px}.awarded{background:#37b26c1f!important}.empty-state{display:grid;place-items:center;height:100%;color:var(--text-faint);text-align:center;font-size:13px;padding:30px}.pill-tabs{display:flex;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:3px}.pill-tabs button{border:0;background:none;color:var(--text-dim);border-radius:7px;padding:5.5px 13px;font-size:12px;font-weight:600}.pill-tabs button.active{background:#e8b23a29;color:var(--gold)}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#050912b3;z-index:100;display:grid;place-items:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{background:var(--bg-raise);border:1px solid var(--line-strong);border-radius:14px;width:min(660px,92vw);max-height:88vh;overflow-y:auto;padding:20px}.modal h2{margin:0 0 14px;font-size:16px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label,.form-col label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--text-dim);font-weight:600}.form-col{display:flex;flex-direction:column;gap:12px}.toast-host{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:200}.toast-msg{background:#0a111e;border:1px solid var(--line-strong);color:var(--text);border-radius:10px;padding:10px 18px;font-size:12.5px;margin-top:8px;box-shadow:0 8px 30px #00000080}
