:root{--bg:#0f0f12;--surface:#1a1a1f;--border:#2a2a32;--text:#e8e8ec;--text-muted:#8888a0;--primary:#3b82f6;--primary-hover:#2563eb;--success:#22c55e;--warning:#eab308;--error:#ef4444;--disabled:#6b7280}*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;min-height:100vh;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer}button,input,select,textarea{font:inherit}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:32px}.auth-card h1{font-size:1.5rem;margin-bottom:4px}.auth-sub{color:var(--text-muted);font-size:.9rem;margin-bottom:24px}.auth-card label{display:block;margin-bottom:16px;font-size:.875rem;color:var(--text-muted)}.auth-card input{display:block;width:100%;margin-top:6px;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text)}.auth-card input:focus{outline:none;border-color:var(--primary)}.auth-card button[type=submit]{width:100%;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-weight:500;margin-top:8px}.auth-card button[type=submit]:hover:not(:disabled){background:var(--primary-hover)}.auth-card button[type=submit]:disabled{opacity:.7;cursor:not-allowed}.auth-error{background:rgba(239,68,68,.15);color:var(--error);padding:10px 12px;border-radius:8px;margin-bottom:16px;font-size:.875rem}.auth-footer{margin-top:20px;text-align:center;font-size:.9rem;color:var(--text-muted)}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);background:var(--surface)}.app-header h1{font-size:1.25rem;font-weight:600}.app-header nav{display:flex;align-items:center;gap:16px}.app-header a,.app-header button{color:var(--text-muted);font-size:.9rem;background:none;border:none}.app-header a:hover,.app-header button:hover{color:var(--text)}.app-main{flex:1 1;padding:24px;max-width:1200px;margin:0 auto;width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;margin-bottom:24px}.card h2{font-size:1.125rem;margin-bottom:16px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:12px 16px;border-bottom:1px solid var(--border)}th{font-size:.75rem;text-transform:uppercase;color:var(--text-muted);font-weight:600}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px}.status-active{background:var(--success)}.status-qr{background:var(--warning)}.status-disabled{background:var(--disabled)}.status-error{background:var(--error)}.btn{padding:8px 16px;border-radius:8px;font-size:.875rem;font-weight:500;border:none;cursor:pointer}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover:not(:disabled){background:var(--surface);color:var(--text)}.btn-danger{background:rgba(239,68,68,.2);color:var(--error)}.btn-danger:hover:not(:disabled){background:rgba(239,68,68,.35)}.btn:disabled{opacity:.6;cursor:not-allowed}.form-row{margin-bottom:16px}.form-row label{display:block;font-size:.875rem;color:var(--text-muted);margin-bottom:6px}.form-row input{width:100%;max-width:320px;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text)}.qr-box{background:#fff;padding:16px;border-radius:8px;display:inline-block;margin-top:12px}.qr-box img{display:block;width:256px;height:256px}