:root { --bfc-accent: #20c997; }
body { min-height: 100vh; }
.navbar-brand { letter-spacing: .02em; }
.card-header { font-weight: 600; }
.table th { white-space: nowrap; font-weight: 600; }
code { color: var(--bfc-accent); }
dl.row dt { font-weight: 500; color: var(--bs-secondary-color); }
.chart-box { position: relative; height: 280px; }
.raw-json { max-height: 420px; overflow: auto; white-space: pre-wrap; word-break: break-all; }
details > summary { cursor: pointer; }
.hours-input { width: 6.5rem; }
.camera-img { width: 100%; aspect-ratio: 16 / 9; object-fit: contain; background: #000; }
.camera-box:fullscreen, .camera-box.camera-overlay {
  display: flex; flex-direction: column; justify-content: center; align-items: center;
  background: #000; padding: 0; margin: 0 !important;
}
.camera-box.camera-overlay { position: fixed; inset: 0; z-index: 2000; }
.camera-box:fullscreen .camera-img, .camera-box.camera-overlay .camera-img {
  width: 100%; height: 100%; aspect-ratio: auto; border-radius: 0 !important;
}
.camera-box:fullscreen .camera-status, .camera-box.camera-overlay .camera-status {
  position: absolute; bottom: .5rem; right: .75rem; color: #ccc !important; text-shadow: 0 0 4px #000;
}
.camera-box:not(:fullscreen):not(.camera-overlay) .camera-img { cursor: zoom-in; }
.camera-exit { display: none; }
.camera-box:fullscreen .camera-exit, .camera-box.camera-overlay .camera-exit {
  display: block; position: absolute; top: .75rem; right: .75rem; opacity: .85;
}
