:root{--ink:#111827;--muted:#667085;--line:#e5e7eb;--paper:#fff;--bg:#f4f6f8;--accent:#f59e0b;--accent-soft:#fff7df;--nav:#101828;--good:#0f9f6e;--warn:#b54708;--bad:#c4320a;--radius:14px;--shadow:0 1px 2px rgba(16,24,40,.04),0 4px 14px rgba(16,24,40,.05);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,select,input{font:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px 1fr}.sidebar{position:sticky;top:0;height:100vh;background:var(--nav);color:#fff;padding:20px 14px;display:flex;flex-direction:column;z-index:4}.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 22px}.brand-mark,.tenant-logo{display:grid;place-items:center;border-radius:10px;background:var(--accent);color:#201600;font-weight:900}.brand-mark{width:38px;height:38px;font-size:20px}.brand small{display:block;color:#98a2b3;font-size:11px;margin-top:2px}.sidebar nav{display:grid;gap:3px}.nav-group{color:#667085;text-transform:uppercase;font-size:10px;font-weight:800;letter-spacing:.12em;padding:18px 12px 6px}.nav-item{appearance:none;border:0;background:transparent;color:#cbd5e1;text-align:left;padding:10px 12px;border-radius:9px;cursor:pointer;display:flex;align-items:center;gap:11px;font-size:14px}.nav-item:hover,.nav-item.active{background:#1d2939;color:white}.nav-icon{font-size:15px;width:18px;text-align:center}.sidebar-foot{margin-top:auto;border-top:1px solid #344054;padding:16px 10px 0;display:flex;gap:9px;align-items:flex-start;font-size:12px;color:#d0d5dd}.sidebar-foot small{color:#667085}.live-dot{width:8px;height:8px;background:#32d583;border-radius:50%;margin-top:4px;box-shadow:0 0 0 4px #32d58320}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:3}.workspace{display:flex;gap:10px;align-items:center}.tenant-logo{width:36px;height:36px}.workspace label{display:grid}.workspace label span{font-size:10px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.workspace select{border:0;background:transparent;font-weight:700;padding:2px 24px 2px 0;outline:0}.top-actions{display:flex;align-items:center;gap:8px}.icon{border:0;background:transparent;border-radius:9px;min-width:40px;height:40px;cursor:pointer;color:#475467;font-size:18px}.icon:hover{background:#f2f4f7}.avatar{width:36px;height:36px;border-radius:50%;background:#e0e7ff;color:#3730a3;display:grid;place-items:center;font-size:12px;font-weight:800}.page{padding:30px;max-width:1540px;margin:0 auto}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px}.eyebrow{color:var(--accent-dark,#b54708);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.page h1{font-size:27px;letter-spacing:-.03em;margin:4px 0}.page-head p{color:var(--muted);margin:6px 0 0;font-size:14px}.btn{border:1px solid #d0d5dd;background:#fff;padding:10px 15px;border-radius:9px;font-weight:700;cursor:pointer;min-height:42px}.btn:hover{background:#f9fafb}.btn.primary{background:var(--accent);border-color:var(--accent);color:#241800}.btn.dark{background:#111827;color:#fff;border-color:#111827}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.metric,.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.metric{padding:18px}.metric-label{font-size:12px;color:var(--muted);font-weight:650}.metric strong{display:block;font-size:27px;letter-spacing:-.03em;margin:7px 0 2px}.metric small{color:var(--muted)}.metric .up{color:var(--good)}.grid-2{display:grid;grid-template-columns:1.65fr 1fr;gap:18px}.card{overflow:hidden}.card-head{padding:17px 19px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.card-head h2{font-size:15px;margin:0}.card-head span,.card-head a{font-size:12px;color:var(--muted)}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:#fafafa}th,td{padding:13px 16px;border-bottom:1px solid #eef0f2;white-space:nowrap}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fcfcfd}.title-cell{font-weight:700;color:#1d2939}.sub{display:block;color:var(--muted);font-weight:400;font-size:12px;margin-top:3px}.status{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:750;text-transform:capitalize;background:#f2f4f7;color:#344054}.status.in_progress,.status.started,.status.accepted,.status.paid,.status.confirmed{background:#ecfdf3;color:#027a48}.status.overdue{background:#fef3f2;color:#b42318}.status.issued,.status.assigned,.status.review_required{background:#fffaeb;color:#b54708}.timeline{padding:6px 18px 16px}.timeline-item{display:grid;grid-template-columns:12px 1fr auto;gap:10px;padding:13px 0;border-bottom:1px solid #eef0f2;align-items:start}.timeline-item:last-child{border:0}.timeline-dot{width:9px;height:9px;border-radius:50%;margin-top:4px;background:var(--accent)}.timeline-item b{font-size:13px}.timeline-item p{font-size:12px;color:var(--muted);margin:3px 0}.timeline-item time{font-size:11px;color:#98a2b3}.notice{background:#fffaeb;border:1px solid #fedf89;color:#7a2e0e;border-radius:12px;padding:13px 15px;margin-bottom:18px;font-size:13px}.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.module-card{padding:18px}.module-card h3{margin:3px 0 7px;font-size:16px}.module-card p{color:var(--muted);font-size:13px;line-height:1.5;min-height:40px}.module-card .big{font-size:26px;font-weight:800}.product-offers{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.offer{font-size:11px;border:1px solid var(--line);padding:5px 7px;border-radius:7px}.offer.best{border-color:#6ce9a6;background:#ecfdf3}.takeoff-card{padding:20px}.progress{height:7px;background:#eef0f2;border-radius:9px;overflow:hidden;margin:16px 0}.progress span{display:block;height:100%;background:var(--accent);width:92%}.takeoff-stats{display:flex;gap:24px}.takeoff-stats b{display:block;font-size:21px}.takeoff-stats small{color:var(--muted)}.quote-detail{display:grid;grid-template-columns:1fr 300px;gap:18px}.totals{padding:18px}.total-row{display:flex;justify-content:space-between;padding:8px 0;color:var(--muted);font-size:13px}.total-row.grand{border-top:1px solid var(--line);margin-top:6px;padding-top:14px;color:var(--ink);font-size:17px;font-weight:800}.form-row{display:grid;gap:6px;margin:12px 0}.form-row label{font-size:12px;font-weight:700}.form-row input,.form-row select{height:42px;border:1px solid #d0d5dd;border-radius:8px;padding:0 10px}.quick-actions{display:flex;gap:8px;flex-wrap:wrap;padding:15px 18px}.empty{padding:42px;text-align:center;color:var(--muted)}.toast{position:fixed;right:22px;bottom:22px;background:#101828;color:#fff;padding:12px 16px;border-radius:10px;box-shadow:0 8px 28px #10182840;transform:translateY(100px);opacity:0;transition:.25s;z-index:10;font-size:13px}.toast.show{transform:none;opacity:1}.mobile-only{display:none}
@media(max-width:980px){.metrics{grid-template-columns:repeat(2,1fr)}.grid-2,.quote-detail{grid-template-columns:1fr}.module-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.app-shell{display:block}.sidebar{position:fixed;transform:translateX(-100%);transition:.2s;width:260px}.sidebar.open{transform:none}.mobile-only{display:block}.topbar{padding:0 12px}.page{padding:20px 14px}.page-head{align-items:flex-start;flex-direction:column}.metrics,.module-grid{grid-template-columns:1fr}.top-actions .icon{display:none}.workspace label span{display:none}.card{border-radius:11px}.takeoff-stats{gap:14px}th,td{padding:12px}.page h1{font-size:24px}}
.sidebar{overflow-y:auto;overflow-x:hidden;scrollbar-color:#475467 transparent;scrollbar-width:thin}
.colourful .metric{position:relative;overflow:hidden;border:0;color:#fff}.colourful .metric:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;background:#fff2;right:-25px;top:-25px}.colourful .metric .metric-label,.colourful .metric small{color:#fff}.metric.blue{background:linear-gradient(135deg,#2563eb,#60a5fa)}.metric.green{background:linear-gradient(135deg,#059669,#34d399)}.metric.orange{background:linear-gradient(135deg,#ea580c,#fb923c)}.metric.purple{background:linear-gradient(135deg,#7c3aed,#a78bfa)}
.report-period{display:flex;gap:6px;flex-wrap:wrap}.report-period .active{background:#111827;color:#fff}.report-chart{padding-bottom:18px}.chart-legend{display:flex;justify-content:flex-end;gap:18px;padding:14px 20px 0;font-size:12px;color:var(--muted)}.chart-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.revenue-dot{background:#3b82f6}.payment-dot{background:#10b981}.bar-chart{height:235px;display:grid;grid-template-columns:repeat(12,1fr);gap:10px;align-items:end;padding:18px 22px 0;border-bottom:1px solid var(--line)}.bar-month{text-align:center;color:var(--muted)}.bar-pair{height:185px;display:flex;align-items:flex-end;justify-content:center;gap:3px}.bar{display:block;width:11px;min-height:3px;border-radius:5px 5px 0 0;transition:.25s}.revenue-bar{background:#3b82f6}.payment-bar{background:#10b981}.bar-month small{display:block;padding:8px 0}.report-lower{margin-top:18px}.status-summary{padding-bottom:10px}.status-row{display:flex;align-items:center;justify-content:space-between;padding:11px 18px;border-bottom:1px solid #eef0f2}.paid-text{color:#047857;font-weight:700}.due-text{color:#c2410c;font-weight:700}
.status.paid{background:#dcfce7;color:#166534}.status.partially_paid{background:#dbeafe;color:#1d4ed8}.status.draft{background:#f3e8ff;color:#7e22ce}.status.overdue,.status.unpaid{background:#fee2e2;color:#b91c1c}.status.issued{background:#fef3c7;color:#92400e}
.calendar-card{margin-top:20px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--line);gap:1px}.calendar-day-name{background:#f8fafc;padding:10px;text-align:center;font-size:11px;color:var(--muted)}.calendar-day{background:#fff;min-height:92px;padding:8px;font-size:12px}.calendar-day>span{font-weight:800;color:#667085}.calendar-day.has-job{background:#fffbeb}.calendar-day button{display:block;width:100%;border:0;background:#fff;border-left:3px solid var(--accent);border-radius:6px;padding:6px;margin-top:6px;text-align:left;font-size:11px;cursor:pointer;color:#1d2939}.calendar-day button small{display:block;color:#667085;margin-top:2px}.jobs-list{margin-top:18px}
@media(max-width:720px){.bar-chart{gap:3px;padding-left:8px;padding-right:8px}.bar{width:7px}.calendar-grid{min-width:720px}.calendar-card{overflow:auto}}
.invoice-paper{max-width:920px;margin:0 auto 22px;background:#fff;border:1px solid #dfe3e8;border-radius:16px;box-shadow:0 10px 34px #10182812;padding:42px;color:#172033}.invoice-brand{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:start;padding-bottom:28px;border-bottom:3px solid var(--accent)}.invoice-logo{width:64px;height:64px;border-radius:15px;display:grid;place-items:center;font-size:23px;font-weight:900;color:#201600}.company-block h2{font-size:21px;margin:0 0 7px}.company-block p,.invoice-meta p{margin:0;color:#667085;font-size:12px;line-height:1.6}.invoice-title{text-align:right}.invoice-title span{display:block;font-size:31px;font-weight:900;letter-spacing:.12em;color:#101828}.invoice-title b{display:block;margin-top:5px}.invoice-title small{display:inline-block;background:#eef2ff;color:#3730a3;padding:4px 9px;border-radius:999px;margin-top:8px;text-transform:capitalize}.invoice-meta{display:grid;grid-template-columns:1fr auto;gap:30px;padding:28px 0}.invoice-meta>div>span{font-size:10px;font-weight:900;letter-spacing:.12em;color:#98a2b3}.invoice-meta h3{margin:5px 0 6px}.invoice-dates{min-width:210px}.invoice-dates p{display:flex;justify-content:space-between;gap:22px;padding:5px 0}.invoice-dates b{color:#344054}.invoice-heading{font-size:15px;margin:0 0 12px}.invoice-items thead th{background:#101828;color:#fff}.invoice-items th:last-child,.invoice-items td:last-child{text-align:right}.invoice-summary{display:grid;grid-template-columns:1fr 310px;gap:45px;padding:24px 0 30px}.payment-note{font-size:12px;color:#475467}.payment-note p{line-height:1.6}.invoice-totals p{display:flex;justify-content:space-between;margin:0;padding:7px 0;font-size:13px}.invoice-grand{border-top:2px solid #101828;border-bottom:2px solid #101828;margin-top:6px!important;padding:12px 0!important;font-size:18px!important}.invoice-paper footer{border-top:1px solid #e5e7eb;padding-top:16px;text-align:center;font-size:11px;color:#98a2b3}
@media(max-width:720px){.invoice-paper{padding:22px}.invoice-brand{grid-template-columns:auto 1fr}.invoice-title{grid-column:1/-1;text-align:left}.invoice-meta,.invoice-summary{grid-template-columns:1fr}.invoice-dates{min-width:0}}
.crew-picker{display:grid;gap:8px;padding:16px}.crew-option{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px;cursor:pointer}.crew-option small{grid-column:3;color:var(--good)}.crew-option.off{opacity:.55}.crew-option.off small{color:var(--muted)}.crew-avatar{width:34px;height:34px;border-radius:50%;background:#e0e7ff;color:#3730a3;display:grid;place-items:center;font-size:11px;font-weight:800}.crew-picker+.btn{margin:0 16px 16px}.workflow-steps{display:grid;gap:9px;padding:16px}.workflow-steps button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:12px;text-align:left;font-weight:750;cursor:pointer}.workflow-steps i{display:inline-grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--accent-soft);color:#b54708;margin-right:9px;font-style:normal}
@media print{
  @page{size:A4;margin:14mm}
  body{background:#fff}
  .sidebar,.topbar,.page-head,.no-print,.quick-actions,.toast,#invoiceEditor,#estimateEditor{display:none!important}
  .app-shell{display:block}.page{max-width:none;padding:0}.printable-document{display:block}.invoice-paper{max-width:none;margin:0;border:0;box-shadow:none;padding:0}
  .card{box-shadow:none;border-color:#d0d5dd;break-inside:avoid}.table-wrap{overflow:visible}th,td{white-space:normal}
}
