:root{--bg: #0f0f12;--surface: #15151b;--surface-2: #1c1c24;--line: #2a2a34;--ink: #f2f1f6;--muted: #8b899a;--violet: #6b5cff;--violet-dark: #5548d9;--violet-wash: rgba(107, 92, 255, .14);--green: #4caf7d;--red: #e0666b;--blue: #5fa8e0;--amber: #e0a45f;--font-ui: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-ui);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--violet);text-decoration:none}a:hover{color:#8a7dff}button{font-family:inherit;cursor:pointer}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--line);color:var(--ink);display:flex;flex-direction:column;padding:20px 0}.sidebar-brand{padding:0 20px 20px;font-family:var(--font-mono);font-weight:600;font-size:15px;letter-spacing:.02em;color:#fff;border-bottom:1px solid var(--line);margin-bottom:12px}.sidebar-brand .tag{display:block;font-size:11px;color:var(--violet);font-weight:600;margin-top:2px;letter-spacing:.1em;text-transform:uppercase}.nav-link{display:block;padding:10px 20px;color:var(--muted);text-decoration:none;font-size:14px;font-weight:500;border-left:3px solid transparent}.nav-link:hover{background:#ffffff08;color:var(--ink)}.nav-link.active{color:#fff;border-left-color:var(--violet);background:var(--violet-wash)}.sidebar-footer{margin-top:auto;padding:12px 20px 0;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.main{flex:1;min-width:0;padding:28px 36px 60px}.page-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}.page-header h1{font-size:22px;font-weight:700;margin:0;color:#fff}.page-header .sub{color:var(--muted);font-size:13px;margin-top:2px}.btn{display:inline-flex;align-items:center;gap:6px;border:none;border-radius:6px;padding:9px 14px;font-size:13.5px;font-weight:600;background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}.btn:hover{background:#23232d}.btn.primary{background:var(--violet);color:#fff;border-color:transparent}.btn.primary:hover{background:var(--violet-dark)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}.btn.ghost:hover{background:var(--surface-2)}.btn.danger{background:transparent;color:var(--red);border:1px solid rgba(224,102,107,.4)}.btn.danger:hover{background:#e0666b1a}.btn:disabled{opacity:.5;cursor:not-allowed}.grid{display:grid;gap:16px}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-2{grid-template-columns:repeat(2,1fr)}@media (max-width: 900px){.grid.cols-4,.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}.main{padding:18px 16px 48px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:18px}.card h3{font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 10px;font-weight:700}.stat-value{font-family:var(--font-mono);font-size:30px;font-weight:700;color:#fff}.job-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}.job-row:last-child{border-bottom:none}.job-time{font-family:var(--font-mono);font-weight:600;color:var(--violet);width:66px;flex-shrink:0}.job-row .who{color:var(--muted);font-size:12.5px}.empty-note{color:var(--muted);font-size:13.5px;padding:6px 0}.badge{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:3px 9px;border-radius:999px;white-space:nowrap}.badge.status-NEW,.badge.status-NEEDS_SCHEDULING{background:#24242c;color:var(--muted)}.badge.status-SCHEDULED{background:#5fa8e024;color:var(--blue)}.badge.status-EN_ROUTE,.badge.status-ON_SITE,.badge.status-IN_PROGRESS{background:#e0a45f24;color:var(--amber)}.badge.status-AWAITING_PARTS{background:#e0666b24;color:var(--red)}.badge.status-COMPLETED,.badge.status-PAID{background:#4caf7d24;color:var(--green)}.badge.status-CANCELLED{background:#24242c;color:var(--muted)}.badge.status-INVOICED{background:var(--violet-wash);color:var(--violet)}.badge.status-SENT,.badge.status-VIEWED{background:#5fa8e024;color:var(--blue)}.badge.status-APPROVED{background:#4caf7d24;color:var(--green)}.badge.status-DECLINED,.badge.status-OVERDUE{background:#e0666b24;color:var(--red)}.badge.status-EXPIRED,.badge.status-VOID,.badge.status-DRAFT{background:#24242c;color:var(--muted)}.badge.status-PARTIALLY_PAID{background:#e0a45f24;color:var(--amber)}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px}table.data td{padding:10px;border-bottom:1px solid var(--line)}table.data tr:hover td{background:var(--surface-2)}.jobnum{font-family:var(--font-mono);font-size:12.5px;color:var(--muted)}.search-input,input[type=text],input[type=email],input[type=password],input[type=date],input[type=datetime-local],input[type=number],select,textarea{font-family:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--surface-2);color:var(--ink);width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px var(--violet-wash)}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:5px}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 20%,#1a1a24 0%,var(--bg) 60%)}.login-card{background:var(--surface);border:1px solid var(--line);padding:36px 32px;border-radius:12px;width:340px}.login-card h1{font-family:var(--font-mono);font-size:18px;margin:0 0 4px;color:#fff}.login-card .tag{color:var(--violet);font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;margin-bottom:20px;display:block}.error-text{color:var(--red);font-size:13px;margin-top:8px}.link-back{font-size:13px;color:var(--muted);text-decoration:none;margin-bottom:14px;display:inline-block}.link-back:hover{color:var(--ink)}.tech-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.tech-actions .btn{justify-content:center;padding:16px 10px;font-size:14px}@media (max-width: 480px){.tech-actions{grid-template-columns:1fr}}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px;margin-top:10px}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:6px;border:1px solid var(--line)}.signature-pad{background:#fff;border-radius:8px;touch-action:none;width:100%;display:block}
