:root{--ivory:#fbf8f3;--paper:#fff;--navy:#1f3a5f;--navy-hover:#294a73;--gold:#c8a96a;--gold-soft:#f3ead8;--gold-ink:#9a7b3c;--ink:#1d2330;--muted:#8b7d6b;--soft:#5b5446;--line:#ece4d6;--line-strong:#ddd2bf;--bg:var(--ivory);--panel:var(--paper);--sunken:#f7f3ec;--text:var(--ink);--dim:#9a8d78;--accent:var(--navy);--ok:#16a34a;--ok-ink:#15803d;--warn:#e0a21a;--warn-ink:#a16207;--err:#dc2626;--err-strong:#c0392b;--radius:14px;--shadow:0 6px 18px #503c1412;--sans:"Noto Sans KR", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--bg);color:var(--text);font:16px/1.6 var(--sans);margin:0}h1,h2,h3,p{margin:0}button{background:var(--accent);color:#fff;min-height:48px;font:inherit;cursor:pointer;border:0;border-radius:10px;padding:0 16px;font-size:16px;font-weight:600}button:disabled{opacity:.45;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.secondary{color:var(--text);background:#f1ebe0}button.secondary:not(:disabled):hover{background:#e8dfcf}button[data-on=true]{color:#1a1200;background:#f5b82e}button.link{min-height:48px;color:var(--soft);text-underline-offset:3px;background:0 0;padding:0 8px;font-size:14px;font-weight:500;text-decoration:underline}button.link:not(:disabled):hover{color:var(--text)}.icon-button{width:48px;min-width:48px;color:var(--text);background:#f1ebe0;padding:0;font-size:20px;line-height:1}.icon-button:not(:disabled):hover{background:#e8dfcf}select,input[type=password],input[type=date],input[type=text]{border:1px solid var(--line-strong);background:var(--paper);min-height:48px;color:var(--text);font:inherit;border-radius:10px;max-width:100%;padding:0 12px;font-size:16px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.grow{flex:240px;min-width:0}.hint{color:var(--soft);font-size:14px;line-height:1.5}.hint[data-kind=error]{color:var(--err)}.dim{color:var(--dim);font-variant-numeric:tabular-nums;font-size:13px}.en{color:var(--dim);font-size:13px;font-weight:400;display:block}.status{align-items:center;gap:8px;min-width:0;font-weight:600;display:inline-flex}.status .dot{background:var(--dim);border-radius:50%;flex:none;width:12px;height:12px}.status[data-tone=off]{color:var(--muted)}.status[data-tone=ready] .dot{box-shadow:inset 0 0 0 2px var(--ok);background:0 0}.status[data-tone=live] .dot,.status[data-state=live] .dot{background:var(--ok);box-shadow:0 0 0 4px #dcfce7}.status[data-tone=live],.status[data-state=live]{color:var(--ok-ink)}.status[data-tone=warn] .dot,.status[data-state=connecting] .dot,.status[data-state=reconnecting] .dot{background:var(--warn)}.status[data-tone=warn],.status[data-state=connecting],.status[data-state=reconnecting]{color:var(--warn-ink)}.status[data-tone=err] .dot{background:var(--err)}.status[data-tone=err]{color:var(--err)}.log{max-height:240px;margin:0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.7;list-style:none;overflow-y:auto}.log li{border-bottom:1px solid var(--line);word-break:break-all;padding:4px 0}.log li:last-child{border-bottom:0}.log li[data-kind=error]{color:var(--err)}.log li[data-kind=ok]{color:var(--ok-ink)}.topbar{z-index:10;border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:16px;padding:8px max(16px,50% - 440px);display:flex;position:sticky;top:0;box-shadow:0 2px 10px #503c140d}.brandmark{align-items:center;gap:10px;display:inline-flex}.logo{color:var(--navy);letter-spacing:.01em;white-space:nowrap;font-size:18px;font-weight:700}.name-script{letter-spacing:0;word-spacing:.14em;color:#b08d4a;vertical-align:-.08em;margin-right:.12em;font-family:Great Vibes,Snell Roundhand,Apple Chancery,cursive;font-size:1.55em;font-style:normal;font-weight:400;line-height:1}.topbar .status{font-size:17px}.spacer{flex:1}#settings-toggle{font-size:24px}.viewers{color:var(--soft);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:15px}.op-main{flex-direction:column;gap:16px;max-width:880px;margin:0 auto;padding:16px;display:flex}.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);flex-direction:column;gap:16px;padding:24px;display:flex}.card h2{color:var(--navy);font-size:18px;font-weight:700}.card h3{color:var(--muted);font-size:14px;font-weight:600}.notice{border-radius:var(--radius);color:#7a5a14;background:#fdf6e3;border:1px solid #ecd9a8;align-items:center;gap:8px;padding:0 8px 0 16px;font-size:15px;display:flex}.notice span{flex:1;padding:12px 0}.device-summary{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);min-height:56px;box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:8px 16px;padding:0 8px 0 24px;display:flex}.device-names{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--soft);flex:280px;font-size:15px;overflow:hidden}.mini-level{align-items:center;gap:8px;display:inline-flex}.mini-meter{background:var(--sunken);border:1px solid var(--line);border-radius:4px;width:80px;height:8px;overflow:hidden}.mini-bar{background:var(--ok);width:0%;height:100%;transition:width 80ms linear;display:block}.mini-bar[data-zone=silent]{background:var(--dim)}.mini-bar[data-zone=clip]{background:var(--err)}.mini-word{white-space:nowrap;font-size:13px;font-weight:600}.mini-word[data-zone=ok]{color:var(--ok-ink)}.mini-word[data-zone=silent]{color:var(--warn-ink)}.mini-word[data-zone=clip]{color:var(--err)}dialog.setup{border:1px solid var(--line);background:var(--panel);width:min(640px,100% - 32px);max-height:calc(100dvh - 48px);color:var(--text);border-radius:20px;padding:0;box-shadow:0 18px 48px #1d23302e}dialog.setup::backdrop{background:#1d233073}.setup-body{flex-direction:column;gap:24px;padding:24px 24px 0;display:flex}.setup-head{flex-direction:column;gap:4px;display:flex}.setup-head h2{color:var(--navy);font-size:20px;font-weight:700}.setup-notice{color:#7a5a14;background:#fdf6e3;border:1px solid #ecd9a8;border-radius:10px;padding:12px 16px;font-size:15px;font-weight:600}.setup-section{border-top:1px solid var(--line);flex-direction:column;gap:12px;padding-top:20px;display:flex}.setup-section h3{color:var(--navy);font-size:16px;font-weight:700}.setup-section input{flex:240px}.qr-row{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.qr-row img{border:1.5px solid var(--gold);background:#fff;border-radius:12px;width:144px;height:144px;padding:8px}.qr-meta{flex-direction:column;flex:240px;gap:8px;display:flex}.setup-foot{border-top:1px solid var(--line);background:var(--panel);margin:0 -24px;padding:16px 24px 24px;position:sticky;bottom:0}.done-button{border-radius:var(--radius);width:100%;height:56px;font-size:18px}.done-button:not(:disabled):hover{background:var(--navy-hover)}.url-line{align-items:center;gap:8px;min-width:0;display:flex}.qr-url{color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;overflow:hidden}.copy-url{border:1px solid var(--line);color:var(--text);cursor:pointer;background:#fff;border-radius:8px;flex:none;padding:4px 10px;font-size:12px;font-weight:600}.meter{border:1px solid var(--line);background:var(--sunken);border-radius:12px;height:24px;overflow:hidden}.meter-bar{background:var(--ok);width:0%;height:100%;transition:width 80ms linear}.meter-bar[data-zone=clip]{background:var(--err)}.meter-bar[data-zone=silent]{background:var(--dim)}.meter-line{justify-content:space-between;align-items:baseline;gap:16px;margin-top:-8px;display:flex}#meter-status{font-size:17px;font-weight:600}#meter-status[data-zone=ok]{color:var(--ok-ink)}#meter-status[data-zone=silent]{color:var(--warn-ink)}#meter-status[data-zone=clip]{color:var(--err)}#meter-status[data-zone=off]{color:var(--soft);font-size:15px;font-weight:500}#meter-readout{white-space:nowrap}.card.go{gap:8px}.go-button,.stop-button{border-radius:var(--radius);width:100%;height:64px;font-size:22px;font-weight:700}.go-button{background:var(--navy);box-shadow:0 6px 16px #1f3a5f3d}.go-button:not(:disabled):hover{background:var(--navy-hover)}.go-button:disabled{box-shadow:none}.stop-button{background:var(--err-strong);flex:1}.stop-button:hover{background:#a93226}.live-row{align-items:center;gap:16px;display:flex}.elapsed{text-align:center;min-width:96px;color:var(--navy);font-variant-numeric:tabular-nums;font-size:24px;font-weight:700}.go-foot{justify-content:space-between;align-items:center;gap:16px;display:flex}.captions{grid-template-columns:1fr 1.25fr;gap:16px;display:grid}@media not (min-width:720px){.captions{grid-template-columns:1fr}}.caption-col{flex-direction:column;gap:8px;min-width:0;display:flex}.caption-list{border:1px solid var(--line);background:var(--sunken);border-radius:12px;height:300px;padding:16px;overflow-y:auto}.caption-list.output{border-left:4px solid var(--gold)}.caption-list:empty:before{content:attr(data-empty);color:var(--dim);font-size:14px}.caption-line{opacity:.7;margin:0 0 8px;line-height:1.55}.caption-line[data-final=true]{opacity:1}.caption-line[data-kind=input]{color:var(--soft);font-size:15px}.caption-line[data-kind=output]{color:var(--navy);font-size:19px}.details{gap:16px;padding:0 24px}.details[open]{padding-bottom:24px}.details summary{min-height:56px;color:var(--soft);cursor:pointer;align-items:center;font-weight:600;list-style:none;display:flex}.details summary::-webkit-details-marker{display:none}.details summary:after{content:"▸";color:var(--gold);margin-left:8px}.details[open] summary:after{content:"▾"}.stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;display:grid}.stats>div{border:1px solid var(--line);background:var(--sunken);border-radius:10px;min-width:0;padding:8px 12px}.stats .k{color:var(--muted);font-size:12px;display:block}.stats .v{font-variant-numeric:tabular-nums;word-break:break-all;font-size:14px;display:block}.stats .v[data-warn=true]{color:var(--warn-ink)}.login-main{flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:calc(100dvh - 64px);padding:32px 16px 64px;display:flex}.login-card{width:min(400px,100%);padding:32px 24px 24px}.login-head{flex-direction:column;gap:8px;display:flex}.login-title{color:var(--navy);font-size:24px;font-weight:700}.login-card input[type=password]{width:100%}.login-error{color:var(--err);margin-top:-8px;font-size:15px;font-weight:600}.check{min-height:32px;color:var(--soft);cursor:pointer;align-items:center;gap:8px;font-size:15px;display:inline-flex}.check input{width:20px;height:20px;accent-color:var(--navy);margin:0}.login-button{border-radius:var(--radius);width:100%;height:56px;font-size:18px}.login-button:not(:disabled):hover{background:var(--navy-hover)}.login-busy{align-items:center}.login-busy-text{color:var(--soft);font-size:17px}.back-link{color:var(--muted);font-size:14px;text-decoration:none}.back-link:hover{color:var(--text);text-underline-offset:3px;text-decoration:underline}.logout-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-top:8px;display:flex}.logout-confirm{color:var(--err-strong);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;font-size:14px;font-weight:600;display:inline-flex}.danger-button{background:var(--err-strong);min-height:40px;font-size:14px}.notice #notice-action{min-height:40px;font-size:14px}body.viewer{--v-bg:var(--ivory);--v-card:var(--paper);--v-ink:var(--ink);--v-title:var(--navy);--v-muted:var(--muted);--v-now:var(--navy);--v-past:#b3a896;--v-ko:#a39680;--v-dock:var(--paper);--v-dock-ink:var(--soft);--v-on:var(--navy);--v-on-ink:#fff;--v-dot-ring:#dcfce7;--v-shadow:0 6px 18px #503c1412;--v-fresh:#c8a96a38;background:var(--v-bg);color:var(--v-ink);--cap-scale:1;--cap-now:22px;--cap-past:17px;--cap-ko:12.5px;height:100dvh;padding-bottom:env(safe-area-inset-bottom);flex-direction:column;display:flex;overflow:hidden}body.viewer[data-text-size=large]{--cap-scale:1.25}body.viewer[data-text-size=xlarge]{--cap-scale:1.5}@media (prefers-color-scheme:dark){body.viewer{--v-bg:#121418;--v-card:#1b1e24;--v-ink:#e9e3d6;--v-title:#f5efe3;--v-muted:#8f8779;--v-now:#f5efe3;--v-past:#6f6a60;--v-ko:#827a6d;--v-dock:#1b1e24;--v-dock-ink:#bdb5a6;--v-on:var(--gold);--v-on-ink:#121418;--v-dot-ring:#14361f;--v-shadow:none;--v-fresh:#c8a96a29;--accent:var(--gold);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}.banner{padding:12px max(16px,50% - 480px);padding-top:max(12px, env(safe-area-inset-top));border-bottom:1px solid var(--err);color:#8a1f1a;background:#fdecec;font-size:15px;line-height:1.5}@media (prefers-color-scheme:dark){body.viewer .banner{color:#ffd9d6;background:#f0625a29}}.live{width:100%;max-width:560px;min-height:0;padding-top:env(safe-area-inset-top);flex-direction:column;flex:1;margin:0 auto;display:flex}.live-bar{align-items:center;gap:8px;padding:14px 18px 12px;display:flex}body.viewer .live-bar .status{color:var(--v-title);gap:8px}.live-bar .status .dot{background:var(--v-past);width:9px;height:9px}body.viewer .live-bar .status[data-state=live] .dot{background:var(--ok);box-shadow:0 0 0 4px var(--v-dot-ring)}body.viewer .live-bar .status[data-state=connecting] .dot,body.viewer .live-bar .status[data-state=reconnecting] .dot{background:var(--warn)}.status-words{flex-wrap:wrap;align-items:baseline;column-gap:6px;line-height:1.3;display:flex}.status-words b{font-size:14px;font-weight:700}.live-bar .live-title{color:var(--v-muted);text-align:right;margin-left:auto;font-size:12px;font-weight:500;line-height:1.25}.live-bar .name-script{white-space:nowrap;margin-right:0;display:block}.sheet{background:var(--v-card);min-height:0;box-shadow:var(--v-shadow);border-radius:22px;flex-direction:column;flex:1;margin:0 12px;display:flex;position:relative;overflow:hidden}.caption-log{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex-direction:column;flex:auto;min-height:0;padding:18px;display:flex;overflow-y:auto}.caption-log:not(:empty):before{content:"";flex:auto}.caption-log:empty{justify-content:center}.caption-log:empty:before{content:attr(data-empty);white-space:pre-line;text-align:center;color:var(--v-muted);font-size:15px;line-height:1.6}.caption{word-break:break-word;border-radius:6px;margin:0 0 14px}.caption:last-child{margin-bottom:0}.caption[data-kind=output]{font-size:calc(var(--cap-past) * var(--cap-scale));color:var(--v-past);border-left:4px solid #0000;padding-left:12px;line-height:1.5}.caption[data-kind=output].now{border-left-color:var(--gold);font-size:calc(var(--cap-now) * var(--cap-scale));color:var(--v-now);font-weight:700;line-height:1.38}.caption[data-kind=input]{font-size:calc(var(--cap-ko) * var(--cap-scale));color:var(--v-ko);margin-bottom:8px;padding-left:16px;line-height:1.45}.caption-log[data-origin=off] .caption[data-kind=input]{display:none}@keyframes caption-fresh{0%{background:var(--v-fresh)}to{background:0 0}}.caption.fresh{animation:1.4s ease-out caption-fresh}@media (prefers-reduced-motion:reduce){.caption.fresh{animation:none}}.jump{background:var(--v-on);min-height:40px;color:var(--v-on-ink);white-space:nowrap;border-radius:999px;padding:0 16px;font-size:14px;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0000002e}.play-info{color:var(--warn-ink);text-align:center;font-variant-numeric:tabular-nums;margin:8px 16px 0;font-size:12px;line-height:1.4}@media (prefers-color-scheme:dark){body.viewer .play-info{color:var(--warn)}}.sound-hint{color:var(--v-muted);text-align:center;margin-top:8px;font-size:12px}.dock{justify-content:space-around;padding:8px 14px 16px;display:flex}.dock-button{background:var(--v-dock);width:min(96px,28vw);min-height:52px;color:var(--v-dock-ink);border-radius:14px;flex-direction:column;align-items:center;gap:3px;padding:9px 0 8px;font-size:11.5px;font-weight:500;line-height:1.2;display:flex;box-shadow:0 2px 6px #503c1414}.dock-button i{font-size:17px;font-style:normal;line-height:1.2}.dock .dock-button[data-on=true]{background:var(--v-on);color:var(--v-on-ink)}@media (prefers-color-scheme:dark){.dock-button{box-shadow:none}}@media (min-width:900px){body.viewer{--cap-now:34px;--cap-past:24px;--cap-ko:17px}.live{max-width:960px;padding:24px 24px 0}.live-bar{padding:4px 8px 16px}.live-bar .status .dot{width:12px;height:12px}.status-words{column-gap:10px}.status-words b{font-size:18px}.live-bar .live-title{font-size:15px}.live-bar .name-script{margin-right:.12em;display:inline}.sheet{border-radius:28px;margin:0}.caption-log{padding:36px 48px}.caption{margin-bottom:20px}.caption[data-kind=output]{border-left-width:5px;padding-left:20px}.caption[data-kind=input]{margin-bottom:10px;padding-left:25px}.caption-log:empty:before{font-size:20px}.play-info{font-size:13px}.dock{justify-content:center;gap:16px;padding:20px 0 28px}.dock-button{width:116px;min-height:64px;padding:12px 0 10px;font-size:13px}.dock-button i{font-size:21px}}a.brandmark{color:inherit;cursor:pointer;border-radius:10px;text-decoration:none;transition:opacity .12s}a.brandmark:hover{opacity:.7}@media (prefers-reduced-motion:reduce){a.brandmark{transition:none}}
