:root{--bg:#0a0a0f;--panel:rgba(16,20,34,.72);--panel2:rgba(8,12,24,.86);--line:rgba(0,240,255,.22);--cyan:#00f0ff;--purple:#b400ff;--green:#00ff88;--yellow:#ffe66d;--orange:#ff9d42;--amber:#ff9d42;--red:#ff3b6b;--text:#e8fbff;--muted:#8fa8b8}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:"JetBrains Mono","Fira Code",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:0}
body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),radial-gradient(circle at 18% 12%,rgba(0,240,255,.18),transparent 34%),radial-gradient(circle at 85% 16%,rgba(180,0,255,.15),transparent 30%);background-size:100% 4px,100% 100%,100% 100%;animation:scan 8s linear infinite}
@keyframes scan{from{background-position:0 0,0 0,0 0}to{background-position:0 40px,0 0,0 0}}
button,input,select,textarea{font:inherit}button{cursor:pointer}
.login{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden}.particles{position:absolute;inset:0;background-image:radial-gradient(var(--cyan) 1px,transparent 1px);background-size:34px 34px;opacity:.22;animation:drift 18s linear infinite}@keyframes drift{to{transform:translateY(34px)}}
.login-card,.glass{background:var(--panel);border:1px solid var(--line);box-shadow:0 0 22px rgba(0,240,255,.12),inset 0 0 28px rgba(180,0,255,.04);backdrop-filter:blur(16px);border-radius:8px}
.login-card{width:min(420px,94vw);padding:32px;position:relative}.brand{display:flex;align-items:center;gap:12px;font-weight:900;color:var(--cyan);text-shadow:0 0 16px var(--cyan)}.mark{width:34px;height:34px;border:1px solid var(--cyan);display:grid;place-items:center;box-shadow:0 0 18px rgba(0,240,255,.38)}
h1,h2,h3{margin:0}.login h1{font-size:24px}.sub{color:var(--muted);font-size:13px;margin:10px 0 26px}
label{display:block;color:var(--muted);font-size:12px;margin:0 0 6px}.field{margin-bottom:14px}
input,select,textarea{width:100%;background:rgba(5,9,18,.86);border:1px solid rgba(0,240,255,.2);color:var(--text);border-radius:6px;padding:10px 12px;outline:0}textarea{min-height:76px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(0,240,255,.1)}
.btn{border:1px solid rgba(0,240,255,.35);background:rgba(0,240,255,.08);color:var(--text);padding:9px 12px;border-radius:6px;transition:.16s;display:inline-flex;align-items:center;gap:8px}.btn:hover{box-shadow:0 0 18px rgba(0,240,255,.28);border-color:var(--cyan)}.btn.primary{background:linear-gradient(90deg,rgba(0,240,255,.24),rgba(180,0,255,.22));color:#fff}.btn.danger{border-color:rgba(255,59,107,.55);background:rgba(255,59,107,.12)}.btn.small{padding:6px 8px;font-size:12px}
.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.side{border-right:1px solid var(--line);background:rgba(5,8,18,.78);backdrop-filter:blur(14px);padding:18px;position:sticky;top:0;height:100vh}.side .brand{margin-bottom:22px}.nav{display:grid;gap:8px}.nav button{justify-content:flex-start;width:100%;background:transparent;color:var(--muted)}.nav button.on{color:var(--cyan);border-color:var(--cyan);box-shadow:0 0 16px rgba(0,240,255,.18)}
.main{padding:18px 22px 40px;min-width:0}.top{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:18px}.user{color:var(--muted);font-size:13px}.grid{display:grid;gap:14px}.stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:16px}.stat{padding:16px}.stat .k{color:var(--muted);font-size:12px}.stat .v{font-size:28px;margin-top:8px;color:var(--green);text-shadow:0 0 14px rgba(0,255,136,.45)}
.master{display:grid;grid-template-columns:390px 1fr;gap:14px}.panel{padding:14px}.panel h3{font-size:15px;margin-bottom:12px;color:var(--cyan)}.list{display:grid;gap:8px;max-height:calc(100vh - 245px);overflow:auto}.item{border:1px solid rgba(0,240,255,.13);background:rgba(255,255,255,.035);border-radius:6px;padding:10px;cursor:pointer}.item:hover,.item.on{border-color:var(--cyan);box-shadow:0 0 16px rgba(0,240,255,.14)}.muted{color:var(--muted)}.row{display:flex;align-items:center;justify-content:space-between;gap:10px}.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.chip{font-size:11px;border:1px solid rgba(0,240,255,.22);border-radius:999px;padding:3px 7px;color:var(--cyan);background:rgba(0,240,255,.05)}
.tabs{display:none}.view{display:none}.view.on{display:block}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.doc-card{padding:12px;border-left:3px solid var(--cyan)}.expiry{font-weight:900;text-shadow:0 0 14px currentColor}.e-ok{color:var(--green)}.e-warn{color:var(--yellow)}.e-soon{color:var(--orange)}.e-hot{color:var(--red)}.e-dead{color:#bfc3c9}
table{width:100%;border-collapse:collapse;font-size:13px}th,td{border-bottom:1px solid rgba(0,240,255,.12);padding:9px;text-align:left;vertical-align:top}th{color:var(--cyan);font-weight:700;background:rgba(0,240,255,.05)}tr:hover td{background:rgba(0,240,255,.035)}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.toolbar>*{width:auto}.hidden{display:none!important}.upload{border:1px dashed rgba(0,240,255,.38);padding:28px;text-align:center;border-radius:8px;background:rgba(0,240,255,.04)}.upload input{margin-top:12px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.72);display:grid;place-items:center;padding:20px;z-index:10}.dialog{width:min(760px,96vw);max-height:90vh;overflow:auto;padding:18px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.toast-wrap{position:fixed;right:16px;bottom:16px;display:grid;gap:8px;z-index:20}.toast{padding:10px 12px;border-radius:6px;background:rgba(5,10,18,.94);border:1px solid var(--cyan);box-shadow:0 0 20px rgba(0,240,255,.2)}.toast.err{border-color:var(--red);color:var(--red)}
@media(max-width:900px){.app{grid-template-columns:1fr}.side{position:relative;height:auto}.nav{grid-template-columns:repeat(2,1fr)}.master{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.top{align-items:flex-start;flex-direction:column}}
/* ── OCR Cyberpunk UI ── */
.ocr-progress{position:relative;overflow:hidden;background:rgba(0,10,20,.94);border:1px solid rgba(0,240,255,.3);border-radius:8px;padding:22px 24px 16px;margin-bottom:12px;text-align:center}.ocr-classified{text-align:center;margin-bottom:10px}.cls-badge{display:inline-block;padding:5px 14px;border-radius:20px;font-size:13px;font-weight:700;letter-spacing:.5px;animation:fadeInUp .4s ease-out}.cls-permit{background:rgba(0,200,255,.15);color:#0cf;border:1px solid rgba(0,200,255,.4)}.cls-restricted_zone{background:rgba(255,180,0,.15);color:#fb0;border:1px solid rgba(255,180,0,.4)}.cls-hk_insurance{background:rgba(0,255,140,.15);color:#0f8;border:1px solid rgba(0,255,140,.4)}.cls-cn_insurance{background:rgba(220,40,40,.15);color:#f55;border:1px solid rgba(220,40,40,.4)}.cls-mixed{background:rgba(160,80,255,.15);color:#a5f;border:1px solid rgba(160,80,255,.4)}@keyframes fadeInUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.ocr-progress-bar{height:3px;background:rgba(0,240,255,.1);border-radius:3px;margin-top:10px;overflow:hidden}.ocr-progress-fill{height:100%;background:linear-gradient(90deg,#0cf,#0f8);border-radius:3px;transition:width .6s ease-out;width:0%}
.ocr-scan-line{position:absolute;inset:0;background:linear-gradient(180deg,transparent 0%,rgba(0,240,255,.08) 48%,transparent 52%);animation:ocrScan 1.8s ease-in-out infinite;pointer-events:none}
.ocr-pulse{position:absolute;inset:0;border:1px solid rgba(0,240,255,.15);border-radius:8px;animation:ocrPulse 2s ease-out infinite;pointer-events:none}
@keyframes ocrScan{0%,100%{transform:translateY(-100%)}50%{transform:translateY(100%)}}
@keyframes ocrPulse{0%{box-shadow:0 0 0 0 rgba(0,240,255,.25)}70%{box-shadow:0 0 0 12px rgba(0,240,255,0)}100%{box-shadow:0 0 0 0 rgba(0,240,255,0)}}
.ocr-status{font-size:17px;font-weight:900;color:var(--cyan);text-shadow:0 0 18px var(--cyan);letter-spacing:2px;position:relative}
.ocr-dots span{animation:ocrDots 1.4s infinite;opacity:0}.ocr-dots span:nth-child(2){animation-delay:.2s}.ocr-dots span:nth-child(3){animation-delay:.4s}
@keyframes ocrDots{0%,100%{opacity:0}50%{opacity:1}}
.ocr-hint{color:var(--muted);font-size:11px;margin-top:6px;position:relative}
/* Review Cards */
.ocr-review-card{padding:16px;border-left:3px solid var(--amber);background:rgba(255,157,66,.04);margin-bottom:10px;animation:ocrCardIn .3s ease-out}
@keyframes ocrCardIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}
.ocr-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.ocr-doc-type{color:var(--yellow);font-size:14px;text-shadow:0 0 10px rgba(255,230,109,.4)}
.ocr-badge{font-size:11px;color:var(--amber);border:1px solid rgba(255,157,66,.35);border-radius:4px;padding:2px 8px;animation:ocrBadge 2s ease-in-out infinite}
@keyframes ocrBadge{0%,100%{border-color:rgba(255,157,66,.35)}50%{border-color:rgba(255,157,66,.8);box-shadow:0 0 8px rgba(255,157,66,.3)}}
.ocr-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ocr-field label{font-size:10px;color:var(--muted);margin-bottom:2px;display:block;text-transform:uppercase;letter-spacing:1px}
.ocr-field input,.ocr-field select{font-size:13px;padding:7px 8px;background:rgba(5,9,18,.86);border:1px solid rgba(0,240,255,.18);color:var(--text);border-radius:4px;width:100%}
.ocr-field input:focus,.ocr-field select:focus{border-color:var(--cyan);box-shadow:0 0 10px rgba(0,240,255,.18);outline:0}
.ocr-match{font-size:11px;color:var(--green);margin-top:8px;padding:4px 8px;background:rgba(0,255,136,.06);border-radius:4px;display:inline-block}
.ocr-actions{display:flex;gap:8px;margin-top:10px}

/* Vehicle table */
.vt { font-size: 15px; min-width: 1100px; }
.vt th { white-space: nowrap; padding: 8px 10px; font-size: 13px; }
.vt td { padding: 8px 10px; white-space: nowrap; }
.vt .client-cell { cursor: help; position: relative; max-width: 120px; overflow: hidden; text-overflow: ellipsis; }
.vt .client-cell:hover { color: var(--cyan); }
.vt .expiry { display: inline-block; font-size: 13px; }
.vt .dl { font-size: 14px; margin-left: 4px; text-decoration: none; }
.vt .dl:hover { transform: scale(1.2); display: inline-block; }
