/* Laboratorio de cámaras. Usa los tokens de laboratorio.css, así funciona en tema claro y oscuro. */
.cam-plano { width: 100%; min-width: 620px; height: auto; display: block; border: 2px solid var(--lab-borde); border-radius: 10px; }
.cam-escena { width: 100%; min-width: 620px; height: auto; display: block; }
.cam-montaje { cursor: pointer; }
.cam-montaje:focus { outline: none; }
.cam-montaje:focus circle:nth-of-type(2) { stroke: #E0551F; stroke-width: 4; }
.cam-puerto { cursor: pointer; }
.cam-puerto:hover rect:nth-of-type(2), .cam-puerto:focus rect:nth-of-type(2) { stroke: #FFD23F; stroke-width: 3; }
.cam-puerto:focus { outline: none; }
.cam-zonas { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 6px 14px; }
.cam-zonas li { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.cam-num { display: inline-grid; place-items: center; min-width: 26px; height: 26px; border-radius: 50%; background: #1F6FB2; color: #fff; font-size: .9rem; }
.cam-num.puesta { background: #F2B632; color: #1B2A12; }
.cam-montajes { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 8px; }
.cam-montaje-btn { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 2px 10px; min-height: 48px; padding: 6px 10px; text-align: left; border: 2px solid var(--lab-borde); border-radius: 10px; background: var(--lab-caja); color: var(--tinta); font: inherit; cursor: pointer; }
.cam-montaje-btn small { grid-column: 2; color: var(--lab-info); font-weight: 700; }
.cam-montaje-btn.activo { border-color: var(--tinta); box-shadow: 0 0 0 2px var(--tinta); }
.cam-panel { padding: 12px 14px; border: 2px solid var(--lab-borde); border-radius: 12px; background: var(--lab-piso); display: grid; gap: 10px; }
.cam-panel > * { margin: 0; }
.cam-controles { display: flex; flex-wrap: wrap; gap: 22px; align-items: flex-start; }
.cam-brujula { display: grid; grid-template-columns: repeat(3, 52px); grid-auto-rows: 52px; gap: 6px; }
.cam-dir { min-width: 48px; min-height: 48px; font-size: 1.5rem; font-weight: 800; border: 2px solid var(--lab-borde); border-radius: 10px; background: var(--lab-caja); color: var(--tinta); cursor: pointer; }
.cam-dir.activo { background: #F2B632; border-color: var(--tinta); color: #1B2A12; }
.cam-centro { display: grid; place-items: center; font-size: 1.6rem; color: var(--tinta); }
.cam-alturas { display: grid; gap: 6px; }
.cam-alt { display: grid; justify-items: start; min-height: 48px; padding: 4px 14px; border: 2px solid var(--lab-borde); border-radius: 10px; background: var(--lab-caja); color: var(--tinta); font: inherit; cursor: pointer; text-align: left; }
.cam-alt small { font-weight: 500; }
.cam-alt.activo { background: #F2B632; border-color: var(--tinta); color: #1B2A12; }
.cam-msg { color: var(--lab-mal); font-weight: 700; }
.cam-protecciones { display: grid; gap: 8px; }
.cam-protecciones .btn { text-align: left; height: auto; min-height: 44px; white-space: normal; }
.cam-equipos { margin: 4px 0 0; padding-left: 18px; }
.cam-vivo { display: grid; gap: 6px; max-width: 460px; }
.cam-imagen { width: 100%; height: auto; border-radius: 10px; border: 3px solid #12171B; display: block; }
.cam-zona { display: inline-grid; place-items: center; min-width: 26px; height: 26px; border-radius: 6px; background: #1F6FB2; color: #fff; font-size: .9rem; }
