:root{--navy:#102a43;--blue:#1677ff;--bg:#f4f7fb;--ink:#19324d;--muted:#718096;--green:#16855b;--orange:#c26712;--border:#e3eaf2}*{box-sizing:border-box}body{margin:0;background:var(--bg);font:15px Inter,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}.shell{display:flex;min-height:100vh}.side{width:250px;background:var(--navy);color:#dce9f7;padding:24px 16px;flex-shrink:0}.brand{font-size:22px;font-weight:800;color:#fff;padding:10px 12px 28px}.brand span{color:#55b6ff}.nav button{display:block;width:100%;text-align:left;padding:13px 14px;border-radius:9px;background:transparent;color:inherit;margin:3px 0}.nav button.active,.nav button:hover{background:#214767;color:#fff}.main{flex:1;padding:28px;max-width:1500px;margin:auto;width:100%}.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.top h1{margin:0;font-size:28px}.user{display:flex;gap:14px;align-items:center;color:var(--muted)}.btn{background:var(--blue);color:#fff;padding:10px 15px;border-radius:8px;font-weight:650}.btn.secondary{background:#e8eef6;color:var(--ink)}.btn.danger{background:#d64545}.grid{display:grid;gap:18px}.cards{grid-template-columns:repeat(4,minmax(0,1fr))}.card,.panel{background:#fff;border:1px solid var(--border);border-radius:14px;padding:20px;box-shadow:0 3px 14px #203c5c0a}.metric{font-size:32px;font-weight:800;margin:8px 0}.muted{color:var(--muted)}.twocol{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.toolbar input,.toolbar select,.form input,.form select,.form textarea{border:1px solid #cdd8e5;border-radius:8px;padding:10px;background:#fff}.toolbar input{min-width:220px}.datepick{font-weight:700}.list{list-style:none;padding:0;margin:12px 0 0}.list li{padding:11px 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:10px}.tag{font-size:12px;padding:4px 8px;border-radius:20px;background:#e8f1ff;color:#1959a5;white-space:nowrap}.tag.up{background:#e2f7ed;color:var(--green)}.tag.down{background:#fff0df;color:var(--orange)}table{width:100%;border-collapse:collapse;background:#fff}.panel table{margin-top:12px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-size:12px;text-transform:uppercase}.actions{display:flex;gap:7px}.small{padding:7px 10px;font-size:13px}.form{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.form label{display:flex;flex-direction:column;gap:6px;font-weight:600}.form .full{grid-column:1/-1}.modal{position:fixed;inset:0;background:#102a4366;display:grid;place-items:center;padding:18px}.modal>div{background:#fff;border-radius:14px;padding:24px;max-width:650px;width:100%;max-height:90vh;overflow:auto}.modal h2{margin-top:0}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#102a43,#1677ff)}.loginbox{background:#fff;padding:34px;border-radius:18px;width:min(420px,calc(100% - 30px));box-shadow:0 20px 60px #001a3d44}.loginbox h1{margin-top:0}.loginbox .form{grid-template-columns:1fr}.notice{padding:10px;border-radius:8px;background:#fff1f1;color:#a33;margin-bottom:12px}.print-only{display:none}@media(max-width:900px){.side{width:74px;padding:16px 8px}.brand{font-size:0;padding:10px 8px 28px}.brand span{font-size:24px}.nav button{font-size:0;text-align:center}.nav button:first-letter{font-size:18px}.main{padding:18px}.cards,.three{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.shell{display:block}.side{width:100%;display:flex;align-items:center;padding:8px 10px;position:sticky;top:0;z-index:3}.brand{padding:8px;font-size:18px;margin-right:auto}.brand span{font-size:inherit}.nav{display:flex}.nav button{font-size:0;padding:10px}.nav button:first-letter{font-size:16px}.main{padding:14px}.top h1{font-size:22px}.cards,.twocol,.three,.form{grid-template-columns:1fr}.user{font-size:12px}.user .btn{padding:7px}.panel{padding:15px;overflow:auto}table{min-width:650px}.modal>div{padding:18px}}
.vehicle-thumb{width:40px;height:40px;border-radius:8px;object-fit:cover;vertical-align:middle;margin-right:8px;background:#eef2f7}.vehicle-thumb.placeholder{display:inline-flex;align-items:center;justify-content:center;font-size:20px;color:#94a3b8}.vehicle-photo-preview{display:block;max-width:220px;max-height:160px;border-radius:8px;margin-top:8px;object-fit:cover;border:1px solid var(--border)}.vehicle-plate-color{font-size:.82em;letter-spacing:.02em}.fleet-list{list-style:none;padding:0;margin:0}.fleet-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.fleet-item:last-child{border-bottom:none}.fleet-info{flex:1;display:flex;flex-direction:column;gap:2px}.fleet-info small{font-size:.82em}
.fleet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px;margin-top:16px}.fleet-card{background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:0 3px 12px rgba(32,60,92,.06);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;display:flex;flex-direction:column}.fleet-card:hover{transform:translateY(-6px);box-shadow:0 14px 30px rgba(32,60,92,.18);border-color:var(--blue)}.fleet-card-photo{width:100%;aspect-ratio:16/10;background:linear-gradient(135deg,#e8eef6,#dfe7f0);display:flex;align-items:center;justify-content:center;overflow:hidden}.fleet-card-photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}.fleet-card:hover .fleet-card-photo img{transform:scale(1.06)}.fleet-card-photo.placeholder{font-size:56px;color:#94a3b8}.fleet-card-body{padding:14px 16px 6px;flex:1}.fleet-card-name{margin:0 0 6px;font-size:17px;font-weight:700;color:var(--ink)}.fleet-card-meta{margin:0;font-size:13px;color:var(--muted);letter-spacing:.02em}.fleet-card-actions{padding:0 16px 14px;display:flex;justify-content:flex-end}.fleet-card-actions .btn{opacity:.85;transition:opacity .2s ease}.fleet-card:hover .fleet-card-actions .btn{opacity:1}