@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--brand: #1e40af;--brand-light: #3b82f6;--brand-dark: #1e3a8a;--accent: #f59e0b;--green: #10b981;--red: #ef4444;--gray-50: #f8fafc;--gray-100: #f1f5f9;--gray-200: #e2e8f0;--gray-300: #cbd5e1;--gray-400: #94a3b8;--gray-600: #475569;--gray-800: #1e293b;--gray-900: #0f172a;--font: "IBM Plex Sans", sans-serif;--mono: "IBM Plex Mono", monospace;--radius: 4px;--shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(0,0,0,.12)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:14px}body{font-family:var(--font);background:var(--gray-100);color:var(--gray-800)}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:var(--font)}input,select,textarea{font-family:var(--font);font-size:13px}.loading-screen{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--gray-400)}.spinner{width:32px;height:32px;border:3px solid var(--gray-200);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--gray-900) 0%,var(--brand-dark) 60%,var(--brand) 100%);position:relative;overflow:hidden}.login-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:repeating-linear-gradient(0deg,transparent,transparent 40px,rgba(255,255,255,.03) 40px,rgba(255,255,255,.03) 41px),repeating-linear-gradient(90deg,transparent,transparent 40px,rgba(255,255,255,.03) 40px,rgba(255,255,255,.03) 41px)}.login-card{background:#fff;width:420px;border-radius:8px;box-shadow:0 24px 64px #0006;padding:48px 40px;position:relative;z-index:1}.login-header{text-align:center;margin-bottom:36px}.login-logo{font-size:48px;display:block;margin-bottom:12px;filter:drop-shadow(0 0 20px rgba(245,158,11,.5))}.login-title{font-size:26px;font-weight:700;color:var(--gray-900);letter-spacing:-.5px}.login-sub{font-size:12px;color:var(--gray-400);margin-top:4px}.login-form{display:flex;flex-direction:column;gap:16px}.login-error{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;padding:10px 14px;border-radius:var(--radius);font-size:13px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:12px;font-weight:600;color:var(--gray-600);text-transform:uppercase;letter-spacing:.5px}.form-group input{padding:10px 12px;border:1.5px solid var(--gray-200);border-radius:var(--radius);font-size:14px;transition:border-color .15s;outline:none}.form-group input:focus{border-color:var(--brand-light);box-shadow:0 0 0 3px #3b82f626}.btn-login{background:var(--brand);color:#fff;border:none;padding:12px;border-radius:var(--radius);font-size:14px;font-weight:600;margin-top:4px;transition:background .15s}.btn-login:hover:not(:disabled){background:var(--brand-dark)}.btn-login:disabled{opacity:.6;cursor:not-allowed}.login-footer{text-align:center;color:var(--gray-400);font-size:12px;margin-top:24px}.app-layout{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1;padding:24px;max-width:1600px;margin:0 auto;width:100%}.navbar{background:var(--gray-900);color:#fff;display:flex;align-items:center;gap:0;height:52px;padding:0 20px;border-bottom:2px solid var(--accent);position:sticky;top:0;z-index:100}.navbar-brand{display:flex;align-items:center;gap:8px;margin-right:32px}.brand-icon{font-size:20px}.brand-text{font-size:16px;font-weight:700;letter-spacing:-.3px}.brand-sub{font-size:11px;color:var(--gray-400);padding-left:8px;border-left:1px solid var(--gray-600);margin-left:4px}.navbar-links{display:flex;align-items:center;gap:4px;flex:1}.nav-link{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius);font-size:13px;font-weight:500;color:var(--gray-400);transition:all .15s}.nav-link:hover{color:#fff;background:#ffffff14}.nav-link.active{color:#fff;background:var(--brand)}.nav-icon{font-size:14px}.navbar-user{display:flex;align-items:center;gap:10px;margin-left:auto}.user-name{font-size:13px;color:var(--gray-300)}.role-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.5px}.role-admin{background:#7c3aed;color:#fff}.role-staff{background:var(--brand);color:#fff}.role-viewer{background:var(--gray-600);color:#fff}.btn-logout{background:transparent;border:1px solid var(--gray-600);color:var(--gray-400);padding:4px 10px;border-radius:var(--radius);font-size:12px;transition:all .15s}.btn-logout:hover{border-color:var(--red);color:var(--red)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;padding-bottom:16px;border-bottom:2px solid var(--gray-200)}.page-title{font-size:22px;font-weight:700;color:var(--gray-900)}.page-sub{font-size:13px;color:var(--gray-400);margin-top:2px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:none;border-radius:var(--radius);font-size:13px;font-weight:600;transition:all .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-blue{background:var(--brand);color:#fff}.btn-blue:hover:not(:disabled){background:var(--brand-dark)}.btn-green{background:var(--green);color:#fff}.btn-green:hover:not(:disabled){background:#059669}.btn-red{background:var(--red);color:#fff}.btn-red:hover:not(:disabled){background:#dc2626}.btn-gray{background:var(--gray-200);color:var(--gray-800)}.btn-gray:hover:not(:disabled){background:var(--gray-300)}.btn-outline{background:transparent;border:1.5px solid var(--gray-300);color:var(--gray-600)}.btn-outline:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}.card{background:#fff;border-radius:6px;box-shadow:var(--shadow);overflow:hidden}.card-header{padding:14px 20px;border-bottom:1px solid var(--gray-100);display:flex;align-items:center;justify-content:space-between}.card-title{font-size:14px;font-weight:700;color:var(--gray-800)}.card-body{padding:20px}.status{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.status-Estimating{background:#fef3c7;color:#92400e}.status-Active{background:#d1fae5;color:#065f46}.status-Complete{background:#dbeafe;color:#1e40af}.status-On\ Hold{background:#fce7f3;color:#9d174d}.status-Cancelled{background:var(--gray-100);color:var(--gray-400)}.status-Pending{background:#fef3c7;color:#92400e}.status-Partial{background:#ede9fe;color:#5b21b6}.status-On\ Order{background:#dbeafe;color:#1e40af}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;padding:10px 12px;background:var(--gray-50);color:var(--gray-600);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--gray-200);white-space:nowrap}.data-table td{padding:10px 12px;border-bottom:1px solid var(--gray-100)}.data-table tr:hover td{background:var(--gray-50)}.data-table tr:last-child td{border-bottom:none}.bom-sheet{display:flex;flex-direction:column;gap:0}.bom-toolbar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--gray-50);border:1px solid var(--gray-200);border-radius:6px 6px 0 0}.bom-search{padding:6px 10px;border:1.5px solid var(--gray-200);border-radius:var(--radius);font-size:13px;width:200px;outline:none}.bom-search:focus{border-color:var(--brand-light)}.bom-total{margin-left:auto;font-size:13px;color:var(--gray-600)}.bom-total strong{color:var(--brand);font-family:var(--mono)}.bom-grid-wrap{overflow-x:auto;border:1px solid var(--gray-200);border-top:none;border-radius:0 0 6px 6px;background:#fff}.bom-grid{width:100%;border-collapse:collapse;font-size:13px}.bom-grid th{padding:8px;background:var(--gray-900);color:#fff;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;text-align:left;position:sticky;top:0}.bom-grid td{padding:3px 4px;border-bottom:1px solid var(--gray-100);vertical-align:middle}.bom-grid tr.row-dirty td{background:#fffbeb}.bom-grid tr:hover td{background:#f0f9ff}.bom-empty{text-align:center;padding:40px!important;color:var(--gray-400)}.col-cat{min-width:130px}.col-part{min-width:220px}.col-desc{min-width:180px}.col-ref{min-width:90px}.col-qty{width:70px}.col-cost{width:90px}.col-total{width:100px;text-align:right;font-family:var(--mono);font-weight:600;color:var(--brand);padding-right:12px!important}.col-status{min-width:110px}.col-del{width:36px}.bom-grid select,.bom-grid input[type=text],.bom-grid input[type=number]{width:100%;border:1px solid transparent;border-radius:2px;padding:4px 6px;background:transparent;font-size:13px;transition:border-color .1s}.bom-grid select:hover,.bom-grid input:hover{border-color:var(--gray-300)}.bom-grid select:focus,.bom-grid input:focus{border-color:var(--brand-light);background:#fff;outline:none;box-shadow:0 0 0 2px #3b82f626}.btn-del{background:transparent;border:none;color:var(--gray-400);width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px}.btn-del:hover{background:#fef2f2;color:var(--red)}.bom-loading{padding:40px;text-align:center;color:var(--gray-400)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.stat-card{background:#fff;border-radius:6px;padding:20px;box-shadow:var(--shadow);border-left:4px solid var(--brand)}.stat-card.green{border-left-color:var(--green)}.stat-card.amber{border-left-color:var(--accent)}.stat-card.purple{border-left-color:#8b5cf6}.stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--gray-400)}.stat-value{font-size:28px;font-weight:700;color:var(--gray-900);margin-top:4px;font-family:var(--mono)}.stat-sub{font-size:12px;color:var(--gray-400);margin-top:2px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:11px;font-weight:700;color:var(--gray-600);text-transform:uppercase;letter-spacing:.4px}.field input,.field select,.field textarea{padding:8px 10px;border:1.5px solid var(--gray-200);border-radius:var(--radius);font-size:13px;color:var(--gray-800);background:#fff;transition:border-color .15s;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand-light);box-shadow:0 0 0 3px #3b82f61f}.field textarea{resize:vertical;min-height:80px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal{background:#fff;border-radius:8px;box-shadow:var(--shadow-md);width:100%;max-width:680px;max-height:90vh;display:flex;flex-direction:column}.modal-header{padding:16px 20px;border-bottom:1px solid var(--gray-200);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:16px;font-weight:700}.modal-close{background:none;border:none;font-size:20px;color:var(--gray-400);padding:4px 8px}.modal-close:hover{color:var(--gray-800)}.modal-body{padding:20px;overflow-y:auto}.modal-footer{padding:14px 20px;border-top:1px solid var(--gray-200);display:flex;justify-content:flex-end;gap:10px}.project-summary-bar{display:flex;gap:24px;padding:14px 20px;background:var(--gray-900);border-radius:6px;margin-bottom:20px;flex-wrap:wrap}.summary-item{display:flex;flex-direction:column;gap:2px}.summary-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--gray-400)}.summary-value{font-size:18px;font-weight:700;color:#fff;font-family:var(--mono)}.summary-value.accent{color:var(--accent)}.summary-value.green{color:#34d399}.tabs{display:flex;gap:0;border-bottom:2px solid var(--gray-200);margin-bottom:20px}.tab{padding:10px 20px;font-size:13px;font-weight:600;color:var(--gray-400);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}.tab:hover{color:var(--gray-800)}.tab.active{color:var(--brand);border-bottom-color:var(--brand)}@media (max-width: 768px){.main-content{padding:16px}.navbar{padding:0 12px}.brand-sub{display:none}.form-grid{grid-template-columns:1fr}}
