:root{--bg:#f5f5f5;--panel:#fff;--ink:#1a1a1a;--muted:#6b7280;--line:#e5e7eb;--accent:#9ca3af;--accent-2:#27272a;--danger:#111;--warning:#b54708;--good:#15803d;--soft:#f4f4f5;--soft-blue:#f9fafb;--shadow:0 10px 30px #00000014;--radius:16px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:#f5f5f5;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer;height:32px;color:var(--ink);white-space:nowrap;background:#f0f0f0;border:0;border-radius:4px;align-items:center;padding:0 14px;font-size:13px;font-weight:600;display:inline-flex}button:hover{filter:brightness(.96)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);color:#fff}button.ghost{color:var(--accent-2);border:1px solid var(--line);background:0 0}button.danger{color:var(--ink);background:#f0f0f0}button.small{height:26px;padding:0 10px;font-size:12px}button.icon{padding:0 8px}.app-shell{min-height:100vh;display:flex}.sidebar{color:#1a1a1a;background:#fff;border-right:1px solid #e2e6ea;flex-direction:column;width:100%;min-width:0;height:100%;display:flex;overflow-y:auto}.main-content{flex:1;max-width:1540px;padding:24px 24px 24px 52px}.page-header{margin-bottom:20px;padding-top:48px}.page-header h1{letter-spacing:-.03em;margin:0 0 4px;font-size:clamp(13px,1.25vw,16px)}.page-header p{color:var(--muted);margin:0}.cards{grid-template-columns:repeat(5,minmax(160px,1fr));gap:14px;display:grid}.card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;min-height:104px;padding:16px}.card .label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:700}.card .value{letter-spacing:-.03em;margin-top:7px;font-size:clamp(11px,1.1vw,16px);font-weight:800}.card .sub{color:var(--muted);margin-top:6px;font-size:13px}.card.good{background:#f6fef9;border-color:#abefc6}.card.warn{background:#fffcf5;border-color:#fedf89}.card.bad{background:#f9f9f9;border-color:#e4e4e7}.panel{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:18px}.panel h2,.panel h3{letter-spacing:-.02em;margin:0 0 8px;font-size:14px}.grid{gap:16px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.table-wrap{border:1px solid var(--line);background:#fff;border-radius:14px;max-height:calc(100vh - 220px);overflow:auto}table{border-collapse:collapse;width:100%;min-width:600px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:5px 8px;font-size:11px}th{text-transform:uppercase;letter-spacing:.06em;color:#475467;z-index:2;background:#f8fafc;font-size:10px;position:sticky;top:0}tr:last-child td{border-bottom:0}tr:hover td{background:#fafcff}.numeric{text-align:right;font-variant-numeric:tabular-nums}input,textarea,select{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:4px;padding:8px 10px;transition:border-color .15s}input:focus,textarea:focus,select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #9ca3af33}textarea{resize:vertical;min-height:110px}label{color:var(--ink);gap:5px;font-size:13px;font-weight:600;display:grid}.form-grid{gap:14px;display:grid}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.field-hint{color:var(--muted);margin-top:3px;font-size:12px;font-weight:400}.pill,.status-pill{color:#52525b;white-space:nowrap;background:#f4f4f5;border:1px solid #e4e4e7;border-radius:4px;align-items:center;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.status-pill:before{content:"";opacity:.55;background:currentColor;border-radius:50%;flex-shrink:0;width:5px;height:5px;margin-right:5px;display:inline-block}.status-Active,.status-Awarded,.status-approved,.status-paid,.status-signed,.status-open,.status-billed,.status-Open{color:#2d5a3d;background:#f3f6f4;border-color:#ccddd3}.status-On-Hold,.status-sent_to_client{color:#7a4c15;background:#fdf7f0;border-color:#e8d0aa}.status-Cancelled,.status-rejected,.status-disputed{color:#7f2020;background:#fdf3f3;border-color:#e8c4c4}.status-submitted,.status-invoiced{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.status-Estimating,.status-Complete,.status-Planned,.status-draft,.status-sent,.status-void,.status-completed{color:#52525b;background:#f4f4f5;border-color:#e4e4e7}.muted{color:var(--muted)}.bad{color:var(--danger)}.warn{color:var(--warning)}.good{color:var(--good)}.fine-print{color:var(--muted);font-size:12px}.nowrap{white-space:nowrap}.split{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.empty{color:var(--muted);text-align:center;padding:28px}.mini{width:95px;min-width:95px}.wide{min-width:260px}.progress{background:#eef2f6;border-radius:999px;height:10px;overflow:hidden}.progress-bar{background:var(--accent);border-radius:999px;width:0%;height:100%;transition:width .3s;display:block}.section-card{border:1px solid var(--line);background:#fbfdff;border-radius:16px;margin:14px 0;padding:14px}.notice{background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;padding:12px 14px;font-size:13px}.notice a{color:#1d4ed8;font-weight:700;text-decoration:none}.notice.warn{background:#eff6ff;border-color:#bfdbfe}.notice.good{background:#f6fef9;border-color:#abefc6}.notice.danger{background:#f4f4f5;border-color:#e4e4e7}@media (max-width:768px){.sidebar{width:100%;height:auto;position:relative}.main-content{margin-left:0;padding:16px}.app-shell{flex-direction:column}.cards,.grid.four,.grid.three,.grid.two,.form-grid.four,.form-grid.three,.form-grid.two{grid-template-columns:1fr}}@media print{.sidebar,button,.no-print{display:none!important}.main-content{margin-left:0;padding:0}.panel,.card{box-shadow:none;break-inside:avoid}.table-wrap{overflow:visible}table{min-width:0;font-size:11px}}
