*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:#f3f6fb;color:#172033}.login-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f172a,#1d4ed8)}.login-card{width:min(420px,92vw);background:#fff;border-radius:22px;padding:34px;box-shadow:0 24px 60px rgba(0,0,0,.25)}h1,h2{margin:0 0 6px}.muted{color:#697386;margin-top:0}.container{width:min(1380px,94vw);margin:26px auto}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 3vw;background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 4px 22px rgba(15,23,42,.06)}.topbar nav{display:flex;gap:12px;flex-wrap:wrap}.topbar a{color:#1d4ed8;text-decoration:none;font-weight:700}.toolbar{display:flex;gap:12px;margin-bottom:18px}.toolbar input{max-width:420px}label{display:block;margin-top:14px;margin-bottom:6px;font-weight:700}input,select,textarea{width:100%;padding:12px;border:1px solid #d7dce5;border-radius:12px;background:#fff;font:inherit}.btn,button{border:0;border-radius:12px;padding:11px 15px;background:#e5e7eb;color:#111827;font-weight:800;cursor:pointer;text-decoration:none;display:inline-block}.btn-primary{background:#1d4ed8;color:#fff}.btn-danger{background:#dc2626;color:#fff}.btn-success{background:#16a34a;color:#fff}.btn.small{padding:7px 10px;font-size:.86rem}.full{width:100%;margin-top:20px}.alert{padding:12px;border-radius:12px;margin:14px 0}.alert-danger{background:#fee2e2;color:#991b1b}.alert-success{background:#dcfce7;color:#166534}.camera-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:18px}.camera-card,.panel{background:#fff;border:1px solid #e5e7eb;border-radius:20px;box-shadow:0 10px 28px rgba(15,23,42,.07);overflow:hidden}.camera-card-header{display:flex;justify-content:space-between;gap:12px;padding:16px}.camera-card-header p{margin:0;color:#697386}.status{display:inline-flex;align-items:center;height:26px;border-radius:999px;padding:0 10px;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.status.online{background:#dcfce7;color:#166534}.status.offline{background:#fee2e2;color:#991b1b}.status.disabled{background:#e5e7eb;color:#374151}.image-wrap{aspect-ratio:16/9;background:#111827;display:grid;place-items:center}.image-wrap img{width:100%;height:100%;object-fit:cover;display:block}.disabled-box{color:#fff;font-weight:800}.camera-actions{display:flex;justify-content:space-between;align-items:center;padding:12px 16px}.panel{padding:20px;margin-bottom:18px}.table{width:100%;border-collapse:collapse;background:#fff;border-radius:18px;overflow:hidden}.table th,.table td{text-align:left;padding:12px;border-bottom:1px solid #e5e7eb;vertical-align:top}.actions{display:flex;gap:8px;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.checkbox-row{display:flex;align-items:center;gap:8px;margin-top:12px}.checkbox-row input{width:auto}@media(max-width:760px){.topbar,.toolbar{flex-direction:column;align-items:stretch}.grid-2{grid-template-columns:1fr}.table{font-size:.9rem}.actions{flex-direction:column}}
.camera-modal {
    display: none;
    position: fixed;
    z-index: 9999;
    inset: 0;
    background: rgba(0, 0, 0, 0.92);
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.camera-modal.active {
    display: flex;
}

.camera-modal-content {
    position: relative;
    width: 96vw;
    height: 92vh;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.camera-modal-content h2 {
    color: #ffffff;
    margin: 0 0 14px 0;
    font-size: 24px;
}

.camera-modal-content img {
    max-width: 100%;
    max-height: calc(92vh - 60px);
    object-fit: contain;
    border-radius: 12px;
    background: #111;
}

.camera-modal-close {
    position: absolute;
    top: -10px;
    right: 0;
    background: #ffffff;
    color: #111827;
    border: none;
    border-radius: 50%;
    width: 42px;
    height: 42px;
    font-size: 30px;
    line-height: 38px;
    cursor: pointer;
    font-weight: bold;
}