:root{--bg: #04060d;--surface: #0d1526;--surface-2: #131f36;--surface-3: #182747;--alt2: #070b14;--line: rgba(143, 162, 189, .16);--line-strong: rgba(143, 162, 189, .32);--ink: #eef3fa;--muted: #8fa2bd;--cyan: #2fe9ff;--cyan-soft: rgba(47, 233, 255, .25);--cyan-wash: rgba(47, 233, 255, .12);--violet: #a86cff;--violet-soft: rgba(168, 108, 255, .25);--violet-wash: rgba(168, 108, 255, .14);--yellow: #f2ff5c;--yellow-wash: rgba(242, 255, 92, .12);--chrome-light: #dfe8f2;--chrome-mid: #8fa2bd;--chrome-dark: #4a5872;--hover-overlay: rgba(47, 233, 255, .045);--login-glow: #0d1526;--font-ui: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Rajdhani", var(--font-ui);--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(--cyan);text-decoration:none}a:hover{color:var(--ink)}button{font-family:inherit;cursor:pointer}.app-shell{display:flex;min-height:100vh;position:relative;background:var(--bg)}.app-shell:before,.app-shell:after{content:"";position:fixed;border-radius:50%;pointer-events:none;z-index:0}.app-shell:before{width:680px;height:680px;background:radial-gradient(circle,var(--violet-soft) 0%,rgba(168,108,255,0) 68%);top:-260px;right:-180px}.app-shell:after{width:560px;height:560px;background:radial-gradient(circle,var(--cyan-soft) 0%,rgba(47,233,255,0) 68%);bottom:-220px;left:220px;opacity:.6}.sidebar{position:relative;z-index:1;width:230px;flex-shrink:0;background:var(--alt2);border-right:1px solid var(--cyan-wash);color:var(--ink);display:flex;flex-direction:column;padding:20px 0}.sidebar-brand{padding:0 20px 18px;font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:.03em;color:var(--ink);border-bottom:1px solid var(--line);margin-bottom:12px;display:flex;align-items:center;gap:10px}.sidebar-brand:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px 2px var(--cyan-soft),0 0 2px var(--cyan);flex-shrink:0}.sidebar-brand .tag{display:block;font-family:var(--font-mono);font-size:10px;color:var(--cyan);font-weight:500;margin-top:3px;letter-spacing:.12em;text-transform:uppercase}.nav-group{margin-bottom:4px}.nav-section-label{padding:15px 20px 6px;font-family:var(--font-mono);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);opacity:.75}.nav-group:first-child .nav-section-label{padding-top:2px}.nav-link{display:block;padding:9px 20px;color:var(--muted);text-decoration:none;font-size:13.5px;font-weight:500;border-left:2px solid transparent}.nav-link:hover{background:var(--hover-overlay);color:var(--ink)}.nav-link.active{color:var(--ink);border-left-color:var(--cyan);background:linear-gradient(90deg,var(--cyan-wash),rgba(47,233,255,0) 72%)}.sidebar-footer{margin-top:auto;padding:12px 20px 0;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.main{position:relative;z-index:1;flex:1;min-width:0;padding:28px 36px 60px}.hud-ticker{display:flex;align-items:center;gap:20px;flex-wrap:wrap;background:var(--alt2);border:1px solid var(--line);border-radius:8px;padding:9px 18px;margin-bottom:22px;font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;color:var(--muted)}.hud-ticker-item{display:flex;align-items:center;gap:7px;white-space:nowrap}.hud-ticker-item.bright{color:var(--ink)}.hud-dot{width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 6px 1px var(--cyan-soft);flex-shrink:0}.hud-dot.warn{background:var(--yellow);box-shadow:0 0 6px 1px #f2ff5c80}.hud-sep{width:1px;height:12px;background:var(--line-strong)}.mobile-topbar{display:none}.hamburger-btn{background:transparent;border:none;color:var(--ink);font-size:22px;line-height:1;padding:4px 8px;cursor:pointer}.nav-overlay{display:none}@media (max-width: 860px){.app-shell{flex-direction:column}.mobile-topbar{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--alt2);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}.sidebar{position:fixed;top:0;left:0;height:100vh;width:260px;max-width:82vw;transform:translate(-100%);transition:transform .2s ease;z-index:50;box-shadow:2px 0 20px #00000080}.sidebar.open{transform:translate(0)}.nav-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:40}.main{padding:16px;width:100%}}.page-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}.page-header h1{font-family:var(--font-display);font-size:26px;font-weight:700;letter-spacing:.01em;margin:0;color:var(--ink)}.page-header .sub{font-family:var(--font-mono);color:var(--muted);font-size:12px;margin-top:3px;letter-spacing:.02em}.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:var(--surface-3)}.btn.primary{background:linear-gradient(180deg,var(--chrome-light) 0%,var(--chrome-mid) 55%,var(--chrome-dark) 100%);color:var(--bg);border-color:var(--line-strong);box-shadow:0 1px #ffffff80 inset,0 2px 6px #0006}.btn.primary:hover{filter:brightness(1.05)}.btn.ghost{background:var(--cyan-wash);color:var(--cyan);border:1px solid rgba(47,233,255,.32)}.btn.ghost:hover{background:#2fe9ff29}.btn.danger{background:var(--yellow);color:var(--bg);border:1px solid var(--yellow);font-weight:700}.btn.danger:hover{filter:brightness(1.08)}.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;box-shadow:0 0 0 1px #2fe9ff1a,0 0 24px #2fe9ff0d,0 12px 24px #0000004d}.card h3{font-family:var(--font-mono);font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 10px;font-weight:600}.stat-value{font-family:var(--font-display);font-size:32px;font-weight:700;color:var(--cyan);text-shadow:0 0 16px var(--cyan-soft)}.job-row{display:flex;align-items:center;gap:12px;padding:10px 8px;margin:0 -8px;border-radius:6px;border-bottom:1px solid var(--line);font-size:14px;transition:background-color .12s ease}.job-row:last-child{border-bottom:none}a:hover>.job-row{background:var(--surface-2);cursor:pointer}.job-time{font-family:var(--font-mono);font-weight:600;color:var(--cyan);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-family:var(--font-mono);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:999px;white-space:nowrap;border:1px solid transparent}.badge.status-NEW,.badge.status-NEEDS_SCHEDULING,.badge.status-CANCELLED,.badge.status-EXPIRED,.badge.status-VOID,.badge.status-DRAFT{background:#8fa2bd1a;color:var(--muted);border-color:#8fa2bd3d}.badge.status-SCHEDULED,.badge.status-SENT,.badge.status-VIEWED{background:var(--cyan-wash);color:var(--cyan);border-color:#2fe9ff4d}.badge.status-EN_ROUTE,.badge.status-ON_SITE,.badge.status-IN_PROGRESS{background:var(--violet-wash);color:var(--violet);border-color:#a86cff52}.badge.status-AWAITING_PARTS,.badge.status-DECLINED,.badge.status-OVERDUE,.badge.status-PARTIALLY_PAID{background:var(--yellow-wash);color:var(--yellow);border-color:#f2ff5c52}.badge.status-COMPLETED,.badge.status-PAID,.badge.status-APPROVED,.badge.status-INVOICED{background:var(--cyan);color:var(--bg);border-color:var(--cyan);box-shadow:0 0 8px var(--cyan-soft)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}table.data{width:100%;min-width:560px;border-collapse:collapse;font-size:14px}table.data th{text-align:left;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line-strong);padding:8px 10px}table.data td{padding:10px;border-bottom:1px solid var(--line)}table.data tr:hover td{background:#2fe9ff0a}.jobnum{font-family:var(--font-mono);font-size:12.5px;color:var(--muted)}.search-input,input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]),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(--cyan);box-shadow:0 0 0 3px var(--cyan-wash)}select:not(:disabled){cursor:pointer;transition:background-color .12s ease,border-color .12s ease}select:hover:not(:disabled){background:var(--surface-3);border-color:var(--muted)}.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%,var(--login-glow) 0%,var(--bg) 60%);position:relative;overflow:hidden}.login-shell:before{content:"";position:absolute;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,var(--cyan-soft) 0%,rgba(47,233,255,0) 70%);top:-160px;left:-140px;pointer-events:none}.login-card{position:relative;z-index:1;background:var(--surface);border:1px solid var(--line);padding:36px 32px;border-radius:12px;width:340px;box-shadow:0 0 0 1px #2fe9ff1f,0 0 32px #2fe9ff14,0 20px 40px #00000073}.login-card h1{font-family:var(--font-display);font-size:22px;font-weight:700;margin:0 0 4px;color:var(--ink)}.login-card .tag{color:var(--cyan);font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:600;margin-bottom:20px;display:block}.error-text{color:var(--yellow);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}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}.booking-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 20%,var(--login-glow) 0%,var(--bg) 60%);position:relative;overflow:hidden;padding:24px}.booking-shell:before{content:"";position:absolute;width:560px;height:560px;border-radius:50%;background:radial-gradient(circle,var(--cyan-soft) 0%,rgba(47,233,255,0) 70%);top:-180px;left:-160px;pointer-events:none}.booking-card{position:relative;z-index:1;background:var(--surface);border:1px solid var(--line);padding:32px;border-radius:12px;width:100%;max-width:540px;box-shadow:0 0 0 1px #2fe9ff1f,0 0 32px #2fe9ff14,0 20px 40px #00000073}.booking-card .tag{color:var(--cyan);font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:600;margin-bottom:14px;display:block}.booking-card h1{font-family:var(--font-display);font-size:22px;font-weight:700;margin:0 0 18px;color:var(--ink)}.booking-steps{display:flex;gap:8px;margin-bottom:20px}.booking-step{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--muted);background:var(--surface-2);border:1px solid var(--line)}.booking-step.active{color:var(--bg);background:var(--cyan);border-color:var(--cyan);box-shadow:0 0 8px var(--cyan-soft)}.booking-step.done{color:var(--cyan);border-color:#2fe9ff66}.booking-option-list{display:flex;flex-direction:column;gap:8px}.booking-option{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;color:var(--ink);text-align:left;cursor:pointer;transition:border-color .12s ease,background-color .12s ease}.booking-option:hover{border-color:var(--cyan);background:var(--cyan-wash)}.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px;margin:12px 0}.slot-btn{padding:10px 6px;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);font-family:var(--font-mono);font-size:13px;cursor:pointer}.slot-btn:hover{border-color:var(--cyan)}.slot-btn.selected{background:var(--cyan);color:var(--bg);border-color:var(--cyan);font-weight:700;box-shadow:0 0 8px var(--cyan-soft)}.slot-btn.blocked{color:var(--muted);text-decoration:line-through;cursor:not-allowed;opacity:.55}.slot-btn.blocked:hover{border-color:var(--line)}
