/* 데이터 브리핑 영상 스튜디오 — 공통 스타일
   Layout: 편집실 콘솔 — 상단 단계 내비게이션, 단계별 트랙 패널 */
:root{
  --bg:#EEF2F3; --panel:#FFFFFF; --ink:#13232C; --muted:#5B6E77; --line:#D3DDE1;
  --accent:#0E7C86; --accent-ink:#FFFFFF; --amber:#B7791F; --rec:#C8382C; --soft:#E3ECEE;
  --f-display:"Do Hyeon","IBM Plex Sans KR",system-ui,sans-serif;
  --f-body:"IBM Plex Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0D171C; --panel:#14222A; --ink:#E6EEF0; --muted:#94A8B0; --line:#26383F;
  --accent:#3FB8C2; --accent-ink:#06191C; --amber:#E2A84B; --rec:#F06A5E; --soft:#1A2C34; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0D171C; --panel:#14222A; --ink:#E6EEF0; --muted:#94A8B0; --line:#26383F;
  --accent:#3FB8C2; --accent-ink:#06191C; --amber:#E2A84B; --rec:#F06A5E; --soft:#1A2C34; color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.6}
[hidden]{display:none!important}
img{max-width:100%}
.wrap{max-width:1000px;margin:0 auto;padding-inline:16px;padding-block:20px 64px;display:flex;flex-direction:column;gap:20px}

/* 상단 내비게이션 */
.topbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--panel);border-bottom:1px solid var(--line)}
.topbar .in{max-width:1000px;margin:0 auto;padding-inline:16px;padding-block:10px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.brand{font-family:var(--f-display);font-size:20px;color:var(--ink);text-decoration:none;white-space:nowrap}
.steps{display:flex;gap:4px;flex-wrap:wrap;flex:1;min-width:0}
.steps a{font-family:var(--f-mono);font-size:12px;padding:5px 10px;border:1px solid var(--line);border-radius:4px;color:var(--muted);text-decoration:none;white-space:nowrap;background:var(--bg)}
.steps a.done{border-color:var(--accent);color:var(--accent)}
.steps a.cur{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.pagehead h1{font-family:var(--f-display);font-weight:400;font-size:clamp(28px,5vw,40px);line-height:1.15;margin:0;text-wrap:balance}
.pagehead .no{font-family:var(--f-mono);font-size:12px;color:var(--accent);letter-spacing:.08em}
.pagehead p{margin:6px 0 0;color:var(--muted);max-width:64ch}

section.track{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px;display:flex;flex-direction:column;gap:14px;min-width:0}
.th{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.th h2{font-family:var(--f-display);font-weight:400;font-size:22px;margin:0}
.th .hint{color:var(--muted);font-size:13px;flex:1 1 240px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;width:100%}
label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);min-width:0}
label.inline{flex-direction:row;align-items:center;gap:8px;color:var(--ink)}
input[type=text],input[type=number],textarea,select{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 10px;width:100%}
textarea{resize:vertical;min-height:70px}
textarea.code{font-family:var(--f-mono);font-size:13px;min-height:150px}
input:focus-visible,textarea:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
button,.btn{font:inherit;font-size:14px;border-radius:6px;padding:8px 14px;cursor:pointer;border:1px solid var(--line);background:var(--soft);color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;gap:6px}
button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
button.rec{background:var(--rec);border-color:var(--rec);color:#fff;font-weight:600}
button:disabled{opacity:.5;cursor:not-allowed}
button.sm{padding:4px 9px;font-size:12px}
button.del{width:100%;justify-content:center;background:transparent;border:1px solid var(--rec);color:var(--rec);font-size:13px;padding:6px 10px}
button.del:hover{background:var(--rec);color:#fff}
button.restore{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600;font-size:13px;padding:6px 12px}
.tag{font-family:var(--f-mono);font-size:11px;padding:2px 7px;border-radius:3px;background:var(--soft);color:var(--muted)}
.tag.ex{color:var(--amber);border:1px solid var(--amber);background:transparent}
.status{font-size:13px;color:var(--muted);min-height:1.4em}
.status.err{color:var(--rec)}
.note{font-size:13px;color:var(--muted);border-left:3px solid var(--line);padding-left:10px;max-width:76ch;margin:0}
a{color:var(--accent)}
pre{margin:0;overflow-x:auto;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:12px;font-family:var(--f-mono);font-size:12.5px;line-height:1.55;max-height:420px}

.drop{border:2px dashed var(--line);border-radius:8px;padding:14px;display:flex;flex-direction:column;gap:10px;align-items:flex-start;background:var(--bg);min-width:0}
.drop>span{font-size:13px;color:var(--muted)}
.drop.over{border-color:var(--accent);background:var(--soft)}
.pick{position:relative;display:inline-flex;flex-direction:row;align-items:center;padding:9px 16px;border-radius:6px;background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:14px;cursor:pointer;overflow:hidden}
.pick input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.pick:focus-within{outline:2px solid var(--accent);outline-offset:2px}

.tbl{width:100%;max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:6px;background:var(--panel)}
.tbl table{border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl th,.tbl td{padding:5px 10px;border-bottom:1px solid var(--line);text-align:left}
.tbl th{position:sticky;top:0;background:var(--soft);font-weight:600}
.tbl .rn{color:var(--muted);font-family:var(--f-mono)}
.tbl .sel-n{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.tbl .sel-v{background:color-mix(in srgb,var(--amber) 18%,transparent)}

.scenes{display:flex;flex-direction:column;gap:12px}
.scene{display:grid;grid-template-columns:220px 1fr;gap:14px;border:1px solid var(--line);border-radius:6px;padding:12px;background:var(--bg)}
.scene canvas{width:100%;aspect-ratio:16/9;border-radius:4px;display:block;max-width:100%}
.scene .meta{display:flex;flex-direction:column;gap:8px;min-width:0}
.thumbcol{display:flex;flex-direction:column;gap:6px;min-width:0}
.tc{font-family:var(--f-mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.scene.off{border-style:dashed}
.scene.off canvas,.scene.off .meta{opacity:.38;filter:grayscale(1)}
.scene.off .tc{color:var(--rec)}
@media (max-width:640px){.scene{grid-template-columns:1fr}}

.stage{display:flex;flex-direction:column;gap:10px}
.stage canvas,.stage video{width:100%;max-width:100%;aspect-ratio:16/9;background:#0E1F2B;border-radius:6px;display:block}
.bar{height:6px;background:var(--soft);border-radius:3px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:var(--accent)}
.tc-big{font-family:var(--f-mono);font-size:14px;font-variant-numeric:tabular-nums}
.minis{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.minis figure{margin:0;display:flex;flex-direction:column;gap:4px}
.minis canvas{width:100%;aspect-ratio:16/9;border-radius:4px;display:block}
.minis figcaption{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.bglist{display:flex;flex-wrap:wrap;gap:8px}
.bglist figure{margin:0;position:relative;width:132px}
.bglist img{width:132px;height:74px;object-fit:cover;border-radius:4px;display:block;border:1px solid var(--line)}
.bglist figcaption{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bglist button{position:absolute;top:4px;right:4px;padding:1px 7px;font-size:12px;background:rgba(0,0,0,.6);color:#fff;border:0}

.pager{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.flowflag{font-family:var(--f-mono);font-size:12px;color:var(--muted)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* 모든 스튜디오의 슬라이드 확대 미리보기 */
.scene .thumbcol canvas,#minis figure canvas{cursor:zoom-in}
.scene .thumbcol canvas:focus-visible,#minis figure canvas:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.slide-preview{width:min(1100px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:18px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);overflow:auto}
.slide-preview::backdrop{background:rgba(0,0,0,.7)}
.slide-preview .preview-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.slide-preview .preview-top h2{margin:0;font-size:20px}
.slide-preview canvas{display:block;width:100%;height:auto;aspect-ratio:16/9;background:repeating-conic-gradient(#ddd 0% 25%,#fff 0% 50%) 0 0/20px 20px;border-radius:6px}
.slide-preview .preview-narration{white-space:pre-wrap;margin:12px 0;line-height:1.6}
.slide-preview .row{margin-top:12px}
@media(max-width:640px){.slide-preview{padding:12px}.slide-preview .preview-top h2{font-size:16px}.slide-preview .preview-top button{white-space:nowrap;min-width:68px}.slide-preview .row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.slide-preview .row button,.slide-preview .row a{min-width:0;font-size:13px;justify-content:center}.slide-preview #playSlidePreview{grid-column:1/-1}}

@media(max-width:640px){
  .topbar .steps{flex-basis:100%}
  .topbar .brand{white-space:normal;max-width:100%}
}

/* File-specific chart explanations and selection before script generation. */
.graph-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.graph-choice{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:9px;padding:14px;line-height:1.6;cursor:pointer;min-width:0}
.graph-choice-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.graph-choice-title input{width:18px;height:18px;flex:none}
.graph-choice small{color:var(--muted);overflow-wrap:anywhere}
.graph-choice.unavailable{background:var(--bg);color:var(--muted);cursor:default}
.graph-badge{font-size:11px;border:1px solid var(--line);border-radius:4px;padding:1px 5px;white-space:nowrap}
@media(max-width:640px){.graph-choices{grid-template-columns:1fr}.graph-choice{padding:12px}#makeSelectedGraphs{width:100%;white-space:normal}}
