@import url("https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,300;12..96,400;12..96,600;12..96,700&family=Geist:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500;700&display=swap");:root{--bg:oklch(0.985 0.004 80);--bg-elev:#ffffff;--bg-sunk:oklch(0.965 0.006 80);--bg-tint:oklch(0.955 0.008 75);--border:oklch(0.91 0.008 80);--border-strong:oklch(0.85 0.01 80);--ink:oklch(0.18 0.015 250);--ink-2:oklch(0.32 0.015 250);--muted:oklch(0.52 0.012 250);--muted-2:oklch(0.68 0.01 250);--primary:oklch(0.28 0.04 250);--primary-ink:#ffffff;--accent:oklch(0.72 0.15 62);--accent-ink:oklch(0.22 0.05 60);--accent-soft:oklch(0.94 0.04 75);--ok:oklch(0.62 0.13 155);--ok-soft:oklch(0.94 0.04 155);--warn:oklch(0.72 0.15 62);--danger:oklch(0.58 0.18 25);--danger-soft:oklch(0.95 0.03 25);--radius:10px;--radius-sm:6px;--radius-lg:16px;--shadow-sm:0 1px 0 oklch(0.85 0.01 80/0.6);--shadow-md:0 1px 2px oklch(0.2 0.02 250/0.04),0 4px 12px oklch(0.2 0.02 250/0.06);--shadow-pop:0 10px 30px oklch(0.2 0.02 250/0.12),0 2px 6px oklch(0.2 0.02 250/0.08);--font-display:"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;--font-sans:"Geist",ui-sans-serif,system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,monospace}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font-sans);color:var(--ink);background:var(--bg);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{cursor:pointer}button,input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.sidebar{background:var(--bg-elev);border-right:1px solid var(--border);padding:18px 14px;display:flex;flex-direction:column;gap:6px;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 18px}.brand-mark{width:32px;height:32px;border-radius:8px;background:var(--ink);display:grid;place-items:center;color:var(--accent);font-weight:700;font-size:18px;letter-spacing:-.02em}.brand-mark,.brand-name{font-family:var(--font-display)}.brand-name{font-weight:600;font-size:17px;letter-spacing:-.01em}.brand-sub{color:var(--muted);letter-spacing:.08em;margin-top:1px}.brand-sub,.nav-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase}.nav-label{color:var(--muted-2);letter-spacing:.1em;padding:14px 10px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);font-size:13.5px;color:var(--ink-2);border:0;background:transparent;width:100%;text-align:left;font-weight:500;cursor:pointer;transition:background .1s}.nav-item.active,.nav-item:hover{background:var(--bg-sunk)}.nav-item.active{color:var(--ink)}.nav-item.active:before{content:"";width:3px;height:16px;background:var(--accent);border-radius:2px;margin-left:-10px;margin-right:7px}.nav-item .badge{margin-left:auto;font-family:var(--font-mono);font-size:10px;background:var(--ink);color:var(--bg);border-radius:999px;padding:2px 6px;min-width:18px;text-align:center}.nav-spacer{flex:1 1}.who{border-top:1px solid var(--border);padding:12px 10px 4px;display:flex;align-items:center;gap:10px}.who-avatar{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,oklch(.78 .08 60),oklch(.68 .14 55));color:white;display:grid;place-items:center;flex-shrink:0}.who-avatar,.who-name{font-weight:600;font-size:13px}.who-mail{font-size:11px;color:var(--muted);font-family:var(--font-mono)}.who-logout{margin-left:auto;background:transparent;border:0;color:var(--muted);cursor:pointer;padding:4px;border-radius:4px;display:grid;place-items:center}.who-logout:hover{color:var(--danger);background:var(--danger-soft)}.main{min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:14px;padding:18px 28px;border-bottom:1px solid var(--border);background:var(--bg);position:-webkit-sticky;position:sticky;top:0;z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.crumb{font-family:var(--font-mono);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.crumb b{color:var(--ink);font-weight:600}.topbar h1{font-family:var(--font-display);font-size:22px;font-weight:600;letter-spacing:-.015em;margin:0}.topbar-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.content{padding:28px;display:flex;flex-direction:column;gap:24px}.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);background:var(--bg-elev);color:var(--ink);padding:8px 12px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;transition:background .12s,border-color .12s,transform .04s;white-space:nowrap}.btn:hover{background:var(--bg-sunk)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn-primary:hover{background:oklch(.22 .02 250)}.btn-accent{background:var(--accent);color:var(--accent-ink);border-color:oklch(.65 .16 62);font-weight:600}.btn-accent:hover{background:oklch(.68 .16 62)}.btn-ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn-ghost:hover{background:var(--bg-sunk);color:var(--ink)}.btn-danger{color:var(--danger);border-color:var(--border)}.btn-danger:hover{background:var(--danger-soft)}.btn-sm{padding:5px 9px;font-size:12px}.btn-icon{width:32px;height:32px;padding:0;justify-content:center}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.card-header{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.card-header h3{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0}.card-body{padding:18px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:500}.input,.select,.textarea{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 11px;font-size:13.5px;color:var(--ink);transition:border-color .12s,box-shadow .12s;width:100%}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px oklch(.85 .01 80/.5)}.input.mono{font-family:var(--font-mono);letter-spacing:.02em}.textarea{resize:vertical;min-height:84px}.row-2{grid-template-columns:1fr 1fr;grid-gap:12px}.row-2,.row-3{display:grid;gap:12px}.row-3{grid-template-columns:1fr 1fr 1fr;grid-gap:12px}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:500;background:var(--bg-sunk);color:var(--ink-2);border:1px solid var(--border);white-space:nowrap}.pill .dot{width:6px;height:6px;border-radius:50%;background:var(--muted-2);flex-shrink:0}.pill.ok{background:var(--ok-soft);color:oklch(.32 .08 155);border-color:oklch(.85 .05 155)}.pill.ok .dot{background:var(--ok)}.pill.warn{background:var(--accent-soft);color:oklch(.42 .1 60);border-color:oklch(.85 .06 60)}.pill.warn .dot{background:var(--accent)}.pill.info{background:oklch(.95 .02 250);color:var(--primary);border-color:oklch(.88 .03 250)}.pill.info .dot{background:var(--primary)}.pill.muted{color:var(--muted)}.pill.danger{background:var(--danger-soft);color:var(--danger);border-color:oklch(.88 .08 25)}.pill.danger .dot{background:var(--danger)}.mono,.plate{font-family:var(--font-mono)}.plate{font-weight:700;letter-spacing:.1em;background:oklch(.98 .04 90);color:var(--ink);border:1px solid oklch(.85 .06 75);padding:4px 8px;border-radius:4px;font-size:12px;display:inline-block;white-space:nowrap}.code-tag{font-family:var(--font-mono);font-size:11px;color:var(--muted)}.vehicle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:14px;gap:14px}.vehicle-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:12px;cursor:pointer;transition:border-color .12s,transform .12s,box-shadow .12s;text-align:left}.vehicle-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.vehicle-hero{background:var(--bg-sunk);border-radius:8px;height:100px;display:grid;place-items:center;position:relative;overflow:hidden;background-image:repeating-linear-gradient(45deg,transparent 0 8px,oklch(.93 .008 80) 8px 9px)}.vehicle-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.vehicle-name{font-family:var(--font-display);font-size:16px;font-weight:600;letter-spacing:-.01em}.vehicle-year{font-family:var(--font-mono);font-size:11px;color:var(--muted)}.vehicle-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.job-row{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;grid-gap:14px;gap:14px;padding:14px 18px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}.job-row:last-child{border-bottom:0}.job-row:hover{background:var(--bg-sunk)}.job-num{font-family:var(--font-mono);font-size:11px;color:var(--muted);min-width:56px}.job-name{font-weight:600;font-size:14px}.job-meta{color:var(--muted);font-size:12px;margin-top:2px}.action-list{display:flex;flex-direction:column}.action-item{display:grid;grid-template-columns:22px 1fr auto;grid-gap:12px;gap:12px;padding:12px 0;border-bottom:1px dashed var(--border);align-items:start}.action-item:last-child{border-bottom:0}.action-check{width:20px;height:20px;border:1.5px solid var(--border-strong);border-radius:6px;background:var(--bg-elev);display:grid;place-items:center;cursor:pointer;flex-shrink:0;margin-top:1px;transition:all .12s;color:transparent}.action-check.done{background:var(--ink);color:var(--accent)}.action-check.done,.action-check:hover:not(.readonly){border-color:var(--ink)}.action-body{min-width:0}.action-title{font-weight:500;font-size:13.5px}.action-title.done{color:var(--muted);text-decoration:line-through}.action-meta{font-size:11.5px;color:var(--muted);margin-top:2px}.action-meta,.action-price{font-family:var(--font-mono)}.action-price{font-size:13px;color:var(--ink);font-weight:500;white-space:nowrap}.progress-bar{height:4px;background:var(--bg-sunk);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .3s}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px}.kpi{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.kpi-label{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.kpi-value{font-family:var(--font-display);font-size:26px;font-weight:600;letter-spacing:-.02em;margin-top:4px}.kpi-delta{font-size:11px;color:var(--ok);margin-top:2px;font-family:var(--font-mono)}.chat{display:grid;grid-template-columns:280px 1fr;min-height:560px}.chat-list{border-right:1px solid var(--border);overflow-y:auto}.chat-list-item{padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;display:flex;gap:10px}.chat-list-item.active,.chat-list-item:hover{background:var(--bg-sunk)}.chat-avatar{width:36px;height:36px;border-radius:50%;background:oklch(.85 .04 60);color:var(--ink);display:grid;place-items:center;flex-shrink:0}.chat-avatar,.chat-list-name{font-weight:600;font-size:13px}.chat-list-preview{color:var(--muted);font-size:12px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.chat-unread{margin-left:auto;background:var(--accent);color:var(--accent-ink);font-size:10px;font-weight:700;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-mono)}.chat-pane{display:flex;flex-direction:column}.chat-header{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}.chat-thread{flex:1 1;padding:20px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;background:var(--bg-sunk);min-height:300px;max-height:500px}.msg{max-width:80%;padding:9px 13px;border-radius:14px;font-size:13.5px;line-height:1.5}.msg.them{background:var(--bg-elev);border:1px solid var(--border);border-bottom-left-radius:4px;align-self:flex-start}.msg.me{background:var(--ink);color:var(--bg);border-bottom-right-radius:4px;align-self:flex-end}.msg-time{font-size:10.5px;color:var(--muted);font-family:var(--font-mono)}.msg-time.right{align-self:flex-end}.chat-compose{padding:12px;border-top:1px solid var(--border);display:flex;gap:8px;background:var(--bg-elev)}.chat-compose .input{flex:1 1}.invoice{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:32px;max-width:760px}.invoice-head{display:flex;justify-content:space-between;border-bottom:2px solid var(--ink);padding-bottom:18px;margin-bottom:22px}.invoice-title{font-family:var(--font-display);font-size:28px;font-weight:600;letter-spacing:-.02em;margin:0 0 4px}.invoice-num{font-family:var(--font-mono);font-size:12px;color:var(--muted)}.invoice-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;margin-bottom:22px}.invoice-block-label{font-family:var(--font-mono);font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.invoice-block-value{font-size:13.5px;margin-top:4px}.invoice-table{width:100%;border-collapse:collapse}.invoice-table th{text-align:left;font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:10px 8px;font-weight:500}.invoice-table td,.invoice-table th{border-bottom:1px solid var(--border)}.invoice-table td{padding:12px 8px;font-size:13.5px;vertical-align:top}.invoice-table td.price,.invoice-table td.qty,.invoice-table th.price,.invoice-table th.qty{text-align:right;font-family:var(--font-mono);white-space:nowrap}.invoice-table input.price-input{border:1px solid var(--border);background:var(--bg);border-radius:4px;padding:4px 6px;font-family:var(--font-mono);font-size:13px;width:90px;text-align:right}.invoice-total{display:flex;justify-content:flex-end;margin-top:16px}.invoice-total-box{min-width:260px}.invoice-total-row{display:flex;justify-content:space-between;padding:6px 0;font-size:13.5px;font-family:var(--font-mono)}.invoice-total-row.grand{border-top:2px solid var(--ink);margin-top:6px;padding-top:12px;font-family:var(--font-display);font-size:20px;font-weight:600}.split{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:18px;gap:18px;align-items:start}.empty{border:1.5px dashed var(--border);border-radius:var(--radius);padding:36px 24px;text-align:center;color:var(--muted);font-size:13px}.divider{height:1px;background:var(--border);margin:8px 0}.section-title{font-family:var(--font-display);font-size:18px;font-weight:600;letter-spacing:-.01em;margin:0}.muted-text{color:var(--muted);font-size:13px}.modal-backdrop{position:fixed;inset:0;background:oklch(.2 .02 250/.32);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;z-index:100;padding:20px;animation:fade .15s ease}.modal{background:var(--bg-elev);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;animation:pop .18s ease}.modal-header{padding:18px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}.modal-header h3{font-family:var(--font-display);font-size:18px;font-weight:600;margin:0;letter-spacing:-.01em}.modal-body{padding:22px;display:flex;flex-direction:column;gap:14px}.modal-footer{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:var(--bg-sunk)}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.login-page{min-height:100vh;display:grid;place-items:center;background:var(--bg);padding:20px}.login-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px;width:100%;max-width:400px;box-shadow:var(--shadow-pop)}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:32px}.login-brand-mark{width:40px;height:40px;border-radius:10px;background:var(--ink);display:grid;place-items:center;color:var(--accent);font-family:var(--font-display);font-weight:700;font-size:22px}.login-brand-name{font-family:var(--font-display);font-weight:600;font-size:20px}.login-brand-sub{font-family:var(--font-mono);font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-top:1px}.login-title{font-family:var(--font-display);font-size:22px;font-weight:600;letter-spacing:-.01em;margin:0 0 6px}.login-sub{color:var(--muted);font-size:13px;margin-bottom:28px}.login-form{display:flex;flex-direction:column;gap:16px}.login-error{background:var(--danger-soft);color:var(--danger);border:1px solid oklch(.88 .08 25);border-radius:var(--radius-sm);padding:10px 14px;font-size:13px}.login-demo{margin-top:24px;padding-top:20px;border-top:1px solid var(--border)}.login-demo-title{font-family:var(--font-mono);font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}.login-demo-btn{width:100%;padding:8px 12px;border:1px solid var(--border);background:var(--bg-sunk);border-radius:var(--radius-sm);font-size:12px;text-align:left;cursor:pointer;display:flex;gap:8px;align-items:center;margin-bottom:6px;transition:background .1s}.login-demo-btn:hover{background:var(--bg-tint)}.login-demo-role{font-family:var(--font-mono);font-size:10px;padding:2px 6px;border-radius:4px}.login-demo-role.admin{background:var(--ink);color:var(--accent)}.login-demo-role.client{background:var(--accent-soft);color:var(--accent-ink);border:1px solid oklch(.85 .06 60)}.login-demo-info{font-family:var(--font-mono);font-size:11px;color:var(--muted)}.mobile-tabbar{display:none}@media (max-width:880px){.app{grid-template-columns:1fr}.sidebar{display:none}.content{padding:16px 16px 84px}.topbar{padding:14px 16px}.topbar h1{font-size:18px}.mobile-tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--bg-elev);border-top:1px solid var(--border);padding:8px 6px calc(8px + env(safe-area-inset-bottom));z-index:20}.mobile-tabbar button{flex:1 1;background:transparent;border:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px;color:var(--muted);font-size:10.5px;font-weight:500;border-radius:8px;cursor:pointer}.mobile-tabbar button.active{color:var(--ink);background:var(--bg-sunk)}.chat,.split{grid-template-columns:1fr}.chat{min-height:420px}.chat-list{max-height:200px}.invoice{padding:20px}.invoice-head{flex-direction:column;gap:12px}.invoice-grid,.row-2,.row-3{grid-template-columns:1fr}.job-row{grid-template-columns:1fr auto}.job-row .job-num{display:none}}@media (max-width:1100px){.split{grid-template-columns:1fr}}