:root{--navy:#1e3a5f;--primary:#2563eb;--accent:#f59e0b;--accent-bg:#fef3c7;--warn:#b45309;--bg:#f8fafc;--panel:#fff;--border:#e4e7eb;--text:#0f172a;--muted:#475569;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.45 var(--font);-webkit-font-smoothing:antialiased}h1,h2{margin:0}.num{font-variant-numeric:tabular-nums}.spacer{flex:1}:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.app{grid-template-rows:48px auto minmax(0,1fr) 26px;height:100%;display:grid;overflow:hidden}.topbar{background:var(--navy);color:#fff;align-items:center;gap:16px;min-width:0;padding:0 12px 0 14px;display:flex}.brand{flex:none;align-items:center;gap:8px;display:flex}.brand h1{letter-spacing:.01em;font-size:15px;font-weight:650}.descriptor{color:#b8c7da;border-left:1px solid #3b5b82;padding-left:8px;font-size:12px}.file-info{color:#b8c7da;border-left:1px solid #3b5b82;flex:1;align-items:center;gap:8px;min-width:0;padding-left:16px;display:flex}.file-name{color:#fff;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.file-meta{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px}.actions{flex:none;gap:8px;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:6px 12px;display:flex}.toolbar .field{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.toolbar .divider{background:var(--border);width:1px;height:20px}.sel-group{min-width:264px}.sel-filter{width:180px}.workspace{grid-template-columns:minmax(0,1fr) clamp(640px,50%,820px);min-height:0;display:grid}.viewer-panel{background:linear-gradient(#f3f5f8 0%,#dfe4ea 100%);min-height:0;position:relative;overflow:hidden}.viewer{position:absolute;inset:0}.viewer canvas{display:block}.view-controls{flex-direction:column;gap:4px;display:flex;position:absolute;top:10px;right:10px}.view-controls .ant-btn{box-shadow:0 1px 2px #0f172a1f}.overlay{pointer-events:none;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.overlay>*{pointer-events:auto}.drop{text-align:center;background:var(--panel);border:1px dashed #9aa6b5;border-radius:6px;width:min(440px,100%);padding:28px 28px 0}.drop.over{border:2px solid var(--primary);background:#eff6ff}.drop-icon{color:var(--navy);font-size:36px}.drop h2{margin-top:10px;font-size:15px;font-weight:600}.drop-hint{color:var(--muted);margin:4px 0 16px}.drop-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.drop-privacy{border-top:1px solid var(--border);color:var(--muted);margin:20px -28px 0;padding:10px 16px;font-size:12px}.drop-error{text-align:left;margin-bottom:16px}.progress{background:var(--panel);border:1px solid var(--border);border-radius:6px;width:min(340px,100%);padding:12px 16px 8px}.boq-panel{background:var(--panel);border-left:1px solid var(--border);flex-direction:column;min-height:0;display:flex}.panel-head{border-bottom:1px solid var(--border);align-items:baseline;gap:12px;padding:9px 12px;display:flex}.panel-head h2{text-transform:uppercase;letter-spacing:.06em;color:var(--text);font-size:12px;font-weight:600}.panel-meta{color:var(--muted);font-size:12px}.boq-body{flex:1;min-height:0;overflow:auto}.boq-empty{height:100%;color:var(--muted);text-align:center;place-content:center;justify-items:center;gap:8px;padding:24px;display:grid}.boq-empty .anticon{color:#94a3b8;font-size:28px}.boq-empty p{max-width:280px;margin:0}.boq-panel .ant-table-thead>tr>th{font-size:12px;font-weight:600}.boq-panel .ant-table-tbody>tr{cursor:pointer}.boq-panel .ant-table-tbody>tr>td{height:34px}.row-group>td{background:#f8fafc;font-weight:600}.boq-panel .ant-table-tbody>tr.row-selected>td,.boq-panel .ant-table-tbody>tr.row-selected.ant-table-row:hover>td{background:var(--accent-bg)}.boq-panel .ant-table-tbody>tr.row-selected>td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.boq-panel .ant-table-tbody>tr:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.row-warning{color:var(--warn);margin-left:6px}.row-total>td{border-top:1px solid #cbd2da;font-weight:600}.dim{color:#94a3b8}.unit-select{width:56px}.unit-select .ant-select-selector{padding-inline:0!important}.price-input{width:100%}.price-input input{text-align:right;font-variant-numeric:tabular-nums}.boq-panel .ant-tag{margin:0;font-size:11px;line-height:18px}.statusbar{color:var(--muted);background:var(--panel);border-top:1px solid var(--border);white-space:nowrap;align-items:center;gap:8px;padding:0 12px;font-size:12px;display:flex;overflow:hidden}.statusbar .sep{background:var(--border);width:1px;height:12px}.statusbar .disclaimer{text-overflow:ellipsis;overflow:hidden}.status-dot{background:#94a3b8;border-radius:50%;flex:none;width:8px;height:8px}.status-dot.ready{background:#059669}.status-dot.loading{background:var(--primary)}.status-dot.error{background:#dc2626}@media (width<=900px){.app{grid-template-rows:auto auto auto auto;height:auto;min-height:100%;overflow:visible}.topbar{flex-wrap:wrap;gap:8px 12px;padding:8px 12px}.descriptor{display:none}.file-info{border-left:0;flex-basis:100%;order:3;padding-left:0}.actions{margin-left:auto}.workspace{grid-template-columns:minmax(0,1fr)}.viewer-panel{height:56vh;min-height:320px}.boq-panel{border-left:0;border-top:1px solid var(--border)}.boq-body{overflow:visible}.sel-group,.sel-filter{width:100%;min-width:0}.toolbar .field{flex:100%}.toolbar .field>span:first-child{flex:none;width:84px}.toolbar .divider,.toolbar .spacer{display:none}.statusbar{white-space:normal;flex-wrap:wrap;row-gap:2px;padding:6px 12px}.statusbar .spacer{flex-basis:100%;height:0}.statusbar .disclaimer+.sep{display:none}}@media (width<=520px){.actions .ant-btn-icon+span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
