
body.app-body{margin:0;font-family:system-ui,Segoe UI,sans-serif;background:#020617;color:#f9fafb}
.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;background:#020617;border-bottom:1px solid #1f2937;position:sticky;top:0;z-index:10}
.logo{display:flex;align-items:center;gap:8px}
.logo-mark{background:#22c55e;color:#0f172a;border-radius:999px;padding:6px 10px;font-weight:700;font-size:.8rem}
.logo-text{font-weight:600;font-size:.95rem;letter-spacing:.04em}
.app-nav{display:flex;align-items:center;gap:10px;font-size:.85rem}
.app-nav .nav-link{color:#d1d5db;text-decoration:none;padding:6px 10px;border-radius:999px}
.app-nav .nav-link:hover,.app-nav .nav-link.active{background:#0f172a;color:#f9fafb}
.app-main{padding:16px;max-width:1220px;margin:0 auto 20px}
.card{background:radial-gradient(circle at top left,#111827 0,#020617 55%);border-radius:18px;padding:16px 18px;border:1px solid #111827;box-shadow:0 18px 40px rgba(15,23,42,.7);margin-bottom:18px}
.card h2{margin-top:0;font-size:1.02rem}
.card h3{margin-top:.8rem;font-size:.95rem}
.muted{color:#9ca3af;font-size:.8rem}
.table-wrapper{margin-top:10px;max-height:360px;overflow:auto;border-radius:12px;border:1px solid #1f2937}
.table{width:100%;border-collapse:collapse;font-size:.8rem}
.table th,.table td{padding:6px 8px;border-bottom:1px solid #111827}
.table th{text-align:left;background:#020617;position:sticky;top:0}
.table tr:nth-child(even){background:rgba(15,23,42,.75)}
.result-success td{border-left:3px solid #22c55e}
.result-unauthorised td{border-left:3px solid #ef4444}
.result-door_open td{border-left:3px solid #3b82f6}
.btn-primary{border-radius:999px;border:none;padding:7px 14px;font-size:.8rem;background:#22c55e;color:#020617;cursor:pointer;font-weight:600}
.btn-secondary{border-radius:999px;border:1px solid #4b5563;padding:6px 12px;font-size:.78rem;background:#020617;color:#e5e7eb;cursor:pointer}
input[type=text],input[type=password],input[type=date],input[type=number],select,textarea{background:#020617;border-radius:999px;border:1px solid #1f2937;padding:6px 10px;color:#e5e7eb;font-size:.8rem}
textarea{border-radius:12px;min-height:60px}
.filter-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:8px}
.filter-row>div{min-width:150px}
.filter-actions{display:flex;align-items:flex-end}
.app-footer{padding:10px 22px;font-size:.8rem;color:#9ca3af;display:flex;gap:8px;justify-content:center;border-top:1px solid #111827}
.alert{border-radius:12px;padding:8px 10px;font-size:.8rem;margin-top:8px}
.alert-success{background:rgba(34,197,94,.08);border:1px solid #22c55e;color:#bbf7d0}
.alert-error{background:rgba(239,68,68,.08);border:1px solid #ef4444;color:#fecaca}
.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at top,#1e293b 0,#020617 55%,#000 100%)}
.login-card{background:#020617;padding:20px 22px;border-radius:18px;box-shadow:0 22px 50px rgba(15,23,42,.9);border:1px solid #111827;width:340px}
.login-card h1{margin-top:0;font-size:1.08rem;margin-bottom:8px}
.login-card .row{margin-bottom:10px}
.login-card label{font-size:.78rem;color:#9ca3af;display:block;margin-bottom:4px}
.chip{display:inline-flex;align-items:center;border-radius:999px;border:1px solid #1f2937;padding:3px 8px;font-size:.7rem;color:#e5e7eb;background:#020617;margin-right:4px;margin-bottom:4px}
.action-buttons{display:flex;flex-wrap:wrap;gap:6px}
.action-buttons form{margin:0}
