:root{--bg-primary:#0f1117;--bg-surface:#1a1d27;--bg-surface-2:#20232f;--bg-surface-hover:#242736;--bg-elevated:#1f2230;--bg-inset:#14161f;--border:#2a2e3a;--border-strong:#3a3f4e;--text-primary:#e4e6eb;--text-secondary:#8b8fa3;--text-muted:#b0b4c0;--text-inverse:#0f1117;--accent:#4fc3f7;--accent-hover:#39b8ed;--accent-dim:#4fc3f724;--accent-strong:#7ad6ff;--green:#66bb6a;--green-dim:#66bb6a24;--red:#ef5350;--red-dim:#ef535024;--orange:#ffa726;--orange-dim:#ffa72624;--yellow:#ffd54f;--radius-xs:4px;--radius:8px;--radius-md:10px;--radius-lg:14px;--radius-pill:999px;--focus-ring:0 0 0 3px #4fc3f773;--focus-offset:2px;--shadow-sm:0 1px 2px #0000004d;--shadow:0 6px 18px #00000047;--shadow-lg:0 18px 40px #0006;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang TC", "Microsoft JhengHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--ease:cubic-bezier(.4, 0, .2, 1);--dur-fast:.12s;--dur:.2s;--dur-slow:.32s;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{touch-action:manipulation;height:100%;overflow-x:hidden}body{background:var(--bg-primary);color:var(--text-primary);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:14px;line-height:1.5}#app{min-height:100%}h1,h2,h3,h4,h5,h6{color:var(--text-primary);font-weight:600}button{font-family:var(--font)}:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-xs);outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.container{max-width:960px;margin:0 auto;padding:24px 16px 48px}.header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex;position:relative}.header h1{color:var(--accent);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:1.35em;font-weight:700;overflow:hidden}.header-right{align-items:center;gap:12px;display:flex}.connection-status{border-radius:var(--radius-pill);background:var(--bg-surface);border:1px solid var(--border);align-items:center;gap:8px;padding:6px 14px;font-size:.85em;font-weight:600;display:flex}.connection-status .dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.connection-status.connected .dot{background:var(--green);box-shadow:0 0 6px var(--green)}.connection-status.connecting .dot,.connection-status.standing_by .dot{background:var(--orange);box-shadow:0 0 6px var(--orange)}.connection-status.disconnected .dot{background:var(--red);box-shadow:0 0 6px var(--red)}.ui-lang-select{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius);font-size:.82em;font-family:var(--font);cursor:pointer;padding:6px 12px}.ui-lang-select:focus{border-color:var(--accent);outline:none}.panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;padding:20px}.panel-header{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px;padding-bottom:8px;font-size:.85em;font-weight:700;display:flex}.step-grid{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;display:grid}.step-grid .panel{margin-bottom:0}.step-grid>:first-child{grid-area:1/1}.step-grid>:nth-child(2){grid-area:1/2/3}.step-grid>:nth-child(3){grid-area:2/1}.step-grid>:nth-child(4){grid-area:3/1}.step-grid>:nth-child(5){grid-area:3/2}.step-compact{padding:12px 16px!important}.step-compact .panel-header{margin-bottom:8px;padding-bottom:6px}.step-compact .sub-row{margin-top:6px}.step-compact .controls-row{margin-bottom:8px}.step-section{transition:border-color var(--dur-slow) var(--ease), box-shadow var(--dur-slow) var(--ease)}.step-badge{background:var(--accent-dim);width:22px;height:22px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-right:6px;font-size:.78em;font-weight:700;line-height:1;display:inline-flex}.panel-header-step{align-items:center;display:flex}.header-help-btn{border:1px solid var(--border);background:var(--bg-surface);width:30px;height:30px;color:var(--text-secondary);font-size:.85em;font-weight:700;font-family:var(--font);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.header-help-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary);border-color:var(--border-strong)}.header-close-btn{border:1px solid var(--border);background:var(--bg-surface);width:30px;height:30px;color:var(--text-secondary);font-size:1.2em;font-weight:700;line-height:1;font-family:var(--font);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);border-radius:50%;justify-content:center;align-items:center;padding-bottom:2px;display:inline-flex}.header-close-btn:hover{background:var(--bg-surface-hover);border-color:var(--border-strong);color:var(--text-primary)}.panel-toggle{cursor:pointer;width:100%;font-family:var(--font);border-radius:var(--radius);transition:background var(--dur-fast) var(--ease);background:0 0;border:none;padding:8px 10px}.panel-toggle:hover{background:var(--bg-hover)}.panel-toggle:hover .panel-toggle-arrow{color:var(--text)}.panel-toggle:focus-visible{box-shadow:var(--focus-ring);outline:none}.panel-toggle-arrow{transition:transform var(--dur-fast) var(--ease);color:var(--text-muted);font-size:.9em}.panel-toggle-arrow.open{transform:rotate(180deg)}.controls-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.confirm-backdrop{z-index:1100;background:#08090ebf;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);width:min(92vw,480px);box-shadow:var(--shadow-lg);animation:confirmIn var(--dur) var(--ease);flex-direction:column;gap:20px;padding:28px 24px;display:flex}.confirm-text{text-align:center;color:var(--text-primary);margin:0;font-size:1.1em;line-height:1.5}.confirm-actions{flex-direction:column;gap:10px;display:flex}.confirm-actions .btn{width:100%;padding:14px;font-size:1.05em}@keyframes confirmIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.btn-cancel{background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border)}.btn-cancel:hover:not(:disabled){background:var(--bg-surface-hover)}.btn{border-radius:var(--radius-md);cursor:pointer;font-size:.9em;font-weight:600;font-family:var(--font);transition:background var(--dur-fast) var(--ease), opacity var(--dur-fast) var(--ease);white-space:nowrap;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;display:inline-flex}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-record{background:var(--red);color:#fff;flex:2}.btn-record:hover:not(:disabled){background:#d32f2f}.btn-record.active{animation:1.8s infinite pulse-record}.btn-record.muted{border:1px solid var(--red);color:var(--red);background:0 0}.btn-record.muted:hover:not(:disabled){background:#ef53501a}@keyframes pulse-record{0%,to{box-shadow:0 0 #ef535080}50%{box-shadow:0 0 0 8px #ef535000}}.btn-record.recording:disabled{opacity:1;cursor:default;animation:1.8s infinite pulse-record}.btn-stop{background:var(--text-muted);color:#fff;flex:1}.btn-stop:hover:not(:disabled){background:#7a7e94}.btn-mute{background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border)}.btn-mute:hover:not(:disabled){background:var(--bg-surface-hover)}.btn-mute.active{background:var(--red);border-color:var(--red);color:#fff}.spinner{border:2px solid var(--border);border-top-color:var(--accent);vertical-align:middle;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.volume-wrap{flex:1;align-items:center;gap:10px;min-width:140px;display:flex}.vol-bar-bg{background:var(--bg-primary);border-radius:var(--radius-pill);flex:1;min-width:60px;height:10px;overflow:hidden}.vol-bar-fill{background:linear-gradient(90deg, var(--green), var(--orange), var(--red));width:0%;height:100%;transition:width 80ms var(--ease)}.vol-text{color:var(--text-secondary);min-width:36px;font-size:.8em}.clip-badge{letter-spacing:.06em;color:var(--text-muted);background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-xs);opacity:.4;transition:opacity var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);pointer-events:none;padding:2px 6px;font-size:.68em;font-weight:800}.clip-badge.active{opacity:1;background:var(--red);color:#fff;border-color:var(--red)}input[type=range]{appearance:none;background:var(--bg-primary);border-radius:var(--radius-pill);cursor:pointer;outline:none;flex:1;min-width:80px;height:6px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;border-radius:50%;width:16px;height:16px}input[type=range]::-moz-range-thumb{background:var(--accent);cursor:pointer;border:none;border-radius:50%;width:16px;height:16px}.sub-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.inline-label{color:var(--text-secondary);white-space:nowrap;font-size:.8em;font-weight:600}.select-box{background:var(--bg-primary);width:100%;color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius);font-size:.9em;font-family:var(--font);cursor:pointer;padding:8px 12px}.select-box:focus{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}.select-box.short,#device-picker{width:auto;max-width:200px}.stats-grid{flex-wrap:nowrap;gap:10px;margin-top:14px;margin-bottom:4px;display:flex}.stat-item{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);flex:1;min-width:0;padding:10px}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:3px;font-size:.72em}.stat-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:1em;font-weight:700}.stat-value.good{color:var(--green)}.stat-value.warn{color:var(--orange)}.stat-value.bad{color:var(--red)}.stat-bar{background:var(--bg-surface);border-radius:var(--radius-pill);width:100%;height:4px;margin-top:4px;overflow:hidden}.stat-bar-fill{border-radius:var(--radius-pill);height:100%;transition:width var(--dur-fast) var(--ease)}.stat-bar-fill.good{background:var(--green)}.stat-bar-fill.warn{background:var(--orange)}.stat-bar-fill.bad{background:var(--red)}.targets,.modes{border:none;margin:0;padding:0}.targets legend,.modes legend{color:var(--text-secondary);margin-bottom:8px;padding:0;font-size:.82em;font-weight:500}.hint{color:var(--text-muted);margin-bottom:8px;font-size:.78em}.target-grid{flex-wrap:wrap;gap:8px;display:flex}.target{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);cursor:pointer;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);align-items:center;gap:8px;padding:8px 12px;font-size:.9em;display:inline-flex}.target input{opacity:0;width:0;height:0;position:absolute}.target .check{border-radius:var(--radius-xs);border:1.5px solid var(--border-strong);flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.target.checked{border-color:var(--accent);background:var(--accent-dim);color:var(--accent-strong)}.target.checked .check{background:var(--accent);border-color:var(--accent)}.target.checked .check:after{content:"";border:solid var(--text-inverse);border-width:0 2px 2px 0;width:4px;height:8px;transform:rotate(45deg)translate(-1px,-1px)}.target:hover:not(.checked){background:var(--bg-surface-hover)}.target.disabled{opacity:.4;cursor:not-allowed}.chip{border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent-dim);color:var(--accent-strong);align-items:center;gap:6px;padding:8px 10px;font-size:.9em;display:inline-flex}.chip-x{color:inherit;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1em;line-height:1}.chip-x:hover{opacity:.7}.more-langs-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;display:flex}.more-langs-toggle{box-sizing:border-box;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text-primary);cursor:pointer;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);justify-content:center;align-items:center;gap:8px;padding:8px 12px;font-size:.9em;display:inline-flex}.more-langs-toggle:hover:not(:disabled){background:var(--bg-surface-hover);color:var(--text-primary)}.more-langs-toggle:disabled{opacity:.4;cursor:not-allowed}.lang-cap{margin:0}.more-langs{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);margin-top:10px;padding:12px}.lang-search{box-sizing:border-box;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--text-primary);margin-bottom:10px;padding:8px 10px;font-size:.9em}.more-langs-list{flex-wrap:wrap;gap:8px;max-height:240px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.modes{border-top:1px solid var(--border);flex-direction:column;gap:8px;margin-top:16px;padding-top:14px;display:flex}.mode{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);cursor:pointer;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.mode input{opacity:0;position:absolute}.mode .radio{border:1.5px solid var(--border-strong);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;margin-top:2px;display:inline-flex}.mode.active{border-color:var(--accent);background:var(--accent-dim)}.mode.active .radio{border-color:var(--accent)}.mode.active .radio:after{content:"";background:var(--accent);border-radius:50%;width:8px;height:8px}.mode-text{flex-direction:column;flex:1;gap:2px;display:flex}.mode-title{color:var(--text-primary);font-size:.9em;font-weight:600}.mode-desc{color:var(--text-secondary);font-size:.8em}.mode.disabled{opacity:.4;cursor:not-allowed}.config-pending{color:var(--text-muted);white-space:nowrap;font-size:.7em}.source-row{flex-direction:column;gap:6px;margin-top:14px;display:flex}.source-row .inline-label{display:block}.detected-lang-badge{color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent);border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);border-radius:var(--radius-xs);white-space:nowrap;align-self:flex-start;align-items:center;padding:6px 14px;font-size:.95em;font-weight:600;display:inline-flex}.detected-lang-badge.waiting{color:var(--text-muted);background:color-mix(in srgb, var(--text-muted) 10%, transparent);border-color:color-mix(in srgb, var(--text-muted) 25%, transparent);font-weight:500}.glossary-row{flex-direction:column;gap:6px;margin-top:14px;display:flex}.glossary-row .inline-label{display:block}.glossary-row .select-box{width:100%;max-width:240px}.transcript-area{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);word-break:break-word;min-height:50px;max-height:90px;padding:14px;font-size:1.05em;line-height:1.6;overflow-y:auto}.transcript-placeholder{color:var(--text-muted);font-style:italic}.transcript-partial{color:var(--text-secondary);opacity:.8;font-style:italic}.transcript-final{color:var(--text-primary)}.transcript-entry{border-bottom:1px solid var(--bg-surface);margin-bottom:6px;padding-bottom:6px}.transcript-entry:last-child{border-bottom:none}.transcript-entry.error{color:var(--red)}.translation-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.translation-card{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);min-height:80px;padding:14px}.translation-card .tl-lang{color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:.75em;font-weight:700}.translation-card .tl-text{word-break:break-word;font-size:.95em;line-height:1.5}.translation-card .tl-empty{color:var(--text-muted);font-size:.85em;font-style:italic}.translation-card .tl-text.tl-partial{opacity:.55;font-style:italic}.share-link{margin-top:12px}.share-link+.share-link{margin-top:10px}.share-link-label-row{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}.share-link-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8em;font-weight:600}.viewer-url-wrap{align-items:center;gap:8px;display:flex}.viewer-url-input{background:var(--bg-primary);color:var(--accent);border:1px solid var(--border);border-radius:var(--radius);font-size:.85em;font-family:var(--font-mono);cursor:text;flex:1;padding:10px 14px}.viewer-url-input:focus{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}.btn-copy{background:var(--accent);color:var(--text-inverse);border-radius:var(--radius);cursor:pointer;font-size:.85em;font-weight:600;font-family:var(--font);white-space:nowrap;transition:opacity var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);border:none;padding:10px 16px}.btn-copy:hover{opacity:.85}.btn-copy.copied{background:var(--green);color:#fff}.qr-toggle{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;width:100%;font-family:var(--font);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;transition:color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);justify-content:center;align-items:center;gap:6px;margin-top:8px;padding:6px 12px;font-size:.8em;font-weight:600;display:flex}.qr-toggle:hover{color:var(--text);background:var(--bg-hover)}.qr-toggle:focus-visible{border-radius:var(--radius);box-shadow:var(--focus-ring);outline:none}.qr-box{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;align-items:center;gap:10px;margin-top:10px;padding:14px;display:flex}.qr-expand-btn{cursor:pointer;border-radius:var(--radius);background:0 0;border:none;padding:0;line-height:0;display:block}.qr-expand-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.qr-img{border-radius:var(--radius);width:200px;height:200px;display:block}.os-grid{flex-wrap:wrap;align-items:flex-end;gap:12px 16px;display:flex}.os-section{border-top:1px solid var(--border);flex-direction:column;gap:12px;margin-top:12px;padding-top:12px;display:flex}.share-link+.os-section{border-top:none;margin-top:0;padding-top:12px}.os-section-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.os-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75em;font-weight:600}.os-layout-picker{flex-wrap:wrap;gap:10px;display:flex}.os-layout-btn{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-inset);color:var(--text-secondary);font-family:var(--font);cursor:pointer;transition:border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);flex-direction:column;align-items:center;gap:6px;padding:10px 14px;font-size:.78em;display:flex}.os-layout-btn:hover{border-color:var(--border-strong);color:var(--text-primary)}.os-layout-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}.os-field{flex-direction:column;gap:4px;font-size:.82em;display:flex}.os-field label{color:var(--text-muted);white-space:nowrap;font-weight:500}.os-field input[type=range]{width:100px;accent-color:var(--accent)}.os-field input[type=color]{border:1px solid var(--border);background:var(--bg-primary);cursor:pointer;border-radius:4px;width:40px;height:28px;padding:2px}@media (width<=600px){.step-grid{grid-template-columns:1fr}.step-grid>:nth-child(n){grid-area:auto}.controls-row{flex-direction:column;align-items:stretch}.btn{width:100%}.translation-grid{grid-template-columns:1fr}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}body.viewer-body{color:var(--text-primary);font-family:var(--font);touch-action:none;-webkit-tap-highlight-color:transparent;background:#000000c7;margin:0}body.viewer-body.light-bg{color:#1a1a1a;background:#f5f0e6}.viewer-root{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex;position:fixed;inset:0}.history-display{font-size:calc(var(--caption-size,48px) * .42);color:var(--caption-color,#fff);opacity:.7;word-break:break-word;flex:1;padding:12px;line-height:1.4;overflow-y:auto}.history-line{white-space:normal;overflow-wrap:break-word;word-break:normal;border-bottom:1px solid #ffffff1a;width:100%;margin-bottom:8px;padding-bottom:8px}.history-line:last-child{border-bottom:none}.history-ts{color:var(--text-muted);margin-right:6px;font-size:.6em}.caption-stage{width:var(--caption-width,96%);background:var(--caption-bg,#000000a6);border-radius:var(--radius-md);text-align:var(--caption-align,center);-webkit-user-select:none;user-select:none;flex-shrink:0;margin:auto auto 20px;padding:20px}.caption-stack{width:var(--caption-width,96%);--caption-h:0px;--caption-travel:max(0px, calc(100vh - var(--caption-h,0px) - 40px));--caption-vshift:calc((100 - var(--caption-pos,100)) * -.01 * var(--caption-travel));transform:translate(-50%, var(--caption-vshift,0));flex-direction:column;flex-shrink:0;gap:8px;display:flex;position:fixed;bottom:20px;left:50%}.caption-stack .caption-stage{width:100%;margin:0}.side-captions{border-top:1px solid #fff3;flex:none;margin-top:14px;padding-top:12px}.side-captions .caption-stage{--caption-size:var(--panel-font-size,28px);background:0 0;border-radius:0;width:100%;margin:0;padding:8px 0 0}body.viewer-body.light-bg .side-captions .caption-stage{background:0 0}.captions-hidden>.caption-stage,.captions-hidden>.caption-stack,.captions-hidden>.caption-stack .caption-stage{display:none}.caption-lines{height:calc(var(--caption-lines,2) * (min(var(--caption-size,48px), calc((96vw - 42px) / 20)) * 1.25 + 4px));--line-h:calc(min(var(--caption-size,48px), calc((96vw - 42px) / 20)) * 1.25 + 4px);overflow:hidden}.caption-strip{align-items:var(--caption-align-items,center);width:100%;transform:translateY(calc(var(--roll-offset,0) * -1 * var(--line-h)));transition:transform var(--roll-dur,.5s) var(--ease);will-change:transform;flex-direction:column;display:flex}.caption-strip.no-transition{transition:none}.caption-line{font-size:min(var(--caption-size,48px), calc((96vw - 42px) / 20));color:var(--caption-color,#fff);white-space:nowrap;font-weight:700;line-height:1.25}.caption-line.caption-wrap{white-space:normal;overflow-wrap:break-word;word-break:normal}.caption-line.partial:after{content:" …"}.caption-line+.caption-line{margin-top:4px}body.viewer-body.light-bg .history-display{color:#1a1a1a}body.viewer-body.light-bg .history-line{border-bottom-color:#00000014}body.viewer-body.light-bg .caption-stage{background:#0000008c}.viewer-menu-btn{top:calc(env(safe-area-inset-top) + 12px);right:calc(env(safe-area-inset-right) + 12px);z-index:20;color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;background:#0000008c;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;display:flex;position:fixed}.viewer-drawer{background:var(--bg-surface);border-left:1px solid var(--border);width:min(340px,88vw);height:100dvh;padding:calc(env(safe-area-inset-top) + 16px) 16px calc(env(safe-area-inset-bottom) + 16px);z-index:30;box-shadow:var(--shadow-lg);transition:transform var(--dur) var(--ease);position:fixed;top:0;right:0;overflow-y:auto;transform:translate(100%)}.viewer-drawer.open{transform:translate(0)}.drawer-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.viewer-drawer h2{text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);margin:0;font-size:1em}.drawer-section-title{margin:20px 0 10px!important;font-size:.85em!important}.viewer-drawer .toggle-row{justify-content:normal;gap:0;font-size:20px}.viewer-drawer .toggle-row .toggle-switch{margin-left:auto}.drawer-close-btn{border:1px solid var(--border);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;display:flex}.viewer-drawer .field{margin-bottom:18px;font-size:1em}.viewer-drawer .field label{color:var(--text-secondary);margin-bottom:6px;font-size:.95em;display:block}.viewer-drawer select.select-box{height:40px;font-size:1em}.viewer-drawer input[type=range]{width:100%;height:28px}.theme-toggle-btn{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-tertiary,#ffffff0f);width:100%;color:var(--text-primary);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:10px 14px;font-size:.95em;display:flex}.theme-toggle-btn:active{background:var(--bg-hover,#ffffff1a)}.theme-icon{font-size:1.15em;line-height:1}.viewer-drawer .conn-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.viewer-drawer .conn-dot.connected{background:var(--green)}.viewer-drawer .conn-dot.connecting{background:var(--orange)}.viewer-drawer .conn-dot.disconnected{background:var(--red)}.toggle-row{cursor:pointer;color:var(--text-primary);justify-content:space-between;align-items:center;gap:12px;font-size:14px;display:flex}.toggle-row input:disabled{cursor:not-allowed}.toggle-row input:disabled~*{opacity:.5;cursor:not-allowed}.toggle-switch{flex-shrink:0;align-items:center;display:inline-flex;position:relative}.toggle-switch input[type=checkbox]{opacity:0;cursor:pointer;z-index:1;width:52px;height:30px;margin:0;position:absolute}.toggle-track{background:var(--border-strong);width:52px;height:30px;transition:background var(--dur-fast) var(--ease);border-radius:999px;display:block;position:relative}.toggle-track:after{content:"";width:24px;height:24px;transition:transform var(--dur-fast) var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.toggle-switch input:checked+.toggle-track{background:var(--accent)}.toggle-switch input:checked+.toggle-track:after{transform:translate(22px)}.toggle-switch-lg input[type=checkbox],.toggle-switch-lg .toggle-track{width:60px;height:34px}.toggle-switch-lg .toggle-track:after{width:28px;height:28px;top:3px;left:3px}.toggle-switch-lg input:checked+.toggle-track:after{transform:translate(26px)}.viewer-overlay-scrim{z-index:25;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#0006;border:none;padding:0;position:fixed;inset:0}body.layout-panel-right,body.layout-panel-left,body.layout-panel-center,body.layout-panel-full{display:block}body.layout-panel-right .viewer-root,body.layout-panel-left .viewer-root,body.layout-panel-center .viewer-root,body.layout-panel-full .viewer-root{flex-direction:row;align-items:flex-start;position:fixed;inset:0}body.layout-panel-right .side-pane,body.layout-panel-left .side-pane,body.layout-panel-center .side-pane,body.layout-panel-full .side-pane{top:var(--panel-top,0px);bottom:var(--panel-bottom,16px);width:var(--panel-width,20%);background:var(--panel-bg,#000000a6);color:var(--panel-color,#fff);font-size:var(--panel-font-size,28px);border-radius:var(--radius-md);word-break:break-word;flex-direction:column;padding:16px;line-height:1.4;display:flex;position:fixed;overflow:hidden}body.layout-panel-right .side-pane{right:var(--panel-right,16px)}body.layout-panel-left .side-pane{left:var(--panel-right,16px)}body.layout-panel-center .side-pane{left:50%;transform:translate(-50%)}body.layout-panel-full .side-pane{width:100%;left:0;right:0}.side-pane-scroll{word-break:break-word;flex:auto;min-height:0;overflow-y:auto}body.layout-panel-right .caption-stack{bottom:20px;left:16px;right:calc(var(--panel-width,20%) + var(--panel-right,16px) + 16px);width:auto;transform:translateY(var(--caption-vshift,0));position:fixed}body.layout-panel-left .caption-stack{bottom:20px;right:16px;left:calc(var(--panel-width,20%) + var(--panel-right,16px) + 16px);width:auto;transform:translateY(var(--caption-vshift,0));position:fixed}body.layout-panel-center .caption-stack{transform:translate(-50%, var(--caption-vshift,0))}body.layout-panel-full .caption-stack{bottom:calc(20px + var(--panel-bottom,16px));transform:translateY(var(--caption-vshift,0))}.caption-stage.outline{-webkit-text-stroke:var(--caption-outline-w,.045em) #000;paint-order:stroke fill}.side-pane.outline{-webkit-text-stroke:var(--panel-outline-w,.045em) #000;paint-order:stroke fill}.measure{visibility:hidden;white-space:nowrap;font-weight:700;position:absolute;left:-9999px}
