/* Wallroom — จอเฝ้าระวังกล้องหลายช่อง (โทนมืดสำหรับห้องปฏิบัติการ) */
:root {
  --bg: #04080f;
  --bar: rgba(9, 18, 31, 0.94);
  --line: rgba(160, 200, 240, 0.16);
  --text: #eaf3ff;
  --muted: #8fa9c4;
  --live: #22c55e;
  --snap: #eab308;
  --stale: #f97316;
  --off: #ef4444;
  --watch: #f59e0b;
  --danger: #ef4444;
  --bar-h: 54px;
  --gap: 4px;
}
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: var(--bg); color: var(--text); font-family: "Noto Sans Thai", system-ui, sans-serif; overflow: hidden; }
[hidden] { display: none !important; }
button { font: inherit; }

/* ── แถบบน ── */
.wr-bar { position: fixed; z-index: 20; top: 0; left: 0; right: 0; height: var(--bar-h); display: flex; align-items: center; gap: 14px; padding: 0 14px; background: var(--bar); border-bottom: 1px solid var(--line); transition: transform .3s, opacity .3s; }
body.is-kiosk .wr-bar, body.is-fullscreen .wr-bar { transform: translateY(-100%); opacity: 0; }
body.show-bar .wr-bar { transform: none; opacity: 1; }
.wr-brand { display: flex; align-items: center; gap: 10px; white-space: nowrap; }
.wr-brand strong { display: block; font-size: 16px; line-height: 1.1; }
.wr-brand small { color: var(--muted); font-size: 11px; }
.wr-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--live); box-shadow: 0 0 0 0 rgba(34, 197, 94, .7); animation: wr-pulse 2s infinite; }
@keyframes wr-pulse { 70% { box-shadow: 0 0 0 9px rgba(34, 197, 94, 0); } 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); } }
.wr-presets { display: flex; gap: 4px; overflow-x: auto; flex: 1; min-width: 0; scrollbar-width: none; }
.wr-presets button { flex: none; border: 1px solid var(--line); background: transparent; color: var(--muted); padding: 6px 12px; border-radius: 999px; cursor: pointer; white-space: nowrap; font-size: 13px; }
.wr-presets button.on { background: #1d4ed8; border-color: #3b82f6; color: #fff; font-weight: 600; }
.wr-presets button small { opacity: .7; margin-left: 4px; }
.wr-tools { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.wr-summary { font-size: 12px; color: var(--muted); }
.wr-summary b { color: var(--text); }
.wr-pager { display: flex; align-items: center; gap: 4px; font-size: 13px; }
.wr-pager button, .wr-btn { border: 1px solid var(--line); background: rgba(255, 255, 255, .05); color: var(--text); border-radius: 8px; padding: 5px 10px; cursor: pointer; text-decoration: none; font-size: 13px; }
.wr-pager button:hover, .wr-btn:hover { background: rgba(255, 255, 255, .12); }
.wr-clock { font-variant-numeric: tabular-nums; font-weight: 600; font-size: 15px; min-width: 70px; text-align: right; }

/* ── ตารางกล้อง ── */
.wr-wall { position: fixed; top: var(--bar-h); left: 0; right: 0; bottom: 0; display: grid; gap: var(--gap); padding: var(--gap); }
body.is-kiosk .wr-wall, body.is-fullscreen .wr-wall { top: 0; }
.wr-tile { position: relative; min-width: 0; min-height: 0; overflow: hidden; background: #000; border-radius: 6px; outline: 2px solid transparent; outline-offset: -2px; cursor: zoom-in; }
.wr-tile.is-big { grid-column: span var(--span); grid-row: span var(--span); }
.wr-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #000; border: 0; display: block; }
iframe.wr-media { pointer-events: none; }
.wr-tile.alert-1 { outline-color: var(--watch); }
.wr-tile.alert-2 { outline-color: var(--danger); animation: wr-alarm 1.2s infinite; }
@keyframes wr-alarm { 50% { outline-color: rgba(239, 68, 68, .25); box-shadow: inset 0 0 40px rgba(239, 68, 68, .45); } }

.wr-cap { position: absolute; left: 0; right: 0; top: 0; z-index: 2; display: flex; align-items: flex-start; gap: 8px; padding: 6px 8px 18px; background: linear-gradient(rgba(0, 0, 0, .78), transparent); pointer-events: none; }
.wr-cap-name { flex: 1; min-width: 0; font-size: clamp(11px, 1.1vw, 15px); font-weight: 600; line-height: 1.25; text-shadow: 0 1px 2px #000; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wr-cap-name small { display: block; font-weight: 400; color: #c5d6ea; font-size: .82em; }
.wr-badge { flex: none; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; color: #fff; background: rgba(0, 0, 0, .6); border: 1px solid currentColor; letter-spacing: .02em; }
.wr-badge.live { color: var(--live); }
.wr-badge.live::before { content: "● "; }
.wr-badge.snap { color: var(--snap); }
.wr-badge.stale { color: var(--stale); }
.wr-badge.off { color: var(--off); }
.wr-badge.link, .wr-badge.pending { color: var(--muted); }

.wr-foot { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; display: flex; align-items: flex-end; justify-content: space-between; gap: 6px; padding: 18px 8px 6px; background: linear-gradient(transparent, rgba(0, 0, 0, .8)); pointer-events: none; font-size: clamp(10px, .9vw, 13px); }
.wr-age { color: #d7e3f2; text-shadow: 0 1px 2px #000; white-space: nowrap; }
.wr-level { padding: 2px 8px; border-radius: 6px; background: rgba(15, 23, 42, .85); border-left: 4px solid var(--live); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 70%; }
.wr-level.a1 { border-left-color: var(--watch); }
.wr-level.a2 { border-left-color: var(--danger); background: rgba(127, 29, 29, .9); font-weight: 600; }
.wr-level.stale { opacity: .6; }

.wr-note { position: absolute; inset: 0; display: grid; place-items: center; align-content: center; gap: 10px; padding: 16px; text-align: center; color: var(--muted); font-size: 13px; background: radial-gradient(circle, #0f1b2b, #04080f); }
.wr-note b { color: var(--text); font-size: 14px; }
.wr-note a { color: #60a5fa; pointer-events: auto; }
.wr-play { pointer-events: auto; border: 1px solid #60a5fa; background: rgba(37, 99, 235, .25); color: #fff; padding: 6px 14px; border-radius: 999px; cursor: pointer; }
.wr-spin { width: 26px; height: 26px; border: 3px solid rgba(255, 255, 255, .15); border-top-color: #60a5fa; border-radius: 50%; animation: wr-rot 1s linear infinite; }
@keyframes wr-rot { to { transform: rotate(360deg); } }

.wr-empty { position: fixed; inset: var(--bar-h) 0 0; display: grid; place-items: center; text-align: center; color: var(--muted); padding: 20px; }
.wr-empty h2 { color: var(--text); }
.wr-empty a { color: #60a5fa; }

/* ── ขยายกล้อง ── */
.wr-focus { position: fixed; inset: 0; z-index: 50; display: grid; grid-template-columns: 1fr 320px; background: rgba(2, 6, 12, .97); }
.wr-focus-media { position: relative; background: #000; }
.wr-focus-info { padding: 22px 20px; border-left: 1px solid var(--line); overflow-y: auto; font-size: 14px; }
.wr-focus-info h2 { margin: 0 0 4px; font-size: 18px; }
.wr-focus-info dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; margin: 16px 0; }
.wr-focus-info dt { color: var(--muted); }
.wr-focus-info dd { margin: 0; }
.wr-focus-info a { color: #60a5fa; }
.wr-focus-info .muted { color: var(--muted); }
.wr-focus-close { position: absolute; top: 12px; right: 334px; z-index: 3; width: 42px; height: 42px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .14); color: #fff; font-size: 26px; cursor: pointer; }
.wr-focus video.wr-media { object-fit: contain; }

@media (max-width: 900px) {
  .wr-summary, .wr-brand small { display: none; }
  .wr-focus { grid-template-columns: 1fr; grid-template-rows: 60vh auto; }
  .wr-focus-info { border-left: 0; border-top: 1px solid var(--line); }
  .wr-focus-close { right: 12px; }
}
@media (max-width: 640px) {
  .wr-bar { flex-wrap: wrap; height: auto; padding: 6px 10px; gap: 6px; }
  :root { --bar-h: 92px; }
  .wr-presets { order: 3; flex-basis: 100%; }
}
