:root{color-scheme:dark;--bg:#07131b;--panel:#102530;--line:#214351;--cyan:#5ce1d1;--text:#edf8f7;--muted:#a8c0c5;--amber:#ffd166;--red:#ff8a8a}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at top right,#143941 0,#07131b 55%);font:16px/1.55 system-ui,Segoe UI,sans-serif;color:var(--text)}.shell{max-width:1180px;margin:auto;padding:34px 24px 60px}header{margin-bottom:24px}.brand{font-weight:900;color:var(--cyan);letter-spacing:.12em}.brand span{font-size:.72rem;color:#a5d8d5;margin-left:8px}h1{font-size:clamp(2rem,5vw,3.3rem);line-height:1.1;margin:18px 0 8px}header p,.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel{background:linear-gradient(145deg,#122b36,#0d202a);border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 18px 45px #0004}.panel h2{margin:0 0 16px}label{display:block;margin:15px 0 6px;color:#c6dcdf;font-size:.92rem}select,textarea{width:100%;border-radius:10px;border:1px solid #315665;background:#081820;color:var(--text);padding:12px;font:inherit}textarea{min-height:140px;resize:vertical}input[type=range]{width:100%;accent-color:var(--cyan)}button{border:0;border-radius:10px;padding:11px 16px;font:700 14px system-ui;cursor:pointer}.primary{background:var(--cyan);color:#042322}.primary:disabled{opacity:.4;cursor:not-allowed}.quiet{background:#1d3a46;color:var(--text);border:1px solid #315665}.row{display:flex;align-items:center;gap:10px;margin:14px 0}.status{border-left:3px solid var(--amber);padding:8px 12px;background:#ffd16612;color:#ffe5a2}.status.ok{border-color:var(--cyan);color:#aff9ef;background:#5ce1d110}.status.error{border-color:var(--red);color:#ffc0c0;background:#ff8a8a12}.result{border:1px solid var(--line);border-left:4px solid #76a9ff;background:#0b1c24;border-radius:10px;margin:10px 0;padding:12px 14px}.result p{margin:5px 0 0;color:#c0d2d5;font-size:.93rem}.result.good{border-left-color:var(--cyan)}.result.slow{border-left-color:var(--amber)}.result.bad{border-left-color:var(--red)}.details{margin-top:18px}pre{white-space:pre-wrap;word-break:break-word;background:#061219;border:1px solid var(--line);padding:14px;border-radius:10px;color:#c1fff5}audio{width:100%;margin:12px 0}code{color:#bdf4e9}footer{color:#78959d;font-size:.84rem;margin-top:22px}@media(max-width:800px){.grid{grid-template-columns:1fr}.shell{padding:22px 14px 42px}}
.timing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:9px;margin:8px 0 4px}.metric-card{min-height:74px;display:flex;flex-direction:column;justify-content:center;gap:3px;padding:10px 12px;border:1px solid #284b57;border-radius:10px;background:#071b23}.metric-card span{font-size:.76rem;color:#a8c0c5;line-height:1.25}.metric-card strong{font-size:1.05rem;color:#e6f8f5;line-height:1.25}.metric-total{border-color:#39bdae;background:#0c302f}.metric-total strong{font-size:1.18rem;color:#71f1de}@media(max-width:520px){.timing-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card{min-height:68px;padding:8px}.metric-card strong{font-size:.98rem}}

.speed-control{margin-top:16px;padding:4px 0 8px}.speed-heading{display:flex;align-items:center;justify-content:space-between}.speed-heading label{margin:0 0 8px;font-weight:700;color:#c6dcdf}.speed-heading output{display:inline-block;margin-bottom:8px;padding:2px 10px;border-radius:7px;background:#e4ebf5;color:#28538b;font-weight:800;font-variant-numeric:tabular-nums}.speed-slider{position:relative;padding-top:2px}.speed-slider input[type=range]{position:relative;z-index:1;display:block;height:22px;margin:0;accent-color:#315c91;cursor:pointer}.speed-ticks{display:flex;justify-content:space-between;margin:-1px 9px 0}.speed-ticks i{display:block;width:1px;height:5px;background:#6c7886}.speed-ticks i.one-x{height:9px;background:#ffd166}.speed-labels{display:grid;grid-template-columns:1fr 1fr 1fr;margin-top:4px;color:#8296a9;font-size:.78rem}.speed-labels span:nth-child(2){text-align:center;color:#ffd166;font-weight:700}.speed-labels span:last-child{text-align:right}.speed-control input[type=range]:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:6px}

.speed-ticks i{height:4px}.speed-ticks i.major{height:9px}.speed-ticks i.one-x{height:12px;width:2px;background:#ffd166}

.live-char-row{display:flex;justify-content:flex-end;margin-top:8px}.live-char-count{display:inline-flex;align-items:center;min-height:32px;padding:4px 11px;border:1px solid #315665;border-radius:8px;background:#0c252e;color:#b8d4d8;font-size:.88rem;font-variant-numeric:tabular-nums;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}.live-char-count.flash{animation:char-count-flash .65s ease-out}@keyframes char-count-flash{0%{background:#5ce1d1;color:#042322;border-color:#aff9ef;box-shadow:0 0 0 4px #5ce1d155,0 0 22px #5ce1d199;transform:scale(1.04)}100%{background:#0c252e;color:#b8d4d8;border-color:#315665;box-shadow:none;transform:scale(1)}}

.config-grid,.generation-grid{align-items:stretch;margin-bottom:18px}.config-grid>.panel,.generation-grid>.panel{min-width:0}.generation-panel .row{margin-top:0}.generation-panel .timing-grid{margin-top:12px}.results-panel{margin-top:0}.results-panel h2{margin-bottom:14px}.results-panel .result:first-of-type{margin-top:0}
.chunk-preview-wrap{margin-top:14px}.chunk-preview-wrap h3{font-size:.95rem;margin:0 0 8px;color:#c6dcdf}.chunk-preview{display:grid;gap:7px}.chunk-card{padding:9px 11px;border:1px solid #284b57;border-left:3px solid #426674;border-radius:9px;background:#091c24}.chunk-card.active{border-left-color:var(--amber);background:#382d142e}.chunk-card.done{border-left-color:var(--cyan)}.chunk-heading{display:flex;justify-content:space-between;gap:12px;color:#9db8bf;font-size:.78rem;margin-bottom:3px}.chunk-text{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);font-size:.9rem}.check-row{display:flex;align-items:center;gap:9px;margin:10px 0;color:#c6dcdf}.check-row input{width:18px;height:18px;margin:0;accent-color:var(--cyan)}.generation-status{min-height:24px;margin:4px 0 10px;color:var(--muted);font-size:.9rem}.generation-status.error{color:#ffc0c0}
.download-combined{display:inline-block;margin:2px 0 10px;padding:7px 11px;border:1px solid #315665;border-radius:8px;color:#aaf6ec;text-decoration:none;font-size:.88rem}.download-combined:hover{background:#0c302f;border-color:var(--cyan)}
.speed-control{display:grid;gap:12px}.speed-setting{padding-bottom:10px;border-bottom:1px solid #214351}.speed-setting:last-of-type{padding-bottom:10px}.speed-setting .speed-heading label{font-size:.86rem}

.conversation-panel{margin:0 0 18px;border-color:#34706f;background:linear-gradient(145deg,#102d34,#0b202b)}.conversation-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.conversation-heading h2{margin-bottom:4px}.conversation-heading p{margin:0}.pipeline-badge{white-space:nowrap;padding:6px 11px;border-radius:999px;background:#123f3d;color:#8cf2df;border:1px solid #28786e;font-size:.82rem;font-weight:800}.conversation-config{margin-top:12px;align-items:center}.conversation-config .row{flex-wrap:wrap}.voice-readiness{padding:14px;border:1px solid #315665;border-radius:12px;background:#071a22;line-height:1.8}.readiness-ok{color:#9cf1d7}.readiness-warn{color:#ffd88a}.readiness-bad{color:#ffadad}.conversation-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 0;border-top:1px solid #214351;border-bottom:1px solid #214351}.record-button{background:#e35b68;color:white;min-width:188px}.record-button:disabled{opacity:.45;cursor:not-allowed}.record-button.recording{background:#ff364f;box-shadow:0 0 0 5px #ff364f33;animation:record-pulse 1.3s infinite}.recording-clock{font-variant-numeric:tabular-nums;font-size:1.1rem;font-weight:800;color:#bde9e4}.voice-pipeline-status{color:var(--muted);flex:1;min-width:230px}.dialog-output{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.dialog-message{min-height:138px;padding:15px;border-radius:13px;border:1px solid #315665;background:#071a22}.dialog-message span{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#83ddd2}.dialog-message p{white-space:pre-wrap;margin:9px 0 0;line-height:1.55}.assistant-message{border-color:#47629b;background:#101e32}.assistant-message span{color:#aabfff}.voice-metrics{margin-top:14px}.voice-player{margin-top:5px}.safety-note{font-size:.8rem;margin-bottom:0}@keyframes record-pulse{50%{box-shadow:0 0 0 9px #ff364f12}}@media(max-width:720px){.conversation-heading{display:block}.pipeline-badge{display:inline-block;margin-top:10px}.dialog-output{grid-template-columns:1fr}.voice-readiness{margin-bottom:8px}}
.module-statuses{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0 12px}.module-card{display:flex;align-items:center;gap:12px;min-height:80px;padding:12px;border:1px solid #34444a;border-radius:13px;background:#10191d;transition:filter .18s,border-color .18s,background .18s,transform .18s}.module-card[data-state="on"]{border-color:#338f79;background:linear-gradient(120deg,#123d36,#112c33);box-shadow:0 0 18px #31c5a51a}.module-icon{display:grid;place-items:center;flex:0 0 52px;width:52px;height:52px;border-radius:11px;background:#273238;font-size:1.65rem;filter:grayscale(1);opacity:.45;transition:filter .18s,opacity .18s,background .18s}.module-card[data-state="on"] .module-icon{filter:grayscale(0);opacity:1;background:#176853}.module-card strong,.module-card span{display:block}.module-card strong{font-size:.9rem;line-height:1.25}.module-card span{margin-top:4px;color:#9fb0b5;font-size:.78rem;overflow-wrap:anywhere;line-height:1.3}.module-card[data-state="on"] span{color:#a7e7d5}@media(max-width:720px){.module-statuses{grid-template-columns:1fr}.module-card{min-height:68px}}
.voice-prompt{min-height:92px;margin-bottom:0}.prompt-note{font-size:.8rem;margin-top:5px}
.record-button{background:#59636b;color:#e1e5e8;min-width:220px;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:background .18s,box-shadow .12s,transform .08s}.record-button:disabled{opacity:.55;cursor:not-allowed}.record-button[data-mode="off"]{background:#59636b;color:#e1e5e8}.record-button[data-mode="standby"]{background:#f3c832;color:#302600;box-shadow:0 0 0 4px #f3c83233}.record-button[data-mode="speaking"]{background:#f0384f;color:white;box-shadow:0 0 0 5px #ff364f33;transform:scale(var(--voice-scale,1))}.record-button[data-mode="processing"]{background:#66727a;color:#edf1f3}.mic-icon{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
