:root {
    --bg: #0f1115;
    --card: #1a1d24;
    --line: #2a2e38;
    --text: #e6e8ec;
    --muted: #9aa0ab;
    --accent: #4c8bf5;
    --on: #2ecc71;
    --off: #e74c3c;
    --unknown: #7a818d;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    background: var(--bg);
    color: var(--text);
}

.container {
    max-width: 880px;
    margin: 0 auto;
    padding: 24px 16px;
}

.card {
    background: var(--card);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 20px;
}

.login {
    max-width: 340px;
    margin: 10vh auto 0;
}

.login h1 {
    margin: 0 0 20px;
    font-size: 1.25rem;
    text-align: center;
}

form label {
    display: block;
    margin-bottom: 14px;
    font-size: .85rem;
    color: var(--muted);
}

input {
    width: 100%;
    margin-top: 6px;
    padding: 10px 12px;
    background: #0f1115;
    border: 1px solid var(--line);
    border-radius: 8px;
    color: var(--text);
    font-size: 1rem;
}

button {
    width: 100%;
    padding: 10px 12px;
    background: var(--accent);
    color: #fff;
    border: 0;
    border-radius: 8px;
    font-size: 1rem;
    cursor: pointer;
}

button:hover { filter: brightness(1.08); }

.error {
    margin-top: 12px;
    min-height: 1.2em;
    color: var(--off);
    font-size: .85rem;
    text-align: center;
}

.topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}

.topbar h1 { font-size: 1.25rem; margin: 0; }

.user {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--muted);
    font-size: .9rem;
}

.link {
    width: auto;
    background: none;
    color: var(--accent);
    padding: 4px 8px;
}

.grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 14px;
}

.camera {
    display: block;
    color: inherit;
    text-decoration: none;
    transition: border-color .15s, transform .15s;
}

.camera:hover {
    border-color: var(--accent);
    transform: translateY(-2px);
}

.camera-title { font-weight: 600; margin-bottom: 10px; }

.player video {
    width: 100%;
    border-radius: 8px;
    background: #000;
    aspect-ratio: 16 / 9;
}

.player-meta {
    margin-top: 10px;
    color: var(--muted);
    font-size: .85rem;
}

.camera-status {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--muted);
    font-size: .85rem;
}

.dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--unknown);
    flex: none;
}

.dot-on { background: var(--on); box-shadow: 0 0 6px var(--on); }
.dot-off { background: var(--off); }
.dot-unknown { background: var(--unknown); }

.section { margin-bottom: 22px; }
.section h2 { font-size: 1.05rem; margin: 0 0 12px; }

.table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.table th, .table td {
    text-align: left;
    padding: 8px 10px;
    border-bottom: 1px solid var(--line);
    vertical-align: middle;
}
.table th { color: var(--muted); font-weight: 600; }

.inline-form { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.inline-form input, .inline-form select {
    width: auto;
    margin-top: 0;
    padding: 8px 10px;
}
.inline-form input[type="text"] { min-width: 120px; }
.inline-form input.short { width: 70px; }
.inline-form label {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    color: var(--text);
}
.inline-form input[type="checkbox"] { width: auto; margin: 0; }

.btn-small { width: auto; padding: 7px 12px; font-size: .85rem; }
.btn-danger { background: var(--off); }
.btn-muted { background: #3a3f4b; }

.mono { font-family: ui-monospace, "Cascadia Code", Consolas, monospace; }
.pill { font-size: .75rem; padding: 2px 8px; border-radius: 999px; }
.pill-on { background: rgba(46, 204, 113, .18); color: var(--on); }
.pill-off { background: rgba(231, 76, 60, .18); color: var(--off); }

.hint { color: var(--muted); font-size: .8rem; }

.aggregate {
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 14px;
    margin-bottom: 14px;
}
.aggregate-flagged { border-color: var(--accent); }
.aggregate-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 12px;
}
.aggregate-head strong { display: block; }

.metrics {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 10px;
    margin-bottom: 12px;
}
.metrics > div {
    background: #0f1115;
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 10px;
}
.metric-value { display: block; font-size: 1.15rem; font-weight: 600; }
.metric-label { display: block; color: var(--muted); font-size: .75rem; margin-top: 2px; }

.rec-group { margin-bottom: 18px; }
.rec-group h3 { font-size: .95rem; margin: 0 0 8px; }
.rec-file {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 10px;
    border-bottom: 1px solid var(--line);
    font-size: .9rem;
}
