:root{color-scheme:dark;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif;--bg:#0a0e17;--panel:#111826;--muted:#93a2b8;--line:#283348;--cue:#62728c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#f5f7fb;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#1a2435;color:#fff;border-radius:10px;padding:11px 16px}button:hover{background:#28374d}button:focus-visible,a:focus-visible{outline:3px solid #9aaaff;outline-offset:3px}button:disabled{opacity:.5;cursor:wait}header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:23px 4vw;gap:16px}.brand{font-weight:850;letter-spacing:2px;color:#fff;text-decoration:none;font-size:19px}.brand span{display:inline-block;font-size:10px;color:#a5adff;letter-spacing:2px;margin-left:13px}.head-actions{display:flex;align-items:center;gap:18px}#connection{font-size:13px;color:#f8c86a}#connection.good{color:#7ae6b0}main{max-width:1520px;margin:auto;padding:42px 4vw 20px}.eyebrow{color:#a7afff;font-size:11px;letter-spacing:2.4px;font-weight:700}h1{font-size:clamp(36px,4vw,58px);line-height:1.17;letter-spacing:-2px;margin:16px 0}.sub,.hint{color:var(--muted);line-height:1.7}.sub{font-size:15px}.workspace{display:grid;grid-template-columns:280px 1fr;gap:24px;margin-top:34px}.camera-panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:22px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.section-heading h2,.section-heading h3{font-size:16px;margin:0}.section-heading span{font-size:10px;color:var(--muted);letter-spacing:1px}.camera-list{display:grid;gap:9px;margin:23px 0}.camera-button{display:flex;align-items:center;gap:10px;text-align:left;padding:15px;background:#141d2b}.camera-button.selected{border-color:#a7afff;background:#242c48;box-shadow:inset 3px 0 #a7afff}.dot{height:9px;width:9px;border-radius:50%;background:#64748b;flex-shrink:0}.dot.program{background:#ff444f}.dot.preview{background:#28dc89}.mini{margin-left:auto;font-size:9px;color:#b4bfd0}.hint{font-size:12px}.camera-panel>button{width:100%;margin-top:10px}.tally{--cue:#62728c;border:3px solid var(--cue);border-radius:20px;min-height:410px;background:radial-gradient(ellipse at 50% 40%,#1c273a, #0e1420 72%);display:flex;flex-direction:column;overflow:hidden}.tally-top,.tally-bottom{display:flex;justify-content:space-between;gap:16px;padding:20px 24px;color:#98a9c1;font-size:11px;letter-spacing:1px}.tally-top span:first-child{border:1px solid #3d4a60;border-radius:20px;padding:5px 10px}.signal{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:20px}.lamp{width:12px;height:12px;border-radius:50%;background:var(--cue);box-shadow:0 0 30px var(--cue);margin-bottom:22px}#cue{font-size:clamp(32px,4.5vw,66px);font-weight:850;color:var(--cue);letter-spacing:3px}#cameraName{font-size:24px;margin:13px 0}#cueDetail{font-size:13px;color:#bcc7d8;max-width:85%;overflow-wrap:anywhere}.tally-bottom{border-top:1px solid #ffffff12;padding:18px 24px}.tally-bottom span{min-width:0;overflow-wrap:anywhere}.tally-bottom b{display:block;color:white;font-size:13px;margin-top:7px;letter-spacing:0}body[data-state=program] .tally{--cue:#ff4352;background:radial-gradient(ellipse at center,#491723,#160e16)}body[data-state=preview] .tally{--cue:#36e69a;background:radial-gradient(ellipse at center,#123c32,#0b1717)}body[data-state=unknown] .tally,body[data-state=disconnected] .tally{--cue:#f4bb60}footer{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px;margin-top:22px;line-height:1.8}#error{color:#f8c86a;font-size:12px;margin-top:16px;overflow-wrap:anywhere}dialog{background:#111826;color:#f5f7fb;border:1px solid #38455f;border-radius:20px;width:min(780px,95vw);max-height:90vh;padding:28px}dialog::backdrop{background:#03070ccc;backdrop-filter:blur(5px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center}.dialog-heading h2{font-size:23px}.mode-options{display:flex;gap:12px;margin:24px 0 12px;flex-wrap:wrap}.mode-options label{padding:13px;background:#202b40;border-radius:8px;font-size:13px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin:23px 0}label{font-size:12px;color:#c5cfdf}input:not([type=radio]),select{display:block;width:100%;border:1px solid #41516d;background:#0b111e;color:white;border-radius:7px;padding:12px;margin-top:8px;min-width:0}input[type=radio]{accent-color:#929fff}.editor-row{display:grid;grid-template-columns:1fr 90px 1.2fr 42px;gap:8px;align-items:center;margin:10px 0}.editor-row button{padding:10px}.key-label{display:block;margin:20px 0 0}.primary{background:#6e75e8;width:100%;margin-top:10px;font-weight:bold}.primary:hover{background:#838afa}#saveStatus{font-size:13px;color:#f8c86a}details{font-size:12px;color:#aabbcf;margin-top:20px}#inputList{white-space:pre-wrap;line-height:1.7;margin-top:10px}.focus-mode header,.focus-mode .hero,.focus-mode .camera-panel,.focus-mode footer{display:none}.focus-mode main{max-width:none;padding:10px}.focus-mode .workspace{display:block;margin:0}.focus-mode .tally{min-height:calc(100dvh - 20px)}.focus-mode #error{position:fixed;bottom:20px;left:20px;max-width:80%}.focus-exit{position:fixed;right:20px;top:20px;z-index:2}@media(max-width:650px){header{padding:18px;align-items:flex-start}.brand{font-size:15px}.brand span{display:block;margin:6px 0 0;font-size:8px}.head-actions{gap:7px;flex-direction:column;align-items:flex-end}.head-actions button{font-size:11px;padding:8px}#connection{font-size:10px}main{padding:24px 18px}.workspace{grid-template-columns:1fr;gap:16px;margin-top:23px}.hero h1{font-size:36px}.sub{font-size:12px}.camera-panel{padding:16px}.camera-list{grid-template-columns:repeat(3,1fr);gap:7px;margin:14px 0}.camera-button{font-size:11px;padding:11px 7px;gap:6px}.mini{display:none}.camera-panel .hint{font-size:10px}.tally{min-height:350px}.tally-top,.tally-bottom{padding:14px;font-size:9px}footer{flex-direction:column}.form-grid{grid-template-columns:1fr}.editor-row{grid-template-columns:1fr 78px 1fr 32px;gap:5px}.editor-row input,.editor-row select{padding:9px 5px;font-size:11px}dialog{padding:18px}.dialog-heading h2{font-size:19px}}@media(orientation:landscape) and (max-height:520px){.hero{display:none}.workspace{margin-top:15px;grid-template-columns:180px 1fr}.camera-panel{padding:12px}.camera-list{grid-template-columns:1fr;gap:5px;margin:12px 0}.camera-button{padding:8px}.tally{min-height:300px}header{padding:12px 20px}main{padding-top:8px}.camera-panel .hint{display:none}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s}} 

/* TALLY_PGM_VIDEO_V2 */
.tally{min-height:0}.signal{flex:0;padding:14px 16px;display:grid;grid-template-columns:12px auto 1fr;gap:12px;text-align:left;justify-content:initial;align-items:center}.signal .lamp{margin:0}.signal #cue{font-size:20px;letter-spacing:1px}.signal #cameraName{font-size:17px;margin:0;text-align:right}.signal #cueDetail{display:none}.tally-top{padding:14px 18px}.video-wrap{position:relative;aspect-ratio:16/9;width:100%;background:#030509;overflow:hidden;align-self:center}.video-wrap video{width:100%;height:100%;object-fit:contain;display:block}.video-wrap #videoMessage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:28px;color:#bbc7d9;font-size:13px;background:#070c15}.video-wrap #videoMessage[hidden]{display:none}.video-tools{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;background:#070b14bb;padding:7px 12px;gap:12px;font-size:10px;color:#d4dcea}.video-tools button{font-size:10px;padding:5px 9px}.tally-bottom{padding:12px 18px}.focus-mode main{padding:0}.focus-mode .tally{height:100dvh;min-height:0;border-radius:0;display:grid;grid-template-columns:minmax(88px,1fr) minmax(0,calc((100dvh - 8px)*16/9));grid-template-rows:1fr;align-items:center;border-width:4px;background:#101722}.focus-mode .tally-top,.focus-mode .tally-bottom{display:none}.focus-mode .signal{align-self:stretch;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:16px;padding:12px 4px;background:var(--cue);color:#080c13;min-width:0}.focus-mode .signal .lamp{background:#080c13;box-shadow:none}.focus-mode .signal #cue{font-size:clamp(10px,1.5vw,21px);letter-spacing:0;color:#080c13;overflow-wrap:anywhere}.focus-mode .signal #cameraName{font-size:clamp(13px,2vw,28px);text-align:center;overflow-wrap:anywhere}.focus-mode .video-wrap{height:auto;width:100%;max-height:100%;min-width:0}.focus-mode .focus-exit{right:14px;top:10px;padding:7px;font-size:11px;opacity:.85}.focus-mode #error{display:none}@media(orientation:portrait){.focus-mode .tally{grid-template-columns:1fr;grid-template-rows:auto 1fr}.focus-mode .signal{align-self:start;flex-direction:row;min-height:80px;gap:12px}.focus-mode .signal #cue{font-size:17px}.focus-mode .signal #cameraName{font-size:17px}}@media(max-width:650px){.signal #cue{font-size:17px}.signal #cameraName{font-size:14px}.video-wrap #videoMessage{font-size:11px}.tally{min-height:0}.video-tools{padding:5px 8px;font-size:9px}}

.focus-mode .signal #cue{font-size:clamp(10px,1.1vw,17px);white-space:nowrap}.focus-mode .signal #cameraName{font-size:clamp(12px,1.5vw,20px)}

/* TALLY_LED_CAMERA_V3_START */
.focus-mode .tally{
  --cue:#60a5fa;
  background:#0b1424;
}
body[data-state=program].focus-mode .tally{
  --cue:#ff4352;
  background:#210e18;
}
body[data-state=preview].focus-mode .tally{
  --cue:#36e69a;
  background:#0b201b;
}
body[data-state=unknown].focus-mode .tally,
body[data-state=disconnected].focus-mode .tally{
  --cue:#f4bb60;
  background:#211b10;
}
.focus-mode .signal{
  position:relative;
  overflow:hidden;
  background:radial-gradient(
    ellipse at center,rgba(96,165,250,.14),transparent 80%
  );
}
body[data-state=program].focus-mode .signal{
  background:radial-gradient(
    ellipse at center,rgba(255,67,82,.17),transparent 80%
  );
}
body[data-state=preview].focus-mode .signal{
  background:radial-gradient(
    ellipse at center,rgba(54,230,154,.15),transparent 80%
  );
}
.focus-mode .signal .lamp,
.focus-mode .signal #cue,
.focus-mode .signal #cueDetail{
  display:none!important;
}
.focus-mode .signal #cameraName{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%) rotate(-90deg);
  margin:0;
  padding:0;
  white-space:nowrap;
  color:var(--cue);
  font-family:"Courier New",monospace;
  font-size:clamp(24px,7vh,58px);
  font-weight:900;
  line-height:1;
  letter-spacing:.12em;
  text-shadow:
    0 0 3px currentColor,
    0 0 12px currentColor,
    0 0 28px currentColor;
}
@media(orientation:portrait){
  .focus-mode .signal #cameraName{
    transform:translate(-50%,-50%);
    font-size:28px;
  }
}
/* TALLY_LED_CAMERA_V3_END */


/* CAM_LABEL_NUMBER_V4 */
.cam-title{display:inline}
.cam-number{display:inline;margin-left:.3em}
.focus-mode .signal{
  container-type:inline-size;
}
.focus-mode .signal #cameraName{
  transform:translate(-50%,-50%);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
  width:100%;
  letter-spacing:.05em;
}
.focus-mode .cam-title{
  display:block;
  font-size:clamp(12px,22cqw,26px);
  line-height:1;
}
.focus-mode .cam-number{
  display:block;
  margin:0;
  font-size:clamp(28px,65cqw,90px);
  line-height:1;
  letter-spacing:0;
  font-weight:900;
}
@media(orientation:portrait){
  .focus-mode .signal{
    min-height:120px;
  }
  .focus-mode .signal #cameraName{
    gap:6px;
  }
  .focus-mode .cam-title{font-size:18px}
  .focus-mode .cam-number{font-size:48px}
}

/* 전체화면 탤리 테두리 확대 */
.focus-mode .tally{
  border-width:8px;
  grid-template-columns:
    minmax(88px,1fr)
    minmax(0,calc((100dvh - 16px)*16/9));
}
@media(orientation:portrait){
  .focus-mode .tally{
    grid-template-columns:1fr;
  }
}

/* CAM을 아래 두 자리 숫자와 비슷한 폭으로 확대 */
.focus-mode .cam-title{
  font-size:clamp(19px,43cqw,60px);
  letter-spacing:0;
  font-weight:900;
}
@media(orientation:portrait){
  .focus-mode .cam-title{
    font-size:32px;
  }
}
